banhaten 0.2.0 → 0.3.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.
Files changed (101) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +1 -1
  3. package/docs/design-system/component-implementation-ownership-audit.md +244 -0
  4. package/docs/design-system/component-quality-audit-2026-08-20.md +223 -0
  5. package/docs/design-system/component-showcase-consistency-report.md +2 -0
  6. package/docs/design-system/components/README.md +1 -0
  7. package/docs/design-system/components/activity-feed.md +2 -0
  8. package/docs/design-system/components/activity-heatmap.md +73 -0
  9. package/docs/design-system/components/alert-dialog.md +1 -1
  10. package/docs/design-system/components/alert.md +2 -2
  11. package/docs/design-system/components/avatar.md +1 -1
  12. package/docs/design-system/components/badge.md +1 -1
  13. package/docs/design-system/components/banner.md +5 -1
  14. package/docs/design-system/components/breadcrumbs.md +3 -0
  15. package/docs/design-system/components/button-group.md +1 -0
  16. package/docs/design-system/components/button.md +1 -1
  17. package/docs/design-system/components/card.md +11 -3
  18. package/docs/design-system/components/catalog-components.md +3 -0
  19. package/docs/design-system/components/date-picker.md +1 -1
  20. package/docs/design-system/components/file-upload.md +4 -0
  21. package/docs/design-system/components/modal.md +1 -1
  22. package/docs/design-system/components/navigation-menu.md +1 -1
  23. package/docs/design-system/components/onboarding-step-list-item.md +1 -0
  24. package/docs/design-system/components/page-header.md +3 -1
  25. package/docs/design-system/components/pagination.md +1 -0
  26. package/docs/design-system/components/resizable.md +1 -1
  27. package/docs/design-system/components/scroll-area.md +7 -3
  28. package/docs/design-system/components/sidebar.md +3 -1
  29. package/docs/design-system/components/slideout.md +4 -1
  30. package/docs/design-system/components/steps.md +7 -2
  31. package/docs/design-system/components/table.md +25 -7
  32. package/docs/design-system/components/tag.md +1 -1
  33. package/docs/design-system/components/timeline.md +4 -1
  34. package/docs/design-system/components/toggle.md +1 -1
  35. package/docs/design-system/components/toolbar.md +1 -1
  36. package/docs/design-system/components/tooltip.md +1 -1
  37. package/docs/design-system/density-and-elevation.md +18 -1
  38. package/docs/design-system/gap-promotion-report.md +1 -67
  39. package/docs/design-system/launch-comparison-shadcn.md +10 -10
  40. package/package.json +3 -2
  41. package/registry/components/alert-dialog.tsx +1 -1
  42. package/registry/components/alert.tsx +15 -11
  43. package/registry/components/avatar.tsx +7 -3
  44. package/registry/components/badge.tsx +17 -17
  45. package/registry/components/button-group.tsx +3 -1
  46. package/registry/components/button.tsx +2 -2
  47. package/registry/components/card.tsx +19 -3
  48. package/registry/components/carousel.tsx +14 -0
  49. package/registry/components/command.tsx +37 -3
  50. package/registry/components/date-picker.tsx +67 -31
  51. package/registry/components/expanded/ActivityFeed.tsx +3 -7
  52. package/registry/components/expanded/ActivityHeatmap.tsx +64 -0
  53. package/registry/components/expanded/Banner.tsx +0 -1
  54. package/registry/components/expanded/Breadcrumbs.tsx +3 -0
  55. package/registry/components/expanded/CatalogComponentsShowcase.tsx +3 -4
  56. package/registry/components/expanded/CatalogDivider.tsx +3 -2
  57. package/registry/components/expanded/FileUpload.tsx +7 -5
  58. package/registry/components/expanded/OnboardingStepListItem.tsx +0 -2
  59. package/registry/components/expanded/PageHeader.tsx +35 -44
  60. package/registry/components/expanded/Slideout.tsx +18 -13
  61. package/registry/components/expanded/Steps.tsx +147 -9
  62. package/registry/components/expanded/Table.tsx +50 -18
  63. package/registry/components/expanded/Timeline.tsx +11 -24
  64. package/registry/components/expanded/activityFeed.css +8 -8
  65. package/registry/components/expanded/activityHeatmap.css +66 -0
  66. package/registry/components/expanded/banner.css +21 -11
  67. package/registry/components/expanded/breadcrumbs.css +1 -1
  68. package/registry/components/expanded/fileUpload.css +1 -1
  69. package/registry/components/expanded/onboardingStepListItem.css +2 -2
  70. package/registry/components/expanded/pageHeader.css +14 -11
  71. package/registry/components/expanded/slideout.css +3 -7
  72. package/registry/components/expanded/steps.css +75 -12
  73. package/registry/components/expanded/table.css +58 -67
  74. package/registry/components/expanded/timeline.css +17 -16
  75. package/registry/components/field.tsx +61 -8
  76. package/registry/components/menu.tsx +56 -6
  77. package/registry/components/modal.tsx +1 -1
  78. package/registry/components/navigation-menu.tsx +1 -1
  79. package/registry/components/pagination.css +36 -0
  80. package/registry/components/pagination.tsx +8 -6
  81. package/registry/components/progress-slider.tsx +1 -1
  82. package/registry/components/resizable.tsx +36 -2
  83. package/registry/components/scroll-area.tsx +30 -6
  84. package/registry/components/select.tsx +34 -11
  85. package/registry/components/sidebar.tsx +11 -5
  86. package/registry/components/social-button.tsx +12 -5
  87. package/registry/components/table-elements.tsx +128 -0
  88. package/registry/components/tabs.tsx +5 -10
  89. package/registry/components/tag.tsx +1 -1
  90. package/registry/components/toggle.tsx +2 -2
  91. package/registry/components/toolbar.tsx +5 -5
  92. package/registry/components/tooltip.tsx +1 -1
  93. package/registry/examples/avatar-demo.tsx +7 -4
  94. package/registry/examples/expanded/activity-heatmap-demo.tsx +29 -0
  95. package/registry/examples/expanded/breadcrumbs-demo.tsx +3 -3
  96. package/registry/examples/pagination-demo.tsx +5 -5
  97. package/registry/examples/sidebar-demo.tsx +4 -2
  98. package/registry/index.json +392 -33
  99. package/registry/styles/globals.css +68 -42
  100. package/registry.json +40 -3
  101. package/tokens/banhaten.tokens.json +165 -55
