@arbidocs/blocks 0.4.70 → 0.4.72

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/README.md +90 -14
  2. package/bin/arbidocs-copy-pdf-assets.mjs +112 -0
  3. package/dist/{StreamedArtifactEditor-OPL4KXOT.js → StreamedArtifactEditor-HTNPG4NB.js} +3 -2
  4. package/dist/StreamedArtifactEditor-HTNPG4NB.js.map +1 -0
  5. package/dist/{StreamedArtifactEditor-RIKG6CJQ.cjs → StreamedArtifactEditor-IZWYNFMM.cjs} +3 -2
  6. package/dist/StreamedArtifactEditor-IZWYNFMM.cjs.map +1 -0
  7. package/dist/agents/index.cjs +224 -224
  8. package/dist/agents/index.js +8 -8
  9. package/dist/artifacts/editor/index.cjs +1 -0
  10. package/dist/artifacts/editor/index.js +1 -0
  11. package/dist/artifacts/index.cjs +1 -0
  12. package/dist/artifacts/index.js +1 -0
  13. package/dist/auth/index.cjs +1 -0
  14. package/dist/auth/index.js +1 -0
  15. package/dist/calendar/CalendarGrid.d.ts +2 -0
  16. package/dist/calendar/CalendarList.d.ts +2 -0
  17. package/dist/calendar/CalendarSettingsForm.d.ts +2 -0
  18. package/dist/calendar/EventDetails.d.ts +2 -0
  19. package/dist/calendar/EventEditor.d.ts +2 -0
  20. package/dist/calendar/MiniMonth.d.ts +2 -0
  21. package/dist/calendar/RecurrenceEditor.d.ts +13 -0
  22. package/dist/calendar/RoomFinder.d.ts +2 -0
  23. package/dist/calendar/SchedulingAssistant.d.ts +2 -0
  24. package/dist/calendar/ScopeDialog.d.ts +2 -0
  25. package/dist/calendar/TimeZonePicker.d.ts +2 -0
  26. package/dist/calendar/colors.d.ts +4 -0
  27. package/dist/calendar/draft.d.ts +43 -0
  28. package/dist/calendar/format.d.ts +14 -0
  29. package/dist/calendar/grid-model.d.ts +24 -0
  30. package/dist/calendar/index.cjs +4122 -0
  31. package/dist/calendar/index.cjs.map +1 -0
  32. package/dist/calendar/index.d.ts +30 -0
  33. package/dist/calendar/index.js +4043 -0
  34. package/dist/calendar/index.js.map +1 -0
  35. package/dist/calendar/labels.d.ts +4 -0
  36. package/dist/calendar/recurrence-labels.d.ts +22 -0
  37. package/dist/calendar/recurrence.d.ts +66 -0
  38. package/dist/calendar/reminders.d.ts +26 -0
  39. package/dist/calendar/scheduling.d.ts +27 -0
  40. package/dist/calendar/types.d.ts +605 -0
  41. package/dist/calendar/ui.d.ts +16 -0
  42. package/dist/calendar/zone.d.ts +56 -0
  43. package/dist/chat/index.cjs +124 -123
  44. package/dist/chat/index.js +4 -3
  45. package/dist/{chunk-XNRGCQPZ.cjs → chunk-3SFFTSOI.cjs} +5 -5
  46. package/dist/{chunk-XNRGCQPZ.cjs.map → chunk-3SFFTSOI.cjs.map} +1 -1
  47. package/dist/{chunk-EHXSBH6U.js → chunk-5HOAOKZL.js} +4 -2
  48. package/dist/chunk-5HOAOKZL.js.map +1 -0
  49. package/dist/{chunk-7WM62NMM.cjs → chunk-6OL5S7MJ.cjs} +5 -2
  50. package/dist/chunk-6OL5S7MJ.cjs.map +1 -0
  51. package/dist/{chunk-VUEZARW5.cjs → chunk-B3WCKBJ7.cjs} +278 -5
  52. package/dist/chunk-B3WCKBJ7.cjs.map +1 -0
  53. package/dist/{chunk-L5UPP2HC.js → chunk-D46ZAPEE.js} +5 -2
  54. package/dist/chunk-D46ZAPEE.js.map +1 -0
  55. package/dist/chunk-DES3K4SD.cjs +18 -0
  56. package/dist/chunk-DES3K4SD.cjs.map +1 -0
  57. package/dist/{chunk-7M22KND4.cjs → chunk-DH7C2UJO.cjs} +10 -10
  58. package/dist/{chunk-7M22KND4.cjs.map → chunk-DH7C2UJO.cjs.map} +1 -1
  59. package/dist/{chunk-CXWESDIZ.cjs → chunk-F4RUCUXF.cjs} +6 -6
  60. package/dist/{chunk-CXWESDIZ.cjs.map → chunk-F4RUCUXF.cjs.map} +1 -1
  61. package/dist/{chunk-DABEWNL2.js → chunk-G5DP27DU.js} +3 -3
  62. package/dist/{chunk-DABEWNL2.js.map → chunk-G5DP27DU.js.map} +1 -1
  63. package/dist/{chunk-BR2CPKFU.cjs → chunk-G5QTGKDJ.cjs} +8 -8
  64. package/dist/{chunk-BR2CPKFU.cjs.map → chunk-G5QTGKDJ.cjs.map} +1 -1
  65. package/dist/{chunk-VZGBCBYB.js → chunk-GJV2G4FC.js} +276 -7
  66. package/dist/chunk-GJV2G4FC.js.map +1 -0
  67. package/dist/{chunk-HLMFU7L2.js → chunk-IMC2Z32C.js} +8 -8
  68. package/dist/{chunk-HLMFU7L2.js.map → chunk-IMC2Z32C.js.map} +1 -1
  69. package/dist/{chunk-5DM6VU4L.cjs → chunk-KJ3QEKOJ.cjs} +3 -3
  70. package/dist/{chunk-5DM6VU4L.cjs.map → chunk-KJ3QEKOJ.cjs.map} +1 -1
  71. package/dist/{chunk-CW4WXGEN.js → chunk-KOXUBCLL.js} +4 -4
  72. package/dist/{chunk-CW4WXGEN.js.map → chunk-KOXUBCLL.js.map} +1 -1
  73. package/dist/{chunk-ILGHS6ZV.js → chunk-SB5ZKOYN.js} +3 -3
  74. package/dist/{chunk-ILGHS6ZV.js.map → chunk-SB5ZKOYN.js.map} +1 -1
  75. package/dist/{chunk-TLQQV7WW.cjs → chunk-THO7DZNN.cjs} +4 -2
  76. package/dist/chunk-THO7DZNN.cjs.map +1 -0
  77. package/dist/{chunk-CPMNAJLF.js → chunk-TX2ZICS7.js} +24 -4
  78. package/dist/chunk-TX2ZICS7.js.map +1 -0
  79. package/dist/{chunk-2ZTONLT5.cjs → chunk-ULWRNGGE.cjs} +25 -4
  80. package/dist/chunk-ULWRNGGE.cjs.map +1 -0
  81. package/dist/{chunk-BMWZTNZB.js → chunk-VRPRAU3J.js} +3 -3
  82. package/dist/{chunk-BMWZTNZB.js.map → chunk-VRPRAU3J.js.map} +1 -1
  83. package/dist/chunk-VUNV25KB.js +15 -0
  84. package/dist/chunk-VUNV25KB.js.map +1 -0
  85. package/dist/citations/index.cjs +1 -0
  86. package/dist/citations/index.js +1 -0
  87. package/dist/collaboration/index.cjs +45 -45
  88. package/dist/collaboration/index.js +3 -3
  89. package/dist/connect/docx.cjs +3 -2
  90. package/dist/connect/docx.cjs.map +1 -1
  91. package/dist/connect/docx.js +2 -1
  92. package/dist/connect/docx.js.map +1 -1
  93. package/dist/connect/index.cjs +79 -49
  94. package/dist/connect/index.cjs.map +1 -1
  95. package/dist/connect/index.d.ts +1 -1
  96. package/dist/connect/index.js +39 -11
  97. package/dist/connect/index.js.map +1 -1
  98. package/dist/connection/ConnectedSettings.d.ts +13 -0
  99. package/dist/connection/ConnectionProvider.d.ts +5 -0
  100. package/dist/connection/types.d.ts +6 -0
  101. package/dist/document-tools/SignatureStatus.d.ts +4 -2
  102. package/dist/document-tools/index.cjs +14 -11
  103. package/dist/document-tools/index.cjs.map +1 -1
  104. package/dist/document-tools/index.js +12 -9
  105. package/dist/document-tools/index.js.map +1 -1
  106. package/dist/document-tools/production/ProductionSetDialog.d.ts +23 -0
  107. package/dist/document-tools/production/index.cjs +102 -0
  108. package/dist/document-tools/production/index.cjs.map +1 -0
  109. package/dist/document-tools/production/index.d.ts +1 -0
  110. package/dist/document-tools/production/index.js +100 -0
  111. package/dist/document-tools/production/index.js.map +1 -0
  112. package/dist/document-tools/viewer/index.cjs +1 -1
  113. package/dist/document-tools/viewer/index.js +1 -1
  114. package/dist/docx/index.cjs +1 -0
  115. package/dist/docx/index.cjs.map +1 -1
  116. package/dist/docx/index.js +1 -0
  117. package/dist/docx/index.js.map +1 -1
  118. package/dist/facts/index.cjs +3 -2
  119. package/dist/facts/index.cjs.map +1 -1
  120. package/dist/facts/index.js +3 -2
  121. package/dist/facts/index.js.map +1 -1
  122. package/dist/files/import/index.d.ts +0 -1
  123. package/dist/files/index.cjs +25 -88
  124. package/dist/files/index.cjs.map +1 -1
  125. package/dist/files/index.js +7 -68
  126. package/dist/files/index.js.map +1 -1
  127. package/dist/home/index.cjs +2 -1
  128. package/dist/home/index.cjs.map +1 -1
  129. package/dist/home/index.js +2 -1
  130. package/dist/home/index.js.map +1 -1
  131. package/dist/index.cjs +537 -537
  132. package/dist/index.js +14 -14
  133. package/dist/lib-6QPUXAQS.cjs +9674 -0
  134. package/dist/lib-6QPUXAQS.cjs.map +1 -0
  135. package/dist/lib-NRGL2JGF.js +9672 -0
  136. package/dist/lib-NRGL2JGF.js.map +1 -0
  137. package/dist/retrieval/index.cjs +1 -0
  138. package/dist/retrieval/index.js +1 -0
  139. package/dist/settings/Billing.d.ts +4 -0
  140. package/dist/settings/IdentityVerification.d.ts +83 -0
  141. package/dist/settings/PlanBadge.d.ts +2 -2
  142. package/dist/settings/PlanCard.d.ts +6 -1
  143. package/dist/settings/ProfileCard.d.ts +5 -1
  144. package/dist/settings/SubscriptionParts.d.ts +6 -2
  145. package/dist/settings/index.cjs +129 -95
  146. package/dist/settings/index.cjs.map +1 -1
  147. package/dist/settings/index.d.ts +1 -0
  148. package/dist/settings/index.js +65 -47
  149. package/dist/settings/index.js.map +1 -1
  150. package/dist/shell/ActionCluster.d.ts +3 -1
  151. package/dist/shell/index.cjs +56 -55
  152. package/dist/shell/index.js +4 -3
  153. package/dist/site/index.cjs +1 -0
  154. package/dist/site/index.js +1 -0
  155. package/dist/studio/index.cjs +8 -7
  156. package/dist/studio/index.cjs.map +1 -1
  157. package/dist/studio/index.js +6 -5
  158. package/dist/studio/index.js.map +1 -1
  159. package/dist/timeline/index.cjs +1 -0
  160. package/dist/timeline/index.js +1 -0
  161. package/dist/workspaces/index.cjs +3 -3
  162. package/dist/workspaces/index.js +2 -2
  163. package/package.json +35 -5
  164. package/src/calendar/calendar.css +316 -0
  165. package/dist/StreamedArtifactEditor-OPL4KXOT.js.map +0 -1
  166. package/dist/StreamedArtifactEditor-RIKG6CJQ.cjs.map +0 -1
  167. package/dist/chunk-2ZTONLT5.cjs.map +0 -1
  168. package/dist/chunk-7WM62NMM.cjs.map +0 -1
  169. package/dist/chunk-CPMNAJLF.js.map +0 -1
  170. package/dist/chunk-DCDVWPMB.cjs +0 -29
  171. package/dist/chunk-DCDVWPMB.cjs.map +0 -1
  172. package/dist/chunk-EHXSBH6U.js.map +0 -1
  173. package/dist/chunk-L5UPP2HC.js.map +0 -1
  174. package/dist/chunk-TJMKFY5P.js +0 -27
  175. package/dist/chunk-TJMKFY5P.js.map +0 -1
  176. package/dist/chunk-TLQQV7WW.cjs.map +0 -1
  177. package/dist/chunk-VUEZARW5.cjs.map +0 -1
  178. package/dist/chunk-VZGBCBYB.js.map +0 -1
  179. package/dist/files/import/CalendarImportRow.d.ts +0 -26
