@burdenoff/fe-libs 2026.619.2 → 2026.623.2

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 (122) hide show
  1. package/dist/chrome/AccountSwitcher.js +8 -8
  2. package/dist/chrome/AppShellLayout.d.ts +4 -1
  3. package/dist/chrome/AppShellLayout.d.ts.map +1 -1
  4. package/dist/chrome/AppShellLayout.js +1 -1
  5. package/dist/chrome/AutoBreadcrumbs.d.ts.map +1 -1
  6. package/dist/chrome/AutoBreadcrumbs.js +6 -6
  7. package/dist/chrome/Breadcrumbs.js +3 -3
  8. package/dist/chrome/CommandPalette.js +15 -15
  9. package/dist/chrome/ContextSwitcher.js +1 -1
  10. package/dist/chrome/Footer.js +1 -1
  11. package/dist/chrome/FooterBar.js +2 -2
  12. package/dist/chrome/GlobalSearch.js +3 -3
  13. package/dist/chrome/HeaderBar.d.ts.map +1 -1
  14. package/dist/chrome/HeaderBar.js +6 -6
  15. package/dist/chrome/LanguagePickerSheet.js +1 -1
  16. package/dist/chrome/LanguageSwitcher.js +4 -4
  17. package/dist/chrome/NavLink.d.ts.map +1 -1
  18. package/dist/chrome/NavLink.js +5 -6
  19. package/dist/chrome/PageHeader.js +3 -3
  20. package/dist/chrome/PanelTabs.js +5 -5
  21. package/dist/chrome/PluginContextMenuTarget.js +2 -2
  22. package/dist/chrome/PluginFooterStrip.js +2 -2
  23. package/dist/chrome/PluginSettingsPage.js +3 -3
  24. package/dist/chrome/PluginWidgetGrid.js +1 -1
  25. package/dist/chrome/ProductPickerSheet.js +3 -3
  26. package/dist/chrome/ProductSwitcher.js +9 -9
  27. package/dist/chrome/ProfileSwitcher.d.ts.map +1 -1
  28. package/dist/chrome/ProfileSwitcher.js +11 -11
  29. package/dist/chrome/ShortcutHelpDialog.js +9 -9
  30. package/dist/chrome/SideNavigation.js +3 -3
  31. package/dist/chrome/Sidebar.js +8 -8
  32. package/dist/chrome/StatusBar.js +1 -1
  33. package/dist/chrome/Tabs.js +1 -1
  34. package/dist/chrome/contextSwitcher/OrganizationList.js +1 -1
  35. package/dist/chrome/contextSwitcher/ProjectList.js +1 -1
  36. package/dist/chrome/contextSwitcher/SearchInput.js +1 -1
  37. package/dist/chrome/contextSwitcher/TabButton.js +1 -1
  38. package/dist/chrome/contextSwitcher/TriggerButton.js +1 -1
  39. package/dist/chrome/contextSwitcher/WorkspaceList.js +1 -1
  40. package/dist/chrome/globalSearch/AdvancedFiltersPanel.js +29 -29
  41. package/dist/chrome/globalSearch/CategoryTabs.js +3 -3
  42. package/dist/chrome/globalSearch/ResultsList.js +8 -8
  43. package/dist/chrome/globalSearch/SearchInput.js +4 -4
  44. package/dist/chrome/globalSearch/SearchModeBar.js +3 -3
  45. package/dist/chrome/notificationCenter/BellButton.js +1 -1
  46. package/dist/chrome/notificationCenter/NotificationCardItem.js +5 -5
  47. package/dist/chrome/notificationCenter/NotificationFilters.js +5 -5
  48. package/dist/chrome/notificationCenter/NotificationFooter.js +1 -1
  49. package/dist/chrome/notificationCenter/NotificationHeader.js +2 -2
  50. package/dist/chrome/notificationCenter/NotificationList.js +2 -2
  51. package/dist/chrome/notificationCenter/NotificationPanel.d.ts.map +1 -1
  52. package/dist/chrome/notificationCenter/NotificationPanel.js +2 -2
  53. package/dist/chrome/notificationCenter/SkeletonCard.js +4 -4
  54. package/dist/chrome/notificationCenter/constants.js +5 -5
  55. package/dist/chrome/sideNavigation/CollapseToggle.js +1 -1
  56. package/dist/chrome/sideNavigation/MobileActionsBar.js +2 -2
  57. package/dist/chrome/sideNavigation/NavItemRenderer.d.ts.map +1 -1
  58. package/dist/chrome/sideNavigation/NavItemRenderer.js +23 -20
  59. package/dist/chrome/sideNavigation/SidebarHeader.js +1 -1
  60. package/dist/form/Checkbox.d.ts.map +1 -1
  61. package/dist/form/Checkbox.js +1 -1
  62. package/dist/form/FormDescription.js +1 -1
  63. package/dist/form/FormLabel.js +4 -4
  64. package/dist/form/FormMessage.js +1 -1
  65. package/dist/form/FormSection.d.ts.map +1 -1
  66. package/dist/form/FormSection.js +3 -3
  67. package/dist/form/Input.js +1 -1
  68. package/dist/form/Radio.d.ts.map +1 -1
  69. package/dist/form/Radio.js +2 -2
  70. package/dist/form/Select.d.ts.map +1 -1
  71. package/dist/form/Select.js +6 -6
  72. package/dist/form/Textarea.js +1 -1
  73. package/dist/shared/providers/shell/ThemeProvider.d.ts +20 -1
  74. package/dist/shared/providers/shell/ThemeProvider.d.ts.map +1 -1
  75. package/dist/shared/providers/shell/ThemeProvider.js +58 -47
  76. package/dist/storage/uploadBlob.d.ts.map +1 -1
  77. package/dist/ui/accordion.js +4 -4
  78. package/dist/ui/alert-dialog.js +3 -3
  79. package/dist/ui/badge.d.ts.map +1 -1
  80. package/dist/ui/badge.js +8 -8
  81. package/dist/ui/bottom-sheet.js +4 -4
  82. package/dist/ui/button.d.ts.map +1 -1
  83. package/dist/ui/button.js +8 -8
  84. package/dist/ui/card.d.ts.map +1 -1
  85. package/dist/ui/card.js +3 -3
  86. package/dist/ui/checkbox.js +1 -1
  87. package/dist/ui/command.d.ts.map +1 -1
  88. package/dist/ui/command.js +11 -11
  89. package/dist/ui/dialog.d.ts.map +1 -1
  90. package/dist/ui/dialog.js +5 -5
  91. package/dist/ui/dropdown-menu.d.ts.map +1 -1
  92. package/dist/ui/dropdown-menu.js +10 -10
  93. package/dist/ui/empty-state.d.ts.map +1 -1
  94. package/dist/ui/empty-state.js +3 -3
  95. package/dist/ui/input.js +1 -1
  96. package/dist/ui/label.js +1 -1
  97. package/dist/ui/optional-fields.d.ts.map +1 -1
  98. package/dist/ui/optional-fields.js +2 -2
  99. package/dist/ui/popover.js +1 -1
  100. package/dist/ui/responsive-table.js +2 -2
  101. package/dist/ui/scroll-area.js +2 -2
  102. package/dist/ui/select.d.ts.map +1 -1
  103. package/dist/ui/select.js +6 -6
  104. package/dist/ui/separator.js +1 -1
  105. package/dist/ui/sheet.js +3 -3
  106. package/dist/ui/skeleton.js +1 -1
  107. package/dist/ui/sonner.js +4 -4
  108. package/dist/ui/spinner.js +1 -1
  109. package/dist/ui/stepper.d.ts.map +1 -1
  110. package/dist/ui/stepper.js +6 -6
  111. package/dist/ui/switch.js +2 -2
  112. package/dist/ui/table.d.ts.map +1 -1
  113. package/dist/ui/table.js +7 -7
  114. package/dist/ui/tabs.js +2 -2
  115. package/dist/ui/textarea.js +1 -1
  116. package/dist/ui/tooltip.js +1 -1
  117. package/package.json +1 -1
  118. package/src/shared/tokens/build/foundation.css +31 -12
  119. package/src/shared/tokens/build/semantic.css +84 -24
  120. package/src/shared/tokens/build/tailwind.preset.js +13 -0
  121. package/src/shared/tokens/build/themes.css +304 -0
  122. package/src/shared/tokens/tokens.css +5 -0
