@arbidocs/blocks 0.4.143 → 0.4.144
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/index.cjs +264 -264
- package/dist/agents/index.js +7 -7
- package/dist/{chunk-IJST4EBM.js → chunk-2FJMTZNJ.js} +8 -8
- package/dist/{chunk-IJST4EBM.js.map → chunk-2FJMTZNJ.js.map} +1 -1
- package/dist/{chunk-FJETR2AS.js → chunk-33ZOUJXA.js} +4 -4
- package/dist/{chunk-FJETR2AS.js.map → chunk-33ZOUJXA.js.map} +1 -1
- package/dist/{chunk-IXWJGOM2.js → chunk-3RJN2VTL.js} +3 -3
- package/dist/{chunk-IXWJGOM2.js.map → chunk-3RJN2VTL.js.map} +1 -1
- package/dist/{chunk-YKQ2DPIP.js → chunk-444XKG46.js} +3 -3
- package/dist/{chunk-YKQ2DPIP.js.map → chunk-444XKG46.js.map} +1 -1
- package/dist/{chunk-XVUOMWMD.cjs → chunk-5FTIHRZH.cjs} +4 -4
- package/dist/{chunk-XVUOMWMD.cjs.map → chunk-5FTIHRZH.cjs.map} +1 -1
- package/dist/{chunk-ECW2R2KF.cjs → chunk-65THHQVB.cjs} +27 -27
- package/dist/{chunk-ECW2R2KF.cjs.map → chunk-65THHQVB.cjs.map} +1 -1
- package/dist/{chunk-Y4ATWQGV.js → chunk-7NGAWGA3.js} +3 -3
- package/dist/{chunk-Y4ATWQGV.js.map → chunk-7NGAWGA3.js.map} +1 -1
- package/dist/{chunk-T5B7FM7S.js → chunk-A6J2IBUG.js} +4 -4
- package/dist/{chunk-T5B7FM7S.js.map → chunk-A6J2IBUG.js.map} +1 -1
- package/dist/{chunk-RB7GX2VT.cjs → chunk-ABUO6PIQ.cjs} +12 -12
- package/dist/{chunk-RB7GX2VT.cjs.map → chunk-ABUO6PIQ.cjs.map} +1 -1
- package/dist/{chunk-NRFAWUVD.js → chunk-BPBSSMRB.js} +3 -3
- package/dist/{chunk-NRFAWUVD.js.map → chunk-BPBSSMRB.js.map} +1 -1
- package/dist/{chunk-HAOKT4LC.cjs → chunk-BUWBXJ2N.cjs} +5 -5
- package/dist/{chunk-HAOKT4LC.cjs.map → chunk-BUWBXJ2N.cjs.map} +1 -1
- package/dist/{chunk-KPZZ5FHE.cjs → chunk-C4WSHRR6.cjs} +12 -32
- package/dist/chunk-C4WSHRR6.cjs.map +1 -0
- package/dist/{chunk-J5CWKFSC.js → chunk-CYNF5PZI.js} +3 -3
- package/dist/{chunk-J5CWKFSC.js.map → chunk-CYNF5PZI.js.map} +1 -1
- package/dist/{chunk-VTTZZ4FN.js → chunk-DLBUFHLY.js} +74 -4
- package/dist/chunk-DLBUFHLY.js.map +1 -0
- package/dist/{chunk-YSHIC4NJ.cjs → chunk-HEMU73OP.cjs} +4 -4
- package/dist/{chunk-YSHIC4NJ.cjs.map → chunk-HEMU73OP.cjs.map} +1 -1
- package/dist/{chunk-UTTTJSQU.cjs → chunk-HFGXA5CL.cjs} +4 -4
- package/dist/{chunk-UTTTJSQU.cjs.map → chunk-HFGXA5CL.cjs.map} +1 -1
- package/dist/{chunk-H4D7WKDY.js → chunk-I7WG3JRD.js} +3 -3
- package/dist/{chunk-H4D7WKDY.js.map → chunk-I7WG3JRD.js.map} +1 -1
- package/dist/{chunk-SZOFGU7W.js → chunk-LYUO3E6V.js} +3 -3
- package/dist/{chunk-SZOFGU7W.js.map → chunk-LYUO3E6V.js.map} +1 -1
- package/dist/{chunk-TC3RQNEX.cjs → chunk-MJCCBMM5.cjs} +80 -6
- package/dist/chunk-MJCCBMM5.cjs.map +1 -0
- package/dist/{chunk-LPYEUD2D.cjs → chunk-O2ODDTMA.cjs} +9 -9
- package/dist/{chunk-LPYEUD2D.cjs.map → chunk-O2ODDTMA.cjs.map} +1 -1
- package/dist/{chunk-5YHEHEJT.js → chunk-ON3TKY5Y.js} +4 -242
- package/dist/chunk-ON3TKY5Y.js.map +1 -0
- package/dist/{chunk-U73KPFYH.cjs → chunk-QIMVTGKS.cjs} +2 -255
- package/dist/chunk-QIMVTGKS.cjs.map +1 -0
- package/dist/{chunk-DTROMMDX.cjs → chunk-R26BK7YL.cjs} +4 -4
- package/dist/{chunk-DTROMMDX.cjs.map → chunk-R26BK7YL.cjs.map} +1 -1
- package/dist/{chunk-U6YVZDOV.cjs → chunk-RA3ZJ45L.cjs} +13 -13
- package/dist/{chunk-U6YVZDOV.cjs.map → chunk-RA3ZJ45L.cjs.map} +1 -1
- package/dist/{chunk-EF4ZLKRM.js → chunk-RI6DZA5X.js} +3 -3
- package/dist/{chunk-EF4ZLKRM.js.map → chunk-RI6DZA5X.js.map} +1 -1
- package/dist/{chunk-KMZWKSKO.cjs → chunk-TP6PLDNM.cjs} +8 -8
- package/dist/{chunk-KMZWKSKO.cjs.map → chunk-TP6PLDNM.cjs.map} +1 -1
- package/dist/{chunk-EYKISBDO.cjs → chunk-WS5EX7DN.cjs} +5 -5
- package/dist/{chunk-EYKISBDO.cjs.map → chunk-WS5EX7DN.cjs.map} +1 -1
- package/dist/{chunk-C44TDH54.js → chunk-X3TGXEFS.js} +6 -6
- package/dist/{chunk-C44TDH54.js.map → chunk-X3TGXEFS.js.map} +1 -1
- package/dist/{chunk-O2GW5IY6.cjs → chunk-XGZX22ET.cjs} +38 -38
- package/dist/{chunk-O2GW5IY6.cjs.map → chunk-XGZX22ET.cjs.map} +1 -1
- package/dist/{chunk-OVR3XMYL.js → chunk-Y3KA6X7B.js} +4 -4
- package/dist/{chunk-OVR3XMYL.js.map → chunk-Y3KA6X7B.js.map} +1 -1
- package/dist/{chunk-COCGRJLA.cjs → chunk-YFY3TQ6Q.cjs} +7 -7
- package/dist/{chunk-COCGRJLA.cjs.map → chunk-YFY3TQ6Q.cjs.map} +1 -1
- package/dist/{chunk-TBEVGWY3.js → chunk-YNIBUKV5.js} +14 -32
- package/dist/chunk-YNIBUKV5.js.map +1 -0
- package/dist/citations/index.cjs +12 -12
- package/dist/citations/index.js +3 -3
- package/dist/connect/docx.cjs +10 -10
- package/dist/connect/docx.js +7 -7
- package/dist/connect/index.cjs +322 -709
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.d.ts +0 -1
- package/dist/connect/index.js +214 -588
- package/dist/connect/index.js.map +1 -1
- package/dist/connection/ConnectedSettings.d.ts +2 -3
- package/dist/facts/index.cjs +3 -3
- package/dist/facts/index.js +2 -2
- package/dist/files/index.cjs +3 -3
- package/dist/files/index.js +2 -2
- package/dist/home/index.cjs +20 -20
- package/dist/home/index.js +4 -4
- package/dist/index.cjs +440 -449
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +16 -17
- package/dist/index.js.map +1 -1
- package/dist/provider/BlocksProvider.d.ts +1 -5
- package/dist/retrieval/index.cjs +4 -4
- package/dist/retrieval/index.js +2 -2
- package/dist/settings/ServerConnectionControls.d.ts +0 -16
- package/dist/settings/index.cjs +241 -178
- package/dist/settings/index.cjs.map +1 -1
- package/dist/settings/index.d.ts +1 -3
- package/dist/settings/index.js +198 -86
- package/dist/settings/index.js.map +1 -1
- package/dist/shell/index.cjs +44 -44
- package/dist/shell/index.js +3 -3
- package/dist/site/index.cjs +73 -74
- package/dist/site/index.js +2 -3
- package/dist/studio/index.cjs +74 -75
- package/dist/studio/index.cjs.map +1 -1
- package/dist/studio/index.js +5 -6
- package/dist/studio/index.js.map +1 -1
- package/dist/workflow-canvas/index.cjs +21 -21
- package/dist/workflow-canvas/index.js +7 -7
- package/dist/workspaces/index.cjs +3 -3
- package/dist/workspaces/index.js +2 -2
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +4 -4
- package/dist/chunk-5YHEHEJT.js.map +0 -1
- package/dist/chunk-KPZZ5FHE.cjs.map +0 -1
- package/dist/chunk-NHZK64TQ.js +0 -75
- package/dist/chunk-NHZK64TQ.js.map +0 -1
- package/dist/chunk-NWNVWO6L.cjs +0 -80
- package/dist/chunk-NWNVWO6L.cjs.map +0 -1
- package/dist/chunk-TBEVGWY3.js.map +0 -1
- package/dist/chunk-TC3RQNEX.cjs.map +0 -1
- package/dist/chunk-U73KPFYH.cjs.map +0 -1
- package/dist/chunk-VTTZZ4FN.js.map +0 -1
- package/dist/connection/settings-page/ConnectedAccountSettings.d.ts +0 -35
- package/dist/connection/settings-page/ConnectedMailSettings.d.ts +0 -13
- package/dist/connection/settings-page/ConnectedPremiumModels.d.ts +0 -1
- package/dist/connection/settings-page/ConnectedPrivacySettings.d.ts +0 -12
- package/dist/connection/settings-page/ConnectedSettingsPage.d.ts +0 -29
- package/dist/connection/settings-page/SessionStatusIcon.d.ts +0 -7
- package/dist/connection/settings-page/index.d.ts +0 -6
- package/dist/provider/settings-section.d.ts +0 -9
- package/dist/settings/AppearanceSettings.d.ts +0 -18
- package/dist/settings/SettingsPage.d.ts +0 -31
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/citations/QuietMarks.tsx"],"names":["useBlocksEnvironment","useCallback","jsx","MarkMenu","cn"],"mappings":"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","file":"chunk-XVUOMWMD.cjs","sourcesContent":["import { useCallback, type ReactNode } from 'react'\nimport { MarkMenu, cn, type MarkMenuItem } from '@arbidocs/react/ui'\nimport { useBlocksEnvironment } from '../provider/BlocksProvider'\n\n/**\n * Quiet inline marks: links, bookmarks, passage references, label and note marks.\n *\n * Each is typographically distinct TEXT (no pill, no button chrome, no icon in the flow) and owns\n * exactly one contextual menu through the shared `MarkMenu`. Domain-neutral: hosts supply the\n * handlers that make a row mean something.\n */\n\n/** Every fixed string of the quiet marks. */\nexport interface QuietMarkLabels {\n openLink: string\n copyLink: string\n linkCopied: string\n copyFailed: string\n jumpHere: string\n copyPlaceLink: string\n openDocument: string\n linkMenu: string\n bookmarkMenu: string\n}\n\nexport const DEFAULT_QUIET_MARK_LABELS: QuietMarkLabels = {\n openLink: 'Open link',\n copyLink: 'Copy link',\n linkCopied: 'Link copied',\n copyFailed: 'Could not copy',\n jumpHere: 'Jump to here',\n copyPlaceLink: 'Copy link to this place',\n openDocument: 'Open document',\n linkMenu: 'Link actions',\n bookmarkMenu: 'Bookmark actions',\n}\n\n/**\n * Copy text to the clipboard and say so (or say it failed) through the host's `notify`. Resolves\n * whether it was copied.\n */\nexport function useCopyText(labels?: Partial<Pick<QuietMarkLabels, 'linkCopied' | 'copyFailed'>>) {\n const { notify } = useBlocksEnvironment()\n const done = labels?.linkCopied ?? DEFAULT_QUIET_MARK_LABELS.linkCopied\n const failed = labels?.copyFailed ?? DEFAULT_QUIET_MARK_LABELS.copyFailed\n return useCallback(\n async (text: string, message?: string): Promise<boolean> => {\n try {\n await navigator.clipboard.writeText(text)\n notify(message ?? done, 'success')\n return true\n } catch {\n notify(failed, 'error')\n return false\n }\n },\n [notify, done, failed]\n )\n}\n\nexport type QuietLinkKind = 'external' | 'anchor' | 'document'\n\nexport interface QuietLinkProps {\n href?: string\n /** `external` (default) opens elsewhere, `anchor` jumps within the page, `document` is an in-app target. */\n kind?: QuietLinkKind\n /** The primary action. Defaults: external opens a new tab, anchor scrolls to the id. */\n onOpen?: () => void\n /** Absolute URL a copied anchor should carry; defaults to the current page plus the hash. */\n placeLink?: string\n labels?: Partial<QuietMarkLabels>\n className?: string\n testId?: string\n children: ReactNode\n}\n\nconst LINK_STYLE: Record<QuietLinkKind, string> = {\n external:\n 'text-primary underline decoration-primary/40 decoration-1 underline-offset-[3px] transition-colors hover:decoration-primary focus-visible:decoration-primary',\n document:\n 'text-primary underline decoration-primary/40 decoration-1 underline-offset-[3px] transition-colors hover:decoration-primary focus-visible:decoration-primary',\n // A bookmark is nearly invisible until hovered or focused.\n anchor:\n 'text-inherit underline decoration-dotted decoration-1 decoration-foreground/25 underline-offset-[3px] transition-colors hover:decoration-foreground/70 focus-visible:decoration-foreground/70',\n}\n\nfunction scrollToHash(href: string | undefined) {\n const id = href?.startsWith('#') ? decodeURIComponent(href.slice(1)) : ''\n document.getElementById(id)?.scrollIntoView({ behavior: 'smooth', block: 'start' })\n}\n\n/** A hyperlink, bookmark or document link as quiet text with one menu (open / copy). */\nexport function QuietLink({\n href,\n kind = 'external',\n onOpen,\n placeLink,\n labels,\n className,\n testId,\n children,\n}: QuietLinkProps) {\n const l = { ...DEFAULT_QUIET_MARK_LABELS, ...labels }\n const copy = useCopyText(l)\n\n const open =\n onOpen ??\n (kind === 'anchor'\n ? () => scrollToHash(href)\n : () => {\n if (href) window.open(href, '_blank', 'noopener,noreferrer')\n })\n const copyTarget =\n kind === 'anchor'\n ? (placeLink ?? `${window.location.href.split('#')[0]}${href ?? ''}`)\n : (placeLink ?? href ?? '')\n\n const items: MarkMenuItem[] = [\n {\n id: 'open',\n label: kind === 'anchor' ? l.jumpHere : kind === 'document' ? l.openDocument : l.openLink,\n primary: true,\n onSelect: open,\n testId: 'mark-open',\n },\n {\n id: 'copy',\n label: kind === 'anchor' ? l.copyPlaceLink : l.copyLink,\n onSelect: () => void copy(copyTarget),\n testId: 'mark-copy',\n },\n ]\n\n return (\n <MarkMenu\n as=\"a\"\n href={href}\n items={items}\n menuLabel={kind === 'anchor' ? l.bookmarkMenu : l.linkMenu}\n preview={\n kind === 'external' && href ? (\n <span className=\"block break-all text-xs text-muted-foreground\">{href}</span>\n ) : undefined\n }\n className={cn(LINK_STYLE[kind], 'cursor-pointer', className)}\n testId={testId}\n data-mark-kind={kind}\n >\n {children}\n </MarkMenu>\n )\n}\n\nexport interface PassageMarkProps {\n /** The reference as plain text, e.g. \"¶4\" or \"¶4–9 · p.1\". */\n label: string\n menuLabel: string\n /** Menu rows: copy, link, label, open in navigator. */\n items: MarkMenuItem[]\n className?: string\n testId?: string\n}\n\n/** A passage's reference as a faint text mark in the margin; its menu carries the passage actions. */\nexport function PassageMark({ label, menuLabel, items, className, testId }: PassageMarkProps) {\n return (\n <MarkMenu\n items={items}\n menuLabel={menuLabel}\n testId={testId}\n data-mark-kind=\"passage\"\n className={cn(\n 'touch-hit cursor-pointer select-none rounded-sm px-1 text-xs tabular-nums text-muted-foreground/80 transition-colors hover:text-foreground focus-visible:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring pointer-coarse:px-2 pointer-coarse:py-2',\n className\n )}\n >\n {label}\n </MarkMenu>\n )\n}\n\nexport interface LabelMarkProps {\n /** Colours of every label marking the passage. */\n colors: string[]\n menuLabel: string\n /** Names of the labels, shown in the menu. */\n preview?: ReactNode\n items: MarkMenuItem[]\n /** Accessible name of the stripes. */\n name: string\n className?: string\n testId?: string\n}\n\n/** The labels on a passage as thin margin stripes (not a chip); the menu shows / removes them. */\nexport function LabelMark({\n colors,\n menuLabel,\n preview,\n items,\n name,\n className,\n testId,\n}: LabelMarkProps) {\n return (\n <MarkMenu\n items={items}\n preview={preview}\n menuLabel={menuLabel}\n testId={testId}\n aria-label={name}\n data-mark-kind=\"label\"\n className={cn(\n 'flex cursor-pointer flex-col gap-1 rounded-full focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:px-2 pointer-coarse:py-1',\n className\n )}\n >\n {colors.slice(0, 4).map((c, i) => (\n <span\n key={i}\n aria-hidden=\"true\"\n className=\"h-2.5 w-1 rounded-full\"\n style={{ backgroundColor: c }}\n />\n ))}\n </MarkMenu>\n )\n}\n\nexport interface NoteMarkProps {\n /** Short label, e.g. the passage range this run covers (\"¶4–9\"). */\n label: string\n /** Full note text, shown as the menu preview so the mark is self-explaining. */\n title?: string\n menuLabel?: string\n /** Rows such as \"Show note\" and \"Edit\". With none, the menu is a read-only preview. */\n items?: MarkMenuItem[]\n className?: string\n testId?: string\n}\n\n/**\n * Marks a passage as cited by a Note: small text with a soft yellow underline, drawn once on\n * each CONTIGUOUS run of cited passages (a run is one citation).\n */\nexport function NoteMark({\n label,\n title,\n menuLabel = 'Note actions',\n items = [],\n className,\n testId,\n}: NoteMarkProps) {\n return (\n <MarkMenu\n items={items}\n preview={\n title ? <span className=\"block text-xs text-muted-foreground\">{title}</span> : undefined\n }\n menuLabel={menuLabel}\n testId={testId}\n data-slot=\"note-mark\"\n data-mark-kind=\"note\"\n className={cn(\n 'cursor-default select-none rounded-sm px-1 text-xs font-medium tabular-nums text-foreground/80 underline decoration-yellow-400 decoration-2 underline-offset-[3px] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring',\n className\n )}\n >\n {label}\n </MarkMenu>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/citations/QuietMarks.tsx"],"names":["useBlocksEnvironment","useCallback","jsx","MarkMenu","cn"],"mappings":"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","file":"chunk-5FTIHRZH.cjs","sourcesContent":["import { useCallback, type ReactNode } from 'react'\nimport { MarkMenu, cn, type MarkMenuItem } from '@arbidocs/react/ui'\nimport { useBlocksEnvironment } from '../provider/BlocksProvider'\n\n/**\n * Quiet inline marks: links, bookmarks, passage references, label and note marks.\n *\n * Each is typographically distinct TEXT (no pill, no button chrome, no icon in the flow) and owns\n * exactly one contextual menu through the shared `MarkMenu`. Domain-neutral: hosts supply the\n * handlers that make a row mean something.\n */\n\n/** Every fixed string of the quiet marks. */\nexport interface QuietMarkLabels {\n openLink: string\n copyLink: string\n linkCopied: string\n copyFailed: string\n jumpHere: string\n copyPlaceLink: string\n openDocument: string\n linkMenu: string\n bookmarkMenu: string\n}\n\nexport const DEFAULT_QUIET_MARK_LABELS: QuietMarkLabels = {\n openLink: 'Open link',\n copyLink: 'Copy link',\n linkCopied: 'Link copied',\n copyFailed: 'Could not copy',\n jumpHere: 'Jump to here',\n copyPlaceLink: 'Copy link to this place',\n openDocument: 'Open document',\n linkMenu: 'Link actions',\n bookmarkMenu: 'Bookmark actions',\n}\n\n/**\n * Copy text to the clipboard and say so (or say it failed) through the host's `notify`. Resolves\n * whether it was copied.\n */\nexport function useCopyText(labels?: Partial<Pick<QuietMarkLabels, 'linkCopied' | 'copyFailed'>>) {\n const { notify } = useBlocksEnvironment()\n const done = labels?.linkCopied ?? DEFAULT_QUIET_MARK_LABELS.linkCopied\n const failed = labels?.copyFailed ?? DEFAULT_QUIET_MARK_LABELS.copyFailed\n return useCallback(\n async (text: string, message?: string): Promise<boolean> => {\n try {\n await navigator.clipboard.writeText(text)\n notify(message ?? done, 'success')\n return true\n } catch {\n notify(failed, 'error')\n return false\n }\n },\n [notify, done, failed]\n )\n}\n\nexport type QuietLinkKind = 'external' | 'anchor' | 'document'\n\nexport interface QuietLinkProps {\n href?: string\n /** `external` (default) opens elsewhere, `anchor` jumps within the page, `document` is an in-app target. */\n kind?: QuietLinkKind\n /** The primary action. Defaults: external opens a new tab, anchor scrolls to the id. */\n onOpen?: () => void\n /** Absolute URL a copied anchor should carry; defaults to the current page plus the hash. */\n placeLink?: string\n labels?: Partial<QuietMarkLabels>\n className?: string\n testId?: string\n children: ReactNode\n}\n\nconst LINK_STYLE: Record<QuietLinkKind, string> = {\n external:\n 'text-primary underline decoration-primary/40 decoration-1 underline-offset-[3px] transition-colors hover:decoration-primary focus-visible:decoration-primary',\n document:\n 'text-primary underline decoration-primary/40 decoration-1 underline-offset-[3px] transition-colors hover:decoration-primary focus-visible:decoration-primary',\n // A bookmark is nearly invisible until hovered or focused.\n anchor:\n 'text-inherit underline decoration-dotted decoration-1 decoration-foreground/25 underline-offset-[3px] transition-colors hover:decoration-foreground/70 focus-visible:decoration-foreground/70',\n}\n\nfunction scrollToHash(href: string | undefined) {\n const id = href?.startsWith('#') ? decodeURIComponent(href.slice(1)) : ''\n document.getElementById(id)?.scrollIntoView({ behavior: 'smooth', block: 'start' })\n}\n\n/** A hyperlink, bookmark or document link as quiet text with one menu (open / copy). */\nexport function QuietLink({\n href,\n kind = 'external',\n onOpen,\n placeLink,\n labels,\n className,\n testId,\n children,\n}: QuietLinkProps) {\n const l = { ...DEFAULT_QUIET_MARK_LABELS, ...labels }\n const copy = useCopyText(l)\n\n const open =\n onOpen ??\n (kind === 'anchor'\n ? () => scrollToHash(href)\n : () => {\n if (href) window.open(href, '_blank', 'noopener,noreferrer')\n })\n const copyTarget =\n kind === 'anchor'\n ? (placeLink ?? `${window.location.href.split('#')[0]}${href ?? ''}`)\n : (placeLink ?? href ?? '')\n\n const items: MarkMenuItem[] = [\n {\n id: 'open',\n label: kind === 'anchor' ? l.jumpHere : kind === 'document' ? l.openDocument : l.openLink,\n primary: true,\n onSelect: open,\n testId: 'mark-open',\n },\n {\n id: 'copy',\n label: kind === 'anchor' ? l.copyPlaceLink : l.copyLink,\n onSelect: () => void copy(copyTarget),\n testId: 'mark-copy',\n },\n ]\n\n return (\n <MarkMenu\n as=\"a\"\n href={href}\n items={items}\n menuLabel={kind === 'anchor' ? l.bookmarkMenu : l.linkMenu}\n preview={\n kind === 'external' && href ? (\n <span className=\"block break-all text-xs text-muted-foreground\">{href}</span>\n ) : undefined\n }\n className={cn(LINK_STYLE[kind], 'cursor-pointer', className)}\n testId={testId}\n data-mark-kind={kind}\n >\n {children}\n </MarkMenu>\n )\n}\n\nexport interface PassageMarkProps {\n /** The reference as plain text, e.g. \"¶4\" or \"¶4–9 · p.1\". */\n label: string\n menuLabel: string\n /** Menu rows: copy, link, label, open in navigator. */\n items: MarkMenuItem[]\n className?: string\n testId?: string\n}\n\n/** A passage's reference as a faint text mark in the margin; its menu carries the passage actions. */\nexport function PassageMark({ label, menuLabel, items, className, testId }: PassageMarkProps) {\n return (\n <MarkMenu\n items={items}\n menuLabel={menuLabel}\n testId={testId}\n data-mark-kind=\"passage\"\n className={cn(\n 'touch-hit cursor-pointer select-none rounded-sm px-1 text-xs tabular-nums text-muted-foreground/80 transition-colors hover:text-foreground focus-visible:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring pointer-coarse:px-2 pointer-coarse:py-2',\n className\n )}\n >\n {label}\n </MarkMenu>\n )\n}\n\nexport interface LabelMarkProps {\n /** Colours of every label marking the passage. */\n colors: string[]\n menuLabel: string\n /** Names of the labels, shown in the menu. */\n preview?: ReactNode\n items: MarkMenuItem[]\n /** Accessible name of the stripes. */\n name: string\n className?: string\n testId?: string\n}\n\n/** The labels on a passage as thin margin stripes (not a chip); the menu shows / removes them. */\nexport function LabelMark({\n colors,\n menuLabel,\n preview,\n items,\n name,\n className,\n testId,\n}: LabelMarkProps) {\n return (\n <MarkMenu\n items={items}\n preview={preview}\n menuLabel={menuLabel}\n testId={testId}\n aria-label={name}\n data-mark-kind=\"label\"\n className={cn(\n 'flex cursor-pointer flex-col gap-1 rounded-full focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:px-2 pointer-coarse:py-1',\n className\n )}\n >\n {colors.slice(0, 4).map((c, i) => (\n <span\n key={i}\n aria-hidden=\"true\"\n className=\"h-2.5 w-1 rounded-full\"\n style={{ backgroundColor: c }}\n />\n ))}\n </MarkMenu>\n )\n}\n\nexport interface NoteMarkProps {\n /** Short label, e.g. the passage range this run covers (\"¶4–9\"). */\n label: string\n /** Full note text, shown as the menu preview so the mark is self-explaining. */\n title?: string\n menuLabel?: string\n /** Rows such as \"Show note\" and \"Edit\". With none, the menu is a read-only preview. */\n items?: MarkMenuItem[]\n className?: string\n testId?: string\n}\n\n/**\n * Marks a passage as cited by a Note: small text with a soft yellow underline, drawn once on\n * each CONTIGUOUS run of cited passages (a run is one citation).\n */\nexport function NoteMark({\n label,\n title,\n menuLabel = 'Note actions',\n items = [],\n className,\n testId,\n}: NoteMarkProps) {\n return (\n <MarkMenu\n items={items}\n preview={\n title ? <span className=\"block text-xs text-muted-foreground\">{title}</span> : undefined\n }\n menuLabel={menuLabel}\n testId={testId}\n data-slot=\"note-mark\"\n data-mark-kind=\"note\"\n className={cn(\n 'cursor-default select-none rounded-sm px-1 text-xs font-medium tabular-nums text-foreground/80 underline decoration-yellow-400 decoration-2 underline-offset-[3px] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring',\n className\n )}\n >\n {label}\n </MarkMenu>\n )\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkMJCCBMM5_cjs = require('./chunk-MJCCBMM5.cjs');
|
|
5
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
var react = require('react');
|
|
7
7
|
var ui = require('@arbidocs/react/ui');
|
|
@@ -172,7 +172,7 @@ function Chart({
|
|
|
172
172
|
);
|
|
173
173
|
}
|
|
174
174
|
function Eyebrow({ children, index, rule = false, tone, className, testId }) {
|
|
175
|
-
const t =
|
|
175
|
+
const t = chunkMJCCBMM5_cjs.useEditorialTone(tone);
|
|
176
176
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
177
177
|
"p",
|
|
178
178
|
{
|
|
@@ -185,7 +185,7 @@ function Eyebrow({ children, index, rule = false, tone, className, testId }) {
|
|
|
185
185
|
"data-testid": testId,
|
|
186
186
|
children: [
|
|
187
187
|
rule && /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", className: "h-px w-8 shrink-0 bg-primary" }),
|
|
188
|
-
index !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: ui.cn("tabular-nums", t.accent), children:
|
|
188
|
+
index !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: ui.cn("tabular-nums", t.accent), children: chunkMJCCBMM5_cjs.formatIndex(index) }),
|
|
189
189
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children })
|
|
190
190
|
]
|
|
191
191
|
}
|
|
@@ -202,7 +202,7 @@ function EditorialHeading({
|
|
|
202
202
|
className,
|
|
203
203
|
testId
|
|
204
204
|
}) {
|
|
205
|
-
const t =
|
|
205
|
+
const t = chunkMJCCBMM5_cjs.useEditorialTone(tone);
|
|
206
206
|
const Heading = `h${level}`;
|
|
207
207
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
208
208
|
"div",
|
|
@@ -271,7 +271,7 @@ function EditorialHero({
|
|
|
271
271
|
testIds
|
|
272
272
|
}) {
|
|
273
273
|
const tone = SURFACE_TONE[surface];
|
|
274
|
-
const t =
|
|
274
|
+
const t = chunkMJCCBMM5_cjs.useEditorialTone(tone);
|
|
275
275
|
const centered = align === "center" && !aside;
|
|
276
276
|
const ids = {
|
|
277
277
|
root: testIds?.root ?? testId,
|
|
@@ -281,7 +281,7 @@ function EditorialHero({
|
|
|
281
281
|
actions: testIds?.actions ?? (testId ? `${testId}-actions` : void 0),
|
|
282
282
|
aside: testIds?.aside ?? (testId ? `${testId}-aside` : void 0)
|
|
283
283
|
};
|
|
284
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
284
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkMJCCBMM5_cjs.EditorialToneContext.Provider, { value: tone, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
285
285
|
"section",
|
|
286
286
|
{
|
|
287
287
|
className: ui.cn("relative isolate overflow-hidden", SURFACE_CLASS[surface], className),
|
|
@@ -381,11 +381,11 @@ function EditorialSection({
|
|
|
381
381
|
testId
|
|
382
382
|
}) {
|
|
383
383
|
const tone = SURFACE_TONE[surface];
|
|
384
|
-
const t =
|
|
384
|
+
const t = chunkMJCCBMM5_cjs.useEditorialTone(tone);
|
|
385
385
|
const hasHeading = Boolean(title || eyebrow || index !== void 0);
|
|
386
386
|
const heading = hasHeading && title ? /* @__PURE__ */ jsxRuntime.jsx(EditorialHeading, { eyebrow, index, title, lead, tone }) : null;
|
|
387
387
|
const split = layout !== "stacked";
|
|
388
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
388
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkMJCCBMM5_cjs.EditorialToneContext.Provider, { value: tone, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
389
389
|
"section",
|
|
390
390
|
{
|
|
391
391
|
id,
|
|
@@ -434,7 +434,7 @@ function EditorialProse({
|
|
|
434
434
|
className,
|
|
435
435
|
testId
|
|
436
436
|
}) {
|
|
437
|
-
const t =
|
|
437
|
+
const t = chunkMJCCBMM5_cjs.useEditorialTone();
|
|
438
438
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
439
439
|
"div",
|
|
440
440
|
{
|
|
@@ -458,7 +458,7 @@ function DefinitionList({
|
|
|
458
458
|
className,
|
|
459
459
|
testId
|
|
460
460
|
}) {
|
|
461
|
-
const t =
|
|
461
|
+
const t = chunkMJCCBMM5_cjs.useEditorialTone();
|
|
462
462
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
463
463
|
"dl",
|
|
464
464
|
{
|
|
@@ -512,7 +512,7 @@ function DefinitionList({
|
|
|
512
512
|
);
|
|
513
513
|
}
|
|
514
514
|
function CheckList({ items, columns = 1, icon, className, testId }) {
|
|
515
|
-
const t =
|
|
515
|
+
const t = chunkMJCCBMM5_cjs.useEditorialTone();
|
|
516
516
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
517
517
|
"ul",
|
|
518
518
|
{
|
|
@@ -545,7 +545,7 @@ function CheckList({ items, columns = 1, icon, className, testId }) {
|
|
|
545
545
|
);
|
|
546
546
|
}
|
|
547
547
|
function TagList({ items, label, className, testId }) {
|
|
548
|
-
const t =
|
|
548
|
+
const t = chunkMJCCBMM5_cjs.useEditorialTone();
|
|
549
549
|
if (items.length === 0) return null;
|
|
550
550
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
551
551
|
"ul",
|
|
@@ -607,10 +607,10 @@ function PanelGrid({
|
|
|
607
607
|
className,
|
|
608
608
|
testId
|
|
609
609
|
}) {
|
|
610
|
-
const t =
|
|
610
|
+
const t = chunkMJCCBMM5_cjs.useEditorialTone(tone);
|
|
611
611
|
const Heading = `h${headingLevel}`;
|
|
612
612
|
const joined = variant === "joined";
|
|
613
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
613
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkMJCCBMM5_cjs.EditorialToneContext.Provider, { value: t.tone, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
614
614
|
"ul",
|
|
615
615
|
{
|
|
616
616
|
className: ui.cn(
|
|
@@ -649,7 +649,7 @@ function PanelGrid({
|
|
|
649
649
|
children: item.icon
|
|
650
650
|
}
|
|
651
651
|
) : /* @__PURE__ */ jsxRuntime.jsx("span", {}),
|
|
652
|
-
number !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: ui.cn("font-display text-sm tabular-nums", t.subtle), children:
|
|
652
|
+
number !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: ui.cn("font-display text-sm tabular-nums", t.subtle), children: chunkMJCCBMM5_cjs.formatIndex(number) }) : item.href && /* @__PURE__ */ jsxRuntime.jsx(
|
|
653
653
|
lucideReact.ArrowUpRight,
|
|
654
654
|
{
|
|
655
655
|
"aria-hidden": "true",
|
|
@@ -695,7 +695,7 @@ function PanelGrid({
|
|
|
695
695
|
]
|
|
696
696
|
}
|
|
697
697
|
);
|
|
698
|
-
const cell = /* @__PURE__ */ jsxRuntime.jsx(
|
|
698
|
+
const cell = /* @__PURE__ */ jsxRuntime.jsx(chunkMJCCBMM5_cjs.BlockLink, { href: item.href, linkComponent, className: "block h-full", children: inner });
|
|
699
699
|
return /* @__PURE__ */ jsxRuntime.jsx("li", { className: "min-w-0", children: reveal ? /* @__PURE__ */ jsxRuntime.jsx(Reveal, { delay: i * 90, className: "h-full", children: cell }) : cell }, i);
|
|
700
700
|
})
|
|
701
701
|
}
|
|
@@ -710,7 +710,7 @@ function PullQuote({
|
|
|
710
710
|
className,
|
|
711
711
|
testId
|
|
712
712
|
}) {
|
|
713
|
-
const t =
|
|
713
|
+
const t = chunkMJCCBMM5_cjs.useEditorialTone();
|
|
714
714
|
const centered = align === "center";
|
|
715
715
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
716
716
|
"figure",
|
|
@@ -767,7 +767,7 @@ function ArticleList({
|
|
|
767
767
|
className,
|
|
768
768
|
testId
|
|
769
769
|
}) {
|
|
770
|
-
const t =
|
|
770
|
+
const t = chunkMJCCBMM5_cjs.useEditorialTone();
|
|
771
771
|
if (items.length === 0) return empty ? /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: empty }) : null;
|
|
772
772
|
const idOf = (item, i) => item.testId ?? (testId ? `${testId}-item-${i}` : void 0);
|
|
773
773
|
if (layout === "rows") {
|
|
@@ -778,7 +778,7 @@ function ArticleList({
|
|
|
778
778
|
"data-slot": "article-list",
|
|
779
779
|
"data-layout": "rows",
|
|
780
780
|
"data-testid": testId,
|
|
781
|
-
children: items.map((item, i) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
781
|
+
children: items.map((item, i) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(chunkMJCCBMM5_cjs.BlockLink, { href: item.href, linkComponent, className: "group block", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
782
782
|
"article",
|
|
783
783
|
{
|
|
784
784
|
className: "grid gap-2 py-6 transition-colors sm:grid-cols-[10rem_minmax(0,1fr)_auto] sm:gap-8",
|
|
@@ -817,7 +817,7 @@ function ArticleList({
|
|
|
817
817
|
}
|
|
818
818
|
);
|
|
819
819
|
}
|
|
820
|
-
const card = (item, i, lead) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
820
|
+
const card = (item, i, lead) => /* @__PURE__ */ jsxRuntime.jsx(chunkMJCCBMM5_cjs.BlockLink, { href: item.href, linkComponent, className: "group block h-full", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
821
821
|
"article",
|
|
822
822
|
{
|
|
823
823
|
className: ui.cn(
|
|
@@ -829,7 +829,7 @@ function ArticleList({
|
|
|
829
829
|
"data-testid": idOf(item, i),
|
|
830
830
|
children: [
|
|
831
831
|
item.imageUrl && /* @__PURE__ */ jsxRuntime.jsx(
|
|
832
|
-
|
|
832
|
+
chunkMJCCBMM5_cjs.BlockImage,
|
|
833
833
|
{
|
|
834
834
|
src: item.imageUrl,
|
|
835
835
|
alt: item.imageAlt ?? "",
|
|
@@ -910,8 +910,8 @@ function ProofStrip({
|
|
|
910
910
|
testId
|
|
911
911
|
}) {
|
|
912
912
|
const tone = SURFACE_TONE[surface];
|
|
913
|
-
const t =
|
|
914
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
913
|
+
const t = chunkMJCCBMM5_cjs.useEditorialTone(tone);
|
|
914
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkMJCCBMM5_cjs.EditorialToneContext.Provider, { value: tone, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
915
915
|
"section",
|
|
916
916
|
{
|
|
917
917
|
"aria-label": label,
|
|
@@ -942,8 +942,8 @@ function CtaBand({
|
|
|
942
942
|
testId
|
|
943
943
|
}) {
|
|
944
944
|
const tone = SURFACE_TONE[surface];
|
|
945
|
-
const t =
|
|
946
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
945
|
+
const t = chunkMJCCBMM5_cjs.useEditorialTone(tone);
|
|
946
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkMJCCBMM5_cjs.EditorialToneContext.Provider, { value: tone, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
947
947
|
"section",
|
|
948
948
|
{
|
|
949
949
|
className: ui.cn("relative isolate overflow-hidden", SURFACE_CLASS[surface], className),
|
|
@@ -986,5 +986,5 @@ exports.ProofStrip = ProofStrip;
|
|
|
986
986
|
exports.PullQuote = PullQuote;
|
|
987
987
|
exports.Reveal = Reveal;
|
|
988
988
|
exports.TagList = TagList;
|
|
989
|
-
//# sourceMappingURL=chunk-
|
|
990
|
-
//# sourceMappingURL=chunk-
|
|
989
|
+
//# sourceMappingURL=chunk-65THHQVB.cjs.map
|
|
990
|
+
//# sourceMappingURL=chunk-65THHQVB.cjs.map
|