@@ -29,6 +29,7 @@
29
29
  --bh-amber-600: #CD6103;
30
30
  --bh-amber-700: #AC4C03;
31
31
  --bh-amber-800: #863E07;
32
+ --bh-amber-900: #652C07;
32
33
  --bh-aqua-100: #BBFAEA;
33
34
  --bh-aqua-200: #87F0D5;
34
35
  --bh-aqua-50: #DBFFF6;
@@ -100,6 +101,7 @@
100
101
  --bh-bg-accent-aqua-default: var(--bh-aqua-500);
101
102
  --bh-bg-accent-aqua-soft: var(--bh-aqua-100);
102
103
  --bh-bg-accent-aqua-subtle: var(--bh-aqua-50);
104
+ --bh-bg-accent-blue-bold: var(--bh-blue-600);
103
105
  --bh-bg-accent-blue-default: var(--bh-blue-500);
104
106
  --bh-bg-accent-blue-soft: var(--bh-blue-100);
105
107
  --bh-bg-accent-blue-subtle: var(--bh-blue-50);
@@ -122,6 +124,7 @@
122
124
  --bh-bg-accent-red-default: var(--bh-red-500);
123
125
  --bh-bg-accent-red-soft: var(--bh-red-100);
124
126
  --bh-bg-accent-red-subtle: var(--bh-red-50);
127
+ --bh-bg-accent-rose-bold: var(--bh-rose-600);
125
128
  --bh-bg-accent-rose-default: var(--bh-rose-500);
126
129
  --bh-bg-accent-rose-soft: var(--bh-rose-100);
127
130
  --bh-bg-accent-rose-subtle: var(--bh-rose-50);
@@ -455,6 +458,9 @@
455
458
  --bh-content-on-brand: var(--bh-colors-brand-color-on-brand-light);
456
459
  --bh-content-on-color: var(--bh-base-white);
457
460
  --bh-content-on-light: var(--bh-colors-neutral-950);
461
+ --bh-content-on-neutral: var(--bh-base-white);
462
+ --bh-content-on-success: var(--bh-base-white);
463
+ --bh-content-on-warning: var(--bh-base-white);
458
464
  --bh-content-subtle: var(--bh-colors-neutral-800);
459
465
  --bh-content-success-default: var(--bh-green-600);
460
466
  --bh-content-success-strong: var(--bh-green-700);
@@ -564,6 +570,8 @@
564
570
  --bh-green-500: #0BAE45;
565
571
  --bh-green-600: #039536;
566
572
  --bh-green-700: #07712C;
573
+ --bh-green-800: #075622;
574
+ --bh-green-900: #043F18;
567
575
  --bh-icon-explorer-canvas-max-width: 1280px;
568
576
  --bh-icon-explorer-detail-max-width: 760px;
569
577
  --bh-icon-explorer-detail-preview-size: 86px;
@@ -669,6 +677,9 @@
669
677
  --bh-interactive-soft-disabled: var(--bh-colors-neutral-alpha-100);
670
678
  --bh-interactive-soft-hover: var(--bh-colors-neutral-alpha-200);
671
679
  --bh-interactive-soft-pressed: var(--bh-colors-neutral-alpha-300);
