@brokr/sdk 2.0.0 → 2.1.1

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 (77) hide show
  1. package/dist/feature.js +22 -2
  2. package/dist/feature.mjs +22 -2
  3. package/dist/index.js +22 -2
  4. package/dist/index.mjs +22 -2
  5. package/dist/next.js +22 -2
  6. package/dist/next.mjs +22 -2
  7. package/dist/react-notifications.js +63 -50
  8. package/dist/react-notifications.mjs +63 -50
  9. package/dist/react-styles.js +386 -169
  10. package/dist/react-styles.mjs +386 -169
  11. package/dist/react-theme.js +6 -4
  12. package/dist/react-theme.mjs +6 -4
  13. package/dist/react.js +644 -317
  14. package/dist/react.mjs +682 -355
  15. package/dist/runtime.js +22 -2
  16. package/dist/runtime.mjs +22 -2
  17. package/dist/src/chat/config.d.ts +2 -0
  18. package/dist/src/chat/config.d.ts.map +1 -1
  19. package/dist/src/gateway.d.ts.map +1 -1
  20. package/dist/src/models.d.ts +2 -0
  21. package/dist/src/models.d.ts.map +1 -1
  22. package/dist/src/react/account/AccountPanel.d.ts.map +1 -1
  23. package/dist/src/react/account/UserButton.d.ts.map +1 -1
  24. package/dist/src/react/chat/AIChat.d.ts.map +1 -1
  25. package/dist/src/react/chat/ChatContext.d.ts +3 -6
  26. package/dist/src/react/chat/ChatContext.d.ts.map +1 -1
  27. package/dist/src/react/chat/ChatInput.d.ts.map +1 -1
  28. package/dist/src/react/chat/MarkdownRenderer.d.ts.map +1 -1
  29. package/dist/src/react/chat/MessagePane.d.ts.map +1 -1
  30. package/dist/src/react/chat/ModelSelector.d.ts +1 -1
  31. package/dist/src/react/chat/ModelSelector.d.ts.map +1 -1
  32. package/dist/src/react/chat/ThreadSidebar.d.ts.map +1 -1
  33. package/dist/src/react/chat/memory.d.ts +12 -0
  34. package/dist/src/react/chat/memory.d.ts.map +1 -0
  35. package/dist/src/react/chat/types.d.ts +6 -0
  36. package/dist/src/react/chat/types.d.ts.map +1 -1
  37. package/dist/src/react/chat/useChat.d.ts +8 -6
  38. package/dist/src/react/chat/useChat.d.ts.map +1 -1
  39. package/dist/src/react/composites/FabAI.d.ts +6 -1
  40. package/dist/src/react/composites/FabAI.d.ts.map +1 -1
  41. package/dist/src/react/composites/fab-context.d.ts +26 -0
  42. package/dist/src/react/composites/fab-context.d.ts.map +1 -0
  43. package/dist/src/react/css/account.d.ts +1 -1
  44. package/dist/src/react/css/account.d.ts.map +1 -1
  45. package/dist/src/react/css/auth.d.ts +1 -1
  46. package/dist/src/react/css/auth.d.ts.map +1 -1
  47. package/dist/src/react/css/chat-extras.d.ts +1 -1
  48. package/dist/src/react/css/chat-extras.d.ts.map +1 -1
  49. package/dist/src/react/css/chat.d.ts +1 -1
  50. package/dist/src/react/css/chat.d.ts.map +1 -1
  51. package/dist/src/react/css/composites.d.ts +1 -1
  52. package/dist/src/react/css/composites.d.ts.map +1 -1
  53. package/dist/src/react/css/gates.d.ts +1 -1
  54. package/dist/src/react/css/gates.d.ts.map +1 -1
  55. package/dist/src/react/css/markdown.d.ts +1 -1
  56. package/dist/src/react/css/markdown.d.ts.map +1 -1
  57. package/dist/src/react/css/notifications.d.ts +1 -1
  58. package/dist/src/react/css/notifications.d.ts.map +1 -1
  59. package/dist/src/react/css/primitives.d.ts +1 -1
  60. package/dist/src/react/css/primitives.d.ts.map +1 -1
  61. package/dist/src/react/css/reset.d.ts +1 -1
  62. package/dist/src/react/css/reset.d.ts.map +1 -1
  63. package/dist/src/react/css/responsive.d.ts +1 -1
  64. package/dist/src/react/css/responsive.d.ts.map +1 -1
  65. package/dist/src/react/css/skeleton.d.ts +1 -1
  66. package/dist/src/react/css/skeleton.d.ts.map +1 -1
  67. package/dist/src/react/css/tokens.d.ts +1 -1
  68. package/dist/src/react/css/tokens.d.ts.map +1 -1
  69. package/dist/src/react/notifications/NotificationBell.d.ts.map +1 -1
  70. package/dist/src/react/notifications/NotificationList.d.ts.map +1 -1
  71. package/dist/src/react/notifications/Toast.d.ts.map +1 -1
  72. package/dist/src/react/payments/Plans.d.ts.map +1 -1
  73. package/dist/src/react/theme.d.ts.map +1 -1
  74. package/dist/src/react/types.d.ts +4 -4
  75. package/dist/src/react/types.d.ts.map +1 -1
  76. package/dist/tsconfig.tsbuildinfo +1 -1
  77. package/package.json +1 -1
@@ -61,6 +61,44 @@ var TOKENS_CSS = `
61
61
  --brokr-font-size-lg: 1.125rem;
62
62
  --brokr-font-size-xl: 1.5rem;
63
63
  --brokr-font-size-2xl: clamp(2rem, 4vw, 3.5rem);
64
+
65
+ /* Z-index stacking order */
66
+ --brokr-z-chat-float: 4;
67
+ --brokr-z-drawer-backdrop: 49;
68
+ --brokr-z-drawer: 50;
69
+ --brokr-z-popover: 60;
70
+ --brokr-z-fab: 70;
71
+ --brokr-z-panel: 80;
72
+ --brokr-z-modal-backdrop: 90;
73
+ --brokr-z-dropdown: 95;
74
+ --brokr-z-notification: 9999;
75
+ --brokr-z-toast: 99999;
76
+
77
+ /* Transition durations */
78
+ --brokr-duration-fast: 100ms;
79
+ --brokr-duration-base: 150ms;
80
+ --brokr-duration-slow: 300ms;
81
+ --brokr-ease: ease;
82
+
83
+ /* Font weights */
84
+ --brokr-font-weight-normal: 400;
85
+ --brokr-font-weight-medium: 500;
86
+ --brokr-font-weight-semibold: 600;
87
+ --brokr-font-weight-bold: 700;
88
+
89
+ /* Line heights */
90
+ --brokr-leading-tight: 1.25;
91
+ --brokr-leading-snug: 1.4;
92
+ --brokr-leading-normal: 1.6;
93
+ --brokr-leading-relaxed: 1.7;
94
+
95
+ /* Font families */
96
+ --brokr-font-mono: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, monospace;
97
+
98
+ /* Additional radii */
99
+ --brokr-radius-pill: 999px;
100
+ --brokr-radius-sm: 4px;
101
+
64
102
  color: var(--brokr-text-primary);
65
103
  }
66
104
  `;
@@ -82,7 +120,7 @@ var RESET_CSS = `
82
120
  .brokr-root *::-webkit-scrollbar-thumb {
83
121
  background: color-mix(in srgb, var(--brokr-text-primary) 16%, transparent);
84
122
  border: 3px solid transparent;
85
- border-radius: 999px;
123
+ border-radius: var(--brokr-radius-pill);
86
124
  background-clip: padding-box;
87
125
  }
88
126
 
@@ -120,11 +158,11 @@ var PRIMITIVES_CSS = `
120
158
  gap: var(--brokr-space-2);
