@duro-app/cli 4.4.0 → 5.0.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/README.md +2 -2
- package/dist/commands/mockup.d.ts.map +1 -1
- package/dist/commands/mockup.js +32 -5
- package/dist/commands/mockup.js.map +1 -1
- package/dist/hook-script.d.ts +5 -3
- package/dist/hook-script.d.ts.map +1 -1
- package/dist/hook-script.js +3 -1
- package/dist/hook-script.js.map +1 -1
- package/dist/skill-template.d.ts +4 -4
- package/dist/skill-template.d.ts.map +1 -1
- package/dist/skill-template.js +12 -8
- package/dist/skill-template.js.map +1 -1
- package/package.json +5 -5
- package/registry.json +415 -33
package/README.md
CHANGED
|
@@ -130,7 +130,7 @@ hand-roll widgets the DS ships.
|
|
|
130
130
|
```
|
|
131
131
|
|
|
132
132
|
Wire `--check` into the repo's lint or CI job to catch a stale hook after a
|
|
133
|
-
CLI upgrade. The generated script pins `@duro-app/cli@^
|
|
133
|
+
CLI upgrade. The generated script pins `@duro-app/cli@^5.0.0` — a floating
|
|
134
134
|
pin, so patch releases never read as drift, but a **floor**: a repo whose
|
|
135
135
|
script still pins `^3.4.0` never resolves a 4.x payload and never sees what
|
|
136
136
|
the session-start injection gained since. The release refuses a tag whose
|
|
@@ -189,7 +189,7 @@ wires both:
|
|
|
189
189
|
|
|
190
190
|
```
|
|
191
191
|
# stage name scope severity command
|
|
192
|
-
pre-commit duro-doctor *.css,package.json,root.tsx,main.tsx,vite.config.ts,vitest.config.ts,postcss.config.js,postcss.config.mjs,babel.config.js block npx -y @duro-app/cli@^
|
|
192
|
+
pre-commit duro-doctor *.css,package.json,root.tsx,main.tsx,vite.config.ts,vitest.config.ts,postcss.config.js,postcss.config.mjs,babel.config.js block npx -y @duro-app/cli@^5.0.0 doctor
|
|
193
193
|
```
|
|
194
194
|
|
|
195
195
|
## Mockups that speak the design system
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mockup.d.ts","sourceRoot":"","sources":["../../src/commands/mockup.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,aAAa,CAAA;AAuB9C,eAAO,MAAM,YAAY,4BAA4B,CAAA;AACrD,eAAO,MAAM,UAAU,0BAA0B,CAAA;AAEjD,uEAAuE;AACvE,eAAO,MAAM,cAAc,OAAO,CAAA;AAClC,eAAO,MAAM,eAAe,MAAM,CAAA;AAElC,eAAO,MAAM,aAAa,6CAA8C,CAAA;AACxE,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAA;AAExD,MAAM,WAAW,WAAW;IAC1B,gEAAgE;IAChE,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EACA,WAAW,GACX,YAAY,GACZ,gBAAgB,GAChB,mBAAmB,GACnB,kBAAkB,GAClB,qBAAqB,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;CAChB;AAKD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"mockup.d.ts","sourceRoot":"","sources":["../../src/commands/mockup.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,aAAa,CAAA;AAuB9C,eAAO,MAAM,YAAY,4BAA4B,CAAA;AACrD,eAAO,MAAM,UAAU,0BAA0B,CAAA;AAEjD,uEAAuE;AACvE,eAAO,MAAM,cAAc,OAAO,CAAA;AAClC,eAAO,MAAM,eAAe,MAAM,CAAA;AAElC,eAAO,MAAM,aAAa,6CAA8C,CAAA;AACxE,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAA;AAExD,MAAM,WAAW,WAAW;IAC1B,gEAAgE;IAChE,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EACA,WAAW,GACX,YAAY,GACZ,gBAAgB,GAChB,mBAAmB,GACnB,kBAAkB,GAClB,qBAAqB,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;CAChB;AAKD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,CA6DzF;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,GAAE,WAAgB,GAAG,aAAa,CAgC1F;AA2TD,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,CAUzF;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,GAAE,YAAiB,GACzB,aAAa,CA6Bf;AAID,wBAAgB,SAAS,CACvB,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,WAAW,GAAG,YAAY,GAClC,aAAa,CASf"}
|
package/dist/commands/mockup.js
CHANGED
|
@@ -16,9 +16,9 @@ import { lineOf } from '../scan.js';
|
|
|
16
16
|
* one that does not say which design-system component each control is.
|
|
17
17
|
*
|
|
18
18
|
* What binds when a direction is chosen: layout, hierarchy, states, the
|
|
19
|
-
* data-duro component map and the token names
|
|
20
|
-
*
|
|
21
|
-
* checked.
|
|
19
|
+
* data-duro component map and the token names — sizes and border widths
|
|
20
|
+
* included (ADR-0027). What does not: positions (top, left, inset,
|
|
21
|
+
* transform), which are the sketch and are not checked.
|
|
22
22
|
*/
|
|
23
23
|
export const TOKENS_START = '/* duro:tokens start */';
|
|
24
24
|
export const TOKENS_END = '/* duro:tokens end */';
|
|
@@ -48,6 +48,8 @@ export function seedArtboard(registry, name, theme) {
|
|
|
48
48
|
<style>
|
|
49
49
|
${TOKENS_START}
|
|
50
50
|
${tokens}
|
|
51
|
+
/* The design canvas size: the board's coordinate space, not a design token. */
|
|
52
|
+
:root { --duro-mockup-canvas-width: ${ARTBOARD_WIDTH}px; --duro-mockup-canvas-height: ${ARTBOARD_HEIGHT}px; }
|
|
51
53
|
${TOKENS_END}
|
|
52
54
|
|
|
53
55
|
/*
|
|
@@ -69,8 +71,8 @@ body {
|
|
|
69
71
|
line-height: var(--duro-typography-line-height);
|
|
70
72
|
}
|
|
71
73
|
.artboard {
|
|
72
|
-
width:
|
|
73
|
-
height:
|
|
74
|
+
width: var(--duro-mockup-canvas-width);
|
|
75
|
+
height: var(--duro-mockup-canvas-height);
|
|
74
76
|
overflow: hidden;
|
|
75
77
|
padding: var(--duro-spacing-lg);
|
|
76
78
|
box-sizing: border-box;
|
|
@@ -131,6 +133,11 @@ const SPACING_PROPS = /^(padding|margin|gap|row-gap|column-gap|inset|padding-[a-
|
|
|
131
133
|
const RADIUS_PROPS = /^border(-[a-z]+-[a-z]+)?-radius$/;
|
|
132
134
|
const TYPE_PROPS = /^(font-size|font-weight|font-family|font)$/;
|
|
133
135
|
const SHADOW_PROPS = /^box-shadow$/;
|
|
136
|
+
const SIZE_PROPS = /^((min|max)-)?(width|height|block-size|inline-size)$|^flex-basis$/;
|
|
137
|
+
// border-width and every side/logical variant, the border* shorthands (their
|
|
138
|
+
// width), outline, outline-width and outline-offset. Not border-radius/color/style.
|
|
139
|
+
const BORDER_WIDTH_PROPS = /^(border(-(top|right|bottom|left|block|inline)(-(start|end))?)?(-width)?|outline(-width|-offset)?)$/;
|
|
140
|
+
const PX_LITERAL = /(?<![\w.-])-?(\d*\.?\d+)px\b/;
|
|
134
141
|
const MOTION_PROPS = /^(transition|transition-duration|transition-timing-function|animation|animation-duration|animation-timing-function)$/;
|
|
135
142
|
const COLOR_LITERAL = /#[0-9a-fA-F]{3,8}\b|\b(?:rgba?|hsla?)\(/g;
|
|
136
143
|
const LENGTH_LITERAL = /(?<![\w.-])(\d*\.?\d+)(px|rem|em|ms|s)\b/g;
|
|
@@ -212,6 +219,26 @@ function scanCss(file, source, css, base, findings) {
|
|
|
212
219
|
}
|
|
213
220
|
}
|
|
214
221
|
for (const { prop, value, at } of declarations(inert, base)) {
|
|
222
|
+
// Sizes and border widths: only px is raw; %, vh, fr, rem and keywords are
|
|
223
|
+
// relative and allowed. The seed sizes the root through the canvas
|
|
224
|
+
// variables in the token block, so no geometry is exempt.
|
|
225
|
+
const measure = SIZE_PROPS.test(prop)
|
|
226
|
+
? '--duro-size-*'
|
|
227
|
+
: BORDER_WIDTH_PROPS.test(prop) && !RADIUS_PROPS.test(prop)
|
|
228
|
+
? '--duro-border-*'
|
|
229
|
+
: null;
|
|
230
|
+
if (measure) {
|
|
231
|
+
const px = value.match(PX_LITERAL);
|
|
232
|
+
if (px && Number(px[1]) !== 0) {
|
|
233
|
+
findings.push({
|
|
234
|
+
file,
|
|
235
|
+
line: lineOf(source, at),
|
|
236
|
+
rule: 'raw-length',
|
|
237
|
+
message: `${px[0]} on \`${prop}\` is a raw ${measure === '--duro-size-*' ? 'size' : 'border width'} — use a var(${measure}) token`,
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
215
242
|
const hint = SPACING_PROPS.test(prop)
|
|
216
243
|
? '--duro-spacing-*'
|
|
217
244
|
: RADIUS_PROPS.test(prop)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mockup.js","sourceRoot":"","sources":["../../src/commands/mockup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mockup.js","sourceRoot":"","sources":["../../src/commands/mockup.ts"],"names":[],"mappings":"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"}
|
package/dist/hook-script.d.ts
CHANGED
|
@@ -36,14 +36,16 @@ export declare const HOOK_COMMAND = "sh .claude/hooks/duro-catalog.sh";
|
|
|
36
36
|
* never reaches 4.x, so 4.x consumers were served 3.x docs. The
|
|
37
37
|
* release refuses a tag whose major differs from this floor's
|
|
38
38
|
* (scripts/check-pin-major.mjs).
|
|
39
|
+
* 5.0.0: @duro-app/ui 5 (every measure is a token, ADR-0027); 5.x consumers
|
|
40
|
+
* get the sizes/borders tables and Critical Rule 4.
|
|
39
41
|
*/
|
|
40
|
-
export declare const HOOK_MIN_CLI = "
|
|
42
|
+
export declare const HOOK_MIN_CLI = "5.0.0";
|
|
41
43
|
/**
|
|
42
44
|
* First line of the catalog cache: the floor it was fetched with. A cache
|
|
43
45
|
* from another floor is refetched, and this line is never printed.
|
|
44
46
|
*/
|
|
45
|
-
export declare const HOOK_PIN_LINE = "#duro-hook-pin
|
|
46
|
-
export declare const HOOK_SCRIPT = "#!/bin/sh\n# Duro design-system session bootstrap \u2014 GENERATED by `duro hook install`.\n# Regenerate: npx -y @duro-app/cli hook install (--check verifies it in CI)\n#\n# Injects the consult-first preamble plus the component catalog into agent\n# context at SessionStart, so \"check the design system before building UI\" is\n# ambient context instead of a step an agent has to remember. Then runs\n# `duro doctor`, which says nothing unless this repo's build wiring flattens\n# the components' styles.\n#\n# Do not hand-edit. Repo-specific caveats go in\n# .claude/duro-hook.local.md \u2014 appended below, and left alone by regeneration.\ncache=\".claude/.duro-session.cache\"\nnotes=\".claude/duro-hook.local.md\"\ndoctor=\".claude/.duro-session.cache.doctor\"\npin=\"#duro-hook-pin
|
|
47
|
+
export declare const HOOK_PIN_LINE = "#duro-hook-pin 5.0.0";
|
|
48
|
+
export declare const HOOK_SCRIPT = "#!/bin/sh\n# Duro design-system session bootstrap \u2014 GENERATED by `duro hook install`.\n# Regenerate: npx -y @duro-app/cli hook install (--check verifies it in CI)\n#\n# Injects the consult-first preamble plus the component catalog into agent\n# context at SessionStart, so \"check the design system before building UI\" is\n# ambient context instead of a step an agent has to remember. Then runs\n# `duro doctor`, which says nothing unless this repo's build wiring flattens\n# the components' styles.\n#\n# Do not hand-edit. Repo-specific caveats go in\n# .claude/duro-hook.local.md \u2014 appended below, and left alone by regeneration.\ncache=\".claude/.duro-session.cache\"\nnotes=\".claude/duro-hook.local.md\"\ndoctor=\".claude/.duro-session.cache.doctor\"\npin=\"#duro-hook-pin 5.0.0\"\n\n# npx resolution dominates session start; the catalog only changes on upgrade.\n# Refetch when it is missing, a week old, fetched with another floor (its\n# first line), or older than this script (a regenerate).\nif [ ! -s \"$cache\" ] || [ \"$(head -n 1 \"$cache\" 2>/dev/null)\" != \"$pin\" ] ||\n [ -n \"$(find \"$cache\" -mtime +7 2>/dev/null)\" ] || [ \".claude/hooks/duro-catalog.sh\" -nt \"$cache\" ]; then\n # The pin is written with the payload, so a failed fetch (or one that\n # printed nothing) leaves the old cache as it was and never a pin-only file.\n if { echo \"$pin\"; npx -y @duro-app/cli@^5.0.0 hook session-start; } >\"$cache.tmp\" 2>/dev/null &&\n [ -n \"$(tail -n +2 \"$cache.tmp\")\" ]; then\n mv \"$cache.tmp\" \"$cache\"\n else\n rm -f \"$cache.tmp\"\n if [ -s \"$cache\" ] && [ \"$(head -n 1 \"$cache\")\" != \"$pin\" ]; then\n echo \"duro: the catalog below is from an older CLI and could not be refreshed; run: npx -y @duro-app/cli@^5.0.0 hook install\" >&2\n fi\n fi\nfi\n\n# Offline with no cache yet: stay silent rather than fail the session.\nif [ -s \"$cache\" ]; then\n # The pin line is bookkeeping, not catalog: skip it, and only it.\n case \"$(head -n 1 \"$cache\")\" in\n '#duro-hook-pin '*) tail -n +2 \"$cache\" ;;\n *) cat \"$cache\" ;;\n esac\n if [ -s \"$notes\" ]; then\n echo\n cat \"$notes\"\n fi\nfi\n\n# duro doctor reads build config, entries and stylesheets. Re-run it when one\n# of those changes rather than on a timer, so an edit shows up next session\n# and a healthy repo only pays for npx after touching its config.\nkey=$(find . -maxdepth 4 \\( -name node_modules -o -name .git -o -name dist -o -name build \\) -prune -o \\\n -type f \\( -name package.json -o -name pnpm-workspace.yaml -o -name '*.css' -o -name 'vite*' \\\n -o -name 'babel*' -o -name '.babelrc*' -o -name '*.babel.*' -o -name 'postcss*' \\\n -o -name 'root.tsx' -o -name 'main.tsx' -o -name 'index.tsx' \\) -exec cksum {} + 2>/dev/null |\n sort | cksum)\n# The floor is part of the key: a new floor reruns the doctor.\nkey=\"5.0.0 $key\"\nif [ \"$key\" != \"$(cat \"$doctor.key\" 2>/dev/null)\" ]; then\n if npx -y @duro-app/cli@^5.0.0 doctor --session >\"$doctor.tmp\" 2>/dev/null; then\n mv \"$doctor.tmp\" \"$doctor\"\n echo \"$key\" >\"$doctor.key\"\n else\n rm -f \"$doctor.tmp\"\n fi\nfi\nif [ -s \"$doctor\" ]; then\n echo\n cat \"$doctor\"\nfi\n";
|
|
47
49
|
/**
|
|
48
50
|
* The UserPromptSubmit hook: a plan-mode nudge toward fresh mockup
|
|
49
51
|
* directions (fleet decision `handoff.fresh-directions-trigger`), so a plan
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook-script.d.ts","sourceRoot":"","sources":["../src/hook-script.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,yCAAyC;AACzC,eAAO,MAAM,gBAAgB,kCAAkC,CAAA;AAC/D,eAAO,MAAM,kBAAkB,0BAA0B,CAAA;AACzD,eAAO,MAAM,eAAe,gCAAgC,CAAA;AAC5D;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,uCAA8B,CAAA;AACjE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,iCAAwB,CAAA;AACtD,gFAAgF;AAChF,eAAO,MAAM,eAAe,+BAA+B,CAAA;AAE3D,mEAAmE;AACnE,eAAO,MAAM,YAAY,qCAA2B,CAAA;AAEpD
|
|
1
|
+
{"version":3,"file":"hook-script.d.ts","sourceRoot":"","sources":["../src/hook-script.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,yCAAyC;AACzC,eAAO,MAAM,gBAAgB,kCAAkC,CAAA;AAC/D,eAAO,MAAM,kBAAkB,0BAA0B,CAAA;AACzD,eAAO,MAAM,eAAe,gCAAgC,CAAA;AAC5D;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,uCAA8B,CAAA;AACjE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,iCAAwB,CAAA;AACtD,gFAAgF;AAChF,eAAO,MAAM,eAAe,+BAA+B,CAAA;AAE3D,mEAAmE;AACnE,eAAO,MAAM,YAAY,qCAA2B,CAAA;AAEpD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,YAAY,UAAU,CAAA;AAEnC;;;GAGG;AACH,eAAO,MAAM,aAAa,yBAAmC,CAAA;AAE7D,eAAO,MAAM,WAAW,+qGAsEvB,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,+BAA+B,CAAA;AAEjE,uFAAuF;AACvF,eAAO,MAAM,iBAAiB,kCAAgC,CAAA;AAE9D,uEAAuE;AACvE,eAAO,MAAM,UAAU,ieAKtB,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,2oCAiB5B,CAAA;AAED,eAAO,MAAM,eAAe,kFAA0E,CAAA"}
|
package/dist/hook-script.js
CHANGED
|
@@ -36,8 +36,10 @@ export const HOOK_COMMAND = `sh ${HOOK_SCRIPT_PATH}`;
|
|
|
36
36
|
* never reaches 4.x, so 4.x consumers were served 3.x docs. The
|
|
37
37
|
* release refuses a tag whose major differs from this floor's
|
|
38
38
|
* (scripts/check-pin-major.mjs).
|
|
39
|
+
* 5.0.0: @duro-app/ui 5 (every measure is a token, ADR-0027); 5.x consumers
|
|
40
|
+
* get the sizes/borders tables and Critical Rule 4.
|
|
39
41
|
*/
|
|
40
|
-
export const HOOK_MIN_CLI = '
|
|
42
|
+
export const HOOK_MIN_CLI = '5.0.0';
|
|
41
43
|
/**
|
|
42
44
|
* First line of the catalog cache: the floor it was fetched with. A cache
|
|
43
45
|
* from another floor is refetched, and this line is never printed.
|
package/dist/hook-script.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook-script.js","sourceRoot":"","sources":["../src/hook-script.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,yCAAyC;AACzC,MAAM,CAAC,MAAM,gBAAgB,GAAG,+BAA+B,CAAA;AAC/D,MAAM,CAAC,MAAM,kBAAkB,GAAG,uBAAuB,CAAA;AACzD,MAAM,CAAC,MAAM,eAAe,GAAG,6BAA6B,CAAA;AAC5D;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,eAAe,SAAS,CAAA;AACjE;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,eAAe,GAAG,CAAA;AACtD,gFAAgF;AAChF,MAAM,CAAC,MAAM,eAAe,GAAG,4BAA4B,CAAA;AAE3D,mEAAmE;AACnE,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,gBAAgB,EAAE,CAAA;AAEpD
|
|
1
|
+
{"version":3,"file":"hook-script.js","sourceRoot":"","sources":["../src/hook-script.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,yCAAyC;AACzC,MAAM,CAAC,MAAM,gBAAgB,GAAG,+BAA+B,CAAA;AAC/D,MAAM,CAAC,MAAM,kBAAkB,GAAG,uBAAuB,CAAA;AACzD,MAAM,CAAC,MAAM,eAAe,GAAG,6BAA6B,CAAA;AAC5D;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,eAAe,SAAS,CAAA;AACjE;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,eAAe,GAAG,CAAA;AACtD,gFAAgF;AAChF,MAAM,CAAC,MAAM,eAAe,GAAG,4BAA4B,CAAA;AAE3D,mEAAmE;AACnE,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,gBAAgB,EAAE,CAAA;AAEpD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAA;AAEnC;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,kBAAkB,YAAY,EAAE,CAAA;AAE7D,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;IAWvB,eAAe;SACV,eAAe;SACf,eAAe;UACd,sBAAsB;OACzB,aAAa;;;;;;0DAMsC,gBAAgB;;;4CAG9B,YAAY;;;;;;kHAM0D,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BvH,YAAY;;6BAEU,YAAY;;;;;;;;;;;CAWxC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,4BAA4B,CAAA;AAEjE,uFAAuF;AACvF,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,qBAAqB,EAAE,CAAA;AAE9D,uEAAuE;AACvE,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;CAKzB,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;EAc9B,UAAU;;;CAGX,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,kDAAkD,iBAAiB,IAAI,CAAA"}
|
package/dist/skill-template.d.ts
CHANGED
|
@@ -15,10 +15,10 @@ export declare const SKILL_PATH = ".claude/skills/duro-mockup/SKILL.md";
|
|
|
15
15
|
export declare const SKILL_NOTES_PATH = ".claude/duro-mockup.local.md";
|
|
16
16
|
/**
|
|
17
17
|
* Floor for the npx pin inside the skill. `duro mockup` landed in 3.0.0; it
|
|
18
|
-
* moves with the hook's floor to the release's own major (
|
|
19
|
-
* consumer runs a
|
|
18
|
+
* moves with the hook's floor to the release's own major (5.0.0), so a 5.x
|
|
19
|
+
* consumer runs a 5.x CLI. A floating pin keeps patch releases from showing
|
|
20
20
|
* up as --check drift.
|
|
21
21
|
*/
|
|
22
|
-
export declare const SKILL_MIN_CLI = "
|
|
23
|
-
export declare const SKILL = "---\nname: duro-mockup\ndescription: Take a new screen from mockup directions to an implemented, verified PR without leaving the Duro design system. Use whenever the user asks for a screen, a page, a UI proposal, mockups, or \"show me options\" in a repo that consumes @duro-app/ui \u2014 and when planning (plan mode) a new screen or a material layout, hierarchy or interaction change there.\n---\n\n# duro-mockup\n\nGENERATED by `duro skill install` \u2014 do not hand-edit. Regenerate:\n`npx -y @duro-app/cli@^
|
|
22
|
+
export declare const SKILL_MIN_CLI = "5.0.0";
|
|
23
|
+
export declare const SKILL = "---\nname: duro-mockup\ndescription: Take a new screen from mockup directions to an implemented, verified PR without leaving the Duro design system. Use whenever the user asks for a screen, a page, a UI proposal, mockups, or \"show me options\" in a repo that consumes @duro-app/ui \u2014 and when planning (plan mode) a new screen or a material layout, hierarchy or interaction change there.\n---\n\n# duro-mockup\n\nGENERATED by `duro skill install` \u2014 do not hand-edit. Regenerate:\n`npx -y @duro-app/cli@^5.0.0 skill install` (`--check` verifies it in CI). Repo-specific notes\nlive in `.claude/duro-mockup.local.md`; read it if it exists.\n\nStanding rule (fleet decision `ui.mockup-handoff`): a mockup is written in\nthe design system's own vocabulary, and the direction the user picks is a\ncontract. What binds: layout, hierarchy, states, the `data-duro` component\nmap and the token names, sizes and border widths included (ADR-0027). What\ndoes not bind: positions (top, left, inset, transform).\n\n**This overrides the `design` skill's step 0.** That skill says to lift\nresolved values from the real stylesheets. Here you never write a resolved\nvalue: every colour, spacing, radius, font, shadow and duration is a\n`var(--duro-*)` from the seeded token block, and every element a person can\nact on carries `data-duro=\"<Component>\"`. The rest of the `design` skill\n(artboard shape, `seed-canvas.mjs`, the canvas Artifact) still applies.\n\n## Args\n\n- `propose <screen>` \u2014 seed 2\u20134 direction artboards, check them, publish the canvas.\n- `implement <screen> <direction>` \u2014 build the picked direction from its component map.\n- `prove <route>` \u2014 screenshot the built route and assemble the PR section.\n- no args \u2014 infer the stage from what exists under `docs/mockups/<screen>/`.\n\n## propose\n\n```bash\nnpx -y @duro-app/cli@^5.0.0 mockup seed --out docs/mockups/<screen> --name Main # direction A\nnpx -y @duro-app/cli@^5.0.0 mockup seed --out docs/mockups/<screen> --name <Direction> # B, C, \u2026\n```\n\n- `<screen>` is kebab-case (`approval-gates`). Artboards are committed with\n the PR \u2014 never leave them in a scratch directory; a session scratchpad is\n garbage-collected and the canvas URL would be the only surviving artefact.\n- Author each artboard inside the seeded `<style>` and root div. Colours,\n spacing, radii, sizes, border widths, type, shadows and motion come only\n from the token block (`var(--duro-size-*)`, `var(--duro-border-*)`);\n positions are yours, and the root keeps the seeded canvas size\n (`var(--duro-mockup-canvas-width)` / `-height`). Every button, row, chip, tab,\n input, link, table and dialog \u2014 whatever element it is drawn as \u2014 carries\n `data-duro=\"<Component>\"` or `data-duro=\"<Component>.<Part>\"`, using names\n from `npx -y @duro-app/cli@^5.0.0 list components`. Notes for the implementer go after the\n name: `data-duro=\"Button variant=primary\"`.\n- Start from a recipe when one fits the screen shape (`npx -y @duro-app/cli@^5.0.0 list recipes`\n \u2014 admin-detail-page, split-pane, page-with-sidenav, settings-page, \u2026) and\n say so in the artboard's header comment; a hand-rolled layout needs a reason.\n- Gate before publishing:\n\n```bash\nnpx -y @duro-app/cli@^5.0.0 mockup check docs/mockups/<screen>/*.dc.html\n```\n\n Exit 1 lists `file:line rule: message`. Fix every finding; do not publish\n an artboard that fails. Then seed the canvas with the `design` skill's\n helper (it lives under the current Claude Code version's bundled-skills\n directory \u2014 locate it, never hardcode the path) and publish the Artifact.\n- Ask the user to pick a direction. Record the answer as\n `<canvas URL> \u00B7 direction <X>` \u2014 it goes in the PR.\n- If the user edits an artboard in the canvas editor, its property panel\n writes literals back over `var()` by design. Re-extract and run\n `mockup check` again, but treat those findings as advisory: the authored\n file in `docs/mockups/` is the contract, the canvas is the review surface.\n\n## implement\n\n- Read the picked artboard. Its `data-duro` attributes ARE the component\n list: for each one, `npx -y @duro-app/cli@^5.0.0 <Component>` (or the `duro_ds_lookup` MCP\n tool) gives props and usage. Do not substitute a hand-rolled element for a\n named component; if a named component does not fit, say so and propose the\n design-system change rather than working around it.\n- Tokens map one to one: `var(--duro-spacing-md)` is `spacing.md` from\n `@duro-app/tokens/tokens/spacing.css`, `--duro-color-bg-card` is\n `colors.bgCard`, `--duro-radius-sm` is `radii.sm`, `--duro-typography-*`\n and `--duro-type-scale-*` are `typography`/`typeScale`, `--duro-shadow-*`\n is `shadows`, `--duro-duration-*`/`--duro-easing-*` are `duration`/`easing`.\n A media query on `768px` is `breakpoints.md` from\n `@duro-app/tokens/tokens/breakpoints.css`. The lint config refuses the raw\n value, so write the token the first time.\n- Layout comes from a recipe before a grid: `npx -y @duro-app/cli@^5.0.0 <recipe> --source-only`.\n- Positions in the artboard are a sketch: match its hierarchy and states.\n Its sizes are tokens, so they bind like colours do; a size the artboard\n needs and no token has is added to `@duro-app/tokens` first.\n\n## prove\n\n- Run the app, load the route in a real browser (Chrome MCP), and take a\n screenshot at the artboard's width (1120px) in the artboard's theme.\n- The PR body carries, under `## Mockup`: the canvas URL and direction, the\n path `docs/mockups/<screen>/`, and the artboard next to the live screenshot.\n A PR that touches no screen writes `Mockup: none` instead. CI checks for\n one or the other.\n- If the screenshot and the artboard disagree on hierarchy or states, that is\n a finding to fix, not a caption to write.\n";
|
|
24
24
|
//# sourceMappingURL=skill-template.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-template.d.ts","sourceRoot":"","sources":["../src/skill-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,4CAA4C;AAC5C,eAAO,MAAM,SAAS,+BAA+B,CAAA;AACrD,eAAO,MAAM,UAAU,wCAA0B,CAAA;AACjD,6EAA6E;AAC7E,eAAO,MAAM,gBAAgB,iCAAiC,CAAA;AAE9D;;;;;GAKG;AACH,eAAO,MAAM,aAAa,UAAU,CAAA;AAIpC,eAAO,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"skill-template.d.ts","sourceRoot":"","sources":["../src/skill-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,4CAA4C;AAC5C,eAAO,MAAM,SAAS,+BAA+B,CAAA;AACrD,eAAO,MAAM,UAAU,wCAA0B,CAAA;AACjD,6EAA6E;AAC7E,eAAO,MAAM,gBAAgB,iCAAiC,CAAA;AAE9D;;;;;GAKG;AACH,eAAO,MAAM,aAAa,UAAU,CAAA;AAIpC,eAAO,MAAM,KAAK,4wLAoGjB,CAAA"}
|
package/dist/skill-template.js
CHANGED
|
@@ -15,11 +15,11 @@ export const SKILL_PATH = `${SKILL_DIR}/SKILL.md`;
|
|
|
15
15
|
export const SKILL_NOTES_PATH = '.claude/duro-mockup.local.md';
|
|
16
16
|
/**
|
|
17
17
|
* Floor for the npx pin inside the skill. `duro mockup` landed in 3.0.0; it
|
|
18
|
-
* moves with the hook's floor to the release's own major (
|
|
19
|
-
* consumer runs a
|
|
18
|
+
* moves with the hook's floor to the release's own major (5.0.0), so a 5.x
|
|
19
|
+
* consumer runs a 5.x CLI. A floating pin keeps patch releases from showing
|
|
20
20
|
* up as --check drift.
|
|
21
21
|
*/
|
|
22
|
-
export const SKILL_MIN_CLI = '
|
|
22
|
+
export const SKILL_MIN_CLI = '5.0.0';
|
|
23
23
|
const DURO = `npx -y @duro-app/cli@^${SKILL_MIN_CLI}`;
|
|
24
24
|
export const SKILL = `---
|
|
25
25
|
name: duro-mockup
|
|
@@ -35,7 +35,8 @@ live in \`${SKILL_NOTES_PATH}\`; read it if it exists.
|
|
|
35
35
|
Standing rule (fleet decision \`ui.mockup-handoff\`): a mockup is written in
|
|
36
36
|
the design system's own vocabulary, and the direction the user picks is a
|
|
37
37
|
contract. What binds: layout, hierarchy, states, the \`data-duro\` component
|
|
38
|
-
map and the token names
|
|
38
|
+
map and the token names, sizes and border widths included (ADR-0027). What
|
|
39
|
+
does not bind: positions (top, left, inset, transform).
|
|
39
40
|
|
|
40
41
|
**This overrides the \`design\` skill's step 0.** That skill says to lift
|
|
41
42
|
resolved values from the real stylesheets. Here you never write a resolved
|
|
@@ -62,8 +63,10 @@ ${DURO} mockup seed --out docs/mockups/<screen> --name <Direction> # B, C, …
|
|
|
62
63
|
the PR — never leave them in a scratch directory; a session scratchpad is
|
|
63
64
|
garbage-collected and the canvas URL would be the only surviving artefact.
|
|
64
65
|
- Author each artboard inside the seeded \`<style>\` and root div. Colours,
|
|
65
|
-
spacing, radii, type, shadows and motion come only
|
|
66
|
-
|
|
66
|
+
spacing, radii, sizes, border widths, type, shadows and motion come only
|
|
67
|
+
from the token block (\`var(--duro-size-*)\`, \`var(--duro-border-*)\`);
|
|
68
|
+
positions are yours, and the root keeps the seeded canvas size
|
|
69
|
+
(\`var(--duro-mockup-canvas-width)\` / \`-height\`). Every button, row, chip, tab,
|
|
67
70
|
input, link, table and dialog — whatever element it is drawn as — carries
|
|
68
71
|
\`data-duro="<Component>"\` or \`data-duro="<Component>.<Part>"\`, using names
|
|
69
72
|
from \`${DURO} list components\`. Notes for the implementer go after the
|
|
@@ -104,8 +107,9 @@ ${DURO} mockup check docs/mockups/<screen>/*.dc.html
|
|
|
104
107
|
\`@duro-app/tokens/tokens/breakpoints.css\`. The lint config refuses the raw
|
|
105
108
|
value, so write the token the first time.
|
|
106
109
|
- Layout comes from a recipe before a grid: \`${DURO} <recipe> --source-only\`.
|
|
107
|
-
-
|
|
108
|
-
|
|
110
|
+
- Positions in the artboard are a sketch: match its hierarchy and states.
|
|
111
|
+
Its sizes are tokens, so they bind like colours do; a size the artboard
|
|
112
|
+
needs and no token has is added to \`@duro-app/tokens\` first.
|
|
109
113
|
|
|
110
114
|
## prove
|
|
111
115
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-template.js","sourceRoot":"","sources":["../src/skill-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,4CAA4C;AAC5C,MAAM,CAAC,MAAM,SAAS,GAAG,4BAA4B,CAAA;AACrD,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,SAAS,WAAW,CAAA;AACjD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,gBAAgB,GAAG,8BAA8B,CAAA;AAE9D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAA;AAEpC,MAAM,IAAI,GAAG,yBAAyB,aAAa,EAAE,CAAA;AAErD,MAAM,CAAC,MAAM,KAAK,GAAG;;;;;;;;IAQjB,IAAI;YACI,gBAAgB
|
|
1
|
+
{"version":3,"file":"skill-template.js","sourceRoot":"","sources":["../src/skill-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,4CAA4C;AAC5C,MAAM,CAAC,MAAM,SAAS,GAAG,4BAA4B,CAAA;AACrD,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,SAAS,WAAW,CAAA;AACjD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,gBAAgB,GAAG,8BAA8B,CAAA;AAE9D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAA;AAEpC,MAAM,IAAI,GAAG,yBAAyB,aAAa,EAAE,CAAA;AAErD,MAAM,CAAC,MAAM,KAAK,GAAG;;;;;;;;IAQjB,IAAI;YACI,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;EAyB1B,IAAI;EACJ,IAAI;;;;;;;;;;;;;WAaK,IAAI;;0DAE2C,IAAI;;;;;;EAM5D,IAAI;;;;;;;;;;;;;;;;;0BAiBoB,IAAI;;;;;;;;;;;;gDAYkB,IAAI;;;;;;;;;;;;;;;CAenD,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@duro-app/cli",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Machine-queryable docs for the Duro design system: components, props, recipes, tokens and rules as CLI output, JSON, or an MCP server.",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
47
|
"@modelcontextprotocol/sdk": ">=1.0.0",
|
|
48
|
-
"@duro-app/ui": "^
|
|
48
|
+
"@duro-app/ui": "^5.0.0"
|
|
49
49
|
},
|
|
50
50
|
"peerDependenciesMeta": {
|
|
51
51
|
"@duro-app/ui": {
|
|
@@ -60,9 +60,9 @@
|
|
|
60
60
|
"@types/node": "^24.0.0",
|
|
61
61
|
"ts-morph": "^26.0.0",
|
|
62
62
|
"typescript": "^5.7.0",
|
|
63
|
-
"@duro-app/eslint-plugin": "^
|
|
64
|
-
"@duro-app/tokens": "^
|
|
65
|
-
"@duro-app/ui": "^
|
|
63
|
+
"@duro-app/eslint-plugin": "^5.0.0",
|
|
64
|
+
"@duro-app/tokens": "^5.0.0",
|
|
65
|
+
"@duro-app/ui": "^5.0.0"
|
|
66
66
|
},
|
|
67
67
|
"scripts": {
|
|
68
68
|
"registry": "node scripts/build-registry.mjs",
|
package/registry.json
CHANGED
|
@@ -1059,6 +1059,11 @@
|
|
|
1059
1059
|
"description": "Searchable dropdown for selecting a value from a filterable list. Combines a text input with a popup listbox. Compound component — Root is required.",
|
|
1060
1060
|
"example": "<Combobox.Root name=\"country\" defaultValue=\"us\" initialLabels={{us: 'United States'}}>\n <Combobox.Input placeholder=\"Search countries…\" />\n <Combobox.Popup>\n <Combobox.Item value=\"us\">United States</Combobox.Item>\n <Combobox.Item value=\"gb\">United Kingdom</Combobox.Item>\n <Combobox.Item value=\"fr\">France</Combobox.Item>\n <Combobox.Item value=\"de\">Germany</Combobox.Item>\n <Combobox.Empty>No countries found</Combobox.Empty>\n </Combobox.Popup>\n</Combobox.Root>",
|
|
1061
1061
|
"relatedTo": [
|
|
1062
|
+
{
|
|
1063
|
+
"component": "Popover",
|
|
1064
|
+
"kind": "composition",
|
|
1065
|
+
"relationship": "Inside Popover.Popup a Combobox keeps the popover open while you choose; Escape closes only the list"
|
|
1066
|
+
},
|
|
1062
1067
|
{
|
|
1063
1068
|
"component": "Select",
|
|
1064
1069
|
"kind": "contrast",
|
|
@@ -1501,7 +1506,10 @@
|
|
|
1501
1506
|
"type": "DurationToken",
|
|
1502
1507
|
"union": [
|
|
1503
1508
|
"instant",
|
|
1509
|
+
"minimal",
|
|
1510
|
+
"quick",
|
|
1504
1511
|
"fast",
|
|
1512
|
+
"brisk",
|
|
1505
1513
|
"base",
|
|
1506
1514
|
"slow"
|
|
1507
1515
|
]
|
|
@@ -1754,7 +1762,10 @@
|
|
|
1754
1762
|
"type": "DurationToken",
|
|
1755
1763
|
"union": [
|
|
1756
1764
|
"instant",
|
|
1765
|
+
"minimal",
|
|
1766
|
+
"quick",
|
|
1757
1767
|
"fast",
|
|
1768
|
+
"brisk",
|
|
1758
1769
|
"base",
|
|
1759
1770
|
"slow"
|
|
1760
1771
|
]
|
|
@@ -1953,7 +1964,7 @@
|
|
|
1953
1964
|
"Portal"
|
|
1954
1965
|
]
|
|
1955
1966
|
},
|
|
1956
|
-
"description": "Modal sliding panel from a screen edge (right, left, or bottom). Slides in with backdrop overlay. Supports swipe-to-dismiss gestures on mobile, backdrop click dismiss, and Escape key. Use for secondary workflows, settings panels, or mobile-friendly detail views.",
|
|
1967
|
+
"description": "Modal sliding panel from a screen edge (right, left, or bottom). Slides in with backdrop overlay. Supports swipe-to-dismiss gestures on mobile, backdrop click dismiss, and Escape key. Swipe yields to an inner Duro ScrollArea: a drag there scrolls it, and dismisses only toward the edge from the scroll start (a native overflow:auto child is not covered — use ScrollArea). Use for secondary workflows, settings panels, or mobile-friendly detail views.",
|
|
1957
1968
|
"example": "<Drawer.Root anchor=\"right\" open={open} onOpenChange={setOpen}>\n <Drawer.Trigger>\n <Button>Open drawer</Button>\n </Drawer.Trigger>\n <Drawer.Portal size=\"md\">\n <Drawer.Header>\n <Drawer.Title>Settings</Drawer.Title>\n <Drawer.Close />\n </Drawer.Header>\n <Drawer.Body>\n <Stack gap=\"md\">\n <Text>Drawer content goes here.</Text>\n </Stack>\n </Drawer.Body>\n <Drawer.Footer>\n <Button variant=\"secondary\" onClick={() => setOpen(false)}>Done</Button>\n </Drawer.Footer>\n </Drawer.Portal>\n</Drawer.Root>",
|
|
1958
1969
|
"relatedTo": [
|
|
1959
1970
|
{
|
|
@@ -2131,7 +2142,10 @@
|
|
|
2131
2142
|
"type": "DurationToken",
|
|
2132
2143
|
"union": [
|
|
2133
2144
|
"instant",
|
|
2145
|
+
"minimal",
|
|
2146
|
+
"quick",
|
|
2134
2147
|
"fast",
|
|
2148
|
+
"brisk",
|
|
2135
2149
|
"base",
|
|
2136
2150
|
"slow"
|
|
2137
2151
|
]
|
|
@@ -2513,7 +2527,7 @@
|
|
|
2513
2527
|
"kind": "component",
|
|
2514
2528
|
"meta": {
|
|
2515
2529
|
"description": "Grid layout. Columns are a count (1-6), a list of weights ([1, 2] for one-third / two-thirds), responsive auto-fit via minColumnWidth, or a named split layout (list/detail, nav/content) that collapses to one column on the width of its own container, so it is safe to nest and to place beside a DetailPanel. Weights rather than CSS template strings, so the same props render as CSS grid on web and as a wrapping flex row on native.",
|
|
2516
|
-
"example": "// Split: list ≥ 240px beside a detail pane, one column below md\n<Grid layout=\"split\" gap=\"lg\">\n <List.Root>…</List.Root>\n <Panel.Root>…</Panel.Root>\n</Grid>\n\n// Responsive: columns auto-fit based on min width\n<Grid minColumnWidth=\"
|
|
2530
|
+
"example": "// Split: list ≥ sizes.gridColSm (240px) beside a detail pane, one column below md\n<Grid layout=\"split\" gap=\"lg\">\n <List.Root>…</List.Root>\n <Panel.Root>…</Panel.Root>\n</Grid>\n\n// Responsive: columns auto-fit based on min width\n<Grid minColumnWidth=\"gridColMd\" gap=\"md\">\n <Card>A</Card>\n <Card>B</Card>\n <Card>C</Card>\n</Grid>\n\n// Fixed: always 3 columns\n<Grid columns={3} gap=\"md\">\n <Card>A</Card>\n <Card>B</Card>\n <Card>C</Card>\n</Grid>\n\n// Weighted: a one-third / two-thirds split (works on native too)\n<Grid columns={[1, 2]} gap=\"md\">\n <Card>Sidebar</Card>\n <Card>Content</Card>\n</Grid>",
|
|
2517
2531
|
"relatedTo": [
|
|
2518
2532
|
{
|
|
2519
2533
|
"component": "Stack",
|
|
@@ -2561,10 +2575,10 @@
|
|
|
2561
2575
|
"type": "GridColumns"
|
|
2562
2576
|
},
|
|
2563
2577
|
{
|
|
2564
|
-
"description": "Responsive auto-fit: as many columns of at least this width as fit. Wins over `columns` when both are set. On native this approximates to cells of that minimum width that grow and wrap.",
|
|
2578
|
+
"description": "Responsive auto-fit: as many columns of at least this width as fit — a size token key (`\"gridColMd\"`) or a relative length. Wins over `columns` when both are set. On native this approximates to cells of that minimum width that grow and wrap.",
|
|
2565
2579
|
"name": "minColumnWidth",
|
|
2566
2580
|
"required": false,
|
|
2567
|
-
"type": "
|
|
2581
|
+
"type": "Length"
|
|
2568
2582
|
},
|
|
2569
2583
|
{
|
|
2570
2584
|
"description": "A named responsive layout. `split` is list/detail (1:2, list ≥ 240px), `split-wide` is nav/content (1:3, nav ≥ 280px). Each collapses to one column on the width of its OWN container — `split` below `sm` (640px), `split-wide` below `md` (768px) — so a split nested inside another split, or beside an open DetailPanel, collapses when it runs out of room rather than when the window does. Wins over `columns` / `minColumnWidth`.",
|
|
@@ -3053,10 +3067,10 @@
|
|
|
3053
3067
|
"type": "boolean"
|
|
3054
3068
|
},
|
|
3055
3069
|
{
|
|
3056
|
-
"description": "Optional minimum width to prevent layout shift (e.g. Copy → Copied!)",
|
|
3070
|
+
"description": "Optional minimum width to prevent layout shift (e.g. Copy → Copied!): a size token key or a relative length.",
|
|
3057
3071
|
"name": "minWidth",
|
|
3058
3072
|
"required": false,
|
|
3059
|
-
"type": "
|
|
3073
|
+
"type": "Length"
|
|
3060
3074
|
},
|
|
3061
3075
|
{
|
|
3062
3076
|
"name": "children",
|
|
@@ -3767,6 +3781,11 @@
|
|
|
3767
3781
|
"kind": "contrast",
|
|
3768
3782
|
"relationship": "Drawer is the modal edge panel for phone width; Popover is anchored and non-modal"
|
|
3769
3783
|
},
|
|
3784
|
+
{
|
|
3785
|
+
"component": "Select",
|
|
3786
|
+
"kind": "composition",
|
|
3787
|
+
"relationship": "A Select or Combobox inside Popover.Popup keeps the popover open while you choose; a Select backdrop press closes only its list"
|
|
3788
|
+
},
|
|
3770
3789
|
{
|
|
3771
3790
|
"component": "Field",
|
|
3772
3791
|
"kind": "composition",
|
|
@@ -3782,7 +3801,8 @@
|
|
|
3782
3801
|
],
|
|
3783
3802
|
"whenToUse": [
|
|
3784
3803
|
"A small form or controls tied to one element that stay open while you work in them",
|
|
3785
|
-
"Anchoring to a spot that is not a button (a canvas point, a text selection) with a virtual anchor"
|
|
3804
|
+
"Anchoring to a spot that is not a button (a canvas point, a text selection) with a virtual anchor",
|
|
3805
|
+
"Holding a Select or Combobox: their portalled list counts as inside the popover, so choosing an item keeps it open; Escape closes an open Select, Combobox or Menu before the popover"
|
|
3786
3806
|
]
|
|
3787
3807
|
},
|
|
3788
3808
|
"name": "Popover",
|
|
@@ -4011,8 +4031,8 @@
|
|
|
4011
4031
|
"Thumb"
|
|
4012
4032
|
]
|
|
4013
4033
|
},
|
|
4014
|
-
"description": "Custom scrollbar region with draggable thumb. Supports vertical and horizontal scrolling. Compound component — Root is required.",
|
|
4015
|
-
"example": "<ScrollArea.Root>\n <ScrollArea.Viewport maxHeight
|
|
4034
|
+
"description": "Custom scrollbar region with draggable thumb. Supports vertical and horizontal scrolling. Compound component — Root is required. Inside a Drawer, a drag in the viewport scrolls it; the drawer only takes a drag toward its edge from the scroll start.",
|
|
4035
|
+
"example": "<ScrollArea.Root>\n <ScrollArea.Viewport maxHeight=\"listMaxH\">\n <ScrollArea.Content>\n {/* Long content here */}\n </ScrollArea.Content>\n </ScrollArea.Viewport>\n <ScrollArea.Scrollbar orientation=\"vertical\">\n <ScrollArea.Thumb orientation=\"vertical\" />\n </ScrollArea.Scrollbar>\n</ScrollArea.Root>",
|
|
4016
4036
|
"whenNotToUse": [
|
|
4017
4037
|
"Simple page-level scrolling — browser scroll is fine",
|
|
4018
4038
|
"Very short content that never overflows"
|
|
@@ -4086,7 +4106,20 @@
|
|
|
4086
4106
|
{
|
|
4087
4107
|
"name": "maxHeight",
|
|
4088
4108
|
"required": false,
|
|
4089
|
-
"type": "
|
|
4109
|
+
"type": "Length"
|
|
4110
|
+
},
|
|
4111
|
+
{
|
|
4112
|
+
"description": "Extra styles for the viewport (e.g. a pointer-aware max height).",
|
|
4113
|
+
"name": "style",
|
|
4114
|
+
"required": false,
|
|
4115
|
+
"type": "ComponentProps<typeof html.div>['style']"
|
|
4116
|
+
},
|
|
4117
|
+
{
|
|
4118
|
+
"default": "false",
|
|
4119
|
+
"description": "A roving-focus group owns the keyboard: drop the viewport's own tab stop and region role.",
|
|
4120
|
+
"name": "rovingOwner",
|
|
4121
|
+
"required": false,
|
|
4122
|
+
"type": "boolean"
|
|
4090
4123
|
}
|
|
4091
4124
|
],
|
|
4092
4125
|
"sourcePath": "packages/ui/src/components/ScrollArea/ScrollArea.tsx"
|
|
@@ -4115,6 +4148,11 @@
|
|
|
4115
4148
|
"description": "Dropdown select for choosing one value from a list. Compound component — Root is required (throws without it).",
|
|
4116
4149
|
"example": "<Select.Root name=\"role\" defaultValue=\"viewer\">\n <Select.Trigger>\n <Select.Value placeholder=\"Select role\" />\n <Select.Icon />\n </Select.Trigger>\n <Select.Popup>\n <Select.Item value=\"admin\">Admin</Select.Item>\n <Select.Item value=\"editor\">Editor</Select.Item>\n <Select.Item value=\"viewer\">Viewer</Select.Item>\n </Select.Popup>\n</Select.Root>",
|
|
4117
4150
|
"relatedTo": [
|
|
4151
|
+
{
|
|
4152
|
+
"component": "Popover",
|
|
4153
|
+
"kind": "composition",
|
|
4154
|
+
"relationship": "Inside Popover.Popup a Select keeps the popover open while you choose; its backdrop press and Escape close only the list"
|
|
4155
|
+
},
|
|
4118
4156
|
{
|
|
4119
4157
|
"component": "Menu",
|
|
4120
4158
|
"kind": "contrast",
|
|
@@ -4726,16 +4764,16 @@
|
|
|
4726
4764
|
"type": "ReactNode"
|
|
4727
4765
|
},
|
|
4728
4766
|
{
|
|
4729
|
-
"description": "Column width at default (wide) viewport. CSS grid-template-columns track value — e.g.
|
|
4767
|
+
"description": "Column width at default (wide) viewport. CSS grid-template-columns track value — e.g. `sizes` key `\"iconButton\"`, '2fr', 'max-content'. Defaults to 'minmax(0, 1fr)' so each column shares the row evenly and is free to shrink below its content's intrinsic size.",
|
|
4730
4768
|
"name": "width",
|
|
4731
4769
|
"required": false,
|
|
4732
|
-
"type": "
|
|
4770
|
+
"type": "GridTrack"
|
|
4733
4771
|
},
|
|
4734
4772
|
{
|
|
4735
4773
|
"description": "Column width when the table's container drops into compact mode (≤720px container). Use this to switch to a content-aware layout at narrow widths — e.g. give a status badge `max-content` and the action column `minmax(0, 2fr)` so it absorbs the slack — while keeping evenly-distributed columns on wide screens. Defaults to the same value as `width`.",
|
|
4736
4774
|
"name": "compactWidth",
|
|
4737
4775
|
"required": false,
|
|
4738
|
-
"type": "
|
|
4776
|
+
"type": "GridTrack"
|
|
4739
4777
|
},
|
|
4740
4778
|
{
|
|
4741
4779
|
"description": "Stack-mode label string. Optional when children is a plain string — the text content is used as the label automatically. Required when children contain JSX (icon + text, sort indicator, etc.).",
|
|
@@ -4788,11 +4826,11 @@
|
|
|
4788
4826
|
"type": "boolean"
|
|
4789
4827
|
},
|
|
4790
4828
|
{
|
|
4791
|
-
"default": "
|
|
4792
|
-
"description": "Minimum width
|
|
4829
|
+
"default": "'labelMinW'",
|
|
4830
|
+
"description": "Minimum width each flexible column keeps before the table scrolls horizontally rather than crushing its cells: a size token key or a relative length. Columns still share the row evenly (`minmax(<minColumnWidth>, 1fr)`); this is only the floor. Raise it for roomier columns (more scrolling), lower it to fit more before scrolling. Columns with an explicit `width` are unaffected. Default `\"labelMinW\"`.",
|
|
4793
4831
|
"name": "minColumnWidth",
|
|
4794
4832
|
"required": false,
|
|
4795
|
-
"type": "
|
|
4833
|
+
"type": "Length"
|
|
4796
4834
|
},
|
|
4797
4835
|
{
|
|
4798
4836
|
"description": "Optional sort UI rendered above the grid. Visible only in stack mode (SortChip carries its own `display: none → inline-flex` rule). Typical value: `<Table.SortChip options={...} value={...} onChange={...} />`.",
|
|
@@ -4964,7 +5002,7 @@
|
|
|
4964
5002
|
"description": "Min width (px) each flexible column keeps before the table scrolls horizontally. Forwarded to Table.Root — see its `minColumnWidth`.",
|
|
4965
5003
|
"name": "minColumnWidth",
|
|
4966
5004
|
"required": false,
|
|
4967
|
-
"type": "
|
|
5005
|
+
"type": "Length"
|
|
4968
5006
|
},
|
|
4969
5007
|
{
|
|
4970
5008
|
"description": "Render a SortChip above the grid (stack-mode only). Options derive from columns where `column.getCanSort()` returns true. Wires value/onChange through the TanStack sorting state automatically.",
|
|
@@ -5007,16 +5045,16 @@
|
|
|
5007
5045
|
"type": "ReactNode"
|
|
5008
5046
|
},
|
|
5009
5047
|
{
|
|
5010
|
-
"description": "Column width at default (wide) viewport. CSS grid-template-columns track value — e.g.
|
|
5048
|
+
"description": "Column width at default (wide) viewport. CSS grid-template-columns track value — e.g. `sizes` key `\"iconButton\"`, '2fr', 'max-content'. Defaults to 'minmax(0, 1fr)' so each column shares the row evenly and is free to shrink below its content's intrinsic size.",
|
|
5011
5049
|
"name": "width",
|
|
5012
5050
|
"required": false,
|
|
5013
|
-
"type": "
|
|
5051
|
+
"type": "GridTrack"
|
|
5014
5052
|
},
|
|
5015
5053
|
{
|
|
5016
5054
|
"description": "Column width when the table's container drops into compact mode (≤720px container). Use this to switch to a content-aware layout at narrow widths — e.g. give a status badge `max-content` and the action column `minmax(0, 2fr)` so it absorbs the slack — while keeping evenly-distributed columns on wide screens. Defaults to the same value as `width`.",
|
|
5017
5055
|
"name": "compactWidth",
|
|
5018
5056
|
"required": false,
|
|
5019
|
-
"type": "
|
|
5057
|
+
"type": "GridTrack"
|
|
5020
5058
|
},
|
|
5021
5059
|
{
|
|
5022
5060
|
"description": "Stack-mode label string. Optional when children is a plain string — the text content is used as the label automatically. Required when children contain JSX (icon + text, sort indicator, etc.).",
|
|
@@ -5080,11 +5118,11 @@
|
|
|
5080
5118
|
"type": "boolean"
|
|
5081
5119
|
},
|
|
5082
5120
|
{
|
|
5083
|
-
"default": "
|
|
5084
|
-
"description": "Minimum width
|
|
5121
|
+
"default": "'labelMinW'",
|
|
5122
|
+
"description": "Minimum width each flexible column keeps before the table scrolls horizontally rather than crushing its cells: a size token key or a relative length. Columns still share the row evenly (`minmax(<minColumnWidth>, 1fr)`); this is only the floor. Raise it for roomier columns (more scrolling), lower it to fit more before scrolling. Columns with an explicit `width` are unaffected. Default `\"labelMinW\"`.",
|
|
5085
5123
|
"name": "minColumnWidth",
|
|
5086
5124
|
"required": false,
|
|
5087
|
-
"type": "
|
|
5125
|
+
"type": "Length"
|
|
5088
5126
|
},
|
|
5089
5127
|
{
|
|
5090
5128
|
"description": "Optional sort UI rendered above the grid. Visible only in stack mode (SortChip carries its own `display: none → inline-flex` rule). Typical value: `<Table.SortChip options={...} value={...} onChange={...} />`.",
|
|
@@ -5829,7 +5867,7 @@
|
|
|
5829
5867
|
"importPath": "@duro-app/ui",
|
|
5830
5868
|
"kind": "component",
|
|
5831
5869
|
"meta": {
|
|
5832
|
-
"description": "Toggle button with pressed/unpressed state. Works standalone or within ToggleGroup for multi/single selection.",
|
|
5870
|
+
"description": "Toggle button with pressed/unpressed state. Works standalone or within ToggleGroup for multi/single selection. Under a coarse pointer (touch) every Toggle is at least sizes.touchTarget (44px) square; in a wrapping ToggleGroup each keeps its own border and a fixed row height.",
|
|
5833
5871
|
"example": "// Standalone\n<Toggle pressed={isBold} onPressedChange={setIsBold} aria-label=\"Bold\">\n <Icon name=\"key\" size=\"sm\" />\n</Toggle>\n\n// In a group\n<ToggleGroup value={['grid']} onValueChange={setView} multiple={false}>\n <Toggle value=\"list\">List</Toggle>\n <Toggle value=\"grid\">Grid</Toggle>\n</ToggleGroup>",
|
|
5834
5872
|
"relatedTo": [
|
|
5835
5873
|
{
|
|
@@ -5921,7 +5959,7 @@
|
|
|
5921
5959
|
"kind": "component",
|
|
5922
5960
|
"meta": {
|
|
5923
5961
|
"description": "Container for Toggle buttons enabling single or multi selection. Provides context to child Toggles.",
|
|
5924
|
-
"example": "<ToggleGroup\n value={selected}\n onValueChange={setSelected}\n multiple={false}\n orientation=\"horizontal\"\n size=\"default\"\n>\n <Toggle value=\"list\">List view</Toggle>\n <Toggle value=\"grid\">Grid view</Toggle>\n <Toggle value=\"board\">Board view</Toggle>\n</ToggleGroup>",
|
|
5962
|
+
"example": "<ToggleGroup\n value={selected}\n onValueChange={setSelected}\n multiple={false}\n orientation=\"horizontal\"\n size=\"default\"\n>\n <Toggle value=\"list\">List view</Toggle>\n <Toggle value=\"grid\">Grid view</Toggle>\n <Toggle value=\"board\">Board view</Toggle>\n</ToggleGroup>\n\n// Icon choices: wraps onto rows, scrolls past three, one tab stop\n<ToggleGroup wrap maxRows={3} size=\"small\" value={[icon]} onValueChange={(v) => v[0] && setIcon(v[0])} aria-label=\"Icon\">\n {names.map((name) => (\n <Toggle key={name} value={name} aria-label={name}>\n <Icon name={name} size=\"sm\" />\n </Toggle>\n ))}\n</ToggleGroup>",
|
|
5925
5963
|
"relatedTo": [
|
|
5926
5964
|
{
|
|
5927
5965
|
"component": "Toggle",
|
|
@@ -5936,12 +5974,13 @@
|
|
|
5936
5974
|
],
|
|
5937
5975
|
"whenNotToUse": [
|
|
5938
5976
|
"Dropdown selection — use Select",
|
|
5939
|
-
"Many options (5+) — use Select for space efficiency",
|
|
5977
|
+
"Many text options (5+) — use Select for space efficiency; does not apply to icon-only choices, which keep options visible and open no layer",
|
|
5940
5978
|
"Form checkboxes — use Checkbox group in Fieldset"
|
|
5941
5979
|
],
|
|
5942
5980
|
"whenToUse": [
|
|
5943
5981
|
"Visible option set where user picks one or more (view mode, filter categories)",
|
|
5944
|
-
"Segmented control pattern"
|
|
5982
|
+
"Segmented control pattern",
|
|
5983
|
+
"A visible grid of icon choices: wrap + maxRows (rows scroll past maxRows, one tab stop with arrow keys, sizes.touchTarget (44px) touch targets)"
|
|
5945
5984
|
]
|
|
5946
5985
|
},
|
|
5947
5986
|
"name": "ToggleGroup",
|
|
@@ -5997,6 +6036,19 @@
|
|
|
5997
6036
|
"small"
|
|
5998
6037
|
]
|
|
5999
6038
|
},
|
|
6039
|
+
{
|
|
6040
|
+
"default": "false",
|
|
6041
|
+
"description": "Items wrap onto rows, each with its own border (default false). Enables roving focus: one tab stop, arrow keys move between items.",
|
|
6042
|
+
"name": "wrap",
|
|
6043
|
+
"required": false,
|
|
6044
|
+
"type": "boolean"
|
|
6045
|
+
},
|
|
6046
|
+
{
|
|
6047
|
+
"description": "Caps a wrapping group at this many rows (plus half a row, hinting more) and scrolls the rest. Only with `wrap`; ignored without it.",
|
|
6048
|
+
"name": "maxRows",
|
|
6049
|
+
"required": false,
|
|
6050
|
+
"type": "number"
|
|
6051
|
+
},
|
|
6000
6052
|
{
|
|
6001
6053
|
"description": "Accessible name when the group is not inside a Field.Root (inside one, the Field.Label names it).",
|
|
6002
6054
|
"name": "aria-label",
|
|
@@ -6316,7 +6368,7 @@
|
|
|
6316
6368
|
"type": "number"
|
|
6317
6369
|
},
|
|
6318
6370
|
{
|
|
6319
|
-
"default": "
|
|
6371
|
+
"default": "SIZES_PX.touchTarget",
|
|
6320
6372
|
"description": "Estimated row height for the virtualizer. Default 44.",
|
|
6321
6373
|
"name": "estimateRowHeight",
|
|
6322
6374
|
"required": false,
|
|
@@ -6327,7 +6379,7 @@
|
|
|
6327
6379
|
"description": "Max height of the scroll viewport once virtualized. Default '70vh'.",
|
|
6328
6380
|
"name": "maxHeight",
|
|
6329
6381
|
"required": false,
|
|
6330
|
-
"type": "
|
|
6382
|
+
"type": "Length"
|
|
6331
6383
|
},
|
|
6332
6384
|
{
|
|
6333
6385
|
"default": "150",
|
|
@@ -6828,7 +6880,7 @@
|
|
|
6828
6880
|
"peerDeps": [
|
|
6829
6881
|
"effect"
|
|
6830
6882
|
],
|
|
6831
|
-
"source": "import {Schema} from 'effect'\nimport {css, html} from 'react-strict-dom'\nimport {Field, Input, Fieldset, Button, Stack, Heading} from '@duro-app/ui'\nimport {Form} from '@duro-app/ui/form'\n\nconst LoginSchema = Schema.Struct({\n username: Schema.String.pipe(\n Schema.minLength(3, {message: () => 'Username must be at least 3 characters'}),\n ),\n password: Schema.String.pipe(\n Schema.minLength(8, {message: () => 'Password must be at least 8 characters'}),\n ),\n})\n\nconst styles = css.create({\n wrap: {maxWidth:
|
|
6883
|
+
"source": "import {Schema} from 'effect'\nimport {css, html} from 'react-strict-dom'\nimport {Field, Input, Fieldset, Button, Stack, Heading} from '@duro-app/ui'\nimport {Form} from '@duro-app/ui/form'\n\nimport {sizes} from '@duro-app/tokens/tokens/sizes.css'\n\nconst LoginSchema = Schema.Struct({\n username: Schema.String.pipe(\n Schema.minLength(3, {message: () => 'Username must be at least 3 characters'}),\n ),\n password: Schema.String.pipe(\n Schema.minLength(8, {message: () => 'Password must be at least 8 characters'}),\n ),\n})\n\nconst styles = css.create({\n wrap: {maxWidth: sizes.dialogSm},\n})\n\nexport function LoginFormRecipe() {\n return (\n <html.div style={styles.wrap}>\n <Stack gap=\"lg\">\n <Heading level={2}>Log in</Heading>\n <Form\n schema={LoginSchema}\n defaultValues={{username: '', password: ''}}\n onSubmit={(data) => console.log('login', data)}\n >\n {({formState}) => (\n <Fieldset.Root gap=\"md\">\n <Field.Root name=\"username\">\n <Field.Label>Username</Field.Label>\n <Input placeholder=\"Enter username\" />\n <Field.Error />\n </Field.Root>\n\n <Field.Root name=\"password\">\n <Field.Label>Password</Field.Label>\n <Input type=\"password\" placeholder=\"Enter password\" />\n <Field.Error />\n </Field.Root>\n\n <Button type=\"submit\" disabled={!formState.isValid}>\n Log in\n </Button>\n </Fieldset.Root>\n )}\n </Form>\n </Stack>\n </html.div>\n )\n}\n",
|
|
6832
6884
|
"sourcePath": "docs/ai/recipes/login-form.recipe.tsx",
|
|
6833
6885
|
"title": "Login Form",
|
|
6834
6886
|
"usesComponents": [
|
|
@@ -6941,7 +6993,7 @@
|
|
|
6941
6993
|
}
|
|
6942
6994
|
},
|
|
6943
6995
|
"rules": {
|
|
6944
|
-
"critical": "## Critical Rules\n\n### 1. Always use `html.*` elements (react-strict-dom)\n\n```tsx\n// ✅ Correct\nimport {css, html} from 'react-strict-dom'\n<html.div style={styles.container}>...</html.div>\n\n// ❌ Wrong — never use raw HTML tags\n<div className=\"container\">...</div>\n```\n\n### 2. Deep imports for tokens\n\n```tsx\n// ✅ Correct — deep imports\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\n// ❌ Wrong — barrel imports break StyleX babel plugin\nimport {colors, spacing} from '@duro-app/tokens'\n```\n\n### 3. Styling with css.create()\n\n```tsx\nimport {css, html} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing} from '@duro-app/tokens/tokens/spacing.css'\n\nconst styles = css.create({\n container: {\n padding: spacing.md,\n backgroundColor: colors.bgCard,\n borderRadius:
|
|
6996
|
+
"critical": "## Critical Rules\n\n### 1. Always use `html.*` elements (react-strict-dom)\n\n```tsx\n// ✅ Correct\nimport {css, html} from 'react-strict-dom'\n<html.div style={styles.container}>...</html.div>\n\n// ❌ Wrong — never use raw HTML tags\n<div className=\"container\">...</div>\n```\n\n### 2. Deep imports for tokens\n\n```tsx\n// ✅ Correct — deep imports\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\n\n// ❌ Wrong — barrel imports break StyleX babel plugin\nimport {colors, spacing} from '@duro-app/tokens'\n```\n\n### 3. Styling with css.create()\n\n```tsx\nimport {css, html} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {radii, spacing} from '@duro-app/tokens/tokens/spacing.css'\nimport {sizes} from '@duro-app/tokens/tokens/sizes.css'\nimport {borders} from '@duro-app/tokens/tokens/borders.css'\n\nconst styles = css.create({\n container: {\n padding: spacing.md,\n backgroundColor: colors.bgCard,\n borderRadius: radii.md,\n borderWidth: borders.hairline,\n maxWidth: sizes.dialogMd,\n },\n})\n\n// Apply styles via the style prop (array for composition)\n<html.div style={[styles.container, isActive && styles.active]}>\n```",
|
|
6945
6997
|
"lint": [
|
|
6946
6998
|
{
|
|
6947
6999
|
"description": "Disallow deprecated Table parts (Table.Container, HeaderCell isActions)",
|
|
@@ -6973,10 +7025,12 @@
|
|
|
6973
7025
|
"severity": "error"
|
|
6974
7026
|
},
|
|
6975
7027
|
{
|
|
6976
|
-
"description": "Prefer design tokens over raw colors, lengths, breakpoints, type, shadows and motion in css.create styles",
|
|
7028
|
+
"description": "Prefer design tokens over raw colors, lengths, sizes, border widths, breakpoints, type, shadows and motion in css.create styles",
|
|
6977
7029
|
"fixable": "suggestion",
|
|
6978
7030
|
"id": "duro/no-raw-design-values",
|
|
6979
7031
|
"messages": {
|
|
7032
|
+
"ambiguousMeasure": "{{value}} on `{{property}}` matches several {{group}} tokens ({{tokens}}). Pick the one that says what this measure is, from {{pkg}}/tokens/{{group}}.css.",
|
|
7033
|
+
"missingMeasureToken": "{{value}} on `{{property}}` has no token. Add a token (design-system.a-missing-token-is-added-not-approximated) instead of using a raw value.",
|
|
6980
7034
|
"offScaleRadius": "{{value}} on `{{property}}` is off the radius scale ({{scale}}px). Use the nearest `radii.*` token from {{pkg}}/tokens/spacing.css, or disable this line with the reason.",
|
|
6981
7035
|
"offScaleSpacing": "{{value}} on `{{property}}` is off the spacing scale ({{scale}}px). Use the nearest `spacing.*` token from {{pkg}}/tokens/spacing.css, or disable this line with the reason.",
|
|
6982
7036
|
"rawBreakpoint": "{{value}}px in `{{key}}` is a raw breakpoint. Use `breakpoints.{{token}}` from {{pkg}}/tokens/breakpoints.css in a template-literal key (the scale is {{scale}}px).",
|
|
@@ -6986,6 +7040,8 @@
|
|
|
6986
7040
|
"rawEasing": "'{{value}}' on `{{property}}` is a raw easing. Use `easing.{{token}}` from {{pkg}}/tokens/motion.css.",
|
|
6987
7041
|
"rawFontSize": "{{value}} on `fontSize` is the {{group}}.{{token}} token. Use it from {{pkg}}/tokens/typography.css.",
|
|
6988
7042
|
"rawFontWeight": "{{value}} on `fontWeight` is the typography.{{token}} token. Use it from {{pkg}}/tokens/typography.css.",
|
|
7043
|
+
"rawMeasure": "{{value}} on `{{property}}` is the {{tokens}} token. Use it from {{pkg}}/tokens/{{group}}.css.",
|
|
7044
|
+
"rawMicroSpacing": "{{value}} on `{{property}}` is off the spacing scale; it is the {{token}} micro-spacing token. Use `microSpacing.{{token}}` from {{pkg}}/tokens/spacing.css, or the scale if the nudge is not needed.",
|
|
6989
7045
|
"rawRadius": "{{value}} on `{{property}}` is the {{token}} radius token. Use `radii.{{token}}` from {{pkg}}/tokens/spacing.css.",
|
|
6990
7046
|
"rawShadow": "'{{value}}' on `boxShadow` is a raw shadow. Use `shadows.{{token}}` from {{pkg}}/tokens/shadows.css.",
|
|
6991
7047
|
"rawSpacing": "{{value}} on `{{property}}` is the {{token}} spacing token. Use `spacing.{{token}}` from {{pkg}}/tokens/spacing.css.",
|
|
@@ -7030,6 +7086,36 @@
|
|
|
7030
7086
|
"schemaVersion": 1,
|
|
7031
7087
|
"tokens": {
|
|
7032
7088
|
"groups": {
|
|
7089
|
+
"borders": {
|
|
7090
|
+
"entries": [
|
|
7091
|
+
{
|
|
7092
|
+
"key": "hairline",
|
|
7093
|
+
"value": "1px"
|
|
7094
|
+
},
|
|
7095
|
+
{
|
|
7096
|
+
"key": "strong",
|
|
7097
|
+
"value": "2px"
|
|
7098
|
+
},
|
|
7099
|
+
{
|
|
7100
|
+
"key": "accent",
|
|
7101
|
+
"value": "3px"
|
|
7102
|
+
},
|
|
7103
|
+
{
|
|
7104
|
+
"key": "focusRing",
|
|
7105
|
+
"value": "2px"
|
|
7106
|
+
},
|
|
7107
|
+
{
|
|
7108
|
+
"key": "focusOffset",
|
|
7109
|
+
"value": "2px"
|
|
7110
|
+
},
|
|
7111
|
+
{
|
|
7112
|
+
"key": "focusOffsetSm",
|
|
7113
|
+
"value": "1px"
|
|
7114
|
+
}
|
|
7115
|
+
],
|
|
7116
|
+
"exportName": "borders",
|
|
7117
|
+
"importPath": "@duro-app/tokens/tokens/borders.css"
|
|
7118
|
+
},
|
|
7033
7119
|
"breakpoints": {
|
|
7034
7120
|
"entries": [
|
|
7035
7121
|
{
|
|
@@ -7273,6 +7359,54 @@
|
|
|
7273
7359
|
"highContrast": "#bfdbfe",
|
|
7274
7360
|
"light": "#1e40af"
|
|
7275
7361
|
}
|
|
7362
|
+
},
|
|
7363
|
+
{
|
|
7364
|
+
"key": "scrim",
|
|
7365
|
+
"values": {
|
|
7366
|
+
"dark": "rgba(0, 0, 0, 0.4)",
|
|
7367
|
+
"highContrast": "rgba(0, 0, 0, 0.4)",
|
|
7368
|
+
"light": "rgba(0, 0, 0, 0.4)"
|
|
7369
|
+
}
|
|
7370
|
+
},
|
|
7371
|
+
{
|
|
7372
|
+
"key": "inverseFill",
|
|
7373
|
+
"values": {
|
|
7374
|
+
"dark": "rgba(0, 0, 0, 0.10)",
|
|
7375
|
+
"highContrast": "rgba(0, 0, 0, 0.10)",
|
|
7376
|
+
"light": "rgba(0, 0, 0, 0.10)"
|
|
7377
|
+
}
|
|
7378
|
+
},
|
|
7379
|
+
{
|
|
7380
|
+
"key": "inverseFillHover",
|
|
7381
|
+
"values": {
|
|
7382
|
+
"dark": "rgba(0, 0, 0, 0.18)",
|
|
7383
|
+
"highContrast": "rgba(0, 0, 0, 0.18)",
|
|
7384
|
+
"light": "rgba(0, 0, 0, 0.18)"
|
|
7385
|
+
}
|
|
7386
|
+
},
|
|
7387
|
+
{
|
|
7388
|
+
"key": "inverseBorder",
|
|
7389
|
+
"values": {
|
|
7390
|
+
"dark": "rgba(0, 0, 0, 0.55)",
|
|
7391
|
+
"highContrast": "rgba(0, 0, 0, 0.55)",
|
|
7392
|
+
"light": "rgba(0, 0, 0, 0.55)"
|
|
7393
|
+
}
|
|
7394
|
+
},
|
|
7395
|
+
{
|
|
7396
|
+
"key": "inverseBorderHover",
|
|
7397
|
+
"values": {
|
|
7398
|
+
"dark": "rgba(0, 0, 0, 0.70)",
|
|
7399
|
+
"highContrast": "rgba(0, 0, 0, 0.70)",
|
|
7400
|
+
"light": "rgba(0, 0, 0, 0.70)"
|
|
7401
|
+
}
|
|
7402
|
+
},
|
|
7403
|
+
{
|
|
7404
|
+
"key": "fixedLight",
|
|
7405
|
+
"values": {
|
|
7406
|
+
"dark": "#ffffff",
|
|
7407
|
+
"highContrast": "#ffffff",
|
|
7408
|
+
"light": "#ffffff"
|
|
7409
|
+
}
|
|
7276
7410
|
}
|
|
7277
7411
|
],
|
|
7278
7412
|
"exportName": "colors",
|
|
@@ -7358,16 +7492,54 @@
|
|
|
7358
7492
|
"exportName": "layoutSpacing",
|
|
7359
7493
|
"importPath": "@duro-app/tokens/tokens/layout-spacing.css"
|
|
7360
7494
|
},
|
|
7495
|
+
"microSpacing": {
|
|
7496
|
+
"entries": [
|
|
7497
|
+
{
|
|
7498
|
+
"key": "px1",
|
|
7499
|
+
"value": "1px"
|
|
7500
|
+
},
|
|
7501
|
+
{
|
|
7502
|
+
"key": "px2",
|
|
7503
|
+
"value": "2px"
|
|
7504
|
+
},
|
|
7505
|
+
{
|
|
7506
|
+
"key": "px3",
|
|
7507
|
+
"value": "3px"
|
|
7508
|
+
},
|
|
7509
|
+
{
|
|
7510
|
+
"key": "px5",
|
|
7511
|
+
"value": "5px"
|
|
7512
|
+
},
|
|
7513
|
+
{
|
|
7514
|
+
"key": "px6",
|
|
7515
|
+
"value": "6px"
|
|
7516
|
+
}
|
|
7517
|
+
],
|
|
7518
|
+
"exportName": "microSpacing",
|
|
7519
|
+
"importPath": "@duro-app/tokens/tokens/spacing.css"
|
|
7520
|
+
},
|
|
7361
7521
|
"motion": {
|
|
7362
7522
|
"entries": [
|
|
7363
7523
|
{
|
|
7364
7524
|
"key": "duration.instant",
|
|
7365
7525
|
"value": "0ms"
|
|
7366
7526
|
},
|
|
7527
|
+
{
|
|
7528
|
+
"key": "duration.minimal",
|
|
7529
|
+
"value": "1ms"
|
|
7530
|
+
},
|
|
7531
|
+
{
|
|
7532
|
+
"key": "duration.quick",
|
|
7533
|
+
"value": "120ms"
|
|
7534
|
+
},
|
|
7367
7535
|
{
|
|
7368
7536
|
"key": "duration.fast",
|
|
7369
7537
|
"value": "150ms"
|
|
7370
7538
|
},
|
|
7539
|
+
{
|
|
7540
|
+
"key": "duration.brisk",
|
|
7541
|
+
"value": "160ms"
|
|
7542
|
+
},
|
|
7371
7543
|
{
|
|
7372
7544
|
"key": "duration.base",
|
|
7373
7545
|
"value": "200ms"
|
|
@@ -7380,6 +7552,10 @@
|
|
|
7380
7552
|
"key": "easing.standard",
|
|
7381
7553
|
"value": "ease"
|
|
7382
7554
|
},
|
|
7555
|
+
{
|
|
7556
|
+
"key": "easing.linear",
|
|
7557
|
+
"value": "linear"
|
|
7558
|
+
},
|
|
7383
7559
|
{
|
|
7384
7560
|
"key": "easing.easeOut",
|
|
7385
7561
|
"value": "cubic-bezier(0.32, 0.72, 0, 1)"
|
|
@@ -7398,6 +7574,10 @@
|
|
|
7398
7574
|
"key": "xs",
|
|
7399
7575
|
"value": "4px"
|
|
7400
7576
|
},
|
|
7577
|
+
{
|
|
7578
|
+
"key": "px6",
|
|
7579
|
+
"value": "6px"
|
|
7580
|
+
},
|
|
7401
7581
|
{
|
|
7402
7582
|
"key": "sm",
|
|
7403
7583
|
"value": "8px"
|
|
@@ -7436,6 +7616,204 @@
|
|
|
7436
7616
|
"exportName": "shadows",
|
|
7437
7617
|
"importPath": "@duro-app/tokens/tokens/shadows.css"
|
|
7438
7618
|
},
|
|
7619
|
+
"sizes": {
|
|
7620
|
+
"entries": [
|
|
7621
|
+
{
|
|
7622
|
+
"key": "touchTarget",
|
|
7623
|
+
"value": "44px"
|
|
7624
|
+
},
|
|
7625
|
+
{
|
|
7626
|
+
"key": "controlSm",
|
|
7627
|
+
"value": "28px"
|
|
7628
|
+
},
|
|
7629
|
+
{
|
|
7630
|
+
"key": "controlMd",
|
|
7631
|
+
"value": "39px"
|
|
7632
|
+
},
|
|
7633
|
+
{
|
|
7634
|
+
"key": "controlLg",
|
|
7635
|
+
"value": "40px"
|
|
7636
|
+
},
|
|
7637
|
+
{
|
|
7638
|
+
"key": "indicator",
|
|
7639
|
+
"value": "18px"
|
|
7640
|
+
},
|
|
7641
|
+
{
|
|
7642
|
+
"key": "indicatorDot",
|
|
7643
|
+
"value": "8px"
|
|
7644
|
+
},
|
|
7645
|
+
{
|
|
7646
|
+
"key": "checkMarkW",
|
|
7647
|
+
"value": "5px"
|
|
7648
|
+
},
|
|
7649
|
+
{
|
|
7650
|
+
"key": "checkMarkH",
|
|
7651
|
+
"value": "9px"
|
|
7652
|
+
},
|
|
7653
|
+
{
|
|
7654
|
+
"key": "switchTrackW",
|
|
7655
|
+
"value": "36px"
|
|
7656
|
+
},
|
|
7657
|
+
{
|
|
7658
|
+
"key": "switchTrackH",
|
|
7659
|
+
"value": "20px"
|
|
7660
|
+
},
|
|
7661
|
+
{
|
|
7662
|
+
"key": "switchThumb",
|
|
7663
|
+
"value": "16px"
|
|
7664
|
+
},
|
|
7665
|
+
{
|
|
7666
|
+
"key": "iconButton",
|
|
7667
|
+
"value": "32px"
|
|
7668
|
+
},
|
|
7669
|
+
{
|
|
7670
|
+
"key": "iconButtonSm",
|
|
7671
|
+
"value": "28px"
|
|
7672
|
+
},
|
|
7673
|
+
{
|
|
7674
|
+
"key": "spinnerSm",
|
|
7675
|
+
"value": "16px"
|
|
7676
|
+
},
|
|
7677
|
+
{
|
|
7678
|
+
"key": "spinnerMd",
|
|
7679
|
+
"value": "24px"
|
|
7680
|
+
},
|
|
7681
|
+
{
|
|
7682
|
+
"key": "spinnerLg",
|
|
7683
|
+
"value": "40px"
|
|
7684
|
+
},
|
|
7685
|
+
{
|
|
7686
|
+
"key": "glyphXs",
|
|
7687
|
+
"value": "10px"
|
|
7688
|
+
},
|
|
7689
|
+
{
|
|
7690
|
+
"key": "glyphSm",
|
|
7691
|
+
"value": "12px"
|
|
7692
|
+
},
|
|
7693
|
+
{
|
|
7694
|
+
"key": "glyphMd",
|
|
7695
|
+
"value": "16px"
|
|
7696
|
+
},
|
|
7697
|
+
{
|
|
7698
|
+
"key": "iconSm",
|
|
7699
|
+
"value": "16px"
|
|
7700
|
+
},
|
|
7701
|
+
{
|
|
7702
|
+
"key": "iconMd",
|
|
7703
|
+
"value": "18px"
|
|
7704
|
+
},
|
|
7705
|
+
{
|
|
7706
|
+
"key": "iconLg",
|
|
7707
|
+
"value": "24px"
|
|
7708
|
+
},
|
|
7709
|
+
{
|
|
7710
|
+
"key": "iconXl",
|
|
7711
|
+
"value": "36px"
|
|
7712
|
+
},
|
|
7713
|
+
{
|
|
7714
|
+
"key": "iconXxl",
|
|
7715
|
+
"value": "48px"
|
|
7716
|
+
},
|
|
7717
|
+
{
|
|
7718
|
+
"key": "navMarkerW",
|
|
7719
|
+
"value": "3px"
|
|
7720
|
+
},
|
|
7721
|
+
{
|
|
7722
|
+
"key": "navMarkerH",
|
|
7723
|
+
"value": "18px"
|
|
7724
|
+
},
|
|
7725
|
+
{
|
|
7726
|
+
"key": "divider",
|
|
7727
|
+
"value": "1px"
|
|
7728
|
+
},
|
|
7729
|
+
{
|
|
7730
|
+
"key": "tabIndicator",
|
|
7731
|
+
"value": "2px"
|
|
7732
|
+
},
|
|
7733
|
+
{
|
|
7734
|
+
"key": "edgeFade",
|
|
7735
|
+
"value": "32px"
|
|
7736
|
+
},
|
|
7737
|
+
{
|
|
7738
|
+
"key": "scrollbar",
|
|
7739
|
+
"value": "8px"
|
|
7740
|
+
},
|
|
7741
|
+
{
|
|
7742
|
+
"key": "swatchW",
|
|
7743
|
+
"value": "44px"
|
|
7744
|
+
},
|
|
7745
|
+
{
|
|
7746
|
+
"key": "swatchH",
|
|
7747
|
+
"value": "34px"
|
|
7748
|
+
},
|
|
7749
|
+
{
|
|
7750
|
+
"key": "labelMinW",
|
|
7751
|
+
"value": "120px"
|
|
7752
|
+
},
|
|
7753
|
+
{
|
|
7754
|
+
"key": "popupMinW",
|
|
7755
|
+
"value": "160px"
|
|
7756
|
+
},
|
|
7757
|
+
{
|
|
7758
|
+
"key": "listMaxH",
|
|
7759
|
+
"value": "280px"
|
|
7760
|
+
},
|
|
7761
|
+
{
|
|
7762
|
+
"key": "listMaxHSm",
|
|
7763
|
+
"value": "200px"
|
|
7764
|
+
},
|
|
7765
|
+
{
|
|
7766
|
+
"key": "dialogSm",
|
|
7767
|
+
"value": "400px"
|
|
7768
|
+
},
|
|
7769
|
+
{
|
|
7770
|
+
"key": "dialogMd",
|
|
7771
|
+
"value": "520px"
|
|
7772
|
+
},
|
|
7773
|
+
{
|
|
7774
|
+
"key": "dialogLg",
|
|
7775
|
+
"value": "680px"
|
|
7776
|
+
},
|
|
7777
|
+
{
|
|
7778
|
+
"key": "panelSm",
|
|
7779
|
+
"value": "360px"
|
|
7780
|
+
},
|
|
7781
|
+
{
|
|
7782
|
+
"key": "panelMd",
|
|
7783
|
+
"value": "480px"
|
|
7784
|
+
},
|
|
7785
|
+
{
|
|
7786
|
+
"key": "panelLg",
|
|
7787
|
+
"value": "640px"
|
|
7788
|
+
},
|
|
7789
|
+
{
|
|
7790
|
+
"key": "toastMaxW",
|
|
7791
|
+
"value": "440px"
|
|
7792
|
+
},
|
|
7793
|
+
{
|
|
7794
|
+
"key": "gridColSm",
|
|
7795
|
+
"value": "240px"
|
|
7796
|
+
},
|
|
7797
|
+
{
|
|
7798
|
+
"key": "gridColMd",
|
|
7799
|
+
"value": "280px"
|
|
7800
|
+
},
|
|
7801
|
+
{
|
|
7802
|
+
"key": "pageSm",
|
|
7803
|
+
"value": "600px"
|
|
7804
|
+
},
|
|
7805
|
+
{
|
|
7806
|
+
"key": "pageMd",
|
|
7807
|
+
"value": "800px"
|
|
7808
|
+
},
|
|
7809
|
+
{
|
|
7810
|
+
"key": "pageLg",
|
|
7811
|
+
"value": "1200px"
|
|
7812
|
+
}
|
|
7813
|
+
],
|
|
7814
|
+
"exportName": "sizes",
|
|
7815
|
+
"importPath": "@duro-app/tokens/tokens/sizes.css"
|
|
7816
|
+
},
|
|
7439
7817
|
"spacing": {
|
|
7440
7818
|
"entries": [
|
|
7441
7819
|
{
|
|
@@ -7581,7 +7959,7 @@
|
|
|
7581
7959
|
"importPath": "@duro-app/tokens/tokens/typography.css"
|
|
7582
7960
|
}
|
|
7583
7961
|
},
|
|
7584
|
-
"mockupCss": "/*\n * GENERATED by scripts/generate-mockup-css.mjs — do not edit.\n *\n * The design tokens as resolved values, for HTML that loads no stylesheet\n * (mockup artboards, static previews). Same names as vars.css; where vars.css\n * follows the live theme, this file carries every theme and switches on\n * <html data-theme=\"light|high-contrast\">.\n *\n * Inside the component library and the apps, never use this: go through\n * css.create() and the token imports, or vars.css from plain CSS.\n */\n:root {\n color-scheme: dark;\n /* colors */\n --duro-color-accent: #6aaffc;\n --duro-color-accent-contrast: #000000;\n --duro-color-accent-hover: #93c5fd;\n --duro-color-bg: #0f0f0f;\n --duro-color-bg-card: #1a1a1a;\n --duro-color-bg-card-hover: #242424;\n --duro-color-border: #333333;\n --duro-color-error: #f87171;\n --duro-color-error-bg: rgba(248, 113, 113, 0.1);\n --duro-color-error-border: rgba(248, 113, 113, 0.3);\n --duro-color-error-contrast: #000000;\n --duro-color-error-hover: #fca5a5;\n --duro-color-error-text: #fca5a5;\n --duro-color-info: #6aaffc;\n --duro-color-info-bg: rgba(106, 175, 252, 0.1);\n --duro-color-info-border: rgba(106, 175, 252, 0.3);\n --duro-color-info-text: #93c5fd;\n --duro-color-success: #22c55e;\n --duro-color-success-bg: rgba(34, 197, 94, 0.1);\n --duro-color-success-border: rgba(34, 197, 94, 0.3);\n --duro-color-success-text: #86efac;\n --duro-color-text: #e5e5e5;\n --duro-color-text-muted: #b0b0b0;\n --duro-color-warning: #fbbf24;\n --duro-color-warning-bg: rgba(251, 191, 36, 0.1);\n --duro-color-warning-border: rgba(251, 191, 36, 0.3);\n --duro-color-warning-text: #fde68a;\n /* shadows */\n --duro-shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.5);\n --duro-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.4);\n --duro-shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.3);\n /* spacing */\n --duro-spacing-lg: 24px;\n --duro-spacing-md: 16px;\n --duro-spacing-ms: 12px;\n --duro-spacing-sm: 8px;\n --duro-spacing-xl: 32px;\n --duro-spacing-xs: 4px;\n --duro-spacing-xxl: 48px;\n --duro-spacing-xxxl: 64px;\n /* radii */\n --duro-radius-full: 9999px;\n --duro-radius-lg: 16px;\n --duro-radius-md: 12px;\n --duro-radius-sm: 8px;\n --duro-radius-xs: 4px;\n /* layoutSpacing */\n --duro-layout-spacing-container-lg: 32px;\n --duro-layout-spacing-container-md: 24px;\n --duro-layout-spacing-container-sm: 16px;\n --duro-layout-spacing-inline-lg: 24px;\n --duro-layout-spacing-inline-md: 16px;\n --duro-layout-spacing-inline-sm: 8px;\n --duro-layout-spacing-inline-xs: 4px;\n --duro-layout-spacing-stack-lg: 24px;\n --duro-layout-spacing-stack-md: 16px;\n --duro-layout-spacing-stack-sm: 8px;\n --duro-layout-spacing-stack-xl: 48px;\n --duro-layout-spacing-stack-xs: 4px;\n /* typography */\n --duro-typography-font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;\n --duro-typography-font-family-mono: \"SF Mono\", \"Fira Code\", \"Fira Mono\", \"Roboto Mono\", \"Courier New\", monospace;\n --duro-typography-font-size-heading: 1.5rem;\n --duro-typography-font-size-lg: 1.125rem;\n --duro-typography-font-size-md: 1rem;\n --duro-typography-font-size-sm: 0.875rem;\n --duro-typography-font-size-xl: 1.25rem;\n --duro-typography-font-size-xs: 0.75rem;\n --duro-typography-font-weight-bold: 700;\n --duro-typography-font-weight-medium: 500;\n --duro-typography-font-weight-normal: 400;\n --duro-typography-font-weight-semibold: 600;\n --duro-typography-line-height: 1.5;\n /* typeScale */\n --duro-type-scale-display-lg: clamp(3.5rem, 2rem + 3.5vw, 4.5rem);\n --duro-type-scale-display-md: clamp(2.75rem, 1.75rem + 2.5vw, 3.75rem);\n --duro-type-scale-display-sm: clamp(2.25rem, 1.5rem + 2vw, 3rem);\n --duro-type-scale-font-size1: 0.75rem;\n --duro-type-scale-font-size2: 0.8125rem;\n --duro-type-scale-font-size3: 0.875rem;\n --duro-type-scale-font-size4: 1rem;\n --duro-type-scale-font-size5: 1.125rem;\n --duro-type-scale-font-size6: 1.25rem;\n --duro-type-scale-font-size7: 1.5rem;\n --duro-type-scale-font-size8: 1.875rem;\n --duro-type-scale-font-size9: 2.25rem;\n --duro-type-scale-letter-spacing-normal: 0;\n --duro-type-scale-letter-spacing-tight: -0.02em;\n --duro-type-scale-letter-spacing-wide: 0.04em;\n --duro-type-scale-line-height1: 1rem;\n --duro-type-scale-line-height2: 1.25rem;\n --duro-type-scale-line-height3: 1.25rem;\n --duro-type-scale-line-height4: 1.5rem;\n --duro-type-scale-line-height5: 1.5rem;\n --duro-type-scale-line-height6: 1.75rem;\n --duro-type-scale-line-height7: 2rem;\n --duro-type-scale-line-height8: 2.25rem;\n --duro-type-scale-line-height9: 2.75rem;\n /* duration */\n --duro-duration-base: 200ms;\n --duro-duration-fast: 150ms;\n --duro-duration-instant: 0ms;\n --duro-duration-slow: 280ms;\n /* easing */\n --duro-easing-ease-in: cubic-bezier(0.72, 0, 0.68, 0.28);\n --duro-easing-ease-out: cubic-bezier(0.32, 0.72, 0, 1);\n --duro-easing-standard: ease;\n /* breakpoints */\n --duro-breakpoint-lg: 1024px;\n --duro-breakpoint-md: 768px;\n --duro-breakpoint-sm: 640px;\n --duro-breakpoint-xl: 1280px;\n --duro-breakpoint-xs: 480px;\n}\n\n:root[data-theme=\"light\"] {\n color-scheme: light;\n /* colors */\n --duro-color-accent: #1e40af;\n --duro-color-accent-contrast: #ffffff;\n --duro-color-accent-hover: #1a3799;\n --duro-color-bg: #ffffff;\n --duro-color-bg-card: #f5f5f5;\n --duro-color-bg-card-hover: #ebebeb;\n --duro-color-border: #d4d4d4;\n --duro-color-error: #991b1b;\n --duro-color-error-bg: rgba(153, 27, 27, 0.08);\n --duro-color-error-border: rgba(153, 27, 27, 0.3);\n --duro-color-error-contrast: #ffffff;\n --duro-color-error-hover: #7f1d1d;\n --duro-color-error-text: #7f1d1d;\n --duro-color-info: #1e40af;\n --duro-color-info-bg: rgba(30, 64, 175, 0.08);\n --duro-color-info-border: rgba(30, 64, 175, 0.3);\n --duro-color-info-text: #1e40af;\n --duro-color-success: #166534;\n --duro-color-success-bg: rgba(22, 101, 52, 0.08);\n --duro-color-success-border: rgba(22, 101, 52, 0.3);\n --duro-color-success-text: #14532d;\n --duro-color-text: #1a1a1a;\n --duro-color-text-muted: #4a4a4a;\n --duro-color-warning: #92400e;\n --duro-color-warning-bg: rgba(146, 64, 14, 0.08);\n --duro-color-warning-border: rgba(146, 64, 14, 0.3);\n --duro-color-warning-text: #78350f;\n /* shadows */\n --duro-shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.16);\n --duro-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.12);\n --duro-shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.08);\n}\n\n:root[data-theme=\"high-contrast\"] {\n color-scheme: dark;\n /* colors */\n --duro-color-accent: #60a5fa;\n --duro-color-accent-contrast: #000000;\n --duro-color-accent-hover: #93c5fd;\n --duro-color-bg: #000000;\n --duro-color-bg-card: #111111;\n --duro-color-bg-card-hover: #1a1a1a;\n --duro-color-border: #555555;\n --duro-color-error: #f87171;\n --duro-color-error-bg: rgba(248, 113, 113, 0.15);\n --duro-color-error-border: rgba(248, 113, 113, 0.5);\n --duro-color-error-contrast: #000000;\n --duro-color-error-hover: #fca5a5;\n --duro-color-error-text: #fca5a5;\n --duro-color-info: #60a5fa;\n --duro-color-info-bg: rgba(96, 165, 250, 0.15);\n --duro-color-info-border: rgba(96, 165, 250, 0.5);\n --duro-color-info-text: #bfdbfe;\n --duro-color-success: #4ade80;\n --duro-color-success-bg: rgba(74, 222, 128, 0.15);\n --duro-color-success-border: rgba(74, 222, 128, 0.5);\n --duro-color-success-text: #86efac;\n --duro-color-text: #ffffff;\n --duro-color-text-muted: #b0b0b0;\n --duro-color-warning: #fcd34d;\n --duro-color-warning-bg: rgba(252, 211, 77, 0.15);\n --duro-color-warning-border: rgba(252, 211, 77, 0.5);\n --duro-color-warning-text: #fef08a;\n /* shadows */\n --duro-shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.8);\n --duro-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.7);\n --duro-shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.6);\n}\n"
|
|
7962
|
+
"mockupCss": "/*\n * GENERATED by scripts/generate-mockup-css.mjs — do not edit.\n *\n * The design tokens as resolved values, for HTML that loads no stylesheet\n * (mockup artboards, static previews). Same names as vars.css; where vars.css\n * follows the live theme, this file carries every theme and switches on\n * <html data-theme=\"light|high-contrast\">.\n *\n * Inside the component library and the apps, never use this: go through\n * css.create() and the token imports, or vars.css from plain CSS.\n */\n:root {\n color-scheme: dark;\n /* colors */\n --duro-color-accent: #6aaffc;\n --duro-color-accent-contrast: #000000;\n --duro-color-accent-hover: #93c5fd;\n --duro-color-bg: #0f0f0f;\n --duro-color-bg-card: #1a1a1a;\n --duro-color-bg-card-hover: #242424;\n --duro-color-border: #333333;\n --duro-color-error: #f87171;\n --duro-color-error-bg: rgba(248, 113, 113, 0.1);\n --duro-color-error-border: rgba(248, 113, 113, 0.3);\n --duro-color-error-contrast: #000000;\n --duro-color-error-hover: #fca5a5;\n --duro-color-error-text: #fca5a5;\n --duro-color-fixed-light: #ffffff;\n --duro-color-info: #6aaffc;\n --duro-color-info-bg: rgba(106, 175, 252, 0.1);\n --duro-color-info-border: rgba(106, 175, 252, 0.3);\n --duro-color-info-text: #93c5fd;\n --duro-color-inverse-border: rgba(0, 0, 0, 0.55);\n --duro-color-inverse-border-hover: rgba(0, 0, 0, 0.70);\n --duro-color-inverse-fill: rgba(0, 0, 0, 0.10);\n --duro-color-inverse-fill-hover: rgba(0, 0, 0, 0.18);\n --duro-color-scrim: rgba(0, 0, 0, 0.4);\n --duro-color-success: #22c55e;\n --duro-color-success-bg: rgba(34, 197, 94, 0.1);\n --duro-color-success-border: rgba(34, 197, 94, 0.3);\n --duro-color-success-text: #86efac;\n --duro-color-text: #e5e5e5;\n --duro-color-text-muted: #b0b0b0;\n --duro-color-warning: #fbbf24;\n --duro-color-warning-bg: rgba(251, 191, 36, 0.1);\n --duro-color-warning-border: rgba(251, 191, 36, 0.3);\n --duro-color-warning-text: #fde68a;\n /* shadows */\n --duro-shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.5);\n --duro-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.4);\n --duro-shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.3);\n /* spacing */\n --duro-spacing-lg: 24px;\n --duro-spacing-md: 16px;\n --duro-spacing-ms: 12px;\n --duro-spacing-sm: 8px;\n --duro-spacing-xl: 32px;\n --duro-spacing-xs: 4px;\n --duro-spacing-xxl: 48px;\n --duro-spacing-xxxl: 64px;\n /* microSpacing */\n --duro-micro-spacing-px1: 1px;\n --duro-micro-spacing-px2: 2px;\n --duro-micro-spacing-px3: 3px;\n --duro-micro-spacing-px5: 5px;\n --duro-micro-spacing-px6: 6px;\n /* radii */\n --duro-radius-full: 9999px;\n --duro-radius-lg: 16px;\n --duro-radius-md: 12px;\n --duro-radius-px6: 6px;\n --duro-radius-sm: 8px;\n --duro-radius-xs: 4px;\n /* sizes */\n --duro-size-check-mark-h: 9px;\n --duro-size-check-mark-w: 5px;\n --duro-size-control-lg: 40px;\n --duro-size-control-md: 39px;\n --duro-size-control-sm: 28px;\n --duro-size-dialog-lg: 680px;\n --duro-size-dialog-md: 520px;\n --duro-size-dialog-sm: 400px;\n --duro-size-divider: 1px;\n --duro-size-edge-fade: 32px;\n --duro-size-glyph-md: 16px;\n --duro-size-glyph-sm: 12px;\n --duro-size-glyph-xs: 10px;\n --duro-size-grid-col-md: 280px;\n --duro-size-grid-col-sm: 240px;\n --duro-size-icon-button: 32px;\n --duro-size-icon-button-sm: 28px;\n --duro-size-icon-lg: 24px;\n --duro-size-icon-md: 18px;\n --duro-size-icon-sm: 16px;\n --duro-size-icon-xl: 36px;\n --duro-size-icon-xxl: 48px;\n --duro-size-indicator: 18px;\n --duro-size-indicator-dot: 8px;\n --duro-size-label-min-w: 120px;\n --duro-size-list-max-h: 280px;\n --duro-size-list-max-h-sm: 200px;\n --duro-size-nav-marker-h: 18px;\n --duro-size-nav-marker-w: 3px;\n --duro-size-page-lg: 1200px;\n --duro-size-page-md: 800px;\n --duro-size-page-sm: 600px;\n --duro-size-panel-lg: 640px;\n --duro-size-panel-md: 480px;\n --duro-size-panel-sm: 360px;\n --duro-size-popup-min-w: 160px;\n --duro-size-scrollbar: 8px;\n --duro-size-spinner-lg: 40px;\n --duro-size-spinner-md: 24px;\n --duro-size-spinner-sm: 16px;\n --duro-size-swatch-h: 34px;\n --duro-size-swatch-w: 44px;\n --duro-size-switch-thumb: 16px;\n --duro-size-switch-track-h: 20px;\n --duro-size-switch-track-w: 36px;\n --duro-size-tab-indicator: 2px;\n --duro-size-toast-max-w: 440px;\n --duro-size-touch-target: 44px;\n /* borders */\n --duro-border-accent: 3px;\n --duro-border-focus-offset: 2px;\n --duro-border-focus-offset-sm: 1px;\n --duro-border-focus-ring: 2px;\n --duro-border-hairline: 1px;\n --duro-border-strong: 2px;\n /* layoutSpacing */\n --duro-layout-spacing-container-lg: 32px;\n --duro-layout-spacing-container-md: 24px;\n --duro-layout-spacing-container-sm: 16px;\n --duro-layout-spacing-inline-lg: 24px;\n --duro-layout-spacing-inline-md: 16px;\n --duro-layout-spacing-inline-sm: 8px;\n --duro-layout-spacing-inline-xs: 4px;\n --duro-layout-spacing-stack-lg: 24px;\n --duro-layout-spacing-stack-md: 16px;\n --duro-layout-spacing-stack-sm: 8px;\n --duro-layout-spacing-stack-xl: 48px;\n --duro-layout-spacing-stack-xs: 4px;\n /* typography */\n --duro-typography-font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;\n --duro-typography-font-family-mono: \"SF Mono\", \"Fira Code\", \"Fira Mono\", \"Roboto Mono\", \"Courier New\", monospace;\n --duro-typography-font-size-heading: 1.5rem;\n --duro-typography-font-size-lg: 1.125rem;\n --duro-typography-font-size-md: 1rem;\n --duro-typography-font-size-sm: 0.875rem;\n --duro-typography-font-size-xl: 1.25rem;\n --duro-typography-font-size-xs: 0.75rem;\n --duro-typography-font-weight-bold: 700;\n --duro-typography-font-weight-medium: 500;\n --duro-typography-font-weight-normal: 400;\n --duro-typography-font-weight-semibold: 600;\n --duro-typography-line-height: 1.5;\n /* typeScale */\n --duro-type-scale-display-lg: clamp(3.5rem, 2rem + 3.5vw, 4.5rem);\n --duro-type-scale-display-md: clamp(2.75rem, 1.75rem + 2.5vw, 3.75rem);\n --duro-type-scale-display-sm: clamp(2.25rem, 1.5rem + 2vw, 3rem);\n --duro-type-scale-font-size1: 0.75rem;\n --duro-type-scale-font-size2: 0.8125rem;\n --duro-type-scale-font-size3: 0.875rem;\n --duro-type-scale-font-size4: 1rem;\n --duro-type-scale-font-size5: 1.125rem;\n --duro-type-scale-font-size6: 1.25rem;\n --duro-type-scale-font-size7: 1.5rem;\n --duro-type-scale-font-size8: 1.875rem;\n --duro-type-scale-font-size9: 2.25rem;\n --duro-type-scale-letter-spacing-normal: 0;\n --duro-type-scale-letter-spacing-tight: -0.02em;\n --duro-type-scale-letter-spacing-wide: 0.04em;\n --duro-type-scale-line-height1: 1rem;\n --duro-type-scale-line-height2: 1.25rem;\n --duro-type-scale-line-height3: 1.25rem;\n --duro-type-scale-line-height4: 1.5rem;\n --duro-type-scale-line-height5: 1.5rem;\n --duro-type-scale-line-height6: 1.75rem;\n --duro-type-scale-line-height7: 2rem;\n --duro-type-scale-line-height8: 2.25rem;\n --duro-type-scale-line-height9: 2.75rem;\n /* duration */\n --duro-duration-base: 200ms;\n --duro-duration-brisk: 160ms;\n --duro-duration-fast: 150ms;\n --duro-duration-instant: 0ms;\n --duro-duration-minimal: 1ms;\n --duro-duration-quick: 120ms;\n --duro-duration-slow: 280ms;\n /* easing */\n --duro-easing-ease-in: cubic-bezier(0.72, 0, 0.68, 0.28);\n --duro-easing-ease-out: cubic-bezier(0.32, 0.72, 0, 1);\n --duro-easing-linear: linear;\n --duro-easing-standard: ease;\n /* breakpoints */\n --duro-breakpoint-lg: 1024px;\n --duro-breakpoint-md: 768px;\n --duro-breakpoint-sm: 640px;\n --duro-breakpoint-xl: 1280px;\n --duro-breakpoint-xs: 480px;\n}\n\n:root[data-theme=\"light\"] {\n color-scheme: light;\n /* colors */\n --duro-color-accent: #1e40af;\n --duro-color-accent-contrast: #ffffff;\n --duro-color-accent-hover: #1a3799;\n --duro-color-bg: #ffffff;\n --duro-color-bg-card: #f5f5f5;\n --duro-color-bg-card-hover: #ebebeb;\n --duro-color-border: #d4d4d4;\n --duro-color-error: #991b1b;\n --duro-color-error-bg: rgba(153, 27, 27, 0.08);\n --duro-color-error-border: rgba(153, 27, 27, 0.3);\n --duro-color-error-contrast: #ffffff;\n --duro-color-error-hover: #7f1d1d;\n --duro-color-error-text: #7f1d1d;\n --duro-color-fixed-light: #ffffff;\n --duro-color-info: #1e40af;\n --duro-color-info-bg: rgba(30, 64, 175, 0.08);\n --duro-color-info-border: rgba(30, 64, 175, 0.3);\n --duro-color-info-text: #1e40af;\n --duro-color-inverse-border: rgba(0, 0, 0, 0.55);\n --duro-color-inverse-border-hover: rgba(0, 0, 0, 0.70);\n --duro-color-inverse-fill: rgba(0, 0, 0, 0.10);\n --duro-color-inverse-fill-hover: rgba(0, 0, 0, 0.18);\n --duro-color-scrim: rgba(0, 0, 0, 0.4);\n --duro-color-success: #166534;\n --duro-color-success-bg: rgba(22, 101, 52, 0.08);\n --duro-color-success-border: rgba(22, 101, 52, 0.3);\n --duro-color-success-text: #14532d;\n --duro-color-text: #1a1a1a;\n --duro-color-text-muted: #4a4a4a;\n --duro-color-warning: #92400e;\n --duro-color-warning-bg: rgba(146, 64, 14, 0.08);\n --duro-color-warning-border: rgba(146, 64, 14, 0.3);\n --duro-color-warning-text: #78350f;\n /* shadows */\n --duro-shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.16);\n --duro-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.12);\n --duro-shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.08);\n}\n\n:root[data-theme=\"high-contrast\"] {\n color-scheme: dark;\n /* colors */\n --duro-color-accent: #60a5fa;\n --duro-color-accent-contrast: #000000;\n --duro-color-accent-hover: #93c5fd;\n --duro-color-bg: #000000;\n --duro-color-bg-card: #111111;\n --duro-color-bg-card-hover: #1a1a1a;\n --duro-color-border: #555555;\n --duro-color-error: #f87171;\n --duro-color-error-bg: rgba(248, 113, 113, 0.15);\n --duro-color-error-border: rgba(248, 113, 113, 0.5);\n --duro-color-error-contrast: #000000;\n --duro-color-error-hover: #fca5a5;\n --duro-color-error-text: #fca5a5;\n --duro-color-fixed-light: #ffffff;\n --duro-color-info: #60a5fa;\n --duro-color-info-bg: rgba(96, 165, 250, 0.15);\n --duro-color-info-border: rgba(96, 165, 250, 0.5);\n --duro-color-info-text: #bfdbfe;\n --duro-color-inverse-border: rgba(0, 0, 0, 0.55);\n --duro-color-inverse-border-hover: rgba(0, 0, 0, 0.70);\n --duro-color-inverse-fill: rgba(0, 0, 0, 0.10);\n --duro-color-inverse-fill-hover: rgba(0, 0, 0, 0.18);\n --duro-color-scrim: rgba(0, 0, 0, 0.4);\n --duro-color-success: #4ade80;\n --duro-color-success-bg: rgba(74, 222, 128, 0.15);\n --duro-color-success-border: rgba(74, 222, 128, 0.5);\n --duro-color-success-text: #86efac;\n --duro-color-text: #ffffff;\n --duro-color-text-muted: #b0b0b0;\n --duro-color-warning: #fcd34d;\n --duro-color-warning-bg: rgba(252, 211, 77, 0.15);\n --duro-color-warning-border: rgba(252, 211, 77, 0.5);\n --duro-color-warning-text: #fef08a;\n /* shadows */\n --duro-shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.8);\n --duro-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.7);\n --duro-shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.6);\n}\n"
|
|
7585
7963
|
},
|
|
7586
7964
|
"unions": {
|
|
7587
7965
|
"AlertVariant": [
|
|
@@ -7662,7 +8040,10 @@
|
|
|
7662
8040
|
],
|
|
7663
8041
|
"DurationToken": [
|
|
7664
8042
|
"instant",
|
|
8043
|
+
"minimal",
|
|
8044
|
+
"quick",
|
|
7665
8045
|
"fast",
|
|
8046
|
+
"brisk",
|
|
7666
8047
|
"base",
|
|
7667
8048
|
"slow"
|
|
7668
8049
|
],
|
|
@@ -7760,6 +8141,7 @@
|
|
|
7760
8141
|
],
|
|
7761
8142
|
"RadiusToken": [
|
|
7762
8143
|
"xs",
|
|
8144
|
+
"px6",
|
|
7763
8145
|
"sm",
|
|
7764
8146
|
"md",
|
|
7765
8147
|
"lg",
|