@brokr/sdk 2.1.0 → 2.1.2

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-styles.js +540 -95
  8. package/dist/react-styles.mjs +540 -95
  9. package/dist/react.js +665 -331
  10. package/dist/react.mjs +548 -217
  11. package/dist/runtime.js +22 -2
  12. package/dist/runtime.mjs +22 -2
  13. package/dist/src/chat/config.d.ts +2 -0
  14. package/dist/src/chat/config.d.ts.map +1 -1
  15. package/dist/src/gateway.d.ts.map +1 -1
  16. package/dist/src/models.d.ts +2 -0
  17. package/dist/src/models.d.ts.map +1 -1
  18. package/dist/src/react/chat/AIChat.d.ts.map +1 -1
  19. package/dist/src/react/chat/ChatContext.d.ts +3 -6
  20. package/dist/src/react/chat/ChatContext.d.ts.map +1 -1
  21. package/dist/src/react/chat/MarkdownRenderer.d.ts.map +1 -1
  22. package/dist/src/react/chat/ModelSelector.d.ts +1 -1
  23. package/dist/src/react/chat/ModelSelector.d.ts.map +1 -1
  24. package/dist/src/react/chat/ThreadSidebar.d.ts.map +1 -1
  25. package/dist/src/react/chat/memory.d.ts +12 -0
  26. package/dist/src/react/chat/memory.d.ts.map +1 -0
  27. package/dist/src/react/chat/types.d.ts +6 -0
  28. package/dist/src/react/chat/types.d.ts.map +1 -1
  29. package/dist/src/react/chat/useChat.d.ts +8 -6
  30. package/dist/src/react/chat/useChat.d.ts.map +1 -1
  31. package/dist/src/react/composites/FabAI.d.ts +6 -1
  32. package/dist/src/react/composites/FabAI.d.ts.map +1 -1
  33. package/dist/src/react/composites/fab-context.d.ts +26 -0
  34. package/dist/src/react/composites/fab-context.d.ts.map +1 -0
  35. package/dist/src/react/css/account.d.ts +1 -1
  36. package/dist/src/react/css/account.d.ts.map +1 -1
  37. package/dist/src/react/css/activity-feed.d.ts +2 -0
  38. package/dist/src/react/css/activity-feed.d.ts.map +1 -0
  39. package/dist/src/react/css/auth.d.ts +1 -1
  40. package/dist/src/react/css/auth.d.ts.map +1 -1
  41. package/dist/src/react/css/chat-extras.d.ts +1 -1
  42. package/dist/src/react/css/chat-extras.d.ts.map +1 -1
  43. package/dist/src/react/css/chat.d.ts +1 -1
  44. package/dist/src/react/css/chat.d.ts.map +1 -1
  45. package/dist/src/react/css/composites.d.ts +1 -1
  46. package/dist/src/react/css/composites.d.ts.map +1 -1
  47. package/dist/src/react/css/data-table.d.ts +2 -0
  48. package/dist/src/react/css/data-table.d.ts.map +1 -0
  49. package/dist/src/react/css/gates.d.ts +1 -1
  50. package/dist/src/react/css/gates.d.ts.map +1 -1
  51. package/dist/src/react/css/index.d.ts.map +1 -1
  52. package/dist/src/react/css/markdown.d.ts +1 -1
  53. package/dist/src/react/css/markdown.d.ts.map +1 -1
  54. package/dist/src/react/css/primitives.d.ts +1 -1
  55. package/dist/src/react/css/primitives.d.ts.map +1 -1
  56. package/dist/src/react/css/reset.d.ts +1 -1
  57. package/dist/src/react/css/reset.d.ts.map +1 -1
  58. package/dist/src/react/css/responsive.d.ts +1 -1
  59. package/dist/src/react/css/responsive.d.ts.map +1 -1
  60. package/dist/src/react/css/skeleton.d.ts +1 -1
  61. package/dist/src/react/css/skeleton.d.ts.map +1 -1
  62. package/dist/src/react/css/stats-grid.d.ts +2 -0
  63. package/dist/src/react/css/stats-grid.d.ts.map +1 -0
  64. package/dist/src/react/css/usage-grid.d.ts +2 -0
  65. package/dist/src/react/css/usage-grid.d.ts.map +1 -0
  66. package/dist/src/react/index.d.ts +4 -1
  67. package/dist/src/react/index.d.ts.map +1 -1
  68. package/dist/src/react/notifications/ActivityFeed.d.ts +14 -0
  69. package/dist/src/react/notifications/ActivityFeed.d.ts.map +1 -0
  70. package/dist/src/react/payments/UsageGrid.d.ts +11 -0
  71. package/dist/src/react/payments/UsageGrid.d.ts.map +1 -0
  72. package/dist/src/react/primitives/DataTable.d.ts +28 -0
  73. package/dist/src/react/primitives/DataTable.d.ts.map +1 -0
  74. package/dist/src/react/primitives/StatsGrid.d.ts +18 -0
  75. package/dist/src/react/primitives/StatsGrid.d.ts.map +1 -0
  76. package/dist/tsconfig.tsbuildinfo +1 -1
  77. package/package.json +1 -1
