@arbidocs/blocks 0.5.98 → 0.5.99

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 (144) hide show
  1. package/README.md +37 -3
  2. package/dist/ConnectedCallDock-OJ4UR5PR.js +2 -2
  3. package/dist/ConnectedCallDock-OKH3FT2U.cjs +2 -2
  4. package/dist/ConnectedCallRoom-NB7I6RLQ.cjs +2 -2
  5. package/dist/ConnectedCallRoom-OX7ZIF76.js +2 -2
  6. package/dist/{ConnectedNativeDocxComparison-3UJZR52S.cjs → ConnectedNativeDocxComparison-F4XKHVTI.cjs} +9 -9
  7. package/dist/{ConnectedNativeDocxComparison-3UJZR52S.cjs.map → ConnectedNativeDocxComparison-F4XKHVTI.cjs.map} +1 -1
  8. package/dist/{ConnectedNativeDocxComparison-VGJLNVM4.js → ConnectedNativeDocxComparison-TDWHGYQX.js} +8 -8
  9. package/dist/{ConnectedStreamedWordArtifact-MJAVZ3NR.js.map → ConnectedNativeDocxComparison-TDWHGYQX.js.map} +1 -1
  10. package/dist/{ConnectedNativeDocxEditor-A6PGFR35.cjs → ConnectedNativeDocxEditor-J3E3QDFA.cjs} +9 -9
  11. package/dist/{ConnectedNativeDocxEditor-A6PGFR35.cjs.map → ConnectedNativeDocxEditor-J3E3QDFA.cjs.map} +1 -1
  12. package/dist/{ConnectedNativeDocxEditor-O7QEWYGG.js → ConnectedNativeDocxEditor-O7QB6DVI.js} +7 -7
  13. package/dist/{ConnectedNativeDocxEditor-O7QEWYGG.js.map → ConnectedNativeDocxEditor-O7QB6DVI.js.map} +1 -1
  14. package/dist/{ConnectedProductionSetDialog-34UV5VH2.js → ConnectedProductionSetDialog-34NEZNEQ.js} +3 -3
  15. package/dist/{ConnectedProductionSetDialog-34UV5VH2.js.map → ConnectedProductionSetDialog-34NEZNEQ.js.map} +1 -1
  16. package/dist/{ConnectedProductionSetDialog-XH725VSO.cjs → ConnectedProductionSetDialog-NFASXSLG.cjs} +3 -3
  17. package/dist/{ConnectedProductionSetDialog-XH725VSO.cjs.map → ConnectedProductionSetDialog-NFASXSLG.cjs.map} +1 -1
  18. package/dist/{ConnectedStreamedWordArtifact-Q7TWGK4B.cjs → ConnectedStreamedWordArtifact-UR4LM4RB.cjs} +9 -9
  19. package/dist/ConnectedStreamedWordArtifact-UR4LM4RB.cjs.map +1 -0
  20. package/dist/{ConnectedStreamedWordArtifact-MJAVZ3NR.js → ConnectedStreamedWordArtifact-ZPFR5HFS.js} +8 -8
  21. package/dist/{ConnectedNativeDocxComparison-VGJLNVM4.js.map → ConnectedStreamedWordArtifact-ZPFR5HFS.js.map} +1 -1
  22. package/dist/{DocumentReviewCard-LGBI472S.js → DocumentReviewCard-5NZM6FOB.js} +10 -10
  23. package/dist/{DocumentReviewCard-LGBI472S.js.map → DocumentReviewCard-5NZM6FOB.js.map} +1 -1
  24. package/dist/{DocumentReviewCard-CJ5VQM45.cjs → DocumentReviewCard-7VJ3MMYG.cjs} +15 -15
  25. package/dist/{DocumentReviewCard-CJ5VQM45.cjs.map → DocumentReviewCard-7VJ3MMYG.cjs.map} +1 -1
  26. package/dist/{FilesViewerDialog-KP3IHDSS.js → FilesViewerDialog-EQ4UT6LW.js} +13 -13
  27. package/dist/{FilesViewerDialog-KP3IHDSS.js.map → FilesViewerDialog-EQ4UT6LW.js.map} +1 -1
  28. package/dist/{FilesViewerDialog-AFIM2SCB.cjs → FilesViewerDialog-XIJAGQAU.cjs} +14 -14
  29. package/dist/{FilesViewerDialog-AFIM2SCB.cjs.map → FilesViewerDialog-XIJAGQAU.cjs.map} +1 -1
  30. package/dist/{WorkspaceTableView-YPESFW25.cjs → WorkspaceTableView-6MLEC6I6.cjs} +4 -4
  31. package/dist/{WorkspaceTableView-YPESFW25.cjs.map → WorkspaceTableView-6MLEC6I6.cjs.map} +1 -1
  32. package/dist/{WorkspaceTableView-2FL5OX6M.js → WorkspaceTableView-YGLOQ6JA.js} +4 -4
  33. package/dist/{WorkspaceTableView-2FL5OX6M.js.map → WorkspaceTableView-YGLOQ6JA.js.map} +1 -1
  34. package/dist/agents/index.cjs +178 -178
  35. package/dist/agents/index.js +5 -5
  36. package/dist/ai-5JTBFZAO.js +1 -1
  37. package/dist/ai-ZLZNDUUS.cjs +1 -1
  38. package/dist/calls/index.cjs +1 -1
  39. package/dist/calls/index.js +1 -1
  40. package/dist/chat/index.cjs +2 -2
  41. package/dist/chat/index.js +2 -2
  42. package/dist/{chunk-PNDWMFVL.cjs → chunk-3BCKTFOP.cjs} +54 -54
  43. package/dist/{chunk-PNDWMFVL.cjs.map → chunk-3BCKTFOP.cjs.map} +1 -1
  44. package/dist/{chunk-FADUFGZD.js → chunk-3CV4M6MB.js} +3 -3
  45. package/dist/{chunk-FADUFGZD.js.map → chunk-3CV4M6MB.js.map} +1 -1
  46. package/dist/{chunk-3SBMU4LB.js → chunk-3VKULQEG.js} +6 -6
  47. package/dist/{chunk-3SBMU4LB.js.map → chunk-3VKULQEG.js.map} +1 -1
  48. package/dist/{chunk-Z4VWLWFX.js → chunk-4WW34DPM.js} +3 -3
  49. package/dist/{chunk-Z4VWLWFX.js.map → chunk-4WW34DPM.js.map} +1 -1
  50. package/dist/{chunk-3PV25ICC.js → chunk-6KKVJ2V6.js} +3 -3
  51. package/dist/{chunk-3PV25ICC.js.map → chunk-6KKVJ2V6.js.map} +1 -1
  52. package/dist/{chunk-WGAGIF4F.cjs → chunk-CS4KQSLY.cjs} +3 -3
  53. package/dist/{chunk-WGAGIF4F.cjs.map → chunk-CS4KQSLY.cjs.map} +1 -1
  54. package/dist/{chunk-JLTPQDQB.js → chunk-EMTRPNYB.js} +3 -3
  55. package/dist/{chunk-JLTPQDQB.js.map → chunk-EMTRPNYB.js.map} +1 -1
  56. package/dist/{chunk-VJTDTWNZ.cjs → chunk-ERDQ4DAX.cjs} +3 -3
  57. package/dist/{chunk-VJTDTWNZ.cjs.map → chunk-ERDQ4DAX.cjs.map} +1 -1
  58. package/dist/{chunk-F3IRNQIB.cjs → chunk-HJBVSG6H.cjs} +4 -4
  59. package/dist/{chunk-F3IRNQIB.cjs.map → chunk-HJBVSG6H.cjs.map} +1 -1
  60. package/dist/{chunk-VYW4YXDB.js → chunk-I44X7O6X.js} +4 -4
  61. package/dist/{chunk-VYW4YXDB.js.map → chunk-I44X7O6X.js.map} +1 -1
  62. package/dist/{chunk-ERVXJW7P.cjs → chunk-J24LYNTY.cjs} +35 -35
  63. package/dist/{chunk-ERVXJW7P.cjs.map → chunk-J24LYNTY.cjs.map} +1 -1
  64. package/dist/{chunk-LDGVJI7D.cjs → chunk-JL6MDUV7.cjs} +28 -28
  65. package/dist/{chunk-LDGVJI7D.cjs.map → chunk-JL6MDUV7.cjs.map} +1 -1
  66. package/dist/{chunk-5HPLUT4M.cjs → chunk-KBXATCF4.cjs} +4 -4
  67. package/dist/{chunk-5HPLUT4M.cjs.map → chunk-KBXATCF4.cjs.map} +1 -1
  68. package/dist/{chunk-6FLDM72D.js → chunk-KYR3TXHS.js} +3 -3
  69. package/dist/{chunk-6FLDM72D.js.map → chunk-KYR3TXHS.js.map} +1 -1
  70. package/dist/{chunk-JGC3EPPF.js → chunk-L3V2ANBD.js} +3 -3
  71. package/dist/{chunk-JGC3EPPF.js.map → chunk-L3V2ANBD.js.map} +1 -1
  72. package/dist/{chunk-SVQTUHPE.cjs → chunk-LT2RPGKW.cjs} +16 -16
  73. package/dist/{chunk-SVQTUHPE.cjs.map → chunk-LT2RPGKW.cjs.map} +1 -1
  74. package/dist/{chunk-VYTEEQ4C.cjs → chunk-MT3RPUQC.cjs} +4 -4
  75. package/dist/{chunk-VYTEEQ4C.cjs.map → chunk-MT3RPUQC.cjs.map} +1 -1
  76. package/dist/{chunk-YMNKMIFG.cjs → chunk-OC5K2J6V.cjs} +3 -3
  77. package/dist/{chunk-YMNKMIFG.cjs.map → chunk-OC5K2J6V.cjs.map} +1 -1
  78. package/dist/{chunk-KA6TKTIT.js → chunk-OOYT5A7W.js} +3 -3
  79. package/dist/{chunk-KA6TKTIT.js.map → chunk-OOYT5A7W.js.map} +1 -1
  80. package/dist/{chunk-U3FUFNNR.js → chunk-OYSTBNNA.js} +3 -3
  81. package/dist/{chunk-U3FUFNNR.js.map → chunk-OYSTBNNA.js.map} +1 -1
  82. package/dist/{chunk-Y7QIZGZA.js → chunk-POEWHRQV.js} +7 -7
  83. package/dist/{chunk-Y7QIZGZA.js.map → chunk-POEWHRQV.js.map} +1 -1
  84. package/dist/{chunk-E35SHIUT.cjs → chunk-RAF72BBC.cjs} +4 -4
  85. package/dist/{chunk-E35SHIUT.cjs.map → chunk-RAF72BBC.cjs.map} +1 -1
  86. package/dist/{chunk-5SQJTWD3.cjs → chunk-SWILV6LT.cjs} +4 -4
  87. package/dist/{chunk-5SQJTWD3.cjs.map → chunk-SWILV6LT.cjs.map} +1 -1
  88. package/dist/{chunk-7OMLHP7B.js → chunk-SWW3KBH2.js} +4 -4
  89. package/dist/{chunk-7OMLHP7B.js.map → chunk-SWW3KBH2.js.map} +1 -1
  90. package/dist/{chunk-5CKKWKEJ.js → chunk-TVJAVK2G.js} +3 -3
  91. package/dist/{chunk-5CKKWKEJ.js.map → chunk-TVJAVK2G.js.map} +1 -1
  92. package/dist/{chunk-37J6OLML.js → chunk-UBI4HXT6.js} +5 -5
  93. package/dist/{chunk-37J6OLML.js.map → chunk-UBI4HXT6.js.map} +1 -1
  94. package/dist/{chunk-6KQVTMRL.cjs → chunk-UOGXKHTJ.cjs} +3 -3
  95. package/dist/{chunk-6KQVTMRL.cjs.map → chunk-UOGXKHTJ.cjs.map} +1 -1
  96. package/dist/{chunk-65MSYISI.cjs → chunk-VD33HXFZ.cjs} +28 -28
  97. package/dist/{chunk-65MSYISI.cjs.map → chunk-VD33HXFZ.cjs.map} +1 -1
  98. package/dist/{chunk-5ZUA3JRB.js → chunk-WYLY5UQ4.js} +3 -3
  99. package/dist/{chunk-5ZUA3JRB.js.map → chunk-WYLY5UQ4.js.map} +1 -1
  100. package/dist/{chunk-7GPQBAIL.cjs → chunk-X426D2LX.cjs} +4 -4
  101. package/dist/{chunk-7GPQBAIL.cjs.map → chunk-X426D2LX.cjs.map} +1 -1
  102. package/dist/{chunk-3LZ7JL3N.js → chunk-YG4S7OCD.js} +3 -3
  103. package/dist/{chunk-3LZ7JL3N.js.map → chunk-YG4S7OCD.js.map} +1 -1
  104. package/dist/{chunk-YOCKX2OP.cjs → chunk-YHNTGQSW.cjs} +6 -6
  105. package/dist/{chunk-YOCKX2OP.cjs.map → chunk-YHNTGQSW.cjs.map} +1 -1
  106. package/dist/{chunk-CYIL3N2M.js → chunk-ZARYAYQO.js} +13 -13
  107. package/dist/{chunk-CYIL3N2M.js.map → chunk-ZARYAYQO.js.map} +1 -1
  108. package/dist/{chunk-R4JGE2XT.cjs → chunk-ZXEGVXEV.cjs} +4 -4
  109. package/dist/{chunk-R4JGE2XT.cjs.map → chunk-ZXEGVXEV.cjs.map} +1 -1
  110. package/dist/connect/docx.cjs +12 -12
  111. package/dist/connect/docx.js +8 -8
  112. package/dist/connect/index.cjs +1150 -631
  113. package/dist/connect/index.cjs.map +1 -1
  114. package/dist/connect/index.d.ts +1 -0
  115. package/dist/connect/index.js +626 -110
  116. package/dist/connect/index.js.map +1 -1
  117. package/dist/connect/viewer.cjs +12 -12
  118. package/dist/connect/viewer.js +11 -11
  119. package/dist/connection/command/ConnectedCommandPalette.d.ts +16 -0
  120. package/dist/connection/command/actions.d.ts +21 -0
  121. package/dist/connection/command/icons.d.ts +7 -0
  122. package/dist/connection/command/index.d.ts +3 -0
  123. package/dist/connection/command/palette-state.d.ts +22 -0
  124. package/dist/embed/index.cjs +18 -18
  125. package/dist/embed/index.js +12 -12
  126. package/dist/facts/index.cjs +43 -43
  127. package/dist/facts/index.js +2 -2
  128. package/dist/files/index.cjs +224 -224
  129. package/dist/files/index.js +3 -3
  130. package/dist/index.cjs +305 -305
  131. package/dist/index.cjs.map +1 -1
  132. package/dist/index.js +11 -11
  133. package/dist/index.js.map +1 -1
  134. package/dist/nav/actions.d.ts +23 -1
  135. package/dist/settings/index.cjs +1 -1
  136. package/dist/settings/index.js +1 -1
  137. package/dist/studio/index.cjs +1 -1
  138. package/dist/studio/index.js +1 -1
  139. package/dist/styles.css +1 -1
  140. package/dist/workflow-canvas/index.cjs +25 -25
  141. package/dist/workflow-canvas/index.js +14 -14
  142. package/node_modules/@arbidocs/coedit/package.json +1 -1
  143. package/package.json +5 -5
  144. package/dist/ConnectedStreamedWordArtifact-Q7TWGK4B.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/OpenConversationButton.tsx","../src/nav/actions.ts","../src/nav/manifest.ts"],"names":["hrefFor","useBlocksEnvironment","jsxs","ActionLink","cn","buttonVariants","jsx","MessagesSquare","createElement"],"mappings":"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","file":"index.cjs","sourcesContent":["import { MessagesSquare } from 'lucide-react'\nimport { buttonVariants, cn } from '@arbidocs/react/ui'\nimport { useBlocksEnvironment } from '../provider/environment'\nimport { ActionLink } from './ActionLink'\n\nexport interface OpenConversationButtonProps {\n /** The conversation behind an AI result; none: nothing is rendered. */\n conversationId: string | null | undefined\n /** The workspace it is in, for its link. */\n workspaceId?: string | null\n /** A message to scroll to. */\n messageId?: string\n /** Default \"Open in thread\". */\n label?: string\n className?: string\n testId?: string\n}\n\n/**\n * \"Open in thread\": the full conversation behind an AI result (a brief, a translation, a draft),\n * to check its sources and follow up. A real link where the host gives one (`hrefFor`), opened with\n * `openConversation`.\n */\nexport function OpenConversationButton({\n conversationId,\n workspaceId,\n messageId,\n label = 'Open in thread',\n className,\n testId,\n}: OpenConversationButtonProps) {\n const { hrefFor, openConversation } = useBlocksEnvironment()\n if (!conversationId) return null\n return (\n <ActionLink\n href={hrefFor({ kind: 'conversation', conversationId, workspaceId, messageId })}\n onSelect={() =>\n openConversation(conversationId, {\n ...(messageId && { messageId }),\n ...(workspaceId && { workspaceId }),\n })\n }\n className={cn(buttonVariants({ variant: 'outline', size: 'sm' }), className)}\n data-testid={testId}\n >\n <MessagesSquare className=\"size-3.5\" aria-hidden />\n {label}\n </ActionLink>\n )\n}\n","/** A parameter-light action, supplied by a host and usable outside React. */\nexport interface ActionDefinition<Id extends string = string> {\n id: Id\n label: string\n category: string\n /** An icon name, so the catalogue stays independent of a renderer. */\n icon: string\n keywords?: readonly string[]\n run: () => void\n}\n\n/** One catalogue for picker options, tip CTAs, palettes and validated remote dispatch. */\nexport function defineActions<Id extends string, Action extends ActionDefinition<Id>>(\n actions: Partial<Record<Id, Action>>,\n options: { scopedIds?: readonly Id[]; onUnknown?: (id: Id) => void } = {}\n) {\n const scoped = new Set<string>(options.scopedIds)\n return {\n actions,\n options: (Object.values(actions) as Action[]).map(({ id, label, category }) => ({\n value: id,\n label,\n category,\n })),\n isActionId(value: string): value is Id {\n return scoped.has(value) || Object.prototype.hasOwnProperty.call(actions, value)\n },\n run(id: Id): void {\n const action = Object.prototype.hasOwnProperty.call(actions, id) ? actions[id] : undefined\n if (action) action.run()\n else options.onUnknown?.(id)\n },\n }\n}\n","import { createElement } from 'react'\nimport type { AppNavItem, AppNavSection } from './types'\nimport type { NavItem } from '../shell/types'\n\n/**\n * A host's destinations, once: the items are also the command palette's nav contract. Resolve\n * their state and handlers for ShellSidebar or MobileTabBar without copying the catalogue.\n */\nexport function defineNavigation(sections: readonly AppNavSection[]) {\n const items = sections.flatMap((section) => section.items)\n return {\n sections,\n items,\n resolve(options: {\n beforeNavigate?: () => void\n onNavigate: (item: AppNavItem) => void\n itemProps?: (item: AppNavItem) => Partial<Omit<NavItem, 'id' | 'label' | 'onSelect'>>\n }): NavItem[] {\n return items.map((item) => ({\n id: item.id,\n label: item.label,\n icon: createElement(item.icon, { className: 'size-5' }),\n ...options.itemProps?.(item),\n onSelect: () => {\n options.beforeNavigate?.()\n options.onNavigate(item)\n },\n }))\n },\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/components/OpenConversationButton.tsx","../src/nav/actions.ts","../src/nav/manifest.ts"],"names":["hrefFor","useBlocksEnvironment","jsxs","ActionLink","cn","buttonVariants","jsx","MessagesSquare","createElement"],"mappings":"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","file":"index.cjs","sourcesContent":["import { MessagesSquare } from 'lucide-react'\nimport { buttonVariants, cn } from '@arbidocs/react/ui'\nimport { useBlocksEnvironment } from '../provider/environment'\nimport { ActionLink } from './ActionLink'\n\nexport interface OpenConversationButtonProps {\n /** The conversation behind an AI result; none: nothing is rendered. */\n conversationId: string | null | undefined\n /** The workspace it is in, for its link. */\n workspaceId?: string | null\n /** A message to scroll to. */\n messageId?: string\n /** Default \"Open in thread\". */\n label?: string\n className?: string\n testId?: string\n}\n\n/**\n * \"Open in thread\": the full conversation behind an AI result (a brief, a translation, a draft),\n * to check its sources and follow up. A real link where the host gives one (`hrefFor`), opened with\n * `openConversation`.\n */\nexport function OpenConversationButton({\n conversationId,\n workspaceId,\n messageId,\n label = 'Open in thread',\n className,\n testId,\n}: OpenConversationButtonProps) {\n const { hrefFor, openConversation } = useBlocksEnvironment()\n if (!conversationId) return null\n return (\n <ActionLink\n href={hrefFor({ kind: 'conversation', conversationId, workspaceId, messageId })}\n onSelect={() =>\n openConversation(conversationId, {\n ...(messageId && { messageId }),\n ...(workspaceId && { workspaceId }),\n })\n }\n className={cn(buttonVariants({ variant: 'outline', size: 'sm' }), className)}\n data-testid={testId}\n >\n <MessagesSquare className=\"size-3.5\" aria-hidden />\n {label}\n </ActionLink>\n )\n}\n","import type { ArbiFeature } from '@arbidocs/react'\n\n/** Who is asking, for an action's `available` (the same gates the primary UI applies). */\nexport interface ActionContext {\n /** The open workspace; `null` outside one. */\n workspaceId: string | null\n /** The viewer is a member of the open workspace. */\n isMember: boolean\n /** The viewer's role there (`owner`, `collaborator`, `guest`); `null` when not a member. */\n role: string | null\n /** A temporary-access (external) account. */\n isTemporaryAccess: boolean\n /** Whether the account may create projects; `undefined` until known. */\n canCreateProjects: boolean | undefined\n isFeatureOn: (feature: ArbiFeature) => boolean\n}\n\n/** A parameter-light action, supplied by a host and usable outside React. */\nexport interface ActionDefinition<Id extends string = string> {\n id: Id\n label: string\n category: string\n /**\n * An icon name, so the catalogue stays independent of a renderer. The palette draws the lucide\n * icons its catalogue names (`connection/command/icons.ts`); any other name, a generic glyph.\n */\n icon: string\n keywords?: readonly string[]\n /** Offered (in the command palette) only when it says so. Dispatch is not gated. */\n available?: (context: ActionContext) => boolean\n /** `false`: dispatch only, never listed (a second name for another row's effect). */\n listed?: boolean\n run: () => void\n}\n\n/** One catalogue for picker options, tip CTAs, palettes and validated remote dispatch. */\nexport function defineActions<Id extends string, Action extends ActionDefinition<Id>>(\n actions: Partial<Record<Id, Action>>,\n options: { scopedIds?: readonly Id[]; onUnknown?: (id: Id) => void } = {}\n) {\n const scoped = new Set<string>(options.scopedIds)\n return {\n actions,\n options: (Object.values(actions) as Action[]).map(({ id, label, category }) => ({\n value: id,\n label,\n category,\n })),\n isActionId(value: string): value is Id {\n return scoped.has(value) || Object.prototype.hasOwnProperty.call(actions, value)\n },\n run(id: Id): void {\n const action = Object.prototype.hasOwnProperty.call(actions, id) ? actions[id] : undefined\n if (action) action.run()\n else options.onUnknown?.(id)\n },\n }\n}\n","import { createElement } from 'react'\nimport type { AppNavItem, AppNavSection } from './types'\nimport type { NavItem } from '../shell/types'\n\n/**\n * A host's destinations, once: the items are also the command palette's nav contract. Resolve\n * their state and handlers for ShellSidebar or MobileTabBar without copying the catalogue.\n */\nexport function defineNavigation(sections: readonly AppNavSection[]) {\n const items = sections.flatMap((section) => section.items)\n return {\n sections,\n items,\n resolve(options: {\n beforeNavigate?: () => void\n onNavigate: (item: AppNavItem) => void\n itemProps?: (item: AppNavItem) => Partial<Omit<NavItem, 'id' | 'label' | 'onSelect'>>\n }): NavItem[] {\n return items.map((item) => ({\n id: item.id,\n label: item.label,\n icon: createElement(item.icon, { className: 'size-5' }),\n ...options.itemProps?.(item),\n onSelect: () => {\n options.beforeNavigate?.()\n options.onNavigate(item)\n },\n }))\n },\n }\n}\n"]}
