@flamingo-stack/openframe-frontend-core 0.0.592 → 0.0.593

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 (99) hide show
  1. package/dist/{chunk-CRW4WRMH.js → chunk-2645GIM2.js} +2 -2
  2. package/dist/{chunk-FVADHGDP.cjs → chunk-2KISKWOY.cjs} +4 -4
  3. package/dist/{chunk-FVADHGDP.cjs.map → chunk-2KISKWOY.cjs.map} +1 -1
  4. package/dist/{chunk-ZT2Z2BYH.cjs → chunk-2PMCHL37.cjs} +49 -49
  5. package/dist/{chunk-ZT2Z2BYH.cjs.map → chunk-2PMCHL37.cjs.map} +1 -1
  6. package/dist/{chunk-5MHDMDPX.cjs → chunk-2VOBGNEY.cjs} +17 -17
  7. package/dist/{chunk-5MHDMDPX.cjs.map → chunk-2VOBGNEY.cjs.map} +1 -1
  8. package/dist/{chunk-NYH3NVUF.js → chunk-3ZHDEZQB.js} +2 -2
  9. package/dist/{chunk-COY57SZP.cjs → chunk-4DRZZWC7.cjs} +30 -9
  10. package/dist/chunk-4DRZZWC7.cjs.map +1 -0
  11. package/dist/{chunk-NICIJRZ4.cjs → chunk-5SGTTSQN.cjs} +3 -3
  12. package/dist/{chunk-NICIJRZ4.cjs.map → chunk-5SGTTSQN.cjs.map} +1 -1
  13. package/dist/{chunk-TQMZFXWZ.cjs → chunk-CMAO4PPL.cjs} +3 -3
  14. package/dist/{chunk-TQMZFXWZ.cjs.map → chunk-CMAO4PPL.cjs.map} +1 -1
  15. package/dist/{chunk-F543W3F2.js → chunk-GEP3O6NU.js} +2 -2
  16. package/dist/{chunk-FSCQOWXI.js → chunk-GXPOEAXL.js} +2 -2
  17. package/dist/{chunk-V7RUX5CX.cjs → chunk-HMRWH2HC.cjs} +13 -13
  18. package/dist/{chunk-V7RUX5CX.cjs.map → chunk-HMRWH2HC.cjs.map} +1 -1
  19. package/dist/{chunk-JIINHJIT.js → chunk-J3D2WHWC.js} +4 -4
  20. package/dist/{chunk-XNGE5EE5.js → chunk-KPO6TWEV.js} +5 -5
  21. package/dist/{chunk-AUA6OSU7.js → chunk-MPNCYET3.js} +2 -2
  22. package/dist/{chunk-6GMMR667.js → chunk-MV3XJXPG.js} +4 -4
  23. package/dist/{chunk-WP3AVAMP.cjs → chunk-NRHU4V3E.cjs} +33 -33
  24. package/dist/{chunk-WP3AVAMP.cjs.map → chunk-NRHU4V3E.cjs.map} +1 -1
  25. package/dist/{chunk-3JOBM57M.cjs → chunk-OAAQKMMU.cjs} +17 -17
  26. package/dist/{chunk-3JOBM57M.cjs.map → chunk-OAAQKMMU.cjs.map} +1 -1
  27. package/dist/{chunk-WOGLPNK3.cjs → chunk-QHTDFF52.cjs} +3 -3
  28. package/dist/{chunk-WOGLPNK3.cjs.map → chunk-QHTDFF52.cjs.map} +1 -1
  29. package/dist/{chunk-LXD2QJFG.js → chunk-R2J6XMP6.js} +2 -2
  30. package/dist/{chunk-5LJZWTOE.cjs → chunk-S6G6KJ57.cjs} +10 -10
  31. package/dist/{chunk-5LJZWTOE.cjs.map → chunk-S6G6KJ57.cjs.map} +1 -1
  32. package/dist/{chunk-NZQYZKIN.js → chunk-UG27ITVP.js} +5 -5
  33. package/dist/{chunk-O4VGEJ7I.cjs → chunk-VDAMJEMR.cjs} +34 -34
  34. package/dist/{chunk-O4VGEJ7I.cjs.map → chunk-VDAMJEMR.cjs.map} +1 -1
  35. package/dist/{chunk-WVHQQ3NY.js → chunk-VUGQ3Z6E.js} +30 -9
  36. package/dist/chunk-VUGQ3Z6E.js.map +1 -0
  37. package/dist/{chunk-YBENO4XG.cjs → chunk-WY2GQ62H.cjs} +4 -4
  38. package/dist/{chunk-YBENO4XG.cjs.map → chunk-WY2GQ62H.cjs.map} +1 -1
  39. package/dist/{chunk-W2RUBABW.cjs → chunk-WZHARPOT.cjs} +16 -16
  40. package/dist/{chunk-W2RUBABW.cjs.map → chunk-WZHARPOT.cjs.map} +1 -1
  41. package/dist/{chunk-OO6AMBHV.js → chunk-X7XO73M5.js} +2 -2
  42. package/dist/{chunk-XHDBU5EI.js → chunk-XH5QBMXD.js} +2 -2
  43. package/dist/{chunk-ASFEUMFW.js → chunk-YAZY24ZK.js} +3 -3
  44. package/dist/{chunk-HGEA6PW7.cjs → chunk-YSJ4TA6V.cjs} +3 -3
  45. package/dist/{chunk-HGEA6PW7.cjs.map → chunk-YSJ4TA6V.cjs.map} +1 -1
  46. package/dist/{chunk-R25AUM2R.js → chunk-ZR72HRUJ.js} +2 -2
  47. package/dist/components/case-studies/index.cjs +8 -8
  48. package/dist/components/case-studies/index.js +2 -2
  49. package/dist/components/contact/index.cjs +3 -3
  50. package/dist/components/contact/index.js +2 -2
  51. package/dist/components/docs/index.cjs +6 -6
  52. package/dist/components/docs/index.js +5 -5
  53. package/dist/components/embeds/index.cjs +3 -3
  54. package/dist/components/embeds/index.js +2 -2
  55. package/dist/components/faq/index.cjs +3 -3
  56. package/dist/components/faq/index.js +2 -2
  57. package/dist/components/features/index.cjs +2 -2
  58. package/dist/components/features/index.js +1 -1
  59. package/dist/components/help-center-pages/index.cjs +22 -22
  60. package/dist/components/help-center-pages/index.js +13 -13
  61. package/dist/components/index.cjs +31 -31
  62. package/dist/components/index.js +12 -12
  63. package/dist/components/meeting-scheduler/index.cjs +18 -18
  64. package/dist/components/meeting-scheduler/index.js +1 -1
  65. package/dist/components/navigation/index.cjs +5 -5
  66. package/dist/components/navigation/index.js +4 -4
  67. package/dist/components/onboarding-guides/index.cjs +5 -5
  68. package/dist/components/onboarding-guides/index.js +4 -4
  69. package/dist/components/tickets/index.cjs +6 -6
  70. package/dist/components/tickets/index.js +5 -5
  71. package/dist/components/ui/data-table/data-table-row.d.ts +5 -0
  72. package/dist/components/ui/data-table/data-table-row.d.ts.map +1 -1
  73. package/dist/components/ui/data-table/data-table-skeleton.d.ts +1 -0
  74. package/dist/components/ui/data-table/data-table-skeleton.d.ts.map +1 -1
  75. package/dist/components/ui/index.cjs +2 -2
  76. package/dist/components/ui/index.js +1 -1
  77. package/dist/index.cjs +6 -6
  78. package/dist/index.js +5 -5
  79. package/package.json +1 -1
  80. package/src/__tests__/data-table-row-height.test.tsx +31 -0
  81. package/src/components/ui/data-table/data-table-body.tsx +12 -3
  82. package/src/components/ui/data-table/data-table-row.tsx +15 -3
  83. package/src/components/ui/data-table/data-table-skeleton.tsx +5 -2
  84. package/dist/chunk-COY57SZP.cjs.map +0 -1
  85. package/dist/chunk-WVHQQ3NY.js.map +0 -1
  86. /package/dist/{chunk-CRW4WRMH.js.map → chunk-2645GIM2.js.map} +0 -0
  87. /package/dist/{chunk-NYH3NVUF.js.map → chunk-3ZHDEZQB.js.map} +0 -0
  88. /package/dist/{chunk-F543W3F2.js.map → chunk-GEP3O6NU.js.map} +0 -0
  89. /package/dist/{chunk-FSCQOWXI.js.map → chunk-GXPOEAXL.js.map} +0 -0
  90. /package/dist/{chunk-JIINHJIT.js.map → chunk-J3D2WHWC.js.map} +0 -0
  91. /package/dist/{chunk-XNGE5EE5.js.map → chunk-KPO6TWEV.js.map} +0 -0
  92. /package/dist/{chunk-AUA6OSU7.js.map → chunk-MPNCYET3.js.map} +0 -0
  93. /package/dist/{chunk-6GMMR667.js.map → chunk-MV3XJXPG.js.map} +0 -0
  94. /package/dist/{chunk-LXD2QJFG.js.map → chunk-R2J6XMP6.js.map} +0 -0
  95. /package/dist/{chunk-NZQYZKIN.js.map → chunk-UG27ITVP.js.map} +0 -0
  96. /package/dist/{chunk-OO6AMBHV.js.map → chunk-X7XO73M5.js.map} +0 -0
  97. /package/dist/{chunk-XHDBU5EI.js.map → chunk-XH5QBMXD.js.map} +0 -0
  98. /package/dist/{chunk-ASFEUMFW.js.map → chunk-YAZY24ZK.js.map} +0 -0
  99. /package/dist/{chunk-R25AUM2R.js.map → chunk-ZR72HRUJ.js.map} +0 -0
