@arbidocs/blocks 0.4.30 → 0.4.32

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 (38) hide show
  1. package/dist/agents/index.cjs +211 -211
  2. package/dist/agents/index.js +2 -2
  3. package/dist/{chunk-CRIKTUEU.cjs → chunk-46IU3UPF.cjs} +3 -3
  4. package/dist/{chunk-CRIKTUEU.cjs.map → chunk-46IU3UPF.cjs.map} +1 -1
  5. package/dist/{chunk-ZJ6RIPFS.js → chunk-C75S6USL.js} +70 -11
  6. package/dist/chunk-C75S6USL.js.map +1 -0
  7. package/dist/{chunk-U2E3WT3J.js → chunk-D5T53XCL.js} +3 -3
  8. package/dist/{chunk-U2E3WT3J.js.map → chunk-D5T53XCL.js.map} +1 -1
  9. package/dist/{chunk-LXC5PTTI.cjs → chunk-GVQOBJKR.cjs} +71 -9
  10. package/dist/chunk-GVQOBJKR.cjs.map +1 -0
  11. package/dist/{chunk-G4YOH5DU.cjs → chunk-LPXAWW62.cjs} +4 -4
  12. package/dist/chunk-LPXAWW62.cjs.map +1 -0
  13. package/dist/{chunk-HER7MTRR.js → chunk-PH7YTYYH.js} +4 -4
  14. package/dist/chunk-PH7YTYYH.js.map +1 -0
  15. package/dist/{chunk-LGKYEAA3.cjs → chunk-PLGVMLBD.cjs} +5 -5
  16. package/dist/{chunk-LGKYEAA3.cjs.map → chunk-PLGVMLBD.cjs.map} +1 -1
  17. package/dist/{chunk-J7IXAJWT.js → chunk-TZ4QF7EP.js} +5 -5
  18. package/dist/{chunk-J7IXAJWT.js.map → chunk-TZ4QF7EP.js.map} +1 -1
  19. package/dist/index.cjs +303 -291
  20. package/dist/index.js +5 -5
  21. package/dist/retrieval/index.cjs +36 -36
  22. package/dist/retrieval/index.js +1 -1
  23. package/dist/settings/index.cjs +8 -8
  24. package/dist/settings/index.cjs.map +1 -1
  25. package/dist/settings/index.js +6 -6
  26. package/dist/settings/index.js.map +1 -1
  27. package/dist/shell/ActionCluster.d.ts +2 -1
  28. package/dist/shell/StatusRow.d.ts +8 -0
  29. package/dist/shell/index.cjs +54 -42
  30. package/dist/shell/index.d.ts +2 -1
  31. package/dist/shell/index.js +1 -1
  32. package/dist/shell/status-row-styles.d.ts +8 -0
  33. package/package.json +3 -3
  34. package/src/tokens.css +23 -23
  35. package/dist/chunk-G4YOH5DU.cjs.map +0 -1
  36. package/dist/chunk-HER7MTRR.js.map +0 -1
  37. package/dist/chunk-LXC5PTTI.cjs.map +0 -1
  38. package/dist/chunk-ZJ6RIPFS.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- 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, 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_SCHEMA_FORM_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_ACTIVITY_LABELS, DEFAULT_TASK_COMPOSER_LABELS, DEFAULT_TASK_LIST_LABELS, DEFAULT_TASK_OUTPUTS_CELL_LABELS, DEFAULT_TASK_PLAN_LABELS, DEFAULT_TASK_REVIEW_ACTIONS_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, DERIVED_NAME_WORDS, EMPTY_NEW_THREAD, EMPTY_WORKFLOW_SCOPE, GoalCriteria, MAX_TASK_DEPTH, NewThreadDialog, PersonPill, PillSelect, RecurrenceBuilder, SKILL_PROMPT_FALLBACK_PLACEHOLDER, SKILL_PROMPT_LABEL, STATUS_LABELS, STATUS_ORDER, STATUS_TONE, SchemaForm, 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, TaskActivityTimeline, TaskComposer, TaskMoveDialog, TaskOutputsCell, TaskPlan, TaskReviewActions, TaskRunsDialog, TaskStatusPill, TaskTable, TaskThreadChip, TaskTriggerChip, TasksToolbar, TupleArrayField, UploadTaskItem, UploadTaskList, WEEKDAYS, WORKFLOW_COLUMN_ORDER, WorkflowConfigDialog, WorkflowDocumentsField, WorkflowLauncher, WorkflowsTable, WorkflowsToolbar, agentConfigSectionToValues, agentCreatorToConfigSection, asTaskStatus, authModeFor, buildLaunch, buildRRule, buildTaskRows, buildWorkflowScopeSource, composePersona, composeWorkflowPrompt, composerToTaskQuery, composerToWorkRequest, composerToWorkflowRequest, composerToWorkflowUpdate, createTaskColumns, createWorkflowColumns, createsWork, defaultInputs, defaultScopeRenderer, defaultTaskComposerValues, deriveAgentName, deriveWorkflowName, descendantIds, describeRRule, firstWords, formatElapsed, goalProgress, hasTaskFields, hasTrigger, humanizeSection, indexTasks, inferType, inputDocumentIds, inputsFromContext, isAgenticWorkflow, isEmptyWorkflowScope, isOutOfBounds, isPlainTodo, isSkillRow, isValidAgentName, isWorkflowScope, isoToLocalInput, localInputToIso, matchWorkflowScope, moveTargets, newThreadToRequest, nextCriterionId, ownerExtId, parseRRule, prettifyKey, promptFieldName, resolveScopeInputs, skillToWorkflow, stripPersonaPreamble, summarizeAgent, summarizeCapabilities, taskComposerToCreateRequest, taskComposerToUpdateRequest, taskNeedsAccess, taskToComposerValues, validateInputs, workflowAccepts, workflowFromFrontmatter, workflowStatus, workflowTaskFields, workflowToComposerValues, workflowTriggerType, workflowWhen, workflowsAccepting, workflowsForHost } from '../chunk-J7IXAJWT.js';