package/dist/index.js CHANGED
@@ -6,9 +6,8 @@ export { DataTableBlock, StatGroup } from './chunk-WKYE6MTZ.js';
6
6
  export { Accordion, AvatarBlock, BlockImage, BlockLink, CTABanner, Columns, ContactForm, Container, EditorialProfileCard, FAQ, FeatureGrid, Footer, Gallery, Hero, ListBlock, LogoCloud, MediaText, Navbar, PricingTable, RichTextBlock, SectionHeading, Spacer, Steps, TeamGrid, Testimonial, TestimonialGrid, VideoEmbed, applyStoredTheme, createThemeStore, toEmbedUrl } from './chunk-FVNQMMXK.js';
7
7
  export { Timeline } from './chunk-UYA4URGM.js';
8
8
  export { Highlight, splitByTerms } from './chunk-Q5EUEJD7.js';
9
- import './chunk-QAB4O4EE.js';
10
9
  export { ContactCard, DEFAULT_CONTACT_CARD_LABELS, contactToVCard, downloadVCard, vCardFilename } from './chunk-VQKGCV6H.js';
11
- export { DEFAULT_GLOSSARY_LABELS, DEFAULT_TAG_COLUMNS_EDITOR_LABELS, DEFAULT_TAG_DETAIL_LABELS, DEFAULT_TAG_TABLE_DOCX_LABELS, DEFAULT_TAG_TABLE_LABELS, DEFAULT_WORKSPACE_ACTIVITY_LABELS, EXTRACT_LIMIT, EntityIdentityBar, ExtractEntitiesDialog, GridRowNavigator, IDENTITY_NAME_MAX_LENGTH, LoadingIndicator, TAG_TABLE_DOCX_LANDSCAPE_AFTER, TagColumnsEditor, TagDetail, TagTable, TagTableCell, Toolbar, WorkspaceActivityList, cellText, cellValue, documentCount, entitiesPhrase, fieldWrites, glossaryDocumentXml, glossaryDocx, glossaryEntries, glossaryFileName, glossaryMarkdown, isGap, parseCell, rowLinks, tagDetailLabels, tagKindDescription, tagNoteLabel, tagTableDocumentXml, tagTableDocx, tagTableLabels, tagTableMarkdown, tagsPageNouns, useTipsPlacement, workspaceActivityHeadline, workspaceActivityTarget } from './chunk-VYW4YXDB.js';
10
+ export { DEFAULT_GLOSSARY_LABELS, DEFAULT_TAG_COLUMNS_EDITOR_LABELS, DEFAULT_TAG_DETAIL_LABELS, DEFAULT_TAG_TABLE_DOCX_LABELS, DEFAULT_TAG_TABLE_LABELS, DEFAULT_WORKSPACE_ACTIVITY_LABELS, EXTRACT_LIMIT, EntityIdentityBar, ExtractEntitiesDialog, GridRowNavigator, IDENTITY_NAME_MAX_LENGTH, LoadingIndicator, TAG_TABLE_DOCX_LANDSCAPE_AFTER, TagColumnsEditor, TagDetail, TagTable, TagTableCell, Toolbar, WorkspaceActivityList, cellText, cellValue, documentCount, entitiesPhrase, fieldWrites, glossaryDocumentXml, glossaryDocx, glossaryEntries, glossaryFileName, glossaryMarkdown, isGap, parseCell, rowLinks, tagDetailLabels, tagKindDescription, tagNoteLabel, tagTableDocumentXml, tagTableDocx, tagTableLabels, tagTableMarkdown, tagsPageNouns, useTipsPlacement, workspaceActivityHeadline, workspaceActivityTarget } from './chunk-I44X7O6X.js';
12
11
  export { ThemeEditor, ThemePreview } from './chunk-4FV5DO3V.js';
