@arbidocs/blocks 0.3.142 → 0.3.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/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunk6MFI2HPX_cjs = require('./chunk-6MFI2HPX.cjs');
3
+ var chunkYNGRSAGP_cjs = require('./chunk-YNGRSAGP.cjs');
4
4
  var react$1 = require('react');
5
5
  var lucideReact = require('lucide-react');
6
6
  var react = require('@arbidocs/react');
@@ -329,7 +329,7 @@ function CitationEditor({
329
329
  children: /* @__PURE__ */ jsxRuntime.jsx(react.DocumentEntity, { doc, fullWidth: true, labelMaxWidth: "max-w-full" })
330
330
  }
331
331
  ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: docId }),
332
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground shrink-0", children: chunk6MFI2HPX_cjs.formatPageRefs(pages) }),
332
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground shrink-0", children: chunkYNGRSAGP_cjs.formatPageRefs(pages) }),
333
333
  !readOnly && /* @__PURE__ */ jsxRuntime.jsx(
334
334
  "button",
335
335
  {
@@ -579,9 +579,9 @@ function DataTable({
579
579
  className
580
580
  }) {
581
581
  if (rows.length === 0) {
582
- return /* @__PURE__ */ jsxRuntime.jsx(EmptyState, { title: emptyTitle, description: emptyDescription, testId: chunk6MFI2HPX_cjs.tid(area, "empty") });
582
+ return /* @__PURE__ */ jsxRuntime.jsx(EmptyState, { title: emptyTitle, description: emptyDescription, testId: chunkYNGRSAGP_cjs.tid(area, "empty") });
583
583
  }
584
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: react.cn("rounded-xl border border-border bg-card", className), children: /* @__PURE__ */ jsxRuntime.jsxs(react.Table, { "data-testid": chunk6MFI2HPX_cjs.tid(area, "table"), children: [
584
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: react.cn("rounded-xl border border-border bg-card", className), children: /* @__PURE__ */ jsxRuntime.jsxs(react.Table, { "data-testid": chunkYNGRSAGP_cjs.tid(area, "table"), children: [
585
585
  /* @__PURE__ */ jsxRuntime.jsx(react.TableHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(react.TableRow, { className: "hover:bg-transparent", children: columns.map((c) => /* @__PURE__ */ jsxRuntime.jsx(
586
586
  react.TableHead,
587
587
  {
@@ -595,7 +595,7 @@ function DataTable({
595
595
  return /* @__PURE__ */ jsxRuntime.jsx(
596
596
  react.TableRow,
597
597
  {
598
- "data-testid": chunk6MFI2HPX_cjs.tid(area, "row", id),
598
+ "data-testid": chunkYNGRSAGP_cjs.tid(area, "row", id),
599
599
  onClick: onRowClick ? () => onRowClick(row) : void 0,
600
600
  className: react.cn(onRowClick && "cursor-pointer"),
601
601
  children: columns.map((c) => /* @__PURE__ */ jsxRuntime.jsx(
@@ -1407,7 +1407,7 @@ function WorkspaceCard({
1407
1407
  children: [
1408
1408
  shownMembers.map((m, i) => /* @__PURE__ */ jsxRuntime.jsxs(react.Avatar, { className: "size-6 border-2 border-card", title: m.name, children: [
1409
1409
  m.picture && /* @__PURE__ */ jsxRuntime.jsx(react.AvatarImage, { src: m.picture, alt: m.name }),
1410
- /* @__PURE__ */ jsxRuntime.jsx(react.AvatarFallback, { className: "bg-foreground text-[9px] font-medium text-background", children: chunk6MFI2HPX_cjs.initials(m.name || "?") })
1410
+ /* @__PURE__ */ jsxRuntime.jsx(react.AvatarFallback, { className: "bg-foreground text-[9px] font-medium text-background", children: chunkYNGRSAGP_cjs.initials(m.name || "?") })
1411
1411
  ] }, i)),
1412
1412
  !membersHidden && extraMembers > 0 && /* @__PURE__ */ jsxRuntime.jsx(react.Avatar, { className: "size-6 border-2 border-card", children: /* @__PURE__ */ jsxRuntime.jsxs(react.AvatarFallback, { className: "bg-accent text-[9px] font-medium text-muted-foreground", children: [
1413
1413
  "+",
@@ -1421,10 +1421,10 @@ function WorkspaceCard({
1421
1421
  "span",
1422
1422
  {
1423
1423
  className: "min-w-0 max-w-full self-start truncate text-left text-xs text-muted-foreground",
1424
- title: chunk6MFI2HPX_cjs.fmtDate(updatedAt),
1424
+ title: chunkYNGRSAGP_cjs.fmtDate(updatedAt),
1425
1425
  children: [
1426
1426
  "Updated ",
1427
- chunk6MFI2HPX_cjs.fromNow(updatedAt)
1427
+ chunkYNGRSAGP_cjs.fromNow(updatedAt)
1428
1428
  ]
1429
1429
  }
1430
1430
  )
@@ -1456,7 +1456,7 @@ function NavItemLink({ item, onNavigate }) {
1456
1456
  to: item.to,
1457
1457
  end: item.end,
1458
1458
  onClick: onNavigate,
1459
- "data-testid": chunk6MFI2HPX_cjs.tid("sidebar-nav", item.id),
1459
+ "data-testid": chunkYNGRSAGP_cjs.tid("sidebar-nav", item.id),
1460
1460
  className: ({ isActive }) => react.cn(
1461
1461
  "group flex items-center gap-3 rounded-md px-3 py-2 text-sm font-medium transition-colors",
1462
1462
  isActive ? "bg-sidebar-accent text-sidebar-accent-foreground" : "text-sidebar-foreground hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground"
@@ -1629,7 +1629,7 @@ function AppHeader({
1629
1629
  type: "button",
1630
1630
  onClick: onSearch,
1631
1631
  className: classNames?.search ?? "relative hidden max-w-md flex-1 items-center rounded-md border border-input bg-background py-2 pl-9 pr-3 text-left text-sm text-muted-foreground transition-colors hover:bg-accent md:flex",
1632
- "data-testid": chunk6MFI2HPX_cjs.tid(testIdPrefix, "global-search"),
1632
+ "data-testid": chunkYNGRSAGP_cjs.tid(testIdPrefix, "global-search"),
1633
1633
  children: [
1634
1634
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" }),
1635
1635
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1", children: searchPlaceholder }),
@@ -1645,7 +1645,7 @@ function AppHeader({
1645
1645
  size: "sm",
1646
1646
  onClick: onAsk ?? onSearch,
1647
1647
  className: classNames?.askButton,
1648
- "data-testid": chunk6MFI2HPX_cjs.tid(testIdPrefix, "ask-ai"),
1648
+ "data-testid": chunkYNGRSAGP_cjs.tid(testIdPrefix, "ask-ai"),
1649
1649
  children: [
1650
1650
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, { className: "size-4" }),
1651
1651
  askLabel
@@ -1656,7 +1656,7 @@ function AppHeader({
1656
1656
  /* @__PURE__ */ jsxRuntime.jsx(
1657
1657
  react.NotificationBell,
1658
1658
  {
1659
- testId: chunk6MFI2HPX_cjs.tid(testIdPrefix, "notifications"),
1659
+ testId: chunkYNGRSAGP_cjs.tid(testIdPrefix, "notifications"),
1660
1660
  onNavigate: onNotificationNavigate,
1661
1661
  toneClassNames: notificationTones
1662
1662
  }
@@ -1667,8 +1667,8 @@ function AppHeader({
1667
1667
  user,
1668
1668
  items: userItems,
1669
1669
  onLogout,
1670
- testId: chunk6MFI2HPX_cjs.tid(testIdPrefix, "user-menu"),
1671
- logoutTestId: chunk6MFI2HPX_cjs.tid(testIdPrefix, "logout")
1670
+ testId: chunkYNGRSAGP_cjs.tid(testIdPrefix, "user-menu"),
1671
+ logoutTestId: chunkYNGRSAGP_cjs.tid(testIdPrefix, "logout")
1672
1672
  }
1673
1673
  )
1674
1674
  ] })
@@ -1888,7 +1888,7 @@ function createArbiMaterializer(arbi, opts = {}) {
1888
1888
  }
1889
1889
  function collectAssetRefs(node, acc) {
1890
1890
  if (typeof node === "string") {
1891
- if (chunk6MFI2HPX_cjs.isAssetRef(node)) acc.add(node);
1891
+ if (chunkYNGRSAGP_cjs.isAssetRef(node)) acc.add(node);
1892
1892
  return;
1893
1893
  }
1894
1894
  if (Array.isArray(node)) {
@@ -1922,7 +1922,7 @@ async function materializePageData(data, materialize) {
1922
1922
  const replacements = /* @__PURE__ */ new Map();
1923
1923
  await Promise.all(
1924
1924
  [...refs].map(async (ref) => {
1925
- const src = await materialize(chunk6MFI2HPX_cjs.assetRefId(ref));
1925
+ const src = await materialize(chunkYNGRSAGP_cjs.assetRefId(ref));
1926
1926
  if (src) replacements.set(ref, src);
1927
1927
  })
1928
1928
  );
@@ -2007,7 +2007,7 @@ function StudioEditor({
2007
2007
  radius: stored.radius ?? defaultTheme.radius,
2008
2008
  activePresetId: null
2009
2009
  });
2010
- chunk6MFI2HPX_cjs.applyStoredTheme(themeBundle);
2010
+ chunkYNGRSAGP_cjs.applyStoredTheme(themeBundle);
2011
2011
  })();
2012
2012
  return () => {
2013
2013
  cancelled = true;
@@ -2100,7 +2100,7 @@ function StudioEditor({
2100
2100
  "\u201D\u2026"
2101
2101
  ]
2102
2102
  }
2103
- ) : /* @__PURE__ */ jsxRuntime.jsx(chunk6MFI2HPX_cjs.AssetResolverProvider, { render: AssetThumb, children: /* @__PURE__ */ jsxRuntime.jsx(
2103
+ ) : /* @__PURE__ */ jsxRuntime.jsx(chunkYNGRSAGP_cjs.AssetResolverProvider, { render: AssetThumb, children: /* @__PURE__ */ jsxRuntime.jsx(
2104
2104
  puck.Puck,
2105
2105
  {
2106
2106
  config,
@@ -2118,7 +2118,7 @@ function StudioEditor({
2118
2118
  className: "w-80 shrink-0 border-l border-border",
2119
2119
  "data-testid": `${testIdPrefix}-theme-drawer`,
2120
2120
  children: /* @__PURE__ */ jsxRuntime.jsx(
2121
- chunk6MFI2HPX_cjs.ThemeEditor,
2121
+ chunkYNGRSAGP_cjs.ThemeEditor,
2122
2122
  {
2123
2123
  bundle: themeBundle,
2124
2124
  variant: "drawer",
@@ -2157,7 +2157,7 @@ function PageRenderer({
2157
2157
  const page = initialData ?? (await persistence.loadPublished(arbi, live, slug)).data ?? (await persistence.loadPage(arbi, live, slug)).data;
2158
2158
  if (cancelled) return;
2159
2159
  if (applyTheme) {
2160
- chunk6MFI2HPX_cjs.applyThemeVars(
2160
+ chunkYNGRSAGP_cjs.applyThemeVars(
2161
2161
  theme ? { ...defaultTheme, ...theme, colors: { ...defaultTheme.colors, ...theme.colors } } : defaultTheme
2162
2162
  );
2163
2163
  }
@@ -2359,7 +2359,7 @@ function AiTextField({
2359
2359
  setActive(true);
2360
2360
  await task.run(buildPrompt({ kind, label, current: value ?? "" }), docIds);
2361
2361
  };
2362
- const inputTid = chunk6MFI2HPX_cjs.tid(`${testIdPrefix}-field`, name);
2362
+ const inputTid = chunkYNGRSAGP_cjs.tid(`${testIdPrefix}-field`, name);
2363
2363
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "al-ai-field", children: [
2364
2364
  multiline ? /* @__PURE__ */ jsxRuntime.jsx(
2365
2365
  "textarea",
@@ -2388,7 +2388,7 @@ function AiTextField({
2388
2388
  className: "al-ai-field__btn",
2389
2389
  onClick: () => void write(),
2390
2390
  disabled: task.isRunning,
2391
- "data-testid": chunk6MFI2HPX_cjs.tid(`${testIdPrefix}-ai-write`, name),
2391
+ "data-testid": chunkYNGRSAGP_cjs.tid(`${testIdPrefix}-ai-write`, name),
2392
2392
  title: "Draft this field with AI, grounded in the marketing workspace",
2393
2393
  children: [
2394
2394
  task.isRunning ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "size-3 animate-spin" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, { className: "size-3" }),
@@ -2491,8 +2491,8 @@ function ImageFieldControl({
2491
2491
  const arbi = react.useArbi();
2492
2492
  const gen = useImageGen();
2493
2493
  const queryClient = reactQuery.useQueryClient();
2494
- const currentAssetImage = useAssetImage(chunk6MFI2HPX_cjs.isAssetRef(value) ? chunk6MFI2HPX_cjs.assetRefId(value) : "");
2495
- const tp = (...q) => chunk6MFI2HPX_cjs.tid(`${testIdPrefix}-image`, name, ...q);
2494
+ const currentAssetImage = useAssetImage(chunkYNGRSAGP_cjs.isAssetRef(value) ? chunkYNGRSAGP_cjs.assetRefId(value) : "");
2495
+ const tp = (...q) => chunkYNGRSAGP_cjs.tid(`${testIdPrefix}-image`, name, ...q);
2496
2496
  const refreshAssets = () => queryClient.invalidateQueries({ queryKey: ["arbi", "documents", workspaceId] });
2497
2497
  const { data: docs } = react.useDocuments(workspaceId);
2498
2498
  const imageDocs = react$1.useMemo(
@@ -2526,7 +2526,7 @@ function ImageFieldControl({
2526
2526
  const res = await arbi.documents.uploadFile(file, name2, { folder });
2527
2527
  const id = res.doc_ext_ids?.[0];
2528
2528
  if (id) {
2529
- onChange(chunk6MFI2HPX_cjs.asAssetRef(id));
2529
+ onChange(chunkYNGRSAGP_cjs.asAssetRef(id));
2530
2530
  void refreshAssets();
2531
2531
  }
2532
2532
  } finally {
@@ -2544,7 +2544,7 @@ function ImageFieldControl({
2544
2544
  if (!prompt.trim() || gen.isGenerating) return;
2545
2545
  const id = await gen.generate(prompt, refIds);
2546
2546
  if (id) {
2547
- onChange(chunk6MFI2HPX_cjs.asAssetRef(id));
2547
+ onChange(chunkYNGRSAGP_cjs.asAssetRef(id));
2548
2548
  setRefIds([]);
2549
2549
  void refreshAssets();
2550
2550
  }
@@ -2559,7 +2559,7 @@ function ImageFieldControl({
2559
2559
  const tabClass = (on) => `inline-flex items-center gap-1 rounded-md px-2 py-1 text-xs font-medium ${on ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:text-foreground"}`;
2560
2560
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", "data-testid": tp(), children: [
2561
2561
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
2562
- /* @__PURE__ */ jsxRuntime.jsx(chunk6MFI2HPX_cjs.BlockImage, { src: value, aspect: "16:9", rounded: "md", testId: tp("preview") }),
2562
+ /* @__PURE__ */ jsxRuntime.jsx(chunkYNGRSAGP_cjs.BlockImage, { src: value, aspect: "16:9", rounded: "md", testId: tp("preview") }),
2563
2563
  currentAssetImage ? /* @__PURE__ */ jsxRuntime.jsxs(
2564
2564
  "button",
2565
2565
  {
@@ -2593,12 +2593,12 @@ function ImageFieldControl({
2593
2593
  imageDocs.length === 0 && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "col-span-3 py-3 text-center text-xs text-muted-foreground", children: "No image assets yet \u2014 upload or generate one." }),
2594
2594
  imageDocs.map((d) => {
2595
2595
  const thumb = thumbs?.[d.external_id];
2596
- const selected = value === chunk6MFI2HPX_cjs.asAssetRef(d.external_id);
2596
+ const selected = value === chunkYNGRSAGP_cjs.asAssetRef(d.external_id);
2597
2597
  return /* @__PURE__ */ jsxRuntime.jsx(
2598
2598
  "button",
2599
2599
  {
2600
2600
  type: "button",
2601
- onClick: () => onChange(chunk6MFI2HPX_cjs.asAssetRef(d.external_id)),
2601
+ onClick: () => onChange(chunkYNGRSAGP_cjs.asAssetRef(d.external_id)),
2602
2602
  className: `overflow-hidden rounded border ${selected ? "border-primary ring-1 ring-primary" : "border-border"}`,
2603
2603
  title: d.file_name ?? "",
2604
2604
  "data-testid": tp("asset", d.external_id),
@@ -2660,14 +2660,14 @@ function ImageFieldControl({
2660
2660
  "Reference images",
2661
2661
  refIds.length > 0 ? ` (${refIds.length})` : " (optional)"
2662
2662
  ] }),
2663
- chunk6MFI2HPX_cjs.isAssetRef(value) && /* @__PURE__ */ jsxRuntime.jsx(
2663
+ chunkYNGRSAGP_cjs.isAssetRef(value) && /* @__PURE__ */ jsxRuntime.jsx(
2664
2664
  "button",
2665
2665
  {
2666
2666
  type: "button",
2667
2667
  className: "text-xs font-medium text-primary hover:underline",
2668
- onClick: () => toggleRef(chunk6MFI2HPX_cjs.assetRefId(value)),
2668
+ onClick: () => toggleRef(chunkYNGRSAGP_cjs.assetRefId(value)),
2669
2669
  "data-testid": tp("vary-current"),
2670
- children: refIds.includes(chunk6MFI2HPX_cjs.assetRefId(value)) ? "Varying current" : "Vary current image"
2670
+ children: refIds.includes(chunkYNGRSAGP_cjs.assetRefId(value)) ? "Varying current" : "Vary current image"
2671
2671
  }
2672
2672
  )
2673
2673
  ] }),
@@ -2881,7 +2881,7 @@ function createBlockKit(ai, image, eyebrowClassName) {
2881
2881
  }),
2882
2882
  iconField: (label = "Icon") => ({ type: "select", label, options: ICON_OPTIONS }),
2883
2883
  resolveIcon: (name) => name ? iconMap[name] : void 0,
2884
- blockTestId: (id) => chunk6MFI2HPX_cjs.tid("arbi-block", id)
2884
+ blockTestId: (id) => chunkYNGRSAGP_cjs.tid("arbi-block", id)
2885
2885
  };
2886
2886
  }
2887
2887
  var emptySlot = [];
@@ -2946,7 +2946,7 @@ function createWebsiteBlocks(kit) {
2946
2946
  render: ({ id, count, gap, col1, col2, col3, col4 }) => {
2947
2947
  const n = Number(count) || 3;
2948
2948
  const columns = [col1, col2, col3, col4].slice(0, n).map(renderSlot);
2949
- return /* @__PURE__ */ jsxRuntime.jsx(chunk6MFI2HPX_cjs.Columns, { count: n, gap, columns, testId: blockTestId(id) });
2949
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkYNGRSAGP_cjs.Columns, { count: n, gap, columns, testId: blockTestId(id) });
2950
2950
  }
2951
2951
  };
2952
2952
  const SpacerBlock = {
@@ -2964,7 +2964,7 @@ function createWebsiteBlocks(kit) {
2964
2964
  }
2965
2965
  },
2966
2966
  defaultProps: { size: "md" },
2967
- render: ({ id, size }) => /* @__PURE__ */ jsxRuntime.jsx(chunk6MFI2HPX_cjs.Spacer, { size, testId: blockTestId(id) })
2967
+ render: ({ id, size }) => /* @__PURE__ */ jsxRuntime.jsx(chunkYNGRSAGP_cjs.Spacer, { size, testId: blockTestId(id) })
2968
2968
  };
2969
2969
  const ContainerBlock = {
2970
2970
  label: "Container",
@@ -2992,7 +2992,7 @@ function createWebsiteBlocks(kit) {
2992
2992
  children: { type: "slot" }
2993
2993
  },
2994
2994
  defaultProps: { width: "default", padding: "md", children: emptySlot },
2995
- render: ({ id, width, padding, children }) => /* @__PURE__ */ jsxRuntime.jsx(chunk6MFI2HPX_cjs.Container, { width, padding, testId: blockTestId(id), children: renderSlot(children) })
2995
+ render: ({ id, width, padding, children }) => /* @__PURE__ */ jsxRuntime.jsx(chunkYNGRSAGP_cjs.Container, { width, padding, testId: blockTestId(id), children: renderSlot(children) })
2996
2996
  };
2997
2997
  const HeroBlock = {
2998
2998
  label: "Hero",
@@ -3043,7 +3043,7 @@ function createWebsiteBlocks(kit) {
3043
3043
  backgroundImage,
3044
3044
  overlay
3045
3045
  }) => /* @__PURE__ */ jsxRuntime.jsx(
3046
- chunk6MFI2HPX_cjs.Hero,
3046
+ chunkYNGRSAGP_cjs.Hero,
3047
3047
  {
3048
3048
  eyebrow,
3049
3049
  title,
@@ -3115,7 +3115,7 @@ function createWebsiteBlocks(kit) {
3115
3115
  icon: resolveIcon(it.icon)
3116
3116
  })
3117
3117
  );
3118
- return /* @__PURE__ */ jsxRuntime.jsx(chunk6MFI2HPX_cjs.FeatureGrid, { columns, items: list, testId: blockTestId(id) });
3118
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkYNGRSAGP_cjs.FeatureGrid, { columns, items: list, testId: blockTestId(id) });
3119
3119
  }
3120
3120
  };
3121
3121
  const StatGroupBlock = {
@@ -3157,7 +3157,7 @@ function createWebsiteBlocks(kit) {
3157
3157
  avatarUrl: ""
3158
3158
  },
3159
3159
  render: ({ id, quote, author, role, avatarUrl }) => /* @__PURE__ */ jsxRuntime.jsx(
3160
- chunk6MFI2HPX_cjs.Testimonial,
3160
+ chunkYNGRSAGP_cjs.Testimonial,
3161
3161
  {
3162
3162
  quote,
3163
3163
  author,
@@ -3186,7 +3186,7 @@ function createWebsiteBlocks(kit) {
3186
3186
  overlay: true
3187
3187
  },
3188
3188
  render: ({ id, title, subtitle, cta, tone, backgroundImage, overlay }) => /* @__PURE__ */ jsxRuntime.jsx(
3189
- chunk6MFI2HPX_cjs.CTABanner,
3189
+ chunkYNGRSAGP_cjs.CTABanner,
3190
3190
  {
3191
3191
  title,
3192
3192
  subtitle,
@@ -3218,7 +3218,7 @@ function createWebsiteBlocks(kit) {
3218
3218
  { label: "Umbrella" }
3219
3219
  ]
3220
3220
  },
3221
- render: ({ id, items }) => /* @__PURE__ */ jsxRuntime.jsx(chunk6MFI2HPX_cjs.LogoCloud, { items, testId: blockTestId(id) })
3221
+ render: ({ id, items }) => /* @__PURE__ */ jsxRuntime.jsx(chunkYNGRSAGP_cjs.LogoCloud, { items, testId: blockTestId(id) })
3222
3222
  };
3223
3223
  const FAQBlock = {
3224
3224
  label: "FAQ",
@@ -3250,7 +3250,72 @@ function createWebsiteBlocks(kit) {
3250
3250
  }
3251
3251
  ]
3252
3252
  },
3253
- render: ({ id, items }) => /* @__PURE__ */ jsxRuntime.jsx(chunk6MFI2HPX_cjs.FAQ, { items, testId: blockTestId(id) })
3253
+ render: ({ id, items }) => /* @__PURE__ */ jsxRuntime.jsx(chunkYNGRSAGP_cjs.FAQ, { items, testId: blockTestId(id) })
3254
+ };
3255
+ const TimelineBlockConfig = {
3256
+ label: "Timeline",
3257
+ fields: {
3258
+ view: {
3259
+ type: "radio",
3260
+ label: "View",
3261
+ options: [
3262
+ { label: "Reader chooses", value: "both" },
3263
+ { label: "Calendar", value: "calendar" },
3264
+ { label: "Gantt", value: "gantt" }
3265
+ ]
3266
+ },
3267
+ height: { type: "number", label: "Height (px)", min: 200, max: 1200 },
3268
+ items: {
3269
+ type: "array",
3270
+ label: "Entries",
3271
+ arrayFields: {
3272
+ label: textField("Label"),
3273
+ description: textareaField("Description"),
3274
+ start: { type: "text", label: "Start (YYYY-MM-DD)" },
3275
+ end: { type: "text", label: "End (YYYY-MM-DD, optional)" }
3276
+ },
3277
+ defaultItemProps: { label: "Milestone", description: "", start: "", end: "" },
3278
+ getItemSummary: (item) => item?.label || "Entry"
3279
+ }
3280
+ },
3281
+ defaultProps: {
3282
+ view: "both",
3283
+ height: 520,
3284
+ items: [
3285
+ {
3286
+ label: "Kick-off",
3287
+ description: "Project starts.",
3288
+ start: "2026-01-12",
3289
+ end: ""
3290
+ },
3291
+ {
3292
+ label: "Build phase",
3293
+ description: "Design and implementation.",
3294
+ start: "2026-01-19",
3295
+ end: "2026-03-13"
3296
+ },
3297
+ {
3298
+ label: "Launch",
3299
+ description: "Public release.",
3300
+ start: "2026-03-30",
3301
+ end: ""
3302
+ }
3303
+ ]
3304
+ },
3305
+ render: ({ id, view, height, items }) => /* @__PURE__ */ jsxRuntime.jsx("div", { style: { height: height ?? 520 }, children: /* @__PURE__ */ jsxRuntime.jsx(
3306
+ chunkYNGRSAGP_cjs.Timeline,
3307
+ {
3308
+ items: (items ?? []).filter((item) => !!item?.start).map((item, index) => ({
3309
+ id: `${id}-${index}`,
3310
+ label: item.label ?? "",
3311
+ start: item.start,
3312
+ end: item.end || void 0,
3313
+ description: item.description || void 0
3314
+ })),
3315
+ view: view === "both" ? void 0 : view,
3316
+ testId: blockTestId(id)
3317
+ }
3318
+ ) })
3254
3319
  };
3255
3320
  const RichTextBlockConfig = {
3256
3321
  label: "Rich text",
@@ -3260,7 +3325,7 @@ function createWebsiteBlocks(kit) {
3260
3325
  defaultProps: {
3261
3326
  content: "## About us\n\nWe build tools that help teams do their best work. Our platform combines **power** and _simplicity_ so you can focus on what matters.\n\n- Fast to learn\n- Easy to scale\n- Loved by teams"
3262
3327
  },
3263
- render: ({ id, content }) => /* @__PURE__ */ jsxRuntime.jsx(chunk6MFI2HPX_cjs.RichTextBlock, { content, testId: blockTestId(id) })
3328
+ render: ({ id, content }) => /* @__PURE__ */ jsxRuntime.jsx(chunkYNGRSAGP_cjs.RichTextBlock, { content, testId: blockTestId(id) })
3264
3329
  };
3265
3330
  const CalloutBlock = {
3266
3331
  label: "Callout",
@@ -3283,7 +3348,7 @@ function createWebsiteBlocks(kit) {
3283
3348
  title: "Good to know",
3284
3349
  body: "This is a helpful note that draws attention to important information."
3285
3350
  },
3286
- render: ({ id, variant, title, body }) => /* @__PURE__ */ jsxRuntime.jsx(chunk6MFI2HPX_cjs.Callout, { variant, title, body, testId: blockTestId(id) })
3351
+ render: ({ id, variant, title, body }) => /* @__PURE__ */ jsxRuntime.jsx(chunkYNGRSAGP_cjs.Callout, { variant, title, body, testId: blockTestId(id) })
3287
3352
  };
3288
3353
  const ImageBlock = {
3289
3354
  label: "Image",
@@ -3314,7 +3379,7 @@ function createWebsiteBlocks(kit) {
3314
3379
  },
3315
3380
  defaultProps: { src: "", alt: "Image", aspect: "16:9", rounded: "lg", framed: false },
3316
3381
  render: ({ id, src, alt, aspect, rounded, framed }) => /* @__PURE__ */ jsxRuntime.jsx(
3317
- chunk6MFI2HPX_cjs.BlockImage,
3382
+ chunkYNGRSAGP_cjs.BlockImage,
3318
3383
  {
3319
3384
  src,
3320
3385
  alt,
@@ -3342,7 +3407,7 @@ function createWebsiteBlocks(kit) {
3342
3407
  }
3343
3408
  },
3344
3409
  defaultProps: { src: "", name: "Jane Doe", size: "md" },
3345
- render: ({ id, src, name, size }) => /* @__PURE__ */ jsxRuntime.jsx(chunk6MFI2HPX_cjs.AvatarBlock, { src, name, size, testId: blockTestId(id) })
3410
+ render: ({ id, src, name, size }) => /* @__PURE__ */ jsxRuntime.jsx(chunkYNGRSAGP_cjs.AvatarBlock, { src, name, size, testId: blockTestId(id) })
3346
3411
  };
3347
3412
  const NavbarBlock = {
3348
3413
  label: "Navbar",
@@ -3370,7 +3435,7 @@ function createWebsiteBlocks(kit) {
3370
3435
  ],
3371
3436
  cta: { label: "Sign up", href: "#" }
3372
3437
  },
3373
- render: ({ id, brand, links, cta }) => /* @__PURE__ */ jsxRuntime.jsx(chunk6MFI2HPX_cjs.Navbar, { brand, links, cta, testId: blockTestId(id) })
3438
+ render: ({ id, brand, links, cta }) => /* @__PURE__ */ jsxRuntime.jsx(chunkYNGRSAGP_cjs.Navbar, { brand, links, cta, testId: blockTestId(id) })
3374
3439
  };
3375
3440
  const FooterBlock = {
3376
3441
  label: "Footer",
@@ -3429,7 +3494,7 @@ function createWebsiteBlocks(kit) {
3429
3494
  ],
3430
3495
  copyright: "\xA9 2026 Acme, Inc. All rights reserved."
3431
3496
  },
3432
- render: ({ id, columns, copyright }) => /* @__PURE__ */ jsxRuntime.jsx(chunk6MFI2HPX_cjs.Footer, { columns, copyright, testId: blockTestId(id) })
3497
+ render: ({ id, columns, copyright }) => /* @__PURE__ */ jsxRuntime.jsx(chunkYNGRSAGP_cjs.Footer, { columns, copyright, testId: blockTestId(id) })
3433
3498
  };
3434
3499
  const ListBlockConfig = {
3435
3500
  label: "List",
@@ -3447,7 +3512,7 @@ function createWebsiteBlocks(kit) {
3447
3512
  ordered: false,
3448
3513
  items: [{ text: "First item" }, { text: "Second item" }, { text: "Third item" }]
3449
3514
  },
3450
- render: ({ id, ordered, items }) => /* @__PURE__ */ jsxRuntime.jsx(chunk6MFI2HPX_cjs.ListBlock, { ordered, items, testId: blockTestId(id) })
3515
+ render: ({ id, ordered, items }) => /* @__PURE__ */ jsxRuntime.jsx(chunkYNGRSAGP_cjs.ListBlock, { ordered, items, testId: blockTestId(id) })
3451
3516
  };
3452
3517
  return {
3453
3518
  Columns: ColumnsBlock,
@@ -3460,6 +3525,7 @@ function createWebsiteBlocks(kit) {
3460
3525
  CTABanner: CTABannerBlock,
3461
3526
  LogoCloud: LogoCloudBlock,
3462
3527
  FAQ: FAQBlock,
3528
+ Timeline: TimelineBlockConfig,
3463
3529
  RichText: RichTextBlockConfig,
3464
3530
  Callout: CalloutBlock,
3465
3531
  Image: ImageBlock,
@@ -3549,7 +3615,7 @@ function createSiteBlocks(kit) {
3549
3615
  ]
3550
3616
  },
3551
3617
  render: ({ id, plans }) => /* @__PURE__ */ jsxRuntime.jsx(
3552
- chunk6MFI2HPX_cjs.PricingTable,
3618
+ chunkYNGRSAGP_cjs.PricingTable,
3553
3619
  {
3554
3620
  plans: (plans ?? []).map(
3555
3621
  (p) => ({
@@ -3587,7 +3653,7 @@ function createSiteBlocks(kit) {
3587
3653
  { label: "FAQ", content: "Answers to common questions." }
3588
3654
  ]
3589
3655
  },
3590
- render: ({ id, items }) => /* @__PURE__ */ jsxRuntime.jsx(chunk6MFI2HPX_cjs.Tabs, { items, testId: blockTestId(id) })
3656
+ render: ({ id, items }) => /* @__PURE__ */ jsxRuntime.jsx(chunkYNGRSAGP_cjs.Tabs, { items, testId: blockTestId(id) })
3591
3657
  };
3592
3658
  const AccordionBlock = {
3593
3659
  label: "Accordion",
@@ -3611,7 +3677,7 @@ function createSiteBlocks(kit) {
3611
3677
  { title: "How does billing work?", content: "Monthly or annually, cancel anytime." }
3612
3678
  ]
3613
3679
  },
3614
- render: ({ id, allowMultiple, items }) => /* @__PURE__ */ jsxRuntime.jsx(chunk6MFI2HPX_cjs.Accordion, { allowMultiple, items, testId: blockTestId(id) })
3680
+ render: ({ id, allowMultiple, items }) => /* @__PURE__ */ jsxRuntime.jsx(chunkYNGRSAGP_cjs.Accordion, { allowMultiple, items, testId: blockTestId(id) })
3615
3681
  };
3616
3682
  const GalleryBlock = {
3617
3683
  label: "Gallery",
@@ -3647,7 +3713,7 @@ function createSiteBlocks(kit) {
3647
3713
  { src: "", alt: "Image three", caption: "" }
3648
3714
  ]
3649
3715
  },
3650
- render: ({ id, columns, aspect, images }) => /* @__PURE__ */ jsxRuntime.jsx(chunk6MFI2HPX_cjs.Gallery, { columns, aspect, images, testId: blockTestId(id) })
3716
+ render: ({ id, columns, aspect, images }) => /* @__PURE__ */ jsxRuntime.jsx(chunkYNGRSAGP_cjs.Gallery, { columns, aspect, images, testId: blockTestId(id) })
3651
3717
  };
3652
3718
  const VideoBlock = {
3653
3719
  label: "Video",
@@ -3667,7 +3733,7 @@ function createSiteBlocks(kit) {
3667
3733
  },
3668
3734
  defaultProps: { url: "", title: "", aspect: "16:9", rounded: true },
3669
3735
  render: ({ id, url, title, aspect, rounded }) => /* @__PURE__ */ jsxRuntime.jsx(
3670
- chunk6MFI2HPX_cjs.VideoEmbed,
3736
+ chunkYNGRSAGP_cjs.VideoEmbed,
3671
3737
  {
3672
3738
  url,
3673
3739
  title,
@@ -3716,7 +3782,7 @@ function createSiteBlocks(kit) {
3716
3782
  ]
3717
3783
  },
3718
3784
  render: ({ id, submitLabel, action, successMessage, fields }) => /* @__PURE__ */ jsxRuntime.jsx(
3719
- chunk6MFI2HPX_cjs.ContactForm,
3785
+ chunkYNGRSAGP_cjs.ContactForm,
3720
3786
  {
3721
3787
  submitLabel,
3722
3788
  action: action || void 0,
@@ -3746,7 +3812,7 @@ function createSiteBlocks(kit) {
3746
3812
  cta: { label: "Read more", href: "#" },
3747
3813
  tone: "primary"
3748
3814
  },
3749
- render: ({ id, text, cta, tone }) => /* @__PURE__ */ jsxRuntime.jsx(chunk6MFI2HPX_cjs.Banner, { text, cta, tone, testId: blockTestId(id) })
3815
+ render: ({ id, text, cta, tone }) => /* @__PURE__ */ jsxRuntime.jsx(chunkYNGRSAGP_cjs.Banner, { text, cta, tone, testId: blockTestId(id) })
3750
3816
  };
3751
3817
  const MediaTextBlock = {
3752
3818
  label: "Media & text",
@@ -3774,7 +3840,7 @@ function createSiteBlocks(kit) {
3774
3840
  cta: { label: "Learn more", href: "#" }
3775
3841
  },
3776
3842
  render: ({ id, eyebrow, title, body, imageUrl, mediaSide, cta }) => /* @__PURE__ */ jsxRuntime.jsx(
3777
- chunk6MFI2HPX_cjs.MediaText,
3843
+ chunkYNGRSAGP_cjs.MediaText,
3778
3844
  {
3779
3845
  eyebrow,
3780
3846
  title,
@@ -3811,7 +3877,7 @@ function createSiteBlocks(kit) {
3811
3877
  { name: "Jordan Lee", role: "Lead Engineer", bio: "", avatarUrl: "" }
3812
3878
  ]
3813
3879
  },
3814
- render: ({ id, columns, members }) => /* @__PURE__ */ jsxRuntime.jsx(chunk6MFI2HPX_cjs.TeamGrid, { columns, members, testId: blockTestId(id) })
3880
+ render: ({ id, columns, members }) => /* @__PURE__ */ jsxRuntime.jsx(chunkYNGRSAGP_cjs.TeamGrid, { columns, members, testId: blockTestId(id) })
3815
3881
  };
3816
3882
  const StepsBlock = {
3817
3883
  label: "Steps",
@@ -3843,7 +3909,7 @@ function createSiteBlocks(kit) {
3843
3909
  { title: "Launch", description: "Go live and start seeing results." }
3844
3910
  ]
3845
3911
  },
3846
- render: ({ id, variant, steps }) => /* @__PURE__ */ jsxRuntime.jsx(chunk6MFI2HPX_cjs.Steps, { variant, steps, testId: blockTestId(id) })
3912
+ render: ({ id, variant, steps }) => /* @__PURE__ */ jsxRuntime.jsx(chunkYNGRSAGP_cjs.Steps, { variant, steps, testId: blockTestId(id) })
3847
3913
  };
3848
3914
  const TestimonialGridBlock = {
3849
3915
  label: "Testimonial grid",
@@ -3885,7 +3951,7 @@ function createSiteBlocks(kit) {
3885
3951
  }
3886
3952
  ]
3887
3953
  },
3888
- render: ({ id, columns, items }) => /* @__PURE__ */ jsxRuntime.jsx(chunk6MFI2HPX_cjs.TestimonialGrid, { columns, items, testId: blockTestId(id) })
3954
+ render: ({ id, columns, items }) => /* @__PURE__ */ jsxRuntime.jsx(chunkYNGRSAGP_cjs.TestimonialGrid, { columns, items, testId: blockTestId(id) })
3889
3955
  };
3890
3956
  return {
3891
3957
  Pricing: PricingBlock,
@@ -3929,7 +3995,7 @@ function createArbiBlocksConfig(opts = {}) {
3929
3995
  },
3930
3996
  defaultProps: { title: "Section title", align: "left", invert: false },
3931
3997
  render: ({ id, title, eyebrow, lead, align, invert }) => /* @__PURE__ */ jsxRuntime.jsx("div", { "data-testid": blockTestId(id), children: /* @__PURE__ */ jsxRuntime.jsx(
3932
- chunk6MFI2HPX_cjs.SectionHeading,
3998
+ chunkYNGRSAGP_cjs.SectionHeading,
3933
3999
  {
3934
4000
  title,
3935
4001
  eyebrow,
@@ -4314,7 +4380,7 @@ function createArbiBlocksConfig(opts = {}) {
4314
4380
  Commerce: { title: "Commerce", components: ["Pricing"] },
4315
4381
  Forms: { title: "Forms", components: ["ContactForm"] },
4316
4382
  Navigation: { title: "Navigation", components: ["Navbar", "Footer"] },
4317
- Data: { title: "Data", components: ["MetricRow", "MetricCard", "DataTable"] },
4383
+ Data: { title: "Data", components: ["MetricRow", "MetricCard", "DataTable", "Timeline"] },
4318
4384
  ...opts.liveWidgets ? { Widgets: { title: "Widgets", components: ["AgentActivity", "LiveMetric"] } } : {},
4319
4385
  Primitives: { title: "Primitives", components: ["Button", "Badge", "Separator"] }
4320
4386
  },
@@ -4523,7 +4589,7 @@ function ModuleManager({ store, testIdPrefix = "builder" }) {
4523
4589
  {
4524
4590
  variant: "elevated",
4525
4591
  className: "rounded-xl",
4526
- "data-testid": chunk6MFI2HPX_cjs.tid(`${testIdPrefix}-modules-section`, group.section),
4592
+ "data-testid": chunkYNGRSAGP_cjs.tid(`${testIdPrefix}-modules-section`, group.section),
4527
4593
  children: [
4528
4594
  /* @__PURE__ */ jsxRuntime.jsx(react.CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(react.CardTitle, { className: "text-base", children: group.section }) }),
4529
4595
  /* @__PURE__ */ jsxRuntime.jsx(react.CardContent, { className: "space-y-1.5", children: group.modules.map((m, idx) => {
@@ -4532,7 +4598,7 @@ function ModuleManager({ store, testIdPrefix = "builder" }) {
4532
4598
  "div",
4533
4599
  {
4534
4600
  className: "flex items-center gap-3 rounded-md border border-border/60 bg-card px-3 py-2",
4535
- "data-testid": chunk6MFI2HPX_cjs.tid(`${testIdPrefix}-module`, m.id),
4601
+ "data-testid": chunkYNGRSAGP_cjs.tid(`${testIdPrefix}-module`, m.id),
4536
4602
  children: [
4537
4603
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col", children: [
4538
4604
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -4544,7 +4610,7 @@ function ModuleManager({ store, testIdPrefix = "builder" }) {
4544
4610
  disabled: idx === 0,
4545
4611
  onClick: () => move(m.id, "up"),
4546
4612
  "aria-label": `Move ${m.label} up`,
4547
- "data-testid": chunk6MFI2HPX_cjs.tid(`${testIdPrefix}-module-up`, m.id),
4613
+ "data-testid": chunkYNGRSAGP_cjs.tid(`${testIdPrefix}-module-up`, m.id),
4548
4614
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronUp, { className: "size-3.5" })
4549
4615
  }
4550
4616
  ),
@@ -4557,7 +4623,7 @@ function ModuleManager({ store, testIdPrefix = "builder" }) {
4557
4623
  disabled: idx === group.modules.length - 1,
4558
4624
  onClick: () => move(m.id, "down"),
4559
4625
  "aria-label": `Move ${m.label} down`,
4560
- "data-testid": chunk6MFI2HPX_cjs.tid(`${testIdPrefix}-module-down`, m.id),
4626
+ "data-testid": chunkYNGRSAGP_cjs.tid(`${testIdPrefix}-module-down`, m.id),
4561
4627
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "size-3.5" })
4562
4628
  }
4563
4629
  )
@@ -4577,7 +4643,7 @@ function ModuleManager({ store, testIdPrefix = "builder" }) {
4577
4643
  checked: m.enabled,
4578
4644
  onCheckedChange: () => toggle2(m.id),
4579
4645
  "aria-label": `Enable ${m.label}`,
4580
- "data-testid": chunk6MFI2HPX_cjs.tid(`${testIdPrefix}-module-toggle`, m.id)
4646
+ "data-testid": chunkYNGRSAGP_cjs.tid(`${testIdPrefix}-module-toggle`, m.id)
4581
4647
  }
4582
4648
  )
4583
4649
  ]
@@ -4609,7 +4675,7 @@ function ConfigModelBadge({ configId, testIdPrefix }) {
4609
4675
  react.Badge,
4610
4676
  {
4611
4677
  variant: TIER_VARIANT[tier] ?? "secondary",
4612
- "data-testid": chunk6MFI2HPX_cjs.tid(`${testIdPrefix}-agents-config-tier`, configId),
4678
+ "data-testid": chunkYNGRSAGP_cjs.tid(`${testIdPrefix}-agents-config-tier`, configId),
4613
4679
  children: [
4614
4680
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Cpu, { className: "size-3" }),
4615
4681
  " ",
@@ -4646,14 +4712,14 @@ function AgentsPanel({ store, testIdPrefix = "builder" }) {
4646
4712
  "label",
4647
4713
  {
4648
4714
  className: "flex cursor-pointer items-center gap-3 rounded-md border border-border/60 bg-card px-3 py-2",
4649
- "data-testid": chunk6MFI2HPX_cjs.tid(`${testIdPrefix}-agents-config`, v.external_id),
4715
+ "data-testid": chunkYNGRSAGP_cjs.tid(`${testIdPrefix}-agents-config`, v.external_id),
4650
4716
  children: [
4651
4717
  /* @__PURE__ */ jsxRuntime.jsx(
4652
4718
  react.Checkbox,
4653
4719
  {
4654
4720
  checked: configIds.includes(v.external_id),
4655
4721
  onCheckedChange: () => toggleConfig(v.external_id),
4656
- "data-testid": chunk6MFI2HPX_cjs.tid(`${testIdPrefix}-agents-config-toggle`, v.external_id)
4722
+ "data-testid": chunkYNGRSAGP_cjs.tid(`${testIdPrefix}-agents-config-toggle`, v.external_id)
4657
4723
  }
4658
4724
  ),
4659
4725
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
@@ -4682,14 +4748,14 @@ function AgentsPanel({ store, testIdPrefix = "builder" }) {
4682
4748
  "label",
4683
4749
  {
4684
4750
  className: "flex cursor-pointer items-center gap-3 rounded-md border border-border/60 bg-card px-3 py-2",
4685
- "data-testid": chunk6MFI2HPX_cjs.tid(`${testIdPrefix}-agents-agent`, a.external_id),
4751
+ "data-testid": chunkYNGRSAGP_cjs.tid(`${testIdPrefix}-agents-agent`, a.external_id),
4686
4752
  children: [
4687
4753
  /* @__PURE__ */ jsxRuntime.jsx(
4688
4754
  react.Checkbox,
4689
4755
  {
4690
4756
  checked: agentIds.includes(a.external_id),
4691
4757
  onCheckedChange: () => toggleAgent(a.external_id),
4692
- "data-testid": chunk6MFI2HPX_cjs.tid(`${testIdPrefix}-agents-agent-toggle`, a.external_id)
4758
+ "data-testid": chunkYNGRSAGP_cjs.tid(`${testIdPrefix}-agents-agent-toggle`, a.external_id)
4693
4759
  }
4694
4760
  ),
4695
4761
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
@@ -4776,7 +4842,7 @@ function VerticalBuilder({
4776
4842
  ] })
4777
4843
  ] }),
4778
4844
  /* @__PURE__ */ jsxRuntime.jsx(react.TabsContent, { value: "theme", children: /* @__PURE__ */ jsxRuntime.jsx(
4779
- chunk6MFI2HPX_cjs.ThemeEditor,
4845
+ chunkYNGRSAGP_cjs.ThemeEditor,
4780
4846
  {
4781
4847
  bundle: themeBundle,
4782
4848
  variant: "panel",
@@ -4802,243 +4868,275 @@ function VerticalBuilder({
4802
4868
 
4803
4869
  Object.defineProperty(exports, "ASSET_REF_PREFIX", {
4804
4870
  enumerable: true,
4805
- get: function () { return chunk6MFI2HPX_cjs.ASSET_REF_PREFIX; }
4871
+ get: function () { return chunkYNGRSAGP_cjs.ASSET_REF_PREFIX; }
4806
4872
  });
4807
4873
  Object.defineProperty(exports, "Accordion", {
4808
4874
  enumerable: true,
4809
- get: function () { return chunk6MFI2HPX_cjs.Accordion; }
4875
+ get: function () { return chunkYNGRSAGP_cjs.Accordion; }
4810
4876
  });
4811
4877
  Object.defineProperty(exports, "AssetResolverProvider", {
4812
4878
  enumerable: true,
4813
- get: function () { return chunk6MFI2HPX_cjs.AssetResolverProvider; }
4879
+ get: function () { return chunkYNGRSAGP_cjs.AssetResolverProvider; }
4814
4880
  });
4815
4881
  Object.defineProperty(exports, "AvatarBlock", {
4816
4882
  enumerable: true,
4817
- get: function () { return chunk6MFI2HPX_cjs.AvatarBlock; }
4883
+ get: function () { return chunkYNGRSAGP_cjs.AvatarBlock; }
4818
4884
  });
4819
4885
  Object.defineProperty(exports, "Banner", {
4820
4886
  enumerable: true,
4821
- get: function () { return chunk6MFI2HPX_cjs.Banner; }
4887
+ get: function () { return chunkYNGRSAGP_cjs.Banner; }
4822
4888
  });
4823
4889
  Object.defineProperty(exports, "BlockImage", {
4824
4890
  enumerable: true,
4825
- get: function () { return chunk6MFI2HPX_cjs.BlockImage; }
4891
+ get: function () { return chunkYNGRSAGP_cjs.BlockImage; }
4826
4892
  });
4827
4893
  Object.defineProperty(exports, "BlockLink", {
4828
4894
  enumerable: true,
4829
- get: function () { return chunk6MFI2HPX_cjs.BlockLink; }
4895
+ get: function () { return chunkYNGRSAGP_cjs.BlockLink; }
4830
4896
  });
4831
4897
  Object.defineProperty(exports, "CTABanner", {
4832
4898
  enumerable: true,
4833
- get: function () { return chunk6MFI2HPX_cjs.CTABanner; }
4899
+ get: function () { return chunkYNGRSAGP_cjs.CTABanner; }
4834
4900
  });
4835
4901
  Object.defineProperty(exports, "Callout", {
4836
4902
  enumerable: true,
4837
- get: function () { return chunk6MFI2HPX_cjs.Callout; }
4903
+ get: function () { return chunkYNGRSAGP_cjs.Callout; }
4838
4904
  });
4839
4905
  Object.defineProperty(exports, "Columns", {
4840
4906
  enumerable: true,
4841
- get: function () { return chunk6MFI2HPX_cjs.Columns; }
4907
+ get: function () { return chunkYNGRSAGP_cjs.Columns; }
4842
4908
  });
4843
4909
  Object.defineProperty(exports, "ContactForm", {
4844
4910
  enumerable: true,
4845
- get: function () { return chunk6MFI2HPX_cjs.ContactForm; }
4911
+ get: function () { return chunkYNGRSAGP_cjs.ContactForm; }
4846
4912
  });
4847
4913
  Object.defineProperty(exports, "Container", {
4848
4914
  enumerable: true,
4849
- get: function () { return chunk6MFI2HPX_cjs.Container; }
4915
+ get: function () { return chunkYNGRSAGP_cjs.Container; }
4850
4916
  });
4851
4917
  Object.defineProperty(exports, "FAQ", {
4852
4918
  enumerable: true,
4853
- get: function () { return chunk6MFI2HPX_cjs.FAQ; }
4919
+ get: function () { return chunkYNGRSAGP_cjs.FAQ; }
4854
4920
  });
4855
4921
  Object.defineProperty(exports, "FONT_PAIRINGS", {
4856
4922
  enumerable: true,
4857
- get: function () { return chunk6MFI2HPX_cjs.FONT_PAIRINGS; }
4923
+ get: function () { return chunkYNGRSAGP_cjs.FONT_PAIRINGS; }
4858
4924
  });
4859
4925
  Object.defineProperty(exports, "FeatureGrid", {
4860
4926
  enumerable: true,
4861
- get: function () { return chunk6MFI2HPX_cjs.FeatureGrid; }
4927
+ get: function () { return chunkYNGRSAGP_cjs.FeatureGrid; }
4862
4928
  });
4863
4929
  Object.defineProperty(exports, "Footer", {
4864
4930
  enumerable: true,
4865
- get: function () { return chunk6MFI2HPX_cjs.Footer; }
4931
+ get: function () { return chunkYNGRSAGP_cjs.Footer; }
4866
4932
  });
4867
4933
  Object.defineProperty(exports, "Gallery", {
4868
4934
  enumerable: true,
4869
- get: function () { return chunk6MFI2HPX_cjs.Gallery; }
4935
+ get: function () { return chunkYNGRSAGP_cjs.Gallery; }
4870
4936
  });
4871
4937
  Object.defineProperty(exports, "Hero", {
4872
4938
  enumerable: true,
4873
- get: function () { return chunk6MFI2HPX_cjs.Hero; }
4939
+ get: function () { return chunkYNGRSAGP_cjs.Hero; }
4874
4940
  });
4875
4941
  Object.defineProperty(exports, "ListBlock", {
4876
4942
  enumerable: true,
4877
- get: function () { return chunk6MFI2HPX_cjs.ListBlock; }
4943
+ get: function () { return chunkYNGRSAGP_cjs.ListBlock; }
4878
4944
  });
4879
4945
  Object.defineProperty(exports, "LogoCloud", {
4880
4946
  enumerable: true,
4881
- get: function () { return chunk6MFI2HPX_cjs.LogoCloud; }
4947
+ get: function () { return chunkYNGRSAGP_cjs.LogoCloud; }
4882
4948
  });
4883
4949
  Object.defineProperty(exports, "MediaText", {
4884
4950
  enumerable: true,
4885
- get: function () { return chunk6MFI2HPX_cjs.MediaText; }
4951
+ get: function () { return chunkYNGRSAGP_cjs.MediaText; }
4886
4952
  });
4887
4953
  Object.defineProperty(exports, "Navbar", {
4888
4954
  enumerable: true,
4889
- get: function () { return chunk6MFI2HPX_cjs.Navbar; }
4955
+ get: function () { return chunkYNGRSAGP_cjs.Navbar; }
4890
4956
  });
4891
4957
  Object.defineProperty(exports, "PricingTable", {
4892
4958
  enumerable: true,
4893
- get: function () { return chunk6MFI2HPX_cjs.PricingTable; }
4959
+ get: function () { return chunkYNGRSAGP_cjs.PricingTable; }
4894
4960
  });
4895
4961
  Object.defineProperty(exports, "RichTextBlock", {
4896
4962
  enumerable: true,
4897
- get: function () { return chunk6MFI2HPX_cjs.RichTextBlock; }
4963
+ get: function () { return chunkYNGRSAGP_cjs.RichTextBlock; }
4898
4964
  });
4899
4965
  Object.defineProperty(exports, "SectionHeading", {
4900
4966
  enumerable: true,
4901
- get: function () { return chunk6MFI2HPX_cjs.SectionHeading; }
4967
+ get: function () { return chunkYNGRSAGP_cjs.SectionHeading; }
4902
4968
  });
4903
4969
  Object.defineProperty(exports, "Spacer", {
4904
4970
  enumerable: true,
4905
- get: function () { return chunk6MFI2HPX_cjs.Spacer; }
4971
+ get: function () { return chunkYNGRSAGP_cjs.Spacer; }
4906
4972
  });
4907
4973
  Object.defineProperty(exports, "Steps", {
4908
4974
  enumerable: true,
4909
- get: function () { return chunk6MFI2HPX_cjs.Steps; }
4975
+ get: function () { return chunkYNGRSAGP_cjs.Steps; }
4910
4976
  });
4911
4977
  Object.defineProperty(exports, "THEME_STYLE_ID", {
4912
4978
  enumerable: true,
4913
- get: function () { return chunk6MFI2HPX_cjs.THEME_STYLE_ID; }
4979
+ get: function () { return chunkYNGRSAGP_cjs.THEME_STYLE_ID; }
4914
4980
  });
4915
4981
  Object.defineProperty(exports, "Tabs", {
4916
4982
  enumerable: true,
4917
- get: function () { return chunk6MFI2HPX_cjs.Tabs; }
4983
+ get: function () { return chunkYNGRSAGP_cjs.Tabs; }
4918
4984
  });
4919
4985
  Object.defineProperty(exports, "TeamGrid", {
4920
4986
  enumerable: true,
4921
- get: function () { return chunk6MFI2HPX_cjs.TeamGrid; }
4987
+ get: function () { return chunkYNGRSAGP_cjs.TeamGrid; }
4922
4988
  });
4923
4989
  Object.defineProperty(exports, "Testimonial", {
4924
4990
  enumerable: true,
4925
- get: function () { return chunk6MFI2HPX_cjs.Testimonial; }
4991
+ get: function () { return chunkYNGRSAGP_cjs.Testimonial; }
4926
4992
  });
4927
4993
  Object.defineProperty(exports, "TestimonialGrid", {
4928
4994
  enumerable: true,
4929
- get: function () { return chunk6MFI2HPX_cjs.TestimonialGrid; }
4995
+ get: function () { return chunkYNGRSAGP_cjs.TestimonialGrid; }
4930
4996
  });
4931
4997
  Object.defineProperty(exports, "ThemeEditor", {
4932
4998
  enumerable: true,
4933
- get: function () { return chunk6MFI2HPX_cjs.ThemeEditor; }
4999
+ get: function () { return chunkYNGRSAGP_cjs.ThemeEditor; }
5000
+ });
5001
+ Object.defineProperty(exports, "Timeline", {
5002
+ enumerable: true,
5003
+ get: function () { return chunkYNGRSAGP_cjs.Timeline; }
5004
+ });
5005
+ Object.defineProperty(exports, "TimelineCalendar", {
5006
+ enumerable: true,
5007
+ get: function () { return chunkYNGRSAGP_cjs.TimelineCalendar; }
5008
+ });
5009
+ Object.defineProperty(exports, "TimelineGantt", {
5010
+ enumerable: true,
5011
+ get: function () { return chunkYNGRSAGP_cjs.TimelineGantt; }
4934
5012
  });
4935
5013
  Object.defineProperty(exports, "VideoEmbed", {
4936
5014
  enumerable: true,
4937
- get: function () { return chunk6MFI2HPX_cjs.VideoEmbed; }
5015
+ get: function () { return chunkYNGRSAGP_cjs.VideoEmbed; }
4938
5016
  });
4939
5017
  Object.defineProperty(exports, "applyFontVars", {
4940
5018
  enumerable: true,
4941
- get: function () { return chunk6MFI2HPX_cjs.applyFontVars; }
5019
+ get: function () { return chunkYNGRSAGP_cjs.applyFontVars; }
4942
5020
  });
4943
5021
  Object.defineProperty(exports, "applyStoredTheme", {
4944
5022
  enumerable: true,
4945
- get: function () { return chunk6MFI2HPX_cjs.applyStoredTheme; }
5023
+ get: function () { return chunkYNGRSAGP_cjs.applyStoredTheme; }
4946
5024
  });
4947
5025
  Object.defineProperty(exports, "applyThemeVars", {
4948
5026
  enumerable: true,
4949
- get: function () { return chunk6MFI2HPX_cjs.applyThemeVars; }
5027
+ get: function () { return chunkYNGRSAGP_cjs.applyThemeVars; }
4950
5028
  });
4951
5029
  Object.defineProperty(exports, "asAssetRef", {
4952
5030
  enumerable: true,
4953
- get: function () { return chunk6MFI2HPX_cjs.asAssetRef; }
5031
+ get: function () { return chunkYNGRSAGP_cjs.asAssetRef; }
4954
5032
  });
4955
5033
  Object.defineProperty(exports, "assetRefId", {
4956
5034
  enumerable: true,
4957
- get: function () { return chunk6MFI2HPX_cjs.assetRefId; }
5035
+ get: function () { return chunkYNGRSAGP_cjs.assetRefId; }
4958
5036
  });
4959
5037
  Object.defineProperty(exports, "clearFontVars", {
4960
5038
  enumerable: true,
4961
- get: function () { return chunk6MFI2HPX_cjs.clearFontVars; }
5039
+ get: function () { return chunkYNGRSAGP_cjs.clearFontVars; }
4962
5040
  });
4963
5041
  Object.defineProperty(exports, "clearThemeVars", {
4964
5042
  enumerable: true,
4965
- get: function () { return chunk6MFI2HPX_cjs.clearThemeVars; }
5043
+ get: function () { return chunkYNGRSAGP_cjs.clearThemeVars; }
4966
5044
  });
4967
5045
  Object.defineProperty(exports, "createThemeStore", {
4968
5046
  enumerable: true,
4969
- get: function () { return chunk6MFI2HPX_cjs.createThemeStore; }
5047
+ get: function () { return chunkYNGRSAGP_cjs.createThemeStore; }
5048
+ });
5049
+ Object.defineProperty(exports, "dayKey", {
5050
+ enumerable: true,
5051
+ get: function () { return chunkYNGRSAGP_cjs.dayKey; }
4970
5052
  });
4971
5053
  Object.defineProperty(exports, "daysUntil", {
4972
5054
  enumerable: true,
4973
- get: function () { return chunk6MFI2HPX_cjs.daysUntil; }
5055
+ get: function () { return chunkYNGRSAGP_cjs.daysUntil; }
4974
5056
  });
4975
5057
  Object.defineProperty(exports, "fmtDate", {
4976
5058
  enumerable: true,
4977
- get: function () { return chunk6MFI2HPX_cjs.fmtDate; }
5059
+ get: function () { return chunkYNGRSAGP_cjs.fmtDate; }
4978
5060
  });
4979
5061
  Object.defineProperty(exports, "fmtDateTime", {
4980
5062
  enumerable: true,
4981
- get: function () { return chunk6MFI2HPX_cjs.fmtDateTime; }
5063
+ get: function () { return chunkYNGRSAGP_cjs.fmtDateTime; }
4982
5064
  });
4983
5065
  Object.defineProperty(exports, "fontPackages", {
4984
5066
  enumerable: true,
4985
- get: function () { return chunk6MFI2HPX_cjs.fontPackages; }
5067
+ get: function () { return chunkYNGRSAGP_cjs.fontPackages; }
4986
5068
  });
4987
5069
  Object.defineProperty(exports, "formatPageRefs", {
4988
5070
  enumerable: true,
4989
- get: function () { return chunk6MFI2HPX_cjs.formatPageRefs; }
5071
+ get: function () { return chunkYNGRSAGP_cjs.formatPageRefs; }
5072
+ });
5073
+ Object.defineProperty(exports, "formatSpan", {
5074
+ enumerable: true,
5075
+ get: function () { return chunkYNGRSAGP_cjs.formatSpan; }
4990
5076
  });
4991
5077
  Object.defineProperty(exports, "fromNow", {
4992
5078
  enumerable: true,
4993
- get: function () { return chunk6MFI2HPX_cjs.fromNow; }
5079
+ get: function () { return chunkYNGRSAGP_cjs.fromNow; }
4994
5080
  });
4995
5081
  Object.defineProperty(exports, "gbp", {
4996
5082
  enumerable: true,
4997
- get: function () { return chunk6MFI2HPX_cjs.gbp; }
5083
+ get: function () { return chunkYNGRSAGP_cjs.gbp; }
4998
5084
  });
4999
5085
  Object.defineProperty(exports, "getFontPairing", {
5000
5086
  enumerable: true,
5001
- get: function () { return chunk6MFI2HPX_cjs.getFontPairing; }
5087
+ get: function () { return chunkYNGRSAGP_cjs.getFontPairing; }
5002
5088
  });
5003
5089
  Object.defineProperty(exports, "hrs", {
5004
5090
  enumerable: true,
5005
- get: function () { return chunk6MFI2HPX_cjs.hrs; }
5091
+ get: function () { return chunkYNGRSAGP_cjs.hrs; }
5006
5092
  });
5007
5093
  Object.defineProperty(exports, "initials", {
5008
5094
  enumerable: true,
5009
- get: function () { return chunk6MFI2HPX_cjs.initials; }
5095
+ get: function () { return chunkYNGRSAGP_cjs.initials; }
5010
5096
  });
5011
5097
  Object.defineProperty(exports, "isAssetRef", {
5012
5098
  enumerable: true,
5013
- get: function () { return chunk6MFI2HPX_cjs.isAssetRef; }
5099
+ get: function () { return chunkYNGRSAGP_cjs.isAssetRef; }
5014
5100
  });
5015
5101
  Object.defineProperty(exports, "matchFontPairing", {
5016
5102
  enumerable: true,
5017
- get: function () { return chunk6MFI2HPX_cjs.matchFontPairing; }
5103
+ get: function () { return chunkYNGRSAGP_cjs.matchFontPairing; }
5104
+ });
5105
+ Object.defineProperty(exports, "monthLabel", {
5106
+ enumerable: true,
5107
+ get: function () { return chunkYNGRSAGP_cjs.monthLabel; }
5108
+ });
5109
+ Object.defineProperty(exports, "parseIso", {
5110
+ enumerable: true,
5111
+ get: function () { return chunkYNGRSAGP_cjs.parseIso; }
5018
5112
  });
5019
5113
  Object.defineProperty(exports, "pct", {
5020
5114
  enumerable: true,
5021
- get: function () { return chunk6MFI2HPX_cjs.pct; }
5115
+ get: function () { return chunkYNGRSAGP_cjs.pct; }
5022
5116
  });
5023
5117
  Object.defineProperty(exports, "tid", {
5024
5118
  enumerable: true,
5025
- get: function () { return chunk6MFI2HPX_cjs.tid; }
5119
+ get: function () { return chunkYNGRSAGP_cjs.tid; }
5026
5120
  });
5027
5121
  Object.defineProperty(exports, "toEmbedUrl", {
5028
5122
  enumerable: true,
5029
- get: function () { return chunk6MFI2HPX_cjs.toEmbedUrl; }
5123
+ get: function () { return chunkYNGRSAGP_cjs.toEmbedUrl; }
5030
5124
  });
5031
5125
  Object.defineProperty(exports, "toHslTriplet", {
5032
5126
  enumerable: true,
5033
- get: function () { return chunk6MFI2HPX_cjs.toHslTriplet; }
5127
+ get: function () { return chunkYNGRSAGP_cjs.toHslTriplet; }
5034
5128
  });
5035
5129
  Object.defineProperty(exports, "useAssetRenderer", {
5036
5130
  enumerable: true,
5037
- get: function () { return chunk6MFI2HPX_cjs.useAssetRenderer; }
5131
+ get: function () { return chunkYNGRSAGP_cjs.useAssetRenderer; }
5038
5132
  });
5039
5133
  Object.defineProperty(exports, "useAssetResolverActive", {
5040
5134
  enumerable: true,
5041
- get: function () { return chunk6MFI2HPX_cjs.useAssetResolverActive; }
5135
+ get: function () { return chunkYNGRSAGP_cjs.useAssetResolverActive; }
5136
+ });
5137
+ Object.defineProperty(exports, "utcDay", {
5138
+ enumerable: true,
5139
+ get: function () { return chunkYNGRSAGP_cjs.utcDay; }
5042
5140
  });
5043
5141
  Object.defineProperty(exports, "DocumentCard", {
5044
5142
  enumerable: true,