@arbidocs/blocks 0.4.31 → 0.4.33

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 (179) hide show
  1. package/dist/agents/index.cjs +256 -214
  2. package/dist/agents/index.js +7 -5
  3. package/dist/agents/tasks/ConversationListView.d.ts +58 -0
  4. package/dist/agents/tasks/ConversationTurnSpeaker.d.ts +16 -0
  5. package/dist/agents/tasks/NewThreadDialog.d.ts +1 -1
  6. package/dist/agents/tasks/TaskActivityTimeline.d.ts +1 -1
  7. package/dist/agents/tasks/TaskFlow.d.ts +22 -0
  8. package/dist/agents/tasks/TaskInbox.d.ts +26 -0
  9. package/dist/agents/tasks/TaskReviewDialog.d.ts +22 -0
  10. package/dist/agents/tasks/TaskRowMenu.d.ts +10 -2
  11. package/dist/agents/tasks/TaskRunsDialog.d.ts +8 -3
  12. package/dist/agents/tasks/TaskStartDialog.d.ts +24 -0
  13. package/dist/agents/tasks/TaskTable.d.ts +1 -1
  14. package/dist/agents/tasks/ThreadNotifyDialog.d.ts +11 -0
  15. package/dist/agents/tasks/WorkflowComposer.d.ts +1 -1
  16. package/dist/agents/tasks/WorkflowsTable.d.ts +7 -0
  17. package/dist/agents/tasks/compact-thread-activity.d.ts +8 -0
  18. package/dist/agents/tasks/index.d.ts +10 -0
  19. package/dist/agents/tasks/taskComposerTypes.d.ts +16 -1
  20. package/dist/agents/tasks/taskRequest.d.ts +1 -0
  21. package/dist/agents/tasks/testGrid.d.ts +24 -0
  22. package/dist/agents/tasks/workflowColumns.d.ts +2 -1
  23. package/dist/agents/tasks/workflowRows.d.ts +6 -0
  24. package/dist/agents/workflows/types.d.ts +2 -0
  25. package/dist/auth/index.cjs +27 -27
  26. package/dist/auth/index.js +1 -1
  27. package/dist/chat/Message.d.ts +8 -2
  28. package/dist/chat/index.cjs +132 -120
  29. package/dist/chat/index.d.ts +2 -0
  30. package/dist/chat/index.js +2 -2
  31. package/dist/chat/participant-tints.d.ts +1 -0
  32. package/dist/chat/useRecipientDraft.d.ts +14 -0
  33. package/dist/{chunk-KF4EC5XU.js → chunk-24KQJYSB.js} +3 -3
  34. package/dist/{chunk-KF4EC5XU.js.map → chunk-24KQJYSB.js.map} +1 -1
  35. package/dist/{chunk-GVQOBJKR.cjs → chunk-2EAE5JP6.cjs} +7 -4
  36. package/dist/chunk-2EAE5JP6.cjs.map +1 -0
  37. package/dist/{chunk-S5HZBXZA.cjs → chunk-2QTT2RZE.cjs} +242 -2
  38. package/dist/chunk-2QTT2RZE.cjs.map +1 -0
  39. package/dist/chunk-3AFWGEDJ.cjs +53 -0
  40. package/dist/chunk-3AFWGEDJ.cjs.map +1 -0
  41. package/dist/{chunk-4XJZ6AAY.js → chunk-4AWS54US.js} +244 -6
  42. package/dist/chunk-4AWS54US.js.map +1 -0
  43. package/dist/{chunk-56BUD74K.cjs → chunk-65THHQVB.cjs} +27 -27
  44. package/dist/{chunk-56BUD74K.cjs.map → chunk-65THHQVB.cjs.map} +1 -1
  45. package/dist/{chunk-5B4PXAKI.cjs → chunk-6DNYPLCD.cjs} +21 -7
  46. package/dist/chunk-6DNYPLCD.cjs.map +1 -0
  47. package/dist/{chunk-Y2LWA4ZO.js → chunk-6RXUMBTK.js} +1855 -501
  48. package/dist/chunk-6RXUMBTK.js.map +1 -0
  49. package/dist/{chunk-UTYQPVIW.cjs → chunk-7QDX2CO4.cjs} +6 -6
  50. package/dist/{chunk-UTYQPVIW.cjs.map → chunk-7QDX2CO4.cjs.map} +1 -1
  51. package/dist/{chunk-FRRDPYBR.cjs → chunk-AZ75JUIH.cjs} +74 -5
  52. package/dist/chunk-AZ75JUIH.cjs.map +1 -0
  53. package/dist/{chunk-NUPVHEJW.js → chunk-BUHKUKKB.js} +7 -4
  54. package/dist/chunk-BUHKUKKB.js.map +1 -0
  55. package/dist/chunk-C7FGONCM.js +124 -0
  56. package/dist/chunk-C7FGONCM.js.map +1 -0
  57. package/dist/{chunk-KXMDOTGW.js → chunk-DLBUFHLY.js} +10 -2
  58. package/dist/chunk-DLBUFHLY.js.map +1 -0
  59. package/dist/{chunk-ZHLMDJCO.cjs → chunk-DLVX6R6B.cjs} +62 -26
  60. package/dist/chunk-DLVX6R6B.cjs.map +1 -0
  61. package/dist/{chunk-JGZTRLKL.cjs → chunk-IA7RTPT3.cjs} +7 -4
  62. package/dist/chunk-IA7RTPT3.cjs.map +1 -0
  63. package/dist/{chunk-NJL4LIXX.js → chunk-LFGJAZ5H.js} +11 -8
  64. package/dist/chunk-LFGJAZ5H.js.map +1 -0
  65. package/dist/{chunk-IAKUTBPX.js → chunk-LYUO3E6V.js} +3 -3
  66. package/dist/{chunk-IAKUTBPX.js.map → chunk-LYUO3E6V.js.map} +1 -1
  67. package/dist/{chunk-EYPPB5CY.cjs → chunk-M2YGPC5N.cjs} +4 -4
  68. package/dist/{chunk-EYPPB5CY.cjs.map → chunk-M2YGPC5N.cjs.map} +1 -1
  69. package/dist/{chunk-5ZBP7TCD.cjs → chunk-MJCCBMM5.cjs} +10 -2
  70. package/dist/chunk-MJCCBMM5.cjs.map +1 -0
  71. package/dist/chunk-MZL67U2E.cjs +128 -0
  72. package/dist/chunk-MZL67U2E.cjs.map +1 -0
  73. package/dist/{chunk-OJSWQM4G.js → chunk-OZJ5PXA6.js} +29 -4
  74. package/dist/chunk-OZJ5PXA6.js.map +1 -0
  75. package/dist/{chunk-UBNVIIBT.js → chunk-PXFJDX2C.js} +21 -7
  76. package/dist/chunk-PXFJDX2C.js.map +1 -0
  77. package/dist/{chunk-RGHQFJOL.cjs → chunk-QFUF4A4J.cjs} +28 -2
  78. package/dist/chunk-QFUF4A4J.cjs.map +1 -0
  79. package/dist/chunk-RFXJYIDV.js +50 -0
  80. package/dist/chunk-RFXJYIDV.js.map +1 -0
  81. package/dist/{chunk-CQWRVIJC.cjs → chunk-SEQWI6E4.cjs} +1882 -517
  82. package/dist/chunk-SEQWI6E4.cjs.map +1 -0
  83. package/dist/{chunk-QN42OA5J.js → chunk-SFXVNFES.js} +4 -4
  84. package/dist/chunk-SFXVNFES.js.map +1 -0
  85. package/dist/{chunk-3NZR6PAG.js → chunk-V6U5KVAR.js} +70 -4
  86. package/dist/chunk-V6U5KVAR.js.map +1 -0
  87. package/dist/{chunk-YVIOCITQ.cjs → chunk-VUEZARW5.cjs} +3 -3
  88. package/dist/chunk-VUEZARW5.cjs.map +1 -0
  89. package/dist/{chunk-JLOYWXRB.js → chunk-VZGBCBYB.js} +3 -3
  90. package/dist/chunk-VZGBCBYB.js.map +1 -0
  91. package/dist/{chunk-ZVPTFTGV.cjs → chunk-WBDK4PIA.cjs} +11 -8
  92. package/dist/chunk-WBDK4PIA.cjs.map +1 -0
  93. package/dist/{chunk-ZORQ5M3W.cjs → chunk-WQFGG2BV.cjs} +4 -4
  94. package/dist/chunk-WQFGG2BV.cjs.map +1 -0
  95. package/dist/{chunk-C75S6USL.js → chunk-WYVCXY7R.js} +7 -4
  96. package/dist/chunk-WYVCXY7R.js.map +1 -0
  97. package/dist/{chunk-WSJVHSGN.js → chunk-XWEJ5LV2.js} +63 -27
  98. package/dist/chunk-XWEJ5LV2.js.map +1 -0
  99. package/dist/{chunk-YMHGF6R5.js → chunk-ZCF2JJFA.js} +3 -3
  100. package/dist/{chunk-YMHGF6R5.js.map → chunk-ZCF2JJFA.js.map} +1 -1
  101. package/dist/collaboration/index.cjs +45 -41
  102. package/dist/collaboration/index.js +1 -1
  103. package/dist/collaboration/mail/MailMessagePreview.d.ts +11 -0
  104. package/dist/collaboration/mail/index.d.ts +1 -0
  105. package/dist/connect/index.cjs +33 -33
  106. package/dist/connect/index.js +4 -4
  107. package/dist/facts/FactsFilterInput.d.ts +2 -46
  108. package/dist/facts/FactsToolbar.d.ts +5 -5
  109. package/dist/facts/index.cjs +27 -124
  110. package/dist/facts/index.cjs.map +1 -1
  111. package/dist/facts/index.js +13 -118
  112. package/dist/facts/index.js.map +1 -1
  113. package/dist/files/FilesPage.d.ts +1 -1
  114. package/dist/files/FilesToolbar.d.ts +1 -1
  115. package/dist/files/FolderPicker.d.ts +2 -1
  116. package/dist/files/ViewerChrome.d.ts +1 -1
  117. package/dist/files/bulk/FolderFilterButton.d.ts +3 -2
  118. package/dist/files/cells/BulkLabelSelect.d.ts +11 -0
  119. package/dist/files/cells/LabelMultiSelect.d.ts +2 -1
  120. package/dist/files/cells/index.d.ts +1 -0
  121. package/dist/files/index.cjs +108 -165
  122. package/dist/files/index.cjs.map +1 -1
  123. package/dist/files/index.js +94 -157
  124. package/dist/files/index.js.map +1 -1
  125. package/dist/home/index.cjs +19 -19
  126. package/dist/home/index.cjs.map +1 -1
  127. package/dist/home/index.js +4 -4
  128. package/dist/home/index.js.map +1 -1
  129. package/dist/index.cjs +790 -767
  130. package/dist/index.cjs.map +1 -1
  131. package/dist/index.d.ts +1 -0
  132. package/dist/index.js +20 -68
  133. package/dist/index.js.map +1 -1
  134. package/dist/settings/SettingsPanel.d.ts +1 -1
  135. package/dist/settings/index.cjs +55 -280
  136. package/dist/settings/index.cjs.map +1 -1
  137. package/dist/settings/index.js +17 -248
  138. package/dist/settings/index.js.map +1 -1
  139. package/dist/shell/FilterInput.d.ts +46 -0
  140. package/dist/shell/TabHeader.d.ts +5 -1
  141. package/dist/shell/index.cjs +61 -48
  142. package/dist/shell/index.d.ts +1 -0
  143. package/dist/shell/index.js +3 -2
  144. package/dist/site/index.cjs +62 -62
  145. package/dist/site/index.js +2 -2
  146. package/dist/studio/index.cjs +74 -74
  147. package/dist/studio/index.js +5 -5
  148. package/dist/workspaces/WorkspaceCard.d.ts +2 -2
  149. package/dist/workspaces/index.cjs +9 -2
  150. package/dist/workspaces/index.cjs.map +1 -1
  151. package/dist/workspaces/index.js +9 -2
  152. package/dist/workspaces/index.js.map +1 -1
  153. package/package.json +3 -3
  154. package/src/blocks.css +4 -0
  155. package/src/components/grid.css +10 -0
  156. package/dist/chunk-3NZR6PAG.js.map +0 -1
  157. package/dist/chunk-4XJZ6AAY.js.map +0 -1
  158. package/dist/chunk-5B4PXAKI.cjs.map +0 -1
  159. package/dist/chunk-5ZBP7TCD.cjs.map +0 -1
  160. package/dist/chunk-C75S6USL.js.map +0 -1
  161. package/dist/chunk-CQWRVIJC.cjs.map +0 -1
  162. package/dist/chunk-FRRDPYBR.cjs.map +0 -1
  163. package/dist/chunk-GVQOBJKR.cjs.map +0 -1
  164. package/dist/chunk-JGZTRLKL.cjs.map +0 -1
  165. package/dist/chunk-JLOYWXRB.js.map +0 -1
  166. package/dist/chunk-KXMDOTGW.js.map +0 -1
  167. package/dist/chunk-NJL4LIXX.js.map +0 -1
  168. package/dist/chunk-NUPVHEJW.js.map +0 -1
  169. package/dist/chunk-OJSWQM4G.js.map +0 -1
  170. package/dist/chunk-QN42OA5J.js.map +0 -1
  171. package/dist/chunk-RGHQFJOL.cjs.map +0 -1
  172. package/dist/chunk-S5HZBXZA.cjs.map +0 -1
  173. package/dist/chunk-UBNVIIBT.js.map +0 -1
  174. package/dist/chunk-WSJVHSGN.js.map +0 -1
  175. package/dist/chunk-Y2LWA4ZO.js.map +0 -1
  176. package/dist/chunk-YVIOCITQ.cjs.map +0 -1
  177. package/dist/chunk-ZHLMDJCO.cjs.map +0 -1
  178. package/dist/chunk-ZORQ5M3W.cjs.map +0 -1
  179. package/dist/chunk-ZVPTFTGV.cjs.map +0 -1
