@offlinemediainc/offline-ui 0.1.4 → 0.2.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.
@@ -0,0 +1,1463 @@
1
+ {
2
+ "$schema": "https://offlinemediainc.github.io/offline-ui/design-system.schema.json",
3
+ "meta": {
4
+ "name": "@offlinemediainc/offline-ui",
5
+ "version": "0.2.0",
6
+ "generatedAt": "2026-01-21T21:43:10.893Z",
7
+ "description": "Offline Media Design System - LLM-friendly design decisions and patterns"
8
+ },
9
+ "quickReference": {
10
+ "colors": {
11
+ "primary": "#191919 (gray-900) - buttons, text, UI elements",
12
+ "accent": "#de8e0f (yellow-400) - ACCENT ONLY, never buttons",
13
+ "link": "#004fff (blue-400) - clickable text only",
14
+ "success": "#099250 (chart-3) - positive feedback",
15
+ "error": "#d31a0c (chart-5) - errors, destructive"
16
+ },
17
+ "fonts": {
18
+ "display": "Cabinet Grotesk - hero headlines only",
19
+ "body": "Satoshi - everything else",
20
+ "mono": "DM Mono - stats and numbers"
21
+ },
22
+ "shadows": {
23
+ "card": "shadow-card - default for containers",
24
+ "floating": "shadow-tag - floating badges",
25
+ "modal": "shadow-elevated - dialogs, popovers"
26
+ },
27
+ "components": {
28
+ "formModal": "Dialog",
29
+ "destructiveConfirm": "AlertDialog",
30
+ "sidePanel": "Sheet side=right",
31
+ "listItem": "Item",
32
+ "toast": "toast.success / toast.error"
33
+ }
34
+ },
35
+ "semantics": {
36
+ "colors": {
37
+ "brand": {
38
+ "primary": "yellow-400",
39
+ "interactive": "blue-400"
40
+ },
41
+ "text": {
42
+ "primary": "gray-900",
43
+ "secondary": "gray-600",
44
+ "muted": "gray-500",
45
+ "onDark": "white",
46
+ "link": "blue-400",
47
+ "positive": "semantic-success500",
48
+ "negative": "red-400"
49
+ },
50
+ "surface": {
51
+ "default": "white",
52
+ "muted": "gray-50",
53
+ "elevated": "white + shadow-elevated"
54
+ },
55
+ "border": {
56
+ "default": "gray-200",
57
+ "strong": "gray-300",
58
+ "interactive": "yellow-400",
59
+ "focus": "gray-900"
60
+ },
61
+ "feedback": {
62
+ "positive": "chart-3",
63
+ "negative": "chart-5",
64
+ "warning": "yellow-400",
65
+ "neutral": "chart-4"
66
+ }
67
+ },
68
+ "colorHexValues": {
69
+ "yellow-25": "#fff2d8",
70
+ "yellow-50": "#ffe9bd",
71
+ "yellow-100": "#ffd386",
72
+ "yellow-200": "#ffbd54",
73
+ "yellow-300": "#f0a52c",
74
+ "yellow-400": "#de8e0f",
75
+ "yellow-500": "#c57900",
76
+ "yellow-600": "#a76700",
77
+ "yellow-700": "#835100",
78
+ "yellow-800": "#5c3900",
79
+ "yellow-900": "#331f00",
80
+ "blue-25": "#d8e7ff",
81
+ "blue-50": "#bed6ff",
82
+ "blue-100": "#85afff",
83
+ "blue-200": "#508bff",
84
+ "blue-300": "#236aff",
85
+ "blue-400": "#004fff",
86
+ "blue-500": "#0046e0",
87
+ "blue-600": "#003bbb",
88
+ "blue-700": "#002e91",
89
+ "blue-800": "#001f63",
90
+ "blue-900": "#001033",
91
+ "gray-25": "#f2f2f2",
92
+ "gray-50": "#ececec",
93
+ "gray-100": "#dfdfdf",
94
+ "gray-200": "#c6c6c6",
95
+ "gray-300": "#aeaeae",
96
+ "gray-400": "#959595",
97
+ "gray-500": "#7c7c7c",
98
+ "gray-600": "#636363",
99
+ "gray-700": "#4a4a4a",
100
+ "gray-800": "#323232",
101
+ "gray-900": "#191919",
102
+ "red-400": "#d31a0c",
103
+ "semantic-success500": "#099250",
104
+ "chart-1": "#de8e0f",
105
+ "chart-2": "#004fff",
106
+ "chart-3": "#099250",
107
+ "chart-4": "#636363",
108
+ "chart-5": "#d31a0c",
109
+ "chart-6": "#a76700",
110
+ "chart-7": "#003bbb",
111
+ "chart-8": "#959595"
112
+ },
113
+ "typography": {
114
+ "pageTitle": "display-small",
115
+ "sectionHeading": "headline-medium",
116
+ "cardTitle": "headline-small",
117
+ "statValueLarge": "display-medium",
118
+ "statValueSmall": "display-small",
119
+ "statLabel": "body-small",
120
+ "bodyDefault": "body-medium",
121
+ "bodySecondary": "body-small",
122
+ "formLabel": "label-medium",
123
+ "formHelper": "body-small text-muted",
124
+ "formError": "body-small text-negative",
125
+ "buttonText": "label-medium",
126
+ "navItem": "body-medium",
127
+ "badgeText": "label-small",
128
+ "tableHeader": "label-medium",
129
+ "tableCell": "body-medium",
130
+ "timestamp": "body-small text-muted",
131
+ "emptyStateTitle": "headline-small",
132
+ "emptyStateDescription": "body-medium text-muted",
133
+ "dialogTitle": "headline-medium",
134
+ "dialogDescription": "body-medium text-muted",
135
+ "sidebarLabel": "nav-label",
136
+ "sidebarItem": "body-medium",
137
+ "breadcrumbItem": "body-small",
138
+ "breadcrumbCurrent": "body-small text-muted"
139
+ },
140
+ "fontFamilies": {
141
+ "display": "var(--font-cabinet-grotesk), var(--font-satoshi), sans-serif",
142
+ "body": "var(--font-satoshi), sans-serif",
143
+ "mono": "var(--font-dm-mono), 'DM Mono', monospace"
144
+ },
145
+ "typographyScale": {
146
+ "display-large": {
147
+ "size": "36px",
148
+ "lineHeight": "100%",
149
+ "weight": 800,
150
+ "font": "Cabinet Grotesk"
151
+ },
152
+ "display-medium": {
153
+ "size": "32px",
154
+ "lineHeight": "100%",
155
+ "weight": 800,
156
+ "font": "Cabinet Grotesk"
157
+ },
158
+ "display-small": {
159
+ "size": "29px",
160
+ "lineHeight": "100%",
161
+ "weight": 800,
162
+ "font": "Cabinet Grotesk"
163
+ },
164
+ "headline-large": {
165
+ "size": "26px",
166
+ "lineHeight": "32px",
167
+ "weight": 700,
168
+ "font": "Satoshi"
169
+ },
170
+ "headline-medium": {
171
+ "size": "23px",
172
+ "lineHeight": "28px",
173
+ "weight": 700,
174
+ "font": "Satoshi"
175
+ },
176
+ "headline-small": {
177
+ "size": "20px",
178
+ "lineHeight": "24px",
179
+ "weight": 700,
180
+ "font": "Satoshi"
181
+ },
182
+ "title-large": {
183
+ "size": "18px",
184
+ "lineHeight": "22px",
185
+ "weight": 700,
186
+ "font": "Satoshi"
187
+ },
188
+ "title-medium": {
189
+ "size": "16px",
190
+ "lineHeight": "20px",
191
+ "weight": 700,
192
+ "font": "Satoshi"
193
+ },
194
+ "title-small": {
195
+ "size": "14px",
196
+ "lineHeight": "18px",
197
+ "weight": 700,
198
+ "font": "Satoshi"
199
+ },
200
+ "body-large": {
201
+ "size": "16px",
202
+ "lineHeight": "24px",
203
+ "weight": 500,
204
+ "font": "Satoshi"
205
+ },
206
+ "body-medium": {
207
+ "size": "14px",
208
+ "lineHeight": "20px",
209
+ "weight": 500,
210
+ "font": "Satoshi"
211
+ },
212
+ "body-small": {
213
+ "size": "12px",
214
+ "lineHeight": "16px",
215
+ "weight": 500,
216
+ "font": "Satoshi"
217
+ },
218
+ "body-x-small": {
219
+ "size": "10px",
220
+ "lineHeight": "14px",
221
+ "weight": 500,
222
+ "font": "Satoshi"
223
+ },
224
+ "label-large": {
225
+ "size": "14px",
226
+ "lineHeight": "18px",
227
+ "weight": 700,
228
+ "font": "Satoshi"
229
+ },
230
+ "label-medium": {
231
+ "size": "12px",
232
+ "lineHeight": "16px",
233
+ "weight": 700,
234
+ "font": "Satoshi"
235
+ },
236
+ "label-small": {
237
+ "size": "10px",
238
+ "lineHeight": "14px",
239
+ "weight": 700,
240
+ "font": "Satoshi"
241
+ },
242
+ "stat-mono": {
243
+ "weight": 500,
244
+ "letterSpacing": "0.04em",
245
+ "font": "DM Mono"
246
+ }
247
+ }
248
+ },
249
+ "components": {
250
+ "decisions": {
251
+ "lists": {
252
+ "clickableRow": "Item",
253
+ "dataTable": "Table",
254
+ "cardGrid": "Card in grid",
255
+ "simpleList": "ul with body-medium",
256
+ "descriptionList": "dl with label-medium dt and body-medium dd"
257
+ },
258
+ "feedback": {
259
+ "actionSuccess": "toast.success",
260
+ "actionError": "toast.error",
261
+ "inlineWarning": "Alert variant=warning",
262
+ "inlineError": "Alert variant=destructive",
263
+ "fieldError": "body-small text-negative below input",
264
+ "inlineInfo": "Alert variant=default"
265
+ },
266
+ "modals": {
267
+ "formEntry": "Dialog",
268
+ "confirmDestructive": "AlertDialog",
269
+ "sidePanel": "Sheet side=right",
270
+ "mobileNav": "Sheet side=left",
271
+ "mobileActions": "Sheet side=bottom h-auto max-h-[80vh]",
272
+ "preview": "Dialog or Sheet"
273
+ },
274
+ "navigation": {
275
+ "primaryNav": "Sidebar",
276
+ "pageTabs": "Tabs",
277
+ "breadcrumbs": "Breadcrumb",
278
+ "sectionHeader": "Breadcrumb + headline",
279
+ "dropdownNav": "DropdownMenu"
280
+ },
281
+ "selection": {
282
+ "singleFromFew": "radio group",
283
+ "singleFromMany": "Select",
284
+ "multiple": "Checkbox group",
285
+ "toggle": "single Checkbox",
286
+ "segmented": "Tabs variant=pill"
287
+ },
288
+ "data": {
289
+ "status": "Badge",
290
+ "progress": "Progress",
291
+ "avatar": "Avatar",
292
+ "chart": "Chart (recharts)",
293
+ "skeleton": "Skeleton"
294
+ },
295
+ "forms": {
296
+ "textInput": "Input",
297
+ "textArea": "Textarea",
298
+ "typedInput": "Input type=email|password|number",
299
+ "otpInput": "InputOTP",
300
+ "label": "Label htmlFor={id}",
301
+ "checkbox": "Checkbox + Label"
302
+ },
303
+ "layout": {
304
+ "card": "Card",
305
+ "accordion": "Accordion",
306
+ "collapsible": "Collapsible",
307
+ "separator": "Separator",
308
+ "tooltip": "Tooltip"
309
+ }
310
+ },
311
+ "registry": {
312
+ "Card": {
313
+ "name": "Card",
314
+ "status": "approved",
315
+ "description": "Container for grouped content with optional header/footer",
316
+ "imports": [
317
+ "Card",
318
+ "CardHeader",
319
+ "CardTitle",
320
+ "CardDescription",
321
+ "CardContent",
322
+ "CardFooter"
323
+ ],
324
+ "composition": [
325
+ "CardHeader",
326
+ "CardTitle",
327
+ "CardDescription",
328
+ "CardContent",
329
+ "CardFooter"
330
+ ]
331
+ },
332
+ "Item": {
333
+ "name": "Item",
334
+ "status": "approved",
335
+ "description": "Flexible list item with media, content, and actions slots",
336
+ "imports": [
337
+ "Item",
338
+ "ItemMedia",
339
+ "ItemContent",
340
+ "ItemTitle",
341
+ "ItemDescription",
342
+ "ItemActions"
343
+ ],
344
+ "variants": {
345
+ "variant": [
346
+ "default",
347
+ "outline",
348
+ "muted"
349
+ ]
350
+ },
351
+ "composition": [
352
+ "ItemMedia",
353
+ "ItemContent",
354
+ "ItemTitle",
355
+ "ItemDescription",
356
+ "ItemActions"
357
+ ]
358
+ },
359
+ "Separator": {
360
+ "name": "Separator",
361
+ "status": "approved",
362
+ "description": "Visual divider between sections",
363
+ "imports": [
364
+ "Separator"
365
+ ]
366
+ },
367
+ "Sidebar": {
368
+ "name": "Sidebar",
369
+ "status": "approved",
370
+ "description": "Primary navigation sidebar with collapsible state",
371
+ "imports": [
372
+ "Sidebar",
373
+ "SidebarContent",
374
+ "SidebarGroup",
375
+ "SidebarGroupLabel",
376
+ "SidebarGroupContent",
377
+ "SidebarMenu",
378
+ "SidebarMenuItem",
379
+ "SidebarMenuButton",
380
+ "SidebarHeader",
381
+ "SidebarFooter",
382
+ "SidebarTrigger",
383
+ "SidebarProvider"
384
+ ],
385
+ "composition": [
386
+ "SidebarHeader",
387
+ "SidebarContent",
388
+ "SidebarGroup",
389
+ "SidebarFooter"
390
+ ]
391
+ },
392
+ "OfflineSidebar": {
393
+ "name": "OfflineSidebar",
394
+ "status": "approved",
395
+ "description": "Pre-configured sidebar with Offline branding (requires Next.js)",
396
+ "imports": [
397
+ "OfflineSidebar",
398
+ "OfflineSidebarNav",
399
+ "OfflineSidebarFooter"
400
+ ]
401
+ },
402
+ "Breadcrumb": {
403
+ "name": "Breadcrumb",
404
+ "status": "approved",
405
+ "description": "Location breadcrumb trail",
406
+ "imports": [
407
+ "Breadcrumb",
408
+ "BreadcrumbList",
409
+ "BreadcrumbItem",
410
+ "BreadcrumbLink",
411
+ "BreadcrumbPage",
412
+ "BreadcrumbSeparator"
413
+ ],
414
+ "composition": [
415
+ "BreadcrumbList",
416
+ "BreadcrumbItem",
417
+ "BreadcrumbLink",
418
+ "BreadcrumbPage"
419
+ ]
420
+ },
421
+ "Tabs": {
422
+ "name": "Tabs",
423
+ "status": "approved",
424
+ "description": "Tab navigation for switching views",
425
+ "imports": [
426
+ "Tabs",
427
+ "TabsList",
428
+ "TabsTrigger",
429
+ "TabsContent"
430
+ ],
431
+ "variants": {
432
+ "style": [
433
+ "default (pill)",
434
+ "line (underline)"
435
+ ]
436
+ },
437
+ "composition": [
438
+ "TabsList",
439
+ "TabsTrigger",
440
+ "TabsContent"
441
+ ]
442
+ },
443
+ "DropdownMenu": {
444
+ "name": "DropdownMenu",
445
+ "status": "approved",
446
+ "description": "Dropdown menu for actions",
447
+ "imports": [
448
+ "DropdownMenu",
449
+ "DropdownMenuTrigger",
450
+ "DropdownMenuContent",
451
+ "DropdownMenuItem",
452
+ "DropdownMenuSeparator",
453
+ "DropdownMenuLabel"
454
+ ],
455
+ "composition": [
456
+ "DropdownMenuTrigger",
457
+ "DropdownMenuContent",
458
+ "DropdownMenuItem"
459
+ ]
460
+ },
461
+ "Button": {
462
+ "name": "Button",
463
+ "status": "approved",
464
+ "description": "Primary action trigger. Black (default) is primary color per brand",
465
+ "imports": [
466
+ "Button",
467
+ "buttonVariants"
468
+ ],
469
+ "variants": {
470
+ "variant": [
471
+ "default",
472
+ "secondary",
473
+ "outline",
474
+ "ghost",
475
+ "destructive",
476
+ "link"
477
+ ],
478
+ "size": [
479
+ "default",
480
+ "sm",
481
+ "lg",
482
+ "icon"
483
+ ]
484
+ }
485
+ },
486
+ "Badge": {
487
+ "name": "Badge",
488
+ "status": "approved",
489
+ "description": "Status indicators, tags, labels",
490
+ "imports": [
491
+ "Badge",
492
+ "badgeVariants"
493
+ ],
494
+ "variants": {
495
+ "variant": [
496
+ "default",
497
+ "secondary",
498
+ "destructive",
499
+ "success",
500
+ "warning",
501
+ "outline"
502
+ ]
503
+ }
504
+ },
505
+ "Input": {
506
+ "name": "Input",
507
+ "status": "approved",
508
+ "description": "Single-line text input",
509
+ "imports": [
510
+ "Input"
511
+ ]
512
+ },
513
+ "Label": {
514
+ "name": "Label",
515
+ "status": "approved",
516
+ "description": "Form field label - always use with htmlFor",
517
+ "imports": [
518
+ "Label"
519
+ ]
520
+ },
521
+ "Checkbox": {
522
+ "name": "Checkbox",
523
+ "status": "approved",
524
+ "description": "Checkbox for boolean/multi-select",
525
+ "imports": [
526
+ "Checkbox"
527
+ ]
528
+ },
529
+ "InputOTP": {
530
+ "name": "InputOTP",
531
+ "status": "approved",
532
+ "description": "OTP/verification code input",
533
+ "imports": [
534
+ "InputOTP",
535
+ "InputOTPGroup",
536
+ "InputOTPSlot",
537
+ "InputOTPSeparator"
538
+ ],
539
+ "composition": [
540
+ "InputOTPGroup",
541
+ "InputOTPSlot"
542
+ ]
543
+ },
544
+ "Progress": {
545
+ "name": "Progress",
546
+ "status": "approved",
547
+ "description": "Progress bar indicator",
548
+ "imports": [
549
+ "Progress"
550
+ ]
551
+ },
552
+ "Dialog": {
553
+ "name": "Dialog",
554
+ "status": "approved",
555
+ "description": "Modal for forms and content. User can dismiss freely",
556
+ "imports": [
557
+ "Dialog",
558
+ "DialogTrigger",
559
+ "DialogContent",
560
+ "DialogHeader",
561
+ "DialogFooter",
562
+ "DialogTitle",
563
+ "DialogDescription",
564
+ "DialogClose"
565
+ ],
566
+ "composition": [
567
+ "DialogTrigger",
568
+ "DialogContent",
569
+ "DialogHeader",
570
+ "DialogFooter"
571
+ ]
572
+ },
573
+ "AlertDialog": {
574
+ "name": "AlertDialog",
575
+ "status": "approved",
576
+ "description": "Interruption requiring decision. Cannot dismiss by clicking outside",
577
+ "imports": [
578
+ "AlertDialog",
579
+ "AlertDialogTrigger",
580
+ "AlertDialogContent",
581
+ "AlertDialogHeader",
582
+ "AlertDialogFooter",
583
+ "AlertDialogTitle",
584
+ "AlertDialogDescription",
585
+ "AlertDialogAction",
586
+ "AlertDialogCancel"
587
+ ],
588
+ "composition": [
589
+ "AlertDialogTrigger",
590
+ "AlertDialogContent",
591
+ "AlertDialogAction",
592
+ "AlertDialogCancel"
593
+ ]
594
+ },
595
+ "Sheet": {
596
+ "name": "Sheet",
597
+ "status": "approved",
598
+ "description": "Slide-in panel for secondary content",
599
+ "imports": [
600
+ "Sheet",
601
+ "SheetTrigger",
602
+ "SheetContent",
603
+ "SheetHeader",
604
+ "SheetFooter",
605
+ "SheetTitle",
606
+ "SheetDescription",
607
+ "SheetClose"
608
+ ],
609
+ "variants": {
610
+ "side": [
611
+ "right",
612
+ "left",
613
+ "top",
614
+ "bottom"
615
+ ]
616
+ },
617
+ "composition": [
618
+ "SheetTrigger",
619
+ "SheetContent",
620
+ "SheetHeader",
621
+ "SheetFooter"
622
+ ]
623
+ },
624
+ "Tooltip": {
625
+ "name": "Tooltip",
626
+ "status": "approved",
627
+ "description": "Hover/focus information overlay",
628
+ "imports": [
629
+ "Tooltip",
630
+ "TooltipTrigger",
631
+ "TooltipContent",
632
+ "TooltipProvider"
633
+ ],
634
+ "composition": [
635
+ "TooltipTrigger",
636
+ "TooltipContent"
637
+ ]
638
+ },
639
+ "Avatar": {
640
+ "name": "Avatar",
641
+ "status": "approved",
642
+ "description": "User/entity avatar with fallback",
643
+ "imports": [
644
+ "Avatar",
645
+ "AvatarImage",
646
+ "AvatarFallback"
647
+ ],
648
+ "composition": [
649
+ "AvatarImage",
650
+ "AvatarFallback"
651
+ ],
652
+ "sizes": [
653
+ "default",
654
+ "sm",
655
+ "lg"
656
+ ]
657
+ },
658
+ "Skeleton": {
659
+ "name": "Skeleton",
660
+ "status": "approved",
661
+ "description": "Loading placeholder matching content shape",
662
+ "imports": [
663
+ "Skeleton"
664
+ ]
665
+ },
666
+ "Chart": {
667
+ "name": "Chart",
668
+ "status": "approved",
669
+ "description": "Data visualization wrapper for Recharts",
670
+ "imports": [
671
+ "ChartContainer",
672
+ "ChartTooltip",
673
+ "ChartTooltipContent",
674
+ "ChartLegend",
675
+ "ChartLegendContent"
676
+ ]
677
+ },
678
+ "Accordion": {
679
+ "name": "Accordion",
680
+ "status": "approved",
681
+ "description": "Expandable content sections",
682
+ "imports": [
683
+ "Accordion",
684
+ "AccordionItem",
685
+ "AccordionTrigger",
686
+ "AccordionContent"
687
+ ],
688
+ "composition": [
689
+ "AccordionItem",
690
+ "AccordionTrigger",
691
+ "AccordionContent"
692
+ ]
693
+ },
694
+ "Collapsible": {
695
+ "name": "Collapsible",
696
+ "status": "approved",
697
+ "description": "Single collapsible section",
698
+ "imports": [
699
+ "Collapsible",
700
+ "CollapsibleTrigger",
701
+ "CollapsibleContent"
702
+ ],
703
+ "composition": [
704
+ "CollapsibleTrigger",
705
+ "CollapsibleContent"
706
+ ]
707
+ },
708
+ "Select": {
709
+ "name": "Select",
710
+ "status": "draft",
711
+ "description": "Dropdown select - still being refined",
712
+ "imports": [
713
+ "Select",
714
+ "SelectTrigger",
715
+ "SelectContent",
716
+ "SelectItem",
717
+ "SelectValue",
718
+ "SelectGroup",
719
+ "SelectLabel"
720
+ ]
721
+ },
722
+ "Sonner": {
723
+ "name": "Sonner",
724
+ "status": "draft",
725
+ "description": "Toast notifications - integration in progress",
726
+ "imports": [
727
+ "Toaster",
728
+ "toast"
729
+ ]
730
+ },
731
+ "Table": {
732
+ "name": "Table",
733
+ "status": "draft",
734
+ "description": "Data table - needs more patterns",
735
+ "imports": [
736
+ "Table",
737
+ "TableHeader",
738
+ "TableBody",
739
+ "TableFooter",
740
+ "TableHead",
741
+ "TableRow",
742
+ "TableCell",
743
+ "TableCaption"
744
+ ]
745
+ },
746
+ "Textarea": {
747
+ "name": "Textarea",
748
+ "status": "draft",
749
+ "description": "Multi-line text input - under review",
750
+ "imports": [
751
+ "Textarea"
752
+ ]
753
+ }
754
+ },
755
+ "approved": [
756
+ "Card",
757
+ "Item",
758
+ "Separator",
759
+ "Sidebar",
760
+ "OfflineSidebar",
761
+ "Breadcrumb",
762
+ "Tabs",
763
+ "DropdownMenu",
764
+ "Button",
765
+ "Badge",
766
+ "Input",
767
+ "Label",
768
+ "Checkbox",
769
+ "InputOTP",
770
+ "Progress",
771
+ "Dialog",
772
+ "AlertDialog",
773
+ "Sheet",
774
+ "Tooltip",
775
+ "Avatar",
776
+ "Skeleton",
777
+ "Chart",
778
+ "Accordion",
779
+ "Collapsible"
780
+ ],
781
+ "draft": [
782
+ "Select",
783
+ "Sonner",
784
+ "Table",
785
+ "Textarea"
786
+ ]
787
+ },
788
+ "patterns": {
789
+ "layout": {
790
+ "page": {
791
+ "maxWidth": "max-w-4xl",
792
+ "maxWidthWide": "max-w-6xl",
793
+ "padding": "px-4 py-6",
794
+ "sectionGap": "space-y-8",
795
+ "wrapper": "mx-auto px-4 py-6"
796
+ },
797
+ "cards": {
798
+ "padding": "p-6",
799
+ "paddingCompact": "p-4",
800
+ "gap": "gap-4",
801
+ "grid2col": "grid grid-cols-1 md:grid-cols-2 gap-4",
802
+ "grid3col": "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",
803
+ "grid4col": "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",
804
+ "stack": "flex flex-col gap-4"
805
+ },
806
+ "forms": {
807
+ "fieldGap": "space-y-4",
808
+ "labelGap": "mb-2",
809
+ "helperGap": "mt-1",
810
+ "buttonGap": "gap-2",
811
+ "sectionGap": "space-y-6",
812
+ "container": "space-y-4",
813
+ "actions": "flex justify-end gap-2 pt-4",
814
+ "fieldFull": "w-full",
815
+ "fieldPair": "grid grid-cols-2 gap-4"
816
+ },
817
+ "inline": {
818
+ "iconText": "inline-flex items-center gap-2",
819
+ "badges": "flex flex-wrap gap-2",
820
+ "buttons": "flex items-center gap-2",
821
+ "tags": "flex flex-wrap gap-1"
822
+ },
823
+ "header": {
824
+ "pageHeader": "flex items-center justify-between mb-6",
825
+ "sectionHeader": "flex items-center justify-between mb-4",
826
+ "cardHeader": "flex items-center justify-between"
827
+ },
828
+ "sidebar": {
829
+ "width": "w-64",
830
+ "widthCollapsed": "w-16",
831
+ "contentWithSidebar": "ml-64",
832
+ "contentMobile": "ml-0"
833
+ },
834
+ "responsive": {
835
+ "hideMobile": "hidden md:block",
836
+ "showMobile": "md:hidden",
837
+ "stackToRow": "flex flex-col md:flex-row",
838
+ "fullToAuto": "w-full md:w-auto"
839
+ }
840
+ },
841
+ "states": {
842
+ "loading": {
843
+ "page": "Skeleton matching page structure",
844
+ "card": "Skeleton matching card structure",
845
+ "button": {
846
+ "icon": "Loader2",
847
+ "text": "Loading...",
848
+ "classes": "disabled opacity-50",
849
+ "iconClasses": "animate-spin mr-2 h-4 w-4"
850
+ },
851
+ "inline": {
852
+ "icon": "Loader2",
853
+ "classes": "animate-spin h-4 w-4"
854
+ },
855
+ "tableRow": "Skeleton h-12 w-full",
856
+ "listItem": "Skeleton h-16 w-full",
857
+ "avatar": "Skeleton h-10 w-10 rounded-full"
858
+ },
859
+ "empty": {
860
+ "structure": "flex flex-col items-center justify-center py-12 text-center",
861
+ "icon": {
862
+ "classes": "h-12 w-12 text-muted-foreground mb-4",
863
+ "note": "Use relevant lucide icon for context"
864
+ },
865
+ "title": {
866
+ "classes": "headline-small mb-2"
867
+ },
868
+ "description": {
869
+ "classes": "body-medium text-muted-foreground max-w-sm mx-auto mb-4"
870
+ },
871
+ "action": {
872
+ "variant": "outline",
873
+ "note": "Optional - only if user can take action to fill empty state"
874
+ }
875
+ },
876
+ "error": {
877
+ "page": {
878
+ "component": "Alert",
879
+ "variant": "destructive",
880
+ "includeRetry": true,
881
+ "classes": "max-w-lg mx-auto my-8"
882
+ },
883
+ "inline": {
884
+ "classes": "body-small text-destructive"
885
+ },
886
+ "field": {
887
+ "inputClasses": "border-destructive focus:ring-destructive",
888
+ "messageClasses": "body-small text-destructive mt-1"
889
+ },
890
+ "banner": {
891
+ "component": "Alert",
892
+ "variant": "destructive",
893
+ "classes": "mb-4"
894
+ }
895
+ },
896
+ "disabled": {
897
+ "opacity": "opacity-50",
898
+ "cursor": "cursor-not-allowed",
899
+ "interaction": "pointer-events-none",
900
+ "combined": "opacity-50 cursor-not-allowed pointer-events-none"
901
+ },
902
+ "success": {
903
+ "toast": {
904
+ "method": "toast.success",
905
+ "duration": 3000
906
+ },
907
+ "inline": {
908
+ "classes": "body-small text-[var(--semantic-success500)]"
909
+ },
910
+ "banner": {
911
+ "component": "Alert",
912
+ "variant": "default",
913
+ "icon": "CheckCircle",
914
+ "classes": "border-[var(--semantic-success500)] bg-green-50"
915
+ }
916
+ },
917
+ "warning": {
918
+ "banner": {
919
+ "component": "Alert",
920
+ "variant": "warning",
921
+ "icon": "AlertTriangle"
922
+ },
923
+ "inline": {
924
+ "classes": "body-small text-[var(--colors-yellow-600)]"
925
+ }
926
+ }
927
+ },
928
+ "interactions": {
929
+ "clickableCard": {
930
+ "default": "shadow-card transition-shadow duration-200",
931
+ "hover": "hover:shadow-elevated",
932
+ "cursor": "cursor-pointer",
933
+ "combined": "shadow-card hover:shadow-elevated cursor-pointer transition-shadow duration-200",
934
+ "withBorder": "border border-gray-200 hover:border-gray-300 cursor-pointer transition-colors"
935
+ },
936
+ "link": {
937
+ "default": "text-[var(--colors-blue-400)] underline-offset-4",
938
+ "hover": "hover:underline",
939
+ "combined": "text-[var(--colors-blue-400)] underline-offset-4 hover:underline",
940
+ "nav": "text-[var(--colors-blue-400)] hover:underline underline-offset-4"
941
+ },
942
+ "iconButton": {
943
+ "default": "p-2 rounded-md transition-colors",
944
+ "hover": "hover:bg-muted",
945
+ "combined": "p-2 rounded-md hover:bg-muted transition-colors",
946
+ "destructive": "p-2 rounded-md hover:bg-destructive/10 hover:text-destructive transition-colors"
947
+ },
948
+ "tableRow": {
949
+ "default": "transition-colors",
950
+ "hover": "hover:bg-muted/50",
951
+ "combined": "hover:bg-muted/50 transition-colors",
952
+ "clickable": "hover:bg-muted/50 cursor-pointer transition-colors"
953
+ },
954
+ "listItem": {
955
+ "default": "transition-colors",
956
+ "hover": "hover:bg-muted/50",
957
+ "active": "bg-muted",
958
+ "combined": "hover:bg-muted/50 cursor-pointer transition-colors"
959
+ },
960
+ "button": {
961
+ "focus": "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
962
+ "active": "active:scale-[0.98]",
963
+ "transition": "transition-colors"
964
+ },
965
+ "input": {
966
+ "default": "border border-gray-200 transition-colors",
967
+ "hover": "hover:border-gray-300",
968
+ "focus": "focus:border-gray-900 focus:ring-2 focus:ring-gray-900/10",
969
+ "error": "border-destructive focus:border-destructive focus:ring-destructive/10",
970
+ "combined": "border border-gray-200 hover:border-gray-300 focus:border-gray-900 focus:ring-2 focus:ring-gray-900/10 transition-colors"
971
+ },
972
+ "menuItem": {
973
+ "default": "transition-colors rounded-sm",
974
+ "hover": "hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground",
975
+ "combined": "hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground rounded-sm transition-colors"
976
+ },
977
+ "sidebarItem": {
978
+ "default": "transition-colors rounded-md",
979
+ "hover": "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
980
+ "active": "bg-sidebar-accent text-sidebar-accent-foreground",
981
+ "combined": "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground rounded-md transition-colors"
982
+ },
983
+ "transitions": {
984
+ "fast": "transition-colors duration-150",
985
+ "medium": "transition-all duration-200",
986
+ "slow": "transition-all duration-300",
987
+ "ease": {
988
+ "default": "ease-in-out",
989
+ "in": "ease-in",
990
+ "out": "ease-out",
991
+ "bounce": "cubic-bezier(0.68, -0.55, 0.265, 1.55)"
992
+ }
993
+ }
994
+ },
995
+ "charts": {
996
+ "colorPriority": [
997
+ "chart-1",
998
+ "chart-3",
999
+ "chart-5",
1000
+ "chart-4",
1001
+ "chart-6",
1002
+ "chart-8"
1003
+ ],
1004
+ "ratingDistribution": {
1005
+ "1": "chart-5",
1006
+ "2": "chart-5",
1007
+ "3": "chart-4",
1008
+ "4": "chart-1",
1009
+ "5": "chart-3"
1010
+ },
1011
+ "positiveMetrics": [
1012
+ "chart-1",
1013
+ "chart-3",
1014
+ "chart-6"
1015
+ ],
1016
+ "negativeMetrics": [
1017
+ "chart-5",
1018
+ "chart-4",
1019
+ "chart-8"
1020
+ ],
1021
+ "comparisonPairs": {
1022
+ "current": "chart-1",
1023
+ "previous": "chart-4"
1024
+ },
1025
+ "axisStyle": {
1026
+ "tickLine": false,
1027
+ "axisLine": false,
1028
+ "tick": {
1029
+ "fill": "hsl(var(--muted-foreground))",
1030
+ "fontSize": 12
1031
+ },
1032
+ "tickMargin": 8
1033
+ },
1034
+ "yAxisStyle": {
1035
+ "tickLine": false,
1036
+ "axisLine": false,
1037
+ "tick": {
1038
+ "fill": "hsl(var(--muted-foreground))",
1039
+ "fontSize": 12
1040
+ },
1041
+ "width": 40
1042
+ },
1043
+ "xAxisStyle": {
1044
+ "tickLine": false,
1045
+ "axisLine": false,
1046
+ "tick": {
1047
+ "fill": "hsl(var(--muted-foreground))",
1048
+ "fontSize": 12
1049
+ },
1050
+ "height": 40
1051
+ },
1052
+ "barRadius": [
1053
+ 4,
1054
+ 4,
1055
+ 0,
1056
+ 0
1057
+ ],
1058
+ "gridStyle": {
1059
+ "stroke": "hsl(var(--border))",
1060
+ "strokeDasharray": "3 3"
1061
+ },
1062
+ "tooltipStyle": {
1063
+ "contentStyle": {
1064
+ "backgroundColor": "hsl(var(--popover))",
1065
+ "border": "1px solid hsl(var(--border))",
1066
+ "borderRadius": "6px",
1067
+ "boxShadow": "var(--card-shadow)"
1068
+ },
1069
+ "labelStyle": {
1070
+ "fontWeight": 600,
1071
+ "marginBottom": 4
1072
+ }
1073
+ },
1074
+ "legendStyle": {
1075
+ "iconType": "circle",
1076
+ "iconSize": 8,
1077
+ "wrapperStyle": {
1078
+ "paddingTop": 16
1079
+ }
1080
+ },
1081
+ "containerSizing": {
1082
+ "small": {
1083
+ "height": 100
1084
+ },
1085
+ "medium": {
1086
+ "height": 200
1087
+ },
1088
+ "large": {
1089
+ "height": 300
1090
+ },
1091
+ "full": {
1092
+ "height": 400
1093
+ }
1094
+ },
1095
+ "margins": {
1096
+ "none": {
1097
+ "top": 0,
1098
+ "right": 0,
1099
+ "bottom": 0,
1100
+ "left": 0
1101
+ },
1102
+ "withAxis": {
1103
+ "top": 10,
1104
+ "right": 10,
1105
+ "bottom": 30,
1106
+ "left": 40
1107
+ },
1108
+ "withLegend": {
1109
+ "top": 10,
1110
+ "right": 10,
1111
+ "bottom": 50,
1112
+ "left": 40
1113
+ }
1114
+ },
1115
+ "semanticSeries": {
1116
+ "revenue": {
1117
+ "color": "chart-1",
1118
+ "label": "Revenue"
1119
+ },
1120
+ "growth": {
1121
+ "color": "chart-3",
1122
+ "label": "Growth"
1123
+ },
1124
+ "decline": {
1125
+ "color": "chart-5",
1126
+ "label": "Decline"
1127
+ },
1128
+ "baseline": {
1129
+ "color": "chart-4",
1130
+ "label": "Baseline"
1131
+ },
1132
+ "target": {
1133
+ "color": "chart-2",
1134
+ "label": "Target"
1135
+ }
1136
+ }
1137
+ },
1138
+ "modals": {
1139
+ "sizes": {
1140
+ "small": "max-w-sm",
1141
+ "default": "max-w-lg",
1142
+ "large": "max-w-2xl",
1143
+ "xl": "max-w-3xl",
1144
+ "full": "max-w-4xl"
1145
+ },
1146
+ "headerWithIcon": {
1147
+ "iconContainer": "size-12 rounded-full flex items-center justify-center mb-4",
1148
+ "iconPositive": "bg-yellow-100 text-yellow-600",
1149
+ "iconInfo": "bg-blue-100 text-blue-600",
1150
+ "iconDestructive": "bg-red-100 text-red-600",
1151
+ "iconSuccess": "bg-green-100 text-green-600",
1152
+ "iconSize": "h-6 w-6"
1153
+ },
1154
+ "footer": {
1155
+ "alignment": "flex justify-end gap-2",
1156
+ "cancelFirst": true,
1157
+ "destructive": {
1158
+ "cancelVariant": "outline",
1159
+ "actionVariant": "destructive"
1160
+ },
1161
+ "standard": {
1162
+ "cancelVariant": "outline",
1163
+ "actionVariant": "default"
1164
+ }
1165
+ },
1166
+ "mobile": {
1167
+ "dialogHeight": "max-h-[90vh] overflow-y-auto",
1168
+ "bottomSheetHeight": "h-auto max-h-[80vh]",
1169
+ "fullScreen": "fixed inset-0 max-w-none rounded-none"
1170
+ },
1171
+ "sheet": {
1172
+ "right": {
1173
+ "side": "right",
1174
+ "width": "w-[400px] sm:max-w-[540px]"
1175
+ },
1176
+ "left": {
1177
+ "side": "left",
1178
+ "width": "w-[300px] sm:max-w-[400px]"
1179
+ },
1180
+ "bottom": {
1181
+ "side": "bottom",
1182
+ "height": "h-auto max-h-[80vh]",
1183
+ "rounded": "rounded-t-xl"
1184
+ }
1185
+ },
1186
+ "alertDialog": {
1187
+ "headerRule": "Title and description text only",
1188
+ "buttonOrder": [
1189
+ "AlertDialogCancel",
1190
+ "AlertDialogAction"
1191
+ ],
1192
+ "destructiveAction": {
1193
+ "variant": "destructive",
1194
+ "text": "Delete"
1195
+ },
1196
+ "messaging": {
1197
+ "title": "Action verb + object (e.g., 'Delete this item?')",
1198
+ "description": "Consequence explanation (e.g., 'This action cannot be undone.')"
1199
+ }
1200
+ },
1201
+ "contentPatterns": {
1202
+ "form": {
1203
+ "spacing": "space-y-4",
1204
+ "footerSpacing": "pt-4"
1205
+ },
1206
+ "confirmation": {
1207
+ "textAlign": "text-center",
1208
+ "spacing": "space-y-2"
1209
+ },
1210
+ "detail": {
1211
+ "maxHeight": "max-h-[70vh]",
1212
+ "overflow": "overflow-y-auto"
1213
+ }
1214
+ },
1215
+ "animation": {
1216
+ "dialog": "duration-200",
1217
+ "sheet": "duration-300",
1218
+ "overlay": "duration-200"
1219
+ }
1220
+ }
1221
+ },
1222
+ "mappings": {
1223
+ "icons": {
1224
+ "actions": {
1225
+ "edit": "Pencil",
1226
+ "delete": "Trash2",
1227
+ "add": "Plus",
1228
+ "create": "Plus",
1229
+ "close": "X",
1230
+ "cancel": "X",
1231
+ "menu": "MoreVertical",
1232
+ "menuHorizontal": "MoreHorizontal",
1233
+ "settings": "Settings",
1234
+ "copy": "Copy",
1235
+ "duplicate": "Copy",
1236
+ "download": "Download",
1237
+ "upload": "Upload",
1238
+ "refresh": "RefreshCw",
1239
+ "save": "Save",
1240
+ "send": "Send",
1241
+ "search": "Search",
1242
+ "filter": "Filter",
1243
+ "sort": "ArrowUpDown",
1244
+ "archive": "Archive",
1245
+ "restore": "ArchiveRestore",
1246
+ "undo": "Undo2",
1247
+ "redo": "Redo2",
1248
+ "print": "Printer",
1249
+ "export": "FileDown",
1250
+ "import": "FileUp"
1251
+ },
1252
+ "navigation": {
1253
+ "back": "ArrowLeft",
1254
+ "forward": "ArrowRight",
1255
+ "up": "ArrowUp",
1256
+ "down": "ArrowDown",
1257
+ "external": "ExternalLink",
1258
+ "expand": "ChevronDown",
1259
+ "collapse": "ChevronUp",
1260
+ "chevronLeft": "ChevronLeft",
1261
+ "chevronRight": "ChevronRight",
1262
+ "home": "Home",
1263
+ "menu": "Menu",
1264
+ "sidebar": "PanelLeft",
1265
+ "grid": "LayoutGrid",
1266
+ "list": "List"
1267
+ },
1268
+ "status": {
1269
+ "success": "CheckCircle",
1270
+ "check": "Check",
1271
+ "warning": "AlertTriangle",
1272
+ "error": "AlertCircle",
1273
+ "info": "Info",
1274
+ "loading": "Loader2",
1275
+ "pending": "Clock",
1276
+ "scheduled": "CalendarClock",
1277
+ "draft": "FileEdit",
1278
+ "active": "CircleDot",
1279
+ "inactive": "Circle",
1280
+ "verified": "BadgeCheck",
1281
+ "locked": "Lock",
1282
+ "unlocked": "Unlock",
1283
+ "visible": "Eye",
1284
+ "hidden": "EyeOff"
1285
+ },
1286
+ "domain": {
1287
+ "calendar": "Calendar",
1288
+ "date": "Calendar",
1289
+ "time": "Clock",
1290
+ "location": "MapPin",
1291
+ "address": "MapPin",
1292
+ "team": "Users",
1293
+ "user": "User",
1294
+ "profile": "UserCircle",
1295
+ "email": "Mail",
1296
+ "phone": "Phone",
1297
+ "money": "DollarSign",
1298
+ "payment": "CreditCard",
1299
+ "invoice": "Receipt",
1300
+ "rating": "Star",
1301
+ "favorite": "Heart",
1302
+ "bookmark": "Bookmark",
1303
+ "share": "Share2",
1304
+ "link": "Link",
1305
+ "attachment": "Paperclip",
1306
+ "image": "Image",
1307
+ "file": "File",
1308
+ "folder": "Folder",
1309
+ "document": "FileText",
1310
+ "chart": "BarChart3",
1311
+ "analytics": "TrendingUp",
1312
+ "dashboard": "LayoutDashboard",
1313
+ "notification": "Bell",
1314
+ "message": "MessageSquare",
1315
+ "comment": "MessageCircle",
1316
+ "tag": "Tag",
1317
+ "category": "Folder",
1318
+ "partner": "Building2",
1319
+ "company": "Building",
1320
+ "store": "Store",
1321
+ "product": "Package",
1322
+ "inventory": "Boxes",
1323
+ "order": "ShoppingCart",
1324
+ "offer": "Ticket",
1325
+ "event": "CalendarDays",
1326
+ "campaign": "Megaphone"
1327
+ },
1328
+ "form": {
1329
+ "required": "Asterisk",
1330
+ "optional": "Circle",
1331
+ "help": "HelpCircle",
1332
+ "clear": "XCircle",
1333
+ "show": "Eye",
1334
+ "hide": "EyeOff",
1335
+ "increment": "Plus",
1336
+ "decrement": "Minus"
1337
+ },
1338
+ "emptyStates": {
1339
+ "noData": "Inbox",
1340
+ "noResults": "SearchX",
1341
+ "noItems": "PackageOpen",
1342
+ "noContent": "FileX",
1343
+ "noAccess": "ShieldX",
1344
+ "error": "AlertOctagon",
1345
+ "maintenance": "Wrench",
1346
+ "construction": "Construction"
1347
+ }
1348
+ },
1349
+ "badges": {
1350
+ "status": {
1351
+ "active": "success",
1352
+ "live": "success",
1353
+ "complete": "success",
1354
+ "completed": "success",
1355
+ "approved": "success",
1356
+ "verified": "success",
1357
+ "published": "success",
1358
+ "online": "success",
1359
+ "pending": "warning",
1360
+ "pendingReview": "warning",
1361
+ "inReview": "warning",
1362
+ "processing": "warning",
1363
+ "scheduled": "warning",
1364
+ "draft": "secondary",
1365
+ "inProgress": "secondary",
1366
+ "paused": "secondary",
1367
+ "inactive": "secondary",
1368
+ "offline": "secondary",
1369
+ "error": "destructive",
1370
+ "failed": "destructive",
1371
+ "cancelled": "destructive",
1372
+ "rejected": "destructive",
1373
+ "expired": "destructive",
1374
+ "overdue": "destructive",
1375
+ "archived": "outline",
1376
+ "closed": "outline",
1377
+ "ended": "outline",
1378
+ "past": "outline"
1379
+ },
1380
+ "tags": "outline",
1381
+ "premium": {
1382
+ "className": "badge-premium",
1383
+ "note": "Use badge-premium CSS class, not Badge component variant"
1384
+ },
1385
+ "floating": {
1386
+ "additionalClass": "shadow-tag",
1387
+ "note": "Add shadow-tag class to Badge for floating effect"
1388
+ }
1389
+ },
1390
+ "statusLabels": {
1391
+ "active": "Active",
1392
+ "live": "Live",
1393
+ "complete": "Complete",
1394
+ "completed": "Completed",
1395
+ "approved": "Approved",
1396
+ "verified": "Verified",
1397
+ "published": "Published",
1398
+ "online": "Online",
1399
+ "pending": "Pending",
1400
+ "pendingReview": "Pending Review",
1401
+ "inReview": "In Review",
1402
+ "processing": "Processing",
1403
+ "scheduled": "Scheduled",
1404
+ "draft": "Draft",
1405
+ "inProgress": "In Progress",
1406
+ "paused": "Paused",
1407
+ "inactive": "Inactive",
1408
+ "offline": "Offline",
1409
+ "error": "Error",
1410
+ "failed": "Failed",
1411
+ "cancelled": "Cancelled",
1412
+ "rejected": "Rejected",
1413
+ "expired": "Expired",
1414
+ "overdue": "Overdue",
1415
+ "archived": "Archived",
1416
+ "closed": "Closed",
1417
+ "ended": "Ended",
1418
+ "past": "Past"
1419
+ }
1420
+ },
1421
+ "rules": {
1422
+ "critical": [
1423
+ "NEVER use yellow (#de8e0f) for buttons - yellow is accent only",
1424
+ "Blue (#004fff) is ONLY for clickable text links",
1425
+ "AlertDialog headers: title + description only, NO icons or decoration",
1426
+ "Icon-only buttons MUST have aria-label",
1427
+ "Inputs MUST be paired with Label using htmlFor"
1428
+ ],
1429
+ "guidelines": [
1430
+ "Use CSS variables instead of hardcoded hex values",
1431
+ "Match shadow level to element importance: card < tag < elevated",
1432
+ "Use Cabinet Grotesk (display-*) sparingly for hero headlines",
1433
+ "Use stat-mono for numerical data and statistics",
1434
+ "Add max-h-[90vh] overflow-y-auto to Dialog for mobile"
1435
+ ],
1436
+ "antiPatterns": [
1437
+ {
1438
+ "bad": "Yellow buttons",
1439
+ "fix": "Use Button variant='default' (black)"
1440
+ },
1441
+ {
1442
+ "bad": "Home icon in breadcrumb",
1443
+ "fix": "Use 'Home' text instead"
1444
+ },
1445
+ {
1446
+ "bad": "Decorated AlertDialog headers",
1447
+ "fix": "Title + description only"
1448
+ },
1449
+ {
1450
+ "bad": "Missing input labels",
1451
+ "fix": "Always pair Input with Label htmlFor"
1452
+ },
1453
+ {
1454
+ "bad": "Hardcoded colors",
1455
+ "fix": "Use CSS variables or semantic classes"
1456
+ },
1457
+ {
1458
+ "bad": "Overusing premium styling",
1459
+ "fix": "Reserve for actual premium content"
1460
+ }
1461
+ ]
1462
+ }
1463
+ }