@@ -7,7 +7,7 @@ import {
7
7
  StatusFilterComponent,
8
8
  TASK_TYPE_LABELS,
9
9
  TASK_TYPE_TEXT_COLORS
10
- } from "./chunk-WVHQQ3NY.js";
10
+ } from "./chunk-VUGQ3Z6E.js";
11
11
  import {
12
12
  usePathname,
13
13
  useRouter,
@@ -267,4 +267,4 @@ export {
267
267
  DevCardRowSkeletonList,
268
268
  DeliveryRow
269
269
  };
270
- //# sourceMappingURL=chunk-CRW4WRMH.js.map
270
+ //# sourceMappingURL=chunk-2645GIM2.js.map
@@ -1,7 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
2
 
3
3
 
4
- var _chunkCOY57SZPcjs = require('./chunk-COY57SZP.cjs');
4
+ var _chunk4DRZZWC7cjs = require('./chunk-4DRZZWC7.cjs');
5
5
 
6
6
 
7
7
 
@@ -46,7 +46,7 @@ function GoogleSheetsViewer({ externalUrl, fileName, height }) {
46
46
  ] });
47
47
  }
48
48
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
49
- _chunkCOY57SZPcjs.EmbedViewerFrame,
49
+ _chunk4DRZZWC7cjs.EmbedViewerFrame,
50
50
  {
51
51
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGSQM4PDRcjs.GoogleSheetsIcon, { className: "h-5 w-5 shrink-0" }),
52
52
  title: displayName,
@@ -81,7 +81,7 @@ function PdfViewer({ src, fileName, onPreview, onDownload, height }) {
81
81
  ] });
82
82
  }
83
83
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
84
- _chunkCOY57SZPcjs.EmbedViewerFrame,
84
+ _chunk4DRZZWC7cjs.EmbedViewerFrame,
85
85
  {
86
86
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGSQM4PDRcjs.AdobePdfIcon, { className: "h-5 w-5 shrink-0" }),
87
87
  title: displayName,
