@turk.net/mui 3.0.7 → 3.0.8
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/.opencode/rules/design-compliance.md +119 -0
- package/.opencode/skills/onehub-design-verification/SKILL.md +315 -0
- package/.opencode/skills/turknet-onehub-component-usage/SKILL.md +16 -16
- package/COMPONENT_GLOSSARY.md +500 -0
- package/COMPONENT_MAP.md +567 -0
- package/DESIGN_RULES.md +399 -0
- package/DESIGN_SOURCES.md +198 -0
- package/DESIGN_TOKENS_MAP.md +271 -0
- package/ESLINT_DESIGN_RULES.md +392 -0
- package/LLM_EXAMPLES.md +183 -169
- package/LLM_GUIDELINES.md +192 -192
- package/PAGE_PATTERNS.md +509 -0
- package/SKILL_SETUP.md +237 -200
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -0
- package/dist/index.mjs.map +1 -1
- package/dist/theme/index.js +1 -0
- package/dist/theme/index.js.map +1 -1
- package/dist/theme/index.mjs +1 -0
- package/dist/theme/index.mjs.map +1 -1
- package/package.json +20 -3
- package/scripts/verify-design.js +351 -0
|
@@ -0,0 +1,500 @@
|
|
|
1
|
+
# OneHub Component Glossary
|
|
2
|
+
|
|
3
|
+
> **Purpose:** Exhaustive catalog of ALL usable Material UI components with their valid prop combinations. Any component or prop combination NOT listed here has NO theme override and MUST NOT be used.
|
|
4
|
+
>
|
|
5
|
+
> **Format:** RFC 2119 keywords (MUST, MUST NOT, ONLY).
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Button
|
|
10
|
+
|
|
11
|
+
**Import:** `import { Button } from '@mui/material'`
|
|
12
|
+
|
|
13
|
+
| Prop | Valid Values |
|
|
14
|
+
|------|-------------|
|
|
15
|
+
| `variant` | `contained`, `outlined`, `text` |
|
|
16
|
+
| `size` | `extra-small`, `small`, `medium`, `large`, `extra-large` |
|
|
17
|
+
| `color` | `primary`, `secondary`, `error` |
|
|
18
|
+
| `disabled` | `boolean` |
|
|
19
|
+
| `fullWidth` | `boolean` |
|
|
20
|
+
| `startIcon` | `ReactNode` |
|
|
21
|
+
| `endIcon` | `ReactNode` |
|
|
22
|
+
|
|
23
|
+
**Default props:** `disableElevation: true`
|
|
24
|
+
|
|
25
|
+
### ButtonGroup
|
|
26
|
+
|
|
27
|
+
**Import:** `import { ButtonGroup } from '@mui/material'`
|
|
28
|
+
|
|
29
|
+
| Prop | Valid Values |
|
|
30
|
+
|------|-------------|
|
|
31
|
+
| `variant` | `contained`, `outlined`, `text` |
|
|
32
|
+
| `size` | `small`, `medium`, `large` |
|
|
33
|
+
| `color` | `primary`, `secondary`, `error` |
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## TextField
|
|
38
|
+
|
|
39
|
+
**Import:** `import { TextField } from '@mui/material'`
|
|
40
|
+
|
|
41
|
+
| Prop | Valid Values |
|
|
42
|
+
|------|-------------|
|
|
43
|
+
| `variant` | `outlined`, `filled`, `standard` |
|
|
44
|
+
| `size` | `small`, `medium`, `large` |
|
|
45
|
+
| `color` | `neutral`, `brand`, `danger` |
|
|
46
|
+
| `disabled` | `boolean` |
|
|
47
|
+
| `error` | `boolean` |
|
|
48
|
+
| `fullWidth` | `boolean` |
|
|
49
|
+
| `label` | `string` |
|
|
50
|
+
| `helperText` | `string` |
|
|
51
|
+
| `multiline` | `boolean` |
|
|
52
|
+
| `rows` | `number` |
|
|
53
|
+
| `InputProps` | `InputProps` (startAdornment, endAdornment) |
|
|
54
|
+
|
|
55
|
+
### InputLabel
|
|
56
|
+
|
|
57
|
+
**Import:** `import { InputLabel } from '@mui/material'`
|
|
58
|
+
|
|
59
|
+
| Prop | Valid Values |
|
|
60
|
+
|------|-------------|
|
|
61
|
+
| `size` | `small`, `medium`, `larger` |
|
|
62
|
+
|
|
63
|
+
### FormHelperText
|
|
64
|
+
|
|
65
|
+
**Import:** `import { FormHelperText } from '@mui/material'`
|
|
66
|
+
|
|
67
|
+
Standard MUI FormHelperText. Typography: `text.xs.regular`.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Select
|
|
72
|
+
|
|
73
|
+
**Import:** `import { Select } from '@mui/material'`
|
|
74
|
+
|
|
75
|
+
| Prop | Valid Values |
|
|
76
|
+
|------|-------------|
|
|
77
|
+
| `variant` | `outlined`, `filled`, `standard` |
|
|
78
|
+
| `size` | `small`, `medium`, `large` |
|
|
79
|
+
| `color` | `neutral`, `brand`, `danger` |
|
|
80
|
+
| `fullWidth` | `boolean` |
|
|
81
|
+
|
|
82
|
+
### MenuItem
|
|
83
|
+
|
|
84
|
+
**Import:** `import { MenuItem } from '@mui/material'`
|
|
85
|
+
|
|
86
|
+
Standard MUI MenuItem. Typography: `text.sm.regular` to `text.md.regular`.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Autocomplete
|
|
91
|
+
|
|
92
|
+
**Import:** `import { Autocomplete } from '@mui/material'`
|
|
93
|
+
|
|
94
|
+
| Prop | Valid Values |
|
|
95
|
+
|------|-------------|
|
|
96
|
+
| `size` | `small`, `medium` |
|
|
97
|
+
| `color` | `neutral`, `brand`, `danger` |
|
|
98
|
+
| `options` | `T[]` |
|
|
99
|
+
| `renderInput` | `(params) => ReactNode` |
|
|
100
|
+
| `renderOption` | `(props, option) => ReactNode` (custom render by theme) |
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Checkbox
|
|
105
|
+
|
|
106
|
+
**Import:** `import { Checkbox } from '@mui/material'`
|
|
107
|
+
|
|
108
|
+
| Prop | Valid Values |
|
|
109
|
+
|------|-------------|
|
|
110
|
+
| `size` | `small`, `medium` |
|
|
111
|
+
| `color` | `primary`, `error` |
|
|
112
|
+
| `checked` | `boolean` |
|
|
113
|
+
| `indeterminate` | `boolean` |
|
|
114
|
+
| `disabled` | `boolean` |
|
|
115
|
+
|
|
116
|
+
**Note:** `size="large"` is DISABLED in type overrides.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Radio
|
|
121
|
+
|
|
122
|
+
**Import:** `import { Radio } from '@mui/material'`
|
|
123
|
+
|
|
124
|
+
| Prop | Valid Values |
|
|
125
|
+
|------|-------------|
|
|
126
|
+
| `size` | `small`, `medium` |
|
|
127
|
+
| `color` | `primary`, `error` |
|
|
128
|
+
| `checked` | `boolean` |
|
|
129
|
+
| `disabled` | `boolean` |
|
|
130
|
+
|
|
131
|
+
### RadioGroup
|
|
132
|
+
|
|
133
|
+
**Import:** `import { RadioGroup } from '@mui/material'`
|
|
134
|
+
|
|
135
|
+
Standard MUI RadioGroup. Wraps Radio components.
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Switch
|
|
140
|
+
|
|
141
|
+
**Import:** `import { Switch } from '@mui/material'`
|
|
142
|
+
|
|
143
|
+
| Prop | Valid Values |
|
|
144
|
+
|------|-------------|
|
|
145
|
+
| `size` | `small`, `medium` |
|
|
146
|
+
| `color` | `primary`, `error` |
|
|
147
|
+
| `checked` | `boolean` |
|
|
148
|
+
| `disabled` | `boolean` |
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Chip
|
|
153
|
+
|
|
154
|
+
**Import:** `import { Chip } from '@mui/material'`
|
|
155
|
+
|
|
156
|
+
| Prop | Valid Values |
|
|
157
|
+
|------|-------------|
|
|
158
|
+
| `variant` | `filled`, `tint`, `outline`, `ghost` |
|
|
159
|
+
| `size` | `small`, `medium` |
|
|
160
|
+
| `color` | `primary`, `secondary`, `error` |
|
|
161
|
+
| `label` | `string` |
|
|
162
|
+
| `icon` | `ReactNode` |
|
|
163
|
+
| `onDelete` | `() => void` |
|
|
164
|
+
| `clickable` | `boolean` |
|
|
165
|
+
|
|
166
|
+
**Note:** `size="large"` is available via type augmentation. `variant` values are custom (different from MUI default).
|
|
167
|
+
|
|
168
|
+
**Typography:**
|
|
169
|
+
- `small`: `text.xs.medium` (12px, 500)
|
|
170
|
+
- `medium`: `text.sm.medium` (14px, 500)
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Badge
|
|
175
|
+
|
|
176
|
+
**Import:** `import { Badge } from '@mui/material'`
|
|
177
|
+
|
|
178
|
+
| Prop | Valid Values |
|
|
179
|
+
|------|-------------|
|
|
180
|
+
| `size` | `dot`, `extra-small`, `small`, `medium`, `large`, `extra-large` |
|
|
181
|
+
| `color` | `default`, `brand`, `success`, `danger`, `severewarning`, `warning`, `important` |
|
|
182
|
+
| `badgeContent` | `ReactNode` |
|
|
183
|
+
| `invisible` | `boolean` |
|
|
184
|
+
| `variant` | `standard`, `dot` |
|
|
185
|
+
|
|
186
|
+
**Note:** MUI default `primary`, `secondary`, `error` colors are DISABLED for Badge. Use `brand`, `danger` instead.
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## Avatar
|
|
191
|
+
|
|
192
|
+
**Import:** `import { Avatar } from '@mui/material'`
|
|
193
|
+
|
|
194
|
+
| Prop | Valid Values |
|
|
195
|
+
|------|-------------|
|
|
196
|
+
| `size` | `dot`, `extra-small`, `small`, `medium`, `large`, `extra-large` |
|
|
197
|
+
| `src` | `string` |
|
|
198
|
+
| `alt` | `string` |
|
|
199
|
+
|
|
200
|
+
### AvatarGroup
|
|
201
|
+
|
|
202
|
+
**Import:** `import { AvatarGroup } from '@mui/material'`
|
|
203
|
+
|
|
204
|
+
Standard MUI AvatarGroup.
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Typography
|
|
209
|
+
|
|
210
|
+
**Import:** `import { Typography } from '@mui/material'`
|
|
211
|
+
|
|
212
|
+
| Prop | Valid Values |
|
|
213
|
+
|------|-------------|
|
|
214
|
+
| `variant` | See typography variants below |
|
|
215
|
+
|
|
216
|
+
### Display Variants
|
|
217
|
+
|
|
218
|
+
```
|
|
219
|
+
display.xl2.{regular|medium|semibold|bold} → 72px / 90px
|
|
220
|
+
display.xl.{regular|medium|semibold|bold} → 60px / 72px
|
|
221
|
+
display.lg.{regular|medium|semibold|bold} → 48px / 60px
|
|
222
|
+
display.md.{regular|medium|semibold|bold} → 36px / 38px
|
|
223
|
+
display.sm.{regular|medium|semibold|bold} → 30px / 38px
|
|
224
|
+
display.xs.{regular|medium|semibold|bold} → 24px / 32px
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### Text Variants
|
|
228
|
+
|
|
229
|
+
```
|
|
230
|
+
text.xl.{regular|medium|semibold|bold} → 20px / 30px
|
|
231
|
+
text.lg.{regular|medium|semibold|bold} → 18px / 28px
|
|
232
|
+
text.md.{regular|medium|semibold|bold} → 16px / 28px
|
|
233
|
+
text.sm.{regular|medium|semibold|bold} → 14px / 20px
|
|
234
|
+
text.xs.{regular|medium|semibold|bold} → 12px / 18px
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
**MUST NOT use:** `h1`-`h6`, `body1`, `body2`, `subtitle1`, `subtitle2`, `caption`, `button` — these are DISABLED.
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## Paper
|
|
242
|
+
|
|
243
|
+
**Import:** `import { Paper } from '@mui/material'`
|
|
244
|
+
|
|
245
|
+
| Prop | Valid Values |
|
|
246
|
+
|------|-------------|
|
|
247
|
+
| `elevation` | `0` – `24` |
|
|
248
|
+
| `variant` | `elevation`, `outlined` |
|
|
249
|
+
| `square` | `boolean` |
|
|
250
|
+
|
|
251
|
+
**Default border radius:** `8px` (`theme.shape.borderRadius`).
|
|
252
|
+
**Default border:** `1px solid var(--neutral-stroke-3-rest)`.
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## Card
|
|
257
|
+
|
|
258
|
+
**Import:** `import { Card } from '@mui/material'`
|
|
259
|
+
|
|
260
|
+
Standard MUI Card. Uses Paper styling.
|
|
261
|
+
|
|
262
|
+
**Sub-components:** `CardContent`, `CardHeader`, `CardActions`, `CardMedia`.
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## Dialog
|
|
267
|
+
|
|
268
|
+
**Import:** `import { Dialog } from '@mui/material'`
|
|
269
|
+
|
|
270
|
+
Standard MUI Dialog.
|
|
271
|
+
|
|
272
|
+
**Sub-components:**
|
|
273
|
+
- `DialogTitle` — Typography: `text.lg.medium`
|
|
274
|
+
- `DialogContent` + `DialogContentText` — Typography: `text.md.regular`
|
|
275
|
+
- `DialogActions` — Contains Button components
|
|
276
|
+
|
|
277
|
+
**Default props:** Paper uses `theme.shadows[6]` (28px blur).
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
## Menu
|
|
282
|
+
|
|
283
|
+
**Import:** `import { Menu } from '@mui/material'`
|
|
284
|
+
|
|
285
|
+
| Prop | Valid Values |
|
|
286
|
+
|------|-------------|
|
|
287
|
+
| `anchorEl` | `HTMLElement | null` |
|
|
288
|
+
| `open` | `boolean` |
|
|
289
|
+
| `onClose` | `() => void` |
|
|
290
|
+
|
|
291
|
+
**MenuList** and **MenuItem** are standard sub-components.
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
## List
|
|
296
|
+
|
|
297
|
+
**Import:** `import { List } from '@mui/material'`
|
|
298
|
+
|
|
299
|
+
| Prop | Valid Values |
|
|
300
|
+
|------|-------------|
|
|
301
|
+
| `dense` | `boolean` |
|
|
302
|
+
|
|
303
|
+
### Sub-components
|
|
304
|
+
|
|
305
|
+
| Component | Typography |
|
|
306
|
+
|-----------|-----------|
|
|
307
|
+
| `ListItem` | — |
|
|
308
|
+
| `ListItemButton` | — |
|
|
309
|
+
| `ListItemText` | `text.sm.regular` (primary), `text.xs.regular` (secondary) |
|
|
310
|
+
| `ListItemIcon` | 24px icon |
|
|
311
|
+
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
## Table
|
|
315
|
+
|
|
316
|
+
**Import:** `import { Table } from '@mui/material'`
|
|
317
|
+
|
|
318
|
+
| Prop | Valid Values |
|
|
319
|
+
|------|-------------|
|
|
320
|
+
| `size` | `small`, `medium` |
|
|
321
|
+
|
|
322
|
+
### Sub-components
|
|
323
|
+
|
|
324
|
+
| Component | Typography |
|
|
325
|
+
|-----------|-----------|
|
|
326
|
+
| `TableHead` | — |
|
|
327
|
+
| `TableBody` | — |
|
|
328
|
+
| `TableRow` | — |
|
|
329
|
+
| `TableCell` | `text.sm.regular` |
|
|
330
|
+
|
|
331
|
+
**Table header:** `text.xs.semibold` or `text.sm.semibold`.
|
|
332
|
+
|
|
333
|
+
**Note:** For OneHub-specific data tables (task lists, customer lists), custom styled Box-based tables from Figma patterns are preferred over MUI Table. See `COMPONENT_MAP.md#table-data-grid`.
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
## Alert
|
|
338
|
+
|
|
339
|
+
**Import:** `import { Alert } from '@mui/material'`
|
|
340
|
+
|
|
341
|
+
| Prop | Valid Values |
|
|
342
|
+
|------|-------------|
|
|
343
|
+
| `severity` | `success`, `warning`, `error`, `info` |
|
|
344
|
+
| `variant` | `standard`, `outlined`, `filled` |
|
|
345
|
+
| `onClose` | `() => void` |
|
|
346
|
+
|
|
347
|
+
**Typography:** `text.sm.regular` to `text.md.regular`.
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
## Snackbar
|
|
352
|
+
|
|
353
|
+
**Import:** `import { Snackbar } from '@mui/material'`
|
|
354
|
+
|
|
355
|
+
Standard MUI Snackbar. Typically wraps an Alert component.
|
|
356
|
+
|
|
357
|
+
```typescript
|
|
358
|
+
<Snackbar open={open} autoHideDuration={6000} onClose={handleClose}>
|
|
359
|
+
<Alert severity="success" onClose={handleClose}>Message</Alert>
|
|
360
|
+
</Snackbar>
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
---
|
|
364
|
+
|
|
365
|
+
## Tooltip
|
|
366
|
+
|
|
367
|
+
**Import:** `import { Tooltip } from '@mui/material'`
|
|
368
|
+
|
|
369
|
+
Standard MUI Tooltip. Styling handled by theme overrides.
|
|
370
|
+
|
|
371
|
+
---
|
|
372
|
+
|
|
373
|
+
## Slider
|
|
374
|
+
|
|
375
|
+
**Import:** `import { Slider } from '@mui/material'`
|
|
376
|
+
|
|
377
|
+
| Prop | Valid Values |
|
|
378
|
+
|------|-------------|
|
|
379
|
+
| `size` | `small`, `medium` |
|
|
380
|
+
| `color` | `primary`, `error` |
|
|
381
|
+
|
|
382
|
+
---
|
|
383
|
+
|
|
384
|
+
## Pagination
|
|
385
|
+
|
|
386
|
+
**Import:** `import { Pagination } from '@mui/material'`
|
|
387
|
+
|
|
388
|
+
| Prop | Valid Values |
|
|
389
|
+
|------|-------------|
|
|
390
|
+
| `size` | `small`, `medium` |
|
|
391
|
+
| `color` | `primary` |
|
|
392
|
+
|
|
393
|
+
### PaginationItem
|
|
394
|
+
|
|
395
|
+
**Import:** `import { PaginationItem } from '@mui/material'`
|
|
396
|
+
|
|
397
|
+
| Prop | Valid Values |
|
|
398
|
+
|------|-------------|
|
|
399
|
+
| `size` | `small`, `medium` |
|
|
400
|
+
| `color` | `primary` |
|
|
401
|
+
|
|
402
|
+
---
|
|
403
|
+
|
|
404
|
+
## Tabs
|
|
405
|
+
|
|
406
|
+
**Import:** `import { Tabs } from '@mui/material'`
|
|
407
|
+
|
|
408
|
+
Standard MUI Tabs. Styling handled by theme overrides.
|
|
409
|
+
|
|
410
|
+
### Tab
|
|
411
|
+
|
|
412
|
+
**Import:** `import { Tab } from '@mui/material'`
|
|
413
|
+
|
|
414
|
+
Standard MUI Tab. Active text: `text.sm.semibold`, `brand.foreground[1].rest`.
|
|
415
|
+
|
|
416
|
+
---
|
|
417
|
+
|
|
418
|
+
## Link
|
|
419
|
+
|
|
420
|
+
**Import:** `import { Link } from '@mui/material'`
|
|
421
|
+
|
|
422
|
+
| Prop | Valid Values |
|
|
423
|
+
|------|-------------|
|
|
424
|
+
| `href` | `string` |
|
|
425
|
+
| `underline` | `none`, `hover`, `always` |
|
|
426
|
+
|
|
427
|
+
**Color:** `brand.foreground.compound.rest`.
|
|
428
|
+
|
|
429
|
+
---
|
|
430
|
+
|
|
431
|
+
## FormControl / FormLabel / FormControlLabel
|
|
432
|
+
|
|
433
|
+
**Import:** `import { FormControl, FormLabel, FormControlLabel } from '@mui/material'`
|
|
434
|
+
|
|
435
|
+
Standard MUI form components. Used to wrap Checkbox, Radio, Switch.
|
|
436
|
+
|
|
437
|
+
---
|
|
438
|
+
|
|
439
|
+
## CssBaseline
|
|
440
|
+
|
|
441
|
+
**Import:** `import { CssBaseline } from '@mui/material'`
|
|
442
|
+
|
|
443
|
+
Standard MUI CssBaseline. Includes custom scrollbar styles from theme.
|
|
444
|
+
|
|
445
|
+
---
|
|
446
|
+
|
|
447
|
+
## DatePicker
|
|
448
|
+
|
|
449
|
+
**Import:** `import { DatePicker } from '@mui/x-date-pickers'`
|
|
450
|
+
|
|
451
|
+
Uses `dayjs` adapter. Styling handled by theme overrides.
|
|
452
|
+
|
|
453
|
+
---
|
|
454
|
+
|
|
455
|
+
## InputBase / OutlinedInput / FilledInput / Input
|
|
456
|
+
|
|
457
|
+
**Import:** from `@mui/material`
|
|
458
|
+
|
|
459
|
+
These are base input components used internally by TextField and Select. Direct usage is rare but supported:
|
|
460
|
+
|
|
461
|
+
| Component | Valid Sizes |
|
|
462
|
+
|-----------|------------|
|
|
463
|
+
| `InputBase` | `small`, `medium` |
|
|
464
|
+
| `OutlinedInput` | `small`, `medium` |
|
|
465
|
+
| `FilledInput` | `small`, `medium` |
|
|
466
|
+
| `Input` | `small`, `medium` |
|
|
467
|
+
|
|
468
|
+
---
|
|
469
|
+
|
|
470
|
+
## Components with NO Theme Override (MUST NOT Use)
|
|
471
|
+
|
|
472
|
+
These MUI components have no theme customization and MUST NOT be used:
|
|
473
|
+
|
|
474
|
+
| Component | Alternative |
|
|
475
|
+
|-----------|------------|
|
|
476
|
+
| `ToggleButton` / `ToggleButtonGroup` | Use `Chip` or `Button` group |
|
|
477
|
+
| `Rating` | Not applicable |
|
|
478
|
+
| `SpeedDial` | Custom solution |
|
|
479
|
+
| `BottomNavigation` | Custom solution |
|
|
480
|
+
| `MobileStepper` | Custom solution |
|
|
481
|
+
| `ImageList` | CSS Grid/Flex |
|
|
482
|
+
| `Timeline` | Custom component |
|
|
483
|
+
| `Accordion` | Custom component |
|
|
484
|
+
| `Breadcrumbs` | Custom component |
|
|
485
|
+
| `Drawer` | Use `WithSidebarLayout` |
|
|
486
|
+
| `AppBar` | Use `TabBasedLayout.AppBar` |
|
|
487
|
+
|
|
488
|
+
---
|
|
489
|
+
|
|
490
|
+
## Quick Validation Checklist
|
|
491
|
+
|
|
492
|
+
When writing a component, verify:
|
|
493
|
+
|
|
494
|
+
- [ ] Component is in this glossary? If not → STOP, do not use it.
|
|
495
|
+
- [ ] All props (variant, size, color) match valid values?
|
|
496
|
+
- [ ] Typography variant is NOT an MUI default (h1-h6, body1, etc.)?
|
|
497
|
+
- [ ] Colors use CSS custom properties or theme.vars.palette?
|
|
498
|
+
- [ ] Spacing uses theme.spacing(n)?
|
|
499
|
+
- [ ] No inline styles?
|
|
500
|
+
- [ ] No custom component duplicating MUI functionality?
|