@infonomic/uikit 3.8.0 → 3.10.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 (73) hide show
  1. package/dist/components/dropdown/dropdown_module.css +1 -1
  2. package/dist/components/forms/calendar_module.css +12 -45
  3. package/dist/components/forms/radio-group_module.css +2 -2
  4. package/dist/components/notifications/alert_module.css +15 -15
  5. package/dist/components/table/table_module.css +2 -2
  6. package/dist/components/tabs/tabs_module.css +4 -5
  7. package/dist/styles/styles.css +1 -1
  8. package/dist/styles/typography.css +1 -1
  9. package/dist/widgets/datepicker/datepicker.js +2 -2
  10. package/dist/widgets/datepicker/datepicker_module.css +13 -13
  11. package/dist/widgets/drawer/drawer_module.css +6 -6
  12. package/dist/widgets/modal/modal_module.css +12 -12
  13. package/dist/widgets/timeline/timeline_module.css +7 -7
  14. package/package.json +1 -1
  15. package/src/components/accordion/accordion.stories.tsx +2 -2
  16. package/src/components/avatar/avatar.stories.tsx +1 -1
  17. package/src/components/badge/badge.stories.tsx +1 -1
  18. package/src/components/button/button-group.stories.tsx +1 -1
  19. package/src/components/button/button-intents.stories.tsx +1 -1
  20. package/src/components/button/button-variants.stories.tsx +1 -1
  21. package/src/components/button/control-buttons.stories.tsx +2 -2
  22. package/src/components/button/icon-button.stories.tsx +2 -2
  23. package/src/components/card/card.stories.tsx +2 -2
  24. package/src/components/container/container.stories.tsx +4 -10
  25. package/src/components/dropdown/dropdown.module.css +1 -1
  26. package/src/components/dropdown/dropdown.stories.tsx +1 -1
  27. package/src/components/forms/calendar.module.css +12 -58
  28. package/src/components/forms/calendar.stories.tsx +3 -3
  29. package/src/components/forms/checkbox.stories.tsx +1 -1
  30. package/src/components/forms/input.stories.tsx +1 -1
  31. package/src/components/forms/radio-group.module.css +2 -2
  32. package/src/components/forms/text-area.stories.tsx +2 -2
  33. package/src/components/notifications/alert.module.css +15 -15
  34. package/src/components/notifications/alert.stories.tsx +1 -1
  35. package/src/components/notifications/toast.stories.tsx +1 -1
  36. package/src/components/pager/pagination.stories.tsx +3 -3
  37. package/src/components/scroll-area/scroll-area.stories.tsx +1 -1
  38. package/src/components/table/table.module.css +2 -2
  39. package/src/components/table/table.stories.tsx +1 -1
  40. package/src/components/tabs/tabs.module.css +7 -5
  41. package/src/components/tabs/tabs.stories.tsx +1 -1
  42. package/src/loaders/loaders.stories.tsx +1 -1
  43. package/src/styles/base/base.css +1 -0
  44. package/src/styles/base/size.css +24 -0
  45. package/src/styles/base/spacing.css +20 -17
  46. package/src/styles/functional/borders.css +23 -0
  47. package/src/styles/functional/colors.css +51 -94
  48. package/src/styles/functional/functional.css +3 -0
  49. package/src/styles/functional/grid-flex.css +11 -11
  50. package/src/styles/functional/surfaces.css +115 -0
  51. package/src/styles/functional/typography.css +44 -0
  52. package/src/styles/local-fonts.css +72 -0
  53. package/src/styles/theme/autofill.css +14 -5
  54. package/src/styles/theme/defaults.css +75 -0
  55. package/src/styles/theme/scrollers.css +4 -2
  56. package/src/styles/theme/theme.css +15 -130
  57. package/src/styles/theme/theme.stories.tsx +7 -6
  58. package/src/styles/typography/code.stories.tsx +3 -3
  59. package/src/styles/typography/default.stories.tsx +1 -1
  60. package/src/styles/typography/lists.stories.tsx +1 -1
  61. package/src/styles/typography/prose.css +9 -9
  62. package/src/styles/typography/quote.stories.tsx +1 -1
  63. package/src/styles/utils/utility-classes.css +190 -58
  64. package/src/widgets/datepicker/datepicker.module.css +13 -13
  65. package/src/widgets/datepicker/datepicker.stories.tsx +1 -1
  66. package/src/widgets/datepicker/datepicker.tsx +2 -2
  67. package/src/widgets/drawer/drawer.module.css +6 -6
  68. package/src/widgets/modal/modal.module.css +12 -12
  69. package/src/widgets/modal/modal.stories.tsx +2 -9
  70. package/src/widgets/search/search.stories.tsx +1 -1
  71. package/src/widgets/timeline/timeline.module.css +7 -7
  72. package/src/widgets/timeline/timeline.stories.tsx +1 -1
  73. package/src/styles/theme/typography.css +0 -26