@@ -120,7 +120,7 @@ var RESET_CSS = `
120
120
  .brokr-root *::-webkit-scrollbar-thumb {
121
121
  background: color-mix(in srgb, var(--brokr-text-primary) 16%, transparent);
122
122
  border: 3px solid transparent;
123
- border-radius: 999px;
123
+ border-radius: var(--brokr-radius-pill);
124
124
  background-clip: padding-box;
125
125
  }
126
126
 
@@ -158,11 +158,11 @@ var PRIMITIVES_CSS = `
158
158
  gap: var(--brokr-space-2);
159
159
  font: inherit;
160
160
  font-size: var(--brokr-font-size-sm);
161
- font-weight: 600;
161
+ font-weight: var(--brokr-font-weight-semibold);
162
162
  min-height: 44px;
163
163
  padding: 0 var(--brokr-space-4);
164
164
  text-decoration: none;
165
- 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);
166
166
  }
167
167
 
168
168
  .brokr-button:hover,
@@ -209,7 +209,7 @@ var PRIMITIVES_CSS = `
209
209
  font-size: var(--brokr-font-size-sm);
210
210
  min-height: 44px;
211
211
  padding: 0.825rem 0.95rem;
212
- 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);
213
213
  }
214
214
 
215
215
  .brokr-input::placeholder,
@@ -238,7 +238,7 @@ var PRIMITIVES_CSS = `
238
238
  color: var(--brokr-text-secondary);
239
239
  display: block;
240
240
  font-size: var(--brokr-font-size-xs);
241
- font-weight: 600;
241
+ font-weight: var(--brokr-font-weight-semibold);
242
242
  letter-spacing: 0.02em;
243
243
  margin-bottom: var(--brokr-space-2);
244
244
  text-transform: uppercase;
@@ -247,7 +247,7 @@ var PRIMITIVES_CSS = `
247
247
  .brokr-title {
248
248
  color: var(--brokr-text-primary);
249
249
  font-size: var(--brokr-font-size-xl);
250
- font-weight: 700;
250
+ font-weight: var(--brokr-font-weight-bold);
251
251
  letter-spacing: -0.03em;
252
252
  margin: 0;
253
253
  }
@@ -255,7 +255,7 @@ var PRIMITIVES_CSS = `
255
255
  .brokr-heading {
256
256
  color: var(--brokr-text-primary);
257
257
  font-size: var(--brokr-font-size-2xl);
258
- font-weight: 700;
258
+ font-weight: var(--brokr-font-weight-bold);
259
259
  letter-spacing: -0.04em;
260
260
  line-height: 1;
261
261
  margin: 0;
@@ -282,11 +282,11 @@ var PRIMITIVES_CSS = `
282
282
  .brokr-badge {
283
283
  align-items: center;
284
284
  border: 1px solid var(--brokr-muted-border);
285
- border-radius: 999px;
285
+ border-radius: var(--brokr-radius-pill);
286
286
  color: var(--brokr-text-secondary);
287
287
  display: inline-flex;
288
288
  font-size: var(--brokr-font-size-xs);
289
- font-weight: 700;
289
+ font-weight: var(--brokr-font-weight-bold);
290
290
  gap: var(--brokr-space-1);
291
291
  letter-spacing: 0.06em;
292
292
  min-height: 28px;
@@ -388,7 +388,7 @@ var AUTH_CSS = `
388
388
  .brokr-brand-name {
389
389
  color: var(--brokr-text-primary);
390
390
  font-size: var(--brokr-font-size-sm);
391
- font-weight: 700;
391
+ font-weight: var(--brokr-font-weight-bold);
392
392
  letter-spacing: 0.08em;
393
393
  text-transform: uppercase;
394
394
  }
@@ -451,7 +451,7 @@ var ACCOUNT_CSS = `
451
451
  }
452
452
 
453
453
  .brokr-account-trigger[data-display="avatar"] {
454
- border-radius: 999px;
454
+ border-radius: var(--brokr-radius-pill);
455
455
  gap: 0;
456
456
  justify-content: center;
457
457
  min-width: 44px;
@@ -462,10 +462,10 @@ var ACCOUNT_CSS = `
462
462
  .brokr-avatar-lg {
463
463
  align-items: center;
464
464
  background: var(--brokr-subtle-fill-strong);
465
- border-radius: 999px;
465
+ border-radius: var(--brokr-radius-pill);
466
466
  color: var(--brokr-text-primary);
467
467
  display: inline-flex;
468
- font-weight: 700;
468
+ font-weight: var(--brokr-font-weight-bold);
469
469
  justify-content: center;
470
470
  overflow: hidden;
471
471
  }
@@ -552,7 +552,7 @@ var ACCOUNT_CSS = `
552
552
  inset: 0;
553
553
  opacity: 0;
554
554
  position: absolute;
555
- transition: opacity 150ms ease;
555
+ transition: opacity var(--brokr-duration-base) var(--brokr-ease);
556
556
  }
557
557
 
558
558
  .brokr-profile-photo:hover .brokr-profile-photo-overlay,
@@ -594,7 +594,7 @@ var ACCOUNT_CSS = `
594
594
  .brokr-account-sidebar-kicker {
595
595
  color: var(--brokr-text-secondary);
596
596
  font-size: 0.68rem;
597
- font-weight: 700;
597
+ font-weight: var(--brokr-font-weight-bold);
598
598
  letter-spacing: 0.12em;
599
599
  line-height: 1;
600
600
  opacity: 0.8;
@@ -619,7 +619,7 @@ var ACCOUNT_CSS = `
619
619
  display: inline-flex;
620
620
  font: inherit;
621
621
  font-size: var(--brokr-font-size-sm);
622
- font-weight: 600;
622
+ font-weight: var(--brokr-font-weight-semibold);
623
623
  gap: 0.7rem;
624
624
  justify-content: flex-start;
625
625
  line-height: 1;
@@ -764,11 +764,11 @@ var ACCOUNT_CSS = `
764
764
  align-items: center;
765
765
  background: color-mix(in srgb, var(--brokr-text-primary) 6%, transparent);
766
766
  border: 1px solid var(--brokr-muted-border);
767
- border-radius: 999px;
767
+ border-radius: var(--brokr-radius-pill);
768
768
  color: var(--brokr-text-secondary);
769
769
  display: inline-flex;
770
770
  font-size: 0.75rem;
771
- font-weight: 600;
771
+ font-weight: var(--brokr-font-weight-semibold);
772
772
  gap: 0.35rem;
773
773
  min-height: 28px;
774
774
  padding: 0 0.7rem;
@@ -801,14 +801,14 @@ var ACCOUNT_CSS = `
801
801
  .brokr-account-summary-copy strong {
802
802
  color: var(--brokr-text-primary);
803
803
  font-size: 1.05rem;
804
- font-weight: 600;
804
+ font-weight: var(--brokr-font-weight-semibold);
805
805
  letter-spacing: -0.02em;
806
806
  }
807
807
 
808
808
  .brokr-account-summary-kicker {
809
809
  color: var(--brokr-text-secondary);
810
810
  font-size: 0.72rem;
811
- font-weight: 700;
811
+ font-weight: var(--brokr-font-weight-bold);
812
812
  letter-spacing: 0.12em;
813
813
  text-transform: uppercase;
814
814
  }
@@ -817,7 +817,7 @@ var ACCOUNT_CSS = `
817
817
  align-items: center;
818
818
  background: color-mix(in srgb, var(--brokr-text-primary) 6%, transparent);
819
819
  border: 1px solid var(--brokr-muted-border);
820
- border-radius: 10px;
820
+ border-radius: calc(var(--brokr-radius-card) + 2px);
821
821
  color: var(--brokr-text-secondary);
822
822
  display: inline-flex;
823
823
  height: 40px;
@@ -854,7 +854,7 @@ var ACCOUNT_CSS = `
854
854
  .brokr-account-session-info strong {
855
855
  color: var(--brokr-text-primary);
856
856
  font-size: var(--brokr-font-size-sm);
857
- font-weight: 600;
857
+ font-weight: var(--brokr-font-weight-semibold);
858
858
  }
859
859
 
860
860
  .brokr-account-session-detail,
@@ -877,11 +877,11 @@ var ACCOUNT_CSS = `
877
877
  cursor: pointer;
878
878
  font: inherit;
879
879
  font-size: 0.8125rem;
880
- font-weight: 600;
880
+ font-weight: var(--brokr-font-weight-semibold);
881
881
  min-height: 34px;
882
882
  padding: 0 0.7rem;
883
883
  text-decoration: none;
884
- 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);
885
885
  }