13
12
  export { CONTRAST_PAIRS, DEFAULT_THEME_PREVIEW_LABELS, THEME_STYLE_ID, Tabs, applyFontVars, applyThemeVars, clearFontVars, clearThemeVars, contrastIssues, contrastRatio, deriveColors, ensureContrast, inferInputs, themeCssVars, themeMetaVars, toHslTriplet } from './chunk-J77BACGX.js';
14
13
  export { MemberAvatarStack } from './chunk-VGHPCF7Q.js';
@@ -32,16 +31,14 @@ export { SharedCell } from './chunk-3SBEWWKT.js';
32
31
  export { TIP_CTA_LABEL_MAX_CHARS, TIP_MAX_CHARS, UsageMeter, createTipsRegistry, usageMeterState } from './chunk-MHFWGIF4.js';
33
32
  export { FONT_PAIRINGS, fontPackages, getFontPairing, matchFontPairing } from './chunk-NHZK64TQ.js';
34
33
  export { RowNavigatorControls } from './chunk-ELA7Y5YW.js';
35
- export { DEFAULT_PASSAGE_PILL_LABELS, PassagePill } from './chunk-3IT5LPLF.js';
36
- export { DEFAULT_QUIET_MARK_LABELS, LabelMark, NoteMark, PassageMark, QuietLink, useCopyText } from './chunk-FACZSNRJ.js';
37
34
  export { DEFAULT_SHARE_CONTROL_LABELS, ShareControl } from './chunk-K4BGOPGG.js';
