@flamingo-stack/openframe-frontend-core 0.0.296-snapshot.20260621021605 → 0.0.296
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/README.md +0 -9
- package/dist/chunk-26PKDALD.js +2379 -0
- package/dist/chunk-26PKDALD.js.map +1 -0
- package/dist/chunk-3MCHAFHB.js +89 -0
- package/dist/chunk-3MCHAFHB.js.map +1 -0
- package/dist/{chunk-PI4WSYQV.js → chunk-3ZXUQQL4.js} +2 -2
- package/dist/{chunk-WMSTJAZT.cjs → chunk-5E2HOSSH.cjs} +51 -913
- package/dist/chunk-5E2HOSSH.cjs.map +1 -0
- package/dist/{chunk-IL47XWV5.js → chunk-5P3B2LZW.js} +14 -8
- package/dist/{chunk-IL47XWV5.js.map → chunk-5P3B2LZW.js.map} +1 -1
- package/dist/chunk-66AANIOC.cjs +619 -0
- package/dist/chunk-66AANIOC.cjs.map +1 -0
- package/dist/{chunk-AD6C23QY.js → chunk-6GCI7JOE.js} +7 -8
- package/dist/{chunk-AD6C23QY.js.map → chunk-6GCI7JOE.js.map} +1 -1
- package/dist/chunk-6JINAOI7.cjs +311 -0
- package/dist/chunk-6JINAOI7.cjs.map +1 -0
- package/dist/{chunk-2QG57XOJ.js → chunk-7RIYT7ZH.js} +205 -1067
- package/dist/chunk-7RIYT7ZH.js.map +1 -0
- package/dist/{chunk-L6PSSIUQ.cjs → chunk-AQOWFSMB.cjs} +1 -1
- package/dist/chunk-AQOWFSMB.cjs.map +1 -0
- package/dist/chunk-BOCFIKYS.cjs +3009 -0
- package/dist/chunk-BOCFIKYS.cjs.map +1 -0
- package/dist/{chunk-54KNMC2R.cjs → chunk-D3LEFMOA.cjs} +3 -3
- package/dist/{chunk-54KNMC2R.cjs.map → chunk-D3LEFMOA.cjs.map} +1 -1
- package/dist/chunk-D652TJBQ.js +3009 -0
- package/dist/chunk-D652TJBQ.js.map +1 -0
- package/dist/{chunk-PWQUAVA3.js → chunk-E4XABBSU.js} +98 -338
- package/dist/chunk-E4XABBSU.js.map +1 -0
- package/dist/{chunk-JALO4TAZ.js → chunk-EL6QLAWX.js} +55 -357
- package/dist/chunk-EL6QLAWX.js.map +1 -0
- package/dist/{chunk-6C526VNN.cjs → chunk-EYEW6PTA.cjs} +118 -358
- package/dist/chunk-EYEW6PTA.cjs.map +1 -0
- package/dist/chunk-FQJK446R.js +1606 -0
- package/dist/chunk-FQJK446R.js.map +1 -0
- package/dist/{chunk-4PSQS3SW.cjs → chunk-GLLDTKZK.cjs} +9 -7
- package/dist/chunk-GLLDTKZK.cjs.map +1 -0
- package/dist/{chunk-FQOTC3UU.cjs → chunk-IE6OU3WQ.cjs} +16 -318
- package/dist/chunk-IE6OU3WQ.cjs.map +1 -0
- package/dist/chunk-J54Z3OCR.cjs +1606 -0
- package/dist/chunk-J54Z3OCR.cjs.map +1 -0
- package/dist/{chunk-PC746XCO.js → chunk-K2PFPBMF.js} +5563 -15048
- package/dist/chunk-K2PFPBMF.js.map +1 -0
- package/dist/chunk-KXCRGTRN.cjs +2379 -0
- package/dist/chunk-KXCRGTRN.cjs.map +1 -0
- package/dist/{chunk-IZ7JSBFP.js → chunk-LCNMR277.js} +1 -1
- package/dist/chunk-LCNMR277.js.map +1 -0
- package/dist/chunk-LFGGF7OT.cjs +449 -0
- package/dist/chunk-LFGGF7OT.cjs.map +1 -0
- package/dist/chunk-M2OCXTNT.js +311 -0
- package/dist/chunk-M2OCXTNT.js.map +1 -0
- package/dist/{chunk-L7ULJKG7.js → chunk-MBFWU2EM.js} +10 -6
- package/dist/{chunk-L7ULJKG7.js.map → chunk-MBFWU2EM.js.map} +1 -1
- package/dist/chunk-ME4EVDFP.js +619 -0
- package/dist/chunk-ME4EVDFP.js.map +1 -0
- package/dist/chunk-OQ6X7ZOC.js +449 -0
- package/dist/chunk-OQ6X7ZOC.js.map +1 -0
- package/dist/{chunk-4TLE6VLU.js → chunk-OY7OF7E7.js} +24 -30
- package/dist/chunk-OY7OF7E7.js.map +1 -0
- package/dist/chunk-POKKCWKF.js +354 -0
- package/dist/chunk-POKKCWKF.js.map +1 -0
- package/dist/{chunk-GUTS7HGA.cjs → chunk-QHIXS3W2.cjs} +2514 -11999
- package/dist/chunk-QHIXS3W2.cjs.map +1 -0
- package/dist/chunk-TFSYSWPS.cjs +89 -0
- package/dist/chunk-TFSYSWPS.cjs.map +1 -0
- package/dist/{chunk-53FUMSZ5.cjs → chunk-W6M2FLLT.cjs} +46 -40
- package/dist/chunk-W6M2FLLT.cjs.map +1 -0
- package/dist/{chunk-3JIQVE7T.js → chunk-WHMATDVP.js} +15 -9
- package/dist/{chunk-3JIQVE7T.js.map → chunk-WHMATDVP.js.map} +1 -1
- package/dist/{chunk-YBYI62OE.cjs → chunk-X647HY3F.cjs} +37 -33
- package/dist/chunk-X647HY3F.cjs.map +1 -0
- package/dist/{chunk-UNVE2SDJ.cjs → chunk-X6BV7MB7.cjs} +31 -37
- package/dist/chunk-X6BV7MB7.cjs.map +1 -0
- package/dist/{chunk-7OVGB2DQ.cjs → chunk-XREEV72C.cjs} +25 -19
- package/dist/chunk-XREEV72C.cjs.map +1 -0
- package/dist/chunk-YETA25JW.cjs +354 -0
- package/dist/chunk-YETA25JW.cjs.map +1 -0
- package/dist/{chunk-FCDQNTDG.cjs → chunk-YIGPRLQY.cjs} +20 -21
- package/dist/chunk-YIGPRLQY.cjs.map +1 -0
- package/dist/{chunk-X4DOXQRT.js → chunk-ZP4AVIZP.js} +6 -4
- package/dist/{chunk-X4DOXQRT.js.map → chunk-ZP4AVIZP.js.map} +1 -1
- package/dist/components/chat/index.cjs +18 -8
- package/dist/components/chat/index.cjs.map +1 -1
- package/dist/components/chat/index.js +85 -75
- package/dist/components/contact/index.cjs +15 -8
- package/dist/components/contact/index.cjs.map +1 -1
- package/dist/components/contact/index.js +14 -7
- package/dist/components/docs/doc-viewer.d.ts +2 -39
- package/dist/components/docs/doc-viewer.d.ts.map +1 -1
- package/dist/components/docs/index.cjs +9 -17
- package/dist/components/docs/index.cjs.map +1 -1
- package/dist/components/docs/index.d.ts +0 -4
- package/dist/components/docs/index.d.ts.map +1 -1
- package/dist/components/docs/index.js +8 -16
- package/dist/components/docs/use-document-tree.d.ts.map +1 -1
- package/dist/components/embeds/embed-iframe.d.ts.map +1 -1
- package/dist/components/embeds/index.cjs +15 -38
- package/dist/components/embeds/index.cjs.map +1 -1
- package/dist/components/embeds/index.d.ts +0 -8
- package/dist/components/embeds/index.d.ts.map +1 -1
- package/dist/components/embeds/index.js +17 -40
- package/dist/components/faq/index.cjs +16 -9
- package/dist/components/faq/index.cjs.map +1 -1
- package/dist/components/faq/index.js +15 -8
- package/dist/components/features/index.cjs +16 -8
- package/dist/components/features/index.cjs.map +1 -1
- package/dist/components/features/index.js +32 -24
- package/dist/components/index.cjs +452 -257
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +976 -781
- package/dist/components/index.js.map +1 -1
- package/dist/components/layout/page-layout.d.ts +1 -10
- package/dist/components/layout/page-layout.d.ts.map +1 -1
- package/dist/components/layout/title-block.d.ts +1 -17
- package/dist/components/layout/title-block.d.ts.map +1 -1
- package/dist/components/navigation/index.cjs +15 -7
- package/dist/components/navigation/index.cjs.map +1 -1
- package/dist/components/navigation/index.js +17 -9
- package/dist/components/onboarding-guides/index.cjs +36 -35
- package/dist/components/onboarding-guides/index.cjs.map +1 -1
- package/dist/components/onboarding-guides/index.js +14 -13
- package/dist/components/onboarding-guides/index.js.map +1 -1
- package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts +1 -1
- package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts.map +1 -1
- package/dist/components/related-content/index.cjs +16 -9
- package/dist/components/related-content/index.cjs.map +1 -1
- package/dist/components/related-content/index.js +15 -8
- package/dist/components/shared/dev-section/dev-section-page.d.ts +0 -9
- package/dist/components/shared/dev-section/dev-section-page.d.ts.map +1 -1
- package/dist/components/shared/dev-section/dev-section-view.d.ts.map +1 -1
- package/dist/components/shared/dev-section/index.d.ts +1 -1
- package/dist/components/shared/dev-section/index.d.ts.map +1 -1
- package/dist/components/shared/doc-search/use-doc-search.d.ts.map +1 -1
- package/dist/components/shared/legal-document/legal-document-page.d.ts.map +1 -1
- package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
- package/dist/components/tickets/index.cjs +112 -100
- package/dist/components/tickets/index.cjs.map +1 -1
- package/dist/components/tickets/index.js +32 -20
- package/dist/components/tickets/index.js.map +1 -1
- package/dist/components/ui/file-manager/index.cjs +52 -50
- package/dist/components/ui/file-manager/index.cjs.map +1 -1
- package/dist/components/ui/file-manager/index.js +6 -4
- package/dist/components/ui/file-manager/index.js.map +1 -1
- package/dist/components/ui/index.cjs +19 -13
- package/dist/components/ui/index.cjs.map +1 -1
- package/dist/components/ui/index.d.ts +0 -2
- package/dist/components/ui/index.d.ts.map +1 -1
- package/dist/components/ui/index.js +139 -133
- package/dist/components/ui/release-changelog-section.d.ts +2 -6
- package/dist/components/ui/release-changelog-section.d.ts.map +1 -1
- package/dist/components/ui/simple-markdown-renderer.d.ts +8 -2
- package/dist/components/ui/simple-markdown-renderer.d.ts.map +1 -1
- package/dist/contexts/chat-runtime-context.d.ts +0 -14
- package/dist/contexts/chat-runtime-context.d.ts.map +1 -1
- package/dist/contexts/index.cjs +3 -3
- package/dist/contexts/index.js +5 -5
- package/dist/embed-shims/index.cjs +3 -3
- package/dist/embed-shims/index.cjs.map +1 -1
- package/dist/embed-shims/index.js +4 -4
- package/dist/hooks/index.cjs +9 -4
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.js +11 -6
- package/dist/index.cjs +20 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +364 -358
- package/dist/types/doc-source.d.ts +1 -31
- package/dist/types/doc-source.d.ts.map +1 -1
- package/dist/utils/index.cjs +0 -4
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -4
- package/dist/utils/index.js.map +1 -1
- package/package.json +1 -7
- package/src/components/chat/embeddable-chat.tsx +1 -1
- package/src/components/docs/doc-viewer.tsx +19 -111
- package/src/components/docs/index.ts +0 -17
- package/src/components/docs/use-document-tree.ts +0 -21
- package/src/components/embeds/embed-iframe.tsx +9 -7
- package/src/components/embeds/index.ts +0 -30
- package/src/components/embeds/og-link-preview.tsx +13 -13
- package/src/components/layout/page-layout.tsx +1 -14
- package/src/components/layout/title-block.tsx +62 -40
- package/src/components/onboarding-guides/onboarding-guide-detail-view.tsx +3 -3
- package/src/components/shared/dev-section/dev-section-page.tsx +1 -9
- package/src/components/shared/dev-section/dev-section-view.tsx +9 -14
- package/src/components/shared/dev-section/index.ts +1 -1
- package/src/components/shared/doc-search/use-doc-search.ts +3 -7
- package/src/components/shared/legal-document/legal-document-page.tsx +2 -2
- package/src/components/shared/product-release/release-detail-page.tsx +4 -6
- package/src/components/ui/index.ts +0 -2
- package/src/components/ui/release-changelog-section.tsx +2 -7
- package/src/components/ui/simple-markdown-renderer.tsx +11 -7
- package/src/contexts/chat-runtime-context.tsx +0 -14
- package/src/types/doc-source.ts +1 -33
- package/src/utils/index.ts +0 -1
- package/dist/chunk-2QG57XOJ.js.map +0 -1
- package/dist/chunk-4PSQS3SW.cjs.map +0 -1
- package/dist/chunk-4TLE6VLU.js.map +0 -1
- package/dist/chunk-53FUMSZ5.cjs.map +0 -1
- package/dist/chunk-6C526VNN.cjs.map +0 -1
- package/dist/chunk-7OVGB2DQ.cjs.map +0 -1
- package/dist/chunk-F5OB2YAL.cjs +0 -144
- package/dist/chunk-F5OB2YAL.cjs.map +0 -1
- package/dist/chunk-FBWXMMRB.cjs +0 -2
- package/dist/chunk-FBWXMMRB.cjs.map +0 -1
- package/dist/chunk-FCDQNTDG.cjs.map +0 -1
- package/dist/chunk-FQOTC3UU.cjs.map +0 -1
- package/dist/chunk-GUTS7HGA.cjs.map +0 -1
- package/dist/chunk-GZ4C3XW6.js +0 -2
- package/dist/chunk-GZ4C3XW6.js.map +0 -1
- package/dist/chunk-IZ7JSBFP.js.map +0 -1
- package/dist/chunk-JALO4TAZ.js.map +0 -1
- package/dist/chunk-L6PSSIUQ.cjs.map +0 -1
- package/dist/chunk-PC746XCO.js.map +0 -1
- package/dist/chunk-PWQUAVA3.js.map +0 -1
- package/dist/chunk-SA2WPJVO.js +0 -144
- package/dist/chunk-SA2WPJVO.js.map +0 -1
- package/dist/chunk-UNVE2SDJ.cjs.map +0 -1
- package/dist/chunk-WMSTJAZT.cjs.map +0 -1
- package/dist/chunk-YBYI62OE.cjs.map +0 -1
- package/dist/components/case-studies/index.cjs +0 -126
- package/dist/components/case-studies/index.cjs.map +0 -1
- package/dist/components/case-studies/index.d.ts +0 -2
- package/dist/components/case-studies/index.d.ts.map +0 -1
- package/dist/components/case-studies/index.js +0 -126
- package/dist/components/case-studies/index.js.map +0 -1
- package/dist/components/case-studies/share-experience-section.d.ts +0 -48
- package/dist/components/case-studies/share-experience-section.d.ts.map +0 -1
- package/dist/components/docs/docs-hub-page.d.ts +0 -46
- package/dist/components/docs/docs-hub-page.d.ts.map +0 -1
- package/dist/components/docs/skeletons.d.ts +0 -32
- package/dist/components/docs/skeletons.d.ts.map +0 -1
- package/dist/components/docs/use-docs-resolve-link.d.ts +0 -20
- package/dist/components/docs/use-docs-resolve-link.d.ts.map +0 -1
- package/dist/components/embeds/embed-container.d.ts +0 -37
- package/dist/components/embeds/embed-container.d.ts.map +0 -1
- package/dist/components/embeds/file-download-card.d.ts +0 -18
- package/dist/components/embeds/file-download-card.d.ts.map +0 -1
- package/dist/components/embeds/linkedin-embed-client.d.ts +0 -8
- package/dist/components/embeds/linkedin-embed-client.d.ts.map +0 -1
- package/dist/components/embeds/markdown-image.d.ts +0 -5
- package/dist/components/embeds/markdown-image.d.ts.map +0 -1
- package/dist/components/embeds/reddit-embed-client.d.ts +0 -7
- package/dist/components/embeds/reddit-embed-client.d.ts.map +0 -1
- package/dist/components/embeds/rich-markdown-runtime.d.ts +0 -46
- package/dist/components/embeds/rich-markdown-runtime.d.ts.map +0 -1
- package/dist/components/embeds/twitter-embed-client.d.ts +0 -8
- package/dist/components/embeds/twitter-embed-client.d.ts.map +0 -1
- package/dist/components/layout/page-header.d.ts +0 -78
- package/dist/components/layout/page-header.d.ts.map +0 -1
- package/dist/components/layout/page-with-header.d.ts +0 -67
- package/dist/components/layout/page-with-header.d.ts.map +0 -1
- package/dist/components/ui/rich-markdown-renderer.d.ts +0 -34
- package/dist/components/ui/rich-markdown-renderer.d.ts.map +0 -1
- package/dist/utils/page-header-constants.d.ts +0 -15
- package/dist/utils/page-header-constants.d.ts.map +0 -1
- package/dist/utils/social-embed-cache.d.ts +0 -29
- package/dist/utils/social-embed-cache.d.ts.map +0 -1
- package/src/components/case-studies/index.ts +0 -4
- package/src/components/case-studies/share-experience-section.tsx +0 -185
- package/src/components/docs/docs-hub-page.tsx +0 -149
- package/src/components/docs/skeletons.tsx +0 -138
- package/src/components/docs/use-docs-resolve-link.ts +0 -52
- package/src/components/embeds/embed-container.tsx +0 -80
- package/src/components/embeds/file-download-card.tsx +0 -54
- package/src/components/embeds/linkedin-embed-client.tsx +0 -100
- package/src/components/embeds/markdown-image.tsx +0 -88
- package/src/components/embeds/reddit-embed-client.tsx +0 -550
- package/src/components/embeds/rich-markdown-runtime.tsx +0 -79
- package/src/components/embeds/twitter-embed-client.tsx +0 -308
- package/src/components/layout/page-header.tsx +0 -182
- package/src/components/layout/page-with-header.tsx +0 -110
- package/src/components/ui/rich-markdown-renderer.tsx +0 -1203
- package/src/utils/page-header-constants.ts +0 -15
- package/src/utils/social-embed-cache.ts +0 -391
- /package/dist/{chunk-PI4WSYQV.js.map → chunk-3ZXUQQL4.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-download-card.d.ts","sourceRoot":"","sources":["../../../src/components/embeds/file-download-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAO,GACR,EAAE,qBAAqB,qBA2BvB"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
interface LinkedInEmbedProps {
|
|
2
|
-
url: string;
|
|
3
|
-
/** Fixed iframe height — LinkedIn embeds don't auto-resize. */
|
|
4
|
-
height?: number;
|
|
5
|
-
}
|
|
6
|
-
export declare function LinkedInEmbedClient({ url, height }: LinkedInEmbedProps): import("react").JSX.Element;
|
|
7
|
-
export {};
|
|
8
|
-
//# sourceMappingURL=linkedin-embed-client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"linkedin-embed-client.d.ts","sourceRoot":"","sources":["../../../src/components/embeds/linkedin-embed-client.tsx"],"names":[],"mappings":"AAyBA,UAAU,kBAAkB;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CAAC,EAAE,GAAG,EAAE,MAAY,EAAE,EAAE,kBAAkB,+BAoE5E"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-image.d.ts","sourceRoot":"","sources":["../../../src/components/embeds/markdown-image.tsx"],"names":[],"mappings":"AA+BA,wBAAgB,aAAa,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,+BAwDxE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reddit-embed-client.d.ts","sourceRoot":"","sources":["../../../src/components/embeds/reddit-embed-client.tsx"],"names":[],"mappings":"AAoIA,UAAU,gBAAgB;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,GAAG,EAAE,QAAc,EAAE,EAAE,gBAAgB,+BA4Z1E"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { type ReactNode } from 'react';
|
|
2
|
-
/**
|
|
3
|
-
* Runtime knobs threaded from `<RichMarkdownRenderer>` down to its
|
|
4
|
-
* satellite embed clients (reddit / twitter / og link preview / markdown
|
|
5
|
-
* image). Lives in its own micro-context — distinct from the
|
|
6
|
-
* `ChatRuntimeContext` used by the lib's chat module — because the
|
|
7
|
-
* markdown renderer is mounted from documentation pages (blog, legal,
|
|
8
|
-
* data room, knowledge base) that do NOT have a chat runtime in scope,
|
|
9
|
-
* and the satellites need just three knobs:
|
|
10
|
-
*
|
|
11
|
-
* - WHERE to fetch the reddit / twitter / OG-scrape proxy
|
|
12
|
-
* - HOW to transform a markdown image URL (the hub injects its
|
|
13
|
-
* Supabase image transformer; embedders pass null / identity)
|
|
14
|
-
*
|
|
15
|
-
* Defaults match the hub's existing endpoints so passing
|
|
16
|
-
* `<RichMarkdownRenderer>` no props at all still works end-to-end on
|
|
17
|
-
* the hub. Embedders override per-prop as needed.
|
|
18
|
-
*/
|
|
19
|
-
export interface RichMarkdownRuntime {
|
|
20
|
-
redditProxyUrl: string;
|
|
21
|
-
twitterProxyUrl: string;
|
|
22
|
-
ogScraperUrl: string;
|
|
23
|
-
/** Hub-only Supabase image transformer. Returning null means "don't
|
|
24
|
-
* rewrite — use the src as-is". Defaults to identity (no rewrite). */
|
|
25
|
-
transformImageSrc: (src: string, opts?: {
|
|
26
|
-
width?: number;
|
|
27
|
-
quality?: number;
|
|
28
|
-
resize?: 'cover' | 'contain' | 'fill';
|
|
29
|
-
}) => string | null;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Provider that fills in defaults for any prop the caller didn't pass.
|
|
33
|
-
* Memoizes the resolved runtime so satellites don't re-render when an
|
|
34
|
-
* unrelated parent state ticks.
|
|
35
|
-
*/
|
|
36
|
-
export declare function RichMarkdownRuntimeProvider({ redditProxyUrl, twitterProxyUrl, ogScraperUrl, transformImageSrc, children, }: Partial<RichMarkdownRuntime> & {
|
|
37
|
-
children: ReactNode;
|
|
38
|
-
}): import("react").JSX.Element;
|
|
39
|
-
/**
|
|
40
|
-
* Read the ambient runtime. Returns the defaults when called outside any
|
|
41
|
-
* `RichMarkdownRuntimeProvider` — so embedders that drop a satellite into
|
|
42
|
-
* a non-renderer context (e.g. a release page calling
|
|
43
|
-
* `<RedditEmbedClient>` directly) get the hub-matching defaults for free.
|
|
44
|
-
*/
|
|
45
|
-
export declare function useRichMarkdownRuntime(): RichMarkdownRuntime;
|
|
46
|
-
//# sourceMappingURL=rich-markdown-runtime.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rich-markdown-runtime.d.ts","sourceRoot":"","sources":["../../../src/components/embeds/rich-markdown-runtime.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAE1E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB;2EACuE;IACvE,iBAAiB,EAAE,CACjB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;KAAE,KAC/E,MAAM,GAAG,IAAI,CAAA;CACnB;AAWD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,EAC1C,cAAc,EACd,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,QAAQ,GACT,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAexD;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,mBAAmB,CAE5D"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
interface TwitterEmbedProps {
|
|
2
|
-
url: string;
|
|
3
|
-
tweetId?: string;
|
|
4
|
-
maxWidth?: number;
|
|
5
|
-
}
|
|
6
|
-
export declare function TwitterEmbedClient({ url, tweetId, maxWidth }: TwitterEmbedProps): import("react").JSX.Element;
|
|
7
|
-
export {};
|
|
8
|
-
//# sourceMappingURL=twitter-embed-client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"twitter-embed-client.d.ts","sourceRoot":"","sources":["../../../src/components/embeds/twitter-embed-client.tsx"],"names":[],"mappings":"AAuEA,UAAU,iBAAiB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,kBAAkB,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,QAAc,EAAE,EAAE,iBAAiB,+BAsOrF"}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
/**
|
|
3
|
-
* Page-header primitive — the canonical "back-button + title + subtitle
|
|
4
|
-
* + (optional) image / actions" chrome every lib page uses.
|
|
5
|
-
*
|
|
6
|
-
* Owns the SSOT for the page-header DOM/CSS that the rest of the lib
|
|
7
|
-
* was duplicating: pre-`mb` top padding, h1 typography (`text-h2`), h6
|
|
8
|
-
* subtitle (`text-h6`), the gap between the back button and the title
|
|
9
|
-
* block, and the right-side actions slot. Consumers either render this
|
|
10
|
-
* directly (e.g. `<DocViewer>` / `<DocsHubPage>`) or compose it through
|
|
11
|
-
* the `<TitleBlock>` adapter which adds the `PageActions` /
|
|
12
|
-
* `ActionsMenu` / selector wiring on top.
|
|
13
|
-
*
|
|
14
|
-
* Why this exists: knowledge-hub vs releases sat at different vertical
|
|
15
|
-
* rhythms (px-perfect mismatch on title baseline + subtitle offset)
|
|
16
|
-
* because the docs surface hand-rolled its own chrome instead of going
|
|
17
|
-
* through `TitleBlock`. Centralizing the layout here means every
|
|
18
|
-
* embeddable lib page (DocViewer, DevSectionPage, LegalDocumentPage,
|
|
19
|
-
* OnboardingGuideDetailView) renders pixel-identical title/subtitle/
|
|
20
|
-
* back-button typography + spacing — and a future spacing/typography
|
|
21
|
-
* tweak is one file.
|
|
22
|
-
*/
|
|
23
|
-
export interface PageHeaderProps {
|
|
24
|
-
/** Page title (h1). Plain string — ReactNode is intentionally not
|
|
25
|
-
* supported here so every consumer renders the same typography. */
|
|
26
|
-
title?: string;
|
|
27
|
-
/** Optional icon rendered inline before the title text (e.g. the
|
|
28
|
-
* rocket emoji on /releases, the docs icon on /knowledge-base).
|
|
29
|
-
* Same `flex items-center gap-3` row as `<DevSectionView>`'s hero. */
|
|
30
|
-
titleIcon?: React.ReactNode;
|
|
31
|
-
/** Page subtitle (description paragraph). */
|
|
32
|
-
subtitle?: string;
|
|
33
|
-
/**
|
|
34
|
-
* Render a yellow accent dot (`.`) after the title. Mirrors the
|
|
35
|
-
* hub's legacy `<AdminPageHeader accentDot>` flag — now lib-wide so
|
|
36
|
-
* surfaces like `/knowledge-base` keep their existing accent styling
|
|
37
|
-
* after the migration.
|
|
38
|
-
*/
|
|
39
|
-
accentDot?: boolean;
|
|
40
|
-
/** Optional thumbnail / hero image rendered to the left of the
|
|
41
|
-
* title block. Used by entity-image-style headers (onboarding
|
|
42
|
-
* guides, knowledge-base entries). */
|
|
43
|
-
image?: {
|
|
44
|
-
src: string;
|
|
45
|
-
alt?: string;
|
|
46
|
-
};
|
|
47
|
-
/** Back-button shown above the title block. Hidden on mobile (matches
|
|
48
|
-
* the existing TitleBlock + DocViewer behavior). */
|
|
49
|
-
backButton?: {
|
|
50
|
-
label?: string;
|
|
51
|
-
onClick: () => void;
|
|
52
|
-
};
|
|
53
|
-
/** Right-side actions slot (action buttons / menu / tab selector).
|
|
54
|
-
* Composed externally (e.g. `<TitleBlock>` builds `PageActions` + menu
|
|
55
|
-
* + selector and passes the result here). */
|
|
56
|
-
actions?: React.ReactNode;
|
|
57
|
-
/**
|
|
58
|
-
* Visual variant.
|
|
59
|
-
* - `plain` (default): transparent background, no border.
|
|
60
|
-
* - `card`: card background, border, and padding on mobile only —
|
|
61
|
-
* collapses to plain on md+ (legacy `TitleBlock` variant — kept so
|
|
62
|
-
* surfaces that depend on the card affordance don't regress).
|
|
63
|
-
*/
|
|
64
|
-
variant?: 'plain' | 'card';
|
|
65
|
-
/** When the consumer wraps `<PageHeader>` in its OWN spacing container
|
|
66
|
-
* (e.g. `<DevSectionView>`'s `gap-10 flex-col`), the default `mb-l`
|
|
67
|
-
* bottom margin doubles up. Pass `noBottomMargin` to opt out. */
|
|
68
|
-
noBottomMargin?: boolean;
|
|
69
|
-
/** Same as `noBottomMargin` for the default `pt-l` top padding. Set
|
|
70
|
-
* this when PageHeader is nested INSIDE another layout that already
|
|
71
|
-
* provides top spacing (e.g. `<DevSectionView>`'s hero, which sits
|
|
72
|
-
* inside `<PageLayout>`'s children flow). */
|
|
73
|
-
noTopPadding?: boolean;
|
|
74
|
-
className?: string;
|
|
75
|
-
}
|
|
76
|
-
export declare function PageHeader({ title, titleIcon, subtitle, accentDot, image, backButton, actions, variant, noBottomMargin, noTopPadding, className, }: PageHeaderProps): React.JSX.Element;
|
|
77
|
-
export default PageHeader;
|
|
78
|
-
//# sourceMappingURL=page-header.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"page-header.d.ts","sourceRoot":"","sources":["../../../src/components/layout/page-header.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,eAAe;IAC9B;wEACoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;2EAEuE;IACvE,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC3B,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;2CAEuC;IACvC,KAAK,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACrC;yDACqD;IACrD,UAAU,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,CAAA;IACpD;;kDAE8C;IAC9C,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAC1B;;sEAEkE;IAClE,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;kDAG8C;IAC9C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAmBD,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,SAAS,EACT,QAAQ,EACR,SAAS,EACT,KAAK,EACL,UAAU,EACV,OAAO,EACP,OAAiB,EACjB,cAAsB,EACtB,YAAoB,EACpB,SAAS,GACV,EAAE,eAAe,qBA0EjB;AAED,eAAe,UAAU,CAAA"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { type PageHeaderProps } from './page-header';
|
|
3
|
-
/**
|
|
4
|
-
* `<PageWithHeader>` — the canonical 4-layer unified-chrome wrapper that
|
|
5
|
-
* every public lib/hub page now uses (Knowledge Hub, Roadmap, FAQs,
|
|
6
|
-
* Authors, Blog, Vendors, Case Studies, Interviews, Investor Updates,
|
|
7
|
-
* /webinars-/podcasts-/events, hub admin-but-public pages, …).
|
|
8
|
-
*
|
|
9
|
-
* Renders the same JSX tree every consumer was hand-rolling individually
|
|
10
|
-
* before this helper landed:
|
|
11
|
-
*
|
|
12
|
-
* PageShell ← bg-ods-bg, min-h-screen, max-w-[1920px],
|
|
13
|
-
* page-shell-px/pt/pb gutters
|
|
14
|
-
* PageLayout backButton ← TitleBlock → PageHeader #1 (back-btn row
|
|
15
|
-
* only, pt-l + mb-l)
|
|
16
|
-
* div.w-full.flex-col.gap-10 ← matches DevSectionView's hero container
|
|
17
|
-
* PageHeader title/subtitle ← PageHeader #2 (noTopPadding +
|
|
18
|
-
* titleIcon accentDot noBottomMargin so PageLayout's gap-l owns
|
|
19
|
-
* noTopPadding the spacing between #1 and #2)
|
|
20
|
-
* noBottomMargin
|
|
21
|
-
* children ← page-specific body (search, lists, forms)
|
|
22
|
-
*
|
|
23
|
-
* Why this exists: 15+ pages copy-pasted the EXACT same nesting + the
|
|
24
|
-
* EXACT same `noTopPadding + noBottomMargin + accentDot` triplet on the
|
|
25
|
-
* inner `<PageHeader>`. Forgetting one of those flags collapsed the gap
|
|
26
|
-
* to ~8px (the FAQs-vs-Onboarding-Guides bug). Centralizing the chain
|
|
27
|
-
* here makes the spacing invariant compiler-enforced — consumers can't
|
|
28
|
-
* pick the wrong combination.
|
|
29
|
-
*
|
|
30
|
-
* **Back button is config-driven by default.** Consumers don't have to
|
|
31
|
-
* thread `useRouter()` + `() => router.push('/')` themselves anymore —
|
|
32
|
-
* the helper supplies a sane default (`{ label: 'Back to home', href: '/' }`).
|
|
33
|
-
* Hosts whose `/` lives elsewhere should pass their own `href`. Pass
|
|
34
|
-
* `backButton={false}` to suppress entirely (the lib's own
|
|
35
|
-
* `<DocsHubPage>` does this on the platform-home docs landing).
|
|
36
|
-
*/
|
|
37
|
-
export interface PageWithHeaderProps {
|
|
38
|
-
/** Title — passed straight to inner `<PageHeader>`. */
|
|
39
|
-
title?: string;
|
|
40
|
-
/** Inline icon rendered before the title (lucide / SVG node). Wrap with
|
|
41
|
-
* `SECTION_HERO_ICON_CLASS` at the call site, or use the lib's
|
|
42
|
-
* `<PageHeader>`'s `titleIcon` ReactNode signature directly. */
|
|
43
|
-
titleIcon?: PageHeaderProps['titleIcon'];
|
|
44
|
-
/** Subtitle (1-2 lines, auto-clamped to 2 + min-h-[56px]). */
|
|
45
|
-
subtitle?: string;
|
|
46
|
-
/** Render yellow accent dot after the title (default true — matches every
|
|
47
|
-
* unified surface). Pass `false` to opt out. */
|
|
48
|
-
accentDot?: boolean;
|
|
49
|
-
/** Back-button config. Defaults to `{ label: 'Back to home', href: '/' }`.
|
|
50
|
-
* Pass `false` to hide entirely (platform-home docs landings). */
|
|
51
|
-
backButton?: {
|
|
52
|
-
label?: string;
|
|
53
|
-
href?: string;
|
|
54
|
-
} | false;
|
|
55
|
-
/** Optional image (entity-image-style — onboarding guides etc.). */
|
|
56
|
-
image?: PageHeaderProps['image'];
|
|
57
|
-
/** Optional actions slot (right side of header). */
|
|
58
|
-
actions?: React.ReactNode;
|
|
59
|
-
/** Page body — search bars, lists, forms, sections. Rendered INSIDE the
|
|
60
|
-
* gap-10 flex column so it shares gutters + vertical rhythm with the
|
|
61
|
-
* header. */
|
|
62
|
-
children: React.ReactNode;
|
|
63
|
-
/** Extra class applied to the gap-10 content wrapper. */
|
|
64
|
-
contentClassName?: string;
|
|
65
|
-
}
|
|
66
|
-
export declare function PageWithHeader({ title, titleIcon, subtitle, accentDot, backButton, image, actions, children, contentClassName, }: PageWithHeaderProps): React.JSX.Element;
|
|
67
|
-
//# sourceMappingURL=page-with-header.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"page-with-header.d.ts","sourceRoot":"","sources":["../../../src/components/layout/page-with-header.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,eAAe,CAAA;AAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;qEAEiE;IACjE,SAAS,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,CAAA;IACxC,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;qDACiD;IACjD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;uEACmE;IACnE,UAAU,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,CAAA;IACtD,oEAAoE;IACpE,KAAK,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAA;IAChC,oDAAoD;IACpD,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB;;kBAEc;IACd,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,SAAS,EACT,QAAQ,EACR,SAAgB,EAChB,UAAU,EACV,KAAK,EACL,OAAO,EACP,QAAQ,EACR,gBAAgB,GACjB,EAAE,mBAAmB,qBA8BrB"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { type RichMarkdownRuntime } from '../embeds/rich-markdown-runtime';
|
|
3
|
-
/**
|
|
4
|
-
* Props for `<RichMarkdownRenderer>`. Aside from the four runtime knobs
|
|
5
|
-
* lifted from {@link RichMarkdownRuntime}, this is the same shape the hub's
|
|
6
|
-
* `SimpleMarkdownRenderer` ever had — every legacy call site can be moved
|
|
7
|
-
* over without other changes.
|
|
8
|
-
*/
|
|
9
|
-
export interface RichMarkdownRendererProps extends Partial<RichMarkdownRuntime> {
|
|
10
|
-
content: string;
|
|
11
|
-
className?: string;
|
|
12
|
-
sectionIds?: Array<{
|
|
13
|
-
id: string;
|
|
14
|
-
title: string;
|
|
15
|
-
level: number;
|
|
16
|
-
}>;
|
|
17
|
-
/** Callback for internal navigation (called after the resolver returns) */
|
|
18
|
-
onInternalLinkClick?: (path: string, options?: {
|
|
19
|
-
expandFolder?: boolean;
|
|
20
|
-
fromInternalLink?: boolean;
|
|
21
|
-
}) => void;
|
|
22
|
-
/** List of broken links detected server-side */
|
|
23
|
-
brokenLinks?: string[];
|
|
24
|
-
/** Current documentation path for resolving relative links */
|
|
25
|
-
currentPath?: string;
|
|
26
|
-
/** Source for resolving internal links (default: 'openframe-docs'). Registry id from DOC_SOURCES. */
|
|
27
|
-
resolveSource?: string;
|
|
28
|
-
/** Path of the internal link-resolver endpoint. Default '/api/docs/resolve-link'. */
|
|
29
|
-
resolveLinkEndpointUrl?: string;
|
|
30
|
-
/** When the page already has an H1, render markdown `#` as `h2` (e.g. legal pages). */
|
|
31
|
-
demoteMarkdownH1ToH2?: boolean;
|
|
32
|
-
}
|
|
33
|
-
export declare const RichMarkdownRenderer: React.FC<RichMarkdownRendererProps>;
|
|
34
|
-
//# sourceMappingURL=rich-markdown-renderer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rich-markdown-renderer.d.ts","sourceRoot":"","sources":["../../../src/components/ui/rich-markdown-renderer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAgBjF,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,iCAAiC,CAAC;AA4czC;;;;;GAKG;AACH,MAAM,WAAW,yBAA0B,SAAQ,OAAO,CAAC,mBAAmB,CAAC;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjE,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAC/G,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qGAAqG;IACrG,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qFAAqF;IACrF,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,uFAAuF;IACvF,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAoCpE,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* String constants shared by page-header consumers (`<PageHeader>`,
|
|
3
|
-
* `<DevSectionPage>`, `<DocsHubPage>` callers). Lives in `utils/` —
|
|
4
|
-
* NOT `'use client'` — so server modules (e.g. the hub's
|
|
5
|
-
* `lib/docs/hub-docs-presets.tsx` that builds preset JSX with
|
|
6
|
-
* `<Icon className={SECTION_HERO_ICON_CLASS} />`) can import the raw
|
|
7
|
-
* string. Importing the constant from a `'use client'` module turns it
|
|
8
|
-
* into a Next.js client-reference proxy in server contexts, which
|
|
9
|
-
* lucide's internal `mergeClasses` then calls `.trim()` on and crashes.
|
|
10
|
-
*/
|
|
11
|
-
/** Tailwind class applied uniformly to every section-hero / page-header
|
|
12
|
-
* icon across the lib (Roadmap Map, Releases Rocket, Knowledge Hub
|
|
13
|
-
* BookOpen, Data Room Building2, …). Yellow accent color, 40x40. */
|
|
14
|
-
export declare const SECTION_HERO_ICON_CLASS = "h-10 w-10 text-ods-accent";
|
|
15
|
-
//# sourceMappingURL=page-header-constants.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"page-header-constants.d.ts","sourceRoot":"","sources":["../../src/utils/page-header-constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;qEAEqE;AACrE,eAAO,MAAM,uBAAuB,8BAA8B,CAAA"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
interface CacheOptions {
|
|
2
|
-
platform: 'reddit' | 'twitter';
|
|
3
|
-
url: string;
|
|
4
|
-
apiEndpoint: string;
|
|
5
|
-
}
|
|
6
|
-
export declare class SocialEmbedCache {
|
|
7
|
-
private static instance;
|
|
8
|
-
static getInstance(): SocialEmbedCache;
|
|
9
|
-
getFromMemory(url: string): any | null;
|
|
10
|
-
setInMemory(url: string, data: any): void;
|
|
11
|
-
getFromServer(options: CacheOptions): Promise<any | null>;
|
|
12
|
-
private updateServerCache;
|
|
13
|
-
setInServer(options: CacheOptions, data: any): Promise<void>;
|
|
14
|
-
fetchDirect(options: CacheOptions & {
|
|
15
|
-
directFetcher: () => Promise<any>;
|
|
16
|
-
}): Promise<any | null>;
|
|
17
|
-
fetchWithHierarchy(options: CacheOptions & {
|
|
18
|
-
dataValidator: (data: any) => boolean;
|
|
19
|
-
onDataUpdate: (data: any) => void;
|
|
20
|
-
onError: (error: string) => void;
|
|
21
|
-
onLoading: (loading: boolean) => void;
|
|
22
|
-
}): Promise<void>;
|
|
23
|
-
private scheduleAsyncRefresh;
|
|
24
|
-
private backgroundRefresh;
|
|
25
|
-
private silentBackgroundRefresh;
|
|
26
|
-
}
|
|
27
|
-
export declare const socialCache: SocialEmbedCache;
|
|
28
|
-
export {};
|
|
29
|
-
//# sourceMappingURL=social-embed-cache.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"social-embed-cache.d.ts","sourceRoot":"","sources":["../../src/utils/social-embed-cache.ts"],"names":[],"mappings":"AAmBA,UAAU,YAAY;IACpB,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmB;IAE1C,MAAM,CAAC,WAAW,IAAI,gBAAgB;IAQtC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI;IAKtC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI;IAKnC,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;YAoBjD,iBAAiB;IAezB,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B5D,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG;QACxC,aAAa,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAA;KAClC,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;IAajB,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG;QAC/C,aAAa,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;QACtC,YAAY,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;QAClC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACjC,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;KACvC,GAAG,OAAO,CAAC,IAAI,CAAC;IAmIjB,OAAO,CAAC,oBAAoB;YAgCd,iBAAiB;IAiD/B,OAAO,CAAC,uBAAuB;CAgDhC;AAED,eAAO,MAAM,WAAW,kBAAiC,CAAC"}
|
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
'use client'
|
|
2
|
-
|
|
3
|
-
import React from 'react'
|
|
4
|
-
import { BenefitCard, BenefitCardGrid } from '../ui'
|
|
5
|
-
import {
|
|
6
|
-
G2Icon,
|
|
7
|
-
CapterraIcon,
|
|
8
|
-
TrustpilotIcon,
|
|
9
|
-
GetAppIcon,
|
|
10
|
-
} from '../icons'
|
|
11
|
-
import {
|
|
12
|
-
ContactForm,
|
|
13
|
-
type ContactFormProps,
|
|
14
|
-
} from '../contact'
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* `<ShareExperienceSection>` — the case-studies "Share Your Experience"
|
|
18
|
-
* CTA block.
|
|
19
|
-
*
|
|
20
|
-
* Hub usage: rendered inside the unified case-studies chrome (between
|
|
21
|
-
* the search bar and the case-study card grid) so it stays at the same
|
|
22
|
-
* y-offset + gutters as the rest of the page content.
|
|
23
|
-
*
|
|
24
|
-
* Embedders mount this anywhere they like. The inner `<ContactForm>`
|
|
25
|
-
* submits through the AMBIENT `EndpointsRuntime.contactUrl` (same proxy
|
|
26
|
-
* seam every other embed-aware form uses), so embedders behind a
|
|
27
|
-
* `/content` reverse proxy get a working submission with no per-call-
|
|
28
|
-
* site wiring.
|
|
29
|
-
*
|
|
30
|
-
* **Copy is overridable.** Every string is a prop with a sensible
|
|
31
|
-
* "Flamingo case-studies" default so the hub keeps its existing copy
|
|
32
|
-
* verbatim; embedders override what they need.
|
|
33
|
-
*
|
|
34
|
-
* **Contact-form integration is configurable.** Hub auto-resolves
|
|
35
|
-
* `userId` / `helpCategoryOptions` / `rdtCid` / `onSubmitSuccess` from
|
|
36
|
-
* its app context and passes them down via `contactFormProps`;
|
|
37
|
-
* embedders without that context just omit them. All other
|
|
38
|
-
* `ContactFormProps` are forwarded too, so the host can adjust prefill,
|
|
39
|
-
* success redirect, hidden fields, etc. without forking this component.
|
|
40
|
-
*/
|
|
41
|
-
export interface ShareExperienceSectionProps {
|
|
42
|
-
/** Override the section heading. JSX so the host can break lines /
|
|
43
|
-
* colorize the accent the same way the hub does. Default: the
|
|
44
|
-
* hub's two-line "Share Your Experience / with Fellow MSPs:" copy. */
|
|
45
|
-
title?: React.ReactNode
|
|
46
|
-
/** Override the lead paragraph. Default: the hub's review-incentive
|
|
47
|
-
* copy referencing Flamingo. Pass a brand-neutral string in embeds. */
|
|
48
|
-
subtitle?: React.ReactNode
|
|
49
|
-
/** Override the "How it works?" sub-heading. */
|
|
50
|
-
howItWorksTitle?: React.ReactNode
|
|
51
|
-
/** Override the "How it works?" body copy. */
|
|
52
|
-
howItWorksBody?: React.ReactNode
|
|
53
|
-
/** Forwarded to the inner `<ContactForm>`. The hub passes its
|
|
54
|
-
* auto-resolved `userId` / `helpCategoryOptions` / `rdtCid` /
|
|
55
|
-
* `onSubmitSuccess` here. Embedders pass overrides like
|
|
56
|
-
* `successRedirectUrl` or extra prefill copy. */
|
|
57
|
-
contactFormProps?: Partial<ContactFormProps>
|
|
58
|
-
className?: string
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
const DEFAULT_TITLE: React.ReactNode = (
|
|
62
|
-
<>
|
|
63
|
-
Share Your Experience
|
|
64
|
-
<br />
|
|
65
|
-
with Fellow MSPs<span className="text-ods-accent">:</span>
|
|
66
|
-
</>
|
|
67
|
-
)
|
|
68
|
-
|
|
69
|
-
const DEFAULT_SUBTITLE: React.ReactNode = (
|
|
70
|
-
<>
|
|
71
|
-
We know your time is valuable. When you leave an honest review about
|
|
72
|
-
your Flamingo experience, we'd like to thank you with a gift
|
|
73
|
-
certificate – not as payment for a review, but as appreciation for
|
|
74
|
-
the time you invest in helping other MSPs make informed decisions.
|
|
75
|
-
</>
|
|
76
|
-
)
|
|
77
|
-
|
|
78
|
-
const DEFAULT_HOW_IT_WORKS_TITLE: React.ReactNode = (
|
|
79
|
-
<>
|
|
80
|
-
How it works<span className="text-ods-accent">?</span>
|
|
81
|
-
</>
|
|
82
|
-
)
|
|
83
|
-
|
|
84
|
-
const DEFAULT_HOW_IT_WORKS_BODY: React.ReactNode = (
|
|
85
|
-
<>
|
|
86
|
-
Share your name and email with us, and we'll reach out to guide
|
|
87
|
-
you through the review process and arrange your thank-you gift
|
|
88
|
-
certificate.
|
|
89
|
-
</>
|
|
90
|
-
)
|
|
91
|
-
|
|
92
|
-
/** Defaults that match the hub's existing /case-studies behavior. Host
|
|
93
|
-
* overrides via `contactFormProps` win over these. */
|
|
94
|
-
const DEFAULT_CONTACT_FORM_PROPS = {
|
|
95
|
-
prefilledReason: 'I want to do a case study',
|
|
96
|
-
prefilledMessage: 'I want to do a case study',
|
|
97
|
-
hideFields: ['companySize', 'referralSource', 'helpCategory', 'message'] as ContactFormProps['hideFields'],
|
|
98
|
-
title: '',
|
|
99
|
-
subtitle: '',
|
|
100
|
-
footerText: '',
|
|
101
|
-
noBorder: true,
|
|
102
|
-
noPadding: true,
|
|
103
|
-
buttonVariant: 'outline' as ContactFormProps['buttonVariant'],
|
|
104
|
-
buttonClassName: 'w-full',
|
|
105
|
-
successToastMessage: "Thank you! We'll reach out to schedule your case study.",
|
|
106
|
-
} satisfies Partial<ContactFormProps>
|
|
107
|
-
|
|
108
|
-
export function ShareExperienceSection({
|
|
109
|
-
title = DEFAULT_TITLE,
|
|
110
|
-
subtitle = DEFAULT_SUBTITLE,
|
|
111
|
-
howItWorksTitle = DEFAULT_HOW_IT_WORKS_TITLE,
|
|
112
|
-
howItWorksBody = DEFAULT_HOW_IT_WORKS_BODY,
|
|
113
|
-
contactFormProps,
|
|
114
|
-
className,
|
|
115
|
-
}: ShareExperienceSectionProps = {}) {
|
|
116
|
-
return (
|
|
117
|
-
<section className={`flex flex-col gap-10${className ? ` ${className}` : ''}`}>
|
|
118
|
-
<div className="text-ods-text-primary">
|
|
119
|
-
<h2 className="text-h1 text-ods-text-primary">{title}</h2>
|
|
120
|
-
<p className="text-h4 mt-6 max-w-[765px]">{subtitle}</p>
|
|
121
|
-
</div>
|
|
122
|
-
|
|
123
|
-
<div className="bg-ods-background border border-ods-border rounded-md p-10">
|
|
124
|
-
<div className="flex flex-col gap-10">
|
|
125
|
-
<div className="flex flex-col gap-6 text-ods-text-primary">
|
|
126
|
-
<h3 className="text-h2">{howItWorksTitle}</h3>
|
|
127
|
-
<p className="text-h4">{howItWorksBody}</p>
|
|
128
|
-
</div>
|
|
129
|
-
|
|
130
|
-
<BenefitCardGrid columns={4}>
|
|
131
|
-
<BenefitCard
|
|
132
|
-
icon={
|
|
133
|
-
<div className="bg-ods-background border border-ods-border rounded-md p-2 w-12 h-12 flex items-center justify-center">
|
|
134
|
-
<G2Icon width={24} height={24} />
|
|
135
|
-
</div>
|
|
136
|
-
}
|
|
137
|
-
title="G2"
|
|
138
|
-
description="g2.com"
|
|
139
|
-
variant="auth-figma"
|
|
140
|
-
/>
|
|
141
|
-
<BenefitCard
|
|
142
|
-
icon={
|
|
143
|
-
<div className="bg-ods-background border border-ods-border rounded-md p-2 w-12 h-12 flex items-center justify-center">
|
|
144
|
-
<CapterraIcon width={24} height={24} />
|
|
145
|
-
</div>
|
|
146
|
-
}
|
|
147
|
-
title="Capterra"
|
|
148
|
-
description="capterra.com"
|
|
149
|
-
variant="auth-figma"
|
|
150
|
-
/>
|
|
151
|
-
<BenefitCard
|
|
152
|
-
icon={
|
|
153
|
-
<div className="bg-ods-background border border-ods-border rounded-md p-2 w-12 h-12 flex items-center justify-center">
|
|
154
|
-
<TrustpilotIcon width={24} height={24} />
|
|
155
|
-
</div>
|
|
156
|
-
}
|
|
157
|
-
title="TrustPilot"
|
|
158
|
-
description="trustpilot.com"
|
|
159
|
-
variant="auth-figma"
|
|
160
|
-
/>
|
|
161
|
-
<BenefitCard
|
|
162
|
-
icon={
|
|
163
|
-
<div className="bg-ods-background border border-ods-border rounded-md p-2 w-12 h-12 flex items-center justify-center">
|
|
164
|
-
<GetAppIcon width={24} height={24} />
|
|
165
|
-
</div>
|
|
166
|
-
}
|
|
167
|
-
title="GetApp"
|
|
168
|
-
description="getapp.com"
|
|
169
|
-
variant="auth-figma"
|
|
170
|
-
/>
|
|
171
|
-
</BenefitCardGrid>
|
|
172
|
-
|
|
173
|
-
{/* Submission proxies through ambient EndpointsRuntime.contactUrl —
|
|
174
|
-
* no per-call-site wiring needed for embeds behind a reverse
|
|
175
|
-
* proxy. Hub's auto-resolving wrapper passes userId / rdtCid /
|
|
176
|
-
* onSubmitSuccess via `contactFormProps`. */}
|
|
177
|
-
<ContactForm
|
|
178
|
-
{...DEFAULT_CONTACT_FORM_PROPS}
|
|
179
|
-
{...contactFormProps}
|
|
180
|
-
/>
|
|
181
|
-
</div>
|
|
182
|
-
</div>
|
|
183
|
-
</section>
|
|
184
|
-
)
|
|
185
|
-
}
|