@brokr/sdk 2.1.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 (58) 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 +273 -94
  8. package/dist/react-styles.mjs +273 -94
  9. package/dist/react.js +329 -81
  10. package/dist/react.mjs +335 -87
  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/auth.d.ts +1 -1
  38. package/dist/src/react/css/auth.d.ts.map +1 -1
  39. package/dist/src/react/css/chat-extras.d.ts +1 -1
  40. package/dist/src/react/css/chat-extras.d.ts.map +1 -1
  41. package/dist/src/react/css/chat.d.ts +1 -1
  42. package/dist/src/react/css/chat.d.ts.map +1 -1
  43. package/dist/src/react/css/composites.d.ts +1 -1
  44. package/dist/src/react/css/composites.d.ts.map +1 -1
  45. package/dist/src/react/css/gates.d.ts +1 -1
  46. package/dist/src/react/css/gates.d.ts.map +1 -1
  47. package/dist/src/react/css/markdown.d.ts +1 -1
  48. package/dist/src/react/css/markdown.d.ts.map +1 -1
  49. package/dist/src/react/css/primitives.d.ts +1 -1
  50. package/dist/src/react/css/primitives.d.ts.map +1 -1
  51. package/dist/src/react/css/reset.d.ts +1 -1
  52. package/dist/src/react/css/reset.d.ts.map +1 -1
  53. package/dist/src/react/css/responsive.d.ts +1 -1
  54. package/dist/src/react/css/responsive.d.ts.map +1 -1
  55. package/dist/src/react/css/skeleton.d.ts +1 -1
  56. package/dist/src/react/css/skeleton.d.ts.map +1 -1
  57. package/dist/tsconfig.tsbuildinfo +1 -1
  58. package/package.json +1 -1
@@ -85,7 +85,7 @@ var RESET_CSS = `
85
85
  .brokr-root *::-webkit-scrollbar-thumb {
86
86
  background: color-mix(in srgb, var(--brokr-text-primary) 16%, transparent);
87
87
  border: 3px solid transparent;
88
- border-radius: 999px;
88
+ border-radius: var(--brokr-radius-pill);
89
89
  background-clip: padding-box;
90
90
  }
91
91
 
@@ -123,11 +123,11 @@ var PRIMITIVES_CSS = `
123
123
  gap: var(--brokr-space-2);
124
124
  font: inherit;
125
125
  font-size: var(--brokr-font-size-sm);
126
- font-weight: 600;
126
+ font-weight: var(--brokr-font-weight-semibold);
127
127
  min-height: 44px;
128
128
  padding: 0 var(--brokr-space-4);
129
129
  text-decoration: none;
130
- transition: background-color 150ms ease, border-color 150ms ease, transform 150ms ease, opacity 150ms ease;
130
+ 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);
131
131
  }
132
132
 
133
133
  .brokr-button:hover,
@@ -174,7 +174,7 @@ var PRIMITIVES_CSS = `
174
174
  font-size: var(--brokr-font-size-sm);
175
175
  min-height: 44px;
176
176
  padding: 0.825rem 0.95rem;
177
- transition: border-color 150ms ease, background-color 150ms ease;
177
+ transition: border-color var(--brokr-duration-base) var(--brokr-ease), background-color var(--brokr-duration-base) var(--brokr-ease);
178
178
  }
179
179
 
180
180
  .brokr-input::placeholder,
@@ -203,7 +203,7 @@ var PRIMITIVES_CSS = `
203
203
  color: var(--brokr-text-secondary);
204
204
  display: block;
205
205
  font-size: var(--brokr-font-size-xs);
206
- font-weight: 600;
206
+ font-weight: var(--brokr-font-weight-semibold);
207
207
  letter-spacing: 0.02em;
208
208
  margin-bottom: var(--brokr-space-2);
209
209
  text-transform: uppercase;
