@reqvire-org/ads 0.0.0-stage → 0.2.9

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.
Files changed (145) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +284 -2
  3. package/dist/assets.mjs +52 -0
  4. package/dist/bootstrap-ds/ADS.md +203 -0
  5. package/dist/bootstrap-ds/README.md +98 -0
  6. package/dist/bootstrap-ds/biome.css.json +21 -0
  7. package/dist/bootstrap-ds/design-system/assets/brand/README.md +28 -0
  8. package/dist/bootstrap-ds/design-system/assets/fonts/.gitkeep +0 -0
  9. package/dist/bootstrap-ds/design-system/components/.gitkeep +0 -0
  10. package/dist/bootstrap-ds/design-system/composition/.gitkeep +0 -0
  11. package/dist/bootstrap-ds/design-system/index.ts +5 -0
  12. package/dist/bootstrap-ds/design-system/patterns/.gitkeep +0 -0
  13. package/dist/bootstrap-ds/design-system/showcase/mcp/index.html +1 -0
  14. package/dist/bootstrap-ds/design-system/showcase/mcp/main.tsx +8 -0
  15. package/dist/bootstrap-ds/design-system/styles.css +5 -0
  16. package/dist/bootstrap-ds/design-system/tokens/Foundation.fixture.ts +47 -0
  17. package/dist/bootstrap-ds/design-system/tokens/Foundation.scenario.tsx +14 -0
  18. package/dist/bootstrap-ds/design-system/tokens/base.css +27 -0
  19. package/dist/bootstrap-ds/design-system/tokens/colors.css +29 -0
  20. package/dist/bootstrap-ds/design-system/tokens/elevation.css +15 -0
  21. package/dist/bootstrap-ds/design-system/tokens/spacing.css +15 -0
  22. package/dist/bootstrap-ds/design-system/tokens/typography.css +13 -0
  23. package/dist/bootstrap-ds/ds.config.json +13 -0
  24. package/dist/bootstrap-ds/gitignore.template +8 -0
  25. package/dist/bootstrap-ds/package-lock.json +4660 -0
  26. package/dist/bootstrap-ds/package.json +41 -0
  27. package/dist/bootstrap-ds/scripts/build-mcp-previews.mjs +33 -0
  28. package/dist/bootstrap-ds/src/vite-env.d.ts +7 -0
  29. package/dist/bootstrap-ds/tsconfig.build.json +12 -0
  30. package/dist/bootstrap-ds/tsconfig.json +20 -0
  31. package/dist/bootstrap-ds/vite.config.ts +21 -0
  32. package/dist/boundaries.mjs +130 -0
  33. package/dist/brand-assets.mjs +82 -0
  34. package/dist/check.mjs +222 -0
  35. package/dist/cli.mjs +106 -0
  36. package/dist/config.mjs +181 -0
  37. package/dist/contracts/tokens.json +52 -0
  38. package/dist/html.mjs +30 -0
  39. package/dist/index.mjs +9 -0
  40. package/dist/init.mjs +194 -0
  41. package/dist/lint-config.mjs +40 -0
  42. package/dist/mcp/THIRD_PARTY_NOTICES.md +786 -0
  43. package/dist/mcp/apps.mjs +53 -0
  44. package/dist/mcp/build-status.mjs +164 -0
  45. package/dist/mcp/catalog.mjs +65 -0
  46. package/dist/mcp/context.mjs +69 -0
  47. package/dist/mcp/mutations.mjs +301 -0
  48. package/dist/mcp/patch.mjs +114 -0
  49. package/dist/mcp/preview-watch.mjs +169 -0
  50. package/dist/mcp/preview-widget.bundle.js +113 -0
  51. package/dist/mcp/project-widget.bundle.js +113 -0
  52. package/dist/mcp/prompts.mjs +28 -0
  53. package/dist/mcp/resource-loader.js +138 -0
  54. package/dist/mcp/sandbox-host.mjs +22 -0
  55. package/dist/mcp/server.mjs +377 -0
  56. package/dist/mcp/showcase-host.mjs +68 -0
  57. package/dist/mcp/skills.mjs +77 -0
  58. package/dist/mcp/widget.bundle.js +150 -0
  59. package/dist/oxlint.mjs +81 -0
  60. package/dist/preview-resources.mjs +198 -0
  61. package/dist/project-documents.mjs +27 -0
  62. package/dist/public-props.mjs +74 -0
  63. package/dist/scenarios-compiler.mjs +287 -0
  64. package/dist/scenarios-vite.d.mts +3 -0
  65. package/dist/scenarios-vite.mjs +71 -0
  66. package/dist/scenarios.mjs +212 -0
  67. package/dist/showcase/client.bundle.js +127 -0
  68. package/dist/showcase/index.html +17 -0
  69. package/dist/showcase/sandbox.js +30 -0
  70. package/dist/showcase/style.css +7 -0
  71. package/dist/showcase-coverage.mjs +118 -0
  72. package/dist/showcase.mjs +77 -0
  73. package/dist/skills/README.md +68 -0
  74. package/dist/skills/ads-assimilate/SKILL.md +292 -0
  75. package/dist/skills/ads-assimilate/agents/openai.yaml +4 -0
  76. package/dist/skills/ads-assimilate/references/cli.md +111 -0
  77. package/dist/skills/ads-assimilate/references/lint-and-docs.md +87 -0
  78. package/dist/skills/ads-assimilate/references/native-implementation.md +98 -0
  79. package/dist/skills/ads-assimilate/references/testing.md +107 -0
  80. package/dist/skills/ads-break-ui/LICENSE.upstream +21 -0
  81. package/dist/skills/ads-break-ui/README.md +16 -0
  82. package/dist/skills/ads-break-ui/SKILL.md +235 -0
  83. package/dist/skills/ads-break-ui/agents/openai.yaml +4 -0
  84. package/dist/skills/ads-break-ui/references/catalog.md +135 -0
  85. package/dist/skills/ads-break-ui/references/verification.md +48 -0
  86. package/dist/skills/ads-designer/LICENSE.upstream +21 -0
  87. package/dist/skills/ads-designer/README.md +19 -0
  88. package/dist/skills/ads-designer/SKILL.md +400 -0
  89. package/dist/skills/ads-designer/agents/openai.yaml +4 -0
  90. package/dist/skills/ads-designer/assets/bootstrap-ds/ADS.md +203 -0
  91. package/dist/skills/ads-designer/assets/bootstrap-ds/README.md +98 -0
  92. package/dist/skills/ads-designer/assets/bootstrap-ds/biome.css.json +21 -0
  93. package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/assets/brand/README.md +28 -0
  94. package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/assets/fonts/.gitkeep +0 -0
  95. package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/components/.gitkeep +0 -0
  96. package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/composition/.gitkeep +0 -0
  97. package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/index.ts +5 -0
  98. package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/patterns/.gitkeep +0 -0
  99. package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/showcase/mcp/index.html +1 -0
  100. package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/showcase/mcp/main.tsx +8 -0
  101. package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/styles.css +5 -0
  102. package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/tokens/Foundation.fixture.ts +47 -0
  103. package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/tokens/Foundation.scenario.tsx +14 -0
  104. package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/tokens/base.css +27 -0
  105. package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/tokens/colors.css +29 -0
  106. package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/tokens/elevation.css +15 -0
  107. package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/tokens/spacing.css +15 -0
  108. package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/tokens/typography.css +13 -0
  109. package/dist/skills/ads-designer/assets/bootstrap-ds/ds.config.json +13 -0
  110. package/dist/skills/ads-designer/assets/bootstrap-ds/gitignore.template +8 -0
  111. package/dist/skills/ads-designer/assets/bootstrap-ds/package-lock.json +4660 -0
  112. package/dist/skills/ads-designer/assets/bootstrap-ds/package.json +41 -0
  113. package/dist/skills/ads-designer/assets/bootstrap-ds/scripts/build-mcp-previews.mjs +33 -0
  114. package/dist/skills/ads-designer/assets/bootstrap-ds/src/vite-env.d.ts +7 -0
  115. package/dist/skills/ads-designer/assets/bootstrap-ds/tsconfig.build.json +12 -0
  116. package/dist/skills/ads-designer/assets/bootstrap-ds/tsconfig.json +20 -0
  117. package/dist/skills/ads-designer/assets/bootstrap-ds/vite.config.ts +21 -0
  118. package/dist/skills/ads-designer/references/cli.md +111 -0
  119. package/dist/skills/ads-designer/references/design-craft.md +65 -0
  120. package/dist/skills/ads-designer/references/mobile.md +73 -0
  121. package/dist/skills/ads-import/SKILL.md +335 -0
  122. package/dist/skills/ads-import/agents/openai.yaml +4 -0
  123. package/dist/skills/ads-import/references/branding.md +44 -0
  124. package/dist/skills/ads-import/references/cli.md +111 -0
  125. package/dist/skills/ads-import/references/implementation.md +111 -0
  126. package/dist/skills/ads-import/references/tokens.md +96 -0
  127. package/dist/skills/ads-motion/LICENSE.upstream +21 -0
  128. package/dist/skills/ads-motion/README.md +22 -0
  129. package/dist/skills/ads-motion/SKILL.md +217 -0
  130. package/dist/skills/ads-motion/agents/openai.yaml +4 -0
  131. package/dist/skills/ads-motion/references/audit.md +44 -0
  132. package/dist/skills/ads-motion/references/build.md +81 -0
  133. package/dist/skills/ads-motion/references/performance.md +55 -0
  134. package/dist/skills/ads-motion/references/review.md +35 -0
  135. package/dist/skills/ads-motion/references/verification.md +39 -0
  136. package/dist/token-policy.mjs +10 -0
  137. package/dist/tokens.mjs +142 -0
  138. package/dist/ui-framework.mjs +59 -0
  139. package/dist/units.mjs +168 -0
  140. package/docs/ADS.md +310 -0
  141. package/docs/ARCHITECTURE.md +311 -0
  142. package/docs/CHANGELOG.md +106 -0
  143. package/docs/GUIDE.md +722 -0
  144. package/docs/MCP.md +690 -0
  145. package/package.json +107 -4
