@happyvertical/smrt-ui 0.55.16 → 0.55.18

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 (166) hide show
  1. package/AGENTS.md +14 -0
  2. package/README.md +75 -0
  3. package/dist/components/calendar/Calendar.svelte +59 -56
  4. package/dist/components/calendar/CalendarView.svelte +80 -77
  5. package/dist/components/calendar/DayView.svelte +39 -36
  6. package/dist/components/chat/MessageBubble.svelte +26 -23
  7. package/dist/components/chat/ReactionPicker.svelte +12 -9
  8. package/dist/components/chat/TypingIndicator.svelte +12 -9
  9. package/dist/components/data/CollectionList.svelte +11 -8
  10. package/dist/components/data/CollectionToolbar.svelte +5 -2
  11. package/dist/components/data/DataTable.svelte +74 -59
  12. package/dist/components/data/ListSortSelect.svelte +8 -5
  13. package/dist/components/data/SortableHeader.svelte +10 -7
  14. package/dist/components/display/ConfidenceBadge.svelte +11 -8
  15. package/dist/components/display/CurrencyDisplay.svelte +7 -4
  16. package/dist/components/display/DateDisplay.svelte +6 -3
  17. package/dist/components/display/Icon.svelte +4 -1
  18. package/dist/components/display/StatusBadge.svelte +9 -6
  19. package/dist/components/feedback/Alert.svelte +12 -8
  20. package/dist/components/feedback/ConfirmDialog.svelte +13 -10
  21. package/dist/components/feedback/LoadingOverlay.svelte +37 -34
  22. package/dist/components/feedback/Meter.svelte +4 -1
  23. package/dist/components/feedback/Modal.svelte +26 -21
  24. package/dist/components/feedback/PhoneSheet.svelte +6 -3
  25. package/dist/components/feedback/Progress.svelte +8 -5
  26. package/dist/components/feedback/ProgressBar.svelte +13 -10
  27. package/dist/components/feedback/Spinner.svelte +4 -1
  28. package/dist/components/feedback/ToastViewport.svelte +18 -15
  29. package/dist/components/feedback/WorkingStrip.svelte +6 -3
  30. package/dist/components/forms/CameraCapture.svelte +8 -5
  31. package/dist/components/forms/Checkbox.svelte +11 -8
  32. package/dist/components/forms/Combobox.svelte +5 -2
  33. package/dist/components/forms/DatePicker.svelte +7 -2
  34. package/dist/components/forms/DictationButton.svelte +17 -14
  35. package/dist/components/forms/DictationStatus.svelte +12 -9
  36. package/dist/components/forms/ErrorSummary.svelte +4 -1
  37. package/dist/components/forms/FieldLabel.svelte +9 -6
  38. package/dist/components/forms/Fieldset.svelte +4 -1
  39. package/dist/components/forms/FilePicker.svelte +5 -2
  40. package/dist/components/forms/Form.svelte +1 -1
  41. package/dist/components/forms/FormActionBar.svelte +4 -1
  42. package/dist/components/forms/FormGroup.svelte +6 -3
  43. package/dist/components/forms/Input.svelte +22 -15
  44. package/dist/components/forms/InputGroup.svelte +6 -3
  45. package/dist/components/forms/Listbox.svelte +5 -2
  46. package/dist/components/forms/MultiSelect.svelte +4 -1
  47. package/dist/components/forms/Radio.svelte +9 -6
  48. package/dist/components/forms/RadioGroup.svelte +5 -2
  49. package/dist/components/forms/RangeSlider.svelte +5 -2
  50. package/dist/components/forms/RelationInput.svelte +7 -4
  51. package/dist/components/forms/SearchInput.svelte +7 -4
  52. package/dist/components/forms/SegmentedControl.svelte +6 -3
  53. package/dist/components/forms/Select.svelte +20 -13
  54. package/dist/components/forms/SignaturePad.svelte +8 -5
  55. package/dist/components/forms/Slider.svelte +5 -2
  56. package/dist/components/forms/StagedControlReview.svelte +15 -12
  57. package/dist/components/forms/Switch.svelte +8 -5
  58. package/dist/components/forms/TagsInput.svelte +5 -2
  59. package/dist/components/forms/Textarea.svelte +20 -13
  60. package/dist/components/forms/TimePicker.svelte +7 -2
  61. package/dist/components/forms/Toggle.svelte +14 -11
  62. package/dist/components/forms/ToggleButton.svelte +5 -2
  63. package/dist/components/layout/ActionGroup.svelte +4 -1
  64. package/dist/components/layout/Container.svelte +4 -1
  65. package/dist/components/layout/EmptyState.svelte +11 -8
  66. package/dist/components/layout/Footer.svelte +4 -1
  67. package/dist/components/layout/Grid.svelte +13 -10
  68. package/dist/components/layout/Header.svelte +4 -1
  69. package/dist/components/layout/Masthead.svelte +4 -1
  70. package/dist/components/layout/PageHeader.svelte +12 -9
  71. package/dist/components/layout/PageLayout.svelte +3 -0
  72. package/dist/components/layout/SummaryCard.svelte +9 -6
  73. package/dist/components/memberships/MembershipCard.svelte +5 -2
  74. package/dist/components/memberships/MembershipList.svelte +5 -2
  75. package/dist/components/nav/FilterChips.svelte +13 -10
  76. package/dist/components/nav/Tabs.svelte +75 -41
  77. package/dist/components/permissions/PermissionPicker.svelte +5 -2
  78. package/dist/components/roles/RoleBadge.svelte +8 -5
  79. package/dist/components/roles/RoleSelector.svelte +22 -19
  80. package/dist/components/theme/ThemeProvider.svelte +7 -4
  81. package/dist/components/ui/Accordion.svelte +4 -1
  82. package/dist/components/ui/AccordionItem.svelte +5 -2
  83. package/dist/components/ui/Avatar.svelte +10 -7
  84. package/dist/components/ui/Badge.svelte +6 -2
  85. package/dist/components/ui/Button.svelte +49 -37
  86. package/dist/components/ui/Card.svelte +18 -14
  87. package/dist/components/ui/Chip.svelte +41 -14
  88. package/dist/components/ui/Disclosure.svelte +5 -2
  89. package/dist/components/ui/Dropdown.svelte +33 -25
  90. package/dist/components/ui/IconToggle.svelte +12 -9
  91. package/dist/components/ui/IconToggle.svelte.d.ts +1 -1
  92. package/dist/components/ui/IconToggle.svelte.d.ts.map +1 -1
  93. package/dist/components/ui/IconToggleGroup.svelte +8 -5
  94. package/dist/components/ui/Pagination.svelte +11 -8
  95. package/dist/components/ui/Popover.svelte +9 -6
  96. package/dist/components/ui/Skeleton.svelte +10 -7
  97. package/dist/components/ui/Tooltip.svelte +13 -9
  98. package/dist/components/ui/Tree.svelte +12 -9
  99. package/dist/styles/layers.css +8 -0
  100. package/dist/styles/layers.d.ts +9 -0
  101. package/dist/styles/layers.d.ts.map +1 -0
  102. package/dist/styles/layers.js +8 -0
  103. package/dist/styles/tokens.css +27 -69
  104. package/dist/styles/unstyled.css +65 -0
  105. package/dist/svelte/playground/BaseControlsPreview.svelte +3 -0
  106. package/dist/svelte/playground/CalendarPreview.svelte +5 -2
  107. package/dist/svelte/playground/CapturePreview.svelte +3 -0
  108. package/dist/svelte/playground/CodeSelectorsPreview.svelte +3 -0
  109. package/dist/svelte/playground/CollectionsPreview.svelte +3 -0
  110. package/dist/svelte/playground/DataTablePreview.svelte +3 -0
  111. package/dist/svelte/playground/FeedbackPreview.svelte +3 -0
  112. package/dist/svelte/playground/InteractiveControlsPreview.svelte +3 -0
  113. package/dist/svelte/playground/StylelessPreview.svelte +110 -0
  114. package/dist/svelte/playground/StylelessPreview.svelte.d.ts +4 -0
  115. package/dist/svelte/playground/StylelessPreview.svelte.d.ts.map +1 -0
  116. package/dist/svelte/playground.d.ts.map +1 -1
  117. package/dist/svelte/playground.js +10 -0
  118. package/dist/test-support/setup.js +9 -0
  119. package/dist/theme/ThemeProvider.svelte +3 -0
  120. package/dist/themes/CUSTOM_THEME_GUIDE.md +40 -0
  121. package/dist/themes/README.md +151 -0
  122. package/dist/themes/ThemeProvider.svelte +181 -12
  123. package/dist/themes/ThemeProvider.svelte.d.ts +7 -2
  124. package/dist/themes/ThemeProvider.svelte.d.ts.map +1 -1
  125. package/dist/themes/components/ColorSchemeToggle.svelte +17 -14
  126. package/dist/themes/components/ThemeSwitcher.svelte +14 -11
  127. package/dist/themes/create-theme.d.ts +22 -1
  128. package/dist/themes/create-theme.d.ts.map +1 -1
  129. package/dist/themes/create-theme.js +100 -9
  130. package/dist/themes/css-generator.d.ts.map +1 -1
  131. package/dist/themes/css-generator.js +20 -20
  132. package/dist/themes/derive.d.ts +31 -0
  133. package/dist/themes/derive.d.ts.map +1 -0
  134. package/dist/themes/derive.js +183 -0
  135. package/dist/themes/glass/index.d.ts.map +1 -1
  136. package/dist/themes/glass/index.js +127 -14
  137. package/dist/themes/happyvertical/index.d.ts.map +1 -1
  138. package/dist/themes/happyvertical/index.js +101 -20
  139. package/dist/themes/index.d.ts +2 -2
  140. package/dist/themes/index.d.ts.map +1 -1
  141. package/dist/themes/index.js +1 -1
  142. package/dist/themes/material/index.d.ts.map +1 -1
  143. package/dist/themes/material/index.js +129 -28
  144. package/dist/themes/required-tokens.generated.json +201 -0
  145. package/dist/themes/shared.d.ts +35 -0
  146. package/dist/themes/shared.d.ts.map +1 -1
  147. package/dist/themes/shared.js +32 -0
  148. package/dist/themes/smrt/index.d.ts +3 -0
  149. package/dist/themes/smrt/index.d.ts.map +1 -1
  150. package/dist/themes/smrt/index.js +108 -26
  151. package/dist/themes/studio/index.d.ts.map +1 -1
  152. package/dist/themes/studio/index.js +116 -40
  153. package/dist/themes/styles/base.css +229 -1
  154. package/dist/themes/styles/glass.css +107 -20
  155. package/dist/themes/styles/happyvertical.css +111 -15
  156. package/dist/themes/styles/material.css +127 -35
  157. package/dist/themes/styles/smrt.css +126 -31
  158. package/dist/themes/styles/studio.css +132 -37
  159. package/dist/themes/theme-script.d.ts +3 -1
  160. package/dist/themes/theme-script.d.ts.map +1 -1
  161. package/dist/themes/theme-script.js +7 -2
  162. package/dist/themes/types.d.ts +118 -6
  163. package/dist/themes/types.d.ts.map +1 -1
  164. package/dist/utils/theme/typography.d.ts +21 -21
  165. package/dist/utils/theme/typography.js +21 -21
  166. package/package.json +8 -2