680
+ --bh-interactive-success-default: var(--bh-green-700);
681
+ --bh-interactive-success-hover: var(--bh-green-800);
682
+ --bh-interactive-success-pressed: var(--bh-green-900);
672
683
  --bh-interactive-switch-active: var(--bh-green-500);
673
684
  --bh-interactive-switch-active-disabled: var(--bh-green-100);
674
685
  --bh-interactive-switch-active-hover: var(--bh-green-600);
@@ -678,6 +689,9 @@
678
689
  --bh-interactive-switch-handle-disabled: var(--bh-colors-neutral-50);
679
690
  --bh-interactive-switch-hover: var(--bh-colors-neutral-500);
680
691
  --bh-interactive-table-header: var(--bh-colors-neutral-alpha-50);
692
+ --bh-interactive-warning-default: var(--bh-amber-700);
693
+ --bh-interactive-warning-hover: var(--bh-amber-800);
694
+ --bh-interactive-warning-pressed: var(--bh-amber-900);
681
695
  --bh-item-actions-gap: var(--bh-space-md-8);
682
696
  --bh-item-content-gap: var(--bh-space-xxs-2);
683
697
  --bh-item-gap: var(--bh-space-xl-12);
@@ -998,10 +1012,10 @@
998
1012
  --bh-social-button-padding-x: var(--bh-space-xl-12);
999
1013
  --bh-social-button-padding-y: var(--bh-space-sm-6);
1000
1014
  --bh-social-button-radius: var(--bh-control-default);
1001
- --bh-social-facebook-bg: #1877F2;
1015
+ --bh-social-facebook-bg: #1465CE;
1002
1016
  --bh-social-facebook-border: transparent;
1003
1017
  --bh-social-facebook-fg: var(--bh-content-on-color);
1004
- --bh-social-facebook-hover: #1465CE;
1018
+ --bh-social-facebook-hover: #0F52A8;
1005
1019
  --bh-social-facebook-icon: var(--bh-content-on-color);
1006
1020
  --bh-social-facebook-outline-icon: var(--bh-social-facebook-bg);
1007
1021
  --bh-social-facebook-width: 210px;
@@ -1033,10 +1047,10 @@
1033
1047
  --bh-social-twitter-outline-icon: var(--bh-bg-always-dark);
1034
1048
  --bh-social-twitter-width: 190px;
1035
1049
  --bh-social-twitter-width-rtl: 231px;
1036
- --bh-social-whatsapp-bg: #09B248;
1050
+ --bh-social-whatsapp-bg: #087D34;
1037
1051
  --bh-social-whatsapp-border: transparent;
1038
1052
  --bh-social-whatsapp-fg: var(--bh-content-on-color);
1039
- --bh-social-whatsapp-hover: #08973D;
1053
+ --bh-social-whatsapp-hover: #066428;
1040
1054
  --bh-social-whatsapp-icon: var(--bh-content-on-color);
1041
1055
  --bh-social-whatsapp-outline-icon: var(--bh-social-whatsapp-bg);
1042
1056
  --bh-social-whatsapp-width: 214px;
@@ -1370,25 +1384,25 @@
1370
1384
  --shadow-checkbox-card-focus: var(--shadow-checkbox-card), var(--shadow-button-focus);
1371
1385
  --shadow-checkbox-control: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-checkbox-control-border, var(--bh-border-input)), var(--shadow-component-default);
1372
1386
  --shadow-checkbox-focus: var(--shadow-checkbox), var(--shadow-button-focus);
1373
- --shadow-component-danger-focus-ring: 0px 0px 0px var(--bh-focus-ring-width) color-mix(in srgb, var(--bh-border-focus-danger) 30%, transparent);
1374
- --shadow-component-danger-focus-stroke: 0px 0px 0px var(--bh-border-width-default) var(--bh-border-focus-danger), 0px 0px 0px calc(var(--bh-border-width-default) + var(--bh-focus-ring-width)) color-mix(in srgb, var(--bh-border-focus-danger) 30%, transparent);
1387
+ --shadow-component-danger-focus-ring: 0px 0px 0px var(--bh-focus-ring-width) var(--bh-border-focus-danger);
1388
+ --shadow-component-danger-focus-stroke: 0px 0px 0px var(--bh-border-width-default) var(--bh-bg-default), 0px 0px 0px calc(var(--bh-border-width-default) + var(--bh-focus-ring-width)) var(--bh-border-focus-danger);
1375
1389
  --shadow-component-default: 0px 1px 2px 0px rgb(15 17 20 / 0.05), inset 0px -1px 0px 0px rgb(0 0 0 / 0.08);
