@reqvire-org/ads 0.0.0-stage → 0.3.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.
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,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