@flamingo-stack/openframe-frontend-core 0.0.591 → 0.0.592
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-BQE4HTDR.js → chunk-2JNCZDJR.js} +2 -2
- package/dist/{chunk-YEKPHSWC.cjs → chunk-3JOBM57M.cjs} +22 -22
- package/dist/{chunk-YEKPHSWC.cjs.map → chunk-3JOBM57M.cjs.map} +1 -1
- package/dist/{chunk-WKOJL6A2.cjs → chunk-5LJZWTOE.cjs} +10 -10
- package/dist/{chunk-WKOJL6A2.cjs.map → chunk-5LJZWTOE.cjs.map} +1 -1
- package/dist/{chunk-NXYOUBOL.cjs → chunk-5MHDMDPX.cjs} +21 -21
- package/dist/{chunk-NXYOUBOL.cjs.map → chunk-5MHDMDPX.cjs.map} +1 -1
- package/dist/{chunk-U2XRBHBX.js → chunk-6GMMR667.js} +9 -9
- package/dist/{chunk-WIMGAPVH.js → chunk-ASFEUMFW.js} +4 -4
- package/dist/{chunk-4UP2SGSO.js → chunk-AUA6OSU7.js} +3 -3
- package/dist/{chunk-YMAHVHCX.cjs → chunk-BZEWPW5A.cjs} +3 -3
- package/dist/{chunk-YMAHVHCX.cjs.map → chunk-BZEWPW5A.cjs.map} +1 -1
- package/dist/{chunk-SW3CZ2KS.cjs → chunk-COY57SZP.cjs} +129 -84
- package/dist/chunk-COY57SZP.cjs.map +1 -0
- package/dist/{chunk-VGBTCUPG.js → chunk-CRW4WRMH.js} +2 -2
- package/dist/{chunk-E455M3WJ.js → chunk-F543W3F2.js} +4 -4
- package/dist/{chunk-ZZF6Z7KB.cjs → chunk-FKXDDJEQ.cjs} +11 -11
- package/dist/{chunk-ZZF6Z7KB.cjs.map → chunk-FKXDDJEQ.cjs.map} +1 -1
- package/dist/{chunk-RGCBUNMJ.js → chunk-FSCQOWXI.js} +2 -2
- package/dist/{chunk-USDG6IWK.cjs → chunk-FVADHGDP.cjs} +7 -7
- package/dist/{chunk-USDG6IWK.cjs.map → chunk-FVADHGDP.cjs.map} +1 -1
- package/dist/{chunk-OKWGSJAI.js → chunk-GGQZBSFN.js} +1 -1
- package/dist/chunk-GGQZBSFN.js.map +1 -0
- package/dist/{chunk-RNXY35DZ.cjs → chunk-H64ZHSYR.cjs} +1 -1
- package/dist/chunk-H64ZHSYR.cjs.map +1 -0
- package/dist/{chunk-OS72RV57.cjs → chunk-HGEA6PW7.cjs} +3 -3
- package/dist/{chunk-OS72RV57.cjs.map → chunk-HGEA6PW7.cjs.map} +1 -1
- package/dist/{chunk-ZFHIMK4W.js → chunk-JIINHJIT.js} +5 -5
- package/dist/{chunk-CWO3YFVZ.js → chunk-LRQCKSZC.js} +2 -2
- package/dist/{chunk-LL6J6N76.js → chunk-LXD2QJFG.js} +3 -3
- package/dist/{chunk-2TJSDSXW.js → chunk-MOHSA65M.js} +2 -2
- package/dist/{chunk-JHVCH3CK.cjs → chunk-NEFNARFF.cjs} +6 -6
- package/dist/{chunk-JHVCH3CK.cjs.map → chunk-NEFNARFF.cjs.map} +1 -1
- package/dist/{chunk-XK7SLEZB.cjs → chunk-NICIJRZ4.cjs} +3 -3
- package/dist/{chunk-XK7SLEZB.cjs.map → chunk-NICIJRZ4.cjs.map} +1 -1
- package/dist/{chunk-LUWFLC3T.js → chunk-NYH3NVUF.js} +3 -3
- package/dist/{chunk-BOED5ISE.js → chunk-NZQYZKIN.js} +6 -6
- package/dist/{chunk-AZ4A4RBL.cjs → chunk-O4VGEJ7I.cjs} +60 -60
- package/dist/{chunk-AZ4A4RBL.cjs.map → chunk-O4VGEJ7I.cjs.map} +1 -1
- package/dist/{chunk-B7ZCBGUN.cjs → chunk-O4VZOA2Q.cjs} +3 -3
- package/dist/{chunk-B7ZCBGUN.cjs.map → chunk-O4VZOA2Q.cjs.map} +1 -1
- package/dist/{chunk-QVAKJB64.js → chunk-OO6AMBHV.js} +2 -2
- package/dist/{chunk-U3V4TPT5.js → chunk-R25AUM2R.js} +3 -3
- package/dist/{chunk-VGY7D6LG.cjs → chunk-STYNZ4QM.cjs} +3 -3
- package/dist/{chunk-VGY7D6LG.cjs.map → chunk-STYNZ4QM.cjs.map} +1 -1
- package/dist/{chunk-FHKP4H6N.cjs → chunk-TQMZFXWZ.cjs} +5 -5
- package/dist/{chunk-FHKP4H6N.cjs.map → chunk-TQMZFXWZ.cjs.map} +1 -1
- package/dist/{chunk-AMCARR6Y.cjs → chunk-V7RUX5CX.cjs} +15 -15
- package/dist/{chunk-AMCARR6Y.cjs.map → chunk-V7RUX5CX.cjs.map} +1 -1
- package/dist/{chunk-CXILZQFT.cjs → chunk-W2RUBABW.cjs} +19 -19
- package/dist/{chunk-CXILZQFT.cjs.map → chunk-W2RUBABW.cjs.map} +1 -1
- package/dist/{chunk-DKVNW2QD.cjs → chunk-WOGLPNK3.cjs} +3 -3
- package/dist/{chunk-DKVNW2QD.cjs.map → chunk-WOGLPNK3.cjs.map} +1 -1
- package/dist/{chunk-HV6MO4HG.cjs → chunk-WP3AVAMP.cjs} +37 -37
- package/dist/{chunk-HV6MO4HG.cjs.map → chunk-WP3AVAMP.cjs.map} +1 -1
- package/dist/{chunk-ZYA6274A.js → chunk-WVHQQ3NY.js} +87 -42
- package/dist/chunk-WVHQQ3NY.js.map +1 -0
- package/dist/{chunk-WMZ5AUTB.js → chunk-WZJOILPU.js} +2 -2
- package/dist/{chunk-ALTSOKHP.js → chunk-XHDBU5EI.js} +2 -2
- package/dist/{chunk-T6RY2MC6.js → chunk-XNGE5EE5.js} +8 -8
- package/dist/{chunk-5SJSG5RV.cjs → chunk-YBENO4XG.cjs} +8 -8
- package/dist/{chunk-5SJSG5RV.cjs.map → chunk-YBENO4XG.cjs.map} +1 -1
- package/dist/{chunk-OBJEFMOI.cjs → chunk-ZT2Z2BYH.cjs} +66 -66
- package/dist/{chunk-OBJEFMOI.cjs.map → chunk-ZT2Z2BYH.cjs.map} +1 -1
- package/dist/{chunk-BATTVHZT.js → chunk-ZZHHKE2Q.js} +3 -3
- package/dist/components/case-studies/index.cjs +10 -10
- package/dist/components/case-studies/index.js +4 -4
- package/dist/components/contact/index.cjs +5 -5
- package/dist/components/contact/index.js +4 -4
- package/dist/components/docs/index.cjs +8 -8
- package/dist/components/docs/index.js +7 -7
- package/dist/components/embeds/index.cjs +5 -5
- package/dist/components/embeds/index.js +4 -4
- package/dist/components/faq/index.cjs +6 -6
- package/dist/components/faq/index.js +5 -5
- package/dist/components/features/index.cjs +4 -4
- package/dist/components/features/index.js +3 -3
- package/dist/components/help-center-pages/index.cjs +27 -27
- package/dist/components/help-center-pages/index.js +18 -18
- package/dist/components/index.cjs +40 -40
- package/dist/components/index.js +18 -18
- package/dist/components/meeting-scheduler/index.cjs +31 -31
- package/dist/components/meeting-scheduler/index.js +5 -5
- package/dist/components/navigation/index.cjs +7 -7
- package/dist/components/navigation/index.js +6 -6
- package/dist/components/onboarding-guides/index.cjs +8 -8
- package/dist/components/onboarding-guides/index.js +7 -7
- package/dist/components/related-content/index.cjs +4 -4
- package/dist/components/related-content/index.js +3 -3
- package/dist/components/tickets/index.cjs +9 -9
- package/dist/components/tickets/index.js +8 -8
- package/dist/components/ui/data-table/data-table-body.d.ts +18 -1
- package/dist/components/ui/data-table/data-table-body.d.ts.map +1 -1
- package/dist/components/ui/data-table/data-table-row.d.ts +8 -1
- package/dist/components/ui/data-table/data-table-row.d.ts.map +1 -1
- package/dist/components/ui/data-table/data-table-skeleton.d.ts +8 -1
- package/dist/components/ui/data-table/data-table-skeleton.d.ts.map +1 -1
- package/dist/components/ui/data-table/index.d.ts +1 -1
- package/dist/components/ui/entity-image.d.ts +12 -1
- package/dist/components/ui/entity-image.d.ts.map +1 -1
- package/dist/components/ui/index.cjs +4 -4
- package/dist/components/ui/index.js +3 -3
- package/dist/hooks/index.cjs +3 -3
- package/dist/hooks/index.js +2 -2
- package/dist/index.cjs +8 -8
- package/dist/index.js +7 -7
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/search-params.cjs.map +1 -1
- package/dist/utils/search-params.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/data-table-row-height.test.tsx +139 -0
- package/src/__tests__/mlg-platform-leaves.test.ts +1 -1
- package/src/components/ui/data-table/data-table-body.tsx +37 -7
- package/src/components/ui/data-table/data-table-row.tsx +24 -6
- package/src/components/ui/data-table/data-table-skeleton.tsx +24 -3
- package/src/components/ui/entity-image.tsx +19 -3
- package/src/hooks/state/__tests__/use-api-params.test.ts +1 -1
- package/src/utils/search-params.ts +4 -4
- package/dist/chunk-OKWGSJAI.js.map +0 -1
- package/dist/chunk-RNXY35DZ.cjs.map +0 -1
- package/dist/chunk-SW3CZ2KS.cjs.map +0 -1
- package/dist/chunk-ZYA6274A.js.map +0 -1
- /package/dist/{chunk-BQE4HTDR.js.map → chunk-2JNCZDJR.js.map} +0 -0
- /package/dist/{chunk-U2XRBHBX.js.map → chunk-6GMMR667.js.map} +0 -0
- /package/dist/{chunk-WIMGAPVH.js.map → chunk-ASFEUMFW.js.map} +0 -0
- /package/dist/{chunk-4UP2SGSO.js.map → chunk-AUA6OSU7.js.map} +0 -0
- /package/dist/{chunk-VGBTCUPG.js.map → chunk-CRW4WRMH.js.map} +0 -0
- /package/dist/{chunk-E455M3WJ.js.map → chunk-F543W3F2.js.map} +0 -0
- /package/dist/{chunk-RGCBUNMJ.js.map → chunk-FSCQOWXI.js.map} +0 -0
- /package/dist/{chunk-ZFHIMK4W.js.map → chunk-JIINHJIT.js.map} +0 -0
- /package/dist/{chunk-CWO3YFVZ.js.map → chunk-LRQCKSZC.js.map} +0 -0
- /package/dist/{chunk-LL6J6N76.js.map → chunk-LXD2QJFG.js.map} +0 -0
- /package/dist/{chunk-2TJSDSXW.js.map → chunk-MOHSA65M.js.map} +0 -0
- /package/dist/{chunk-LUWFLC3T.js.map → chunk-NYH3NVUF.js.map} +0 -0
- /package/dist/{chunk-BOED5ISE.js.map → chunk-NZQYZKIN.js.map} +0 -0
- /package/dist/{chunk-QVAKJB64.js.map → chunk-OO6AMBHV.js.map} +0 -0
- /package/dist/{chunk-U3V4TPT5.js.map → chunk-R25AUM2R.js.map} +0 -0
- /package/dist/{chunk-WMZ5AUTB.js.map → chunk-WZJOILPU.js.map} +0 -0
- /package/dist/{chunk-ALTSOKHP.js.map → chunk-XHDBU5EI.js.map} +0 -0
- /package/dist/{chunk-T6RY2MC6.js.map → chunk-XNGE5EE5.js.map} +0 -0
- /package/dist/{chunk-BATTVHZT.js.map → chunk-ZZHHKE2Q.js.map} +0 -0
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
PersistentPaginationWrapper
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-LRQCKSZC.js";
|
|
5
5
|
import {
|
|
6
6
|
DeliveryRow
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-CRW4WRMH.js";
|
|
8
8
|
import {
|
|
9
9
|
EmptyState
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-2JNCZDJR.js";
|
|
11
11
|
import {
|
|
12
12
|
DetailPageSkeleton
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-FSCQOWXI.js";
|
|
14
14
|
import {
|
|
15
15
|
useSelfFetch
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-WZJOILPU.js";
|
|
17
17
|
import {
|
|
18
18
|
Accordion,
|
|
19
19
|
AccordionContent,
|
|
@@ -29,16 +29,16 @@ import {
|
|
|
29
29
|
RichMarkdownRenderer,
|
|
30
30
|
devSectionAnchorId,
|
|
31
31
|
resolveContentHref
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-WVHQQ3NY.js";
|
|
33
33
|
import {
|
|
34
34
|
useHumanitySignals,
|
|
35
35
|
useScrollToHash
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-MOHSA65M.js";
|
|
37
37
|
import {
|
|
38
38
|
contentFetch,
|
|
39
39
|
pageCount,
|
|
40
40
|
positiveInt
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-GGQZBSFN.js";
|
|
42
42
|
import {
|
|
43
43
|
Video,
|
|
44
44
|
executeNavigationImperative,
|
|
@@ -1377,4 +1377,4 @@ export {
|
|
|
1377
1377
|
useLegalDocs,
|
|
1378
1378
|
LegalDocumentPage
|
|
1379
1379
|
};
|
|
1380
|
-
//# sourceMappingURL=chunk-
|
|
1380
|
+
//# sourceMappingURL=chunk-6GMMR667.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
useOptionalTicketLive
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-OO6AMBHV.js";
|
|
5
5
|
import {
|
|
6
6
|
AppLayoutDrawerContainerContext,
|
|
7
7
|
AppLayoutDrawerCoordinationContext,
|
|
@@ -12,11 +12,11 @@ import {
|
|
|
12
12
|
UnreadDot,
|
|
13
13
|
buildTicketOpenHref,
|
|
14
14
|
useOptionalNotifications
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-WVHQQ3NY.js";
|
|
16
16
|
import {
|
|
17
17
|
useFocusTrap,
|
|
18
18
|
useLocalStorage
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-MOHSA65M.js";
|
|
20
20
|
import {
|
|
21
21
|
OVERLAY_BACKDROP_CLASS,
|
|
22
22
|
useIsHydrated
|
|
@@ -1888,4 +1888,4 @@ export {
|
|
|
1888
1888
|
MobileBurgerMenu,
|
|
1889
1889
|
AppLayout
|
|
1890
1890
|
};
|
|
1891
|
-
//# sourceMappingURL=chunk-
|
|
1891
|
+
//# sourceMappingURL=chunk-ASFEUMFW.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
EmbedViewerFrame
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-WVHQQ3NY.js";
|
|
5
5
|
import {
|
|
6
6
|
toGoogleSheetsEmbedUrl,
|
|
7
7
|
toGoogleSheetsOriginalUrl
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-MOHSA65M.js";
|
|
9
9
|
import {
|
|
10
10
|
AdobePdfIcon,
|
|
11
11
|
GoogleSheetsIcon
|
|
@@ -124,4 +124,4 @@ export {
|
|
|
124
124
|
GoogleSheetsViewer,
|
|
125
125
|
PdfViewer
|
|
126
126
|
};
|
|
127
|
-
//# sourceMappingURL=chunk-
|
|
127
|
+
//# sourceMappingURL=chunk-AUA6OSU7.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkO4VZOA2Qcjs = require('./chunk-O4VZOA2Q.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
var _chunk23V5BSHDcjs = require('./chunk-23V5BSHD.cjs');
|
|
@@ -116,7 +116,7 @@ function PersistentPaginationWrapper({
|
|
|
116
116
|
},
|
|
117
117
|
"aria-hidden": isPaginationDisabled,
|
|
118
118
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
119
|
-
|
|
119
|
+
_chunkO4VZOA2Qcjs.UnifiedPagination,
|
|
120
120
|
{
|
|
121
121
|
currentPage: displayCurrentPage,
|
|
122
122
|
totalPages: displayTotalPages,
|
|
@@ -136,4 +136,4 @@ function PersistentPaginationWrapper({
|
|
|
136
136
|
|
|
137
137
|
|
|
138
138
|
exports.PersistentPagination = PersistentPagination; exports.usePaginationLoading = usePaginationLoading; exports.PersistentPaginationWrapper = PersistentPaginationWrapper;
|
|
139
|
-
//# sourceMappingURL=chunk-
|
|
139
|
+
//# sourceMappingURL=chunk-BZEWPW5A.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-BZEWPW5A.cjs","../src/components/persistent-pagination.tsx"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACwFQ,+CAAA;AA/BD,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;AACvB,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;AAA0D,UAAA;AACJ,UAAA;AAAY,UAAA;AAAK,UAAA;AACvE,QAAA;AAIF,wBAAA;AAAC,UAAA;AAAA,UAAA;AACe,YAAA;AACP,YAAA;AACL,cAAA;AACF,YAAA;AACa,YAAA;AAEZ,YAAA;AAAA,UAAA;AACH,QAAA;AAAA,MAAA;AAAA,IAAA;AAGF,EAAA;AAEJ;AAKgB;AACR,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;AACmC;AAGhB,EAAA;AACO,EAAA;AACC,EAAA;AAErB,EAAA;AACgB,EAAA;AAGpB,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;AAShB,wBAAA;AAAC,UAAA;AAAA,UAAA;AACe,YAAA;AACP,YAAA;AACL,cAAA;AACF,YAAA;AACa,YAAA;AAKb,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;ADvF6B;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-BZEWPW5A.cjs","sourcesContent":[null,"'use client';\n\nimport type { ReactNode } from 'react';\nimport { cn } from '../utils/cn';\nimport { UnifiedPagination } from './unified-pagination';\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}: 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 items-center justify-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 className=\"sr-only\" role=\"status\" aria-live=\"polite\">\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('relative transition-all ease-in-out', isLoading && 'cursor-not-allowed')}\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(isLoading: boolean, currentPage: number, totalPages: number) {\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}: PersistentPaginationWrapperProps) {\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 return (\n <div\n className={cn(\n 'relative flex items-center justify-center transition-all ease-in-out',\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 className=\"sr-only\" role=\"status\" aria-live=\"polite\">\n {isLoading\n ? `Pagination temporarily disabled while loading page ${displayCurrentPage} of ${displayTotalPages}`\n : `No results available - pagination disabled`}\n </div>\n )}\n\n {/* Pagination controls with disabled state */}\n <div\n className={cn('relative transition-all ease-in-out', isPaginationDisabled && 'cursor-not-allowed')}\n style={{\n transitionDuration: '300ms',\n }}\n aria-hidden={isPaginationDisabled}\n >\n {/* UnifiedPagination directly — Pagination and BlogPagination in\n multi-platform-hub are both thin wrappers around it, so the wrapper\n never has to be handed down from the consuming app. */}\n <UnifiedPagination\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}\n"]}
|