1376
- --shadow-component-focus-ring: 0px 0px 0px var(--bh-focus-ring-width) color-mix(in srgb, var(--bh-border-focus) 30%, transparent);
1377
- --shadow-component-focus-stroke: 0px 0px 0px var(--bh-border-width-default) var(--bh-border-focus), 0px 0px 0px calc(var(--bh-border-width-default) + var(--bh-focus-ring-width)) color-mix(in srgb, var(--bh-border-focus) 30%, transparent);
1390
+ --shadow-component-focus-ring: 0px 0px 0px var(--bh-focus-ring-width) var(--bh-border-focus);
1391
+ --shadow-component-focus-stroke: 0px 0px 0px var(--bh-border-width-default) var(--bh-bg-default), 0px 0px 0px calc(var(--bh-border-width-default) + var(--bh-focus-ring-width)) var(--bh-border-focus);
1378
1392
  --shadow-component-raised: inset 0px 1px 0px 0px rgb(255 255 255 / 0), inset 0px -1px 0px 0px rgb(0 0 0 / 0.08), 0px 1px 2px 0px rgb(15 17 20 / 0.05);
1379
1393
  --shadow-component-surface: inset 0px -1px 0px 0px rgb(0 0 0 / 0.08), 0px 1px 2px 0px rgb(15 17 20 / 0.05);
1380
1394
  --shadow-date-month-year-list: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-border-subtle);
1381
- --shadow-date-surface: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-date-surface-border, var(--bh-border-subtle)), var(--shadow-md);
1395
+ --shadow-date-surface: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-date-surface-border, var(--bh-border-subtle)), var(--shadow-lg);
1382
1396
  --shadow-date-time-input: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-border-input);
1383
1397
  --shadow-input: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-input-border, var(--bh-border-input)), var(--shadow-component-default);
1384
1398
  --shadow-input-focus-ring: var(--shadow-component-focus-stroke);
1385
- --shadow-lg: 0px 10px 15px -3px rgb(15 17 20 / 0.08), 0px 4px 6px -4px rgb(15 17 20 / 0.08);
1386
- --shadow-md: 0px 4px 6px -2px rgb(15 17 20 / 0.04), 0px 10px 16px -3px rgb(15 17 20 / 0.06);
1387
- --shadow-menu: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-menu-border), var(--shadow-component-default);
1399
+ --shadow-lg: 0px 10px 16px -3px rgb(15 17 20 / 0.06), 0px 4px 6px -2px rgb(15 17 20 / 0.04);
1400
+ --shadow-md: 0px 1.75px 4px -1px rgb(15 17 20 / 0.1);
1401
+ --shadow-menu: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-menu-border), var(--shadow-lg);
1388
1402
  --shadow-pagination-active: var(--shadow-button-raised);
1389
1403
  --shadow-pagination-control: var(--shadow-button-soft);
1390
1404
  --shadow-pagination-focus: var(--shadow-button-focus);
1391
- --shadow-popover: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-popover-border), var(--shadow-component-default);
1405
+ --shadow-popover: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-popover-border), var(--shadow-lg);
1392
1406
  --shadow-progress-slider-thumb-focus: var(--shadow-component-focus-ring);
1393
1407
  --shadow-radio-card: inset 0px 0px 0px var(--bh-radio-card-border-width, var(--bh-border-width-default)) var(--bh-radio-card-border, var(--bh-border-default)), var(--shadow-radio-card-surface);
1394
1408
  --shadow-radio-card-disabled: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-border-disabled);
@@ -1397,18 +1411,18 @@
1397
1411
  --shadow-select-checkbox: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-select-checkbox-border, var(--bh-border-input)), var(--shadow-component-default);
1398
1412
  --shadow-select-danger-focus-ring: var(--shadow-component-danger-focus-stroke);
1399
1413
  --shadow-select-focus-ring: var(--shadow-component-focus-stroke);
1400
- --shadow-select-menu: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-select-menu-border), var(--shadow-component-default);
1414
+ --shadow-select-menu: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-select-menu-border), var(--shadow-lg);
1401
1415
  --shadow-select-trigger: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-select-trigger-border-current, var(--bh-select-trigger-border)), var(--shadow-component-default);
1402
1416
  --shadow-sidebar: inset calc(var(--bh-border-width-default) * -1) 0px 0px 0px var(--bh-sidebar-border), var(--shadow-component-surface);
1403
- --shadow-slider-thumb: 0px 1.75px 4px -1px rgb(15 17 20 / 0.1);
1417
+ --shadow-slider-thumb: var(--shadow-md);
1404
1418
  --shadow-slider-thumb-focus: var(--shadow-slider-thumb), var(--shadow-component-focus-ring);
1405
- --shadow-slider-tooltip: var(--shadow-md);
1406
- --shadow-sm: 0px 1px 3px 0px rgb(15 17 20 / 0.08), 0px 1px 2px -1px rgb(15 17 20 / 0.08);
1419
+ --shadow-slider-tooltip: var(--shadow-lg);
1420
+ --shadow-sm: 0px 1px 3px 0px rgb(15 17 20 / 0.1);
1407
1421
  --shadow-social-button: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-social-button-border, transparent), var(--shadow-component-default);