38
- export { DEFAULT_DETAIL_PANEL_LABELS, DetailBody, DetailEmpty, DetailField, DetailFields, DetailLinkItem, DetailLinkList, DetailLoading, DetailPanel, DetailSection } from './chunk-OC2PD52M.js';
39
35
  export { DataTable, MetricCard } from './chunk-I46XTM3W.js';
40
36
  export { tid } from './chunk-AMTWY22T.js';
41
37
  export { PageHeader } from './chunk-XCVLUXFP.js';
42
38
  export { Chart } from './chunk-VIIBJBTX.js';
43
- export { useWorkflowPreview } from './chunk-JGC3EPPF.js';
44
- export { ActionStepBody, AgentAvatarField, AgentBar, AgentBarIconButton, AgentBarMenu, AgentBarNotes, AgentBarProbeAnswer, AgentBarQueuedNote, AgentBarStatus, AgentCard, AgentConnectInstructions, AgentCreateView, AgentCreatedView, AgentCreator, AgentEditView, AgentGallery, AgentMainView, AgentTypeSelector, ApprovalEvidence, AssigneeLine, 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_CAPABILITIES, DEFAULT_AGENT_CARD_LABELS, DEFAULT_AGENT_CREATOR_LABELS, DEFAULT_AGENT_GALLERY_LABELS, DEFAULT_AGENT_TEMPLATES, DEFAULT_AGENT_TYPES, 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_BUILDER_LABELS, DEFAULT_SKILL_EDIT_FORM_LABELS, DEFAULT_SKILL_GENERATE_FORM_LABELS, DEFAULT_SKILL_VIEW_TOGGLE_LABELS, DEFAULT_STEP_BAR_LABELS, DEFAULT_TASK_ACTIVITY_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_THREAD_STATE_LABELS, DEFAULT_TUPLE_ARRAY_FIELD_LABELS, DEFAULT_UPLOAD_TASK_ITEM_LABELS, DEFAULT_UPLOAD_TASK_LIST_LABELS, DEFAULT_WORKFLOW_RUNNER_LABELS, DEFAULT_WORKFLOW_RUN_STATUS_LABELS, DEFAULT_WORKFLOW_STEP_PARTS_LABELS, DEFAULT_WORKFLOW_THREAD_STRIP_LABELS, MAX_TASK_DEPTH, NewThreadDialog, PillSelect, RecurrenceBuilder, SKILL_FIELD_TYPE_LABELS, SKILL_MAIN_FILENAME, SKILL_SOURCE_LABELS, SKILL_TYPES, SKILL_TYPE_LABELS, STATUS_LABELS, STATUS_ORDER, STATUS_TONE, SendBackControl, SkillDetail, SkillDetailSection, SkillEditForm, SkillFilterChips, SkillGenerateForm, SkillLibraryDetail, SkillTile, SkillViewToggle, TASK_COLUMN_ORDER, TRIGGER_LABELS, TaskActivityDialog, TaskActivityTimeline, TaskComposer, TaskEmptyState, TaskMoveDialog, TaskOutputsCell, TaskPlan, TaskRunsDialog, TaskStatusPill, TaskTable, ThreadStatusLine, TupleArrayField, UploadTaskItem, UploadTaskList, WorkflowRunStatus, WorkflowRunner, WorkflowStepAction, WorkflowThreadStartedBy, WorkflowThreadStrip, activeStepId, agentConfigSectionToValues, agentCreatorToConfigSection, asTaskStatus, buildLibrarySkills, buildTaskRows, buildZipSkillImport, closeWorkflowLaunch, composePersona, createTaskColumns, defaultScopeRenderer, defaultTaskComposerValues, deriveAgentName, descendantIds, filterConversationRows, filterLibrarySkills, formatElapsed, goalProgress, groupAgentTasks, groupThreadActivity, humanizeSection, importMarkdownSkill, importSkillFile, importSkillFromUrl, indexTasks, inferType, isMainSkillFile, isOutOfBounds, isPlainTodo, isValidAgentName, labelRef, labelRefKey, matchRequiredLabels, moveTargets, nextCriterionId, openWorkflowLaunch, ownerExtId, parseSkillFrontmatter, prettifyKey, readSkillArchive, requiredLabelsOf, resolveScopeInputs, serializeSkill, skillSlug, stepWindow, stripPersonaPreamble, summarizeAgent, summarizeCapabilities, taskActivityHeadline, unresolvedLabelRefs, useWorkflowLaunchRequest, useWorkflowView, withLabelIds, workflowFromSkillMarkdown, workflowToSkillMarkdown } from './chunk-7OMLHP7B.js';
39
+ export { DEFAULT_DETAIL_PANEL_LABELS, DetailBody, DetailEmpty, DetailField, DetailFields, DetailLinkItem, DetailLinkList, DetailLoading, DetailPanel, DetailSection } from './chunk-OC2PD52M.js';
40
+ export { useWorkflowPreview } from './chunk-L3V2ANBD.js';
41
+ export { ActionStepBody, AgentAvatarField, AgentBar, AgentBarIconButton, AgentBarMenu, AgentBarNotes, AgentBarProbeAnswer, AgentBarQueuedNote, AgentBarStatus, AgentCard, AgentConnectInstructions, AgentCreateView, AgentCreatedView, AgentCreator, AgentEditView, AgentGallery, AgentMainView, AgentTypeSelector, ApprovalEvidence, AssigneeLine, 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_CAPABILITIES, DEFAULT_AGENT_CARD_LABELS, DEFAULT_AGENT_CREATOR_LABELS, DEFAULT_AGENT_GALLERY_LABELS, DEFAULT_AGENT_TEMPLATES, DEFAULT_AGENT_TYPES, 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_BUILDER_LABELS, DEFAULT_SKILL_EDIT_FORM_LABELS, DEFAULT_SKILL_GENERATE_FORM_LABELS, DEFAULT_SKILL_VIEW_TOGGLE_LABELS, DEFAULT_STEP_BAR_LABELS, DEFAULT_TASK_ACTIVITY_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_THREAD_STATE_LABELS, DEFAULT_TUPLE_ARRAY_FIELD_LABELS, DEFAULT_UPLOAD_TASK_ITEM_LABELS, DEFAULT_UPLOAD_TASK_LIST_LABELS, DEFAULT_WORKFLOW_RUNNER_LABELS, DEFAULT_WORKFLOW_RUN_STATUS_LABELS, DEFAULT_WORKFLOW_STEP_PARTS_LABELS, DEFAULT_WORKFLOW_THREAD_STRIP_LABELS, MAX_TASK_DEPTH, NewThreadDialog, PillSelect, RecurrenceBuilder, SKILL_FIELD_TYPE_LABELS, SKILL_MAIN_FILENAME, SKILL_SOURCE_LABELS, SKILL_TYPES, SKILL_TYPE_LABELS, STATUS_LABELS, STATUS_ORDER, STATUS_TONE, SendBackControl, SkillDetail, SkillDetailSection, SkillEditForm, SkillFilterChips, SkillGenerateForm, SkillLibraryDetail, SkillTile, SkillViewToggle, TASK_COLUMN_ORDER, TRIGGER_LABELS, TaskActivityDialog, TaskActivityTimeline, TaskComposer, TaskEmptyState, TaskMoveDialog, TaskOutputsCell, TaskPlan, TaskRunsDialog, TaskStatusPill, TaskTable, ThreadStatusLine, TupleArrayField, UploadTaskItem, UploadTaskList, WorkflowRunStatus, WorkflowRunner, WorkflowStepAction, WorkflowThreadStartedBy, WorkflowThreadStrip, activeStepId, agentConfigSectionToValues, agentCreatorToConfigSection, asTaskStatus, buildLibrarySkills, buildTaskRows, buildZipSkillImport, closeWorkflowLaunch, composePersona, createTaskColumns, defaultScopeRenderer, defaultTaskComposerValues, deriveAgentName, descendantIds, filterConversationRows, filterLibrarySkills, formatElapsed, goalProgress, groupAgentTasks, groupThreadActivity, humanizeSection, importMarkdownSkill, importSkillFile, importSkillFromUrl, indexTasks, inferType, isMainSkillFile, isOutOfBounds, isPlainTodo, isValidAgentName, labelRef, labelRefKey, matchRequiredLabels, moveTargets, nextCriterionId, openWorkflowLaunch, ownerExtId, parseSkillFrontmatter, prettifyKey, readSkillArchive, requiredLabelsOf, resolveScopeInputs, serializeSkill, skillSlug, stepWindow, stripPersonaPreamble, summarizeAgent, summarizeCapabilities, taskActivityHeadline, unresolvedLabelRefs, useWorkflowLaunchRequest, useWorkflowView, withLabelIds, workflowFromSkillMarkdown, workflowToSkillMarkdown } from './chunk-SWW3KBH2.js';
45
42
  export { AUTOMATION_EVENTS, AssistantEntity, DEFAULT_AGENT_STEPS_LABELS, DEFAULT_RECURRENCE, DEFAULT_SUBAGENT_ROSTER_LABELS, EntityChip, GoalCriteria, MODEL_NAME_ICONS, MODEL_TIER_ICON_MAP, MODEL_TIER_LABELS, STEP_ICON_MAP, StepDetail, StepNarration, StepOutcome, StepParams, StepRow, StepSummary, StepTrace, StepTraceSummary, SubAgentLane, SubStepGroup, SubagentRoster, TAG_ICONS, TOOL_ICON_MAP, TaskFlow, ThreadActivity, WEEKDAYS, buildRRule, compactThreadActivity, describeRRule, describeTrigger, fromPlanAssignee, fromPlanDocumentRef, fromPlanSteps, getAgentStepIcon, getAgentStepPresentation, getCurrentAgentStepPresentation, getModelIcon, isIncompleteSignal, isSupersededStop, latestMessageTime, layoutFromPlanSteps, linkedRunsFromActivity, notifiedLabel, parseRRule, stepAccent, toPlanAssignee, toPlanDocumentRef, toPlanSteps, unnotifiedMentions } from './chunk-OFF2PR4W.js';