@@ -51,7 +51,7 @@
51
51
  display: flex;
52
52
  align-items: start;
53
53
  width: 100%;
54
- margin-bottom: var(--spacing-2);
54
+ margin-bottom: var(--spacing-8);
55
55
  gap: var(--gap-2);
56
56
  }
57
57
 
@@ -74,37 +74,37 @@
74
74
 
75
75
  /* Intents */
76
76
  .primary {
77
- --alert-border: var(--primary-300);
78
- --alert-background: oklch(from var(--primary-500) l c h / 0.1);
77
+ --alert-border: var(--stroke-primary);
78
+ --alert-background: var(--fill-primary-weak);
79
79
  }
80
80
 
81
81
  .secondary {
82
- --alert-border: var(--secondary-300);
83
- --alert-background: oklch(from var(--secondary-500) l c h / 0.1);
82
+ --alert-border: var(--stroke-secondary);
83
+ --alert-background: var(--fill-secondary-weak);
84
84
  }
85
85
 
86
86
  .noeffect {
87
- --alert-border: var(--gray-300);
88
- --alert-background: oklch(from var(--gray-500) l c h / 0.1);
87
+ --alert-border: var(--stroke-noeffect);
88
+ --alert-background: var(--fill-noeffect-weak);
89
89
  }
90
90
 
91
91
  .success {
92
- --alert-border: var(--green-300);
93
- --alert-background: oklch(from var(--green-500) l c h / 0.1);
92
+ --alert-border: var(--stroke-success);
93
+ --alert-background: var(--fill-success-weak);
94
94
  }
95
95
 
96
96
  .info {
97
- --alert-border: var(--blue-300);
98
- --alert-background: oklch(from var(--blue-500) l c h / 0.1);
97
+ --alert-border: var(--stroke-info);
98
+ --alert-background: var(--fill-info-weak);
99
99
  }
100
100
 
101
101
  .warning {
102
- --alert-border: var(--yellow-300);
103
- --alert-background: oklch(from var(--yellow-500) l c h / 0.1);
102
+ --alert-border: var(--stroke-warning);
103
+ --alert-background: var(--fill-warning-weak);
104
104
  }
105
105
 
106
106
  .danger {
107
- --alert-border: var(--red-300);
108
- --alert-background: oklch(from var(--red-500) l c h / 0.1);
107
+ --alert-border: var(--stroke-danger);
108
+ --alert-background: var(--fill-danger-weak);
109
109
  }
110
110
  }
@@ -7,7 +7,7 @@ import { Alert as AlertComponent } from './alert.js'
7
7
 
