@arbidocs/blocks 0.4.118 → 0.4.120

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.
package/dist/index.cjs CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  var chunkXAJIKT6Y_cjs = require('./chunk-XAJIKT6Y.cjs');
5
5
  var chunkQI6AIHWP_cjs = require('./chunk-QI6AIHWP.cjs');
6
- var chunk46IU3UPF_cjs = require('./chunk-46IU3UPF.cjs');
6
+ var chunkA7NCSZAP_cjs = require('./chunk-A7NCSZAP.cjs');
7
7
  var chunkS6BOINC4_cjs = require('./chunk-S6BOINC4.cjs');
8
8
  var chunk65THHQVB_cjs = require('./chunk-65THHQVB.cjs');
9
9
  var chunk7QDX2CO4_cjs = require('./chunk-7QDX2CO4.cjs');
@@ -15,9 +15,9 @@ require('./chunk-7G2LJMUG.cjs');
15
15
  var chunkUS5ASM4G_cjs = require('./chunk-US5ASM4G.cjs');
16
16
  var chunkU6MPHCEB_cjs = require('./chunk-U6MPHCEB.cjs');
17
17
  var chunkD54JXTPG_cjs = require('./chunk-D54JXTPG.cjs');
18
+ var chunkI2QSDQQV_cjs = require('./chunk-I2QSDQQV.cjs');
18
19
  var chunkOUW6G4O2_cjs = require('./chunk-OUW6G4O2.cjs');
19
20
  var chunkVPPX5XUF_cjs = require('./chunk-VPPX5XUF.cjs');
20
- var chunkI2QSDQQV_cjs = require('./chunk-I2QSDQQV.cjs');
21
21
  require('./chunk-RC25WMVB.cjs');
22
22
  var chunkVLCY46K6_cjs = require('./chunk-VLCY46K6.cjs');
23
23
  var chunkFXUQZFAN_cjs = require('./chunk-FXUQZFAN.cjs');
@@ -973,7 +973,11 @@ Object.defineProperty(exports, "stripMarkdownLinks", {
973
973
  });
974
974
  Object.defineProperty(exports, "UsageMeter", {
975
975
  enumerable: true,
976
- get: function () { return chunk46IU3UPF_cjs.UsageMeter; }
976
+ get: function () { return chunkA7NCSZAP_cjs.UsageMeter; }
977
+ });
978
+ Object.defineProperty(exports, "usageMeterState", {
979
+ enumerable: true,
980
+ get: function () { return chunkA7NCSZAP_cjs.usageMeterState; }
977
981
  });
