@techsio/ui-kit 0.11.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/.storybook/main.d.ts.map +1 -1
  2. package/dist/.storybook/preview.d.ts.map +1 -1
  3. package/dist/organisms/footer.figma.js +51 -0
  4. package/dist/organisms/footer.js +11 -11
  5. package/dist/organisms/gallery.figma.js +34 -0
  6. package/dist/organisms/header.figma.js +58 -0
  7. package/dist/organisms/table.figma.js +87 -0
  8. package/dist/organisms/table.js +6 -6
  9. package/dist/src/organisms/footer.d.ts.map +1 -1
  10. package/dist/src/organisms/footer.figma.d.ts +2 -0
  11. package/dist/src/organisms/footer.figma.d.ts.map +1 -0
  12. package/dist/src/organisms/gallery.figma.d.ts +2 -0
  13. package/dist/src/organisms/gallery.figma.d.ts.map +1 -0
  14. package/dist/src/organisms/header.figma.d.ts +2 -0
  15. package/dist/src/organisms/header.figma.d.ts.map +1 -0
  16. package/dist/src/organisms/table.figma.d.ts +2 -0
  17. package/dist/src/organisms/table.figma.d.ts.map +1 -0
  18. package/dist/src/theme/theme-config.d.ts +41 -0
  19. package/dist/src/theme/theme-config.d.ts.map +1 -0
  20. package/dist/src/theme/theme-provider.d.ts +37 -0
  21. package/dist/src/theme/theme-provider.d.ts.map +1 -0
  22. package/dist/src/theme/theme-toggle.d.ts +4 -0
  23. package/dist/src/theme/theme-toggle.d.ts.map +1 -0
  24. package/dist/theme/theme-config.js +46 -0
  25. package/dist/theme/theme-provider.js +101 -0
  26. package/dist/theme/theme-toggle.js +71 -0
  27. package/package.json +34 -31
  28. package/src/tokens/_tokens-base.css +6 -0
  29. package/src/tokens/components/organisms/_footer.css +8 -82
  30. package/src/tokens/components/organisms/_gallery.css +11 -33
  31. package/src/tokens/components/organisms/_header.css +11 -80
  32. package/src/tokens/components/organisms/_table.css +15 -61
  33. package/src/tokens/figma/brand-overrides.css +49 -0
  34. package/src/tokens/figma/dark/variables.css +10 -6
  35. package/src/tokens/figma/light/variables.css +10 -6
  36. package/src/tokens/figma/neo/variables.css +1792 -0
  37. package/src/tokens/figma/neo-dark/variables.css +1792 -0
  38. package/src/tokens/figma/variables.css +13 -8
@@ -0,0 +1,71 @@
1
+ "use client"
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { Button } from "../atoms/button.js";
4
+ import { tv } from "../utils.js";
5
+ import { getBrand } from "./theme-config.js";
6
+ import { useAppTheme } from "./theme-provider.js";
7
+ const themeToggle = tv({
8
+ slots: {
9
+ root: "",
10
+ group: "flex flex-col gap-100",
11
+ modeGroup: "mt-150 flex flex-col gap-100",
12
+ label: "text-sm",
13
+ row: "flex gap-50"
14
+ }
15
+ });
16
+ const MODE_LABELS = {
17
+ light: "Light",
18
+ dark: "Dark",
19
+ system: "System"
20
+ };
21
+ function ThemeToggle({ className }) {
22
+ const { brand, brands, setBrand, mode, setMode, availableModes, mounted } = useAppTheme();
23
+ const showModes = availableModes.length > 1;
24
+ const { root, group, modeGroup, label, row } = themeToggle();
25
+ return /*#__PURE__*/ jsxs("div", {
26
+ className: root({
27
+ className
28
+ }),
29
+ children: [
30
+ /*#__PURE__*/ jsxs("div", {
31
+ className: group(),
32
+ children: [
33
+ /*#__PURE__*/ jsx("span", {
34
+ className: label(),
35
+ children: "Brand"
36
+ }),
37
+ /*#__PURE__*/ jsx("div", {
38
+ className: row(),
39
+ children: brands.map((key)=>/*#__PURE__*/ jsx(Button, {
40
+ onClick: ()=>setBrand(key),
41
+ size: "sm",
42
+ theme: mounted && key === brand ? "solid" : "outlined",
43
+ variant: "primary",
44
+ children: getBrand(key).label
45
+ }, key))
46
+ })
47
+ ]
48
+ }),
49
+ showModes && /*#__PURE__*/ jsxs("div", {
50
+ className: modeGroup(),
51
+ children: [
52
+ /*#__PURE__*/ jsx("span", {
53
+ className: label(),
54
+ children: "Mode"
55
+ }),
56
+ /*#__PURE__*/ jsx("div", {
57
+ className: row(),
58
+ children: availableModes.map((value)=>/*#__PURE__*/ jsx(Button, {
59
+ onClick: ()=>setMode(value),
60
+ size: "sm",
61
+ theme: mounted && value === mode ? "solid" : "outlined",
62
+ variant: "secondary",
63
+ children: MODE_LABELS[value]
64
+ }, value))
65
+ })
66
+ ]
67
+ })
68
+ ]
69
+ });
70
+ }
71
+ export { ThemeToggle };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@techsio/ui-kit",
3
- "version": "0.11.0",
3
+ "version": "0.13.0",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "type": "git",
@@ -44,6 +44,10 @@
44
44
  "types": "./dist/src/templates/*.d.ts",
