Skip to content

Commit 732e67f

Browse files
committed
feat: add 0install as an installation method on the downloads page
0install is a cross-platform decentralized package manager. Applications are packaged as "feeds": XML files listing available versions, where to download them, and how to extract and execute them. The 0install project maintains a feed for Node.js: https://apps.0install.net/javascript/node.xml This adds 0install alongside the other community installation methods such as asdf and Chocolatey. When pnpm is selected, it is installed from 0install's own pnpm feed rather than Corepack: https://apps.0install.net/javascript/pnpm.xml
1 parent 8a6f1b8 commit 732e67f

8 files changed

Lines changed: 325 additions & 4 deletions

File tree

apps/site/components/Downloads/Release/ReleaseCodeBox.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ const useSnippetProcessor = (
6363

6464
const installCorepackSnippet =
6565
context.packageManager !== 'NPM' &&
66+
// 0install installs pnpm from its own feed, so Corepack is not involved
67+
!(
68+
context.installMethod === 'ZEROINSTALL' &&
69+
context.packageManager === 'PNPM'
70+
) &&
6671
// Corepack is no longer distributed with Node.js v25
6772
context.release.major >= 25 &&
6873
snippets.find(({ name }) => name === 'corepack');
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# For instructions how to get 0install, please see https://get.0install.net/.
2+
3+
# Add Node.js and NPM to PATH:
4+
0install add node https://apps.0install.net/javascript/node.xml${props.os === 'WIN' ? '' : ' --version=' + props.release.version}
5+
0install add npm https://apps.0install.net/javascript/node.xml --command=npm${props.os === 'WIN' ? '' : ' --version=' + props.release.version}
6+
0install add npx https://apps.0install.net/javascript/node.xml --command=npx${props.os === 'WIN' ? '' : ' --version=' + props.release.version}
7+
${props.os === 'WIN' ? '\n# Pin Node.js to the selected version:\n0install select https://apps.0install.net/javascript/node.xml --version=' + props.release.version + ' --pin\n' : ''}
8+
# Enable global package installation:
9+
npm config set prefix ${props.os === 'WIN' ? '$env:appdata\\npm' : '~/.npm-global'}
10+
11+
# Make globally installed commands runnable (add to your profile to persist):
12+
${props.os === 'WIN' ? '$env:PATH = "$env:appdata\\npm;$env:PATH"' : 'export PATH=~/.npm-global/bin:$PATH'}

apps/site/types/release.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ export type InstallationMethod =
99
| 'DOCKER'
1010
| 'CHOCO'
1111
| 'N'
12-
| 'ASDF';
12+
| 'ASDF'
13+
| 'ZEROINSTALL';
1314
export type PackageManager = 'NPM' | 'YARN' | 'PNPM';
1415

1516
// Items with a pipe/default value mean that they are auto inferred

apps/site/util/download/constants.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,16 @@
196196
},
197197
"url": "https://asdf-vm.com/guide/getting-started.html",
198198
"info": "layouts.download.codeBox.platformInfo.asdf"
199+
},
200+
{
201+
"id": "ZEROINSTALL",
202+
"icon": "ZeroInstall",
203+
"name": "0install",
204+
"compatibility": {
205+
"os": ["WIN", "MAC", "LINUX"]
206+
},
207+
"url": "https://0install.net/",
208+
"info": "layouts.download.codeBox.platformInfo.zeroinstall"
199209
}
200210
],
201211
"packageManagers": [

packages/i18n/src/locales/en.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,8 @@
302302
"docker": "Docker is a containerization platform.",
303303
"n": "\"n\" is a cross-platform Node.js version manager.",
304304
"asdf": "\"asdf\" is a cross-platform version manager that supports multiple languages.",
305-
"volta": "\"Volta\" is a cross-platform Node.js version manager."
305+
"volta": "\"Volta\" is a cross-platform Node.js version manager.",
306+
"zeroinstall": "0install is a cross-platform decentralized package manager."
306307
}
307308
}
308309
},

packages/ui-components/__design__/platform-logos.stories.tsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,22 @@ import {
55
Choco,
66
N,
77
Volta,
8+
ZeroInstall,
89
} from '#ui/Icons/InstallationMethod';
910
import { Apple, Linux, Microsoft, AIX } from '#ui/Icons/OperatingSystem';
1011

1112
import type { Meta as MetaObj, StoryObj } from '@storybook/react-webpack5';
1213