886
886
 
887
887
  .brokr-account-link-button:hover {
@@ -942,7 +942,7 @@ var ACCOUNT_CSS = `
942
942
  .brokr-account-menu-copy strong {
943
943
  color: var(--brokr-text-primary);
944
944
  font-size: 0.95rem;
945
- font-weight: 600;
945
+ font-weight: var(--brokr-font-weight-semibold);
946
946
  overflow: hidden;
947
947
  text-overflow: ellipsis;
948
948
  white-space: nowrap;
@@ -974,7 +974,7 @@ var ACCOUNT_CSS = `
974
974
  display: inline-flex;
975
975
  font: inherit;
976
976
  font-size: var(--brokr-font-size-sm);
977
- font-weight: 600;
977
+ font-weight: var(--brokr-font-weight-semibold);
978
978
  gap: 0.65rem;
979
979
  justify-content: flex-start;
980
980
  min-height: 38px;
@@ -1067,91 +1067,165 @@ var CHAT_CSS = `
1067
1067
  }
1068
1068
 
1069
1069
  .brokr-ai-chat-sidebar {
1070
+ align-content: start;
1071
+ background: transparent;
1070
1072
  border-right: 1px solid var(--brokr-muted-border);
1071
1073
  display: grid;
1072
- gap: var(--brokr-space-4);
1073
- padding: var(--brokr-space-4);
1074
- align-content: start;
1075
- overflow-y: auto;
1074
+ gap: var(--brokr-space-3);
1076
1075
  height: 100%;
1077
1076
  max-height: 100%;
1078
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;
1079
1135
  }
1080
1136
 
1081
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);
1082
1141
  display: flex;
1083
1142
  flex: 1;
1084
- align-items: center;
1085
1143
  justify-content: center;
1086
- padding: var(--brokr-space-6) var(--brokr-space-4);
1144
+ padding: var(--brokr-space-5) var(--brokr-space-4);
1087
1145
  }
1088
1146
 
1089
1147
  .brokr-ai-chat-sidebar-empty-text {
1090
1148
  color: var(--brokr-text-secondary);
1091
1149
  font-size: var(--brokr-font-size-xs);
1092
- line-height: 1.5;
1150
+ line-height: var(--brokr-leading-normal);
1093
1151
  text-align: center;
1094
1152
  opacity: 0.6;
1095
1153
  }
1096
1154
 
1097
1155
  .brokr-ai-chat-sidebar-button {
1098
1156
  align-items: center;
1099
- background: transparent;
1100
- border: none;
1157
+ appearance: none;
1158
+ background: var(--brokr-subtle-fill);
1159
+ border: 1px solid var(--brokr-muted-border);
1101
1160
  border-radius: var(--brokr-radius-button);
1102
1161
  color: var(--brokr-text-secondary);
1103
1162
  cursor: pointer;
1104
1163
  display: inline-flex;
1105
1164
  font: inherit;
1106
1165
  font-size: var(--brokr-font-size-xs);
1107
- font-weight: 500;
1166
+ font-weight: var(--brokr-font-weight-medium);
1108
1167
  gap: var(--brokr-space-2);
1109
- justify-content: flex-start;
1110
- padding: 0.5rem 0.65rem;
1111
- padding-bottom: 0.65rem;
1112
- margin-bottom: var(--brokr-space-2);
1113
- border-bottom: 1px solid var(--brokr-muted-border);
1114
- border-radius: 0;
1115
- transition: color 120ms ease;
1116
- 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);
1117
1174
  }
1118
1175
 
1119
1176
  .brokr-ai-chat-sidebar-button:hover {
1177
+ background: var(--brokr-subtle-fill-strong);
1120
1178
  color: var(--brokr-text-primary);
1121
1179
  }
1122
1180
 
1123
1181
  .brokr-ai-chat-conversations {
1124
1182
  display: grid;
1125
- gap: 2px;
1183
+ gap: var(--brokr-space-1);
1126
1184
  }
1127
1185
 
1128
1186
  .brokr-ai-chat-conversation {
1129
1187
  appearance: none;
1188
+ align-items: center;
1130
1189
  background: transparent;
1131
- border: none;
1190
+ border: 1px solid transparent;
1132
1191
  border-radius: var(--brokr-radius-button);
1133
1192
  color: var(--brokr-text-secondary);
1134
1193
  cursor: pointer;
1194
+ display: inline-flex;
1135
1195
  font: inherit;
1136
1196
  font-size: var(--brokr-font-size-xs);
1137
- 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));
1138
1200
  overflow: hidden;
1139
- padding: 0.5rem 0.65rem;
1201
+ padding: 0 var(--brokr-space-3);
1140
1202
  text-align: left;
1141
- text-overflow: ellipsis;
1142
- transition: color 120ms ease, background 120ms ease;
1143
- 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%;
1144
1208
  }
1145
1209
 
1146
1210
  .brokr-ai-chat-conversation:hover {
1211
+ border-color: color-mix(in srgb, var(--brokr-text-primary) 9%, transparent);
1147
1212
  color: var(--brokr-text-primary);
1148
1213
  background: var(--brokr-subtle-fill);
1149
1214
  }
1150
1215
 
1151
1216
  .brokr-ai-chat-conversation[data-active="true"] {
1217
+ border-color: color-mix(in srgb, var(--brokr-text-primary) 12%, transparent);
1152
1218
  color: var(--brokr-text-primary);
1153
- background: var(--brokr-subtle-fill);
1154
- 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;
1155
1229
  }
1156
1230
 
1157
1231
  .brokr-ai-chat-stage {
@@ -1203,7 +1277,7 @@ var CHAT_CSS = `
1203
1277
  .brokr-ai-chat-title-loading span {
1204
1278
  animation: brokrTypingBounce 1.2s ease-in-out infinite;
1205
1279
  background: color-mix(in srgb, var(--brokr-text-primary) 50%, transparent);
1206
- border-radius: 999px;
1280
+ border-radius: var(--brokr-radius-pill);
1207
1281
  display: inline-block;
1208
1282
  height: 0.28rem;
1209
1283
  width: 0.28rem;
@@ -1412,7 +1486,7 @@ var CHAT_CSS = `
1412
1486
  .brokr-ai-chat-typing span {
1413
1487
  animation: brokrTypingBounce 1.2s ease-in-out infinite;
1414
1488
  background: color-mix(in srgb, var(--brokr-text-primary) 70%, transparent);
1415
- border-radius: 999px;
1489
+ border-radius: var(--brokr-radius-pill);
1416
1490
  display: inline-block;
1417
1491
  height: 0.42rem;
1418
1492
  width: 0.42rem;
@@ -1447,11 +1521,11 @@ var CHAT_EXTRAS_CSS = `
1447
1521
  display: inline-flex;
1448
1522
  font: inherit;
1449
1523
  font-size: var(--brokr-font-size-sm);
1450
- font-weight: 600;
1524
+ font-weight: var(--brokr-font-weight-semibold);
1451
1525
  gap: var(--brokr-space-2);
1452
1526
  min-height: 36px;
1453
1527
  padding: 0 0.75rem;
1454
- transition: background-color 120ms ease;
1528
+ transition: background-color var(--brokr-duration-base) var(--brokr-ease);
1455
1529
  white-space: nowrap;
1456
1530
  }
1457
1531
 
@@ -1490,7 +1564,7 @@ var CHAT_EXTRAS_CSS = `
1490
1564
  gap: var(--brokr-space-2);
1491
1565
  padding: 0.5rem 0.75rem;
1492
1566
  text-align: left;
1493
- transition: background-color 100ms ease;
1567
+ transition: background-color var(--brokr-duration-fast) var(--brokr-ease);
1494
1568
  width: 100%;
1495
1569
  }
1496
1570
 
@@ -1512,7 +1586,7 @@ var CHAT_EXTRAS_CSS = `
1512
1586
  }
