@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.
- package/LICENSE +21 -0
- package/README.md +284 -2
- package/dist/assets.mjs +52 -0
- package/dist/bootstrap-ds/ADS.md +203 -0
- package/dist/bootstrap-ds/README.md +98 -0
- package/dist/bootstrap-ds/biome.css.json +21 -0
- package/dist/bootstrap-ds/design-system/assets/brand/README.md +28 -0
- package/dist/bootstrap-ds/design-system/assets/fonts/.gitkeep +0 -0
- package/dist/bootstrap-ds/design-system/components/.gitkeep +0 -0
- package/dist/bootstrap-ds/design-system/composition/.gitkeep +0 -0
- package/dist/bootstrap-ds/design-system/index.ts +5 -0
- package/dist/bootstrap-ds/design-system/patterns/.gitkeep +0 -0
- package/dist/bootstrap-ds/design-system/showcase/mcp/index.html +1 -0
- package/dist/bootstrap-ds/design-system/showcase/mcp/main.tsx +8 -0
- package/dist/bootstrap-ds/design-system/styles.css +5 -0
- package/dist/bootstrap-ds/design-system/tokens/Foundation.fixture.ts +47 -0
- package/dist/bootstrap-ds/design-system/tokens/Foundation.scenario.tsx +14 -0
- package/dist/bootstrap-ds/design-system/tokens/base.css +27 -0
- package/dist/bootstrap-ds/design-system/tokens/colors.css +29 -0
- package/dist/bootstrap-ds/design-system/tokens/elevation.css +15 -0
- package/dist/bootstrap-ds/design-system/tokens/spacing.css +15 -0
- package/dist/bootstrap-ds/design-system/tokens/typography.css +13 -0
- package/dist/bootstrap-ds/ds.config.json +13 -0
- package/dist/bootstrap-ds/gitignore.template +8 -0
- package/dist/bootstrap-ds/package-lock.json +4660 -0
- package/dist/bootstrap-ds/package.json +41 -0
- package/dist/bootstrap-ds/scripts/build-mcp-previews.mjs +33 -0
- package/dist/bootstrap-ds/src/vite-env.d.ts +7 -0
- package/dist/bootstrap-ds/tsconfig.build.json +12 -0
- package/dist/bootstrap-ds/tsconfig.json +20 -0
- package/dist/bootstrap-ds/vite.config.ts +21 -0
- package/dist/boundaries.mjs +130 -0
- package/dist/brand-assets.mjs +82 -0
- package/dist/check.mjs +222 -0
- package/dist/cli.mjs +106 -0
- package/dist/config.mjs +181 -0
- package/dist/contracts/tokens.json +52 -0
- package/dist/html.mjs +30 -0
- package/dist/index.mjs +9 -0
- package/dist/init.mjs +194 -0
- package/dist/lint-config.mjs +40 -0
- package/dist/mcp/THIRD_PARTY_NOTICES.md +786 -0
- package/dist/mcp/apps.mjs +53 -0
- package/dist/mcp/build-status.mjs +164 -0
- package/dist/mcp/catalog.mjs +65 -0
- package/dist/mcp/context.mjs +69 -0
- package/dist/mcp/mutations.mjs +301 -0
- package/dist/mcp/patch.mjs +114 -0
- package/dist/mcp/preview-watch.mjs +169 -0
- package/dist/mcp/preview-widget.bundle.js +113 -0
- package/dist/mcp/project-widget.bundle.js +113 -0
- package/dist/mcp/prompts.mjs +28 -0
- package/dist/mcp/resource-loader.js +138 -0
- package/dist/mcp/sandbox-host.mjs +22 -0
- package/dist/mcp/server.mjs +377 -0
- package/dist/mcp/showcase-host.mjs +68 -0
- package/dist/mcp/skills.mjs +77 -0
- package/dist/mcp/widget.bundle.js +150 -0
- package/dist/oxlint.mjs +81 -0
- package/dist/preview-resources.mjs +198 -0
- package/dist/project-documents.mjs +27 -0
- package/dist/public-props.mjs +74 -0
- package/dist/scenarios-compiler.mjs +287 -0
- package/dist/scenarios-vite.d.mts +3 -0
- package/dist/scenarios-vite.mjs +71 -0
- package/dist/scenarios.mjs +212 -0
- package/dist/showcase/client.bundle.js +127 -0
- package/dist/showcase/index.html +17 -0
- package/dist/showcase/sandbox.js +30 -0
- package/dist/showcase/style.css +7 -0
- package/dist/showcase-coverage.mjs +118 -0
- package/dist/showcase.mjs +77 -0
- package/dist/skills/README.md +68 -0
- package/dist/skills/ads-assimilate/SKILL.md +292 -0
- package/dist/skills/ads-assimilate/agents/openai.yaml +4 -0
- package/dist/skills/ads-assimilate/references/cli.md +111 -0
- package/dist/skills/ads-assimilate/references/lint-and-docs.md +87 -0
- package/dist/skills/ads-assimilate/references/native-implementation.md +98 -0
- package/dist/skills/ads-assimilate/references/testing.md +107 -0
- package/dist/skills/ads-break-ui/LICENSE.upstream +21 -0
- package/dist/skills/ads-break-ui/README.md +16 -0
- package/dist/skills/ads-break-ui/SKILL.md +235 -0
- package/dist/skills/ads-break-ui/agents/openai.yaml +4 -0
- package/dist/skills/ads-break-ui/references/catalog.md +135 -0
- package/dist/skills/ads-break-ui/references/verification.md +48 -0
- package/dist/skills/ads-designer/LICENSE.upstream +21 -0
- package/dist/skills/ads-designer/README.md +19 -0
- package/dist/skills/ads-designer/SKILL.md +400 -0
- package/dist/skills/ads-designer/agents/openai.yaml +4 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/ADS.md +203 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/README.md +98 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/biome.css.json +21 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/assets/brand/README.md +28 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/assets/fonts/.gitkeep +0 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/components/.gitkeep +0 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/composition/.gitkeep +0 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/index.ts +5 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/patterns/.gitkeep +0 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/showcase/mcp/index.html +1 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/showcase/mcp/main.tsx +8 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/styles.css +5 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/tokens/Foundation.fixture.ts +47 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/tokens/Foundation.scenario.tsx +14 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/tokens/base.css +27 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/tokens/colors.css +29 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/tokens/elevation.css +15 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/tokens/spacing.css +15 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/tokens/typography.css +13 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/ds.config.json +13 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/gitignore.template +8 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/package-lock.json +4660 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/package.json +41 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/scripts/build-mcp-previews.mjs +33 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/src/vite-env.d.ts +7 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/tsconfig.build.json +12 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/tsconfig.json +20 -0
- package/dist/skills/ads-designer/assets/bootstrap-ds/vite.config.ts +21 -0
- package/dist/skills/ads-designer/references/cli.md +111 -0
- package/dist/skills/ads-designer/references/design-craft.md +65 -0
- package/dist/skills/ads-designer/references/mobile.md +73 -0
- package/dist/skills/ads-import/SKILL.md +335 -0
- package/dist/skills/ads-import/agents/openai.yaml +4 -0
- package/dist/skills/ads-import/references/branding.md +44 -0
- package/dist/skills/ads-import/references/cli.md +111 -0
- package/dist/skills/ads-import/references/implementation.md +111 -0
- package/dist/skills/ads-import/references/tokens.md +96 -0
- package/dist/skills/ads-motion/LICENSE.upstream +21 -0
- package/dist/skills/ads-motion/README.md +22 -0
- package/dist/skills/ads-motion/SKILL.md +217 -0
- package/dist/skills/ads-motion/agents/openai.yaml +4 -0
- package/dist/skills/ads-motion/references/audit.md +44 -0
- package/dist/skills/ads-motion/references/build.md +81 -0
- package/dist/skills/ads-motion/references/performance.md +55 -0
- package/dist/skills/ads-motion/references/review.md +35 -0
- package/dist/skills/ads-motion/references/verification.md +39 -0
- package/dist/token-policy.mjs +10 -0
- package/dist/tokens.mjs +142 -0
- package/dist/ui-framework.mjs +59 -0
- package/dist/units.mjs +168 -0
- package/docs/ADS.md +310 -0
- package/docs/ARCHITECTURE.md +311 -0
- package/docs/CHANGELOG.md +106 -0
- package/docs/GUIDE.md +722 -0
- package/docs/MCP.md +690 -0
- 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.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -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
|
+
}
|
package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/tokens/Foundation.fixture.ts
ADDED
|
@@ -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;
|
package/dist/skills/ads-designer/assets/bootstrap-ds/design-system/tokens/Foundation.scenario.tsx
ADDED
|
@@ -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
|
+
}
|