@@ -0,0 +1,98 @@
1
+ # Empty native design system
2
+
3
+ This private React/TypeScript workspace contains semantic CSS tokens, an empty
4
+ public barrel, Linaria extraction and a project preview compiler adapter. It has
5
+ no components, patterns, icons, fonts or example screens. The minimal showcase
6
+ shell and MCP client come from ADS tooling.
7
+
8
+ Read the local [contract](ADS.md) and the
9
+ [architecture](https://github.com/reqvire-org/design-system/blob/main/docs/ARCHITECTURE.md).
10
+
11
+ ## Start
12
+
13
+ Copy the contents of `bootstrap-ds/`, including dotfiles, into a new project.
14
+ The installed `ads-designer` skill contains the same files in
15
+ `assets/bootstrap-ds/`. Set the project name in `package.json`. Use Node 22.12 or
16
+ newer and ADS 0.3 or later for the shared-resource preview compiler.
17
+
18
+ ```sh
19
+ npx @reqvire-org/ads init --framework react
20
+ npm install
21
+ npm run build
22
+ npm run dev:showcase
23
+ ```
24
+
25
+ For unreleased tooling, run init using the real local package:
26
+
27
+ ```sh
28
+ ads_tool_package="/absolute/path/to/reqvire-org-ads-0.3.0.tgz"
29
+ npx --yes --package "$ads_tool_package" ads init --framework react --tool-package "$ads_tool_package"
30
+ npm install
31
+ npm run build
32
+ ```
33
+
34
+ For a new Bun workspace, declare Bun in `packageManager`, omit the copied npm
35
+ lockfile and translate nested npm scripts to `bun run`. Init detects existing
36
+ Bun projects and preserves their scripts/lockfiles. Use `bun install` and
37
+ `bun run build`/`bun run dev:showcase`. The supplied preview watcher launches Node
38
+ directly and runs the project's installed checks.
39
+
40
+ For an existing application, merge only the ADS source and required extraction,
41
+ aliases and preview adapter. Preserve its framework, entry points and build.
42
+ The starter declares `"framework": "react"` in `ds.config.json`. For an existing
43
+ native Preact app without a saved ADS framework, use `ads init --framework preact`.
44
+ Init records that choice and generates native hook imports without migrating the
45
+ app or rewriting its compiler. Subsequent init runs reuse the saved choice.
46
+ Init adds missing foundation files and connects architectural checks; it does
47
+ not configure Linaria or generate component source. Generated `.ds/` files are
48
+ ignored; original artwork and provenance belong in `assets/brand/`.
49
+
50
+ ## Inspect and add UI
51
+
52
+ When an agent already runs `ads mcp`, open its `ads_status.showcaseUrl`. MCP starts
53
+ the website automatically. Otherwise `npm run dev:showcase` runs `ads showcase`.
54
+ Its shell is minimal: tabs, collapsible left menu, theme switch and App slot.
55
+ Its MCP client discovers entries, invokes preview tools and follows notifications.
56
+ There are no required TokensPage/ComponentsPage/PatternsPage/CompositionPage
57
+ files, and no separate project browser app to implement or rebuild.
58
+
59
+ The existing `tokens/Foundation.scenario.tsx` and colocated fixture inspect all
60
+ starter token values. Add/remove fixture names alongside token definitions;
61
+ `ads check` rejects missing coverage and invented names. Styled token samples
62
+ belong to your public review patterns and mount through the same scenario pipeline.
63
+
64
+ Create a component under `design-system/components/`, export it through `@ds`,
65
+ and colocate `Scenario.tsx` plus `fixture.ts` (or `<Owner>.scenario.tsx` and
66
+ `<Owner>.fixture.ts`). Reusable compositions belong under `patterns/`; larger
67
+ scenarios live under `composition/`. Each entry mounts independently with its
68
+ fixture inputs and state/callback adapter. Use public ADS APIs and owned Linaria
69
+ styles, keeping business data/services in the application.
70
+
71
+ `ds.config.json` configures the supplied Vite watcher. It builds all discovered
72
+ scenarios into one shared resource graph on first demand and watches owner code,
73
+ styles, fixtures and assets. The App loads the selected dependency closure and
74
+ reuses unchanged runtime/CSS/font resources across selections. The MCP client
75
+ refreshes successful revisions inside that App; failures show diagnostics and
76
+ stale retained output. Switching or rebuilding a scenario unmounts its previous
77
+ state. `showcase/mcp/main.tsx` exports `mountScenario(Scenario, container)` and
78
+ returns an unmount callback; it is not the shell. Keep the saved `framework`,
79
+ compiler and mount adapter consistent.
80
+
81
+ The application and previews use the same foundation CSS and Linaria pipeline.
82
+ The source barrel loads the foundation once. The private `build:lib` script uses
83
+ Vite library mode plus declarations as a source compile check; this is not a
84
+ published UI library. General CSS checks use pinned Biome; architectural and
85
+ registered component checks come from initialized ADS tooling.
86
+
87
+ Detailed public API, behavior, tokens, tests, credits and notices belong in each
88
+ owner's local README. The starter values and system fonts are defaults; the
89
+ receiving project owns their identity. Import/adapt additional source explicitly
90
+ from a user-selected external repository, preserving revisions and licenses.
91
+
92
+ ## Validation
93
+
94
+ `npm run build` runs lint, type checking and the public-source compile check.
95
+ `npm run build:showcase` optionally prebuilds the shared preview graph; normal
96
+ inspection builds it automatically, then loads selected entries. Browser review
97
+ still checks layout, accessibility, keyboard/focus, states, themes and motion. A clean
98
+ build or delivered HTML alone does not establish those behaviors.
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://biomejs.dev/schemas/2.5.15/schema.json",
3
+ "files": {
4
+ "includes": ["design-system/**/*.css"]
5
+ },
6
+ "formatter": { "enabled": false },
7
+ "assist": { "enabled": false },
8
+ "linter": {
9
+ "enabled": true,
10
+ "rules": {
11
+ "preset": "none",
12
+ "suspicious": {
13
+ "noDuplicateFontNames": "error",
14
+ "noDuplicateProperties": "error"
15
+ },
16
+ "nursery": {
17
+ "noDuplicateSelectors": "error"
18
+ }
19
+ }
20
+ }
21
+ }
@@ -0,0 +1,28 @@
1
+ # Project branding
2
+
3
+ Keep original logos, app icons, and artwork variants here. This starter contains
4
+ no artwork. Record each asset's purpose, suitable backgrounds, usage, source
5
+ credits, and applicable licenses when adding it.
6
+
7
+ UI branding uses the fixed ADS token names in `tokens/`: change values such as
8
+ `--accent`, `--font-sans`, and `--radius-md`. Components own `--ds-*` variables;
9
+ patterns own `--ux-*`; the showcase owns `--showcase-*`. Do not introduce a
10
+ brand-prefixed token vocabulary or override component state variables.
11
+
12
+ Put licensed font files in `assets/fonts/` and their declarations in
13
+ `tokens/fonts.css`. Keep that optional import first in `styles.css`.
14
+
15
+ To generate web icons, set `assets.iconSource` in the project's `ds.config.json`
16
+ to the SVG path relative to the ADS folder, for example:
17
+
18
+ ```json
19
+ { "assets": { "iconSource": "assets/brand/app-icon.svg" } }
20
+ ```
21
+
22
+ After `ads init`, the normal npm or Bun build generates `favicon.svg`,
23
+ `favicon.ico` (16/32/48), `apple-touch-icon.png` (180), `icon-192.png`, and
24
+ `icon-512.png` in ignored `.ds/assets/`. Run `ads assets` to regenerate manually.
25
+ Outputs retain the artwork's colors and transparent background; provide an
26
+ appropriate source background if a platform needs one. Mount this directory
27
+ through the application's existing bundler and keep app manifest metadata in
28
+ the application. Edit the original SVG, never generated variants.
@@ -0,0 +1,5 @@
1
+ // Load local foundation styles; the compile check also extracts dist/styles.css.
2
+ import "./styles.css";
3
+
4
+ // Add public component and pattern exports here as they are implemented.
5
+ export {};
@@ -0,0 +1 @@
1
+ <!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>ADS scenario</title><style>html,body,#root{height:100%}body{overflow:hidden}</style></head><body><div id="root"></div><script type="module" src="./main.tsx"></script></body></html>
@@ -0,0 +1,8 @@
1
+ import { createRoot } from "react-dom/client";
2
+ import type { ComponentType } from "react";
3
+ import "@ds";
4
+ export function mountScenario(Scenario: ComponentType, container: HTMLElement) {
5
+ const root = createRoot(container);
6
+ root.render(<Scenario />);
7
+ return () => root.unmount();
8
+ }
@@ -0,0 +1,5 @@
1
+ @import "./tokens/colors.css";
2
+ @import "./tokens/typography.css";
3
+ @import "./tokens/spacing.css";
4
+ @import "./tokens/elevation.css";
5
+ @import "./tokens/base.css";
@@ -0,0 +1,47 @@
1
+ export const fixture = {
2
+ "title": "Foundation",
3
+ "tokens": [
4
+ "--accent",
5
+ "--accent-fg",
6
+ "--accent-hover",
7
+ "--bg-canvas",
8
+ "--bg-hover",
9
+ "--bg-surface",
10
+ "--border-default",
11
+ "--border-focus",
12
+ "--border-w",
13
+ "--dur-fast",
14
+ "--dur-normal",
15
+ "--ease-standard",
16
+ "--focus-offset",
17
+ "--focus-w",
18
+ "--font-mono",
19
+ "--font-sans",
20
+ "--leading-normal",
21
+ "--leading-tight",
22
+ "--radius-lg",
23
+ "--radius-md",
24
+ "--radius-sm",
25
+ "--shadow-raised",
26
+ "--shadow-xs",
27
+ "--space-0",
28
+ "--space-12",
29
+ "--space-16",
30
+ "--space-2",
31
+ "--space-4",
32
+ "--space-6",
33
+ "--space-8",
34
+ "--text-base",
35
+ "--text-body",
36
+ "--text-inverse",
37
+ "--text-lg",
38
+ "--text-muted",
39
+ "--text-sm",
40
+ "--text-strong",
41
+ "--text-xl",
42
+ "--weight-medium",
43
+ "--weight-normal",
44
+ "--weight-semibold",
45
+ "--z-overlay"
46
+ ]
47
+ } as const;
@@ -0,0 +1,14 @@
1
+ import { useEffect, useState } from "react";
2
+ import { fixture } from "./Foundation.fixture";
3
+ export const scenario = { title: fixture.title, covers: [], tokens: fixture.tokens };
4
+ export default function Scenario() {
5
+ const [values, setValues] = useState<Record<string, string>>({});
6
+ useEffect(() => {
7
+ const read = () => { const style = getComputedStyle(document.documentElement); setValues(Object.fromEntries(fixture.tokens.map(name => [name, style.getPropertyValue(name).trim()]))); };
8
+ read();
9
+ const observer = new MutationObserver(read);
10
+ observer.observe(document.documentElement, {attributes: true, attributeFilter: ["data-theme"]});
11
+ return () => observer.disconnect();
12
+ }, []);
13
+ return <section><h1>{fixture.title}</h1><dl>{fixture.tokens.map(name => <div key={name}><dt><code>{name}</code></dt><dd>{values[name]}</dd></div>)}</dl></section>;
14
+ }
@@ -0,0 +1,27 @@
1
+ *,
2
+ *::before,
3
+ *::after {
4
+ box-sizing: border-box;
5
+ }
6
+
7
+ body {
8
+ margin: var(--space-0);
9
+ background: var(--bg-canvas);
10
+ color: var(--text-body);
11
+ font-family: var(--font-sans);
12
+ font-size: var(--text-sm);
13
+ font-weight: var(--weight-normal);
14
+ line-height: var(--leading-normal);
15
+ }
16
+
17
+ button,
18
+ input,
19
+ select,
20
+ textarea {
21
+ font: inherit;
22
+ }
23
+
24
+ :focus-visible {
25
+ outline: var(--focus-w) solid var(--border-focus);
26
+ outline-offset: var(--focus-offset);
27
+ }
@@ -0,0 +1,29 @@
1
+ :root {
2
+ color-scheme: light;
3
+ --bg-canvas: #faf9f6;
4
+ --bg-surface: #fff;
5
+ --bg-hover: #f1efea;
6
+ --text-strong: #1e293b;
7
+ --text-body: #334155;
8
+ --text-muted: #64748b;
9
+ --text-inverse: #fff;
10
+ --border-default: #d6d3cc;
11
+ --accent: #c62648;
12
+ --accent-hover: #a91c3a;
13
+ --accent-fg: #fff;
14
+ --border-focus: var(--accent);
15
+ }
16
+
17
+ :root[data-theme="dark"] {
18
+ color-scheme: dark;
19
+ --bg-canvas: #17191e;
20
+ --bg-surface: #20232a;
21
+ --bg-hover: #2c3039;
22
+ --text-strong: #f8fafc;
23
+ --text-body: #e2e8f0;
24
+ --text-muted: #94a3b8;
25
+ --border-default: #3b414c;
26
+ --accent: #fb7185;
27
+ --accent-hover: #fda4af;
28
+ --accent-fg: #17191e;
29
+ }
@@ -0,0 +1,15 @@
1
+ :root {
2
+ --shadow-xs: 0 1px 2px rgb(15 23 42 / 8%);
3
+ --shadow-raised: 0 4px 12px rgb(15 23 42 / 12%);
4
+ --dur-fast: 120ms;
5
+ --dur-normal: 200ms;
6
+ --ease-standard: cubic-bezier(0.2, 0, 0, 1);
7
+ --z-overlay: 1000;
8
+ }
9
+
10
+ @media (prefers-reduced-motion: reduce) {
11
+ :root {
12
+ --dur-fast: 0ms;
13
+ --dur-normal: 0ms;
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ :root {
2
+ --space-0: 0;
3
+ --space-2: 4px;
4
+ --space-4: 8px;
5
+ --space-6: 12px;
6
+ --space-8: 16px;
7
+ --space-12: 24px;
8
+ --space-16: 32px;
9
+ --radius-sm: 4px;
10
+ --radius-md: 8px;
11
+ --radius-lg: 12px;
12
+ --border-w: 1px;
13
+ --focus-w: 2px;
14
+ --focus-offset: 2px;
15
+ }
@@ -0,0 +1,13 @@
1
+ :root {
2
+ --font-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
3
+ --font-mono: ui-monospace, "SFMono-Regular", Consolas, monospace;
4
+ --text-sm: 13px;
5
+ --text-base: 14px;
6
+ --text-lg: 17px;
7
+ --text-xl: 21px;
8
+ --weight-normal: 400;
9
+ --weight-medium: 500;
10
+ --weight-semibold: 600;
11
+ --leading-tight: 1.25;
12
+ --leading-normal: 1.5;
13
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "framework": "react",
3
+ "mcp": {
4
+ "previewManifest": ".ds/preview/manifest.json",
5
+ "previewWatch": {
6
+ "command": "node",
7
+ "args": [
8
+ "scripts/build-mcp-previews.mjs",
9
+ "--watch"
10
+ ]
11
+ }
12
+ }
13
+ }
@@ -0,0 +1,8 @@
1
+ node_modules/
2
+ .ds/
3
+ dist/
4
+ dist-showcase/
5
+ .vite/
6
+ coverage/
7
+ *.local
8
+ *.log