1408
1422
  --shadow-social-button-focus: var(--shadow-social-button), var(--shadow-component-focus-ring);
1409
1423
  --shadow-social-button-focus-ring: var(--shadow-component-focus-ring);
1410
1424
  --shadow-textarea: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-textarea-border, var(--bh-border-input)), var(--shadow-component-default);
1411
- --shadow-xl: 0px 20px 25px -5px rgb(15 17 20 / 0.08), 0px 8px 10px -6px rgb(15 17 20 / 0.08);
1425
+ --shadow-xl: 0px 20px 25px -5px rgb(15 17 20 / 0.08), 0px 10px 10px -5px rgb(15 17 20 / 0.06);
1412
1426
  --shadow-xs: 0px 1px 2px 0px rgb(15 17 20 / 0.06);
1413
1427
  --soft: var(--bh-interactive-soft-default);
1414
1428
  --soft-hover: var(--bh-interactive-soft-hover);
@@ -1500,23 +1514,23 @@
1500
1514
  --bh-colors-brand-checkbox-bg-hover: var(--bh-amber-700);
1501
1515
  --bh-colors-brand-checkbox-bg-hover-dark: var(--bh-amber-700);
1502
1516
  --bh-colors-brand-content-dark: var(--bh-amber-500);
1503
- --bh-colors-brand-content-light: var(--bh-amber-600);
1517
+ --bh-colors-brand-content-light: var(--bh-amber-700);
1504
1518
  --bh-colors-brand-content-strong-dark: var(--bh-amber-400);
1505
- --bh-colors-brand-content-strong-light: var(--bh-amber-700);
1519
+ --bh-colors-brand-content-strong-light: var(--bh-amber-800);
1506
1520
  --bh-colors-brand-focused-dark: var(--bh-amber-300);
1507
- --bh-colors-brand-focused-light: var(--bh-amber-500);
1521
+ --bh-colors-brand-focused-light: var(--bh-amber-700);
1508
1522
  --bh-colors-brand-indicator: var(--bh-amber-600);
1509
1523
  --bh-colors-brand-indicator-dark: var(--bh-amber-600);
1510
- --bh-colors-brand-interactive-default: var(--bh-amber-600);
1511
- --bh-colors-brand-interactive-default-dark: var(--bh-amber-600);
1512
- --bh-colors-brand-interactive-hover: var(--bh-amber-700);
1513
- --bh-colors-brand-interactive-hover-dark: var(--bh-amber-700);
1514
- --bh-colors-brand-interactive-pressed: var(--bh-amber-600);
1515
- --bh-colors-brand-interactive-pressed-dark: var(--bh-amber-600);
1524
+ --bh-colors-brand-interactive-default: var(--bh-amber-700);
1525
+ --bh-colors-brand-interactive-default-dark: var(--bh-amber-700);
1526
+ --bh-colors-brand-interactive-hover: var(--bh-amber-800);
1527
+ --bh-colors-brand-interactive-hover-dark: var(--bh-amber-800);
1528
+ --bh-colors-brand-interactive-pressed: var(--bh-amber-800);
1529
+ --bh-colors-brand-interactive-pressed-dark: var(--bh-amber-800);
1516
1530
  --bh-colors-brand-link-dark: var(--bh-amber-500);
1517
1531
  --bh-colors-brand-link-hover-dark: var(--bh-amber-400);
1518
1532
  --bh-colors-brand-link-hover-light: var(--bh-amber-700);
1519
- --bh-colors-brand-link-light: var(--bh-amber-600);
1533
+ --bh-colors-brand-link-light: var(--bh-amber-700);
1520
1534
  --bh-colors-brand-radiobutton-bg-default: var(--bh-amber-600);
1521
1535
  --bh-colors-brand-radiobutton-bg-default-dark: var(--bh-amber-600);
1522
1536
  --bh-colors-brand-radiobutton-bg-hover: var(--bh-amber-700);
@@ -2068,6 +2082,7 @@
2068
2082
  --bh-bg-accent-aqua-default: var(--bh-aqua-500);
2069
2083
  --bh-bg-accent-aqua-soft: var(--bh-aqua-900);
2070
2084
  --bh-bg-accent-aqua-subtle: var(--bh-aqua-alpha10);
2085
+ --bh-bg-accent-blue-bold: var(--bh-blue-600);
2071
2086
  --bh-bg-accent-blue-default: var(--bh-blue-500);
2072
2087
  --bh-bg-accent-blue-soft: var(--bh-blue-900);
2073
2088
  --bh-bg-accent-blue-subtle: var(--bh-blue-alpha10);
@@ -2090,6 +2105,7 @@
2090
2105
  --bh-bg-accent-red-default: var(--bh-red-600);
2091
2106
  --bh-bg-accent-red-soft: var(--bh-red-900);
2092
2107
  --bh-bg-accent-red-subtle: var(--bh-red-alpha10);