@@ -212,7 +212,7 @@ var PRIMITIVES_CSS = `
212
212
  .brokr-title {
213
213
  color: var(--brokr-text-primary);
214
214
  font-size: var(--brokr-font-size-xl);
215
- font-weight: 700;
215
+ font-weight: var(--brokr-font-weight-bold);
216
216
  letter-spacing: -0.03em;
217
217
  margin: 0;
218
218
  }
@@ -220,7 +220,7 @@ var PRIMITIVES_CSS = `
220
220
  .brokr-heading {
221
221
  color: var(--brokr-text-primary);
222
222
  font-size: var(--brokr-font-size-2xl);
223
- font-weight: 700;
223
+ font-weight: var(--brokr-font-weight-bold);
224
224
  letter-spacing: -0.04em;
225
225
  line-height: 1;
226
226
  margin: 0;
@@ -247,11 +247,11 @@ var PRIMITIVES_CSS = `
247
247
  .brokr-badge {
248
248
  align-items: center;
249
249
  border: 1px solid var(--brokr-muted-border);
250
- border-radius: 999px;
250
+ border-radius: var(--brokr-radius-pill);
251
251
  color: var(--brokr-text-secondary);
252
252
  display: inline-flex;
253
253
  font-size: var(--brokr-font-size-xs);
254
- font-weight: 700;
254
+ font-weight: var(--brokr-font-weight-bold);
255
255
  gap: var(--brokr-space-1);
256
256
  letter-spacing: 0.06em;
257
257
  min-height: 28px;
@@ -353,7 +353,7 @@ var AUTH_CSS = `
353
353
  .brokr-brand-name {
354
354
  color: var(--brokr-text-primary);
355
355
  font-size: var(--brokr-font-size-sm);
356
- font-weight: 700;
356
+ font-weight: var(--brokr-font-weight-bold);
357
357
  letter-spacing: 0.08em;
358
358
  text-transform: uppercase;
359
359
  }
@@ -416,7 +416,7 @@ var ACCOUNT_CSS = `
416
416
  }
417
417
 
418
418
  .brokr-account-trigger[data-display="avatar"] {
419
- border-radius: 999px;
419
+ border-radius: var(--brokr-radius-pill);
420
420
  gap: 0;
421
421
  justify-content: center;
422
422
  min-width: 44px;
@@ -427,10 +427,10 @@ var ACCOUNT_CSS = `
427
427
  .brokr-avatar-lg {
428
428
  align-items: center;
429
429
  background: var(--brokr-subtle-fill-strong);
430
- border-radius: 999px;
430
+ border-radius: var(--brokr-radius-pill);
431
431
  color: var(--brokr-text-primary);
432
432
  display: inline-flex;
433
- font-weight: 700;
433
+ font-weight: var(--brokr-font-weight-bold);
434
434
  justify-content: center;
435
435
  overflow: hidden;
436
436
  }
@@ -517,7 +517,7 @@ var ACCOUNT_CSS = `
517
517
  inset: 0;
518
518
  opacity: 0;
519
519
  position: absolute;
520
- transition: opacity 150ms ease;
520
+ transition: opacity var(--brokr-duration-base) var(--brokr-ease);
521
521
  }
522
522
 
523
523
  .brokr-profile-photo:hover .brokr-profile-photo-overlay,
@@ -559,7 +559,7 @@ var ACCOUNT_CSS = `
559
559
  .brokr-account-sidebar-kicker {
560
560
  color: var(--brokr-text-secondary);
561
561
  font-size: 0.68rem;
562
- font-weight: 700;
562
+ font-weight: var(--brokr-font-weight-bold);
563
563
  letter-spacing: 0.12em;
564
564
  line-height: 1;
565
565
  opacity: 0.8;
@@ -584,7 +584,7 @@ var ACCOUNT_CSS = `
584
584
  display: inline-flex;
585
585
  font: inherit;
586
586
  font-size: var(--brokr-font-size-sm);
587
- font-weight: 600;
587
+ font-weight: var(--brokr-font-weight-semibold);
588
588
  gap: 0.7rem;
589
589
  justify-content: flex-start;
590
590
  line-height: 1;
@@ -729,11 +729,11 @@ var ACCOUNT_CSS = `
729
729
  align-items: center;
730
730
  background: color-mix(in srgb, var(--brokr-text-primary) 6%, transparent);
731
731
  border: 1px solid var(--brokr-muted-border);
732
- border-radius: 999px;
732
+ border-radius: var(--brokr-radius-pill);
733
733
  color: var(--brokr-text-secondary);
734
734
  display: inline-flex;
735
735
  font-size: 0.75rem;
736
- font-weight: 600;
736
+ font-weight: var(--brokr-font-weight-semibold);
737
737
  gap: 0.35rem;
738
738
  min-height: 28px;
739
739
  padding: 0 0.7rem;
@@ -766,14 +766,14 @@ var ACCOUNT_CSS = `
766
766
  .brokr-account-summary-copy strong {
767
767
  color: var(--brokr-text-primary);
768
768
  font-size: 1.05rem;
769
- font-weight: 600;
769
+ font-weight: var(--brokr-font-weight-semibold);
770
770
  letter-spacing: -0.02em;
771
771
  }
772
772
 
773
773
  .brokr-account-summary-kicker {
774
774
  color: var(--brokr-text-secondary);
775
775
  font-size: 0.72rem;
776
- font-weight: 700;
776
+ font-weight: var(--brokr-font-weight-bold);
777
777
  letter-spacing: 0.12em;
778
778
  text-transform: uppercase;
779
779
  }
@@ -782,7 +782,7 @@ var ACCOUNT_CSS = `
782
782
  align-items: center;
783
783
  background: color-mix(in srgb, var(--brokr-text-primary) 6%, transparent);
784
784
  border: 1px solid var(--brokr-muted-border);
785
- border-radius: 10px;
785
+ border-radius: calc(var(--brokr-radius-card) + 2px);
786
786
  color: var(--brokr-text-secondary);
787
787
  display: inline-flex;
788
788
  height: 40px;
@@ -819,7 +819,7 @@ var ACCOUNT_CSS = `
819
819
  .brokr-account-session-info strong {
820
820
  color: var(--brokr-text-primary);
821
821
  font-size: var(--brokr-font-size-sm);
822
- font-weight: 600;
822
+ font-weight: var(--brokr-font-weight-semibold);
823
823
  }
824
824
 
825
825
  .brokr-account-session-detail,
@@ -842,11 +842,11 @@ var ACCOUNT_CSS = `
842
842
  cursor: pointer;
843
843
  font: inherit;
844
844
  font-size: 0.8125rem;
845
- font-weight: 600;
845
+ font-weight: var(--brokr-font-weight-semibold);
846
846
  min-height: 34px;
847
847
  padding: 0 0.7rem;
848
848
  text-decoration: none;
849
- transition: color 120ms ease, background-color 120ms ease, border-color 120ms ease;
849
+ 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);
850
850
  }