@@ -0,0 +1,201 @@
1
+ {
2
+ "$comment": "Generated by scripts/generate-smrt-required-tokens.mjs. Do not edit by hand.",
3
+ "required": [
4
+ "--smrt-color-background",
5
+ "--smrt-color-error",
6
+ "--smrt-color-error-container",
7
+ "--smrt-color-inverse-on-surface",
8
+ "--smrt-color-inverse-surface",
9
+ "--smrt-color-on-background",
10
+ "--smrt-color-on-error",
11
+ "--smrt-color-on-error-container",
12
+ "--smrt-color-on-primary",
13
+ "--smrt-color-on-primary-container",
14
+ "--smrt-color-on-secondary",
15
+ "--smrt-color-on-secondary-container",
16
+ "--smrt-color-on-success-container",
17
+ "--smrt-color-on-surface",
18
+ "--smrt-color-on-surface-variant",
19
+ "--smrt-color-on-tertiary",
20
+ "--smrt-color-on-tertiary-container",
21
+ "--smrt-color-on-warning-container",
22
+ "--smrt-color-outline",
23
+ "--smrt-color-outline-variant",
24
+ "--smrt-color-primary",
25
+ "--smrt-color-primary-container",
26
+ "--smrt-color-scrim",
27
+ "--smrt-color-secondary",
28
+ "--smrt-color-secondary-container",
29
+ "--smrt-color-shadow",
30
+ "--smrt-color-success",
31
+ "--smrt-color-success-container",
32
+ "--smrt-color-surface",
33
+ "--smrt-color-surface-container",
34
+ "--smrt-color-surface-container-high",
35
+ "--smrt-color-surface-container-highest",
36
+ "--smrt-color-surface-container-low",
37
+ "--smrt-color-surface-container-lowest",
38
+ "--smrt-color-surface-dim",
39
+ "--smrt-color-surface-variant",
40
+ "--smrt-color-tertiary",
41
+ "--smrt-color-tertiary-container",
42
+ "--smrt-color-warning",
43
+ "--smrt-color-warning-container",
44
+ "--smrt-control-height",
45
+ "--smrt-control-height-small",
46
+ "--smrt-control-radius",
47
+ "--smrt-control-radius-small",
48
+ "--smrt-duration-fast",
49
+ "--smrt-duration-medium1",
50
+ "--smrt-duration-normal",
51
+ "--smrt-duration-short2",
52
+ "--smrt-duration-short3",
53
+ "--smrt-duration-short4",
54
+ "--smrt-easing-emphasized",
55
+ "--smrt-easing-emphasized-decelerate",
56
+ "--smrt-easing-standard",
57
+ "--smrt-elevation-1",
58
+ "--smrt-elevation-2",
59
+ "--smrt-elevation-3",
60
+ "--smrt-elevation-4",
61
+ "--smrt-elevation-5",
62
+ "--smrt-focus-ring-color",
63
+ "--smrt-focus-ring-offset",
64
+ "--smrt-focus-ring-width",
65
+ "--smrt-font-family",
66
+ "--smrt-font-family-mono",
67
+ "--smrt-glass-blur",
68
+ "--smrt-glass-saturation",
69
+ "--smrt-glass-surface",
70
+ "--smrt-glass-surface-strong",
71
+ "--smrt-hairline",
72
+ "--smrt-hairline-color",
73
+ "--smrt-hairline-strong",
74
+ "--smrt-hairline-strong-color",
75
+ "--smrt-inset-highlight",
76
+ "--smrt-radius-2xl",
77
+ "--smrt-radius-extra-large",
78
+ "--smrt-radius-extra-small",
79
+ "--smrt-radius-full",
80
+ "--smrt-radius-large",
81
+ "--smrt-radius-lg",
82
+ "--smrt-radius-md",
83
+ "--smrt-radius-medium",
84
+ "--smrt-radius-sm",
85
+ "--smrt-radius-small",
86
+ "--smrt-radius-xl",
87
+ "--smrt-scrollbar-thumb",
88
+ "--smrt-scrollbar-track",
89
+ "--smrt-spacing-0_5",
90
+ "--smrt-spacing-1",
91
+ "--smrt-spacing-10",
92
+ "--smrt-spacing-11",
93
+ "--smrt-spacing-12",
94
+ "--smrt-spacing-1_5",
95
+ "--smrt-spacing-2",
96
+ "--smrt-spacing-2xl",
97
+ "--smrt-spacing-3",
98
+ "--smrt-spacing-3xl",
99
+ "--smrt-spacing-4",
100
+ "--smrt-spacing-5",
101
+ "--smrt-spacing-6",
102
+ "--smrt-spacing-8",
103
+ "--smrt-spacing-lg",
104
+ "--smrt-spacing-md",
105
+ "--smrt-spacing-sm",
106
+ "--smrt-spacing-xl",
107
+ "--smrt-spacing-xs",
108
+ "--smrt-state-disabled",
109
+ "--smrt-state-dragged",
110
+ "--smrt-state-hover",
111
+ "--smrt-state-pressed",
112
+ "--smrt-state-selected",
113
+ "--smrt-surface-control",
114
+ "--smrt-surface-ground",
115
+ "--smrt-surface-overlay",
116
+ "--smrt-surface-panel",
117
+ "--smrt-surface-raised",
118
+ "--smrt-surface-sunken",
119
+ "--smrt-touch-target-min",
120
+ "--smrt-typography-body-large-font",
121
+ "--smrt-typography-body-large-line-height",
122
+ "--smrt-typography-body-large-size",
123
+ "--smrt-typography-body-large-tracking",
124
+ "--smrt-typography-body-medium-font",
125
+ "--smrt-typography-body-medium-line-height",
126
+ "--smrt-typography-body-medium-size",
127
+ "--smrt-typography-body-medium-tracking",
128
+ "--smrt-typography-body-medium-weight",
129
+ "--smrt-typography-body-small-font",
130
+ "--smrt-typography-body-small-line-height",
131
+ "--smrt-typography-body-small-size",
132
+ "--smrt-typography-body-small-weight",
133
+ "--smrt-typography-display-medium-line-height",
134
+ "--smrt-typography-display-medium-size",
135
+ "--smrt-typography-display-small-size",
136
+ "--smrt-typography-headline-large-line-height",
137
+ "--smrt-typography-headline-large-size",
138
+ "--smrt-typography-headline-large-weight",
139
+ "--smrt-typography-headline-medium-line-height",
140
+ "--smrt-typography-headline-medium-size",
141
+ "--smrt-typography-headline-medium-weight",
142
+ "--smrt-typography-headline-small-font",
143
+ "--smrt-typography-headline-small-line-height",
144
+ "--smrt-typography-headline-small-size",
145
+ "--smrt-typography-headline-small-weight",
146
+ "--smrt-typography-label-large-font",
147
+ "--smrt-typography-label-large-size",
148
+ "--smrt-typography-label-large-tracking",
149
+ "--smrt-typography-label-large-weight",
150
+ "--smrt-typography-label-medium-font",
151
+ "--smrt-typography-label-medium-size",
152
+ "--smrt-typography-label-medium-tracking",
153
+ "--smrt-typography-label-medium-weight",
154
+ "--smrt-typography-label-small-font",
155
+ "--smrt-typography-label-small-line-height",
156
+ "--smrt-typography-label-small-size",
157
+ "--smrt-typography-label-small-tracking",
158
+ "--smrt-typography-label-small-weight",
159
+ "--smrt-typography-title-large-font",
160
+ "--smrt-typography-title-large-line-height",
161
+ "--smrt-typography-title-large-size",
162
+ "--smrt-typography-title-medium-font",
163
+ "--smrt-typography-title-medium-font-family",
164
+ "--smrt-typography-title-medium-line-height",
165
+ "--smrt-typography-title-medium-size",
166
+ "--smrt-typography-title-medium-tracking",
167
+ "--smrt-typography-title-medium-weight",
168
+ "--smrt-typography-title-small-font",
169
+ "--smrt-typography-title-small-size",
170
+ "--smrt-typography-title-small-tracking",
171
+ "--smrt-typography-title-small-weight",
172
+ "--smrt-typography-weight-bold",
173
+ "--smrt-typography-weight-medium",
174
+ "--smrt-typography-weight-normal",
175
+ "--smrt-typography-weight-semibold",
176
+ "--smrt-z-index-dialog",
177
+ "--smrt-z-index-dropdown",
178
+ "--smrt-z-index-modal",
179
+ "--smrt-z-index-overlay",
180
+ "--smrt-z-index-sticky",
181
+ "--smrt-z-index-toast",
182
+ "--smrt-z-index-tooltip"
183
+ ],
184
+ "optional": [
185
+ "--smrt-admin-shell-background",
186
+ "--smrt-admin-shell-scrollbar-thumb",
187
+ "--smrt-admin-shell-scrollbar-thumb-hover",
188
+ "--smrt-admin-shell-scrollbar-track",
189
+ "--smrt-card-background",
190
+ "--smrt-card-border",
191
+ "--smrt-card-divider",
192
+ "--smrt-card-shadow",
193
+ "--smrt-content-editor-icon-size",
194
+ "--smrt-control-hit-size",
195
+ "--smrt-popover-panel-padding",
196
+ "--smrt-popover-panel-width",
197
+ "--smrt-shell-title-font-family",
198
+ "--smrt-sortable-header-font-weight",
199
+ "--smrt-sortable-header-padding"
200
+ ]
201
+ }
@@ -75,4 +75,39 @@ export declare const appleEasing: EasingScale;
75
75
  * Studio-style easings (for Studio theme - snappier)
