@flamingo-stack/openframe-frontend-core 0.0.338 → 0.0.339

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 (89) hide show
  1. package/dist/{chunk-IBCTHO3A.cjs → chunk-4DXRKAV6.cjs} +5 -5
  2. package/dist/{chunk-IBCTHO3A.cjs.map → chunk-4DXRKAV6.cjs.map} +1 -1
  3. package/dist/{chunk-HI367AS3.js → chunk-5A5SLX2F.js} +2 -2
  4. package/dist/{chunk-IVY5R6L2.cjs → chunk-6YWPFPKC.cjs} +25 -25
  5. package/dist/{chunk-IVY5R6L2.cjs.map → chunk-6YWPFPKC.cjs.map} +1 -1
  6. package/dist/{chunk-3BWH262F.js → chunk-742ZCG3D.js} +4 -4
  7. package/dist/{chunk-YHDF4WMG.cjs → chunk-7OPVJDX6.cjs} +15 -15
  8. package/dist/{chunk-YHDF4WMG.cjs.map → chunk-7OPVJDX6.cjs.map} +1 -1
  9. package/dist/{chunk-FNPF5OQS.cjs → chunk-D5BRTQEA.cjs} +26 -26
  10. package/dist/{chunk-FNPF5OQS.cjs.map → chunk-D5BRTQEA.cjs.map} +1 -1
  11. package/dist/{chunk-IJ2OYHRH.cjs → chunk-DKK3VRRM.cjs} +12 -12
  12. package/dist/{chunk-IJ2OYHRH.cjs.map → chunk-DKK3VRRM.cjs.map} +1 -1
  13. package/dist/{chunk-IOEGV4DP.js → chunk-DLXHC6JS.js} +2 -2
  14. package/dist/{chunk-FGVYJPT4.js → chunk-DUJINSKJ.js} +2 -2
  15. package/dist/{chunk-RSA7DPZN.cjs → chunk-FFNTLQZR.cjs} +56 -56
  16. package/dist/{chunk-RSA7DPZN.cjs.map → chunk-FFNTLQZR.cjs.map} +1 -1
  17. package/dist/{chunk-DPFJPCFL.cjs → chunk-GBE2R7R4.cjs} +7 -7
  18. package/dist/{chunk-DPFJPCFL.cjs.map → chunk-GBE2R7R4.cjs.map} +1 -1
  19. package/dist/{chunk-DPU7VTTV.js → chunk-GEJQRRD2.js} +4 -4
  20. package/dist/{chunk-HKBV4OJK.js → chunk-HHS3CJ7G.js} +2 -2
  21. package/dist/{chunk-BG44XQB2.js → chunk-I54DGTLP.js} +65 -37
  22. package/dist/chunk-I54DGTLP.js.map +1 -0
  23. package/dist/{chunk-GFBCUSFN.js → chunk-I7NP2ZAJ.js} +4 -4
  24. package/dist/{chunk-JI7EPGRA.js → chunk-IK22LSYP.js} +4 -4
  25. package/dist/{chunk-FDKTAOEO.cjs → chunk-J344NBBP.cjs} +37 -37
  26. package/dist/{chunk-FDKTAOEO.cjs.map → chunk-J344NBBP.cjs.map} +1 -1
  27. package/dist/{chunk-GOTCZBP2.js → chunk-J7VJHE6O.js} +2 -2
  28. package/dist/{chunk-QJR7QLNW.cjs → chunk-JOLEA7LT.cjs} +31 -31
  29. package/dist/{chunk-QJR7QLNW.cjs.map → chunk-JOLEA7LT.cjs.map} +1 -1
  30. package/dist/{chunk-Y2VDAVIX.cjs → chunk-KPR563UC.cjs} +62 -62
  31. package/dist/{chunk-Y2VDAVIX.cjs.map → chunk-KPR563UC.cjs.map} +1 -1
  32. package/dist/{chunk-RLHOSQ7X.cjs → chunk-OJJCWMLT.cjs} +9 -9
  33. package/dist/{chunk-RLHOSQ7X.cjs.map → chunk-OJJCWMLT.cjs.map} +1 -1
  34. package/dist/{chunk-2FDRZIX2.cjs → chunk-PNWORHOR.cjs} +65 -37
  35. package/dist/chunk-PNWORHOR.cjs.map +1 -0
  36. package/dist/{chunk-N7MH2OSW.js → chunk-S5B3ZX6U.js} +2 -2
  37. package/dist/{chunk-A4X3DZSS.js → chunk-YX7RIC4Z.js} +2 -2
  38. package/dist/components/case-studies/index.cjs +8 -8
  39. package/dist/components/case-studies/index.js +2 -2
  40. package/dist/components/chat/index.cjs +2 -2
  41. package/dist/components/chat/index.js +1 -1
  42. package/dist/components/contact/index.cjs +3 -3
  43. package/dist/components/contact/index.js +2 -2
  44. package/dist/components/docs/index.cjs +5 -5
  45. package/dist/components/docs/index.js +4 -4
  46. package/dist/components/embeds/index.cjs +3 -3
  47. package/dist/components/embeds/index.js +2 -2
  48. package/dist/components/faq/index.cjs +3 -3
  49. package/dist/components/faq/index.js +2 -2
  50. package/dist/components/features/index.cjs +2 -2
  51. package/dist/components/features/index.js +1 -1
  52. package/dist/components/help-center-pages/index.cjs +20 -20
  53. package/dist/components/help-center-pages/index.js +11 -11
  54. package/dist/components/index.cjs +121 -121
  55. package/dist/components/index.js +9 -9
  56. package/dist/components/layout/page-layout.d.ts +6 -1
  57. package/dist/components/layout/page-layout.d.ts.map +1 -1
  58. package/dist/components/layout/title-block.d.ts +8 -1
  59. package/dist/components/layout/title-block.d.ts.map +1 -1
  60. package/dist/components/navigation/index.cjs +2 -2
  61. package/dist/components/navigation/index.js +1 -1
  62. package/dist/components/onboarding-guides/index.cjs +5 -5
  63. package/dist/components/onboarding-guides/index.js +4 -4
  64. package/dist/components/related-content/index.cjs +3 -3
  65. package/dist/components/related-content/index.js +2 -2
  66. package/dist/components/tickets/index.cjs +5 -5
  67. package/dist/components/tickets/index.js +4 -4
  68. package/dist/components/ui/index.cjs +2 -2
  69. package/dist/components/ui/index.js +1 -1
  70. package/dist/components/ui/info-card.d.ts.map +1 -1
  71. package/dist/index.cjs +2 -2
  72. package/dist/index.js +1 -1
  73. package/package.json +1 -1
  74. package/src/components/layout/page-layout.tsx +10 -1
  75. package/src/components/layout/title-block.tsx +56 -5
  76. package/src/components/ui/info-card.tsx +55 -41
  77. package/dist/chunk-2FDRZIX2.cjs.map +0 -1
  78. package/dist/chunk-BG44XQB2.js.map +0 -1
  79. /package/dist/{chunk-HI367AS3.js.map → chunk-5A5SLX2F.js.map} +0 -0
  80. /package/dist/{chunk-3BWH262F.js.map → chunk-742ZCG3D.js.map} +0 -0
  81. /package/dist/{chunk-IOEGV4DP.js.map → chunk-DLXHC6JS.js.map} +0 -0
  82. /package/dist/{chunk-FGVYJPT4.js.map → chunk-DUJINSKJ.js.map} +0 -0
  83. /package/dist/{chunk-DPU7VTTV.js.map → chunk-GEJQRRD2.js.map} +0 -0
  84. /package/dist/{chunk-HKBV4OJK.js.map → chunk-HHS3CJ7G.js.map} +0 -0
  85. /package/dist/{chunk-GFBCUSFN.js.map → chunk-I7NP2ZAJ.js.map} +0 -0
  86. /package/dist/{chunk-JI7EPGRA.js.map → chunk-IK22LSYP.js.map} +0 -0
  87. /package/dist/{chunk-GOTCZBP2.js.map → chunk-J7VJHE6O.js.map} +0 -0
  88. /package/dist/{chunk-N7MH2OSW.js.map → chunk-S5B3ZX6U.js.map} +0 -0
  89. /package/dist/{chunk-A4X3DZSS.js.map → chunk-YX7RIC4Z.js.map} +0 -0
