@burtson-labs/ui 0.10.1 → 0.12.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/README.md +7 -2
- package/dist/components/audio-player.d.ts +39 -0
- package/dist/components/audio-player.js +250 -0
- package/dist/components/audio-player.js.map +1 -0
- package/dist/components/chat-history.d.ts +64 -0
- package/dist/components/chat-history.js +282 -0
- package/dist/components/chat-history.js.map +1 -0
- package/dist/components/chat-layout.d.ts +42 -0
- package/dist/components/chat-layout.js +217 -0
- package/dist/components/chat-layout.js.map +1 -0
- package/dist/components/combobox.js +1 -1
- package/dist/components/composer.d.ts +16 -1
- package/dist/components/composer.js +103 -20
- package/dist/components/composer.js.map +1 -1
- package/dist/components/data-table.js +1 -1
- package/dist/components/message-actions.d.ts +56 -0
- package/dist/components/message-actions.js +181 -0
- package/dist/components/message-actions.js.map +1 -0
- package/dist/components/secret-input.js +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/voice-recorder.d.ts +28 -0
- package/dist/components/voice-recorder.js +240 -0
- package/dist/components/voice-recorder.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +13 -8
- package/dist/mui/index.d.ts +25 -2
- package/dist/mui/index.js +191 -13
- package/dist/mui/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/theme.css +13 -0
- package/dist/tokens.d.ts +53 -1
- package/dist/tokens.js +97 -1
- package/dist/tokens.js.map +1 -1
- package/package.json +1 -1
package/dist/mui/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { dark, fontMono, fontSans, light, radius } from "../tokens.js";
|
|
1
|
+
import { accentTokens, dark, duration, easing, fontMono, fontSans, light, radius, shadow } from "../tokens.js";
|
|
2
2
|
import { createTheme } from "@mui/material/styles";
|
|
3
3
|
//#region src/mui/index.ts
|
|
4
4
|
/**
|
|
@@ -8,11 +8,41 @@ import { createTheme } from "@mui/material/styles";
|
|
|
8
8
|
* import { ThemeProvider } from '@mui/material/styles';
|
|
9
9
|
* import { createBurtsonTheme } from '@burtson-labs/ui/mui';
|
|
10
10
|
* <ThemeProvider theme={createBurtsonTheme('dark')}>…</ThemeProvider>
|
|
11
|
+
* <ThemeProvider theme={createBurtsonTheme({ mode: 'dark', accent: '#2563eb', density: 'compact' })}>
|
|
12
|
+
*
|
|
13
|
+
* MUI is an adapter here: every colour, radius, shadow and timing comes from
|
|
14
|
+
* the Burtson tokens, and the component overrides give MUI controls the same
|
|
15
|
+
* shape and states as the Burtson components (focus ring, radius per role,
|
|
16
|
+
* no uppercase buttons, quiet borders instead of heavy shadows).
|
|
11
17
|
*/
|
|
12
18
|
var px = (rem) => Math.round(parseFloat(rem) * 16);
|
|
19
|
+
/** The full token palette for a config: base mode, accent-derived brand tones, then explicit overrides. */
|
|
20
|
+
function burtsonPalette(config = {}) {
|
|
21
|
+
const mode = config.mode ?? "dark";
|
|
22
|
+
return {
|
|
23
|
+
...mode === "dark" ? dark : light,
|
|
24
|
+
...config.accent ? accentTokens(config.accent, mode) : {},
|
|
25
|
+
...config.palette
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function shadows() {
|
|
29
|
+
const levels = [
|
|
30
|
+
"none",
|
|
31
|
+
shadow.xs,
|
|
32
|
+
shadow.xs,
|
|
33
|
+
shadow.sm,
|
|
34
|
+
shadow.sm,
|
|
35
|
+
shadow.sm
|
|
36
|
+
];
|
|
37
|
+
return Array.from({ length: 25 }, (_, i) => levels[i] ?? shadow.md);
|
|
38
|
+
}
|
|
13
39
|
/** Theme options only, for apps that deep-merge their own overrides first. */
|
|
14
|
-
function burtsonThemeOptions(
|
|
15
|
-
const
|
|
40
|
+
function burtsonThemeOptions(modeOrConfig = "dark") {
|
|
41
|
+
const config = typeof modeOrConfig === "string" ? { mode: modeOrConfig } : modeOrConfig;
|
|
42
|
+
const mode = config.mode ?? "dark";
|
|
43
|
+
const compact = config.density === "compact";
|
|
44
|
+
const p = burtsonPalette(config);
|
|
45
|
+
const focusRing = `0 0 0 3px color-mix(in srgb, ${p.ring} 24%, transparent)`;
|
|
16
46
|
return {
|
|
17
47
|
palette: {
|
|
18
48
|
mode,
|
|
@@ -51,36 +81,184 @@ function burtsonThemeOptions(mode = "dark") {
|
|
|
51
81
|
divider: p.border,
|
|
52
82
|
action: {
|
|
53
83
|
hover: p.muted,
|
|
54
|
-
selected: p["brand-soft"]
|
|
84
|
+
selected: p["brand-soft"],
|
|
85
|
+
focus: p["brand-soft"]
|
|
55
86
|
}
|
|
56
87
|
},
|
|
57
88
|
shape: { borderRadius: px(radius.md) },
|
|
89
|
+
shadows: shadows(),
|
|
58
90
|
typography: {
|
|
59
91
|
fontFamily: fontSans,
|
|
92
|
+
fontSize: compact ? 13 : 14,
|
|
60
93
|
button: {
|
|
61
94
|
textTransform: "none",
|
|
62
|
-
fontWeight:
|
|
95
|
+
fontWeight: 600,
|
|
96
|
+
letterSpacing: "-0.01em"
|
|
97
|
+
},
|
|
98
|
+
h1: {
|
|
99
|
+
fontWeight: 700,
|
|
100
|
+
letterSpacing: "-0.03em"
|
|
101
|
+
},
|
|
102
|
+
h2: {
|
|
103
|
+
fontWeight: 700,
|
|
104
|
+
letterSpacing: "-0.025em"
|
|
105
|
+
},
|
|
106
|
+
h3: {
|
|
107
|
+
fontWeight: 650,
|
|
108
|
+
letterSpacing: "-0.02em"
|
|
109
|
+
},
|
|
110
|
+
h4: {
|
|
111
|
+
fontWeight: 650,
|
|
112
|
+
letterSpacing: "-0.015em"
|
|
113
|
+
},
|
|
114
|
+
h5: { fontWeight: 600 },
|
|
115
|
+
h6: { fontWeight: 600 },
|
|
116
|
+
overline: {
|
|
117
|
+
fontWeight: 600,
|
|
118
|
+
letterSpacing: "0.08em"
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
transitions: {
|
|
122
|
+
duration: {
|
|
123
|
+
shortest: duration.fast,
|
|
124
|
+
shorter: duration.fast,
|
|
125
|
+
short: duration.standard,
|
|
126
|
+
standard: duration.standard,
|
|
127
|
+
complex: duration.emphasis,
|
|
128
|
+
enteringScreen: duration.emphasis,
|
|
129
|
+
leavingScreen: duration.exit
|
|
130
|
+
},
|
|
131
|
+
easing: {
|
|
132
|
+
easeInOut: easing.standard,
|
|
133
|
+
easeOut: easing.emphasized,
|
|
134
|
+
easeIn: easing.exit,
|
|
135
|
+
sharp: easing.standard
|
|
63
136
|
}
|
|
64
137
|
},
|
|
65
138
|
components: {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
139
|
+
MuiCssBaseline: { styleOverrides: {
|
|
140
|
+
"code, kbd, pre, samp": { fontFamily: fontMono },
|
|
141
|
+
"@media (prefers-reduced-motion: reduce)": { "*, ::before, ::after": {
|
|
142
|
+
animationDuration: "1ms !important",
|
|
143
|
+
transitionDuration: "1ms !important"
|
|
144
|
+
} }
|
|
145
|
+
} },
|
|
146
|
+
MuiButtonBase: { defaultProps: { disableRipple: true } },
|
|
147
|
+
MuiButton: {
|
|
148
|
+
defaultProps: {
|
|
149
|
+
disableElevation: true,
|
|
150
|
+
size: compact ? "small" : "medium"
|
|
151
|
+
},
|
|
152
|
+
styleOverrides: {
|
|
153
|
+
root: {
|
|
154
|
+
borderRadius: radius.md,
|
|
155
|
+
"&:focus-visible": {
|
|
156
|
+
boxShadow: focusRing,
|
|
157
|
+
outline: `2px solid ${p.ring}`,
|
|
158
|
+
outlineOffset: 2
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
outlined: { borderColor: p["border-strong"] }
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
MuiIconButton: {
|
|
165
|
+
defaultProps: { size: compact ? "small" : "medium" },
|
|
166
|
+
styleOverrides: { root: {
|
|
167
|
+
borderRadius: radius.md,
|
|
168
|
+
"&:focus-visible": {
|
|
169
|
+
outline: `2px solid ${p.ring}`,
|
|
170
|
+
outlineOffset: 2
|
|
171
|
+
}
|
|
172
|
+
} }
|
|
173
|
+
},
|
|
174
|
+
MuiPaper: { styleOverrides: {
|
|
175
|
+
root: { backgroundImage: "none" },
|
|
176
|
+
outlined: { borderColor: p.border },
|
|
177
|
+
rounded: { borderRadius: radius.lg }
|
|
178
|
+
} },
|
|
179
|
+
MuiCard: {
|
|
180
|
+
defaultProps: { variant: "outlined" },
|
|
181
|
+
styleOverrides: { root: {
|
|
182
|
+
borderRadius: radius.lg,
|
|
183
|
+
backgroundColor: p.card,
|
|
184
|
+
borderColor: p.border
|
|
185
|
+
} }
|
|
186
|
+
},
|
|
187
|
+
MuiDialog: { styleOverrides: { paper: {
|
|
188
|
+
borderRadius: radius.xl,
|
|
189
|
+
border: `1px solid ${p.border}`,
|
|
190
|
+
boxShadow: shadow.md
|
|
191
|
+
} } },
|
|
192
|
+
MuiMenu: { styleOverrides: { paper: {
|
|
193
|
+
borderRadius: radius.lg,
|
|
194
|
+
border: `1px solid ${p.border}`,
|
|
195
|
+
boxShadow: shadow.md
|
|
196
|
+
} } },
|
|
197
|
+
MuiPopover: { styleOverrides: { paper: {
|
|
198
|
+
borderRadius: radius.lg,
|
|
69
199
|
border: `1px solid ${p.border}`
|
|
70
200
|
} } },
|
|
201
|
+
MuiChip: {
|
|
202
|
+
defaultProps: { size: "small" },
|
|
203
|
+
styleOverrides: { root: {
|
|
204
|
+
borderRadius: radius.full,
|
|
205
|
+
fontWeight: 500
|
|
206
|
+
} }
|
|
207
|
+
},
|
|
208
|
+
MuiTabs: { styleOverrides: { indicator: {
|
|
209
|
+
backgroundColor: p.brand,
|
|
210
|
+
height: 2
|
|
211
|
+
} } },
|
|
212
|
+
MuiTab: { styleOverrides: { root: {
|
|
213
|
+
textTransform: "none",
|
|
214
|
+
fontWeight: 500,
|
|
215
|
+
minHeight: compact ? 36 : 44,
|
|
216
|
+
"&.Mui-selected": { color: p.foreground }
|
|
217
|
+
} } },
|
|
218
|
+
MuiOutlinedInput: { styleOverrides: { root: {
|
|
219
|
+
borderRadius: radius.md,
|
|
220
|
+
backgroundColor: p.surface,
|
|
221
|
+
"& .MuiOutlinedInput-notchedOutline": { borderColor: p.input },
|
|
222
|
+
"&:hover .MuiOutlinedInput-notchedOutline": { borderColor: p["border-strong"] },
|
|
223
|
+
"&.Mui-focused .MuiOutlinedInput-notchedOutline": {
|
|
224
|
+
borderColor: p.ring,
|
|
225
|
+
borderWidth: 1
|
|
226
|
+
},
|
|
227
|
+
"&.Mui-focused": { boxShadow: focusRing }
|
|
228
|
+
} } },
|
|
229
|
+
MuiTextField: { defaultProps: { size: compact ? "small" : "medium" } },
|
|
230
|
+
MuiAlert: { styleOverrides: { root: { borderRadius: radius.md } } },
|
|
71
231
|
MuiTooltip: { styleOverrides: { tooltip: {
|
|
72
232
|
backgroundColor: p.code,
|
|
73
233
|
color: p["code-foreground"],
|
|
74
|
-
fontSize: 12
|
|
234
|
+
fontSize: 12,
|
|
235
|
+
borderRadius: radius.sm
|
|
75
236
|
} } },
|
|
76
|
-
|
|
237
|
+
MuiSwitch: { styleOverrides: {
|
|
238
|
+
switchBase: { "&.Mui-checked + .MuiSwitch-track": {
|
|
239
|
+
backgroundColor: p.brand,
|
|
240
|
+
opacity: 1
|
|
241
|
+
} },
|
|
242
|
+
track: {
|
|
243
|
+
backgroundColor: p["border-strong"],
|
|
244
|
+
opacity: 1
|
|
245
|
+
}
|
|
246
|
+
} },
|
|
247
|
+
MuiList: { defaultProps: { dense: compact } },
|
|
248
|
+
MuiTable: { defaultProps: { size: compact ? "small" : "medium" } },
|
|
249
|
+
MuiToolbar: { defaultProps: { variant: compact ? "dense" : "regular" } },
|
|
250
|
+
MuiDivider: { styleOverrides: { root: { borderColor: p.border } } }
|
|
77
251
|
}
|
|
78
252
|
};
|
|
79
253
|
}
|
|
80
|
-
|
|
81
|
-
|
|
254
|
+
/**
|
|
255
|
+
* `createBurtsonTheme('dark')` or `createBurtsonTheme({ mode, accent, density })`,
|
|
256
|
+
* then any MUI overrides, merged in order.
|
|
257
|
+
*/
|
|
258
|
+
function createBurtsonTheme(modeOrConfig = "dark", ...overrides) {
|
|
259
|
+
return createTheme(burtsonThemeOptions(modeOrConfig), ...overrides);
|
|
82
260
|
}
|
|
83
261
|
//#endregion
|
|
84
|
-
export { burtsonThemeOptions, createBurtsonTheme };
|
|
262
|
+
export { burtsonPalette, burtsonThemeOptions, createBurtsonTheme };
|
|
85
263
|
|
|
86
264
|
//# sourceMappingURL=index.js.map
|
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 */\nimport { createTheme, type Theme, type ThemeOptions } from '@mui/material/styles';\n\nimport { dark, fontMono, fontSans, light, type Palette, radius } from '../tokens';\n\nexport type BurtsonMode = 'light' | 'dark';\n\nconst px = (rem: string) => Math.round(parseFloat(rem) * 16);\n\n/** Theme options only, for apps that deep-merge their own overrides first. */\nexport function burtsonThemeOptions(mode: BurtsonMode = 'dark'): ThemeOptions {\n const p: Palette = mode === 'dark' ? dark : light;\n return {\n palette: {\n mode,\n primary: { main: p.primary, contrastText: p['primary-foreground'] },\n secondary: { main: p.brand, contrastText: p['primary-foreground'] },\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'] },\n },\n shape: { borderRadius: px(radius.md) },\n typography: {\n fontFamily: fontSans,\n button: { textTransform: 'none', fontWeight: 500 },\n },\n components: {\n MuiButton: { defaultProps: { disableElevation: true } },\n MuiPaper: {\n styleOverrides: { root: { backgroundImage: 'none', border: `1px solid ${p.border}` } },\n },\n MuiTooltip: {\n styleOverrides: {\n tooltip: { backgroundColor: p.code, color: p['code-foreground'], fontSize: 12 },\n },\n },\n MuiCssBaseline: {\n styleOverrides: { 'code, kbd, pre': { fontFamily: fontMono } },\n },\n },\n };\n}\n\nexport function createBurtsonTheme(\n mode: BurtsonMode = 'dark',\n ...overrides: ThemeOptions[]\n): Theme {\n return createTheme(burtsonThemeOptions(mode), ...overrides);\n}\n"],"mappings":";;;;;;;;;;;AAcA,IAAM,MAAM,QAAgB,KAAK,MAAM,WAAW,GAAG,IAAI,EAAE;;AAG3D,SAAgB,oBAAoB,OAAoB,QAAsB;CAC5E,MAAM,IAAa,SAAS,SAAS,OAAO;CAC5C,OAAO;EACL,SAAS;GACP;GACA,SAAS;IAAE,MAAM,EAAE;IAAS,cAAc,EAAE;GAAsB;GAClE,WAAW;IAAE,MAAM,EAAE;IAAO,cAAc,EAAE;GAAsB;GAClE,MAAM;IAAE,MAAM,EAAE;IAAM,cAAc,EAAE;GAAmB;GACzD,OAAO;IAAE,MAAM,EAAE;IAAa,cAAc,EAAE;GAA0B;GACxE,SAAS;IAAE,MAAM,EAAE;IAAS,cAAc,EAAE;GAAsB;GAClE,SAAS;IAAE,MAAM,EAAE;IAAS,cAAc,EAAE;GAAsB;GAClE,YAAY;IAAE,SAAS,EAAE;IAAY,OAAO,EAAE;GAAQ;GACtD,MAAM;IAAE,SAAS,EAAE;IAAY,WAAW,EAAE;GAAoB;GAChE,SAAS,EAAE;GACX,QAAQ;IAAE,OAAO,EAAE;IAAO,UAAU,EAAE;GAAc;EACtD;EACA,OAAO,EAAE,cAAc,GAAG,OAAO,EAAE,EAAE;EACrC,YAAY;GACV,YAAY;GACZ,QAAQ;IAAE,eAAe;IAAQ,YAAY;GAAI;EACnD;EACA,YAAY;GACV,WAAW,EAAE,cAAc,EAAE,kBAAkB,KAAK,EAAE;GACtD,UAAU,EACR,gBAAgB,EAAE,MAAM;IAAE,iBAAiB;IAAQ,QAAQ,aAAa,EAAE;GAAS,EAAE,EACvF;GACA,YAAY,EACV,gBAAgB,EACd,SAAS;IAAE,iBAAiB,EAAE;IAAM,OAAO,EAAE;IAAoB,UAAU;GAAG,EAChF,EACF;GACA,gBAAgB,EACd,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,SAAS,EAAE,EAC/D;EACF;CACF;AACF;AAEA,SAAgB,mBACd,OAAoB,QACpB,GAAG,WACI;CACP,OAAO,YAAY,oBAAoB,IAAI,GAAG,GAAG,SAAS;AAC5D"}
|
|
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 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: { main: p.brand, contrastText: p['primary-foreground'] },\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: { borderRadius: radius.lg, border: `1px solid ${p.border}`, boxShadow: shadow.md },\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 '&.Mui-focused .MuiOutlinedInput-notchedOutline': {\n borderColor: p.ring,\n borderWidth: 1,\n },\n '&.Mui-focused': { boxShadow: focusRing },\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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"}
|