76
76
  */
77
77
  export declare const studioEasing: EasingScale;
78
+ /**
79
+ * One shadow layer: `[offset-y, blur, spread, alpha%]`, tinted by the scheme's
80
+ * `--smrt-shadow-color` (the theme's own token, so the tint follows the preset).
81
+ */
82
+ export type ShadowLayer = readonly [
83
+ y: number,
84
+ blur: number,
85
+ spread: number,
86
+ alphaPercent: number
87
+ ];
88
+ /**
89
+ * Compose a box-shadow from layers. Elevation levels are two-layer: a contact
90
+ * shadow (`0 1px 2px`) that anchors the edge, and an ambient shadow (`0 Npx Mpx`
91
+ * with negative spread) that lifts it. `prefix` lists extra leading layers, e.g.
92
+ * `var(--smrt-inset-highlight)` on dark schemes.
93
+ */
94
+ export declare function shadow(layers: readonly ShadowLayer[], prefix?: string): string;
95
+ /** Quiet hairline inset used as elevation 1 by the flat presets. */
96
+ export declare const hairlineInset = "inset 0 0 0 1px var(--smrt-hairline-color)";
97
+ /** Text-colour mixes used for hairlines: quiet edge and strong control edge. */
98
+ export declare function hairlineMix(quietPercent: number, strongPercent: number, insetHighlight: string): {
99
+ color: string;
100
+ strongColor: string;
101
+ insetHighlight: string;
102
+ };
103
+ /**
104
+ * Neutral values that are still valid box-shadow layers. Components combine
105
+ * `var(--smrt-inset-highlight)` with an elevation (`box-shadow: a, b`); the
106
+ * keyword `none` is invalid inside a list and drops the whole declaration, so
107
+ * the "no highlight" and "no elevation" values are transparent shadows.
108
+ */
109
+ export declare const noInsetHighlight = "inset 0 1px 0 transparent";
110
+ export declare const noShadow = "0 0 0 0 transparent";
111
+ /** Top inner light line for dark surfaces (`--smrt-inset-highlight`). */
112
+ export declare const darkInsetHighlight: (alpha: number) => string;
78
113
  //# sourceMappingURL=shared.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/themes/shared.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,YAsB1B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,YAAY,CAQ7D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,iBAS/B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,iBAAiB,CAMvE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,aAM3B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAalD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAEpD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKnD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAW/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,WAO5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,WAOzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,WAO1B,CAAC"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/themes/shared.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,YAsB1B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,YAAY,CAQ7D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,iBAS/B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,iBAAiB,CAMvE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,aAM3B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAalD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAEpD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKnD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAW/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,WAO5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,WAOzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,WAO1B,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,SAAS;IACjC,CAAC,EAAE,MAAM;IACT,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,MAAM;IACd,YAAY,EAAE,MAAM;CACrB,CAAC;AAKF;;;;;GAKG;AACH,wBAAgB,MAAM,CACpB,MAAM,EAAE,SAAS,WAAW,EAAE,EAC9B,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAMR;AAED,oEAAoE;AACpE,eAAO,MAAM,aAAa,+CAA+C,CAAC;AAE1E,gFAAgF;AAChF,wBAAgB,WAAW,CACzB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,GACrB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAMhE;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,8BAA8B,CAAC;AAC5D,eAAO,MAAM,QAAQ,wBAAwB,CAAC;AAE9C,yEAAyE;AACzE,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,KAAG,MACN,CAAC"}
