@crewlethq/tokens 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Crewlet
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,75 @@
1
+ # @crewlethq/tokens
2
+
3
+ Single source of truth for the Crewlet design tokens: color, spacing, typography (`font`), radius, shadow, blur, breakpoint, motion and z-index. Authored as JSON, compiled by Style Dictionary into:
4
+
5
+ - `dist/css/tokens.css` (CSS custom properties on `:root`)
6
+ - `dist/index.js` + `dist/index.d.ts` (typed JS object for runtime use)
7
+
8
+ ## Use it from a consumer app
9
+
10
+ ```ts
11
+ // 1) Canonical variables. Always import this once at the app entrypoint.
12
+ import '@crewlethq/tokens/css';
13
+
14
+ // 2) Optional: self-hosted Inter and JetBrains Mono (see "Fonts" below).
15
+ // Skip this if the app already loads its own fonts at the shell.
16
+ import '@crewlethq/tokens/css/fonts';
17
+
18
+ // 3) Required when the app renders @crewlethq/ui components and does not load
19
+ // the Material Symbols Outlined icon font itself. This is the only
20
+ // stylesheet in the package that contacts a third-party host (see
21
+ // "Material Symbols" below).
22
+ import '@crewlethq/tokens/css/material-symbols';
23
+
24
+ // 4) Optional: legacy aliases. Map short, unprefixed names (--accent,
25
+ // --bg-primary, --text-primary, --accent-pink, etc.) onto the canonical
26
+ // tokens. Use this while migrating an existing stylesheet that already
27
+ // uses those names, so it keeps working without a sweeping
28
+ // find-and-replace.
29
+ import '@crewlethq/tokens/css/legacy';
30
+
31
+ // Or read tokens at runtime / build theme objects
32
+ import { color, spacing } from '@crewlethq/tokens';
33
+
34
+ const accent = color.brand.primary;
35
+ ```
36
+
37
+ CSS variables follow Style Dictionary's `--{group}-{path}` convention,
38
+ for example `var(--color-brand-primary)` or `var(--spacing-4)`.
39
+
40
+ ## Fonts
41
+
42
+ The design system uses two type families, both self-hosted inside this package and licensed under the SIL Open Font License 1.1:
43
+
44
+ | Token | Family |
45
+ | ----- | ------ |
46
+ | `--font-family-sans` | Inter |
47
+ | `--font-family-display` | An alias of `--font-family-sans` (see the note below) |
48
+ | `--font-family-mono` | JetBrains Mono |
49
+
50
+ `--font-family-display` is declared on `:root` as `var(--font-family-sans)`. A custom property that holds `var()` is resolved on the element that declares it and inherited as a finished value, so the alias follows an override of `--font-family-sans` declared on `:root` and no other. An app that overrides the sans family on `body`, a theme class or any narrower selector sets `--font-family-display` in the same rule.
51
+
52
+ `@crewlethq/tokens/css/fonts` declares `@font-face` rules whose URLs point at the woff2 files in `fonts/`, relative to the stylesheet. A bundler (Vite, webpack, Rollup, esbuild) resolves those URLs and emits the files with the application's other assets, so the fonts render on a closed network and no request leaves for a third-party host. The files are also exported individually (for example `@crewlethq/tokens/fonts/inter-latin.woff2`) for apps that preload them or serve them from their own static directory.
53
+
54
+ Versions, subsets and the replacement procedure are in [`fonts/README.md`](./fonts/README.md). The license text and copyright notices are in [`fonts/OFL.txt`](./fonts/OFL.txt), which must accompany the files wherever they are redistributed. An application that bundles the fonts ships it by importing `@crewlethq/tokens/fonts/OFL.txt` as an asset, so the bundler emits it beside the font files, or by copying its text into the application's third-party notices.
55
+
56
+ ## Material Symbols
57
+
58
+ The `@crewlethq/ui` components render their glyphs (chevrons, close, copy, search and similar) as ligatures of the Material Symbols Outlined icon font, inside `<span class="material-symbols-outlined">`. That font is not part of this package. `@crewlethq/tokens/css/material-symbols` is a separate, opt-in stylesheet that loads it from Google Fonts: it requests `fonts.googleapis.com`, which serves the `@font-face` rule and the `material-symbols-outlined` class, and the browser then downloads the font from `fonts.gstatic.com`.
59
+
60
+ Material Symbols is published by Google under the Apache License 2.0 (<https://github.com/google/material-design-icons>). Because this package only references the hosted font and redistributes none of its files, it carries no copy of that license.
61
+
62
+ Keep `@crewlethq/tokens/css/fonts` and `@crewlethq/tokens/css/material-symbols` as separate imports: the first never leaves the application's own origin, so an app that must not contact third-party hosts imports only that one and loads the icon font from its own origin under the same class name.
63
+
64
+ ## Add or change a token
65
+
66
+ 1. Edit a JSON file in `tokens/`.
67
+ 2. Run `npm run build` (or `npm run dev` for watch).
68
+ 3. The generated `dist/` and `src/index.ts` are regenerated.
69
+
70
+ Never edit files in `dist/` or `src/index.ts` directly. They are
71
+ regenerated on every build.
72
+
73
+ ## License
74
+
75
+ The tokens, stylesheets and scripts are licensed under the MIT License, whose text is in [`LICENSE`](./LICENSE). The font files in `fonts/` are licensed under the SIL Open Font License 1.1, whose text and copyright notices are in [`fonts/OFL.txt`](./fonts/OFL.txt). The package manifest records both as the SPDX expression `MIT AND OFL-1.1`.
@@ -0,0 +1,46 @@
1
+ /* Generated by style-dictionary. Self-hosted faces for the type families
2
+ referenced by --font-family-sans, --font-family-display (an alias of sans)
3
+ and --font-family-mono. Import this in addition to tokens.css when uilet
4
+ should own font loading:
5
+ import '@crewlethq/tokens/css';
6
+ import '@crewlethq/tokens/css/fonts';
7
+ Apps that already load these fonts at the shell can skip this file.
8
+
9
+ Inter and JetBrains Mono are licensed under the SIL Open Font License 1.1.
10
+ See fonts/OFL.txt in this package. */
11
+
12
+ @font-face {
13
+ font-family: 'Inter';
14
+ font-style: normal;
15
+ font-weight: 100 900;
16
+ font-display: swap;
17
+ src: url('../../fonts/inter-latin-ext.woff2') format('woff2');
18
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
19
+ }
20
+
21
+ @font-face {
22
+ font-family: 'Inter';
23
+ font-style: normal;
24
+ font-weight: 100 900;
25
+ font-display: swap;
26
+ src: url('../../fonts/inter-latin.woff2') format('woff2');
27
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
28
+ }
29
+
30
+ @font-face {
31
+ font-family: 'JetBrains Mono';
32
+ font-style: normal;
33
+ font-weight: 100 800;
34
+ font-display: swap;
35
+ src: url('../../fonts/jetbrains-mono-latin-ext.woff2') format('woff2');
36
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
37
+ }
38
+
39
+ @font-face {
40
+ font-family: 'JetBrains Mono';
41
+ font-style: normal;
42
+ font-weight: 100 800;
43
+ font-display: swap;
44
+ src: url('../../fonts/jetbrains-mono-latin.woff2') format('woff2');
45
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
46
+ }
@@ -0,0 +1,40 @@
1
+ /* Generated by style-dictionary. Legacy aliases mapping short, unprefixed
2
+ variable names to the canonical token namespace. Import this in addition to
3
+ tokens.css when migrating an existing app: import '@crewlethq/tokens/css/legacy';
4
+ New code should reference --color-*, --spacing-*, --font-*, --radius-*,
5
+ --shadow-* directly.
6
+
7
+ The aliases are re-declared on the theme classes so they follow a theme
8
+ switch. Override an alias on the element that switches the theme (or a
9
+ descendant of it); an override on :root is replaced inside a themed body. */
10
+ :root,
11
+ body.theme-dark,
12
+ body.theme-light {
13
+ /* Brand */
14
+ --accent: var(--color-brand-primary);
15
+ --primary-blue: var(--color-brand-primary);
16
+ --accent-purple: var(--color-brand-primary);
17
+ --accent-purple-deep: var(--color-brand-accent-deep);
18
+ --accent-pink: var(--color-brand-highlight);
19
+ --accent-slate: var(--color-brand-slate);
20
+ --accent-gradient: var(--color-brand-gradient);
21
+
22
+ /* Surface ramp */
23
+ --bg-primary: var(--color-surface-topbar);
24
+ --bg-secondary: var(--color-surface-topbar-lift);
25
+ --bg-tertiary: var(--color-surface-topbar-active);
26
+ --bg-elevated: var(--color-surface-topbar-active);
27
+
28
+ /* Text */
29
+ --text-primary: var(--color-text-primary);
30
+ --text-secondary: var(--color-text-secondary);
31
+ --text-tertiary: var(--color-text-tertiary);
32
+
33
+ /* Borders */
34
+ --border-color: var(--color-border-default);
35
+ --border-hover: var(--color-border-hover);
36
+
37
+ /* Type stacks */
38
+ --font-sans: var(--font-family-sans);
39
+ --font-mono: var(--font-family-mono);
40
+ }
@@ -0,0 +1,13 @@
1
+ /* Generated by style-dictionary. Loads the Material Symbols Outlined icon
2
+ font that @crewlethq/ui components render through
3
+ <span class="material-symbols-outlined">. Import it when the app renders
4
+ those components and does not load the icon font itself:
5
+ import '@crewlethq/tokens/css/material-symbols';
6
+
7
+ This stylesheet requests fonts.googleapis.com, and the browser then
8
+ downloads the font from fonts.gstatic.com. Material Symbols is published
9
+ by Google under the Apache License 2.0
10
+ (https://github.com/google/material-design-icons). No part of it is
11
+ redistributed in this package. */
12
+
13
+ @import url('https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap');
@@ -0,0 +1,57 @@
1
+ /* Generated by style-dictionary. Dark and light theme overrides for the
2
+ canonical --color-* tokens. The base tokens.css already emits the dark
3
+ palette at :root; this file repaints the slots that change between
4
+ themes (the brand accent family is the same in both and is not
5
+ repainted). Import this in addition to tokens.css when an app needs
6
+ runtime theme switching:
7
+ import '@crewlethq/tokens/css';
8
+ import '@crewlethq/tokens/css/themes';
9
+ Apply by toggling body.theme-light or body.theme-dark. */
10
+
11
+ /* Dark theme. Opaque surface ramp with a white primary action. */
12
+ body.theme-dark {
13
+ --color-surface-background: #15171c;
14
+ --color-surface-subtle: #1c1e24;
15
+ --color-surface-muted: #1c1e24;
16
+ --color-surface-elevated: #22252b;
17
+ --color-surface-topbar: #15171c;
18
+ --color-surface-topbar-lift: #1c1e24;
19
+ --color-surface-topbar-active: #22252b;
20
+ --color-text-primary: #fafafa;
21
+ --color-text-secondary: #c9ced8;
22
+ --color-text-tertiary: #8c99ad;
23
+ --color-text-muted: rgba(255, 255, 255, 0.3);
24
+ --color-text-inverse: #09090b;
25
+ --color-brand-primary: #ffffff;
26
+ --color-brand-primary-hover: rgba(255, 255, 255, 0.9);
27
+ --color-brand-primary-active: rgba(255, 255, 255, 0.82);
28
+ --color-text-on-brand: #000000;
29
+ --color-border-default: #3f4145;
30
+ --color-border-hover: #4a4d52;
31
+ --color-border-strong: #3f4145;
32
+ --color-border-strong-hover: #4a4d52;
33
+ }
34
+
35
+ /* Light theme. White surfaces, near-black text and a black primary action. */
36
+ body.theme-light {
37
+ --color-surface-background: #ffffff;
38
+ --color-surface-subtle: #f4f4f5;
39
+ --color-surface-muted: #f4f4f5;
40
+ --color-surface-elevated: #e3e3e6;
41
+ --color-surface-topbar: #ffffff;
42
+ --color-surface-topbar-lift: #f4f4f5;
43
+ --color-surface-topbar-active: #e3e3e6;
44
+ --color-text-primary: #09090b;
45
+ --color-text-secondary: #71717a;
46
+ --color-text-tertiary: rgba(25, 25, 28, 0.5);
47
+ --color-text-muted: rgba(0, 0, 0, 0.4);
48
+ --color-text-inverse: #fafafa;
49
+ --color-brand-primary: #000000;
50
+ --color-brand-primary-hover: rgba(0, 0, 0, 0.85);
51
+ --color-brand-primary-active: rgba(0, 0, 0, 0.7);
52
+ --color-text-on-brand: #ffffff;
53
+ --color-border-default: #e4e4e7;
54
+ --color-border-hover: #d4d4d8;
55
+ --color-border-strong: #e4e4e7;
56
+ --color-border-strong-hover: #d4d4d8;
57
+ }
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Do not edit directly, this file was auto-generated.
3
+ */
4
+
5
+ :root {
6
+ --blur-sm: 6px; /** Subtle frosted glass. */
7
+ --blur-md: 10px;
8
+ --blur-lg: 16px; /** Standard frosted-panel effect for dropdowns and top bars. */
9
+ --blur-xl: 20px; /** Hero overlays and decorative panels. */
10
+ --blur-2xl: 24px; /** Aggressive backdrop blur for emphasis. */
11
+ --breakpoint-sm: 480px; /** Small phones. */
12
+ --breakpoint-md: 768px; /** Tablets. The primary layout switch between stacked and multi-column. */
13
+ --breakpoint-lg: 1024px; /** Small laptops. */
14
+ --breakpoint-xl: 1200px; /** Standard desktop. */
15
+ --breakpoint-2xl: 1600px; /** Large desktop, such as wide marketing hero containers. */
16
+ --color-brand-primary: #5469d4; /** Primary brand color and the fill of primary actions. The focus and glow shadows are tinted with it; the theme overrides repaint it per palette. */
17
+ --color-brand-primary-hover: #4759c2;
18
+ --color-brand-primary-active: #3b4caa;
19
+ --color-brand-accent: #5469d4; /** Interactive accent for selected, active and focus states (a checked checkbox, an active chip, a selected card). The same in both theme palettes. */
20
+ --color-brand-accent-hover: #6478e0;
21
+ --color-brand-accent-active: #4a5cc2;
22
+ --color-brand-accent-rgb: 84, 105, 212; /** The accent as an r, g, b triple for translucent tints: rgba(var(--color-brand-accent-rgb), 0.12). Rebind it together with the accent. */
23
+ --color-brand-accent-soft: rgba(84, 105, 212, 0.10); /** Translucent accent fill behind an active or selected control. */
24
+ --color-brand-accent-soft-strong: rgba(84, 105, 212, 0.32); /** Translucent accent border paired with the soft fill. */
25
+ --color-brand-accent-deep: #5c24ff; /** Deep purple. Distinct from primary; used as a gradient stop and rarely on its own. */
26
+ --color-brand-highlight: #ff3bff; /** Hot pink highlight. The first stop of the brand gradient; use sparingly on its own. */
27
+ --color-brand-slate: #3c4052; /** Muted blue-grey for low-emphasis informational fills (toast progress drains, hover halos, info notification tints). */
28
+ --color-brand-gradient: linear-gradient(90deg, #ff3bff 0%, #ecbfbf 38%, #5c24ff 76%, #d94fd5 100%); /** Brand gradient. The one 4-stop definition every gradient surface uses, so marketing and product surfaces match. */
29
+ --color-surface-background: #000000;
30
+ --color-surface-subtle: rgba(255, 255, 255, 0.05);
31
+ --color-surface-muted: rgba(255, 255, 255, 0.08);
32
+ --color-surface-elevated: rgba(255, 255, 255, 0.12);
33
+ --color-surface-topbar: #15171c;
34
+ --color-surface-topbar-lift: #1c1e24;
35
+ --color-surface-topbar-active: #22252b;
36
+ --color-surface-inverse: #ffffff;
37
+ --color-text-primary: #fafafa; /** Slightly off-white to reduce eye strain on dark surfaces. */
38
+ --color-text-secondary: #c9ced8;
39
+ --color-text-tertiary: #8c99ad;
40
+ --color-text-muted: rgba(255, 255, 255, 0.3);
41
+ --color-text-on-brand: #ffffff;
42
+ --color-text-inverse: #09090b;
43
+ --color-border-default: rgba(255, 255, 255, 0.08);
44
+ --color-border-hover: rgba(255, 255, 255, 0.15);
45
+ --color-border-strong: #3f4145;
46
+ --color-border-strong-hover: #4a4d52; /** Solid dark-mode hover border. Use when hover should be a solid color instead of a translucent overlay. */
47
+ --color-feedback-success: #46a758; /** Running and healthy status green for status dots, badges and success icons. Softer than Tailwind green-500 so it does not glare on dark surfaces. */
48
+ --color-feedback-warning: #f59e0b;
49
+ --color-feedback-danger: #ef4444; /** Semantic error red for destructive actions and failure states. */
50
+ --color-feedback-danger-hover: #dc2626;
51
+ --color-feedback-info: #3b82f6;
52
+ --motion-duration-instant: 75ms; /** Tooltip flash, dropdown indicator nudge. */
53
+ --motion-duration-fast: 120ms; /** Menu hover and active state changes. */
54
+ --motion-duration-base: 150ms; /** Default UI transition. */
55
+ --motion-duration-moderate: 200ms; /** Nav hover, topbar background changes. */
56
+ --motion-duration-slow: 300ms; /** Modal enter, drawer slide. */
57
+ --motion-easing-default: ease;
58
+ --motion-easing-out: ease-out;
59
+ --motion-easing-in-out: ease-in-out;
60
+ --motion-easing-spring: cubic-bezier(0.34, 1.56, 0.64, 1); /** Slight overshoot for emphasized entries. */
61
+ --radius-none: 0px;
62
+ --radius-xs: 4px;
63
+ --radius-sm: 6px;
64
+ --radius-md: 8px;
65
+ --radius-lg: 12px;
66
+ --radius-xl: 16px;
67
+ --radius-2xl: 24px;
68
+ --radius-pill: 999px;
69
+ --radius-circle: 50%; /** Avatars, status dots, circular badges. */
70
+ --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.2);
71
+ --shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.15);
72
+ --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.25);
73
+ --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.3);
74
+ --shadow-xl: 0 12px 32px rgba(0, 0, 0, 0.4);
75
+ --shadow-2xl: 0 16px 64px rgba(0, 0, 0, 0.6);
76
+ --shadow-card: 0 8px 24px rgba(0, 0, 0, 0.1); /** Standard card depth on dark surfaces. */
77
+ --shadow-rim-lit: 0 4px 24px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.04); /** Card with a subtle inset rim light, for cards that need to lift off an already elevated surface. */
78
+ --shadow-focus: 0 0 0 3px rgba(84, 105, 212, 0.35); /** Focus ring tinted with the canonical brand color. */
79
+ --shadow-glow: 0 4px 24px rgba(84, 105, 212, 0.3);
80
+ --spacing-0: 0px;
81
+ --spacing-1: 4px;
82
+ --spacing-2: 8px;
83
+ --spacing-3: 12px;
84
+ --spacing-4: 16px;
85
+ --spacing-5: 20px;
86
+ --spacing-6: 24px;
87
+ --spacing-7: 32px;
88
+ --spacing-8: 40px;
89
+ --spacing-9: 48px;
90
+ --spacing-10: 64px;
91
+ --spacing-11: 80px;
92
+ --font-family-sans: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'; /** Interface and body type. Inter is self-hosted by @crewlethq/tokens/css/fonts; the system stack covers the moment before it loads and any app that does not import that stylesheet. */
93
+ --font-family-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace; /** Code, identifiers and tabular values. JetBrains Mono is self-hosted by @crewlethq/tokens/css/fonts. */
94
+ --font-size-xs: 12px;
95
+ --font-size-sm: 14px;
96
+ --font-size-md: 16px;
97
+ --font-size-lg: 18px;
98
+ --font-size-xl: 20px;
99
+ --font-size-2xl: 24px;
100
+ --font-size-3xl: 32px;
101
+ --font-size-4xl: 48px;
102
+ --font-size-5xl: 64px;
103
+ --font-weight-regular: 400;
104
+ --font-weight-medium: 500;
105
+ --font-weight-semibold: 600;
106
+ --font-weight-bold: 700;
107
+ --font-weight-extrabold: 800;
108
+ --font-line-height-tight: 1.2;
109
+ --font-line-height-snug: 1.4;
110
+ --font-line-height-normal: 1.5;
111
+ --font-line-height-relaxed: 1.7;
112
+ --z-index-base: 0;
113
+ --z-index-raised: 1; /** Lifts an element above its siblings inside its own stacking context, such as a control layered over a card. */
114
+ --z-index-sticky: 10; /** Sticky headers and pinned columns within the page flow. */
115
+ --z-index-dropdown: 100; /** In-flow menus that stay inside their container rather than portaling to the body. */
116
+ --z-index-overlay: 200; /** In-page overlays such as drawers and scrims that cover page chrome but not dialogs. */
117
+ --z-index-modal: 9999; /** Dialog backdrop and frame. High enough to clear any page chrome an application stacks with its own numbers. */
118
+ --z-index-popover: 10000; /** Floating panels portaled to the body (Select menus, Popover, date pickers). Above modal because they are routinely opened from inside a dialog, and a panel under the backdrop is hidden and swallows clicks. */
119
+ --z-index-toast: 10001; /** Top of the stack. A toast reports the outcome of what somebody just did, often in a dialog or from a menu opened inside one, so it sits above both. */
120
+ --font-family-display: var(--font-family-sans); /** Headings and other display type. An alias of the sans family, so a heading costs no extra download. Components keep reading this role token so a dedicated display face would land in one place. */
121
+ }
@@ -0,0 +1,155 @@
1
+ export declare const blur: {
2
+ readonly sm: "6px";
3
+ readonly md: "10px";
4
+ readonly lg: "16px";
5
+ readonly xl: "20px";
6
+ readonly "2xl": "24px";
7
+ };
8
+ export declare const breakpoint: {
9
+ readonly sm: "480px";
10
+ readonly md: "768px";
11
+ readonly lg: "1024px";
12
+ readonly xl: "1200px";
13
+ readonly "2xl": "1600px";
14
+ };
15
+ export declare const color: {
16
+ readonly brand: {
17
+ readonly primary: "#5469d4";
18
+ readonly primaryHover: "#4759c2";
19
+ readonly primaryActive: "#3b4caa";
20
+ readonly accent: "#5469d4";
21
+ readonly accentHover: "#6478e0";
22
+ readonly accentActive: "#4a5cc2";
23
+ readonly accentRgb: "84, 105, 212";
24
+ readonly accentSoft: "rgba(84, 105, 212, 0.10)";
25
+ readonly accentSoftStrong: "rgba(84, 105, 212, 0.32)";
26
+ readonly accentDeep: "#5c24ff";
27
+ readonly highlight: "#ff3bff";
28
+ readonly slate: "#3c4052";
29
+ readonly gradient: "linear-gradient(90deg, #ff3bff 0%, #ecbfbf 38%, #5c24ff 76%, #d94fd5 100%)";
30
+ };
31
+ readonly surface: {
32
+ readonly background: "#000000";
33
+ readonly subtle: "rgba(255, 255, 255, 0.05)";
34
+ readonly muted: "rgba(255, 255, 255, 0.08)";
35
+ readonly elevated: "rgba(255, 255, 255, 0.12)";
36
+ readonly topbar: "#15171c";
37
+ readonly topbarLift: "#1c1e24";
38
+ readonly topbarActive: "#22252b";
39
+ readonly inverse: "#ffffff";
40
+ };
41
+ readonly text: {
42
+ readonly primary: "#fafafa";
43
+ readonly secondary: "#c9ced8";
44
+ readonly tertiary: "#8c99ad";
45
+ readonly muted: "rgba(255, 255, 255, 0.3)";
46
+ readonly onBrand: "#ffffff";
47
+ readonly inverse: "#09090b";
48
+ };
49
+ readonly border: {
50
+ readonly default: "rgba(255, 255, 255, 0.08)";
51
+ readonly hover: "rgba(255, 255, 255, 0.15)";
52
+ readonly strong: "#3f4145";
53
+ readonly strongHover: "#4a4d52";
54
+ };
55
+ readonly feedback: {
56
+ readonly success: "#46a758";
57
+ readonly warning: "#f59e0b";
58
+ readonly danger: "#ef4444";
59
+ readonly dangerHover: "#dc2626";
60
+ readonly info: "#3b82f6";
61
+ };
62
+ };
63
+ export declare const motion: {
64
+ readonly duration: {
65
+ readonly instant: "75ms";
66
+ readonly fast: "120ms";
67
+ readonly base: "150ms";
68
+ readonly moderate: "200ms";
69
+ readonly slow: "300ms";
70
+ };
71
+ readonly easing: {
72
+ readonly default: "ease";
73
+ readonly out: "ease-out";
74
+ readonly inOut: "ease-in-out";
75
+ readonly spring: "cubic-bezier(0.34, 1.56, 0.64, 1)";
76
+ };
77
+ };
78
+ export declare const radius: {
79
+ readonly none: "0px";
80
+ readonly xs: "4px";
81
+ readonly sm: "6px";
82
+ readonly md: "8px";
83
+ readonly lg: "12px";
84
+ readonly xl: "16px";
85
+ readonly "2xl": "24px";
86
+ readonly pill: "999px";
87
+ readonly circle: "50%";
88
+ };
89
+ export declare const shadow: {
90
+ readonly xs: "0 1px 2px rgba(0, 0, 0, 0.2)";
91
+ readonly sm: "0 2px 8px rgba(0, 0, 0, 0.15)";
92
+ readonly md: "0 4px 12px rgba(0, 0, 0, 0.25)";
93
+ readonly lg: "0 8px 24px rgba(0, 0, 0, 0.3)";
94
+ readonly xl: "0 12px 32px rgba(0, 0, 0, 0.4)";
95
+ readonly "2xl": "0 16px 64px rgba(0, 0, 0, 0.6)";
96
+ readonly card: "0 8px 24px rgba(0, 0, 0, 0.1)";
97
+ readonly rimLit: "0 4px 24px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.04)";
98
+ readonly focus: "0 0 0 3px rgba(84, 105, 212, 0.35)";
99
+ readonly glow: "0 4px 24px rgba(84, 105, 212, 0.3)";
100
+ };
101
+ export declare const spacing: {
102
+ readonly "0": "0px";
103
+ readonly "1": "4px";
104
+ readonly "2": "8px";
105
+ readonly "3": "12px";
106
+ readonly "4": "16px";
107
+ readonly "5": "20px";
108
+ readonly "6": "24px";
109
+ readonly "7": "32px";
110
+ readonly "8": "40px";
111
+ readonly "9": "48px";
112
+ readonly "10": "64px";
113
+ readonly "11": "80px";
114
+ };
115
+ export declare const font: {
116
+ readonly family: {
117
+ readonly sans: "Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'";
118
+ readonly display: "Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'";
119
+ readonly mono: "'JetBrains Mono', ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace";
120
+ };
121
+ readonly size: {
122
+ readonly xs: "12px";
123
+ readonly sm: "14px";
124
+ readonly md: "16px";
125
+ readonly lg: "18px";
126
+ readonly xl: "20px";
127
+ readonly "2xl": "24px";
128
+ readonly "3xl": "32px";
129
+ readonly "4xl": "48px";
130
+ readonly "5xl": "64px";
131
+ };
132
+ readonly weight: {
133
+ readonly regular: "400";
134
+ readonly medium: "500";
135
+ readonly semibold: "600";
136
+ readonly bold: "700";
137
+ readonly extrabold: "800";
138
+ };
139
+ readonly lineHeight: {
140
+ readonly tight: "1.2";
141
+ readonly snug: "1.4";
142
+ readonly normal: "1.5";
143
+ readonly relaxed: "1.7";
144
+ };
145
+ };
146
+ export declare const zIndex: {
147
+ readonly base: "0";
148
+ readonly raised: "1";
149
+ readonly sticky: "10";
150
+ readonly dropdown: "100";
151
+ readonly overlay: "200";
152
+ readonly modal: "9999";
153
+ readonly popover: "10000";
154
+ readonly toast: "10001";
155
+ };
package/dist/index.js ADDED
@@ -0,0 +1,156 @@
1
+ /* Generated by style-dictionary. Do not edit. */
2
+ export const blur = {
3
+ "sm": "6px",
4
+ "md": "10px",
5
+ "lg": "16px",
6
+ "xl": "20px",
7
+ "2xl": "24px"
8
+ };
9
+ export const breakpoint = {
10
+ "sm": "480px",
11
+ "md": "768px",
12
+ "lg": "1024px",
13
+ "xl": "1200px",
14
+ "2xl": "1600px"
15
+ };
16
+ export const color = {
17
+ "brand": {
18
+ "primary": "#5469d4",
19
+ "primaryHover": "#4759c2",
20
+ "primaryActive": "#3b4caa",
21
+ "accent": "#5469d4",
22
+ "accentHover": "#6478e0",
23
+ "accentActive": "#4a5cc2",
24
+ "accentRgb": "84, 105, 212",
25
+ "accentSoft": "rgba(84, 105, 212, 0.10)",
26
+ "accentSoftStrong": "rgba(84, 105, 212, 0.32)",
27
+ "accentDeep": "#5c24ff",
28
+ "highlight": "#ff3bff",
29
+ "slate": "#3c4052",
30
+ "gradient": "linear-gradient(90deg, #ff3bff 0%, #ecbfbf 38%, #5c24ff 76%, #d94fd5 100%)"
31
+ },
32
+ "surface": {
33
+ "background": "#000000",
34
+ "subtle": "rgba(255, 255, 255, 0.05)",
35
+ "muted": "rgba(255, 255, 255, 0.08)",
36
+ "elevated": "rgba(255, 255, 255, 0.12)",
37
+ "topbar": "#15171c",
38
+ "topbarLift": "#1c1e24",
39
+ "topbarActive": "#22252b",
40
+ "inverse": "#ffffff"
41
+ },
42
+ "text": {
43
+ "primary": "#fafafa",
44
+ "secondary": "#c9ced8",
45
+ "tertiary": "#8c99ad",
46
+ "muted": "rgba(255, 255, 255, 0.3)",
47
+ "onBrand": "#ffffff",
48
+ "inverse": "#09090b"
49
+ },
50
+ "border": {
51
+ "default": "rgba(255, 255, 255, 0.08)",
52
+ "hover": "rgba(255, 255, 255, 0.15)",
53
+ "strong": "#3f4145",
54
+ "strongHover": "#4a4d52"
55
+ },
56
+ "feedback": {
57
+ "success": "#46a758",
58
+ "warning": "#f59e0b",
59
+ "danger": "#ef4444",
60
+ "dangerHover": "#dc2626",
61
+ "info": "#3b82f6"
62
+ }
63
+ };
64
+ export const motion = {
65
+ "duration": {
66
+ "instant": "75ms",
67
+ "fast": "120ms",
68
+ "base": "150ms",
69
+ "moderate": "200ms",
70
+ "slow": "300ms"
71
+ },
72
+ "easing": {
73
+ "default": "ease",
74
+ "out": "ease-out",
75
+ "inOut": "ease-in-out",
76
+ "spring": "cubic-bezier(0.34, 1.56, 0.64, 1)"
77
+ }
78
+ };
79
+ export const radius = {
80
+ "none": "0px",
81
+ "xs": "4px",
82
+ "sm": "6px",
83
+ "md": "8px",
84
+ "lg": "12px",
85
+ "xl": "16px",
86
+ "2xl": "24px",
87
+ "pill": "999px",
88
+ "circle": "50%"
89
+ };
90
+ export const shadow = {
91
+ "xs": "0 1px 2px rgba(0, 0, 0, 0.2)",
92
+ "sm": "0 2px 8px rgba(0, 0, 0, 0.15)",
93
+ "md": "0 4px 12px rgba(0, 0, 0, 0.25)",
94
+ "lg": "0 8px 24px rgba(0, 0, 0, 0.3)",
95
+ "xl": "0 12px 32px rgba(0, 0, 0, 0.4)",
96
+ "2xl": "0 16px 64px rgba(0, 0, 0, 0.6)",
97
+ "card": "0 8px 24px rgba(0, 0, 0, 0.1)",
98
+ "rimLit": "0 4px 24px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.04)",
99
+ "focus": "0 0 0 3px rgba(84, 105, 212, 0.35)",
100
+ "glow": "0 4px 24px rgba(84, 105, 212, 0.3)"
101
+ };
102
+ export const spacing = {
103
+ "0": "0px",
104
+ "1": "4px",
105
+ "2": "8px",
106
+ "3": "12px",
107
+ "4": "16px",
108
+ "5": "20px",
109
+ "6": "24px",
110
+ "7": "32px",
111
+ "8": "40px",
112
+ "9": "48px",
113
+ "10": "64px",
114
+ "11": "80px"
115
+ };
116
+ export const font = {
117
+ "family": {
118
+ "sans": "Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'",
119
+ "display": "Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'",
120
+ "mono": "'JetBrains Mono', ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace"
121
+ },
122
+ "size": {
123
+ "xs": "12px",
124
+ "sm": "14px",
125
+ "md": "16px",
126
+ "lg": "18px",
127
+ "xl": "20px",
128
+ "2xl": "24px",
129
+ "3xl": "32px",
130
+ "4xl": "48px",
131
+ "5xl": "64px"
132
+ },
133
+ "weight": {
134
+ "regular": "400",
135
+ "medium": "500",
136
+ "semibold": "600",
137
+ "bold": "700",
138
+ "extrabold": "800"
139
+ },
140
+ "lineHeight": {
141
+ "tight": "1.2",
142
+ "snug": "1.4",
143
+ "normal": "1.5",
144
+ "relaxed": "1.7"
145
+ }
146
+ };
147
+ export const zIndex = {
148
+ "base": "0",
149
+ "raised": "1",
150
+ "sticky": "10",
151
+ "dropdown": "100",
152
+ "overlay": "200",
153
+ "modal": "9999",
154
+ "popover": "10000",
155
+ "toast": "10001"
156
+ };
package/fonts/OFL.txt ADDED
@@ -0,0 +1,101 @@
1
+ The faces in this directory are redistributed under the SIL Open Font License,
2
+ Version 1.1. They are the `latin` and `latin-ext` subsets that Google Fonts
3
+ serves for these families: subsets and partial instances of the upstream
4
+ variable fonts, and therefore Modified Versions under the definitions below.
5
+ Neither family declares a Reserved Font Name. fonts/README.md records where
6
+ each file was downloaded from, and SHA256SUMS its checksum.
7
+
8
+ Inter
9
+ Copyright (c) 2016 The Inter Project Authors
10
+ https://github.com/rsms/inter
11
+
12
+ JetBrains Mono
13
+ Copyright (c) 2020 The JetBrains Mono Project Authors
14
+ https://github.com/JetBrains/JetBrainsMono
15
+
16
+ -----------------------------------------------------------
17
+ SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
18
+ -----------------------------------------------------------
19
+
20
+ PREAMBLE
21
+ The goals of the Open Font License (OFL) are to stimulate worldwide
22
+ development of collaborative font projects, to support the font creation
23
+ efforts of academic and linguistic communities, and to provide a free and
24
+ open framework in which fonts may be shared and improved in partnership
25
+ with others.
26
+
27
+ The OFL allows the licensed fonts to be used, studied, modified and
28
+ redistributed freely as long as they are not sold by themselves. The
29
+ fonts, including any derivative works, can be bundled, embedded,
30
+ redistributed and/or sold with any software provided that any reserved
31
+ names are not used by derivative works. The fonts and derivatives,
32
+ however, cannot be released under any other type of license. The
33
+ requirement for fonts to remain under this license does not apply
34
+ to any document created using the fonts or their derivatives.
35
+
36
+ DEFINITIONS
37
+ "Font Software" refers to the set of files released by the Copyright
38
+ Holder(s) under this license and clearly marked as such. This may
39
+ include source files, build scripts and documentation.
40
+
41
+ "Reserved Font Name" refers to any names specified as such after the
42
+ copyright statement(s).
43
+
44
+ "Original Version" refers to the collection of Font Software components as
45
+ distributed by the Copyright Holder(s).
46
+
47
+ "Modified Version" refers to any derivative made by adding to, deleting,
48
+ or substituting -- in part or in whole -- any of the components of the
49
+ Original Version, by changing formats or by porting the Font Software to a
50
+ new environment.
51
+
52
+ "Author" refers to any designer, engineer, programmer, technical
53
+ writer or other person who contributed to the Font Software.
54
+
55
+ PERMISSION & CONDITIONS
56
+ Permission is hereby granted, free of charge, to any person obtaining
57
+ a copy of the Font Software, to use, study, copy, merge, embed, modify,
58
+ redistribute, and sell modified and unmodified copies of the Font
59
+ Software, subject to the following conditions:
60
+
61
+ 1) Neither the Font Software nor any of its individual components,
62
+ in Original or Modified Versions, may be sold by itself.
63
+
64
+ 2) Original or Modified Versions of the Font Software may be bundled,
65
+ redistributed and/or sold with any software, provided that each copy
66
+ contains the above copyright notice and this license. These can be
67
+ included either as stand-alone text files, human-readable headers or
68
+ in the appropriate machine-readable metadata fields within text or
69
+ binary files as long as those fields can be easily viewed by the user.
70
+
71
+ 3) No Modified Version of the Font Software may use the Reserved Font
72
+ Name(s) unless explicit written permission is granted by the corresponding
73
+ Copyright Holder. This restriction only applies to the primary font name as
74
+ presented to the users.
75
+
76
+ 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
77
+ Software shall not be used to promote, endorse or advertise any
78
+ Modified Version, except to acknowledge the contribution(s) of the
79
+ Copyright Holder(s) and the Author(s) or with their explicit written
80
+ permission.
81
+
82
+ 5) The Font Software, modified or unmodified, in part or in whole,
83
+ must be distributed entirely under this license, and must not be
84
+ distributed under any other license. The requirement for fonts to
85
+ remain under this license does not apply to any document created
86
+ using the Font Software.
87
+
88
+ TERMINATION
89
+ This license becomes null and void if any of the above conditions are
90
+ not met.
91
+
92
+ DISCLAIMER
93
+ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
94
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
95
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
96
+ OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
97
+ COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
98
+ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
99
+ DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
100
+ FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
101
+ OTHER DEALINGS IN THE FONT SOFTWARE.
@@ -0,0 +1,41 @@
1
+ # Fonts
2
+
3
+ The type families behind `--font-family-sans`, `--font-family-display` (an alias of sans) and `--font-family-mono`. `@crewlethq/tokens/css/fonts` declares an `@font-face` rule for every file below with a relative URL, so a bundler copies the files next to the application and no font is fetched from a third-party host.
4
+
5
+ | Family | Version | Axes | Files | License | Upstream |
6
+ | ------ | ------- | ---- | ----- | ------- | -------- |
7
+ | Inter | 4.001 | `wght` 100 to 900 (optical size fixed at 14) | `inter-latin.woff2`, `inter-latin-ext.woff2` | SIL Open Font License 1.1 | <https://github.com/rsms/inter> |
8
+ | JetBrains Mono | 2.211 | `wght` 100 to 800 | `jetbrains-mono-latin.woff2`, `jetbrains-mono-latin-ext.woff2` | SIL Open Font License 1.1 | <https://github.com/JetBrains/JetBrainsMono> |
9
+
10
+ The version and axes are read from each file's `name` and `fvar` tables. Upright style only; a browser synthesises italics.
11
+
12
+ ## Provenance
13
+
14
+ The files are the `latin` and `latin-ext` subsets that Google Fonts serves, downloaded unchanged from these stylesheet responses (requested with a current Chrome user agent, which selects variable woff2 files):
15
+
16
+ | Stylesheet request | Subset | File | Downloaded from |
17
+ | ------------------ | ------ | ---- | --------------- |
18
+ | `https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap` | latin | `inter-latin.woff2` | `https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0Q5nw.woff2` |
19
+ | same | latin-ext | `inter-latin-ext.woff2` | `https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7W0Q5n-wU.woff2` |
20
+ | `https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@100..800&display=swap` | latin | `jetbrains-mono-latin.woff2` | `https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbV2o-flEEny0FZhsfKu5WU4xD7OwGtT0rU.woff2` |
21
+ | same | latin-ext | `jetbrains-mono-latin-ext.woff2` | `https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbV2o-flEEny0FZhsfKu5WU4xD1OwGtT0rU3BE.woff2` |
22
+
23
+ [`SHA256SUMS`](./SHA256SUMS) holds the checksum of every file. `shasum -a 256 -c SHA256SUMS` verifies them, and the package build fails when a file does not match its checksum or has none.
24
+
25
+ Google Fonts builds these subsets from the upstream variable fonts: it keeps only the glyphs in each subset's unicode range, fixes Inter's optical size axis at 14 and drops the license description from the `name` table. Under the definitions in the OFL that makes them Modified Versions. That is permitted, because neither family declares a Reserved Font Name, and they remain under the OFL. The copyright notices are preserved in each file and in `OFL.txt`.
26
+
27
+ The `latin` subset covers basic Latin, Latin-1 and common punctuation; `latin-ext` adds the extended Latin alphabets. Each `@font-face` rule carries the same `unicode-range` the stylesheet response declares, so a page that renders only basic Latin text downloads one file per family. Other scripts (Cyrillic, Greek, Vietnamese) are not included and render in the fallback system fonts of the family stack.
28
+
29
+ ## License
30
+
31
+ Both families are licensed under the SIL Open Font License, Version 1.1. [`OFL.txt`](./OFL.txt) holds the copyright notices and the full license text. The OFL requires that text to travel with the font files wherever they are redistributed, and it continues to apply to these files whatever license covers the rest of this package.
32
+
33
+ An application that bundles the fonts meets that condition by shipping `OFL.txt` with them: import `@crewlethq/tokens/fonts/OFL.txt` as an asset so the bundler emits it beside the font files, or copy its text into the application's third-party notices.
34
+
35
+ ## Replacing a file
36
+
37
+ 1. Request the stylesheet in the table above (with the family's full `wght` range) using a current Chrome user agent, and download the `latin` and `latin-ext` woff2 files it references. Keep the file names.
38
+ 2. Read the version and the axes from each file (for example with `fonttools ttx -t name -t fvar -t STAT`).
39
+ 3. Regenerate the checksums with `shasum -a 256 *.woff2 > SHA256SUMS` in this directory.
40
+ 4. Update both tables above, the `weight` range for the family in `scripts/build.mjs`, the unicode ranges there if the stylesheet response changed them, and the copyright lines in `OFL.txt` if upstream changed them.
41
+ 5. Run `npm run build` in this package. The build fails if a file referenced by `scripts/build.mjs` is missing or does not match `SHA256SUMS`.
@@ -0,0 +1,4 @@
1
+ a28eb6d3ccb534ae0c94ca999371df024aab60b08c3c8a5720ee9e32fa0faaa2 inter-latin-ext.woff2
2
+ c940764593d0fe5d596be327ca7558855e018039fb78509aa21921fd3644c3e4 inter-latin.woff2
3
+ 7db7affbce1fdee69c1ffc2641bbca289b049867f524c9d861fe35ab6670bf29 jetbrains-mono-latin-ext.woff2
4
+ 1e06740a02a443fb7f3eeda8fcaa685a0f6c620e3f01e6666e847295469ce3ad jetbrains-mono-latin.woff2
Binary file
Binary file
Binary file
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "@crewlethq/tokens",
3
+ "version": "0.2.0",
4
+ "description": "Crewlet design tokens. Single JSON source compiled to CSS variables and typed JS modules.",
5
+ "license": "MIT AND OFL-1.1",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/crewlet/uilet.git",
9
+ "directory": "packages/tokens"
10
+ },
11
+ "homepage": "https://github.com/crewlet/uilet/tree/main/packages/tokens#readme",
12
+ "bugs": {
13
+ "url": "https://github.com/crewlet/uilet/issues"
14
+ },
15
+ "type": "module",
16
+ "sideEffects": [
17
+ "**/*.css"
18
+ ],
19
+ "main": "./dist/index.js",
20
+ "module": "./dist/index.js",
21
+ "types": "./dist/index.d.ts",
22
+ "exports": {
23
+ ".": {
24
+ "types": "./dist/index.d.ts",
25
+ "import": "./dist/index.js"
26
+ },
27
+ "./css": "./dist/css/tokens.css",
28
+ "./css/fonts": "./dist/css/fonts.css",
29
+ "./css/legacy": "./dist/css/legacy.css",
30
+ "./css/material-symbols": "./dist/css/material-symbols.css",
31
+ "./css/themes": "./dist/css/themes.css",
32
+ "./fonts/*": "./fonts/*"
33
+ },
34
+ "files": [
35
+ "dist",
36
+ "fonts"
37
+ ],
38
+ "scripts": {
39
+ "build": "node scripts/build.mjs && tsc -p tsconfig.json",
40
+ "dev": "node scripts/build.mjs --watch",
41
+ "lint": "eslint scripts",
42
+ "typecheck": "tsc -p tsconfig.json --noEmit",
43
+ "clean": "rm -rf dist src/index.ts"
44
+ },
45
+ "devDependencies": {
46
+ "style-dictionary": "^5.5.3"
47
+ },
48
+ "publishConfig": {
49
+ "access": "public",
50
+ "registry": "https://registry.npmjs.org"
51
+ }
52
+ }