From 6a4a4ab5d7b6f85ba4d4ebb28ab73f3ced801376 Mon Sep 17 00:00:00 2001 From: Jacob Wolf Date: Sun, 11 Jan 2026 13:45:13 -0600 Subject: [PATCH 1/3] feat: adds asdf installation instructions to downloads page --- .tool-versions | 2 ++ apps/site/snippets/en/download/asdf.bash | 20 +++++++++++++++++++ apps/site/util/download/constants.json | 10 ++++++++++ packages/i18n/src/locales/en.json | 3 ++- .../src/Icons/InstallationMethod/ASDF.tsx | 12 +++++++++++ .../src/Icons/InstallationMethod/index.ts | 3 ++- 6 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 .tool-versions create mode 100644 apps/site/snippets/en/download/asdf.bash create mode 100644 packages/ui-components/src/Icons/InstallationMethod/ASDF.tsx diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 0000000000000..8ed407c3e02d1 --- /dev/null +++ b/.tool-versions @@ -0,0 +1,2 @@ +pnpm 10.24.0 +nodejs 24.12.0 diff --git a/apps/site/snippets/en/download/asdf.bash b/apps/site/snippets/en/download/asdf.bash new file mode 100644 index 0000000000000..71c74dc096398 --- /dev/null +++ b/apps/site/snippets/en/download/asdf.bash @@ -0,0 +1,20 @@ +# asdf has specific installation instructions for each operating system. +# Please refer to the official documentation at https://asdf-vm.com/guide/getting-started.html. +# +# The following is for MacOS and Linux systems with Homebrew installed using ZSH: +brew install asdf + +# Add asdf's shims directory to your shell configuration: +echo 'export PATH="\$\{ASDF_DATA_DIR:-\$HOME/.asdf\}/shims:\$PATH"' >> ~/.zshrc + +# Reload shell configuration: +source ~/.zshrc + +# Install the Node.js plugin: +asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git + +# Download and install Node.js: +asdf install nodejs ${props.release.version} + +# Set global Node.js version: +asdf set -u nodejs ${props.release.version} diff --git a/apps/site/util/download/constants.json b/apps/site/util/download/constants.json index 6593acea69ec8..6fcf448597dfd 100644 --- a/apps/site/util/download/constants.json +++ b/apps/site/util/download/constants.json @@ -187,6 +187,16 @@ }, "url": "https://github.com/tj/n", "info": "layouts.download.codeBox.platformInfo.n" + }, + { + "id": "ASDF", + "icon": "ASDF", + "name": "asdf", + "compatibility": { + "os": ["MAC", "LINUX"] + }, + "url": "https://asdf-vm.com/guide/getting-started.html", + "info": "layouts.download.codeBox.platformInfo.asdf" } ], "packageManagers": [ diff --git a/packages/i18n/src/locales/en.json b/packages/i18n/src/locales/en.json index ddf33a5874e37..ba1fef5948903 100644 --- a/packages/i18n/src/locales/en.json +++ b/packages/i18n/src/locales/en.json @@ -388,7 +388,8 @@ "choco": "Chocolatey is a package manager for Windows.", "docker": "Docker is a containerization platform.", "n": "\"n\" is a cross-platform Node.js version manager.", - "volta": "\"Volta\" is a cross-platform Node.js version manager." + "volta": "\"Volta\" is a cross-platform Node.js version manager.", + "asdf": "\"asdf\" is a cross-platform version manager that supports multiple languages." } } }, diff --git a/packages/ui-components/src/Icons/InstallationMethod/ASDF.tsx b/packages/ui-components/src/Icons/InstallationMethod/ASDF.tsx new file mode 100644 index 0000000000000..032843558f34d --- /dev/null +++ b/packages/ui-components/src/Icons/InstallationMethod/ASDF.tsx @@ -0,0 +1,12 @@ +import type { FC, SVGProps } from 'react'; + +const ASDF: FC> = props => ( + + + +); + +export default ASDF; diff --git a/packages/ui-components/src/Icons/InstallationMethod/index.ts b/packages/ui-components/src/Icons/InstallationMethod/index.ts index 5e8bd693bb9a1..161446f19ec70 100644 --- a/packages/ui-components/src/Icons/InstallationMethod/index.ts +++ b/packages/ui-components/src/Icons/InstallationMethod/index.ts @@ -1,3 +1,4 @@ +import ASDF from '#ui/Icons/InstallationMethod/ASDF'; import Choco from '#ui/Icons/InstallationMethod/Choco'; import Docker from '#ui/Icons/InstallationMethod/Docker'; import FNM from '#ui/Icons/InstallationMethod/FNM'; @@ -6,4 +7,4 @@ import N from '#ui/Icons/InstallationMethod/N'; import NVM from '#ui/Icons/InstallationMethod/NVM'; import Volta from '#ui/Icons/InstallationMethod/Volta'; -export { Choco, Docker, FNM, Homebrew, N, NVM, Volta }; +export { ASDF, Choco, Docker, FNM, Homebrew, N, NVM, Volta }; From 6849c14bb35c150c08ace556ed539dab844215b2 Mon Sep 17 00:00:00 2001 From: Jacob Wolf Date: Sun, 11 Jan 2026 14:00:19 -0600 Subject: [PATCH 2/3] fix: use correct macos formatting, add asdf story --- apps/site/snippets/en/download/asdf.bash | 2 +- packages/ui-components/__design__/platform-logos.stories.tsx | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/site/snippets/en/download/asdf.bash b/apps/site/snippets/en/download/asdf.bash index 71c74dc096398..b0739ea6c5d8d 100644 --- a/apps/site/snippets/en/download/asdf.bash +++ b/apps/site/snippets/en/download/asdf.bash @@ -1,7 +1,7 @@ # asdf has specific installation instructions for each operating system. # Please refer to the official documentation at https://asdf-vm.com/guide/getting-started.html. # -# The following is for MacOS and Linux systems with Homebrew installed using ZSH: +# The following is for macOS and Linux systems with Homebrew installed using ZSH: brew install asdf # Add asdf's shims directory to your shell configuration: diff --git a/packages/ui-components/__design__/platform-logos.stories.tsx b/packages/ui-components/__design__/platform-logos.stories.tsx index 11a2f7046fcf3..6df2782ac1137 100644 --- a/packages/ui-components/__design__/platform-logos.stories.tsx +++ b/packages/ui-components/__design__/platform-logos.stories.tsx @@ -1,4 +1,5 @@ import { + ASDF, Docker, Homebrew, NVM, @@ -11,7 +12,7 @@ import { Apple, Linux, Microsoft, AIX } from '#ui/Icons/OperatingSystem'; import type { Meta as MetaObj, StoryObj } from '@storybook/react-webpack5'; const osIcons = [Apple, Linux, Microsoft, AIX]; -const installMethodIcons = [Docker, Homebrew, NVM, Choco, N, Volta]; +const installMethodIcons = [ASDF, Docker, Homebrew, NVM, Choco, N, Volta]; export const PlatformLogos: StoryObj = { render: () => ( From df85d3263353075bbbdfe7311ee0ee09e96587d1 Mon Sep 17 00:00:00 2001 From: Jacob Wolf Date: Sun, 11 Jan 2026 14:10:02 -0600 Subject: [PATCH 3/3] fix: remove asdf icon, icon requirement and tool-versions --- .tool-versions | 2 -- apps/site/snippets/en/download/asdf.bash | 15 +++------------ apps/site/types/release.ts | 3 ++- apps/site/util/download/constants.json | 1 - apps/site/util/download/index.tsx | 4 +++- .../__design__/platform-logos.stories.tsx | 3 +-- .../src/Icons/InstallationMethod/ASDF.tsx | 12 ------------ .../src/Icons/InstallationMethod/index.ts | 3 +-- 8 files changed, 10 insertions(+), 33 deletions(-) delete mode 100644 .tool-versions delete mode 100644 packages/ui-components/src/Icons/InstallationMethod/ASDF.tsx diff --git a/.tool-versions b/.tool-versions deleted file mode 100644 index 8ed407c3e02d1..0000000000000 --- a/.tool-versions +++ /dev/null @@ -1,2 +0,0 @@ -pnpm 10.24.0 -nodejs 24.12.0 diff --git a/apps/site/snippets/en/download/asdf.bash b/apps/site/snippets/en/download/asdf.bash index b0739ea6c5d8d..66d1545fbef08 100644 --- a/apps/site/snippets/en/download/asdf.bash +++ b/apps/site/snippets/en/download/asdf.bash @@ -1,20 +1,11 @@ # asdf has specific installation instructions for each operating system. # Please refer to the official documentation at https://asdf-vm.com/guide/getting-started.html. -# -# The following is for macOS and Linux systems with Homebrew installed using ZSH: -brew install asdf -# Add asdf's shims directory to your shell configuration: -echo 'export PATH="\$\{ASDF_DATA_DIR:-\$HOME/.asdf\}/shims:\$PATH"' >> ~/.zshrc - -# Reload shell configuration: -source ~/.zshrc - -# Install the Node.js plugin: +# Install the Node.js plugin asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git -# Download and install Node.js: +# Download and install Node.js ${props.release.version} asdf install nodejs ${props.release.version} -# Set global Node.js version: +# Set global Node.js version to ${props.release.version} asdf set -u nodejs ${props.release.version} diff --git a/apps/site/types/release.ts b/apps/site/types/release.ts index baa01aa40b38d..9ffc705f73490 100644 --- a/apps/site/types/release.ts +++ b/apps/site/types/release.ts @@ -8,7 +8,8 @@ export type InstallationMethod = | 'BREW' | 'DOCKER' | 'CHOCO' - | 'N'; + | 'N' + | 'ASDF'; export type PackageManager = 'NPM' | 'YARN' | 'PNPM'; // Items with a pipe/default value mean that they are auto inferred diff --git a/apps/site/util/download/constants.json b/apps/site/util/download/constants.json index 6fcf448597dfd..8805ca34010e7 100644 --- a/apps/site/util/download/constants.json +++ b/apps/site/util/download/constants.json @@ -190,7 +190,6 @@ }, { "id": "ASDF", - "icon": "ASDF", "name": "asdf", "compatibility": { "os": ["MAC", "LINUX"] diff --git a/apps/site/util/download/index.tsx b/apps/site/util/download/index.tsx index 78ad149d1fb15..67225df8967fd 100644 --- a/apps/site/util/download/index.tsx +++ b/apps/site/util/download/index.tsx @@ -78,9 +78,11 @@ export const parseCompat = < */ const createIcon = ( IconModule: Record, - iconName: string + iconName?: string ) => { + if (!iconName) {return undefined;} const IconComponent = IconModule[iconName]; + if (!IconComponent) {return undefined;} return ; }; diff --git a/packages/ui-components/__design__/platform-logos.stories.tsx b/packages/ui-components/__design__/platform-logos.stories.tsx index 6df2782ac1137..11a2f7046fcf3 100644 --- a/packages/ui-components/__design__/platform-logos.stories.tsx +++ b/packages/ui-components/__design__/platform-logos.stories.tsx @@ -1,5 +1,4 @@ import { - ASDF, Docker, Homebrew, NVM, @@ -12,7 +11,7 @@ import { Apple, Linux, Microsoft, AIX } from '#ui/Icons/OperatingSystem'; import type { Meta as MetaObj, StoryObj } from '@storybook/react-webpack5'; const osIcons = [Apple, Linux, Microsoft, AIX]; -const installMethodIcons = [ASDF, Docker, Homebrew, NVM, Choco, N, Volta]; +const installMethodIcons = [Docker, Homebrew, NVM, Choco, N, Volta]; export const PlatformLogos: StoryObj = { render: () => ( diff --git a/packages/ui-components/src/Icons/InstallationMethod/ASDF.tsx b/packages/ui-components/src/Icons/InstallationMethod/ASDF.tsx deleted file mode 100644 index 032843558f34d..0000000000000 --- a/packages/ui-components/src/Icons/InstallationMethod/ASDF.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import type { FC, SVGProps } from 'react'; - -const ASDF: FC> = props => ( - - - -); - -export default ASDF; diff --git a/packages/ui-components/src/Icons/InstallationMethod/index.ts b/packages/ui-components/src/Icons/InstallationMethod/index.ts index 161446f19ec70..5e8bd693bb9a1 100644 --- a/packages/ui-components/src/Icons/InstallationMethod/index.ts +++ b/packages/ui-components/src/Icons/InstallationMethod/index.ts @@ -1,4 +1,3 @@ -import ASDF from '#ui/Icons/InstallationMethod/ASDF'; import Choco from '#ui/Icons/InstallationMethod/Choco'; import Docker from '#ui/Icons/InstallationMethod/Docker'; import FNM from '#ui/Icons/InstallationMethod/FNM'; @@ -7,4 +6,4 @@ import N from '#ui/Icons/InstallationMethod/N'; import NVM from '#ui/Icons/InstallationMethod/NVM'; import Volta from '#ui/Icons/InstallationMethod/Volta'; -export { ASDF, Choco, Docker, FNM, Homebrew, N, NVM, Volta }; +export { Choco, Docker, FNM, Homebrew, N, NVM, Volta };