@@ -177,3 +177,35 @@ export const studioEasing = {
177
177
  emphasizedDecelerate: 'cubic-bezier(0.0, 0, 0.2, 1)',
178
178
  emphasizedAccelerate: 'cubic-bezier(0.4, 0, 1, 1)',
179
179
  };
180
+ /** `px` length, `0` without a unit so the value stays valid and short. */
181
+ const px = (n) => (n === 0 ? '0' : `${n}px`);
182
+ /**
183
+ * Compose a box-shadow from layers. Elevation levels are two-layer: a contact
184
+ * shadow (`0 1px 2px`) that anchors the edge, and an ambient shadow (`0 Npx Mpx`
185
+ * with negative spread) that lifts it. `prefix` lists extra leading layers, e.g.
186
+ * `var(--smrt-inset-highlight)` on dark schemes.
187
+ */
188
+ export function shadow(layers, prefix) {
189
+ const parts = layers.map(([y, blur, spread, alpha]) => `0 ${px(y)} ${px(blur)} ${px(spread)} color-mix(in srgb, var(--smrt-shadow-color) ${alpha}%, transparent)`);
190
+ return prefix ? [prefix, ...parts].join(', ') : parts.join(', ');
191
+ }
192
+ /** Quiet hairline inset used as elevation 1 by the flat presets. */
193
+ export const hairlineInset = 'inset 0 0 0 1px var(--smrt-hairline-color)';
194
+ /** Text-colour mixes used for hairlines: quiet edge and strong control edge. */
195
+ export function hairlineMix(quietPercent, strongPercent, insetHighlight) {
196
+ return {
197
+ color: `color-mix(in srgb, var(--smrt-color-on-surface) ${quietPercent}%, transparent)`,
198
+ strongColor: `color-mix(in srgb, var(--smrt-color-on-surface) ${strongPercent}%, transparent)`,
199
+ insetHighlight,
200
+ };
201
+ }
202
+ /**
203
+ * Neutral values that are still valid box-shadow layers. Components combine
204
+ * `var(--smrt-inset-highlight)` with an elevation (`box-shadow: a, b`); the
205
+ * keyword `none` is invalid inside a list and drops the whole declaration, so
206
+ * the "no highlight" and "no elevation" values are transparent shadows.
207
+ */
208
+ export const noInsetHighlight = 'inset 0 1px 0 transparent';
209
+ export const noShadow = '0 0 0 0 transparent';
210
+ /** Top inner light line for dark surfaces (`--smrt-inset-highlight`). */
211
+ export const darkInsetHighlight = (alpha) => `inset 0 1px 0 rgb(255 255 255 / ${alpha})`;
@@ -6,6 +6,9 @@
6
6
  * accent (`#ff7a1a`), hairline outlines, deep low shadows, and a
