@measured/puck-plugin-heading-analyzer 0.21.0-canary.e9d5c0ea → 0.21.0-canary.ec77dd9f

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.mjs CHANGED
@@ -269,17 +269,17 @@ import { useEffect as useEffect5, useState } from "react";
269
269
 
270
270
  // css-module:/home/runner/work/puck/puck/packages/plugin-heading-analyzer/src/HeadingAnalyzer.module.css#css-module
271
271
  init_react_import();
272
- var HeadingAnalyzer_module_default = { "HeadingAnalyzer": "_HeadingAnalyzer_yg0s7_1", "HeadingAnalyzer-cssWarning": "_HeadingAnalyzer-cssWarning_yg0s7_6", "HeadingAnalyzerItem": "_HeadingAnalyzerItem_yg0s7_10", "HeadingAnalyzerItem--missing": "_HeadingAnalyzerItem--missing_yg0s7_14" };
272
+ var HeadingAnalyzer_module_default = { "HeadingAnalyzer": "_HeadingAnalyzer_116v6_1", "HeadingAnalyzer-cssWarning": "_HeadingAnalyzer-cssWarning_116v6_5", "HeadingAnalyzerItem": "_HeadingAnalyzerItem_116v6_9", "HeadingAnalyzerItem--missing": "_HeadingAnalyzerItem--missing_116v6_13" };
273
273
 
274
274
  // src/HeadingAnalyzer.tsx
275
275
  import { createUsePuck } from "@measured/puck";
276
276
 
277
- // ../core/components/OutlineList/index.tsx
277
+ // ../core/components/SidebarSection/index.tsx
278
278
  init_react_import();
279
279
 
280
- // css-module:/home/runner/work/puck/puck/packages/core/components/OutlineList/styles.module.css#css-module
280
+ // css-module:/home/runner/work/puck/puck/packages/core/components/SidebarSection/styles.module.css#css-module
281
281
  init_react_import();
282
- var styles_module_default = { "OutlineList": "_OutlineList_w4lzv_1", "OutlineListItem": "_OutlineListItem_w4lzv_25", "OutlineListItem--clickable": "_OutlineListItem--clickable_w4lzv_45" };
282
+ var styles_module_default = { "SidebarSection": "_SidebarSection_8boj8_1", "SidebarSection-title": "_SidebarSection-title_8boj8_12", "SidebarSection--noBorderTop": "_SidebarSection--noBorderTop_8boj8_20", "SidebarSection-content": "_SidebarSection-content_8boj8_24", "SidebarSection--noPadding": "_SidebarSection--noPadding_8boj8_28", "SidebarSection-breadcrumbLabel": "_SidebarSection-breadcrumbLabel_8boj8_41", "SidebarSection-breadcrumbs": "_SidebarSection-breadcrumbs_8boj8_70", "SidebarSection-breadcrumb": "_SidebarSection-breadcrumb_8boj8_41", "SidebarSection-heading": "_SidebarSection-heading_8boj8_82", "SidebarSection-loadingOverlay": "_SidebarSection-loadingOverlay_8boj8_86" };
283
283
 
284
284
  // ../core/lib/get-class-name-factory.ts
285
285
  init_react_import();
@@ -308,50 +308,29 @@ var getClassNameFactory = (rootClass, styles, config = { baseClass: "" }) => (op
308
308
  };
309
309
  var get_class_name_factory_default = getClassNameFactory;
310
310
 
311
- // ../core/components/OutlineList/index.tsx
311
+ // ../core/components/Heading/index.tsx
312
+ init_react_import();
313
+
314
+ // css-module:/home/runner/work/puck/puck/packages/core/components/Heading/styles.module.css#css-module
315
+ init_react_import();
316
+ var styles_module_default2 = { "Heading": "_Heading_qxrry_1", "Heading--xxxxl": "_Heading--xxxxl_qxrry_12", "Heading--xxxl": "_Heading--xxxl_qxrry_18", "Heading--xxl": "_Heading--xxl_qxrry_22", "Heading--xl": "_Heading--xl_qxrry_26", "Heading--l": "_Heading--l_qxrry_30", "Heading--m": "_Heading--m_qxrry_34", "Heading--s": "_Heading--s_qxrry_38", "Heading--xs": "_Heading--xs_qxrry_42" };
317
+
318
+ // ../core/components/Heading/index.tsx
312
319
  import { jsx } from "react/jsx-runtime";
