@flamingo-stack/openframe-frontend-core 0.0.569 → 0.0.570-snapshot.20260827042743

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.
Files changed (112) hide show
  1. package/dist/{chunk-KCAGMTJ6.js → chunk-2M44PBAP.js} +8 -8
  2. package/dist/{chunk-MZG3QQUR.js → chunk-3FW6MFJ7.js} +2 -2
  3. package/dist/{chunk-XMECOGLY.cjs → chunk-4IXMQIRH.cjs} +3 -3
  4. package/dist/{chunk-XMECOGLY.cjs.map → chunk-4IXMQIRH.cjs.map} +1 -1
  5. package/dist/{chunk-OWCN3BM6.js → chunk-6DD7G4UQ.js} +6 -6
  6. package/dist/{chunk-FE5QR7PT.js → chunk-7SKYZDEJ.js} +14 -4
  7. package/dist/{chunk-FE5QR7PT.js.map → chunk-7SKYZDEJ.js.map} +1 -1
  8. package/dist/{chunk-VNE2EHCD.cjs → chunk-AFE6WQFY.cjs} +14 -14
  9. package/dist/{chunk-VNE2EHCD.cjs.map → chunk-AFE6WQFY.cjs.map} +1 -1
  10. package/dist/{chunk-Z3SRMLMK.cjs → chunk-AQ6MIFNX.cjs} +41 -14
  11. package/dist/chunk-AQ6MIFNX.cjs.map +1 -0
  12. package/dist/{chunk-3UPQAOES.js → chunk-CXJUIBES.js} +3 -3
  13. package/dist/{chunk-TDYTAED2.cjs → chunk-DP2L7US5.cjs} +3 -3
  14. package/dist/{chunk-TDYTAED2.cjs.map → chunk-DP2L7US5.cjs.map} +1 -1
  15. package/dist/{chunk-EBE22KOQ.cjs → chunk-EHF7XGJO.cjs} +4 -4
  16. package/dist/{chunk-EBE22KOQ.cjs.map → chunk-EHF7XGJO.cjs.map} +1 -1
  17. package/dist/{chunk-GY22CIEF.cjs → chunk-FGBMUQTA.cjs} +76 -76
  18. package/dist/{chunk-GY22CIEF.cjs.map → chunk-FGBMUQTA.cjs.map} +1 -1
  19. package/dist/{chunk-OS5RFMW5.js → chunk-GE4TSW4P.js} +3 -3
  20. package/dist/{chunk-LJBNHO6B.js → chunk-GJXYQNKA.js} +3 -3
  21. package/dist/{chunk-D6SBYELJ.cjs → chunk-GNVIMSJG.cjs} +32 -32
  22. package/dist/{chunk-D6SBYELJ.cjs.map → chunk-GNVIMSJG.cjs.map} +1 -1
  23. package/dist/{chunk-SW3K3JSP.cjs → chunk-HKLSQJFM.cjs} +8 -8
  24. package/dist/{chunk-SW3K3JSP.cjs.map → chunk-HKLSQJFM.cjs.map} +1 -1
  25. package/dist/{chunk-6STF67EF.js → chunk-J7FLU52G.js} +4 -4
  26. package/dist/{chunk-PLJAOZYZ.js → chunk-JLEDJPGP.js} +5 -5
  27. package/dist/{chunk-P7ZENKIA.js → chunk-JYMKMW5P.js} +2 -2
  28. package/dist/{chunk-KO333Q2B.js → chunk-L4ZWJM3M.js} +2 -2
  29. package/dist/{chunk-PCL6WYYT.cjs → chunk-MXBLRXVV.cjs} +5 -5
  30. package/dist/{chunk-PCL6WYYT.cjs.map → chunk-MXBLRXVV.cjs.map} +1 -1
  31. package/dist/{chunk-74DB5H5T.cjs → chunk-OIIE5IFT.cjs} +155 -145
  32. package/dist/chunk-OIIE5IFT.cjs.map +1 -0
  33. package/dist/{chunk-A2T266F3.js → chunk-RTSEWMHW.js} +6 -6
  34. package/dist/{chunk-QY3VTOB6.cjs → chunk-S2PTGH6H.cjs} +18 -18
  35. package/dist/{chunk-QY3VTOB6.cjs.map → chunk-S2PTGH6H.cjs.map} +1 -1
  36. package/dist/{chunk-C5GKBUT7.js → chunk-T4MU52P4.js} +3 -3
  37. package/dist/{chunk-ME346OJF.cjs → chunk-TIIHOVUA.cjs} +40 -40
  38. package/dist/{chunk-ME346OJF.cjs.map → chunk-TIIHOVUA.cjs.map} +1 -1
  39. package/dist/{chunk-2DSDGWWU.cjs → chunk-TK6RPD5T.cjs} +97 -97
  40. package/dist/{chunk-2DSDGWWU.cjs.map → chunk-TK6RPD5T.cjs.map} +1 -1
  41. package/dist/{chunk-AAROYQ4O.cjs → chunk-WFEVKHPP.cjs} +12 -12
  42. package/dist/{chunk-AAROYQ4O.cjs.map → chunk-WFEVKHPP.cjs.map} +1 -1
  43. package/dist/{chunk-FMWIA5IH.cjs → chunk-XGNTWDW4.cjs} +42 -42
  44. package/dist/{chunk-FMWIA5IH.cjs.map → chunk-XGNTWDW4.cjs.map} +1 -1
  45. package/dist/{chunk-TXEI4PES.js → chunk-YFLKONLB.js} +33 -6
  46. package/dist/{chunk-TXEI4PES.js.map → chunk-YFLKONLB.js.map} +1 -1
  47. package/dist/{chunk-4NN7V443.js → chunk-ZAYZ7JHF.js} +2 -2
  48. package/dist/{chunk-HOMYI5RR.js → chunk-ZCEOADTR.js} +2 -2
  49. package/dist/{chunk-SMW5Z4NW.cjs → chunk-ZNYJD27G.cjs} +23 -23
  50. package/dist/{chunk-SMW5Z4NW.cjs.map → chunk-ZNYJD27G.cjs.map} +1 -1
  51. package/dist/components/case-studies/index.cjs +9 -9
  52. package/dist/components/case-studies/index.js +3 -3
  53. package/dist/components/chat/index.cjs +3 -3
  54. package/dist/components/chat/index.js +2 -2
  55. package/dist/components/contact/index.cjs +4 -4
  56. package/dist/components/contact/index.js +3 -3
  57. package/dist/components/docs/index.cjs +6 -6
  58. package/dist/components/docs/index.js +5 -5
  59. package/dist/components/embeds/claude-embed.d.ts.map +1 -1
  60. package/dist/components/embeds/embed-iframe.d.ts +13 -0
  61. package/dist/components/embeds/embed-iframe.d.ts.map +1 -1
  62. package/dist/components/embeds/embed-viewer-frame.d.ts +9 -2
  63. package/dist/components/embeds/embed-viewer-frame.d.ts.map +1 -1
  64. package/dist/components/embeds/index.cjs +4 -4
  65. package/dist/components/embeds/index.js +3 -3
  66. package/dist/components/faq/index.cjs +5 -5
  67. package/dist/components/faq/index.js +4 -4
  68. package/dist/components/features/index.cjs +3 -3
  69. package/dist/components/features/index.js +2 -2
  70. package/dist/components/help-center-pages/index.cjs +24 -24
  71. package/dist/components/help-center-pages/index.js +15 -15
  72. package/dist/components/index.cjs +138 -138
  73. package/dist/components/index.js +13 -13
  74. package/dist/components/meeting-scheduler/index.cjs +35 -35
  75. package/dist/components/meeting-scheduler/index.js +4 -4
  76. package/dist/components/navigation/index.cjs +3 -3
  77. package/dist/components/navigation/index.js +2 -2
  78. package/dist/components/onboarding-guides/index.cjs +7 -7
  79. package/dist/components/onboarding-guides/index.js +6 -6
  80. package/dist/components/related-content/index.cjs +5 -5
  81. package/dist/components/related-content/index.js +4 -4
  82. package/dist/components/tickets/index.cjs +7 -7
  83. package/dist/components/tickets/index.js +6 -6
  84. package/dist/components/ui/index.cjs +3 -3
  85. package/dist/components/ui/index.js +2 -2
  86. package/dist/hooks/index.cjs +2 -2
  87. package/dist/hooks/index.js +1 -1
  88. package/dist/hooks/use-claude-mirror-src.d.ts +34 -13
  89. package/dist/hooks/use-claude-mirror-src.d.ts.map +1 -1
  90. package/dist/index.cjs +3 -3
  91. package/dist/index.js +2 -2
  92. package/package.json +1 -1
  93. package/src/components/embeds/claude-embed.tsx +12 -4
  94. package/src/components/embeds/embed-iframe.tsx +7 -2
  95. package/src/components/embeds/embed-viewer-frame.tsx +17 -2
  96. package/src/hooks/use-claude-mirror-src.ts +79 -19
  97. package/dist/chunk-74DB5H5T.cjs.map +0 -1
  98. package/dist/chunk-Z3SRMLMK.cjs.map +0 -1
  99. /package/dist/{chunk-KCAGMTJ6.js.map → chunk-2M44PBAP.js.map} +0 -0
  100. /package/dist/{chunk-MZG3QQUR.js.map → chunk-3FW6MFJ7.js.map} +0 -0
  101. /package/dist/{chunk-OWCN3BM6.js.map → chunk-6DD7G4UQ.js.map} +0 -0
  102. /package/dist/{chunk-3UPQAOES.js.map → chunk-CXJUIBES.js.map} +0 -0
  103. /package/dist/{chunk-OS5RFMW5.js.map → chunk-GE4TSW4P.js.map} +0 -0
  104. /package/dist/{chunk-LJBNHO6B.js.map → chunk-GJXYQNKA.js.map} +0 -0
  105. /package/dist/{chunk-6STF67EF.js.map → chunk-J7FLU52G.js.map} +0 -0
  106. /package/dist/{chunk-PLJAOZYZ.js.map → chunk-JLEDJPGP.js.map} +0 -0
  107. /package/dist/{chunk-P7ZENKIA.js.map → chunk-JYMKMW5P.js.map} +0 -0
  108. /package/dist/{chunk-KO333Q2B.js.map → chunk-L4ZWJM3M.js.map} +0 -0
  109. /package/dist/{chunk-A2T266F3.js.map → chunk-RTSEWMHW.js.map} +0 -0
  110. /package/dist/{chunk-C5GKBUT7.js.map → chunk-T4MU52P4.js.map} +0 -0
  111. /package/dist/{chunk-4NN7V443.js.map → chunk-ZAYZ7JHF.js.map} +0 -0
  112. /package/dist/{chunk-HOMYI5RR.js.map → chunk-ZCEOADTR.js.map} +0 -0