1314
const osIcons = [Apple, Linux, Microsoft, AIX];
14-
const installMethodIcons = [Docker, Homebrew, NVM, Choco, N, Volta];
15+
const installMethodIcons = [
16+
Docker,
17+
Homebrew,
18+
NVM,
19+
Choco,
20+
N,
21+
Volta,
22+
ZeroInstall,
23+
];
1524

1625
export const PlatformLogos: StoryObj = {
1726
render: () => (
Lines changed: 282 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,282 @@
1+
import type { FC, SVGProps } from 'react';
2+
3+
const ZeroInstall: FC<SVGProps<SVGSVGElement>> = props => (
4+
<svg
5+
xmlns="http://www.w3.org/2000/svg"
6+
xmlnsXlink="http://www.w3.org/1999/xlink"
7+
viewBox="0 0 68 68"
8+
{...props}
9+
>
10+
<defs>
11+
<radialGradient
12+
xlinkHref="#zi-a"
13+
id="zi-i"
14+
cx={18.25}
15+
cy={15.72}
16+
r={29.99}
17+
fx={18.25}
18+
fy={15.72}
19+
gradientTransform="matrix(8.11763 0 0 8.11781 60.57 576.47)"
20+
gradientUnits="userSpaceOnUse"
21+
/>
22+
<radialGradient
23+
xlinkHref="#zi-b"
24+
id="zi-j"
25+
cx={11.83}
26+
cy={10.48}
27+
r={32.66}
28+
fx={11.83}
29+
fy={10.48}
30+
gradientTransform="scale(1.17954 .8478)"
31+
gradientUnits="userSpaceOnUse"
32+
/>
33+
<radialGradient
34+
xlinkHref="#zi-c"
35+
id="zi-k"
36+
cx={18.63}
37+
cy={17.49}
38+
r={40.69}
39+
fx={18.93}
40+
fy={17.81}
41+
gradientTransform="scale(1.03682 .96449)"
42+
gradientUnits="userSpaceOnUse"
43+
/>
44+
<radialGradient
45+
xlinkHref="#zi-d"
46+
id="zi-P"
47+
cx={15.6}
48+
cy={12.14}
49+
r={43.53}
50+
fx={15.6}
51+
fy={12.14}
52+
gradientTransform="matrix(8.11763 0 0 8.11781 60.57 576.47)"
53+
gradientUnits="userSpaceOnUse"
54+
/>
55+
<radialGradient
56+
xlinkHref="#zi-e"
57+
id="zi-h"
58+
cx={15.12}
59+
cy={63.97}
60+
r={12.29}
61+
fx={15.12}
62+
fy={63.97}
63+
gradientTransform="scale(1.64399 .60828)"
64+
gradientUnits="userSpaceOnUse"
65+
/>
66+
<linearGradient id="zi-f">
67+
<stop offset={0} stopColor="#ff7834" stopOpacity={1} />
68+
<stop offset={1} stopColor="#b51700" stopOpacity={1} />
69+
</linearGradient>
70+
<linearGradient id="zi-g">
71+
<stop offset={0} stopColor="#01070b" stopOpacity={1} />
72+
<stop offset={1} stopColor="#0a1618" stopOpacity={0} />
73+
</linearGradient>
74+
<linearGradient id="zi-e">
75+
<stop offset={0} stopColor="#000" stopOpacity={1} />
76+
<stop offset={1} stopColor="#000" stopOpacity={0} />
77+
</linearGradient>
78+
<linearGradient id="zi-a">
79+
<stop offset={0} stopColor="#d3e9ff" stopOpacity={1} />
80+
<stop offset={0.16} stopColor="#d3e9ff" stopOpacity={1} />
81+
<stop offset={0.75} stopColor="#4074ae" stopOpacity={1} />
82+
<stop offset={1} stopColor="#36486c" stopOpacity={1} />
83+
</linearGradient>
84+
<linearGradient id="zi-b">
85+
<stop offset={0} stopColor="#fff" stopOpacity={1} />
86+
<stop offset={1} stopColor="#fff" stopOpacity={0} />
87+
</linearGradient>
88+
<linearGradient id="zi-c">
89+
<stop offset={0} stopColor="#fff" stopOpacity={1} />
90+
<stop offset={0.38} stopColor="#fefefe" stopOpacity={1} />
91+
<stop offset={1} stopColor="#1d1d1d" stopOpacity={1} />
92+
</linearGradient>
93+
<linearGradient id="zi-d">
94+
<stop offset={0} stopColor="#fff" stopOpacity={1} />
95+
<stop offset={1} stopColor="#fff" stopOpacity={0.16494845} />
96+
</linearGradient>
97+
<linearGradient
98+
xlinkHref="#zi-f"
99+
id="zi-S"
100+
x1={-544.24}
101+
x2={-411.65}
102+
y1={20.71}
103+
y2={285.37}
104+
gradientTransform="translate(813.38 675.39)"
105+
gradientUnits="userSpaceOnUse"
106+
/>
107+
<linearGradient
108+
xlinkHref="#zi-g"
109+
id="zi-Q"
110+
x1={304.29}
111+
x2={307.14}
112+
y1={718.08}
113+
y2={973.79}
114+
gradientUnits="userSpaceOnUse"
115+
/>
116+
<filter id="zi-R" colorInterpolationFilters="sRGB">
117+
<feGaussianBlur stdDeviation={8.3} />
118+
</filter>
119+
</defs>
120+
<g>
121+
<path
122+
fill="url(#zi-h)"
123+
fillOpacity={1}
124+
stroke="none"
125+
d="M45.05 38.9a20.2 7.48 0 1 1-40.4 0 20.2 7.48 0 1 1 40.4 0"
126+
transform="matrix(1.48825 0 0 1.85025 -6.56 -20.56)"
127+
/>
128+
<path
129+
fill="url(#zi-i)"
130+
fillOpacity={1}
131+
fillRule="nonzero"
132+
stroke="#39396c"
133+
strokeMiterlimit={4}
134+
strokeOpacity={1}
135+
strokeWidth={8.11772}
136+
d="M417.42 767.12c0 86.94-70.48 157.41-157.4 157.41-86.94 0-157.41-70.48-157.41-157.41 0-86.94 70.47-157.4 157.4-157.4s157.41 70.46 157.41 157.4z"
137+
transform="translate(-17.66 -110.96)scale(.18333)"
138+
/>
139+
<path
140+
fill="url(#zi-j)"
141+
fillOpacity={1}
142+
stroke="none"
143+
d="M30.7 15.27a12.93 9.3 0 1 1-25.85 0 12.93 9.3 0 1 1 25.86 0"
144+
opacity={0.421594}
145+
transform="matrix(1.24408 0 0 1.48825 8.15 -5.27)"
146+
/>
147+
<g fill="#000" fillOpacity={0.71345} fillRule="nonzero" stroke="none">
148+
<path d="M58.05 25.36c0 .38 0 0 0 0l-.8.9c-.48-.58-1.03-1.06-1.59-1.57l-1.22.18-1.12-1.26v1.56l.96.73.64.72.85-.96.64 1.2v1.2l-.96 1.08-1.75 1.2-1.33 1.33-.85-.96.42-1.08-.85-.97-1.43-3.06-1.22-1.39-.32.36.48 1.75.9 1.02a42 42 0 0 0 1.7 4.33c1.05 0 2.04-.1 3.08-.24v.84l-1.27 3.13-1.17 1.32-.96 2.05v3.37l.32 1.32-.53.6-1.17.72-1.22 1.03 1 1.14-1.38 1.2.27.78-2.07 2.35h-1.38l-1.17.72h-.75v-.96l-.32-1.93q-.6-1.8-1.27-3.6.01-1.33.1-2.65l.54-1.2-.75-1.45.06-1.98-1.01-1.14.5-1.66-.82-.93h-1.44l-.48-.54-1.43.9-.58-.66-1.33 1.14-2.71-3.07-1.07-2.52.96-1.45-.53-.6 1.17-2.77q1.45-1.77 2.97-3.48l1.81-.48 2.02-.24 1.38.36 1.97 1.98.69-.78.95-.12 1.81.6h1.38l.96-.84.43-.6-.96-.6-1.6-.12c-.44-.62-.85-1.26-1.38-1.8l-.53.23-.21 1.57-.96-1.09-.21-1.2-1.06-.84h-.43l1.06 1.2-.42 1.08-.85.24.53-1.08-.96-.48-.85-.96-1.6.36-.2.48-.96.6-.53 1.32-1.33.67-.58-.67h-.64v-2.16l1.38-.72h1.06l-.21-.84-.85-.85 1.44-.3.8-.9.63-1.08h1.17l-.32-.84.74-.48v.96l1.6.36 1.6-1.32.1-.6 1.38-.97c-.5.06-1 .1-1.49.24V9.66l.53-1.2h-.53l-1.17 1.08-.32.6.32.84-.53 1.44-.85-.48-.74-.84-1.17.84-.43-1.92 2.02-1.32v-.73l1.28-.84 2.02-.48 1.38.48 2.55.48-.64.72h-1.38l1.38 1.45 1.06-1.2.33-.53s4.07 3.65 6.4 7.64c2.33 4 3.42 8.71 3.42 9.67" />
149+
<path d="m31.74 8.58-.11.72.74.48 1.28-.84L33 8.2l-.85.49z" />
150+
<path d="m32.9 3.64-2.76-1.08-3.19.36L23.02 4l-.74.73 2.44 1.68v.96l-.96.96 1.28 2.53.85-.48 1.06-1.68a38 38 0 0 0 4.68-1.8z" />
151+
<path d="m35.77 13.75-.42-1.08-.75.24.22 1.32z" />
152+
<path d="m36.2 13.5-.21 1.45 1.17-.24.84-.84-.74-.72q-.38-.99-.85-1.93h-.64v.72l.43.48z" />
153+
<path d="m20.47 36.36-.85-1.68-1.6-.36-.84-2.29-2.13.24-1.8-1.32-1.92 1.68v.27c-.58-.17-1.29-.19-1.8-.5l-.43-1.2v-1.33l-1.28.12.32-2.53H7.4l-.75.96-.74.36-1.06-.6-.1-1.32.2-1.44 1.6-1.2h1.27l.22-.73 1.59.36 1.17 1.45.21-2.41 2.02-1.68.74-1.8 1.5-.6.84-1.21 1.92-.36.95-1.45h-2.87l1.8-.84h1.28l1.81-.6.21-.72-.63-.6-.75-.24.21-.73-.53-1.08-1.27.48.21-.96-1.49-.84-1.17 2.04.11.72-1.17.49-.74 1.56-.32-1.44-2.02-.85-.32-1.08 2.66-1.56 1.17-1.08.1-1.33-.64-.36-.85-.12-.53 1.32-1.11.23A30.4 30.4 0 0 0 1.94 27.66c.06.25 1 1.73 1 1.73l2.23 1.32 2.23.6.96 1.2 1.48 1.09.85-.12.64.28v.2l-.85 2.28-.64.96.21.49-.53 1.8 1.92 3.49 1.9 1.68.86 1.2-.1 2.53.63 1.44-.64 2.77s-.05-.02.03.26 3.41 2.12 3.62 1.97l.4-.3-.22-.6.85-.85.32-.84 1.38-.48 1.06-2.65-.32-.72.75-1.08 1.6-.36.84-1.93-.21-2.4 1.27-1.8.22-1.81q-2.62-1.31-5.21-2.65" />
154+
<path d="m18.13 9.06 1.06.72h.86v-.84l-1.07-.48z" />
155+
<path d="m15.37 8.1-.53 1.32h1.06l.53-1.2q.69-.5 1.38-.97l1.07.36L21 9.06l1.07-.97-1.17-.48-.54-1.08-2.02-.24-.1-.6-.96.24-.42.84-.53-1.08-.22.48.11 1.2z" />
156+
<path d="m19.2 5.09.53-.48 1.06-.24c.73-.36 1.46-.6 2.23-.85l-.42-.72-1.38.2-.64.64-1.07.16-.95.45-.46.22-.29.38z" />
157+
<path d="m21 16.51.64-.96-.96-.72z" />
158+
</g>
159+
<g
160+
fill="url(#zi-k)"
161+
fillOpacity={1}
162+
fillRule="nonzero"
163+
stroke="none"
164+
strokeWidth={1.01795}
165+
transform="translate(-6.68 -5.23)scale(1.46201)"
166+
>
167+
<g fill="url(#zi-k)">
168+
<g fill="url(#zi-k)">
169+
<path
170+
fill="url(#zi-k)"
171+
d="M44.07 20.71c0 .27 0 0 0 0l-.54.62c-.34-.4-.71-.72-1.1-1.07l-.83.12-.76-.86v1.07l.65.5.44.49.58-.66.44.82v.83l-.66.74-1.2.82-.9.9-.59-.66.3-.74-.59-.65-.98-2.1-.84-.95-.22.25.33 1.2.62.7c.35 1 .7 1.98 1.16 2.95q1.06-.01 2.11-.16v.57l-.87 2.14-.8.9-.66 1.4v2.31l.22.9-.36.42-.8.5-.84.7.7.77-.95.83.18.53-1.42 1.6h-.94l-.8.5h-.51v-.66l-.22-1.32-.87-2.46q.01-.9.07-1.81l.37-.83-.51-.98.03-1.36-.69-.78.35-1.13-.56-.64h-.99l-.32-.37-.98.61-.4-.45-.91.78-1.86-2.1-.72-1.72.65-.99-.36-.41.8-1.9q.98-1.21 2.03-2.38l1.24-.33 1.38-.16.94.24 1.35 1.36.47-.53.66-.09 1.23.41h.95l.65-.57.3-.41-.66-.41-1.1-.09c-.3-.42-.58-.86-.94-1.23l-.36.16-.15 1.07-.65-.74-.15-.82-.72-.57h-.3l.73.82-.29.74-.58.16.36-.74-.65-.33-.58-.65-1.1.24-.14.33-.65.41-.37.9-.9.46-.4-.45h-.44v-1.48l.95-.5h.72l-.14-.57-.58-.58.98-.2.54-.62.44-.74h.8l-.22-.58.5-.33v.66l1.1.25 1.09-.9.07-.42.95-.66c-.35.05-.69.08-1.02.17v-.74l.36-.83h-.36l-.8.74-.22.42.22.57-.36.99-.59-.33-.5-.58-.8.58-.3-1.32 1.39-.9v-.5l.87-.57 1.38-.33.94.33 1.75.33-.44.5h-.94l.94.98.73-.82.22-.37s2.79 2.5 4.38 5.24c1.6 2.73 2.34 5.95 2.34 6.6"
172+
/>
173+
</g>
174+
</g>
175+
<g fill="url(#zi-k)">
176+
<g fill="url(#zi-k)">
177+
<path
178+
fill="url(#zi-k)"
179+
d="m26.07 9.24-.07.49.5.33.88-.58-.44-.5-.58.34z"
180+
/>
181+
</g>
182+
</g>
183+
<g fill="url(#zi-k)">
184+
<g fill="url(#zi-k)">
185+
<path
186+
fill="url(#zi-k)"
187+
d="m26.87 5.86-1.9-.74-2.17.25-2.7.74-.5.5 1.67 1.14v.66l-.65.66.87 1.73.58-.33.73-1.15c1.12-.35 2.13-.74 3.2-1.24z"
188+
/>
189+
</g>
190+
</g>
191+
<g fill="url(#zi-k)">
192+
<g fill="url(#zi-k)">
193+
<path fill="url(#zi-k)" d="m28.83 12.77-.29-.74-.5.17.14.9z" />
194+
</g>
195+
</g>
196+
<g fill="url(#zi-k)">
197+
<g fill="url(#zi-k)">
198+
<path
199+
fill="url(#zi-k)"
200+
d="m29.12 12.6-.14 1 .8-.17.58-.57-.51-.5q-.26-.67-.58-1.31h-.44v.49l.3.33z"
201+
/>
202+
</g>
203+
</g>
204+
<g fill="url(#zi-k)">
205+
<g fill="url(#zi-k)">
206+
<path
207+
fill="url(#zi-k)"
208+
d="m18.37 28.24-.59-1.15-1.09-.25-.58-1.56-1.45.16-1.24-.9-1.3 1.15v.18c-.4-.11-.89-.13-1.24-.34l-.3-.83v-.9l-.87.08.22-1.73h-.5l-.51.66-.51.25-.73-.41-.07-.9.14-1 1.1-.82h.86l.15-.5 1.09.26.8.98.15-1.64 1.38-1.15.5-1.24 1.02-.41.58-.82 1.31-.25.66-.99h-1.97l1.24-.57h.87l1.24-.42.14-.49-.43-.4-.51-.17.14-.5-.36-.74-.87.33.14-.66-1.01-.57-.8 1.4.07.49-.8.33-.51 1.07-.22-.99-1.38-.58-.22-.74 1.82-1.07.8-.74.07-.9-.43-.25-.58-.08-.37.9-.76.16c-2 1.84-6.03 5.81-6.97 13.3.04.18.68 1.19.68 1.19l1.53.9 1.52.42.66.82 1.02.74.58-.08.43.2v.13l-.58 1.56-.43.66.14.33-.36 1.23 1.3 2.39 1.31 1.15.59.82-.08 1.73.44.99-.44 1.89s-.03-.01.02.18 2.33 1.45 2.48 1.34l.27-.2-.15-.41.58-.58.22-.58.94-.33.73-1.8-.22-.5.51-.74 1.1-.25.57-1.31-.14-1.65.87-1.23.15-1.24-3.57-1.8"
209+
/>
210+
</g>
211+
</g>
212+
<g fill="url(#zi-k)">
213+
<g fill="url(#zi-k)">
214+
<path fill="url(#zi-k)" d="m16.77 9.56.72.5h.58v-.58l-.72-.33z" />
215+
</g>
216+
</g>
217+
<g fill="url(#zi-k)">
218+
<g fill="url(#zi-k)">
219+
<path
220+
fill="url(#zi-k)"
221+
d="m14.88 8.9-.37.91h.73L15.6 9q.47-.34.95-.66l.72.25 1.46.98.73-.65-.8-.33-.37-.74-1.38-.17-.07-.4-.66.16-.29.57-.36-.74-.15.33.08.82z"
222+
/>
223+
</g>
224+
</g>
225+
<g fill="url(#zi-k)">
226+
<g fill="url(#zi-k)">
227+
<path
228+
fill="url(#zi-k)"
229+
d="m17.5 6.85.36-.33.72-.16c.5-.25 1-.4 1.53-.58l-.29-.5-.94.14-.44.44-.73.1-.65.31-.32.16-.2.26z"
230+
/>
231+
</g>
232+
</g>
233+
<g fill="url(#zi-k)">
234+
<g fill="url(#zi-k)">
235+
<path fill="url(#zi-k)" d="m18.73 14.67.43-.66-.65-.5z" />
236+
</g>
237+
</g>
238+
</g>
239+
<path
240+
fill="none"
241+
stroke="url(#zi-P)"
242+
strokeMiterlimit={4}
243+
strokeOpacity={1}
244+
strokeWidth={8.11772}
245+
d="M409.43 767.12c0 82.52-66.9 149.42-149.41 149.42-82.52 0-149.42-66.9-149.42-149.42S177.5 617.7 260.02 617.7c82.5 0 149.4 66.89 149.4 149.4z"
246+
transform="translate(-17.66 -110.96)scale(.18333)"
247+
/>
248+
</g>
249+
<g>
250+
<path
251+
fill="url(#zi-Q)"
252+
fillOpacity={1}
253+
stroke="none"
254+
d="m205.65 717.3 127.5 57.54L150.84 887l186.41 26.82-26.5 48.28 145.97-65.06-57.83-76.97-25.23 34.54-88.1 5.72 118.48-104.7-135.07-31.4z"
255+
filter="url(#zi-R)"
256+
transform="translate(-17.66 -110.96)scale(.18333)"
257+
/>
258+
<path
259+
fill="#000"
260+
fillOpacity={1}
261+
stroke="none"
262+
d="m237.5 727.9 123.33 36.78-170.2 116.42-42.4-5.01 5.89 18.75 177.44 35.22-19.35 21.58 3.89 20.07 144.65-68.97 1.39-17.57-189.32-24.42 141.86-102.59-1.18-15.4-98.25-14.51-112.51-11.72Z"
263+
transform="translate(-17.66 -110.96)scale(.18333)"
264+
/>
265+
<path
266+
fill="url(#zi-S)"
267+
fillOpacity={1}
268+
stroke="#fff"
269+
strokeDasharray="none"
270+
strokeLinecap="round"
271+
strokeLinejoin="miter"
272+
strokeMiterlimit={4}
273+
strokeOpacity={1}
274+
strokeWidth={5.2}
275+
d="m207.89 715.75 153.55 32.8L154.84 875l186.4 26.82-26.5 48.28 145.97-65.06-57.83-76.97-25.23 34.54-112.38 1.43 142.76-100.42-196.4-32.29z"
276+
transform="translate(-17.66 -110.96)scale(.18333)"
277+
/>
278+
</g>
279+
</svg>
280+
);
281+
282+
export default ZeroInstall;

packages/ui-components/src/Icons/InstallationMethod/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@ import Homebrew from '#ui/Icons/InstallationMethod/Homebrew';
55
import N from '#ui/Icons/InstallationMethod/N';
66
import NVM from '#ui/Icons/InstallationMethod/NVM';
77
import Volta from '#ui/Icons/InstallationMethod/Volta';
8+
import ZeroInstall from '#ui/Icons/InstallationMethod/ZeroInstall';
89

9-
export { Choco, Docker, FNM, Homebrew, N, NVM, Volta };
10+
export { Choco, Docker, FNM, Homebrew, N, NVM, Volta, ZeroInstall };

0 commit comments

Comments
 (0)