7
7
  * Space Grotesk / Inter / JetBrains Mono type stack.
8
8
  *
9
+ * Depth is calm: two-layer shadows (contact + short ambient) and graphite surface
10
+ * lightness, never far-spread or glowing shadows.
11
+ *
9
12
  * The token palette restyles every existing smrt-ui component; the signature
10
13
  * motifs (engineering-grid background, glow, oscilloscope hairline, instrument
11
14
  * readouts, monospace technical labels) ship as opt-in utility classes in
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/themes/smrt/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAIV,KAAK,EAEN,MAAM,aAAa,CAAC;AA4TrB;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,KAavB,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/themes/smrt/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAcH,OAAO,KAAK,EAIV,KAAK,EAEN,MAAM,aAAa,CAAC;AA4WrB;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,KAyDvB,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -6,12 +6,16 @@
6
6
  * accent (`#ff7a1a`), hairline outlines, deep low shadows, and a
7
7
  * Space Grotesk / Inter / JetBrains Mono type stack.
8
8
  *
9
+ * Depth is calm: two-layer shadows (contact + short ambient) and graphite surface
10
+ * lightness, never far-spread or glowing shadows.
11
+ *
9
12
  * The token palette restyles every existing smrt-ui component; the signature
10
13
  * motifs (engineering-grid background, glow, oscilloscope hairline, instrument
11
14
  * readouts, monospace technical labels) ship as opt-in utility classes in