@@ -4,7 +4,7 @@
4
4
 
5
5
 
6
6
 
7
- var _chunk2FDRZIX2cjs = require('./chunk-2FDRZIX2.cjs');
7
+ var _chunkPNWORHORcjs = require('./chunk-PNWORHOR.cjs');
8
8
 
9
9
 
10
10
 
@@ -59,7 +59,7 @@ function PdfViewer({ src, fileName, onPreview, onDownload, height }) {
59
59
  )
60
60
  ] })
61
61
  ] }),
62
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2FDRZIX2cjs.EmbedIframe, { src, title: displayName, height })
62
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPNWORHORcjs.EmbedIframe, { src, title: displayName, height })
63
63
  ] });
64
64
  }
65
65
 
@@ -85,7 +85,7 @@ function GoogleSheetsViewer({ externalUrl, fileName, height }) {
85
85
  {
86
86
  variant: "outline",
87
87
  size: "small-legacy",
88
- href: _chunk2FDRZIX2cjs.toGoogleSheetsOriginalUrl.call(void 0, externalUrl),
88
+ href: _chunkPNWORHORcjs.toGoogleSheetsOriginalUrl.call(void 0, externalUrl),
89
89
  openInNewTab: true,
90
90
  leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkCCG4DARMcjs.GoogleSheetsIcon, { className: "w-4 h-4" }),
91
91
  rightIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ExternalLink, { className: "w-4 h-4" }),
@@ -95,9 +95,9 @@ function GoogleSheetsViewer({ externalUrl, fileName, height }) {
95
95
  )
96
96
  ] }),
97
97
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
98
- _chunk2FDRZIX2cjs.EmbedIframe,
98
+ _chunkPNWORHORcjs.EmbedIframe,
99
99
  {
100
- src: _chunk2FDRZIX2cjs.toGoogleSheetsEmbedUrl.call(void 0, externalUrl),
100
+ src: _chunkPNWORHORcjs.toGoogleSheetsEmbedUrl.call(void 0, externalUrl),
101
101
  title: displayName,
102
102
  height
103
103
  }
@@ -120,7 +120,7 @@ function FileDownloadCard({
120
120
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "text-lg font-semibold text-ods-text-primary", children: fileName || "File" }),
121
121
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-center gap-3 mt-2 text-sm text-ods-text-secondary", children: [
122
122
  mimeType && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: mimeType }),
123
- typeof fileSize === "number" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: _chunk2FDRZIX2cjs.formatFileSize.call(void 0, fileSize) })
123
+ typeof fileSize === "number" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: _chunkPNWORHORcjs.formatFileSize.call(void 0, fileSize) })
124
124
  ] })
125
125
  ] }),