@@ -124,4 +124,4 @@ function PdfViewer({ src, fileName, onPreview, onDownload, height }) {
124
124
 
125
125
 
126
126
  exports.FileDownloadCard = FileDownloadCard; exports.GoogleSheetsViewer = GoogleSheetsViewer; exports.PdfViewer = PdfViewer;
127
- //# sourceMappingURL=chunk-FVADHGDP.cjs.map
127
+ //# sourceMappingURL=chunk-2KISKWOY.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-FVADHGDP.cjs","../src/components/embeds/file-download-card.tsx","../src/components/embeds/google-sheets-viewer.tsx","../src/components/embeds/pdf-viewer.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-FVADHGDP.cjs","sourcesContent":[null,"import { FileText, Download } from 'lucide-react';\nimport { formatFileSize } from '../../utils';\nimport { Button } from '../ui';\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({ fileName, mimeType, fileSize, fileUrl }: FileDownloadCardProps) {\n return (\n <div className=\"flex flex-col items-center justify-center py-16\">\n <div className=\"w-full max-w-md space-y-4 rounded-xl border border-ods-border bg-ods-card p-8 text-center\">\n <FileText className=\"mx-auto h-16 w-16 text-ods-text-secondary\" />\n <div>\n <h3 className=\"text-ods-text-primary text-h3\">{fileName || 'File'}</h3>\n <div className=\"mt-2 flex items-center justify-center gap-3 text-ods-text-secondary text-h6\">\n {mimeType && <span>{mimeType}</span>}\n {typeof fileSize === 'number' && <span>{formatFileSize(fileSize)}</span>}\n </div>\n </div>\n {fileUrl && (\n <Button variant=\"accent\" href={fileUrl} openInNewTab leftIcon={<Download className=\"h-4 w-4\" />}>\n Download File\n </Button>\n )}\n </div>\n </div>\n );\n}\n","'use client';\n\nimport { ExternalLink } from 'lucide-react';\nimport { toGoogleSheetsEmbedUrl, toGoogleSheetsOriginalUrl } from '../../utils/embed-url-converters';\nimport { GoogleSheetsIcon } from '../icons-v2-generated';\nimport { Button } from '../ui';\nimport { EmbedViewerFrame } from './embed-viewer-frame';\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 // Historical shape: no URL at all → standalone empty state with NO header\n // (the frame's empty body keeps the header — that's the figma behavior).\n if (!externalUrl) {\n return (\n <div className=\"flex flex-col items-center justify-center py-16 text-center\">\n <GoogleSheetsIcon className=\"mb-4 h-16 w-16 text-ods-text-secondary\" />\n <p className=\"text-ods-text-secondary\">Google Sheet URL not configured</p>\n </div>\n );\n }\n\n return (\n <EmbedViewerFrame\n icon={<GoogleSheetsIcon className=\"h-5 w-5 shrink-0\" />}\n title={displayName}\n actions={\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n href={toGoogleSheetsOriginalUrl(externalUrl)}\n openInNewTab\n leftIcon={<GoogleSheetsIcon className=\"h-4 w-4\" />}\n rightIcon={<ExternalLink className=\"h-4 w-4\" />}\n className=\"w-full sm:w-auto\"\n >\n Open in Google Sheets\n </Button>\n }\n src={toGoogleSheetsEmbedUrl(externalUrl)}\n height={height}\n />\n );\n}\n","'use client';\n\nimport { Download, Eye } from 'lucide-react';\nimport { AdobePdfIcon } from '../icons-v2-generated';\nimport { Button } from '../ui';\nimport { EmbedViewerFrame } from './embed-viewer-frame';\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 // Historical shape: no src at all → standalone empty state with NO header.\n if (!src) {\n return (\n <div className=\"flex flex-col items-center justify-center py-16 text-center\">\n <AdobePdfIcon className=\"mb-4 h-16 w-16 text-ods-text-secondary\" />\n <p className=\"text-ods-text-secondary\">PDF file not available</p>\n </div>\n );\n }\n\n return (\n <EmbedViewerFrame\n icon={<AdobePdfIcon className=\"h-5 w-5 shrink-0\" />}\n title={displayName}\n actions={\n <div className=\"flex w-full items-center gap-2 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=\"h-4 w-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=\"h-4 w-4\" />}\n className=\"flex-1 sm:flex-initial\"\n >\n Download\n </Button>\n </div>\n }\n src={src}\n height={height}\n />\n );\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-2KISKWOY.cjs","../src/components/embeds/file-download-card.tsx","../src/components/embeds/google-sheets-viewer.tsx","../src/components/embeds/pdf-viewer.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-2KISKWOY.cjs","sourcesContent":[null,"import { FileText, Download } from 'lucide-react';\nimport { formatFileSize } from '../../utils';\nimport { Button } from '../ui';\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({ fileName, mimeType, fileSize, fileUrl }: FileDownloadCardProps) {\n return (\n <div className=\"flex flex-col items-center justify-center py-16\">\n <div className=\"w-full max-w-md space-y-4 rounded-xl border border-ods-border bg-ods-card p-8 text-center\">\n <FileText className=\"mx-auto h-16 w-16 text-ods-text-secondary\" />\n <div>\n <h3 className=\"text-ods-text-primary text-h3\">{fileName || 'File'}</h3>\n <div className=\"mt-2 flex items-center justify-center gap-3 text-ods-text-secondary text-h6\">\n {mimeType && <span>{mimeType}</span>}\n {typeof fileSize === 'number' && <span>{formatFileSize(fileSize)}</span>}\n </div>\n </div>\n {fileUrl && (\n <Button variant=\"accent\" href={fileUrl} openInNewTab leftIcon={<Download className=\"h-4 w-4\" />}>\n Download File\n </Button>\n )}\n </div>\n </div>\n );\n}\n","'use client';\n\nimport { ExternalLink } from 'lucide-react';\nimport { toGoogleSheetsEmbedUrl, toGoogleSheetsOriginalUrl } from '../../utils/embed-url-converters';\nimport { GoogleSheetsIcon } from '../icons-v2-generated';\nimport { Button } from '../ui';\nimport { EmbedViewerFrame } from './embed-viewer-frame';\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 // Historical shape: no URL at all → standalone empty state with NO header\n // (the frame's empty body keeps the header — that's the figma behavior).\n if (!externalUrl) {\n return (\n <div className=\"flex flex-col items-center justify-center py-16 text-center\">\n <GoogleSheetsIcon className=\"mb-4 h-16 w-16 text-ods-text-secondary\" />\n <p className=\"text-ods-text-secondary\">Google Sheet URL not configured</p>\n </div>\n );\n }\n\n return (\n <EmbedViewerFrame\n icon={<GoogleSheetsIcon className=\"h-5 w-5 shrink-0\" />}\n title={displayName}\n actions={\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n href={toGoogleSheetsOriginalUrl(externalUrl)}\n openInNewTab\n leftIcon={<GoogleSheetsIcon className=\"h-4 w-4\" />}\n rightIcon={<ExternalLink className=\"h-4 w-4\" />}\n className=\"w-full sm:w-auto\"\n >\n Open in Google Sheets\n </Button>\n }\n src={toGoogleSheetsEmbedUrl(externalUrl)}\n height={height}\n />\n );\n}\n","'use client';\n\nimport { Download, Eye } from 'lucide-react';\nimport { AdobePdfIcon } from '../icons-v2-generated';\nimport { Button } from '../ui';\nimport { EmbedViewerFrame } from './embed-viewer-frame';\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 // Historical shape: no src at all → standalone empty state with NO header.\n if (!src) {\n return (\n <div className=\"flex flex-col items-center justify-center py-16 text-center\">\n <AdobePdfIcon className=\"mb-4 h-16 w-16 text-ods-text-secondary\" />\n <p className=\"text-ods-text-secondary\">PDF file not available</p>\n </div>\n );\n }\n\n return (\n <EmbedViewerFrame\n icon={<AdobePdfIcon className=\"h-5 w-5 shrink-0\" />}\n title={displayName}\n actions={\n <div className=\"flex w-full items-center gap-2 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=\"h-4 w-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=\"h-4 w-4\" />}\n className=\"flex-1 sm:flex-initial\"\n >\n Download\n </Button>\n </div>\n }\n src={src}\n height={height}\n />\n );\n}\n"]}
@@ -1,13 +1,13 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
2
2
 
3
3
 
4
- var _chunkW2RUBABWcjs = require('./chunk-W2RUBABW.cjs');
4
+ var _chunkWZHARPOTcjs = require('./chunk-WZHARPOT.cjs');
5
5
 
6
6
 
7
7
 
8
8
 
9
9
 
10
- var _chunk5LJZWTOEcjs = require('./chunk-5LJZWTOE.cjs');
10
+ var _chunkS6G6KJ57cjs = require('./chunk-S6G6KJ57.cjs');
11
11
 
12
12
 
13
13
 
@@ -18,7 +18,7 @@ var _chunkO4VZOA2Qcjs = require('./chunk-O4VZOA2Q.cjs');
18
18
 
19
19
 
20
20
 
21
- var _chunkNICIJRZ4cjs = require('./chunk-NICIJRZ4.cjs');
21
+ var _chunk5SGTTSQNcjs = require('./chunk-5SGTTSQN.cjs');
22
22
 
23
23
 
24
24
 
@@ -33,7 +33,7 @@ var _chunkNICIJRZ4cjs = require('./chunk-NICIJRZ4.cjs');
33
33
 
34
34
 
35
35
 
36
- var _chunkCOY57SZPcjs = require('./chunk-COY57SZP.cjs');
36
+ var _chunk4DRZZWC7cjs = require('./chunk-4DRZZWC7.cjs');
37
37
 
38
38
 
39
39
 
@@ -112,7 +112,7 @@ var TicketActionFailure = class extends Error {
112
112
  function useTicketActions(options) {
113
113
  const queryClient = _reactquery.useQueryClient.call(void 0, );
114
114
  const ticketActionEndpoint = _nullishCoalesce(_chunkRDTOMWDNcjs.useRequiredChatRuntime.call(void 0, ).endpoints.ticketActionUrl, () => ( TICKET_ACTION_ENDPOINT));
115
- const ticketLive = _chunkNICIJRZ4cjs.useOptionalTicketLive.call(void 0, );
115
+ const ticketLive = _chunk5SGTTSQNcjs.useOptionalTicketLive.call(void 0, );
116
116
  const notifyTicketCreated = _optionalChain([ticketLive, 'optionalAccess', _2 => _2.notifyTicketCreated]);
117
117
  const { prependOptimistic, removeOptimistic, removeTicketFromCache, toast: toast2, onSupportSystemDown } = options;
118
118
  const formInFlightRef = _react.useRef.call(void 0, null);
@@ -273,10 +273,10 @@ function useTicketActions(options) {
273
273
  ..._optionalChain([input, 'access', _3 => _3.attachments, 'optionalAccess', _4 => _4.length]) ? { attachments: input.attachments } : {}
274
274
  });
275
275
  if (result.mirror_synced === false) {
276
- toast2(_chunkNICIJRZ4cjs.TOAST_COPY.open_mirror_pending);
276
+ toast2(_chunk5SGTTSQNcjs.TOAST_COPY.open_mirror_pending);
277
277
  watchMirrorSync(placeholderId, result.ticket_id);
278
278
  } else {
279
- toast2(_chunkNICIJRZ4cjs.TOAST_COPY.open_success);
279
+ toast2(_chunk5SGTTSQNcjs.TOAST_COPY.open_success);
280
280
  await queryClient.invalidateQueries({ queryKey: ["tickets"] });
281
281
  removeOptimistic(placeholderId);
282
282
  }
@@ -362,7 +362,7 @@ function useTicketActions(options) {
362
362
  ...hasText ? { content_addendum: trimmed } : {},
363
363
  ...hasFiles ? { attachments } : {}
364
364
  },
365
- _chunkNICIJRZ4cjs.TOAST_COPY.comment_success,
365
+ _chunk5SGTTSQNcjs.TOAST_COPY.comment_success,
366
366
  "send message"
367
367
  );
368
368
  if (ok) {
@@ -385,13 +385,13 @@ function useTicketActions(options) {
385
385
  status: "CLOSED",
386
386
  ..._optionalChain([resolution, 'optionalAccess', _6 => _6.trim, 'call', _7 => _7()]) ? { resolution: resolution.trim() } : {}
387
387
  },
388
- _chunkNICIJRZ4cjs.TOAST_COPY.close_success,
388
+ _chunk5SGTTSQNcjs.TOAST_COPY.close_success,
389
389
  "close ticket"
390
390
  ),
391
391
  [updateTicket]
392
392
  );