121
159
  font: inherit;
122
160
  font-size: var(--brokr-font-size-sm);
123
- font-weight: 600;
161
+ font-weight: var(--brokr-font-weight-semibold);
124
162
  min-height: 44px;
125
163
  padding: 0 var(--brokr-space-4);
126
164
  text-decoration: none;
127
- transition: background-color 150ms ease, border-color 150ms ease, transform 150ms ease, opacity 150ms ease;
165
+ transition: background-color var(--brokr-duration-base) var(--brokr-ease), border-color var(--brokr-duration-base) var(--brokr-ease), transform var(--brokr-duration-base) var(--brokr-ease), opacity var(--brokr-duration-base) var(--brokr-ease);
128
166
  }
129
167
 
130
168
  .brokr-button:hover,
@@ -171,7 +209,7 @@ var PRIMITIVES_CSS = `
171
209
  font-size: var(--brokr-font-size-sm);
172
210
  min-height: 44px;
173
211
  padding: 0.825rem 0.95rem;
174
- transition: border-color 150ms ease, background-color 150ms ease;
212
+ transition: border-color var(--brokr-duration-base) var(--brokr-ease), background-color var(--brokr-duration-base) var(--brokr-ease);
175
213
  }
176
214
 
177
215
  .brokr-input::placeholder,
@@ -200,7 +238,7 @@ var PRIMITIVES_CSS = `
200
238
  color: var(--brokr-text-secondary);
201
239
  display: block;
202
240
  font-size: var(--brokr-font-size-xs);
203
- font-weight: 600;
241
+ font-weight: var(--brokr-font-weight-semibold);
204
242
  letter-spacing: 0.02em;
205
243
  margin-bottom: var(--brokr-space-2);
206
244
  text-transform: uppercase;
@@ -209,7 +247,7 @@ var PRIMITIVES_CSS = `
209
247
  .brokr-title {
210
248
  color: var(--brokr-text-primary);
211
249
  font-size: var(--brokr-font-size-xl);
212
- font-weight: 700;
250
+ font-weight: var(--brokr-font-weight-bold);
213
251
  letter-spacing: -0.03em;
214
252
  margin: 0;
215
253
  }
@@ -217,7 +255,7 @@ var PRIMITIVES_CSS = `
217
255
  .brokr-heading {
218
256
  color: var(--brokr-text-primary);
219
257
  font-size: var(--brokr-font-size-2xl);
220
- font-weight: 700;
258
+ font-weight: var(--brokr-font-weight-bold);
221
259
  letter-spacing: -0.04em;
222
260
  line-height: 1;
223
261
  margin: 0;
@@ -244,11 +282,11 @@ var PRIMITIVES_CSS = `
244
282
  .brokr-badge {
245
283
  align-items: center;
246
284
  border: 1px solid var(--brokr-muted-border);
247
- border-radius: 999px;
285
+ border-radius: var(--brokr-radius-pill);
248
286
  color: var(--brokr-text-secondary);
249
287
  display: inline-flex;
250
288
  font-size: var(--brokr-font-size-xs);
251
- font-weight: 700;
289
+ font-weight: var(--brokr-font-weight-bold);
252
290
  gap: var(--brokr-space-1);
253
291
  letter-spacing: 0.06em;
254
292
  min-height: 28px;
@@ -340,7 +378,7 @@ var AUTH_CSS = `
340
378
  }
341
379
 
342
380
  .brokr-brand-logo {
343
- border-radius: 14px;
381
+ border-radius: calc(var(--brokr-radius-card) + 6px);
344
382
  display: block;
345
383
  height: 40px;
346
384
  object-fit: contain;
@@ -350,7 +388,7 @@ var AUTH_CSS = `
350
388
  .brokr-brand-name {
351
389
  color: var(--brokr-text-primary);
352
390
  font-size: var(--brokr-font-size-sm);
353
- font-weight: 700;
391
+ font-weight: var(--brokr-font-weight-bold);
354
392
  letter-spacing: 0.08em;
355
393
  text-transform: uppercase;
356
394
  }
@@ -413,7 +451,7 @@ var ACCOUNT_CSS = `
413
451
  }
414
452
 
415
453
  .brokr-account-trigger[data-display="avatar"] {
416
- border-radius: 999px;
454
+ border-radius: var(--brokr-radius-pill);
417
455
  gap: 0;
418
456
  justify-content: center;
419
457
  min-width: 44px;
@@ -424,10 +462,10 @@ var ACCOUNT_CSS = `
424
462
  .brokr-avatar-lg {
425
463
  align-items: center;
426
464
  background: var(--brokr-subtle-fill-strong);
427
- border-radius: 999px;
465
+ border-radius: var(--brokr-radius-pill);
428
466
  color: var(--brokr-text-primary);
429
467
  display: inline-flex;
430
- font-weight: 700;
468
+ font-weight: var(--brokr-font-weight-bold);
431
469
  justify-content: center;
432
470
  overflow: hidden;
433
471
  }
@@ -454,7 +492,7 @@ var ACCOUNT_CSS = `
454
492
  right: 0;
455
493
  top: calc(100% + 2px);
456
494
  width: min(92vw, 320px);
457
- z-index: 60;
495
+ z-index: var(--brokr-z-popover);
458
496
  }
459
497
 