126
126
  fileUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -141,4 +141,4 @@ function FileDownloadCard({
141
141
 
142
142
 
143
143
  exports.PdfViewer = PdfViewer; exports.GoogleSheetsViewer = GoogleSheetsViewer; exports.FileDownloadCard = FileDownloadCard;
144
- //# sourceMappingURL=chunk-DPFJPCFL.cjs.map
144
+ //# sourceMappingURL=chunk-GBE2R7R4.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-DPFJPCFL.cjs","../src/components/embeds/pdf-viewer.tsx","../src/components/embeds/google-sheets-viewer.tsx","../src/components/embeds/file-download-card.tsx"],"names":["jsxs","jsx","Download"],"mappings":"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","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-DPFJPCFL.cjs","sourcesContent":[null,"\"use client\"\n\nimport React from 'react'\nimport { Button } from '../ui'\nimport { Download, Eye } from 'lucide-react'\nimport { AdobePdfIcon } from '../icons-v2-generated'\nimport { EmbedIframe } from './embed-iframe'\n\nexport interface PdfViewerProps {\n src: string\n fileName?: string\n onPreview?: () => void\n onDownload?: () => void\n height?: string\n}\n\nexport function PdfViewer({ src, fileName, onPreview, onDownload, height }: PdfViewerProps) {\n const displayName = fileName || 'PDF Document'\n\n if (!src) {\n return (\n <div className=\"flex flex-col items-center justify-center py-16 text-center\">\n <AdobePdfIcon className=\"w-16 h-16 text-ods-text-secondary mb-4\" />\n <p className=\"text-ods-text-secondary\">PDF file not available</p>\n </div>\n )\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between\">\n <div className=\"flex items-center gap-2 min-w-0\">\n <AdobePdfIcon className=\"w-5 h-5 shrink-0\" />\n <h2 className=\"text-xl font-semibold text-ods-text-primary truncate\">{displayName}</h2>\n </div>\n <div className=\"flex items-center gap-2 w-full sm:w-auto\">\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n href={onPreview ? undefined : src}\n openInNewTab={!onPreview}\n onClick={onPreview}\n leftIcon={<Eye className=\"w-4 h-4\" />}\n className=\"flex-1 sm:flex-initial\"\n >\n Preview\n </Button>\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n href={onDownload ? undefined : src}\n openInNewTab={!onDownload}\n onClick={onDownload}\n leftIcon={<Download className=\"w-4 h-4\" />}\n className=\"flex-1 sm:flex-initial\"\n >\n Download\n </Button>\n </div>\n </div>\n <EmbedIframe src={src} title={displayName} height={height} />\n </div>\n )\n}\n","\"use client\"\n\nimport React from 'react'\nimport { Button } from '../ui'\nimport { ExternalLink } from 'lucide-react'\nimport { GoogleSheetsIcon } from '../icons-v2-generated'\nimport { EmbedIframe } from './embed-iframe'\nimport { toGoogleSheetsEmbedUrl, toGoogleSheetsOriginalUrl } from '../../utils/embed-url-converters'\n\nexport interface GoogleSheetsViewerProps {\n externalUrl: string\n fileName?: string\n height?: string\n}\n\nexport function GoogleSheetsViewer({ externalUrl, fileName, height }: GoogleSheetsViewerProps) {\n const displayName = fileName || 'Google Sheet'\n\n if (!externalUrl) {\n return (\n <div className=\"flex flex-col items-center justify-center py-16 text-center\">\n <GoogleSheetsIcon className=\"w-16 h-16 text-ods-text-secondary mb-4\" />\n <p className=\"text-ods-text-secondary\">Google Sheet URL not configured</p>\n </div>\n )\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between\">\n <div className=\"flex items-center gap-2 min-w-0\">\n <GoogleSheetsIcon className=\"w-5 h-5 shrink-0\" />\n <h2 className=\"text-xl font-semibold text-ods-text-primary truncate\">{displayName}</h2>\n </div>\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n href={toGoogleSheetsOriginalUrl(externalUrl)}\n openInNewTab\n leftIcon={<GoogleSheetsIcon className=\"w-4 h-4\" />}\n rightIcon={<ExternalLink className=\"w-4 h-4\" />}\n className=\"w-full sm:w-auto\"\n >\n Open in Google Sheets\n </Button>\n </div>\n <EmbedIframe\n src={toGoogleSheetsEmbedUrl(externalUrl)}\n title={displayName}\n height={height}\n />\n </div>\n )\n}\n","import React from 'react'\nimport { Button } from '../ui'\nimport { FileText, Download } from 'lucide-react'\nimport { formatFileSize } from '../../utils'\n\nexport interface FileDownloadCardProps {\n fileName?: string\n mimeType?: string\n fileSize?: number\n fileUrl?: string\n}\n\n/**\n * Generic downloadable-file card for the `file` document type. Used by\n * `<DocsHubPage>`'s default `documentTypeRenderers.file`. Embedders can\n * override the default by passing their own `file` renderer.\n *\n * When `fileUrl` is missing, the Download button is omitted (the card still\n * renders the filename + type + size so the user knows what they were\n * about to download).\n */\nexport function FileDownloadCard({\n fileName,\n mimeType,\n fileSize,\n fileUrl,\n}: FileDownloadCardProps) {\n return (\n <div className=\"flex flex-col items-center justify-center py-16\">\n <div className=\"bg-ods-card border border-ods-border rounded-xl p-8 max-w-md w-full text-center space-y-4\">\n <FileText className=\"w-16 h-16 text-ods-text-secondary mx-auto\" />\n <div>\n <h3 className=\"text-lg font-semibold text-ods-text-primary\">\n {fileName || 'File'}\n </h3>\n <div className=\"flex items-center justify-center gap-3 mt-2 text-sm text-ods-text-secondary\">\n {mimeType && <span>{mimeType}</span>}\n {typeof fileSize === 'number' && <span>{formatFileSize(fileSize)}</span>}\n </div>\n </div>\n {fileUrl && (\n <Button\n variant=\"accent\"\n href={fileUrl}\n openInNewTab\n leftIcon={<Download className=\"w-4 h-4\" />}\n >\n Download File\n </Button>\n )}\n </div>\n </div>\n )\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-GBE2R7R4.cjs","../src/components/embeds/pdf-viewer.tsx","../src/components/embeds/google-sheets-viewer.tsx","../src/components/embeds/file-download-card.tsx"],"names":["jsxs","jsx","Download"],"mappings":"AAAA,qFAAY;AACZ;AACE;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACXA,2CAA8B;AAiBxB,+CAAA;AALC,SAAS,SAAA,CAAU,EAAE,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,UAAA,EAAY,OAAO,CAAA,EAAmB;AAC1F,EAAA,MAAM,YAAA,EAAc,SAAA,GAAY,cAAA;AAEhC,EAAA,GAAA,CAAI,CAAC,GAAA,EAAK;AACR,IAAA,uBACE,8BAAA,KAAC,EAAA,EAAI,SAAA,EAAU,6DAAA,EACb,QAAA,EAAA;AAAA,sBAAA,6BAAA,8BAAC,EAAA,EAAa,SAAA,EAAU,yCAAA,CAAyC,CAAA;AAAA,sBACjE,6BAAA,GAAC,EAAA,EAAE,SAAA,EAAU,yBAAA,EAA0B,QAAA,EAAA,yBAAA,CAAsB;AAAA,IAAA,EAAA,CAC/D,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACE,8BAAA,KAAC,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAA,8BAAA,KAAC,EAAA,EAAI,SAAA,EAAU,oEAAA,EACb,QAAA,EAAA;AAAA,sBAAA,8BAAA,KAAC,EAAA,EAAI,SAAA,EAAU,iCAAA,EACb,QAAA,EAAA;AAAA,wBAAA,6BAAA,8BAAC,EAAA,EAAa,SAAA,EAAU,mBAAA,CAAmB,CAAA;AAAA,wBAC3C,6BAAA,IAAC,EAAA,EAAG,SAAA,EAAU,sDAAA,EAAwD,QAAA,EAAA,YAAA,CAAY;AAAA,MAAA,EAAA,CACpF,CAAA;AAAA,sBACA,8BAAA,KAAC,EAAA,EAAI,SAAA,EAAU,0CAAA,EACb,QAAA,EAAA;AAAA,wBAAA,6BAAA;AAAA,UAAC,wBAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAK,cAAA;AAAA,YACL,IAAA,EAAM,UAAA,EAAY,KAAA,EAAA,EAAY,GAAA;AAAA,YAC9B,YAAA,EAAc,CAAC,SAAA;AAAA,YACf,OAAA,EAAS,SAAA;AAAA,YACT,QAAA,kBAAU,6BAAA,gBAAC,EAAA,EAAI,SAAA,EAAU,UAAA,CAAU,CAAA;AAAA,YACnC,SAAA,EAAU,wBAAA;AAAA,YACX,QAAA,EAAA;AAAA,UAAA;AAAA,QAED,CAAA;AAAA,wBACA,6BAAA;AAAA,UAAC,wBAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAK,cAAA;AAAA,YACL,IAAA,EAAM,WAAA,EAAa,KAAA,EAAA,EAAY,GAAA;AAAA,YAC/B,YAAA,EAAc,CAAC,UAAA;AAAA,YACf,OAAA,EAAS,UAAA;AAAA,YACT,QAAA,kBAAU,6BAAA,qBAAC,EAAA,EAAS,SAAA,EAAU,UAAA,CAAU,CAAA;AAAA,YACxC,SAAA,EAAU,wBAAA;AAAA,YACX,QAAA,EAAA;AAAA,UAAA;AAAA,QAED;AAAA,MAAA,EAAA,CACF;AAAA,IAAA,EAAA,CACF,CAAA;AAAA,oBACA,6BAAA,6BAAC,EAAA,EAAY,GAAA,EAAU,KAAA,EAAO,WAAA,EAAa,OAAA,CAAgB;AAAA,EAAA,EAAA,CAC7D,CAAA;AAEJ;ADCA;AACA;AE7DA;AAgBM;AALC,SAAS,kBAAA,CAAmB,EAAE,WAAA,EAAa,QAAA,EAAU,OAAO,CAAA,EAA4B;AAC7F,EAAA,MAAM,YAAA,EAAc,SAAA,GAAY,cAAA;AAEhC,EAAA,GAAA,CAAI,CAAC,WAAA,EAAa;AAChB,IAAA,uBACEA,8BAAAA,KAAC,EAAA,EAAI,SAAA,EAAU,6DAAA,EACb,QAAA,EAAA;AAAA,sBAAAC,6BAAAA,kCAAC,EAAA,EAAiB,SAAA,EAAU,yCAAA,CAAyC,CAAA;AAAA,sBACrEA,6BAAAA,GAAC,EAAA,EAAE,SAAA,EAAU,yBAAA,EAA0B,QAAA,EAAA,kCAAA,CAA+B;AAAA,IAAA,EAAA,CACxE,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACED,8BAAAA,KAAC,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,8BAAAA,KAAC,EAAA,EAAI,SAAA,EAAU,oEAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,8BAAAA,KAAC,EAAA,EAAI,SAAA,EAAU,iCAAA,EACb,QAAA,EAAA;AAAA,wBAAAC,6BAAAA,kCAAC,EAAA,EAAiB,SAAA,EAAU,mBAAA,CAAmB,CAAA;AAAA,wBAC/CA,6BAAAA,IAAC,EAAA,EAAG,SAAA,EAAU,sDAAA,EAAwD,QAAA,EAAA,YAAA,CAAY;AAAA,MAAA,EAAA,CACpF,CAAA;AAAA,sBACAA,6BAAAA;AAAA,QAAC,wBAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,SAAA;AAAA,UACR,IAAA,EAAK,cAAA;AAAA,UACL,IAAA,EAAM,yDAAA,WAAqC,CAAA;AAAA,UAC3C,YAAA,EAAY,IAAA;AAAA,UACZ,QAAA,kBAAUA,6BAAAA,kCAAC,EAAA,EAAiB,SAAA,EAAU,UAAA,CAAU,CAAA;AAAA,UAChD,SAAA,kBAAWA,6BAAAA,yBAAC,EAAA,EAAa,SAAA,EAAU,UAAA,CAAU,CAAA;AAAA,UAC7C,SAAA,EAAU,kBAAA;AAAA,UACX,QAAA,EAAA;AAAA,QAAA;AAAA,MAED;AAAA,IAAA,EAAA,CACF,CAAA;AAAA,oBACAA,6BAAAA;AAAA,MAAC,6BAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,sDAAA,WAAkC,CAAA;AAAA,QACvC,KAAA,EAAO,WAAA;AAAA,QACP;AAAA,MAAA;AAAA,IACF;AAAA,EAAA,EAAA,CACF,CAAA;AAEJ;AFqDA;AACA;AGzGA;AA4BQ;AATD,SAAS,gBAAA,CAAiB;AAAA,EAC/B,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,uBACEA,6BAAAA,KAAC,EAAA,EAAI,SAAA,EAAU,iDAAA,EACb,QAAA,kBAAAD,8BAAAA,KAAC,EAAA,EAAI,SAAA,EAAU,2FAAA,EACb,QAAA,EAAA;AAAA,oBAAAC,6BAAAA,qBAAC,EAAA,EAAS,SAAA,EAAU,4CAAA,CAA4C,CAAA;AAAA,oBAChED,8BAAAA,KAAC,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAC,6BAAAA,IAAC,EAAA,EAAG,SAAA,EAAU,6CAAA,EACX,QAAA,EAAA,SAAA,GAAY,OAAA,CACf,CAAA;AAAA,sBACAD,8BAAAA,KAAC,EAAA,EAAI,SAAA,EAAU,6EAAA,EACZ,QAAA,EAAA;AAAA,QAAA,SAAA,mBAAYC,6BAAAA,MAAC,EAAA,EAAM,QAAA,EAAA,SAAA,CAAS,CAAA;AAAA,QAC5B,OAAO,SAAA,IAAa,SAAA,mBAAYA,6BAAAA,MAAC,EAAA,EAAM,QAAA,EAAA,8CAAA,QAAuB,EAAA,CAAE;AAAA,MAAA,EAAA,CACnE;AAAA,IAAA,EAAA,CACF,CAAA;AAAA,IACC,QAAA,mBACCA,6BAAAA;AAAA,MAAC,wBAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAM,OAAA;AAAA,QACN,YAAA,EAAY,IAAA;AAAA,QACZ,QAAA,kBAAUA,6BAAAA,qBAACC,EAAA,EAAS,SAAA,EAAU,UAAA,CAAU,CAAA;AAAA,QACzC,QAAA,EAAA;AAAA,MAAA;AAAA,IAED;AAAA,EAAA,EAAA,CAEJ,EAAA,CACF,CAAA;AAEJ;AHoFA;AACA;AACE;AACA;AACA;AACF,4HAAC","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-GBE2R7R4.cjs","sourcesContent":[null,"\"use client\"\n\nimport React from 'react'\nimport { Button } from '../ui'\nimport { Download, Eye } from 'lucide-react'\nimport { AdobePdfIcon } from '../icons-v2-generated'\nimport { EmbedIframe } from './embed-iframe'\n\nexport interface PdfViewerProps {\n src: string\n fileName?: string\n onPreview?: () => void\n onDownload?: () => void\n height?: string\n}\n\nexport function PdfViewer({ src, fileName, onPreview, onDownload, height }: PdfViewerProps) {\n const displayName = fileName || 'PDF Document'\n\n if (!src) {\n return (\n <div className=\"flex flex-col items-center justify-center py-16 text-center\">\n <AdobePdfIcon className=\"w-16 h-16 text-ods-text-secondary mb-4\" />\n <p className=\"text-ods-text-secondary\">PDF file not available</p>\n </div>\n )\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between\">\n <div className=\"flex items-center gap-2 min-w-0\">\n <AdobePdfIcon className=\"w-5 h-5 shrink-0\" />\n <h2 className=\"text-xl font-semibold text-ods-text-primary truncate\">{displayName}</h2>\n </div>\n <div className=\"flex items-center gap-2 w-full sm:w-auto\">\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n href={onPreview ? undefined : src}\n openInNewTab={!onPreview}\n onClick={onPreview}\n leftIcon={<Eye className=\"w-4 h-4\" />}\n className=\"flex-1 sm:flex-initial\"\n >\n Preview\n </Button>\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n href={onDownload ? undefined : src}\n openInNewTab={!onDownload}\n onClick={onDownload}\n leftIcon={<Download className=\"w-4 h-4\" />}\n className=\"flex-1 sm:flex-initial\"\n >\n Download\n </Button>\n </div>\n </div>\n <EmbedIframe src={src} title={displayName} height={height} />\n </div>\n )\n}\n","\"use client\"\n\nimport React from 'react'\nimport { Button } from '../ui'\nimport { ExternalLink } from 'lucide-react'\nimport { GoogleSheetsIcon } from '../icons-v2-generated'\nimport { EmbedIframe } from './embed-iframe'\nimport { toGoogleSheetsEmbedUrl, toGoogleSheetsOriginalUrl } from '../../utils/embed-url-converters'\n\nexport interface GoogleSheetsViewerProps {\n externalUrl: string\n fileName?: string\n height?: string\n}\n\nexport function GoogleSheetsViewer({ externalUrl, fileName, height }: GoogleSheetsViewerProps) {\n const displayName = fileName || 'Google Sheet'\n\n if (!externalUrl) {\n return (\n <div className=\"flex flex-col items-center justify-center py-16 text-center\">\n <GoogleSheetsIcon className=\"w-16 h-16 text-ods-text-secondary mb-4\" />\n <p className=\"text-ods-text-secondary\">Google Sheet URL not configured</p>\n </div>\n )\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between\">\n <div className=\"flex items-center gap-2 min-w-0\">\n <GoogleSheetsIcon className=\"w-5 h-5 shrink-0\" />\n <h2 className=\"text-xl font-semibold text-ods-text-primary truncate\">{displayName}</h2>\n </div>\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n href={toGoogleSheetsOriginalUrl(externalUrl)}\n openInNewTab\n leftIcon={<GoogleSheetsIcon className=\"w-4 h-4\" />}\n rightIcon={<ExternalLink className=\"w-4 h-4\" />}\n className=\"w-full sm:w-auto\"\n >\n Open in Google Sheets\n </Button>\n </div>\n <EmbedIframe\n src={toGoogleSheetsEmbedUrl(externalUrl)}\n title={displayName}\n height={height}\n />\n </div>\n )\n}\n","import React from 'react'\nimport { Button } from '../ui'\nimport { FileText, Download } from 'lucide-react'\nimport { formatFileSize } from '../../utils'\n\nexport interface FileDownloadCardProps {\n fileName?: string\n mimeType?: string\n fileSize?: number\n fileUrl?: string\n}\n\n/**\n * Generic downloadable-file card for the `file` document type. Used by\n * `<DocsHubPage>`'s default `documentTypeRenderers.file`. Embedders can\n * override the default by passing their own `file` renderer.\n *\n * When `fileUrl` is missing, the Download button is omitted (the card still\n * renders the filename + type + size so the user knows what they were\n * about to download).\n */\nexport function FileDownloadCard({\n fileName,\n mimeType,\n fileSize,\n fileUrl,\n}: FileDownloadCardProps) {\n return (\n <div className=\"flex flex-col items-center justify-center py-16\">\n <div className=\"bg-ods-card border border-ods-border rounded-xl p-8 max-w-md w-full text-center space-y-4\">\n <FileText className=\"w-16 h-16 text-ods-text-secondary mx-auto\" />\n <div>\n <h3 className=\"text-lg font-semibold text-ods-text-primary\">\n {fileName || 'File'}\n </h3>\n <div className=\"flex items-center justify-center gap-3 mt-2 text-sm text-ods-text-secondary\">\n {mimeType && <span>{mimeType}</span>}\n {typeof fileSize === 'number' && <span>{formatFileSize(fileSize)}</span>}\n </div>\n </div>\n {fileUrl && (\n <Button\n variant=\"accent\"\n href={fileUrl}\n openInNewTab\n leftIcon={<Download className=\"w-4 h-4\" />}\n >\n Download File\n </Button>\n )}\n </div>\n </div>\n )\n}\n"]}
@@ -4,10 +4,10 @@ import {
4
4
  EmptyState,
5
5
  init_unified_pagination,
6
6
  unified_pagination_exports
7
- } from "./chunk-HKBV4OJK.js";
7
+ } from "./chunk-HHS3CJ7G.js";
8
8
  import {
9
9
  DetailPageSkeleton
10
- } from "./chunk-N7MH2OSW.js";
10
+ } from "./chunk-S5B3ZX6U.js";
11
11
  import {
12
12
  useSelfFetch
13
13
  } from "./chunk-65VXW6GZ.js";