393
393
  const reopenTicket = _react.useCallback.call(void 0,
394
- (ticket) => updateTicket(ticket, { status: "OPEN" }, _chunkNICIJRZ4cjs.TOAST_COPY.reopen_success, "reopen ticket"),
394
+ (ticket) => updateTicket(ticket, { status: "OPEN" }, _chunk5SGTTSQNcjs.TOAST_COPY.reopen_success, "reopen ticket"),
395
395
  [updateTicket]
396
396
  );
397
397
  return _react.useMemo.call(void 0,
@@ -616,14 +616,14 @@ function useTicketsList(filters) {
616
616
  // src/components/tickets/ticket-open-form.tsx
617
617
 
618
618
  var _jsxruntime = require('react/jsx-runtime');
619
- var COUNTER_VISIBLE_AT = Math.floor(_chunkNICIJRZ4cjs.TICKET_TEXT_MAX_CHARS * 0.8);
619
+ var COUNTER_VISIBLE_AT = Math.floor(_chunk5SGTTSQNcjs.TICKET_TEXT_MAX_CHARS * 0.8);
620
620
  function TicketOpenForm({ onSubmit, isSubmitting, supportSystemDown }) {
621
621
  const [subject, setSubject] = _react.useState.call(void 0, "");
622
622
  const [content, setContent] = _react.useState.call(void 0, "");
623
623
  const { attachments, readyAttachments, hasInflightUploads, addFiles, removeAttachment, clear } = _chunkTVPJ5DIBcjs.useChatAttachments.call(void 0, );
624
624
  const trimmedSubject = subject.trim();
625
625
  const trimmedContent = content.trim();
626
- const overCap = content.length > _chunkNICIJRZ4cjs.TICKET_TEXT_MAX_CHARS;
626
+ const overCap = content.length > _chunk5SGTTSQNcjs.TICKET_TEXT_MAX_CHARS;
627
627
  const showCounter = content.length >= COUNTER_VISIBLE_AT;
628
628
  const canSubmit = !isSubmitting && !supportSystemDown && !hasInflightUploads && trimmedSubject.length > 0 && trimmedContent.length > 0 && !overCap;
629
629
  const handleSubmit = async (e) => {
@@ -665,7 +665,7 @@ function TicketOpenForm({ onSubmit, isSubmitting, supportSystemDown }) {
665
665
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { children: [
666
666
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "label", { htmlFor: "ticket-content", className: "mb-1 block text-ods-text-primary text-h6", children: "Your Message" }),
667
667
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
668
- _chunkCOY57SZPcjs.Textarea,
668
+ _chunk4DRZZWC7cjs.Textarea,
669
669
  {
670
670
  id: "ticket-content",
671
671
  placeholder: "Describe your issue or question in detail...",
@@ -679,7 +679,7 @@ function TicketOpenForm({ onSubmit, isSubmitting, supportSystemDown }) {
679
679
  showCounter && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: `mt-1 text-right text-h6 ${overCap ? "text-ods-error" : "text-ods-text-secondary"}`, children: [
680
680
  content.length,
681
681
  "/",
682
- _chunkNICIJRZ4cjs.TICKET_TEXT_MAX_CHARS
682
+ _chunk5SGTTSQNcjs.TICKET_TEXT_MAX_CHARS
683
683
  ] })
684
684
  ] }),
685
685
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -795,7 +795,7 @@ function TicketLinkedDeliveryCard({ clickup, className }) {
795
795
  dateClosed: clickup.date_closed,
796
796
  clickupUrl: _nullishCoalesce(clickup.clickup_url, () => ( ""))
797
797
  };
798
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `overflow-hidden rounded-md border border-ods-border bg-ods-bg ${_nullishCoalesce(className, () => ( ""))}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5LJZWTOEcjs.DeliveryRow, { item, href: clickup.delivery_href, caption: "Linked delivery" }) });
798
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `overflow-hidden rounded-md border border-ods-border bg-ods-bg ${_nullishCoalesce(className, () => ( ""))}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkS6G6KJ57cjs.DeliveryRow, { item, href: clickup.delivery_href, caption: "Linked delivery" }) });
799
799
  }