2
+ 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, 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_SCHEMA_FORM_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_ACTIVITY_LABELS, DEFAULT_TASK_COMPOSER_LABELS, DEFAULT_TASK_LIST_LABELS, DEFAULT_TASK_OUTPUTS_CELL_LABELS, DEFAULT_TASK_PLAN_LABELS, DEFAULT_TASK_REVIEW_ACTIONS_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, DERIVED_NAME_WORDS, EMPTY_NEW_THREAD, EMPTY_WORKFLOW_SCOPE, GoalCriteria, MAX_TASK_DEPTH, NewThreadDialog, PersonPill, PillSelect, RecurrenceBuilder, SKILL_PROMPT_FALLBACK_PLACEHOLDER, SKILL_PROMPT_LABEL, STATUS_LABELS, STATUS_ORDER, STATUS_TONE, SchemaForm, 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, TaskActivityTimeline, TaskComposer, TaskMoveDialog, TaskOutputsCell, TaskPlan, TaskReviewActions, TaskRunsDialog, TaskStatusPill, TaskTable, TaskThreadChip, TaskTriggerChip, TasksToolbar, TupleArrayField, UploadTaskItem, UploadTaskList, WEEKDAYS, WORKFLOW_COLUMN_ORDER, WorkflowConfigDialog, WorkflowDocumentsField, WorkflowLauncher, WorkflowsTable, WorkflowsToolbar, agentConfigSectionToValues, agentCreatorToConfigSection, asTaskStatus, authModeFor, buildLaunch, buildRRule, buildTaskRows, buildWorkflowScopeSource, composePersona, composeWorkflowPrompt, composerToTaskQuery, composerToWorkRequest, composerToWorkflowRequest, composerToWorkflowUpdate, createTaskColumns, createWorkflowColumns, createsWork, defaultInputs, defaultScopeRenderer, defaultTaskComposerValues, deriveAgentName, deriveWorkflowName, descendantIds, describeRRule, firstWords, formatElapsed, goalProgress, hasTaskFields, hasTrigger, humanizeSection, indexTasks, inferType, inputDocumentIds, inputsFromContext, isAgenticWorkflow, isEmptyWorkflowScope, isOutOfBounds, isPlainTodo, isSkillRow, isValidAgentName, isWorkflowScope, isoToLocalInput, localInputToIso, matchWorkflowScope, moveTargets, newThreadToRequest, nextCriterionId, ownerExtId, parseRRule, prettifyKey, promptFieldName, resolveScopeInputs, skillToWorkflow, stripPersonaPreamble, summarizeAgent, summarizeCapabilities, taskComposerToCreateRequest, taskComposerToUpdateRequest, taskNeedsAccess, taskToComposerValues, validateInputs, workflowAccepts, workflowFromFrontmatter, workflowStatus, workflowTaskFields, workflowToComposerValues, workflowTriggerType, workflowWhen, workflowsAccepting, workflowsForHost } from '../chunk-TZ4QF7EP.js';
3
3
  import '../chunk-P6GHJSLR.js';