460
498
  .brokr-popover[data-align="start"] {
@@ -514,7 +552,7 @@ var ACCOUNT_CSS = `
514
552
  inset: 0;
515
553
  opacity: 0;
516
554
  position: absolute;
517
- transition: opacity 150ms ease;
555
+ transition: opacity var(--brokr-duration-base) var(--brokr-ease);
518
556
  }
519
557
 
520
558
  .brokr-profile-photo:hover .brokr-profile-photo-overlay,
@@ -556,7 +594,7 @@ var ACCOUNT_CSS = `
556
594
  .brokr-account-sidebar-kicker {
557
595
  color: var(--brokr-text-secondary);
558
596
  font-size: 0.68rem;
559
- font-weight: 700;
597
+ font-weight: var(--brokr-font-weight-bold);
560
598
  letter-spacing: 0.12em;
561
599
  line-height: 1;
562
600
  opacity: 0.8;
@@ -581,7 +619,7 @@ var ACCOUNT_CSS = `
581
619
  display: inline-flex;
582
620
  font: inherit;
583
621
  font-size: var(--brokr-font-size-sm);
584
- font-weight: 600;
622
+ font-weight: var(--brokr-font-weight-semibold);
585
623
  gap: 0.7rem;
586
624
  justify-content: flex-start;
587
625
  line-height: 1;
@@ -726,11 +764,11 @@ var ACCOUNT_CSS = `
726
764
  align-items: center;
727
765
  background: color-mix(in srgb, var(--brokr-text-primary) 6%, transparent);
728
766
  border: 1px solid var(--brokr-muted-border);
729
- border-radius: 999px;
767
+ border-radius: var(--brokr-radius-pill);
730
768
  color: var(--brokr-text-secondary);
731
769
  display: inline-flex;
732
770
  font-size: 0.75rem;
733
- font-weight: 600;
771
+ font-weight: var(--brokr-font-weight-semibold);
734
772
  gap: 0.35rem;
735
773
  min-height: 28px;
736
774
  padding: 0 0.7rem;
@@ -763,14 +801,14 @@ var ACCOUNT_CSS = `
763
801
  .brokr-account-summary-copy strong {
764
802
  color: var(--brokr-text-primary);
765
803
  font-size: 1.05rem;
766
- font-weight: 600;
804
+ font-weight: var(--brokr-font-weight-semibold);
767
805
  letter-spacing: -0.02em;
768
806
  }
769
807
 
770
808
  .brokr-account-summary-kicker {
771
809
  color: var(--brokr-text-secondary);
772
810
  font-size: 0.72rem;
773
- font-weight: 700;
811
+ font-weight: var(--brokr-font-weight-bold);
774
812
  letter-spacing: 0.12em;
775
813
  text-transform: uppercase;
776
814
  }
@@ -779,7 +817,7 @@ var ACCOUNT_CSS = `
779
817
  align-items: center;
780
818
  background: color-mix(in srgb, var(--brokr-text-primary) 6%, transparent);
781
819
  border: 1px solid var(--brokr-muted-border);
782
- border-radius: 10px;
820
+ border-radius: calc(var(--brokr-radius-card) + 2px);
783
821
  color: var(--brokr-text-secondary);
784
822
  display: inline-flex;
785
823
  height: 40px;
@@ -816,7 +854,7 @@ var ACCOUNT_CSS = `
816
854
  .brokr-account-session-info strong {
817
855
  color: var(--brokr-text-primary);
818
856
  font-size: var(--brokr-font-size-sm);
819
- font-weight: 600;
857
+ font-weight: var(--brokr-font-weight-semibold);
820
858
  }
821
859
 
822
860
  .brokr-account-session-detail,
@@ -839,11 +877,11 @@ var ACCOUNT_CSS = `
839
877
  cursor: pointer;
840
878
  font: inherit;
841
879
  font-size: 0.8125rem;
842
- font-weight: 600;
880
+ font-weight: var(--brokr-font-weight-semibold);
843
881
  min-height: 34px;
844
882
  padding: 0 0.7rem;
845
883
  text-decoration: none;
846
- transition: color 120ms ease, background-color 120ms ease, border-color 120ms ease;
884
+ transition: color var(--brokr-duration-base) var(--brokr-ease), background-color var(--brokr-duration-base) var(--brokr-ease), border-color var(--brokr-duration-base) var(--brokr-ease);
847
885
  }
848
886
 
849
887
  .brokr-account-link-button:hover {
@@ -904,7 +942,7 @@ var ACCOUNT_CSS = `
904
942
  .brokr-account-menu-copy strong {
905
943
  color: var(--brokr-text-primary);
906
944
  font-size: 0.95rem;
907
- font-weight: 600;
945
+ font-weight: var(--brokr-font-weight-semibold);
908
946
  overflow: hidden;
909
947
  text-overflow: ellipsis;
910
948
  white-space: nowrap;
@@ -936,7 +974,7 @@ var ACCOUNT_CSS = `
936
974
  display: inline-flex;
937
975
  font: inherit;
938
976
  font-size: var(--brokr-font-size-sm);
939
- font-weight: 600;
977
+ font-weight: var(--brokr-font-weight-semibold);
940
978
  gap: 0.65rem;
941
979
  justify-content: flex-start;
942
980
  min-height: 38px;
@@ -969,7 +1007,7 @@ var ACCOUNT_CSS = `
969
1007
  inset: 0;
970
1008
  padding: var(--brokr-space-6);
971
1009
  position: fixed;
972
- z-index: 90;
1010
+ z-index: var(--brokr-z-modal-backdrop);
973
1011
  }
974
1012
 
975
1013
  .brokr-modal-dialog {
@@ -1029,91 +1067,165 @@ var CHAT_CSS = `
1029
1067
  }
1030
1068
 
1031
1069
  .brokr-ai-chat-sidebar {
1070
+ align-content: start;
1071
+ background: transparent;
1032
1072
  border-right: 1px solid var(--brokr-muted-border);
1033
1073
  display: grid;
1034
- gap: var(--brokr-space-4);
1035
- padding: var(--brokr-space-4);
1036
- align-content: start;
1037
- overflow-y: auto;
1074
+ gap: var(--brokr-space-3);
1038
1075
  height: 100%;
1039
1076
  max-height: 100%;
1040
1077
  min-height: 0;
1078
+ overflow-y: auto;
1079
+ padding: var(--brokr-space-3);
1080
+ }
1081
+
1082
+ .brokr-ai-chat-sidebar-skeleton {
1083
+ display: grid;
1084
+ gap: var(--brokr-space-2);
1085
+ padding: 0 var(--brokr-space-3);
1086
+ }
1087
+
1088
+ .brokr-ai-chat-sidebar-new-chat {
1089
+ align-items: center;
1090
+ appearance: none;
1091
+ background: transparent;
1092
+ border: 1px solid var(--brokr-muted-border);
1093
+ border-radius: var(--brokr-radius-button);
1094
+ color: var(--brokr-text-secondary);
1095
+ cursor: pointer;
1096
+ display: inline-flex;
1097
+ font: inherit;
1098
+ font-size: var(--brokr-font-size-sm);
1099
+ font-weight: var(--brokr-font-weight-medium);
1100
+ gap: var(--brokr-space-2);
1101
+ justify-content: flex-start;
1102
+ min-height: 44px;
1103
+ padding: 0 var(--brokr-space-3);
1104
+ text-align: left;
1105
+ transition:
1106
+ background-color var(--brokr-duration-base) var(--brokr-ease),
1107
+ color var(--brokr-duration-base) var(--brokr-ease),
1108
+ border-color var(--brokr-duration-base) var(--brokr-ease);
1109
+ width: 100%;
1110
+ }
1111
+
1112
+ .brokr-ai-chat-sidebar-new-chat:hover {
1113
+ background: var(--brokr-subtle-fill);
1114
+ border-color: color-mix(in srgb, var(--brokr-text-primary) 15%, var(--brokr-border));
1115
+ color: var(--brokr-text-primary);
1116
+ }
1117
+
1118
+ .brokr-ai-chat-sidebar-groups {
1119
+ display: grid;
1120
+ gap: var(--brokr-space-4);
1121
+ }
1122
+
1123
+ .brokr-ai-chat-sidebar-group {
1124
+ display: grid;
1125
+ gap: var(--brokr-space-2);
1126
+ }
1127
+
1128
+ .brokr-ai-chat-sidebar-kicker {
1129
+ color: var(--brokr-text-secondary);
1130
+ font-size: var(--brokr-font-size-xs);
1131
+ font-weight: var(--brokr-font-weight-semibold);
1132
+ opacity: 0.7;
1133
+ padding: 0 var(--brokr-space-3);
1134
+ text-transform: uppercase;
1041
1135
  }
1042
1136
 
1043
1137
  .brokr-ai-chat-sidebar-empty {
1138
+ align-items: center;
1139
+ border: 1px solid var(--brokr-muted-border);
1140
+ border-radius: var(--brokr-radius-card);
1044
1141
  display: flex;
1045
1142
  flex: 1;
1046
- align-items: center;
1047
1143
  justify-content: center;
1048
- padding: var(--brokr-space-6) var(--brokr-space-4);
1144
+ padding: var(--brokr-space-5) var(--brokr-space-4);
1049
1145
  }
1050
1146
 
1051
1147
  .brokr-ai-chat-sidebar-empty-text {
1052
1148
  color: var(--brokr-text-secondary);
1053
1149
  font-size: var(--brokr-font-size-xs);
1054
- line-height: 1.5;
1150
+ line-height: var(--brokr-leading-normal);
1055
1151
  text-align: center;
1056
1152
  opacity: 0.6;
1057
1153
  }
1058
1154
 
1059
1155
  .brokr-ai-chat-sidebar-button {
1060
1156
  align-items: center;
1061
- background: transparent;
1062
- border: none;
1157
+ appearance: none;
1158
+ background: var(--brokr-subtle-fill);
1159
+ border: 1px solid var(--brokr-muted-border);
1063
1160
  border-radius: var(--brokr-radius-button);
1064
1161
  color: var(--brokr-text-secondary);
1065
1162
  cursor: pointer;
1066
1163
  display: inline-flex;
1067
1164
  font: inherit;
1068
1165
  font-size: var(--brokr-font-size-xs);
1069
- font-weight: 500;
1166
+ font-weight: var(--brokr-font-weight-medium);
1070
1167
  gap: var(--brokr-space-2);
1071
- justify-content: flex-start;
1072
- padding: 0.5rem 0.65rem;
1073
- padding-bottom: 0.65rem;
1074
- margin-bottom: var(--brokr-space-2);
1075
- border-bottom: 1px solid var(--brokr-muted-border);
1076
- border-radius: 0;
1077
- transition: color 120ms ease;
1078
- width: 100%;
1168
+ justify-content: center;
1169
+ min-height: 36px;
1170
+ padding: 0 var(--brokr-space-3);
1171
+ transition:
1172
+ color var(--brokr-duration-base) var(--brokr-ease),
1173
+ background-color var(--brokr-duration-base) var(--brokr-ease);
1079
1174
  }
1080
1175
 
1081
1176
  .brokr-ai-chat-sidebar-button:hover {
1177
+ background: var(--brokr-subtle-fill-strong);
1082
1178
  color: var(--brokr-text-primary);
1083
1179
  }
1084
1180
 
1085
1181
  .brokr-ai-chat-conversations {
1086
1182
  display: grid;
1087
- gap: 2px;
1183
+ gap: var(--brokr-space-1);
1088
1184
  }
1089
1185
 
1090
1186
  .brokr-ai-chat-conversation {
1091
1187
  appearance: none;
1188
+ align-items: center;
1092
1189
  background: transparent;
1093
- border: none;
1190
+ border: 1px solid transparent;
1094
1191
  border-radius: var(--brokr-radius-button);
1095
1192
  color: var(--brokr-text-secondary);
1096
1193
  cursor: pointer;
1194
+ display: inline-flex;
1097
1195
  font: inherit;
1098
1196
  font-size: var(--brokr-font-size-xs);
1099
- font-weight: 400;
1197
+ font-weight: var(--brokr-font-weight-medium);
1198
+ gap: var(--brokr-space-2);
1199
+ min-height: calc(var(--brokr-space-8) + var(--brokr-space-1));
1100
1200
  overflow: hidden;
1101
- padding: 0.5rem 0.65rem;
1201
+ padding: 0 var(--brokr-space-3);
1102
1202
  text-align: left;
1103
- text-overflow: ellipsis;
1104
- transition: color 120ms ease, background 120ms ease;
1105
- white-space: nowrap;
1203
+ transition:
1204
+ color var(--brokr-duration-base) var(--brokr-ease),
1205
+ background-color var(--brokr-duration-base) var(--brokr-ease),
1206
+ border-color var(--brokr-duration-base) var(--brokr-ease);
1207
+ width: 100%;
1106
1208
  }
1107
1209
 
1108
1210
  .brokr-ai-chat-conversation:hover {
1211
+ border-color: color-mix(in srgb, var(--brokr-text-primary) 9%, transparent);
1109
1212
  color: var(--brokr-text-primary);
1110
1213
  background: var(--brokr-subtle-fill);
1111
1214
  }
1112
1215
 
1113
1216
  .brokr-ai-chat-conversation[data-active="true"] {
1217
+ border-color: color-mix(in srgb, var(--brokr-text-primary) 12%, transparent);
1114
1218
  color: var(--brokr-text-primary);
1115
- background: var(--brokr-subtle-fill);
1116
- font-weight: 500;
1219
+ background: var(--brokr-subtle-fill-strong);
1220
+ font-weight: var(--brokr-font-weight-semibold);
1221
+ }
1222
+
1223
+ .brokr-ai-chat-conversation-label {
1224
+ flex: 1;
1225
+ line-height: var(--brokr-leading-snug);
1226
+ overflow: hidden;
1227
+ text-overflow: ellipsis;
1228
+ white-space: nowrap;
1117
1229
  }
1118
1230
 
1119
1231
  .brokr-ai-chat-stage {
@@ -1139,7 +1251,7 @@ var CHAT_CSS = `
1139
1251
  position: absolute;
1140
1252
  right: 0;
1141
1253
  top: 0;
1142
- z-index: 4;
1254
+ z-index: var(--brokr-z-chat-float);
1143
1255
  }
1144
1256
 
1145
1257
  .brokr-ai-chat-topbar > * {
@@ -1165,7 +1277,7 @@ var CHAT_CSS = `
1165
1277
  .brokr-ai-chat-title-loading span {
1166
1278
  animation: brokrTypingBounce 1.2s ease-in-out infinite;
1167
1279
  background: color-mix(in srgb, var(--brokr-text-primary) 50%, transparent);
1168
- border-radius: 999px;
1280
+ border-radius: var(--brokr-radius-pill);
1169
1281
  display: inline-block;
1170
1282
  height: 0.28rem;
1171
1283
  width: 0.28rem;
@@ -1321,7 +1433,7 @@ var CHAT_CSS = `
1321
1433
  padding: var(--brokr-space-4) 0 var(--brokr-space-5);
1322
1434
  position: absolute;
1323
1435
  right: 0;
1324
- z-index: 4;
1436
+ z-index: var(--brokr-z-chat-float);
1325
1437
  }
1326
1438
 
1327
1439
  .brokr-ai-chat-textarea {
@@ -1374,7 +1486,7 @@ var CHAT_CSS = `
1374
1486
  .brokr-ai-chat-typing span {
1375
1487
  animation: brokrTypingBounce 1.2s ease-in-out infinite;
1376
1488
  background: color-mix(in srgb, var(--brokr-text-primary) 70%, transparent);
1377
- border-radius: 999px;
1489
+ border-radius: var(--brokr-radius-pill);
1378
1490
  display: inline-block;
1379
1491
  height: 0.42rem;
1380
1492
  width: 0.42rem;
@@ -1409,11 +1521,11 @@ var CHAT_EXTRAS_CSS = `
1409
1521
  display: inline-flex;
1410
1522
  font: inherit;
1411
1523
  font-size: var(--brokr-font-size-sm);
1412
- font-weight: 600;
1524
+ font-weight: var(--brokr-font-weight-semibold);
1413
1525
  gap: var(--brokr-space-2);
1414
1526
  min-height: 36px;
1415
1527
  padding: 0 0.75rem;
1416
- transition: background-color 120ms ease;
1528
+ transition: background-color var(--brokr-duration-base) var(--brokr-ease);
1417
1529
  white-space: nowrap;
1418
1530
  }
1419
1531
 
@@ -1435,7 +1547,7 @@ var CHAT_EXTRAS_CSS = `
1435
1547
  position: absolute;
1436
1548
  right: 0;
1437
1549
  top: calc(100% + 6px);
1438
- z-index: 100;
1550
+ z-index: var(--brokr-z-dropdown);
1439
1551
  }
1440
1552
 
1441
1553
  .brokr-model-option {
@@ -1452,7 +1564,7 @@ var CHAT_EXTRAS_CSS = `
1452
1564
  gap: var(--brokr-space-2);
1453
1565
  padding: 0.5rem 0.75rem;
1454
1566
  text-align: left;
1455
- transition: background-color 100ms ease;
1567
+ transition: background-color var(--brokr-duration-fast) var(--brokr-ease);
1456
1568
  width: 100%;
1457
1569
  }
1458
1570
 
@@ -1474,7 +1586,7 @@ var CHAT_EXTRAS_CSS = `
1474
1586
  }
1475
1587
 
1476
1588
  .brokr-model-dot {
1477
- border-radius: 999px;
1589
+ border-radius: var(--brokr-radius-pill);
1478
1590
  display: inline-block;
1479
1591
  flex-shrink: 0;
1480
1592
  height: 8px;
@@ -1541,7 +1653,7 @@ var CHAT_EXTRAS_CSS = `
1541
1653
  position: absolute;
1542
1654
  right: 0;
1543
1655
  top: calc(100% + 4px);
1544
- z-index: 100;
1656
+ z-index: var(--brokr-z-dropdown);
1545
1657
  }
1546
1658
 
1547
1659
  .brokr-ai-chat-thread-dropdown-item {
@@ -1558,7 +1670,7 @@ var CHAT_EXTRAS_CSS = `
1558
1670
  gap: var(--brokr-space-2);
1559
1671
  padding: 0.5rem 0.75rem;
1560
1672
  text-align: left;
1561
- transition: background-color 100ms ease;
1673
+ transition: background-color var(--brokr-duration-fast) var(--brokr-ease);
1562
1674
  width: 100%;
1563
1675
  }
1564
1676
 
@@ -1600,7 +1712,7 @@ var CHAT_EXTRAS_CSS = `
1600
1712
  position: absolute;
1601
1713
  right: 0;
1602
1714
  top: -4px;
1603
- transition: opacity 120ms ease, background-color 120ms ease;
1715
+ transition: opacity var(--brokr-duration-base) var(--brokr-ease), background-color var(--brokr-duration-base) var(--brokr-ease);
1604
1716
  width: 26px;
1605
1717
  }
1606
1718
 
@@ -1654,7 +1766,7 @@ var CHAT_EXTRAS_CSS = `
1654
1766
  backdrop-filter: blur(4px);
1655
1767
  inset: 0;
1656
1768
  position: fixed;
1657
- z-index: 49;
1769
+ z-index: var(--brokr-z-drawer-backdrop);
1658
1770
  }
1659
1771
 
1660
1772
  .brokr-ai-chat-drawer {
@@ -1672,7 +1784,7 @@ var CHAT_EXTRAS_CSS = `
1672
1784
  position: fixed;
1673
1785
  top: 0;
1674
1786
  width: 80vw;
1675
- z-index: 50;
1787
+ z-index: var(--brokr-z-drawer);
1676
1788
  }
1677
1789
 
1678
1790
  .brokr-ai-chat-hamburger {
@@ -1711,8 +1823,9 @@ var CHAT_EXTRAS_CSS = `
1711
1823
  color: var(--brokr-text-primary);
1712
1824
  font: inherit;
1713
1825
  font-size: var(--brokr-font-size-xs);
1826
+ min-height: calc(var(--brokr-space-8) + var(--brokr-space-1));
1714
1827
  outline: none;
1715
- padding: 0.5rem 0.65rem;
1828
+ padding: 0 var(--brokr-space-3);
1716
1829
  width: 100%;
1717
1830
  }
1718
1831
 
@@ -1731,7 +1844,45 @@ var COMPOSITES_CSS = `
1731
1844
  bottom: var(--brokr-space-6);
1732
1845
  position: fixed;
1733
1846
  right: var(--brokr-space-6);
1734
- z-index: 70;
1847
+ z-index: var(--brokr-z-fab);
1848
+ }
1849
+
1850
+ .brokr-chat-fab-trigger {
1851
+ align-items: center;
1852
+ appearance: none;
1853
+ background: var(--brokr-bg);
1854
+ border: 1px solid color-mix(in srgb, var(--brokr-border) 85%, transparent);
1855
+ border-radius: var(--brokr-radius-pill);
1856
+ box-shadow:
1857
+ 0 10px 24px color-mix(in srgb, var(--brokr-text-primary) 14%, transparent),
1858
+ 0 0 16px color-mix(in srgb, var(--brokr-text-primary) 10%, transparent);
1859
+ color: var(--brokr-text-primary);
1860
+ cursor: pointer;
1861
+ display: inline-flex;
1862
+ font: inherit;
1863
+ height: 56px;
1864
+ justify-content: center;
1865
+ min-height: 56px;
1866
+ padding: 0;
1867
+ transition:
1868
+ transform var(--brokr-duration-base) var(--brokr-ease),
1869
+ box-shadow var(--brokr-duration-base) var(--brokr-ease),
1870
+ border-color var(--brokr-duration-base) var(--brokr-ease);
1871
+ width: 56px;
1872
+ }
1873
+
1874
+ .brokr-chat-fab-trigger:hover {
1875
+ border-color: color-mix(in srgb, var(--brokr-text-primary) 20%, var(--brokr-border));
1876
+ transform: translateY(-1px);
1877
+ }
1878
+
1879
+ .brokr-chat-fab-trigger:active {
1880
+ transform: translateY(0);
1881
+ }
1882
+
1883
+ .brokr-chat-fab-trigger:focus-visible {
1884
+ outline: 2px solid color-mix(in srgb, var(--brokr-primary) 60%, transparent);
1885
+ outline-offset: 2px;
1735
1886
  }
1736
1887
 
1737
1888
  .brokr-chat-panel {
@@ -1747,7 +1898,7 @@ var COMPOSITES_CSS = `
1747
1898
  right: 0;
1748
1899
  top: 0;
1749
1900
  width: min(100vw, 420px);
1750
- z-index: 80;
1901
+ z-index: var(--brokr-z-panel);
1751
1902
  border-bottom-right-radius: 0;
1752
1903
  border-top-right-radius: 0;
1753
1904
  }
@@ -1783,23 +1934,6 @@ var COMPOSITES_CSS = `
1783
1934
  padding: var(--brokr-space-2);
1784
1935
  }
1785
1936
 
1786
- .brokr-chat-starters {
1787
- display: flex;
1788
- flex-wrap: wrap;
1789
- gap: var(--brokr-space-2);
1790
- }
1791
-
1792
- .brokr-chat-starter {
1793
- background: var(--brokr-subtle-fill);
1794
- border: 1px solid var(--brokr-muted-border);
1795
- border-radius: 999px;
1796
- color: var(--brokr-text-primary);
1797
- cursor: pointer;
1798
- font: inherit;
1799
- min-height: 36px;
1800
- padding: 0 0.9rem;
1801
- }
1802
-
1803
1937
  .brokr-chat-bubble[data-role="user"] {
1804
1938
  background: color-mix(in srgb, var(--brokr-primary) 10%, var(--brokr-surface));
1805
1939
  justify-self: end;
@@ -1863,7 +1997,7 @@ var COMPOSITES_CSS = `
1863
1997
  min-height: 220px;
1864
1998
  padding: var(--brokr-space-6);
1865
1999
  text-align: center;
1866
- transition: border-color 150ms ease, background-color 150ms ease, transform 150ms ease;
2000
+ transition: border-color var(--brokr-duration-base) var(--brokr-ease), background-color var(--brokr-duration-base) var(--brokr-ease), transform var(--brokr-duration-base) var(--brokr-ease);
1867
2001
  }
