@burtson-labs/ui 0.14.0 → 0.15.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.
- package/LICENSES/DEPENDENCIES.txt +1 -1
- package/README.md +15 -11
- package/dist/components/accordion.d.ts +3 -3
- package/dist/components/accordion.js +13 -10
- package/dist/components/accordion.js.map +1 -1
- package/dist/components/agent-run.d.ts +22 -0
- package/dist/components/agent-run.js +131 -0
- package/dist/components/agent-run.js.map +1 -0
- package/dist/components/alert-dialog.d.ts +12 -10
- package/dist/components/alert-dialog.js +29 -20
- package/dist/components/alert-dialog.js.map +1 -1
- package/dist/components/alert.d.ts +5 -3
- package/dist/components/alert.js +11 -7
- package/dist/components/alert.js.map +1 -1
- package/dist/components/app-shell.d.ts +7 -6
- package/dist/components/app-shell.js +21 -14
- package/dist/components/app-shell.js.map +1 -1
- package/dist/components/attachment.d.ts +3 -3
- package/dist/components/attachment.js +10 -7
- package/dist/components/attachment.js.map +1 -1
- package/dist/components/audio-player.d.ts +2 -2
- package/dist/components/audio-player.js +8 -6
- package/dist/components/audio-player.js.map +1 -1
- package/dist/components/avatar-upload.d.ts +19 -0
- package/dist/components/avatar-upload.js +359 -0
- package/dist/components/avatar-upload.js.map +1 -0
- package/dist/components/avatar.d.ts +3 -3
- package/dist/components/avatar.js +10 -7
- package/dist/components/avatar.js.map +1 -1
- package/dist/components/badge.d.ts +1 -1
- package/dist/components/badge.js +12 -10
- package/dist/components/badge.js.map +1 -1
- package/dist/components/breadcrumb.d.ts +8 -8
- package/dist/components/breadcrumb.js +24 -17
- package/dist/components/breadcrumb.js.map +1 -1
- package/dist/components/button.d.ts +8 -1
- package/dist/components/button.js +12 -3
- package/dist/components/button.js.map +1 -1
- package/dist/components/card.d.ts +8 -8
- package/dist/components/card.js +32 -23
- package/dist/components/card.js.map +1 -1
- package/dist/components/chat-history.d.ts +1 -1
- package/dist/components/chat-history.js +10 -9
- package/dist/components/chat-history.js.map +1 -1
- package/dist/components/chat-layout.d.ts +1 -1
- package/dist/components/chat-layout.js +7 -3
- package/dist/components/chat-layout.js.map +1 -1
- package/dist/components/checkbox-card.d.ts +2 -2
- package/dist/components/checkbox-card.js +9 -7
- package/dist/components/checkbox-card.js.map +1 -1
- package/dist/components/checkbox.d.ts +23 -2
- package/dist/components/checkbox.js +48 -6
- package/dist/components/checkbox.js.map +1 -1
- package/dist/components/collapsible.d.ts +2 -2
- package/dist/components/collapsible.js +7 -5
- package/dist/components/collapsible.js.map +1 -1
- package/dist/components/combobox.d.ts +14 -4
- package/dist/components/combobox.js +18 -8
- package/dist/components/combobox.js.map +1 -1
- package/dist/components/command.d.ts +68 -12
- package/dist/components/command.js +38 -25
- package/dist/components/command.js.map +1 -1
- package/dist/components/composer.d.ts +2 -2
- package/dist/components/composer.js +9 -7
- package/dist/components/composer.js.map +1 -1
- package/dist/components/connection-status.d.ts +3 -3
- package/dist/components/connection-status.js +18 -14
- package/dist/components/connection-status.js.map +1 -1
- package/dist/components/context-menu.d.ts +14 -13
- package/dist/components/context-menu.js +33 -23
- package/dist/components/context-menu.js.map +1 -1
- package/dist/components/conversation.d.ts +1 -1
- package/dist/components/conversation.js +6 -5
- package/dist/components/conversation.js.map +1 -1
- package/dist/components/copy-button.d.ts +1 -1
- package/dist/components/copy-button.js +3 -2
- package/dist/components/copy-button.js.map +1 -1
- package/dist/components/data-table.d.ts +7 -2
- package/dist/components/data-table.js +16 -42
- package/dist/components/data-table.js.map +1 -1
- package/dist/components/dialog.d.ts +18 -9
- package/dist/components/dialog.js +38 -22
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/dropdown-menu.d.ts +14 -13
- package/dist/components/dropdown-menu.js +33 -23
- package/dist/components/dropdown-menu.js.map +1 -1
- package/dist/components/editor-tabs.d.ts +1 -1
- package/dist/components/editor-tabs.js +6 -5
- package/dist/components/editor-tabs.js.map +1 -1
- package/dist/components/empty-state.d.ts +5 -5
- package/dist/components/empty-state.js +16 -11
- package/dist/components/empty-state.js.map +1 -1
- package/dist/components/error-summary.d.ts +21 -0
- package/dist/components/error-summary.js +62 -0
- package/dist/components/error-summary.js.map +1 -0
- package/dist/components/field.d.ts +66 -7
- package/dist/components/field.js +151 -20
- package/dist/components/field.js.map +1 -1
- package/dist/components/form-actions.d.ts +18 -0
- package/dist/components/form-actions.js +30 -0
- package/dist/components/form-actions.js.map +1 -0
- package/dist/components/icon-button.d.ts +3 -1
- package/dist/components/icon-button.js +5 -3
- package/dist/components/icon-button.js.map +1 -1
- package/dist/components/input.d.ts +42 -7
- package/dist/components/input.js +53 -10
- package/dist/components/input.js.map +1 -1
- package/dist/components/kbd.d.ts +2 -2
- package/dist/components/kbd.js +7 -5
- package/dist/components/kbd.js.map +1 -1
- package/dist/components/label.d.ts +6 -1
- package/dist/components/label.js +10 -4
- package/dist/components/label.js.map +1 -1
- package/dist/components/markdown.d.ts +4 -3
- package/dist/components/markdown.js +7 -6
- package/dist/components/markdown.js.map +1 -1
- package/dist/components/menubar.d.ts +16 -14
- package/dist/components/menubar.js +39 -27
- package/dist/components/menubar.js.map +1 -1
- package/dist/components/message-actions.d.ts +3 -3
- package/dist/components/message-actions.js +15 -12
- package/dist/components/message-actions.js.map +1 -1
- package/dist/components/message.d.ts +1 -1
- package/dist/components/message.js +5 -3
- package/dist/components/message.js.map +1 -1
- package/dist/components/mobile-nav.d.ts +1 -1
- package/dist/components/mobile-nav.js +6 -5
- package/dist/components/mobile-nav.js.map +1 -1
- package/dist/components/native-select.d.ts +16 -0
- package/dist/components/native-select.js +33 -0
- package/dist/components/native-select.js.map +1 -0
- package/dist/components/navigation-menu.d.ts +12 -11
- package/dist/components/navigation-menu.js +32 -23
- package/dist/components/navigation-menu.js.map +1 -1
- package/dist/components/number-input.d.ts +23 -0
- package/dist/components/number-input.js +45 -0
- package/dist/components/number-input.js.map +1 -0
- package/dist/components/onboarding-checklist.d.ts +1 -1
- package/dist/components/onboarding-checklist.js +4 -3
- package/dist/components/onboarding-checklist.js.map +1 -1
- package/dist/components/page-header.d.ts +7 -6
- package/dist/components/page-header.js +22 -15
- package/dist/components/page-header.js.map +1 -1
- package/dist/components/pagination.d.ts +1 -1
- package/dist/components/pagination.js +3 -2
- package/dist/components/pagination.js.map +1 -1
- package/dist/components/popover.d.ts +13 -10
- package/dist/components/popover.js +23 -17
- package/dist/components/popover.js.map +1 -1
- package/dist/components/progress.d.ts +1 -1
- package/dist/components/progress.js +6 -5
- package/dist/components/progress.js.map +1 -1
- package/dist/components/radio-group.d.ts +22 -3
- package/dist/components/radio-group.js +51 -10
- package/dist/components/radio-group.js.map +1 -1
- package/dist/components/reasoning.d.ts +3 -3
- package/dist/components/reasoning.js +9 -7
- package/dist/components/reasoning.js.map +1 -1
- package/dist/components/scroll-area.d.ts +3 -2
- package/dist/components/scroll-area.js +10 -7
- package/dist/components/scroll-area.js.map +1 -1
- package/dist/components/secret-input.d.ts +3 -2
- package/dist/components/secret-input.js +6 -4
- package/dist/components/secret-input.js.map +1 -1
- package/dist/components/select.d.ts +11 -6
- package/dist/components/select.js +24 -18
- package/dist/components/select.js.map +1 -1
- package/dist/components/separator.d.ts +1 -1
- package/dist/components/separator.js +4 -3
- package/dist/components/separator.js.map +1 -1
- package/dist/components/sheet.d.ts +10 -8
- package/dist/components/sheet.js +31 -20
- package/dist/components/sheet.js.map +1 -1
- package/dist/components/skeleton.d.ts +2 -1
- package/dist/components/skeleton.js +6 -4
- package/dist/components/skeleton.js.map +1 -1
- package/dist/components/slider.d.ts +10 -6
- package/dist/components/slider.js +15 -7
- package/dist/components/slider.js.map +1 -1
- package/dist/components/source.d.ts +2 -2
- package/dist/components/source.js +9 -7
- package/dist/components/source.js.map +1 -1
- package/dist/components/spinner.d.ts +4 -2
- package/dist/components/spinner.js +4 -3
- package/dist/components/spinner.js.map +1 -1
- package/dist/components/stat-card.d.ts +27 -2
- package/dist/components/stat-card.js +69 -9
- package/dist/components/stat-card.js.map +1 -1
- package/dist/components/status.d.ts +7 -6
- package/dist/components/status.js +11 -5
- package/dist/components/status.js.map +1 -1
- package/dist/components/steps.d.ts +1 -1
- package/dist/components/steps.js +4 -3
- package/dist/components/steps.js.map +1 -1
- package/dist/components/switch.d.ts +46 -2
- package/dist/components/switch.js +85 -8
- package/dist/components/switch.js.map +1 -1
- package/dist/components/table.d.ts +29 -12
- package/dist/components/table.js +79 -34
- package/dist/components/table.js.map +1 -1
- package/dist/components/tabs.d.ts +9 -4
- package/dist/components/tabs.js +22 -13
- package/dist/components/tabs.js.map +1 -1
- package/dist/components/textarea.d.ts +6 -1
- package/dist/components/textarea.js +3 -3
- package/dist/components/textarea.js.map +1 -1
- package/dist/components/toast.d.ts +10 -6
- package/dist/components/toast.js +27 -18
- package/dist/components/toast.js.map +1 -1
- package/dist/components/toaster.d.ts +4 -2
- package/dist/components/toaster.js +6 -2
- package/dist/components/toaster.js.map +1 -1
- package/dist/components/tool-call.d.ts +3 -3
- package/dist/components/tool-call.js +16 -12
- package/dist/components/tool-call.js.map +1 -1
- package/dist/components/toolbar.d.ts +9 -4
- package/dist/components/toolbar.js +14 -9
- package/dist/components/toolbar.js.map +1 -1
- package/dist/components/tooltip.d.ts +3 -2
- package/dist/components/tooltip.js +7 -4
- package/dist/components/tooltip.js.map +1 -1
- package/dist/components/tour.js +2 -2
- package/dist/components/tour.js.map +1 -1
- package/dist/components/tree-view.d.ts +1 -1
- package/dist/components/tree-view.js +9 -5
- package/dist/components/tree-view.js.map +1 -1
- package/dist/components/voice-recorder.d.ts +1 -1
- package/dist/components/voice-recorder.js +4 -2
- package/dist/components/voice-recorder.js.map +1 -1
- package/dist/index.d.ts +8 -1
- package/dist/index.js +19 -12
- package/dist/lib/media.d.ts +18 -0
- package/dist/lib/media.js +34 -0
- package/dist/lib/media.js.map +1 -0
- package/dist/lib/utils.d.ts +32 -0
- package/dist/lib/utils.js +33 -1
- package/dist/lib/utils.js.map +1 -1
- package/dist/mui/index.js +20 -8
- package/dist/mui/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/theme.css +36 -17
- package/dist/tokens.d.ts +78 -36
- package/dist/tokens.js +63 -32
- package/dist/tokens.js.map +1 -1
- package/package.json +5 -3
package/dist/mui/index.js
CHANGED
|
@@ -32,9 +32,11 @@ function shadows() {
|
|
|
32
32
|
shadow.xs,
|
|
33
33
|
shadow.sm,
|
|
34
34
|
shadow.sm,
|
|
35
|
-
shadow.sm
|
|
35
|
+
shadow.sm,
|
|
36
|
+
shadow.md,
|
|
37
|
+
shadow.md
|
|
36
38
|
];
|
|
37
|
-
return Array.from({ length: 25 }, (_, i) => levels[i] ?? shadow.
|
|
39
|
+
return Array.from({ length: 25 }, (_, i) => i === 24 ? shadow.xl : levels[i] ?? shadow.lg);
|
|
38
40
|
}
|
|
39
41
|
/** Theme options only, for apps that deep-merge their own overrides first. */
|
|
40
42
|
function burtsonThemeOptions(modeOrConfig = "dark") {
|
|
@@ -187,13 +189,13 @@ function burtsonThemeOptions(modeOrConfig = "dark") {
|
|
|
187
189
|
MuiDialog: { styleOverrides: { paper: {
|
|
188
190
|
borderRadius: radius.xl,
|
|
189
191
|
border: `1px solid ${p.border}`,
|
|
190
|
-
boxShadow: shadow.
|
|
192
|
+
boxShadow: shadow.xl
|
|
191
193
|
} } },
|
|
192
194
|
MuiMenu: { styleOverrides: {
|
|
193
195
|
paper: {
|
|
194
196
|
borderRadius: radius.lg,
|
|
195
197
|
border: `1px solid ${p["border-strong"]}`,
|
|
196
|
-
boxShadow: shadow.
|
|
198
|
+
boxShadow: shadow.lg
|
|
197
199
|
},
|
|
198
200
|
list: {
|
|
199
201
|
paddingTop: 4,
|
|
@@ -202,7 +204,8 @@ function burtsonThemeOptions(modeOrConfig = "dark") {
|
|
|
202
204
|
} },
|
|
203
205
|
MuiPopover: { styleOverrides: { paper: {
|
|
204
206
|
borderRadius: radius.lg,
|
|
205
|
-
border: `1px solid ${p.border}
|
|
207
|
+
border: `1px solid ${p.border}`,
|
|
208
|
+
boxShadow: shadow.lg
|
|
206
209
|
} } },
|
|
207
210
|
MuiChip: {
|
|
208
211
|
defaultProps: { size: "small" },
|
|
@@ -245,7 +248,8 @@ function burtsonThemeOptions(modeOrConfig = "dark") {
|
|
|
245
248
|
MuiAutocomplete: { styleOverrides: {
|
|
246
249
|
paper: {
|
|
247
250
|
borderRadius: radius.lg,
|
|
248
|
-
border: `1px solid ${p["border-strong"]}
|
|
251
|
+
border: `1px solid ${p["border-strong"]}`,
|
|
252
|
+
boxShadow: shadow.lg
|
|
249
253
|
},
|
|
250
254
|
listbox: {
|
|
251
255
|
padding: 4,
|
|
@@ -270,14 +274,22 @@ function burtsonThemeOptions(modeOrConfig = "dark") {
|
|
|
270
274
|
} } },
|
|
271
275
|
MuiSwitch: { styleOverrides: {
|
|
272
276
|
switchBase: { "&.Mui-checked + .MuiSwitch-track": {
|
|
273
|
-
backgroundColor: p.brand,
|
|
277
|
+
backgroundColor: mode === "dark" ? p.brand : p.primary,
|
|
274
278
|
opacity: 1
|
|
275
279
|
} },
|
|
276
280
|
track: {
|
|
277
|
-
backgroundColor: p
|
|
281
|
+
backgroundColor: p.input,
|
|
278
282
|
opacity: 1
|
|
279
283
|
}
|
|
280
284
|
} },
|
|
285
|
+
MuiCheckbox: { styleOverrides: { root: {
|
|
286
|
+
color: p.input,
|
|
287
|
+
"&.Mui-checked, &.MuiCheckbox-indeterminate": { color: mode === "dark" ? p.brand : p.primary }
|
|
288
|
+
} } },
|
|
289
|
+
MuiRadio: { styleOverrides: { root: {
|
|
290
|
+
color: p.input,
|
|
291
|
+
"&.Mui-checked": { color: mode === "dark" ? p.brand : p.primary }
|
|
292
|
+
} } },
|
|
281
293
|
MuiList: { defaultProps: { dense: compact } },
|
|
282
294
|
MuiTable: { defaultProps: { size: compact ? "small" : "medium" } },
|
|
283
295
|
MuiToolbar: { defaultProps: { variant: compact ? "dense" : "regular" } },
|
package/dist/mui/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/mui/index.ts"],"sourcesContent":["/**\n * The Burtson palette for MUI apps, so a screen built with MUI and one built\n * with Burtson UI components look like the same product.\n *\n * import { ThemeProvider } from '@mui/material/styles';\n * import { createBurtsonTheme } from '@burtson-labs/ui/mui';\n * <ThemeProvider theme={createBurtsonTheme('dark')}>…</ThemeProvider>\n * <ThemeProvider theme={createBurtsonTheme({ mode: 'dark', accent: '#2563eb', density: 'compact' })}>\n *\n * MUI is an adapter here: every colour, radius, shadow and timing comes from\n * the Burtson tokens, and the component overrides give MUI controls the same\n * shape and states as the Burtson components (focus ring, radius per role,\n * no uppercase buttons, quiet borders instead of heavy shadows).\n */\nimport { createTheme, type Shadows, type Theme, type ThemeOptions } from '@mui/material/styles';\n\nimport {\n accentTokens,\n contrast,\n dark,\n duration,\n easing,\n fontMono,\n fontSans,\n light,\n type Palette,\n radius,\n shadow,\n} from '../tokens';\n\nexport type BurtsonMode = 'light' | 'dark';\nexport type BurtsonDensity = 'comfortable' | 'compact';\n\nexport interface BurtsonThemeConfig {\n mode?: BurtsonMode;\n /** Any hex colour; primary, brand, soft and ring tones are derived with contrast kept. */\n accent?: string;\n /** `compact` for admin and data-dense screens: smaller controls, dense lists and tables. */\n density?: BurtsonDensity;\n /** Replace individual palette tokens (a product skin's tinted surfaces). */\n palette?: Partial<Palette>;\n}\n\nconst px = (rem: string) => Math.round(parseFloat(rem) * 16);\n\n/** The full token palette for a config: base mode, accent-derived brand tones, then explicit overrides. */\nexport function burtsonPalette(config: BurtsonThemeConfig = {}): Palette {\n const mode = config.mode ?? 'dark';\n const base = mode === 'dark' ? dark : light;\n return {\n ...base,\n ...(config.accent ? accentTokens(config.accent, mode) : {}),\n ...config.palette,\n };\n}\n\nfunction shadows(): Shadows {\n // MUI indexes elevation 0–24; the Burtson scale has three real levels.\n const levels = ['none', shadow.xs, shadow.xs, shadow.sm, shadow.sm, shadow.sm];\n return Array.from({ length: 25 }, (_, i) => levels[i] ?? shadow.md) as Shadows;\n}\n\n/** Theme options only, for apps that deep-merge their own overrides first. */\nexport function burtsonThemeOptions(\n modeOrConfig: BurtsonMode | BurtsonThemeConfig = 'dark',\n): ThemeOptions {\n const config = typeof modeOrConfig === 'string' ? { mode: modeOrConfig } : modeOrConfig;\n const mode = config.mode ?? 'dark';\n const compact = config.density === 'compact';\n const p = burtsonPalette(config);\n const focusRing = `0 0 0 3px color-mix(in srgb, ${p.ring} 24%, transparent)`;\n return {\n palette: {\n mode,\n primary: { main: p.primary, contrastText: p['primary-foreground'] },\n // Secondary fills use the brand text tone, which is light in dark mode;\n // their text is whichever of white or the page background reads.\n secondary: {\n main: p.brand,\n contrastText: contrast(p.brand, '#ffffff') >= 4.5 ? '#ffffff' : p.background,\n },\n info: { main: p.info, contrastText: p['info-foreground'] },\n error: { main: p.destructive, contrastText: p['destructive-foreground'] },\n warning: { main: p.warning, contrastText: p['warning-foreground'] },\n success: { main: p.success, contrastText: p['success-foreground'] },\n background: { default: p.background, paper: p.surface },\n text: { primary: p.foreground, secondary: p['muted-foreground'] },\n divider: p.border,\n action: { hover: p.muted, selected: p['brand-soft'], focus: p['brand-soft'] },\n },\n shape: { borderRadius: px(radius.md) },\n shadows: shadows(),\n typography: {\n fontFamily: fontSans,\n fontSize: compact ? 13 : 14,\n button: { textTransform: 'none', fontWeight: 600, letterSpacing: '-0.01em' },\n h1: { fontWeight: 700, letterSpacing: '-0.03em' },\n h2: { fontWeight: 700, letterSpacing: '-0.025em' },\n h3: { fontWeight: 650, letterSpacing: '-0.02em' },\n h4: { fontWeight: 650, letterSpacing: '-0.015em' },\n h5: { fontWeight: 600 },\n h6: { fontWeight: 600 },\n overline: { fontWeight: 600, letterSpacing: '0.08em' },\n },\n transitions: {\n duration: {\n shortest: duration.fast,\n shorter: duration.fast,\n short: duration.standard,\n standard: duration.standard,\n complex: duration.emphasis,\n enteringScreen: duration.emphasis,\n leavingScreen: duration.exit,\n },\n easing: {\n easeInOut: easing.standard,\n easeOut: easing.emphasized,\n easeIn: easing.exit,\n sharp: easing.standard,\n },\n },\n components: {\n MuiCssBaseline: {\n styleOverrides: {\n 'code, kbd, pre, samp': { fontFamily: fontMono },\n '@media (prefers-reduced-motion: reduce)': {\n '*, ::before, ::after': {\n animationDuration: '1ms !important',\n transitionDuration: '1ms !important',\n },\n },\n },\n },\n MuiButtonBase: { defaultProps: { disableRipple: true } },\n MuiButton: {\n defaultProps: { disableElevation: true, size: compact ? 'small' : 'medium' },\n styleOverrides: {\n root: {\n borderRadius: radius.md,\n '&:focus-visible': {\n boxShadow: focusRing,\n outline: `2px solid ${p.ring}`,\n outlineOffset: 2,\n },\n },\n outlined: { borderColor: p['border-strong'] },\n },\n },\n MuiIconButton: {\n defaultProps: { size: compact ? 'small' : 'medium' },\n styleOverrides: {\n root: {\n borderRadius: radius.md,\n '&:focus-visible': { outline: `2px solid ${p.ring}`, outlineOffset: 2 },\n },\n },\n },\n MuiPaper: {\n styleOverrides: {\n root: { backgroundImage: 'none' },\n outlined: { borderColor: p.border },\n rounded: { borderRadius: radius.lg },\n },\n },\n MuiCard: {\n defaultProps: { variant: 'outlined' },\n styleOverrides: {\n root: { borderRadius: radius.lg, backgroundColor: p.card, borderColor: p.border },\n },\n },\n MuiDialog: {\n styleOverrides: {\n paper: { borderRadius: radius.xl, border: `1px solid ${p.border}`, boxShadow: shadow.md },\n },\n },\n MuiMenu: {\n styleOverrides: {\n paper: {\n borderRadius: radius.lg,\n border: `1px solid ${p['border-strong']}`,\n boxShadow: shadow.md,\n },\n list: { paddingTop: 4, paddingBottom: 4 },\n },\n },\n MuiPopover: {\n styleOverrides: { paper: { borderRadius: radius.lg, border: `1px solid ${p.border}` } },\n },\n MuiChip: {\n defaultProps: { size: 'small' },\n styleOverrides: { root: { borderRadius: radius.full, fontWeight: 500 } },\n },\n MuiTabs: {\n styleOverrides: { indicator: { backgroundColor: p.brand, height: 2 } },\n },\n MuiTab: {\n styleOverrides: {\n root: {\n textTransform: 'none',\n fontWeight: 500,\n minHeight: compact ? 36 : 44,\n '&.Mui-selected': { color: p.foreground },\n },\n },\n },\n MuiOutlinedInput: {\n styleOverrides: {\n root: {\n borderRadius: radius.md,\n backgroundColor: p.surface,\n '& .MuiOutlinedInput-notchedOutline': { borderColor: p.input },\n '&:hover .MuiOutlinedInput-notchedOutline': { borderColor: p['border-strong'] },\n // Same focus as the Tailwind fields: a 2px ring-coloured edge inside\n // the radius, no outer halo that a scroll container could clip.\n '&.Mui-focused .MuiOutlinedInput-notchedOutline': {\n borderColor: p.ring,\n borderWidth: 2,\n },\n '&.Mui-error .MuiOutlinedInput-notchedOutline': { borderColor: p.destructive },\n },\n },\n },\n // Menu, Select and Autocomplete rows: inset 4px in a 12px surface, 8px\n // radius, a quiet secondary fill for the active row (as MenuItem and\n // SelectItem in the Tailwind kit).\n MuiMenuItem: {\n styleOverrides: {\n root: {\n margin: '0 4px',\n borderRadius: radius.sm,\n '&.Mui-focusVisible, &:hover': { backgroundColor: p.secondary },\n '&.Mui-selected': { backgroundColor: 'transparent', fontWeight: 600 },\n '&.Mui-selected.Mui-focusVisible, &.Mui-selected:hover': {\n backgroundColor: p.secondary,\n },\n },\n },\n },\n MuiAutocomplete: {\n styleOverrides: {\n paper: { borderRadius: radius.lg, border: `1px solid ${p['border-strong']}` },\n listbox: {\n padding: 4,\n '& .MuiAutocomplete-option': {\n borderRadius: radius.sm,\n '&.Mui-focused, &.Mui-focusVisible': { backgroundColor: p.secondary },\n '&[aria-selected=\"true\"]': { backgroundColor: 'transparent', fontWeight: 600 },\n '&[aria-selected=\"true\"].Mui-focused': { backgroundColor: p.secondary },\n },\n },\n },\n },\n MuiTextField: { defaultProps: { size: compact ? 'small' : 'medium' } },\n MuiAlert: { styleOverrides: { root: { borderRadius: radius.md } } },\n MuiTooltip: {\n styleOverrides: {\n tooltip: {\n backgroundColor: p.code,\n color: p['code-foreground'],\n fontSize: 12,\n borderRadius: radius.sm,\n },\n },\n },\n MuiSwitch: {\n styleOverrides: {\n switchBase: {\n '&.Mui-checked + .MuiSwitch-track': { backgroundColor: p.brand, opacity: 1 },\n },\n track: { backgroundColor: p['border-strong'], opacity: 1 },\n },\n },\n MuiList: { defaultProps: { dense: compact } },\n MuiTable: { defaultProps: { size: compact ? 'small' : 'medium' } },\n MuiToolbar: { defaultProps: { variant: compact ? 'dense' : 'regular' } },\n MuiDivider: { styleOverrides: { root: { borderColor: p.border } } },\n },\n };\n}\n\n/**\n * `createBurtsonTheme('dark')` or `createBurtsonTheme({ mode, accent, density })`,\n * then any MUI overrides, merged in order.\n */\nexport function createBurtsonTheme(\n modeOrConfig: BurtsonMode | BurtsonThemeConfig = 'dark',\n ...overrides: ThemeOptions[]\n): Theme {\n return createTheme(burtsonThemeOptions(modeOrConfig), ...overrides);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/mui/index.ts"],"sourcesContent":["/**\n * The Burtson palette for MUI apps, so a screen built with MUI and one built\n * with Burtson UI components look like the same product.\n *\n * import { ThemeProvider } from '@mui/material/styles';\n * import { createBurtsonTheme } from '@burtson-labs/ui/mui';\n * <ThemeProvider theme={createBurtsonTheme('dark')}>…</ThemeProvider>\n * <ThemeProvider theme={createBurtsonTheme({ mode: 'dark', accent: '#2563eb', density: 'compact' })}>\n *\n * MUI is an adapter here: every colour, radius, shadow and timing comes from\n * the Burtson tokens, and the component overrides give MUI controls the same\n * shape and states as the Burtson components (focus ring, radius per role,\n * no uppercase buttons, quiet borders instead of heavy shadows).\n */\nimport { createTheme, type Shadows, type Theme, type ThemeOptions } from '@mui/material/styles';\n\nimport {\n accentTokens,\n contrast,\n dark,\n duration,\n easing,\n fontMono,\n fontSans,\n light,\n type Palette,\n radius,\n shadow,\n} from '../tokens';\n\nexport type BurtsonMode = 'light' | 'dark';\nexport type BurtsonDensity = 'comfortable' | 'compact';\n\nexport interface BurtsonThemeConfig {\n mode?: BurtsonMode;\n /** Any hex colour; primary, brand, soft and ring tones are derived with contrast kept. */\n accent?: string;\n /** `compact` for admin and data-dense screens: smaller controls, dense lists and tables. */\n density?: BurtsonDensity;\n /** Replace individual palette tokens (a product skin's tinted surfaces). */\n palette?: Partial<Palette>;\n}\n\nconst px = (rem: string) => Math.round(parseFloat(rem) * 16);\n\n/** The full token palette for a config: base mode, accent-derived brand tones, then explicit overrides. */\nexport function burtsonPalette(config: BurtsonThemeConfig = {}): Palette {\n const mode = config.mode ?? 'dark';\n const base = mode === 'dark' ? dark : light;\n return {\n ...base,\n ...(config.accent ? accentTokens(config.accent, mode) : {}),\n ...config.palette,\n };\n}\n\nfunction shadows(): Shadows {\n // MUI indexes elevation 0–24; the Burtson scale has five real levels:\n // resting, card, raised, floating (8+: menus, popovers) and modal (24).\n const levels = [\n 'none',\n shadow.xs,\n shadow.xs,\n shadow.sm,\n shadow.sm,\n shadow.sm,\n shadow.md,\n shadow.md,\n ];\n return Array.from({ length: 25 }, (_, i) =>\n i === 24 ? shadow.xl : (levels[i] ?? shadow.lg),\n ) as Shadows;\n}\n\n/** Theme options only, for apps that deep-merge their own overrides first. */\nexport function burtsonThemeOptions(\n modeOrConfig: BurtsonMode | BurtsonThemeConfig = 'dark',\n): ThemeOptions {\n const config = typeof modeOrConfig === 'string' ? { mode: modeOrConfig } : modeOrConfig;\n const mode = config.mode ?? 'dark';\n const compact = config.density === 'compact';\n const p = burtsonPalette(config);\n const focusRing = `0 0 0 3px color-mix(in srgb, ${p.ring} 24%, transparent)`;\n return {\n palette: {\n mode,\n primary: { main: p.primary, contrastText: p['primary-foreground'] },\n // Secondary fills use the brand text tone, which is light in dark mode;\n // their text is whichever of white or the page background reads.\n secondary: {\n main: p.brand,\n contrastText: contrast(p.brand, '#ffffff') >= 4.5 ? '#ffffff' : p.background,\n },\n info: { main: p.info, contrastText: p['info-foreground'] },\n error: { main: p.destructive, contrastText: p['destructive-foreground'] },\n warning: { main: p.warning, contrastText: p['warning-foreground'] },\n success: { main: p.success, contrastText: p['success-foreground'] },\n background: { default: p.background, paper: p.surface },\n text: { primary: p.foreground, secondary: p['muted-foreground'] },\n divider: p.border,\n action: { hover: p.muted, selected: p['brand-soft'], focus: p['brand-soft'] },\n },\n shape: { borderRadius: px(radius.md) },\n shadows: shadows(),\n typography: {\n fontFamily: fontSans,\n fontSize: compact ? 13 : 14,\n button: { textTransform: 'none', fontWeight: 600, letterSpacing: '-0.01em' },\n h1: { fontWeight: 700, letterSpacing: '-0.03em' },\n h2: { fontWeight: 700, letterSpacing: '-0.025em' },\n h3: { fontWeight: 650, letterSpacing: '-0.02em' },\n h4: { fontWeight: 650, letterSpacing: '-0.015em' },\n h5: { fontWeight: 600 },\n h6: { fontWeight: 600 },\n overline: { fontWeight: 600, letterSpacing: '0.08em' },\n },\n transitions: {\n duration: {\n shortest: duration.fast,\n shorter: duration.fast,\n short: duration.standard,\n standard: duration.standard,\n complex: duration.emphasis,\n enteringScreen: duration.emphasis,\n leavingScreen: duration.exit,\n },\n easing: {\n easeInOut: easing.standard,\n easeOut: easing.emphasized,\n easeIn: easing.exit,\n sharp: easing.standard,\n },\n },\n components: {\n MuiCssBaseline: {\n styleOverrides: {\n 'code, kbd, pre, samp': { fontFamily: fontMono },\n '@media (prefers-reduced-motion: reduce)': {\n '*, ::before, ::after': {\n animationDuration: '1ms !important',\n transitionDuration: '1ms !important',\n },\n },\n },\n },\n MuiButtonBase: { defaultProps: { disableRipple: true } },\n MuiButton: {\n defaultProps: { disableElevation: true, size: compact ? 'small' : 'medium' },\n styleOverrides: {\n root: {\n borderRadius: radius.md,\n '&:focus-visible': {\n boxShadow: focusRing,\n outline: `2px solid ${p.ring}`,\n outlineOffset: 2,\n },\n },\n outlined: { borderColor: p['border-strong'] },\n },\n },\n MuiIconButton: {\n defaultProps: { size: compact ? 'small' : 'medium' },\n styleOverrides: {\n root: {\n borderRadius: radius.md,\n '&:focus-visible': { outline: `2px solid ${p.ring}`, outlineOffset: 2 },\n },\n },\n },\n MuiPaper: {\n styleOverrides: {\n root: { backgroundImage: 'none' },\n outlined: { borderColor: p.border },\n rounded: { borderRadius: radius.lg },\n },\n },\n MuiCard: {\n defaultProps: { variant: 'outlined' },\n styleOverrides: {\n root: { borderRadius: radius.lg, backgroundColor: p.card, borderColor: p.border },\n },\n },\n MuiDialog: {\n styleOverrides: {\n paper: { borderRadius: radius.xl, border: `1px solid ${p.border}`, boxShadow: shadow.xl },\n },\n },\n MuiMenu: {\n styleOverrides: {\n paper: {\n borderRadius: radius.lg,\n border: `1px solid ${p['border-strong']}`,\n boxShadow: shadow.lg,\n },\n list: { paddingTop: 4, paddingBottom: 4 },\n },\n },\n MuiPopover: {\n styleOverrides: {\n paper: { borderRadius: radius.lg, border: `1px solid ${p.border}`, boxShadow: shadow.lg },\n },\n },\n MuiChip: {\n defaultProps: { size: 'small' },\n styleOverrides: { root: { borderRadius: radius.full, fontWeight: 500 } },\n },\n MuiTabs: {\n styleOverrides: { indicator: { backgroundColor: p.brand, height: 2 } },\n },\n MuiTab: {\n styleOverrides: {\n root: {\n textTransform: 'none',\n fontWeight: 500,\n minHeight: compact ? 36 : 44,\n '&.Mui-selected': { color: p.foreground },\n },\n },\n },\n MuiOutlinedInput: {\n styleOverrides: {\n root: {\n borderRadius: radius.md,\n backgroundColor: p.surface,\n '& .MuiOutlinedInput-notchedOutline': { borderColor: p.input },\n '&:hover .MuiOutlinedInput-notchedOutline': { borderColor: p['border-strong'] },\n // Same focus as the Tailwind fields: a 2px ring-coloured edge inside\n // the radius, no outer halo that a scroll container could clip.\n '&.Mui-focused .MuiOutlinedInput-notchedOutline': {\n borderColor: p.ring,\n borderWidth: 2,\n },\n '&.Mui-error .MuiOutlinedInput-notchedOutline': { borderColor: p.destructive },\n },\n },\n },\n // Menu, Select and Autocomplete rows: inset 4px in a 12px surface, 8px\n // radius, a quiet secondary fill for the active row (as MenuItem and\n // SelectItem in the Tailwind kit).\n MuiMenuItem: {\n styleOverrides: {\n root: {\n margin: '0 4px',\n borderRadius: radius.sm,\n '&.Mui-focusVisible, &:hover': { backgroundColor: p.secondary },\n '&.Mui-selected': { backgroundColor: 'transparent', fontWeight: 600 },\n '&.Mui-selected.Mui-focusVisible, &.Mui-selected:hover': {\n backgroundColor: p.secondary,\n },\n },\n },\n },\n MuiAutocomplete: {\n styleOverrides: {\n paper: {\n borderRadius: radius.lg,\n border: `1px solid ${p['border-strong']}`,\n boxShadow: shadow.lg,\n },\n listbox: {\n padding: 4,\n '& .MuiAutocomplete-option': {\n borderRadius: radius.sm,\n '&.Mui-focused, &.Mui-focusVisible': { backgroundColor: p.secondary },\n '&[aria-selected=\"true\"]': { backgroundColor: 'transparent', fontWeight: 600 },\n '&[aria-selected=\"true\"].Mui-focused': { backgroundColor: p.secondary },\n },\n },\n },\n },\n MuiTextField: { defaultProps: { size: compact ? 'small' : 'medium' } },\n MuiAlert: { styleOverrides: { root: { borderRadius: radius.md } } },\n MuiTooltip: {\n styleOverrides: {\n tooltip: {\n backgroundColor: p.code,\n color: p['code-foreground'],\n fontSize: 12,\n borderRadius: radius.sm,\n },\n },\n },\n MuiSwitch: {\n styleOverrides: {\n switchBase: {\n '&.Mui-checked + .MuiSwitch-track': {\n backgroundColor: mode === 'dark' ? p.brand : p.primary,\n opacity: 1,\n },\n },\n // The off track is the field border tone: 3:1 on the page.\n track: { backgroundColor: p.input, opacity: 1 },\n },\n },\n MuiCheckbox: {\n styleOverrides: {\n root: {\n color: p.input,\n '&.Mui-checked, &.MuiCheckbox-indeterminate': {\n color: mode === 'dark' ? p.brand : p.primary,\n },\n },\n },\n },\n MuiRadio: {\n styleOverrides: {\n root: {\n color: p.input,\n '&.Mui-checked': { color: mode === 'dark' ? p.brand : p.primary },\n },\n },\n },\n MuiList: { defaultProps: { dense: compact } },\n MuiTable: { defaultProps: { size: compact ? 'small' : 'medium' } },\n MuiToolbar: { defaultProps: { variant: compact ? 'dense' : 'regular' } },\n MuiDivider: { styleOverrides: { root: { borderColor: p.border } } },\n },\n };\n}\n\n/**\n * `createBurtsonTheme('dark')` or `createBurtsonTheme({ mode, accent, density })`,\n * then any MUI overrides, merged in order.\n */\nexport function createBurtsonTheme(\n modeOrConfig: BurtsonMode | BurtsonThemeConfig = 'dark',\n ...overrides: ThemeOptions[]\n): Theme {\n return createTheme(burtsonThemeOptions(modeOrConfig), ...overrides);\n}\n"],"mappings":"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"}
|