851
851
 
852
852
  .brokr-account-link-button:hover {
@@ -907,7 +907,7 @@ var ACCOUNT_CSS = `
907
907
  .brokr-account-menu-copy strong {
908
908
  color: var(--brokr-text-primary);
909
909
  font-size: 0.95rem;
910
- font-weight: 600;
910
+ font-weight: var(--brokr-font-weight-semibold);
911
911
  overflow: hidden;
912
912
  text-overflow: ellipsis;
913
913
  white-space: nowrap;
@@ -939,7 +939,7 @@ var ACCOUNT_CSS = `
939
939
  display: inline-flex;
940
940
  font: inherit;
941
941
  font-size: var(--brokr-font-size-sm);
942
- font-weight: 600;
942
+ font-weight: var(--brokr-font-weight-semibold);
943
943
  gap: 0.65rem;
944
944
  justify-content: flex-start;
945
945
  min-height: 38px;
@@ -1032,91 +1032,165 @@ var CHAT_CSS = `
1032
1032
  }
1033
1033
 
1034
1034
  .brokr-ai-chat-sidebar {
1035
+ align-content: start;
1036
+ background: transparent;
1035
1037
  border-right: 1px solid var(--brokr-muted-border);
1036
1038
  display: grid;
1037
- gap: var(--brokr-space-4);
1038
- padding: var(--brokr-space-4);
1039
- align-content: start;
1040
- overflow-y: auto;
1039
+ gap: var(--brokr-space-3);
1041
1040
  height: 100%;
1042
1041
  max-height: 100%;
1043
1042
  min-height: 0;
1043
+ overflow-y: auto;
1044
+ padding: var(--brokr-space-3);
1045
+ }
1046
+
1047
+ .brokr-ai-chat-sidebar-skeleton {
1048
+ display: grid;
1049
+ gap: var(--brokr-space-2);
1050
+ padding: 0 var(--brokr-space-3);
1051
+ }
1052
+
1053
+ .brokr-ai-chat-sidebar-new-chat {
1054
+ align-items: center;
1055
+ appearance: none;
1056
+ background: transparent;
1057
+ border: 1px solid var(--brokr-muted-border);
1058
+ border-radius: var(--brokr-radius-button);
1059
+ color: var(--brokr-text-secondary);
1060
+ cursor: pointer;
1061
+ display: inline-flex;
1062
+ font: inherit;
1063
+ font-size: var(--brokr-font-size-sm);
1064
+ font-weight: var(--brokr-font-weight-medium);
1065
+ gap: var(--brokr-space-2);
1066
+ justify-content: flex-start;
1067
+ min-height: 44px;
1068
+ padding: 0 var(--brokr-space-3);
1069
+ text-align: left;
1070
+ transition:
1071
+ background-color var(--brokr-duration-base) var(--brokr-ease),
1072
+ color var(--brokr-duration-base) var(--brokr-ease),
1073
+ border-color var(--brokr-duration-base) var(--brokr-ease);
1074
+ width: 100%;
1075
+ }
1076
+
1077
+ .brokr-ai-chat-sidebar-new-chat:hover {
1078
+ background: var(--brokr-subtle-fill);
1079
+ border-color: color-mix(in srgb, var(--brokr-text-primary) 15%, var(--brokr-border));
1080
+ color: var(--brokr-text-primary);
1081
+ }
1082
+
1083
+ .brokr-ai-chat-sidebar-groups {
1084
+ display: grid;
1085
+ gap: var(--brokr-space-4);
1086
+ }
1087
+
1088
+ .brokr-ai-chat-sidebar-group {
1089
+ display: grid;
1090
+ gap: var(--brokr-space-2);
1091
+ }
1092
+
1093
+ .brokr-ai-chat-sidebar-kicker {
1094
+ color: var(--brokr-text-secondary);
1095
+ font-size: var(--brokr-font-size-xs);
1096
+ font-weight: var(--brokr-font-weight-semibold);
1097
+ opacity: 0.7;
1098
+ padding: 0 var(--brokr-space-3);
1099
+ text-transform: uppercase;
1044
1100
  }
1045
1101
 
1046
1102
  .brokr-ai-chat-sidebar-empty {
1103
+ align-items: center;
1104
+ border: 1px solid var(--brokr-muted-border);
1105
+ border-radius: var(--brokr-radius-card);
1047
1106
  display: flex;
1048
1107
  flex: 1;
1049
- align-items: center;
1050
1108
  justify-content: center;
1051
- padding: var(--brokr-space-6) var(--brokr-space-4);
1109
+ padding: var(--brokr-space-5) var(--brokr-space-4);
1052
1110
  }
1053
1111
 
1054
1112
  .brokr-ai-chat-sidebar-empty-text {
1055
1113
  color: var(--brokr-text-secondary);
1056
1114
  font-size: var(--brokr-font-size-xs);
1057
- line-height: 1.5;
1115
+ line-height: var(--brokr-leading-normal);
1058
1116
  text-align: center;
1059
1117
  opacity: 0.6;
1060
1118
  }
1061
1119
 
1062
1120
  .brokr-ai-chat-sidebar-button {
1063
1121
  align-items: center;
1064
- background: transparent;
1065
- border: none;
1122
+ appearance: none;
1123
+ background: var(--brokr-subtle-fill);
1124
+ border: 1px solid var(--brokr-muted-border);
1066
1125
  border-radius: var(--brokr-radius-button);
1067
1126
  color: var(--brokr-text-secondary);
1068
1127
  cursor: pointer;
1069
1128
  display: inline-flex;
1070
1129
  font: inherit;
1071
1130
  font-size: var(--brokr-font-size-xs);
1072
- font-weight: 500;
1131
+ font-weight: var(--brokr-font-weight-medium);
1073
1132
  gap: var(--brokr-space-2);
1074
- justify-content: flex-start;
1075
- padding: 0.5rem 0.65rem;
1076
- padding-bottom: 0.65rem;
1077
- margin-bottom: var(--brokr-space-2);
1078
- border-bottom: 1px solid var(--brokr-muted-border);
1079
- border-radius: 0;
1080
- transition: color 120ms ease;
1081
- width: 100%;
1133
+ justify-content: center;
1134
+ min-height: 36px;
1135
+ padding: 0 var(--brokr-space-3);
1136
+ transition:
1137
+ color var(--brokr-duration-base) var(--brokr-ease),
1138
+ background-color var(--brokr-duration-base) var(--brokr-ease);
1082
1139
  }
1083
1140
 
1084
1141
  .brokr-ai-chat-sidebar-button:hover {
1142
+ background: var(--brokr-subtle-fill-strong);
1085
1143
  color: var(--brokr-text-primary);
1086
1144
  }
1087
1145
 
1088
1146
  .brokr-ai-chat-conversations {
1089
1147
  display: grid;
1090
- gap: 2px;
1148
+ gap: var(--brokr-space-1);
1091
1149
  }
1092
1150
 
1093
1151
  .brokr-ai-chat-conversation {
1094
1152
  appearance: none;
1153
+ align-items: center;
1095
1154
  background: transparent;
1096
- border: none;
1155
+ border: 1px solid transparent;
1097
1156
  border-radius: var(--brokr-radius-button);
1098
1157
  color: var(--brokr-text-secondary);
1099
1158
  cursor: pointer;
1159
+ display: inline-flex;
1100
1160
  font: inherit;
1101
1161
  font-size: var(--brokr-font-size-xs);
1102
- font-weight: 400;
1162
+ font-weight: var(--brokr-font-weight-medium);
1163
+ gap: var(--brokr-space-2);
1164
+ min-height: calc(var(--brokr-space-8) + var(--brokr-space-1));
1103
1165
  overflow: hidden;
1104
- padding: 0.5rem 0.65rem;
1166
+ padding: 0 var(--brokr-space-3);
1105
1167
  text-align: left;
1106
- text-overflow: ellipsis;
1107
- transition: color 120ms ease, background 120ms ease;
1108
- white-space: nowrap;
1168
+ transition:
1169
+ color var(--brokr-duration-base) var(--brokr-ease),
1170
+ background-color var(--brokr-duration-base) var(--brokr-ease),
1171
+ border-color var(--brokr-duration-base) var(--brokr-ease);
1172
+ width: 100%;
1109
1173
  }
1110
1174
 
1111
1175
  .brokr-ai-chat-conversation:hover {
1176
+ border-color: color-mix(in srgb, var(--brokr-text-primary) 9%, transparent);
1112
1177
  color: var(--brokr-text-primary);
1113
1178
  background: var(--brokr-subtle-fill);
1114
1179
  }
1115
1180
 
1116
1181
  .brokr-ai-chat-conversation[data-active="true"] {
1182
+ border-color: color-mix(in srgb, var(--brokr-text-primary) 12%, transparent);
1117
1183
  color: var(--brokr-text-primary);
1118
- background: var(--brokr-subtle-fill);
1119
- font-weight: 500;
1184
+ background: var(--brokr-subtle-fill-strong);
1185
+ font-weight: var(--brokr-font-weight-semibold);
1186
+ }
1187
+
1188
+ .brokr-ai-chat-conversation-label {
1189
+ flex: 1;
1190
+ line-height: var(--brokr-leading-snug);
1191
+ overflow: hidden;
1192
+ text-overflow: ellipsis;
1193
+ white-space: nowrap;
1120
1194
  }
1121
1195
 
1122
1196
  .brokr-ai-chat-stage {
@@ -1168,7 +1242,7 @@ var CHAT_CSS = `
1168
1242
  .brokr-ai-chat-title-loading span {
1169
1243
  animation: brokrTypingBounce 1.2s ease-in-out infinite;
1170
1244
  background: color-mix(in srgb, var(--brokr-text-primary) 50%, transparent);
1171
- border-radius: 999px;
1245
+ border-radius: var(--brokr-radius-pill);
1172
1246
  display: inline-block;
1173
1247
  height: 0.28rem;
1174
1248
  width: 0.28rem;
@@ -1377,7 +1451,7 @@ var CHAT_CSS = `
1377
1451
  .brokr-ai-chat-typing span {
1378
1452
  animation: brokrTypingBounce 1.2s ease-in-out infinite;
1379
1453
  background: color-mix(in srgb, var(--brokr-text-primary) 70%, transparent);
1380
- border-radius: 999px;
1454
+ border-radius: var(--brokr-radius-pill);
1381
1455
  display: inline-block;
1382
1456
  height: 0.42rem;
1383
1457
  width: 0.42rem;
@@ -1412,11 +1486,11 @@ var CHAT_EXTRAS_CSS = `
1412
1486
  display: inline-flex;
1413
1487
  font: inherit;
1414
1488
  font-size: var(--brokr-font-size-sm);
1415
- font-weight: 600;
1489
+ font-weight: var(--brokr-font-weight-semibold);
1416
1490
  gap: var(--brokr-space-2);
1417
1491
  min-height: 36px;
1418
1492
  padding: 0 0.75rem;
1419
- transition: background-color 120ms ease;
1493
+ transition: background-color var(--brokr-duration-base) var(--brokr-ease);
1420
1494
  white-space: nowrap;
1421
1495
  }
1422
1496
 
@@ -1455,7 +1529,7 @@ var CHAT_EXTRAS_CSS = `
1455
1529
  gap: var(--brokr-space-2);
1456
1530
  padding: 0.5rem 0.75rem;
1457
1531
  text-align: left;
1458
- transition: background-color 100ms ease;
1532
+ transition: background-color var(--brokr-duration-fast) var(--brokr-ease);
1459
1533
  width: 100%;
1460
1534
  }
1461
1535
 
@@ -1477,7 +1551,7 @@ var CHAT_EXTRAS_CSS = `
1477
1551
  }