@@ -1,19 +1,19 @@
1
1
  "use client";
2
2
  import {
3
3
  PersistentPaginationWrapper
4
- } from "./chunk-MZG3QQUR.js";
4
+ } from "./chunk-3FW6MFJ7.js";
5
5
  import {
6
6
  DeliveryRow
7
- } from "./chunk-HOMYI5RR.js";
7
+ } from "./chunk-ZCEOADTR.js";
8
8
  import {
9
9
  EmptyState
10
- } from "./chunk-P7ZENKIA.js";
10
+ } from "./chunk-JYMKMW5P.js";
11
11
  import {
12
12
  DetailPageSkeleton
13
- } from "./chunk-KO333Q2B.js";
13
+ } from "./chunk-L4ZWJM3M.js";
14
14
  import {
15
15
  useSelfFetch
16
- } from "./chunk-4NN7V443.js";
16
+ } from "./chunk-ZAYZ7JHF.js";
17
17
  import {
18
18
  Accordion,
19
19
  AccordionContent,
@@ -46,12 +46,12 @@ import {
46
46
  toStripProfile,
47
47
  useCaptions,
48
48
  useEntityCardLink
49
- } from "./chunk-FE5QR7PT.js";
49
+ } from "./chunk-7SKYZDEJ.js";
50
50
  import {
51
51
  STICKY_HEADER_OFFSET_PX,
52
52
  contentFetch,
53
53
  useScrollToHash
54
- } from "./chunk-TXEI4PES.js";
54
+ } from "./chunk-YFLKONLB.js";
55
55
  import {
56
56
  init_next_navigation,
57
57
  usePathname,
@@ -1324,4 +1324,4 @@ export {
1324
1324
  useLegalDocs,
1325
1325
  LegalDocumentPage
1326
1326
  };
1327
- //# sourceMappingURL=chunk-KCAGMTJ6.js.map
1327
+ //# sourceMappingURL=chunk-2M44PBAP.js.map
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  init_unified_pagination,
4
4
  unified_pagination_exports
5
- } from "./chunk-P7ZENKIA.js";
5
+ } from "./chunk-JYMKMW5P.js";
6
6
  import {
7
7
  cn,
8
8
  init_cn
@@ -172,4 +172,4 @@ export {
172
172
  usePaginationLoading,
173
173
  PersistentPaginationWrapper
174
174
  };
175
- //# sourceMappingURL=chunk-MZG3QQUR.js.map
175
+ //# sourceMappingURL=chunk-3FW6MFJ7.js.map
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkEBE22KOQcjs = require('./chunk-EBE22KOQ.cjs');
5
+ var _chunkEHF7XGJOcjs = require('./chunk-EHF7XGJO.cjs');
6
6
 
7
7
 
8
8
 
@@ -112,7 +112,7 @@ function PersistentPaginationWrapper({
112
112
  const displayCurrentPage = hasResults ? currentPage : 1;
113
113
  const isPaginationDisabled = isLoading;
114
114
  const hasNoResults = !hasResults && !isLoading;
115
- const PaginationComponent = (_chunkEBE22KOQcjs.init_unified_pagination.call(void 0, ), _chunkVRHGVLSLcjs.__toCommonJS.call(void 0, _chunkEBE22KOQcjs.unified_pagination_exports)).UnifiedPagination;
115
+ const PaginationComponent = (_chunkEHF7XGJOcjs.init_unified_pagination.call(void 0, ), _chunkVRHGVLSLcjs.__toCommonJS.call(void 0, _chunkEHF7XGJOcjs.unified_pagination_exports)).UnifiedPagination;
116
116
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
117
117
  "div",
118
118
  {
@@ -172,4 +172,4 @@ function PersistentPaginationWrapper({
172
172
 
173
173
 
174
174
  exports.PersistentPagination = PersistentPagination; exports.usePaginationLoading = usePaginationLoading; exports.PersistentPaginationWrapper = PersistentPaginationWrapper;
175
- //# sourceMappingURL=chunk-XMECOGLY.cjs.map
175
+ //# sourceMappingURL=chunk-4IXMQIRH.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-XMECOGLY.cjs","../src/components/persistent-pagination.tsx"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACVA,uCAAA,CAAA;AA6FQ,+CAAA;AAhCD,SAAS,oBAAA,CAAqB;AAAA,EACnC,SAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,gBAAA,EAAkB,GAAA;AAAA,EAClB,mBAAA,EAAqB,GAAA;AAAA,EACrB,iBAAA,EAAmB;AACrB,CAAA,EAA8B;AAI5B,EAAA,uBACE,8BAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,kCAAA;AAAA,QACT,qCAAA;AAAA,QACA,kCAAA;AAAA,QACA,UAAA,GAAa,qBAAA;AAAA,QACb;AAAA,MACF,CAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,UAAA,EAAY,gBAAA,EAAkB,CAAA;AAAA,QACvC,kBAAA,EAAoB,CAAA,EAAA;AACtB,MAAA;AACK,MAAA;AACM,MAAA;AACA,MAAA;AACG,MAAA;AAGb,MAAA;AACC,QAAA;AAAC,UAAA;AAAA,UAAA;AACW,YAAA;AACL,YAAA;AACK,YAAA;AACX,YAAA;AAAA,cAAA;AACqD,cAAA;AAAY,cAAA;AAAK,cAAA;AAAA,YAAA;AAAA,UAAA;AACvE,QAAA;AAIF,wBAAA;AAAC,UAAA;AAAA,UAAA;AACY,YAAA;AACT,cAAA;AACa,cAAA;AACf,YAAA;AACO,YAAA;AACL,cAAA;AACF,YAAA;AACa,YAAA;AAEZ,YAAA;AAAA,UAAA;AACH,QAAA;AAAA,MAAA;AAAA,IAAA;AAGF,EAAA;AAEJ;AAKgB;AAKR,EAAA;AAEkB,EAAA;AACT,IAAA;AACG,IAAA;AACK,IAAA;AACD,IAAA;AACtB,EAAA;AAE0B,EAAA;AACT,IAAA;AACU,MAAA;AACzB,IAAA;AACe,IAAA;AACjB,EAAA;AAEO,EAAA;AACL,IAAA;AACA,IAAA;AACA,IAAA;AACF,EAAA;AACF;AAcgB;AACd,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACU,EAAA;AACyB;AACT,EAAA;AACxB,IAAA;AACA,IAAA;AACA,IAAA;AACF,EAAA;AAImB,EAAA;AACO,EAAA;AACC,EAAA;AAErB,EAAA;AACgB,EAAA;AAIhB,EAAA;AAGJ,EAAA;AAAC,IAAA;AAAA,IAAA;AACY,MAAA;AACT,QAAA;AACC,QAAA;AACD,QAAA;AACF,MAAA;AACO,MAAA;AACI,QAAA;AACW,QAAA;AACtB,MAAA;AACK,MAAA;AACM,MAAA;AACA,MAAA;AACG,MAAA;AACI,MAAA;AAGhB,MAAA;AAAc,QAAA;AACb,UAAA;AAAA,UAAA;AACW,YAAA;AACL,YAAA;AACK,YAAA;AAET,YAAA;AAEG,UAAA;AAEN,QAAA;AAIF,wBAAA;AAAC,UAAA;AAAA,UAAA;AACY,YAAA;AACT,cAAA;AACA,cAAA;AACF,YAAA;AACO,YAAA;AACL,cAAA;AACF,YAAA;AACa,YAAA;AAEb,YAAA;AAAC,cAAA;AAAA,cAAA;AACc,gBAAA;AACD,gBAAA;AACZ,gBAAA;AAAiD,gBAAA;AAAA,cAAA;AACnD,YAAA;AAAA,UAAA;AACF,QAAA;AAAA,MAAA;AAAA,IAAA;AAGF,EAAA;AAEJ;AD9E6B;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-XMECOGLY.cjs","sourcesContent":[null,"\"use client\"\n\nimport { ReactNode } from \"react\"\nimport { cn } from \"../utils/cn\"\n\ninterface PersistentPaginationProps {\n /**\n * Whether pagination is currently in a loading state\n */\n isLoading: boolean\n /**\n * The pagination component\n */\n children: ReactNode\n /**\n * Current page number\n */\n currentPage: number\n /**\n * Total number of pages\n */\n totalPages: number\n /**\n * Additional CSS classes\n */\n className?: string\n /**\n * Disabled opacity (0-1)\n */\n disabledOpacity?: number\n /**\n * Transition duration in milliseconds\n */\n transitionDuration?: number\n /**\n * Whether to show loading state in pagination\n */\n showLoadingState?: boolean\n}\n\n/**\n * PersistentPagination\n * \n * A wrapper component that keeps pagination visible during loading states\n * but provides visual feedback that it's temporarily disabled.\n * \n * Features:\n * - Maintains pagination visibility during content loading\n * - Disables interaction but preserves layout\n * - Shows current page context even when loading\n * - Provides accessibility support for loading states\n * - Smooth transitions between enabled/disabled states\n * \n * Usage:\n * ```tsx\n * <PersistentPagination\n * isLoading={isLoadingVendors}\n * currentPage={currentPage}\n * totalPages={totalPages}\n * >\n * <Pagination currentPage={currentPage} totalPages={totalPages} />\n * </PersistentPagination>\n * ```\n */\nexport function PersistentPagination({\n isLoading,\n children,\n currentPage,\n totalPages,\n className,\n disabledOpacity = 0.5,\n transitionDuration = 300,\n showLoadingState = true,\n}: PersistentPaginationProps) {\n // ALWAYS show pagination for predictable layout - just gray it out when not needed\n // Removed condition that hides pagination completely\n\n return (\n <div \n className={cn(\n \"relative transition-all ease-in-out\",\n \"flex justify-center items-center\",\n isLoading && \"pointer-events-none\",\n className\n )}\n style={{\n opacity: isLoading ? disabledOpacity : 1,\n transitionDuration: `${transitionDuration}ms`\n }}\n role=\"navigation\"\n aria-label=\"Pagination\"\n aria-busy={isLoading}\n data-loading={isLoading}\n >\n {/* Loading state announcement for screen readers */}\n {isLoading && (\n <div \n className=\"sr-only\" \n role=\"status\" \n aria-live=\"polite\"\n >\n Pagination temporarily disabled while loading page {currentPage} of {totalPages}\n </div>\n )}\n\n {/* Pagination controls with disabled state */}\n <div \n className={cn(\n \"relative transition-all ease-in-out\",\n isLoading && \"cursor-not-allowed\"\n )}\n style={{\n transitionDuration: `${transitionDuration}ms`\n }}\n aria-hidden={isLoading}\n >\n {children}\n </div>\n\n {/* REMOVED: Loading overlay - only card skeletons should show during loading */}\n </div>\n )\n}\n\n/**\n * Hook for managing pagination loading states\n */\nexport function usePaginationLoading(\n isLoading: boolean,\n currentPage: number,\n totalPages: number\n) {\n const shouldShowPagination = totalPages > 1 || isLoading\n \n const paginationProps = {\n 'aria-busy': isLoading,\n 'data-loading': isLoading,\n 'data-current-page': currentPage,\n 'data-total-pages': totalPages,\n }\n\n const getLoadingMessage = () => {\n if (isLoading) {\n return `Loading page ${currentPage} of ${totalPages}`\n }\n return `Page ${currentPage} of ${totalPages}`\n }\n\n return {\n shouldShowPagination,\n paginationProps,\n getLoadingMessage,\n }\n}\n\n/**\n * Enhanced pagination component that includes loading states\n */\ninterface PersistentPaginationWrapperProps {\n isLoading: boolean\n currentPage: number\n totalPages: number\n onPageChange?: (page: number) => void\n className?: string\n variant?: 'vendor' | 'blog'\n}\n\nexport function PersistentPaginationWrapper({\n isLoading,\n currentPage,\n totalPages,\n onPageChange,\n className,\n variant = 'vendor'\n}: PersistentPaginationWrapperProps) {\n const { getLoadingMessage } = usePaginationLoading(\n isLoading,\n currentPage,\n totalPages\n )\n\n // ALWAYS show pagination for predictable layout\n // For no results (totalPages = 0), show grayed out pagination\n const hasResults = totalPages > 0\n const displayTotalPages = hasResults ? totalPages : 1\n const displayCurrentPage = hasResults ? currentPage : 1\n // Only disable during loading, but still show when no results (just grayed out)\n const isPaginationDisabled = isLoading\n const hasNoResults = !hasResults && !isLoading\n\n // Use UnifiedPagination directly from ui-kit instead of importing from consuming apps\n // Both Pagination and BlogPagination in multi-platform-hub are just wrappers around UnifiedPagination\n const PaginationComponent = require('./unified-pagination').UnifiedPagination\n\n return (\n <div \n className={cn(\n \"relative transition-all ease-in-out flex justify-center items-center\",\n (isPaginationDisabled || hasNoResults) && \"pointer-events-none\",\n className\n )}\n style={{\n opacity: isPaginationDisabled ? 0.3 : hasNoResults ? 0.5 : 1,\n transitionDuration: \"300ms\"\n }}\n role=\"navigation\"\n aria-label=\"Pagination\"\n aria-busy={isLoading}\n data-loading={isLoading}\n data-has-results={hasResults}\n >\n {/* Loading/no results state announcement for screen readers */}\n {(isLoading || !hasResults) && (\n <div \n className=\"sr-only\" \n role=\"status\" \n aria-live=\"polite\"\n >\n {isLoading \n ? `Pagination temporarily disabled while loading page ${displayCurrentPage} of ${displayTotalPages}`\n : `No results available - pagination disabled`\n }\n </div>\n )}\n\n {/* Pagination controls with disabled state */}\n <div \n className={cn(\n \"relative transition-all ease-in-out\",\n isPaginationDisabled && \"cursor-not-allowed\"\n )}\n style={{\n transitionDuration: \"300ms\"\n }}\n aria-hidden={isPaginationDisabled}\n >\n <PaginationComponent\n currentPage={displayCurrentPage}\n totalPages={displayTotalPages}\n onPageChange={hasResults ? onPageChange : () => {}} // Provide empty function instead of undefined\n />\n </div>\n\n {/* REMOVED: Loading overlays - only card skeletons should show during loading */}\n </div>\n )\n} "]}
1
+ {"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-4IXMQIRH.cjs","../src/components/persistent-pagination.tsx"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACVA,uCAAA,CAAA;AA6FQ,+CAAA;AAhCD,SAAS,oBAAA,CAAqB;AAAA,EACnC,SAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,gBAAA,EAAkB,GAAA;AAAA,EAClB,mBAAA,EAAqB,GAAA;AAAA,EACrB,iBAAA,EAAmB;AACrB,CAAA,EAA8B;AAI5B,EAAA,uBACE,8BAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,kCAAA;AAAA,QACT,qCAAA;AAAA,QACA,kCAAA;AAAA,QACA,UAAA,GAAa,qBAAA;AAAA,QACb;AAAA,MACF,CAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,UAAA,EAAY,gBAAA,EAAkB,CAAA;AAAA,QACvC,kBAAA,EAAoB,CAAA,EAAA;AACtB,MAAA;AACK,MAAA;AACM,MAAA;AACA,MAAA;AACG,MAAA;AAGb,MAAA;AACC,QAAA;AAAC,UAAA;AAAA,UAAA;AACW,YAAA;AACL,YAAA;AACK,YAAA;AACX,YAAA;AAAA,cAAA;AACqD,cAAA;AAAY,cAAA;AAAK,cAAA;AAAA,YAAA;AAAA,UAAA;AACvE,QAAA;AAIF,wBAAA;AAAC,UAAA;AAAA,UAAA;AACY,YAAA;AACT,cAAA;AACa,cAAA;AACf,YAAA;AACO,YAAA;AACL,cAAA;AACF,YAAA;AACa,YAAA;AAEZ,YAAA;AAAA,UAAA;AACH,QAAA;AAAA,MAAA;AAAA,IAAA;AAGF,EAAA;AAEJ;AAKgB;AAKR,EAAA;AAEkB,EAAA;AACT,IAAA;AACG,IAAA;AACK,IAAA;AACD,IAAA;AACtB,EAAA;AAE0B,EAAA;AACT,IAAA;AACU,MAAA;AACzB,IAAA;AACe,IAAA;AACjB,EAAA;AAEO,EAAA;AACL,IAAA;AACA,IAAA;AACA,IAAA;AACF,EAAA;AACF;AAcgB;AACd,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACU,EAAA;AACyB;AACT,EAAA;AACxB,IAAA;AACA,IAAA;AACA,IAAA;AACF,EAAA;AAImB,EAAA;AACO,EAAA;AACC,EAAA;AAErB,EAAA;AACgB,EAAA;AAIhB,EAAA;AAGJ,EAAA;AAAC,IAAA;AAAA,IAAA;AACY,MAAA;AACT,QAAA;AACC,QAAA;AACD,QAAA;AACF,MAAA;AACO,MAAA;AACI,QAAA;AACW,QAAA;AACtB,MAAA;AACK,MAAA;AACM,MAAA;AACA,MAAA;AACG,MAAA;AACI,MAAA;AAGhB,MAAA;AAAc,QAAA;AACb,UAAA;AAAA,UAAA;AACW,YAAA;AACL,YAAA;AACK,YAAA;AAET,YAAA;AAEG,UAAA;AAEN,QAAA;AAIF,wBAAA;AAAC,UAAA;AAAA,UAAA;AACY,YAAA;AACT,cAAA;AACA,cAAA;AACF,YAAA;AACO,YAAA;AACL,cAAA;AACF,YAAA;AACa,YAAA;AAEb,YAAA;AAAC,cAAA;AAAA,cAAA;AACc,gBAAA;AACD,gBAAA;AACZ,gBAAA;AAAiD,gBAAA;AAAA,cAAA;AACnD,YAAA;AAAA,UAAA;AACF,QAAA;AAAA,MAAA;AAAA,IAAA;AAGF,EAAA;AAEJ;AD9E6B;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-4IXMQIRH.cjs","sourcesContent":[null,"\"use client\"\n\nimport { ReactNode } from \"react\"\nimport { cn } from \"../utils/cn\"\n\ninterface PersistentPaginationProps {\n /**\n * Whether pagination is currently in a loading state\n */\n isLoading: boolean\n /**\n * The pagination component\n */\n children: ReactNode\n /**\n * Current page number\n */\n currentPage: number\n /**\n * Total number of pages\n */\n totalPages: number\n /**\n * Additional CSS classes\n */\n className?: string\n /**\n * Disabled opacity (0-1)\n */\n disabledOpacity?: number\n /**\n * Transition duration in milliseconds\n */\n transitionDuration?: number\n /**\n * Whether to show loading state in pagination\n */\n showLoadingState?: boolean\n}\n\n/**\n * PersistentPagination\n * \n * A wrapper component that keeps pagination visible during loading states\n * but provides visual feedback that it's temporarily disabled.\n * \n * Features:\n * - Maintains pagination visibility during content loading\n * - Disables interaction but preserves layout\n * - Shows current page context even when loading\n * - Provides accessibility support for loading states\n * - Smooth transitions between enabled/disabled states\n * \n * Usage:\n * ```tsx\n * <PersistentPagination\n * isLoading={isLoadingVendors}\n * currentPage={currentPage}\n * totalPages={totalPages}\n * >\n * <Pagination currentPage={currentPage} totalPages={totalPages} />\n * </PersistentPagination>\n * ```\n */\nexport function PersistentPagination({\n isLoading,\n children,\n currentPage,\n totalPages,\n className,\n disabledOpacity = 0.5,\n transitionDuration = 300,\n showLoadingState = true,\n}: PersistentPaginationProps) {\n // ALWAYS show pagination for predictable layout - just gray it out when not needed\n // Removed condition that hides pagination completely\n\n return (\n <div \n className={cn(\n \"relative transition-all ease-in-out\",\n \"flex justify-center items-center\",\n isLoading && \"pointer-events-none\",\n className\n )}\n style={{\n opacity: isLoading ? disabledOpacity : 1,\n transitionDuration: `${transitionDuration}ms`\n }}\n role=\"navigation\"\n aria-label=\"Pagination\"\n aria-busy={isLoading}\n data-loading={isLoading}\n >\n {/* Loading state announcement for screen readers */}\n {isLoading && (\n <div \n className=\"sr-only\" \n role=\"status\" \n aria-live=\"polite\"\n >\n Pagination temporarily disabled while loading page {currentPage} of {totalPages}\n </div>\n )}\n\n {/* Pagination controls with disabled state */}\n <div \n className={cn(\n \"relative transition-all ease-in-out\",\n isLoading && \"cursor-not-allowed\"\n )}\n style={{\n transitionDuration: `${transitionDuration}ms`\n }}\n aria-hidden={isLoading}\n >\n {children}\n </div>\n\n {/* REMOVED: Loading overlay - only card skeletons should show during loading */}\n </div>\n )\n}\n\n/**\n * Hook for managing pagination loading states\n */\nexport function usePaginationLoading(\n isLoading: boolean,\n currentPage: number,\n totalPages: number\n) {\n const shouldShowPagination = totalPages > 1 || isLoading\n \n const paginationProps = {\n 'aria-busy': isLoading,\n 'data-loading': isLoading,\n 'data-current-page': currentPage,\n 'data-total-pages': totalPages,\n }\n\n const getLoadingMessage = () => {\n if (isLoading) {\n return `Loading page ${currentPage} of ${totalPages}`\n }\n return `Page ${currentPage} of ${totalPages}`\n }\n\n return {\n shouldShowPagination,\n paginationProps,\n getLoadingMessage,\n }\n}\n\n/**\n * Enhanced pagination component that includes loading states\n */\ninterface PersistentPaginationWrapperProps {\n isLoading: boolean\n currentPage: number\n totalPages: number\n onPageChange?: (page: number) => void\n className?: string\n variant?: 'vendor' | 'blog'\n}\n\nexport function PersistentPaginationWrapper({\n isLoading,\n currentPage,\n totalPages,\n onPageChange,\n className,\n variant = 'vendor'\n}: PersistentPaginationWrapperProps) {\n const { getLoadingMessage } = usePaginationLoading(\n isLoading,\n currentPage,\n totalPages\n )\n\n // ALWAYS show pagination for predictable layout\n // For no results (totalPages = 0), show grayed out pagination\n const hasResults = totalPages > 0\n const displayTotalPages = hasResults ? totalPages : 1\n const displayCurrentPage = hasResults ? currentPage : 1\n // Only disable during loading, but still show when no results (just grayed out)\n const isPaginationDisabled = isLoading\n const hasNoResults = !hasResults && !isLoading\n\n // Use UnifiedPagination directly from ui-kit instead of importing from consuming apps\n // Both Pagination and BlogPagination in multi-platform-hub are just wrappers around UnifiedPagination\n const PaginationComponent = require('./unified-pagination').UnifiedPagination\n\n return (\n <div \n className={cn(\n \"relative transition-all ease-in-out flex justify-center items-center\",\n (isPaginationDisabled || hasNoResults) && \"pointer-events-none\",\n className\n )}\n style={{\n opacity: isPaginationDisabled ? 0.3 : hasNoResults ? 0.5 : 1,\n transitionDuration: \"300ms\"\n }}\n role=\"navigation\"\n aria-label=\"Pagination\"\n aria-busy={isLoading}\n data-loading={isLoading}\n data-has-results={hasResults}\n >\n {/* Loading/no results state announcement for screen readers */}\n {(isLoading || !hasResults) && (\n <div \n className=\"sr-only\" \n role=\"status\" \n aria-live=\"polite\"\n >\n {isLoading \n ? `Pagination temporarily disabled while loading page ${displayCurrentPage} of ${displayTotalPages}`\n : `No results available - pagination disabled`\n }\n </div>\n )}\n\n {/* Pagination controls with disabled state */}\n <div \n className={cn(\n \"relative transition-all ease-in-out\",\n isPaginationDisabled && \"cursor-not-allowed\"\n )}\n style={{\n transitionDuration: \"300ms\"\n }}\n aria-hidden={isPaginationDisabled}\n >\n <PaginationComponent\n currentPage={displayCurrentPage}\n totalPages={displayTotalPages}\n onPageChange={hasResults ? onPageChange : () => {}} // Provide empty function instead of undefined\n />\n </div>\n\n {/* REMOVED: Loading overlays - only card skeletons should show during loading */}\n </div>\n )\n} "]}
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  ArticleAuthorByline,
4
4
  DetailPageSkeleton
5
- } from "./chunk-KO333Q2B.js";
5
+ } from "./chunk-L4ZWJM3M.js";
6
6
  import {
7
7
  DocSearchBar,
8
8
  useDocSearch
9
- } from "./chunk-C5GKBUT7.js";
9
+ } from "./chunk-T4MU52P4.js";
10
10
  import {
11
11
  useSelfFetch
12
- } from "./chunk-4NN7V443.js";
12
+ } from "./chunk-ZAYZ7JHF.js";
13
13
  import {
14
14
  EntityAuthorCard,
15
15
  EntityTagBadges,
@@ -26,10 +26,10 @@ import {
26
26
  toStripProfile,
27
27
  useCaptions,
28
28
  useVideoWarmup
29
- } from "./chunk-FE5QR7PT.js";
29
+ } from "./chunk-7SKYZDEJ.js";
30
30
  import {
31
31
  buildOgPlaceholderUrl
32
- } from "./chunk-TXEI4PES.js";
32
+ } from "./chunk-YFLKONLB.js";
33
33
  import {
34
34
  useRouter,
35
35
  useSearchParams
@@ -398,4 +398,4 @@ export {
398
398
  useOnboardingGuide,
399
399
  useOnboardingGuideSections
400
400
  };
401
- //# sourceMappingURL=chunk-OWCN3BM6.js.map
401
+ //# sourceMappingURL=chunk-6DD7G4UQ.js.map
@@ -58,7 +58,7 @@ import {
58
58
  useResetOnPageHidden,
59
59
  useSuppressCloneFocus,
60
60
  useToast
61
- } from "./chunk-TXEI4PES.js";
61
+ } from "./chunk-YFLKONLB.js";
62
62
  import {
63
63
  init_next_navigation,
64
64
  usePathname,
@@ -25014,6 +25014,7 @@ function EmbedViewerFrame({
25014
25014
  titleVariant = "h3",
25015
25015
  actions,
25016
25016
  src,
25017
+ isLoading,
25017
25018
  emptyIcon,
25018
25019
  emptyMessage = "Content not available",
25019
25020
  height,
@@ -25085,6 +25086,13 @@ function EmbedViewerFrame({
25085
25086
  loading,
25086
25087
  sandbox
25087
25088
  }
25089
+ ) : isLoading ? (
25090
+ // The EXACT skeleton every embed shows while its iframe loads
25091
+ // (`EmbedIframe`'s `EmbedLoadingSkeleton`) — so a viewer still
25092
+ // RESOLVING where its frame points (ClaudeEmbed probing for a mirror,
25093
+ // before it has a `src`) reads 1:1 with the Figma/Sheets/PDF loading
25094
+ // state, then settles into the iframe in place.
25095
+ /* @__PURE__ */ jsx170(EmbedLoadingSkeleton, { height })
25088
25096
  ) : (
25089
25097
  // The SAME box the iframe would have filled: same height, same rounded
25090
25098
  // border. A viewer whose content is missing must not collapse the page
@@ -25208,8 +25216,9 @@ var KIND_HEADING = {
25208
25216
  design: "Claude Design"
25209
25217
  };
25210
25218
  function ClaudeEmbed({ url, kind = "artifact", title, height, loading = "lazy" }) {
25211
- const mirrorSrc = useClaudeMirrorSrc(url);
25212
- const embedUrl = mirrorSrc ?? toClaudeEmbedUrl(url);
25219
+ const { src: mirrorSrc, status } = useClaudeMirrorSrc(url);
25220
+ const isProbing = status === "probing";
25221
+ const embedUrl = isProbing ? null : mirrorSrc ?? toClaudeEmbedUrl(url);
25213
25222
  return /* @__PURE__ */ jsx172(
25214
25223
  EmbedViewerFrame,
25215
25224
  {
@@ -25217,6 +25226,7 @@ function ClaudeEmbed({ url, kind = "artifact", title, height, loading = "lazy" }
25217
25226
  icon: /* @__PURE__ */ jsx172(ClaudeIcon, { className: "w-5 h-5 shrink-0" }),
25218
25227
  title: title?.trim() || KIND_HEADING[kind],
25219
25228
  titleVariant: "h6",
25229
+ isLoading: isProbing,
25220
25230
  actions: /* @__PURE__ */ jsx172(
25221
25231
  Button,
25222
25232
  {
@@ -63970,4 +63980,4 @@ export {
63970
63980
  LogsList,
63971
63981
  assets
63972
63982
  };
63973
- //# sourceMappingURL=chunk-FE5QR7PT.js.map
63983
+ //# sourceMappingURL=chunk-7SKYZDEJ.js.map