@@ -0,0 +1,304 @@
1
+ /* Boff UI — Expressive & Accessibility Themes
2
+ *
3
+ * These four themes extend the light/dark base defined in semantic.css. They
4
+ * are selected via `data-theme="<name>"` on the document root and live in the
5
+ * `themes` CSS @layer (imported AFTER `brands` in tokens.css), so an expressive
6
+ * theme may set its own accent (--color-action-primary-*) and win over the
7
+ * per-brand accent. forest/ocean/sunset/high-contrast are all dark-family; the
8
+ * host ThemeProvider also adds the Tailwind `.dark` class for them, so any
9
+ * token a theme does NOT override inherits the dark base (and var()/color-mix
10
+ * derived tokens — accent-soft, focus ring, shadow glow, back-compat aliases —
11
+ * recompute automatically against the theme's accent).
12
+ *
13
+ * Rule: never change spacing, type scale, layout, or component behavior per
14
+ * theme — only color/surface/elevation/glass/accent/focus.
15
+ */
16
+
17
+ /* ============================ FOREST ============================ *
18
+ * Immersive farm / nature. Deep green-charcoal surfaces, green accent. */
19
+ [data-theme='forest'] {
20
+ color-scheme: dark;
21
+
22
+ --color-bg-canvas: #0A130D;
23
+ --color-bg-surface: #122019;
24
+ --color-bg-elevated: #192C22;
25
+ --color-bg-sunken: #060C09;
26
+ --color-bg-inverse: #EDF6F0;
27
+ --color-bg-overlay: rgba(4, 10, 7, 0.72);
28
+ --color-bg-accent: #0E2A1B;
29
+ --color-bg-accentSubtle: #0B3D26;
30
+ --color-bg-disabled: #192C22;
31
+
32
+ --color-text-primary: #EDF6F0;
33
+ --color-text-secondary: #B0C7B9;
34
+ --color-text-tertiary: #87A292;
35
+ --color-text-muted: #87A292;
36
+ --color-text-inverse: #0A130D;
37
+ --color-text-link: #6EE7A8;
38
+ --color-text-linkHover: #9CF0C2;
39
+ --color-text-placeholder: #6A8576;
40
+ --color-text-disabled: #56705F;
41
+
42
+ --color-border-default: #294437;
43
+ --color-border-subtle: #1B2E24;
44
+ --color-border-strong: #3B5A49;
45
+
46
+ /* Deeper green so WHITE button text is legible (vivid #22C55E only takes dark
47
+ * text — which reads poorly on the saturated fill). #22C55E stays the chart/
48
+ * accent-icon hue below. */
49
+ --color-action-primary-bg: #15803D;
50
+ --color-action-primary-bgHover: #1B9E4B;
51
+ --color-action-primary-bgActive: #0F5C2E;
52
+ --color-action-primary-bgDisabled: #1F3A2C;
53
+ --color-action-primary-text: #FFFFFF;
54
+ --color-action-primary-border: #15803D;
55
+
56
+ --color-action-secondary-bg: #19271F;
57
+ --color-action-secondary-bgHover: #21342A;
58
+ --color-action-secondary-bgActive: #2A4234;
59
+ --color-action-secondary-bgDisabled: #19271F;
60
+ --color-action-secondary-text: #EDF6F0;
61
+ --color-action-secondary-border: #294437;
62
+
63
+ --color-action-ghost-bgHover: #19271F;
64
+ --color-action-ghost-bgActive: #21342A;
65
+ --color-action-ghost-text: #B0C7B9;
66
+
67
+ --color-overlay-tooltipBg: #21342A;
68
+ --color-overlay-popoverBg: #19271F;
69
+ --color-surface-glass: rgba(18, 32, 25, 0.66);
70
+
71
+ /* Brand accent palette follows the theme accent in expressive themes, so
72
+ * components that used the vibecontrols purple now adopt the theme hue. */
73
+ --color-accent-purple: var(--color-action-primary-bg);
74
+ --color-accent-purple-hover: var(--color-action-primary-bgHover);
75
+ --color-accent-purple-subtle: var(--color-accent-soft);
76
+
77
+ --color-chart-1: #22C55E;
78
+ --color-chart-2: #2DD4BF;
79
+ --color-chart-positive: #34D399;
80
+ }
81
+
82
+ /* ============================ OCEAN ============================ *
83
+ * Analytical / calm. Deep blue surfaces, blue accent. */
84
+ [data-theme='ocean'] {
85
+ color-scheme: dark;
86
+
87
+ --color-bg-canvas: #091018;
88
+ --color-bg-surface: #10192A;
89
+ --color-bg-elevated: #182740;
90
+ --color-bg-sunken: #060B12;
91
+ --color-bg-inverse: #EEF3FB;
92
+ --color-bg-overlay: rgba(3, 8, 16, 0.72);
93
+ --color-bg-accent: #0E2440;
94
+ --color-bg-accentSubtle: #0B335C;
95
+ --color-bg-disabled: #182740;
96
+
97
+ --color-text-primary: #EEF3FB;
98
+ --color-text-secondary: #AAB9CE;
99
+ --color-text-tertiary: #8493AB;
100
+ --color-text-muted: #8493AB;
101
+ --color-text-inverse: #091018;
102
+ --color-text-link: #7AB6FF;
103
+ --color-text-linkHover: #A8CFFF;
104
+ --color-text-placeholder: #687893;
105
+ --color-text-disabled: #586278;
106
+
107
+ --color-border-default: #233246;
108
+ --color-border-subtle: #172333;
109
+ --color-border-strong: #34465E;
110
+
111
+ --color-action-primary-bg: #2563EB;
112
+ --color-action-primary-bgHover: #3B82F6;
113
+ --color-action-primary-bgActive: #1D4ED8;
114
+ --color-action-primary-bgDisabled: #1B2D4A;
115
+ --color-action-primary-text: #FFFFFF;
116
+ --color-action-primary-border: #2563EB;
117
+
118
+ --color-action-secondary-bg: #16243A;
119
+ --color-action-secondary-bgHover: #1E3150;
120
+ --color-action-secondary-bgActive: #26406A;
121
+ --color-action-secondary-bgDisabled: #16243A;
122
+ --color-action-secondary-text: #EEF3FB;
123
+ --color-action-secondary-border: #233246;
124
+
125
+ --color-action-ghost-bgHover: #16243A;
126
+ --color-action-ghost-bgActive: #1E3150;
127
+ --color-action-ghost-text: #AAB9CE;
128
+
129
+ --color-overlay-tooltipBg: #1E3150;
130
+ --color-overlay-popoverBg: #182740;
131
+ --color-surface-glass: rgba(16, 25, 42, 0.66);
132
+
133
+ --color-accent-purple: var(--color-action-primary-bg);
134
+ --color-accent-purple-hover: var(--color-action-primary-bgHover);
135
+ --color-accent-purple-subtle: var(--color-accent-soft);
136
+
137
+ --color-chart-1: #3B82F6;
138
+ --color-chart-2: #22D3EE;
139
+ --color-chart-positive: #34D399;
140
+ }
141
+
142
+ /* ============================ SUNSET ============================ *
143
+ * Warm / energetic. Plum-warm surfaces, orange accent. */
144
+ [data-theme='sunset'] {
145
+ color-scheme: dark;
146
+
147
+ --color-bg-canvas: #15101C;
148
+ --color-bg-surface: #20182A;
149
+ --color-bg-elevated: #2C2138;
150
+ --color-bg-sunken: #0F0B16;
151
+ --color-bg-inverse: #F6EEF3;
152
+ --color-bg-overlay: rgba(12, 7, 18, 0.72);
153
+ --color-bg-accent: #3A1E12;
154
+ --color-bg-accentSubtle: #4A2410;
155
+ --color-bg-disabled: #2C2138;
156
+
157
+ --color-text-primary: #F6EEF3;
158
+ --color-text-secondary: #C8B6C6;
159
+ --color-text-tertiary: #A290A0;
160
+ --color-text-muted: #A290A0;
161
+ --color-text-inverse: #15101C;
162
+ --color-text-link: #FBA56A;
163
+ --color-text-linkHover: #FDC9A0;
164
+ --color-text-placeholder: #82707F;
165
+ --color-text-disabled: #6B5C69;
166
+
167
+ --color-border-default: #3A2C44;
168
+ --color-border-subtle: #251B30;
169
+ --color-border-strong: #4E3C5A;
170
+
171
+ /* Deeper orange so WHITE button text is legible (vivid #F97316 only takes
172
+ * dark text). #F97316 stays the chart/accent-icon hue below. */
173
+ --color-action-primary-bg: #C2410C;
174
+ --color-action-primary-bgHover: #EA580C;
175
+ --color-action-primary-bgActive: #9A3412;
176
+ --color-action-primary-bgDisabled: #45301F;
177
+ --color-action-primary-text: #FFFFFF;
178
+ --color-action-primary-border: #C2410C;
179
+
180
+ --color-action-secondary-bg: #271B30;
181
+ --color-action-secondary-bgHover: #33243F;
182
+ --color-action-secondary-bgActive: #3F2D4E;
183
+ --color-action-secondary-bgDisabled: #271B30;
184
+ --color-action-secondary-text: #F6EEF3;
185
+ --color-action-secondary-border: #3A2C44;
186
+
187
+ --color-action-ghost-bgHover: #271B30;
188
+ --color-action-ghost-bgActive: #33243F;
189
+ --color-action-ghost-text: #C8B6C6;
190
+
191
+ --color-overlay-tooltipBg: #33243F;
192
+ --color-overlay-popoverBg: #2C2138;
193
+ --color-surface-glass: rgba(32, 24, 42, 0.66);
194
+
195
+ --color-accent-purple: var(--color-action-primary-bg);
196
+ --color-accent-purple-hover: var(--color-action-primary-bgHover);
197
+ --color-accent-purple-subtle: var(--color-accent-soft);
198
+
199
+ --color-chart-1: #F97316;
200
+ --color-chart-2: #FB7185;
201
+ --color-chart-positive: #34D399;
202
+ }
203
+
204
+ /* ======================= HIGH CONTRAST ======================= *
205
+ * Accessibility-first. Pure black/white, vivid green accent, yellow focus.
206
+ * No translucency / blur (solid surfaces for maximum legibility). */
207
+ [data-theme='high-contrast'] {
208
+ color-scheme: dark;
209
+
210
+ --color-bg-canvas: #000000;
211
+ --color-bg-surface: #0A0A0A;
212
+ --color-bg-elevated: #141414;
213
+ --color-bg-sunken: #000000;
214
+ --color-bg-inverse: #FFFFFF;
215
+ --color-bg-overlay: rgba(0, 0, 0, 0.85);
216
+ --color-bg-accent: #052E16;
217
+ --color-bg-accentSubtle: #06351A;
218
+ --color-bg-disabled: #1A1A1A;
219
+
220
+ --color-text-primary: #FFFFFF;
221
+ --color-text-secondary: #EDEDED;
222
+ --color-text-tertiary: #D4D4D4;
223
+ --color-text-muted: #D4D4D4;
224
+ --color-text-inverse: #000000;
225
+ --color-text-link: #6FB3FF;
226
+ --color-text-linkHover: #A8D1FF;
227
+ --color-text-placeholder: #BFBFBF;
228
+ --color-text-disabled: #8A8A8A;
229
+
230
+ --color-border-default: #6B6B6B;
231
+ --color-border-subtle: #4A4A4A;
232
+ --color-border-strong: #9A9A9A;
233
+ --color-border-hover: #9A9A9A;
234
+
235
+ --color-action-primary-bg: #00E676;
236
+ --color-action-primary-bgHover: #4DFF9D;
237
+ --color-action-primary-bgActive: #00C853;
238
+ --color-action-primary-bgDisabled: #1A1A1A;
239
+ --color-action-primary-text: #000000;
240
+ --color-action-primary-border: #00E676;
241
+
242
+ --color-action-secondary-bg: #1A1A1A;
243
+ --color-action-secondary-bgHover: #262626;
244
+ --color-action-secondary-bgActive: #333333;
245
+ --color-action-secondary-bgDisabled: #1A1A1A;
246
+ --color-action-secondary-text: #FFFFFF;
247
+ --color-action-secondary-border: #6B6B6B;
248
+
249
+ --color-action-ghost-bgHover: #1A1A1A;
250
+ --color-action-ghost-bgActive: #262626;
251
+ --color-action-ghost-text: #EDEDED;
252
+
253
+ --color-action-danger-bg: #FF453A;
254
+ --color-action-danger-bgHover: #FF6961;
255
+ --color-action-danger-bgActive: #E0352B;
256
+ --color-action-danger-text: #000000;
257
+ --color-action-danger-border: #FF453A;
258
+
259
+ --color-status-success-bg: #00C853;
260
+ --color-status-success-bgSubtle: #052E16;
261
+ --color-status-success-text: #4DFF9D;
262
+ --color-status-success-border: #00C853;
263
+ --color-status-warning-bg: #FFB300;
264
+ --color-status-warning-bgSubtle: #2E2305;
265
+ --color-status-warning-text: #FFE000;
266
+ --color-status-warning-border: #FFB300;
267
+ --color-status-error-bg: #FF453A;
268
+ --color-status-error-bgSubtle: #2E0606;
269
+ --color-status-error-text: #FF8A80;
270
+ --color-status-error-border: #FF453A;
271
+ --color-status-info-bg: #2196F3;
272
+ --color-status-info-bgSubtle: #06243A;
273
+ --color-status-info-text: #6FB3FF;
274
+ --color-status-info-border: #2196F3;
275
+
276
+ --color-overlay-scrim: rgba(0, 0, 0, 0.85);
277
+ --color-overlay-tooltipBg: #141414;
278
+ --color-overlay-tooltipText: #FFFFFF;
279
+ --color-overlay-popoverBg: #141414;
280
+
281
+ --color-chart-1: #00E676;
282
+ --color-chart-2: #29B6F6;
283
+ --color-chart-3: #FFEE58;
284
+ --color-chart-4: #FF7043;
285
+ --color-chart-5: #EC407A;
286
+ --color-chart-grid: #4A4A4A;
287
+ --color-chart-axis: #BFBFBF;
288
+ --color-chart-positive: #4DFF9D;
289
+ --color-chart-negative: #FF8A80;
290
+
291
+ /* Solid surfaces — no glass/blur in high contrast */
292
+ --color-surface-glass: #0A0A0A;
293
+ --color-border-glass: #6B6B6B;
294
+ --blur-glass: 0px;
295
+
296
+ /* Brand accent palette follows the theme accent (solid, no translucency) */
297
+ --color-accent-purple: #00E676;
298
+ --color-accent-purple-hover: #4DFF9D;
299
+ --color-accent-purple-subtle: #06351A;
300
+
301
+ /* Vivid yellow focus ring */
302
+ --color-focus-ring: #FFFF00;
303
+ --shadow-focus: 0 0 0 3px rgba(255, 255, 0, 0.55);
304
+ }
@@ -20,3 +20,8 @@
20
20
  @import './build/brands/healthybowl.css' layer(brands);
21
21
  @import './build/brands/fluidgrids.css' layer(brands);
22
22
  @import './build/brands/vibecontrols.css' layer(brands);
23
+
24
+ /* Boff UI expressive + accessibility themes (forest/ocean/sunset/high-contrast).
25
+ * Imported into the `themes` layer LAST so an expressive theme's accent wins
26
+ * over the per-brand accent. See build/themes.css. */
27
+ @import './build/themes.css' layer(themes);