800
800
 
801
801
  // src/components/tickets/ticket-reply-composer.tsx
@@ -848,7 +848,7 @@ function TicketReplyComposer({
848
848
  sending: busy || attachments.hasInflightUploads,
849
849
  disabled: supportSystemDown,
850
850
  allowEmptySend: hasReadyFiles,
851
- maxLength: _chunkNICIJRZ4cjs.TICKET_TEXT_MAX_CHARS,
851
+ maxLength: _chunk5SGTTSQNcjs.TICKET_TEXT_MAX_CHARS,
852
852
  onSend: handleSend
853
853
  }
854
854
  ),
@@ -877,25 +877,25 @@ function TicketReplyComposer({
877
877
  }
878
878
  )
879
879
  ] }),
880
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkCOY57SZPcjs.AlertDialog, { open: closeDialogOpen, onOpenChange: setCloseDialogOpen, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkCOY57SZPcjs.AlertDialogContent, { className: "border-ods-border bg-ods-card", children: [
881
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkCOY57SZPcjs.AlertDialogHeader, { children: [
882
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkCOY57SZPcjs.AlertDialogTitle, { className: "text-ods-text-primary", children: "Close this ticket?" }),
883
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkCOY57SZPcjs.AlertDialogDescription, { className: "text-ods-text-secondary", children: "Add an optional resolution note below. You can reopen the ticket later if needed." })
880
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4DRZZWC7cjs.AlertDialog, { open: closeDialogOpen, onOpenChange: setCloseDialogOpen, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunk4DRZZWC7cjs.AlertDialogContent, { className: "border-ods-border bg-ods-card", children: [
881
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunk4DRZZWC7cjs.AlertDialogHeader, { children: [
882
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4DRZZWC7cjs.AlertDialogTitle, { className: "text-ods-text-primary", children: "Close this ticket?" }),
883
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4DRZZWC7cjs.AlertDialogDescription, { className: "text-ods-text-secondary", children: "Add an optional resolution note below. You can reopen the ticket later if needed." })
884
884
  ] }),
885
885
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
886
- _chunkCOY57SZPcjs.Textarea,
886
+ _chunk4DRZZWC7cjs.Textarea,
887
887
  {
888
888
  value: resolution,
889
889
  onChange: (e) => setResolution(e.target.value),
890
890
  placeholder: "Resolution (optional)",
891
891
  rows: 3,
892
- maxLength: _chunkNICIJRZ4cjs.TICKET_TEXT_MAX_CHARS,
892
+ maxLength: _chunk5SGTTSQNcjs.TICKET_TEXT_MAX_CHARS,
893
893
  className: "mt-2"
894
894
  }
895
895
  ),
896
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkCOY57SZPcjs.AlertDialogFooter, { children: [
896
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunk4DRZZWC7cjs.AlertDialogFooter, { children: [
897
897
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
898
- _chunkCOY57SZPcjs.AlertDialogCancel,
898
+ _chunk4DRZZWC7cjs.AlertDialogCancel,
899
899
  {
900
900
  disabled: busy,
901
901
  className: "border-ods-border bg-transparent text-ods-text-primary hover:bg-ods-border",
@@ -903,7 +903,7 @@ function TicketReplyComposer({
903
903
  }
904
904
  ),
905
905
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
906
- _chunkCOY57SZPcjs.AlertDialogAction,
906
+ _chunk4DRZZWC7cjs.AlertDialogAction,
907
907
  {
908
908
  onClick: () => void confirmClose(),
909
909
  disabled: busy,
@@ -966,9 +966,9 @@ var TICKET_FEED_INNER = "flex flex-col gap-4 md:gap-6 px-4 md:px-6 py-4 md:py-6"
966
966
  var TICKET_FEED_SKELETON_ROWS = 6;
967
967
  function TicketTimelinePanel({ ticket }) {
968
968
  const identity = _chunkTVPJ5DIBcjs.useChatIdentity.call(void 0, );
969
- const externalId = _chunkNICIJRZ4cjs.isOptimistic.call(void 0, ticket) ? null : ticket.external_id;
969
+ const externalId = _chunk5SGTTSQNcjs.isOptimistic.call(void 0, ticket) ? null : ticket.external_id;
970
970
  const { engagements, isLoading } = useTicketEngagements(externalId, !!externalId);
971
- const live = _chunkNICIJRZ4cjs.useOptionalTicketLive.call(void 0, );
971
+ const live = _chunk5SGTTSQNcjs.useOptionalTicketLive.call(void 0, );
972
972
  const setOpenTicketId = _optionalChain([live, 'optionalAccess', _25 => _25.setOpenTicketId]);
973
973
  const markRead = _optionalChain([live, 'optionalAccess', _26 => _26.markRead]);
974
974
  const markReadDebounceRef = _react.useRef.call(void 0, null);
@@ -992,7 +992,7 @@ function TicketTimelinePanel({ ticket }) {
992
992
  markReadDebounceRef.current = setTimeout(() => {
993
993
  markReadDebounceRef.current = null;
994
994
  void markRead(externalId);
995
- }, _chunkNICIJRZ4cjs.TICKET_MARK_READ_DEBOUNCE_MS);
995
+ }, _chunk5SGTTSQNcjs.TICKET_MARK_READ_DEBOUNCE_MS);
996
996
  }, [engagementsCount, externalId, markRead]);
997
997
  const { scrollRef, contentRef } = _usesticktobottom.useStickToBottom.call(void 0, { initial: "instant", resize: "smooth" });
998
998
  const bodyTurns = ticket.body ? ticket.body.split(TURN_SEPARATOR_RE).map((t) => t.trim()).filter(Boolean) : [];
@@ -1061,7 +1061,7 @@ function TicketTimelinePanel({ ticket }) {
1061
1061
  avatarUrl: avatarSrc,
1062
1062
  timeLabel: eng.createdAt ? _chunkTVPJ5DIBcjs.formatRelativeTime.call(void 0, eng.createdAt) : null,
1063
1063
  body: stripAttachmentsPreamble(_nullishCoalesce(eng.body, () => ( ""))),
1064
- footer: engAttachments.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkCOY57SZPcjs.TicketAttachmentsList, { attachments: engAttachments, size: "compact" }) }) : null
1064
+ footer: engAttachments.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4DRZZWC7cjs.TicketAttachmentsList, { attachments: engAttachments, size: "compact" }) }) : null
1065
1065
  },