1513
1587
 
1514
1588
  .brokr-model-dot {
1515
- border-radius: 999px;
1589
+ border-radius: var(--brokr-radius-pill);
1516
1590
  display: inline-block;
1517
1591
  flex-shrink: 0;
1518
1592
  height: 8px;
@@ -1596,7 +1670,7 @@ var CHAT_EXTRAS_CSS = `
1596
1670
  gap: var(--brokr-space-2);
1597
1671
  padding: 0.5rem 0.75rem;
1598
1672
  text-align: left;
1599
- transition: background-color 100ms ease;
1673
+ transition: background-color var(--brokr-duration-fast) var(--brokr-ease);
1600
1674
  width: 100%;
1601
1675
  }
1602
1676
 
@@ -1638,7 +1712,7 @@ var CHAT_EXTRAS_CSS = `
1638
1712
  position: absolute;
1639
1713
  right: 0;
1640
1714
  top: -4px;
1641
- 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);
1642
1716
  width: 26px;
1643
1717
  }
1644
1718
 
@@ -1749,8 +1823,9 @@ var CHAT_EXTRAS_CSS = `
1749
1823
  color: var(--brokr-text-primary);
1750
1824
  font: inherit;
1751
1825
  font-size: var(--brokr-font-size-xs);
1826
+ min-height: calc(var(--brokr-space-8) + var(--brokr-space-1));
1752
1827
  outline: none;
1753
- padding: 0.5rem 0.65rem;
1828
+ padding: 0 var(--brokr-space-3);
1754
1829
  width: 100%;
1755
1830
  }
1756
1831
 
@@ -1772,6 +1847,44 @@ var COMPOSITES_CSS = `
1772
1847
  z-index: var(--brokr-z-fab);
