@flamingo-stack/openframe-frontend-core 0.0.510 → 0.0.512-1640.4207.1
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/{chunk-J2JUAS4C.cjs → chunk-24FYTTPB.cjs} +11 -11
- package/dist/{chunk-J2JUAS4C.cjs.map → chunk-24FYTTPB.cjs.map} +1 -1
- package/dist/{chunk-GE3JUTW2.js → chunk-27OKD7ZV.js} +44 -14
- package/dist/chunk-27OKD7ZV.js.map +1 -0
- package/dist/{chunk-SRYV4H3M.js → chunk-2SSVGMTE.js} +3 -3
- package/dist/{chunk-2AASLY6D.js → chunk-3KAZSJ2I.js} +3 -3
- package/dist/{chunk-Q4K3TGNP.cjs → chunk-3NECEXDF.cjs} +74 -44
- package/dist/chunk-3NECEXDF.cjs.map +1 -0
- package/dist/{chunk-5CDPRCPS.cjs → chunk-44ML4VMJ.cjs} +23 -23
- package/dist/{chunk-5CDPRCPS.cjs.map → chunk-44ML4VMJ.cjs.map} +1 -1
- package/dist/{chunk-WSAPKKDU.cjs → chunk-4NML2ZGN.cjs} +9 -9
- package/dist/{chunk-WSAPKKDU.cjs.map → chunk-4NML2ZGN.cjs.map} +1 -1
- package/dist/{chunk-SYZFFRVD.cjs → chunk-5BAGE7AI.cjs} +13 -13
- package/dist/{chunk-SYZFFRVD.cjs.map → chunk-5BAGE7AI.cjs.map} +1 -1
- package/dist/{chunk-HX4CJYXL.js → chunk-5MC7ZKRX.js} +10 -10
- package/dist/{chunk-RHQ7BJKK.cjs → chunk-6I36GENY.cjs} +73 -73
- package/dist/{chunk-RHQ7BJKK.cjs.map → chunk-6I36GENY.cjs.map} +1 -1
- package/dist/{chunk-6FIDTXYC.js → chunk-7AQSXQEL.js} +3 -3
- package/dist/{chunk-EJ3EBYNV.cjs → chunk-AF2PYDNF.cjs} +32 -32
- package/dist/{chunk-EJ3EBYNV.cjs.map → chunk-AF2PYDNF.cjs.map} +1 -1
- package/dist/{chunk-2RLI5XVI.cjs → chunk-B2PCKLRF.cjs} +16 -16
- package/dist/{chunk-2RLI5XVI.cjs.map → chunk-B2PCKLRF.cjs.map} +1 -1
- package/dist/{chunk-Z35QWWJH.cjs → chunk-BQFMSIXM.cjs} +34 -34
- package/dist/{chunk-Z35QWWJH.cjs.map → chunk-BQFMSIXM.cjs.map} +1 -1
- package/dist/{chunk-6TL5XIAW.cjs → chunk-CS2MLJXE.cjs} +119 -119
- package/dist/{chunk-6TL5XIAW.cjs.map → chunk-CS2MLJXE.cjs.map} +1 -1
- package/dist/{chunk-JMBIGH4H.cjs → chunk-DON2EEFT.cjs} +83 -83
- package/dist/{chunk-JMBIGH4H.cjs.map → chunk-DON2EEFT.cjs.map} +1 -1
- package/dist/{chunk-RJ3D3PE2.cjs → chunk-DZR4XHZH.cjs} +9 -9
- package/dist/{chunk-RJ3D3PE2.cjs.map → chunk-DZR4XHZH.cjs.map} +1 -1
- package/dist/{chunk-UWPT23SA.js → chunk-EFTTERZ5.js} +3 -3
- package/dist/{chunk-BTUHMCYW.js → chunk-FS3YSNSU.js} +193 -6
- package/dist/chunk-FS3YSNSU.js.map +1 -0
- package/dist/{chunk-7VUKIWF6.cjs → chunk-HIV2GIFP.cjs} +3 -3
- package/dist/{chunk-7VUKIWF6.cjs.map → chunk-HIV2GIFP.cjs.map} +1 -1
- package/dist/{chunk-5AZZQQYS.cjs → chunk-HKRLXUU6.cjs} +40 -40
- package/dist/{chunk-5AZZQQYS.cjs.map → chunk-HKRLXUU6.cjs.map} +1 -1
- package/dist/{chunk-WNOGR5AA.js → chunk-IG3PRDHZ.js} +3 -3
- package/dist/{chunk-R4HKB3YD.cjs → chunk-IIPBTWQR.cjs} +22 -22
- package/dist/{chunk-R4HKB3YD.cjs.map → chunk-IIPBTWQR.cjs.map} +1 -1
- package/dist/{chunk-XJVRAKEX.cjs → chunk-K6E2VQ4W.cjs} +56 -33
- package/dist/chunk-K6E2VQ4W.cjs.map +1 -0
- package/dist/{chunk-A62C4C4V.cjs → chunk-KI4EGKNV.cjs} +3 -2
- package/dist/chunk-KI4EGKNV.cjs.map +1 -0
- package/dist/{chunk-RB2EW6IZ.cjs → chunk-LCWCUFJJ.cjs} +3351 -3173
- package/dist/chunk-LCWCUFJJ.cjs.map +1 -0
- package/dist/{chunk-OB7YDOTK.cjs → chunk-NJADHL2G.cjs} +8 -8
- package/dist/{chunk-OB7YDOTK.cjs.map → chunk-NJADHL2G.cjs.map} +1 -1
- package/dist/{chunk-53JKCFFE.cjs → chunk-O37MV2JA.cjs} +12 -12
- package/dist/{chunk-53JKCFFE.cjs.map → chunk-O37MV2JA.cjs.map} +1 -1
- package/dist/{chunk-EYTXD62B.cjs → chunk-OGVIGAMZ.cjs} +232 -45
- package/dist/chunk-OGVIGAMZ.cjs.map +1 -0
- package/dist/{chunk-JOCFPAS6.js → chunk-OY6M4LX4.js} +6 -6
- package/dist/{chunk-HCZJZMU7.js → chunk-P5KFFOLJ.js} +3 -3
- package/dist/{chunk-FEGEC6FY.js → chunk-SQJXVADG.js} +5292 -5114
- package/dist/chunk-SQJXVADG.js.map +1 -0
- package/dist/{chunk-M4MKQKFF.js → chunk-UBTOOE55.js} +2 -2
- package/dist/{chunk-CTMLY2GN.js → chunk-UGOCHX36.js} +5 -5
- package/dist/{chunk-VDJF4ZAU.js → chunk-UGR7V2ZG.js} +3 -3
- package/dist/{chunk-TBGSQTJK.js → chunk-W2HEWV34.js} +6 -6
- package/dist/{chunk-LBOWSKGM.js → chunk-XE3OSQNH.js} +5 -5
- package/dist/{chunk-MLGGF24T.js → chunk-XRGYYEIX.js} +8 -8
- package/dist/{chunk-SZMA65OW.js → chunk-XURRAFIB.js} +2 -2
- package/dist/{chunk-DBR5JLX3.js → chunk-YNBRXJWC.js} +46 -23
- package/dist/chunk-YNBRXJWC.js.map +1 -0
- package/dist/{chunk-RG2WRBPT.js → chunk-Z3ADCYC5.js} +2 -2
- package/dist/{chunk-4GPWLGKT.js → chunk-ZRILYK5U.js} +2 -1
- package/dist/components/calendar.cjs +4 -4
- package/dist/components/calendar.js +3 -3
- package/dist/components/case-studies/index.cjs +17 -17
- package/dist/components/case-studies/index.js +7 -7
- package/dist/components/chat/chat-message-enhanced.d.ts.map +1 -1
- package/dist/components/chat/chat-message-list.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/dispatch.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-chat.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +13 -7
- package/dist/components/chat/index.cjs.map +1 -1
- package/dist/components/chat/index.js +12 -6
- package/dist/components/chat/remark-mention-chips.d.ts +5 -2
- package/dist/components/chat/remark-mention-chips.d.ts.map +1 -1
- package/dist/components/chat/utils/discuss-ref-prompt.d.ts +48 -0
- package/dist/components/chat/utils/discuss-ref-prompt.d.ts.map +1 -0
- package/dist/components/chat/utils/index.d.ts +2 -0
- package/dist/components/chat/utils/index.d.ts.map +1 -1
- package/dist/components/chat/utils/resolve-fetched-card-href.d.ts +63 -0
- package/dist/components/chat/utils/resolve-fetched-card-href.d.ts.map +1 -0
- package/dist/components/chat/utils/source-row-cta.d.ts.map +1 -1
- package/dist/components/contact/index.cjs +8 -8
- package/dist/components/contact/index.js +7 -7
- package/dist/components/docs/index.cjs +10 -10
- package/dist/components/docs/index.js +9 -9
- package/dist/components/embeds/index.cjs +8 -8
- package/dist/components/embeds/index.js +7 -7
- package/dist/components/faq/index.cjs +9 -9
- package/dist/components/faq/index.js +8 -8
- package/dist/components/features/index.cjs +7 -7
- package/dist/components/features/index.js +6 -6
- package/dist/components/help-center-pages/index.cjs +28 -28
- package/dist/components/help-center-pages/index.js +19 -19
- package/dist/components/icons/index.cjs +3 -3
- package/dist/components/icons/index.js +2 -2
- package/dist/components/index.cjs +253 -247
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +23 -17
- package/dist/components/index.js.map +1 -1
- package/dist/components/meeting-scheduler/index.cjs +92 -92
- package/dist/components/meeting-scheduler/index.js +9 -9
- package/dist/components/navigation/index.cjs +7 -7
- package/dist/components/navigation/index.js +6 -6
- package/dist/components/onboarding-guides/index.cjs +11 -11
- package/dist/components/onboarding-guides/index.js +10 -10
- package/dist/components/related-content/index.cjs +9 -9
- package/dist/components/related-content/index.js +8 -8
- package/dist/components/shared/doc-search/resolve-search-result-action.d.ts +11 -3
- package/dist/components/shared/doc-search/resolve-search-result-action.d.ts.map +1 -1
- package/dist/components/shared/doc-search/use-doc-search.d.ts +7 -0
- package/dist/components/shared/doc-search/use-doc-search.d.ts.map +1 -1
- package/dist/components/tickets/index.cjs +11 -11
- package/dist/components/tickets/index.js +10 -10
- package/dist/components/ui/actions-menu.d.ts.map +1 -1
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
- package/dist/components/ui/file-manager/index.cjs +70 -70
- package/dist/components/ui/file-manager/index.js +3 -3
- package/dist/components/ui/index.cjs +13 -7
- package/dist/components/ui/index.cjs.map +1 -1
- package/dist/components/ui/index.js +12 -6
- package/dist/components/ui/markdown/base-components.d.ts.map +1 -1
- package/dist/components/ui/overlay-open-registry.d.ts +50 -0
- package/dist/components/ui/overlay-open-registry.d.ts.map +1 -0
- package/dist/components/ui/portal-container.d.ts +24 -0
- package/dist/components/ui/portal-container.d.ts.map +1 -1
- package/dist/hooks/index.cjs +4 -4
- package/dist/hooks/index.js +3 -3
- package/dist/index.cjs +20 -10
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +24 -14
- package/dist/utils/anchor-id.d.ts +32 -0
- package/dist/utils/anchor-id.d.ts.map +1 -0
- package/dist/utils/content-href.d.ts +27 -6
- package/dist/utils/content-href.d.ts.map +1 -1
- package/dist/utils/index.cjs +213 -152
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +212 -153
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/list-url.d.ts.map +1 -1
- package/dist/utils/same-page-hash-nav.d.ts +17 -6
- package/dist/utils/same-page-hash-nav.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/chat/__tests__/remark-mention-chips.test.ts +67 -0
- package/src/components/chat/chat-message-enhanced.tsx +3 -2
- package/src/components/chat/chat-message-list.tsx +49 -5
- package/src/components/chat/embeddable-chat.tsx +19 -2
- package/src/components/chat/entity-cards/dispatch.tsx +65 -4
- package/src/components/chat/hooks/use-chat.ts +174 -15
- package/src/components/chat/hooks/use-nats-chat-adapter.ts +28 -4
- package/src/components/chat/hooks/use-sse-chat-adapter.ts +5 -3
- package/src/components/chat/remark-mention-chips.ts +6 -3
- package/src/components/chat/utils/__tests__/discuss-ref-prompt.test.ts +67 -0
- package/src/components/chat/utils/__tests__/resolve-fetched-card-href.test.ts +156 -0
- package/src/components/chat/utils/discuss-ref-prompt.ts +63 -0
- package/src/components/chat/utils/index.ts +16 -0
- package/src/components/chat/utils/resolve-fetched-card-href.ts +104 -0
- package/src/components/chat/utils/source-row-cta.ts +5 -1
- package/src/components/shared/doc-search/__tests__/resolve-search-result-action.test.ts +145 -0
- package/src/components/shared/doc-search/resolve-search-result-action.ts +46 -10
- package/src/components/shared/doc-search/use-doc-search.ts +50 -14
- package/src/components/ui/__tests__/overlay-open-registry.test.tsx +87 -0
- package/src/components/ui/actions-menu.tsx +65 -2
- package/src/components/ui/dropdown-menu.tsx +62 -12
- package/src/components/ui/markdown/base-components.tsx +26 -0
- package/src/components/ui/overlay-open-registry.tsx +99 -0
- package/src/components/ui/portal-container.tsx +31 -0
- package/src/utils/__tests__/anchor-id.test.ts +139 -0
- package/src/utils/__tests__/content-href.test.ts +74 -0
- package/src/utils/__tests__/list-url.test.ts +11 -1
- package/src/utils/anchor-id.ts +106 -0
- package/src/utils/content-href.ts +113 -13
- package/src/utils/index.ts +8 -0
- package/src/utils/list-url.ts +6 -1
- package/src/utils/same-page-hash-nav.ts +28 -9
- package/dist/chunk-A62C4C4V.cjs.map +0 -1
- package/dist/chunk-BTUHMCYW.js.map +0 -1
- package/dist/chunk-DBR5JLX3.js.map +0 -1
- package/dist/chunk-EYTXD62B.cjs.map +0 -1
- package/dist/chunk-FEGEC6FY.js.map +0 -1
- package/dist/chunk-GE3JUTW2.js.map +0 -1
- package/dist/chunk-Q4K3TGNP.cjs.map +0 -1
- package/dist/chunk-RB2EW6IZ.cjs.map +0 -1
- package/dist/chunk-XJVRAKEX.cjs.map +0 -1
- /package/dist/{chunk-SRYV4H3M.js.map → chunk-2SSVGMTE.js.map} +0 -0
- /package/dist/{chunk-2AASLY6D.js.map → chunk-3KAZSJ2I.js.map} +0 -0
- /package/dist/{chunk-HX4CJYXL.js.map → chunk-5MC7ZKRX.js.map} +0 -0
- /package/dist/{chunk-6FIDTXYC.js.map → chunk-7AQSXQEL.js.map} +0 -0
- /package/dist/{chunk-UWPT23SA.js.map → chunk-EFTTERZ5.js.map} +0 -0
- /package/dist/{chunk-WNOGR5AA.js.map → chunk-IG3PRDHZ.js.map} +0 -0
- /package/dist/{chunk-JOCFPAS6.js.map → chunk-OY6M4LX4.js.map} +0 -0
- /package/dist/{chunk-HCZJZMU7.js.map → chunk-P5KFFOLJ.js.map} +0 -0
- /package/dist/{chunk-M4MKQKFF.js.map → chunk-UBTOOE55.js.map} +0 -0
- /package/dist/{chunk-CTMLY2GN.js.map → chunk-UGOCHX36.js.map} +0 -0
- /package/dist/{chunk-VDJF4ZAU.js.map → chunk-UGR7V2ZG.js.map} +0 -0
- /package/dist/{chunk-TBGSQTJK.js.map → chunk-W2HEWV34.js.map} +0 -0
- /package/dist/{chunk-LBOWSKGM.js.map → chunk-XE3OSQNH.js.map} +0 -0
- /package/dist/{chunk-MLGGF24T.js.map → chunk-XRGYYEIX.js.map} +0 -0
- /package/dist/{chunk-SZMA65OW.js.map → chunk-XURRAFIB.js.map} +0 -0
- /package/dist/{chunk-RG2WRBPT.js.map → chunk-Z3ADCYC5.js.map} +0 -0
- /package/dist/{chunk-4GPWLGKT.js.map → chunk-ZRILYK5U.js.map} +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _chunkLCWCUFJJcjs = require('./chunk-LCWCUFJJ.cjs');
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
@@ -12,7 +12,7 @@ var _chunkSSJNN5BScjs = require('./chunk-SSJNN5BS.cjs');
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
var
|
|
15
|
+
var _chunkIIPBTWQRcjs = require('./chunk-IIPBTWQR.cjs');
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
|
|
@@ -52,7 +52,7 @@ function UnifiedPagination({
|
|
|
52
52
|
};
|
|
53
53
|
if (totalPages <= 1) return null;
|
|
54
54
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
55
|
-
|
|
55
|
+
_chunkLCWCUFJJcjs.Pagination,
|
|
56
56
|
{
|
|
57
57
|
currentPage,
|
|
58
58
|
totalPages,
|
|
@@ -65,12 +65,12 @@ var init_unified_pagination = _chunkVRHGVLSLcjs.__esm.call(void 0, {
|
|
|
65
65
|
"use strict";
|
|
66
66
|
"use client";
|
|
67
67
|
_chunkSSJNN5BScjs.init_next_navigation.call(void 0, );
|
|
68
|
-
|
|
68
|
+
_chunkLCWCUFJJcjs.init_pagination.call(void 0, );
|
|
69
69
|
}
|
|
70
70
|
});
|
|
71
71
|
|
|
72
72
|
// src/components/empty-state.tsx
|
|
73
|
-
|
|
73
|
+
_chunkIIPBTWQRcjs.init_button2.call(void 0, );
|
|
74
74
|
_chunkSSJNN5BScjs.init_next_navigation.call(void 0, );
|
|
75
75
|
var _lucidereact = require('lucide-react');
|
|
76
76
|
|
|
@@ -190,10 +190,10 @@ function EmptyState({
|
|
|
190
190
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mb-3 md:mb-6 flex items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "rounded-full bg-ods-card p-3 md:p-6 border border-ods-border", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-8 h-8 md:w-16 md:h-16 text-ods-text-secondary flex items-center justify-center", children: defaultContent.icon }) }) }),
|
|
191
191
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "mb-2 md:mb-3 text-h3 text-ods-text-primary", children: displayTitle }),
|
|
192
192
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "mb-4 md:mb-8 max-w-md text-h6 text-ods-text-secondary", children: displayDescription }),
|
|
193
|
-
showCTA && ctaHref && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full max-w-xs mb-3", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
194
|
-
showCTA && !ctaHref && smartCTA && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full max-w-xs mb-3", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
193
|
+
showCTA && ctaHref && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full max-w-xs mb-3", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIIPBTWQRcjs.Button, { href: ctaHref, className: ctaClassName, children: ctaText || "Contact us" }) }),
|
|
194
|
+
showCTA && !ctaHref && smartCTA && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full max-w-xs mb-3", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIIPBTWQRcjs.Button, { onClick: smartCTA.action, className: ctaClassName, children: smartCTA.text }) }),
|
|
195
195
|
showBackButton && onGoBack && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full max-w-xs", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
196
|
-
|
|
196
|
+
_chunkIIPBTWQRcjs.Button,
|
|
197
197
|
{
|
|
198
198
|
onClick: onGoBack,
|
|
199
199
|
variant: "outline",
|
|
@@ -210,4 +210,4 @@ function EmptyState({
|
|
|
210
210
|
|
|
211
211
|
|
|
212
212
|
exports.EmptyState = EmptyState; exports.UnifiedPagination = UnifiedPagination; exports.unified_pagination_exports = unified_pagination_exports; exports.init_unified_pagination = init_unified_pagination;
|
|
213
|
-
//# sourceMappingURL=chunk-
|
|
213
|
+
//# sourceMappingURL=chunk-DZR4XHZH.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-RJ3D3PE2.cjs","../src/components/unified-pagination.tsx","../src/components/empty-state.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-RJ3D3PE2.cjs","sourcesContent":[null,"\"use client\"\n\nimport { useRouter, useSearchParams, usePathname } from \"../embed-shims/next-navigation\"\nimport { Pagination } from \"./pagination\"\n\ninterface UnifiedPaginationProps {\n currentPage: number\n totalPages: number\n onPageChange?: (page: number) => void\n className?: string\n}\n\nexport function UnifiedPagination({ \n currentPage, \n totalPages, \n onPageChange,\n className = \"mt-8 flex justify-center w-full\"\n}: UnifiedPaginationProps) {\n const router = useRouter()\n const searchParams = useSearchParams()\n const pathname = usePathname()\n\n const handlePageChange = (page: number) => {\n // Preserve current scroll position\n const currentScrollY = window.scrollY\n \n // Call the callback to update local state (prevents reload)\n if (onPageChange) {\n onPageChange(page)\n }\n \n // Update URL for bookmarking without navigation\n const params = new URLSearchParams(searchParams.toString())\n params.set(\"page\", page.toString())\n \n // Update URL without navigation (for bookmarking support)\n const newUrl = `${pathname}?${params.toString()}`\n window.history.replaceState(null, '', newUrl)\n \n // Restore scroll position after a brief delay to allow content to render\n setTimeout(() => {\n window.scrollTo({\n top: currentScrollY,\n behavior: 'instant' // Instant to prevent any scroll animation\n })\n }, 0)\n }\n\n // Don't render pagination if there's only one page\n if (totalPages <= 1) return null\n\n return (\n <div className={className}>\n <Pagination\n currentPage={currentPage}\n totalPages={totalPages}\n onPageChange={handlePageChange}\n />\n </div>\n )\n} ","\"use client\";\n\nimport { Search, FileText, Package } from \"lucide-react\"\nimport { Button } from \"./ui/button\"\nimport { useRouter } from \"../embed-shims/next-navigation\"\n\nexport interface EmptyStateProps {\n type: 'vendors' | 'posts' | 'search' | 'generic'\n title?: string\n description?: string\n showBackButton?: boolean\n onGoBack?: () => void\n backButtonText?: string\n // New CTA properties\n showCTA?: boolean\n ctaText?: string\n onCtaClick?: () => void\n /**\n * Link-CTA mode: render the CTA as a navigation link (`href` — plain or\n * `mailto:`). Wins over `onCtaClick`, and SHORT-CIRCUITS the smart-CTA\n * path-sniffing below (which reads `window.location.pathname` — an\n * SSR/client divergence server-rendered pages must never enter).\n */\n ctaHref?: string\n ctaVariant?: 'primary' | 'secondary'\n}\n\nexport function EmptyState({\n type,\n title,\n description,\n showBackButton = false,\n onGoBack,\n backButtonText = \"Go Back\",\n showCTA = true,\n ctaText,\n onCtaClick,\n ctaHref,\n ctaVariant = 'primary'\n}: EmptyStateProps) {\n const router = useRouter()\n\n // Default content based on type\n const getDefaultContent = () => {\n switch (type) {\n case 'vendors':\n return {\n icon: <Package className=\"w-full h-full\" />,\n title: \"No vendors found\",\n description: \"We couldn't find any vendors matching your criteria. Try adjusting your filters or search terms.\"\n }\n case 'posts':\n return {\n icon: <FileText className=\"w-full h-full\" />,\n title: \"No articles found\",\n description: \"We couldn't find any articles matching your criteria. Try different categories, tags, or search terms.\"\n }\n case 'search':\n return {\n icon: <Search className=\"w-full h-full\" />,\n title: \"No results found\",\n description: \"Your search didn't return any results. Try different keywords or browse our categories.\"\n }\n default:\n return {\n icon: <Search className=\"w-full h-full\" />,\n title: \"Nothing found\",\n description: \"We couldn't find what you're looking for. Try adjusting your search or filters.\"\n }\n }\n }\n\n // Smart CTA logic based on context\n const getSmartCTA = () => {\n // If custom CTA is provided, use it\n if (ctaText && onCtaClick) {\n return {\n text: ctaText,\n action: onCtaClick\n }\n }\n\n // Check if we're on the client side\n const isClient = typeof window !== 'undefined'\n const currentPath = isClient ? window.location.pathname : ''\n\n // Surgical filter reset (promoted from the hub's diverged clone during\n // the EmptyState convergence): delete ONLY the filter params the surface\n // owns — nuking the whole query string threw away unrelated state — and\n // use `replace` with `scroll: false` so resetting filters neither adds a\n // history entry nor jumps the page.\n const resetParams = (paramsToDelete: string[]) => {\n if (!isClient) return\n const params = new URLSearchParams(window.location.search)\n for (const p of paramsToDelete) params.delete(p)\n const queryString = params.toString()\n // Keep the hash — a filter reset must not clear an unrelated\n // deep-link anchor (e.g. #delivery-123).\n const hash = window.location.hash\n router.replace(\n `${window.location.pathname}${queryString ? `?${queryString}` : ''}${hash}`,\n { scroll: false },\n )\n }\n\n // Smart defaults based on type and context\n switch (type) {\n case 'search':\n return {\n text: \"Reset Filters\",\n action: () => resetParams(['search', 'page'])\n }\n case 'posts':\n // Blog-style listing pages (blog, case studies) reset their filters\n if (currentPath.includes('/blog') || currentPath.includes('/case-studies')) {\n return {\n text: \"Reset Filters\",\n action: () => resetParams(['search', 'page', 'category', 'tags'])\n }\n } else if (currentPath.includes('/profile')) {\n return {\n text: \"Browse Vendors\",\n action: () => router.push('/vendors')\n }\n }\n return {\n text: \"View All Posts\",\n action: () => router.push('/blog')\n }\n case 'vendors':\n // If we're in profile or other pages, direct to main content\n if (currentPath.includes('/profile')) {\n return {\n text: \"Browse Vendors\",\n action: () => router.push('/vendors')\n }\n } else if (currentPath.includes('/vendors') || currentPath.includes('/margin-increase/compare')) {\n return {\n text: \"Reset Filters\",\n action: () => resetParams(['search', 'page', 'category', 'subcategory'])\n }\n }\n return {\n text: \"Browse Vendors\",\n action: () => router.push('/vendors')\n }\n default:\n return {\n text: \"Browse Vendors\",\n action: () => router.push('/vendors')\n }\n }\n }\n\n const defaultContent = getDefaultContent()\n const displayTitle = title || defaultContent.title\n const displayDescription = description || defaultContent.description\n // ctaHref short-circuits BEFORE getSmartCTA(): the smart defaults read\n // window.location.pathname (SSR-empty, client-real), so a server-rendered\n // page with a link CTA must never enter that branch. Existing callers\n // without ctaHref keep today's smart-default behavior unchanged.\n const smartCTA = ctaHref ? null : getSmartCTA()\n const ctaClassName = ctaVariant === 'primary'\n ? \"w-full bg-ods-accent text-ods-text-on-accent hover:bg-ods-accent-hover transition-all duration-150 font-body font-medium\"\n : \"w-full bg-transparent border border-ods-border text-ods-text-primary hover:border-ods-accent hover:text-ods-accent transition-all duration-150 font-body font-medium\"\n\n return (\n <div className=\"flex flex-col items-center justify-center py-6 md:py-16 px-6 text-center\">\n {/* Icon */}\n <div className=\"mb-3 md:mb-6 flex items-center justify-center\">\n <div className=\"rounded-full bg-ods-card p-3 md:p-6 border border-ods-border\">\n <div className=\"w-8 h-8 md:w-16 md:h-16 text-ods-text-secondary flex items-center justify-center\">\n {defaultContent.icon}\n </div>\n </div>\n </div>\n\n {/* Title */}\n <h2 className=\"mb-2 md:mb-3 text-h3 text-ods-text-primary\">\n {displayTitle}\n </h2>\n\n {/* Description */}\n <p className=\"mb-4 md:mb-8 max-w-md text-h6 text-ods-text-secondary\">\n {displayDescription}\n </p>\n\n {/* Link CTA (ctaHref) — SSR-safe, no path sniffing */}\n {showCTA && ctaHref && (\n <div className=\"w-full max-w-xs mb-3\">\n <Button href={ctaHref} className={ctaClassName}>\n {ctaText || 'Contact us'}\n </Button>\n </div>\n )}\n\n {/* Smart CTA Button */}\n {showCTA && !ctaHref && smartCTA && (\n <div className=\"w-full max-w-xs mb-3\">\n <Button onClick={smartCTA.action} className={ctaClassName}>\n {smartCTA.text}\n </Button>\n </div>\n )}\n\n {/* Optional Back Button */}\n {showBackButton && onGoBack && (\n <div className=\"w-full max-w-xs\">\n <Button\n onClick={onGoBack}\n variant=\"outline\"\n className=\"w-full transition-all duration-150 font-body font-medium\"\n >\n {backButtonText}\n </Button>\n </div>\n )}\n </div>\n )\n} "]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-DZR4XHZH.cjs","../src/components/unified-pagination.tsx","../src/components/empty-state.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-DZR4XHZH.cjs","sourcesContent":[null,"\"use client\"\n\nimport { useRouter, useSearchParams, usePathname } from \"../embed-shims/next-navigation\"\nimport { Pagination } from \"./pagination\"\n\ninterface UnifiedPaginationProps {\n currentPage: number\n totalPages: number\n onPageChange?: (page: number) => void\n className?: string\n}\n\nexport function UnifiedPagination({ \n currentPage, \n totalPages, \n onPageChange,\n className = \"mt-8 flex justify-center w-full\"\n}: UnifiedPaginationProps) {\n const router = useRouter()\n const searchParams = useSearchParams()\n const pathname = usePathname()\n\n const handlePageChange = (page: number) => {\n // Preserve current scroll position\n const currentScrollY = window.scrollY\n \n // Call the callback to update local state (prevents reload)\n if (onPageChange) {\n onPageChange(page)\n }\n \n // Update URL for bookmarking without navigation\n const params = new URLSearchParams(searchParams.toString())\n params.set(\"page\", page.toString())\n \n // Update URL without navigation (for bookmarking support)\n const newUrl = `${pathname}?${params.toString()}`\n window.history.replaceState(null, '', newUrl)\n \n // Restore scroll position after a brief delay to allow content to render\n setTimeout(() => {\n window.scrollTo({\n top: currentScrollY,\n behavior: 'instant' // Instant to prevent any scroll animation\n })\n }, 0)\n }\n\n // Don't render pagination if there's only one page\n if (totalPages <= 1) return null\n\n return (\n <div className={className}>\n <Pagination\n currentPage={currentPage}\n totalPages={totalPages}\n onPageChange={handlePageChange}\n />\n </div>\n )\n} ","\"use client\";\n\nimport { Search, FileText, Package } from \"lucide-react\"\nimport { Button } from \"./ui/button\"\nimport { useRouter } from \"../embed-shims/next-navigation\"\n\nexport interface EmptyStateProps {\n type: 'vendors' | 'posts' | 'search' | 'generic'\n title?: string\n description?: string\n showBackButton?: boolean\n onGoBack?: () => void\n backButtonText?: string\n // New CTA properties\n showCTA?: boolean\n ctaText?: string\n onCtaClick?: () => void\n /**\n * Link-CTA mode: render the CTA as a navigation link (`href` — plain or\n * `mailto:`). Wins over `onCtaClick`, and SHORT-CIRCUITS the smart-CTA\n * path-sniffing below (which reads `window.location.pathname` — an\n * SSR/client divergence server-rendered pages must never enter).\n */\n ctaHref?: string\n ctaVariant?: 'primary' | 'secondary'\n}\n\nexport function EmptyState({\n type,\n title,\n description,\n showBackButton = false,\n onGoBack,\n backButtonText = \"Go Back\",\n showCTA = true,\n ctaText,\n onCtaClick,\n ctaHref,\n ctaVariant = 'primary'\n}: EmptyStateProps) {\n const router = useRouter()\n\n // Default content based on type\n const getDefaultContent = () => {\n switch (type) {\n case 'vendors':\n return {\n icon: <Package className=\"w-full h-full\" />,\n title: \"No vendors found\",\n description: \"We couldn't find any vendors matching your criteria. Try adjusting your filters or search terms.\"\n }\n case 'posts':\n return {\n icon: <FileText className=\"w-full h-full\" />,\n title: \"No articles found\",\n description: \"We couldn't find any articles matching your criteria. Try different categories, tags, or search terms.\"\n }\n case 'search':\n return {\n icon: <Search className=\"w-full h-full\" />,\n title: \"No results found\",\n description: \"Your search didn't return any results. Try different keywords or browse our categories.\"\n }\n default:\n return {\n icon: <Search className=\"w-full h-full\" />,\n title: \"Nothing found\",\n description: \"We couldn't find what you're looking for. Try adjusting your search or filters.\"\n }\n }\n }\n\n // Smart CTA logic based on context\n const getSmartCTA = () => {\n // If custom CTA is provided, use it\n if (ctaText && onCtaClick) {\n return {\n text: ctaText,\n action: onCtaClick\n }\n }\n\n // Check if we're on the client side\n const isClient = typeof window !== 'undefined'\n const currentPath = isClient ? window.location.pathname : ''\n\n // Surgical filter reset (promoted from the hub's diverged clone during\n // the EmptyState convergence): delete ONLY the filter params the surface\n // owns — nuking the whole query string threw away unrelated state — and\n // use `replace` with `scroll: false` so resetting filters neither adds a\n // history entry nor jumps the page.\n const resetParams = (paramsToDelete: string[]) => {\n if (!isClient) return\n const params = new URLSearchParams(window.location.search)\n for (const p of paramsToDelete) params.delete(p)\n const queryString = params.toString()\n // Keep the hash — a filter reset must not clear an unrelated\n // deep-link anchor (e.g. #delivery-123).\n const hash = window.location.hash\n router.replace(\n `${window.location.pathname}${queryString ? `?${queryString}` : ''}${hash}`,\n { scroll: false },\n )\n }\n\n // Smart defaults based on type and context\n switch (type) {\n case 'search':\n return {\n text: \"Reset Filters\",\n action: () => resetParams(['search', 'page'])\n }\n case 'posts':\n // Blog-style listing pages (blog, case studies) reset their filters\n if (currentPath.includes('/blog') || currentPath.includes('/case-studies')) {\n return {\n text: \"Reset Filters\",\n action: () => resetParams(['search', 'page', 'category', 'tags'])\n }\n } else if (currentPath.includes('/profile')) {\n return {\n text: \"Browse Vendors\",\n action: () => router.push('/vendors')\n }\n }\n return {\n text: \"View All Posts\",\n action: () => router.push('/blog')\n }\n case 'vendors':\n // If we're in profile or other pages, direct to main content\n if (currentPath.includes('/profile')) {\n return {\n text: \"Browse Vendors\",\n action: () => router.push('/vendors')\n }\n } else if (currentPath.includes('/vendors') || currentPath.includes('/margin-increase/compare')) {\n return {\n text: \"Reset Filters\",\n action: () => resetParams(['search', 'page', 'category', 'subcategory'])\n }\n }\n return {\n text: \"Browse Vendors\",\n action: () => router.push('/vendors')\n }\n default:\n return {\n text: \"Browse Vendors\",\n action: () => router.push('/vendors')\n }\n }\n }\n\n const defaultContent = getDefaultContent()\n const displayTitle = title || defaultContent.title\n const displayDescription = description || defaultContent.description\n // ctaHref short-circuits BEFORE getSmartCTA(): the smart defaults read\n // window.location.pathname (SSR-empty, client-real), so a server-rendered\n // page with a link CTA must never enter that branch. Existing callers\n // without ctaHref keep today's smart-default behavior unchanged.\n const smartCTA = ctaHref ? null : getSmartCTA()\n const ctaClassName = ctaVariant === 'primary'\n ? \"w-full bg-ods-accent text-ods-text-on-accent hover:bg-ods-accent-hover transition-all duration-150 font-body font-medium\"\n : \"w-full bg-transparent border border-ods-border text-ods-text-primary hover:border-ods-accent hover:text-ods-accent transition-all duration-150 font-body font-medium\"\n\n return (\n <div className=\"flex flex-col items-center justify-center py-6 md:py-16 px-6 text-center\">\n {/* Icon */}\n <div className=\"mb-3 md:mb-6 flex items-center justify-center\">\n <div className=\"rounded-full bg-ods-card p-3 md:p-6 border border-ods-border\">\n <div className=\"w-8 h-8 md:w-16 md:h-16 text-ods-text-secondary flex items-center justify-center\">\n {defaultContent.icon}\n </div>\n </div>\n </div>\n\n {/* Title */}\n <h2 className=\"mb-2 md:mb-3 text-h3 text-ods-text-primary\">\n {displayTitle}\n </h2>\n\n {/* Description */}\n <p className=\"mb-4 md:mb-8 max-w-md text-h6 text-ods-text-secondary\">\n {displayDescription}\n </p>\n\n {/* Link CTA (ctaHref) — SSR-safe, no path sniffing */}\n {showCTA && ctaHref && (\n <div className=\"w-full max-w-xs mb-3\">\n <Button href={ctaHref} className={ctaClassName}>\n {ctaText || 'Contact us'}\n </Button>\n </div>\n )}\n\n {/* Smart CTA Button */}\n {showCTA && !ctaHref && smartCTA && (\n <div className=\"w-full max-w-xs mb-3\">\n <Button onClick={smartCTA.action} className={ctaClassName}>\n {smartCTA.text}\n </Button>\n </div>\n )}\n\n {/* Optional Back Button */}\n {showBackButton && onGoBack && (\n <div className=\"w-full max-w-xs\">\n <Button\n onClick={onGoBack}\n variant=\"outline\"\n className=\"w-full transition-all duration-150 font-body font-medium\"\n >\n {backButtonText}\n </Button>\n </div>\n )}\n </div>\n )\n} "]}
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
TASK_TYPE_LABELS,
|
|
10
10
|
TASK_TYPE_TEXT_COLORS,
|
|
11
11
|
getStatusColorScheme
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-SQJXVADG.js";
|
|
13
13
|
import {
|
|
14
14
|
init_next_navigation,
|
|
15
15
|
usePathname,
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
import {
|
|
24
24
|
cn,
|
|
25
25
|
init_cn
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-ZRILYK5U.js";
|
|
27
27
|
|
|
28
28
|
// src/components/shared/dev-section/dev-section-view.tsx
|
|
29
29
|
import { useState, useEffect } from "react";
|
|
@@ -249,4 +249,4 @@ export {
|
|
|
249
249
|
DevCardRowSkeletonList,
|
|
250
250
|
DeliveryRow
|
|
251
251
|
};
|
|
252
|
-
//# sourceMappingURL=chunk-
|
|
252
|
+
//# sourceMappingURL=chunk-EFTTERZ5.js.map
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
MiamiCyberGangLogoFaceOnly,
|
|
10
10
|
OpenFrameLogo,
|
|
11
11
|
OpenmspLogo
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-XURRAFIB.js";
|
|
13
13
|
import {
|
|
14
14
|
AuthentikLogoGreyIcon,
|
|
15
15
|
Chevron02DownIcon,
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
import {
|
|
26
26
|
cn,
|
|
27
27
|
init_cn
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-ZRILYK5U.js";
|
|
29
29
|
import {
|
|
30
30
|
createNatsClient
|
|
31
31
|
} from "./chunk-GSONSIWG.js";
|
|
@@ -3652,6 +3652,177 @@ function scrollElementIntoView(target, options = {}) {
|
|
|
3652
3652
|
activeRaf = requestAnimationFrame(step);
|
|
3653
3653
|
}
|
|
3654
3654
|
|
|
3655
|
+
// src/utils/markdown-fences.ts
|
|
3656
|
+
var FENCE_RE = /^ {0,3}(`{3,}|~{3,})([^\n]*?)\r?$/;
|
|
3657
|
+
var BLANK_LINE_RE = /^[ \t\r]*$/;
|
|
3658
|
+
function isBlankLine(line) {
|
|
3659
|
+
return BLANK_LINE_RE.test(line);
|
|
3660
|
+
}
|
|
3661
|
+
function createFenceTracker() {
|
|
3662
|
+
let fenceChar = null;
|
|
3663
|
+
let fenceLength = 0;
|
|
3664
|
+
return {
|
|
3665
|
+
push(line) {
|
|
3666
|
+
const fence = FENCE_RE.exec(line);
|
|
3667
|
+
if (fence) {
|
|
3668
|
+
const run = fence[1];
|
|
3669
|
+
if (fenceChar === null) {
|
|
3670
|
+
fenceChar = run[0];
|
|
3671
|
+
fenceLength = run.length;
|
|
3672
|
+
return "open";
|
|
3673
|
+
}
|
|
3674
|
+
if (run[0] === fenceChar && run.length >= fenceLength && isBlankLine(fence[2])) {
|
|
3675
|
+
fenceChar = null;
|
|
3676
|
+
fenceLength = 0;
|
|
3677
|
+
return "close";
|
|
3678
|
+
}
|
|
3679
|
+
return "inside";
|
|
3680
|
+
}
|
|
3681
|
+
return fenceChar === null ? "text" : "inside";
|
|
3682
|
+
},
|
|
3683
|
+
openChar: () => fenceChar,
|
|
3684
|
+
openLength: () => fenceLength
|
|
3685
|
+
};
|
|
3686
|
+
}
|
|
3687
|
+
|
|
3688
|
+
// src/utils/markdown-heading-id.ts
|
|
3689
|
+
var HEADING_EMOJI_RE = /[\u{1F300}-\u{1F9FF}]|[\u{2600}-\u{26FF}]|[\u{2700}-\u{27BF}]/gu;
|
|
3690
|
+
function stripHeadingEmojis(text) {
|
|
3691
|
+
return text.replace(HEADING_EMOJI_RE, "").trim();
|
|
3692
|
+
}
|
|
3693
|
+
function slugifyHeadingBase(text) {
|
|
3694
|
+
return text.trim().toLowerCase().replace(/[^\w\s-]/g, "").replace(/\s+/g, "-").replace(/^-+|-+$/g, "");
|
|
3695
|
+
}
|
|
3696
|
+
function slugifyHeadingText(text) {
|
|
3697
|
+
return slugifyHeadingBase(stripHeadingEmojis(text));
|
|
3698
|
+
}
|
|
3699
|
+
var ATX_HEADING_RE = /^ {0,3}(#{1,6})[ \t]+(.*?)(?:[ \t]+#+)?[ \t]*\r?$/;
|
|
3700
|
+
var ATX_EMPTY_RE = /^ {0,3}(#{1,6})[ \t]*#*[ \t]*\r?$/;
|
|
3701
|
+
var RAW_HEADING_RE = /<h([1-6])\b[^>]*>([\s\S]*?)(?:<\/h\1>|$)/gi;
|
|
3702
|
+
var CONTAINER_PREFIX_RE = /^ {0,3}(?:(?:>[ \t]?)+|(?:[-+*]|\d{1,9}[.)])[ \t]+)+/;
|
|
3703
|
+
var SETEXT_UNDERLINE_RE = /^ {0,3}(=+|-+)[ \t]*\r?$/;
|
|
3704
|
+
var THEMATIC_BREAK_RE = /^ {0,3}(\*|_){3,}[ \t]*\r?$/;
|
|
3705
|
+
var HTML_BLOCK_TAGS = "address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul";
|
|
3706
|
+
var HTML_BLOCK_OPENER_RE = new RegExp(
|
|
3707
|
+
`^ {0,3}(?:<(?:script|pre|style|textarea)(?:[\\s>]|$)|<!--|<\\?|<![a-zA-Z]|<!\\[CDATA\\[|</?(?:${HTML_BLOCK_TAGS})(?:[\\s/>]|$)|<[a-zA-Z][a-zA-Z0-9-]*(?:\\s[^>]*)?/?>[ \\t]*\\r?$|</[a-zA-Z][a-zA-Z0-9-]*[ \\t]*>[ \\t]*\\r?$)`,
|
|
3708
|
+
"i"
|
|
3709
|
+
);
|
|
3710
|
+
function scanHeadings(content, options = {}) {
|
|
3711
|
+
const { skipFrontmatter = true, includeRawHtml = true, skipFences = true } = options;
|
|
3712
|
+
const out = [];
|
|
3713
|
+
const lines = content.split("\n");
|
|
3714
|
+
const fences = skipFences ? createFenceTracker() : null;
|
|
3715
|
+
let start = 0;
|
|
3716
|
+
if (skipFrontmatter && lines[0]?.trim() === "---") {
|
|
3717
|
+
for (let i = 1; i < lines.length; i++) {
|
|
3718
|
+
if (lines[i].trim() === "---" || lines[i].trim() === "...") {
|
|
3719
|
+
start = i + 1;
|
|
3720
|
+
break;
|
|
3721
|
+
}
|
|
3722
|
+
}
|
|
3723
|
+
}
|
|
3724
|
+
let setextRun = null;
|
|
3725
|
+
for (let i = start; i < lines.length; i++) {
|
|
3726
|
+
const line = lines[i];
|
|
3727
|
+
if (fences) {
|
|
3728
|
+
const role = fences.push(line);
|
|
3729
|
+
if (role !== "text") {
|
|
3730
|
+
setextRun = null;
|
|
3731
|
+
continue;
|
|
3732
|
+
}
|
|
3733
|
+
}
|
|
3734
|
+
const prefix = CONTAINER_PREFIX_RE.exec(line)?.[0] ?? "";
|
|
3735
|
+
const body = prefix ? line.slice(prefix.length) : line;
|
|
3736
|
+
const setext = SETEXT_UNDERLINE_RE.exec(body);
|
|
3737
|
+
if (setext) {
|
|
3738
|
+
if (setextRun && !setextRun.disqualified && setextRun.prefix === prefix) {
|
|
3739
|
+
out.push({
|
|
3740
|
+
line: setextRun.line,
|
|
3741
|
+
level: setext[1][0] === "=" ? 1 : 2,
|
|
3742
|
+
text: setextRun.lines.join("\n")
|
|
3743
|
+
});
|
|
3744
|
+
}
|
|
3745
|
+
setextRun = null;
|
|
3746
|
+
continue;
|
|
3747
|
+
}
|
|
3748
|
+
const atx = ATX_HEADING_RE.exec(body) ?? ATX_EMPTY_RE.exec(body);
|
|
3749
|
+
if (atx) {
|
|
3750
|
+
out.push({ line: i + 1, level: atx[1].length, text: (atx[2] ?? "").trim() });
|
|
3751
|
+
setextRun = null;
|
|
3752
|
+
continue;
|
|
3753
|
+
}
|
|
3754
|
+
if (includeRawHtml && line.indexOf("<") !== -1) {
|
|
3755
|
+
RAW_HEADING_RE.lastIndex = 0;
|
|
3756
|
+
let raw;
|
|
3757
|
+
let matched = false;
|
|
3758
|
+
while ((raw = RAW_HEADING_RE.exec(line)) !== null) {
|
|
3759
|
+
matched = true;
|
|
3760
|
+
out.push({
|
|
3761
|
+
line: i + 1,
|
|
3762
|
+
level: Number(raw[1]),
|
|
3763
|
+
text: raw[2].replace(/<[^>]*>/g, "").trim()
|
|
3764
|
+
});
|
|
3765
|
+
}
|
|
3766
|
+
if (matched) {
|
|
3767
|
+
setextRun = null;
|
|
3768
|
+
continue;
|
|
3769
|
+
}
|
|
3770
|
+
}
|
|
3771
|
+
if (isBlankLine(body) || THEMATIC_BREAK_RE.test(body)) {
|
|
3772
|
+
setextRun = null;
|
|
3773
|
+
continue;
|
|
3774
|
+
}
|
|
3775
|
+
if (setextRun && setextRun.prefix === prefix) {
|
|
3776
|
+
setextRun.lines.push(body.trim());
|
|
3777
|
+
} else {
|
|
3778
|
+
setextRun = {
|
|
3779
|
+
line: i + 1,
|
|
3780
|
+
prefix,
|
|
3781
|
+
lines: [body.trim()],
|
|
3782
|
+
disqualified: HTML_BLOCK_OPENER_RE.test(body)
|
|
3783
|
+
};
|
|
3784
|
+
}
|
|
3785
|
+
}
|
|
3786
|
+
return out;
|
|
3787
|
+
}
|
|
3788
|
+
function createHeadingIdDeduper() {
|
|
3789
|
+
const counts = {};
|
|
3790
|
+
return (cleanId) => {
|
|
3791
|
+
if (counts[cleanId]) {
|
|
3792
|
+
counts[cleanId]++;
|
|
3793
|
+
return `${cleanId}-${counts[cleanId]}`;
|
|
3794
|
+
}
|
|
3795
|
+
counts[cleanId] = 1;
|
|
3796
|
+
return cleanId;
|
|
3797
|
+
};
|
|
3798
|
+
}
|
|
3799
|
+
|
|
3800
|
+
// src/utils/anchor-id.ts
|
|
3801
|
+
function normalizeAnchorId(raw) {
|
|
3802
|
+
return slugifyHeadingText(raw).replace(/-+/g, "-").replace(/^-+|-+$/g, "");
|
|
3803
|
+
}
|
|
3804
|
+
var HEADING_SELECTOR = "h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]";
|
|
3805
|
+
var DUPLICATE_SUFFIX_RE = /^(.+)-(\d+)$/;
|
|
3806
|
+
function findDuplicateShifted(normalized, doc) {
|
|
3807
|
+
const parts = DUPLICATE_SUFFIX_RE.exec(normalized);
|
|
3808
|
+
if (!parts) return null;
|
|
3809
|
+
const ordinal = Number(parts[2]);
|
|
3810
|
+
if (!Number.isSafeInteger(ordinal)) return null;
|
|
3811
|
+
return doc.getElementById(`${parts[1]}-${ordinal + 1}`);
|
|
3812
|
+
}
|
|
3813
|
+
function findAnchorElementByNormalizedId(rawId, doc) {
|
|
3814
|
+
const normalized = normalizeAnchorId(rawId);
|
|
3815
|
+
if (!normalized) return null;
|
|
3816
|
+
if (normalized !== rawId) {
|
|
3817
|
+
const direct = doc.getElementById(normalized);
|
|
3818
|
+
if (direct) return direct;
|
|
3819
|
+
}
|
|
3820
|
+
for (const heading of Array.from(doc.querySelectorAll(HEADING_SELECTOR))) {
|
|
3821
|
+
if (normalizeAnchorId(heading.id) === normalized) return heading;
|
|
3822
|
+
}
|
|
3823
|
+
return findDuplicateShifted(normalized, doc);
|
|
3824
|
+
}
|
|
3825
|
+
|
|
3655
3826
|
// src/utils/same-page-hash-nav.ts
|
|
3656
3827
|
var STICKY_HEADER_OFFSET_PX = 96;
|
|
3657
3828
|
var HUB_HEADER_OFFSET_PX = 80;
|
|
@@ -3664,12 +3835,17 @@ function getHashTargetElement(id) {
|
|
|
3664
3835
|
if (!id) return null;
|
|
3665
3836
|
const direct = document.getElementById(id);
|
|
3666
3837
|
if (direct) return direct;
|
|
3838
|
+
let decoded = id;
|
|
3667
3839
|
try {
|
|
3668
|
-
|
|
3669
|
-
if (decoded !== id)
|
|
3840
|
+
decoded = decodeURIComponent(id);
|
|
3841
|
+
if (decoded !== id) {
|
|
3842
|
+
const decodedEl = document.getElementById(decoded);
|
|
3843
|
+
if (decodedEl) return decodedEl;
|
|
3844
|
+
}
|
|
3670
3845
|
} catch {
|
|
3846
|
+
decoded = id;
|
|
3671
3847
|
}
|
|
3672
|
-
return
|
|
3848
|
+
return findAnchorElementByNormalizedId(decoded, document);
|
|
3673
3849
|
}
|
|
3674
3850
|
function navigateSamePageHash(target, options = {}) {
|
|
3675
3851
|
if (typeof window === "undefined") return false;
|
|
@@ -3915,9 +4091,20 @@ export {
|
|
|
3915
4091
|
buildOgPlaceholderUrl,
|
|
3916
4092
|
useOgPlaceholderUrl,
|
|
3917
4093
|
scrollElementIntoView,
|
|
4094
|
+
isBlankLine,
|
|
4095
|
+
createFenceTracker,
|
|
4096
|
+
HEADING_EMOJI_RE,
|
|
4097
|
+
stripHeadingEmojis,
|
|
4098
|
+
slugifyHeadingBase,
|
|
4099
|
+
slugifyHeadingText,
|
|
4100
|
+
scanHeadings,
|
|
4101
|
+
createHeadingIdDeduper,
|
|
4102
|
+
normalizeAnchorId,
|
|
4103
|
+
findAnchorElementByNormalizedId,
|
|
3918
4104
|
STICKY_HEADER_OFFSET_PX,
|
|
3919
4105
|
HUB_HEADER_OFFSET_PX,
|
|
3920
4106
|
normalizeHashFragment,
|
|
4107
|
+
getHashTargetElement,
|
|
3921
4108
|
navigateSamePageHash,
|
|
3922
4109
|
useScrollToHash,
|
|
3923
4110
|
HONEYPOT_FIELD,
|
|
@@ -3929,4 +4116,4 @@ export {
|
|
|
3929
4116
|
splitCsvEnv,
|
|
3930
4117
|
useHumanitySignals
|
|
3931
4118
|
};
|
|
3932
|
-
//# sourceMappingURL=chunk-
|
|
4119
|
+
//# sourceMappingURL=chunk-FS3YSNSU.js.map
|