@arbidocs/blocks 0.4.32 → 0.4.37
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 +258 -216
- package/dist/agents/index.js +9 -7
- package/dist/agents/tasks/ConversationListView.d.ts +58 -0
- package/dist/agents/tasks/ConversationTurnSpeaker.d.ts +16 -0
- package/dist/agents/tasks/NewThreadDialog.d.ts +1 -1
- package/dist/agents/tasks/TaskActivityTimeline.d.ts +1 -1
- package/dist/agents/tasks/TaskFlow.d.ts +22 -0
- package/dist/agents/tasks/TaskInbox.d.ts +26 -0
- package/dist/agents/tasks/TaskReviewDialog.d.ts +22 -0
- package/dist/agents/tasks/TaskRowMenu.d.ts +10 -2
- package/dist/agents/tasks/TaskRunsDialog.d.ts +8 -3
- package/dist/agents/tasks/TaskStartDialog.d.ts +24 -0
- package/dist/agents/tasks/TaskTable.d.ts +1 -1
- package/dist/agents/tasks/ThreadNotifyDialog.d.ts +11 -0
- package/dist/agents/tasks/WorkflowComposer.d.ts +1 -1
- package/dist/agents/tasks/WorkflowsTable.d.ts +7 -0
- package/dist/agents/tasks/compact-thread-activity.d.ts +8 -0
- package/dist/agents/tasks/index.d.ts +10 -0
- package/dist/agents/tasks/taskComposerTypes.d.ts +16 -1
- package/dist/agents/tasks/taskRequest.d.ts +1 -0
- package/dist/agents/tasks/testGrid.d.ts +24 -0
- package/dist/agents/tasks/workflowColumns.d.ts +2 -1
- package/dist/agents/tasks/workflowRows.d.ts +6 -0
- package/dist/agents/workflows/types.d.ts +2 -0
- package/dist/auth/index.cjs +27 -27
- package/dist/auth/index.js +1 -1
- package/dist/chat/Message.d.ts +8 -2
- package/dist/chat/index.cjs +132 -120
- package/dist/chat/index.d.ts +2 -0
- package/dist/chat/index.js +2 -2
- package/dist/chat/participant-tints.d.ts +1 -0
- package/dist/chat/useRecipientDraft.d.ts +14 -0
- package/dist/{chunk-KF4EC5XU.js → chunk-24KQJYSB.js} +3 -3
- package/dist/{chunk-KF4EC5XU.js.map → chunk-24KQJYSB.js.map} +1 -1
- package/dist/{chunk-GVQOBJKR.cjs → chunk-2EAE5JP6.cjs} +7 -4
- package/dist/chunk-2EAE5JP6.cjs.map +1 -0
- package/dist/chunk-3AFWGEDJ.cjs +53 -0
- package/dist/chunk-3AFWGEDJ.cjs.map +1 -0
- package/dist/{chunk-UBNVIIBT.js → chunk-4WWM3GQ5.js} +23 -8
- package/dist/chunk-4WWM3GQ5.js.map +1 -0
- package/dist/{chunk-56BUD74K.cjs → chunk-65THHQVB.cjs} +27 -27
- package/dist/{chunk-56BUD74K.cjs.map → chunk-65THHQVB.cjs.map} +1 -1
- package/dist/{chunk-UTYQPVIW.cjs → chunk-7QDX2CO4.cjs} +6 -6
- package/dist/{chunk-UTYQPVIW.cjs.map → chunk-7QDX2CO4.cjs.map} +1 -1
- package/dist/{chunk-5B4PXAKI.cjs → chunk-7RGLTF76.cjs} +23 -8
- package/dist/chunk-7RGLTF76.cjs.map +1 -0
- package/dist/{chunk-PLGVMLBD.cjs → chunk-AMXQQCCB.cjs} +1975 -610
- package/dist/chunk-AMXQQCCB.cjs.map +1 -0
- package/dist/{chunk-NUPVHEJW.js → chunk-BUHKUKKB.js} +7 -4
- package/dist/chunk-BUHKUKKB.js.map +1 -0
- package/dist/{chunk-4XJZ6AAY.js → chunk-CKB64Z4R.js} +245 -6
- package/dist/chunk-CKB64Z4R.js.map +1 -0
- package/dist/chunk-DDW3M22Z.js +126 -0
- package/dist/chunk-DDW3M22Z.js.map +1 -0
- package/dist/{chunk-KXMDOTGW.js → chunk-DLBUFHLY.js} +10 -2
- package/dist/chunk-DLBUFHLY.js.map +1 -0
- package/dist/{chunk-ZHLMDJCO.cjs → chunk-DLVX6R6B.cjs} +62 -26
- package/dist/chunk-DLVX6R6B.cjs.map +1 -0
- package/dist/{chunk-JGZTRLKL.cjs → chunk-IA7RTPT3.cjs} +7 -4
- package/dist/chunk-IA7RTPT3.cjs.map +1 -0
- package/dist/{chunk-6YVI74BC.js → chunk-JH25QIZW.js} +439 -12
- package/dist/chunk-JH25QIZW.js.map +1 -0
- package/dist/{chunk-FRRDPYBR.cjs → chunk-L7B4W4LA.cjs} +74 -5
- package/dist/chunk-L7B4W4LA.cjs.map +1 -0
- package/dist/{chunk-NJL4LIXX.js → chunk-LFGJAZ5H.js} +11 -8
- package/dist/chunk-LFGJAZ5H.js.map +1 -0
- package/dist/{chunk-IAKUTBPX.js → chunk-LYUO3E6V.js} +3 -3
- package/dist/{chunk-IAKUTBPX.js.map → chunk-LYUO3E6V.js.map} +1 -1
- package/dist/{chunk-EYPPB5CY.cjs → chunk-M2YGPC5N.cjs} +4 -4
- package/dist/{chunk-EYPPB5CY.cjs.map → chunk-M2YGPC5N.cjs.map} +1 -1
- package/dist/{chunk-5ZBP7TCD.cjs → chunk-MJCCBMM5.cjs} +10 -2
- package/dist/chunk-MJCCBMM5.cjs.map +1 -0
- package/dist/{chunk-VMCOH3AY.cjs → chunk-NUF2WGGF.cjs} +527 -96
- package/dist/chunk-NUF2WGGF.cjs.map +1 -0
- package/dist/{chunk-OJSWQM4G.js → chunk-OZJ5PXA6.js} +29 -4
- package/dist/chunk-OZJ5PXA6.js.map +1 -0
- package/dist/{chunk-3NZR6PAG.js → chunk-PE7Z53RB.js} +70 -4
- package/dist/chunk-PE7Z53RB.js.map +1 -0
- package/dist/chunk-Q6LF7N3A.cjs +130 -0
- package/dist/chunk-Q6LF7N3A.cjs.map +1 -0
- package/dist/{chunk-RGHQFJOL.cjs → chunk-QFUF4A4J.cjs} +28 -2
- package/dist/chunk-QFUF4A4J.cjs.map +1 -0
- package/dist/chunk-RFXJYIDV.js +50 -0
- package/dist/chunk-RFXJYIDV.js.map +1 -0
- package/dist/{chunk-QN42OA5J.js → chunk-SFXVNFES.js} +4 -4
- package/dist/chunk-SFXVNFES.js.map +1 -0
- package/dist/{chunk-YVIOCITQ.cjs → chunk-VUEZARW5.cjs} +3 -3
- package/dist/chunk-VUEZARW5.cjs.map +1 -0
- package/dist/{chunk-JLOYWXRB.js → chunk-VZGBCBYB.js} +3 -3
- package/dist/chunk-VZGBCBYB.js.map +1 -0
- package/dist/{chunk-ZVPTFTGV.cjs → chunk-WBDK4PIA.cjs} +11 -8
- package/dist/chunk-WBDK4PIA.cjs.map +1 -0
- package/dist/{chunk-ZORQ5M3W.cjs → chunk-WQFGG2BV.cjs} +4 -4
- package/dist/chunk-WQFGG2BV.cjs.map +1 -0
- package/dist/{chunk-C75S6USL.js → chunk-WYVCXY7R.js} +7 -4
- package/dist/chunk-WYVCXY7R.js.map +1 -0
- package/dist/{chunk-WSJVHSGN.js → chunk-XWEJ5LV2.js} +63 -27
- package/dist/chunk-XWEJ5LV2.js.map +1 -0
- package/dist/{chunk-S5HZBXZA.cjs → chunk-YJQVLVBJ.cjs} +243 -2
- package/dist/chunk-YJQVLVBJ.cjs.map +1 -0
- package/dist/{chunk-YMHGF6R5.js → chunk-ZCF2JJFA.js} +3 -3
- package/dist/{chunk-YMHGF6R5.js.map → chunk-ZCF2JJFA.js.map} +1 -1
- package/dist/{chunk-TZ4QF7EP.js → chunk-ZDA5CZPS.js} +1948 -594
- package/dist/chunk-ZDA5CZPS.js.map +1 -0
- package/dist/collaboration/index.cjs +45 -41
- package/dist/collaboration/index.js +1 -1
- package/dist/collaboration/mail/MailMessagePreview.d.ts +11 -0
- package/dist/collaboration/mail/index.d.ts +1 -0
- package/dist/connect/docx.cjs +4 -4
- package/dist/connect/docx.js +1 -1
- package/dist/connect/index.cjs +32 -32
- package/dist/connect/index.js +3 -3
- package/dist/docx/NativeDocxEditor.d.ts +2 -2
- package/dist/docx/index.cjs +33 -30
- package/dist/docx/index.cjs.map +1 -1
- package/dist/docx/index.d.ts +2 -2
- package/dist/docx/index.js +3 -4
- package/dist/docx/index.js.map +1 -1
- package/dist/docx/review/DocxEditorReview.d.ts +16 -0
- package/dist/docx/review/index.d.ts +3 -0
- package/dist/docx/review/reviewModule.d.ts +6 -0
- package/dist/docx/review/useReview.d.ts +29 -0
- package/dist/facts/FactsFilterInput.d.ts +2 -46
- package/dist/facts/FactsToolbar.d.ts +5 -5
- package/dist/facts/index.cjs +27 -124
- package/dist/facts/index.cjs.map +1 -1
- package/dist/facts/index.js +13 -118
- package/dist/facts/index.js.map +1 -1
- package/dist/files/FilesPage.d.ts +1 -1
- package/dist/files/FilesToolbar.d.ts +1 -1
- package/dist/files/FolderPicker.d.ts +2 -1
- package/dist/files/ViewerChrome.d.ts +1 -1
- package/dist/files/bulk/FolderFilterButton.d.ts +3 -2
- package/dist/files/cells/BulkLabelSelect.d.ts +11 -0
- package/dist/files/cells/LabelMultiSelect.d.ts +2 -1
- package/dist/files/cells/index.d.ts +1 -0
- package/dist/files/index.cjs +110 -167
- package/dist/files/index.cjs.map +1 -1
- package/dist/files/index.js +96 -159
- package/dist/files/index.js.map +1 -1
- package/dist/home/index.cjs +20 -20
- package/dist/home/index.cjs.map +1 -1
- package/dist/home/index.js +5 -5
- package/dist/home/index.js.map +1 -1
- package/dist/index.cjs +646 -623
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +20 -68
- package/dist/index.js.map +1 -1
- package/dist/settings/SettingsPanel.d.ts +1 -1
- package/dist/settings/TriStateFilterMenu.d.ts +3 -1
- package/dist/settings/index.cjs +55 -280
- package/dist/settings/index.cjs.map +1 -1
- package/dist/settings/index.js +17 -248
- package/dist/settings/index.js.map +1 -1
- package/dist/shell/FilterInput.d.ts +48 -0
- package/dist/shell/TabHeader.d.ts +7 -1
- package/dist/shell/index.cjs +62 -49
- package/dist/shell/index.d.ts +1 -0
- package/dist/shell/index.js +4 -3
- package/dist/site/index.cjs +62 -62
- package/dist/site/index.js +2 -2
- package/dist/studio/index.cjs +75 -75
- package/dist/studio/index.js +6 -6
- package/dist/workspaces/WorkspaceCard.d.ts +2 -2
- package/dist/workspaces/index.cjs +9 -2
- package/dist/workspaces/index.cjs.map +1 -1
- package/dist/workspaces/index.js +9 -2
- package/dist/workspaces/index.js.map +1 -1
- package/package.json +9 -13
- package/src/blocks.css +4 -0
- package/src/components/grid.css +10 -0
- package/src/docx/styles.css +488 -43
- package/dist/chunk-3NZR6PAG.js.map +0 -1
- package/dist/chunk-4XJZ6AAY.js.map +0 -1
- package/dist/chunk-5B4PXAKI.cjs.map +0 -1
- package/dist/chunk-5ZBP7TCD.cjs.map +0 -1
- package/dist/chunk-6YVI74BC.js.map +0 -1
- package/dist/chunk-C75S6USL.js.map +0 -1
- package/dist/chunk-FRRDPYBR.cjs.map +0 -1
- package/dist/chunk-GVQOBJKR.cjs.map +0 -1
- package/dist/chunk-JGZTRLKL.cjs.map +0 -1
- package/dist/chunk-JLOYWXRB.js.map +0 -1
- package/dist/chunk-KXMDOTGW.js.map +0 -1
- package/dist/chunk-NJL4LIXX.js.map +0 -1
- package/dist/chunk-NUPVHEJW.js.map +0 -1
- package/dist/chunk-OJSWQM4G.js.map +0 -1
- package/dist/chunk-PLGVMLBD.cjs.map +0 -1
- package/dist/chunk-QN42OA5J.js.map +0 -1
- package/dist/chunk-RGHQFJOL.cjs.map +0 -1
- package/dist/chunk-S5HZBXZA.cjs.map +0 -1
- package/dist/chunk-TZ4QF7EP.js.map +0 -1
- package/dist/chunk-UBNVIIBT.js.map +0 -1
- package/dist/chunk-VMCOH3AY.cjs.map +0 -1
- package/dist/chunk-WSJVHSGN.js.map +0 -1
- package/dist/chunk-YVIOCITQ.cjs.map +0 -1
- package/dist/chunk-ZHLMDJCO.cjs.map +0 -1
- package/dist/chunk-ZORQ5M3W.cjs.map +0 -1
- package/dist/chunk-ZVPTFTGV.cjs.map +0 -1
|
@@ -47,8 +47,10 @@ function TabButton({
|
|
|
47
47
|
// Touch: an icon-only tab still meets the 44px target; a titled active tab truncates.
|
|
48
48
|
isCompact && tab.icon && (isActive ? "max-w-[45vw]" : "pointer-coarse:min-w-11 justify-center"),
|
|
49
49
|
tab.disabled && "cursor-not-allowed opacity-50",
|
|
50
|
+
tab.presentation === "count" && "rounded-none border-transparent bg-transparent pl-0 font-normal hover:bg-transparent",
|
|
50
51
|
tab.tabClassName
|
|
51
52
|
);
|
|
53
|
+
const countValue = tab.isProcessing ? /* @__PURE__ */ jsx("span", { className: "animate-pulse", children: tab.count }) : tab.count;
|
|
52
54
|
const countBadge = tab.count === void 0 ? null : (
|
|
53
55
|
// A plain muted number, a footnote to the label. A filtered count switches to primary ink so
|
|
54
56
|
// "this is narrowed" still reads without a fill.
|
|
@@ -63,11 +65,11 @@ function TabButton({
|
|
|
63
65
|
// Compact rows drop counts to save width, but a tab whose glyph lives in the count has
|
|
64
66
|
// nothing else to show: there the count IS the tab.
|
|
65
67
|
isCompact && !tab.countIcon ? "hidden" : "inline-flex",
|
|
66
|
-
tab.hasActiveFilters ? "
|
|
68
|
+
tab.hasActiveFilters ? "text-primary" : "text-muted-foreground"
|
|
67
69
|
),
|
|
68
70
|
children: [
|
|
69
71
|
tab.countIcon && /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "flex shrink-0 items-center justify-center", children: tab.countIcon }),
|
|
70
|
-
tab.
|
|
72
|
+
tab.countClassName ? /* @__PURE__ */ jsx("span", { className: tab.countClassName, children: countValue }) : countValue
|
|
71
73
|
]
|
|
72
74
|
}
|
|
73
75
|
)
|
|
@@ -158,6 +160,7 @@ function TabHeader({
|
|
|
158
160
|
onTabChange,
|
|
159
161
|
leading,
|
|
160
162
|
leftContent,
|
|
163
|
+
firstTabContent,
|
|
161
164
|
afterTabs,
|
|
162
165
|
centerContent,
|
|
163
166
|
absoluteCenterContent,
|
|
@@ -204,7 +207,7 @@ function TabHeader({
|
|
|
204
207
|
"div",
|
|
205
208
|
{
|
|
206
209
|
ref: containerRef,
|
|
207
|
-
className: cn("w-full bg-background pt-1 pb-2", className),
|
|
210
|
+
className: cn("w-full bg-background pt-1 pr-3 pb-2", className),
|
|
208
211
|
"data-slot": "tab-header",
|
|
209
212
|
"data-testid": testIdOr(testId, { testId: "tab-header" }),
|
|
210
213
|
children: /* @__PURE__ */ jsxs("div", { className: "relative bg-background", children: [
|
|
@@ -228,7 +231,7 @@ function TabHeader({
|
|
|
228
231
|
leading ? "pl-8" : "pl-3"
|
|
229
232
|
),
|
|
230
233
|
children: leftContent || /* @__PURE__ */ jsxs("div", { className: "flex items-end gap-1", children: [
|
|
231
|
-
tabs.map((tab) => {
|
|
234
|
+
tabs.map((tab, index) => {
|
|
232
235
|
const tabButton = /* @__PURE__ */ jsx(
|
|
233
236
|
TabButton,
|
|
234
237
|
{
|
|
@@ -242,11 +245,23 @@ function TabHeader({
|
|
|
242
245
|
},
|
|
243
246
|
tab.id
|
|
244
247
|
);
|
|
245
|
-
|
|
246
|
-
return /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
248
|
+
const renderedTab = !tab.tooltip ? tabButton : /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
247
249
|
/* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: tabButton }),
|
|
248
250
|
/* @__PURE__ */ jsx(TooltipContent, { side: "bottom", children: /* @__PURE__ */ jsx("p", { children: tab.tooltip }) })
|
|
249
251
|
] }, tab.id);
|
|
252
|
+
if (index !== 0 || !firstTabContent) return renderedTab;
|
|
253
|
+
return /* @__PURE__ */ jsxs(
|
|
254
|
+
"div",
|
|
255
|
+
{
|
|
256
|
+
"data-slot": "count-tab-group",
|
|
257
|
+
className: "flex shrink-0 items-end gap-1",
|
|
258
|
+
children: [
|
|
259
|
+
renderedTab,
|
|
260
|
+
/* @__PURE__ */ jsx("div", { className: cn("self-center", COMPACT_SECTION), children: typeof firstTabContent === "function" ? firstTabContent(isCompact) : firstTabContent })
|
|
261
|
+
]
|
|
262
|
+
},
|
|
263
|
+
tab.id
|
|
264
|
+
);
|
|
250
265
|
}),
|
|
251
266
|
afterTabs && /* @__PURE__ */ jsx("div", { className: cn("self-center", COMPACT_SECTION), children: typeof afterTabs === "function" ? afterTabs(isCompact) : afterTabs })
|
|
252
267
|
] })
|
|
@@ -280,5 +295,5 @@ function TabHeader({
|
|
|
280
295
|
}
|
|
281
296
|
|
|
282
297
|
export { DEFAULT_TAB_HEADER_LABELS, TabHeader };
|
|
283
|
-
//# sourceMappingURL=chunk-
|
|
284
|
-
//# sourceMappingURL=chunk-
|
|
298
|
+
//# sourceMappingURL=chunk-4WWM3GQ5.js.map
|
|
299
|
+
//# sourceMappingURL=chunk-4WWM3GQ5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/shell/TabHeader.tsx"],"names":[],"mappings":"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","file":"chunk-4WWM3GQ5.js","sourcesContent":["import {\n useCallback,\n useEffect,\n useRef,\n useState,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n} from 'react'\nimport { X } from 'lucide-react'\nimport { Badge, cn, Tooltip, TooltipContent, TooltipTrigger } from '@arbidocs/react/ui'\nimport { testIdOr } from '../chat/test-id'\nimport { observeResize } from '../lib/observe-resize'\n\n/** Fixed strings of the tab row. */\nexport interface TabHeaderLabels {\n /** A tab's close button (a tab's own `closeTooltip` wins). */\n closeTab: string\n}\n\nexport const DEFAULT_TAB_HEADER_LABELS: TabHeaderLabels = {\n closeTab: 'Close tab',\n}\n\nexport interface Tab {\n id: string\n label: string | ReactNode\n testId?: string\n icon?: ReactNode\n /**\n * An entity pill (conversation, workspace, …) shown in place of the icon + label. The app\n * renders it, so the block stays free of entity components.\n */\n pill?: ReactNode\n count?: number\n /** Where the count sits relative to the label. Defaults to 'trailing'. */\n countPlacement?: 'leading' | 'trailing'\n /** Glyph INSIDE the count, in front of the number, so icon and count read as one object. */\n countIcon?: ReactNode\n /** Classes for the number alone (e.g. a filled pill), leaving the glyph as it is. */\n countClassName?: string\n badge?: string | ReactNode\n disabled?: boolean\n tooltip?: string\n actions?: ReactNode\n /** Hover handlers from actions (e.g. a filter dropdown), attached to the whole tab wrapper. */\n actionsHoverHandlers?: { onMouseEnter: () => void; onMouseLeave: () => void }\n isProcessing?: boolean\n isVariable?: boolean\n onClose?: () => void\n closeTooltip?: string\n hasActiveFilters?: boolean\n /** Entity count header without selectable-tab chrome (Facts, Tasks, Files). */\n presentation?: 'tab' | 'count'\n /** Extra classes for the tab button. */\n tabClassName?: string\n}\n\n/** Forces buttons in a header section to a uniform compact size (28px, 14px text). */\nconst COMPACT_SECTION =\n '[&_button]:h-7 [&_button]:px-2 [&_button]:py-0 [&_button]:text-sm [&_button]:font-medium ' +\n '[&_[role=button]]:h-7 [&_[role=button]]:px-2 [&_[role=button]]:py-0 [&_[role=button]]:text-sm [&_[role=button]]:font-medium ' +\n // Touch: the compact 28px floor is lifted to 44px (important beats the rules above).\n 'pointer-coarse:[&_button]:h-11! pointer-coarse:[&_[role=button]]:h-11!'\n\ninterface TabButtonProps {\n tab: Tab\n isActive: boolean\n /** Closable-items row: a soft chip with a close button instead of an underline. */\n isChip: boolean\n isCompact: boolean\n onTabChange: (tabId: string) => void\n labels: TabHeaderLabels\n testIds?: TabHeaderProps['testIds']\n}\n\nfunction TabButton({\n tab,\n isActive,\n isChip,\n isCompact,\n onTabChange,\n labels,\n testIds,\n}: TabButtonProps) {\n // Compact mode (narrow header) collapses every INACTIVE tab that has an icon to icon-only so\n // the trailing controls are never pushed off the edge. The active tab keeps a truncated title:\n // otherwise two icon-only tabs cannot be told apart on a phone. Collapsed tabs keep an\n // accessible name and a title with their label; label-only tabs keep their text.\n const hideLabel = isCompact && !!tab.icon && !isActive\n const handleClick = useCallback(() => {\n if (!tab.disabled) onTabChange(tab.id)\n }, [tab.disabled, tab.id, onTabChange])\n\n // div+role=button needs explicit keyboard handling; Space must not scroll the page.\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n if (tab.disabled) return\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n onTabChange(tab.id)\n }\n },\n [tab.disabled, tab.id, onTabChange]\n )\n\n const handleClose = useCallback(\n (e: MouseEvent) => {\n e.stopPropagation()\n tab.onClose?.()\n },\n [tab]\n )\n\n // Two looks, chosen by the row: a row that holds closable items (conversations, open panels)\n // shows soft chips, the active one filled, so \"close\" has an obvious owner. Every other row is a\n // plain underline: ink text + a 2px primary underline for the active tab, nothing else.\n const className = cn(\n 'group relative z-[1] flex pointer-coarse:h-11 cursor-pointer items-center justify-start text-left text-sm transition-colors',\n isChip\n ? 'h-8 max-w-[260px] rounded-md px-2.5'\n : 'h-9 max-w-[320px] border-b-2 bg-transparent px-2.5',\n isChip\n ? isActive\n ? 'bg-muted font-semibold text-foreground'\n : 'bg-transparent font-medium text-muted-foreground hover:bg-muted/60 hover:text-foreground'\n : isActive\n ? 'border-b-primary font-semibold text-foreground'\n : 'border-b-transparent font-medium text-muted-foreground hover:text-foreground',\n // Touch: an icon-only tab still meets the 44px target; a titled active tab truncates.\n isCompact && tab.icon && (isActive ? 'max-w-[45vw]' : 'pointer-coarse:min-w-11 justify-center'),\n tab.disabled && 'cursor-not-allowed opacity-50',\n tab.presentation === 'count' &&\n 'rounded-none border-transparent bg-transparent pl-0 font-normal hover:bg-transparent',\n tab.tabClassName\n )\n\n const countValue = tab.isProcessing ? (\n <span className=\"animate-pulse\">{tab.count}</span>\n ) : (\n tab.count\n )\n const countBadge =\n tab.count === undefined ? null : (\n // A plain muted number, a footnote to the label. A filtered count switches to primary ink so\n // \"this is narrowed\" still reads without a fill.\n <span\n data-testid={testIdOr(testIds?.count, { testId: 'tab-count' })}\n className={cn(\n 'flex-shrink-0 items-center justify-center gap-1 font-normal leading-none tabular-nums',\n tab.countIcon ? 'text-sm' : 'text-xs',\n tab.countPlacement === 'leading' ? 'mr-1.5' : 'ml-1.5',\n // Compact rows drop counts to save width, but a tab whose glyph lives in the count has\n // nothing else to show: there the count IS the tab.\n isCompact && !tab.countIcon ? 'hidden' : 'inline-flex',\n tab.hasActiveFilters ? 'text-primary' : 'text-muted-foreground'\n )}\n >\n {tab.countIcon && (\n <span aria-hidden className=\"flex shrink-0 items-center justify-center\">\n {tab.countIcon}\n </span>\n )}\n {tab.countClassName ? <span className={tab.countClassName}>{countValue}</span> : countValue}\n </span>\n )\n\n const content = tab.pill ? (\n // The outer wrapper hosts the processing dot outside the pill's bounds; the inner span keeps\n // the truncation the pill needs without clipping the dot.\n <span className=\"relative inline-flex min-w-0 items-center\">\n <span className=\"min-w-0 truncate overflow-hidden\">{tab.pill}</span>\n {tab.isProcessing && (\n <span className=\"absolute -right-1 -top-1 size-2 rounded-full border border-background bg-yellow-solid\" />\n )}\n </span>\n ) : (\n <>\n {tab.icon && (\n <span\n className={cn(\n 'flex size-5 flex-shrink-0 items-center justify-center',\n !hideLabel && 'mr-1.5'\n )}\n >\n {tab.icon}\n </span>\n )}\n {tab.countPlacement === 'leading' && countBadge}\n <span className={cn('truncate', hideLabel ? 'hidden' : 'inline')}>{tab.label}</span>\n {tab.countPlacement !== 'leading' && countBadge}\n {tab.badge &&\n (typeof tab.badge === 'string' ? (\n <Badge\n variant=\"outline\"\n className={cn('ml-1.5 truncate', isCompact ? 'max-w-[120px]' : 'max-w-none')}\n >\n {tab.badge}\n </Badge>\n ) : (\n <span className=\"ml-1.5 inline-flex items-center\">{tab.badge}</span>\n ))}\n </>\n )\n\n return (\n <div\n className={cn('flex items-end', isChip && 'pb-1')}\n data-testid={testIdOr(tab.testId, { testId: `${tab.id}-tab` })}\n onMouseEnter={tab.actionsHoverHandlers?.onMouseEnter}\n onMouseLeave={tab.actionsHoverHandlers?.onMouseLeave}\n >\n {/* role=button on a div, not a <button>: a tab whose badge holds a real interactive element\n (an entity tooltip trigger) would otherwise nest a button inside a button. */}\n <div\n role=\"button\"\n tabIndex={tab.disabled ? -1 : 0}\n aria-disabled={tab.disabled || undefined}\n aria-current={isActive ? 'true' : undefined}\n data-slot=\"tab\"\n data-state={isActive ? 'active' : 'inactive'}\n // Icon-only tabs expose the label for a11y and as a native title.\n aria-label={hideLabel && typeof tab.label === 'string' ? tab.label : undefined}\n title={hideLabel && !tab.tooltip && typeof tab.label === 'string' ? tab.label : undefined}\n className={className}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {content}\n {tab.actions && (\n <span className=\"ml-auto flex-shrink-0\" onClick={(e) => e.stopPropagation()}>\n {tab.actions}\n </span>\n )}\n {tab.onClose && (\n <Tooltip>\n <TooltipTrigger asChild>\n <span\n role=\"button\"\n tabIndex={0}\n className={cn(\n 'ml-0.5 inline-flex !size-4 flex-shrink-0 items-center justify-center rounded-sm !p-0 text-muted-foreground transition-colors hover:bg-foreground/10 hover:text-foreground pointer-coarse:!size-11',\n // A chip row keeps the close button quiet until the chip is the active one or is\n // hovered or focused; touch always shows it (there is no hover).\n isChip &&\n !isActive &&\n 'opacity-0 group-hover:opacity-100 group-focus-within:opacity-100 pointer-coarse:opacity-100'\n )}\n onClick={handleClose}\n aria-label={tab.closeTooltip || labels.closeTab}\n data-testid={testIdOr(testIds?.closeButton, { testId: 'close-tab-button' })}\n >\n <X className=\"size-3\" />\n </span>\n </TooltipTrigger>\n <TooltipContent>\n <p>{tab.closeTooltip || labels.closeTab}</p>\n </TooltipContent>\n </Tooltip>\n )}\n </div>\n </div>\n )\n}\n\nexport interface TabHeaderProps {\n tabs: Tab[]\n activeTabId: string\n onTabChange: (tabId: string) => void\n /** Pinned to the far left before the tabs (e.g. the sidebar toggle). */\n leading?: ReactNode\n leftContent?: ReactNode\n /** Controls attached to the first count tab, before any additional tabs. */\n firstTabContent?: ReactNode | ((isCompact: boolean) => ReactNode)\n afterTabs?: ReactNode | ((isCompact: boolean) => ReactNode)\n centerContent?: ReactNode | ((isCompact: boolean) => ReactNode)\n /** Pinned to the true horizontal center of the row, independent of left/right widths. */\n absoluteCenterContent?: ReactNode\n rightContent?: ReactNode | ((isCompact: boolean) => ReactNode)\n className?: string\n /** Header width below which tabs collapse to icons. */\n compactBreakpoint?: number\n labels?: Partial<TabHeaderLabels>\n /**\n * `chips` renders every tab as a soft chip (for rows of closable items), `underline` as a plain\n * underline tab. Default: chips when any tab can be closed, underline otherwise.\n */\n variant?: 'underline' | 'chips'\n /** Root id (default `tab-header`). */\n testId?: string\n /**\n * Per-tab ids; defaults are the current ids. A tab's own id is `Tab.testId`, else `<tab id>-tab`\n * (structural).\n */\n testIds?: Partial<Record<'count' | 'closeButton', string>>\n}\n\n/** Underline tab row with leading / center / right slots; collapses to icons when narrow. */\nexport function TabHeader({\n tabs,\n activeTabId,\n onTabChange,\n leading,\n leftContent,\n firstTabContent,\n afterTabs,\n centerContent,\n absoluteCenterContent,\n rightContent,\n className,\n compactBreakpoint = 640,\n labels,\n variant,\n testId,\n testIds,\n}: TabHeaderProps) {\n const mergedLabels = { ...DEFAULT_TAB_HEADER_LABELS, ...labels }\n const isChipRow = variant ? variant === 'chips' : tabs.some((tab) => !!tab.onClose)\n const containerRef = useRef<HTMLDivElement>(null)\n const scrollerRef = useRef<HTMLDivElement>(null)\n const [isCompact, setIsCompact] = useState(false)\n const [canScrollEnd, setCanScrollEnd] = useState(false)\n\n useEffect(() => {\n const container = containerRef.current\n if (!container) return\n return observeResize(container, (entries) => {\n for (const entry of entries) setIsCompact(entry.contentRect.width < compactBreakpoint)\n })\n }, [compactBreakpoint])\n\n // Overflow cue: track whether tabs are hidden past the trailing edge.\n useEffect(() => {\n const scroller = scrollerRef.current\n if (!scroller) return\n const update = () =>\n setCanScrollEnd(scroller.scrollLeft + scroller.clientWidth < scroller.scrollWidth - 1)\n update()\n scroller.addEventListener('scroll', update, { passive: true })\n const stopObserving = observeResize(scroller, update)\n return () => {\n scroller.removeEventListener('scroll', update)\n stopObserving()\n }\n }, [tabs.length])\n\n // Keep the active tab visible when it changes (or on first render) in a scrolling row.\n useEffect(() => {\n const active = scrollerRef.current?.querySelector('[data-slot=\"tab\"][data-state=\"active\"]')\n if (active && typeof active.scrollIntoView === 'function') {\n active.scrollIntoView({ inline: 'nearest', block: 'nearest' })\n }\n }, [activeTabId])\n\n return (\n <div\n ref={containerRef}\n className={cn('w-full bg-background pt-1 pr-3 pb-2', className)}\n data-slot=\"tab-header\"\n data-testid={testIdOr(testId, { testId: 'tab-header' })}\n >\n <div className=\"relative bg-background\">\n {/* The hairline lives on this non-scrolling wrapper: overflow-y-hidden on the scroll row\n would clip the active tab's underline overhang. The tabs paint over the line. */}\n <span\n aria-hidden\n className=\"pointer-events-none absolute inset-x-0 bottom-0 h-px bg-border\"\n />\n {/* overflow-y-hidden is mandatory: overflow-x-auto alone makes the browser compute\n overflow-y to `auto` too, surfacing a phantom vertical scrollbar from sub-pixel\n overflow (e.g. the processing dot's -top-1). pt-1 keeps that dot inside the clip box. */}\n <div className=\"relative flex min-h-[40px] items-end justify-between gap-4\">\n {/* Leading slot: placed in the left margin (the pl-8 gap), claiming no extra width. */}\n {leading && (\n <div className=\"absolute bottom-1.5 left-1.5 z-10 flex items-center\">{leading}</div>\n )}\n {/* Only the tabs scroll: the center and right slots sit outside the scroller so they can\n never overlap a tab, and a fade at the trailing edge signals that more tabs exist. */}\n <div className=\"relative flex min-w-0 flex-shrink items-end\">\n <div\n ref={scrollerRef}\n data-slot=\"tab-scroller\"\n className={cn(\n 'flex min-w-0 items-end overflow-x-auto overflow-y-hidden pt-1',\n leading ? 'pl-8' : 'pl-3'\n )}\n >\n {leftContent || (\n <div className=\"flex items-end gap-1\">\n {tabs.map((tab, index) => {\n const tabButton = (\n <TabButton\n key={tab.id}\n tab={tab}\n isActive={activeTabId === tab.id}\n isChip={isChipRow}\n // A lone tab competes with nothing: its label is the surface's title.\n isCompact={isCompact && tabs.length > 1}\n onTabChange={onTabChange}\n labels={mergedLabels}\n testIds={testIds}\n />\n )\n const renderedTab = !tab.tooltip ? (\n tabButton\n ) : (\n <Tooltip key={tab.id}>\n <TooltipTrigger asChild>{tabButton}</TooltipTrigger>\n {/* Below: the header can sit at the very top of the viewport. */}\n <TooltipContent side=\"bottom\">\n <p>{tab.tooltip}</p>\n </TooltipContent>\n </Tooltip>\n )\n if (index !== 0 || !firstTabContent) return renderedTab\n return (\n <div\n key={tab.id}\n data-slot=\"count-tab-group\"\n className=\"flex shrink-0 items-end gap-1\"\n >\n {renderedTab}\n <div className={cn('self-center', COMPACT_SECTION)}>\n {typeof firstTabContent === 'function'\n ? firstTabContent(isCompact)\n : firstTabContent}\n </div>\n </div>\n )\n })}\n {afterTabs && (\n <div className={cn('self-center', COMPACT_SECTION)}>\n {typeof afterTabs === 'function' ? afterTabs(isCompact) : afterTabs}\n </div>\n )}\n </div>\n )}\n </div>\n {canScrollEnd && (\n <span\n aria-hidden\n data-slot=\"tab-scroll-cue\"\n className=\"pointer-events-none absolute inset-y-0 right-0 w-8 bg-gradient-to-l from-background to-transparent\"\n />\n )}\n </div>\n\n {centerContent && (\n <div className={cn('flex min-w-fit flex-1 items-center self-center', COMPACT_SECTION)}>\n {typeof centerContent === 'function' ? centerContent(isCompact) : centerContent}\n </div>\n )}\n\n {/* pointer-events-none on the overlay so clicks reach the tabs beneath; the inner div\n re-enables them for the actual content. */}\n {absoluteCenterContent && (\n <div className=\"pointer-events-none absolute inset-0 z-10 flex items-center justify-center\">\n <div className=\"pointer-events-auto\">{absoluteCenterContent}</div>\n </div>\n )}\n\n <div\n className={cn(\n 'flex flex-shrink-0 items-center justify-end gap-2 self-center',\n COMPACT_SECTION\n )}\n >\n {typeof rightContent === 'function' ? rightContent(isCompact) : rightContent}\n </div>\n </div>\n </div>\n </div>\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
|