@@ -39,7 +39,7 @@ import {
39
39
  isModifierClick,
40
40
  resolveContentHref,
41
41
  useEntityCardLink
42
- } from "./chunk-BG44XQB2.js";
42
+ } from "./chunk-I54DGTLP.js";
43
43
  import {
44
44
  STICKY_HEADER_OFFSET_PX,
45
45
  contentFetch,
@@ -1461,4 +1461,4 @@ export {
1461
1461
  useLegalDocs,
1462
1462
  LegalDocumentPage
1463
1463
  };
1464
- //# sourceMappingURL=chunk-DPU7VTTV.js.map
1464
+ //# sourceMappingURL=chunk-GEJQRRD2.js.map
@@ -11,7 +11,7 @@ import {
11
11
  TASK_TYPE_TEXT_COLORS,
12
12
  getStatusColorScheme,
13
13
  init_pagination
14
- } from "./chunk-BG44XQB2.js";
14
+ } from "./chunk-I54DGTLP.js";
15
15
  import {
16
16
  init_next_navigation,
17
17
  usePathname,
@@ -459,4 +459,4 @@ export {
459
459
  DevCardRowSkeletonList,
460
460
  DeliveryRow
461
461
  };
462
- //# sourceMappingURL=chunk-HKBV4OJK.js.map
462
+ //# sourceMappingURL=chunk-HHS3CJ7G.js.map
@@ -13078,36 +13078,43 @@ function InfoCard({ data, className = "" }) {
13078
13078
  className
13079
13079
  ),
13080
13080
  children: [
13081
- /* @__PURE__ */ jsxs72("div", { className: "p-[var(--spacing-system-m)] flex flex-col gap-[var(--spacing-system-s)] items-start w-full", children: [
13082
- data.title && /* @__PURE__ */ jsxs72("div", { className: "flex items-center gap-[var(--spacing-system-xsf)] self-stretch h-6", children: [
13083
- /* @__PURE__ */ jsx91("span", { className: "text-h4 text-ods-text-primary truncate", title: data.title, children: data.title }),
13084
- data.icon
13081
+ /* @__PURE__ */ jsxs72("div", { className: "p-[var(--spacing-system-m)] flex flex-col gap-[var(--spacing-system-l)] items-start w-full", children: [
13082
+ (data.title || data.subtitle) && /* @__PURE__ */ jsxs72("div", { className: "flex flex-col items-start self-stretch w-full", children: [
13083
+ data.title && /* @__PURE__ */ jsxs72("div", { className: "flex items-center gap-[var(--spacing-system-xsf)] self-stretch", children: [
13084
+ /* @__PURE__ */ jsx91("span", { className: "text-h4 text-ods-text-primary truncate min-w-0", title: data.title, children: data.title }),
13085
+ data.icon
13086
+ ] }),
13087
+ data.subtitle && /* @__PURE__ */ jsxs72("div", { className: "flex items-center gap-[var(--spacing-system-xsf)] self-stretch", children: [
13088
+ /* @__PURE__ */ jsx91("span", { className: "text-h4 text-ods-text-secondary truncate min-w-0", title: data.subtitle, children: data.subtitle }),
13089
+ !data.title && data.icon
13090
+ ] })
13085
13091
  ] }),
13086
- data.subtitle && /* @__PURE__ */ jsx91("div", { className: "text-h4 text-ods-text-secondary truncate self-stretch", title: data.subtitle, children: data.subtitle }),
13087
- data.items.map((item, index) => {
13088
- const values = Array.isArray(item.value) ? item.value : [item.value];
13089
- return /* @__PURE__ */ jsx91(React40.Fragment, { children: values.map((val, valIndex) => /* @__PURE__ */ jsx91(
13090
- InfoCardValueRow,
13092
+ (data.items.length > 0 || data.progress) && /* @__PURE__ */ jsxs72("div", { className: "flex flex-col gap-[var(--spacing-system-xs)] items-start self-stretch w-full", children: [
13093
+ data.items.map((item, index) => {
13094
+ const values = Array.isArray(item.value) ? item.value : [item.value];
13095
+ return /* @__PURE__ */ jsx91(React40.Fragment, { children: values.map((val, valIndex) => /* @__PURE__ */ jsx91(
13096
+ InfoCardValueRow,
13097
+ {
13098
+ label: item.label,
13099
+ value: val,
13100
+ showLabel: valIndex === 0,
13101
+ copyable: item.copyable,
13102
+ icon: valIndex === 0 ? item.icon : void 0,
13103
+ copyAriaLabel: `Copy ${item.label ?? "value"} ${valIndex + 1}`
13104
+ },
13105
+ `${index}-${valIndex}`
13106
+ )) }, index);
13107
+ }),
13108
+ data.progress && /* @__PURE__ */ jsx91(
13109
+ ProgressBar,
13091
13110
  {
13092
- label: item.label,
13093
- value: val,
13094
- showLabel: valIndex === 0,
13095
- copyable: item.copyable,
13096
- icon: valIndex === 0 ? item.icon : void 0,
13097
- copyAriaLabel: `Copy ${item.label ?? "value"} ${valIndex + 1}`
13098
- },
13099
- `${index}-${valIndex}`
13100
- )) }, index);
13101
- }),
13102
- data.progress && /* @__PURE__ */ jsx91(
13103
- ProgressBar,
13104
- {
13105
- progress: data.progress.value,
13106
- warningThreshold: data.progress.warningThreshold,
13107
- criticalThreshold: data.progress.criticalThreshold,
13108
- inverted: data.progress.inverted
13109
- }
13110
- )
13111
+ progress: data.progress.value,
13112
+ warningThreshold: data.progress.warningThreshold,
13113
+ criticalThreshold: data.progress.criticalThreshold,
13114
+ inverted: data.progress.inverted
13115
+ }
13116
+ )
13117
+ ] })
13111
13118
  ] }),
13112
13119
  data.footer && /* @__PURE__ */ jsx91(InfoCardFooter, { footer: data.footer })
13113
13120
  ]
@@ -19983,6 +19990,15 @@ function EntityImage({ src, alt, fallbackText, className }) {
19983
19990
  // src/components/layout/title-block.tsx
19984
19991
  import { jsx as jsx146, jsxs as jsxs118 } from "react/jsx-runtime";
19985
19992
  var TITLE_BLOCK_MIN_HEIGHT = "min-h-11 md:min-h-12";
19993
+ function TitleTextSkeleton({ widthClass, heightClass }) {
19994
+ return /* @__PURE__ */ jsx146(
19995
+ "span",
19996
+ {
19997
+ "aria-hidden": true,
19998
+ className: cn("inline-block max-w-full rounded-md bg-ods-border animate-pulse", widthClass, heightClass)
19999
+ }
20000
+ );
20001
+ }
19986
20002
  function TitleBlock({
19987
20003
  title,
19988
20004
  subtitle,
@@ -19994,7 +20010,9 @@ function TitleBlock({
19994
20010
  selector,
19995
20011
  variant = "plain",
19996
20012
  className,
19997
- titleSize = "h2"
20013
+ titleSize = "h2",
20014
+ titleAdornment,
20015
+ loading
19998
20016
  }) {
19999
20017
  const hasActions = actions && actions.length > 0;
20000
20018
  const hasMenuActions = !!menuActions && menuActions.some((g) => g.items.length > 0);
@@ -20025,7 +20043,7 @@ function TitleBlock({
20025
20043
  className: "hidden md:inline-flex"
20026
20044
  }
20027
20045
  ),
20028
- image || subtitle ? /* @__PURE__ */ jsxs118("div", { className: "flex items-center gap-[var(--spacing-system-m)] min-w-0 w-full", children: [
20046
+ image || subtitle || loading ? /* @__PURE__ */ jsxs118("div", { className: "flex items-center gap-[var(--spacing-system-m)] min-w-0 w-full", children: [
20029
20047
  image && /* @__PURE__ */ jsx146(
20030
20048
  EntityImage,
20031
20049
  {
@@ -20035,10 +20053,16 @@ function TitleBlock({
20035
20053
  }
20036
20054
  ),
20037
20055
  /* @__PURE__ */ jsxs118("div", { className: "flex flex-col justify-center min-w-0 flex-1", children: [
20038
- title && /* @__PURE__ */ jsx146("h1", { className: cn(titleClass, "text-ods-text-primary truncate"), title, children: title }),
20039
- subtitle && /* @__PURE__ */ jsx146("p", { className: "text-h6 text-ods-text-secondary truncate", title: subtitle, children: subtitle })
20056
+ (loading || title) && (titleAdornment ? /* @__PURE__ */ jsxs118("div", { className: "flex items-center gap-[var(--spacing-system-m)] min-w-0 w-full", children: [
20057
+ /* @__PURE__ */ jsx146("h1", { className: cn(titleClass, "text-ods-text-primary truncate min-w-0"), title, children: loading ? /* @__PURE__ */ jsx146(TitleTextSkeleton, { widthClass: "w-48 md:w-72", heightClass: "h-4 md:h-6" }) : title }),
20058
+ /* @__PURE__ */ jsx146("span", { className: "shrink-0", children: titleAdornment })
20059
+ ] }) : /* @__PURE__ */ jsx146("h1", { className: cn(titleClass, "text-ods-text-primary truncate"), title, children: loading ? /* @__PURE__ */ jsx146(TitleTextSkeleton, { widthClass: "w-48 md:w-72", heightClass: "h-4 md:h-6" }) : title })),
20060
+ subtitle && /* @__PURE__ */ jsx146("p", { className: "text-h6 text-ods-text-secondary truncate", title: subtitle, children: loading ? /* @__PURE__ */ jsx146(TitleTextSkeleton, { widthClass: "w-28 md:w-36", heightClass: "h-2.5 md:h-3" }) : subtitle })
20040
20061
  ] })
20041
- ] }) : title && /* @__PURE__ */ jsx146("h1", { className: cn(titleClass, "text-ods-text-primary"), children: title })
20062
+ ] }) : title && (titleAdornment ? /* @__PURE__ */ jsxs118("div", { className: "flex items-center gap-[var(--spacing-system-m)] min-w-0 w-full", children: [
20063
+ /* @__PURE__ */ jsx146("h1", { className: cn(titleClass, "text-ods-text-primary truncate min-w-0"), title, children: title }),
20064
+ /* @__PURE__ */ jsx146("span", { className: "shrink-0", children: titleAdornment })
20065
+ ] }) : /* @__PURE__ */ jsx146("h1", { className: cn(titleClass, "text-ods-text-primary"), children: title }))
20042
20066
  ] }),
20043
20067
  (hasActions || hasMenuActions || selector) && /* @__PURE__ */ jsx146("div", { className: "flex gap-2 items-center shrink-0", children: /* @__PURE__ */ jsx146(
20044
20068
  PageActions,
@@ -20070,11 +20094,13 @@ function PageLayout({
20070
20094
  className,
20071
20095
  contentClassName,
20072
20096
  showHeader = true,
20073
- titleSize
20097
+ titleSize,
20098
+ titleAdornment,
20099
+ loading
20074
20100
  }) {
20075
20101
  const hasActions = actions && actions.length > 0;
20076
20102
  const needsBottomPadding = hasActions && actionsVariant === "primary-buttons";
20077
- const hasHeader = showHeader && (title || subtitle || image || backButton || hasActions || selector);
20103
+ const hasHeader = showHeader && (title || subtitle || image || backButton || hasActions || selector || loading);
20078
20104
  return /* @__PURE__ */ jsxs119("div", { className: cn("flex flex-col w-full", className), children: [
20079
20105
  hasHeader && /* @__PURE__ */ jsx147(
20080
20106
  TitleBlock,
@@ -20088,7 +20114,9 @@ function PageLayout({
20088
20114
  menuActions,
20089
20115
  selector,
20090
20116
  variant: headerVariant,
20091
- titleSize
20117
+ titleSize,
20118
+ titleAdornment,
20119
+ loading
20092
20120
  }
20093
20121
  ),
20094
20122
  /* @__PURE__ */ jsx147("div", { className: cn("flex flex-col flex-1 gap-[var(--spacing-system-l)]", needsBottomPadding && "pb-28 md:pb-0", contentClassName), children })
@@ -50079,4 +50107,4 @@ export {
50079
50107
  FAE_AVATAR_DATA_URI,
50080
50108
  assets
50081
50109
  };
50082
- //# sourceMappingURL=chunk-BG44XQB2.js.map
50110
+ //# sourceMappingURL=chunk-I54DGTLP.js.map