1773
1848
  }
1774
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;
1886
+ }
1887
+
1775
1888
  .brokr-chat-panel {
1776
1889
  display: grid;
1777
1890
  gap: var(--brokr-space-4);
@@ -1821,23 +1934,6 @@ var COMPOSITES_CSS = `
1821
1934
  padding: var(--brokr-space-2);
1822
1935
  }
1823
1936
 
1824
- .brokr-chat-starters {
1825
- display: flex;
1826
- flex-wrap: wrap;
1827
- gap: var(--brokr-space-2);
1828
- }
1829
-
1830
- .brokr-chat-starter {
1831
- background: var(--brokr-subtle-fill);
1832
- border: 1px solid var(--brokr-muted-border);
1833
- border-radius: 999px;
1834
- color: var(--brokr-text-primary);
1835
- cursor: pointer;
1836
- font: inherit;
1837
- min-height: 36px;
1838
- padding: 0 0.9rem;
1839
- }
1840
-
1841
1937
  .brokr-chat-bubble[data-role="user"] {
1842
1938
  background: color-mix(in srgb, var(--brokr-primary) 10%, var(--brokr-surface));
1843
1939
  justify-self: end;
@@ -1901,7 +1997,7 @@ var COMPOSITES_CSS = `
1901
1997
  min-height: 220px;
1902
1998
  padding: var(--brokr-space-6);
1903
1999
  text-align: center;
1904
- 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);
1905
2001
  }
1906
2002
 
1907
2003
  .brokr-upload-dropzone[data-drag="true"] {
@@ -1922,13 +2018,23 @@ var COMPOSITES_CSS = `
1922
2018
  // src/react/css/gates.ts
1923
2019
  var GATES_CSS = `
1924
2020
  .brokr-plan-card {
1925
- display: grid;
2021
+ display: flex;
2022
+ flex-direction: column;
1926
2023
  gap: var(--brokr-space-5);
1927
2024
  min-height: 100%;
1928
2025
  padding: var(--brokr-space-6);
1929
2026
  position: relative;
1930
2027
  }
1931
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
+
1932
2038
  .brokr-plan-card[data-highlight="true"] {
1933
2039
  background: color-mix(in srgb, var(--brokr-surface) 86%, var(--brokr-bg));
1934
2040
  transform: translateY(-2px);
@@ -1942,7 +2048,7 @@ var GATES_CSS = `
1942
2048
 
1943
2049
  .brokr-plan-value {
1944
2050
  font-size: clamp(2rem, 4vw, 3rem);
1945
- font-weight: 700;
2051
+ font-weight: var(--brokr-font-weight-bold);
1946
2052
  letter-spacing: -0.05em;
1947
2053
  line-height: 1;
1948
2054
  }
@@ -1965,7 +2071,7 @@ var GATES_CSS = `
1965
2071
 
1966
2072
  .brokr-feature-bullet {
1967
2073
  background: var(--brokr-text-primary);
1968
- border-radius: 999px;
2074
+ border-radius: var(--brokr-radius-pill);
1969
2075
  height: 6px;
1970
2076
  margin-top: 0.45rem;
1971
2077
  opacity: 0.75;
@@ -1985,7 +2091,7 @@ var GATES_CSS = `
1985
2091
 
1986
2092
  .brokr-meter-bar {
1987
2093
  background: var(--brokr-subtle-fill);
1988
- border-radius: 999px;
2094
+ border-radius: var(--brokr-radius-pill);
1989
2095
  height: 8px;
1990
2096
  overflow: hidden;
1991
2097
  width: 100%;
@@ -1995,7 +2101,7 @@ var GATES_CSS = `
1995
2101
  background: var(--brokr-primary);
1996
2102
  border-radius: inherit;
1997
2103
  height: 100%;
1998
- transition: width 150ms ease;
2104
+ transition: width var(--brokr-duration-base) var(--brokr-ease);
1999
2105
  }
2000
2106
  `;
2001
2107
 
@@ -2010,7 +2116,7 @@ var SKELETON_CSS = `
2010
2116
  color-mix(in srgb, var(--brokr-text-primary) 5%, transparent) 100%
2011
2117
  );
2012
2118
  background-size: 200% 100%;
2013
- border-radius: 999px;
2119
+ border-radius: var(--brokr-radius-pill);
2014
2120
  min-height: 16px;
2015
2121
  }
