@cloudgrid-io/ui 0.7.0 → 0.9.0
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/dist/blocks/onboarding-question.d.ts +35 -2
- package/dist/blocks/onboarding-question.d.ts.map +1 -1
- package/dist/blocks/onboarding-question.js +73 -15
- package/dist/blocks/onboarding-question.js.map +1 -1
- package/dist/blocks/social-marks.d.ts +34 -0
- package/dist/blocks/social-marks.d.ts.map +1 -0
- package/dist/blocks/social-marks.js +44 -0
- package/dist/blocks/social-marks.js.map +1 -0
- package/dist/blocks/tool-setup.d.ts +103 -0
- package/dist/blocks/tool-setup.d.ts.map +1 -0
- package/dist/blocks/tool-setup.js +61 -0
- package/dist/blocks/tool-setup.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -80,11 +80,21 @@ export interface OnboardingOption {
|
|
|
80
80
|
description?: string;
|
|
81
81
|
disabled?: boolean;
|
|
82
82
|
}
|
|
83
|
-
/**
|
|
83
|
+
/**
|
|
84
|
+
* Two columns is the Figma arrangement. One reads as a list, three as a picker.
|
|
85
|
+
*
|
|
86
|
+
* Four is the install screen's tool grid (#124) — eight AI tools laid out 4x2,
|
|
87
|
+
* where the options are marks with a short caption rather than sentences, so
|
|
88
|
+
* they stay legible much narrower than a worded answer does. It steps
|
|
89
|
+
* 1 -> 2 -> 4 and deliberately skips 3: an eight-item set over three columns
|
|
90
|
+
* leaves a two-item orphan row, and the jump lands on the breakpoint where four
|
|
91
|
+
* tiles actually fit.
|
|
92
|
+
*/
|
|
84
93
|
declare const COLUMNS: {
|
|
85
94
|
readonly 1: "grid-cols-1";
|
|
86
95
|
readonly 2: "grid-cols-1 sm:grid-cols-2";
|
|
87
96
|
readonly 3: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3";
|
|
97
|
+
readonly 4: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-4";
|
|
88
98
|
};
|
|
89
99
|
/** Everything both modes share. The mode-specific half is the union below. */
|
|
90
100
|
type OnboardingQuestionBaseProps = Omit<React.ComponentProps<"section">, "ref" | "title" | "defaultValue" | "onChange"> & {
|
|
@@ -93,11 +103,34 @@ type OnboardingQuestionBaseProps = Omit<React.ComponentProps<"section">, "ref" |
|
|
|
93
103
|
sub?: string;
|
|
94
104
|
eyebrow?: string;
|
|
95
105
|
options: OnboardingOption[];
|
|
106
|
+
/**
|
|
107
|
+
* `card` is a grid of option cards. `chip` is a wrapping cloud of pills, for
|
|
108
|
+
* options that are single words rather than answers — see CHIP_CLASS.
|
|
109
|
+
* `columns` is ignored for chips, which size to their text and wrap.
|
|
110
|
+
*/
|
|
111
|
+
variant?: "card" | "chip";
|
|
112
|
+
/**
|
|
113
|
+
* `stacked` puts the question above its options. `side` puts it in a column
|
|
114
|
+
* beside them, which is what lets two questions share one screen without two
|
|
115
|
+
* display-size headings competing for it (#128).
|
|
116
|
+
*/
|
|
117
|
+
layout?: "stacked" | "side";
|
|
96
118
|
columns?: keyof typeof COLUMNS;
|
|
97
119
|
/** Forwarded to `PageHeading`. `h2` for a question inside a larger page. */
|
|
98
120
|
level?: 1 | 2;
|
|
99
121
|
headingSize?: React.ComponentProps<typeof PageHeading>["size"];
|
|
100
|
-
|
|
122
|
+
/**
|
|
123
|
+
* `null` renders no button. Two questions sharing one screen share ONE
|
|
124
|
+
* Continue, so the second must be able to render without one — and a screen
|
|
125
|
+
* that stacks questions would otherwise grow a button per question, which is
|
|
126
|
+
* what the level screen did before this existed (#128).
|
|
127
|
+
*
|
|
128
|
+
* Keyed on the label rather than on `onContinue` for the reason ToolSetup
|
|
129
|
+
* gives: the gallery that reviews these components is a server module, so a
|
|
130
|
+
* handler cannot reach it, and gating the button on one makes it unrenderable
|
|
131
|
+
* in the only place a designer sees it.
|
|
132
|
+
*/
|
|
133
|
+
continueLabel?: string | null;
|
|
101
134
|
onContinue?: () => void;
|
|
102
135
|
/**
|
|
103
136
|
* Overrides when the button is live. Left alone it enables as soon as there is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboarding-question.d.ts","sourceRoot":"","sources":["../../src/blocks/onboarding-question.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAS9B,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAGxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiEG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAA;IACb,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED
|
|
1
|
+
{"version":3,"file":"onboarding-question.d.ts","sourceRoot":"","sources":["../../src/blocks/onboarding-question.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAS9B,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAGxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiEG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAA;IACb,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;GASG;AACH,QAAA,MAAM,OAAO;;;;;CAKH,CAAA;AA4IV,8EAA8E;AAC9E,KAAK,2BAA2B,GAAG,IAAI,CACrC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,EAC/B,KAAK,GAAG,OAAO,GAAG,cAAc,GAAG,UAAU,CAC9C,GAAG;IACF,KAAK,EAAE,MAAM,CAAA;IACb,2DAA2D;IAC3D,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC3B;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB;;;;OAIG;IACH,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAA;IAC3B,OAAO,CAAC,EAAE,MAAM,OAAO,OAAO,CAAA;IAC9B,4EAA4E;IAC5E,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IACb,WAAW,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;IAC9D;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;IACvB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,KAAK,uBAAuB,GAAG,2BAA2B,GACxD,CACI;IACE,uEAAuE;IACvE,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;CAC/C,GACD;IACE,0EAA0E;IAC1E,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;CAC1C,CACJ,CAAA;AAEH,iBAAS,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,qBA6KzD;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAA"}
|
|
@@ -10,11 +10,21 @@ import { Button } from "../ui/button.js";
|
|
|
10
10
|
import { OptionCard } from "./option-card.js";
|
|
11
11
|
import { PageHeading } from "./page-heading.js";
|
|
12
12
|
import { cn } from "../lib/cloudgrid-cn.js";
|
|
13
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Two columns is the Figma arrangement. One reads as a list, three as a picker.
|
|
15
|
+
*
|
|
16
|
+
* Four is the install screen's tool grid (#124) — eight AI tools laid out 4x2,
|
|
17
|
+
* where the options are marks with a short caption rather than sentences, so
|
|
18
|
+
* they stay legible much narrower than a worded answer does. It steps
|
|
19
|
+
* 1 -> 2 -> 4 and deliberately skips 3: an eight-item set over three columns
|
|
20
|
+
* leaves a two-item orphan row, and the jump lands on the breakpoint where four
|
|
21
|
+
* tiles actually fit.
|
|
22
|
+
*/
|
|
14
23
|
const COLUMNS = {
|
|
15
24
|
1: "grid-cols-1",
|
|
16
25
|
2: "grid-cols-1 sm:grid-cols-2",
|
|
17
26
|
3: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",
|
|
27
|
+
4: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-4",
|
|
18
28
|
};
|
|
19
29
|
/**
|
|
20
30
|
* The card, in both modes. Every class here is a utility over a `--cg-*` token,
|
|
@@ -26,19 +36,55 @@ const COLUMNS = {
|
|
|
26
36
|
* fighting it.
|
|
27
37
|
*/
|
|
28
38
|
const OPTION_CLASS = cn("group relative cursor-pointer pe-11 text-start transition-colors select-none", "hover:border-line", "focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring focus-visible:outline-none", "data-checked:border-line-strong data-checked:ring-1 data-checked:ring-(--cg-border-strong)", "data-disabled:pointer-events-none data-disabled:opacity-50");
|
|
39
|
+
/**
|
|
40
|
+
* The chip, for questions whose options are single words rather than answers.
|
|
41
|
+
*
|
|
42
|
+
* The console's "Let's know each other better" screen (#128) asks two questions
|
|
43
|
+
* on one page, and its options are `Terminal`, `CORS`, `Docker`. A card per word
|
|
44
|
+
* turns nine words into a screenful; the design lays them out as a wrapping cloud
|
|
45
|
+
* of pills beside the question, which is what a set of words wants to be.
|
|
46
|
+
*
|
|
47
|
+
* ## Selection is a FILL here, and that is still not colour alone
|
|
48
|
+
*
|
|
49
|
+
* A card signals selection with a drawn indicator that changes shape. A chip has
|
|
50
|
+
* no room for one — the design fills it instead, and adding a tick inside a 38px
|
|
51
|
+
* pill would crowd the word it is meant to mark.
|
|
52
|
+
*
|
|
53
|
+
* That is acceptable because the flip is a LUMINANCE flip, not a hue flip: a
|
|
54
|
+
* near-white chip becomes a dark brand-filled one, and luminance is exactly what
|
|
55
|
+
* survives every form of colour blindness. Hue-only pairs — red/green at equal
|
|
56
|
+
* lightness — are what the rule in #121 was written against. The e2e assertion
|
|
57
|
+
* measures the luminance delta rather than trusting that, because "we chose two
|
|
58
|
+
* colours that differ enough" is a claim, and this library measures claims.
|
|
59
|
+
*
|
|
60
|
+
* `aria-checked` carries the same fact to assistive tech either way.
|
|
61
|
+
*
|
|
62
|
+
* ## Why weight does not change with selection
|
|
63
|
+
*
|
|
64
|
+
* Bolding a selected chip would be a second non-colour signal and it is the
|
|
65
|
+
* obvious thing to reach for. It also reflows the row: a bold word is wider, so
|
|
66
|
+
* picking one chip nudges every chip after it. In a wrapping cloud that can move
|
|
67
|
+
* a chip to another line under the user's cursor.
|
|
68
|
+
*/
|
|
69
|
+
const CHIP_CLASS = cn("group relative inline-flex cursor-pointer items-center rounded-pill px-4 py-2 text-start", "border border-hairline bg-card text-body-sm text-ink transition-colors select-none", "hover:border-line", "focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring focus-visible:outline-none", "data-checked:border-transparent data-checked:bg-primary data-checked:text-on-primary", "data-disabled:pointer-events-none data-disabled:opacity-50");
|
|
29
70
|
/** The indicator's frame. Round for one-of, square for many-of: shape says which. */
|
|
30
71
|
const INDICATOR_CLASS = cn("pointer-events-none absolute end-4 top-4 flex size-4 shrink-0 items-center justify-center", "border border-line text-ink transition-colors group-data-checked:border-line-strong");
|
|
31
|
-
function OnboardingQuestionOption({ option, mode, name, }) {
|
|
72
|
+
function OnboardingQuestionOption({ option, mode, variant, name, }) {
|
|
73
|
+
// A chip is the render element itself, not an OptionCard: there is no title,
|
|
74
|
+
// body or glyph to place, and routing a bare word through a card component
|
|
75
|
+
// would mean overriding away every part of it.
|
|
76
|
+
const chip = variant === "chip";
|
|
32
77
|
// `render` rather than children: Base UI merges its own role, aria-checked,
|
|
33
78
|
// data-checked, tabIndex, handlers and ref INTO this element, so the option is
|
|
34
79
|
// literally an OptionCard with radio or checkbox semantics rather than a
|
|
35
80
|
// lookalike. className is concatenated, and OptionCard runs the result through
|
|
36
81
|
// cn() last, so these utilities win the conflicts they are meant to win.
|
|
37
|
-
const
|
|
82
|
+
const element = chip ? (_jsx("span", { children: option.label })) : (_jsx(OptionCard, { title: option.label, body: option.description, glyph: option.icon }));
|
|
83
|
+
const optionClass = chip ? CHIP_CLASS : OPTION_CLASS;
|
|
38
84
|
if (mode === "multi") {
|
|
39
|
-
return (_jsx(Checkbox.Root, { value: option.value, name: name, disabled: option.disabled, "data-slot": "onboarding-question-option", className:
|
|
85
|
+
return (_jsx(Checkbox.Root, { value: option.value, name: name, disabled: option.disabled, "data-slot": "onboarding-question-option", "data-variant": variant, className: optionClass, render: element, children: chip ? null : (_jsx("span", { "aria-hidden": "true", "data-slot": "onboarding-question-indicator", className: cn(INDICATOR_CLASS, "rounded-[4px]"), children: _jsx(Checkbox.Indicator, { className: "flex [&>svg]:size-3", children: _jsx(CheckIcon, { strokeWidth: 3 }) }) })) }));
|
|
40
86
|
}
|
|
41
|
-
return (_jsx(Radio.Root, { value: option.value, disabled: option.disabled, "data-slot": "onboarding-question-option", className:
|
|
87
|
+
return (_jsx(Radio.Root, { value: option.value, disabled: option.disabled, "data-slot": "onboarding-question-option", "data-variant": variant, className: optionClass, render: element, children: chip ? null : (_jsx("span", { "aria-hidden": "true", "data-slot": "onboarding-question-indicator", className: cn(INDICATOR_CLASS, "rounded-pill"), children: _jsx(Radio.Indicator, { className: "size-2 rounded-pill bg-current" }) })) }));
|
|
42
88
|
}
|
|
43
89
|
function OnboardingQuestion(props) {
|
|
44
90
|
// Narrowed on the discriminant BEFORE destructuring, which is what keeps the
|
|
@@ -47,7 +93,7 @@ function OnboardingQuestion(props) {
|
|
|
47
93
|
// first would collapse both into one union and hand the console a value it has
|
|
48
94
|
// to unpick at every call site.
|
|
49
95
|
const isMulti = props.mode === "multi";
|
|
50
|
-
const { title, sub, eyebrow, options, columns = 2, level = 1, headingSize = "md", continueLabel = "Continue", onContinue, canContinue, footer, name, className,
|
|
96
|
+
const { title, sub, eyebrow, options, variant = "card", layout = "stacked", columns = 2, level = 1, headingSize = "md", continueLabel = "Continue", onContinue, canContinue, footer, name, className,
|
|
51
97
|
// Held back so they cannot reach the DOM as attributes.
|
|
52
98
|
mode: _mode, value: _value, defaultValue: _defaultValue, onValueChange: _onValueChange, ...rest } = props;
|
|
53
99
|
// A mirror, kept for ONE reason: to know whether the button should be live.
|
|
@@ -72,15 +118,27 @@ function OnboardingQuestion(props) {
|
|
|
72
118
|
// screen reader user needs to hear it. Labelling by the title alone would drop
|
|
73
119
|
// the one sentence that says how many answers are allowed.
|
|
74
120
|
const headingId = React.useId();
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
121
|
+
// Chips wrap; cards grid. A chip cloud in a grid would stretch every pill to a
|
|
122
|
+
// column width, which is the one thing a chip must not do — its width IS its
|
|
123
|
+
// word.
|
|
124
|
+
const grid = variant === "chip"
|
|
125
|
+
? "flex flex-wrap gap-2"
|
|
126
|
+
: cn("grid gap-4", COLUMNS[columns]);
|
|
127
|
+
// `side` is a two-column band holding the question and its options; `stacked`
|
|
128
|
+
// is the section's own vertical flow, so the heading and the group are simply
|
|
129
|
+
// siblings. Wrapping them either way keeps ONE place that decides the
|
|
130
|
+
// relationship, rather than two branches that each render a heading.
|
|
131
|
+
const band = layout === "side"
|
|
132
|
+
? "grid items-start gap-4 sm:grid-cols-[minmax(0,16rem)_1fr] sm:gap-8"
|
|
133
|
+
: "flex flex-col gap-8";
|
|
134
|
+
return (_jsxs("section", { "data-slot": "onboarding-question", "data-layout": layout, className: cn("flex flex-col gap-8", className), ...rest, children: [_jsxs("div", { "data-slot": "onboarding-question-band", className: band, children: [layout === "side" ? (_jsxs("div", { id: headingId, "data-slot": "onboarding-question-label", children: [React.createElement(level === 1 ? "h1" : "h2", { className: "m-0 text-body-sm font-medium text-ink" }, title), sub ? _jsx("p", { className: "mt-1 text-caption text-faint", children: sub }) : null] })) : (_jsx(PageHeading, { id: headingId, eyebrow: eyebrow, title: title, sub: sub, size: headingSize, level: level })), isMulti ? (_jsx(CheckboxGroup, { "aria-labelledby": headingId, "data-slot": "onboarding-question-options", className: grid, defaultValue: props.defaultValue ?? undefined, value: props.value, onValueChange: (next) => {
|
|
135
|
+
setPicked(next);
|
|
136
|
+
props.onValueChange?.(next);
|
|
137
|
+
}, children: options.map((option) => (_jsx(OnboardingQuestionOption, { option: option, mode: "multi", variant: variant, name: name }, option.value))) })) : (_jsx(RadioGroup, { "aria-labelledby": headingId, "data-slot": "onboarding-question-options", className: grid, name: name, defaultValue: props.defaultValue ?? undefined, value: props.value === null ? "" : props.value, onValueChange: (next) => {
|
|
138
|
+
const answer = typeof next === "string" && next !== "" ? next : null;
|
|
139
|
+
setPicked(answer == null ? [] : [answer]);
|
|
140
|
+
props.onValueChange?.(answer);
|
|
141
|
+
}, children: options.map((option) => (_jsx(OnboardingQuestionOption, { option: option, mode: "single", variant: variant }, option.value))) }))] }), continueLabel !== null || footer ? (_jsxs("div", { "data-slot": "onboarding-question-actions", className: "flex flex-col items-start gap-4", children: [continueLabel !== null ? (_jsx(Button, { type: "button", size: "lg", "data-slot": "onboarding-question-continue", onClick: onContinue, disabled: !(canContinue ?? answered), children: continueLabel })) : null, footer] })) : null] }));
|
|
84
142
|
}
|
|
85
143
|
export { OnboardingQuestion };
|
|
86
144
|
//# sourceMappingURL=onboarding-question.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboarding-question.js","sourceRoot":"","sources":["../../src/blocks/onboarding-question.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAoFvC
|
|
1
|
+
{"version":3,"file":"onboarding-question.js","sourceRoot":"","sources":["../../src/blocks/onboarding-question.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
type MarkProps = {
|
|
3
|
+
className?: string;
|
|
4
|
+
};
|
|
5
|
+
/** X. simple-icons. Brand hex 000000. */
|
|
6
|
+
export declare const XMark: ({ className }: MarkProps) => React.JSX.Element;
|
|
7
|
+
/** YouTube. simple-icons. Brand hex FF0000. */
|
|
8
|
+
export declare const YoutubeMark: ({ className }: MarkProps) => React.JSX.Element;
|
|
9
|
+
/** Apple Podcasts. simple-icons. Brand hex 9933CC. */
|
|
10
|
+
export declare const ApplePodcastsMark: ({ className }: MarkProps) => React.JSX.Element;
|
|
11
|
+
/** Google. simple-icons. Brand hex 4285F4. */
|
|
12
|
+
export declare const GoogleMark: ({ className }: MarkProps) => React.JSX.Element;
|
|
13
|
+
/** Keyed by the label a caller shows, the same shape as TOOL_MARKS. */
|
|
14
|
+
export declare const SOCIAL_MARKS: {
|
|
15
|
+
readonly X: {
|
|
16
|
+
readonly Mark: ({ className }: MarkProps) => React.JSX.Element;
|
|
17
|
+
readonly hex: "000000";
|
|
18
|
+
};
|
|
19
|
+
readonly YouTube: {
|
|
20
|
+
readonly Mark: ({ className }: MarkProps) => React.JSX.Element;
|
|
21
|
+
readonly hex: "FF0000";
|
|
22
|
+
};
|
|
23
|
+
readonly "Apple Podcasts": {
|
|
24
|
+
readonly Mark: ({ className }: MarkProps) => React.JSX.Element;
|
|
25
|
+
readonly hex: "9933CC";
|
|
26
|
+
};
|
|
27
|
+
readonly Google: {
|
|
28
|
+
readonly Mark: ({ className }: MarkProps) => React.JSX.Element;
|
|
29
|
+
readonly hex: "4285F4";
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
export type SocialMarkName = keyof typeof SOCIAL_MARKS;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=social-marks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"social-marks.d.ts","sourceRoot":"","sources":["../../src/blocks/social-marks.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,KAAK,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAavC,yCAAyC;AACzC,eAAO,MAAM,KAAK,kBAVoB,SAAS,sBAY9C,CAAA;AAED,+CAA+C;AAC/C,eAAO,MAAM,WAAW,kBAfc,SAAS,sBAiB9C,CAAA;AAED,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,kBApBQ,SAAS,sBAsB9C,CAAA;AAED,8CAA8C;AAC9C,eAAO,MAAM,UAAU,kBAzBe,SAAS,sBA2B9C,CAAA;AAED,uEAAuE;AACvE,eAAO,MAAM,YAAY;;uCA9Ba,SAAS;;;;uCAAT,SAAS;;;;uCAAT,SAAS;;;;uCAAT,SAAS;;;CAmCrC,CAAA;AAEV,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,YAAY,CAAA"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
// GENERATED by scripts/generate-social-marks.mjs — do not hand-edit.
|
|
3
|
+
// Regenerate instead: path data transcribed by hand is how a mark ends up subtly
|
|
4
|
+
// wrong, which is worse than no mark at all.
|
|
5
|
+
//
|
|
6
|
+
// Source: simple-icons (CC0-1.0), read programmatically.
|
|
7
|
+
//
|
|
8
|
+
// A licence covers the FILE. It never covers the trademark in it. Each vendor's
|
|
9
|
+
// brand guidelines still govern use: alongside our own marks, not more prominent,
|
|
10
|
+
// not on merchandise, not folded into our own branding.
|
|
11
|
+
//
|
|
12
|
+
// Kept apart from tool-marks.tsx on purpose. Those are tools an entity is plugged
|
|
13
|
+
// into and are keyed by tool name for ToolLogo; these answer "where did you hear
|
|
14
|
+
// about us", which is a different question with a different list. One set growing
|
|
15
|
+
// the other's entries is how a picker ends up offering Cursor as a referral
|
|
16
|
+
// source.
|
|
17
|
+
//
|
|
18
|
+
// LinkedIn is NOT here. simple-icons has no LinkedIn mark — it was removed from
|
|
19
|
+
// the set after a trademark request — and a vendor that had its mark pulled is
|
|
20
|
+
// not one to route around by sourcing the artwork elsewhere. ToolLogo renders a
|
|
21
|
+
// monogram when handed no mark, so the option still appears without artwork.
|
|
22
|
+
import * as React from "react";
|
|
23
|
+
/** One mark. `currentColor` so ToolLogo's tone rule can recolour it on ink. */
|
|
24
|
+
function mark(path, viewBox = "0 0 24 24") {
|
|
25
|
+
return function Mark({ className }) {
|
|
26
|
+
return (_jsx("svg", { viewBox: viewBox, fill: "currentColor", "aria-hidden": "true", className: className, children: _jsx("path", { d: path }) }));
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/** X. simple-icons. Brand hex 000000. */
|
|
30
|
+
export const XMark = mark("M14.234 10.162 22.977 0h-2.072l-7.591 8.824L7.251 0H.258l9.168 13.343L.258 24H2.33l8.016-9.318L16.749 24h6.993zm-2.837 3.299-.929-1.329L3.076 1.56h3.182l5.965 8.532.929 1.329 7.754 11.09h-3.182z");
|
|
31
|
+
/** YouTube. simple-icons. Brand hex FF0000. */
|
|
32
|
+
export const YoutubeMark = mark("M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z");
|
|
33
|
+
/** Apple Podcasts. simple-icons. Brand hex 9933CC. */
|
|
34
|
+
export const ApplePodcastsMark = mark("M5.34 0A5.328 5.328 0 000 5.34v13.32A5.328 5.328 0 005.34 24h13.32A5.328 5.328 0 0024 18.66V5.34A5.328 5.328 0 0018.66 0zm6.525 2.568c2.336 0 4.448.902 6.056 2.587 1.224 1.272 1.912 2.619 2.264 4.392.12.59.12 2.2.007 2.864a8.506 8.506 0 01-3.24 5.296c-.608.46-2.096 1.261-2.336 1.261-.088 0-.096-.091-.056-.46.072-.592.144-.715.48-.856.536-.224 1.448-.874 2.008-1.435a7.644 7.644 0 002.008-3.536c.208-.824.184-2.656-.048-3.504-.728-2.696-2.928-4.792-5.624-5.352-.784-.16-2.208-.16-3 0-2.728.56-4.984 2.76-5.672 5.528-.184.752-.184 2.584 0 3.336.456 1.832 1.64 3.512 3.192 4.512.304.2.672.408.824.472.336.144.408.264.472.856.04.36.03.464-.056.464-.056 0-.464-.176-.896-.384l-.04-.03c-2.472-1.216-4.056-3.274-4.632-6.012-.144-.706-.168-2.392-.03-3.04.36-1.74 1.048-3.1 2.192-4.304 1.648-1.737 3.768-2.656 6.128-2.656zm.134 2.81c.409.004.803.04 1.106.106 2.784.62 4.76 3.408 4.376 6.174-.152 1.114-.536 2.03-1.216 2.88-.336.43-1.152 1.15-1.296 1.15-.023 0-.048-.272-.048-.603v-.605l.416-.496c1.568-1.878 1.456-4.502-.256-6.224-.664-.67-1.432-1.064-2.424-1.246-.64-.118-.776-.118-1.448-.008-1.02.167-1.81.562-2.512 1.256-1.72 1.704-1.832 4.342-.264 6.222l.413.496v.608c0 .336-.027.608-.06.608-.03 0-.264-.16-.512-.36l-.034-.011c-.832-.664-1.568-1.842-1.872-2.997-.184-.698-.184-2.024.008-2.72.504-1.878 1.888-3.335 3.808-4.019.41-.145 1.133-.22 1.814-.211zm-.13 2.99c.31 0 .62.06.844.178.488.253.888.745 1.04 1.259.464 1.578-1.208 2.96-2.72 2.254h-.015c-.712-.331-1.096-.956-1.104-1.77 0-.733.408-1.371 1.112-1.745.224-.117.534-.176.844-.176zm-.011 4.728c.988-.004 1.706.349 1.97.97.198.464.124 1.932-.218 4.302-.232 1.656-.36 2.074-.68 2.356-.44.39-1.064.498-1.656.288h-.003c-.716-.257-.87-.605-1.164-2.644-.341-2.37-.416-3.838-.218-4.302.262-.616.974-.966 1.97-.97z");
|
|
35
|
+
/** Google. simple-icons. Brand hex 4285F4. */
|
|
36
|
+
export const GoogleMark = mark("M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z");
|
|
37
|
+
/** Keyed by the label a caller shows, the same shape as TOOL_MARKS. */
|
|
38
|
+
export const SOCIAL_MARKS = {
|
|
39
|
+
"X": { Mark: XMark, hex: "000000" },
|
|
40
|
+
"YouTube": { Mark: YoutubeMark, hex: "FF0000" },
|
|
41
|
+
"Apple Podcasts": { Mark: ApplePodcastsMark, hex: "9933CC" },
|
|
42
|
+
"Google": { Mark: GoogleMark, hex: "4285F4" },
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=social-marks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"social-marks.js","sourceRoot":"","sources":["../../src/blocks/social-marks.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,iFAAiF;AACjF,6CAA6C;AAC7C,EAAE;AACF,yDAAyD;AACzD,EAAE;AACF,gFAAgF;AAChF,kFAAkF;AAClF,wDAAwD;AACxD,EAAE;AACF,kFAAkF;AAClF,iFAAiF;AACjF,kFAAkF;AAClF,4EAA4E;AAC5E,UAAU;AACV,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,gFAAgF;AAChF,6EAA6E;AAE7E,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,+EAA+E;AAC/E,SAAS,IAAI,CAAC,IAAY,EAAE,OAAO,GAAG,WAAW;IAC/C,OAAO,SAAS,IAAI,CAAC,EAAE,SAAS,EAAa;QAC3C,OAAO,CACL,cAAK,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,cAAc,iBAAa,MAAM,EAAC,SAAS,EAAE,SAAS,YAChF,eAAM,CAAC,EAAE,IAAI,GAAI,GACb,CACP,CAAA;IACH,CAAC,CAAA;AACH,CAAC;AAED,yCAAyC;AACzC,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,CACvB,oMAAoM,CACrM,CAAA;AAED,+CAA+C;AAC/C,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAC7B,8VAA8V,CAC/V,CAAA;AAED,sDAAsD;AACtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CACnC,quDAAquD,CACtuD,CAAA;AAED,8CAA8C;AAC9C,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAC5B,6VAA6V,CAC9V,CAAA;AAED,uEAAuE;AACvE,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE;IACnC,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,EAAE;IAC/C,gBAAgB,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,QAAQ,EAAE;IAC5D,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE;CACrC,CAAA"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { PageHeading } from "./page-heading.js";
|
|
3
|
+
/**
|
|
4
|
+
* Getting CloudGrid into the tool someone already works in: a tool to pick, and
|
|
5
|
+
* for that tool the exact thing to paste, copyable in one press.
|
|
6
|
+
*
|
|
7
|
+
* One component for two surfaces (#126). The console asks this as the last step
|
|
8
|
+
* of onboarding; the site serves the same thing as a public setup guide. They
|
|
9
|
+
* were heading for two implementations of one screen, which is how the two come
|
|
10
|
+
* to disagree about the same setup with nothing to catch it.
|
|
11
|
+
*
|
|
12
|
+
* ## The visual treatment here is PROVISIONAL
|
|
13
|
+
*
|
|
14
|
+
* Founder, 2026-08-25: a better component design exists and is not ready yet —
|
|
15
|
+
* "make this nice and we will replace the full component shortly". So this file
|
|
16
|
+
* is written to be *replaced*, and the effort went where replacement is cheap:
|
|
17
|
+
*
|
|
18
|
+
* - **The props are the contract.** `tools`, `value`/`defaultValue`/
|
|
19
|
+
* `onValueChange`, `onContinue`. A redesign changes what this renders, not
|
|
20
|
+
* what a consumer passes, so the console and the site keep compiling.
|
|
21
|
+
* - **The behaviour is Base UI's, not this file's.** Roving focus, arrow-key
|
|
22
|
+
* traversal and the tab/panel wiring come from `Tabs`; copy and its announced
|
|
23
|
+
* result come from `CodeBlock`. Those are the parts that are expensive to get
|
|
24
|
+
* right and silent when wrong, and a redesign inherits them for free.
|
|
25
|
+
* - **The paint is a handful of utilities over `--cg-*` tokens** and nothing
|
|
26
|
+
* more. There is no bespoke geometry to unpick.
|
|
27
|
+
*
|
|
28
|
+
* Do not build anything on the internals — the slots and the class lists are
|
|
29
|
+
* the disposable half.
|
|
30
|
+
*
|
|
31
|
+
* ## Presentation only
|
|
32
|
+
*
|
|
33
|
+
* The line #117 and #121 drew, held again. This component carries no CloudGrid
|
|
34
|
+
* prompt, no MCP command, no tool list, and no idea what comes next. It renders
|
|
35
|
+
* the tools it is handed and reports which is selected. That is exactly what
|
|
36
|
+
* lets one component serve onboarding and a public guide: the strings differ,
|
|
37
|
+
* the screen does not.
|
|
38
|
+
*
|
|
39
|
+
* ## Why tabs and not the picker beside it
|
|
40
|
+
*
|
|
41
|
+
* `OnboardingQuestion` asks a question and reports an answer. This does not ask
|
|
42
|
+
* anything — every tool is a valid thing to look at, looking is free, and
|
|
43
|
+
* nothing is being recorded by looking. A radio group would tell assistive tech
|
|
44
|
+
* that an answer had been given when the user was reading. Tabs say "same
|
|
45
|
+
* screen, different content", which is what this is.
|
|
46
|
+
*/
|
|
47
|
+
export interface ToolSetupTool {
|
|
48
|
+
/** What `onValueChange` reports. Stable, and never shown. */
|
|
49
|
+
value: string;
|
|
50
|
+
/** The words on the tab. Two short words wrap; they are not truncated. */
|
|
51
|
+
label: string;
|
|
52
|
+
/**
|
|
53
|
+
* The lead-in over the prompt — "Copy and send this to Claude Code". Written
|
|
54
|
+
* per tool because the sentence names the tool, and a generic one reads as
|
|
55
|
+
* boilerplate at the exact moment the user needs to know where the text goes.
|
|
56
|
+
*/
|
|
57
|
+
instruction?: string;
|
|
58
|
+
/** The text to paste. Multi-line is normal here; `CodeBlock` preserves it. */
|
|
59
|
+
prompt: string;
|
|
60
|
+
/** Shown beside the instruction. For a tool with a manual path as well. */
|
|
61
|
+
alternative?: {
|
|
62
|
+
label: string;
|
|
63
|
+
href: string;
|
|
64
|
+
};
|
|
65
|
+
disabled?: boolean;
|
|
66
|
+
}
|
|
67
|
+
declare function ToolSetup({ tools, value, defaultValue, onValueChange, title, sub, eyebrow, level, headingSize, continueLabel, onContinue, canContinue, footer, className, ...props }: Omit<React.ComponentProps<"section">, "ref" | "title" | "defaultValue" | "onChange"> & {
|
|
68
|
+
tools: ToolSetupTool[];
|
|
69
|
+
value?: string;
|
|
70
|
+
defaultValue?: string;
|
|
71
|
+
onValueChange?: (value: string) => void;
|
|
72
|
+
/** Omitted, no heading renders — the site puts this under its own page title. */
|
|
73
|
+
title?: string;
|
|
74
|
+
sub?: string;
|
|
75
|
+
eyebrow?: string;
|
|
76
|
+
/** Forwarded to `PageHeading`. `h2` for a section inside a larger page. */
|
|
77
|
+
level?: 1 | 2;
|
|
78
|
+
headingSize?: React.ComponentProps<typeof PageHeading>["size"];
|
|
79
|
+
/**
|
|
80
|
+
* `null` renders no button at all. The site's copy of this screen ends at the
|
|
81
|
+
* prompt — there is nothing to continue to, and a dead button saying
|
|
82
|
+
* otherwise is worse than no button.
|
|
83
|
+
*
|
|
84
|
+
* The absence is keyed on the LABEL and not on `onContinue` deliberately. A
|
|
85
|
+
* handler is a function, and the gallery that reviews this component is a
|
|
86
|
+
* server module by design, so gating the button on one made the button
|
|
87
|
+
* unrenderable in the only place a designer sees it — caught by "Event
|
|
88
|
+
* handlers cannot be passed to Client Component props" at prerender. A
|
|
89
|
+
* declarative opt-out works from both.
|
|
90
|
+
*/
|
|
91
|
+
continueLabel?: string | null;
|
|
92
|
+
onContinue?: () => void;
|
|
93
|
+
/**
|
|
94
|
+
* Defaults to `true`, unlike `OnboardingQuestion`'s. Nothing here is an answer
|
|
95
|
+
* — the user goes away to their tool and comes back, so gating the button on a
|
|
96
|
+
* selection would strand anyone who set up from the tab that was already open.
|
|
97
|
+
*/
|
|
98
|
+
canContinue?: boolean;
|
|
99
|
+
/** Under the button. The console puts "I will do this later" here. */
|
|
100
|
+
footer?: React.ReactNode;
|
|
101
|
+
}): React.JSX.Element;
|
|
102
|
+
export { ToolSetup };
|
|
103
|
+
//# sourceMappingURL=tool-setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-setup.d.ts","sourceRoot":"","sources":["../../src/blocks/tool-setup.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAIxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH,MAAM,WAAW,aAAa;IAC5B,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAA;IACb,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAA;IACd,2EAA2E;IAC3E,WAAW,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAsBD,iBAAS,SAAS,CAAC,EACjB,KAAK,EACL,KAAK,EACL,YAAY,EACZ,aAAa,EACb,KAAK,EACL,GAAG,EACH,OAAO,EACP,KAAS,EACT,WAAkB,EAClB,aAA0B,EAC1B,UAAU,EACV,WAAkB,EAClB,MAAM,EACN,SAAS,EACT,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,cAAc,GAAG,UAAU,CAAC,GAAG;IACxF,KAAK,EAAE,aAAa,EAAE,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IACb,WAAW,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;IAC9D;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;IACvB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,sEAAsE;IACtE,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CACzB,qBA4HA;AAED,OAAO,EAAE,SAAS,EAAE,CAAA"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { Button } from "../ui/button.js";
|
|
5
|
+
import { CodeBlock } from "../ui/code-block.js";
|
|
6
|
+
import { PageHeading } from "./page-heading.js";
|
|
7
|
+
import { Tabs, TabsContent, TabsList, TabsTrigger } from "../ui/tabs.js";
|
|
8
|
+
import { cn } from "../lib/cloudgrid-cn.js";
|
|
9
|
+
/**
|
|
10
|
+
* The tab. Sized for two lines because the real labels are "Claude Desktop" and
|
|
11
|
+
* "ChatGPT Desktop", and a strip that truncates them makes two tools read alike.
|
|
12
|
+
*
|
|
13
|
+
* The overrides earn their place: `TabsList` pins itself to `h-8` for a compact
|
|
14
|
+
* strip, and `TabsTrigger` sets `flex-1` and `whitespace-nowrap`. Eight tools at
|
|
15
|
+
* a fixed height with nowrap is a horizontal scrollbar on a laptop, so height
|
|
16
|
+
* goes auto and the list wraps to a second row instead.
|
|
17
|
+
*/
|
|
18
|
+
const TRIGGER_CLASS = cn("h-auto min-h-[3.75rem] flex-none basis-[7.5rem] grow flex-col gap-0.5 whitespace-normal", "rounded-lg px-3 py-2 text-center text-body-sm leading-tight",
|
|
19
|
+
// The dark selected pill is `bg-code`/`text-on-code` — the library's OWN
|
|
20
|
+
// ink-surface pair, the one AgentPrompt and CodeBlock already paint with. A
|
|
21
|
+
// first pass invented `bg-ink-strong`/`text-on-ink`, which are not tokens:
|
|
22
|
+
// `--color-ink` is a TEXT colour and the other two do not exist, so Tailwind
|
|
23
|
+
// emitted nothing and the selected tab rendered identically to the rest.
|
|
24
|
+
"data-active:bg-code data-active:text-on-code");
|
|
25
|
+
function ToolSetup({ tools, value, defaultValue, onValueChange, title, sub, eyebrow, level = 1, headingSize = "md", continueLabel = "Continue", onContinue, canContinue = true, footer, className, ...props }) {
|
|
26
|
+
// Uncontrolled falls back to the first tool rather than nothing: a tab strip
|
|
27
|
+
// with no panel under it reads as broken, and there is no "unselected" state
|
|
28
|
+
// this screen means.
|
|
29
|
+
const first = tools[0]?.value;
|
|
30
|
+
const headingId = React.useId();
|
|
31
|
+
return (_jsxs("section", { "data-slot": "tool-setup", className: cn("flex flex-col gap-8", className), ...props, children: [title ? (_jsx(PageHeading, { id: headingId, eyebrow: eyebrow, title: title, sub: sub, size: headingSize, level: level })) : null, _jsxs(Tabs, { value: value, defaultValue: defaultValue ?? first, onValueChange: (next) => onValueChange?.(String(next)), className: "flex flex-col gap-4", children: [_jsx(TabsList
|
|
32
|
+
// Labelled by the lockup when there is one, so the strip is announced
|
|
33
|
+
// as the setup's tool list rather than an unnamed set of tabs.
|
|
34
|
+
, { ...(title ? { "aria-labelledby": headingId } : {}), "data-slot": "tool-setup-tabs",
|
|
35
|
+
// `h-auto!` — important, and that is load-bearing.
|
|
36
|
+
//
|
|
37
|
+
// `tabsListVariants` pins the strip with `group-data-horizontal/tabs:h-8`
|
|
38
|
+
// for a compact single row. Eight tools do not fit one row, so the list
|
|
39
|
+
// must grow — and a bare `h-auto` does not make it: both utilities
|
|
40
|
+
// survive `cn()` because they carry different variant prefixes, and the
|
|
41
|
+
// prefixed rule wins the cascade. Measured, not assumed:
|
|
42
|
+
// `getComputedStyle` reported a 32px list around a 60px tab.
|
|
43
|
+
//
|
|
44
|
+
// The consequence was invisible. The eighth tool wrapped into height
|
|
45
|
+
// that was never reserved and the panel painted straight over it, while
|
|
46
|
+
// every other assertion passed — the tab was present, focusable,
|
|
47
|
+
// correctly announced and correctly painted. It was simply underneath.
|
|
48
|
+
//
|
|
49
|
+
// Important settles it without depending on which utility `cn()` keeps
|
|
50
|
+
// or what order Tailwind emits them in.
|
|
51
|
+
className: "h-auto! w-full flex-wrap justify-start gap-2 bg-transparent p-0", children: tools.map((tool) => (_jsx(TabsTrigger, { value: tool.value, disabled: tool.disabled, "data-slot": "tool-setup-tab", className: TRIGGER_CLASS, children: tool.label }, tool.value))) }), tools.map((tool) => (_jsx(TabsContent, { value: tool.value, "data-slot": "tool-setup-panel", className: "rounded-lg border border-hairline bg-card p-5", children: _jsxs("div", { className: "flex flex-col gap-4", children: [tool.instruction || tool.alternative ? (_jsxs("div", { className: "flex flex-wrap items-baseline justify-between gap-x-4 gap-y-1", children: [tool.instruction ? (_jsx("p", { className: "m-0 text-body-sm text-body", children: tool.instruction })) : (_jsx("span", {})), tool.alternative ? (_jsx("a", { href: tool.alternative.href, "data-slot": "tool-setup-alternative",
|
|
52
|
+
// `--cg-link` is a token but NOT a generated utility —
|
|
53
|
+
// there is no `--color-link`, so `text-link` emits
|
|
54
|
+
// nothing and the link paints as body text. The arbitrary
|
|
55
|
+
// form is how the library reaches an ungenerated token,
|
|
56
|
+
// the same way onboarding-question writes
|
|
57
|
+
// `ring-(--cg-border-strong)`.
|
|
58
|
+
className: "text-body-sm text-(--cg-link) underline-offset-4 hover:text-(--cg-link-hover) hover:underline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring", children: tool.alternative.label })) : null] })) : null, _jsx(CodeBlock, { code: tool.prompt })] }) }, tool.value)))] }), continueLabel !== null || footer ? (_jsxs("div", { "data-slot": "tool-setup-actions", className: "flex flex-col items-start gap-4", children: [continueLabel !== null ? (_jsx(Button, { type: "button", size: "lg", "data-slot": "tool-setup-continue", onClick: onContinue, disabled: !canContinue, children: continueLabel })) : null, footer] })) : null] }));
|
|
59
|
+
}
|
|
60
|
+
export { ToolSetup };
|
|
61
|
+
//# sourceMappingURL=tool-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-setup.js","sourceRoot":"","sources":["../../src/blocks/tool-setup.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -40,10 +40,12 @@ export * from "./blocks/plug-method.js";
|
|
|
40
40
|
export * from "./blocks/pricing-tier-cards.js";
|
|
41
41
|
export * from "./blocks/pricing-tiers.js";
|
|
42
42
|
export * from "./blocks/quote.js";
|
|
43
|
+
export * from "./blocks/social-marks.js";
|
|
43
44
|
export * from "./blocks/rich-text.js";
|
|
44
45
|
export * from "./blocks/stage-panel.js";
|
|
45
46
|
export * from "./blocks/step-item.js";
|
|
46
47
|
export * from "./blocks/tool-logo.js";
|
|
48
|
+
export * from "./blocks/tool-setup.js";
|
|
47
49
|
export * from "./blocks/tool-marks.js";
|
|
48
50
|
export * from "./lib/cloudgrid-cn.js";
|
|
49
51
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiBA,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA;AACpC,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAG/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,2BAA2B,CAAA;AACzC,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AAGtC,cAAc,uBAAuB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiBA,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA;AACpC,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAG/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,2BAA2B,CAAA;AACzC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AAGtC,cAAc,uBAAuB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -57,10 +57,12 @@ export * from "./blocks/plug-method.js";
|
|
|
57
57
|
export * from "./blocks/pricing-tier-cards.js";
|
|
58
58
|
export * from "./blocks/pricing-tiers.js";
|
|
59
59
|
export * from "./blocks/quote.js";
|
|
60
|
+
export * from "./blocks/social-marks.js";
|
|
60
61
|
export * from "./blocks/rich-text.js";
|
|
61
62
|
export * from "./blocks/stage-panel.js";
|
|
62
63
|
export * from "./blocks/step-item.js";
|
|
63
64
|
export * from "./blocks/tool-logo.js";
|
|
65
|
+
export * from "./blocks/tool-setup.js";
|
|
64
66
|
export * from "./blocks/tool-marks.js";
|
|
65
67
|
// The class-merge helper, which the components use and consumers may too.
|
|
66
68
|
export * from "./lib/cloudgrid-cn.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,oEAAoE;AACpE,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,yEAAyE;AACzE,gFAAgF;AAChF,4EAA4E;AAC5E,EAAE;AACF,kEAAkE;AAClE,8EAA8E;AAC9E,uEAAuE;AAEvE,cAAc;AACd,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA;AACpC,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAE/B,mBAAmB;AACnB,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,2BAA2B,CAAA;AACzC,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AAEtC,0EAA0E;AAC1E,cAAc,uBAAuB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,oEAAoE;AACpE,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,yEAAyE;AACzE,gFAAgF;AAChF,4EAA4E;AAC5E,EAAE;AACF,kEAAkE;AAClE,8EAA8E;AAC9E,uEAAuE;AAEvE,cAAc;AACd,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA;AACpC,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAE/B,mBAAmB;AACnB,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,2BAA2B,CAAA;AACzC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AAEtC,0EAA0E;AAC1E,cAAc,uBAAuB,CAAA"}
|
package/package.json
CHANGED