@scattered-light/base-ui-theme 0.1.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 (105) hide show
  1. package/README.md +19 -0
  2. package/dist/index.d.ts +103 -0
  3. package/dist/index.js +313 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/styles/base/borders.css +26 -0
  6. package/dist/styles/base/breakpoints.css +26 -0
  7. package/dist/styles/base/colors.css +150 -0
  8. package/dist/styles/base/global.css +108 -0
  9. package/dist/styles/base/reset-accessibility.css +119 -0
  10. package/dist/styles/base/reset.css +451 -0
  11. package/dist/styles/base/shadows.css +42 -0
  12. package/dist/styles/base/spacing.css +62 -0
  13. package/dist/styles/base/transitions.css +29 -0
  14. package/dist/styles/base/typography.css +63 -0
  15. package/dist/styles/base/z-index.css +22 -0
  16. package/dist/styles/components/AGGrid.css +6 -0
  17. package/dist/styles/components/Accordion.css +184 -0
  18. package/dist/styles/components/AlertDialog.css +172 -0
  19. package/dist/styles/components/Autocomplete.css +261 -0
  20. package/dist/styles/components/Avatar.css +154 -0
  21. package/dist/styles/components/Button.css +164 -0
  22. package/dist/styles/components/Checkbox.css +199 -0
  23. package/dist/styles/components/CheckboxGroup.css +21 -0
  24. package/dist/styles/components/Collapsible.css +115 -0
  25. package/dist/styles/components/Combobox.css +514 -0
  26. package/dist/styles/components/ContextMenu.css +209 -0
  27. package/dist/styles/components/Dialog.css +159 -0
  28. package/dist/styles/components/Field.css +138 -0
  29. package/dist/styles/components/Fieldset.css +48 -0
  30. package/dist/styles/components/Form.css +22 -0
  31. package/dist/styles/components/Input.css +106 -0
  32. package/dist/styles/components/Menu.css +158 -0
  33. package/dist/styles/components/Menubar.css +201 -0
  34. package/dist/styles/components/Meter.css +104 -0
  35. package/dist/styles/components/NavigationMenu.css +469 -0
  36. package/dist/styles/components/NumberField.css +182 -0
  37. package/dist/styles/components/Popover.css +167 -0
  38. package/dist/styles/components/PreviewCard.css +148 -0
  39. package/dist/styles/components/Progress.css +130 -0
  40. package/dist/styles/components/Radio.css +178 -0
  41. package/dist/styles/components/ScrollArea.css +103 -0
  42. package/dist/styles/components/Select.css +297 -0
  43. package/dist/styles/components/Separator.css +34 -0
  44. package/dist/styles/components/Slider.css +163 -0
  45. package/dist/styles/components/Switch.css +197 -0
  46. package/dist/styles/components/Tabs.css +163 -0
  47. package/dist/styles/components/Toast.css +261 -0
  48. package/dist/styles/components/Toggle.css +103 -0
  49. package/dist/styles/components/ToggleGroup.css +19 -0
  50. package/dist/styles/components/Toolbar.css +78 -0
  51. package/dist/styles/components/Tooltip.css +87 -0
  52. package/dist/styles/index.css +103 -0
  53. package/dist/styles/semantic/accessibility.css +77 -0
  54. package/dist/styles/semantic/accordion.css +102 -0
  55. package/dist/styles/semantic/ag-grid.css +114 -0
  56. package/dist/styles/semantic/alert-dialog.css +78 -0
  57. package/dist/styles/semantic/autocomplete.css +162 -0
  58. package/dist/styles/semantic/avatar.css +96 -0
  59. package/dist/styles/semantic/badge.css +16 -0
  60. package/dist/styles/semantic/button.css +145 -0
  61. package/dist/styles/semantic/card.css +14 -0
  62. package/dist/styles/semantic/checkbox-group.css +18 -0
  63. package/dist/styles/semantic/checkbox.css +117 -0
  64. package/dist/styles/semantic/collapsible.css +123 -0
  65. package/dist/styles/semantic/combobox.css +325 -0
  66. package/dist/styles/semantic/context-menu.css +131 -0
  67. package/dist/styles/semantic/dialog.css +91 -0
  68. package/dist/styles/semantic/dropdown.css +16 -0
  69. package/dist/styles/semantic/field.css +73 -0
  70. package/dist/styles/semantic/fieldset.css +45 -0
  71. package/dist/styles/semantic/form.css +20 -0
  72. package/dist/styles/semantic/input.css +83 -0
  73. package/dist/styles/semantic/menu.css +104 -0
  74. package/dist/styles/semantic/menubar.css +70 -0
  75. package/dist/styles/semantic/meter.css +88 -0
  76. package/dist/styles/semantic/modal.css +14 -0
  77. package/dist/styles/semantic/navigation-menu.css +171 -0
  78. package/dist/styles/semantic/number-field.css +142 -0
  79. package/dist/styles/semantic/popover.css +113 -0
  80. package/dist/styles/semantic/preview-card.css +108 -0
  81. package/dist/styles/semantic/progress.css +85 -0
  82. package/dist/styles/semantic/radio.css +103 -0
  83. package/dist/styles/semantic/scroll-area.css +64 -0
  84. package/dist/styles/semantic/select.css +197 -0
  85. package/dist/styles/semantic/separator.css +37 -0
  86. package/dist/styles/semantic/slider.css +120 -0
  87. package/dist/styles/semantic/switch.css +158 -0
  88. package/dist/styles/semantic/tabs.css +150 -0
  89. package/dist/styles/semantic/toast.css +171 -0
  90. package/dist/styles/semantic/toggle-group.css +29 -0
  91. package/dist/styles/semantic/toggle.css +94 -0
  92. package/dist/styles/semantic/toolbar.css +47 -0
  93. package/dist/styles/semantic/tooltip.css +56 -0
  94. package/dist/styles/theme/README.md +179 -0
  95. package/dist/styles/theme/theme-accessibility.css +13 -0
  96. package/dist/styles/theme/theme-primitives.css +7 -0
  97. package/dist/styles/theme/theme-radius.css +12 -0
  98. package/dist/styles/theme/theme-roles.css +66 -0
  99. package/dist/styles/theme/theme-spacing.css +28 -0
  100. package/dist/styles/theme/theme-stroke.css +7 -0
  101. package/dist/styles/theme/theme-typography.css +218 -0
  102. package/dist/styles/utilities/color-styles.css +34 -0
  103. package/dist/styles/utilities/layout-styles.css +19 -0
  104. package/dist/styles/utilities/text-styles.css +102 -0
  105. package/package.json +75 -0