1478
1552
 
1479
1553
  .brokr-model-dot {
1480
- border-radius: 999px;
1554
+ border-radius: var(--brokr-radius-pill);
1481
1555
  display: inline-block;
1482
1556
  flex-shrink: 0;
1483
1557
  height: 8px;
@@ -1561,7 +1635,7 @@ var CHAT_EXTRAS_CSS = `
1561
1635
  gap: var(--brokr-space-2);
1562
1636
  padding: 0.5rem 0.75rem;
1563
1637
  text-align: left;
1564
- transition: background-color 100ms ease;
1638
+ transition: background-color var(--brokr-duration-fast) var(--brokr-ease);
1565
1639
  width: 100%;
1566
1640
  }
1567
1641
 
@@ -1603,7 +1677,7 @@ var CHAT_EXTRAS_CSS = `
1603
1677
  position: absolute;
1604
1678
  right: 0;
1605
1679
  top: -4px;
1606
- transition: opacity 120ms ease, background-color 120ms ease;
1680
+ transition: opacity var(--brokr-duration-base) var(--brokr-ease), background-color var(--brokr-duration-base) var(--brokr-ease);
1607
1681
  width: 26px;
1608
1682
  }
1609
1683
 
@@ -1714,8 +1788,9 @@ var CHAT_EXTRAS_CSS = `
1714
1788
  color: var(--brokr-text-primary);
1715
1789
  font: inherit;
1716
1790
  font-size: var(--brokr-font-size-xs);
1791
+ min-height: calc(var(--brokr-space-8) + var(--brokr-space-1));
1717
1792
  outline: none;
1718
- padding: 0.5rem 0.65rem;
1793
+ padding: 0 var(--brokr-space-3);
1719
1794
  width: 100%;
1720
1795
  }
1721
1796
 
@@ -1737,6 +1812,44 @@ var COMPOSITES_CSS = `
1737
1812
  z-index: var(--brokr-z-fab);