2108
+ --bh-bg-accent-rose-bold: var(--bh-rose-600);
2093
2109
  --bh-bg-accent-rose-default: var(--bh-rose-500);
2094
2110
  --bh-bg-accent-rose-soft: var(--bh-rose-900);
2095
2111
  --bh-bg-accent-rose-subtle: var(--bh-rose-alpha10);
@@ -2236,10 +2252,13 @@
2236
2252
  --bh-content-inverse: var(--bh-colors-neutral-dark-50);
2237
2253
  --bh-content-link: var(--bh-colors-brand-link-dark);
2238
2254
  --bh-content-link-hover: var(--bh-colors-brand-link-hover-dark);
2239
- --bh-content-muted: var(--bh-colors-neutral-dark-700);
2255
+ --bh-content-muted: #808080;
2240
2256
  --bh-content-on-brand: var(--bh-colors-brand-color-on-brand-dark);
2241
2257
  --bh-content-on-color: var(--bh-base-white);
2242
2258
  --bh-content-on-light: var(--bh-colors-neutral-dark-50);
2259
+ --bh-content-on-neutral: var(--bh-colors-neutral-dark-50);
2260
+ --bh-content-on-success: var(--bh-colors-neutral-dark-50);
2261
+ --bh-content-on-warning: var(--bh-colors-neutral-dark-50);
2243
2262
  --bh-content-subtle: var(--bh-colors-neutral-dark-800);
2244
2263
  --bh-content-success-default: var(--bh-green-500);
2245
2264
  --bh-content-success-strong: var(--bh-green-300);
@@ -2302,6 +2321,9 @@
2302
2321
  --bh-interactive-soft-disabled: var(--bh-colors-neutral-alpha-dark-100);
2303
2322
  --bh-interactive-soft-hover: var(--bh-colors-neutral-alpha-dark-200);
2304
2323
  --bh-interactive-soft-pressed: var(--bh-colors-neutral-alpha-dark-300);
2324
+ --bh-interactive-success-default: var(--bh-green-400);
2325
+ --bh-interactive-success-hover: var(--bh-green-300);
2326
+ --bh-interactive-success-pressed: var(--bh-green-500);
2305
2327
  --bh-interactive-switch-active: var(--bh-green-500);
2306
2328
  --bh-interactive-switch-active-disabled: var(--bh-green-alpha25);
2307
2329
  --bh-interactive-switch-active-hover: var(--bh-green-600);
@@ -2311,6 +2333,9 @@
2311
2333
  --bh-interactive-switch-handle-disabled: var(--bh-colors-neutral-alpha-dark-300);
2312
2334
  --bh-interactive-switch-hover: var(--bh-colors-neutral-alpha-dark-500);
2313
2335
  --bh-interactive-table-header: var(--bh-colors-neutral-alpha-dark-50);
2336
+ --bh-interactive-warning-default: var(--bh-amber-400);
2337
+ --bh-interactive-warning-hover: var(--bh-amber-300);
2338
+ --bh-interactive-warning-pressed: var(--bh-amber-500);
2314
2339
  --bh-lime-400: #A4D10E;
2315
2340
  --bh-lime-500: #8EB903;
2316
2341
  --bh-lime-800: #4E6503;
@@ -2371,6 +2396,7 @@
2371
2396
  --bh-rose-200: #FFB9D7;
2372
2397
  --bh-rose-400: #FF4F9B;
2373
2398
  --bh-rose-500: #F01071;
2399
+ --bh-rose-600: #D10A60;
2374
2400
  --bh-rose-800: #810838;
2375
2401
  --bh-rose-900: #60082B;
2376
2402
  --bh-rose-alpha10: rgb(240 16 113 / 0.1);
@@ -2474,19 +2500,19 @@
2474
2500
  --shadow-button-surface: var(--shadow-component-surface);
2475
2501
  --shadow-checkbox-card: inset 0px 0px 0px var(--bh-checkbox-card-border-width, var(--bh-border-width-default)) var(--bh-checkbox-card-border, var(--bh-border-subtle)), var(--shadow-component-default);
2476
2502
  --shadow-checkbox-control: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-checkbox-control-border, var(--bh-border-input)), var(--shadow-component-default);
2477
- --shadow-component-danger-focus-ring: 0px 0px 0px var(--bh-focus-ring-width) color-mix(in srgb, var(--bh-border-focus-danger) 30%, transparent);
2478
- --shadow-component-danger-focus-stroke: 0px 0px 0px var(--bh-border-width-default) var(--bh-border-focus-danger), 0px 0px 0px calc(var(--bh-border-width-default) + var(--bh-focus-ring-width)) color-mix(in srgb, var(--bh-border-focus-danger) 30%, transparent);
2503
+ --shadow-component-danger-focus-ring: 0px 0px 0px var(--bh-focus-ring-width) var(--bh-border-focus-danger);
2504
+ --shadow-component-danger-focus-stroke: 0px 0px 0px var(--bh-border-width-default) var(--bh-bg-default), 0px 0px 0px calc(var(--bh-border-width-default) + var(--bh-focus-ring-width)) var(--bh-border-focus-danger);
2479
2505
  --shadow-component-default: 0px 1px 2px 0px rgb(0 0 0 / 0.36), inset 0px 1px 0px 0px rgb(255 255 255 / 0.05), inset 0px -1px 0px 0px rgb(0 0 0 / 0.28);
