@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/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(mode = "dark") {
15
- const p = mode === "dark" ? dark : light;
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: 500
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
- MuiButton: { defaultProps: { disableElevation: true } },
67
- MuiPaper: { styleOverrides: { root: {
68
- backgroundImage: "none",
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
- MuiCssBaseline: { styleOverrides: { "code, kbd, pre": { fontFamily: fontMono } } }
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
- function createBurtsonTheme(mode = "dark", ...overrides) {
81
- return createTheme(burtsonThemeOptions(mode), ...overrides);
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
@@ -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":";;;;;;;;;;;;;;;;;AA0CA,IAAM,MAAM,QAAgB,KAAK,MAAM,WAAW,GAAG,IAAI,EAAE;;AAG3D,SAAgB,eAAe,SAA6B,CAAC,GAAY;CACvE,MAAM,OAAO,OAAO,QAAQ;CAE5B,OAAO;EACL,GAFW,SAAS,SAAS,OAAO;EAGpC,GAAI,OAAO,SAAS,aAAa,OAAO,QAAQ,IAAI,IAAI,CAAC;EACzD,GAAG,OAAO;CACZ;AACF;AAEA,SAAS,UAAmB;CAE1B,MAAM,SAAS;EAAC;EAAQ,OAAO;EAAI,OAAO;EAAI,OAAO;EAAI,OAAO;EAAI,OAAO;CAAE;CAC7E,OAAO,MAAM,KAAK,EAAE,QAAQ,GAAG,IAAI,GAAG,MAAM,OAAO,MAAM,OAAO,EAAE;AACpE;;AAGA,SAAgB,oBACd,eAAiD,QACnC;CACd,MAAM,SAAS,OAAO,iBAAiB,WAAW,EAAE,MAAM,aAAa,IAAI;CAC3E,MAAM,OAAO,OAAO,QAAQ;CAC5B,MAAM,UAAU,OAAO,YAAY;CACnC,MAAM,IAAI,eAAe,MAAM;CAC/B,MAAM,YAAY,gCAAgC,EAAE,KAAK;CACzD,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;IAAe,OAAO,EAAE;GAAc;EAC9E;EACA,OAAO,EAAE,cAAc,GAAG,OAAO,EAAE,EAAE;EACrC,SAAS,QAAQ;EACjB,YAAY;GACV,YAAY;GACZ,UAAU,UAAU,KAAK;GACzB,QAAQ;IAAE,eAAe;IAAQ,YAAY;IAAK,eAAe;GAAU;GAC3E,IAAI;IAAE,YAAY;IAAK,eAAe;GAAU;GAChD,IAAI;IAAE,YAAY;IAAK,eAAe;GAAW;GACjD,IAAI;IAAE,YAAY;IAAK,eAAe;GAAU;GAChD,IAAI;IAAE,YAAY;IAAK,eAAe;GAAW;GACjD,IAAI,EAAE,YAAY,IAAI;GACtB,IAAI,EAAE,YAAY,IAAI;GACtB,UAAU;IAAE,YAAY;IAAK,eAAe;GAAS;EACvD;EACA,aAAa;GACX,UAAU;IACR,UAAU,SAAS;IACnB,SAAS,SAAS;IAClB,OAAO,SAAS;IAChB,UAAU,SAAS;IACnB,SAAS,SAAS;IAClB,gBAAgB,SAAS;IACzB,eAAe,SAAS;GAC1B;GACA,QAAQ;IACN,WAAW,OAAO;IAClB,SAAS,OAAO;IAChB,QAAQ,OAAO;IACf,OAAO,OAAO;GAChB;EACF;EACA,YAAY;GACV,gBAAgB,EACd,gBAAgB;IACd,wBAAwB,EAAE,YAAY,SAAS;IAC/C,2CAA2C,EACzC,wBAAwB;KACtB,mBAAmB;KACnB,oBAAoB;IACtB,EACF;GACF,EACF;GACA,eAAe,EAAE,cAAc,EAAE,eAAe,KAAK,EAAE;GACvD,WAAW;IACT,cAAc;KAAE,kBAAkB;KAAM,MAAM,UAAU,UAAU;IAAS;IAC3E,gBAAgB;KACd,MAAM;MACJ,cAAc,OAAO;MACrB,mBAAmB;OACjB,WAAW;OACX,SAAS,aAAa,EAAE;OACxB,eAAe;MACjB;KACF;KACA,UAAU,EAAE,aAAa,EAAE,iBAAiB;IAC9C;GACF;GACA,eAAe;IACb,cAAc,EAAE,MAAM,UAAU,UAAU,SAAS;IACnD,gBAAgB,EACd,MAAM;KACJ,cAAc,OAAO;KACrB,mBAAmB;MAAE,SAAS,aAAa,EAAE;MAAQ,eAAe;KAAE;IACxE,EACF;GACF;GACA,UAAU,EACR,gBAAgB;IACd,MAAM,EAAE,iBAAiB,OAAO;IAChC,UAAU,EAAE,aAAa,EAAE,OAAO;IAClC,SAAS,EAAE,cAAc,OAAO,GAAG;GACrC,EACF;GACA,SAAS;IACP,cAAc,EAAE,SAAS,WAAW;IACpC,gBAAgB,EACd,MAAM;KAAE,cAAc,OAAO;KAAI,iBAAiB,EAAE;KAAM,aAAa,EAAE;IAAO,EAClF;GACF;GACA,WAAW,EACT,gBAAgB,EACd,OAAO;IAAE,cAAc,OAAO;IAAI,QAAQ,aAAa,EAAE;IAAU,WAAW,OAAO;GAAG,EAC1F,EACF;GACA,SAAS,EACP,gBAAgB,EACd,OAAO;IAAE,cAAc,OAAO;IAAI,QAAQ,aAAa,EAAE;IAAU,WAAW,OAAO;GAAG,EAC1F,EACF;GACA,YAAY,EACV,gBAAgB,EAAE,OAAO;IAAE,cAAc,OAAO;IAAI,QAAQ,aAAa,EAAE;GAAS,EAAE,EACxF;GACA,SAAS;IACP,cAAc,EAAE,MAAM,QAAQ;IAC9B,gBAAgB,EAAE,MAAM;KAAE,cAAc,OAAO;KAAM,YAAY;IAAI,EAAE;GACzE;GACA,SAAS,EACP,gBAAgB,EAAE,WAAW;IAAE,iBAAiB,EAAE;IAAO,QAAQ;GAAE,EAAE,EACvE;GACA,QAAQ,EACN,gBAAgB,EACd,MAAM;IACJ,eAAe;IACf,YAAY;IACZ,WAAW,UAAU,KAAK;IAC1B,kBAAkB,EAAE,OAAO,EAAE,WAAW;GAC1C,EACF,EACF;GACA,kBAAkB,EAChB,gBAAgB,EACd,MAAM;IACJ,cAAc,OAAO;IACrB,iBAAiB,EAAE;IACnB,sCAAsC,EAAE,aAAa,EAAE,MAAM;IAC7D,4CAA4C,EAAE,aAAa,EAAE,iBAAiB;IAC9E,kDAAkD;KAChD,aAAa,EAAE;KACf,aAAa;IACf;IACA,iBAAiB,EAAE,WAAW,UAAU;GAC1C,EACF,EACF;GACA,cAAc,EAAE,cAAc,EAAE,MAAM,UAAU,UAAU,SAAS,EAAE;GACrE,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAE,cAAc,OAAO,GAAG,EAAE,EAAE;GAClE,YAAY,EACV,gBAAgB,EACd,SAAS;IACP,iBAAiB,EAAE;IACnB,OAAO,EAAE;IACT,UAAU;IACV,cAAc,OAAO;GACvB,EACF,EACF;GACA,WAAW,EACT,gBAAgB;IACd,YAAY,EACV,oCAAoC;KAAE,iBAAiB,EAAE;KAAO,SAAS;IAAE,EAC7E;IACA,OAAO;KAAE,iBAAiB,EAAE;KAAkB,SAAS;IAAE;GAC3D,EACF;GACA,SAAS,EAAE,cAAc,EAAE,OAAO,QAAQ,EAAE;GAC5C,UAAU,EAAE,cAAc,EAAE,MAAM,UAAU,UAAU,SAAS,EAAE;GACjE,YAAY,EAAE,cAAc,EAAE,SAAS,UAAU,UAAU,UAAU,EAAE;GACvE,YAAY,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE;EACpE;CACF;AACF;;;;;AAMA,SAAgB,mBACd,eAAiD,QACjD,GAAG,WACI;CACP,OAAO,YAAY,oBAAoB,YAAY,GAAG,GAAG,SAAS;AACpE"}