1738
1813
  }
1739
1814
 
1815
+ .brokr-chat-fab-trigger {
1816
+ align-items: center;
1817
+ appearance: none;
1818
+ background: var(--brokr-bg);
1819
+ border: 1px solid color-mix(in srgb, var(--brokr-border) 85%, transparent);
1820
+ border-radius: var(--brokr-radius-pill);
1821
+ box-shadow:
1822
+ 0 10px 24px color-mix(in srgb, var(--brokr-text-primary) 14%, transparent),
1823
+ 0 0 16px color-mix(in srgb, var(--brokr-text-primary) 10%, transparent);
1824
+ color: var(--brokr-text-primary);
1825
+ cursor: pointer;
1826
+ display: inline-flex;
1827
+ font: inherit;
1828
+ height: 56px;
1829
+ justify-content: center;
1830
+ min-height: 56px;
1831
+ padding: 0;
1832
+ transition:
1833
+ transform var(--brokr-duration-base) var(--brokr-ease),
1834
+ box-shadow var(--brokr-duration-base) var(--brokr-ease),
1835
+ border-color var(--brokr-duration-base) var(--brokr-ease);
1836
+ width: 56px;
1837
+ }
1838
+
1839
+ .brokr-chat-fab-trigger:hover {
1840
+ border-color: color-mix(in srgb, var(--brokr-text-primary) 20%, var(--brokr-border));
1841
+ transform: translateY(-1px);
1842
+ }
1843
+
1844
+ .brokr-chat-fab-trigger:active {
1845
+ transform: translateY(0);
1846
+ }
1847
+
1848
+ .brokr-chat-fab-trigger:focus-visible {
1849
+ outline: 2px solid color-mix(in srgb, var(--brokr-primary) 60%, transparent);
1850
+ outline-offset: 2px;
1851
+ }
1852
+
1740
1853
  .brokr-chat-panel {
1741
1854
  display: grid;
1742
1855
  gap: var(--brokr-space-4);
@@ -1786,23 +1899,6 @@ var COMPOSITES_CSS = `
1786
1899
  padding: var(--brokr-space-2);
1787
1900
  }
1788
1901
 
1789
- .brokr-chat-starters {
1790
- display: flex;
1791
- flex-wrap: wrap;
1792
- gap: var(--brokr-space-2);
1793
- }
1794
-
1795
- .brokr-chat-starter {
1796
- background: var(--brokr-subtle-fill);
1797
- border: 1px solid var(--brokr-muted-border);
1798
- border-radius: 999px;
1799
- color: var(--brokr-text-primary);
1800
- cursor: pointer;
1801
- font: inherit;
1802
- min-height: 36px;
1803
- padding: 0 0.9rem;
1804
- }
1805
-
1806
1902
  .brokr-chat-bubble[data-role="user"] {
1807
1903
  background: color-mix(in srgb, var(--brokr-primary) 10%, var(--brokr-surface));
1808
1904
  justify-self: end;
@@ -1866,7 +1962,7 @@ var COMPOSITES_CSS = `
1866
1962
  min-height: 220px;
1867
1963
  padding: var(--brokr-space-6);
1868
1964
  text-align: center;
1869
- transition: border-color 150ms ease, background-color 150ms ease, transform 150ms ease;
1965
+ 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);
1870
1966
  }
