@arbidocs/blocks 0.5.102 → 0.5.104

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 (128) hide show
  1. package/dist/{DocumentReviewCard-UUMBYSHO.cjs → DocumentReviewCard-MSHD73S3.cjs} +12 -12
  2. package/dist/{DocumentReviewCard-UUMBYSHO.cjs.map → DocumentReviewCard-MSHD73S3.cjs.map} +1 -1
  3. package/dist/{DocumentReviewCard-UEFTDEOL.js → DocumentReviewCard-WZNBPG72.js} +7 -7
  4. package/dist/{DocumentReviewCard-UEFTDEOL.js.map → DocumentReviewCard-WZNBPG72.js.map} +1 -1
  5. package/dist/{FilesViewerDialog-B6AQP2UB.cjs → FilesViewerDialog-DV2U4USR.cjs} +7 -7
  6. package/dist/{FilesViewerDialog-B6AQP2UB.cjs.map → FilesViewerDialog-DV2U4USR.cjs.map} +1 -1
  7. package/dist/{FilesViewerDialog-R5VNYH72.js → FilesViewerDialog-XETOHORQ.js} +6 -6
  8. package/dist/{FilesViewerDialog-R5VNYH72.js.map → FilesViewerDialog-XETOHORQ.js.map} +1 -1
  9. package/dist/agents/index.cjs +176 -175
  10. package/dist/agents/index.js +3 -2
  11. package/dist/{chunk-AUQF6UJZ.js → chunk-4UOXUWX3.js} +4 -4
  12. package/dist/{chunk-AUQF6UJZ.js.map → chunk-4UOXUWX3.js.map} +1 -1
  13. package/dist/{chunk-ZGAUD357.cjs → chunk-4WMGFGYP.cjs} +4 -4
  14. package/dist/{chunk-ZGAUD357.cjs.map → chunk-4WMGFGYP.cjs.map} +1 -1
  15. package/dist/{chunk-AMIPT72L.cjs → chunk-5R67KX2O.cjs} +8 -8
  16. package/dist/{chunk-AMIPT72L.cjs.map → chunk-5R67KX2O.cjs.map} +1 -1
  17. package/dist/{chunk-PL2CVHBB.cjs → chunk-5UMZXDGL.cjs} +5 -5
  18. package/dist/{chunk-PL2CVHBB.cjs.map → chunk-5UMZXDGL.cjs.map} +1 -1
  19. package/dist/{chunk-CDOW3H4B.js → chunk-62OMGQHS.js} +3 -3
  20. package/dist/{chunk-CDOW3H4B.js.map → chunk-62OMGQHS.js.map} +1 -1
  21. package/dist/{chunk-JJ5BXK3Q.cjs → chunk-6A4GNM4T.cjs} +5 -4
  22. package/dist/chunk-6A4GNM4T.cjs.map +1 -0
  23. package/dist/{chunk-VVCSEYDP.cjs → chunk-6NSKIS35.cjs} +4 -4
  24. package/dist/{chunk-VVCSEYDP.cjs.map → chunk-6NSKIS35.cjs.map} +1 -1
  25. package/dist/{chunk-PCSJODXV.js → chunk-7ONU7EWY.js} +3 -3
  26. package/dist/{chunk-PCSJODXV.js.map → chunk-7ONU7EWY.js.map} +1 -1
  27. package/dist/{chunk-D3DOHXBQ.cjs → chunk-BSPPKX6X.cjs} +24 -24
  28. package/dist/{chunk-D3DOHXBQ.cjs.map → chunk-BSPPKX6X.cjs.map} +1 -1
  29. package/dist/{chunk-ICE2ZKN4.js → chunk-CEVVGJQX.js} +3 -3
  30. package/dist/{chunk-ICE2ZKN4.js.map → chunk-CEVVGJQX.js.map} +1 -1
  31. package/dist/{chunk-6AETD75K.js → chunk-E26MNOLG.js} +3 -3
  32. package/dist/{chunk-6AETD75K.js.map → chunk-E26MNOLG.js.map} +1 -1
  33. package/dist/{chunk-S67KFB54.js → chunk-E6ISR55S.js} +3 -3
  34. package/dist/{chunk-S67KFB54.js.map → chunk-E6ISR55S.js.map} +1 -1
  35. package/dist/{chunk-ZKTMTYFN.js → chunk-ET3W24JV.js} +5 -5
  36. package/dist/{chunk-ZKTMTYFN.js.map → chunk-ET3W24JV.js.map} +1 -1
  37. package/dist/{chunk-GCW7PS3D.js → chunk-GOJ5GHFS.js} +3 -3
  38. package/dist/{chunk-GCW7PS3D.js.map → chunk-GOJ5GHFS.js.map} +1 -1
  39. package/dist/{chunk-FKFUAU4F.js → chunk-HTGEAQOA.js} +5 -4
  40. package/dist/chunk-HTGEAQOA.js.map +1 -0
  41. package/dist/{chunk-4RQDYXLE.js → chunk-HTIEJVPI.js} +5 -5
  42. package/dist/{chunk-4RQDYXLE.js.map → chunk-HTIEJVPI.js.map} +1 -1
  43. package/dist/{chunk-4YQBT5EL.cjs → chunk-IWLNDDPN.cjs} +35 -35
  44. package/dist/{chunk-4YQBT5EL.cjs.map → chunk-IWLNDDPN.cjs.map} +1 -1
  45. package/dist/chunk-JCMKYQGZ.js +26 -0
  46. package/dist/chunk-JCMKYQGZ.js.map +1 -0
  47. package/dist/{chunk-6S2LRXJ4.js → chunk-JWUCDK2F.js} +5 -5
  48. package/dist/chunk-JWUCDK2F.js.map +1 -0
  49. package/dist/{chunk-6TYZ33WH.cjs → chunk-OKUXM2N4.cjs} +5 -5
  50. package/dist/chunk-OKUXM2N4.cjs.map +1 -0
  51. package/dist/{chunk-HC54CTGN.cjs → chunk-OSR3GCJG.cjs} +11 -11
  52. package/dist/chunk-OSR3GCJG.cjs.map +1 -0
  53. package/dist/{chunk-TOT4HHHN.js → chunk-P5RTO2WL.js} +3 -24
  54. package/dist/chunk-P5RTO2WL.js.map +1 -0
  55. package/dist/chunk-QECKDZ47.cjs +31 -0
  56. package/dist/chunk-QECKDZ47.cjs.map +1 -0
  57. package/dist/{chunk-L3CWX2BN.cjs → chunk-RBI7WVEP.cjs} +4 -4
  58. package/dist/{chunk-L3CWX2BN.cjs.map → chunk-RBI7WVEP.cjs.map} +1 -1
  59. package/dist/{chunk-PP2NXTOP.js → chunk-RUV2ERID.js} +12 -12
  60. package/dist/{chunk-PP2NXTOP.js.map → chunk-RUV2ERID.js.map} +1 -1
  61. package/dist/{chunk-W4QYNRBU.cjs → chunk-S7NJVJJX.cjs} +45 -45
  62. package/dist/{chunk-W4QYNRBU.cjs.map → chunk-S7NJVJJX.cjs.map} +1 -1
  63. package/dist/{chunk-QM6OI62U.js → chunk-TQFDPCWU.js} +5 -5
  64. package/dist/{chunk-QM6OI62U.js.map → chunk-TQFDPCWU.js.map} +1 -1
  65. package/dist/{chunk-MDMQDVCA.cjs → chunk-V2CKYM4B.cjs} +4 -4
  66. package/dist/{chunk-MDMQDVCA.cjs.map → chunk-V2CKYM4B.cjs.map} +1 -1
  67. package/dist/{chunk-CMEIU2GA.cjs → chunk-VULH3XAJ.cjs} +28 -28
  68. package/dist/{chunk-CMEIU2GA.cjs.map → chunk-VULH3XAJ.cjs.map} +1 -1
  69. package/dist/{chunk-SOS2WASA.cjs → chunk-WZAHVTTO.cjs} +2 -26
  70. package/dist/chunk-WZAHVTTO.cjs.map +1 -0
  71. package/dist/collaboration/index.cjs +69 -69
  72. package/dist/collaboration/index.js +1 -1
  73. package/dist/collaboration/mail/MailActionBar.d.ts +3 -2
  74. package/dist/collaboration/mail/MailAddToWorkspaceDialog.d.ts +20 -0
  75. package/dist/collaboration/mail/MailFiledChips.d.ts +15 -0
  76. package/dist/collaboration/mail/MailMessageView.d.ts +3 -3
  77. package/dist/connect/index.cjs +1078 -805
  78. package/dist/connect/index.cjs.map +1 -1
  79. package/dist/connect/index.js +498 -225
  80. package/dist/connect/index.js.map +1 -1
  81. package/dist/connect/viewer.cjs +5 -5
  82. package/dist/connect/viewer.js +4 -4
  83. package/dist/connection/connectors/ConnectedMailboxSyncDialog.d.ts +3 -1
  84. package/dist/connection/connectors/native-mailbox.d.ts +19 -0
  85. package/dist/connection/files/imports/EmailImportPanel.d.ts +2 -2
  86. package/dist/connection/files/imports/NativeMailImportRow.d.ts +11 -0
  87. package/dist/connection/mail/ConnectedMailConversation.d.ts +3 -4
  88. package/dist/connection/mail/ConnectedMailbox.d.ts +1 -4
  89. package/dist/connection/mail/types.d.ts +2 -4
  90. package/dist/connection/mail/useMailMessageChange.d.ts +11 -2
  91. package/dist/connection/mail/useMailboxDefaults.d.ts +6 -3
  92. package/dist/connection/workspace-access/ConnectedGrantWorkspaceAccessDialog.d.ts +1 -1
  93. package/dist/document-tools/viewer/index.cjs +1 -1
  94. package/dist/document-tools/viewer/index.cjs.map +1 -1
  95. package/dist/document-tools/viewer/index.js +1 -1
  96. package/dist/document-tools/viewer/index.js.map +1 -1
  97. package/dist/embed/index.cjs +11 -11
  98. package/dist/embed/index.js +5 -5
  99. package/dist/files/import/ImportParts.d.ts +6 -3
  100. package/dist/files/index.cjs +222 -222
  101. package/dist/files/index.js +1 -1
  102. package/dist/index.cjs +294 -293
  103. package/dist/index.cjs.map +1 -1
  104. package/dist/index.js +6 -5
  105. package/dist/index.js.map +1 -1
  106. package/dist/site/index.cjs +5 -5
  107. package/dist/site/index.js +1 -1
  108. package/dist/studio/index.cjs +1 -1
  109. package/dist/studio/index.js +1 -1
  110. package/dist/workflow-canvas/index.cjs +19 -18
  111. package/dist/workflow-canvas/index.cjs.map +1 -1
  112. package/dist/workflow-canvas/index.js +9 -8
  113. package/dist/workflow-canvas/index.js.map +1 -1
  114. package/dist/workspaces/index.cjs +33 -28
  115. package/dist/workspaces/index.cjs.map +1 -1
  116. package/dist/workspaces/index.d.ts +1 -1
  117. package/dist/workspaces/index.js +3 -2
  118. package/dist/workspaces/index.js.map +1 -1
  119. package/dist/workspaces/workspace-roles.d.ts +11 -4
  120. package/node_modules/@arbidocs/coedit/package.json +1 -1
  121. package/package.json +5 -5
  122. package/dist/chunk-6S2LRXJ4.js.map +0 -1
  123. package/dist/chunk-6TYZ33WH.cjs.map +0 -1
  124. package/dist/chunk-FKFUAU4F.js.map +0 -1
  125. package/dist/chunk-HC54CTGN.cjs.map +0 -1
  126. package/dist/chunk-JJ5BXK3Q.cjs.map +0 -1
  127. package/dist/chunk-SOS2WASA.cjs.map +0 -1
  128. package/dist/chunk-TOT4HHHN.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/workspaces/WorkspaceTypeBadge.tsx","../src/workspaces/WorkspaceSettingsParts.tsx","../src/workspaces/CommonWorkspaceToggle.tsx","../src/workspaces/WorkspaceCard.tsx","../src/workspaces/WorkspaceGroup.tsx"],"names":["getHumanUserCount","getWorkspaceTypeInfo","Globe","Users","User","jsx","WorkspaceTypeBadgeView","getVariantBgClass","jsxs","Popover","PopoverTrigger","PopoverContent","Button","UserPlus","cn","LogOut","IconToggle","createContext","useMemo","ActionLink","useContext","Check","ChevronRight","FileText","MessagesSquare","MemberAvatarStack","fmtDate","formatRelativeTime","CollapsibleSection"],"mappings":"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","file":"chunk-WZAHVTTO.cjs","sourcesContent":["/**\n * WorkspaceTypeBadge: a workspace's type badge (private, shared or public: icon, colour, label).\n */\n\nimport { User, Users, Globe } from 'lucide-react'\nimport type { components } from '@arbidocs/client'\nimport { WorkspaceTypeBadgeView } from './WorkspaceBadges'\nimport { getHumanUserCount, getVariantBgClass, getWorkspaceTypeInfo } from './workspace-type'\n\ntype Workspace = Pick<components['schemas']['WorkspaceResponse'], 'is_public' | 'users'>\n\nexport interface WorkspaceTypeBadgeProps {\n workspace: Workspace\n showTooltip?: boolean\n size?: 'sm' | 'md'\n isSelected?: boolean\n className?: string\n}\n\nexport function WorkspaceTypeBadge({\n workspace,\n showTooltip = false,\n size = 'md',\n isSelected = false,\n className,\n}: WorkspaceTypeBadgeProps) {\n const userCount = getHumanUserCount(workspace.users)\n const { type, variant } = getWorkspaceTypeInfo(workspace.is_public, userCount)\n const icon = workspace.is_public ? Globe : userCount > 1 ? Users : User\n\n return (\n <WorkspaceTypeBadgeView\n icon={icon}\n bgClass={getVariantBgClass(variant)}\n typeLabel={type}\n showTooltip={showTooltip}\n size={size}\n isSelected={isSelected}\n className={className}\n />\n )\n}\n","import type { ReactNode } from 'react'\nimport { LogOut, UserPlus } from 'lucide-react'\nimport { Button, cn, Popover, PopoverContent, PopoverTrigger } from '@arbidocs/react/ui'\n\n/**\n * Page frame of a workspace's home: a bounded column whose ONE scroll region spans the full\n * width (scrollbar on the outer edge), the inset living on the content inside it. A container,\n * so children can use `@2xl:` queries.\n */\nexport function WorkspacePageFrame({ testId, children }: { testId?: string; children: ReactNode }) {\n return (\n <div\n className=\"flex h-full flex-col @container\"\n data-slot=\"workspace-page\"\n data-testid={testId}\n >\n {/* scrollbar-gutter:stable keeps the content from jumping when a scrollbar appears. */}\n <div className=\"scrollbar-subtle min-h-0 flex-1 overflow-y-auto [scrollbar-gutter:stable]\">\n <div className=\"space-y-6 px-4 pb-6 sm:px-6 pt-4\">{children}</div>\n </div>\n </div>\n )\n}\n\n/** Tinted card holding the identity bar and the expandable member list. */\nexport function WorkspaceIdentityPanel({ children }: { children: ReactNode }) {\n return (\n <div\n data-slot=\"workspace-identity-panel\"\n className=\"group rounded-lg border border-border bg-card px-4 py-3 shadow-xs\"\n >\n {children}\n </div>\n )\n}\n\nexport interface WorkspaceProjectSlotProps {\n testId: string\n /** Screen-reader caption (\"Project:\"): the chip says what it is without a word in front. */\n caption: string\n children: ReactNode\n}\n\n/** The project control / chip pinned to the end of the name row. */\nexport function WorkspaceProjectSlot({ testId, caption, children }: WorkspaceProjectSlotProps) {\n return (\n <div className=\"flex min-w-0 items-center gap-3\">\n <div className=\"flex min-w-0 flex-1 items-center gap-2\" data-testid={testId}>\n <span className=\"sr-only\">{caption}</span>\n {children}\n </div>\n </div>\n )\n}\n\n/** Stated absence (\"None\") rather than a blank gap. */\nexport function ItalicNone({ children }: { children: ReactNode }) {\n return <span className=\"text-sm italic text-muted-foreground\">{children}</span>\n}\n\nexport interface WorkspaceAudienceLineProps {\n visibility: {\n testId: string\n caption: string\n /** The owner's visibility switch (developers only). */\n toggle?: ReactNode\n /** The state named in words, so the switch is never a puzzle. */\n stateText: string\n /** What the state means for who can see the workspace; opened by tapping the state words. */\n stateHelp: string\n }\n /** Member avatar stack. */\n members: ReactNode\n /** \"Share\" button (owners). */\n share?: { label: string; onClick: () => void; testId: string }\n}\n\n/** Visibility and members end the description line together: who can see and use the workspace. */\nexport function WorkspaceAudienceLine({ visibility, members, share }: WorkspaceAudienceLineProps) {\n return (\n <span className=\"flex flex-wrap items-center gap-x-4 gap-y-2\" data-slot=\"workspace-audience\">\n <span className=\"flex items-center gap-2\" data-testid={visibility.testId}>\n <span className=\"sr-only\">{visibility.caption}</span>\n {visibility.toggle}\n {/* Tap-to-explain, not hover-only: the words must answer a click on touch screens too. */}\n <Popover>\n <PopoverTrigger className=\"touch-hit cursor-pointer rounded-sm text-sm text-muted-foreground underline decoration-dotted underline-offset-4 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\">\n {visibility.stateText}\n </PopoverTrigger>\n <PopoverContent align=\"start\" className=\"w-64 text-sm\">\n {visibility.stateHelp}\n </PopoverContent>\n </Popover>\n </span>\n {/* Faces first, then Share: \"these people ... add more\". */}\n <span className=\"flex items-center gap-1\">\n {members}\n {share && (\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"h-8 gap-1.5 px-3 text-sm pointer-coarse:h-11\"\n onClick={share.onClick}\n data-testid={share.testId}\n >\n <UserPlus className=\"size-4\" />\n {share.label}\n </Button>\n )}\n </span>\n </span>\n )\n}\n\n/**\n * Collapsible block under the identity bar. Stays mounted and animates its height (grid-rows\n * 0fr to 1fr), so opening and closing glides instead of snapping.\n */\nexport function ExpandableSection({\n expanded,\n testId,\n children,\n}: {\n expanded: boolean\n testId?: string\n children: ReactNode\n}) {\n return (\n <div\n className={cn(\n 'grid transition-[grid-template-rows] duration-300 ease-in-out',\n expanded ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]'\n )}\n data-slot=\"expandable-section\"\n data-expanded={expanded}\n data-testid={testId}\n >\n <div className=\"overflow-hidden\">\n <div className=\"mt-4 border-t border-border pt-4\">{children}</div>\n </div>\n </div>\n )\n}\n\n/** Centered loading placeholder of a page body. */\nexport function PageLoading({ children }: { children: ReactNode }) {\n return <div className=\"flex h-64 items-center justify-center\">{children}</div>\n}\n\nexport interface LeaveFooterProps {\n testId?: string\n leave: { label: string; disabled?: boolean; onClick: () => void; testId?: string }\n}\n\n/** Leaving ENDS your part in the workspace, so it sits last and alone at the foot of the page. */\nexport function LeaveFooter({ testId, leave }: LeaveFooterProps) {\n return (\n <div className=\"flex justify-end\" data-slot=\"leave-footer\" data-testid={testId}>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={leave.onClick}\n disabled={leave.disabled}\n className=\"h-7 px-2 text-sm text-destructive hover:bg-destructive/10 hover:text-destructive pointer-coarse:h-11\"\n data-testid={leave.testId}\n >\n <LogOut className=\"mr-1 size-3.5\" />\n {leave.label}\n </Button>\n </div>\n )\n}\n","/**\n * CommonWorkspaceToggle Component\n *\n * Toggle for workspace common/members-only visibility.\n * Takes isCommon and onToggle as props for form integration.\n */\n\nimport { Globe } from 'lucide-react'\nimport { IconToggle } from '@arbidocs/react/ui'\n\nexport interface CommonWorkspaceToggleProps {\n isCommon: boolean\n onToggle: (isCommon: boolean) => void\n disabled?: boolean\n /** Tooltip to show when disabled */\n disabledTooltip?: string\n 'data-testid'?: string\n}\n\nconst COLORS = {\n text: 'text-muted-foreground',\n bg: 'bg-gray-600',\n}\n\nexport function CommonWorkspaceToggle({\n isCommon,\n onToggle,\n disabled = false,\n disabledTooltip,\n 'data-testid': dataTestId,\n}: CommonWorkspaceToggleProps) {\n return (\n <IconToggle\n icon={Globe}\n isActive={isCommon}\n onToggle={onToggle}\n colors={COLORS}\n disabled={disabled}\n disabledTooltip={disabledTooltip}\n tooltipActive=\"On: everyone on this deployment can see it. Turn off to limit it to members.\"\n tooltipInactive=\"Off: only members of this workspace can see it. Turn on to let everyone on this deployment see it.\"\n data-testid={dataTestId}\n />\n )\n}\n","import {\n createContext,\n useContext,\n type HTMLAttributes,\n useMemo,\n type KeyboardEvent,\n type ReactNode,\n} from 'react'\nimport { Check, ChevronRight, FileText, MessagesSquare, Users } from 'lucide-react'\nimport { cn } from '@arbidocs/react/ui'\nimport { formatRelativeTime } from '@arbidocs/react/ui'\nimport { fmtDate } from '../lib/format'\nimport { ActionLink } from '../components/ActionLink'\nimport { MemberAvatarStack, type StackedMember } from '../components/MemberAvatarStack'\n\n/** Everything a workspace tile shows, source-agnostic (not the raw SDK shape). */\nexport interface WorkspaceSummary {\n id: string\n name: string\n description?: string | null\n /** Host-supplied line under the name (a reference, a client, a status...). Not interpreted. */\n subtitle?: ReactNode\n docCount: number\n /** Hidden when undefined, so a host without chats shows no empty counter. */\n chatCount?: number\n /** Number of visible members (agents excluded by the caller). */\n memberCount: number\n members: StackedMember[]\n /** The viewer may not see who is here (RLS): renders an em dash, not a `0`. */\n membersHidden?: boolean\n /** ISO timestamp: rendered as \"Updated {relative}\". */\n updatedAt?: string | null\n}\n\n/** Every fixed string of the workspace tile. Pass a partial `labels` to translate or reword. */\nexport interface WorkspaceCardLabels {\n /** The tile's accessible name. */\n openWorkspace: (name: string) => string\n currentWorkspace: string\n documents: string\n chats: string\n members: string\n /** `relative` is the formatted \"3 days ago\". */\n updated: (relative: string) => string\n}\n\nexport const DEFAULT_WORKSPACE_CARD_LABELS: WorkspaceCardLabels = {\n openWorkspace: (name) => `Open workspace ${name}`,\n currentWorkspace: 'Current workspace',\n documents: 'Documents',\n chats: 'Tasks',\n members: 'Members',\n updated: (relative) => `Updated ${relative}`,\n}\n\ninterface CardContextValue {\n current: boolean\n testId?: string\n labels: WorkspaceCardLabels\n}\n\nconst CardContext = createContext<CardContextValue>({\n current: false,\n labels: DEFAULT_WORKSPACE_CARD_LABELS,\n})\n\ntype DivProps = Omit<HTMLAttributes<HTMLDivElement>, 'children'>\n\n/* ------------------------------------------------------------------ */\n/* Parts */\n/* ------------------------------------------------------------------ */\n\nexport interface WorkspaceCardRootProps extends DivProps {\n /** This is the workspace you are in: accented surface, \"Current workspace\" cue. */\n current?: boolean\n onSelect: () => void\n /**\n * Real link target. The tile then renders as an anchor (ctrl-click / new tab, in-SPA through\n * the host environment's `linkComponent`); `onSelect` still fires on a plain click.\n */\n href?: string\n /** Accessible name; defaults to `labels.openWorkspace(name)` when composed via `WorkspaceCard`. */\n label: string\n testId?: string\n labels?: Partial<WorkspaceCardLabels>\n children: ReactNode\n}\n\n/**\n * The tile surface: one button that opens the workspace. A raised white card\n * (hairline border, soft shadow, hover lift); the current workspace takes the selection tint.\n */\nfunction WorkspaceCardRoot({\n current = false,\n onSelect,\n href,\n label,\n testId,\n labels,\n className,\n children,\n ...rest\n}: WorkspaceCardRootProps) {\n const mergedLabels = useMemo(() => ({ ...DEFAULT_WORKSPACE_CARD_LABELS, ...labels }), [labels])\n const surfaceClass = cn(\n '@container/ws-card flex min-h-40 w-full cursor-pointer flex-col gap-3 rounded-lg p-4 text-left transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n current\n ? 'bg-accent text-accent-foreground'\n : 'border border-border bg-card shadow-xs transition-colors hover:border-ring/50 hover:bg-accent/40',\n className\n )\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.target !== event.currentTarget) return\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n onSelect()\n }\n }\n return (\n <CardContext.Provider value={{ current, testId, labels: mergedLabels }}>\n {href ? (\n <ActionLink\n {...(rest as object)}\n href={href}\n onSelect={onSelect}\n aria-label={label}\n aria-current={current ? 'page' : undefined}\n data-slot=\"workspace-card\"\n data-testid={testId}\n data-active={current || undefined}\n className={surfaceClass}\n >\n {children}\n </ActionLink>\n ) : (\n <div\n {...rest}\n role=\"button\"\n tabIndex={0}\n aria-label={label}\n aria-current={current ? 'page' : undefined}\n data-slot=\"workspace-card\"\n data-testid={testId}\n data-active={current || undefined}\n onClick={onSelect}\n onKeyDown={handleKeyDown}\n className={surfaceClass}\n >\n {children}\n </div>\n )}\n </CardContext.Provider>\n )\n}\n\n/** Mark + name + open cue, on one row. Put the entity mark first. */\nfunction WorkspaceCardHeader({ className, children, ...rest }: DivProps & { children: ReactNode }) {\n return (\n <div\n {...rest}\n className={cn('flex flex-wrap items-center gap-x-3 gap-y-2', className)}\n data-slot=\"workspace-card-header\"\n >\n {children}\n </div>\n )\n}\n\nfunction WorkspaceCardTitle({ children, className }: { children: ReactNode; className?: string }) {\n const { testId } = useContext(CardContext)\n return (\n <h3\n className={cn(\n 'line-clamp-2 min-w-24 flex-1 break-words text-base font-semibold leading-tight text-foreground',\n className\n )}\n data-slot=\"workspace-card-title\"\n data-testid={testId && `${testId}-title`}\n >\n {children}\n </h3>\n )\n}\n\n/**\n * The open cue is always on screen (never hover-only): a chevron, or the words\n * \"Current workspace\" on the one you are in.\n */\nfunction WorkspaceCardOpenCue({\n testId,\n currentLabel,\n}: {\n /** Deliberately separate from the card id: suites count cards by prefix. */\n testId?: string\n /** Overrides `labels.currentWorkspace`. */\n currentLabel?: string\n}) {\n const { current, labels } = useContext(CardContext)\n return (\n <span\n className=\"inline-flex max-w-full min-w-0 shrink-0 items-center text-sm text-muted-foreground\"\n data-slot=\"workspace-card-open-cue\"\n data-testid={testId}\n >\n {current ? (\n // Never wider than the card: the words truncate, and in a card narrower than 20rem\n // the pill shrinks to a check (the words stay as the accessible name).\n <span className=\"inline-flex max-w-full min-w-0 items-center gap-1 rounded-full bg-background px-2 py-0.5 text-xs font-medium text-foreground\">\n <Check className=\"hidden size-3 shrink-0 @max-xs/ws-card:block\" aria-hidden=\"true\" />\n <span className=\"min-w-0 truncate @max-xs/ws-card:sr-only\">\n {currentLabel ?? labels.currentWorkspace}\n </span>\n </span>\n ) : (\n <ChevronRight className=\"size-4\" aria-hidden=\"true\" />\n )}\n </span>\n )\n}\n\nfunction WorkspaceCardDescription({\n children,\n className,\n}: {\n children: ReactNode\n className?: string\n}) {\n return (\n <p\n className={cn('line-clamp-2 text-sm text-muted-foreground', className)}\n title={typeof children === 'string' ? children : undefined}\n data-slot=\"workspace-card-description\"\n >\n {children}\n </p>\n )\n}\n\n/** Host-supplied line under the title. */\nfunction WorkspaceCardSubtitle({\n className,\n children,\n ...rest\n}: DivProps & { children: ReactNode }) {\n return (\n <div\n {...rest}\n className={cn('truncate text-xs text-muted-foreground', className)}\n data-slot=\"workspace-card-subtitle\"\n >\n {children}\n </div>\n )\n}\n\n/** Footer block: stats row and meta line, pinned to the bottom of the tile. */\nfunction WorkspaceCardFooter({ className, children, ...rest }: DivProps & { children: ReactNode }) {\n return (\n <div {...rest} className={cn('mt-auto flex flex-col gap-2', className)}>\n {children}\n </div>\n )\n}\n\nexport interface WorkspaceCardStatsProps {\n docCount: number\n /** Omit to hide the chats counter. */\n chatCount?: number\n memberCount: number\n members?: StackedMember[]\n membersHidden?: boolean\n /** Faces before the rest collapse into `+N`. */\n maxAvatars?: number\n className?: string\n}\n\n/** Documents / chats / members counts, with the member faces at the trailing edge. */\nfunction WorkspaceCardStats({\n docCount,\n chatCount,\n memberCount,\n members = [],\n membersHidden = false,\n maxAvatars = 3,\n className,\n}: WorkspaceCardStatsProps) {\n const { current, testId, labels } = useContext(CardContext)\n return (\n <div\n className={cn('flex w-full items-center gap-x-4 text-sm text-muted-foreground', className)}\n data-slot=\"workspace-card-stats\"\n >\n <span className=\"inline-flex items-center gap-1.5\" title={labels.documents}>\n <FileText className=\"size-4\" aria-hidden=\"true\" />\n <span className=\"tabular-nums\">{docCount.toLocaleString()}</span>\n </span>\n {chatCount !== undefined && (\n <span className=\"inline-flex items-center gap-1.5\" title={labels.chats}>\n <MessagesSquare className=\"size-4\" aria-hidden=\"true\" />\n <span className=\"tabular-nums\">{chatCount.toLocaleString()}</span>\n </span>\n )}\n <span className=\"inline-flex items-center gap-1.5\" title={labels.members}>\n <Users className=\"size-4\" aria-hidden=\"true\" />\n <span className=\"tabular-nums\" data-testid={testId && `${testId}-member-count`}>\n {membersHidden ? '—' : memberCount}\n </span>\n </span>\n <MemberAvatarStack\n members={members}\n total={memberCount}\n max={maxAvatars}\n hidden={membersHidden}\n ringClassName={current ? 'ring-accent' : 'ring-muted'}\n label={labels.members}\n className=\"ml-auto\"\n testId={testId && `${testId}-member-avatars`}\n />\n </div>\n )\n}\n\n/** \"Updated 3 days ago\", with the exact date on the title. */\nfunction WorkspaceCardMeta({ updatedAt }: { updatedAt: string }) {\n const { labels } = useContext(CardContext)\n return (\n <span\n className=\"min-w-0 max-w-full self-start truncate text-xs text-muted-foreground\"\n title={fmtDate(updatedAt)}\n data-slot=\"workspace-card-meta\"\n >\n {labels.updated(formatRelativeTime(updatedAt))}\n </span>\n )\n}\n\n/* ------------------------------------------------------------------ */\n/* Default composition */\n/* ------------------------------------------------------------------ */\n\nexport interface WorkspaceCardProps {\n workspace: WorkspaceSummary\n current?: boolean\n onSelect: () => void\n /** Real link target; see `WorkspaceCard.Root`. */\n href?: string\n /** The entity mark shown before the name (the host's own workspace glyph). */\n mark?: ReactNode\n /** Card id; derived ids: `-title`, `-member-count`, `-member-avatars`. */\n testId?: string\n /** Id for the open cue (kept apart from `testId`, see `WorkspaceCard.OpenCue`). */\n openCueTestId?: string\n maxAvatars?: number\n /**\n * The stats row: omit for the default counts + member faces, `false` to hide it, or any node to\n * replace it.\n */\n stats?: ReactNode | false\n /** Reword the tile's fixed strings. */\n labels?: Partial<WorkspaceCardLabels>\n className?: string\n}\n\n/**\n * The workspace tile: mark + name + open cue, description, stats and meta.\n * The whole tile opens the workspace; nothing on it is hover-only.\n *\n * Need a different layout? Compose the parts: `WorkspaceCard.Root`, `.Header`,\n * `.Title`, `.OpenCue`, `.Subtitle`, `.Description`, `.Footer`, `.Stats`, `.Meta`.\n */\nfunction WorkspaceCardBase({\n workspace,\n current = false,\n onSelect,\n href,\n mark,\n testId,\n openCueTestId,\n maxAvatars,\n stats,\n labels,\n className,\n}: WorkspaceCardProps) {\n const mergedLabels = { ...DEFAULT_WORKSPACE_CARD_LABELS, ...labels }\n return (\n <WorkspaceCardRoot\n current={current}\n onSelect={onSelect}\n href={href}\n label={mergedLabels.openWorkspace(workspace.name)}\n labels={labels}\n testId={testId}\n className={className}\n >\n <WorkspaceCardHeader>\n {mark}\n <WorkspaceCardTitle>{workspace.name}</WorkspaceCardTitle>\n <WorkspaceCardOpenCue testId={openCueTestId} />\n </WorkspaceCardHeader>\n {workspace.subtitle && <WorkspaceCardSubtitle>{workspace.subtitle}</WorkspaceCardSubtitle>}\n {workspace.description && (\n <WorkspaceCardDescription>{workspace.description}</WorkspaceCardDescription>\n )}\n <WorkspaceCardFooter>\n {stats === undefined ? (\n <WorkspaceCardStats\n docCount={workspace.docCount}\n chatCount={workspace.chatCount}\n memberCount={workspace.memberCount}\n members={workspace.members}\n membersHidden={workspace.membersHidden}\n maxAvatars={maxAvatars}\n />\n ) : (\n stats\n )}\n {workspace.updatedAt && <WorkspaceCardMeta updatedAt={workspace.updatedAt} />}\n </WorkspaceCardFooter>\n </WorkspaceCardRoot>\n )\n}\n\nexport const WorkspaceCard = Object.assign(WorkspaceCardBase, {\n Root: WorkspaceCardRoot,\n Header: WorkspaceCardHeader,\n Title: WorkspaceCardTitle,\n OpenCue: WorkspaceCardOpenCue,\n Subtitle: WorkspaceCardSubtitle,\n Description: WorkspaceCardDescription,\n Footer: WorkspaceCardFooter,\n Stats: WorkspaceCardStats,\n Meta: WorkspaceCardMeta,\n})\n","import type { ReactNode } from 'react'\nimport { ChevronRight } from 'lucide-react'\nimport { cn } from '@arbidocs/react/ui'\nimport { CollapsibleSection } from '../home/CollapsibleSection'\n\nexport interface WorkspaceListProps {\n children: ReactNode\n className?: string\n testId?: string\n}\n\n/** The column that stacks workspace groups (padding follows the page gutter). */\nexport function WorkspaceList({ children, className, testId }: WorkspaceListProps) {\n return (\n <div\n className={cn('flex w-full flex-col gap-2 px-4 py-4 sm:px-8', className)}\n data-slot=\"workspace-list\"\n data-testid={testId}\n >\n {children}\n </div>\n )\n}\n\nexport interface WorkspaceGroupProps {\n /** Group heading: name, count, badges. Plain text on the canvas, no band. */\n title: ReactNode\n isExpanded: boolean\n onToggle: () => void\n /**\n * Makes the whole header one target (e.g. open the project panel); the\n * chevron stays a separate toggle. Adds a trailing `openLabel` affordance.\n */\n onOpen?: () => void\n /** Words beside the trailing chevron when `onOpen` is set, e.g. \"Plans & Usage\". */\n openLabel?: string\n /** Muted words on the right of a collapsed group without `onOpen`, e.g. \"Show 11 shared workspaces\". */\n collapsedHint?: string\n /** The cards, laid out in a responsive grid (1 / 2 / 3 columns). */\n children: ReactNode\n className?: string\n}\n\n/**\n * One collapsible band of workspace tiles under a slim header. The open\n * affordance is always visible, so nothing is reachable by hover alone.\n */\nexport function WorkspaceGroup({\n title,\n isExpanded,\n onToggle,\n onOpen,\n openLabel,\n collapsedHint,\n children,\n className,\n}: WorkspaceGroupProps) {\n return (\n <CollapsibleSection\n title={title}\n isExpanded={isExpanded}\n onToggle={onToggle}\n onHeaderClick={onOpen}\n rightContent={\n onOpen && openLabel ? (\n <span className=\"flex shrink-0 items-center gap-1 text-sm font-medium text-muted-foreground\">\n {openLabel}\n <ChevronRight className=\"size-4 shrink-0\" aria-hidden=\"true\" />\n </span>\n ) : collapsedHint && !isExpanded ? (\n <span className=\"shrink-0 text-sm text-muted-foreground\">{collapsedHint}</span>\n ) : undefined\n }\n className={cn('group', className)}\n headerClassName=\"mb-3 flex-wrap gap-y-2 rounded-md px-1 py-1 pointer-coarse:min-h-11\"\n childrenClassName=\"mb-8 grid gap-3 @xl:grid-cols-2 @5xl:grid-cols-3\"\n >\n {children}\n </CollapsibleSection>\n )\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  'use strict';
3
3
 
4
4
  var chunkVZKTOGZR_cjs = require('../chunk-VZKTOGZR.cjs');
5
- var chunkHC54CTGN_cjs = require('../chunk-HC54CTGN.cjs');
5
+ var chunkOSR3GCJG_cjs = require('../chunk-OSR3GCJG.cjs');
6
6
  require('../chunk-7G2LJMUG.cjs');
7
7
  var chunkVLCY46K6_cjs = require('../chunk-VLCY46K6.cjs');
8
8
  require('../chunk-XNXNLXIC.cjs');
@@ -36,275 +36,275 @@ Object.defineProperty(exports, "vCardFilename", {
36
36
  });
37
37
  Object.defineProperty(exports, "ActionMenu", {
38
38
  enumerable: true,
39
- get: function () { return chunkHC54CTGN_cjs.ActionMenu; }
39
+ get: function () { return chunkOSR3GCJG_cjs.ActionMenu; }
40
40
  });
41
41
  Object.defineProperty(exports, "AddContactsForm", {
42
42
  enumerable: true,
43
- get: function () { return chunkHC54CTGN_cjs.AddContactsForm; }
43
+ get: function () { return chunkOSR3GCJG_cjs.AddContactsForm; }
44
44
  });
45
45
  Object.defineProperty(exports, "AddContactsResults", {
46
46
  enumerable: true,
47
- get: function () { return chunkHC54CTGN_cjs.AddContactsResults; }
47
+ get: function () { return chunkOSR3GCJG_cjs.AddContactsResults; }
48
48
  });
49
49
  Object.defineProperty(exports, "DEFAULT_ADD_CONTACTS_LABELS", {
50
50
  enumerable: true,
51
- get: function () { return chunkHC54CTGN_cjs.DEFAULT_ADD_CONTACTS_LABELS; }
51
+ get: function () { return chunkOSR3GCJG_cjs.DEFAULT_ADD_CONTACTS_LABELS; }
52
52
  });
53
53
  Object.defineProperty(exports, "DEFAULT_CONTACT_INVITE_LABELS", {
54
54
  enumerable: true,
55
- get: function () { return chunkHC54CTGN_cjs.DEFAULT_CONTACT_INVITE_LABELS; }
55
+ get: function () { return chunkOSR3GCJG_cjs.DEFAULT_CONTACT_INVITE_LABELS; }
56
56
  });
57
57
  Object.defineProperty(exports, "DEFAULT_CONTACT_OUTCOME_LABELS", {
58
58
  enumerable: true,
59
- get: function () { return chunkHC54CTGN_cjs.DEFAULT_CONTACT_OUTCOME_LABELS; }
59
+ get: function () { return chunkOSR3GCJG_cjs.DEFAULT_CONTACT_OUTCOME_LABELS; }
60
60
  });
61
61
  Object.defineProperty(exports, "DEFAULT_DM_ACCESS_REQUEST_BANNER_LABELS", {
62
62
  enumerable: true,
63
- get: function () { return chunkHC54CTGN_cjs.DEFAULT_DM_ACCESS_REQUEST_BANNER_LABELS; }
63
+ get: function () { return chunkOSR3GCJG_cjs.DEFAULT_DM_ACCESS_REQUEST_BANNER_LABELS; }
64
64
  });
65
65
  Object.defineProperty(exports, "DEFAULT_DM_GRANT_ACCESS_DIALOG_LABELS", {
66
66
  enumerable: true,
67
- get: function () { return chunkHC54CTGN_cjs.DEFAULT_DM_GRANT_ACCESS_DIALOG_LABELS; }
67
+ get: function () { return chunkOSR3GCJG_cjs.DEFAULT_DM_GRANT_ACCESS_DIALOG_LABELS; }
68
68
  });
69
69
  Object.defineProperty(exports, "DEFAULT_DM_THREAD_FRAME_LABELS", {
70
70
  enumerable: true,
71
- get: function () { return chunkHC54CTGN_cjs.DEFAULT_DM_THREAD_FRAME_LABELS; }
71
+ get: function () { return chunkOSR3GCJG_cjs.DEFAULT_DM_THREAD_FRAME_LABELS; }
72
72
  });
73
73
  Object.defineProperty(exports, "DEFAULT_MAIL_FOLDER_TREE_LABELS", {
74
74
  enumerable: true,
75
- get: function () { return chunkHC54CTGN_cjs.DEFAULT_MAIL_FOLDER_TREE_LABELS; }
75
+ get: function () { return chunkOSR3GCJG_cjs.DEFAULT_MAIL_FOLDER_TREE_LABELS; }
76
76
  });
77
77
  Object.defineProperty(exports, "DEFAULT_RECIPIENT_PICKER_LABELS", {
78
78
  enumerable: true,
79
- get: function () { return chunkHC54CTGN_cjs.DEFAULT_RECIPIENT_PICKER_LABELS; }
79
+ get: function () { return chunkOSR3GCJG_cjs.DEFAULT_RECIPIENT_PICKER_LABELS; }
80
80
  });
81
81
  Object.defineProperty(exports, "DmAccessRequestBanner", {
82
82
  enumerable: true,
83
- get: function () { return chunkHC54CTGN_cjs.DmAccessRequestBanner; }
83
+ get: function () { return chunkOSR3GCJG_cjs.DmAccessRequestBanner; }
84
84
  });
85
85
  Object.defineProperty(exports, "DmGrantAccessDialogView", {
86
86
  enumerable: true,
87
- get: function () { return chunkHC54CTGN_cjs.DmGrantAccessDialogView; }
87
+ get: function () { return chunkOSR3GCJG_cjs.DmGrantAccessDialogView; }
88
88
  });
89
89
  Object.defineProperty(exports, "DmInviteAvatar", {
90
90
  enumerable: true,
91
- get: function () { return chunkHC54CTGN_cjs.DmInviteAvatar; }
91
+ get: function () { return chunkOSR3GCJG_cjs.DmInviteAvatar; }
92
92
  });
93
93
  Object.defineProperty(exports, "DmThreadFrame", {
94
94
  enumerable: true,
95
- get: function () { return chunkHC54CTGN_cjs.DmThreadFrame; }
95
+ get: function () { return chunkOSR3GCJG_cjs.DmThreadFrame; }
96
96
  });
97
97
  Object.defineProperty(exports, "EMPTY_CONTACT_FORM", {
98
98
  enumerable: true,
99
- get: function () { return chunkHC54CTGN_cjs.EMPTY_CONTACT_FORM; }
99
+ get: function () { return chunkOSR3GCJG_cjs.EMPTY_CONTACT_FORM; }
100
100
  });
101
101
  Object.defineProperty(exports, "MAX_INVITE_EMAILS", {
102
102
  enumerable: true,
103
- get: function () { return chunkHC54CTGN_cjs.MAX_INVITE_EMAILS; }
103
+ get: function () { return chunkOSR3GCJG_cjs.MAX_INVITE_EMAILS; }
104
104
  });
105
105
  Object.defineProperty(exports, "MailActionBar", {
106
106
  enumerable: true,
107
- get: function () { return chunkHC54CTGN_cjs.MailActionBar; }
107
+ get: function () { return chunkOSR3GCJG_cjs.MailActionBar; }
108
108
  });
109
109
  Object.defineProperty(exports, "MailConversationView", {
110
110
  enumerable: true,
111
- get: function () { return chunkHC54CTGN_cjs.MailConversationView; }
111
+ get: function () { return chunkOSR3GCJG_cjs.MailConversationView; }
112
112
  });
113
113
  Object.defineProperty(exports, "MailDeliveryBadge", {
114
114
  enumerable: true,
115
- get: function () { return chunkHC54CTGN_cjs.MailDeliveryBadge; }
115
+ get: function () { return chunkOSR3GCJG_cjs.MailDeliveryBadge; }
116
116
  });
117
117
  Object.defineProperty(exports, "MailDeliveryList", {
118
118
  enumerable: true,
119
- get: function () { return chunkHC54CTGN_cjs.MailDeliveryList; }
119
+ get: function () { return chunkOSR3GCJG_cjs.MailDeliveryList; }
120
120
  });
121
121
  Object.defineProperty(exports, "MailDocumentPicker", {
122
122
  enumerable: true,
123
- get: function () { return chunkHC54CTGN_cjs.MailDocumentPicker; }
123
+ get: function () { return chunkOSR3GCJG_cjs.MailDocumentPicker; }
124
124
  });
125
125
  Object.defineProperty(exports, "MailFlagButton", {
126
126
  enumerable: true,
127
- get: function () { return chunkHC54CTGN_cjs.MailFlagButton; }
127
+ get: function () { return chunkOSR3GCJG_cjs.MailFlagButton; }
128
128
  });
129
129
  Object.defineProperty(exports, "MailFolderTree", {
130
130
  enumerable: true,
131
- get: function () { return chunkHC54CTGN_cjs.MailFolderTree; }
131
+ get: function () { return chunkOSR3GCJG_cjs.MailFolderTree; }
132
132
  });
133
133
  Object.defineProperty(exports, "MailGrid", {
134
134
  enumerable: true,
135
- get: function () { return chunkHC54CTGN_cjs.MailGrid; }
135
+ get: function () { return chunkOSR3GCJG_cjs.MailGrid; }
136
136
  });
137
137
  Object.defineProperty(exports, "MailMessageContent", {
138
138
  enumerable: true,
139
- get: function () { return chunkHC54CTGN_cjs.MailMessageContent; }
139
+ get: function () { return chunkOSR3GCJG_cjs.MailMessageContent; }
140
140
  });
141
141
  Object.defineProperty(exports, "MailMessagePreview", {
142
142
  enumerable: true,
143
- get: function () { return chunkHC54CTGN_cjs.MailMessagePreview; }
143
+ get: function () { return chunkOSR3GCJG_cjs.MailMessagePreview; }
144
144
  });
145
145
  Object.defineProperty(exports, "MailMessageView", {
146
146
  enumerable: true,
147
- get: function () { return chunkHC54CTGN_cjs.MailMessageView; }
147
+ get: function () { return chunkOSR3GCJG_cjs.MailMessageView; }
148
148
  });
149
149
  Object.defineProperty(exports, "MemberBulkActions", {
150
150
  enumerable: true,
151
- get: function () { return chunkHC54CTGN_cjs.MemberBulkActions; }
151
+ get: function () { return chunkOSR3GCJG_cjs.MemberBulkActions; }
152
152
  });
153
153
  Object.defineProperty(exports, "MemberListLoading", {
154
154
  enumerable: true,
155
- get: function () { return chunkHC54CTGN_cjs.MemberListLoading; }
155
+ get: function () { return chunkOSR3GCJG_cjs.MemberListLoading; }
156
156
  });
157
157
  Object.defineProperty(exports, "MemberMutedText", {
158
158
  enumerable: true,
159
- get: function () { return chunkHC54CTGN_cjs.MemberMutedText; }
159
+ get: function () { return chunkOSR3GCJG_cjs.MemberMutedText; }
160
160
  });
161
161
  Object.defineProperty(exports, "MemberNameCell", {
162
162
  enumerable: true,
163
- get: function () { return chunkHC54CTGN_cjs.MemberNameCell; }
163
+ get: function () { return chunkOSR3GCJG_cjs.MemberNameCell; }
164
164
  });
165
165
  Object.defineProperty(exports, "MemberRoleCell", {
166
166
  enumerable: true,
167
- get: function () { return chunkHC54CTGN_cjs.MemberRoleCell; }
167
+ get: function () { return chunkOSR3GCJG_cjs.MemberRoleCell; }
168
168
  });
169
169
  Object.defineProperty(exports, "NEEDS_CONNECTION", {
170
170
  enumerable: true,
171
- get: function () { return chunkHC54CTGN_cjs.NEEDS_CONNECTION; }
171
+ get: function () { return chunkOSR3GCJG_cjs.NEEDS_CONNECTION; }
172
172
  });
173
173
  Object.defineProperty(exports, "PlainMailBodyEditor", {
174
174
  enumerable: true,
175
- get: function () { return chunkHC54CTGN_cjs.PlainMailBodyEditor; }
175
+ get: function () { return chunkOSR3GCJG_cjs.PlainMailBodyEditor; }
176
176
  });
177
177
  Object.defineProperty(exports, "RecipientPicker", {
178
178
  enumerable: true,
179
- get: function () { return chunkHC54CTGN_cjs.RecipientPicker; }
179
+ get: function () { return chunkOSR3GCJG_cjs.RecipientPicker; }
180
180
  });
181
181
  Object.defineProperty(exports, "RoleSelect", {
182
182
  enumerable: true,
183
- get: function () { return chunkHC54CTGN_cjs.RoleSelect; }
183
+ get: function () { return chunkOSR3GCJG_cjs.RoleSelect; }
184
184
  });
185
185
  Object.defineProperty(exports, "applyContactInviteResults", {
186
186
  enumerable: true,
187
- get: function () { return chunkHC54CTGN_cjs.applyContactInviteResults; }
187
+ get: function () { return chunkOSR3GCJG_cjs.applyContactInviteResults; }
188
188
  });
189
189
  Object.defineProperty(exports, "buildMailFolderTree", {
190
190
  enumerable: true,
191
- get: function () { return chunkHC54CTGN_cjs.buildMailFolderTree; }
191
+ get: function () { return chunkOSR3GCJG_cjs.buildMailFolderTree; }
192
192
  });
193
193
  Object.defineProperty(exports, "contactName", {
194
194
  enumerable: true,
195
- get: function () { return chunkHC54CTGN_cjs.contactName; }
195
+ get: function () { return chunkOSR3GCJG_cjs.contactName; }
196
196
  });
197
197
  Object.defineProperty(exports, "contactOutcomeMessage", {
198
198
  enumerable: true,
199
- get: function () { return chunkHC54CTGN_cjs.contactOutcomeMessage; }
199
+ get: function () { return chunkOSR3GCJG_cjs.contactOutcomeMessage; }
200
200
  });
201
201
  Object.defineProperty(exports, "contactStatusLabel", {
202
202
  enumerable: true,
203
- get: function () { return chunkHC54CTGN_cjs.contactStatusLabel; }
203
+ get: function () { return chunkOSR3GCJG_cjs.contactStatusLabel; }
204
204
  });
205
205
  Object.defineProperty(exports, "contactToForm", {
206
206
  enumerable: true,
207
- get: function () { return chunkHC54CTGN_cjs.contactToForm; }
207
+ get: function () { return chunkOSR3GCJG_cjs.contactToForm; }
208
208
  });
209
209
  Object.defineProperty(exports, "descendantFolderIds", {
210
210
  enumerable: true,
211
- get: function () { return chunkHC54CTGN_cjs.descendantFolderIds; }
211
+ get: function () { return chunkOSR3GCJG_cjs.descendantFolderIds; }
212
212
  });
213
213
  Object.defineProperty(exports, "draftMailCompose", {
214
214
  enumerable: true,
215
- get: function () { return chunkHC54CTGN_cjs.draftMailCompose; }
215
+ get: function () { return chunkOSR3GCJG_cjs.draftMailCompose; }
216
216
  });
217
217
  Object.defineProperty(exports, "emailTokens", {
218
218
  enumerable: true,
219
- get: function () { return chunkHC54CTGN_cjs.emailTokens; }
219
+ get: function () { return chunkOSR3GCJG_cjs.emailTokens; }
220
220
  });
221
221
  Object.defineProperty(exports, "emptyMailCompose", {
222
222
  enumerable: true,
223
- get: function () { return chunkHC54CTGN_cjs.emptyMailCompose; }
223
+ get: function () { return chunkOSR3GCJG_cjs.emptyMailCompose; }
224
224
  });
225
225
  Object.defineProperty(exports, "failContactInvites", {
226
226
  enumerable: true,
227
- get: function () { return chunkHC54CTGN_cjs.failContactInvites; }
227
+ get: function () { return chunkOSR3GCJG_cjs.failContactInvites; }
228
228
  });
229
229
  Object.defineProperty(exports, "formToContactCard", {
230
230
  enumerable: true,
231
- get: function () { return chunkHC54CTGN_cjs.formToContactCard; }
231
+ get: function () { return chunkOSR3GCJG_cjs.formToContactCard; }
232
232
  });
233
233
  Object.defineProperty(exports, "hasCalendarPart", {
234
234
  enumerable: true,
235
- get: function () { return chunkHC54CTGN_cjs.hasCalendarPart; }
235
+ get: function () { return chunkOSR3GCJG_cjs.hasCalendarPart; }
236
236
  });
237
237
  Object.defineProperty(exports, "inviteEmail", {
238
238
  enumerable: true,
239
- get: function () { return chunkHC54CTGN_cjs.inviteEmail; }
239
+ get: function () { return chunkOSR3GCJG_cjs.inviteEmail; }
240
240
  });
241
241
  Object.defineProperty(exports, "isInboxFolder", {
242
242
  enumerable: true,
243
- get: function () { return chunkHC54CTGN_cjs.isInboxFolder; }
243
+ get: function () { return chunkOSR3GCJG_cjs.isInboxFolder; }
244
244
  });
245
245
  Object.defineProperty(exports, "isInvitableEmail", {
246
246
  enumerable: true,
247
- get: function () { return chunkHC54CTGN_cjs.isInvitableEmail; }
247
+ get: function () { return chunkOSR3GCJG_cjs.isInvitableEmail; }
248
248
  });
249
249
  Object.defineProperty(exports, "mailAddressLabel", {
250
250
  enumerable: true,
251
- get: function () { return chunkHC54CTGN_cjs.mailAddressLabel; }
251
+ get: function () { return chunkOSR3GCJG_cjs.mailAddressLabel; }
252
252
  });
253
253
  Object.defineProperty(exports, "matchesContact", {
254
254
  enumerable: true,
255
- get: function () { return chunkHC54CTGN_cjs.matchesContact; }
255
+ get: function () { return chunkOSR3GCJG_cjs.matchesContact; }
256
256
  });
257
257
  Object.defineProperty(exports, "normalizeVCardDate", {
258
258
  enumerable: true,
259
- get: function () { return chunkHC54CTGN_cjs.normalizeVCardDate; }
259
+ get: function () { return chunkOSR3GCJG_cjs.normalizeVCardDate; }
260
260
  });
261
261
  Object.defineProperty(exports, "parseEmails", {
262
262
  enumerable: true,
263
- get: function () { return chunkHC54CTGN_cjs.parseEmails; }
263
+ get: function () { return chunkOSR3GCJG_cjs.parseEmails; }
264
264
  });
265
265
  Object.defineProperty(exports, "parseMailRecipients", {
266
266
  enumerable: true,
267
- get: function () { return chunkHC54CTGN_cjs.parseMailRecipients; }
267
+ get: function () { return chunkOSR3GCJG_cjs.parseMailRecipients; }
268
268
  });
269
269
  Object.defineProperty(exports, "planContactInvites", {
270
270
  enumerable: true,
271
- get: function () { return chunkHC54CTGN_cjs.planContactInvites; }
271
+ get: function () { return chunkOSR3GCJG_cjs.planContactInvites; }
272
272
  });
273
273
  Object.defineProperty(exports, "primaryEmail", {
274
274
  enumerable: true,
275
- get: function () { return chunkHC54CTGN_cjs.primaryEmail; }
275
+ get: function () { return chunkOSR3GCJG_cjs.primaryEmail; }
276
276
  });
277
277
  Object.defineProperty(exports, "replyMailCompose", {
278
278
  enumerable: true,
279
- get: function () { return chunkHC54CTGN_cjs.replyMailCompose; }
279
+ get: function () { return chunkOSR3GCJG_cjs.replyMailCompose; }
280
280
  });
281
281
  Object.defineProperty(exports, "summarizeContactInvites", {
282
282
  enumerable: true,
283
- get: function () { return chunkHC54CTGN_cjs.summarizeContactInvites; }
283
+ get: function () { return chunkOSR3GCJG_cjs.summarizeContactInvites; }
284
284
  });
285
285
  Object.defineProperty(exports, "summarizeImport", {
286
286
  enumerable: true,
287
- get: function () { return chunkHC54CTGN_cjs.summarizeImport; }
287
+ get: function () { return chunkOSR3GCJG_cjs.summarizeImport; }
288
288
  });
289
289
  Object.defineProperty(exports, "summarizeUnsentInvites", {
290
290
  enumerable: true,
291
- get: function () { return chunkHC54CTGN_cjs.summarizeUnsentInvites; }
291
+ get: function () { return chunkOSR3GCJG_cjs.summarizeUnsentInvites; }
292
292
  });
293
293
  Object.defineProperty(exports, "toAddContactsRow", {
294
294
  enumerable: true,
295
- get: function () { return chunkHC54CTGN_cjs.toAddContactsRow; }
295
+ get: function () { return chunkOSR3GCJG_cjs.toAddContactsRow; }
296
296
  });
297
297
  Object.defineProperty(exports, "toAddContactsRows", {
298
298
  enumerable: true,
299
- get: function () { return chunkHC54CTGN_cjs.toAddContactsRows; }
299
+ get: function () { return chunkOSR3GCJG_cjs.toAddContactsRows; }
300
300
  });
301
301
  Object.defineProperty(exports, "toggleMailFolder", {
302
302
  enumerable: true,
303
- get: function () { return chunkHC54CTGN_cjs.toggleMailFolder; }
303
+ get: function () { return chunkOSR3GCJG_cjs.toggleMailFolder; }
304
304
  });
305
305
  Object.defineProperty(exports, "validateContactForm", {
306
306
  enumerable: true,
307
- get: function () { return chunkHC54CTGN_cjs.validateContactForm; }
307
+ get: function () { return chunkOSR3GCJG_cjs.validateContactForm; }
308
308
  });
309
309
  Object.defineProperty(exports, "DEFAULT_SHARE_CONTROL_LABELS", {
310
310
  enumerable: true,
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  export { ContactCard, DEFAULT_CONTACT_CARD_LABELS, contactToVCard, downloadVCard, vCardFilename } from '../chunk-VQKGCV6H.js';
3
- export { ActionMenu, AddContactsForm, AddContactsResults, DEFAULT_ADD_CONTACTS_LABELS, DEFAULT_CONTACT_INVITE_LABELS, DEFAULT_CONTACT_OUTCOME_LABELS, DEFAULT_DM_ACCESS_REQUEST_BANNER_LABELS, DEFAULT_DM_GRANT_ACCESS_DIALOG_LABELS, DEFAULT_DM_THREAD_FRAME_LABELS, DEFAULT_MAIL_FOLDER_TREE_LABELS, DEFAULT_RECIPIENT_PICKER_LABELS, DmAccessRequestBanner, DmGrantAccessDialogView, DmInviteAvatar, DmThreadFrame, EMPTY_CONTACT_FORM, MAX_INVITE_EMAILS, MailActionBar, MailConversationView, MailDeliveryBadge, MailDeliveryList, MailDocumentPicker, MailFlagButton, MailFolderTree, MailGrid, MailMessageContent, MailMessagePreview, MailMessageView, MemberBulkActions, MemberListLoading, MemberMutedText, MemberNameCell, MemberRoleCell, NEEDS_CONNECTION, PlainMailBodyEditor, RecipientPicker, RoleSelect, applyContactInviteResults, buildMailFolderTree, contactName, contactOutcomeMessage, contactStatusLabel, contactToForm, descendantFolderIds, draftMailCompose, emailTokens, emptyMailCompose, failContactInvites, formToContactCard, hasCalendarPart, inviteEmail, isInboxFolder, isInvitableEmail, mailAddressLabel, matchesContact, normalizeVCardDate, parseEmails, parseMailRecipients, planContactInvites, primaryEmail, replyMailCompose, summarizeContactInvites, summarizeImport, summarizeUnsentInvites, toAddContactsRow, toAddContactsRows, toggleMailFolder, validateContactForm } from '../chunk-PP2NXTOP.js';
3
+ export { ActionMenu, AddContactsForm, AddContactsResults, DEFAULT_ADD_CONTACTS_LABELS, DEFAULT_CONTACT_INVITE_LABELS, DEFAULT_CONTACT_OUTCOME_LABELS, DEFAULT_DM_ACCESS_REQUEST_BANNER_LABELS, DEFAULT_DM_GRANT_ACCESS_DIALOG_LABELS, DEFAULT_DM_THREAD_FRAME_LABELS, DEFAULT_MAIL_FOLDER_TREE_LABELS, DEFAULT_RECIPIENT_PICKER_LABELS, DmAccessRequestBanner, DmGrantAccessDialogView, DmInviteAvatar, DmThreadFrame, EMPTY_CONTACT_FORM, MAX_INVITE_EMAILS, MailActionBar, MailConversationView, MailDeliveryBadge, MailDeliveryList, MailDocumentPicker, MailFlagButton, MailFolderTree, MailGrid, MailMessageContent, MailMessagePreview, MailMessageView, MemberBulkActions, MemberListLoading, MemberMutedText, MemberNameCell, MemberRoleCell, NEEDS_CONNECTION, PlainMailBodyEditor, RecipientPicker, RoleSelect, applyContactInviteResults, buildMailFolderTree, contactName, contactOutcomeMessage, contactStatusLabel, contactToForm, descendantFolderIds, draftMailCompose, emailTokens, emptyMailCompose, failContactInvites, formToContactCard, hasCalendarPart, inviteEmail, isInboxFolder, isInvitableEmail, mailAddressLabel, matchesContact, normalizeVCardDate, parseEmails, parseMailRecipients, planContactInvites, primaryEmail, replyMailCompose, summarizeContactInvites, summarizeImport, summarizeUnsentInvites, toAddContactsRow, toAddContactsRows, toggleMailFolder, validateContactForm } from '../chunk-RUV2ERID.js';
4
4
  import '../chunk-NBV56SGU.js';
5
5
  export { DEFAULT_SHARE_CONTROL_LABELS, ShareControl } from '../chunk-K4BGOPGG.js';
6
6
  import '../chunk-IU5CHOEU.js';
@@ -20,7 +20,8 @@ export interface MailActionBarProps {
20
20
  /** Where "Move to…" can move it (the current folder and views like Flagged left out). */
21
21
  moveTargets?: MailFolder[];
22
22
  onMove?: (folderId: string) => void;
23
- onSaveToWorkspace?: () => void;
23
+ /** Add it (or its whole conversation) to a workspace, privately: opens the host's dialog. */
24
+ onAddToWorkspace?: () => void;
24
25
  onPrint?: () => void;
25
26
  /** ARBI mail: the original `.eml`. */
26
27
  onDownloadOriginal?: () => void;
@@ -37,4 +38,4 @@ export interface MailActionBarProps {
37
38
  * An open message's or conversation's actions. The everyday ones are always in view (Reply, Reply
38
39
  * all, Archive, and the Flag as a one-click toggle); the rarer ones wait behind "…".
39
40
  */
40
- export declare function MailActionBar({ onBack, onEditDraft, onReply, onReplyAll, onReplyWithArbi, onForward, onArchive, onRestore, flagged, onToggleFlag, onMarkUnread, moveTargets, onMove, onSaveToWorkspace, onPrint, onDownloadOriginal, onDelete, deletesForever, canChange, isOnline, busy, }: MailActionBarProps): import("react").JSX.Element;
41
+ export declare function MailActionBar({ onBack, onEditDraft, onReply, onReplyAll, onReplyWithArbi, onForward, onArchive, onRestore, flagged, onToggleFlag, onMarkUnread, moveTargets, onMove, onAddToWorkspace, onPrint, onDownloadOriginal, onDelete, deletesForever, canChange, isOnline, busy, }: MailActionBarProps): import("react").JSX.Element;
@@ -0,0 +1,20 @@
1
+ /** What "Add to workspace" adds: this message, or the whole conversation and its future replies. */
2
+ export type MailFilingScope = 'message' | 'conversation';
3
+ export interface MailAddToWorkspaceDialogProps {
4
+ open: boolean;
5
+ onOpenChange: (open: boolean) => void;
6
+ workspaces: {
7
+ id: string;
8
+ name: string;
9
+ }[];
10
+ /** Preselected (e.g. the open workspace). Default: the first. */
11
+ defaultWorkspaceId?: string | null;
12
+ pending?: boolean;
13
+ error?: string;
14
+ onAdd: (choice: {
15
+ workspaceId: string;
16
+ scope: MailFilingScope;
17
+ }) => void;
18
+ }
19
+ /** Choose where an email goes, and whether its future replies follow. Only its filer can see it there. */
20
+ export declare function MailAddToWorkspaceDialog({ open, onOpenChange, workspaces, defaultWorkspaceId, pending, error, onAdd, }: MailAddToWorkspaceDialogProps): import("react").JSX.Element;
@@ -0,0 +1,15 @@
1
+ export interface MailFiledChipsProps {
2
+ /** Workspaces (names) the shown messages are in, or wait to be (until the workspace is next opened). */
3
+ workspaces: {
4
+ name: string;
5
+ pending?: boolean;
6
+ }[];
7
+ /** A filed conversation: its replies are added to this workspace until stopped. */
8
+ rule?: {
9
+ workspace: string;
10
+ onStop: () => void;
11
+ stopping?: boolean;
12
+ };
13
+ }
14
+ /** Where an open message (or conversation) has been added: "In ⟨workspace⟩", and stopping its replies. */
15
+ export declare function MailFiledChips({ workspaces, rule }: MailFiledChipsProps): import("react").JSX.Element | null;
@@ -21,8 +21,8 @@ export interface MailMessageViewProps {
21
21
  onUpdate: (body: MailMessageUpdate) => void;
22
22
  onDownloadAttachment: (attachment: MailAttachment) => void;
23
23
  onDownloadOriginal: () => void;
24
- /** Native mail: save the email to a workspace. Absent: not offered. */
25
- onSaveToWorkspace?: () => void;
24
+ /** Add the email to a workspace (the host's dialog). Absent: not offered. */
25
+ onAddToWorkspace?: () => void;
26
26
  /** How a person is named (default: the name on the message, else the address). */
27
27
  personLabel?: (person: MailAddress) => string;
28
28
  /** A calendar invite card, for a message that carries an .ics part. */
@@ -33,4 +33,4 @@ export interface MailMessageViewProps {
33
33
  onDeleteForever?: () => void;
34
34
  }
35
35
  /** An opened message on its own: its actions, then the message as read. */
36
- export declare function MailMessageView({ account, message, folderRole, folders, isOnline, changesWaitOffline, loading, uploadPending, onBack, onEditDraft, onReply, onReplyWithArbi, onUpdate, onDownloadAttachment, onDownloadOriginal, onSaveToWorkspace, personLabel, renderInvite, onRestore, onDeleteForever, }: MailMessageViewProps): import("react").JSX.Element;
36
+ export declare function MailMessageView({ account, message, folderRole, folders, isOnline, changesWaitOffline, loading, uploadPending, onBack, onEditDraft, onReply, onReplyWithArbi, onUpdate, onDownloadAttachment, onDownloadOriginal, onAddToWorkspace, personLabel, renderInvite, onRestore, onDeleteForever, }: MailMessageViewProps): import("react").JSX.Element;