1066
1066
  eng.id
1067
1067
  );
@@ -1174,7 +1174,7 @@ function TicketRow({
1174
1174
  onActionCollapsed,
1175
1175
  id
1176
1176
  }) {
1177
- const optimistic = _chunkNICIJRZ4cjs.isOptimistic.call(void 0, ticket);
1177
+ const optimistic = _chunk5SGTTSQNcjs.isOptimistic.call(void 0, ticket);
1178
1178
  const rowRef = _react.useRef.call(void 0, null);
1179
1179
  const handleClick = _react.useCallback.call(void 0, () => {
1180
1180
  onToggle(ticket.id);
@@ -1343,11 +1343,11 @@ function TicketCenterAuthed({
1343
1343
  ) }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkY6I2DGKCcjs.Card, { className: "overflow-hidden", children: merged.map((ticket) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1344
1344
  TicketRow,
1345
1345
  {
1346
- id: _chunkCOY57SZPcjs.devSectionAnchorId.call(void 0, "ticket", ticket.external_id),
1346
+ id: _chunk4DRZZWC7cjs.devSectionAnchorId.call(void 0, "ticket", ticket.external_id),
1347
1347
  ticket,
1348
1348
  expanded: expandedTicketId === ticket.id,
1349
1349
  onToggle: toggleRow,
1350
- busy: _chunkNICIJRZ4cjs.isOptimistic.call(void 0, ticket) ? false : actions.isRowBusy(ticket.id),
1350
+ busy: _chunk5SGTTSQNcjs.isOptimistic.call(void 0, ticket) ? false : actions.isRowBusy(ticket.id),
1351
1351
  supportSystemDown,
1352
1352
  onSendMessage: actions.sendMessage,
1353
1353
  onClose: actions.closeTicket,
@@ -1401,7 +1401,7 @@ function HelpCenterCard({
1401
1401
  onClearReplyError,
1402
1402
  id
1403
1403
  }) {
1404
- const optimistic = _chunkNICIJRZ4cjs.isOptimistic.call(void 0, ticket);
1404
+ const optimistic = _chunk5SGTTSQNcjs.isOptimistic.call(void 0, ticket);
1405
1405
  const rawStatus = (_nullishCoalesce(ticket.status, () => ( "OPEN"))).toUpperCase();
1406
1406
  const priority = (_nullishCoalesce(ticket.priority, () => ( ""))).toUpperCase();
1407
1407
  const relativeUpdated = ticket.hubspot_updated_at ? _chunkTVPJ5DIBcjs.formatRelativeTime.call(void 0, ticket.hubspot_updated_at) : "recently";
@@ -1423,7 +1423,7 @@ function HelpCenterCard({
1423
1423
  });
1424
1424
  return () => cancelAnimationFrame(raf);
1425
1425
  }, [isExpanded]);
1426
- const live = _chunkNICIJRZ4cjs.useOptionalTicketLive.call(void 0, );
1426
+ const live = _chunk5SGTTSQNcjs.useOptionalTicketLive.call(void 0, );
1427
1427
  const unreadCount = !optimistic && ticket.external_id && _optionalChain([live, 'optionalAccess', _64 => _64.unreadByTicket, 'access', _65 => _65[ticket.external_id]]) || 0;
1428
1428
  const rightBadges = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
1429
1429
  unreadCount > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -1473,7 +1473,7 @@ function HelpCenterCard({
1473
1473
  "aria-controls": isExpanded ? `help-center-drawer-${ticket.id}` : void 0,
1474
1474
  className: "w-full p-[12px] text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ods-accent disabled:cursor-default md:p-[16px]",
1475
1475
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1476
- _chunk5LJZWTOEcjs.DevCardRowContent,
1476
+ _chunkS6G6KJ57cjs.DevCardRowContent,
1477
1477
  {
1478
1478
  title,
1479
1479
  subtitle,
@@ -1573,7 +1573,7 @@ function HelpCenterCreateForm({
1573
1573
  subjectError && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { id: "help-center-subject-error", className: "mt-1 text-ods-error text-h6", children: subjectError })
1574
1574
  ] });
1575
1575
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1576
- _chunkW2RUBABWcjs.ContactForm,
1576
+ _chunkWZHARPOTcjs.ContactForm,
1577
1577
  {
1578
1578
  title: "Open a new ticket",
1579
1579
  footerText: "The support team typically responds within one business day.",
@@ -1615,25 +1615,25 @@ function HelpCenterList({ toast: toast2 = _chunkFKXDDJEQcjs.toast, backButton, t
1615
1615
  const searchParams = _chunkSADRZ4YIcjs.useSearchParams.call(void 0, );
1616
1616
  const router = _chunkSADRZ4YIcjs.useRouter.call(void 0, );
1617
1617
  const pathname = _chunkSADRZ4YIcjs.usePathname.call(void 0, );
1618
- const search = searchParams.get(_chunkCOY57SZPcjs.DEV_SECTION_PARAM_KEYS.search) || "";
1618
+ const search = searchParams.get(_chunk4DRZZWC7cjs.DEV_SECTION_PARAM_KEYS.search) || "";
1619
1619
  const status = searchParams.get("status") || "all";
1620
- const ticketParam = searchParams.get(_chunkCOY57SZPcjs.TICKET_OPEN_PARAM) || "";
1620
+ const ticketParam = searchParams.get(_chunk4DRZZWC7cjs.TICKET_OPEN_PARAM) || "";
1621
1621
  const page = _chunkH64ZHSYRcjs.positiveInt.call(void 0, searchParams.get("page"), 1);
1622
1622
  if (identity.isLoading) {
1623
1623
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1624
- _chunk5LJZWTOEcjs.DevSectionPage,
1624
+ _chunkS6G6KJ57cjs.DevSectionPage,
1625
1625
  {
1626
1626
  sectionKey: "tickets",
1627
1627
  backButton,
1628
1628
  title,
1629
1629
  shell,
1630
1630
  preControls: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, HelpCenterCreateFormSkeleton, {}),
1631
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5LJZWTOEcjs.DevCardRowSkeletonList, {})
1631
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkS6G6KJ57cjs.DevCardRowSkeletonList, {})
1632
1632
  }
1633
1633
  );
1634
1634
  }
1635
1635
  if (identity.authTier === "anon" || !_optionalChain([identity, 'access', _66 => _66.user, 'optionalAccess', _67 => _67.email])) {
1636
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5LJZWTOEcjs.DevSectionPage, { sectionKey: "tickets", backButton, title, shell, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1636
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkS6G6KJ57cjs.DevSectionPage, { sectionKey: "tickets", backButton, title, shell, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1637
1637
  _chunkO4VZOA2Qcjs.EmptyState,
1638
1638
  {
1639
1639
  type: "generic",
@@ -1685,8 +1685,8 @@ function HelpCenterListAuthed({
1685
1685
  const setOpenTicket = _react.useCallback.call(void 0,
1686
1686
  (externalId) => {
1687
1687
  const params = new URLSearchParams(searchParams.toString());
1688
- if (externalId) params.set(_chunkCOY57SZPcjs.TICKET_OPEN_PARAM, externalId);
1689
- else params.delete(_chunkCOY57SZPcjs.TICKET_OPEN_PARAM);
1688
+ if (externalId) params.set(_chunk4DRZZWC7cjs.TICKET_OPEN_PARAM, externalId);
1689
+ else params.delete(_chunk4DRZZWC7cjs.TICKET_OPEN_PARAM);
1690
1690
  const qs = params.toString();
1691
1691
  router.replace(qs ? `${pathname}?${qs}` : pathname, { scroll: false });
1692
1692
  },
@@ -1763,13 +1763,13 @@ function HelpCenterListAuthed({
1763
1763
  ] }),
1764
1764
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkCJBSU3XBcjs.Button, { type: "button", variant: "accent", onClick: () => refetch(), children: "Retry" })
1765
1765
  ] }),
1766
- !error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5LJZWTOEcjs.DevCardRowSkeletonList, {}) : !hasResults && isFetching ? (
1766
+ !error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkS6G6KJ57cjs.DevCardRowSkeletonList, {}) : !hasResults && isFetching ? (
1767
1767
  // Bridge state — background refetch in flight and the
1768
1768
  // optimistic placeholder was just removed by the mutation
1769
1769
  // callback. Without this branch "No tickets yet" would flash
1770
1770
  // for ~50ms between `removeOptimistic` and the server
1771
1771
  // response landing.
1772
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5LJZWTOEcjs.DevCardRowSkeletonList, { rows: 1 })
1772
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkS6G6KJ57cjs.DevCardRowSkeletonList, { rows: 1 })
1773
1773
  ) : !hasResults ? hasActiveFilters ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1774
1774
  _chunkO4VZOA2Qcjs.EmptyState,
1775
1775
  {
@@ -1805,11 +1805,11 @@ function HelpCenterListAuthed({
1805
1805
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full overflow-clip rounded-[6px] border border-ods-border bg-ods-card", children: merged.map((ticket) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1806
1806
  HelpCenterCard,
1807
1807
  {
1808
- id: _chunkCOY57SZPcjs.devSectionAnchorId.call(void 0, "ticket", ticket.external_id),
1808
+ id: _chunk4DRZZWC7cjs.devSectionAnchorId.call(void 0, "ticket", ticket.external_id),
1809
1809
  ticket,
1810
1810
  expanded: expandedTicketId === ticket.id,
1811
1811
  onToggle: toggleRow,
1812
- busy: _chunkNICIJRZ4cjs.isOptimistic.call(void 0, ticket) ? false : actions.isRowBusy(ticket.id),
1812
+ busy: _chunk5SGTTSQNcjs.isOptimistic.call(void 0, ticket) ? false : actions.isRowBusy(ticket.id),
1813
1813
  supportSystemDown,
1814
1814
  onSendMessage: actions.sendMessage,
1815
1815
  onClose: actions.closeTicket,
@@ -1823,7 +1823,7 @@ function HelpCenterListAuthed({
1823
1823
  ) }),
1824
1824
  !error && totalPages > 1 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkO4VZOA2Qcjs.UnifiedPagination, { currentPage: page, totalPages })
1825
1825
  ] });
1826
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5LJZWTOEcjs.DevSectionPage, { sectionKey: "tickets", backButton, title, shell, preControls: form, children: body });
1826
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkS6G6KJ57cjs.DevSectionPage, { sectionKey: "tickets", backButton, title, shell, preControls: form, children: body });
1827
1827
  }
1828
1828
 
1829
1829
 
@@ -1842,4 +1842,4 @@ function HelpCenterListAuthed({
1842
1842
 
1843
1843
 
1844
1844
  exports.useTicketActions = useTicketActions; exports.mapTicketActionError = mapTicketActionError; exports.useTicketsList = useTicketsList; exports.TicketOpenForm = TicketOpenForm; exports.useTicketEngagements = useTicketEngagements; exports.TicketLinkedDeliveryCard = TicketLinkedDeliveryCard; exports.TicketReplyComposer = TicketReplyComposer; exports.TicketDetailDrawer = TicketDetailDrawer; exports.TicketRow = TicketRow; exports.TicketCenter = TicketCenter; exports.HelpCenterCard = HelpCenterCard; exports.HelpCenterCreateFormSkeleton = HelpCenterCreateFormSkeleton; exports.HelpCenterCreateForm = HelpCenterCreateForm; exports.HelpCenterList = HelpCenterList;
1845
- //# sourceMappingURL=chunk-ZT2Z2BYH.cjs.map
1845
+ //# sourceMappingURL=chunk-2PMCHL37.cjs.map