@spunto/design-system 0.32.0 → 0.32.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/package.json +1 -1
- package/src/components/devcontainer/extension-card.tsx +1 -1
- package/src/components/devcontainer/index.ts +1 -1
- package/src/components/devcontainer/types.ts +1 -1
- package/src/components/projects/build-steps.tsx +1 -1
- package/src/components/projects/chip-list.tsx +2 -2
- package/src/components/projects/extension-picker.tsx +1 -1
- package/src/components/projects/index.ts +1 -1
- package/src/components/projects/project-form.tsx +1 -1
- package/src/components/workers/git-branch-chips.tsx +1 -1
- package/src/components/workers/worker-card.tsx +2 -2
- package/src/components/workers/worker-cockpit.tsx +2 -2
package/README.md
CHANGED
|
@@ -264,7 +264,7 @@ sides — exactly the duplication this package is for.
|
|
|
264
264
|
dozen entries, where picking is a *logo* task and full cards become a wall.
|
|
265
265
|
They flow and wrap like tags; the pickers pair them with the full card of
|
|
266
266
|
what's selected.
|
|
267
|
-
- **`ExtensionCard`** (+ `ExtensionCardSkeleton`) —
|
|
267
|
+
- **`ExtensionCard`** (+ `ExtensionCardSkeleton`) — an IDE extension: its real
|
|
268
268
|
Open VSX icon, display name, publisher + verified badge, version, formatted
|
|
269
269
|
install count, rating.
|
|
270
270
|
|
|
@@ -418,7 +418,7 @@ And the read-only twin of that form:
|
|
|
418
418
|
And the build that configuration triggers, while it runs:
|
|
419
419
|
|
|
420
420
|
- **`BuildSteps`** — an image build as the **list of blocks it is made of**
|
|
421
|
-
(base image, bootstrap, one per devcontainer feature,
|
|
421
|
+
(base image, bootstrap, one per devcontainer feature, IDE extensions,
|
|
422
422
|
finalize, DinD seed) rather than a wall of log. Each row lights up in turn and
|
|
423
423
|
carries its own duration, so "what is it doing, and for how long" reads at a
|
|
424
424
|
glance and a slow feature is visibly *the* slow one.
|
package/package.json
CHANGED
|
@@ -24,7 +24,7 @@ export interface ExtensionCardProps {
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
|
-
*
|
|
27
|
+
* An IDE extension, as a card: its real Open VSX icon, its display name, the
|
|
28
28
|
* publisher (with the marketplace's verified check), version, install count and
|
|
29
29
|
* rating.
|
|
30
30
|
*
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @spunto/design-system/devcontainer — the three catalogs you compose an
|
|
2
|
-
// environment from: base images, devcontainer features,
|
|
2
|
+
// environment from: base images, devcontainer features, IDE extensions.
|
|
3
3
|
//
|
|
4
4
|
// A second *domain* sub-export, next to `/workers`: the root entry stays
|
|
5
5
|
// "primitives with no domain" (a Button knows nothing about an OCI reference).
|
|
@@ -59,7 +59,7 @@ export interface DevcontainerFeatureEntry {
|
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
/**
|
|
62
|
-
*
|
|
62
|
+
* An IDE extension. Shaped to swallow an Open VSX search result as-is
|
|
63
63
|
* (`namespace` + `name` + `files.icon` + `downloadCount`…) as well as the
|
|
64
64
|
* flattened form an app might store.
|
|
65
65
|
*/
|
|
@@ -163,7 +163,7 @@ function StepRow({ step, last }: { step: BuildStepItem; last: boolean }) {
|
|
|
163
163
|
* An image build, as the list of blocks it is actually made of, instead of a wall of log.
|
|
164
164
|
*
|
|
165
165
|
* A project image build pulls a base image, creates the user, installs the editor and the terminal
|
|
166
|
-
* tooling, every devcontainer feature and every
|
|
166
|
+
* tooling, every devcontainer feature and every IDE extension, then bakes the DinD seed — all of
|
|
167
167
|
* it, until now, indistinguishable from the outside: one terminal scrolling. Here each of those is a
|
|
168
168
|
* row that lights up in turn, with its own duration, so "what is it doing, and for how long" is
|
|
169
169
|
* readable at a glance and a slow feature is visibly *the* slow one.
|
|
@@ -104,10 +104,10 @@ export function FeatureChips({ features, className }: { features: { id: string }
|
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
/**
|
|
107
|
-
*
|
|
107
|
+
* IDE extensions — `publisher.name` shown by its name half, with the
|
|
108
108
|
* publisher kept in the tooltip. Same logo derivation as the features
|
|
109
109
|
* (`ms-python.python` → Python); anything unrecognised keeps the puzzle piece,
|
|
110
|
-
* which is what
|
|
110
|
+
* which is what an IDE extension *is*.
|
|
111
111
|
*/
|
|
112
112
|
export function ExtensionChips({ extensions, className }: { extensions: string[]; className?: string }) {
|
|
113
113
|
return (
|
|
@@ -25,7 +25,7 @@ export interface ExtensionPickerProps {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
|
-
* Pick the
|
|
28
|
+
* Pick the IDE extensions installed into code-server: a marketplace search
|
|
29
29
|
* rendering `ExtensionCard`s, plus the picked list.
|
|
30
30
|
*
|
|
31
31
|
* The payloads of everything picked this session are kept around, so a selected
|
|
@@ -95,7 +95,7 @@ export type { BuildCacheListProps, PrebuildButtonProps } from "./build-cache-lis
|
|
|
95
95
|
// The build itself, while it runs: the blocks an image is made of, each lighting
|
|
96
96
|
// up in turn. Same domain as the cache list it sits next to (a project's image),
|
|
97
97
|
// hence this entry rather than one of its own — and domain it is, since the
|
|
98
|
-
// blocks are Spunto's (a devcontainer feature,
|
|
98
|
+
// blocks are Spunto's (a devcontainer feature, an IDE extension).
|
|
99
99
|
export { BuildSteps } from "./build-steps"
|
|
100
100
|
export type { BuildStepsProps, BuildStepItem, BuildStepKind, BuildStepState } from "./build-steps"
|
|
101
101
|
|
|
@@ -45,7 +45,7 @@ const SECTION_META: Record<
|
|
|
45
45
|
image: { icon: BoxIcon, accent: "ship", title: "Base image", hint: "The devcontainer your workers run on" },
|
|
46
46
|
repositories: { icon: GitBranchIcon, accent: "run", title: "Repositories", hint: "Cloned into /workspace at startup" },
|
|
47
47
|
features: { icon: PuzzleIcon, accent: "flame", title: "Features", hint: "Devcontainer features baked into the image" },
|
|
48
|
-
extensions: { icon: BlocksIcon, accent: "build", title: "Extensions", hint: "
|
|
48
|
+
extensions: { icon: BlocksIcon, accent: "build", title: "Extensions", hint: "IDE extensions, installed via code-server" },
|
|
49
49
|
lifecycle: { icon: TerminalIcon, accent: "ship", title: "Lifecycle", hint: "Commands run on create & on every start" },
|
|
50
50
|
ports: { icon: NetworkIcon, accent: "run", title: "Ports", hint: "Automatically forwarded for every worker" },
|
|
51
51
|
prewarm: { icon: LayersIcon, accent: "build", title: "Prewarm images", hint: "Docker images pre-loaded into the worker's docker-in-docker on first start" },
|
|
@@ -100,7 +100,7 @@ function RepoCounters({ repo }: { repo: GitRepoStatus }) {
|
|
|
100
100
|
|
|
101
101
|
export interface GitStatusSummaryProps {
|
|
102
102
|
repos: GitRepoStatus[]
|
|
103
|
-
/** Heading above the list — e.g. "Open
|
|
103
|
+
/** Heading above the list — e.g. "Open IDE" inside a tooltip. */
|
|
104
104
|
title?: string
|
|
105
105
|
className?: string
|
|
106
106
|
}
|
|
@@ -90,7 +90,7 @@ export interface WorkerCardProps {
|
|
|
90
90
|
*
|
|
91
91
|
* ```tsx
|
|
92
92
|
* menu={[
|
|
93
|
-
* codeUrl && { label: "Open
|
|
93
|
+
* codeUrl && { label: "Open IDE", icon: Code2Icon, href: codeUrl, target: "_blank" },
|
|
94
94
|
* "separator",
|
|
95
95
|
* isRunning && { label: "Stop", icon: SquareIcon, onClick: () => stop.mutate(), loading: stop.isPending },
|
|
96
96
|
* "separator",
|
|
@@ -104,7 +104,7 @@ export interface WorkerCardProps {
|
|
|
104
104
|
* item, a dialog opened from an entry). Takes precedence over `menu`.
|
|
105
105
|
*/
|
|
106
106
|
actions?: ReactNode
|
|
107
|
-
/** Replaces the default "View" footer entirely (extra buttons,
|
|
107
|
+
/** Replaces the default "View" footer entirely (extra buttons, an IDE link…). */
|
|
108
108
|
footer?: ReactNode
|
|
109
109
|
/** Label of the default footer button. */
|
|
110
110
|
viewLabel?: string
|
|
@@ -90,7 +90,7 @@ export interface WorkerCockpitProps {
|
|
|
90
90
|
onAddTag?: (tag: string, next: string[]) => void
|
|
91
91
|
onRemoveTag?: (tag: string, next: string[]) => void
|
|
92
92
|
|
|
93
|
-
/** "Open
|
|
93
|
+
/** "Open IDE", top-right. Omitted → the button doesn't show. */
|
|
94
94
|
editorHref?: string
|
|
95
95
|
|
|
96
96
|
onStop?: () => void
|
|
@@ -473,7 +473,7 @@ export function WorkerCockpit({
|
|
|
473
473
|
<div className="flex shrink-0 items-center gap-2">
|
|
474
474
|
{settled && editorHref && (
|
|
475
475
|
<Link href={editorHref} className={cn(buttonVariants({ variant: "default", size: "sm" }), "h-8 gap-1.5 px-3 text-xs")}>
|
|
476
|
-
<Code2Icon className="h-3.5 w-3.5" />Open
|
|
476
|
+
<Code2Icon className="h-3.5 w-3.5" />Open IDE<ExternalLinkIcon className="h-2.5 w-2.5 opacity-70" />
|
|
477
477
|
</Link>
|
|
478
478
|
)}
|
|
479
479
|
{settled && onStop && (
|