1871
1967
 
1872
1968
  .brokr-upload-dropzone[data-drag="true"] {
@@ -1887,13 +1983,23 @@ var COMPOSITES_CSS = `
1887
1983
  // src/react/css/gates.ts
1888
1984
  var GATES_CSS = `
1889
1985
  .brokr-plan-card {
1890
- display: grid;
1986
+ display: flex;
1987
+ flex-direction: column;
1891
1988
  gap: var(--brokr-space-5);
1892
1989
  min-height: 100%;
1893
1990
  padding: var(--brokr-space-6);
1894
1991
  position: relative;
1895
1992
  }
1896
1993
 
1994
+ .brokr-plan-card > .brokr-feature-list {
1995
+ flex: 1;
1996
+ }
1997
+
1998
+ .brokr-plan-card > .brokr-button,
1999
+ .brokr-plan-card > .brokr-button-secondary {
2000
+ flex-shrink: 0;
2001
+ }
2002
+
1897
2003
  .brokr-plan-card[data-highlight="true"] {
1898
2004
  background: color-mix(in srgb, var(--brokr-surface) 86%, var(--brokr-bg));
1899
2005
  transform: translateY(-2px);
@@ -1907,7 +2013,7 @@ var GATES_CSS = `
1907
2013
 
1908
2014
  .brokr-plan-value {
1909
2015
  font-size: clamp(2rem, 4vw, 3rem);
1910
- font-weight: 700;
2016
+ font-weight: var(--brokr-font-weight-bold);
1911
2017
  letter-spacing: -0.05em;
1912
2018
  line-height: 1;
1913
2019
  }
@@ -1930,7 +2036,7 @@ var GATES_CSS = `
1930
2036
 
1931
2037
  .brokr-feature-bullet {
1932
2038
  background: var(--brokr-text-primary);
1933
- border-radius: 999px;
2039
+ border-radius: var(--brokr-radius-pill);
1934
2040
  height: 6px;
1935
2041
  margin-top: 0.45rem;
1936
2042
  opacity: 0.75;
@@ -1950,7 +2056,7 @@ var GATES_CSS = `
1950
2056
 
1951
2057
  .brokr-meter-bar {
1952
2058
  background: var(--brokr-subtle-fill);
1953
- border-radius: 999px;
2059
+ border-radius: var(--brokr-radius-pill);
1954
2060
  height: 8px;
1955
2061
  overflow: hidden;
1956
2062
  width: 100%;
@@ -1960,7 +2066,7 @@ var GATES_CSS = `
1960
2066
  background: var(--brokr-primary);
1961
2067
  border-radius: inherit;
1962
2068
  height: 100%;
1963
- transition: width 150ms ease;
2069
+ transition: width var(--brokr-duration-base) var(--brokr-ease);
1964
2070
  }
1965
2071
  `;
1966
2072
 
@@ -1975,7 +2081,7 @@ var SKELETON_CSS = `
1975
2081
  color-mix(in srgb, var(--brokr-text-primary) 5%, transparent) 100%
1976
2082
  );
1977
2083
  background-size: 200% 100%;
1978
- border-radius: 999px;
2084
+ border-radius: var(--brokr-radius-pill);
1979
2085
  min-height: 16px;
1980
2086
  }