@@ -0,0 +1,103 @@
1
+ /* Toggle - Mojave Theme */
2
+
3
+ /* ============================================
4
+ ROOT
5
+ ============================================ */
6
+
7
+ .Toggle {
8
+ all: unset;
9
+ box-sizing: border-box;
10
+ display: var(--toggle-display);
11
+ align-items: var(--toggle-align-items);
12
+ justify-content: var(--toggle-justify-content);
13
+ gap: var(--toggle-gap);
14
+ padding-block: var(--toggle-padding-block);
15
+ padding-inline: var(--toggle-padding-inline);
16
+ font-family: var(--toggle-font-family);
17
+ font-size: var(--toggle-font-size);
18
+ font-weight: var(--toggle-font-weight);
19
+ line-height: var(--toggle-line-height);
20
+ letter-spacing: var(--toggle-letter-spacing);
21
+ color: var(--toggle-color);
22
+ background: var(--toggle-background);
23
+ border: var(--toggle-border-width) solid var(--toggle-border-color);
24
+ border-radius: var(--toggle-border-radius);
25
+ cursor: var(--toggle-cursor);
26
+ transition: var(--toggle-transition);
27
+ user-select: var(--toggle-user-select);
28
+ }
29
+
30
+ .Toggle:hover:not([data-disabled]):not(:disabled) {
31
+ background: var(--toggle-background-hover);
32
+ border-color: var(--toggle-border-color-hover);
33
+ }
34
+
35
+ .Toggle[data-pressed],
36
+ .Toggle[aria-pressed='true'] {
37
+ background: var(--toggle-background-pressed);
38
+ color: var(--toggle-color-pressed);
39
+ border-color: var(--toggle-border-color-pressed);
40
+ }
41
+
42
+ .Toggle[data-pressed]:hover:not([data-disabled]):not(:disabled),
43
+ .Toggle[aria-pressed='true']:hover:not([data-disabled]):not(:disabled) {
44
+ background: var(--toggle-background-pressed-hover);
45
+ border-color: var(--toggle-border-color-pressed-hover);
46
+ }
47
+
48
+ .Toggle:focus-visible {
49
+ outline: var(--toggle-outline-focus);
50
+ outline-offset: var(--toggle-outline-offset-focus);
51
+ }
52
+
53
+ .Toggle[data-disabled],
54
+ .Toggle:disabled {
55
+ opacity: var(--toggle-opacity-disabled);
56
+ cursor: var(--toggle-cursor-disabled);
57
+ }
58
+
59
+ /* ============================================
60
+ SIZE VARIANTS
61
+ ============================================ */
62
+
63
+ .Toggle[data-size='sm'] {
64
+ padding-block: var(--toggle-padding-block-sm);
65
+ padding-inline: var(--toggle-padding-inline-sm);
66
+ font-family: var(--toggle-font-family-sm);
67
+ font-size: var(--toggle-font-size-sm);
68
+ font-weight: var(--toggle-font-weight-sm);
69
+ line-height: var(--toggle-line-height-sm);
70
+ letter-spacing: var(--toggle-letter-spacing-sm);
71
+ border-radius: var(--toggle-border-radius-sm);
72
+ }
73
+
74
+ .Toggle[data-size='lg'] {
75
+ padding-block: var(--toggle-padding-block-lg);
76
+ padding-inline: var(--toggle-padding-inline-lg);
77
+ font-family: var(--toggle-font-family-lg);
78
+ font-size: var(--toggle-font-size-lg);
79
+ font-weight: var(--toggle-font-weight-lg);
80
+ line-height: var(--toggle-line-height-lg);
81
+ letter-spacing: var(--toggle-letter-spacing-lg);
82
+ border-radius: var(--toggle-border-radius-lg);
83
+ }
84
+
85
+ /* ============================================
86
+ ICON
87
+ ============================================ */
88
+
89
+ .Toggle svg {
90
+ width: 1.25em;
91
+ height: 1.25em;
92
+ flex-shrink: 0;
93
+ }
94
+
95
+ /* ============================================
96
+ REDUCED MOTION
97
+ ============================================ */
98
+
99
+ @media (prefers-reduced-motion: reduce) {
100
+ .Toggle {
101
+ transition: none;
102
+ }
103
+ }
@@ -0,0 +1,19 @@
1
+ /* Toggle Group - Mojave Theme */
2
+
3
+ /* ============================================
4
+ ROOT
5
+ ============================================ */
6
+
7
+ .ToggleGroup {
8
+ display: var(--toggle-group-display);
9
+ gap: var(--toggle-group-gap);
10
+ padding: var(--toggle-group-padding);
11
+ background: var(--toggle-group-background);
12
+ border-radius: var(--toggle-group-border-radius);
13
+ border: var(--toggle-group-border-width) solid var(--toggle-group-border-color);
14
+ }
15
+
16
+ /* Adjust toggle styles when inside a group */
17
+ .ToggleGroup .Toggle {
18
+ border-radius: var(--radius-sm);
19
+ }
@@ -0,0 +1,78 @@
1
+ /* Toolbar - Mojave Theme */
2
+
3
+ /* ============================================
4
+ ROOT
5
+ ============================================ */
6
+
7
+ .Toolbar {
8
+ display: var(--toolbar-display);
9
+ align-items: var(--toolbar-align-items);
10
+ gap: var(--toolbar-gap);
11
+ padding: var(--toolbar-padding);
12
+ background: var(--toolbar-background);
13
+ border-radius: var(--toolbar-border-radius);
14
+ border: var(--toolbar-border-width) solid var(--toolbar-border-color);
15
+ }
16
+
17
+ /* ============================================
18
+ GROUP
19
+ ============================================ */
20
+
21
+ .ToolbarGroup {
22
+ display: var(--toolbar-group-display);
23
+ align-items: var(--toolbar-group-align-items);
24
+ gap: var(--toolbar-group-gap);
25
+ }
26
+
27
+ /* ============================================
28
+ SEPARATOR
29
+ ============================================ */
30
+
31
+ .ToolbarSeparator {
32
+ width: var(--toolbar-separator-width);
33
+ height: var(--toolbar-separator-height);
34
+ background: var(--toolbar-separator-background);
35
+ margin-inline: var(--toolbar-separator-margin-inline);
36
+ border: none;
37
+ }
38
+
39
+ /* ============================================
40
+ BUTTON (inherits from Button component)
41
+ ============================================ */
42
+
43
+ .Toolbar .ToolbarButton {
44
+ /* Buttons inside toolbar use existing Button styles */
45
+ }
46
+
47
+ /* ============================================
48
+ LINK
49
+ ============================================ */
50
+
51
+ .ToolbarLink {
52
+ display: inline-flex;
53
+ align-items: center;
54
+ padding-inline: var(--space-3);
55
+ font-size: var(--font-size-sm);
56
+ color: var(--text-secondary);
57
+ text-decoration: none;
58
+ transition: color 0.2s ease;
59
+ }
60
+
61
+ .ToolbarLink:hover {
62
+ color: var(--text-primary);
63
+ }
64
+
65
+ .ToolbarLink:focus-visible {
66
+ outline: 2px solid var(--focus-ring);
67
+ outline-offset: 2px;
68
+ border-radius: var(--radius-sm);
69
+ }
70
+
71
+ /* ============================================
72
+ INPUT (inherits from Input component)
73
+ ============================================ */
74
+
75
+ .Toolbar .ToolbarInput {
76
+ /* Inputs inside toolbar use existing Input styles */
77
+ max-width: 200px;
78
+ }
@@ -0,0 +1,87 @@
1
+ /* Tooltip - Mojave Theme */
2
+
3
+ /* ============================================
4
+ TRIGGER
5
+ ============================================ */
6
+
7
+ .TooltipTrigger {
8
+ /* Trigger can be any element, no specific styles needed */
9
+ cursor: help;
10
+ }
11
+
12
+ /* ============================================
13
+ POSITIONER
14
+ ============================================ */
15
+
16
+ .TooltipPositioner {
17
+ z-index: var(--tooltip-positioner-z-index);
18
+ }
19
+
20
+ /* ============================================
21
+ POPUP
22
+ ============================================ */
23
+
24
+ .TooltipPopup {
25
+ background: var(--tooltip-popup-background);
26
+ color: var(--tooltip-popup-color);
27
+ padding-block: var(--tooltip-popup-padding-block);
28
+ padding-inline: var(--tooltip-popup-padding-inline);
29
+ border-radius: var(--tooltip-popup-border-radius);
30
+ font-family: var(--tooltip-popup-font-family);
31
+ font-size: var(--tooltip-popup-font-size);
32
+ font-weight: var(--tooltip-popup-font-weight);
33
+ line-height: var(--tooltip-popup-line-height);
34
+ letter-spacing: var(--tooltip-popup-letter-spacing);
35
+ max-width: var(--tooltip-popup-max-width);
36
+ box-shadow: var(--tooltip-popup-box-shadow);
37
+ word-wrap: break-word;
38
+ user-select: none;
39
+ }
40
+
41
+ /* Animation states */
42
+ .TooltipPopup[data-starting-style] {
43
+ opacity: 0;
44
+ transform: scale(0.95);
45
+ }
46
+
47
+ .TooltipPopup[data-open] {
48
+ opacity: 1;
49
+ transform: scale(1);
50
+ transition: opacity var(--tooltip-popup-animation-duration) var(--tooltip-popup-animation-easing),
51
+ transform var(--tooltip-popup-animation-duration) var(--tooltip-popup-animation-easing);
52
+ }
53
+
54
+ .TooltipPopup[data-ending-style] {
55
+ opacity: 0;
56
+ transform: scale(0.95);
57
+ transition: opacity var(--tooltip-popup-animation-duration) var(--tooltip-popup-animation-easing),
58
+ transform var(--tooltip-popup-animation-duration) var(--tooltip-popup-animation-easing);
59
+ }
60
+
61
+ /* ============================================
62
+ ARROW
63
+ ============================================ */
64
+
65
+ .TooltipArrow {
66
+ width: var(--tooltip-arrow-width);
67
+ height: var(--tooltip-arrow-height);
68
+ }
69
+
70
+ .TooltipArrow svg {
71
+ fill: var(--tooltip-arrow-fill);
72
+ }
73
+
74
+ /* ============================================
75
+ REDUCED MOTION
76
+ ============================================ */
77
+
78
+ @media (prefers-reduced-motion: reduce) {
79
+ .TooltipPopup {
80
+ transition: none;
81
+ }
82
+
83
+ .TooltipPopup[data-starting-style],
84
+ .TooltipPopup[data-ending-style] {
85
+ transform: none;
86
+ }
87
+ }
@@ -0,0 +1,103 @@
1
+ /* Mojave Design System - Main Entry Point */
2
+ @import '@material-symbols/font-400/outlined.css';
3
+
4
+ /* Base styles */
5
+ @import './base/colors.css';
6
+ @import './base/global.css';
7
+ @import './base/spacing.css';
8
+ @import './base/borders.css';
9
+ @import './base/shadows.css';
10
+ @import './base/breakpoints.css';
11
+ @import './base/z-index.css';
12
+ @import './base/transitions.css';
13
+ @import './base/typography.css';
14
+ @import './base/reset.css';
15
+ @import './base/reset-accessibility.css';
16
+
17
+ /* Theme roles (palette → semantic steps) */
18
+ @import './theme/theme-roles.css';
19
+ @import './theme/theme-primitives.css';
20
+ @import './theme/theme-spacing.css';
21
+ @import './theme/theme-typography.css';
22
+ @import './theme/theme-radius.css';
23
+ @import './theme/theme-stroke.css';
24
+ @import './theme/theme-accessibility.css';
25
+
26
+ /* Semantic token files */
27
+ @import './semantic/accessibility.css';
28
+ @import './semantic/accordion.css';
29
+ @import './semantic/alert-dialog.css';
30
+ @import './semantic/autocomplete.css';
31
+ @import './semantic/avatar.css';
32
+ @import './semantic/badge.css';
33
+ @import './semantic/button.css';
34
+ @import './semantic/checkbox.css';
35
+ @import './semantic/checkbox-group.css';
36
+ @import './semantic/card.css';
37
+ @import './semantic/context-menu.css';
38
+ @import './semantic/dialog.css';
39
+ @import './semantic/dropdown.css';
40
+ @import './semantic/input.css';
41
+ @import './semantic/menu.css';
42
+ @import './semantic/menubar.css';
43
+ @import './semantic/modal.css';
44
+ @import './semantic/navigation-menu.css';
45
+ @import './semantic/number-field.css';
46
+ @import './semantic/popover.css';
47
+ @import './semantic/preview-card.css';
48
+ @import './semantic/progress.css';
49
+ @import './semantic/radio.css';
50
+ @import './semantic/scroll-area.css';
51
+ @import './semantic/select.css';
52
+ @import './semantic/slider.css';
53
+ @import './semantic/switch.css';
54
+ @import './semantic/tabs.css';
55
+ @import './semantic/toast.css';
56
+ @import './semantic/toggle.css';
57
+ @import './semantic/toggle-group.css';
58
+ @import './semantic/toolbar.css';
59
+ @import './semantic/tooltip.css';
60
+ @import './semantic/ag-grid.css';
61
+
62
+ /* Utility Styles */
63
+ @import './utilities/color-styles.css';
64
+ @import './utilities/text-styles.css';
65
+ @import './utilities/layout-styles.css';
66
+
67
+ /* Component styles */
68
+ @import './components/Accordion.css';
69
+ @import './components/AlertDialog.css';
70
+ @import './components/Autocomplete.css';
71
+ @import './components/Avatar.css';
72
+ @import './components/Button.css';
73
+ @import './components/Checkbox.css';
74
+ @import './components/CheckboxGroup.css';
75
+ @import './components/Collapsible.css';
76
+ @import './components/Combobox.css';
77
+ @import './components/ContextMenu.css';
78
+ @import './components/Dialog.css';
79
+ @import './components/Field.css';
80
+ @import './components/Fieldset.css';
81
+ @import './components/Form.css';
82
+ @import './components/Input.css';
83
+ @import './components/Menu.css';
84
+ @import './components/Menubar.css';
85
+ @import './components/Meter.css';
86
+ @import './components/NavigationMenu.css';
87
+ @import './components/NumberField.css';
88
+ @import './components/Popover.css';
89
+ @import './components/PreviewCard.css';
90
+ @import './components/Progress.css';
91
+ @import './components/Radio.css';
92
+ @import './components/ScrollArea.css';
93
+ @import './components/Select.css';
94
+ @import './components/Separator.css';
95
+ @import './components/Slider.css';
96
+ @import './components/Switch.css';
97
+ @import './components/Tabs.css';
98
+ @import './components/Toast.css';
99
+ @import './components/Toggle.css';
100
+ @import './components/ToggleGroup.css';
101
+ @import './components/Toolbar.css';
102
+ @import './components/Tooltip.css';
103
+ @import './components/AGGrid.css';
@@ -0,0 +1,77 @@
1
+ /* Focus, invalid, contrast — requires theme tokens (after theme-accessibility.css). */
2
+
3
+ :focus-visible {
4
+ outline: var(--theme-a11y-focus-outline-width) solid var(--focus-ring);
5
+ outline-offset: var(--theme-a11y-focus-outline-offset);
6
+ border-radius: var(--theme-a11y-focus-ring-radius);
7
+ }
8
+
9
+ a:focus-visible {
10
+ outline: var(--theme-a11y-focus-outline-width) solid var(--focus-ring);
11
+ outline-offset: var(--theme-a11y-link-focus-outline-offset);
12
+ border-radius: var(--theme-a11y-link-focus-ring-radius);
13
+ }
14
+
15
+ input:invalid,
16
+ textarea:invalid,
17
+ select:invalid {
18
+ border-color: var(--theme-status-error, #ef4444);
19
+ }
20
+
21
+ input:invalid:focus,
22
+ textarea:invalid:focus,
23
+ select:invalid:focus {
24
+ outline-color: var(--theme-status-error, #ef4444);
25
+ }
26
+
27
+ [required]::after,
28
+ [aria-required='true']::after {
29
+ content: ' *';
30
+ color: var(--theme-status-error, #ef4444);
31
+ }
32
+
33
+ @media (prefers-contrast: high) {
34
+ :root {
35
+ --border-default: var(--theme-neutral-600);
36
+ --border-strong: var(--theme-neutral-800);
37
+ }
38
+ }
39
+
40
+ @media (prefers-contrast: more) {
41
+ :root {
42
+ --border-default: var(--theme-neutral-700);
43
+ --border-strong: var(--theme-neutral-900);
44
+ --text-secondary: var(--theme-neutral-1000);
45
+ }
46
+
47
+ button,
48
+ a {
49
+ text-decoration: underline;
50
+ }
51
+ }
52
+
53
+ @media (forced-colors: active) {
54
+ :focus-visible {
55
+ outline: 2px solid CanvasText;
56
+ }
57
+
58
+ button,
59
+ a {
60
+ border: 1px solid ButtonText;
61
+ }
62
+ }
63
+
64
+ @media (pointer: coarse) {
65
+ button,
66
+ a,
67
+ input[type='button'],
68
+ input[type='submit'],
69
+ input[type='reset'],
70
+ input[type='checkbox'],
71
+ input[type='radio'],
72
+ select,
73
+ textarea {
74
+ min-height: var(--theme-a11y-min-touch-target);
75
+ min-width: var(--theme-a11y-min-touch-target);
76
+ }
77
+ }
@@ -0,0 +1,102 @@
1
+ /* Accordion Component Tokens - Mojave Theme */
2
+
3
+ :root {
4
+ /* ============================================
5
+ ACCORDION CONTAINER
6
+ ============================================ */
7
+
8
+ --accordion-bg: var(--theme-neutral-50);
9
+ --accordion-border-radius: var(--theme-radius-surface);
10
+
11
+ /* ============================================
12
+ ACCORDION ITEM
13
+ ============================================ */
14
+
15
+ --accordion-item-border-color: var(--border-default);
16
+ --accordion-item-border-width: var(--theme-stroke-default);
17
+
18
+ /* ============================================
19
+ ACCORDION TRIGGER (HEADER/BUTTON)
20
+ ============================================ */
21
+
22
+ --accordion-trigger-padding-block: var(--space-4);
23
+ --accordion-trigger-padding-inline: var(--space-6);
24
+ --accordion-trigger-gap: var(--space-4);
25
+ --accordion-trigger-bg: var(--surface-base);
26
+ --accordion-trigger-bg-hover: var(--surface-raised);
27
+ --accordion-trigger-bg-active: var(--theme-neutral-100);
28
+ --accordion-trigger-text-color: var(--text-primary);
29
+ --accordion-trigger-font-family: var(--theme-maximize-md-font-family);
30
+ --accordion-trigger-font-size: var(--theme-maximize-md-font-size);
31
+ --accordion-trigger-font-weight: var(--theme-maximize-md-font-weight);
32
+ --accordion-trigger-line-height: var(--theme-maximize-md-line-height);
33
+ --accordion-trigger-letter-spacing: var(--theme-maximize-md-letter-spacing);
34
+
35
+ /* ============================================
36
+ ACCORDION ICON
37
+ ============================================ */
38
+
39
+ --accordion-icon-size: 1.25rem;
40
+ --accordion-icon-color: var(--text-secondary);
41
+ --accordion-icon-transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
42
+
43
+ /* ============================================
44
+ ACCORDION CONTENT
45
+ ============================================ */
46
+
47
+ --accordion-content-padding-block-start: 0;
48
+ --accordion-content-padding-block-end: var(--space-4);
49
+ --accordion-content-padding-inline: var(--space-6);
50
+ --accordion-content-bg: var(--surface-base);
51
+ --accordion-content-text-color: var(--text-secondary);
52
+ --accordion-content-font-family: var(--theme-font-base-font-family);
53
+ --accordion-content-font-size: var(--theme-font-base-font-size);
54
+ --accordion-content-font-weight: var(--theme-font-base-font-weight);
55
+ --accordion-content-line-height: var(--theme-font-base-line-height);
56
+ --accordion-content-letter-spacing: var(--theme-font-base-letter-spacing);
57
+
58
+ /* ============================================
59
+ ACCORDION TRANSITIONS
60
+ ============================================ */
61
+
62
+ --accordion-transition: background-color 0.2s ease;
63
+
64
+ /* ============================================
65
+ ACCORDION VARIANTS
66
+ ============================================ */
67
+
68
+ /* Separated variant */
69
+ --accordion-separated-gap: var(--space-2);
70
+ --accordion-separated-item-border-radius: var(--theme-radius-chrome);
71
+ --accordion-separated-item-border-color: var(--border-default);
72
+ --accordion-separated-item-border-width: var(--theme-stroke-default);
73
+ --accordion-separated-item-bg: var(--surface-base);
74
+
75
+ /* Bordered variant */
76
+ --accordion-bordered-border-width: var(--theme-stroke-default);
77
+ --accordion-bordered-border-color: var(--border-default);
78
+ }
79
+
80
+ /* ============================================
81
+ DARK MODE OVERRIDES
82
+ ============================================ */
83
+
84
+ @media (prefers-color-scheme: dark) {
85
+ :root {
86
+ --accordion-bg: var(--theme-neutral-100);
87
+ --accordion-trigger-bg: var(--theme-neutral-50);
88
+ --accordion-trigger-bg-hover: var(--theme-neutral-200);
89
+ --accordion-trigger-bg-active: var(--theme-neutral-300);
90
+ --accordion-content-bg: var(--theme-neutral-50);
91
+ --accordion-separated-item-bg: var(--theme-neutral-50);
92
+ }
93
+ }
94
+
95
+ [data-theme='dark'] {
96
+ --accordion-bg: var(--theme-neutral-100);
97
+ --accordion-trigger-bg: var(--theme-neutral-50);
98
+ --accordion-trigger-bg-hover: var(--theme-neutral-200);
99
+ --accordion-trigger-bg-active: var(--theme-neutral-300);
100
+ --accordion-content-bg: var(--theme-neutral-50);
101
+ --accordion-separated-item-bg: var(--theme-neutral-50);
102
+ }
@@ -0,0 +1,114 @@
1
+ /* AG Grid Semantic Tokens - Mojave Theme */
2
+ /* All AG Grid CSS variables mapped to Mojave design tokens */
3
+
4
+ :root {
5
+ /* ============================================
6
+ GRID STRUCTURE & SIZING
7
+ ============================================ */
8
+ --ag-grid-size: 4px; /*This tells AG-Grid what the fallback mutiplier is for spacing when not using out spacing variables.*/
9
+ --ag-grid-row-height: var(--space-10); /* 40px - matches Input height */
10
+ --ag-grid-header-height: var(--space-10); /* 40px - matches Input height */
11
+ --ag-grid-cell-horizontal-padding: var(--space-3); /* 12px - matches Input padding */
12
+
13
+ /* ============================================
14
+ BACKGROUNDS
15
+ ============================================ */
16
+ --ag-grid-background-color: var(--theme-surface-canvas);
17
+ --ag-grid-foreground-color: var(--theme-neutral-1200);
18
+ --ag-grid-odd-row-background-color: transparent;
19
+ --ag-grid-header-background-color: var(--theme-neutral-50);
20
+ --ag-grid-selected-row-background-color: var(--theme-primary-50);
21
+
22
+ /* ============================================
23
+ HOVER & INTERACTION STATES
24
+ ============================================ */
25
+ --ag-grid-row-hover-color: var(--theme-neutral-100);
26
+ --ag-grid-column-hover-color: var(--theme-neutral-100);
27
+ --ag-grid-range-selection-background-color: var(--theme-primary-100);
28
+
29
+ /* ============================================
30
+ BORDERS & RADIUS
31
+ ============================================ */
32
+ --ag-grid-border-color: var(--theme-neutral-300);
33
+ --ag-grid-secondary-border-color: var(--theme-neutral-200);
34
+ --ag-grid-border-radius: var(--theme-radius-item); /* General border radius */
35
+ --ag-grid-wrapper-border-radius: var(--theme-radius-item); /* Outer grid wrapper */
36
+ --ag-grid-button-border-radius: var(--theme-radius-item); /* Buttons */
37
+ --ag-grid-checkbox-border-radius: var(--theme-radius-pill); /* Checkboxes */
38
+ --ag-grid-icon-button-border-radius: var(--theme-radius-pill); /* Icon buttons */
39
+ --ag-grid-input-border-radius: var(--theme-radius-item); /* Input fields */
40
+
41
+ /* ============================================
42
+ TEXT COLORS
43
+ ============================================ */
44
+ --ag-grid-header-foreground-color: var(--theme-neutral-1200);
45
+
46
+ /* ============================================
47
+ INTERACTIVE ELEMENTS
48
+ ============================================ */
49
+ --ag-grid-input-focus-border-color: var(--theme-primary-600);
50
+ --ag-grid-input-focus-box-shadow: 0 0 0 2px var(--theme-primary-200);
51
+
52
+ /* Checkbox - Reference the checkbox component tokens */
53
+ --ag-grid-checkbox-checked-color: var(--checkbox-indicator-bg-checked);
54
+ --ag-grid-checkbox-unchecked-color: var(--checkbox-indicator-border-color);
55
+ --ag-grid-checkbox-indeterminate-color: var(--checkbox-indicator-bg-checked);
56
+
57
+ /* ============================================
58
+ TYPOGRAPHY
59
+ ============================================ */
60
+ --ag-grid-font-family: var(--theme-font-condense-font-family);
61
+ --ag-grid-font-size: var(--theme-font-condense-font-size);
62
+ --ag-grid-line-height: var(--theme-font-condense-line-height);
63
+ --ag-grid-letter-spacing: var(--theme-font-condense-letter-spacing);
64
+ --ag-grid-header-font-family: var(--theme-font-condense-subtitle-font-family);
65
+ --ag-grid-header-font-size: var(--theme-font-condense-subtitle-font-size);
66
+ --ag-grid-header-font-weight: var(--theme-font-condense-subtitle-font-weight);
67
+ --ag-grid-header-line-height: var(--theme-font-condense-subtitle-line-height);
68
+ --ag-grid-header-letter-spacing: var(--theme-font-condense-subtitle-letter-spacing);
69
+
70
+ /* ============================================
71
+ ICONS
72
+ ============================================ */
73
+ --ag-grid-icon-size: 16px;
74
+
75
+ /* ============================================
76
+ INPUTS
77
+ ============================================ */
78
+ --ag-grid-input-border-color: var(--theme-neutral-300);
79
+ --ag-grid-input-height: var(--space-10); /* 40px - match our inputs */
80
+ --ag-grid-input-padding: var(--space-3); /* 12px */
81
+
82
+ /* ============================================
83
+ MENUS & DROPDOWNS
84
+ ============================================ */
85
+ --ag-grid-menu-background-color: var(--theme-surface-canvas);
86
+ --ag-grid-menu-border-color: var(--theme-neutral-300);
87
+ --ag-grid-menu-shadow: var(--shadow-lg);
88
+ --ag-grid-menu-padding: var(--space-2);
89
+ --ag-grid-menu-item-padding: var(--space-2) var(--space-3);
90
+ --ag-grid-list-item-height: var(--space-10); /* 40px - match our menu items */
91
+ }
92
+
93
+ /* Dark mode overrides */
94
+ @media (prefers-color-scheme: dark) {
95
+ :root {
96
+ --ag-grid-background-color: var(--theme-neutral-1200);
97
+ --ag-grid-foreground-color: var(--theme-neutral-50);
98
+ --ag-grid-border-color: var(--theme-neutral-900);
99
+ --ag-grid-header-background-color: var(--theme-neutral-1100);
100
+ --ag-grid-row-hover-color: var(--theme-neutral-1100);
101
+ --ag-grid-selected-row-background-color: var(--theme-primary-900);
102
+ --ag-grid-menu-background-color: var(--theme-neutral-1100);
103
+ }
104
+ }
105
+
106
+ [data-theme='dark'] {
107
+ --ag-grid-background-color: var(--theme-neutral-1200);
108
+ --ag-grid-foreground-color: var(--theme-neutral-50);
109
+ --ag-grid-border-color: var(--theme-neutral-900);
110
+ --ag-grid-header-background-color: var(--theme-neutral-1100);
111
+ --ag-grid-row-hover-color: var(--theme-neutral-1100);
112
+ --ag-grid-selected-row-background-color: var(--theme-primary-900);
113
+ --ag-grid-menu-background-color: var(--theme-neutral-1100);
114
+ }