@ponti-studios/ui 0.4.1 → 0.4.2
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 +17 -5
- package/THIRD_PARTY_NOTICES.md +3 -3
- package/package.json +19 -21
- package/src/components/feedback/alert.tsx +1 -1
- package/src/components/feedback/file-upload-status-badge.tsx +1 -1
- package/src/components/feedback/file-upload-status.tsx +2 -2
- package/src/components/forms/field.tsx +2 -2
- package/src/components/forms/passkey-management.tsx +2 -2
- package/src/components/overlays/dropdown-menu.tsx +1 -1
- package/src/components/primitives/button.tsx +6 -1
- package/src/index.ts +3 -3
- package/src/native/shadows.ts +1 -1
- package/src/native/use-theme-colors.ts +1 -1
- package/src/{styles.css → styles/index.css} +8 -1
- package/src/{tokens → styles/tokens}/chart-colors.stories.tsx +1 -1
- package/src/{tokens → styles/tokens}/color-systems.stories.tsx +1 -1
- package/src/{tokens → styles/tokens}/generated/dark.colors.generated.ts +2 -1
- package/src/{tokens → styles/tokens}/generated/dark.css +2 -1
- package/src/{tokens → styles/tokens}/generated/light.colors.generated.ts +2 -1
- package/src/{tokens → styles/tokens}/generated/light.css +2 -1
- package/src/styles/tokens/scripts/check-foundations.mjs +126 -0
- package/src/styles/tokens/scripts/check-source.mjs +43 -0
- package/src/styles/tokens/source/dark.tokens.json +105 -0
- package/src/styles/tokens/source/foundations.tokens.json +341 -0
- package/src/styles/tokens/source/light.tokens.json +105 -0
- package/src/styles/tokens/style-dictionary.dark-storybook.json +16 -0
- package/src/styles/tokens/style-dictionary.dark.json +21 -0
- package/src/styles/tokens/style-dictionary.foundations.json +21 -0
- package/src/styles/tokens/style-dictionary.light.json +21 -0
- package/src/tokens.css +0 -3
- /package/src/{animations.css → styles/animations.css} +0 -0
- /package/src/{tokens → styles/tokens}/css-vars.ts +0 -0
- /package/src/{tokens → styles/tokens}/foundations.stories.tsx +0 -0
- /package/src/{tokens → styles/tokens}/generated/foundations.css +0 -0
- /package/src/{tokens → styles/tokens}/generated/foundations.generated.ts +0 -0
- /package/src/{tokens → styles/tokens}/index.ts +0 -0
- /package/src/{tokens → styles/tokens}/layout.stories.tsx +0 -0
package/README.md
CHANGED
|
@@ -4,11 +4,23 @@ The canonical Ponti Studios UI package. It is published from this repository to
|
|
|
4
4
|
|
|
5
5
|
## Release
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
2. Merge the change to `main`.
|
|
9
|
-
3. Create and push a matching `ui-v<version>` tag, for example `ui-v0.1.0`.
|
|
7
|
+
Releases are owned by [release-please](https://github.com/googleapis/release-please), not by hand-edited version numbers or manually pushed tags. The workflow is defined once, in `.github/workflows/publish-ui.yml`, and has three jobs:
|
|
10
8
|
|
|
11
|
-
|
|
9
|
+
1. **`release-ui`** — runs on every push to `main`. It scans commits under `packages/ui/` since the last release and keeps a standing pull request, `chore(main): release ui X.Y.Z`, up to date: `packages/ui/package.json`'s `version`, `.release-please-manifest.json`, and `packages/ui/CHANGELOG.md` are all written by this PR, never by a person. **Never hand-edit the `version` field in `packages/ui/package.json`** — the next push will regenerate the release PR from the real commit history and overwrite whatever you set.
|
|
10
|
+
2. **`publish-ui`** — gated on `release-ui`'s `release_created` output, i.e. it only runs the push immediately after the release PR is *merged*. Merging that PR is what creates the `ui-v<version>` tag and triggers this job. It checks out that exact tag, re-verifies the tag matches `package.json`'s version and `HEAD`, runs `npm publish --provenance --access public`, then confirms the version resolves on the registry.
|
|
11
|
+
3. **`publish-ui-manual`** — a `workflow_dispatch` break-glass path that checks out an arbitrary ref and publishes whatever version is in `package.json` there, with none of `publish-ui`'s tag/version consistency checks. Only use this to recover from a `publish-ui` run that failed for a reason unrelated to versioning (e.g. a broken `prepack` step) after a real release PR already merged — never as a way to skip release-please.
|
|
12
|
+
|
|
13
|
+
**So the actual release flow is:**
|
|
14
|
+
|
|
15
|
+
1. Land commits under `packages/ui/` using [Conventional Commits](https://www.conventionalcommits.org/) — the version bump is computed from the commit type: `fix:` → patch, `feat:` → minor, `feat!:`/a `BREAKING CHANGE:` footer → major. This is the *only* way to control the bump; there is no manual override.
|
|
16
|
+
2. Once on `main`, find or wait for the `chore(main): release ui X.Y.Z` PR that `release-ui` opens/updates.
|
|
17
|
+
3. Review and merge it. That merge creates the `ui-v<version>` tag and triggers `publish-ui` automatically. Nothing further to push or tag by hand.
|
|
18
|
+
|
|
19
|
+
`prepack` (`tokens:check && check:source && typecheck`) runs as part of `pnpm install`/publish tooling and is the last gate before anything reaches npm — see "Generated files" below for the failure mode that most commonly trips it.
|
|
20
|
+
|
|
21
|
+
### Generated files must never be hand-edited
|
|
22
|
+
|
|
23
|
+
`src/styles/tokens/generated/**` and `.storybook/generated/**` are produced only by `pnpm run tokens:build` (style-dictionary) from the DTCG source in `src/styles/tokens/source/*.tokens.json`. `tokens:check` enforces this with `git diff --exit-code -- src/styles/tokens/generated` after a fresh rebuild — if the committed file doesn't byte-for-byte match what the tool just produced, the check (and therefore `prepack` and the publish) fails. This has happened in practice when a repo-wide formatter (oxfmt) reformatted a generated CSS file directly; `.oxfmtrc.json`'s `ignorePatterns` now excludes both generated directories specifically to prevent that recurring. If `tokens:check` fails on a file you didn't intend to touch, run `pnpm run tokens:build` and commit the regenerated output — don't hand-format it back into place.
|
|
12
24
|
|
|
13
25
|
## Consumers
|
|
14
26
|
|
|
@@ -28,7 +40,7 @@ CI consumers should use a secret-backed npm token with read access.
|
|
|
28
40
|
|
|
29
41
|
### Ships TypeScript source, not a bundle
|
|
30
42
|
|
|
31
|
-
This package has no build output — every `exports` entry resolves to a file under `src/`. Consumers are expected to transpile the package themselves (Vite, Metro, Next, etc. all do this for workspace/npm packages by default).
|
|
43
|
+
This package has no build output — every `exports` entry resolves to a file under `src/`. Consumers are expected to transpile the package themselves (Vite, Metro, Next, etc. all do this for workspace/npm packages by default). Tailwind v4 class detection for consumers of `./styles.css` requires an `@source` directive pointing at the installed package's `src/`, e.g.
|
|
32
44
|
|
|
33
45
|
```css
|
|
34
46
|
@source "../../../node_modules/@ponti-studios/ui/src";
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Adobe Spectrum Tokens
|
|
4
4
|
|
|
5
|
-
The light and dark color snapshots in `src/tokens/generated/*colors.generated.ts`
|
|
5
|
+
The light and dark color snapshots in `src/styles/tokens/generated/*colors.generated.ts`
|
|
6
6
|
are derived from Adobe Spectrum Tokens 14.15.0. Spectrum Tokens is distributed
|
|
7
7
|
under the Apache License 2.0.
|
|
8
8
|
|
|
@@ -10,8 +10,8 @@ Source: https://github.com/adobe/spectrum-tokens
|
|
|
10
10
|
|
|
11
11
|
## Tailwind CSS
|
|
12
12
|
|
|
13
|
-
The non-color foundations in `src/tokens/generated/foundations.generated.ts`
|
|
14
|
-
and `src/tokens/generated/foundations.css` match the Tailwind CSS 4.3.3 default
|
|
13
|
+
The non-color foundations in `src/styles/tokens/generated/foundations.generated.ts`
|
|
14
|
+
and `src/styles/tokens/generated/foundations.css` match the Tailwind CSS 4.3.3 default
|
|
15
15
|
theme. Tailwind CSS is distributed under the MIT License.
|
|
16
16
|
|
|
17
17
|
Source: https://github.com/tailwindlabs/tailwindcss
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ponti-studios/ui",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Shared UI component library for ponti-studios labs",
|
|
6
6
|
"license": "MIT",
|
|
@@ -9,19 +9,14 @@
|
|
|
9
9
|
"url": "git+https://github.com/ponti-studios/labs.git",
|
|
10
10
|
"directory": "packages/ui"
|
|
11
11
|
},
|
|
12
|
-
"publishConfig": {
|
|
13
|
-
"registry": "https://registry.npmjs.org",
|
|
14
|
-
"access": "public"
|
|
15
|
-
},
|
|
16
12
|
"files": [
|
|
17
13
|
"src",
|
|
18
14
|
"THIRD_PARTY_NOTICES.md"
|
|
19
15
|
],
|
|
20
16
|
"type": "module",
|
|
21
17
|
"sideEffects": [
|
|
22
|
-
"./src/styles.css",
|
|
23
|
-
"./src/
|
|
24
|
-
"./src/animations.css"
|
|
18
|
+
"./src/styles/index.css",
|
|
19
|
+
"./src/styles/animations.css"
|
|
25
20
|
],
|
|
26
21
|
"exports": {
|
|
27
22
|
".": {
|
|
@@ -61,12 +56,12 @@
|
|
|
61
56
|
"import": "./src/lib/index.ts"
|
|
62
57
|
},
|
|
63
58
|
"./tokens": {
|
|
64
|
-
"types": "./src/tokens/index.ts",
|
|
65
|
-
"import": "./src/tokens/index.ts"
|
|
59
|
+
"types": "./src/styles/tokens/index.ts",
|
|
60
|
+
"import": "./src/styles/tokens/index.ts"
|
|
66
61
|
},
|
|
67
62
|
"./tokens/css-vars": {
|
|
68
|
-
"types": "./src/tokens/css-vars.ts",
|
|
69
|
-
"import": "./src/tokens/css-vars.ts"
|
|
63
|
+
"types": "./src/styles/tokens/css-vars.ts",
|
|
64
|
+
"import": "./src/styles/tokens/css-vars.ts"
|
|
70
65
|
},
|
|
71
66
|
"./native": {
|
|
72
67
|
"types": "./src/native/index.ts",
|
|
@@ -76,18 +71,21 @@
|
|
|
76
71
|
"types": "./src/hooks/index.ts",
|
|
77
72
|
"import": "./src/hooks/index.ts"
|
|
78
73
|
},
|
|
79
|
-
"./styles.css": "./src/styles.css",
|
|
80
|
-
"./
|
|
81
|
-
|
|
74
|
+
"./styles.css": "./src/styles/index.css",
|
|
75
|
+
"./animations.css": "./src/styles/animations.css"
|
|
76
|
+
},
|
|
77
|
+
"publishConfig": {
|
|
78
|
+
"access": "public",
|
|
79
|
+
"registry": "https://registry.npmjs.org"
|
|
82
80
|
},
|
|
83
81
|
"scripts": {
|
|
84
82
|
"build": "tsc --noEmit",
|
|
85
83
|
"dev": "vite",
|
|
86
|
-
"storybook": "style-dictionary build --config style-dictionary.dark-storybook.json && storybook dev -p 6006",
|
|
87
|
-
"check:source": "node tokens/check-source.mjs",
|
|
84
|
+
"storybook": "style-dictionary build --config src/styles/tokens/style-dictionary.dark-storybook.json && storybook dev -p 6006",
|
|
85
|
+
"check:source": "node src/styles/tokens/scripts/check-source.mjs",
|
|
88
86
|
"test:a11y": "vitest --run --config vitest.config.ts",
|
|
89
|
-
"tokens:build": "style-dictionary build --config style-dictionary.foundations.json && style-dictionary build --config style-dictionary.light.json && style-dictionary build --config style-dictionary.dark.json && style-dictionary build --config style-dictionary.dark-storybook.json",
|
|
90
|
-
"tokens:check": "pnpm run tokens:build && node tokens/check-foundations.mjs && git diff --exit-code -- src/tokens/generated",
|
|
87
|
+
"tokens:build": "style-dictionary build --config src/styles/tokens/style-dictionary.foundations.json && style-dictionary build --config src/styles/tokens/style-dictionary.light.json && style-dictionary build --config src/styles/tokens/style-dictionary.dark.json && style-dictionary build --config src/styles/tokens/style-dictionary.dark-storybook.json",
|
|
88
|
+
"tokens:check": "pnpm run tokens:build && node src/styles/tokens/scripts/check-foundations.mjs && git diff --exit-code -- src/styles/tokens/generated",
|
|
91
89
|
"typecheck": "tsc --noEmit",
|
|
92
90
|
"lint": "oxlint src --fix",
|
|
93
91
|
"format": "oxfmt src --write",
|
|
@@ -137,7 +135,6 @@
|
|
|
137
135
|
"react-dom": "^18.2.0 || ^19.0.0",
|
|
138
136
|
"react-native": ">=0.74"
|
|
139
137
|
},
|
|
140
|
-
"packageManager": "pnpm@10.30.3",
|
|
141
138
|
"peerDependenciesMeta": {
|
|
142
139
|
"react-dom": {
|
|
143
140
|
"optional": true
|
|
@@ -145,5 +142,6 @@
|
|
|
145
142
|
"react-native": {
|
|
146
143
|
"optional": true
|
|
147
144
|
}
|
|
148
|
-
}
|
|
145
|
+
},
|
|
146
|
+
"packageManager": "pnpm@10.30.3"
|
|
149
147
|
}
|
|
@@ -10,7 +10,7 @@ const alertVariants = cva(
|
|
|
10
10
|
variant: {
|
|
11
11
|
default: "bg-card text-card-foreground",
|
|
12
12
|
destructive:
|
|
13
|
-
"border-destructive/50 text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive
|
|
13
|
+
"border-destructive/50 text-destructive-text bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive-text",
|
|
14
14
|
},
|
|
15
15
|
},
|
|
16
16
|
defaultVariants: {
|
|
@@ -9,7 +9,7 @@ const STATUS_CONFIG: Record<FileUploadStatusValue, { bg: string; text: string; l
|
|
|
9
9
|
processing: { bg: "bg-muted", text: "text-foreground", label: "Processing" },
|
|
10
10
|
queued: { bg: "bg-secondary", text: "text-secondary-foreground", label: "Queued" },
|
|
11
11
|
done: { bg: "bg-muted", text: "text-muted-foreground", label: "Complete" },
|
|
12
|
-
error: { bg: "bg-destructive/10", text: "text-destructive", label: "Error" },
|
|
12
|
+
error: { bg: "bg-destructive/10", text: "text-destructive-text", label: "Error" },
|
|
13
13
|
};
|
|
14
14
|
|
|
15
15
|
export const FileUploadStatusBadge = memo(function FileUploadStatusBadge({
|
|
@@ -86,7 +86,7 @@ export const FileUploadStatus = memo(function FileUploadStatus({
|
|
|
86
86
|
if (status === "error") {
|
|
87
87
|
return (
|
|
88
88
|
<output className="mt-2" role="alert">
|
|
89
|
-
<div className="bg-destructive/10 text-destructive flex items-start gap-2 p-3">
|
|
89
|
+
<div className="bg-destructive/10 text-destructive-text flex items-start gap-2 p-3">
|
|
90
90
|
<XIcon className="mt-0.5 h-5 w-5 flex-shrink-0" aria-hidden="true" />
|
|
91
91
|
<span className="text-sm">{error}</span>
|
|
92
92
|
</div>
|
|
@@ -125,7 +125,7 @@ const ProcessingStats = memo(function ProcessingStats({ stats }: { stats: FileUp
|
|
|
125
125
|
<div className="py-2">
|
|
126
126
|
<dt className="text-foreground text-sm font-medium">Errors</dt>
|
|
127
127
|
<dd className="mt-1">
|
|
128
|
-
<span className="bg-destructive/10 text-destructive inline-flex items-center px-2 py-1 text-xs font-medium">
|
|
128
|
+
<span className="bg-destructive/10 text-destructive-text inline-flex items-center px-2 py-1 text-xs font-medium">
|
|
129
129
|
{stats.errors.length} error{stats.errors.length > 1 ? "s" : ""}
|
|
130
130
|
</span>
|
|
131
131
|
</dd>
|
|
@@ -30,7 +30,7 @@ function Field({ label, helpText, error, required, children, id: externalId }: F
|
|
|
30
30
|
htmlFor={id}
|
|
31
31
|
className={cn(
|
|
32
32
|
"text-foreground text-sm font-medium",
|
|
33
|
-
required && "after:text-destructive after:ml-0.5 after:content-['*']",
|
|
33
|
+
required && "after:text-destructive-text after:ml-0.5 after:content-['*']",
|
|
34
34
|
)}
|
|
35
35
|
>
|
|
36
36
|
{label}
|
|
@@ -50,7 +50,7 @@ function Field({ label, helpText, error, required, children, id: externalId }: F
|
|
|
50
50
|
: children}
|
|
51
51
|
|
|
52
52
|
{error ? (
|
|
53
|
-
<p id={errorId} role="alert" className="text-destructive text-sm">
|
|
53
|
+
<p id={errorId} role="alert" className="text-destructive-text text-sm">
|
|
54
54
|
{error}
|
|
55
55
|
</p>
|
|
56
56
|
) : helpText ? (
|
|
@@ -90,7 +90,7 @@ export function PasskeyManagement({
|
|
|
90
90
|
</div>
|
|
91
91
|
|
|
92
92
|
{error ? (
|
|
93
|
-
<p role="alert" className="text-destructive text-sm">
|
|
93
|
+
<p role="alert" className="text-destructive-text text-sm">
|
|
94
94
|
{error}
|
|
95
95
|
</p>
|
|
96
96
|
) : null}
|
|
@@ -125,7 +125,7 @@ export function PasskeyManagement({
|
|
|
125
125
|
onClick={() => void handleDelete(pk.id)}
|
|
126
126
|
disabled={deletingId === pk.id}
|
|
127
127
|
aria-label={`Remove passkey ${pk.name ?? pk.id}`}
|
|
128
|
-
className="hover:text-destructive text-muted-foreground focus-visible:ring-ring rounded-sm focus-visible:ring-2 focus-visible:outline-none disabled:opacity-50"
|
|
128
|
+
className="hover:text-destructive-text text-muted-foreground focus-visible:ring-ring rounded-sm focus-visible:ring-2 focus-visible:outline-none disabled:opacity-50"
|
|
129
129
|
>
|
|
130
130
|
<Trash2 className="size-4" aria-hidden />
|
|
131
131
|
</button>
|
|
@@ -88,7 +88,7 @@ function DropdownMenuItem({
|
|
|
88
88
|
data-inset={inset}
|
|
89
89
|
data-variant={variant}
|
|
90
90
|
className={cn(
|
|
91
|
-
"data-highlighted:bg-muted data-highlighted:text-muted-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:data-highlighted:bg-destructive/10 relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
91
|
+
"data-highlighted:bg-muted data-highlighted:text-muted-foreground data-[variant=destructive]:text-destructive-text data-[variant=destructive]:data-highlighted:bg-destructive/10 relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
92
92
|
className,
|
|
93
93
|
)}
|
|
94
94
|
{...props}
|
|
@@ -49,6 +49,10 @@ const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
|
|
|
49
49
|
variant,
|
|
50
50
|
size,
|
|
51
51
|
asChild = false,
|
|
52
|
+
// Defaults to "button" — same safe default the native element loses
|
|
53
|
+
// once it's rendered inside a <form> — but must stay overridable so
|
|
54
|
+
// consumers can pass type="submit"/"reset".
|
|
55
|
+
type = "button",
|
|
52
56
|
"aria-label": ariaLabel,
|
|
53
57
|
...props
|
|
54
58
|
},
|
|
@@ -75,6 +79,7 @@ const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
|
|
|
75
79
|
return (
|
|
76
80
|
<BaseButton
|
|
77
81
|
{...props}
|
|
82
|
+
type={type}
|
|
78
83
|
render={renderedChild}
|
|
79
84
|
nativeButton={false}
|
|
80
85
|
className={cn(buttonVariants({ variant, size, className }), isLoading && "relative")}
|
|
@@ -93,7 +98,7 @@ const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
|
|
|
93
98
|
...props.style,
|
|
94
99
|
cursor: disabled || isLoading ? "default" : "pointer",
|
|
95
100
|
}}
|
|
96
|
-
type=
|
|
101
|
+
type={type}
|
|
97
102
|
ref={ref}
|
|
98
103
|
disabled={disabled || isLoading}
|
|
99
104
|
aria-busy={isLoading}
|
package/src/index.ts
CHANGED
|
@@ -9,7 +9,7 @@ export { normalizeOtp, OTP_LENGTH } from "./lib/auth";
|
|
|
9
9
|
export { copyToClipboard } from "./lib/clipboard";
|
|
10
10
|
export { createMemoryStorage } from "./lib/create-memory-storage";
|
|
11
11
|
export { cn } from "./lib/utils";
|
|
12
|
-
export { colors } from "./tokens/css-vars";
|
|
12
|
+
export { colors } from "./styles/tokens/css-vars";
|
|
13
13
|
export {
|
|
14
14
|
animations,
|
|
15
15
|
colorThemes,
|
|
@@ -29,7 +29,7 @@ export {
|
|
|
29
29
|
transitionDurations,
|
|
30
30
|
breakpoints,
|
|
31
31
|
zIndices,
|
|
32
|
-
} from "./tokens/index";
|
|
32
|
+
} from "./styles/tokens/index";
|
|
33
33
|
export type {
|
|
34
34
|
ColorMode,
|
|
35
35
|
ColorTheme,
|
|
@@ -41,4 +41,4 @@ export type {
|
|
|
41
41
|
SpacingToken,
|
|
42
42
|
TextSizeToken,
|
|
43
43
|
TrackingToken,
|
|
44
|
-
} from "./tokens/index";
|
|
44
|
+
} from "./styles/tokens/index";
|
package/src/native/shadows.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useColorScheme } from "react-native";
|
|
2
2
|
|
|
3
|
-
import { colorThemes, type ColorMode, type ColorTheme } from "../tokens";
|
|
3
|
+
import { colorThemes, type ColorMode, type ColorTheme } from "../styles/tokens/index";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Resolves the active color mode from the OS appearance setting.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
@import "tailwindcss";
|
|
2
|
-
@import "./tokens.css";
|
|
2
|
+
@import "./tokens/generated/foundations.css";
|
|
3
|
+
@import "./tokens/generated/light.css";
|
|
4
|
+
@import "./tokens/generated/dark.css" (prefers-color-scheme: dark);
|
|
3
5
|
@import "./animations.css";
|
|
4
6
|
|
|
5
7
|
/* shadcn New York semantic contract. Values are generated from the DTCG
|
|
@@ -21,6 +23,11 @@
|
|
|
21
23
|
--color-accent-foreground: var(--primary-foreground);
|
|
22
24
|
--color-destructive: var(--destructive);
|
|
23
25
|
--color-destructive-foreground: var(--destructive-foreground);
|
|
26
|
+
/* Distinct from --color-destructive: that pairs with white for solid
|
|
27
|
+
* backgrounds (buttons, badges) and is the same value in both themes.
|
|
28
|
+
* This pairs with the page background for standalone text (error
|
|
29
|
+
* messages, alert copy) and must differ per theme to stay AA-compliant. */
|
|
30
|
+
--color-destructive-text: var(--text-destructive);
|
|
24
31
|
--color-success: var(--success);
|
|
25
32
|
--color-warning: var(--warning);
|
|
26
33
|
--color-border: var(--border-default);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Meta, StoryObj } from "@storybook/react-vite";
|
|
2
2
|
|
|
3
|
-
import { CHART_CSS_VARS } from "
|
|
3
|
+
import { CHART_CSS_VARS } from "../../constants/chart-colors";
|
|
4
4
|
|
|
5
5
|
const meta: Meta = { title: "Foundations/Charts", parameters: { layout: "fullscreen" } };
|
|
6
6
|
export default meta;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Meta, StoryObj } from "@storybook/react-vite";
|
|
2
2
|
|
|
3
|
-
import { Button } from "
|
|
3
|
+
import { Button } from "../../components/primitives/button";
|
|
4
4
|
import { colorTokenNames } from "./index";
|
|
5
5
|
|
|
6
6
|
const meta: Meta = { title: "Foundations/Colors", parameters: { layout: "fullscreen" } };
|
|
@@ -11,11 +11,12 @@ export default {
|
|
|
11
11
|
"text-secondary": "#b0b4ba",
|
|
12
12
|
tertiary: "#777b84",
|
|
13
13
|
primary: "#3e63dd",
|
|
14
|
-
destructive: "#
|
|
14
|
+
destructive: "#ce2c31",
|
|
15
15
|
success: "#30a46c",
|
|
16
16
|
warning: "#ffc53d",
|
|
17
17
|
"primary-foreground": "#ffffff",
|
|
18
18
|
"destructive-foreground": "#ffffff",
|
|
19
|
+
"text-destructive": "#ff9592",
|
|
19
20
|
"border-default": "#43484e",
|
|
20
21
|
"focus-ring": "#3e63dd",
|
|
21
22
|
"chart-1": "#3e63dd",
|
|
@@ -11,11 +11,12 @@
|
|
|
11
11
|
--text-secondary: #b0b4ba;
|
|
12
12
|
--tertiary: #777b84;
|
|
13
13
|
--primary: #3e63dd;
|
|
14
|
-
--destructive: #
|
|
14
|
+
--destructive: #ce2c31;
|
|
15
15
|
--success: #30a46c;
|
|
16
16
|
--warning: #ffc53d;
|
|
17
17
|
--primary-foreground: #ffffff;
|
|
18
18
|
--destructive-foreground: #ffffff;
|
|
19
|
+
--text-destructive: #ff9592;
|
|
19
20
|
--border-default: #43484e;
|
|
20
21
|
--focus-ring: #3e63dd;
|
|
21
22
|
--chart-1: #3e63dd;
|
|
@@ -11,11 +11,12 @@ export default {
|
|
|
11
11
|
"text-secondary": "#60646c",
|
|
12
12
|
tertiary: "#80838d",
|
|
13
13
|
primary: "#3e63dd",
|
|
14
|
-
destructive: "#
|
|
14
|
+
destructive: "#ce2c31",
|
|
15
15
|
success: "#30a46c",
|
|
16
16
|
warning: "#ffc53d",
|
|
17
17
|
"primary-foreground": "#ffffff",
|
|
18
18
|
"destructive-foreground": "#ffffff",
|
|
19
|
+
"text-destructive": "#c82c31",
|
|
19
20
|
"border-default": "#cdced6",
|
|
20
21
|
"focus-ring": "#3e63dd",
|
|
21
22
|
"chart-1": "#3e63dd",
|
|
@@ -11,11 +11,12 @@
|
|
|
11
11
|
--text-secondary: #60646c;
|
|
12
12
|
--tertiary: #80838d;
|
|
13
13
|
--primary: #3e63dd;
|
|
14
|
-
--destructive: #
|
|
14
|
+
--destructive: #ce2c31;
|
|
15
15
|
--success: #30a46c;
|
|
16
16
|
--warning: #ffc53d;
|
|
17
17
|
--primary-foreground: #ffffff;
|
|
18
18
|
--destructive-foreground: #ffffff;
|
|
19
|
+
--text-destructive: #c82c31;
|
|
19
20
|
--border-default: #cdced6;
|
|
20
21
|
--focus-ring: #3e63dd;
|
|
21
22
|
--chart-1: #3e63dd;
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
|
|
4
|
+
const require = createRequire(import.meta.url);
|
|
5
|
+
const tailwindTheme = require.resolve("tailwindcss/theme.css");
|
|
6
|
+
const tailwind = readFileSync(tailwindTheme, "utf8");
|
|
7
|
+
const sourceTokens = JSON.parse(
|
|
8
|
+
readFileSync(new URL("../source/foundations.tokens.json", import.meta.url), "utf8"),
|
|
9
|
+
);
|
|
10
|
+
const generated = readFileSync(new URL("../generated/foundations.css", import.meta.url), "utf8");
|
|
11
|
+
|
|
12
|
+
const declarations = (css) =>
|
|
13
|
+
[...css.matchAll(/(--[\w-]+):\s*([^;]+);/g)].map(([, name, value]) => [name, value.trim()]);
|
|
14
|
+
const expected = declarations(tailwind);
|
|
15
|
+
const actual = declarations(generated);
|
|
16
|
+
const failures = [];
|
|
17
|
+
const normalize = (value) =>
|
|
18
|
+
value
|
|
19
|
+
.replaceAll(/\b0px\b/g, "0")
|
|
20
|
+
.replaceAll(/ 0 0 (rgb\()/g, " $1")
|
|
21
|
+
.replaceAll(/\s+/g, " ")
|
|
22
|
+
.trim();
|
|
23
|
+
const expectedValues = new Map(expected);
|
|
24
|
+
const generatedNames = new Set();
|
|
25
|
+
|
|
26
|
+
const requiredNames = [
|
|
27
|
+
"--spacing",
|
|
28
|
+
"--font-sans",
|
|
29
|
+
"--font-serif",
|
|
30
|
+
"--font-mono",
|
|
31
|
+
...[
|
|
32
|
+
"xs",
|
|
33
|
+
"sm",
|
|
34
|
+
"base",
|
|
35
|
+
"lg",
|
|
36
|
+
"xl",
|
|
37
|
+
"2xl",
|
|
38
|
+
"3xl",
|
|
39
|
+
"4xl",
|
|
40
|
+
"5xl",
|
|
41
|
+
"6xl",
|
|
42
|
+
"7xl",
|
|
43
|
+
"8xl",
|
|
44
|
+
"9xl",
|
|
45
|
+
].flatMap((name) => [`--text-${name}`, `--text-line-height-${name}`]),
|
|
46
|
+
...[
|
|
47
|
+
"thin",
|
|
48
|
+
"extralight",
|
|
49
|
+
"light",
|
|
50
|
+
"normal",
|
|
51
|
+
"medium",
|
|
52
|
+
"semibold",
|
|
53
|
+
"bold",
|
|
54
|
+
"extrabold",
|
|
55
|
+
"black",
|
|
56
|
+
].map((name) => `--font-weight-${name}`),
|
|
57
|
+
...["tighter", "tight", "normal", "wide", "wider", "widest"].map((name) => `--tracking-${name}`),
|
|
58
|
+
...["tight", "snug", "normal", "relaxed", "loose"].map((name) => `--leading-${name}`),
|
|
59
|
+
...["xs", "sm", "md", "lg", "xl", "2xl", "3xl", "4xl", "full"].map((name) => `--radius-${name}`),
|
|
60
|
+
...["2xs", "xs", "sm", "md", "lg", "xl", "2xl", "none"].map((name) => `--shadow-${name}`),
|
|
61
|
+
...["sm", "md", "lg", "xl", "2xl"].map((name) => `--breakpoint-${name}`),
|
|
62
|
+
...["3xs", "2xs", "xs", "sm", "md", "lg", "xl", "2xl", "3xl", "4xl", "5xl", "6xl", "7xl"].map(
|
|
63
|
+
(name) => `--container-${name}`,
|
|
64
|
+
),
|
|
65
|
+
...["auto", "0", "10", "20", "30", "40", "50"].map((name) => `--z-index-${name}`),
|
|
66
|
+
...["in", "out", "in-out"].map((name) => `--ease-${name}`),
|
|
67
|
+
...["75", "100", "150", "200", "300", "500", "700", "1000"].map((name) => `--duration-${name}`),
|
|
68
|
+
...["spin", "ping", "pulse", "bounce"].map((name) => `--animate-${name}`),
|
|
69
|
+
];
|
|
70
|
+
|
|
71
|
+
const sourceNames = new Set();
|
|
72
|
+
const collectSourceNames = (node, path = []) => {
|
|
73
|
+
if (!node || typeof node !== "object") return;
|
|
74
|
+
if (Object.hasOwn(node, "$value")) {
|
|
75
|
+
sourceNames.add(`--${path.join("-")}`);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
for (const [key, value] of Object.entries(node)) {
|
|
79
|
+
if (!key.startsWith("$")) collectSourceNames(value, [...path, key]);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
collectSourceNames(sourceTokens);
|
|
83
|
+
|
|
84
|
+
// Font families use our own system-ui stack ordering rather than Tailwind's
|
|
85
|
+
// exact default wording — every other foundation name is meant to stay
|
|
86
|
+
// aligned with Tailwind's own scale, but font-* is exempt from that check.
|
|
87
|
+
const brandOverrideNames = new Set(["--font-sans", "--font-serif", "--font-mono"]);
|
|
88
|
+
|
|
89
|
+
for (const [name, value] of actual) {
|
|
90
|
+
if (generatedNames.has(name)) failures.push(`duplicate generated foundation variable: ${name}`);
|
|
91
|
+
generatedNames.add(name);
|
|
92
|
+
|
|
93
|
+
if (brandOverrideNames.has(name)) continue;
|
|
94
|
+
|
|
95
|
+
const tailwindValue = expectedValues.get(name);
|
|
96
|
+
if (tailwindValue !== undefined && normalize(value) !== normalize(tailwindValue)) {
|
|
97
|
+
failures.push(`${name}: generated ${value}; Tailwind ${tailwindValue}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
for (const name of requiredNames) {
|
|
102
|
+
if (!generatedNames.has(name))
|
|
103
|
+
failures.push(`required Tailwind foundation variable is missing: ${name}`);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
for (const name of sourceNames) {
|
|
107
|
+
if (!generatedNames.has(name)) failures.push(`missing generated foundation variable: ${name}`);
|
|
108
|
+
}
|
|
109
|
+
for (const name of generatedNames) {
|
|
110
|
+
if (!sourceNames.has(name))
|
|
111
|
+
failures.push(`generated foundation variable has no source token: ${name}`);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (/--[\w-]+:\s*var\(--[\w-]+\)/.test(generated))
|
|
115
|
+
failures.push("generated foundations contain a custom-property alias");
|
|
116
|
+
if (/--tracking-[\w-]+:\s*-?\d+(?:\.\d+)?\s*;/.test(generated))
|
|
117
|
+
failures.push("tracking values must carry a CSS unit");
|
|
118
|
+
|
|
119
|
+
if (failures.length) {
|
|
120
|
+
console.error(failures.join("\n"));
|
|
121
|
+
process.exit(1);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
console.log(
|
|
125
|
+
`Foundation conformance passed (${actual.length} generated variables; ${expectedValues.size} Tailwind variables available for comparison).`,
|
|
126
|
+
);
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { fileURLToPath } from "node:url";
|
|
2
|
+
import { readdirSync, readFileSync, statSync } from "node:fs";
|
|
3
|
+
import { join, relative } from "node:path";
|
|
4
|
+
|
|
5
|
+
const sourceDirectory = fileURLToPath(new URL("../../../", import.meta.url));
|
|
6
|
+
const sourceFiles = [];
|
|
7
|
+
|
|
8
|
+
function collectFiles(directory) {
|
|
9
|
+
for (const entry of readdirSync(directory)) {
|
|
10
|
+
const path = join(directory, entry);
|
|
11
|
+
if (entry === "generated" && statSync(path).isDirectory()) continue;
|
|
12
|
+
if (statSync(path).isDirectory()) collectFiles(path);
|
|
13
|
+
else if (/\.(css|ts|tsx)$/.test(entry)) sourceFiles.push(path);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
collectFiles(sourceDirectory);
|
|
18
|
+
|
|
19
|
+
const checks = [
|
|
20
|
+
{ name: "Radix imports", pattern: /@radix-ui\// },
|
|
21
|
+
{ name: "legacy semantic utility classes", pattern: /(?:\bbg-canvas\b|\bborder-default\b)/ },
|
|
22
|
+
{
|
|
23
|
+
name: "invalid shadcn semantic classes",
|
|
24
|
+
pattern: /(?:text|bg|border)-foreground-foreground\b/,
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
const failures = [];
|
|
28
|
+
|
|
29
|
+
for (const file of sourceFiles) {
|
|
30
|
+
const source = readFileSync(file, "utf8");
|
|
31
|
+
for (const check of checks) {
|
|
32
|
+
if (check.name === "legacy semantic utility classes" && file.endsWith(".css")) continue;
|
|
33
|
+
if (check.pattern.test(source))
|
|
34
|
+
failures.push(`${check.name}: ${relative(sourceDirectory, file)}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (failures.length > 0) {
|
|
39
|
+
console.error(failures.join("\n"));
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
console.log(`Source contract passed (${sourceFiles.length} source files checked).`);
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$extensions": {
|
|
3
|
+
"org.ponti.license": "MIT"
|
|
4
|
+
},
|
|
5
|
+
"background": {
|
|
6
|
+
"$type": "color",
|
|
7
|
+
"$value": "rgb(17, 17, 19)"
|
|
8
|
+
},
|
|
9
|
+
"card": {
|
|
10
|
+
"$type": "color",
|
|
11
|
+
"$value": "rgb(24, 25, 27)"
|
|
12
|
+
},
|
|
13
|
+
"popover": {
|
|
14
|
+
"$type": "color",
|
|
15
|
+
"$value": "rgb(33, 34, 37)"
|
|
16
|
+
},
|
|
17
|
+
"muted": {
|
|
18
|
+
"$type": "color",
|
|
19
|
+
"$value": "rgb(24, 25, 27)"
|
|
20
|
+
},
|
|
21
|
+
"text-primary": {
|
|
22
|
+
"$type": "color",
|
|
23
|
+
"$value": "rgb(237, 238, 240)"
|
|
24
|
+
},
|
|
25
|
+
"text-secondary": {
|
|
26
|
+
"$type": "color",
|
|
27
|
+
"$value": "rgb(176, 180, 186)"
|
|
28
|
+
},
|
|
29
|
+
"tertiary": {
|
|
30
|
+
"$type": "color",
|
|
31
|
+
"$value": "rgb(119, 123, 132)"
|
|
32
|
+
},
|
|
33
|
+
"primary": {
|
|
34
|
+
"$type": "color",
|
|
35
|
+
"$value": "rgb(62, 99, 221)"
|
|
36
|
+
},
|
|
37
|
+
"destructive": {
|
|
38
|
+
"$type": "color",
|
|
39
|
+
"$value": "rgb(206, 44, 49)"
|
|
40
|
+
},
|
|
41
|
+
"success": {
|
|
42
|
+
"$type": "color",
|
|
43
|
+
"$value": "rgb(48, 164, 108)"
|
|
44
|
+
},
|
|
45
|
+
"warning": {
|
|
46
|
+
"$type": "color",
|
|
47
|
+
"$value": "rgb(255, 197, 61)"
|
|
48
|
+
},
|
|
49
|
+
"primary-foreground": {
|
|
50
|
+
"$type": "color",
|
|
51
|
+
"$value": "rgb(255, 255, 255)"
|
|
52
|
+
},
|
|
53
|
+
"destructive-foreground": {
|
|
54
|
+
"$type": "color",
|
|
55
|
+
"$value": "rgb(255, 255, 255)"
|
|
56
|
+
},
|
|
57
|
+
"text-destructive": {
|
|
58
|
+
"$type": "color",
|
|
59
|
+
"$value": "rgb(255, 149, 146)"
|
|
60
|
+
},
|
|
61
|
+
"border-default": {
|
|
62
|
+
"$type": "color",
|
|
63
|
+
"$value": "rgb(67, 72, 78)"
|
|
64
|
+
},
|
|
65
|
+
"focus-ring": {
|
|
66
|
+
"$type": "color",
|
|
67
|
+
"$value": "rgb(62, 99, 221)"
|
|
68
|
+
},
|
|
69
|
+
"chart-1": {
|
|
70
|
+
"$type": "color",
|
|
71
|
+
"$value": "rgb(62, 99, 221)"
|
|
72
|
+
},
|
|
73
|
+
"chart-2": {
|
|
74
|
+
"$type": "color",
|
|
75
|
+
"$value": "rgb(110, 86, 207)"
|
|
76
|
+
},
|
|
77
|
+
"chart-3": {
|
|
78
|
+
"$type": "color",
|
|
79
|
+
"$value": "rgb(18, 165, 148)"
|
|
80
|
+
},
|
|
81
|
+
"chart-4": {
|
|
82
|
+
"$type": "color",
|
|
83
|
+
"$value": "rgb(247, 107, 21)"
|
|
84
|
+
},
|
|
85
|
+
"chart-5": {
|
|
86
|
+
"$type": "color",
|
|
87
|
+
"$value": "rgb(105, 110, 119)"
|
|
88
|
+
},
|
|
89
|
+
"chart-positive": {
|
|
90
|
+
"$type": "color",
|
|
91
|
+
"$value": "rgb(48, 164, 108)"
|
|
92
|
+
},
|
|
93
|
+
"chart-negative": {
|
|
94
|
+
"$type": "color",
|
|
95
|
+
"$value": "rgb(229, 72, 77)"
|
|
96
|
+
},
|
|
97
|
+
"chart-neutral": {
|
|
98
|
+
"$type": "color",
|
|
99
|
+
"$value": "rgb(90, 97, 105)"
|
|
100
|
+
},
|
|
101
|
+
"overlay-scrim": {
|
|
102
|
+
"$type": "color",
|
|
103
|
+
"$value": "rgb(0, 0, 0)"
|
|
104
|
+
}
|
|
105
|
+
}
|
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$description": "Non-color foundations copied from tailwindcss@4.3.3/theme.css. Keep this file value-for-value aligned with Tailwind.",
|
|
3
|
+
"spacing": { "$type": "dimension", "$value": { "value": 0.25, "unit": "rem" } },
|
|
4
|
+
"spacing-scale": {
|
|
5
|
+
"$type": "dimension",
|
|
6
|
+
"0": { "$value": { "value": 0, "unit": "rem" } },
|
|
7
|
+
"px": { "$value": { "value": 1, "unit": "px" } },
|
|
8
|
+
"0-5": { "$value": { "value": 0.125, "unit": "rem" } },
|
|
9
|
+
"1": { "$value": { "value": 0.25, "unit": "rem" } },
|
|
10
|
+
"1-5": { "$value": { "value": 0.375, "unit": "rem" } },
|
|
11
|
+
"2": { "$value": { "value": 0.5, "unit": "rem" } },
|
|
12
|
+
"2-5": { "$value": { "value": 0.625, "unit": "rem" } },
|
|
13
|
+
"3": { "$value": { "value": 0.75, "unit": "rem" } },
|
|
14
|
+
"3-5": { "$value": { "value": 0.875, "unit": "rem" } },
|
|
15
|
+
"4": { "$value": { "value": 1, "unit": "rem" } },
|
|
16
|
+
"5": { "$value": { "value": 1.25, "unit": "rem" } },
|
|
17
|
+
"6": { "$value": { "value": 1.5, "unit": "rem" } },
|
|
18
|
+
"7": { "$value": { "value": 1.75, "unit": "rem" } },
|
|
19
|
+
"8": { "$value": { "value": 2, "unit": "rem" } },
|
|
20
|
+
"9": { "$value": { "value": 2.25, "unit": "rem" } },
|
|
21
|
+
"10": { "$value": { "value": 2.5, "unit": "rem" } },
|
|
22
|
+
"11": { "$value": { "value": 2.75, "unit": "rem" } },
|
|
23
|
+
"12": { "$value": { "value": 3, "unit": "rem" } },
|
|
24
|
+
"14": { "$value": { "value": 3.5, "unit": "rem" } },
|
|
25
|
+
"16": { "$value": { "value": 4, "unit": "rem" } },
|
|
26
|
+
"20": { "$value": { "value": 5, "unit": "rem" } },
|
|
27
|
+
"24": { "$value": { "value": 6, "unit": "rem" } },
|
|
28
|
+
"28": { "$value": { "value": 7, "unit": "rem" } },
|
|
29
|
+
"32": { "$value": { "value": 8, "unit": "rem" } },
|
|
30
|
+
"36": { "$value": { "value": 9, "unit": "rem" } },
|
|
31
|
+
"40": { "$value": { "value": 10, "unit": "rem" } },
|
|
32
|
+
"44": { "$value": { "value": 11, "unit": "rem" } },
|
|
33
|
+
"48": { "$value": { "value": 12, "unit": "rem" } },
|
|
34
|
+
"52": { "$value": { "value": 13, "unit": "rem" } },
|
|
35
|
+
"56": { "$value": { "value": 14, "unit": "rem" } },
|
|
36
|
+
"60": { "$value": { "value": 15, "unit": "rem" } },
|
|
37
|
+
"64": { "$value": { "value": 16, "unit": "rem" } },
|
|
38
|
+
"72": { "$value": { "value": 18, "unit": "rem" } },
|
|
39
|
+
"80": { "$value": { "value": 20, "unit": "rem" } },
|
|
40
|
+
"96": { "$value": { "value": 24, "unit": "rem" } }
|
|
41
|
+
},
|
|
42
|
+
"font": {
|
|
43
|
+
"$type": "fontFamily",
|
|
44
|
+
"sans": {
|
|
45
|
+
"$value": [
|
|
46
|
+
"system-ui",
|
|
47
|
+
"-apple-system",
|
|
48
|
+
"BlinkMacSystemFont",
|
|
49
|
+
"Segoe UI",
|
|
50
|
+
"Roboto",
|
|
51
|
+
"Helvetica Neue",
|
|
52
|
+
"Noto Sans",
|
|
53
|
+
"Arial",
|
|
54
|
+
"sans-serif",
|
|
55
|
+
"Apple Color Emoji",
|
|
56
|
+
"Segoe UI Emoji",
|
|
57
|
+
"Segoe UI Symbol",
|
|
58
|
+
"Noto Color Emoji"
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
"serif": {
|
|
62
|
+
"$value": [
|
|
63
|
+
"system-ui",
|
|
64
|
+
"-apple-system",
|
|
65
|
+
"BlinkMacSystemFont",
|
|
66
|
+
"Segoe UI",
|
|
67
|
+
"Roboto",
|
|
68
|
+
"Helvetica Neue",
|
|
69
|
+
"Noto Sans",
|
|
70
|
+
"Arial",
|
|
71
|
+
"sans-serif",
|
|
72
|
+
"Apple Color Emoji",
|
|
73
|
+
"Segoe UI Emoji",
|
|
74
|
+
"Segoe UI Symbol",
|
|
75
|
+
"Noto Color Emoji"
|
|
76
|
+
]
|
|
77
|
+
},
|
|
78
|
+
"mono": {
|
|
79
|
+
"$value": [
|
|
80
|
+
"ui-monospace",
|
|
81
|
+
"SFMono-Regular",
|
|
82
|
+
"Menlo",
|
|
83
|
+
"Monaco",
|
|
84
|
+
"Consolas",
|
|
85
|
+
"Liberation Mono",
|
|
86
|
+
"Courier New",
|
|
87
|
+
"monospace"
|
|
88
|
+
]
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"text": {
|
|
92
|
+
"$type": "dimension",
|
|
93
|
+
"xs": { "$value": { "value": 0.75, "unit": "rem" } },
|
|
94
|
+
"sm": { "$value": { "value": 0.875, "unit": "rem" } },
|
|
95
|
+
"base": { "$value": { "value": 1, "unit": "rem" } },
|
|
96
|
+
"lg": { "$value": { "value": 1.125, "unit": "rem" } },
|
|
97
|
+
"xl": { "$value": { "value": 1.25, "unit": "rem" } },
|
|
98
|
+
"2xl": { "$value": { "value": 1.5, "unit": "rem" } },
|
|
99
|
+
"3xl": { "$value": { "value": 1.875, "unit": "rem" } },
|
|
100
|
+
"4xl": { "$value": { "value": 2.25, "unit": "rem" } },
|
|
101
|
+
"5xl": { "$value": { "value": 3, "unit": "rem" } },
|
|
102
|
+
"6xl": { "$value": { "value": 3.75, "unit": "rem" } },
|
|
103
|
+
"7xl": { "$value": { "value": 4.5, "unit": "rem" } },
|
|
104
|
+
"8xl": { "$value": { "value": 6, "unit": "rem" } },
|
|
105
|
+
"9xl": { "$value": { "value": 8, "unit": "rem" } }
|
|
106
|
+
},
|
|
107
|
+
"text-line-height": {
|
|
108
|
+
"$type": "number",
|
|
109
|
+
"xs": { "$value": 1.3333333333 },
|
|
110
|
+
"sm": { "$value": 1.4285714286 },
|
|
111
|
+
"base": { "$value": 1.5 },
|
|
112
|
+
"lg": { "$value": 1.5555555556 },
|
|
113
|
+
"xl": { "$value": 1.4 },
|
|
114
|
+
"2xl": { "$value": 1.3333333333 },
|
|
115
|
+
"3xl": { "$value": 1.2 },
|
|
116
|
+
"4xl": { "$value": 1.1111111111 },
|
|
117
|
+
"5xl": { "$value": 1 },
|
|
118
|
+
"6xl": { "$value": 1 },
|
|
119
|
+
"7xl": { "$value": 1 },
|
|
120
|
+
"8xl": { "$value": 1 },
|
|
121
|
+
"9xl": { "$value": 1 }
|
|
122
|
+
},
|
|
123
|
+
"font-weight": {
|
|
124
|
+
"$type": "fontWeight",
|
|
125
|
+
"thin": { "$value": 100 },
|
|
126
|
+
"extralight": { "$value": 200 },
|
|
127
|
+
"light": { "$value": 300 },
|
|
128
|
+
"normal": { "$value": 400 },
|
|
129
|
+
"medium": { "$value": 500 },
|
|
130
|
+
"semibold": { "$value": 600 },
|
|
131
|
+
"bold": { "$value": 700 },
|
|
132
|
+
"extrabold": { "$value": 800 },
|
|
133
|
+
"black": { "$value": 900 }
|
|
134
|
+
},
|
|
135
|
+
"tracking": {
|
|
136
|
+
"$type": "dimension",
|
|
137
|
+
"tighter": { "$value": { "value": -0.05, "unit": "em" } },
|
|
138
|
+
"tight": { "$value": { "value": -0.025, "unit": "em" } },
|
|
139
|
+
"normal": { "$value": { "value": 0, "unit": "em" } },
|
|
140
|
+
"wide": { "$value": { "value": 0.025, "unit": "em" } },
|
|
141
|
+
"wider": { "$value": { "value": 0.05, "unit": "em" } },
|
|
142
|
+
"widest": { "$value": { "value": 0.1, "unit": "em" } }
|
|
143
|
+
},
|
|
144
|
+
"leading": {
|
|
145
|
+
"$type": "number",
|
|
146
|
+
"tight": { "$value": 1.25 },
|
|
147
|
+
"snug": { "$value": 1.375 },
|
|
148
|
+
"normal": { "$value": 1.5 },
|
|
149
|
+
"relaxed": { "$value": 1.625 },
|
|
150
|
+
"loose": { "$value": 2 }
|
|
151
|
+
},
|
|
152
|
+
"radius": {
|
|
153
|
+
"$type": "dimension",
|
|
154
|
+
"xs": { "$value": { "value": 0.125, "unit": "rem" } },
|
|
155
|
+
"sm": { "$value": { "value": 0.25, "unit": "rem" } },
|
|
156
|
+
"md": { "$value": { "value": 0.375, "unit": "rem" } },
|
|
157
|
+
"lg": { "$value": { "value": 0.5, "unit": "rem" } },
|
|
158
|
+
"xl": { "$value": { "value": 0.75, "unit": "rem" } },
|
|
159
|
+
"2xl": { "$value": { "value": 1, "unit": "rem" } },
|
|
160
|
+
"3xl": { "$value": { "value": 1.5, "unit": "rem" } },
|
|
161
|
+
"4xl": { "$value": { "value": 2, "unit": "rem" } },
|
|
162
|
+
"full": { "$value": { "value": 9999, "unit": "px" } }
|
|
163
|
+
},
|
|
164
|
+
"shadow": {
|
|
165
|
+
"$type": "shadow",
|
|
166
|
+
"2xs": {
|
|
167
|
+
"$value": [
|
|
168
|
+
{
|
|
169
|
+
"color": "rgb(0 0 0 / 0.05)",
|
|
170
|
+
"offsetX": { "value": 0, "unit": "px" },
|
|
171
|
+
"offsetY": { "value": 1, "unit": "px" },
|
|
172
|
+
"blur": { "value": 0, "unit": "px" },
|
|
173
|
+
"spread": { "value": 0, "unit": "px" }
|
|
174
|
+
}
|
|
175
|
+
]
|
|
176
|
+
},
|
|
177
|
+
"xs": {
|
|
178
|
+
"$value": [
|
|
179
|
+
{
|
|
180
|
+
"color": "rgb(0 0 0 / 0.05)",
|
|
181
|
+
"offsetX": { "value": 0, "unit": "px" },
|
|
182
|
+
"offsetY": { "value": 1, "unit": "px" },
|
|
183
|
+
"blur": { "value": 2, "unit": "px" },
|
|
184
|
+
"spread": { "value": 0, "unit": "px" }
|
|
185
|
+
}
|
|
186
|
+
]
|
|
187
|
+
},
|
|
188
|
+
"sm": {
|
|
189
|
+
"$value": [
|
|
190
|
+
{
|
|
191
|
+
"color": "rgb(0 0 0 / 0.1)",
|
|
192
|
+
"offsetX": { "value": 0, "unit": "px" },
|
|
193
|
+
"offsetY": { "value": 1, "unit": "px" },
|
|
194
|
+
"blur": { "value": 3, "unit": "px" },
|
|
195
|
+
"spread": { "value": 0, "unit": "px" }
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
"color": "rgb(0 0 0 / 0.1)",
|
|
199
|
+
"offsetX": { "value": 0, "unit": "px" },
|
|
200
|
+
"offsetY": { "value": 1, "unit": "px" },
|
|
201
|
+
"blur": { "value": 2, "unit": "px" },
|
|
202
|
+
"spread": { "value": -1, "unit": "px" }
|
|
203
|
+
}
|
|
204
|
+
]
|
|
205
|
+
},
|
|
206
|
+
"md": {
|
|
207
|
+
"$value": [
|
|
208
|
+
{
|
|
209
|
+
"color": "rgb(0 0 0 / 0.1)",
|
|
210
|
+
"offsetX": { "value": 0, "unit": "px" },
|
|
211
|
+
"offsetY": { "value": 4, "unit": "px" },
|
|
212
|
+
"blur": { "value": 6, "unit": "px" },
|
|
213
|
+
"spread": { "value": -1, "unit": "px" }
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
"color": "rgb(0 0 0 / 0.1)",
|
|
217
|
+
"offsetX": { "value": 0, "unit": "px" },
|
|
218
|
+
"offsetY": { "value": 2, "unit": "px" },
|
|
219
|
+
"blur": { "value": 4, "unit": "px" },
|
|
220
|
+
"spread": { "value": -2, "unit": "px" }
|
|
221
|
+
}
|
|
222
|
+
]
|
|
223
|
+
},
|
|
224
|
+
"lg": {
|
|
225
|
+
"$value": [
|
|
226
|
+
{
|
|
227
|
+
"color": "rgb(0 0 0 / 0.1)",
|
|
228
|
+
"offsetX": { "value": 0, "unit": "px" },
|
|
229
|
+
"offsetY": { "value": 10, "unit": "px" },
|
|
230
|
+
"blur": { "value": 15, "unit": "px" },
|
|
231
|
+
"spread": { "value": -3, "unit": "px" }
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"color": "rgb(0 0 0 / 0.1)",
|
|
235
|
+
"offsetX": { "value": 0, "unit": "px" },
|
|
236
|
+
"offsetY": { "value": 4, "unit": "px" },
|
|
237
|
+
"blur": { "value": 6, "unit": "px" },
|
|
238
|
+
"spread": { "value": -4, "unit": "px" }
|
|
239
|
+
}
|
|
240
|
+
]
|
|
241
|
+
},
|
|
242
|
+
"xl": {
|
|
243
|
+
"$value": [
|
|
244
|
+
{
|
|
245
|
+
"color": "rgb(0 0 0 / 0.1)",
|
|
246
|
+
"offsetX": { "value": 0, "unit": "px" },
|
|
247
|
+
"offsetY": { "value": 20, "unit": "px" },
|
|
248
|
+
"blur": { "value": 25, "unit": "px" },
|
|
249
|
+
"spread": { "value": -5, "unit": "px" }
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
"color": "rgb(0 0 0 / 0.1)",
|
|
253
|
+
"offsetX": { "value": 0, "unit": "px" },
|
|
254
|
+
"offsetY": { "value": 8, "unit": "px" },
|
|
255
|
+
"blur": { "value": 10, "unit": "px" },
|
|
256
|
+
"spread": { "value": -6, "unit": "px" }
|
|
257
|
+
}
|
|
258
|
+
]
|
|
259
|
+
},
|
|
260
|
+
"2xl": {
|
|
261
|
+
"$value": [
|
|
262
|
+
{
|
|
263
|
+
"color": "rgb(0 0 0 / 0.25)",
|
|
264
|
+
"offsetX": { "value": 0, "unit": "px" },
|
|
265
|
+
"offsetY": { "value": 25, "unit": "px" },
|
|
266
|
+
"blur": { "value": 50, "unit": "px" },
|
|
267
|
+
"spread": { "value": -12, "unit": "px" }
|
|
268
|
+
}
|
|
269
|
+
]
|
|
270
|
+
},
|
|
271
|
+
"none": {
|
|
272
|
+
"$value": [
|
|
273
|
+
{
|
|
274
|
+
"color": "transparent",
|
|
275
|
+
"offsetX": { "value": 0, "unit": "px" },
|
|
276
|
+
"offsetY": { "value": 0, "unit": "px" },
|
|
277
|
+
"blur": { "value": 0, "unit": "px" },
|
|
278
|
+
"spread": { "value": 0, "unit": "px" }
|
|
279
|
+
}
|
|
280
|
+
]
|
|
281
|
+
}
|
|
282
|
+
},
|
|
283
|
+
"breakpoint": {
|
|
284
|
+
"$type": "dimension",
|
|
285
|
+
"sm": { "$value": { "value": 40, "unit": "rem" } },
|
|
286
|
+
"md": { "$value": { "value": 48, "unit": "rem" } },
|
|
287
|
+
"lg": { "$value": { "value": 64, "unit": "rem" } },
|
|
288
|
+
"xl": { "$value": { "value": 80, "unit": "rem" } },
|
|
289
|
+
"2xl": { "$value": { "value": 96, "unit": "rem" } }
|
|
290
|
+
},
|
|
291
|
+
"container": {
|
|
292
|
+
"$type": "dimension",
|
|
293
|
+
"3xs": { "$value": { "value": 16, "unit": "rem" } },
|
|
294
|
+
"2xs": { "$value": { "value": 18, "unit": "rem" } },
|
|
295
|
+
"xs": { "$value": { "value": 20, "unit": "rem" } },
|
|
296
|
+
"sm": { "$value": { "value": 24, "unit": "rem" } },
|
|
297
|
+
"md": { "$value": { "value": 28, "unit": "rem" } },
|
|
298
|
+
"lg": { "$value": { "value": 32, "unit": "rem" } },
|
|
299
|
+
"xl": { "$value": { "value": 36, "unit": "rem" } },
|
|
300
|
+
"2xl": { "$value": { "value": 42, "unit": "rem" } },
|
|
301
|
+
"3xl": { "$value": { "value": 48, "unit": "rem" } },
|
|
302
|
+
"4xl": { "$value": { "value": 56, "unit": "rem" } },
|
|
303
|
+
"5xl": { "$value": { "value": 64, "unit": "rem" } },
|
|
304
|
+
"6xl": { "$value": { "value": 72, "unit": "rem" } },
|
|
305
|
+
"7xl": { "$value": { "value": 80, "unit": "rem" } }
|
|
306
|
+
},
|
|
307
|
+
"z-index": {
|
|
308
|
+
"$type": "number",
|
|
309
|
+
"auto": { "$value": "auto" },
|
|
310
|
+
"0": { "$value": 0 },
|
|
311
|
+
"10": { "$value": 10 },
|
|
312
|
+
"20": { "$value": 20 },
|
|
313
|
+
"30": { "$value": 30 },
|
|
314
|
+
"40": { "$value": 40 },
|
|
315
|
+
"50": { "$value": 50 }
|
|
316
|
+
},
|
|
317
|
+
"ease": {
|
|
318
|
+
"$type": "cubicBezier",
|
|
319
|
+
"in": { "$value": [0.4, 0, 1, 1] },
|
|
320
|
+
"out": { "$value": [0, 0, 0.2, 1] },
|
|
321
|
+
"in-out": { "$value": [0.4, 0, 0.2, 1] }
|
|
322
|
+
},
|
|
323
|
+
"duration": {
|
|
324
|
+
"$type": "duration",
|
|
325
|
+
"75": { "$value": "75ms" },
|
|
326
|
+
"100": { "$value": "100ms" },
|
|
327
|
+
"150": { "$value": "150ms" },
|
|
328
|
+
"200": { "$value": "200ms" },
|
|
329
|
+
"300": { "$value": "300ms" },
|
|
330
|
+
"500": { "$value": "500ms" },
|
|
331
|
+
"700": { "$value": "700ms" },
|
|
332
|
+
"1000": { "$value": "1000ms" }
|
|
333
|
+
},
|
|
334
|
+
"animate": {
|
|
335
|
+
"$type": "string",
|
|
336
|
+
"spin": { "$value": "spin 1s linear infinite" },
|
|
337
|
+
"ping": { "$value": "ping 1s cubic-bezier(0, 0, 0.2, 1) infinite" },
|
|
338
|
+
"pulse": { "$value": "pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite" },
|
|
339
|
+
"bounce": { "$value": "bounce 1s infinite" }
|
|
340
|
+
}
|
|
341
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$extensions": {
|
|
3
|
+
"org.ponti.license": "MIT"
|
|
4
|
+
},
|
|
5
|
+
"background": {
|
|
6
|
+
"$type": "color",
|
|
7
|
+
"$value": "rgb(252, 252, 253)"
|
|
8
|
+
},
|
|
9
|
+
"card": {
|
|
10
|
+
"$type": "color",
|
|
11
|
+
"$value": "rgb(249, 249, 251)"
|
|
12
|
+
},
|
|
13
|
+
"popover": {
|
|
14
|
+
"$type": "color",
|
|
15
|
+
"$value": "rgb(240, 240, 243)"
|
|
16
|
+
},
|
|
17
|
+
"muted": {
|
|
18
|
+
"$type": "color",
|
|
19
|
+
"$value": "rgb(249, 249, 251)"
|
|
20
|
+
},
|
|
21
|
+
"text-primary": {
|
|
22
|
+
"$type": "color",
|
|
23
|
+
"$value": "rgb(28, 32, 36)"
|
|
24
|
+
},
|
|
25
|
+
"text-secondary": {
|
|
26
|
+
"$type": "color",
|
|
27
|
+
"$value": "rgb(96, 100, 108)"
|
|
28
|
+
},
|
|
29
|
+
"tertiary": {
|
|
30
|
+
"$type": "color",
|
|
31
|
+
"$value": "rgb(128, 131, 141)"
|
|
32
|
+
},
|
|
33
|
+
"primary": {
|
|
34
|
+
"$type": "color",
|
|
35
|
+
"$value": "rgb(62, 99, 221)"
|
|
36
|
+
},
|
|
37
|
+
"destructive": {
|
|
38
|
+
"$type": "color",
|
|
39
|
+
"$value": "rgb(206, 44, 49)"
|
|
40
|
+
},
|
|
41
|
+
"success": {
|
|
42
|
+
"$type": "color",
|
|
43
|
+
"$value": "rgb(48, 164, 108)"
|
|
44
|
+
},
|
|
45
|
+
"warning": {
|
|
46
|
+
"$type": "color",
|
|
47
|
+
"$value": "rgb(255, 197, 61)"
|
|
48
|
+
},
|
|
49
|
+
"primary-foreground": {
|
|
50
|
+
"$type": "color",
|
|
51
|
+
"$value": "rgb(255, 255, 255)"
|
|
52
|
+
},
|
|
53
|
+
"destructive-foreground": {
|
|
54
|
+
"$type": "color",
|
|
55
|
+
"$value": "rgb(255, 255, 255)"
|
|
56
|
+
},
|
|
57
|
+
"text-destructive": {
|
|
58
|
+
"$type": "color",
|
|
59
|
+
"$value": "rgb(200, 44, 49)"
|
|
60
|
+
},
|
|
61
|
+
"border-default": {
|
|
62
|
+
"$type": "color",
|
|
63
|
+
"$value": "rgb(205, 206, 214)"
|
|
64
|
+
},
|
|
65
|
+
"focus-ring": {
|
|
66
|
+
"$type": "color",
|
|
67
|
+
"$value": "rgb(62, 99, 221)"
|
|
68
|
+
},
|
|
69
|
+
"chart-1": {
|
|
70
|
+
"$type": "color",
|
|
71
|
+
"$value": "rgb(62, 99, 221)"
|
|
72
|
+
},
|
|
73
|
+
"chart-2": {
|
|
74
|
+
"$type": "color",
|
|
75
|
+
"$value": "rgb(110, 86, 207)"
|
|
76
|
+
},
|
|
77
|
+
"chart-3": {
|
|
78
|
+
"$type": "color",
|
|
79
|
+
"$value": "rgb(18, 165, 148)"
|
|
80
|
+
},
|
|
81
|
+
"chart-4": {
|
|
82
|
+
"$type": "color",
|
|
83
|
+
"$value": "rgb(247, 107, 21)"
|
|
84
|
+
},
|
|
85
|
+
"chart-5": {
|
|
86
|
+
"$type": "color",
|
|
87
|
+
"$value": "rgb(139, 141, 152)"
|
|
88
|
+
},
|
|
89
|
+
"chart-positive": {
|
|
90
|
+
"$type": "color",
|
|
91
|
+
"$value": "rgb(48, 164, 108)"
|
|
92
|
+
},
|
|
93
|
+
"chart-negative": {
|
|
94
|
+
"$type": "color",
|
|
95
|
+
"$value": "rgb(229, 72, 77)"
|
|
96
|
+
},
|
|
97
|
+
"chart-neutral": {
|
|
98
|
+
"$type": "color",
|
|
99
|
+
"$value": "rgb(185, 187, 198)"
|
|
100
|
+
},
|
|
101
|
+
"overlay-scrim": {
|
|
102
|
+
"$type": "color",
|
|
103
|
+
"$value": "rgb(0, 0, 0)"
|
|
104
|
+
}
|
|
105
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"source": ["src/styles/tokens/source/dark.tokens.json"],
|
|
3
|
+
"platforms": {
|
|
4
|
+
"css": {
|
|
5
|
+
"transformGroup": "css",
|
|
6
|
+
"buildPath": ".storybook/generated/",
|
|
7
|
+
"files": [
|
|
8
|
+
{
|
|
9
|
+
"destination": "dark-theme-class.css",
|
|
10
|
+
"format": "css/variables",
|
|
11
|
+
"options": { "selector": ":root.storybook-theme-dark" }
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"source": ["src/styles/tokens/source/dark.tokens.json"],
|
|
3
|
+
"platforms": {
|
|
4
|
+
"css": {
|
|
5
|
+
"transformGroup": "css",
|
|
6
|
+
"buildPath": "src/styles/tokens/generated/",
|
|
7
|
+
"files": [{ "destination": "dark.css", "format": "css/variables" }]
|
|
8
|
+
},
|
|
9
|
+
"typescript": {
|
|
10
|
+
"transformGroup": "js",
|
|
11
|
+
"buildPath": "src/styles/tokens/generated/",
|
|
12
|
+
"files": [
|
|
13
|
+
{
|
|
14
|
+
"destination": "dark.colors.generated.ts",
|
|
15
|
+
"format": "javascript/esm",
|
|
16
|
+
"options": { "minify": true }
|
|
17
|
+
}
|
|
18
|
+
]
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"source": ["src/styles/tokens/source/foundations.tokens.json"],
|
|
3
|
+
"platforms": {
|
|
4
|
+
"css": {
|
|
5
|
+
"transformGroup": "css",
|
|
6
|
+
"buildPath": "src/styles/tokens/generated/",
|
|
7
|
+
"files": [{ "destination": "foundations.css", "format": "css/variables" }]
|
|
8
|
+
},
|
|
9
|
+
"typescript": {
|
|
10
|
+
"transformGroup": "js",
|
|
11
|
+
"buildPath": "src/styles/tokens/generated/",
|
|
12
|
+
"files": [
|
|
13
|
+
{
|
|
14
|
+
"destination": "foundations.generated.ts",
|
|
15
|
+
"format": "javascript/esm",
|
|
16
|
+
"options": { "minify": true }
|
|
17
|
+
}
|
|
18
|
+
]
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"source": ["src/styles/tokens/source/light.tokens.json"],
|
|
3
|
+
"platforms": {
|
|
4
|
+
"css": {
|
|
5
|
+
"transformGroup": "css",
|
|
6
|
+
"buildPath": "src/styles/tokens/generated/",
|
|
7
|
+
"files": [{ "destination": "light.css", "format": "css/variables" }]
|
|
8
|
+
},
|
|
9
|
+
"typescript": {
|
|
10
|
+
"transformGroup": "js",
|
|
11
|
+
"buildPath": "src/styles/tokens/generated/",
|
|
12
|
+
"files": [
|
|
13
|
+
{
|
|
14
|
+
"destination": "light.colors.generated.ts",
|
|
15
|
+
"format": "javascript/esm",
|
|
16
|
+
"options": { "minify": true }
|
|
17
|
+
}
|
|
18
|
+
]
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
package/src/tokens.css
DELETED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|