@@ -1,10 +1,10 @@
1
1
  "use client";
2
- export { ActiveSessionsDialog, AvatarPicker, DEFAULT_ACTIVE_SESSIONS_DIALOG_LABELS, DEFAULT_AVATAR_PICKER_LABELS, DEFAULT_DELETE_ACCOUNT_DIALOG_LABELS, DEFAULT_LOGOUT_DIALOG_LABELS, DEFAULT_PASSWORD_CHANGE_DIALOG_LABELS, DEFAULT_PROFILE_CARD_LABELS, DEFAULT_SETTINGS_DANGER_ZONE_LABELS, DeleteAccountDialog, EMAIL_NOTIFICATION_CATEGORIES, EMAIL_NOTIFICATION_KEYS, LogoutDialog, NotificationCategoryList, PasswordChangeDialog, ProfileCard, SettingsActionRow, SettingsCard, SettingsDangerZone, SettingsPanel, SettingsRow, SettingsSection, SettingsSwitchGroup, SettingsSwitchRow, formatSessionTtl, toActiveSessionViews, toDeleteBlockerViews, toLogoutSessionViews, toNotificationCategories } from '../chunk-JLOYWXRB.js';
2
+ export { ActiveSessionsDialog, AvatarPicker, DEFAULT_ACTIVE_SESSIONS_DIALOG_LABELS, DEFAULT_AVATAR_PICKER_LABELS, DEFAULT_DELETE_ACCOUNT_DIALOG_LABELS, DEFAULT_LOGOUT_DIALOG_LABELS, DEFAULT_PASSWORD_CHANGE_DIALOG_LABELS, DEFAULT_PROFILE_CARD_LABELS, DEFAULT_SETTINGS_DANGER_ZONE_LABELS, DeleteAccountDialog, EMAIL_NOTIFICATION_CATEGORIES, EMAIL_NOTIFICATION_KEYS, LogoutDialog, NotificationCategoryList, PasswordChangeDialog, ProfileCard, SettingsActionRow, SettingsCard, SettingsDangerZone, SettingsPanel, SettingsRow, SettingsSection, SettingsSwitchGroup, SettingsSwitchRow, formatSessionTtl, toActiveSessionViews, toDeleteBlockerViews, toLogoutSessionViews, toNotificationCategories } from '../chunk-VZGBCBYB.js';
3
3
  export { ModalBreadcrumbHeader, ModalCrumbs } from '../chunk-RC6VTY2H.js';