978
982
  Object.defineProperty(exports, "ActionCluster", {
979
983
  enumerable: true,
@@ -1775,50 +1779,6 @@ Object.defineProperty(exports, "DetailSection", {
1775
1779
  enumerable: true,
1776
1780
  get: function () { return chunkD54JXTPG_cjs.DetailSection; }
1777
1781
  });
1778
- Object.defineProperty(exports, "DEFAULT_SEARCH_HIT_LABELS", {
1779
- enumerable: true,
1780
- get: function () { return chunkOUW6G4O2_cjs.DEFAULT_SEARCH_HIT_LABELS; }
1781
- });
1782
- Object.defineProperty(exports, "SearchHit", {
1783
- enumerable: true,
1784
- get: function () { return chunkOUW6G4O2_cjs.SearchHit; }
1785
- });
1786
- Object.defineProperty(exports, "TIMELINE_ZOOM", {
1787
- enumerable: true,
1788
- get: function () { return chunkVPPX5XUF_cjs.TIMELINE_ZOOM; }
1789
- });
1790
- Object.defineProperty(exports, "TimelineCalendar", {
1791
- enumerable: true,
1792
- get: function () { return chunkVPPX5XUF_cjs.TimelineCalendar; }
1793
- });
1794
- Object.defineProperty(exports, "TimelineGantt", {
1795
- enumerable: true,
1796
- get: function () { return chunkVPPX5XUF_cjs.TimelineGantt; }
1797
- });
1798
- Object.defineProperty(exports, "TimelineZoomControl", {
1799
- enumerable: true,
1800
- get: function () { return chunkVPPX5XUF_cjs.TimelineZoomControl; }
1801
- });
1802
- Object.defineProperty(exports, "dayKey", {
1803
- enumerable: true,
1804
- get: function () { return chunkVPPX5XUF_cjs.dayKey; }
1805
- });
1806
- Object.defineProperty(exports, "formatSpan", {
1807
- enumerable: true,
1808
- get: function () { return chunkVPPX5XUF_cjs.formatSpan; }
1809
- });
1810
- Object.defineProperty(exports, "monthLabel", {
1811
- enumerable: true,
1812
- get: function () { return chunkVPPX5XUF_cjs.monthLabel; }
1813
- });
1814
- Object.defineProperty(exports, "parseIso", {
1815
- enumerable: true,
1816
- get: function () { return chunkVPPX5XUF_cjs.parseIso; }
1817
- });
1818
- Object.defineProperty(exports, "utcDay", {
1819
- enumerable: true,
1820
- get: function () { return chunkVPPX5XUF_cjs.utcDay; }
1821
- });
1822
1782
  Object.defineProperty(exports, "DEFINITIONS_LABEL", {
1823
1783
  enumerable: true,
1824
1784
  get: function () { return chunkI2QSDQQV_cjs.DEFINITIONS_LABEL; }
@@ -1867,6 +1827,50 @@ Object.defineProperty(exports, "toDefinition", {
1867
1827
  enumerable: true,
1868
1828
  get: function () { return chunkI2QSDQQV_cjs.toDefinition; }
1869
1829
  });
1830
+ Object.defineProperty(exports, "DEFAULT_SEARCH_HIT_LABELS", {
1831
+ enumerable: true,
1832
+ get: function () { return chunkOUW6G4O2_cjs.DEFAULT_SEARCH_HIT_LABELS; }
1833
+ });
1834
+ Object.defineProperty(exports, "SearchHit", {
1835
+ enumerable: true,
1836
+ get: function () { return chunkOUW6G4O2_cjs.SearchHit; }
1837
+ });
1838
+ Object.defineProperty(exports, "TIMELINE_ZOOM", {
1839
+ enumerable: true,
1840
+ get: function () { return chunkVPPX5XUF_cjs.TIMELINE_ZOOM; }
1841
+ });
1842
+ Object.defineProperty(exports, "TimelineCalendar", {
1843
+ enumerable: true,
1844
+ get: function () { return chunkVPPX5XUF_cjs.TimelineCalendar; }
1845
+ });
1846
+ Object.defineProperty(exports, "TimelineGantt", {
1847
+ enumerable: true,
1848
+ get: function () { return chunkVPPX5XUF_cjs.TimelineGantt; }
1849
+ });
1850
+ Object.defineProperty(exports, "TimelineZoomControl", {
1851
+ enumerable: true,
1852
+ get: function () { return chunkVPPX5XUF_cjs.TimelineZoomControl; }
1853
+ });
1854
+ Object.defineProperty(exports, "dayKey", {
1855
+ enumerable: true,
1856
+ get: function () { return chunkVPPX5XUF_cjs.dayKey; }
1857
+ });
1858
+ Object.defineProperty(exports, "formatSpan", {
1859
+ enumerable: true,
1860
+ get: function () { return chunkVPPX5XUF_cjs.formatSpan; }
1861
+ });
1862
+ Object.defineProperty(exports, "monthLabel", {
1863
+ enumerable: true,
1864
+ get: function () { return chunkVPPX5XUF_cjs.monthLabel; }
1865
+ });
1866
+ Object.defineProperty(exports, "parseIso", {
1867
+ enumerable: true,
1868
+ get: function () { return chunkVPPX5XUF_cjs.parseIso; }
1869
+ });
1870
+ Object.defineProperty(exports, "utcDay", {
1871
+ enumerable: true,
1872
+ get: function () { return chunkVPPX5XUF_cjs.utcDay; }
1873
+ });
1870
1874
  Object.defineProperty(exports, "DEFAULT_SHARE_CONTROL_LABELS", {
1871
1875
  enumerable: true,
1872
1876
  get: function () { return chunkVLCY46K6_cjs.DEFAULT_SHARE_CONTROL_LABELS; }
package/dist/index.d.ts CHANGED
@@ -13,7 +13,7 @@ export { formatCurrency, initials, fmtDate, fmtDateTime, fromNow, daysUntil, hrs
13
13
  export { DataTable, type Column, type DataTableProps, type DataTableSort, type DataTableTestIds, } from './components/DataTable';
14
14
  export { DataTableBlock, type DataTableBlockProps, type DataTableBlockColumn, } from './components/DataTableBlock';
15
15
  export { EmptyState } from './components/EmptyState';
16
- export { UsageMeter } from './components/UsageMeter';
16
+ export { UsageMeter, usageMeterState, type UsageMeterAllowance, type UsageMeterState, } from './components/UsageMeter';
17
17
  export { Timeline, TimelineCalendar, TimelineGantt, TimelineZoomControl, TIMELINE_ZOOM, formatSpan, parseIso, utcDay, dayKey, monthLabel, type TimelineItem, type TimelineProps, type TimelineViewMode, type TimelineCalendarProps, type TimelineGanttProps, type TimelineZoomControlProps, } from './timeline';
18
18
  export { PageHeader, type PageHeaderProps } from './components/PageHeader';
19
19
  export { SectionHeading } from './components/SectionHeading';
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  export { MemberAvatarStack } from './chunk-XNOASBGW.js';
3
3
  export { ApplyLabelButton, ApplyLabelDialog, DEFAULT_APPLY_LABEL_DIALOG_LABELS, DEFAULT_RELEVANCE_STEPS, DEFAULT_SEARCH_BAR_LABELS, DEFAULT_SEARCH_EMPTY_STATE_LABELS, DEFAULT_SEARCH_GROUP_HEADER_LABELS, DEFAULT_SEARCH_NO_RESULTS_LABELS, DEFAULT_SEARCH_PAGINATION_LABELS, DEFAULT_SEARCH_TOTALS_LABELS, DOCUMENT_SEARCH_NOUNS, Highlight, RelevanceThreshold, SearchBar, SearchControlsBar, SearchEmptyState, SearchErrorBanner, SearchGroupCard, SearchGroupHeader, SearchNoResults, SearchPageBody, SearchPageFrame, SearchPageHeader, SearchPagination, SearchPillToggle, SearchResultList, SearchResultsInner, SearchResultsMain, SearchToolbarRow, SearchTotalsHeadline, getPageNumbers, highlightTerms, searchNouns, splitByTerms, stripMarkdownLinks } from './chunk-2MJWWPHY.js';
4
- export { UsageMeter } from './chunk-D5T53XCL.js';
4
+ export { UsageMeter, usageMeterState } from './chunk-IBZJYCYM.js';
5
5
  export { ActionCluster, AskField, AskRow, AskTrigger, DEFAULT_ASK_FIELD_LABELS, DEFAULT_INSTALL_PROMPT_LABELS, DEFAULT_MOBILE_BARS_LABELS, DEFAULT_OFFLINE_PILL_LABELS, DEFAULT_REMOTE_CONTROL_PILL_LABELS, DEFAULT_SIDEBAR_LABELS, DEFAULT_TIP_CARD_LABELS, DEFAULT_WORKSPACE_KIND_LABELS, DEFAULT_WORKSPACE_SWITCHER_LABELS, INSTALL_PROMPT_DISMISSED_KEY, InfoBar, InstallPrompt, MobileAppBar, MobileTabBar, NotificationBell, OfflinePill, RemoteControlPill, STATUS_ROW_BASE_CLASS, STATUS_ROW_TONES, Sidebar, SidebarBadgeRow, SidebarRowAction, SidebarRowHoverContext, SplitLayout, StatusBadge, StatusRow, TipCard, UserMenu, WorkspaceIdentity, WorkspaceSwitcher, getInstallInstructions, initInstallPrompt, isIosDevice, promptAppInstall, resolveSidebarLayout, useInstallPrompt, useSidebarContext, useSidebarSettle, workspaceKindColor, workspaceKindMeta } from './chunk-D3N67Q4D.js';
6
6
  export { ArticleList, Chart, CheckList, CollectionDetail, CtaBand, DefinitionList, EditorialHeading, EditorialHero, EditorialProse, EditorialSection, Eyebrow, PanelGrid, ProofStrip, PullQuote, Reveal, TagList } from './chunk-LYUO3E6V.js';
7
7
  export { DataTable, DataTableBlock, MetricCard, PageHeader, StatGroup } from './chunk-ZCF2JJFA.js';
@@ -15,10 +15,10 @@ export { DEFAULT_TAG_COLUMNS_EDITOR_LABELS, DEFAULT_TAG_TABLE_DOCX_LABELS, DEFAU
15
15
  export { MailDeliveryBadge, MailDeliveryList, MailDocumentPicker, MailGrid, MailMessagePreview, MailMessageView, NEEDS_CONNECTION, PlainMailBodyEditor, draftMailCompose, emptyMailCompose, hasCalendarPart, mailAddressLabel, parseMailRecipients, replyMailCompose } from './chunk-IXTQYFIF.js';
16
16
  import { DetailLoading, DetailBody, DetailSection, DetailFields, DetailField, DetailLinkList, DetailLinkItem, DetailEmpty } from './chunk-ZCOVDK2E.js';
17
17
  export { DEFAULT_DETAIL_PANEL_LABELS, DetailBody, DetailEmpty, DetailField, DetailFields, DetailLinkItem, DetailLinkList, DetailLoading, DetailPanel, DetailSection } from './chunk-ZCOVDK2E.js';
18
- export { DEFAULT_SEARCH_HIT_LABELS, SearchHit } from './chunk-A2YAC22G.js';
19
- export { TIMELINE_ZOOM, TimelineCalendar, TimelineGantt, TimelineZoomControl, dayKey, formatSpan, monthLabel, parseIso, utcDay } from './chunk-4EZVCGRL.js';
20
18
  import { groupDefinitions, compareDefinitions, minuteUtc, page, cell, documentXml, paragraph, docxPackage, TABLE_DOCUMENT_STYLES } from './chunk-QXMR5YHC.js';
21
19
  export { DEFINITIONS_LABEL, DEFINITION_BOOKMARK_PREFIX, compareDefinitions, compareTerms, definitionBookmark, definitionIdOfBookmark, definitionLabels, filterTermGroups, groupDefinitions, parseDefinition, termKey, toDefinition } from './chunk-QXMR5YHC.js';
20
+ export { DEFAULT_SEARCH_HIT_LABELS, SearchHit } from './chunk-A2YAC22G.js';
21
+ export { TIMELINE_ZOOM, TimelineCalendar, TimelineGantt, TimelineZoomControl, dayKey, formatSpan, monthLabel, parseIso, utcDay } from './chunk-4EZVCGRL.js';
22
22
  import './chunk-AF6RDAJF.js';
23
23
  export { DEFAULT_SHARE_CONTROL_LABELS, ShareControl } from './chunk-K4BGOPGG.js';
24
24
  export { AgentAvatarField, AgentBar, AgentBarIconButton, AgentBarMenu, AgentBarNotes, AgentBarProbeAnswer, AgentBarQueuedNote, AgentBarStatus, AgentCard, AgentCreateView, AgentCreatedView, AgentCreator, AgentEditView, AgentGallery, AgentMainView, AgentSelect, AgentTypeSelector, CapabilityGrid, CapabilityTile, ConfigField, ConfigForm, ConsentActions, ConsentBulletList, ConsentCard, ConsentFootnote, ConsentHeader, ConsentMessage, ConsentNotice, ConsentPage, ConsentPermissionList, ConsentSection, ConsentStrong, ConsentText, ConversationListView, ConversationTurnSpeaker, CopyableUrl, DEFAULT_AGENT_AVATAR_FIELD_LABELS, DEFAULT_AGENT_BAR_LABELS, DEFAULT_AGENT_CARD_LABELS, DEFAULT_AGENT_CREATOR_LABELS, DEFAULT_AGENT_GALLERY_LABELS, DEFAULT_AGENT_SELECT_LABELS, DEFAULT_AGENT_STEPS_LABELS, DEFAULT_AGENT_TYPE_SELECTOR_LABELS, DEFAULT_AUTHORIZE_AGENT_LABELS, DEFAULT_CONFIG_FIELD_LABELS, DEFAULT_CONFIG_FORM_LABELS, DEFAULT_CONSENT_ACTIONS_LABELS, DEFAULT_COPYABLE_URL_LABELS, DEFAULT_NEW_THREAD_DIALOG_LABELS, DEFAULT_PILL_SELECT_LABELS, DEFAULT_RECURRENCE, DEFAULT_RECURRENCE_BUILDER_LABELS, DEFAULT_SKILL_CARD_LABELS, DEFAULT_SKILL_EDIT_FORM_LABELS, DEFAULT_SKILL_GENERATE_FORM_LABELS, DEFAULT_SKILL_GLOBAL_BADGE_LABELS, DEFAULT_SKILL_ROW_LABELS, DEFAULT_SKILL_VIEW_TOGGLE_LABELS, DEFAULT_SUBAGENT_ROSTER_LABELS, DEFAULT_TASKS_CHROME_LABELS, DEFAULT_TASK_COMPOSER_LABELS, DEFAULT_TASK_LIST_LABELS, DEFAULT_TASK_OUTPUTS_CELL_LABELS, DEFAULT_TASK_PLAN_LABELS, DEFAULT_TASK_RUNS_DIALOG_LABELS, DEFAULT_TASK_STATUS_PILL_LABELS, DEFAULT_TASK_THREAD_CHIP_LABELS, DEFAULT_TASK_TRIGGER_CHIP_LABELS, DEFAULT_TUPLE_ARRAY_FIELD_LABELS, DEFAULT_UPLOAD_TASK_ITEM_LABELS, DEFAULT_UPLOAD_TASK_LIST_LABELS, DEFAULT_WORKFLOWS_CHROME_LABELS, DEFAULT_WORKFLOW_CONFIG_DIALOG_LABELS, DEFAULT_WORKFLOW_LIST_LABELS, DEFAULT_WORKFLOW_THREAD_STRIP_LABELS, DERIVED_NAME_WORDS, EMPTY_NEW_THREAD, EntityChip, GoalCriteria, MAX_TASK_DEPTH, NewThreadDialog, PersonPill, PillSelect, RecurrenceBuilder, STATUS_LABELS, STATUS_ORDER, STATUS_TONE, SkillActionButton, SkillCard, SkillDetail, SkillDetailSection, SkillEditForm, SkillFilterChips, SkillGenerateForm, SkillGlobalBadge, SkillRow, SkillTile, SkillTypeBadge, SkillViewToggle, StepDetail, StepNarration, StepOutcome, StepParams, StepRow, StepSummary, StepTrace, StepTraceSummary, SubAgentLane, SubStepGroup, SubagentRoster, TASK_COLUMN_ORDER, TRIGGER_LABELS, TaskActivityDialog, TaskComposer, TaskFlow, TaskInbox, TaskMoveDialog, TaskOutputsCell, TaskPlan, TaskRunsDialog, TaskStartDialog, TaskStatusPill, TaskTable, TaskThreadChip, TaskTriggerChip, TasksToolbar, ThreadActivity, ThreadNotifyDialog, TupleArrayField, UploadTaskItem, UploadTaskList, WEEKDAYS, WORKFLOW_COLUMN_ORDER, WorkflowConfigDialog, WorkflowDocumentsField, WorkflowLauncher, WorkflowThreadStartedBy, WorkflowThreadStrip, WorkflowsTable, WorkflowsToolbar, agentConfigSectionToValues, agentCreatorToConfigSection, asTaskStatus, authModeFor, buildRRule, buildTaskRows, buildWorkflowScopeSource, compactThreadActivity, composePersona, composerToTaskQuery, composerToWorkRequest, composerToWorkflowRequest, composerToWorkflowUpdate, createTaskColumns, createWorkflowColumns, createsWork, defaultScopeRenderer, defaultTaskComposerValues, deriveAgentName, deriveWorkflowName, descendantIds, describeRRule, filterConversationRows, firstWords, formatElapsed, goalProgress, groupThreadActivity, hasTaskFields, hasTrigger, humanizeSection, indexTasks, inferType, inputDocumentIds, isAgenticWorkflow, isOutOfBounds, isPlainTodo, isSkillRow, isValidAgentName, isoToLocalInput, linkedRunsFromActivity, localInputToIso, matchWorkflowScope, moveTargets, newThreadToRequest, nextCriterionId, ownerExtId, parseRRule, prettifyKey, resolveScopeInputs, skillSlug, stripPersonaPreamble, summarizeAgent, summarizeCapabilities, taskComposerToCreateRequest, taskComposerToUpdateRequest, taskNeedsAccess, taskToComposerValues, useWorkflowPreview, workflowFromSkillMarkdown, workflowStatus, workflowTaskFields, workflowToComposerValues, workflowToSkillMarkdown, workflowTriggerType, workflowWhen } from './chunk-6Z7DLJU2.js';
@@ -3,8 +3,25 @@ export interface FirmPoolView {
3
3
  /** £ of AI usage used this month; `null` while the usage report is not available yet. */
4
4
  usedGbp: number | null;
5
5
  totalGbp: number;
6
+ /** The licence's part of this month's pool (£ of AI usage a month); the rest of `totalGbp` is top-ups. */
7
+ baseGbp?: number;
8
+ /** £ of AI usage automatic top-ups may still add this month before the usage budget stops them
9
+ * (`null` = no limit; omitted = not applicable, e.g. no automatic top-ups on this licence). */
10
+ autoRoomGbp?: number | null;
6
11
  /** £ of AI usage each top-up step adds a month (for the top-up help); £25 on Box. */
7
12
  addonGbp?: number;
13
+ /** Storage on this deployment against the licence's storage (GB); `usedGb` null until measured. Automatic
14
+ * top-ups this month (`autoAddedGb`) are part of `totalGb`. */
15
+ storage?: {
16
+ usedGb: number | null;
17
+ totalGb: number;
18
+ autoAddedGb?: number;
19
+ };
20
+ /** Internal users (firm members; external users and guests are free) against the licence's users. */
21
+ users?: {
22
+ used: number | null;
23
+ total: number;
24
+ };
8
25
  /** The Box licence, already formatted (e.g. "8 users · 250 GB · £200 of AI usage a month · Annual"). */
9
26
  licence?: string;
10
27
  /** A decrease kept until the period end, already formatted (e.g. "From 1 Dec 2026: 6 users · …"). */
@@ -13,12 +30,13 @@ export interface FirmPoolView {
13
30
  resetsAt?: string;
14
31
  /** Standard AI is unlimited and the allowance applies to Premium AI only. */
15
32
  premiumOnly: boolean;
16
- /** Automatic top-ups this month, as money against the monthly usage budget (formatted), with what
17
- * they added (e.g. "+£50 of AI usage · +25 GB"). */
33
+ /** Automatic top-ups this month, as money against the monthly usage budget (formatted: spent, limit and what
34
+ * is left), with what they added (e.g. "+£50 of AI usage · +25 GB"). */
18
35
  autoAddons?: {
19
36
  count: number;
20
37
  spent: string;
21
38
  limit: string;
39
+ left?: string;
22
40
  pct: number;
23
41
  added?: string;
24
42
  };
@@ -29,9 +47,17 @@ export interface FirmPoolSectionLabels {
29
47
  title: string;
30
48
  licence: string;
31
49
  used: string;
50
+ storage: string;
51
+ users: string;
32
52
  premiumOnly: string;
33
53
  resets: (date: string) => string;
34
54
  usageUnknown: string;
55
+ legendLicence: (amount: string) => string;
56
+ legendTopUps: (amount: string) => string;
57
+ legendAutoRoom: (amount: string) => string;
58
+ autoRoomNoLimit: string;
59
+ budget: string;
60
+ budgetValue: (left: string, limit: string) => string;
35
61
  autoAddons: (count: number) => string;
36
62
  autoAddonsOff: string;
37
63
  topUpLabel: string;
@@ -3,7 +3,7 @@
3
3
 
4
4
  var chunkOR4CO743_cjs = require('../chunk-OR4CO743.cjs');
5
5
  var chunk223D4727_cjs = require('../chunk-223D4727.cjs');
6
- var chunk46IU3UPF_cjs = require('../chunk-46IU3UPF.cjs');
6
+ var chunkA7NCSZAP_cjs = require('../chunk-A7NCSZAP.cjs');
7
7
  var chunkS5HZBXZA_cjs = require('../chunk-S5HZBXZA.cjs');
8
8
  var chunkN26CXGXC_cjs = require('../chunk-N26CXGXC.cjs');
9
9
  var chunkDVUZTGVL_cjs = require('../chunk-DVUZTGVL.cjs');
@@ -1439,7 +1439,7 @@ var DEFAULT_PLAN_CARD_LABELS = {
1439
1439
  explainerTiers: [
1440
1440
  "AI usage and storage are shared by everyone in the project. AI usage resets monthly.",
1441
1441
  "Need more? Add \xA325 of AI usage or 25 GB at a time. Add-ons renew until you reduce them.",
1442
- "Add-ons, manual and automatic, stay within your monthly usage cap (\xA3100 by default; \xA30 = no extra usage, or no limit).",
1442
+ "Automatic top-ups stay within your monthly usage cap (\xA3100 by default; \xA30 = no automatic top-ups, or no limit). Adding by hand is never capped.",
1443
1443
  "Add-ons start now. Downgrades, billing switches and add-on reductions start at the end of the period. No refunds.",
1444
1444
  "Prices are shown + VAT; the total for your country is shown before you pay."
1445
1445
  ],
@@ -2051,13 +2051,21 @@ function RenameDialog({
2051
2051
  ] }) });
2052
2052
  }
2053
2053
  var DEFAULT_FIRM_POOL_SECTION_LABELS = {
2054
- title: "Firm AI usage",
2054
+ title: "Firm usage",
2055
2055
  licence: "Licence",
2056
- used: "This month",
2056
+ used: "AI usage this month",
2057
+ storage: "Storage",
2058
+ users: "Internal users",
2057
2059
  premiumOnly: "Standard AI is unlimited; the allowance applies to Premium AI.",
2058
2060
  resets: (date) => `resets ${date}`,
2059
2061
  usageUnknown: "Usage is being calculated.",
2060
- autoAddons: (count) => `Automatic top-ups: ${count}`,
2062
+ legendLicence: (amount) => `Licence ${amount}`,
2063
+ legendTopUps: (amount) => `Top-ups ${amount}`,
2064
+ legendAutoRoom: (amount) => `Automatic top-ups may add ${amount}`,
2065
+ autoRoomNoLimit: "Automatic top-ups: no limit",
2066
+ budget: "Usage budget \u2014 limits automatic top-ups only",
2067
+ budgetValue: (left, limit) => `${left} left of ${limit}`,
2068
+ autoAddons: (count) => `Automatic top-ups this month: ${count}`,
2061
2069
  autoAddonsOff: "Automatic top-ups are off (\xA30 usage budget).",
2062
2070
  topUpLabel: "Steps to add",
2063
2071
  topUp: "Add AI usage",
@@ -2079,11 +2087,15 @@ function FirmPoolSection({
2079
2087
  const [count, setCount] = react.useState(1);
2080
2088
  const valid = Number.isInteger(count) && count >= 1 && count <= FIRM_POOL_MAX_TOP_UP;
2081
2089
  const used = view.usedGbp;
2082
- const pct = used != null && view.totalGbp > 0 ? used / view.totalGbp * 100 : 0;
2083
2090
  const step = view.addonGbp ?? 25;
2091
+ const base = Math.min(view.baseGbp ?? view.totalGbp, view.totalGbp);
2092
+ const topUps = Math.max(0, view.totalGbp - base);
2093
+ const gb = (n) => `${Math.round(n * 10) / 10} GB`;
2094
+ const storage = view.storage;
2095
+ const users = view.users;
2084
2096
  return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "space-y-3", "data-testid": testId, children: [
2085
2097
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "px-1 text-sm font-semibold text-foreground", children: l.title }),
2086
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3 px-1", children: [
2098
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4 px-1", children: [
2087
2099
  view.licence && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-0.5 text-sm", "data-testid": `${testId}-licence`, children: [
2088
2100
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-baseline justify-between gap-x-4", children: [
2089
2101
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium text-foreground", children: l.licence }),
@@ -2092,23 +2104,62 @@ function FirmPoolSection({
2092
2104
  view.renews && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", "data-testid": `${testId}-renews`, children: view.renews })
2093
2105
  ] }),
2094
2106
  /* @__PURE__ */ jsxRuntime.jsx(
2095
- chunk46IU3UPF_cjs.UsageMeter,
2107
+ chunkA7NCSZAP_cjs.UsageMeter,
2096
2108
  {
2097
2109
  label: l.used,
2098
2110
  hint: view.resetsAt ? l.resets(view.resetsAt) : void 0,
2099
2111
  value: `${used != null ? formatAmount(used) : "\u2014"} / ${formatAmount(view.totalGbp)}`,
2100
- pct,
2112
+ allowance: {
2113
+ used: used ?? 0,
2114
+ plan: base,
2115
+ topUps,
2116
+ autoRoom: view.autoAddonsOff ? 0 : view.autoRoomGbp
2117
+ },
2118
+ legend: {
2119
+ plan: topUps > 0 || (view.autoRoomGbp ?? 0) > 0 ? l.legendLicence(formatAmount(base)) : void 0,
2120
+ topUps: topUps > 0 ? l.legendTopUps(formatAmount(topUps)) : void 0,
2121
+ autoRoom: view.autoRoomGbp === null ? l.autoRoomNoLimit : view.autoRoomGbp ? l.legendAutoRoom(formatAmount(view.autoRoomGbp)) : void 0
2122
+ },
2123
+ details: used == null ? /* @__PURE__ */ jsxRuntime.jsx("p", { children: l.usageUnknown }) : void 0,
2101
2124
  testId: `${testId}-usage`
2102
2125
  }
2103
2126
  ),
2104
- used == null && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: l.usageUnknown }),
2127
+ storage && /* @__PURE__ */ jsxRuntime.jsx(
2128
+ chunkA7NCSZAP_cjs.UsageMeter,
2129
+ {
2130
+ label: l.storage,
2131
+ value: `${storage.usedGb != null ? gb(storage.usedGb) : "\u2014"} / ${gb(storage.totalGb)}`,
2132
+ allowance: {
2133
+ used: storage.usedGb ?? 0,
2134
+ plan: storage.totalGb - (storage.autoAddedGb ?? 0),
2135
+ topUps: storage.autoAddedGb ?? 0
2136
+ },
2137
+ legend: {
2138
+ plan: storage.autoAddedGb ? l.legendLicence(gb(storage.totalGb - storage.autoAddedGb)) : void 0,
2139
+ topUps: storage.autoAddedGb ? l.legendTopUps(gb(storage.autoAddedGb)) : void 0
2140
+ },
2141
+ testId: `${testId}-storage`
2142
+ }
2143
+ ),
2144
+ users && /* @__PURE__ */ jsxRuntime.jsx(
2145
+ chunkA7NCSZAP_cjs.UsageMeter,
2146
+ {
2147
+ label: l.users,
2148
+ value: `${users.used ?? "\u2014"} / ${users.total}`,
2149
+ allowance: { used: users.used ?? 0, plan: users.total },
2150
+ testId: `${testId}-users`
2151
+ }
2152
+ ),
2105
2153
  view.autoAddons && /* @__PURE__ */ jsxRuntime.jsx(
2106
- chunk46IU3UPF_cjs.UsageMeter,
2154
+ chunkA7NCSZAP_cjs.UsageMeter,
2107
2155
  {
2108
- label: l.autoAddons(view.autoAddons.count),
2109
- value: `${view.autoAddons.spent} / ${view.autoAddons.limit}`,
2156
+ label: l.budget,
2157
+ value: view.autoAddons.left ? l.budgetValue(view.autoAddons.left, view.autoAddons.limit) : `${view.autoAddons.spent} / ${view.autoAddons.limit}`,
2110
2158
  pct: view.autoAddons.pct,
2111
- hint: view.autoAddons.added,
2159
+ details: /* @__PURE__ */ jsxRuntime.jsxs("p", { "data-testid": `${testId}-auto-addons-count`, children: [
2160
+ l.autoAddons(view.autoAddons.count),
2161
+ view.autoAddons.added ? ` (${view.autoAddons.added})` : ""
2162
+ ] }),
2112
2163
  testId: `${testId}-auto-addons`
2113
2164
  }
2114
2165
  ),
@@ -2294,7 +2345,7 @@ function WelcomeDialog({
2294
2345
  planBadge
2295
2346
  ] }),
2296
2347
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-3", children: quotas.map((quota) => /* @__PURE__ */ jsxRuntime.jsx(
2297
- chunk46IU3UPF_cjs.UsageMeter,
2348
+ chunkA7NCSZAP_cjs.UsageMeter,
2298
2349
  {
2299
2350
  icon: quota.icon,
2300
2351
  label: quota.label,
@@ -3166,7 +3217,7 @@ function SubscriptionStatusView({
3166
3217
  ] }),
3167
3218
  !resetDate && isCanceling && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-yellow-text", children: l.cancelsAtEndOfBillingPeriod }),
3168
3219
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-3", children: meters.map((m) => /* @__PURE__ */ jsxRuntime.jsx(
3169
- chunk46IU3UPF_cjs.UsageMeter,
3220
+ chunkA7NCSZAP_cjs.UsageMeter,
3170
3221
  {
3171
3222
  icon: m.icon,
3172
3223
  label: m.label,