46
43
  export { ChevronShape, ProgressChevron, ProgressChevronBar } from './chunk-LRPGXNMA.js';
47
44
  export { ANNOTATE, ANNOTATE_ID, BUILTIN_SKILLS, CHRONOLOGY, CHRONOLOGY_ID, CUSTOM_TASK, CUSTOM_TASK_ID, DASHBOARD_OPERATIONS, DASHBOARD_PINNED, DEEP_RESEARCH, DEEP_RESEARCH_ID, DERIVED_NAME_WORDS, EMPTY_NEW_THREAD, GENERATE_IMAGE, GENERATE_IMAGE_ID, IMAGE_ASPECT_AUTO, IMAGE_ASPECT_RATIOS, REMIND_TASK, REMIND_TASK_ID, SKILL_PACK_REQUEST_FIELD, SUMMARISE, SUMMARISE_ID, TIMELINE, TIMELINE_ID, TIMELINE_PROMPT, TRANSLATE, TRANSLATE_ID, TRANSLATE_LANGUAGES, WEB_WORKFLOWS, WORKFLOW_REGISTRY, authModeFor, composerToTaskQuery, composerToWorkRequest, composerToWorkflowRequest, composerToWorkflowUpdate, createsWork, deriveAnnotationName, deriveWorkflowName, firstWords, hasTaskFields, inputDocumentIds, isAgenticWorkflow, isSkillPackWorkflow, isoToLocalInput, localInputToIso, newThreadToRequest, recordWorkflowUse, renderWorkflowIcon, resetWorkflowUsage, skillPackWorkflows, sortByRecentUse, taskComposerToCreateRequest, taskComposerToUpdateRequest, taskNeedsAccess, taskToComposerValues, useWorkflowUsage, workflowTaskFields, workflowToComposerValues, workflowWhen } from './chunk-AXJLDI4M.js';