4
4
  import { UsageMeter } from '../chunk-D5T53XCL.js';
5
- export { DEFAULT_DOCUMENT_PICKER_LABELS, DocumentPicker, MultiSelect } from '../chunk-4XJZ6AAY.js';
5
+ export { DEFAULT_DOCUMENT_PICKER_LABELS, DEFAULT_TRI_STATE_FILTER_MENU_LABELS, DocumentPicker, MultiSelect, TriStateFilterMenu } from '../chunk-4AWS54US.js';
6
+ import { TabHeader } from '../chunk-PXFJDX2C.js';
6
7
  import { TONE_BORDER, TONE_SURFACE, ToneBadge } from '../chunk-DPLRHEJZ.js';
7
- import { TabHeader } from '../chunk-UBNVIIBT.js';
8
8
  import '../chunk-VILAPTCB.js';
9
9
  import '../chunk-NPLYHR2E.js';
10
10
  import { formatCount } from '../chunk-OXF2IFXG.js';
@@ -12,9 +12,9 @@ import { ModalScaffold, ModalSection, ModalSectionTitle, ModalHeader } from '../
12
12
  export { MODAL_SECTION_TITLE_CLASS, ModalHeader, ModalScaffold, ModalSection, ModalSectionTitle } from '../chunk-CPMNAJLF.js';