12
15
  * `styles/smrt.css`, and the fonts in `styles/fonts.css`.
13
16
  */
14
- import { borderRadiusScale, durationScale, spacingScale } from '../shared.js';
17
+ import { baselineTokens, opaqueGlass } from '../derive.js';
18
+ import { borderRadiusScale, darkInsetHighlight, durationScale, hairlineInset, hairlineMix, noInsetHighlight, noShadow, shadow, spacingScale, } from '../shared.js';
15
19
  /** Display family (headings) — falls back gracefully when fonts.css is absent. */
16
20
  const DISPLAY_FONT = '"Space Grotesk", system-ui, -apple-system, sans-serif';
17
21
  /**
@@ -37,6 +41,11 @@ const lightColors = {
37
41
  onTertiary: '#ffffff',
38
42
  tertiaryContainer: '#e7e0ff',
39
43
  onTertiaryContainer: '#3a2b8c',
44
+ // Info - Steel blue, distinct from the amber signal and the violet tertiary
45
+ info: '#2c6a96',
46
+ onInfo: '#ffffff',
47
+ infoContainer: '#dcebf5',
48
+ onInfoContainer: '#0f3149',
40
49
  // Error
41
50
  error: '#c0362c',
42
51
  onError: '#ffffff',
@@ -104,6 +113,11 @@ const darkColors = {
104
113
  onTertiary: '#241a4d',
105
114
  tertiaryContainer: '#2a2350',
106
115
  onTertiaryContainer: '#ddd4ff',
116
+ // Info - Steel blue, distinct from the amber signal and the violet tertiary
117
+ info: '#6fa8d6',
118
+ onInfo: '#08202f',
119
+ infoContainer: '#162a39',
120
+ onInfoContainer: '#b5d6ee',
107
121
  // Error
108
122
  error: '#ff6b6b',
109
123
  onError: '#2a0a0a',
@@ -241,52 +255,76 @@ const typography = {
241
255
  labelLarge: {
242
256
  size: '0.8125rem',
243
257
  lineHeight: '1.4',
244
- weight: '600',
245
- tracking: '0.04em',
258
+ weight: '500',
259
+ tracking: '0.01em',
246
260
  fontFamily: 'var(--smrt-font-family)',
247
261
  },
248
262
  labelMedium: {
249
263
  size: '0.6875rem',
250
264
  lineHeight: '1.4',
251
- weight: '600',
252
- tracking: '0.08em',
265
+ weight: '500',
266
+ tracking: '0.03em',
253
267
  fontFamily: 'var(--smrt-font-family)',
254
268
  },
255
269
  labelSmall: {
256
270
  size: '0.625rem',
257
271
  lineHeight: '1.4',
258
- weight: '600',
259
- tracking: '0.1em',
272
+ weight: '500',
273
+ tracking: '0.05em',
260
274
  fontFamily: 'var(--smrt-font-family)',
261
275
  },
262
276
  };
263
277
  /**
264
- * SMRT elevation (light) — deep, soft, low-spread shadows.
265
- *
266
- * The workbench panels sit on big diffuse drop shadows with a tight inset
267
- * hairline at level 1. Light scheme tints the shadow with the cool ink grey.
278
+ * SMRT elevation (light) — calm, visible two-layer shadows. Level 1 is the
279
+ * hairline; the former far-spread drop shadows (44-90px blur, -28 to -50px
280
+ * spread, which disappeared on paper) are replaced by a contact shadow plus a
281
+ * short ambient layer.
268
282
  */