1868
2002
 
1869
2003
  .brokr-upload-dropzone[data-drag="true"] {
@@ -1884,13 +2018,23 @@ var COMPOSITES_CSS = `
1884
2018
  // src/react/css/gates.ts
1885
2019
  var GATES_CSS = `
1886
2020
  .brokr-plan-card {
1887
- display: grid;
2021
+ display: flex;
2022
+ flex-direction: column;
1888
2023
  gap: var(--brokr-space-5);
1889
2024
  min-height: 100%;
1890
2025
  padding: var(--brokr-space-6);
1891
2026
  position: relative;
1892
2027
  }
1893
2028
 
2029
+ .brokr-plan-card > .brokr-feature-list {
2030
+ flex: 1;
2031
+ }
2032
+
2033
+ .brokr-plan-card > .brokr-button,
2034
+ .brokr-plan-card > .brokr-button-secondary {
2035
+ flex-shrink: 0;
2036
+ }
2037
+
1894
2038
  .brokr-plan-card[data-highlight="true"] {
1895
2039
  background: color-mix(in srgb, var(--brokr-surface) 86%, var(--brokr-bg));
1896
2040
  transform: translateY(-2px);
@@ -1904,7 +2048,7 @@ var GATES_CSS = `
1904
2048
 
1905
2049
  .brokr-plan-value {
1906
2050
  font-size: clamp(2rem, 4vw, 3rem);
1907
- font-weight: 700;
2051
+ font-weight: var(--brokr-font-weight-bold);
1908
2052
  letter-spacing: -0.05em;
1909
2053
  line-height: 1;
1910
2054
  }
@@ -1927,7 +2071,7 @@ var GATES_CSS = `
1927
2071
 
1928
2072
  .brokr-feature-bullet {
1929
2073
  background: var(--brokr-text-primary);
1930
- border-radius: 999px;
2074
+ border-radius: var(--brokr-radius-pill);
1931
2075
  height: 6px;
1932
2076
  margin-top: 0.45rem;
1933
2077
  opacity: 0.75;
@@ -1947,7 +2091,7 @@ var GATES_CSS = `
1947
2091
 
1948
2092
  .brokr-meter-bar {
1949
2093
  background: var(--brokr-subtle-fill);
1950
- border-radius: 999px;
2094
+ border-radius: var(--brokr-radius-pill);
1951
2095
  height: 8px;
1952
2096
  overflow: hidden;
1953
2097
  width: 100%;
@@ -1957,7 +2101,7 @@ var GATES_CSS = `
1957
2101
  background: var(--brokr-primary);
1958
2102
  border-radius: inherit;
1959
2103
  height: 100%;
1960
- transition: width 150ms ease;
2104
+ transition: width var(--brokr-duration-base) var(--brokr-ease);
1961
2105
  }
1962
2106
  `;
1963
2107
 
@@ -1972,7 +2116,7 @@ var SKELETON_CSS = `
1972
2116
  color-mix(in srgb, var(--brokr-text-primary) 5%, transparent) 100%
1973
2117
  );
1974
2118
  background-size: 200% 100%;
1975
- border-radius: 999px;
2119
+ border-radius: var(--brokr-radius-pill);
1976
2120
  min-height: 16px;
1977
2121
  }