8
8
  export const Alerts = (): React.JSX.Element => {
9
9
  return (
10
- <div style={{ maxWidth: '600px', margin: '0 auto' }}>
10
+ <div style={{ maxWidth: '600px', margin: '2rem auto' }}>
11
11
  {intent.map((intent: Intent) => {
12
12
  if (intent !== 'noeffect') {
13
13
  return (
@@ -15,7 +15,7 @@ export const Toast = (): React.JSX.Element => {
15
15
  }
16
16
 
17
17
  return (
18
- <div className="mb-6 max-w-[600px]">
18
+ <div style={{ maxWidth: '600px', margin: '2rem 0' }}>
19
19
  <Button onClick={handleOpenToastClick}>Open Toast</Button>
20
20
  <ToastComponent
21
21
  title="Note"
@@ -32,7 +32,7 @@ const DefaultPager = (): React.JSX.Element => {
32
32
  }
33
33
  `}
34
34
  </style>
35
- <div style={{ marginBottom: '2rem', maxWidth: '600px' }}>
35
+ <div style={{ margin: '2rem 0', maxWidth: '600px' }}>
36
36
  <p style={{ marginBottom: '1rem' }}>Stateful Pagers: Current page: {page}</p>
37
37
  <EventPager
38
38
  page={page}
@@ -83,7 +83,7 @@ const ClassicPager = (): React.JSX.Element => {
83
83
  }
84
84
  `}
85
85
  </style>
86
- <div style={{ marginBottom: '2rem', maxWidth: '600px' }}>
86
+ <div style={{ margin: '2rem 0', maxWidth: '600px' }}>
87
87
  <p style={{ marginBottom: '1rem' }}>Stateful Pagers: Current page: {page}</p>
88
88
  <EventPager
89
89
  variant="classic"
@@ -137,7 +137,7 @@ const DashboardPager = (): React.JSX.Element => {
137
137
  }
138
138
  `}
139
139
  </style>
140
- <div style={{ marginBottom: '2rem', maxWidth: '600px' }}>
140
+ <div style={{ margin: '2rem 0', maxWidth: '600px' }}>
141
141
  <p style={{ marginBottom: '1rem' }}>Stateful Pagers: Current page: {page}</p>
142
142
  <EventPager
143
143
  variant="dashboard"
@@ -17,7 +17,7 @@ const TAGS = Array.from({ length: 50 }).map((_, i, a) => `v1.2.0-beta.${a.length
17
17
 
18
18
  export const ScrollArea = (): React.JSX.Element => {
19
19
  return (
20
- <div style={{ height: '100vh' }}>
20
+ <div style={{ height: '100vh', margin: '2rem 0' }}>
21
21
  <ScrollAreaComponent
22
22
  style={{ width: '200px', height: '300px', margin: '0 auto', border: '1px solid #ccc' }}
23
23
  >
@@ -47,7 +47,7 @@
47
47
  /* 'whitespace-nowrap px-2 py-4 text-sm text-gray-700 uppercase bg-canvas-100/50 dark:bg-canvas-800/50 dark:text-gray-200', */
48
48
  .table-heading-cell {
49
49
  white-space: nowrap;
50
- padding: var(--spacing-2) var(--spacing-2);
50
+ padding: var(--spacing-8) var(--spacing-8);
51
51
  font-size: 0.975rem; /* 15.6px */
52
52
  /* text-transform: uppercase; */
53
53
  background-color: var(--canvas-50);
@@ -55,7 +55,7 @@
55
55
 
56
56
  /* not-prose px-2 py-2 text-sm [&_a]:underline */
57
57
  .table-cell {
58
- padding: var(--spacing-2);
58
+ padding: var(--spacing-8);
59
59
  font-size: var(--font-size-sm);
60
60
 
61
61
  & a {
@@ -18,7 +18,7 @@ export default meta
18
18
 
19
19
  export const Table = (): React.JSX.Element => {
20
20
  return (
21
- <div style={{ maxWidth: '960px', margin: '0 auto' }}>
21
+ <div style={{ maxWidth: '960px', margin: '2rem auto' }}>
22
22
  <TableComponent.Container>
23
23
  <TableComponent>
24
24
  <TableComponent.Header>
@@ -4,9 +4,9 @@
4
4
 
5
5
  .tabs-root {
6
6
  display: flex;
7
- padding: var(--spacing-2);
7
+ padding: var(--spacing-8);
8
8
  flex-direction: column;
9
- gap: var(--spacing-1);
9
+ gap: var(--spacing-4);
10
10
  border-radius: var(--border-radius-md);
11
11
  border: 1px solid var(--border-color);
12
12
  }
@@ -17,7 +17,7 @@
17
17
  gap: var(--gap-2);
18
18
  align-items: center;
19
19
  border-radius: var(--border-radius-md);
20
- padding: var(--spacing-1);
20
+ padding: var(--spacing-4);
21
21
  border: 1px solid var(--border-color);
22
22
 
23
23
  &:focus-visible {
@@ -40,12 +40,14 @@
40
40
 
41
41
  &:focus {
42
42
  position: relative;
43
- box-shadow: 0 0 0 2px black;
43
+ /* NOTE: will override ring shadows for buttons */
44
+ /* Will revisit as we're going to rewrite our uikit tabs component */
45
+ /* box-shadow: 0 0 0 2px black; */
44
46
  }
45
47
  }
46
48
 
47
49
  .tabs-content {
48
- margin-top: var(--spacing-2);
50
+ margin-top: var(--spacing-8);
49
51
  padding: 6px;
50
52
  outline: none;
51
53
 
@@ -20,7 +20,7 @@ export const Tabs = (): React.JSX.Element => (
20
20
  <div
21
21
  style={{
22
22
  maxWidth: '700px',
23
- marginBottom: '24px',
23
+ margin: '2rem auto',
24
24
  display: 'flex',
25
25
  justifyContent: 'center',
26
26
  }}
@@ -1,8 +1,8 @@
1
1
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2
2
  import type React from 'react'
3
3
 
4
- import { LoaderEllipsis } from './ellipses.js'
5
4
  import { LoaderRing } from './ring.js'
5
+ import { LoaderEllipsis } from './ellipses.js'
6
6
  import { LoaderSpinner } from './spinner.js'
7
7
 
8
8
  interface LoaderProps {
@@ -7,6 +7,7 @@
7
7
  @import "./opacity.css";
8
8
  @import "./shadows.css";
9
9
  @import "./spacing.css";
10
+ @import "./size.css";
10
11
  @import "./transitions.css";
11
12
  @import "./typography.css";
12
13
  @import "./z-index.css";
@@ -0,0 +1,24 @@
1
+ @layer infonomic-base {
2
+ :root {
3
+ --size-0: 0;
4
+ --size-2: 0.125rem;
5
+ --size-4: 0.25rem;
6
+ --size-6: 0.375rem;
7
+ --size-8: 0.5rem;
8
+ --size-12: 0.75rem;
9
+ --size-16: 1rem;
10
+ --size-20: 1.25rem;
11
+ --size-24: 1.5rem;
12
+ --size-28: 1.75rem;
13
+ --size-32: 2rem;
14
+ --size-36: 2.25rem;
15
+ --size-40: 2.5rem;
16
+ --size-44: 2.75rem;
17
+ --size-48: 3rem;
18
+ --size-64: 4rem;
19
+ --size-80: 5rem;
20
+ --size-96: 6rem;
21
+ --size-112: 7rem;
22
+ --size-128: 8rem;
23
+ }
24
+ }
@@ -1,21 +1,24 @@
1
1
  @layer infonomic-base {
2
2
  :root {
3
- /* ========================================
4
- SPACING SYSTEM (8px grid)
5
- ======================================== */
6
- --spacing-0: 0px;
7
- --spacing-1: 4px;
8
- --spacing-2: 8px;
9
- --spacing-3: 12px;
10
- --spacing-4: 16px;
11
- --spacing-5: 20px;
12
- --spacing-6: 24px;
13
- --spacing-8: 32px;
14
- --spacing-10: 40px;
15
- --spacing-12: 48px;
16
- --spacing-16: 64px;
17
- --spacing-20: 80px;
18
- --spacing-24: 96px;
19
- --spacing-32: 128px;
3
+ --spacing-0: 0;
4
+ --spacing-2: 0.125rem;
5
+ --spacing-4: 0.25rem;
6
+ --spacing-6: 0.375rem;
7
+ --spacing-8: 0.5rem;
8
+ --spacing-12: 0.75rem;
9
+ --spacing-16: 1rem;
10
+ --spacing-20: 1.25rem;
11
+ --spacing-24: 1.5rem;
12
+ --spacing-28: 1.75rem;
13
+ --spacing-32: 2rem;
14
+ --spacing-36: 2.25rem;
15
+ --spacing-40: 2.5rem;
16
+ --spacing-44: 2.75rem;
17
+ --spacing-48: 3rem;
18
+ --spacing-64: 4rem;
19
+ --spacing-80: 5rem;
20
+ --spacing-96: 6rem;
21
+ --spacing-112: 7rem;
22
+ --spacing-128: 8rem;
20
23
  }
21
24
  }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * BORDER FUNCTIONAL TOKENS
3
+ *
4
+ * Semantic tokens for borders, including colors and potentially
5
+ * widths, styles, and radii in the future.
6
+ */
7
+
8
+ @layer infonomic-functional {
9
+ :root {
10
+ --border-color: var(--gray-100);
11
+ }
12
+
13
+ /* Dark mode */
14
+ .dark,
15
+ [data-theme="dark"] {
16
+ --border-color: var(--canvas-600);
17
+ }
18
+
19
+ /* Force light mode (local override) */
20
+ .not-dark {
21
+ --border-color: var(--gray-100);
22
+ }
23
+ }
@@ -26,28 +26,28 @@
26
26
  ----------------------------------------------------------------- */
27
27
 
28
28
  /* Fill tokens - for solid backgrounds (filled variant) */
29
- --fill-primary-strong: var(--primary-600);
30
- --fill-primary-strong-hover: oklch(from var(--primary-600) calc(l * 0.9) c h);
31
- --fill-primary-strong-disabled: oklch(from var(--primary-600) calc(l * 1.1) calc(c * 0.85) h);
29
+ --fill-primary-strong: var(--primary-500);
30
+ --fill-primary-strong-hover: oklch(from var(--primary-500) calc(l * 0.9) c h);
31
+ --fill-primary-strong-disabled: oklch(from var(--primary-500) calc(l * 1.1) calc(c * 0.85) h);
32
32
 
33
33
  /* Weak fill - for subtle backgrounds (outlined hover states) */
34
- --fill-primary-weak: oklch(from var(--primary-600) calc(l * 2.15) calc(c * 0.2) h);
34
+ --fill-primary-weak: oklch(from var(--primary-500) calc(l * 2.04) calc(c * 0.2) h);
35
35
  --fill-primary-weak-hover: oklch(from var(--canvas-50) calc(l * 0.995) c h);
36
36
 
37
37
  /* Text tokens - for foreground colors */
38
38
  --text-on-primary: white; /* Text on primary fill */
39
39
  --text-on-primary-disabled: oklch(from white calc(l * 0.9) calc(c * 0.85) h);
40
- --text-primary-strong: var(--primary-700); /* Primary-colored text (outlined, text variants) */
41
- --text-primary-weak: oklch(from var(--primary-600) calc(l * 0.7) c h); /* Muted primary text */
42
- --text-primary-disabled: oklch(from var(--primary-700) calc(l * 1.5) calc(c * 0.5) h);
40
+ --text-primary-strong: var(--primary-600); /* Primary-colored text (outlined, text variants) */
41
+ --text-primary-weak: oklch(from var(--primary-500) calc(l * 0.7) c h); /* Muted primary text */
42
+ --text-primary-disabled: oklch(from var(--primary-600) calc(l * 1.5) calc(c * 0.5) h);
43
43
 
44
44
  /* Stroke tokens - for borders */
45
- --stroke-primary: var(--primary-700);
46
- --stroke-primary-hover: oklch(from var(--primary-700) calc(l * 0.85) c h);
47
- --stroke-primary-disabled: oklch(from var(--primary-700) calc(l * 1.5) calc(c * 0.8) h);
45
+ --stroke-primary: var(--primary-600);
46
+ --stroke-primary-hover: oklch(from var(--primary-600) calc(l * 0.85) c h);
47
+ --stroke-primary-disabled: oklch(from var(--primary-600) calc(l * 1.5) calc(c * 0.8) h);
48
48
 
49
49
  /* Ring tokens - for focus states */
50
- --ring-primary: var(--primary-600);
50
+ --ring-primary: var(--primary-500);
51
51
 
52
52
  /* Gradient tokens */
53
53
  --gradient-primary-start: var(--primary-500);
@@ -210,53 +210,38 @@
210
210
  --gradient-danger-end: var(--red-700);
211
211
  --gradient-danger-foreground: white;
212
212
  --gradient-danger-disabled: oklch(from var(--red-700) calc(l * 1.2) calc(c * 0.85) h);
213
-
214
- /* SURFACE TOKENS (for panels, dropdowns, menus, lists)
215
- ----------------------------------------------------------------- */
216
-
217
- /* Panel/container backgrounds */
218
- --surface-panel: var(--canvas-25);
219
- --surface-panel-elevated: white; /* For dropdowns/popovers with shadow */
220
- --surface-panel-border: var(--border-color);
221
-
222
- /* Item backgrounds (default transparent, inherits panel) */
223
- --surface-item: transparent;
224
- --surface-item-hover: var(--canvas-50);
225
- --surface-item-active: var(--canvas-100);
226
-
227
- /* Item text colors */
228
- --surface-item-text: var(--text);
229
- --surface-item-text-hover: var(--text);
230
- --surface-item-text-active: var(--text);
231
- --surface-item-text-disabled: var(--gray-400);
232
-
233
- /* Panel scrollers */
234
- --surface-panel-scrollbar: var(--gray-50);
235
- --surface-panel-scrollbar-thumb: var(--primary-100);
236
213
 
237
214
  }
238
215
 
239
- /* ===================================================================
240
- DARK MODE
241
- =================================================================== */
242
- .dark {
216
+
217
+ /* 🌙 Dark via `.dark` class or [data-theme="dark"] attribute.
218
+ * We rely on the consuming application to detect a user's
219
+ * preferred color scheme - either by header or cookie, and to set
220
+ * a root html class accordingly (for now), which unfortunately means
221
+ * relying on either a server-side render or JS to set the theme
222
+ * on initial load.
223
+ */
224
+ .dark,
225
+ [data-theme="dark"],
226
+ [data-theme="dark"] ::backdrop
227
+ {
243
228
  /* PRIMARY INTENT TOKENS (Dark Mode)
244
229
  ----------------------------------------------------------------- */
245
230
 
246
231
  /* Fill tokens */
247
- --fill-primary-strong: var(--primary-600);
248
- --fill-primary-strong-hover: oklch(from var(--primary-600) calc(l * 0.9) c h);
249
- --fill-primary-strong-disabled: oklch(from var(--primary-600) calc(l * 0.85) calc(c * 0.85) h);
232
+ --fill-primary-strong: var(--primary-500);
233
+ --fill-primary-strong-hover: oklch(from var(--primary-500) calc(l * 0.9) c h);
234
+ --fill-primary-strong-disabled: oklch(from var(--primary-500) calc(l * 0.85) calc(c * 0.85) h);
250
235
 
251
236
  /* Weak fill - adjusted for dark backgrounds */
252
- --fill-primary-weak: oklch(from var(--primary-600) calc(l * 0.45) calc(c * 0.1) h);
237
+ --fill-primary-weak: oklch(from var(--primary-500) calc(l * 0.45) calc(c * 0.1) h);
253
238
  --fill-primary-weak-hover: var(--canvas-800);
254
239
 
255
240
  /* Text tokens */
256
241
  --text-on-primary: white; /* Same as light mode */
257
242
  --text-on-primary-disabled: oklch(from white calc(l * 0.85) calc(c * 0.85) h);
258
243
  --text-primary-strong: var(--primary-100); /* Lighter for dark backgrounds */
259
- --text-primary-weak: var(--primary-600); /* Used for text variant */
244
+ --text-primary-weak: var(--primary-500); /* Used for text variant */
260
245
  --text-primary-disabled: oklch(from var(--primary-100) calc(l * 0.8) calc(c * 0.8) h);
261
246
 
262
247
  /* Stroke tokens */
@@ -265,7 +250,7 @@
265
250
  --stroke-primary-disabled: oklch(from var(--primary-500) calc(l * 0.8) calc(c * 0.8) h);
266
251
 
267
252
  /* Ring tokens */
268
- --ring-primary: var(--primary-600);
253
+ --ring-primary: var(--primary-500);
269
254
 
270
255
  /* Gradient tokens */
271
256
  --gradient-primary-start: var(--primary-500);
@@ -424,70 +409,42 @@
424
409
  --gradient-danger-foreground: white;
425
410
  --gradient-danger-disabled: oklch(from var(--red-700) calc(l * 0.85) calc(c * 0.85) h);
426
411
 
427
- /* SURFACE TOKENS (Dark Mode)
428
- ----------------------------------------------------------------- */
429
-
430
- /* Panel/container backgrounds - slightly elevated from canvas-900 base */
431
- --surface-panel: var(--canvas-800);
432
- --surface-panel-elevated: var(--canvas-800);
433
- --surface-panel-border: var(--border-color);
434
-
435
- /* Item backgrounds - lighter than panel for hover/active */
436
- --surface-item: transparent;
437
- --surface-item-hover: var(--canvas-700);
438
- --surface-item-active: var(--canvas-600);
439
-
440
- /* Item text colors */
441
- --surface-item-text: var(--text);
442
- --surface-item-text-hover: var(--text);
443
- --surface-item-text-active: var(--text);
444
- --surface-item-text-disabled: var(--gray-500);
445
-
446
- /* Panel scrollers */
447
- --surface-panel-scrollbar: var(--canvas-700);
448
- --surface-panel-scrollbar-thumb: var(--primary-400);
449
412
  }
450
413
 
451
414
  /* ===================================================================
452
- .NOT-DARK OVERRIDE
453
- }
454
-
455
- /* .not-dark override: Forces light mode tokens by re-declaring :root values.
456
- * This duplication is intentional - it ensures .not-dark always wins over .dark
457
- * regardless of DOM order, without needing complex :not() selectors.
458
- * Alternative approaches (revert-layer, :not() patterns) would be more fragile.
415
+ * .NOT-DARK OVERRIDE
416
+ * .not-dark override: Forces light mode tokens by re-declaring :root values.
417
+ * This duplication is intentional - it ensures .not-dark always wins over .dark
418
+ * regardless of DOM order, without needing complex :not() selectors.
419
+ * Alternative approaches (revert-layer, :not() patterns) would be more fragile.
459
420
  */
460
-
461
- /* ===================================================================
462
- .NOT-DARK OVERRIDE
463
- Forces light mode tokens regardless of parent .dark class
464
- =================================================================== */
465
421
  .not-dark {
466
422
  /* PRIMARY INTENT TOKENS (Force Light Mode)
467
423
  ----------------------------------------------------------------- */
468
424
 
469
- /* Fill tokens - identical to :root light mode */
470
- --fill-primary-strong: var(--primary-600);
471
- --fill-primary-strong-hover: oklch(from var(--primary-600) calc(l * 0.9) c h);
472
- --fill-primary-strong-disabled: oklch(from var(--primary-600) calc(l * 1.1) calc(c * 0.85) h);
425
+ /* Fill tokens - for solid backgrounds (filled variant) */
426
+ --fill-primary-strong: var(--primary-500);
427
+ --fill-primary-strong-hover: oklch(from var(--primary-500) calc(l * 0.9) c h);
428
+ --fill-primary-strong-disabled: oklch(from var(--primary-500) calc(l * 1.1) calc(c * 0.85) h);
473
429
 
474
- --fill-primary-weak: oklch(from var(--primary-600) calc(l * 2.15) calc(c * 0.2) h);
430
+ /* Weak fill - for subtle backgrounds (outlined hover states) */
431
+ --fill-primary-weak: oklch(from var(--primary-500) calc(l * 2.04) calc(c * 0.2) h);
475
432
  --fill-primary-weak-hover: oklch(from var(--canvas-50) calc(l * 0.995) c h);
476
433
 
477
- /* Text tokens */
478
- --text-on-primary: white;
434
+ /* Text tokens - for foreground colors */
435
+ --text-on-primary: white; /* Text on primary fill */
479
436
  --text-on-primary-disabled: oklch(from white calc(l * 0.9) calc(c * 0.85) h);
480
- --text-primary-strong: var(--primary-700);
481
- --text-primary-weak: oklch(from var(--primary-600) calc(l * 0.7) c h);
482
- --text-primary-disabled: oklch(from var(--primary-700) calc(l * 1.5) calc(c * 0.5) h);
437
+ --text-primary-strong: var(--primary-600); /* Primary-colored text (outlined, text variants) */
438
+ --text-primary-weak: oklch(from var(--primary-500) calc(l * 0.7) c h); /* Muted primary text */
439
+ --text-primary-disabled: oklch(from var(--primary-600) calc(l * 1.5) calc(c * 0.5) h);
483
440
 
484
- /* Stroke tokens */
485
- --stroke-primary: var(--primary-700);
486
- --stroke-primary-hover: oklch(from var(--primary-700) calc(l * 0.85) c h);
487
- --stroke-primary-disabled: oklch(from var(--primary-700) calc(l * 1.5) calc(c * 0.8) h);
441
+ /* Stroke tokens - for borders */
442
+ --stroke-primary: var(--primary-600);
443
+ --stroke-primary-hover: oklch(from var(--primary-600) calc(l * 0.85) c h);
444
+ --stroke-primary-disabled: oklch(from var(--primary-600) calc(l * 1.5) calc(c * 0.8) h);
488
445
 
489
- /* Ring tokens */
490
- --ring-primary: var(--primary-600);
446
+ /* Ring tokens - for focus states */
447
+ --ring-primary: var(--primary-500);
491
448
 
492
449
  /* Gradient tokens */
493
450
  --gradient-primary-start: var(--primary-500);
@@ -1,2 +1,5 @@
1
1
  @import "./colors.css";
2
+ @import "./surfaces.css";
3
+ @import "./typography.css";
4
+ @import "./borders.css";
2
5
  @import "./grid-flex.css";
@@ -26,19 +26,19 @@
26
26
  GAP SYSTEM (For Grid & Flexbox)
27
27
  ======================================== */
28
28
  --gap-0: var(--spacing-0);
29
- --gap-1: var(--spacing-1);
30
- --gap-2: var(--spacing-2);
31
- --gap-3: var(--spacing-3);
32
- --gap-4: var(--spacing-4);
33
- --gap-5: var(--spacing-5);
29
+ --gap-1: var(--spacing-4);
30
+ --gap-2: var(--spacing-8);
31
+ --gap-3: var(--spacing-12);
32
+ --gap-4: var(--spacing-16);
33
+ --gap-5: var(--spacing-20);
34
34
  --gap-6: var(--spacing-6);
35
35
  --gap-8: var(--spacing-8);
36
- --gap-10: var(--spacing-10);
37
- --gap-12: var(--spacing-12);
38
- --gap-16: var(--spacing-16);
39
- --gap-20: var(--spacing-20);
40
- --gap-24: var(--spacing-24);
41
- --gap-32: var(--spacing-32);
36
+ --gap-10: var(--spacing-40);
37
+ --gap-12: var(--spacing-48);
38
+ --gap-16: var(--spacing-64);
39
+ --gap-20: var(--spacing-80);
40
+ --gap-24: var(--spacing-96);
41
+ --gap-32: var(--spacing-128);
42
42
 
43
43
  /* ========================================
44
44
  FLEXBOX HELPERS