269
283
  const elevation = {
270
- 0: 'none',
271
- 1: 'inset 0 0 0 1px rgba(20, 26, 36, 0.08)',
272
- 2: '0 18px 44px -28px rgba(20, 26, 36, 0.18)',
273
- 3: '0 24px 56px -34px rgba(20, 26, 36, 0.22)',
274
- 4: '0 30px 70px -40px rgba(20, 26, 36, 0.28)',
275
- 5: '0 40px 90px -50px rgba(20, 26, 36, 0.3)',
284
+ 0: noShadow,
285
+ 1: hairlineInset,
286
+ 2: shadow([
287
+ [1, 2, 0, 10],
288
+ [4, 10, -4, 10],
289
+ ]),
290
+ 3: shadow([
291
+ [1, 3, 0, 12],
292
+ [8, 18, -6, 14],
293
+ ]),
294
+ 4: shadow([
295
+ [2, 4, 0, 14],
296
+ [14, 28, -8, 16],
297
+ ]),
298
+ 5: shadow([
299
+ [2, 6, 0, 16],
300
+ [24, 48, -12, 20],
301
+ ]),
276
302
  };
277
303
  /**
278
- * SMRT elevation (dark) — black drop shadows with a white inset hairline.
279
- *
280
- * Defined here (not only in the static `styles/smrt.css`) so the JS
304
+ * SMRT elevation (dark) — the hairline at level 1; above it graphite surface
305
+ * lightness carries altitude, with the inset top highlight and black shadows in
306
+ * support. Defined here (not only in the static `styles/smrt.css`) so the JS
281
307
  * ThemeProvider output and the static dark CSS stay in lockstep (#1586).
282
308
  */