1978
2122
  `;
@@ -1996,18 +2140,22 @@ var MARKDOWN_CSS = `
1996
2140
 
1997
2141
  .brokr-md strong {
1998
2142
  color: var(--brokr-text-primary);
1999
- font-weight: 600;
2143
+ font-weight: var(--brokr-font-weight-semibold);
2000
2144
  }
2001
2145
 
2002
2146
  .brokr-md em {
2003
2147
  font-style: italic;
2004
2148
  }
2005
2149
 
2150
+ .brokr-md del {
2151
+ opacity: 0.85;
2152
+ }
2153
+
2006
2154
  .brokr-md-inline-code {
2007
2155
  background: var(--brokr-subtle-fill-strong);
2008
- border-radius: 4px;
2156
+ border-radius: var(--brokr-radius-sm);
2009
2157
  color: var(--brokr-primary);
2010
- font-family: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, monospace;
2158
+ font-family: var(--brokr-font-mono);
2011
2159
  font-size: 0.85em;
2012
2160
  padding: 0.15em 0.4em;
2013
2161
  }
@@ -2024,7 +2172,7 @@ var MARKDOWN_CSS = `
2024
2172
 
2025
2173
  .brokr-md-heading {
2026
2174
  color: var(--brokr-text-primary);
2027
- font-weight: 600;
2175
+ font-weight: var(--brokr-font-weight-semibold);
2028
2176
  line-height: 1.3;
2029
2177
  margin: 1.2em 0 0.5em;
2030
2178
  }
@@ -2047,7 +2195,6 @@ var MARKDOWN_CSS = `
2047
2195
  }