1981
2087
  `;
@@ -1999,16 +2105,20 @@ var MARKDOWN_CSS = `
1999
2105
 
2000
2106
  .brokr-md strong {
2001
2107
  color: var(--brokr-text-primary);
2002
- font-weight: 600;
2108
+ font-weight: var(--brokr-font-weight-semibold);
2003
2109
  }
2004
2110
 
2005
2111
  .brokr-md em {
2006
2112
  font-style: italic;
2007
2113
  }
2008
2114
 
2115
+ .brokr-md del {
2116
+ opacity: 0.85;
2117
+ }
2118
+
2009
2119
  .brokr-md-inline-code {
2010
2120
  background: var(--brokr-subtle-fill-strong);
2011
- border-radius: 4px;
2121
+ border-radius: var(--brokr-radius-sm);
2012
2122
  color: var(--brokr-primary);
2013
2123
  font-family: var(--brokr-font-mono);
2014
2124
  font-size: 0.85em;
@@ -2027,7 +2137,7 @@ var MARKDOWN_CSS = `
2027
2137
 
2028
2138
  .brokr-md-heading {
2029
2139
  color: var(--brokr-text-primary);
2030
- font-weight: 600;
2140
+ font-weight: var(--brokr-font-weight-semibold);
2031
2141
  line-height: 1.3;
2032
2142
  margin: 1.2em 0 0.5em;
2033
2143
  }
@@ -2050,7 +2160,6 @@ var MARKDOWN_CSS = `
2050
2160
  }
2051
2161
 
2052
2162
  .brokr-md-list {
2053
- list-style: none;
2054
2163
  margin: 0.5em 0;
2055
2164
  padding: 0 0 0 1.2em;
2056
2165
  }