@@ -37,3 +37,4 @@ export { EmailWorkspaceDialogView, DEFAULT_EMAIL_WORKSPACE_DIALOG_LABELS, type E
37
37
  export { PlanNotice, PlanStack, PlanTransition, PlanPickerHeader, PlanPickerCard, PlanActionRow, PlanActionButton, SubscriptionStatusView, PlanDialogFrame, CheckoutDialogFrame, QuotaExceededDialogView, WelcomeProjectPicker, SubscriptionSectionView, ProjectGroup, ProjectPlanPicker, ProjectNameLabel, ProjectRowActions, RowIconAction, RowButton, UsageActionButton, UsageQuotaHint, UsageSection, DEFAULT_SUBSCRIPTION_STATUS_LABELS, DEFAULT_CHECKOUT_DIALOG_LABELS, DEFAULT_QUOTA_EXCEEDED_DIALOG_LABELS, DEFAULT_SUBSCRIPTION_SECTION_LABELS, type SubscriptionMeterView, type SubscriptionStatusViewProps, type SubscriptionStatusLabels, type PlanDialogFrameProps, type CheckoutDialogFrameProps, type CheckoutDialogLabels, type QuotaExceededDialogViewProps, type QuotaExceededDialogLabels, type WelcomeProjectPickerProps, type SubscriptionSectionViewProps, type SubscriptionSectionLabels, type RowIconActionProps, } from './SubscriptionParts';
38
38
  export { ErrorDialogView, DEFAULT_ERROR_DIALOG_LABELS, type ErrorDialogViewProps, type ErrorDialogDetails, type ErrorDialogLabels, } from './ErrorDialog';
39
39
  export { formatSessionTtl, toActiveSessionViews, toLogoutSessionViews, toDeleteBlockerViews, toNotificationCategories, EMAIL_NOTIFICATION_CATEGORIES, EMAIL_NOTIFICATION_KEYS, type SessionLike, type ToActiveSessionViewsOptions, type DeleteBlockerLike, type EmailNotificationCategoryDef, } from './account-views';
40
+ export { IdentityVerificationCard, IdentityVerificationDialog, RequireVerified, DEFAULT_IDENTITY_VERIFICATION_LABELS, type IdentityVerificationCardProps, type IdentityVerificationDialogProps, type RequireVerifiedProps, type IdentityVerificationLabels, } from './IdentityVerification';
@@ -1,5 +1,5 @@
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-VZGBCBYB.js';
2
+ export { ActiveSessionsDialog, AvatarPicker, DEFAULT_ACTIVE_SESSIONS_DIALOG_LABELS, DEFAULT_AVATAR_PICKER_LABELS, DEFAULT_DELETE_ACCOUNT_DIALOG_LABELS, DEFAULT_IDENTITY_VERIFICATION_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, IdentityVerificationCard, IdentityVerificationDialog, LogoutDialog, NotificationCategoryList, PasswordChangeDialog, ProfileCard, RequireVerified, SettingsActionRow, SettingsCard, SettingsDangerZone, SettingsPanel, SettingsRow, SettingsSection, SettingsSwitchGroup, SettingsSwitchRow, formatSessionTtl, toActiveSessionViews, toDeleteBlockerViews, toLogoutSessionViews, toNotificationCategories } from '../chunk-GJV2G4FC.js';
3
3
  export { ModalBreadcrumbHeader, ModalCrumbs } from '../chunk-RC6VTY2H.js';
4
4
  import { UsageMeter } from '../chunk-D5T53XCL.js';
5
5
  export { DEFAULT_DOCUMENT_PICKER_LABELS, DEFAULT_TRI_STATE_FILTER_MENU_LABELS, DocumentPicker, MultiSelect, TriStateFilterMenu } from '../chunk-CKB64Z4R.js';
@@ -8,10 +8,10 @@ import { TONE_BORDER, TONE_SURFACE, ToneBadge } from '../chunk-DPLRHEJZ.js';
8
8
  import '../chunk-VILAPTCB.js';
9
9
  import '../chunk-NPLYHR2E.js';
10
10
  import { formatCount } from '../chunk-OXF2IFXG.js';
11
- import { ModalScaffold, ModalSection, ModalSectionTitle, ModalHeader } from '../chunk-CPMNAJLF.js';
12
- export { MODAL_SECTION_TITLE_CLASS, ModalHeader, ModalScaffold, ModalSection, ModalSectionTitle } from '../chunk-CPMNAJLF.js';
13
- import '../chunk-TJMKFY5P.js';
11
+ import { ModalScaffold, ModalSection, ModalSectionTitle, ModalHeader } from '../chunk-TX2ZICS7.js';
12
+ export { MODAL_SECTION_TITLE_CLASS, ModalHeader, ModalScaffold, ModalSection, ModalSectionTitle } from '../chunk-TX2ZICS7.js';
14
13
  import { testIdOr, prefixedTestId } from '../chunk-7F6CBP3Z.js';
14
+ import '../chunk-VUNV25KB.js';
15
15
  import { useMemo, useRef, useState, useId, Fragment as Fragment$1 } from 'react';
16
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
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';
@@ -1454,7 +1454,7 @@ function QuotaMeter({
1454
1454
  var DEFAULT_PLAN_CARD_LABELS = {
1455
1455
  currentPlan: "Current plan",
1456
1456
  popular: "Popular",
1457
- noMonthlyCost: "No monthly cost",
1457
+ noMonthlyCost: "\xA30",
1458
1458
  perMonth: "/mo",
1459
1459
  current: "Current",
1460
1460
  monthly: "Monthly",
@@ -1464,10 +1464,16 @@ var DEFAULT_PLAN_CARD_LABELS = {
1464
1464
  havePromoCode: "Have a promo code?",
1465
1465
  promoCode: "Promo Code",
1466
1466
  enterCode: "Enter code",
1467
- pricingExplainer: "Pricing Explainer",
1468
- explainerTiers: "Pro tiers (Pro, Pro x2, Pro x10) are subscriptions linked to a pool of AI credits and document storage. This pool is shared with any project collaborators, subject to a per-user daily usage limit determined by the project owner. Project owners can move up to a higher tier any time, and can move down or cancel at the end of their existing billing period. It is recommended to have separate project subscriptions for different clients/matters to facilitate matter-based usage analysis and invoicing.",
1469
- explainerCredits: "AI credits are used in AI chat and AI-powered document processing. AI usage is metered based on the number of words (tokens) consumed and generated by the AI \u2014 including review of inputs and intermediate reasoning steps \u2014 and the published per-token price for the selected AI model. As a rule of thumb, one moderately complex request, or an upload involving around 25 source documents, will consume 1 credit when using our Standard AI models (hosted by ARBI CITY). Even though our pricing for Premium models matches the direct cost charged by third-party providers, using Premium models can easily cost 10\xD7 or even 100\xD7 more than Standard models.",
1470
- seeModelList: "See the AI model list \u2192"
1467
+ pricingExplainer: "How pricing works",
1468
+ explainerTiers: [
1469
+ "Credits and storage are shared by everyone in the project. Credits reset monthly.",
1470
+ "Need more? Add 1,000 credits or 10 GB at a time. Add-ons renew until you remove them.",
1471
+ "Automatic add-ons stay within your monthly add-on budget (\xA3250 by default, \xA30 turns them off).",
1472
+ "Upgrades start now: you pay the difference for the rest of this period. Downgrades start at the end of the period. No refunds.",
1473
+ "Prices are shown + VAT; the total for your country is shown before you pay."
1474
+ ],
1475
+ explainerCredits: "About 1 credit buys one moderately complex request, or reading ~25 documents, on a Standard model. Premium models can cost 10\u2013100\xD7 more.",
1476
+ seeModelList: "AI model prices \u2192"
1471
1477
  };
1472
1478
  function PlanCard({ plan, onSelect, labels }) {
1473
1479
  const l = useMemo(() => ({ ...DEFAULT_PLAN_CARD_LABELS, ...labels }), [labels]);
@@ -1482,7 +1488,7 @@ function PlanCard({ plan, onSelect, labels }) {
1482
1488
  "data-slot": "plan-card",
1483
1489
  "data-testid": `tier-card-${id}`,
1484
1490
  className: cn(
1485
- "relative rounded-lg p-4 text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
1491
+ "relative flex flex-col justify-start rounded-lg p-4 text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
1486
1492
  isCurrent ? "cursor-default bg-blue-bg" : isSelected ? "bg-accent ring-1 ring-primary/50" : "bg-muted hover:bg-muted/70"
1487
1493
  ),
1488
1494
  children: [
@@ -1492,13 +1498,16 @@ function PlanCard({ plan, onSelect, labels }) {
1492
1498
  "span",
1493
1499
  {
1494
1500
  className: cn(
1495
- "text-2xl font-semibold leading-none tracking-tight",
1501
+ "text-lg font-semibold leading-none tracking-tight",
1496
1502
  isCurrent ? "text-blue-text" : "text-foreground"
1497
1503
  ),
1498
1504
  children: name
1499
1505
  }
1500
1506
  ) }),
1501
- isFree ? /* @__PURE__ */ jsx("div", { className: "text-sm font-medium leading-none text-muted-foreground", children: l.noMonthlyCost }) : price && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
1507
+ isFree ? /* @__PURE__ */ jsxs("div", { className: "text-2xl font-semibold leading-none tabular-nums text-foreground", children: [
1508
+ l.noMonthlyCost,
1509
+ /* @__PURE__ */ jsx("span", { className: "ml-0.5 text-sm font-medium text-muted-foreground", children: l.perMonth })
1510
+ ] }) : price && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
1502
1511
  price.annual && price.yearlyTotal && /* @__PURE__ */ jsxs("div", { className: "flex items-baseline gap-x-2 whitespace-nowrap text-base tabular-nums", children: [
1503
1512
  price.yearlyStrike && /* @__PURE__ */ jsx("span", { className: "font-medium text-muted-foreground line-through decoration-muted-foreground/70 decoration-1", children: price.yearlyStrike }),
1504
1513
  /* @__PURE__ */ jsxs("span", { className: "text-lg font-semibold text-foreground", children: [
@@ -1511,9 +1520,13 @@ function PlanCard({ plan, onSelect, labels }) {
1511
1520
  price.monthlyStrike && /* @__PURE__ */ jsx("span", { className: "text-base font-medium tabular-nums text-muted-foreground line-through decoration-muted-foreground/70 decoration-1", children: price.monthlyStrike }),
1512
1521
  /* @__PURE__ */ jsxs("span", { className: "text-2xl font-semibold leading-none tabular-nums text-foreground", children: [
1513
1522
  price.monthly,
1514
- /* @__PURE__ */ jsx("span", { className: "ml-0.5 text-sm font-medium text-muted-foreground", children: l.perMonth })
1523
+ /* @__PURE__ */ jsxs("span", { className: "ml-0.5 text-sm font-medium text-muted-foreground", children: [
1524
+ l.perMonth,
1525
+ price.taxLabel && ` ${price.taxLabel}`
1526
+ ] })
1515
1527
  ] })
1516
- ] })
1528
+ ] }),
1529
+ price.note && /* @__PURE__ */ jsx("div", { className: "text-xs text-muted-foreground", "data-slot": "plan-card-price-note", children: price.note })
1517
1530
  ] }),
1518
1531
  /* @__PURE__ */ jsx("ul", { className: "mt-4 space-y-1 border-t border-border pt-4 text-sm text-foreground", children: features.map((feature) => /* @__PURE__ */ jsx("li", { children: feature }, feature)) })
1519
1532
  ]
@@ -1525,12 +1538,12 @@ function PlanCardGrid({
1525
1538
  onSelect,
1526
1539
  labels
1527
1540
  }) {
1528
- return /* @__PURE__ */ jsx("div", { className: "space-y-2", "data-slot": "plan-card-grid", children: /* @__PURE__ */ jsx(
1541
+ return /* @__PURE__ */ jsx("div", { className: "@container space-y-2", "data-slot": "plan-card-grid", children: /* @__PURE__ */ jsx(
1529
1542
  "div",
1530
1543
  {
1531
1544
  className: cn(
1532
1545
  "grid gap-2",
1533
- plans.length === 4 ? "grid-cols-1 @xl:grid-cols-2 @4xl:grid-cols-4" : "grid-cols-1 @xl:grid-cols-3"
1546
+ plans.length === 4 ? "grid-cols-1 @xl:grid-cols-2 @4xl:grid-cols-4" : "grid-cols-1 @2xl:grid-cols-3"
1534
1547
  ),
1535
1548
  children: plans.map((plan) => /* @__PURE__ */ jsx(PlanCard, { plan, onSelect, labels }, plan.id))
1536
1549
  }
@@ -1648,19 +1661,28 @@ function PlanInfoPopover({
1648
1661
  }) {
1649
1662
  const l = useMemo(() => ({ ...DEFAULT_PLAN_CARD_LABELS, ...labels }), [labels]);
1650
1663
  return /* @__PURE__ */ jsxs(Popover, { children: [
1651
- /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(Button, { type: "button", variant: "outline", size: "sm", className: "gap-1.5 text-sm", children: [
1652
- /* @__PURE__ */ jsx(Info, { className: "h-4 w-4" }),
1653
- l.pricingExplainer
1654
- ] }) }),
1664
+ /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
1665
+ Button,
1666
+ {
1667
+ type: "button",
1668
+ variant: "ghost",
1669
+ size: "sm",
1670
+ className: "gap-1.5 text-sm text-muted-foreground",
1671
+ children: [
1672
+ /* @__PURE__ */ jsx(Info, { className: "h-4 w-4" }),
1673
+ l.pricingExplainer
1674
+ ]
1675
+ }
1676
+ ) }),
1655
1677
  /* @__PURE__ */ jsxs(
1656
1678
  PopoverContent,
1657
1679
  {
1658
1680
  side: "top",
1659
1681
  align: "start",
1660
- className: "max-w-screen-safe w-[420px] space-y-3 text-sm leading-relaxed",
1682
+ className: "max-w-screen-safe w-[380px] space-y-3 text-sm leading-relaxed",
1661
1683
  children: [
1662
1684
  /* @__PURE__ */ jsx("div", { className: "text-base font-semibold", children: l.pricingExplainer }),
1663
- /* @__PURE__ */ jsx("p", { children: l.explainerTiers }),
1685
+ /* @__PURE__ */ jsx("ul", { className: "list-disc space-y-1 pl-4", children: l.explainerTiers.map((line) => /* @__PURE__ */ jsx("li", { children: line }, line)) }),
1664
1686
  /* @__PURE__ */ jsxs("p", { children: [
1665
1687
  l.explainerCredits,
1666
1688
  " ",
@@ -2563,10 +2585,10 @@ function UsagePanel({
2563
2585
  ] });
2564
2586
  }
2565
2587
  var DEFAULT_INVOICES_DIALOG_LABELS = {
2566
- title: (projectName) => `Receipts \u2014 ${projectName}`,
2567
- description: (projectName) => `List of receipts for project ${projectName}`,
2588
+ title: (projectName) => `Receipts \xB7 ${projectName}`,
2589
+ description: (projectName) => `Receipts for ${projectName}`,
2568
2590
  noReceipts: "No receipts yet.",
2569
- paid: "paid"
2591
+ paid: "Paid"
2570
2592
  };
2571
2593
  var DEFAULT_DAILY_CAP_FIELD_LABELS = {
2572
2594
  noLimit: "No limit",
@@ -2607,9 +2629,11 @@ function InvoicesDialog({
2607
2629
  {
2608
2630
  className: "flex items-center justify-between border-b py-2 text-sm last:border-0",
2609
2631
  children: [
2610
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
2632
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-x-3 gap-y-0.5", children: [
2611
2633
  /* @__PURE__ */ jsx("span", { className: "tabular-nums text-muted-foreground", children: invoice.date }),
2634
+ invoice.kind && /* @__PURE__ */ jsx("span", { className: "text-foreground", children: invoice.kind }),
2612
2635
  /* @__PURE__ */ jsx("span", { className: "font-medium tabular-nums", children: invoice.amount }),
2636
+ invoice.amountNote && /* @__PURE__ */ jsx("span", { className: "text-xs tabular-nums text-muted-foreground", children: invoice.amountNote }),
2613
2637
  /* @__PURE__ */ jsx(
2614
2638
  Badge,
2615
2639
  {
@@ -3109,10 +3133,10 @@ function PlanDialogFrame({
3109
3133
  var DEFAULT_CHECKOUT_DIALOG_LABELS = {
3110
3134
  unavailableTitle: "Stripe Not Configured",
3111
3135
  unavailableDescription: "Stripe checkout is not available. Please contact support.",
3112
- title: "Complete Your Purchase",
3113
- description: "Enter your payment details to complete your Pro subscription",
3114
- loading: "Loading checkout...",
3115
- error: "Failed to load checkout. Please try again."
3136
+ title: "Payment",
3137
+ description: "Enter your card to start the plan",
3138
+ loading: "Loading\u2026",
3139
+ error: "Checkout didn't load. Try again."
3116
3140
  };
3117
3141
  function CheckoutDialogFrame({
3118
3142
  open,
@@ -3152,11 +3176,11 @@ function CheckoutDialogFrame({
3152
3176
  ) });
3153
3177
  }
3154
3178
  var DEFAULT_QUOTA_EXCEEDED_DIALOG_LABELS = {
3155
- title: "AI quota exceeded",
3179
+ title: "Out of AI credits",
3156
3180
  projectUsage: "Project usage",
3157
- progress: "Project AI spend usage",
3181
+ progress: "AI credits used this month",
3158
3182
  project: "Project:",
3159
- close: "Close",
3183
+ close: "Not now",
3160
3184
  upgrade: "Upgrade"
3161
3185
  };
3162
3186
  function QuotaExceededDialogView({
@@ -3165,6 +3189,8 @@ function QuotaExceededDialogView({
3165
3189
  onUpgrade,
3166
3190
  message,
3167
3191
  usage,
3192
+ actions,
3193
+ extra,
3168
3194
  labels
3169
3195
  }) {
3170
3196
  const l = { ...DEFAULT_QUOTA_EXCEEDED_DIALOG_LABELS, ...labels };
@@ -3174,31 +3200,23 @@ function QuotaExceededDialogView({
3174
3200
  /* @__PURE__ */ jsx(DialogDescription, { children: message })
3175
3201
  ] }),
3176
3202
  usage && /* @__PURE__ */ jsxs(ModalSection, { className: "space-y-2", children: [
3177
- /* @__PURE__ */ jsx(ModalSectionTitle, { children: l.projectUsage }),
3178
3203
  /* @__PURE__ */ jsx(Progress, { value: usage.percent, "aria-label": l.progress }),
3179
3204
  /* @__PURE__ */ jsxs(
3180
3205
  "div",
3181
3206
  {
3182
- className: "flex items-center justify-between text-sm text-muted-foreground",
3207
+ className: "flex flex-wrap items-center justify-between gap-x-3 text-sm text-muted-foreground",
3183
3208
  "data-testid": "quota-usage-readout",
3184
3209
  children: [
3185
- /* @__PURE__ */ jsx("span", { children: usage.readout }),
3186
- /* @__PURE__ */ jsxs("span", { children: [
3187
- usage.percent,
3188
- "%"
3189
- ] })
3210
+ /* @__PURE__ */ jsx("span", { className: "tabular-nums", children: usage.readout }),
3211
+ usage.projectId && /* @__PURE__ */ jsx("span", { className: "truncate", children: usage.projectId })
3190
3212
  ]
3191
3213
  }
3192
- ),
3193
- usage.projectId && /* @__PURE__ */ jsxs("div", { className: "text-sm text-muted-foreground", children: [
3194
- l.project,
3195
- " ",
3196
- usage.projectId
3197
- ] })
3214
+ )
3198
3215
  ] }),
3216
+ extra,
3199
3217
  /* @__PURE__ */ jsxs(DialogFooter, { children: [
3200
3218
  /* @__PURE__ */ jsx(Button, { variant: "outline", onClick: onClose, "data-testid": "quota-close-button", children: l.close }),
3201
- /* @__PURE__ */ jsx(Button, { onClick: onUpgrade, "data-testid": "quota-upgrade-button", children: l.upgrade })
3219
+ actions ?? /* @__PURE__ */ jsx(Button, { onClick: onUpgrade, "data-testid": "quota-upgrade-button", children: l.upgrade })
3202
3220
  ] })
3203
3221
  ] }) });
3204
3222
  }