2048
2196
 
2049
2197
  .brokr-md-list {
2050
- list-style: none;
2051
2198
  margin: 0.5em 0;
2052
2199
  padding: 0 0 0 1.2em;
2053
2200
  }
@@ -2055,16 +2202,85 @@ var MARKDOWN_CSS = `
2055
2202
  .brokr-md-list li {
2056
2203
  line-height: 1.7;
2057
2204
  margin-bottom: 0.25em;
2205
+ }
2206
+
2207
+ .brokr-md-list-unordered {
2208
+ list-style: none;
2209
+ }
2210
+
2211
+ .brokr-md-list-unordered li {
2058
2212
  position: relative;
2059
2213
  }
2060
2214
 
2061
- .brokr-md-list li::before {
2215
+ .brokr-md-list-unordered li::before {
2062
2216
  content: '\u2022';
2063
2217
  color: var(--brokr-text-secondary);
2064
2218
  left: -1em;
2065
2219
  position: absolute;
2066
2220
  }
2067
2221
 
2222
+ .brokr-md-list-ordered {
2223
+ list-style: decimal;
2224
+ padding-left: 1.35em;
2225
+ }
2226
+
2227
+ .brokr-md-list-ordered li::marker {
2228
+ color: var(--brokr-text-secondary);
2229
+ }
2230
+
2231
+ .brokr-md-quote {
2232
+ border-left: 1px solid var(--brokr-muted-border);
2233
+ color: var(--brokr-text-secondary);
2234
+ margin: 0.8em 0;
2235
+ padding: 0 0 0 0.9em;
2236
+ }
2237
+
2238
+ .brokr-md-quote-line {
2239
+ line-height: 1.7;
2240
+ margin: 0 0 0.4em;
2241
+ }
2242
+
2243
+ .brokr-md-quote-line:last-child {
2244
+ margin-bottom: 0;
2245
+ }
2246
+
2247
+ .brokr-md-table-wrap {
2248
+ margin: 0.9em 0;
2249
+ overflow-x: auto;
2250
+ }
2251
+
2252
+ .brokr-md-table {
2253
+ border-collapse: collapse;
2254
+ border: 1px solid var(--brokr-muted-border);
2255
+ border-radius: var(--brokr-radius-card);
2256
+ min-width: 100%;
2257
+ width: max-content;
2258
+ }
2259
+
2260
+ .brokr-md-table th,
2261
+ .brokr-md-table td {
2262
+ border-bottom: 1px solid var(--brokr-muted-border);
2263
+ font-size: var(--brokr-font-size-sm);
2264
+ line-height: var(--brokr-leading-snug);
2265
+ padding: var(--brokr-space-2) var(--brokr-space-3);
2266
+ text-align: left;
2267
+ vertical-align: top;
2268
+ }
2269
+
2270
+ .brokr-md-table th {
2271
+ background: var(--brokr-subtle-fill);
2272
+ color: var(--brokr-text-primary);
2273
+ font-weight: var(--brokr-font-weight-semibold);
2274
+ }
2275
+
2276
+ .brokr-md-table td {
2277
+ color: var(--brokr-text-secondary);
2278
+ }
2279
+
2280
+ .brokr-md-table tr:last-child td {
2281
+ border-bottom: none;
2282
+ }
2283
+
2068
2284
  /* \u2500\u2500\u2500 Code blocks \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
2069
2285
 
2070
2286
  .brokr-md-codeblock {
@@ -2086,8 +2302,8 @@ var MARKDOWN_CSS = `
2086
2302
 