45
45
  "import": "./dist/templates/*.js"
46
46
  },
47
+ "./theme/*": {
48
+ "types": "./dist/src/theme/*.d.ts",
49
+ "import": "./dist/theme/*.js"
50
+ },
47
51
  "./utils": {
48
52
  "types": "./dist/src/utils.d.ts",
49
53
  "import": "./dist/utils.js"
@@ -78,27 +82,28 @@
78
82
  "@iconify-json/mdi-light": "^1.2.2",
79
83
  "@iconify-json/svg-spinners": "^1.2.4",
80
84
  "@iconify/tailwind4": "^1.1.0",
81
- "@zag-js/accordion": "^1.31.1",
82
- "@zag-js/carousel": "^1.31.1",
83
- "@zag-js/checkbox": "^1.31.1",
84
- "@zag-js/combobox": "^1.31.1",
85
- "@zag-js/dialog": "^1.31.1",
86
- "@zag-js/i18n-utils": "^1.31.1",
87
- "@zag-js/menu": "^1.31.1",
88
- "@zag-js/number-input": "^1.31.1",
89
- "@zag-js/pagination": "^1.31.1",
90
- "@zag-js/popover": "^1.31.1",
91
- "@zag-js/radio-group": "^1.31.1",
92
- "@zag-js/rating-group": "^1.31.1",
93
- "@zag-js/react": "^1.31.1",
94
- "@zag-js/select": "^1.31.1",
95
- "@zag-js/slider": "^1.31.1",
96
- "@zag-js/steps": "^1.31.1",
97
- "@zag-js/switch": "^1.31.1",
98
- "@zag-js/tabs": "^1.31.1",
99
- "@zag-js/toast": "^1.31.1",
100
- "@zag-js/tooltip": "^1.31.1",
101
- "@zag-js/tree-view": "^1.31.1",
85
+ "@zag-js/accordion": "^1.41.2",
86
+ "@zag-js/carousel": "^1.41.2",
87
+ "@zag-js/checkbox": "^1.41.2",
88
+ "@zag-js/combobox": "^1.41.2",
89
+ "@zag-js/dialog": "^1.41.2",
90
+ "@zag-js/i18n-utils": "^1.41.2",
91
+ "@zag-js/menu": "^1.41.2",
92
+ "@zag-js/number-input": "^1.41.2",
93
+ "@zag-js/pagination": "^1.41.2",
94
+ "@zag-js/popover": "^1.41.2",
95
+ "@zag-js/radio-group": "^1.41.2",
96
+ "@zag-js/rating-group": "^1.41.2",
97
+ "@zag-js/react": "^1.41.2",
98
+ "@zag-js/select": "^1.41.2",
99
+ "@zag-js/slider": "^1.41.2",
100
+ "@zag-js/steps": "^1.41.2",
101
+ "@zag-js/switch": "^1.41.2",
102
+ "@zag-js/tabs": "^1.41.2",
103
+ "@zag-js/toast": "^1.41.2",
104
+ "@zag-js/tooltip": "^1.41.2",
105
+ "@zag-js/tree-view": "^1.41.2",
106
+ "better-themes": "^1.1.0",
102
107
  "libphonenumber-js": "^1.13.2",
103
108
  "tailwind-merge": "^3.4.0",
104
109
  "tailwind-variants": "^3.1.1",
@@ -117,12 +122,10 @@
117
122
  "@semantic-release/github": "^12.0.2",
118
123
  "@semantic-release/npm": "^13.1.2",
119
124
  "@semantic-release/release-notes-generator": "^14.1.0",
120
- "@storybook/addon-a11y": "^10.0.3",
121
- "@storybook/addon-links": "^10.0.2",
122
- "@storybook/addon-onboarding": "^10.0.2",
123
- "@storybook/addon-themes": "^10.0.2",
124
- "@storybook/react": "^10.0.2",
125
- "@storybook/test-runner": "^0.24.2",
125
+ "@storybook/addon-a11y": "^10.4.4",
126
+ "@storybook/addon-themes": "^10.4.4",
127
+ "@storybook/react": "^10.4.4",
128
+ "@storybook/test-runner": "^0.24.4",
126
129
  "@tailwindcss/postcss": "^4.1.17",
127
130
  "@techsio/storybook-a11y-reporter": "0.1.3",
128
131
  "@techsio/storybook-better-a11y": "0.1.3",
@@ -133,9 +136,9 @@
133
136
  "postcss": "^8.5.6",
134
137
  "rsbuild-plugin-publint": "^0.3.3",
135
138
  "semantic-release": "^25.0.2",
136
- "storybook": "^10.0.2",
137
- "storybook-addon-rslib": "^2.1.6",
138
- "storybook-react-rsbuild": "^2.1.4",
139
+ "storybook": "^10.4.4",
140
+ "storybook-addon-rslib": "^3.3.4",
141
+ "storybook-react-rsbuild": "^3.3.4",
139
142
  "tailwindcss": "^4.1.17",
140
143
  "typescript": "^5.9.3"
141
144
  },