@@ -57,15 +54,15 @@ import './chunk-ZQ5YTC3P.js';
57
54
  import './chunk-RLWIUUQ5.js';
58
55
  import './chunk-L3BEWZWT.js';
59
56
  export { DEFAULT_FILTER_FIELDS, DEFAULT_FILTER_INPUT_LABELS, FilterInput } from './chunk-P4CH2ATT.js';
60
- import './chunk-7F5Z4K5W.js';
57
+ import './chunk-WNDIVNPT.js';
61
58
  import { ActionLink } from './chunk-U53SIJES.js';
62
59
  export { ActionLink } from './chunk-U53SIJES.js';
60
+ import './chunk-7F5Z4K5W.js';
63
61
  export { DEFAULT_SSO_LOGIN_BUTTON_LABELS, InstallInstructionsDialog, SsoLoginButton, isAuthRoutePath, normalizeAuthPath, preserveAuthReturnUrl, resolveAuthReturn, signInRedirect, takeAuthReturnUrl } from './chunk-3D54OKM2.js';
64
62
  export { ARBI_ROUTES, createRouteCodec, hrefFor, isDeepLinkPath, parseHref, pathRoute, readArrivalParams, renamedPage } from './chunk-N7X5O7B5.js';
65
63
  export { AccountRecoveryDialog, AuthAlert, AuthConsent, AuthDivider, AuthField, AuthFieldBadge, AuthFooterLinks, AuthHeading, AuthHero, AuthInput, AuthLayout, AuthLink, AuthNote, AuthOfflineBadge, AuthSubmitButton, AuthTabs, DEFAULT_ACCOUNT_RECOVERY_DIALOG_LABELS, DEFAULT_AUTH_CONSENT_LABELS, DEFAULT_AUTH_FOOTER_LINKS_LABELS, DEFAULT_AUTH_OFFLINE_BADGE_LABELS, DEFAULT_PASSWORD_RULES, DEFAULT_RECOVERY_KEY_DIALOG_LABELS, DEFAULT_REVEALABLE_PASSWORD_INPUT_LABELS, RecoveryKeyDialog, RevealablePasswordInput, consumeFragmentCredentials, createPasswordRules, parseAuthError, parseFragmentCredentials, promptSaveCredential, useFragmentCredentials } from './chunk-FVZ2CN4A.js';
66
64
  export { getInstallInstructions, isIosDevice } from './chunk-GIVU67LY.js';
67
65
  export { DEFAULT_PASSWORD_STRENGTH_INPUT_LABELS, PasswordStrengthInput } from './chunk-I6F6RBKV.js';
68
- import './chunk-WNDIVNPT.js';
69
66
  export { EntityTooltip, EntityTooltipHeader, EntityTooltipHint, EntityTooltipSection, EntityTooltipStats } from './chunk-3UIJLUXN.js';
70
67
  export { DEFAULT_DM_INVITE_CHIP_LABELS, DmInviteChip, DmThreadHeader } from './chunk-2S3LT5KE.js';
71
68
  export { ArbiHost, useHost } from './chunk-BH4MK2J5.js';