4
- import '../chunk-NJL4LIXX.js';
5
4
  import '../chunk-NUPVHEJW.js';
5
+ import '../chunk-NJL4LIXX.js';
6
6
  import '../chunk-4XJZ6AAY.js';
7
7
  import '../chunk-DPLRHEJZ.js';
8
8
  import '../chunk-S7PSMMRG.js';
@@ -15,7 +15,7 @@ function UsageMeter({
15
15
  testId
16
16
  }) {
17
17
  const clamped = Math.max(0, Math.min(100, pct));
18
- const tone = clamped >= 100 ? "bg-red-500" : clamped >= 50 ? "bg-yellow-500" : "bg-green-500";
18
+ const tone = clamped >= 100 ? "bg-red-500" : clamped >= 50 ? "bg-yellow-500" : "bg-primary";
19
19
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ui.cn("space-y-1.5", className), "data-testid": testId, children: [
20
20
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-3 text-sm", children: [
21
21
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex min-w-0 items-center gap-1.5 text-muted-foreground", children: [
@@ -43,5 +43,5 @@ function UsageMeter({
43
43
  }
44
44
 
45
45
  exports.UsageMeter = UsageMeter;
46
- //# sourceMappingURL=chunk-CRIKTUEU.cjs.map
47
- //# sourceMappingURL=chunk-CRIKTUEU.cjs.map
46
+ //# sourceMappingURL=chunk-46IU3UPF.cjs.map
47
+ //# sourceMappingURL=chunk-46IU3UPF.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/UsageMeter.tsx"],"names":["jsxs","cn","jsx"],"mappings":";;;;;;AAUO,SAAS,UAAA,CAAW;AAAA,EACzB,IAAA,EAAM,IAAA;AAAA,EACN,KAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAYG;AACD,EAAA,MAAM,OAAA,GAAU,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,GAAA,EAAK,GAAG,CAAC,CAAA;AAG9C,EAAA,MAAM,OAAO,OAAA,IAAW,GAAA,GAAM,YAAA,GAAe,OAAA,IAAW,KAAK,eAAA,GAAkB,cAAA;AAC/E,EAAA,uBACEA,eAAA,CAAC,SAAI,SAAA,EAAWC,KAAA,CAAG,eAAe,SAAS,CAAA,EAAG,eAAa,MAAA,EACzD,QAAA,EAAA;AAAA,oBAAAD,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,iDAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,eAAA,CAAC,MAAA,EAAA,EAAK,WAAU,yDAAA,EACb,QAAA,EAAA;AAAA,QAAA,IAAA,oBAAQE,cAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,mBAAA,EAAoB,CAAA;AAAA,wBAC7CF,eAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EACb,QAAA,EAAA;AAAA,UAAA,KAAA;AAAA,UACA,IAAA,GAAO,CAAA,EAAA,EAAK,IAAI,CAAA,CAAA,CAAA,GAAM;AAAA,SAAA,EACzB;AAAA,OAAA,EACF,CAAA;AAAA,sBACAE,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mDAAA,EAAqD,QAAA,EAAA,KAAA,EAAM;AAAA,KAAA,EAC7E,CAAA;AAAA,oBACAA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6CAAA,EACb,QAAA,kBAAAA,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAWD,KAAA,CAAG,wCAAA,EAA0C,IAAI,CAAA;AAAA,QAC5D,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,EAAG,OAAO,CAAA,CAAA,CAAA,EAAI;AAAA,QAC9B,IAAA,EAAK,aAAA;AAAA,QACL,eAAA,EAAe,OAAA;AAAA,QACf,eAAA,EAAe,CAAA;AAAA,QACf,eAAA,EAAe,GAAA;AAAA,QACf,YAAA,EAAY;AAAA;AAAA,KACd,EACF;AAAA,GAAA,EACF,CAAA;AAEJ","file":"chunk-CRIKTUEU.cjs","sourcesContent":["import type { LucideIcon } from 'lucide-react'\nimport { cn } from '@arbidocs/react/ui'\n\n/**\n * One labelled quota meter: icon + label on the left, used-of-limit on the\n * right, a thin bar underneath. The bar's tone follows pressure with the shared\n * green → yellow → red gradation — green while there's room, yellow past the\n * halfway mark, red at the limit — so a stack of meters reads at a glance which\n * quota is the one to think about.\n */\nexport function UsageMeter({\n icon: Icon,\n label,\n value,\n pct,\n hint,\n className,\n testId,\n}: {\n icon?: LucideIcon\n label: string\n /** Formatted used-of-limit text, e.g. \"1,200 / 25,000\" or \"40 / 500 MB\". */\n value: string\n /** Fill percentage, 0–100 (values are clamped). */\n pct: number\n /** Inline parenthetical after the label, e.g. \"resets May 31, 2025\" —\n * same font as the label, so the meter never grows an extra row. */\n hint?: string\n className?: string\n testId?: string\n}) {\n const clamped = Math.max(0, Math.min(100, pct))\n // Shared green → yellow → red gradation (same thresholds as the project-card\n // quota badges): green with room, yellow past the halfway mark, red at limit.\n const tone = clamped >= 100 ? 'bg-red-500' : clamped >= 50 ? 'bg-yellow-500' : 'bg-green-500'\n return (\n <div className={cn('space-y-1.5', className)} data-testid={testId}>\n <div className=\"flex items-center justify-between gap-3 text-sm\">\n <span className=\"flex min-w-0 items-center gap-1.5 text-muted-foreground\">\n {Icon && <Icon className=\"size-3.5 shrink-0\" />}\n <span className=\"truncate\">\n {label}\n {hint ? ` (${hint})` : ''}\n </span>\n </span>\n <span className=\"shrink-0 font-medium tabular-nums text-foreground\">{value}</span>\n </div>\n <div className=\"h-1.5 overflow-hidden rounded-full bg-muted\">\n <div\n className={cn('h-full rounded-full transition-[width]', tone)}\n style={{ width: `${clamped}%` }}\n role=\"progressbar\"\n aria-valuenow={clamped}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={label}\n />\n </div>\n </div>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/components/UsageMeter.tsx"],"names":["jsxs","cn","jsx"],"mappings":";;;;;;AAUO,SAAS,UAAA,CAAW;AAAA,EACzB,IAAA,EAAM,IAAA;AAAA,EACN,KAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAYG;AACD,EAAA,MAAM,OAAA,GAAU,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,GAAA,EAAK,GAAG,CAAC,CAAA;AAG9C,EAAA,MAAM,OAAO,OAAA,IAAW,GAAA,GAAM,YAAA,GAAe,OAAA,IAAW,KAAK,eAAA,GAAkB,YAAA;AAC/E,EAAA,uBACEA,eAAA,CAAC,SAAI,SAAA,EAAWC,KAAA,CAAG,eAAe,SAAS,CAAA,EAAG,eAAa,MAAA,EACzD,QAAA,EAAA;AAAA,oBAAAD,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,iDAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,eAAA,CAAC,MAAA,EAAA,EAAK,WAAU,yDAAA,EACb,QAAA,EAAA;AAAA,QAAA,IAAA,oBAAQE,cAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,mBAAA,EAAoB,CAAA;AAAA,wBAC7CF,eAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EACb,QAAA,EAAA;AAAA,UAAA,KAAA;AAAA,UACA,IAAA,GAAO,CAAA,EAAA,EAAK,IAAI,CAAA,CAAA,CAAA,GAAM;AAAA,SAAA,EACzB;AAAA,OAAA,EACF,CAAA;AAAA,sBACAE,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mDAAA,EAAqD,QAAA,EAAA,KAAA,EAAM;AAAA,KAAA,EAC7E,CAAA;AAAA,oBACAA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6CAAA,EACb,QAAA,kBAAAA,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAWD,KAAA,CAAG,wCAAA,EAA0C,IAAI,CAAA;AAAA,QAC5D,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,EAAG,OAAO,CAAA,CAAA,CAAA,EAAI;AAAA,QAC9B,IAAA,EAAK,aAAA;AAAA,QACL,eAAA,EAAe,OAAA;AAAA,QACf,eAAA,EAAe,CAAA;AAAA,QACf,eAAA,EAAe,GAAA;AAAA,QACf,YAAA,EAAY;AAAA;AAAA,KACd,EACF;AAAA,GAAA,EACF,CAAA;AAEJ","file":"chunk-46IU3UPF.cjs","sourcesContent":["import type { LucideIcon } from 'lucide-react'\nimport { cn } from '@arbidocs/react/ui'\n\n/**\n * One labelled quota meter: icon + label on the left, used-of-limit on the\n * right, a thin bar underneath. The bar's tone follows pressure with the shared\n * green → yellow → red gradation — green while there's room, yellow past the\n * halfway mark, red at the limit — so a stack of meters reads at a glance which\n * quota is the one to think about.\n */\nexport function UsageMeter({\n icon: Icon,\n label,\n value,\n pct,\n hint,\n className,\n testId,\n}: {\n icon?: LucideIcon\n label: string\n /** Formatted used-of-limit text, e.g. \"1,200 / 25,000\" or \"40 / 500 MB\". */\n value: string\n /** Fill percentage, 0–100 (values are clamped). */\n pct: number\n /** Inline parenthetical after the label, e.g. \"resets May 31, 2025\" —\n * same font as the label, so the meter never grows an extra row. */\n hint?: string\n className?: string\n testId?: string\n}) {\n const clamped = Math.max(0, Math.min(100, pct))\n // Shared green → yellow → red gradation (same thresholds as the project-card\n // quota badges): green with room, yellow past the halfway mark, red at limit.\n const tone = clamped >= 100 ? 'bg-red-500' : clamped >= 50 ? 'bg-yellow-500' : 'bg-primary'\n return (\n <div className={cn('space-y-1.5', className)} data-testid={testId}>\n <div className=\"flex items-center justify-between gap-3 text-sm\">\n <span className=\"flex min-w-0 items-center gap-1.5 text-muted-foreground\">\n {Icon && <Icon className=\"size-3.5 shrink-0\" />}\n <span className=\"truncate\">\n {label}\n {hint ? ` (${hint})` : ''}\n </span>\n </span>\n <span className=\"shrink-0 font-medium tabular-nums text-foreground\">{value}</span>\n </div>\n <div className=\"h-1.5 overflow-hidden rounded-full bg-muted\">\n <div\n className={cn('h-full rounded-full transition-[width]', tone)}\n style={{ width: `${clamped}%` }}\n role=\"progressbar\"\n aria-valuenow={clamped}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={label}\n />\n </div>\n </div>\n )\n}\n"]}
@@ -3,7 +3,7 @@ import { ActionLink } from './chunk-S7PSMMRG.js';
3
3
  import { useDrawerBehavior, BlocksTooltipProvider, useShellBottomInset } from './chunk-KZJAG7T3.js';
4
4
  import { testIdOr, prefixedTestId } from './chunk-7F6CBP3Z.js';
5
5
  import { createContext, forwardRef, useContext, useMemo, useRef, useState, useEffect, useCallback, useId } from 'react';
6
- import { PanelLeftClose, PanelLeftOpen, X, Globe, Users, Lock, ChevronDown, LayoutGrid, Plus, Sparkles, Search, ArrowUp, Menu, Download, TriangleAlert, CheckCircle2, Loader2, RefreshCw, WifiOff, MousePointerClick, Lightbulb, Pencil, ChevronLeft, ChevronRight, Info } from 'lucide-react';
6
+ import { TriangleAlert, CheckCircle2, Loader2, PanelLeftClose, PanelLeftOpen, X, Globe, Users, Lock, ChevronDown, LayoutGrid, Plus, Sparkles, Search, ArrowUp, Menu, Download, RefreshCw, WifiOff, MousePointerClick, Lightbulb, Pencil, ChevronLeft, ChevronRight, Info } from 'lucide-react';
7
7
  import { cn, Tooltip, TooltipTrigger, TooltipContent, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuLabel, Button } from '@arbidocs/react/ui';
8
8
  export { UserMenu } from '@arbidocs/react/ui';
9
9
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
@@ -459,7 +459,7 @@ function SidebarNavItem({
459
459
  /* @__PURE__ */ jsx("div", { className: "flex size-5 flex-shrink-0 items-center justify-center", children: icon }),
460
460
  /* @__PURE__ */ jsx("span", { className: "ml-3 min-w-0 truncate text-left", children: label }),
461
461
  countNode,
462
- trailing && /* @__PURE__ */ jsx(SidebarRowHoverContext.Provider, { value: isRowActive, children: /* @__PURE__ */ jsx("span", { className: "ml-2 flex flex-shrink-0 items-center", children: trailing }) })
462
+ trailing && /* @__PURE__ */ jsx(SidebarRowHoverContext.Provider, { value: isRowActive, children: /* @__PURE__ */ jsx("span", { className: "ml-auto flex flex-shrink-0 items-center pl-2", children: trailing }) })
463
463
  ]
464
464
  }
465
465
  );
@@ -585,7 +585,7 @@ function workspaceKindMeta(kind, labels) {
585
585
  if (kind === "common")
586
586
  return { Icon: Globe, label: l.common, fill: "bg-muted text-muted-foreground" };
587
587
  if (kind === "shared")
588
- return { Icon: Users, label: l.shared, fill: "bg-accent text-accent-foreground" };
588
+ return { Icon: Users, label: l.shared, fill: "bg-secondary text-secondary-foreground" };
589
589
  return { Icon: Lock, label: l.private, fill: "bg-primary text-primary-foreground" };
590
590
  }
591
591
  function workspaceKindColor(kind) {
@@ -1346,6 +1346,7 @@ function InstallPrompt({
1346
1346
  function ActionCluster({
1347
1347
  layout = "bar",
1348
1348
  status,
1349
+ mail,
1349
1350
  bell,
1350
1351
  contacts,
1351
1352
  account,
@@ -1377,6 +1378,7 @@ function ActionCluster({
1377
1378
  children: label
1378
1379
  }
1379
1380
  ),
1381
+ mail,
1380
1382
  bell,
1381
1383
  contacts,
1382
1384
  account && layout !== "drawer" && /* @__PURE__ */ jsx("div", { className: rail ? "mt-1" : "mt-1 min-w-0", children: account })
@@ -1394,6 +1396,7 @@ function ActionCluster({
1394
1396
  "data-slot": "action-cluster",
1395
1397
  children: [
1396
1398
  status,
1399
+ mail,
1397
1400
  bell,
1398
1401
  contacts,
1399
1402
  account
@@ -1401,7 +1404,8 @@ function ActionCluster({
1401
1404
  }
1402
1405
  );
1403
1406
  }
1404
- var TONES = {
1407
+ var STATUS_ROW_BASE_CLASS = "flex items-center gap-2 rounded-md text-sm font-medium transition-colors hover:brightness-95 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:min-h-11";
1408
+ var STATUS_ROW_TONES = {
1405
1409
  progress: { className: "bg-muted text-foreground", Icon: Loader2, spin: true },
1406
1410
  success: { className: "bg-green-bg text-green-text", Icon: CheckCircle2 },
1407
1411
  error: { className: "bg-red-bg text-red-text", Icon: TriangleAlert }
@@ -1414,7 +1418,7 @@ function StatusRow({
1414
1418
  icon,
1415
1419
  "data-testid": testId
1416
1420
  }) {
1417
- const { className, Icon, spin } = TONES[tone];
1421
+ const { className, Icon, spin } = STATUS_ROW_TONES[tone];
1418
1422
  return /* @__PURE__ */ jsx("div", { role: "status", "data-slot": "status-row", className: cn(compact && "flex justify-center"), children: /* @__PURE__ */ jsxs(
1419
1423
  "button",
1420
1424
  {
@@ -1425,7 +1429,7 @@ function StatusRow({
1425
1429
  "data-testid": testId,
1426
1430
  "data-tone": tone,
1427
1431
  className: cn(
1428
- "flex items-center gap-2 rounded-md text-sm font-medium transition-colors hover:brightness-95 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:min-h-11",
1432
+ STATUS_ROW_BASE_CLASS,
1429
1433
  compact ? "size-9 justify-center pointer-coarse:size-11" : "w-full px-2.5 py-1.5",
1430
1434
  className
1431
1435
  ),
@@ -1441,10 +1445,65 @@ function StatusRow({
1441
1445
  }
1442
1446
  ) });
1443
1447
  }
1448
+ function StatusBadge({
1449
+ tone,
1450
+ label,
1451
+ onClick,
1452
+ onDismiss,
1453
+ "data-testid": testId
1454
+ }) {
1455
+ const className = cn(
1456
+ "rounded-md px-1.5 py-0.5 text-xs font-medium whitespace-nowrap",
1457
+ STATUS_ROW_TONES[tone].className
1458
+ );
1459
+ return /* @__PURE__ */ jsxs(
1460
+ "span",
1461
+ {
1462
+ role: "status",
1463
+ className: cn(
1464
+ "ml-auto inline-flex items-center rounded-md",
1465
+ STATUS_ROW_TONES[tone].className
1466
+ ),
1467
+ "data-testid": testId,
1468
+ "data-tone": tone,
1469
+ children: [
1470
+ onClick ? /* @__PURE__ */ jsx(
1471
+ "button",
1472
+ {
1473
+ type: "button",
1474
+ title: label,
1475
+ className,
1476
+ onClick: (event) => {
1477
+ event.stopPropagation();
1478
+ onClick();
1479
+ },
1480
+ onKeyDown: (event) => event.stopPropagation(),
1481
+ children: label
1482
+ }
1483
+ ) : /* @__PURE__ */ jsx("span", { className, children: label }),
1484
+ onDismiss && /* @__PURE__ */ jsx(
1485
+ "button",
1486
+ {
1487
+ type: "button",
1488
+ "aria-label": `Dismiss ${label}`,
1489
+ title: "Dismiss",
1490
+ className: "mr-1 rounded-sm p-0.5 opacity-60 hover:opacity-100 focus-visible:ring-2 focus-visible:ring-ring",
1491
+ onClick: (event) => {
1492
+ event.stopPropagation();
1493
+ onDismiss();
1494
+ },
1495
+ onKeyDown: (event) => event.stopPropagation(),
1496
+ children: /* @__PURE__ */ jsx(X, { className: "size-3" })
1497
+ }
1498
+ )
1499
+ ]
1500
+ }
1501
+ );
1502
+ }
1444
1503
  var DEFAULT_OFFLINE_PILL_LABELS = {
1445
1504
  reconnect: "Reconnect"
1446
1505
  };
1447
- var TONES2 = {
1506
+ var TONES = {
1448
1507
  offline: { className: "bg-yellow-bg text-yellow-text", Icon: WifiOff },
1449
1508
  failed: { className: "bg-red-bg text-red-text", Icon: TriangleAlert },
1450
1509
  syncing: { className: "bg-blue-bg text-blue-text", Icon: RefreshCw }
@@ -1459,7 +1518,7 @@ function OfflinePill({
1459
1518
  "data-testid": testId,
1460
1519
  reconnectTestId
1461
1520
  }) {
1462
- const { className, Icon } = TONES2[tone];
1521
+ const { className, Icon } = TONES[tone];
1463
1522
  return /* @__PURE__ */ jsxs(
1464
1523
  "div",
1465
1524
  {
@@ -1819,6 +1878,6 @@ function SplitLayout({
1819
1878
  );
1820
1879
  }
1821
1880
 
1822
- 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, OfflinePill, RemoteControlPill, Sidebar, SidebarBadgeRow, SidebarRowAction, SidebarRowHoverContext, SplitLayout, StatusRow, TipCard, WorkspaceIdentity, WorkspaceSwitcher, getInstallInstructions, initInstallPrompt, isIosDevice, promptAppInstall, resolveSidebarLayout, useInstallPrompt, useSidebarContext, useSidebarSettle, workspaceKindColor, workspaceKindMeta };
1823
- //# sourceMappingURL=chunk-ZJ6RIPFS.js.map
1824
- //# sourceMappingURL=chunk-ZJ6RIPFS.js.map
1881
+ 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, OfflinePill, RemoteControlPill, STATUS_ROW_BASE_CLASS, STATUS_ROW_TONES, Sidebar, SidebarBadgeRow, SidebarRowAction, SidebarRowHoverContext, SplitLayout, StatusBadge, StatusRow, TipCard, WorkspaceIdentity, WorkspaceSwitcher, getInstallInstructions, initInstallPrompt, isIosDevice, promptAppInstall, resolveSidebarLayout, useInstallPrompt, useSidebarContext, useSidebarSettle, workspaceKindColor, workspaceKindMeta };
1882
+ //# sourceMappingURL=chunk-C75S6USL.js.map
1883
+ //# sourceMappingURL=chunk-C75S6USL.js.map