@@ -2058,16 +2167,85 @@ var MARKDOWN_CSS = `
2058
2167
  .brokr-md-list li {
2059
2168
  line-height: 1.7;
2060
2169
  margin-bottom: 0.25em;
2170
+ }
2171
+
2172
+ .brokr-md-list-unordered {
2173
+ list-style: none;
2174
+ }
2175
+
2176
+ .brokr-md-list-unordered li {
2061
2177
  position: relative;
2062
2178
  }
2063
2179
 
2064
- .brokr-md-list li::before {
2180
+ .brokr-md-list-unordered li::before {
2065
2181
  content: '\u2022';
2066
2182
  color: var(--brokr-text-secondary);
2067
2183
  left: -1em;
2068
2184
  position: absolute;
2069
2185
  }
2070
2186
 
2187
+ .brokr-md-list-ordered {
2188
+ list-style: decimal;
2189
+ padding-left: 1.35em;
2190
+ }
2191
+
2192
+ .brokr-md-list-ordered li::marker {
2193
+ color: var(--brokr-text-secondary);
2194
+ }
2195
+
2196
+ .brokr-md-quote {
2197
+ border-left: 1px solid var(--brokr-muted-border);
2198
+ color: var(--brokr-text-secondary);
2199
+ margin: 0.8em 0;
2200
+ padding: 0 0 0 0.9em;
2201
+ }
2202
+
2203
+ .brokr-md-quote-line {
2204
+ line-height: 1.7;
2205
+ margin: 0 0 0.4em;
2206
+ }
2207
+
2208
+ .brokr-md-quote-line:last-child {
2209
+ margin-bottom: 0;
2210
+ }
2211
+
2212
+ .brokr-md-table-wrap {
2213
+ margin: 0.9em 0;
2214
+ overflow-x: auto;
2215
+ }
2216
+
2217
+ .brokr-md-table {
2218
+ border-collapse: collapse;
2219
+ border: 1px solid var(--brokr-muted-border);
2220
+ border-radius: var(--brokr-radius-card);
2221
+ min-width: 100%;
2222
+ width: max-content;
2223
+ }
2224
+
2225
+ .brokr-md-table th,
2226
+ .brokr-md-table td {
2227
+ border-bottom: 1px solid var(--brokr-muted-border);
2228
+ font-size: var(--brokr-font-size-sm);
2229
+ line-height: var(--brokr-leading-snug);
2230
+ padding: var(--brokr-space-2) var(--brokr-space-3);
2231
+ text-align: left;
2232
+ vertical-align: top;
2233
+ }
2234
+
2235
+ .brokr-md-table th {
2236
+ background: var(--brokr-subtle-fill);
2237
+ color: var(--brokr-text-primary);
2238
+ font-weight: var(--brokr-font-weight-semibold);
2239
+ }
2240
+
2241
+ .brokr-md-table td {
2242
+ color: var(--brokr-text-secondary);
2243
+ }
2244
+
2245
+ .brokr-md-table tr:last-child td {
2246
+ border-bottom: none;
2247
+ }
2248
+
2071
2249
  /* \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 */
2072
2250
 
2073
2251
  .brokr-md-codeblock {
@@ -2090,7 +2268,7 @@ var MARKDOWN_CSS = `
2090
2268
  .brokr-md-codeblock-lang {
2091
2269
  color: var(--brokr-text-secondary);
2092
2270
  font-family: var(--brokr-font-mono);
2093
- font-weight: 500;
2271
+ font-weight: var(--brokr-font-weight-medium);
2094
2272
  text-transform: lowercase;
2095
2273
  }
2096
2274
 
@@ -2106,7 +2284,7 @@ var MARKDOWN_CSS = `
2106
2284
  gap: 0.35em;
2107
2285
  padding: 0.15em 0.4em;
2108
2286
  border-radius: var(--brokr-radius-button);
2109
- transition: color 120ms ease, background 120ms ease;
2287
+ transition: color var(--brokr-duration-base) var(--brokr-ease), background var(--brokr-duration-base) var(--brokr-ease);
2110
2288
  }
2111
2289
 
2112
2290
  .brokr-md-codeblock-copy:hover {
@@ -2242,7 +2420,8 @@ var RESPONSIVE_CSS = `
2242
2420
  }
2243
2421
 
2244
2422
  .brokr-ai-chat-model-select,
2245
- .brokr-ai-chat-sidebar-button {
2423
+ .brokr-ai-chat-sidebar-button,
2424
+ .brokr-ai-chat-sidebar-new-chat {
2246
2425
  width: 100%;
2247
2426
  }
2248
2427