@@ -93,15 +90,18 @@ export { DEFAULT_STEP_DOCUMENT_LABELS, DEFAULT_STEP_KIND_LABELS, DEFAULT_STEP_RE
93
90
  export { DEFAULT_ASSIGNEE_WORDING, assigneeName, canAssign, composeStepPrompt, dependsOn, fillRunText, fillStepInputs, initialRunInputs, isPersonAction, isPersonStep, isRunFinished, isSteppedWorkflow, nextAction, orderSteps, reviewInstructions, runFields, runFieldsOf, runThreadTitle, sendBackTargets, splitDocRef, stepConfigProblems, stepDependencies, stepFields, stepLevels, stepPhase, stepStatesFromActivity, upstreamSteps, validateStep, validateWorkflowGraph, workflowSteps } from './chunk-XEZCSRFG.js';
94
91
  export { EMPTY_WORKFLOW_SCOPE, SKILL_PROMPT_FALLBACK_PLACEHOLDER, SKILL_PROMPT_LABEL, buildLaunch, composeWorkflowPrompt, defaultInputs, fieldToFrontmatter, inputsFromContext, isEmptyWorkflowScope, isWorkflowScope, mergeSkillWorkflows, promptFieldName, skillTitle, skillToWorkflow, validateInputs, workflowAccepts, workflowFromFrontmatter, workflowsAccepting, workflowsForHost } from './chunk-ECYOIRXR.js';
95
92
  export { TONES, isTone } from './chunk-XDDORJPA.js';
96
- export { BREAKPOINT_QUERIES, useIsNarrow, useIsPhone, useIsTouchScreen, useMediaQuery } from './chunk-SLSBJRWW.js';
97
93
  export { daysUntil, displayName, fmtDate, fmtDateTime, formatCount, formatCurrency, hrs, initials, pct, pluralize } from './chunk-X5YMI6A7.js';
94
+ export { BREAKPOINT_QUERIES, useIsNarrow, useIsPhone, useIsTouchScreen, useMediaQuery } from './chunk-SLSBJRWW.js';
98
95
  export { ConversationFilter, ProvisionalTranscriptLine, TranscriptLine, transcriptRuns } from './chunk-H773F7OR.js';
99
96
  import './chunk-NPLYHR2E.js';
97
+ export { buildDeepLinkPath, buildDeepLinkUrl, parseDeepLinkPath } from './chunk-SV65E4QW.js';
98
+ import './chunk-QAB4O4EE.js';
99
+ export { DEFAULT_PASSAGE_PILL_LABELS, PassagePill } from './chunk-3IT5LPLF.js';
100
+ export { DEFAULT_QUIET_MARK_LABELS, LabelMark, NoteMark, PassageMark, QuietLink, useCopyText } from './chunk-FACZSNRJ.js';
100
101
  import { useBlocksEnvironment } from './chunk-YUHSDOPW.js';
101
102
  export { createBlocksEnvironment, requestSettingsSection, useBlocksDialogs, useBlocksEnvironment, useRequestedSettingsSection } from './chunk-YUHSDOPW.js';
102
103
  export { closeAllDialogs, closeDialog, getDialog, openDialog, useDialogProps } from './chunk-WTTPZMZ7.js';
103
104
  import './chunk-TX2ZICS7.js';
104
- export { buildDeepLinkPath, buildDeepLinkUrl, parseDeepLinkPath } from './chunk-SV65E4QW.js';
105
105
  import './chunk-UP3GCNPM.js';
106
106
  import './chunk-VUNV25KB.js';
107
107
  import { cn, buttonVariants } from '@arbidocs/react/ui';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/OpenConversationButton.tsx","../src/nav/actions.ts","../src/nav/manifest.ts"],"names":["hrefFor"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBO,SAAS,sBAAA,CAAuB;AAAA,EACrC,cAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA,GAAQ,gBAAA;AAAA,EACR,SAAA;AAAA,EACA;AACF,CAAA,EAAgC;AAC9B,EAAA,MAAM,EAAE,OAAA,EAAAA,QAAAA,EAAS,gBAAA,KAAqB,oBAAA,EAAqB;AAC3D,EAAA,IAAI,CAAC,gBAAgB,OAAO,IAAA;AAC5B,EAAA,uBACE,IAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAMA,SAAQ,EAAE,IAAA,EAAM,gBAAgB,cAAA,EAAgB,WAAA,EAAa,WAAW,CAAA;AAAA,MAC9E,QAAA,EAAU,MACR,gBAAA,CAAiB,cAAA,EAAgB;AAAA,QAC/B,GAAI,SAAA,IAAa,EAAE,SAAA,EAAU;AAAA,QAC7B,GAAI,WAAA,IAAe,EAAE,WAAA;AAAY,OAClC,CAAA;AAAA,MAEH,SAAA,EAAW,EAAA,CAAG,cAAA,CAAe,EAAE,OAAA,EAAS,WAAW,IAAA,EAAM,IAAA,EAAM,CAAA,EAAG,SAAS,CAAA;AAAA,MAC3E,aAAA,EAAa,MAAA;AAAA,MAEb,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,UAAA,EAAW,aAAA,EAAW,IAAA,EAAC,CAAA;AAAA,QAChD;AAAA;AAAA;AAAA,GACH;AAEJ;;;ACrCO,SAAS,aAAA,CACd,OAAA,EACA,OAAA,GAAuE,EAAC,EACxE;AACA,EAAA,MAAM,MAAA,GAAS,IAAI,GAAA,CAAY,OAAA,CAAQ,SAAS,CAAA;AAChD,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,OAAA,EAAU,MAAA,CAAO,MAAA,CAAO,OAAO,CAAA,CAAe,GAAA,CAAI,CAAC,EAAE,EAAA,EAAI,KAAA,EAAO,QAAA,EAAS,MAAO;AAAA,MAC9E,KAAA,EAAO,EAAA;AAAA,MACP,KAAA;AAAA,MACA;AAAA,KACF,CAAE,CAAA;AAAA,IACF,WAAW,KAAA,EAA4B;AACrC,MAAA,OAAO,MAAA,CAAO,IAAI,KAAK,CAAA,IAAK,OAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,OAAA,EAAS,KAAK,CAAA;AAAA,IACjF,CAAA;AAAA,IACA,IAAI,EAAA,EAAc;AAChB,MAAA,MAAM,MAAA,GAAS,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,SAAS,EAAE,CAAA,GAAI,OAAA,CAAQ,EAAE,CAAA,GAAI,MAAA;AACjF,MAAA,IAAI,MAAA,SAAe,GAAA,EAAI;AAAA,WAClB,OAAA,CAAQ,YAAY,EAAE,CAAA;AAAA,IAC7B;AAAA,GACF;AACF;ACzBO,SAAS,iBAAiB,QAAA,EAAoC;AACnE,EAAA,MAAM,QAAQ,QAAA,CAAS,OAAA,CAAQ,CAAC,OAAA,KAAY,QAAQ,KAAK,CAAA;AACzD,EAAA,OAAO;AAAA,IACL,QAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAQ,OAAA,EAIM;AACZ,MAAA,OAAO,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,QAC1B,IAAI,IAAA,CAAK,EAAA;AAAA,QACT,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,MAAM,aAAA,CAAc,IAAA,CAAK,MAAM,EAAE,SAAA,EAAW,UAAU,CAAA;AAAA,QACtD,GAAG,OAAA,CAAQ,SAAA,GAAY,IAAI,CAAA;AAAA,QAC3B,UAAU,MAAM;AACd,UAAA,OAAA,CAAQ,cAAA,IAAiB;AACzB,UAAA,OAAA,CAAQ,WAAW,IAAI,CAAA;AAAA,QACzB;AAAA,OACF,CAAE,CAAA;AAAA,IACJ;AAAA,GACF;AACF","file":"index.js","sourcesContent":["import { MessagesSquare } from 'lucide-react'\nimport { buttonVariants, cn } from '@arbidocs/react/ui'\nimport { useBlocksEnvironment } from '../provider/environment'\nimport { ActionLink } from './ActionLink'\n\nexport interface OpenConversationButtonProps {\n /** The conversation behind an AI result; none: nothing is rendered. */\n conversationId: string | null | undefined\n /** The workspace it is in, for its link. */\n workspaceId?: string | null\n /** A message to scroll to. */\n messageId?: string\n /** Default \"Open in thread\". */\n label?: string\n className?: string\n testId?: string\n}\n\n/**\n * \"Open in thread\": the full conversation behind an AI result (a brief, a translation, a draft),\n * to check its sources and follow up. A real link where the host gives one (`hrefFor`), opened with\n * `openConversation`.\n */\nexport function OpenConversationButton({\n conversationId,\n workspaceId,\n messageId,\n label = 'Open in thread',\n className,\n testId,\n}: OpenConversationButtonProps) {\n const { hrefFor, openConversation } = useBlocksEnvironment()\n if (!conversationId) return null\n return (\n <ActionLink\n href={hrefFor({ kind: 'conversation', conversationId, workspaceId, messageId })}\n onSelect={() =>\n openConversation(conversationId, {\n ...(messageId && { messageId }),\n ...(workspaceId && { workspaceId }),\n })\n }\n className={cn(buttonVariants({ variant: 'outline', size: 'sm' }), className)}\n data-testid={testId}\n >\n <MessagesSquare className=\"size-3.5\" aria-hidden />\n {label}\n </ActionLink>\n )\n}\n","/** A parameter-light action, supplied by a host and usable outside React. */\nexport interface ActionDefinition<Id extends string = string> {\n id: Id\n label: string\n category: string\n /** An icon name, so the catalogue stays independent of a renderer. */\n icon: string\n keywords?: readonly string[]\n run: () => void\n}\n\n/** One catalogue for picker options, tip CTAs, palettes and validated remote dispatch. */\nexport function defineActions<Id extends string, Action extends ActionDefinition<Id>>(\n actions: Partial<Record<Id, Action>>,\n options: { scopedIds?: readonly Id[]; onUnknown?: (id: Id) => void } = {}\n) {\n const scoped = new Set<string>(options.scopedIds)\n return {\n actions,\n options: (Object.values(actions) as Action[]).map(({ id, label, category }) => ({\n value: id,\n label,\n category,\n })),\n isActionId(value: string): value is Id {\n return scoped.has(value) || Object.prototype.hasOwnProperty.call(actions, value)\n },\n run(id: Id): void {\n const action = Object.prototype.hasOwnProperty.call(actions, id) ? actions[id] : undefined\n if (action) action.run()\n else options.onUnknown?.(id)\n },\n }\n}\n","import { createElement } from 'react'\nimport type { AppNavItem, AppNavSection } from './types'\nimport type { NavItem } from '../shell/types'\n\n/**\n * A host's destinations, once: the items are also the command palette's nav contract. Resolve\n * their state and handlers for ShellSidebar or MobileTabBar without copying the catalogue.\n */\nexport function defineNavigation(sections: readonly AppNavSection[]) {\n const items = sections.flatMap((section) => section.items)\n return {\n sections,\n items,\n resolve(options: {\n beforeNavigate?: () => void\n onNavigate: (item: AppNavItem) => void\n itemProps?: (item: AppNavItem) => Partial<Omit<NavItem, 'id' | 'label' | 'onSelect'>>\n }): NavItem[] {\n return items.map((item) => ({\n id: item.id,\n label: item.label,\n icon: createElement(item.icon, { className: 'size-5' }),\n ...options.itemProps?.(item),\n onSelect: () => {\n options.beforeNavigate?.()\n options.onNavigate(item)\n },\n }))\n },\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/components/OpenConversationButton.tsx","../src/nav/actions.ts","../src/nav/manifest.ts"],"names":["hrefFor"],"mappings":"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","file":"index.js","sourcesContent":["import { MessagesSquare } from 'lucide-react'\nimport { buttonVariants, cn } from '@arbidocs/react/ui'\nimport { useBlocksEnvironment } from '../provider/environment'\nimport { ActionLink } from './ActionLink'\n\nexport interface OpenConversationButtonProps {\n /** The conversation behind an AI result; none: nothing is rendered. */\n conversationId: string | null | undefined\n /** The workspace it is in, for its link. */\n workspaceId?: string | null\n /** A message to scroll to. */\n messageId?: string\n /** Default \"Open in thread\". */\n label?: string\n className?: string\n testId?: string\n}\n\n/**\n * \"Open in thread\": the full conversation behind an AI result (a brief, a translation, a draft),\n * to check its sources and follow up. A real link where the host gives one (`hrefFor`), opened with\n * `openConversation`.\n */\nexport function OpenConversationButton({\n conversationId,\n workspaceId,\n messageId,\n label = 'Open in thread',\n className,\n testId,\n}: OpenConversationButtonProps) {\n const { hrefFor, openConversation } = useBlocksEnvironment()\n if (!conversationId) return null\n return (\n <ActionLink\n href={hrefFor({ kind: 'conversation', conversationId, workspaceId, messageId })}\n onSelect={() =>\n openConversation(conversationId, {\n ...(messageId && { messageId }),\n ...(workspaceId && { workspaceId }),\n })\n }\n className={cn(buttonVariants({ variant: 'outline', size: 'sm' }), className)}\n data-testid={testId}\n >\n <MessagesSquare className=\"size-3.5\" aria-hidden />\n {label}\n </ActionLink>\n )\n}\n","import type { ArbiFeature } from '@arbidocs/react'\n\n/** Who is asking, for an action's `available` (the same gates the primary UI applies). */\nexport interface ActionContext {\n /** The open workspace; `null` outside one. */\n workspaceId: string | null\n /** The viewer is a member of the open workspace. */\n isMember: boolean\n /** The viewer's role there (`owner`, `collaborator`, `guest`); `null` when not a member. */\n role: string | null\n /** A temporary-access (external) account. */\n isTemporaryAccess: boolean\n /** Whether the account may create projects; `undefined` until known. */\n canCreateProjects: boolean | undefined\n isFeatureOn: (feature: ArbiFeature) => boolean\n}\n\n/** A parameter-light action, supplied by a host and usable outside React. */\nexport interface ActionDefinition<Id extends string = string> {\n id: Id\n label: string\n category: string\n /**\n * An icon name, so the catalogue stays independent of a renderer. The palette draws the lucide\n * icons its catalogue names (`connection/command/icons.ts`); any other name, a generic glyph.\n */\n icon: string\n keywords?: readonly string[]\n /** Offered (in the command palette) only when it says so. Dispatch is not gated. */\n available?: (context: ActionContext) => boolean\n /** `false`: dispatch only, never listed (a second name for another row's effect). */\n listed?: boolean\n run: () => void\n}\n\n/** One catalogue for picker options, tip CTAs, palettes and validated remote dispatch. */\nexport function defineActions<Id extends string, Action extends ActionDefinition<Id>>(\n actions: Partial<Record<Id, Action>>,\n options: { scopedIds?: readonly Id[]; onUnknown?: (id: Id) => void } = {}\n) {\n const scoped = new Set<string>(options.scopedIds)\n return {\n actions,\n options: (Object.values(actions) as Action[]).map(({ id, label, category }) => ({\n value: id,\n label,\n category,\n })),\n isActionId(value: string): value is Id {\n return scoped.has(value) || Object.prototype.hasOwnProperty.call(actions, value)\n },\n run(id: Id): void {\n const action = Object.prototype.hasOwnProperty.call(actions, id) ? actions[id] : undefined\n if (action) action.run()\n else options.onUnknown?.(id)\n },\n }\n}\n","import { createElement } from 'react'\nimport type { AppNavItem, AppNavSection } from './types'\nimport type { NavItem } from '../shell/types'\n\n/**\n * A host's destinations, once: the items are also the command palette's nav contract. Resolve\n * their state and handlers for ShellSidebar or MobileTabBar without copying the catalogue.\n */\nexport function defineNavigation(sections: readonly AppNavSection[]) {\n const items = sections.flatMap((section) => section.items)\n return {\n sections,\n items,\n resolve(options: {\n beforeNavigate?: () => void\n onNavigate: (item: AppNavItem) => void\n itemProps?: (item: AppNavItem) => Partial<Omit<NavItem, 'id' | 'label' | 'onSelect'>>\n }): NavItem[] {\n return items.map((item) => ({\n id: item.id,\n label: item.label,\n icon: createElement(item.icon, { className: 'size-5' }),\n ...options.itemProps?.(item),\n onSelect: () => {\n options.beforeNavigate?.()\n options.onNavigate(item)\n },\n }))\n },\n }\n}\n"]}