13
13
  import '../chunk-TJMKFY5P.js';
14
14
  import { testIdOr, prefixedTestId } from '../chunk-7F6CBP3Z.js';
15
- import { useMemo, useRef, useState, useId, useEffect, Fragment as Fragment$1 } from 'react';
16
- import { AlertTriangle, History, Undo2, Star, Trash2, Users, Sparkles, Brain, RefreshCw, Wifi, WifiOff, Crown, ChevronDown, ChevronRight, Pencil, Plus, Loader2, Filter, MoreVertical, Check, Tag, Info, Gift, PlugIcon, CheckCircle2, ExternalLink, ShieldCheck, Plug, AlertCircle, MessageCircleQuestionMark, BookOpen, UserPlus, BadgeCent, ChartNoAxesColumn, FileText, X, Mail, Send, Clock, Infinity, ArrowRight, Copy, LogOut, FunnelX, Ban } from 'lucide-react';
17
- import { Button, cn, DialogFooter, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, Input, Tooltip, TooltipTrigger, TooltipContent, Switch, Dialog, DialogContent, DialogTitle, DialogDescription, Label, Textarea, Checkbox, ScrollArea, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuLabel, DropdownMenuSeparator, Popover, PopoverTrigger, PopoverContent, Badge, DialogHeader, Progress, DropdownMenuItem } from '@arbidocs/react/ui';
15
+ import { useMemo, useRef, useState, useId, Fragment as Fragment$1 } from 'react';
16
+ import { AlertTriangle, History, Undo2, Star, Trash2, Users, Sparkles, Brain, RefreshCw, Wifi, WifiOff, Crown, ChevronDown, ChevronRight, Pencil, Plus, Loader2, Check, Tag, Info, Gift, PlugIcon, CheckCircle2, ExternalLink, ShieldCheck, Plug, AlertCircle, MessageCircleQuestionMark, BookOpen, UserPlus, BadgeCent, ChartNoAxesColumn, FileText, X, Mail, Send, Clock, Infinity, ArrowRight, Copy, LogOut } from 'lucide-react';
17
+ import { Button, cn, DialogFooter, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, Input, Tooltip, TooltipTrigger, TooltipContent, Switch, Dialog, DialogContent, DialogTitle, DialogDescription, Label, Textarea, Checkbox, ScrollArea, Popover, PopoverTrigger, PopoverContent, Badge, DialogHeader, Progress } from '@arbidocs/react/ui';
18
18
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
19
19
  import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
20
20
  import { cva } from 'class-variance-authority';
@@ -1339,244 +1339,6 @@ function SyncFolderStatus({
1339
1339
  }
1340
1340
  );
1341
1341
  }