283
309
  const darkElevation = {
284
- 0: 'none',
285
- 1: 'inset 0 0 0 1px rgba(255, 255, 255, 0.06)',
286
- 2: '0 18px 44px -28px rgba(0, 0, 0, 0.6)',
287
- 3: '0 24px 56px -34px rgba(0, 0, 0, 0.72)',
288
- 4: '0 30px 66px -40px rgba(0, 0, 0, 0.82)',
289
- 5: '0 40px 90px -50px rgba(0, 0, 0, 0.88)',
310
+ 0: noShadow,
311
+ 1: hairlineInset,
312
+ 2: shadow([
313
+ [1, 2, 0, 36],
314
+ [4, 10, -4, 28],
315
+ ], 'var(--smrt-inset-highlight)'),
316
+ 3: shadow([
317
+ [1, 3, 0, 40],
318
+ [8, 18, -6, 36],
319
+ ], 'var(--smrt-inset-highlight)'),
320
+ 4: shadow([
321
+ [2, 4, 0, 44],
322
+ [14, 28, -8, 42],
323
+ ], 'var(--smrt-inset-highlight)'),
324
+ 5: shadow([
325
+ [2, 6, 0, 48],
326
+ [24, 48, -12, 50],
327
+ ], 'var(--smrt-inset-highlight)'),
290
328
  };
291
329
  /**
292
330
  * SMRT easings — the workbench reveal curve as the emphasized easing.
@@ -314,6 +352,50 @@ export const smrtTheme = {
314
352
  borderRadius: borderRadiusScale,
315
353
  duration: durationScale,
316
354
  easing: smrtEasing,
355
+ glass: { ...opaqueGlass },
356
+ ...baselineTokens(lightColors, darkColors),
357
+ shadowColor: { light: 'rgb(20 26 36)', dark: 'rgb(0 0 0)' },
358
+ // Instrument ladder: deep ground, graphite panels, then control and raised
359
+ // tiers that step up in lightness (dark); paper panels on a cool ground (light).
360
+ surfaces: {
361
+ light: {
362
+ ground: lightColors.background,
363
+ panel: lightColors.surface,
364
+ control: lightColors.surfaceContainer,
365
+ raised: lightColors.surfaceContainerLowest,
366
+ sunken: lightColors.surfaceContainerHighest,
367
+ overlay: lightColors.scrim,
368
+ },
369
+ dark: {
370
+ ground: darkColors.background,
371
+ panel: darkColors.surface,
372
+ control: darkColors.surfaceContainerHigh,
373
+ raised: '#1d2126',
374
+ sunken: '#08090b',
375
+ overlay: darkColors.scrim,
376
+ },
377
+ },
378
+ hairlines: {
379
+ light: hairlineMix(12, 30, noInsetHighlight),
380
+ dark: hairlineMix(9, 24, darkInsetHighlight(0.05)),
381
+ },
382
+ states: {
383
+ hover: '0.10',
384
+ pressed: '0.16',
385
+ selected: '0.14',
386
+ focus: '0.16',
387
+ dragged: '0.20',
388
+ disabled: '0.38',
389
+ },
390
+ controls: {
391
+ radius: 'var(--smrt-radius-sm)',
392
+ radiusSmall: 'var(--smrt-radius-sm)',
393
+ height: '2.5rem',
394
+ heightSmall: '2rem',
395
+ weight: '500',
396
+ },
397
+ // Inter: tabular figures and the flat-topped 1 keep columns of numbers aligned.
398
+ fontFeatureSettings: '"tnum" 1, "cv11" 1',
317
399
  fontFamily: '"Inter", system-ui, -apple-system, "Segoe UI", sans-serif',
318
400
  };
319
401
  export default smrtTheme;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/themes/studio/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,KAAK,EAGV,KAAK,EAEN,MAAM,aAAa,CAAC;AAqSrB;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KAazB,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/themes/studio/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAeH,OAAO,KAAK,EAGV,KAAK,EAEN,MAAM,aAAa,CAAC;AAmVrB;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KAwDzB,CAAC;AAEF,eAAe,WAAW,CAAC"}