2480
- --shadow-component-focus-ring: 0px 0px 0px var(--bh-focus-ring-width) color-mix(in srgb, var(--bh-border-focus) 30%, transparent);
2481
- --shadow-component-focus-stroke: 0px 0px 0px var(--bh-border-width-default) var(--bh-border-focus), 0px 0px 0px calc(var(--bh-border-width-default) + var(--bh-focus-ring-width)) color-mix(in srgb, var(--bh-border-focus) 30%, transparent);
2506
+ --shadow-component-focus-ring: 0px 0px 0px var(--bh-focus-ring-width) var(--bh-border-focus);
2507
+ --shadow-component-focus-stroke: 0px 0px 0px var(--bh-border-width-default) var(--bh-bg-default), 0px 0px 0px calc(var(--bh-border-width-default) + var(--bh-focus-ring-width)) var(--bh-border-focus);
2482
2508
  --shadow-component-raised: inset 0px 1px 0px 0px rgb(255 255 255 / 0.05), inset 0px -1px 0px 0px rgb(0 0 0 / 0.32), 0px 1px 2px 0px rgb(0 0 0 / 0.32);
2483
2509
  --shadow-component-surface: inset 0px -1px 0px 0px rgb(0 0 0 / 0.32), 0px 1px 2px 0px rgb(0 0 0 / 0.32);
2484
- --shadow-date-surface: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-date-surface-border, var(--bh-border-subtle)), var(--shadow-md);
2510
+ --shadow-date-surface: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-date-surface-border, var(--bh-border-subtle)), var(--shadow-lg);
2485
2511
  --shadow-input: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-input-border, var(--bh-border-input)), var(--shadow-component-default);
2486
2512
  --shadow-input-focus-ring: var(--shadow-component-focus-stroke);
2487
- --shadow-lg: 0px 10px 15px -3px rgb(0 0 0 / 0.32), 0px 4px 6px -4px rgb(0 0 0 / 0.28);
2488
- --shadow-md: 0px 4px 6px -2px rgb(0 0 0 / 0.24), 0px 10px 16px -3px rgb(0 0 0 / 0.28);
2489
- --shadow-menu: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-menu-border), var(--shadow-component-default);
2513
+ --shadow-lg: 0px 10px 16px -3px rgb(15 17 20 / 0.06), 0px 4px 6px -2px rgb(15 17 20 / 0.04);
2514
+ --shadow-md: 0px 1.75px 4px -1px rgb(15 17 20 / 0.1);
2515
+ --shadow-menu: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-menu-border), var(--shadow-lg);
2490
2516
  --shadow-progress-slider-thumb-focus: var(--shadow-component-focus-ring);
2491
2517
  --shadow-radio-card: inset 0px 0px 0px var(--bh-radio-card-border-width, var(--bh-border-width-default)) var(--bh-radio-card-border, var(--bh-border-default)), var(--shadow-radio-card-surface);
2492
2518
  --shadow-radio-card-disabled: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-border-disabled);
@@ -2494,17 +2520,17 @@
2494
2520
  --shadow-select-checkbox: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-select-checkbox-border, var(--bh-border-input)), var(--shadow-component-default);
2495
2521
  --shadow-select-danger-focus-ring: var(--shadow-component-danger-focus-stroke);
2496
2522
  --shadow-select-focus-ring: var(--shadow-component-focus-stroke);
2497
- --shadow-select-menu: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-select-menu-border), var(--shadow-component-default);
2523
+ --shadow-select-menu: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-select-menu-border), var(--shadow-lg);
2498
2524
  --shadow-select-trigger: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-select-trigger-border-current, var(--bh-select-trigger-border)), var(--shadow-component-default);
2499
2525
  --shadow-slider-thumb-focus: var(--shadow-slider-thumb), var(--shadow-component-focus-ring);
2500
- --shadow-slider-tooltip: var(--shadow-md);
2501
- --shadow-sm: 0px 1px 3px 0px rgb(0 0 0 / 0.32), 0px 1px 2px -1px rgb(0 0 0 / 0.32);
2526
+ --shadow-slider-tooltip: var(--shadow-lg);
2527
+ --shadow-sm: 0px 1px 3px 0px rgb(15 17 20 / 0.1);
2502
2528
  --shadow-social-button: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-social-button-border, transparent), var(--shadow-component-default);