1342
- var DEFAULT_TRI_STATE_FILTER_MENU_LABELS = { clear: "Clear" };
1343
- function TriStateFilterMenu({
1344
- testId,
1345
- open,
1346
- onOpenChange,
1347
- title,
1348
- filterStates,
1349
- onFiltersChange,
1350
- options,
1351
- groups,
1352
- topContent,
1353
- groupTopContent,
1354
- folderContent,
1355
- bottomContent,
1356
- triggerLabel,
1357
- hasExternalActiveState = false,
1358
- suppressTriggerActiveStyle = false,
1359
- triggerClassName,
1360
- renderChevron = false,
1361
- disableHoverOpen = false,
1362
- onHoverHandlers,
1363
- labels
1364
- }) {
1365
- const l = { ...DEFAULT_TRI_STATE_FILTER_MENU_LABELS, ...labels };
1366
- const [collapsedGroups, setCollapsedGroups] = useState(
1367
- () => new Set((groups ?? []).filter((g) => g.collapsible).map((g) => g.label))
1368
- );
1369
- const [isClickOpen, setIsClickOpen] = useState(false);
1370
- const hoverTimeoutRef = useRef(null);
1371
- const cancelPendingClose = () => {
1372
- if (hoverTimeoutRef.current) {
1373
- clearTimeout(hoverTimeoutRef.current);
1374
- hoverTimeoutRef.current = null;
1375
- }
1376
- };
1377
- const handleMouseEnter = () => {
1378
- if (disableHoverOpen) return;
1379
- cancelPendingClose();
1380
- if (!isClickOpen) onOpenChange(true);
1381
- };
1382
- const handleMouseLeave = () => {
1383
- if (disableHoverOpen || isClickOpen) return;
1384
- hoverTimeoutRef.current = setTimeout(() => {
1385
- if (!isClickOpen) onOpenChange(false);
1386
- }, 150);
1387
- };
1388
- const handleTriggerClick = () => {
1389
- setIsClickOpen(!isClickOpen);
1390
- onOpenChange(!isClickOpen);
1391
- };
1392
- useEffect(() => {
1393
- onHoverHandlers?.({ onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave });
1394
- }, []);
1395
- useEffect(() => cancelPendingClose, []);
1396
- const optionMap = useMemo(() => new Map(options.map((o) => [o.id, o])), [options]);
1397
- const handleFilterToggle = (filterId) => {
1398
- const next = new Map(filterStates);
1399
- const current = next.get(filterId) ?? null;
1400
- next.set(filterId, current === null ? "include" : current === "include" ? "exclude" : null);
1401
- onFiltersChange(next);
1402
- };
1403
- const handleClearFilters = (e) => {
1404
- e.stopPropagation();
1405
- const cleared = new Map(filterStates);
1406
- options.forEach((opt) => cleared.set(opt.id, null));
1407
- onFiltersChange(cleared);
1408
- };
1409
- const clearButton = /* @__PURE__ */ jsxs(
1410
- Button,
1411
- {
1412
- variant: "ghost",
1413
- size: "default",
1414
- onClick: handleClearFilters,
1415
- className: "ml-auto h-8 px-3 text-sm text-primary hover:text-primary pointer-coarse:h-11",
1416
- children: [
1417
- /* @__PURE__ */ jsx(FunnelX, { className: "mr-1.5 h-4 w-4 text-primary" }),
1418
- l.clear
1419
- ]
1420
- }
1421
- );
1422
- const hasActiveFilters = useMemo(() => {
1423
- const ids = new Set(options.map((o) => o.id));
1424
- return hasExternalActiveState || Array.from(filterStates.entries()).some(([k, v]) => ids.has(k) && v !== null);
1425
- }, [filterStates, options, hasExternalActiveState]);
1426
- const isActive = !suppressTriggerActiveStyle && hasActiveFilters;
1427
- const showInlineClear = !title && hasActiveFilters && !suppressTriggerActiveStyle && !!groups && groups.length > 0 && !groups[0].collapsible;
1428
- const renderTriStateItem = (option) => {
1429
- const state = filterStates.get(option.id) ?? null;
1430
- const badgeClass = state === null ? "bg-card border-border text-foreground hover:bg-muted" : state === "include" ? "bg-primary text-primary-foreground border-primary hover:bg-primary" : "bg-card text-red-text border-red-text hover:bg-red-bg";
1431
- const stateIcon = state === null ? /* @__PURE__ */ jsx("div", { className: "size-3.5 rounded-sm border-2 border-border bg-transparent" }) : state === "include" ? /* @__PURE__ */ jsx(Check, { className: "size-3", strokeWidth: 3 }) : /* @__PURE__ */ jsx(Ban, { className: "size-3 text-red-text", strokeWidth: 3 });
1432
- const depthPadding = option.depth ? option.depth * 16 : 0;
1433
- return /* @__PURE__ */ jsx(
1434
- DropdownMenuItem,
1435
- {
1436
- onClick: () => handleFilterToggle(option.id),
1437
- onSelect: (e) => e.preventDefault(),
1438
- disabled: option.disabled,
1439
- className: "cursor-pointer p-1",
1440
- style: depthPadding ? { paddingLeft: `${depthPadding + 4}px` } : void 0,
1441
- children: /* @__PURE__ */ jsxs(
1442
- Badge,
1443
- {
1444
- variant: "outline",
1445
- className: cn(
1446
- "flex w-full items-center gap-2 px-3 py-1.5 text-sm pointer-coarse:min-h-11",
1447
- badgeClass
1448
- ),
1449
- children: [
1450
- stateIcon,
1451
- option.icon && /* @__PURE__ */ jsx("span", { className: "[&>svg]:size-3.5", children: option.icon }),
1452
- /* @__PURE__ */ jsx("span", { className: "font-medium", children: option.label }),
1453
- /* @__PURE__ */ jsx("span", { className: "ml-auto font-semibold", children: option.count })
1454
- ]
1455
- }
1456
- )
1457
- },
1458
- option.id
1459
- );
1460
- };
1461
- const toggleGroupCollapse = (label) => {
1462
- setCollapsedGroups((prev) => {
1463
- const next = new Set(prev);
1464
- if (!next.delete(label)) next.add(label);
1465
- return next;
1466
- });
1467
- };
1468
- const renderOptions = () => {
1469
- if (!groups || groups.length === 0) return options.map(renderTriStateItem);
1470
- return groups.map((group, groupIndex) => {
1471
- const isCollapsed = !!group.collapsible && collapsedGroups.has(group.label);
1472
- const activeCount = group.collapsible ? group.options.filter((id) => filterStates.get(id) !== null).length : 0;
1473
- return /* @__PURE__ */ jsxs(Fragment$1, { children: [
1474
- groupIndex > 0 && /* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
1475
- groupTopContent?.[group.label] && /* @__PURE__ */ jsxs(Fragment, { children: [
1476
- /* @__PURE__ */ jsx("div", { className: "px-2 py-1.5", children: groupTopContent[group.label] }),
1477
- /* @__PURE__ */ jsx(DropdownMenuSeparator, {})
1478
- ] }),
1479
- group.collapsible ? /* @__PURE__ */ jsxs(
1480
- "button",
1481
- {
1482
- type: "button",
1483
- onClick: () => toggleGroupCollapse(group.label),
1484
- "aria-expanded": !isCollapsed,
1485
- className: "flex w-full cursor-pointer items-center gap-1 rounded-sm px-2 py-1.5 text-sm font-semibold text-primary hover:bg-accent/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:min-h-11",
1486
- children: [
1487
- isCollapsed ? /* @__PURE__ */ jsx(ChevronRight, { className: "size-3.5" }) : /* @__PURE__ */ jsx(ChevronDown, { className: "size-3.5" }),
1488
- /* @__PURE__ */ jsx("span", { children: group.label }),
1489
- isCollapsed && activeCount > 0 && /* @__PURE__ */ jsx(
1490
- Badge,
1491
- {
1492
- variant: "outline",
1493
- className: "ml-auto flex h-4 min-w-4 items-center justify-center rounded-md px-1 text-xs leading-none",
1494
- children: activeCount
1495
- }
1496
- )
1497
- ]
1498
- }
1499
- ) : groupIndex === 0 && showInlineClear ? /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between pr-1", children: [
1500
- /* @__PURE__ */ jsx(DropdownMenuLabel, { className: "text-primary", children: group.label }),
1501
- clearButton
1502
- ] }) : /* @__PURE__ */ jsx(DropdownMenuLabel, { className: "text-primary", children: group.label }),
1503
- !isCollapsed && group.options.map((id) => optionMap.get(id)).filter((opt) => opt !== void 0).map(renderTriStateItem)
1504
- ] }, group.label);
1505
- });
1506
- };
1507
- const tone = isActive ? "text-primary" : "text-muted-foreground";
1508
- return /* @__PURE__ */ jsxs(DropdownMenu, { modal: false, open, onOpenChange, children: [
1509
- /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
1510
- "span",
1511
- {
1512
- role: "button",
1513
- tabIndex: 0,
1514
- "data-slot": "tri-state-filter-trigger",
1515
- className: triggerClassName ?? "inline-flex cursor-pointer items-center gap-1 rounded-sm px-1.5 py-0.5 text-sm font-medium transition-colors hover:bg-foreground/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:h-11! pointer-coarse:min-w-11 pointer-coarse:justify-center",
1516
- "data-testid": testId,
1517
- onMouseEnter: handleMouseEnter,
1518
- onMouseLeave: handleMouseLeave,
1519
- onClick: handleTriggerClick,
1520
- children: [
1521
- /* @__PURE__ */ jsx(
1522
- Filter,
1523
- {
1524
- className: cn(
1525
- "size-3 transition-colors",
1526
- isActive ? "fill-primary text-primary" : tone
1527
- )
1528
- }
1529
- ),
1530
- triggerLabel && /* @__PURE__ */ jsx("span", { className: tone, children: triggerLabel }),
1531
- renderChevron ? /* @__PURE__ */ jsx(ChevronDown, { className: cn("size-3 transition-colors", tone) }) : triggerLabel && /* @__PURE__ */ jsx(MoreVertical, { className: cn("size-3 transition-colors", tone) })
1532
- ]
1533
- }
1534
- ) }),
1535
- /* @__PURE__ */ jsxs(
1536
- DropdownMenuContent,
1537
- {
1538
- align: "center",
1539
- className: "w-80 border-0 bg-muted",
1540
- onCloseAutoFocus: (e) => e.preventDefault(),
1541
- onMouseEnter: cancelPendingClose,
1542
- onMouseLeave: () => {
1543
- if (!isClickOpen) onOpenChange(false);
1544
- },
1545
- onPointerDownOutside: (e) => {
1546
- if (!isClickOpen) return;
1547
- if (!e.target.closest('[role="menu"]')) {
1548
- setIsClickOpen(false);
1549
- onOpenChange(false);
1550
- } else {
1551
- e.preventDefault();
1552
- }
1553
- },
1554
- children: [
1555
- (title || hasActiveFilters && !suppressTriggerActiveStyle && !showInlineClear) && /* @__PURE__ */ jsxs(Fragment, { children: [
1556
- /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-2 py-1.5", children: [
1557
- title && /* @__PURE__ */ jsx(DropdownMenuLabel, { className: "p-0 text-primary", children: title }),
1558
- hasActiveFilters && !showInlineClear && clearButton
1559
- ] }),
1560
- /* @__PURE__ */ jsx(DropdownMenuSeparator, {})
1561
- ] }),
1562
- topContent && /* @__PURE__ */ jsxs(Fragment, { children: [
1563
- /* @__PURE__ */ jsx("div", { className: "px-2 py-1.5", children: topContent }),
1564
- /* @__PURE__ */ jsx(DropdownMenuSeparator, {})
1565
- ] }),
1566
- folderContent && /* @__PURE__ */ jsxs(Fragment, { children: [
1567
- /* @__PURE__ */ jsx("div", { className: "px-1 py-0.5", children: folderContent }),
1568
- /* @__PURE__ */ jsx(DropdownMenuSeparator, {})
1569
- ] }),
1570
- renderOptions(),
1571
- bottomContent && /* @__PURE__ */ jsxs(Fragment, { children: [
1572
- /* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
1573
- /* @__PURE__ */ jsx("div", { className: "px-2 py-1.5", children: bottomContent })
1574
- ] })
1575
- ]
1576
- }
1577
- )
1578
- ] });
1579
- }
1580
1342
  var planBadgeVariants = cva(
1581
1343
  "inline-flex flex-shrink-0 items-center rounded-full border font-semibold leading-none",
1582
1344
  {
@@ -2246,7 +2008,7 @@ function ProjectDetailSection({
2246
2008
  className,
2247
2009
  children
2248
2010
  }) {
2249
- return /* @__PURE__ */ jsxs("section", { className: cn("rounded-lg bg-muted p-5", className), children: [
2011
+ return /* @__PURE__ */ jsxs("section", { className: cn("rounded-lg border border-border bg-card shadow-xs p-5", className), children: [
2250
2012
  /* @__PURE__ */ jsx("h3", { className: "mb-4 text-base font-semibold text-foreground", children: title }),
2251
2013
  children
2252
2014
  ] });
@@ -2564,7 +2326,7 @@ function UsageLineChart({
2564
2326
  const yTicks = [0, maxVal / 2, maxVal].map((v) => ({
2565
2327
  v,
2566
2328
  y: yScale(v),
2567
- label: v >= 1e3 ? `${Math.round(v / 1e3)}k` : Math.round(v).toString()
2329
+ label: v >= 1e3 ? `${Math.round(v / 1e3)}k` : String(Math.round(v * 100) / 100)
2568
2330
  }));
2569
2331
  const labelCount = Math.min(dates.length, 5);
2570
2332
  const labelStep = Math.max(1, Math.floor((dates.length - 1) / (labelCount - 1)));
@@ -3247,7 +3009,14 @@ function PlanPickerHeader({
3247
3009
  );
3248
3010
  }
3249
3011
  function PlanPickerCard({ children }) {
3250
- return /* @__PURE__ */ jsx("div", { "data-slot": "plan-picker-card", className: "space-y-4 rounded-lg bg-muted p-4", children });
3012
+ return /* @__PURE__ */ jsx(
3013
+ "div",
3014
+ {
3015
+ "data-slot": "plan-picker-card",
3016
+ className: "space-y-4 rounded-lg border border-border bg-card shadow-xs p-4",
3017
+ children
3018
+ }
3019
+ );
3251
3020
  }
3252
3021
  function PlanActionRow({ children }) {
3253
3022
  return /* @__PURE__ */ jsx("div", { "data-slot": "plan-action-row", className: "flex flex-col-reverse gap-2 @xl:flex-row", children });
@@ -3665,6 +3434,6 @@ function ErrorDialogView({
3665
3434
  ) });
3666
3435
  }
3667
3436
 
3668
- export { CONVERSATION_TITLE_MAX, CheckoutDialogFrame, ConfigSwitcherBar, ConfirmDialog, ConnectionCard, ConnectionsEmpty, ConnectionsError, ConnectionsLoading, ConversationTitleSection, CreditsGlyph, DEFAULT_CHECKOUT_DIALOG_LABELS, DEFAULT_CONFIG_SWITCHER_BAR_LABELS, DEFAULT_CONFIRM_DIALOG_LABELS, DEFAULT_CONNECTION_CARD_LABELS, DEFAULT_CONVERSATION_TITLE_SECTION_LABELS, DEFAULT_DAILY_CAP_FIELD_LABELS, DEFAULT_EMAIL_WORKSPACE_DIALOG_LABELS, DEFAULT_ERROR_DIALOG_LABELS, DEFAULT_INLINE_NAME_EDITOR_LABELS, DEFAULT_INVITE_CONTACTS_DIALOG_LABELS, DEFAULT_INVOICES_DIALOG_LABELS, DEFAULT_MEMBER_PROJECT_ROW_LABELS, DEFAULT_MODEL_SELECTION_SECTION_LABELS, DEFAULT_PLAN_CARD_LABELS, DEFAULT_PROJECT_CARD_VIEW_LABELS, DEFAULT_PROJECT_DETAIL_HEADER_LABELS, DEFAULT_PROJECT_LIST_LABELS, DEFAULT_QUOTA_EXCEEDED_DIALOG_LABELS, DEFAULT_REFERRAL_CREDIT_LABELS, DEFAULT_RENAME_DIALOG_LABELS, DEFAULT_SHARED_PROJECTS_SECTION_LABELS, DEFAULT_SUBSCRIPTION_SECTION_LABELS, DEFAULT_SUBSCRIPTION_STATUS_LABELS, DEFAULT_SUPPORT_PANEL_LABELS, DEFAULT_SYNC_DIALOG_FOOTER_LABELS, DEFAULT_SYNC_FOLDER_ROW_LABELS, DEFAULT_TIPS_EDITOR_LABELS, DEFAULT_TRI_STATE_FILTER_MENU_LABELS, DEFAULT_USAGE_LINE_CHART_LABELS, DEFAULT_USAGE_PANEL_LABELS, DEFAULT_USAGE_PROPORTION_BAR_LABELS, DEFAULT_WELCOME_DIALOG_LABELS, DEFAULT_WORK_OFFLINE_LABELS, DailyCapField, EmailWorkspaceDialogView, ErrorDialogView, FloatingPanel, InlineNameEditor, InviteContactsDialog, InvoicesDialog, JsonTree, MemberProjectRow, ModelProviderLabel, ModelSelectionSection, PanelActionsRow, PanelAddButton, PanelFrame, PanelFrameBody, PanelNote, PanelScroll, PanelTitleBar, PlanActionButton, PlanActionRow, PlanBadge, PlanCard, PlanCardGrid, PlanDialogFrame, PlanInfoPopover, PlanNotice, PlanPickerCard, PlanPickerHeader, PlanStack, PlanTierOption, PlanTransition, PremiumModelsFrame, PricingToggle, ProjectCardView, ProjectDetailHeader, ProjectDetailSection, ProjectGroup, ProjectList, ProjectNameLabel, ProjectPlanPicker, ProjectRow, ProjectRowActions, PromoCodeInput, QuotaExceededDialogView, QuotaMeter, ReferralCreditBadge, ReferralCreditNote, ReferralCreditSummary, RenameDialog, RowButton, RowIconAction, SegmentedControl, ServerConnectionButton, SharedProjectRow, SharedProjectsSection, SubscriptionSectionView, SubscriptionStatusView, SupportPanel, SupportUnavailable, SyncCheckList, SyncDialogBody, SyncDialogFooter, SyncField, SyncFolderRow, SyncFolderStatus, SyncLinkButton, SyncLinkRow, SyncLoading, SyncNote, SyncOptionToggle, SyncOptions, SyncReconnectNotice, SyncSelect, SyncSmallNote, SyncTreeFrame, ThreadPreviewDialog, TipsEditorDialog, TriStateFilterMenu, UsageActionButton, UsageLegend, UsageLineChart, UsagePanel, UsageProportionBar, UsageQuotaHint, UsageSection, UsageSummary, UsageToggle, WelcomeDialog, WelcomeProjectPicker, WorkOfflineToggle };
3437
+ export { CONVERSATION_TITLE_MAX, CheckoutDialogFrame, ConfigSwitcherBar, ConfirmDialog, ConnectionCard, ConnectionsEmpty, ConnectionsError, ConnectionsLoading, ConversationTitleSection, CreditsGlyph, DEFAULT_CHECKOUT_DIALOG_LABELS, DEFAULT_CONFIG_SWITCHER_BAR_LABELS, DEFAULT_CONFIRM_DIALOG_LABELS, DEFAULT_CONNECTION_CARD_LABELS, DEFAULT_CONVERSATION_TITLE_SECTION_LABELS, DEFAULT_DAILY_CAP_FIELD_LABELS, DEFAULT_EMAIL_WORKSPACE_DIALOG_LABELS, DEFAULT_ERROR_DIALOG_LABELS, DEFAULT_INLINE_NAME_EDITOR_LABELS, DEFAULT_INVITE_CONTACTS_DIALOG_LABELS, DEFAULT_INVOICES_DIALOG_LABELS, DEFAULT_MEMBER_PROJECT_ROW_LABELS, DEFAULT_MODEL_SELECTION_SECTION_LABELS, DEFAULT_PLAN_CARD_LABELS, DEFAULT_PROJECT_CARD_VIEW_LABELS, DEFAULT_PROJECT_DETAIL_HEADER_LABELS, DEFAULT_PROJECT_LIST_LABELS, DEFAULT_QUOTA_EXCEEDED_DIALOG_LABELS, DEFAULT_REFERRAL_CREDIT_LABELS, DEFAULT_RENAME_DIALOG_LABELS, DEFAULT_SHARED_PROJECTS_SECTION_LABELS, DEFAULT_SUBSCRIPTION_SECTION_LABELS, DEFAULT_SUBSCRIPTION_STATUS_LABELS, DEFAULT_SUPPORT_PANEL_LABELS, DEFAULT_SYNC_DIALOG_FOOTER_LABELS, DEFAULT_SYNC_FOLDER_ROW_LABELS, DEFAULT_TIPS_EDITOR_LABELS, DEFAULT_USAGE_LINE_CHART_LABELS, DEFAULT_USAGE_PANEL_LABELS, DEFAULT_USAGE_PROPORTION_BAR_LABELS, DEFAULT_WELCOME_DIALOG_LABELS, DEFAULT_WORK_OFFLINE_LABELS, DailyCapField, EmailWorkspaceDialogView, ErrorDialogView, FloatingPanel, InlineNameEditor, InviteContactsDialog, InvoicesDialog, JsonTree, MemberProjectRow, ModelProviderLabel, ModelSelectionSection, PanelActionsRow, PanelAddButton, PanelFrame, PanelFrameBody, PanelNote, PanelScroll, PanelTitleBar, PlanActionButton, PlanActionRow, PlanBadge, PlanCard, PlanCardGrid, PlanDialogFrame, PlanInfoPopover, PlanNotice, PlanPickerCard, PlanPickerHeader, PlanStack, PlanTierOption, PlanTransition, PremiumModelsFrame, PricingToggle, ProjectCardView, ProjectDetailHeader, ProjectDetailSection, ProjectGroup, ProjectList, ProjectNameLabel, ProjectPlanPicker, ProjectRow, ProjectRowActions, PromoCodeInput, QuotaExceededDialogView, QuotaMeter, ReferralCreditBadge, ReferralCreditNote, ReferralCreditSummary, RenameDialog, RowButton, RowIconAction, SegmentedControl, ServerConnectionButton, SharedProjectRow, SharedProjectsSection, SubscriptionSectionView, SubscriptionStatusView, SupportPanel, SupportUnavailable, SyncCheckList, SyncDialogBody, SyncDialogFooter, SyncField, SyncFolderRow, SyncFolderStatus, SyncLinkButton, SyncLinkRow, SyncLoading, SyncNote, SyncOptionToggle, SyncOptions, SyncReconnectNotice, SyncSelect, SyncSmallNote, SyncTreeFrame, ThreadPreviewDialog, TipsEditorDialog, UsageActionButton, UsageLegend, UsageLineChart, UsagePanel, UsageProportionBar, UsageQuotaHint, UsageSection, UsageSummary, UsageToggle, WelcomeDialog, WelcomeProjectPicker, WorkOfflineToggle };
3669
3438
  //# sourceMappingURL=index.js.map
3670
3439
  //# sourceMappingURL=index.js.map