2016
2122
  `;
@@ -2034,16 +2140,20 @@ var MARKDOWN_CSS = `
2034
2140
 
2035
2141
  .brokr-md strong {
2036
2142
  color: var(--brokr-text-primary);
2037
- font-weight: 600;
2143
+ font-weight: var(--brokr-font-weight-semibold);
2038
2144
  }
2039
2145
 
2040
2146
  .brokr-md em {
2041
2147
  font-style: italic;
2042
2148
  }
2043
2149
 
2150
+ .brokr-md del {
2151
+ opacity: 0.85;
2152
+ }
2153
+
2044
2154
  .brokr-md-inline-code {
2045
2155
  background: var(--brokr-subtle-fill-strong);
2046
- border-radius: 4px;
2156
+ border-radius: var(--brokr-radius-sm);
2047
2157
  color: var(--brokr-primary);
2048
2158
  font-family: var(--brokr-font-mono);
2049
2159
  font-size: 0.85em;
@@ -2062,7 +2172,7 @@ var MARKDOWN_CSS = `
2062
2172
 
2063
2173
  .brokr-md-heading {
2064
2174
  color: var(--brokr-text-primary);
2065
- font-weight: 600;
2175
+ font-weight: var(--brokr-font-weight-semibold);
2066
2176
  line-height: 1.3;
2067
2177
  margin: 1.2em 0 0.5em;
2068
2178
  }
@@ -2085,7 +2195,6 @@ var MARKDOWN_CSS = `
2085
2195
  }
2086
2196
 
2087
2197
  .brokr-md-list {
2088
- list-style: none;
2089
2198
  margin: 0.5em 0;
2090
2199
  padding: 0 0 0 1.2em;
2091
2200
  }
@@ -2093,16 +2202,85 @@ var MARKDOWN_CSS = `
2093
2202
  .brokr-md-list li {
2094
2203
  line-height: 1.7;
2095
2204
  margin-bottom: 0.25em;
2205
+ }
2206
+
2207
+ .brokr-md-list-unordered {
2208
+ list-style: none;
2209
+ }
2210
+
2211
+ .brokr-md-list-unordered li {
2096
2212
  position: relative;
2097
2213
  }
2098
2214
 
2099
- .brokr-md-list li::before {
2215
+ .brokr-md-list-unordered li::before {
2100
2216
  content: '\u2022';
2101
2217
  color: var(--brokr-text-secondary);
2102
2218
  left: -1em;
2103
2219
  position: absolute;
2104
2220
  }
2105
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
+
2106
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 */
2107
2285
 
2108
2286
  .brokr-md-codeblock {
@@ -2125,7 +2303,7 @@ var MARKDOWN_CSS = `
2125
2303
  .brokr-md-codeblock-lang {
2126
2304
  color: var(--brokr-text-secondary);
2127
2305
  font-family: var(--brokr-font-mono);
2128
- font-weight: 500;
2306
+ font-weight: var(--brokr-font-weight-medium);
2129
2307
  text-transform: lowercase;
2130
2308
  }
2131
2309
 
@@ -2141,7 +2319,7 @@ var MARKDOWN_CSS = `
2141
2319
  gap: 0.35em;
2142
2320
  padding: 0.15em 0.4em;
2143
2321
  border-radius: var(--brokr-radius-button);
2144
- 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);
2145
2323
  }
2146
2324
 
2147
2325
  .brokr-md-codeblock-copy:hover {
@@ -2277,7 +2455,8 @@ var RESPONSIVE_CSS = `
2277
2455
  }
2278
2456
 
2279
2457
  .brokr-ai-chat-model-select,