2503
2529
  --shadow-social-button-focus: var(--shadow-social-button), var(--shadow-component-focus-ring);
2504
2530
  --shadow-social-button-focus-ring: var(--shadow-component-focus-ring);
2505
2531
  --shadow-textarea: inset 0px 0px 0px var(--bh-border-width-default) var(--bh-textarea-border, var(--bh-border-input)), var(--shadow-component-default);
2506
- --shadow-xl: 0px 20px 25px -5px rgb(0 0 0 / 0.36), 0px 8px 10px -6px rgb(0 0 0 / 0.32);
2507
- --shadow-xs: 0px 1px 2px 0px rgb(0 0 0 / 0.36);
2532
+ --shadow-xl: 0px 20px 25px -5px rgb(15 17 20 / 0.08), 0px 10px 10px -5px rgb(15 17 20 / 0.06);
2533
+ --shadow-xs: 0px 1px 2px 0px rgb(15 17 20 / 0.06);
2508
2534
  --soft: var(--bh-interactive-soft-default);
2509
2535
  --soft-hover: var(--bh-interactive-soft-hover);
2510
2536
  --soft-pressed: var(--bh-interactive-soft-pressed);
package/registry.json CHANGED
@@ -640,6 +640,11 @@
640
640
  "lucide-react@^1.17.0"
641
641
  ],
642
642
  "files": [
643
+ {
644
+ "path": "registry/components/pagination.css",
645
+ "type": "registry:style",
646
+ "target": "@ui/pagination.css"
647
+ },
643
648
  {
644
649
  "path": "registry/components/pagination.tsx",
645
650
  "type": "registry:component",
@@ -1226,6 +1231,29 @@
1226
1231
  }
1227
1232
  ]
1228
1233
  },
1234
+ {
1235
+ "name": "activity-heatmap",
1236
+ "type": "registry:block",
1237
+ "title": "Activity Heatmap",
1238
+ "description": "Token-only calendar activity heatmap with seven-day columns, five semantic intensity levels, responsive horizontal overflow, cell labels, and RTL support.",
1239
+ "author": "Ahmad Galal",
1240
+ "registryDependencies": [
1241
+ "base"
1242
+ ],
1243
+ "dependencies": [],
1244
+ "files": [
1245
+ {
1246
+ "path": "registry/components/expanded/activityHeatmap.css",
1247
+ "type": "registry:style",
1248
+ "target": "@ui/expanded/activityHeatmap.css"
1249
+ },
1250
+ {
1251
+ "path": "registry/components/expanded/ActivityHeatmap.tsx",
1252
+ "type": "registry:component",
1253
+ "target": "@ui/expanded/ActivityHeatmap.tsx"
1254
+ }
1255
+ ]
1256
+ },
1229
1257
  {
1230
1258
  "name": "alert",
1231
1259
  "type": "registry:component",
@@ -1233,7 +1261,8 @@
1233
1261
  "description": "Contextual feedback primitive with danger, success, warning, info, neutral, compact, expandable, action, close, and RTL variants.",
1234
1262
  "author": "Ahmad Galal",
1235
1263
  "registryDependencies": [
1236
- "base"
1264
+ "base",
1265
+ "button"
1237
1266
  ],
1238
1267
  "dependencies": [
1239
1268
  "class-variance-authority@^0.7.1",
@@ -1397,6 +1426,11 @@
1397
1426
  "path": "registry/components/expanded/Table.tsx",
1398
1427
  "type": "registry:component",
1399
1428
  "target": "@ui/expanded/Table.tsx"
1429
+ },
1430
+ {
1431
+ "path": "registry/components/table-elements.tsx",
1432
+ "type": "registry:component",
1433
+ "target": "@ui/table-elements.tsx"
1400
1434
  }
1401
1435
  ]
1402
1436
  },
@@ -1459,6 +1493,8 @@
1459
1493
  "author": "Ahmad Galal",
1460
1494
  "registryDependencies": [
1461
1495
  "base",
1496
+ "breadcrumbs",
1497
+ "button",
1462
1498
  "tabs"
1463
1499
  ],
1464
1500
  "dependencies": [
@@ -1481,10 +1517,11 @@
1481
1517
  "name": "slideout",
1482
1518
  "type": "registry:block",
1483
1519
  "title": "Slideout",
1484
- "description": "Expanded slideout panel with desktop and mobile breakpoints, header and footer actions, slotted content, and RTL coverage.",
1520
+ "description": "Expanded presentational slideout panel with desktop and mobile breakpoints, header and footer actions, slotted content, and RTL coverage. Use Sheet or Modal when overlay behavior is required.",
1485
1521
  "author": "Ahmad Galal",
1486
1522
  "registryDependencies": [
1487
- "base"
1523
+ "base",
1524
+ "button"
1488
1525
  ],
1489
1526
  "dependencies": [
1490
1527
  "lucide-react@^1.17.0"