2087
2303
  .brokr-md-codeblock-lang {
2088
2304
  color: var(--brokr-text-secondary);
2089
- font-family: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, monospace;
2090
- font-weight: 500;
2305
+ font-family: var(--brokr-font-mono);
2306
+ font-weight: var(--brokr-font-weight-medium);
2091
2307
  text-transform: lowercase;
2092
2308
  }
2093
2309
 
@@ -2103,7 +2319,7 @@ var MARKDOWN_CSS = `
2103
2319
  gap: 0.35em;
2104
2320
  padding: 0.15em 0.4em;
2105
2321
  border-radius: var(--brokr-radius-button);
2106
- transition: color 120ms ease, background 120ms ease;
2322
+ transition: color var(--brokr-duration-base) var(--brokr-ease), background var(--brokr-duration-base) var(--brokr-ease);
2107
2323
  }
2108
2324
 
2109
2325
  .brokr-md-codeblock-copy:hover {
@@ -2113,7 +2329,7 @@ var MARKDOWN_CSS = `
2113
2329
 
2114
2330
  .brokr-md-codeblock-pre {
2115
2331
  color: var(--brokr-text-primary);
2116
- font-family: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, monospace;
2332
+ font-family: var(--brokr-font-mono);
2117
2333
  font-size: 0.825em;
2118
2334
  line-height: 1.6;
2119
2335
  margin: 0;
@@ -2239,7 +2455,8 @@ var RESPONSIVE_CSS = `
2239
2455
  }
2240
2456
 
2241
2457
  .brokr-ai-chat-model-select,
2242
- .brokr-ai-chat-sidebar-button {
2458
+ .brokr-ai-chat-sidebar-button,
2459
+ .brokr-ai-chat-sidebar-new-chat {
2243
2460
  width: 100%;
2244
2461
  }
2245
2462
 
@@ -2306,11 +2523,11 @@ var NOTIFICATIONS_CSS = `
2306
2523
  .brokr-toast-layer {
2307
2524
  box-sizing: border-box;
2308
2525
  position: fixed;
2309
- z-index: 99999;
2526
+ z-index: var(--brokr-z-toast);
2310
2527
  display: flex;
2311
2528
  flex-direction: column;
2312
- gap: 8px;
2313
- padding: 16px;
2529
+ gap: var(--brokr-space-2);
2530
+ padding: var(--brokr-space-4);
2314
2531
  pointer-events: none;
2315
2532
  max-width: 400px;
2316
2533
  width: 100%;
@@ -2332,16 +2549,16 @@ var NOTIFICATIONS_CSS = `
2332
2549
  pointer-events: auto;
2333
2550
  display: flex;
2334
2551
  align-items: flex-start;
2335
- gap: 10px;
2336
- padding: 12px 14px;
2337
- border-radius: 10px;
2338
- background: var(--brokr-toast-bg, #ffffff);
2339
- border: 1px solid var(--brokr-toast-border, #e4e4e7);
2340
- box-shadow: 0 4px 24px rgba(0, 0, 0, 0.18);
2552
+ gap: var(--brokr-space-3);
2553
+ padding: var(--brokr-space-3) var(--brokr-space-4);
2554
+ border-radius: calc(var(--brokr-radius-card) + 2px);
2555
+ background: var(--brokr-toast-bg);
2556
+ border: 1px solid var(--brokr-toast-border);
2557
+ box-shadow: var(--brokr-shadow-md);
2341
2558
  width: 100%;
2342
2559
  max-width: 380px;
2343
- animation: brokr-toast-enter-bottom 0.3s ease-out;
2344
- transition: opacity 0.3s ease, transform 0.3s ease;
2560
+ animation: brokr-toast-enter-bottom var(--brokr-duration-slow) ease-out;
2561
+ transition: opacity var(--brokr-duration-slow) var(--brokr-ease), transform var(--brokr-duration-slow) var(--brokr-ease);
2345
2562
  }
2346
2563
 
2347
2564
  /* Top positions: slide down from top */
@@ -2378,7 +2595,7 @@ var NOTIFICATIONS_CSS = `
2378
2595
  flex-shrink: 0;
2379
2596
  width: 8px;
2380
2597
  height: 8px;
2381
- border-radius: 50%;
2598
+ border-radius: var(--brokr-radius-pill);
2382
2599
  margin-top: 5px;
2383
2600
  background: var(--brokr-text-secondary);
2384
2601
  }
@@ -2405,16 +2622,16 @@ var NOTIFICATIONS_CSS = `
2405
2622
  }
2406
2623
 
2407
2624
  .brokr-toast-title {
2408
- font-size: 13px;
2409
- font-weight: 600;
2410
- color: var(--brokr-toast-text, #0a0a0a);
2411
- line-height: 1.35;
2625
+ font-size: var(--brokr-font-size-xs);
2626
+ font-weight: var(--brokr-font-weight-semibold);
2627
+ color: var(--brokr-toast-text);
2628
+ line-height: var(--brokr-leading-snug);
2412
2629
  }
2413
2630
 
2414
2631
  .brokr-toast-message {
2415
- font-size: 12px;
2416
- color: var(--brokr-toast-text-secondary, #52525b);
2417
- line-height: 1.4;
2632
+ font-size: var(--brokr-font-size-xs);
2633
+ color: var(--brokr-toast-text-secondary);
2634
+ line-height: var(--brokr-leading-snug);
2418
2635
  display: -webkit-box;
2419
2636
  -webkit-line-clamp: 2;
2420
2637
  -webkit-box-orient: vertical;
@@ -2430,17 +2647,17 @@ var NOTIFICATIONS_CSS = `
2430
2647
  height: 24px;
2431
2648
  border: none;
2432
2649
  background: transparent;
2433
- color: var(--brokr-toast-text-secondary, #52525b);
2650
+ color: var(--brokr-toast-text-secondary);
2434
2651
  cursor: pointer;
2435
- border-radius: 6px;
2652
+ border-radius: var(--brokr-radius-button);
2436
2653
  padding: 0;
2437
2654
  opacity: 0.5;
2438
- transition: opacity 0.15s, background 0.15s;
2655
+ transition: opacity var(--brokr-duration-base) var(--brokr-ease), background var(--brokr-duration-base) var(--brokr-ease);
2439
2656
  }
2440
2657
 
2441
2658
  .brokr-toast-dismiss:hover {
2442
2659
  opacity: 1;
2443
- background: color-mix(in srgb, var(--brokr-toast-text, #0a0a0a) 8%, transparent);
2660
+ background: color-mix(in srgb, var(--brokr-toast-text) 8%, transparent);
2444
2661
  }
2445
2662
 
2446
2663
  /* -------------------------------------------------------------------------
@@ -2464,15 +2681,15 @@ var NOTIFICATIONS_CSS = `
2464
2681
  background: transparent;
2465
2682
  color: var(--brokr-text-secondary);
2466
2683
  cursor: pointer;
2467
- border-radius: 8px;
2684
+ border-radius: var(--brokr-radius-button);
2468
2685
  padding: 0;
2469
2686
  position: relative;
2470
- transition: color 0.15s, background 0.15s;
2687
+ transition: color var(--brokr-duration-base) var(--brokr-ease), background var(--brokr-duration-base) var(--brokr-ease);
2471
2688
  }
2472
2689
 
2473
2690
  .brokr-notif-bell:hover {
2474
2691
  color: var(--brokr-text-primary);
2475
- background: color-mix(in srgb, var(--brokr-text-primary) 6%, transparent);
2692
+ background: var(--brokr-subtle-fill);
2476
2693
  }
2477
2694
 
2478
2695
  .brokr-notif-badge {
@@ -2481,12 +2698,12 @@ var NOTIFICATIONS_CSS = `
2481
2698
  right: 2px;
2482
2699
  min-width: 16px;
2483
2700
  height: 16px;
2484
- padding: 0 4px;
2485
- border-radius: 999px;
2701
+ padding: 0 var(--brokr-space-1);
2702
+ border-radius: var(--brokr-radius-pill);
2486
2703
  background: var(--brokr-error, #ef4444);
2487
- color: #fff;
2704
+ color: var(--brokr-primary-contrast);
2488
2705
  font-size: 10px;
2489
- font-weight: 700;
2706
+ font-weight: var(--brokr-font-weight-bold);
2490
2707
  line-height: 16px;
2491
2708
  text-align: center;
2492
2709
  pointer-events: none;
@@ -2504,14 +2721,14 @@ var NOTIFICATIONS_CSS = `
2504
2721
  width: 360px;
2505
2722
  max-height: 420px;
2506
2723
  background: var(--brokr-surface);
2507
- border: 1px solid var(--brokr-border);
2508
- border-radius: 12px;
2509
- box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
2724
+ border: 1px solid var(--brokr-muted-border);
2725
+ border-radius: calc(var(--brokr-radius-card) + 4px);
2726
+ box-shadow: var(--brokr-shadow-lg);
2510
2727
  overflow: hidden;
2511
2728
  display: flex;
2512
2729
  flex-direction: column;
2513
- z-index: 9999;
2514
- animation: brokr-dropdown-enter 0.15s ease-out;
2730
+ z-index: var(--brokr-z-notification);
2731
+ animation: brokr-dropdown-enter var(--brokr-duration-base) ease-out;
2515
2732
  }
2516
2733
 
2517
2734
  @keyframes brokr-dropdown-enter {
@@ -2524,13 +2741,13 @@ var NOTIFICATIONS_CSS = `
2524
2741
  display: flex;
2525
2742
  align-items: center;
2526
2743
  justify-content: space-between;
2527
- padding: 12px 16px;
2528
- border-bottom: 1px solid var(--brokr-border);
2744
+ padding: var(--brokr-space-3) var(--brokr-space-4);
2745
+ border-bottom: 1px solid var(--brokr-muted-border);
2529
2746
  }
2530
2747
 
2531
2748
  .brokr-notif-dropdown-title {
2532
- font-size: 13px;
2533
- font-weight: 600;
2749
+ font-size: var(--brokr-font-size-xs);
2750
+ font-weight: var(--brokr-font-weight-semibold);
2534
2751
  color: var(--brokr-text-primary);
2535
2752
  }
2536
2753
 
@@ -2539,12 +2756,12 @@ var NOTIFICATIONS_CSS = `
2539
2756
  border: none;
2540
2757
  background: transparent;
2541
2758
  color: var(--brokr-primary);
2542
- font-size: 12px;
2543
- font-weight: 500;
2759
+ font-size: var(--brokr-font-size-xs);
2760
+ font-weight: var(--brokr-font-weight-medium);
2544
2761
  cursor: pointer;
2545
2762
  padding: 2px 6px;
2546
- border-radius: 4px;
2547
- transition: background 0.15s;
2763
+ border-radius: var(--brokr-radius-sm);
2764
+ transition: background var(--brokr-duration-base) var(--brokr-ease);
2548
2765
  }
2549
2766
 
2550
2767
  .brokr-notif-mark-all:hover {
@@ -2568,14 +2785,14 @@ var NOTIFICATIONS_CSS = `
2568
2785
  box-sizing: border-box;
2569
2786
  display: flex;
2570
2787
  align-items: flex-start;
2571
- gap: 10px;
2572
- padding: 12px 16px;
2788
+ gap: var(--brokr-space-3);
2789
+ padding: var(--brokr-space-3) var(--brokr-space-4);
2573
2790
  border: none;
2574
2791
  background: transparent;
2575
2792
  cursor: pointer;
2576
2793
  text-align: left;
2577
2794
  width: 100%;
2578
- transition: background 0.15s;
2795
+ transition: background var(--brokr-duration-base) var(--brokr-ease);
2579
2796
  border-bottom: 1px solid color-mix(in srgb, var(--brokr-border) 50%, transparent);
2580
2797
  }
2581
2798
 
@@ -2593,7 +2810,7 @@ var NOTIFICATIONS_CSS = `
2593
2810
  flex-shrink: 0;
2594
2811
  width: 8px;
2595
2812
  height: 8px;
2596
- border-radius: 50%;
2813
+ border-radius: var(--brokr-radius-pill);
2597
2814
  margin-top: 4px;
2598
2815
  background: var(--brokr-text-secondary);
2599
2816
  }
@@ -2621,16 +2838,16 @@ var NOTIFICATIONS_CSS = `
2621
2838
  }
2622
2839
 
2623
2840
  .brokr-notif-item-title {
2624
- font-size: 13px;
2625
- font-weight: 600;
2841
+ font-size: var(--brokr-font-size-xs);
2842
+ font-weight: var(--brokr-font-weight-semibold);
2626
2843
  color: var(--brokr-text-primary);
2627
- line-height: 1.35;
2844
+ line-height: var(--brokr-leading-snug);
2628
2845
  }
2629
2846
 
2630
2847
  .brokr-notif-item-message {
2631
- font-size: 12px;
2848
+ font-size: var(--brokr-font-size-xs);
2632
2849
  color: var(--brokr-text-secondary);
2633
- line-height: 1.4;
2850
+ line-height: var(--brokr-leading-snug);
2634
2851
  display: -webkit-box;
2635
2852
  -webkit-line-clamp: 2;
2636
2853
  -webkit-box-orient: vertical;
@@ -2656,12 +2873,12 @@ var NOTIFICATIONS_CSS = `
2656
2873
  flex-direction: column;
2657
2874
  align-items: center;
2658
2875
  justify-content: center;
2659
- gap: 8px;
2660
- padding: 40px 16px;
2876
+ gap: var(--brokr-space-2);
2877
+ padding: var(--brokr-space-10) var(--brokr-space-4);
2661
2878
  }
2662
2879
 
2663
2880
  .brokr-notif-empty-text {
2664
- font-size: 13px;
2881
+ font-size: var(--brokr-font-size-xs);
2665
2882
  color: var(--brokr-text-secondary);
2666
2883
  opacity: 0.6;
2667
2884
  }
@@ -2676,8 +2893,8 @@ var NOTIFICATIONS_CSS = `
2676
2893
  max-width: 640px;
2677
2894
  display: flex;
2678
2895
  flex-direction: column;
2679
- border: 1px solid var(--brokr-border);
2680
- border-radius: 12px;
2896
+ border: 1px solid var(--brokr-muted-border);
2897
+ border-radius: calc(var(--brokr-radius-card) + 4px);
2681
2898
  background: var(--brokr-surface);
2682
2899
  overflow: hidden;
2683
2900
  }
@@ -2687,13 +2904,13 @@ var NOTIFICATIONS_CSS = `
2687
2904
  display: flex;
2688
2905
  align-items: center;
2689
2906
  justify-content: space-between;
2690
- padding: 16px 20px;
2691
- border-bottom: 1px solid var(--brokr-border);
2907
+ padding: var(--brokr-space-4) var(--brokr-space-5);
2908
+ border-bottom: 1px solid var(--brokr-muted-border);
2692
2909
  }
2693
2910
 
2694
2911
  .brokr-notif-list-title {
2695
- font-size: 16px;
2696
- font-weight: 600;
2912
+ font-size: var(--brokr-font-size-md);
2913
+ font-weight: var(--brokr-font-weight-semibold);
2697
2914
  color: var(--brokr-text-primary);
2698
2915
  }
2699
2916