2280
- .brokr-ai-chat-sidebar-button {
2458
+ .brokr-ai-chat-sidebar-button,
2459
+ .brokr-ai-chat-sidebar-new-chat {
2281
2460
  width: 100%;
2282
2461
  }
2283
2462
 
@@ -2742,8 +2921,274 @@ var NOTIFICATIONS_CSS = `
2742
2921
  }
2743
2922
  `;
2744
2923
 
2924
+ // src/react/css/data-table.ts
2925
+ var DATA_TABLE_CSS = `
2926
+ .brokr-dt-wrap {
2927
+ border: 1px solid var(--brokr-muted-border);
2928
+ border-radius: calc(var(--brokr-radius-card) + 2px);
2929
+ overflow: hidden;
2930
+ }
2931
+
2932
+ .brokr-dt-scroll {
2933
+ overflow-x: auto;
2934
+ scrollbar-width: thin;
2935
+ scrollbar-color: color-mix(in srgb, var(--brokr-text-primary) 12%, transparent) transparent;
2936
+ }
2937
+
2938
+ .brokr-dt {
2939
+ border-collapse: collapse;
2940
+ min-width: 100%;
2941
+ width: 100%;
2942
+ }
2943
+
2944
+ .brokr-dt-th {
2945
+ background: var(--brokr-subtle-fill);
2946
+ border-bottom: 1px solid var(--brokr-muted-border);
2947
+ color: var(--brokr-text-secondary);
2948
+ font-size: var(--brokr-font-size-xs);
2949
+ font-weight: var(--brokr-font-weight-semibold);
2950
+ letter-spacing: 0.03em;
2951
+ line-height: var(--brokr-leading-snug);
2952
+ padding: var(--brokr-space-3) var(--brokr-space-4);
2953
+ text-align: left;
2954
+ text-transform: uppercase;
2955
+ white-space: nowrap;
2956
+ }
2957
+
2958
+ .brokr-dt-th--sortable {
2959
+ padding: 0;
2960
+ }
2961
+
2962
+ .brokr-dt-sort-btn {
2963
+ align-items: center;
2964
+ appearance: none;
2965
+ background: transparent;
2966
+ border: none;
2967
+ color: inherit;
2968
+ cursor: pointer;
2969
+ display: inline-flex;
2970
+ font: inherit;
2971
+ font-size: inherit;
2972
+ font-weight: inherit;
2973
+ gap: var(--brokr-space-1);
2974
+ letter-spacing: inherit;
2975
+ padding: var(--brokr-space-3) var(--brokr-space-4);
2976
+ text-transform: inherit;
2977
+ width: 100%;
2978
+ }
2979
+
2980
+ .brokr-dt-sort-btn:hover {
2981
+ color: var(--brokr-text-primary);
2982
+ }
2983
+
2984
+ .brokr-dt-td {
2985
+ border-bottom: 1px solid color-mix(in srgb, var(--brokr-border) 40%, transparent);
2986
+ color: var(--brokr-text-primary);
2987
+ font-size: var(--brokr-font-size-sm);
2988
+ line-height: var(--brokr-leading-snug);
2989
+ padding: var(--brokr-space-3) var(--brokr-space-4);
2990
+ vertical-align: middle;
2991
+ }
2992
+
2993
+ .brokr-dt-row:last-child .brokr-dt-td {
2994
+ border-bottom: none;
2995
+ }
2996
+
2997
+ .brokr-dt-row--clickable {
2998
+ cursor: pointer;
2999
+ transition: background-color var(--brokr-duration-fast) var(--brokr-ease);
3000
+ }
3001
+
3002
+ .brokr-dt-row--clickable:hover {
3003
+ background: var(--brokr-subtle-fill);
3004
+ }
3005
+
3006
+ .brokr-dt-empty {
3007
+ align-items: center;
3008
+ display: flex;
3009
+ justify-content: center;
3010
+ min-height: 120px;
3011
+ padding: var(--brokr-space-8);
3012
+ }
3013
+
3014
+ .brokr-dt-pagination {
3015
+ align-items: center;
3016
+ border-top: 1px solid var(--brokr-muted-border);
3017
+ display: flex;
3018
+ justify-content: space-between;
3019
+ padding: var(--brokr-space-3) var(--brokr-space-4);
3020
+ }
3021
+
3022
+ .brokr-dt-pagination-info {
3023
+ color: var(--brokr-text-secondary);
3024
+ font-size: var(--brokr-font-size-xs);
3025
+ }
3026
+
3027
+ .brokr-dt-pagination-btns {
3028
+ align-items: center;
3029
+ display: flex;
3030
+ gap: var(--brokr-space-2);
3031
+ }
3032
+
3033
+ .brokr-dt-page-btn {
3034
+ min-height: 32px;
3035
+ min-width: 32px;
3036
+ padding: 0;
3037
+ }
3038
+
3039
+ .brokr-dt-page-label {
3040
+ color: var(--brokr-text-secondary);
3041
+ font-size: var(--brokr-font-size-xs);
3042
+ min-width: 48px;
3043
+ text-align: center;
3044
+ }
3045
+ `;
3046
+
3047
+ // src/react/css/stats-grid.ts
3048
+ var STATS_GRID_CSS = `
3049
+ .brokr-stats-grid {
3050
+ display: grid;
3051
+ gap: var(--brokr-space-4);
3052
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
3053
+ }
3054
+
3055
+ .brokr-metric-card {
3056
+ display: flex;
3057
+ flex-direction: column;
3058
+ gap: var(--brokr-space-2);
3059
+ padding: var(--brokr-space-5);
3060
+ }
3061
+
3062
+ .brokr-metric-label {
3063
+ color: var(--brokr-text-secondary);
3064
+ font-size: var(--brokr-font-size-xs);
3065
+ font-weight: var(--brokr-font-weight-medium);
3066
+ letter-spacing: 0.02em;
3067
+ text-transform: uppercase;
3068
+ }
3069
+
3070
+ .brokr-metric-row {
3071
+ align-items: baseline;
3072
+ display: flex;
3073
+ gap: var(--brokr-space-2);
3074
+ }
3075
+
3076
+ .brokr-metric-value {
3077
+ color: var(--brokr-text-primary);
3078
+ font-size: var(--brokr-font-size-xl);
3079
+ font-weight: var(--brokr-font-weight-bold);
3080
+ letter-spacing: -0.03em;
3081
+ line-height: 1;
3082
+ }
3083
+
3084
+ .brokr-metric-trend {
3085
+ font-size: var(--brokr-font-size-xs);
3086
+ font-weight: var(--brokr-font-weight-semibold);
3087
+ line-height: 1;
3088
+ }
3089
+
3090
+ .brokr-metric-trend--up {
3091
+ color: var(--brokr-success, #22c55e);
3092
+ }
3093
+
3094
+ .brokr-metric-trend--down {
3095
+ color: var(--brokr-error, #ef4444);
3096
+ }
3097
+
3098
+ .brokr-metric-sparkline {
3099
+ height: 24px;
3100
+ margin-top: var(--brokr-space-1);
3101
+ width: 100%;
3102
+ }
3103
+ `;
3104
+
3105
+ // src/react/css/activity-feed.ts
3106
+ var ACTIVITY_FEED_CSS = `
3107
+ .brokr-feed {
3108
+ display: flex;
3109
+ flex-direction: column;
3110
+ }
3111
+
3112
+ .brokr-feed-item {
3113
+ align-items: flex-start;
3114
+ display: flex;
3115
+ gap: var(--brokr-space-3);
3116
+ padding: var(--brokr-space-3) 0;
3117
+ position: relative;
3118
+ }
3119
+
3120
+ .brokr-feed-item + .brokr-feed-item {
3121
+ border-top: 1px solid color-mix(in srgb, var(--brokr-border) 40%, transparent);
3122
+ }
3123
+
3124
+ .brokr-feed-dot {
3125
+ background: var(--brokr-text-secondary);
3126
+ border-radius: var(--brokr-radius-pill);
3127
+ flex-shrink: 0;
3128
+ height: 8px;
3129
+ margin-top: 5px;
3130
+ width: 8px;
3131
+ }
3132
+
3133
+ .brokr-feed-dot--success { background: var(--brokr-success, #22c55e); }
3134
+ .brokr-feed-dot--error { background: var(--brokr-error, #ef4444); }
3135
+ .brokr-feed-dot--warning { background: var(--brokr-warning, #f59e0b); }
3136
+ .brokr-feed-dot--default { background: var(--brokr-primary); }
3137
+
3138
+ .brokr-feed-content {
3139
+ display: flex;
3140
+ flex: 1;
3141
+ flex-direction: column;
3142
+ gap: 2px;
3143
+ min-width: 0;
3144
+ }
3145
+
3146
+ .brokr-feed-title {
3147
+ color: var(--brokr-text-primary);
3148
+ font-size: var(--brokr-font-size-sm);
3149
+ font-weight: var(--brokr-font-weight-medium);
3150
+ line-height: var(--brokr-leading-snug);
3151
+ }
3152
+
3153
+ .brokr-feed-message {
3154
+ color: var(--brokr-text-secondary);
3155
+ display: -webkit-box;
3156
+ font-size: var(--brokr-font-size-xs);
3157
+ line-height: var(--brokr-leading-snug);
3158
+ overflow: hidden;
3159
+ -webkit-box-orient: vertical;
3160
+ -webkit-line-clamp: 2;
3161
+ }
3162
+
3163
+ .brokr-feed-time {
3164
+ color: var(--brokr-text-secondary);
3165
+ flex-shrink: 0;
3166
+ font-size: 11px;
3167
+ margin-top: 2px;
3168
+ opacity: 0.6;
3169
+ white-space: nowrap;
3170
+ }
3171
+
3172
+ .brokr-feed-empty {
3173
+ align-items: center;
3174
+ display: flex;
3175
+ justify-content: center;
3176
+ min-height: 80px;
3177
+ padding: var(--brokr-space-6);
3178
+ }
3179
+ `;
3180
+
3181
+ // src/react/css/usage-grid.ts
3182
+ var USAGE_GRID_CSS = `
3183
+ .brokr-usage-grid {
3184
+ display: grid;
3185
+ gap: var(--brokr-space-4);
3186
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
3187
+ }
3188
+ `;
3189
+
2745
3190
  // src/react/css/index.ts
2746
- var BROKR_GLOBAL_CSS = TOKENS_CSS + RESET_CSS + PRIMITIVES_CSS + AUTH_CSS + GATES_CSS + ACCOUNT_CSS + COMPOSITES_CSS + CHAT_CSS + SKELETON_CSS + ANIMATIONS_CSS + CHAT_EXTRAS_CSS + MARKDOWN_CSS + RESPONSIVE_CSS + NOTIFICATIONS_CSS;
3191
+ var BROKR_GLOBAL_CSS = TOKENS_CSS + RESET_CSS + PRIMITIVES_CSS + AUTH_CSS + GATES_CSS + ACCOUNT_CSS + COMPOSITES_CSS + CHAT_CSS + SKELETON_CSS + ANIMATIONS_CSS + CHAT_EXTRAS_CSS + MARKDOWN_CSS + RESPONSIVE_CSS + NOTIFICATIONS_CSS + DATA_TABLE_CSS + STATS_GRID_CSS + ACTIVITY_FEED_CSS + USAGE_GRID_CSS;
2747
3192
 
2748
3193
  // src/react/styles-entry.tsx
2749
3194
  function BrokrStyles() {