313
- var getClassName = get_class_name_factory_default("OutlineList", styles_module_default);
314
- var getClassNameItem = get_class_name_factory_default("OutlineListItem", styles_module_default);
315
- var OutlineList = ({ children }) => {
316
- return /* @__PURE__ */ jsx("ul", { className: getClassName(), children });
317
- };
318
- OutlineList.Clickable = ({ children }) => /* @__PURE__ */ jsx("div", { className: getClassNameItem({ clickable: true }), children });
319
- OutlineList.Item = ({
320
- children,
321
- onClick
322
- }) => {
320
+ var getClassName = get_class_name_factory_default("Heading", styles_module_default2);
321
+ var Heading = ({ children, rank, size = "m" }) => {
322
+ const Tag = rank ? `h${rank}` : "span";
323
323
  return /* @__PURE__ */ jsx(
324
- "li",
324
+ Tag,
325
325
  {
326
- className: getClassNameItem({ clickable: !!onClick }),
327
- onClick,
326
+ className: getClassName({
327
+ [size]: true
328
+ }),
328
329
  children
329
330
  }
330
331
  );
331
332
  };
332
333
 
333
- // ../core/lib/scroll-into-view.ts
334
- init_react_import();
335
- var scrollIntoView = (el) => {
336
- const oldStyle = __spreadValues({}, el.style);
337
- el.style.scrollMargin = "256px";
338
- if (el) {
339
- el == null ? void 0 : el.scrollIntoView({ behavior: "smooth" });
340
- el.style.scrollMargin = oldStyle.scrollMargin || "";
341
- }
342
- };
343
-
344
- // ../core/lib/get-frame.ts
345
- init_react_import();
346
- var getFrame = () => {
347
- if (typeof window === "undefined") return;
348
- let frameEl = document.querySelector("#preview-frame");
349
- if ((frameEl == null ? void 0 : frameEl.tagName) === "IFRAME") {
350
- return frameEl.contentDocument || document;
351
- }
352
- return (frameEl == null ? void 0 : frameEl.ownerDocument) || document;
353
- };
354
-
355
334
  // ../../node_modules/lucide-react/dist/esm/lucide-react.js
356
335
  init_react_import();
357
336
 
@@ -439,29 +418,15 @@ var createLucideIcon = (iconName, iconNode) => {
439
418
  return Component;
440
419
  };
441
420
 
442
- // ../../node_modules/lucide-react/dist/esm/icons/heading-1.js
421
+ // ../../node_modules/lucide-react/dist/esm/icons/chevron-right.js
443
422
  init_react_import();
444
- var Heading1 = createLucideIcon("Heading1", [
445
- ["path", { d: "M4 12h8", key: "17cfdx" }],
446
- ["path", { d: "M4 18V6", key: "1rz3zl" }],
447
- ["path", { d: "M12 18V6", key: "zqpxq5" }],
448
- ["path", { d: "m17 12 3-2v8", key: "1hhhft" }]
423
+ var ChevronRight = createLucideIcon("ChevronRight", [
424
+ ["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]
449
425
  ]);
450
426
 
451
- // ../core/lib/index.ts
452
- init_react_import();
453
-
454
- // ../core/lib/filter.ts
455
- init_react_import();
456
-
457
- // ../core/lib/data/reorder.ts
458
- init_react_import();
459
-
460
- // ../core/lib/data/replace.ts
461
- init_react_import();
462
-
463
- // ../core/lib/use-reset-auto-zoom.ts
427
+ // ../core/lib/use-breadcrumbs.ts
464
428
  init_react_import();
429
+ import { useMemo } from "react";
465
430
 
466
431
  // ../core/store/index.ts
467
432
  init_react_import();
@@ -841,10 +806,10 @@ var insert = (list, index, item) => {
841
806
  // ../core/lib/generate-id.ts
842
807
  init_react_import();
843
808
 
844
- // ../../node_modules/uuid/dist/esm-node/index.js
809
+ // ../core/node_modules/uuid/dist/esm-node/index.js
845
810
  init_react_import();
846
811
 
847
- // ../../node_modules/uuid/dist/esm-node/rng.js
812
+ // ../core/node_modules/uuid/dist/esm-node/rng.js
848
813
  init_react_import();
849
814
  import crypto from "crypto";
850
815
  var rnds8Pool = new Uint8Array(256);
@@ -857,7 +822,7 @@ function rng() {
857
822
  return rnds8Pool.slice(poolPtr, poolPtr += 16);
858
823
  }
859
824
 
860
- // ../../node_modules/uuid/dist/esm-node/stringify.js
825
+ // ../core/node_modules/uuid/dist/esm-node/stringify.js
861
826
  init_react_import();
862
827
  var byteToHex = [];
863
828
  for (let i = 0; i < 256; ++i) {
@@ -867,17 +832,17 @@ function unsafeStringify(arr, offset = 0) {
867
832
  return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];
868
833
  }
869
834
 
870
- // ../../node_modules/uuid/dist/esm-node/v4.js
835
+ // ../core/node_modules/uuid/dist/esm-node/v4.js
871
836
  init_react_import();
872
837
 
873
- // ../../node_modules/uuid/dist/esm-node/native.js
838
+ // ../core/node_modules/uuid/dist/esm-node/native.js
874
839
  init_react_import();
875
840
  import crypto2 from "crypto";
876
841
  var native_default = {
877
842
  randomUUID: crypto2.randomUUID
878
843
  };
879
844
 
880
- // ../../node_modules/uuid/dist/esm-node/v4.js
845
+ // ../core/node_modules/uuid/dist/esm-node/v4.js
881
846
  function v4(options, buf, offset) {
882
847
  if (native_default.randomUUID && !buf && !options) {
883
848
  return native_default.randomUUID();
@@ -1431,8 +1396,7 @@ init_react_import();
1431
1396
  var defaultViewports = [
1432
1397
  { width: 360, height: "auto", icon: "Smartphone", label: "Small" },
1433
1398
  { width: 768, height: "auto", icon: "Tablet", label: "Medium" },
1434
- { width: 1280, height: "auto", icon: "Monitor", label: "Large" },
1435
- { width: "100%", height: "auto", icon: "FullWidth", label: "Full-width" }
1399
+ { width: 1280, height: "auto", icon: "Monitor", label: "Large" }
1436
1400
  ];
1437
1401
 
1438
1402
  // ../../node_modules/zustand/esm/vanilla.mjs
@@ -1458,7 +1422,7 @@ var createStoreImpl = (createState) => {
1458
1422
  const initialState = state = createState(setState, getState, api);
1459
1423
  return api;
1460
1424
  };
1461
- var createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;
1425
+ var createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);
1462
1426
 
1463
1427
  // ../../node_modules/zustand/esm/react.mjs
1464
1428
  init_react_import();
@@ -1467,8 +1431,8 @@ var identity = (arg) => arg;
1467
1431
  function useStore(api, selector = identity) {
1468
1432
  const slice = React2.useSyncExternalStore(
1469
1433
  api.subscribe,
1470
- () => selector(api.getState()),
1471
- () => selector(api.getInitialState())
1434
+ React2.useCallback(() => selector(api.getState()), [api, selector]),
1435
+ React2.useCallback(() => selector(api.getInitialState()), [api, selector])
1472
1436
  );
1473
1437
  React2.useDebugValue(slice);
1474
1438
  return slice;
@@ -1479,13 +1443,13 @@ var createImpl = (createState) => {
1479
1443
  Object.assign(useBoundStore, api);
1480
1444
  return useBoundStore;
1481
1445
  };
1482
- var create = (createState) => createState ? createImpl(createState) : createImpl;
1446
+ var create = ((createState) => createState ? createImpl(createState) : createImpl);
1483
1447
 
1484
1448
  // ../../node_modules/zustand/esm/middleware.mjs
1485
1449
  init_react_import();
1486
1450
  var subscribeWithSelectorImpl = (fn) => (set, get, api) => {
1487
1451
  const origSubscribe = api.subscribe;
1488
- api.subscribe = (selector, optListener, options) => {
1452
+ api.subscribe = ((selector, optListener, options) => {
1489
1453
  let listener = selector;
1490
1454
  if (optListener) {
1491
1455
  const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;
@@ -1502,7 +1466,7 @@ var subscribeWithSelectorImpl = (fn) => (set, get, api) => {
1502
1466
  }
1503
1467
  }
1504
1468
  return origSubscribe(listener);
1505
- };
1469
+ });
1506
1470
  const initialState = fn(set, get, api);
1507
1471
  return initialState;
1508
1472
  };
@@ -1719,9 +1683,9 @@ function createIsCircular(areItemsEqual) {
1719
1683
  function getStrictProperties(object) {
1720
1684
  return getOwnPropertyNames(object).concat(getOwnPropertySymbols(object));
1721
1685
  }
1722
- var hasOwn = Object.hasOwn || function(object, property) {
1686
+ var hasOwn = Object.hasOwn || (function(object, property) {
1723
1687
  return hasOwnProperty.call(object, property);
1724
- };
1688
+ });
1725
1689
  function sameValueZeroEqual(a, b) {
1726
1690
  return a === b || !a && !b && a !== a && b !== b;
1727
1691
  }
@@ -2111,10 +2075,10 @@ var getChanged = (newItem, oldItem) => {
2111
2075
 
2112
2076
  // ../core/store/slices/permissions.ts
2113
2077
  var createPermissionsSlice = (set, get) => {
2114
- const resolvePermissions = (..._0) => __async(void 0, [..._0], function* (params = {}, force) {
2078
+ const resolvePermissions = (..._0) => __async(null, [..._0], function* (params = {}, force) {
2115
2079
  const { state, permissions, config } = get();
2116
2080
  const { cache: cache2, globalPermissions } = permissions;
2117
- const resolveDataForItem = (item2, force2 = false) => __async(void 0, null, function* () {
2081
+ const resolveDataForItem = (item2, force2 = false) => __async(null, null, function* () {
2118
2082
  var _a, _b, _c;
2119
2083
  const { config: config2, state: appState, setComponentLoading } = get();
2120
2084
  const componentConfig = item2.type === "root" ? config2.root : config2.components[item2.type];
@@ -2169,13 +2133,13 @@ var createPermissionsSlice = (set, get) => {
2169
2133
  if (item) {
2170
2134
  yield resolveDataForItem(item, force);
2171
2135
  } else if (type) {
2172
- flattenData(state, config).filter((item2) => item2.type === type).map((item2) => __async(void 0, null, function* () {
2136
+ flattenData(state, config).filter((item2) => item2.type === type).map((item2) => __async(null, null, function* () {
2173
2137
  yield resolveDataForItem(item2, force);
2174
2138
  }));
2175
2139
  } else if (root) {
2176
2140
  resolveDataForRoot(force);
2177
2141
  } else {
2178
- flattenData(state, config).map((item2) => __async(void 0, null, function* () {
2142
+ flattenData(state, config).map((item2) => __async(null, null, function* () {
2179
2143
  yield resolveDataForItem(item2, force);
2180
2144
  }));
2181
2145
  }
@@ -2230,7 +2194,7 @@ var createFieldsSlice = (_set, _get) => {
2230
2194
  // ../core/lib/resolve-component-data.ts
2231
2195
  init_react_import();
2232
2196
  var cache = { lastChange: {} };
2233
- var resolveComponentData = (_0, _1, ..._2) => __async(void 0, [_0, _1, ..._2], function* (item, config, metadata = {}, onResolveStart, onResolveEnd, trigger = "replace") {
2197
+ var resolveComponentData = (_0, _1, ..._2) => __async(null, [_0, _1, ..._2], function* (item, config, metadata = {}, onResolveStart, onResolveEnd, trigger = "replace") {
2234
2198
  const configForItem = "type" in item && item.type !== "root" ? config.components[item.type] : config.root;
2235
2199
  const resolvedItem = __spreadValues({}, item);
2236
2200
  const shouldRunResolver = (configForItem == null ? void 0 : configForItem.resolveData) && item.props;
@@ -2258,11 +2222,11 @@ var resolveComponentData = (_0, _1, ..._2) => __async(void 0, [_0, _1, ..._2], f
2258
2222
  let itemWithResolvedChildren = yield mapFields(
2259
2223
  resolvedItem,
2260
2224
  {
2261
- slot: (_02) => __async(void 0, [_02], function* ({ value }) {
2225
+ slot: (_02) => __async(null, [_02], function* ({ value }) {
2262
2226
  const content = value;
2263
2227
  return yield Promise.all(
2264
2228
  content.map(
2265
- (childItem) => __async(void 0, null, function* () {
2229
+ (childItem) => __async(null, null, function* () {
2266
2230
  return (yield resolveComponentData(
2267
2231
  childItem,
2268
2232
  config,
@@ -2328,8 +2292,7 @@ var defaultAppState = {
2328
2292
  options: [],
2329
2293
  controlsVisible: true
2330
2294
  },
2331
- field: { focus: null },
2332
- plugin: { current: null }
2295
+ field: { focus: null }
2333
2296
  },
2334
2297
  indexes: {
2335
2298
  nodes: {},
@@ -2345,7 +2308,6 @@ var createAppStore = (initialAppStore) => create()(
2345
2308
  subscribeWithSelector((set, get) => {
2346
2309
  var _a, _b;
2347
2310
  return __spreadProps(__spreadValues({
2348
- instanceId: generateId(),
2349
2311
  state: defaultAppState,
2350
2312
  config: { components: {} },
2351
2313
  componentState: {},
@@ -2454,7 +2416,7 @@ var createAppStore = (initialAppStore) => create()(
2454
2416
  const selectedItem = state.ui.itemSelector ? getItem(state.ui.itemSelector, state) : null;
2455
2417
  return __spreadProps(__spreadValues({}, s), { state, selectedItem });
2456
2418
  }),
2457
- resolveComponentData: (componentData, trigger) => __async(void 0, null, function* () {
2419
+ resolveComponentData: (componentData, trigger) => __async(null, null, function* () {
2458
2420
  const { config, metadata, setComponentLoading, permissions } = get();
2459
2421
  const timeouts = {};
2460
2422
  return yield resolveComponentData(
@@ -2465,7 +2427,7 @@ var createAppStore = (initialAppStore) => create()(
2465
2427
  const id = "id" in item.props ? item.props.id : "root";
2466
2428
  timeouts[id] = setComponentLoading(id, true, 50);
2467
2429
  },
2468
- (item) => __async(void 0, null, function* () {
2430
+ (item) => __async(null, null, function* () {
2469
2431
  const id = "id" in item.props ? item.props.id : "root";
2470
2432
  if ("type" in item) {
2471
2433
  yield permissions.refreshPermissions({ item });
@@ -2477,7 +2439,7 @@ var createAppStore = (initialAppStore) => create()(
2477
2439
  trigger
2478
2440
  );
2479
2441
  }),
2480
- resolveAndCommitData: () => __async(void 0, null, function* () {
2442
+ resolveAndCommitData: () => __async(null, null, function* () {
2481
2443
  const { config, state, dispatch, resolveComponentData: resolveComponentData2 } = get();
2482
2444
  walkAppState(
2483
2445
  state,
@@ -2516,14 +2478,203 @@ var createAppStore = (initialAppStore) => create()(
2516
2478
  })
2517
2479
  );
2518
2480
  var appStoreContext = createContext(createAppStore());
2481
+ function useAppStore(selector) {
2482
+ const context = useContext(appStoreContext);
2483
+ return useStore(context, selector);
2484
+ }
2485
+ function useAppStoreApi() {
2486
+ return useContext(appStoreContext);
2487
+ }
2488
+
2489
+ // ../core/lib/use-breadcrumbs.ts
2490
+ var useBreadcrumbs = (renderCount) => {
2491
+ const selectedId = useAppStore((s) => {
2492
+ var _a;
2493
+ return (_a = s.selectedItem) == null ? void 0 : _a.props.id;
2494
+ });
2495
+ const config = useAppStore((s) => s.config);
2496
+ const path = useAppStore((s) => {
2497
+ var _a;
2498
+ return (_a = s.state.indexes.nodes[selectedId]) == null ? void 0 : _a.path;
2499
+ });
2500
+ const appStore = useAppStoreApi();
2501
+ return useMemo(() => {
2502
+ const breadcrumbs = (path == null ? void 0 : path.map((zoneCompound) => {
2503
+ var _a, _b, _c;
2504
+ const [componentId] = zoneCompound.split(":");
2505
+ if (componentId === "root") {
2506
+ return {
2507
+ label: "Page",
2508
+ selector: null
2509
+ };
2510
+ }
2511
+ const node = appStore.getState().state.indexes.nodes[componentId];
2512
+ const parentId = node.path[node.path.length - 1];
2513
+ const contentIds = ((_a = appStore.getState().state.indexes.zones[parentId]) == null ? void 0 : _a.contentIds) || [];
2514
+ const index = contentIds.indexOf(componentId);
2515
+ const label = node ? (_c = (_b = config.components[node.data.type]) == null ? void 0 : _b.label) != null ? _c : node.data.type : "Component";
2516
+ return {
2517
+ label,
2518
+ selector: node ? {
2519
+ index,
2520
+ zone: node.path[node.path.length - 1]
2521
+ } : null
2522
+ };
2523
+ })) || [];
2524
+ if (renderCount) {
2525
+ return breadcrumbs.slice(breadcrumbs.length - renderCount);
2526
+ }
2527
+ return breadcrumbs;
2528
+ }, [path, renderCount]);
2529
+ };
2530
+
2531
+ // ../core/components/Loader/index.tsx
2532
+ init_react_import();
2533
+
2534
+ // ../core/lib/index.ts
2535
+ init_react_import();
2536
+
2537
+ // ../core/lib/filter.ts
2538
+ init_react_import();
2539
+
2540
+ // ../core/lib/data/reorder.ts
2541
+ init_react_import();
2542
+
2543
+ // ../core/lib/data/replace.ts
2544
+ init_react_import();
2545
+
2546
+ // ../core/lib/use-reset-auto-zoom.ts
2547
+ init_react_import();
2519
2548
 
2520
2549
  // ../core/lib/get-zoom-config.ts
2521
2550
  init_react_import();
2522
2551
 
2552
+ // css-module:/home/runner/work/puck/puck/packages/core/components/Loader/styles.module.css#css-module
2553
+ init_react_import();
2554
+ var styles_module_default3 = { "Loader": "_Loader_nacdm_13", "loader-animation": "_loader-animation_nacdm_1" };
2555
+
2556
+ // ../core/components/Loader/index.tsx
2557
+ import { jsx as jsx2 } from "react/jsx-runtime";
2558
+ var getClassName2 = get_class_name_factory_default("Loader", styles_module_default3);
2559
+ var Loader = (_a) => {
2560
+ var _b = _a, {
2561
+ color,
2562
+ size = 16
2563
+ } = _b, props = __objRest(_b, [
2564
+ "color",
2565
+ "size"
2566
+ ]);
2567
+ return /* @__PURE__ */ jsx2(
2568
+ "span",
2569
+ __spreadValues({
2570
+ className: getClassName2(),
2571
+ style: {
2572
+ width: size,
2573
+ height: size,
2574
+ color
2575
+ },
2576
+ "aria-label": "loading"
2577
+ }, props)
2578
+ );
2579
+ };
2580
+
2581
+ // ../core/components/SidebarSection/index.tsx
2582
+ import { jsx as jsx3, jsxs } from "react/jsx-runtime";
2583
+ var getClassName3 = get_class_name_factory_default("SidebarSection", styles_module_default);
2584
+ var SidebarSection = ({
2585
+ children,
2586
+ title,
2587
+ background,
2588
+ showBreadcrumbs,
2589
+ noBorderTop,
2590
+ noPadding,
2591
+ isLoading
2592
+ }) => {
2593
+ const setUi = useAppStore((s) => s.setUi);
2594
+ const breadcrumbs = useBreadcrumbs(1);
2595
+ return /* @__PURE__ */ jsxs(
2596
+ "div",
2597
+ {
2598
+ className: getClassName3({ noBorderTop, noPadding }),
2599
+ style: { background },
2600
+ children: [
2601
+ /* @__PURE__ */ jsx3("div", { className: getClassName3("title"), children: /* @__PURE__ */ jsxs("div", { className: getClassName3("breadcrumbs"), children: [
2602
+ showBreadcrumbs ? breadcrumbs.map((breadcrumb, i) => /* @__PURE__ */ jsxs("div", { className: getClassName3("breadcrumb"), children: [
2603
+ /* @__PURE__ */ jsx3(
2604
+ "button",
2605
+ {
2606
+ type: "button",
2607
+ className: getClassName3("breadcrumbLabel"),
2608
+ onClick: () => setUi({ itemSelector: breadcrumb.selector }),
2609
+ children: breadcrumb.label
2610
+ }
2611
+ ),
2612
+ /* @__PURE__ */ jsx3(ChevronRight, { size: 16 })
2613
+ ] }, i)) : null,
2614
+ /* @__PURE__ */ jsx3("div", { className: getClassName3("heading"), children: /* @__PURE__ */ jsx3(Heading, { rank: "2", size: "xs", children: title }) })
2615
+ ] }) }),
2616
+ /* @__PURE__ */ jsx3("div", { className: getClassName3("content"), children }),
2617
+ isLoading && /* @__PURE__ */ jsx3("div", { className: getClassName3("loadingOverlay"), children: /* @__PURE__ */ jsx3(Loader, { size: 32 }) })
2618
+ ]
2619
+ }
2620
+ );
2621
+ };
2622
+
2623
+ // ../core/components/OutlineList/index.tsx
2624
+ init_react_import();
2625
+
2626
+ // css-module:/home/runner/work/puck/puck/packages/core/components/OutlineList/styles.module.css#css-module
2627
+ init_react_import();
2628
+ var styles_module_default4 = { "OutlineList": "_OutlineList_w4lzv_1", "OutlineListItem": "_OutlineListItem_w4lzv_25", "OutlineListItem--clickable": "_OutlineListItem--clickable_w4lzv_45" };
2629
+
2630
+ // ../core/components/OutlineList/index.tsx
2631
+ import { jsx as jsx4 } from "react/jsx-runtime";
2632
+ var getClassName4 = get_class_name_factory_default("OutlineList", styles_module_default4);
2633
+ var getClassNameItem = get_class_name_factory_default("OutlineListItem", styles_module_default4);
2634
+ var OutlineList = ({ children }) => {
2635
+ return /* @__PURE__ */ jsx4("ul", { className: getClassName4(), children });
2636
+ };
2637
+ OutlineList.Clickable = ({ children }) => /* @__PURE__ */ jsx4("div", { className: getClassNameItem({ clickable: true }), children });
2638
+ OutlineList.Item = ({
2639
+ children,
2640
+ onClick
2641
+ }) => {
2642
+ return /* @__PURE__ */ jsx4(
2643
+ "li",
2644
+ {
2645
+ className: getClassNameItem({ clickable: !!onClick }),
2646
+ onClick,
2647
+ children
2648
+ }
2649
+ );
2650
+ };
2651
+
2652
+ // ../core/lib/scroll-into-view.ts
2653
+ init_react_import();
2654
+ var scrollIntoView = (el) => {
2655
+ const oldStyle = __spreadValues({}, el.style);
2656
+ el.style.scrollMargin = "256px";
2657
+ if (el) {
2658
+ el == null ? void 0 : el.scrollIntoView({ behavior: "smooth" });
2659
+ el.style.scrollMargin = oldStyle.scrollMargin || "";
2660
+ }
2661
+ };
2662
+
2663
+ // ../core/lib/get-frame.ts
2664
+ init_react_import();
2665
+ var getFrame = () => {
2666
+ if (typeof window === "undefined") return;
2667
+ let frameEl = document.querySelector("#preview-frame");
2668
+ if ((frameEl == null ? void 0 : frameEl.tagName) === "IFRAME") {
2669
+ return frameEl.contentDocument || document;
2670
+ }
2671
+ return (frameEl == null ? void 0 : frameEl.ownerDocument) || document;
2672
+ };
2673
+
2523
2674
  // src/HeadingAnalyzer.tsx
2524
2675
  import ReactFromJSONModule from "react-from-json";
2525
- import { Fragment, jsx as jsx2, jsxs } from "react/jsx-runtime";
2526
- var getClassName2 = get_class_name_factory_default("HeadingAnalyzer", HeadingAnalyzer_module_default);
2676
+ import { Fragment, jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
2677
+ var getClassName5 = get_class_name_factory_default("HeadingAnalyzer", HeadingAnalyzer_module_default);
2527
2678
  var getClassNameItem2 = get_class_name_factory_default("HeadingAnalyzerItem", HeadingAnalyzer_module_default);
2528
2679
  var ReactFromJSON = ReactFromJSONModule.default || ReactFromJSONModule;
2529
2680
  var getOutline = ({ frame } = {}) => {
@@ -2614,11 +2765,11 @@ var HeadingAnalyzer = () => {
2614
2765
  frameObserver.disconnect();
2615
2766
  };
2616
2767
  }, [data]);
2617
- return /* @__PURE__ */ jsxs("div", { className: getClassName2(), children: [
2618
- /* @__PURE__ */ jsxs(
2768
+ return /* @__PURE__ */ jsxs2("div", { className: getClassName5(), children: [
2769
+ /* @__PURE__ */ jsxs2(
2619
2770
  "small",
2620
2771
  {
2621
- className: getClassName2("cssWarning"),
2772
+ className: getClassName5("cssWarning"),
2622
2773
  style: {
2623
2774
  color: "var(--puck-color-red-04)",
2624
2775
  display: "block",
@@ -2627,19 +2778,19 @@ var HeadingAnalyzer = () => {
2627
2778
  children: [
2628
2779
  "Heading analyzer styles not loaded. Please review the",
2629
2780
  " ",
2630
- /* @__PURE__ */ jsx2("a", { href: "https://github.com/measuredco/puck/blob/main/packages/plugin-heading-analyzer/README.md", children: "README" }),
2781
+ /* @__PURE__ */ jsx5("a", { href: "https://github.com/measuredco/puck/blob/main/packages/plugin-heading-analyzer/README.md", children: "README" }),
2631
2782
  "."
2632
2783
  ]
2633
2784
  }
2634
2785
  ),
2635
- hierarchy.length === 0 && /* @__PURE__ */ jsx2("div", { children: "No headings." }),
2636
- /* @__PURE__ */ jsx2(OutlineList, { children: /* @__PURE__ */ jsx2(
2786
+ hierarchy.length === 0 && /* @__PURE__ */ jsx5("div", { children: "No headings." }),
2787
+ /* @__PURE__ */ jsx5(OutlineList, { children: /* @__PURE__ */ jsx5(
2637
2788
  ReactFromJSON,
2638
2789
  {
2639
2790
  mapping: {
2640
- Root: (props) => /* @__PURE__ */ jsx2(Fragment, { children: props.children }),
2641
- OutlineListItem: (props) => /* @__PURE__ */ jsxs(OutlineList.Item, { children: [
2642
- /* @__PURE__ */ jsx2(OutlineList.Clickable, { children: /* @__PURE__ */ jsx2(
2791
+ Root: (props) => /* @__PURE__ */ jsx5(Fragment, { children: props.children }),
2792
+ OutlineListItem: (props) => /* @__PURE__ */ jsxs2(OutlineList.Item, { children: [
2793
+ /* @__PURE__ */ jsx5(OutlineList.Clickable, { children: /* @__PURE__ */ jsx5(
2643
2794
  "small",
2644
2795
  {
2645
2796
  className: getClassNameItem2({ missing: props.missing }),
@@ -2657,14 +2808,14 @@ var HeadingAnalyzer = () => {
2657
2808
  }, 2e3);
2658
2809
  }
2659
2810
  },
2660
- children: props.missing ? /* @__PURE__ */ jsxs(Fragment, { children: [
2661
- /* @__PURE__ */ jsxs("b", { children: [
2811
+ children: props.missing ? /* @__PURE__ */ jsxs2(Fragment, { children: [
2812
+ /* @__PURE__ */ jsxs2("b", { children: [
2662
2813
  "H",
2663
2814
  props.rank
2664
2815
  ] }),
2665
2816
  ": Missing"
2666
- ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
2667
- /* @__PURE__ */ jsxs("b", { children: [
2817
+ ] }) : /* @__PURE__ */ jsxs2(Fragment, { children: [
2818
+ /* @__PURE__ */ jsxs2("b", { children: [
2668
2819
  "H",
2669
2820
  props.rank
2670
2821
  ] }),
@@ -2673,7 +2824,7 @@ var HeadingAnalyzer = () => {
2673
2824
  ] })
2674
2825
  }
2675
2826
  ) }),
2676
- /* @__PURE__ */ jsx2(OutlineList, { children: props.children })
2827
+ /* @__PURE__ */ jsx5(OutlineList, { children: props.children })
2677
2828
  ] })
2678
2829
  },
2679
2830
  entry: {
@@ -2694,10 +2845,12 @@ var HeadingAnalyzer = () => {
2694
2845
  ] });
2695
2846
  };
2696
2847
  var headingAnalyzer = {
2697
- name: "heading-analyzer",
2698
- label: "Audit",
2699
- render: HeadingAnalyzer,
2700
- icon: /* @__PURE__ */ jsx2(Heading1, {})
2848
+ overrides: {
2849
+ fields: ({ children, itemSelector }) => /* @__PURE__ */ jsxs2(Fragment, { children: [
2850
+ children,
2851
+ /* @__PURE__ */ jsx5("div", { style: { display: itemSelector ? "none" : "block" }, children: /* @__PURE__ */ jsx5(SidebarSection, { title: "Heading Outline", children: /* @__PURE__ */ jsx5(HeadingAnalyzer, {}) }) })
2852
+ ] })
2853
+ }
2701
2854
  };
2702
2855
  var HeadingAnalyzer_default = headingAnalyzer;
2703
2856
  export {
@@ -2713,45 +2866,10 @@ classnames/index.js:
2713
2866
  *)
2714
2867
 
2715
2868
  lucide-react/dist/esm/shared/src/utils.js:
2716
- (**
2717
- * @license lucide-react v0.468.0 - ISC
2718
- *
2719
- * This source code is licensed under the ISC license.
2720
- * See the LICENSE file in the root directory of this source tree.
2721
- *)
2722
-
2723
2869
  lucide-react/dist/esm/defaultAttributes.js:
2724
- (**
2725
- * @license lucide-react v0.468.0 - ISC
2726
- *
2727
- * This source code is licensed under the ISC license.
2728
- * See the LICENSE file in the root directory of this source tree.
2729
- *)
2730
-
2731
2870
  lucide-react/dist/esm/Icon.js:
2732
- (**
2733
- * @license lucide-react v0.468.0 - ISC
2734
- *
2735
- * This source code is licensed under the ISC license.
2736
- * See the LICENSE file in the root directory of this source tree.
2737
- *)
2738
-
2739
2871
  lucide-react/dist/esm/createLucideIcon.js:
2740
- (**
2741
- * @license lucide-react v0.468.0 - ISC
2742
- *
2743
- * This source code is licensed under the ISC license.
2744
- * See the LICENSE file in the root directory of this source tree.
2745
- *)
2746
-
2747
- lucide-react/dist/esm/icons/heading-1.js:
2748
- (**
2749
- * @license lucide-react v0.468.0 - ISC
2750
- *
2751
- * This source code is licensed under the ISC license.
2752
- * See the LICENSE file in the root directory of this source tree.
2753
- *)
2754
-
2872
+ lucide-react/dist/esm/icons/chevron-right.js:
2755
2873
  lucide-react/dist/esm/lucide-react.js:
2756
2874
  (**
2757
2875
  * @license lucide-react v0.468.0 - ISC