@@ -20,6 +20,12 @@
20
20
  * Generated by merge-figma-themes.mjs from figma/{light,dark}/variables.css. */
21
21
  @import "./figma/variables.css";
22
22
 
23
+ /* Brand theme overrides ([data-theme="…"]). Imported AFTER variables.css so
24
+ * the unlayered selectors win over the @theme base values, while their
25
+ * light-dark() halves still follow `color-scheme`. Only non-base brands
26
+ * (e.g. neo) emit tokens here; base is the default @theme above. */
27
+ @import "./figma/brand-overrides.css";
28
+
23
29
  /* Base styles */
24
30
  :root {
25
31
  color-scheme: light dark;
@@ -1,85 +1,11 @@
1
+ /*
2
+ * Footer — runtime tokens come entirely from
3
+ * libs/ui/src/tokens/figma/variables.css.
4
+ *
5
+ * Kept: `--footer-cols` runtime grid-template-columns value
6
+ * (repeat/minmax can't be expressed as a Figma variable).
7
+ */
8
+
1
9
  @theme static {
2
10
  --footer-cols: repeat(auto-fit, minmax(22%, 1fr));
3
-
4
- /* === COLORS === */
5
- --color-footer: var(--color-surface);
6
-
7
- /* Background */
8
- --color-footer-bg: var(--color-footer);
9
- --color-footer-container-bg: var(--color-footer);
10
- --color-footer-section-bg: var(--color-footer);
11
- --color-footer-list-bg: var(--color-footer);
12
- --color-footer-bottom-bg: var(--color-footer);
13
-
14
- /* Foreground */
15
- --color-footer-fg-primary: var(--color-fg-primary);
16
- --color-footer-fg-secondary: var(--color-fg-secondary);
17
-
18
- --color-footer-title-fg: var(--color-footer-fg-primary);
19
- --color-footer-title-fg-hover: var(--color-primary);
20
- --color-footer-link-fg: var(--color-footer-fg-secondary);
21
- --color-footer-link-fg-hover: var(--color-primary);
22
- --color-footer-text-fg: var(--color-footer-fg-secondary);
23
-
24
- /* Divider & Bottom */
25
- --color-footer-divider-bg: var(--color-fg-reverse);
26
-
27
- /* === TYPOGRAPHY === */
28
- --text-footer-title-sm: var(--text-md);
29
- --text-footer-title-md: var(--text-lg);
30
- --text-footer-title-lg: var(--text-xl);
31
-
32
- --text-footer-link-sm: var(--text-sm);
33
- --text-footer-link-md: var(--text-md);
34
- --text-footer-link-lg: var(--text-lg);
35
-
36
- --text-footer-text-sm: var(--text-xs);
37
- --text-footer-text-md: var(--text-sm);
38
- --text-footer-text-lg: var(--text-md);
39
-
40
- --font-weight-footer-title: var(--font-weight-semibold);
41
- --font-weight-footer-link: var(--font-weight-normal);
42
-
43
- /* === SIZES === */
44
- --container-footer-max: var(--container-max-w);
45
-
46
- /* === SPACING === */
47
- /* Root padding */
48
- --padding-footer-root-sm: var(--spacing-100);
49
- --padding-footer-root-md: var(--spacing-200);
50
- --padding-footer-root-lg: var(--spacing-300);
51
-
52
- /* Container spacing */
53
- --spacing-footer-container-sm: var(--spacing-300);
54
- --spacing-footer-container-md: var(--spacing-400);
55
- --spacing-footer-container-lg: var(--spacing-500);
56
-
57
- /* Section spacing */
58
- --spacing-footer-section-sm: var(--spacing-50);
59
- --spacing-footer-section-md: var(--spacing-100);
60
- --spacing-footer-section-lg: var(--spacing-150);
61
-
62
- /* List spacing */
63
- --spacing-footer-list-gap: var(--spacing-100);
64
- --spacing-footer-list-gap-sm: var(--spacing-50);
65
- --spacing-footer-list-gap-md: var(--spacing-100);
66
- --spacing-footer-list-gap-lg: var(--spacing-150);
67
-
68
- /* Bottom padding */
69
- --padding-footer-bottom: var(--spacing-300);
70
- --padding-footer-bottom-sm: var(--spacing-200);
71
- --padding-footer-bottom-md: var(--spacing-300);
72
- --padding-footer-bottom-lg: var(--spacing-400);
73
-
74
- /* Divider margins */
75
- --margin-footer-divider-sm: var(--spacing-200);
76
- --margin-footer-divider-md: var(--spacing-300);
77
- --margin-footer-divider-lg: var(--spacing-400);
78
-
79
- /* === BORDERS & EFFECTS === */
80
- --border-width-footer: var(--border-width-md);
81
- --color-footer-border: var(--color-border-primary);
82
- --height-footer-divider: 2px;
83
-
84
- --radius-footer: 0;
85
11
  }
@@ -1,35 +1,13 @@
1
- @theme static {
2
- /* === REFERENCE LAYER === */
3
- --color-gallery: var(--color-surface);
4
- --color-gallery-accent: var(--color-primary);
5
-
6
- /* === DERIVED COLORS === */
7
- --color-gallery-trigger-bg: oklch(
8
- from var(--color-gallery) calc(l - var(--surface-increment) * 2) c h
9
- );
10
- --color-gallery-trigger-bg-active: oklch(
11
- from var(--color-gallery) calc(l - var(--surface-increment) * 3) c h
12
- );
13
- --color-gallery-trigger-border: var(--color-border-primary);
14
- --color-gallery-trigger-border-active: var(--color-gallery-accent);
15
- --color-gallery-trigger-ring: var(--color-ring);
16
-
17
- /* === SPACING === */
18
- --spacing-gallery-xs: var(--spacing-50);
19
- --spacing-gallery-sm: var(--spacing-100);
20
- --spacing-gallery-md: var(--spacing-200);
21
- --spacing-gallery-lg: var(--spacing-300);
22
- --spacing-gallery-root: var(--spacing-200);
23
- --padding-gallery-trigger: 0 0;
24
-
25
- /* === DIMENSIONS === */
1
+ /*
2
+ * Gallery runtime tokens come entirely from
3
+ * libs/ui/src/tokens/figma/variables.css.
4
+ *
5
+ * Kept: `--height-gallery` responsive cap. Figma flattens it to a fixed
6
+ * dimension (576px); the `min(60svh, 36rem)` viewport behaviour can't be
7
+ * expressed as a Figma variable, so an unlayered `:root` override (which
8
+ * beats Figma's `@theme static`) restores it.
9
+ */
10
+
11
+ :root {
26
12
  --height-gallery: min(60svh, 36rem);
27
-
28
- /* === EFFECTS === */
29
- --brightness-gallery-trigger: 70%;
30
- --brightness-gallery-trigger-active: 100%;
31
- --shadow-gallery-trigger: var(--shadow-sm);
32
-
33
- /* === BORDERS === */
34
- --radius-gallery-trigger: var(--radius-sm);
35
13
  }
@@ -1,3 +1,13 @@
1
+ /*
2
+ * Header — runtime tokens come entirely from
3
+ * libs/ui/src/tokens/figma/variables.css.
4
+ *
5
+ * Kept:
6
+ * - `:root @media (width < 48rem)` nav-spacing override (responsive,
7
+ * conditional value — can't be expressed as a Figma variable).
8
+ * - glyph utilities mapping the menu/close icons.
9
+ */
10
+
1
11
  :root {
2
12
  @media (width < 48rem) {
3
13
  --spacing-header-nav-sm: var(--spacing-50);
@@ -6,89 +16,10 @@
6
16
  }
7
17
  }
8
18
 
9
- @theme static {
10
- /* === REFERENCE LAYER === */
11
- /* These tokens reference semantic tokens from _semantic.css */
12
- --color-header: var(--color-surface);
13
- --color-header-accent: var(--color-primary);
14
-
15
- /* Reference typhography */
16
- --text-header-sm: var(--text-sm);
17
- --text-header-md: var(--text-md);
18
- --text-header-lg: var(--text-lg);
19
-
20
- /* === DERIVED COLORS === */
21
- /* Background colors */
22
- --color-header-bg: var(--color-header);
23
-
24
- /* === ITEMS === */
25
- --color-header-nav-item-bg: transparent;
26
- --color-header-nav-item-bg-hover: transparent;
27
-
28
- --text-header-item-sm: var(--text-header-sm);
29
- --text-header-item-md: var(--text-header-md);
30
- --text-header-item-lg: var(--text-header-lg);
31
-
32
- /* === ACTIONS === */
33
-
34
- /* Foreground colors */
35
- --color-header-fg: var(--color-fg-primary);
36
- --color-header-nav-fg: var(--color-fg-secondary);
37
- --color-header-nav-fg-hover: var(--color-header-fg);
38
- --color-header-nav-fg-active: var(--color-header-accent);
39
- --color-header-actions-fg: var(--color-primary);
40
- --color-header-actions-fg-hover: var(--color-header-fg);
41
-
42
- /* Border colors */
43
-
44
- /* === SIZE === */
45
- /* Width constraints */
46
- --width-header-max: 100%;
47
-
48
- /* === SPACING === */
49
- /* Section spacing */
50
- --spacing-header-container: var(--spacing-100);
51
-
52
- --padding-header-item-sm: var(--spacing-100);
53
- --padding-header-item-md: var(--spacing-150);
54
- --padding-header-item-lg: var(--spacing-200);
55
-
56
- --spacing-header-nav-sm: var(--spacing-200);
57
- --spacing-header-nav-md: var(--spacing-300);
58
- --spacing-header-nav-lg: var(--spacing-400);
59
-
60
- --spacing-header-actions-sm: var(--spacing-200);
61
- --spacing-header-actions-md: var(--spacing-300);
62
- --spacing-header-actions-lg: var(--spacing-400);
63
-
64
- /* === TYPOGRAPHY === */
65
- --font-weight-header-nav: var(--font-weight-medium);
66
- --font-weight-header-nav-active: var(--font-weight-semibold);
67
-
68
- /* === Z-INDEX === */
69
- /* Mobile menu hamburger colors */
70
- --color-header-hamburger-fg: var(--color-fg-primary);
71
- --color-header-hamburger-fg-hover: var(--color-fg-secondary);
72
-
73
- /* hamburger button */
74
- --text-header-hamburger-sm: var(--text-header-sm);
75
- --text-header-hamburger-md: var(--text-header-md);
76
- --text-header-hamburger-lg: var(--text-header-lg);
77
-
78
- --padding-header-hamburger-sm: var(--spacing-100);
79
- --padding-header-hamburger-md: var(--spacing-150);
80
- --padding-header-hamburger-lg: var(--spacing-200);
81
-
82
- /* breakpoint */
83
- --container-header-desktop: 48rem;
84
-
85
- --duration-header: 300ms;
86
- }
87
-
88
19
  @utility token-icon-header-menu {
89
20
  @apply token-icon-menu;
90
21
  }
91
22
 
92
23
  @utility token-icon-header-close {
93
24
  @apply token-icon-close;
94
- }
25
+ }
@@ -1,63 +1,17 @@
1
- @theme static {
2
- /* === BASE COLOR MAPPING === */
3
- --color-table: var(--color-surface);
4
- --color-table-border: var(--color-border-primary);
5
- --color-table-accent: var(--color-primary);
6
-
7
- /* === DERIVED COLORS === */
8
- /* Background colors */
9
- --color-table-bg: var(--color-table);
10
- --color-table-header-bg: oklch(
11
- from var(--color-table-bg) calc(l - var(--surface-increment)) c h
12
- );
13
- --color-table-footer-bg: var(--color-table-header-bg);
14
- --color-table-row-bg: transparent;
15
- --color-table-row-bg-hover: oklch(
16
- from var(--color-table-bg) calc(l + var(--state-hover)) c h
17
- );
18
- --color-table-row-bg-selected: --alpha(var(--color-table-accent) / 0.1);
19
- --color-table-row-striped-bg-primary: oklch(
20
- from var(--color-table-bg) calc(l - var(--surface-increment)) c h
21
- );
22
- --color-table-row-striped-bg-secondary: var(--color-table-row-bg);
23
-
24
- /* Foreground colors */
25
- --color-table-fg: var(--color-fg-primary);
26
- --color-table-header-fg: var(--color-fg-primary);
27
- --color-table-footer-fg: var(--color-fg-secondary);
28
- --color-table-caption-fg: var(--color-fg-secondary);
29
-
30
- /* === SPACING === */
31
- /* Cell padding */
32
- --padding-table-cell-sm: var(--spacing-100) var(--spacing-150);
33
- --padding-table-cell-md: var(--spacing-150) var(--spacing-200);
34
- --padding-table-cell-lg: var(--spacing-200) var(--spacing-250);
35
-
36
- /* Caption padding */
37
- --padding-table-caption-sm: var(--spacing-100);
38
- --padding-table-caption-md: var(--spacing-150);
39
- --padding-table-caption-lg: var(--spacing-200);
1
+ /*
2
+ * Table runtime tokens come entirely from
3
+ * libs/ui/src/tokens/figma/variables.css.
4
+ *
5
+ * Kept: `--padding-table-cell-{sm,md,lg}` composites. Figma exports the cell
6
+ * padding split into `-x`/`-y`; the `p-table-cell-*` shorthand utilities are
7
+ * rebuilt here (padding: y x) from those Figma halves.
8
+ */
40
9
 
41
- /* === TYPOGRAPHY === */
42
- /* Font weights */
43
- --font-weight-table-header: var(--font-weight-semibold);
44
- --font-weight-table-footer: var(--font-weight-medium);
45
- --font-weight-table-caption: var(--font-weight-normal);
46
-
47
- /* Text sizes for table content */
48
- --text-table-sm: var(--text-sm);
49
- --text-table-md: var(--text-md);
50
- --text-table-lg: var(--text-lg);
51
-
52
- /* Caption text sizes */
53
- --text-table-caption-sm: var(--text-xs);
54
- --text-table-caption-md: var(--text-sm);
55
- --text-table-caption-lg: var(--text-md);
56
-
57
- /* === BORDERS & RADIUS === */
58
- --border-width-table: var(--border-width-sm);
59
- --radius-table: var(--radius-sm);
60
-
61
- /* === SHADOWS === */
62
- --shadow-table-outline: var(--shadow-sm);
10
+ @theme static {
11
+ --padding-table-cell-sm: var(--padding-table-cell-sm-y)
12
+ var(--padding-table-cell-sm-x);
13
+ --padding-table-cell-md: var(--padding-table-cell-md-y)
14
+ var(--padding-table-cell-md-x);
15
+ --padding-table-cell-lg: var(--padding-table-cell-lg-y)
16
+ var(--padding-table-cell-lg-x);
63
17
  }
@@ -0,0 +1,49 @@
1
+ /*
2
+ * Brand theme overrides — non-base brands keyed by [data-theme].
3
+ * Generated by merge-figma-themes.mjs. DO NOT EDIT BY HAND.
4
+ *
5
+ * Only tokens whose merged value differs from the base brand are
6
+ * emitted; everything else inherits base via var() chains. Plain
7
+ * (unlayered) selectors so they win over @theme while still
8
+ * respecting `color-scheme` for the light-dark() halves.
9
+ */
10
+
11
+ [data-theme="neo"] {
12
+ --color-badge-fg-primary: var(--color-fg-reverse);
13
+ --color-bg-light-primary-active: var(--color-primary-300);
14
+ --color-bg-light-primary-base: var(--color-primary-100);
15
+ --color-bg-light-primary-hover: var(--color-primary-200);
16
+ --color-bg-outlined-primary-active: var(--color-primary-200);
17
+ --color-bg-outlined-primary-hover: var(--color-primary-100);
18
+ --color-bg-primary-active: var(--color-primary-800);
19
+ --color-bg-primary-base: var(--color-primary-600);
20
+ --color-bg-primary-hover: var(--color-primary-700);
21
+ --color-button-fg-primary: var(--color-fg-reverse);
22
+ --color-fg-accent-primary: var(--color-primary-600);
23
+ --color-primary-100: oklch(0.936 0.032 17.738);
24
+ --color-primary-200: oklch(0.883 0.062 18.386);
25
+ --color-primary-300: oklch(0.805 0.111 19.782);
26
+ --color-primary-400: light-dark(oklch(0.702 0.189 22.228), oklch(0.745 0.155 20.548));
27
+ --color-primary-500: light-dark(oklch(0.638 0.237 25.436), oklch(0.702 0.189 22.228));
28
+ --color-primary-600: oklch(0.581 0.238 29.234);
29
+ --color-primary-700: light-dark(oklch(0.509 0.209 28.513), oklch(0.583 0.239 28.476));
30
+ --color-primary-800: light-dark(oklch(0.445 0.177 26.787), oklch(0.509 0.209 28.513));
31
+ --color-primary-900: light-dark(oklch(0.397 0.141 25.714), oklch(0.445 0.177 26.787));
32
+ --color-primary-alpha-10: oklch(0.581 0.238 29.234 / 0.1);
33
+ --color-product-card-button-cart-fg: var(--color-fg-reverse);
34
+ --color-radio-card-addon-fg-solid-checked: var(--color-fg-reverse);
35
+ --color-radio-card-item-description-fg-solid-checked: var(--color-fg-reverse);
36
+ --color-radio-card-item-indicator-bg-solid-checked: var(--color-fg-reverse);
37
+ --color-radio-card-item-indicator-border-solid-checked: var(--color-fg-reverse);
38
+ --color-secondary-100: #fef3c7;
39
+ --color-secondary-200: #fde68a;
40
+ --color-secondary-300: #fcd34d;
41
+ --color-secondary-400: #fbbf24;
42
+ --color-secondary-500: #f59e0b;
43
+ --color-secondary-600: #d97706;
44
+ --color-secondary-700: #b45309;
45
+ --color-secondary-800: #92400e;
46
+ --color-secondary-900: #78350f;
47
+ --color-steps-indicator-fg-solid: var(--color-fg-reverse);
48
+ --color-tabs-trigger-fg-solid-selected: var(--color-fg-reverse);
49
+ }
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * Design tokens exported from Figma
3
- * Exported at: 2026-06-12T13:18:24.711Z
3
+ * Exported at: 2026-06-16T10:13:13.205Z
4
4
  * Format: Raw CSS variables grouped by kind
5
5
  */
6
6
  :root {
@@ -291,6 +291,7 @@
291
291
  --color-fill-highlight: var(--color-neutral-700);
292
292
  --color-fill-hover: var(--color-white-10);
293
293
  --color-fill-overlay: var(--color-neutral-800);
294
+ --color-fill-selected: var(--color-primary-alpha-10);
294
295
  --color-fill-surface: var(--color-neutral-800);
295
296
  --color-float: var(--color-fill-highlight);
296
297
  --color-footer-bg: var(--color-fill-surface);
@@ -483,6 +484,7 @@
483
484
  --color-primary-900: oklch(0.391 0.089 240.611);
484
485
  --color-primary-accent-fg: var(--color-fg-accent-primary);
485
486
  --color-primary-active: var(--color-bg-primary-active);
487
+ --color-primary-alpha-10: oklch(0.807 0.101 250.446 / 0.1);
486
488
  --color-primary-disabled: var(--color-bg-disabled);
487
489
  --color-primary-hover: var(--color-bg-primary-hover);
488
490
  --color-primary-light: var(--color-bg-light-primary-base);
@@ -741,14 +743,14 @@
741
743
  --color-table-border: var(--color-border-primary);
742
744
  --color-table-caption-fg: var(--color-fg-secondary);
743
745
  --color-table-fg: var(--color-fg-primary);
744
- --color-table-footer-bg: var(--color-bg-light-primary-base);
746
+ --color-table-footer-bg: var(--color-fill-base);
745
747
  --color-table-footer-fg: var(--color-fg-secondary);
746
- --color-table-header-bg: var(--color-bg-light-primary-base);
748
+ --color-table-header-bg: var(--color-fill-base);
747
749
  --color-table-header-fg: var(--color-fg-primary);
748
750
  --color-table-row-bg: var(--color-bg-transparent);
749
- --color-table-row-bg-hover: var(--color-bg-light-primary-base);
750
- --color-table-row-bg-selected: var(--color-bg-light-primary-base);
751
- --color-table-row-striped-primary: var(--color-bg-light-primary-base);
751
+ --color-table-row-bg-hover: var(--color-fill-hover);
752
+ --color-table-row-bg-selected: var(--color-fill-selected);
753
+ --color-table-row-striped-primary: var(--color-fill-base);
752
754
  --color-table-row-striped-secondary: var(--color-bg-transparent);
753
755
  --color-tabs-bg: var(--color-fill-surface);
754
756
  --color-tabs-border-base: var(--color-border-primary);
@@ -1329,6 +1331,7 @@
1329
1331
  --shadow-accordion-root-md: var(--shadow-xl);
1330
1332
  --shadow-accordion-root-sm: var(--shadow-primary);
1331
1333
  --shadow-dialog-content: var(--shadow-primary);
1334
+ --shadow-gallery-trigger: var(--shadow-sm);
1332
1335
  --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1);
1333
1336
  --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1);
1334
1337
  --shadow-menu-content: var(--shadow-lg);
@@ -1338,6 +1341,7 @@
1338
1341
  --shadow-select-content: var(--shadow-md);
1339
1342
  --shadow-slider-thumb: var(--shadow-sm);
1340
1343
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
1344
+ --shadow-table-outline: var(--shadow-sm);
1341
1345
  --shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.15), 0 10px 10px rgba(0, 0, 0, 0.04);
1342
1346
  --size-1: 0.06rem;
1343
1347
  --size-12: 0.75rem;