@@ -1,11 +1,33 @@
1
+ import type { ArbiFeature } from '@arbidocs/react';
2
+ /** Who is asking, for an action's `available` (the same gates the primary UI applies). */
3
+ export interface ActionContext {
4
+ /** The open workspace; `null` outside one. */
5
+ workspaceId: string | null;
6
+ /** The viewer is a member of the open workspace. */
7
+ isMember: boolean;
8
+ /** The viewer's role there (`owner`, `collaborator`, `guest`); `null` when not a member. */
9
+ role: string | null;
10
+ /** A temporary-access (external) account. */
11
+ isTemporaryAccess: boolean;
12
+ /** Whether the account may create projects; `undefined` until known. */
13
+ canCreateProjects: boolean | undefined;
14
+ isFeatureOn: (feature: ArbiFeature) => boolean;
15
+ }
1
16
  /** A parameter-light action, supplied by a host and usable outside React. */
2
17
  export interface ActionDefinition<Id extends string = string> {
3
18
  id: Id;
4
19
  label: string;
5
20
  category: string;
6
- /** An icon name, so the catalogue stays independent of a renderer. */
21
+ /**
22
+ * An icon name, so the catalogue stays independent of a renderer. The palette draws the lucide
23
+ * icons its catalogue names (`connection/command/icons.ts`); any other name, a generic glyph.
24
+ */
7
25
  icon: string;
8
26
  keywords?: readonly string[];
27
+ /** Offered (in the command palette) only when it says so. Dispatch is not gated. */
28
+ available?: (context: ActionContext) => boolean;
29
+ /** `false`: dispatch only, never listed (a second name for another row's effect). */
30
+ listed?: boolean;
9
31
  run: () => void;
10
32
  }
11
33
  /** One catalogue for picker options, tip CTAs, palettes and validated remote dispatch. */
@@ -10,8 +10,8 @@ require('../chunk-OEJQFPWO.cjs');
10
10
  var chunkOYXWQTHF_cjs = require('../chunk-OYXWQTHF.cjs');
11
11
  require('../chunk-II2OEXHW.cjs');
12
12
  var chunk4PA6VCCR_cjs = require('../chunk-4PA6VCCR.cjs');
13
- require('../chunk-M74FWYNL.cjs');
14
13
  var chunkVZOOGA47_cjs = require('../chunk-VZOOGA47.cjs');
14
+ require('../chunk-M74FWYNL.cjs');
15
15
  require('../chunk-SJSGSHIT.cjs');
16
16
  require('../chunk-UDSHVNU3.cjs');
17
17
  require('../chunk-IPSHAMO2.cjs');
@@ -8,8 +8,8 @@ import '../chunk-VIIBJBTX.js';
8
8
  export { MultiSelect } from '../chunk-I2W77S37.js';
9
9
  import '../chunk-53EY2DOZ.js';
10
10
  export { DEFAULT_TRI_STATE_FILTER_MENU_LABELS, TriStateFilterMenu } from '../chunk-ZQ5YTC3P.js';
11
- import '../chunk-I6F6RBKV.js';
12
11
  export { DEFAULT_DOCUMENT_PICKER_LABELS, DocumentPicker } from '../chunk-WNDIVNPT.js';
12
+ import '../chunk-I6F6RBKV.js';
13
13
  import '../chunk-USTSEENR.js';
14
14
  import '../chunk-XDDORJPA.js';
15
15
  import '../chunk-X5YMI6A7.js';
@@ -29,8 +29,8 @@ require('../chunk-FDNIK5YS.cjs');
29
29
  require('../chunk-DX3Z2COD.cjs');
30
30
  require('../chunk-II2OEXHW.cjs');
31
31
  require('../chunk-AHDJXIUB.cjs');
32
- require('../chunk-TTPJ2G3G.cjs');
33
32
  require('../chunk-VZOOGA47.cjs');
33
+ require('../chunk-TTPJ2G3G.cjs');
34
34
  require('../chunk-XJM3RDLO.cjs');
35
35
  var chunk7UAAMA5U_cjs = require('../chunk-7UAAMA5U.cjs');
36
36
  require('../chunk-LUO46ELJ.cjs');
@@ -28,8 +28,8 @@ import '../chunk-J3E5CSSC.js';
28
28
  import '../chunk-HZE5MHQO.js';
29
29
  import '../chunk-53EY2DOZ.js';
30
30
  import '../chunk-RLWIUUQ5.js';
31
- import '../chunk-U53SIJES.js';
32
31
  import '../chunk-WNDIVNPT.js';
32
+ import '../chunk-U53SIJES.js';
33
33
  import '../chunk-B7OTZW7D.js';
34
34
  import { useConnection } from '../chunk-CEUJCUTJ.js';
35
35
  import '../chunk-BH4MK2J5.js';