@charcoal-ui/react 6.1.0-beta.3 → 6.1.0-beta.5
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/_lib/compat.d.ts +4 -3
- package/dist/_lib/compat.d.ts.map +1 -1
- package/dist/components/Notification/Snackbar/index.d.ts +5 -1
- package/dist/components/Notification/Snackbar/index.d.ts.map +1 -1
- package/dist/components/Notification/Snackbar/index2.cjs +13 -11
- package/dist/components/Notification/Snackbar/index2.cjs.map +1 -1
- package/dist/components/Notification/Snackbar/index2.js +14 -12
- package/dist/components/Notification/Snackbar/index2.js.map +1 -1
- package/dist/components/Notification/Toast/index2.js +20 -16
- package/dist/components/Notification/Toast/index2.js.map +1 -1
- package/dist/components/Notification/useNotificationQueue.cjs +11 -14
- package/dist/components/Notification/useNotificationQueue.cjs.map +1 -1
- package/dist/components/Notification/useNotificationQueue.d.ts +3 -4
- package/dist/components/Notification/useNotificationQueue.d.ts.map +1 -1
- package/dist/components/Notification/useNotificationQueue.js +11 -14
- package/dist/components/Notification/useNotificationQueue.js.map +1 -1
- package/dist/components/Pagination/index2.js +60 -52
- package/dist/components/Pagination/index2.js.map +1 -1
- package/dist/index.css +1322 -1323
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/layered.css +1322 -1323
- package/dist/layered.css.map +1 -1
- package/package.json +5 -5
- package/src/_lib/compat.ts +4 -3
- package/src/components/Carousel/__snapshots__/index.css.snap +4 -4
- package/src/components/Carousel/index.css +4 -4
- package/src/components/Notification/Snackbar/index.test.tsx +46 -9
- package/src/components/Notification/Snackbar/index.tsx +21 -6
- package/src/components/Notification/useNotificationQueue.ts +16 -26
- package/src/components/Pagination/__snapshots__/index.css.snap +0 -1
- package/src/components/Pagination/index.css +0 -1
- package/src/index.ts +1 -0
|
@@ -10,7 +10,11 @@ import { c } from "react-compiler-runtime";
|
|
|
10
10
|
//#region src/components/Pagination/index.tsx
|
|
11
11
|
function NavButton(t0) {
|
|
12
12
|
"use memo";
|
|
13
|
-
const $ = c(
|
|
13
|
+
const $ = c(16);
|
|
14
|
+
if ($[0] !== "6df9a461da70eeb5250dbca07b72d0ce43e952d7b7d08baba19bf889ba545794") {
|
|
15
|
+
for (let $i = 0; $i < 16; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
16
|
+
$[0] = "6df9a461da70eeb5250dbca07b72d0ce43e952d7b7d08baba19bf889ba545794";
|
|
17
|
+
}
|
|
14
18
|
const { direction, ariaLabel } = t0;
|
|
15
19
|
const { page, pageCount, size, isLinkMode, makeUrl, LinkComponent, makeClickHandler, linkProps } = usePaginationContext();
|
|
16
20
|
const isPrev = direction === "prev";
|
|
@@ -20,7 +24,7 @@ function NavButton(t0) {
|
|
|
20
24
|
const t1 = isPrev ? "24/Prev" : "24/Next";
|
|
21
25
|
const t2 = disabled || void 0;
|
|
22
26
|
let t3;
|
|
23
|
-
if ($[
|
|
27
|
+
if ($[1] !== LinkComponent || $[2] !== disabled || $[3] !== isLinkMode || $[4] !== linkProps || $[5] !== makeClickHandler || $[6] !== makeUrl || $[7] !== navButtonClassName || $[8] !== targetPage) {
|
|
24
28
|
t3 = isLinkMode && makeUrl ? {
|
|
25
29
|
component: LinkComponent,
|
|
26
30
|
href: makeUrl(targetPage),
|
|
@@ -32,18 +36,18 @@ function NavButton(t0) {
|
|
|
32
36
|
onClick: makeClickHandler(targetPage),
|
|
33
37
|
className: navButtonClassName
|
|
34
38
|
};
|
|
35
|
-
$[
|
|
36
|
-
$[
|
|
37
|
-
$[
|
|
38
|
-
$[
|
|
39
|
-
$[
|
|
40
|
-
$[
|
|
41
|
-
$[
|
|
42
|
-
$[
|
|
43
|
-
$[
|
|
44
|
-
} else t3 = $[
|
|
39
|
+
$[1] = LinkComponent;
|
|
40
|
+
$[2] = disabled;
|
|
41
|
+
$[3] = isLinkMode;
|
|
42
|
+
$[4] = linkProps;
|
|
43
|
+
$[5] = makeClickHandler;
|
|
44
|
+
$[6] = makeUrl;
|
|
45
|
+
$[7] = navButtonClassName;
|
|
46
|
+
$[8] = targetPage;
|
|
47
|
+
$[9] = t3;
|
|
48
|
+
} else t3 = $[9];
|
|
45
49
|
let t4;
|
|
46
|
-
if ($[
|
|
50
|
+
if ($[10] !== ariaLabel || $[11] !== size || $[12] !== t1 || $[13] !== t2 || $[14] !== t3) {
|
|
47
51
|
t4 = /* @__PURE__ */ jsx(IconButton, {
|
|
48
52
|
icon: t1,
|
|
49
53
|
size,
|
|
@@ -51,24 +55,28 @@ function NavButton(t0) {
|
|
|
51
55
|
"aria-label": ariaLabel,
|
|
52
56
|
...t3
|
|
53
57
|
});
|
|
54
|
-
$[
|
|
55
|
-
$[
|
|
56
|
-
$[
|
|
57
|
-
$[
|
|
58
|
-
$[
|
|
59
|
-
$[
|
|
60
|
-
} else t4 = $[
|
|
58
|
+
$[10] = ariaLabel;
|
|
59
|
+
$[11] = size;
|
|
60
|
+
$[12] = t1;
|
|
61
|
+
$[13] = t2;
|
|
62
|
+
$[14] = t3;
|
|
63
|
+
$[15] = t4;
|
|
64
|
+
} else t4 = $[15];
|
|
61
65
|
return t4;
|
|
62
66
|
}
|
|
63
67
|
function PageItem(t0) {
|
|
64
68
|
"use memo";
|
|
65
|
-
const $ = c(
|
|
69
|
+
const $ = c(20);
|
|
70
|
+
if ($[0] !== "6df9a461da70eeb5250dbca07b72d0ce43e952d7b7d08baba19bf889ba545794") {
|
|
71
|
+
for (let $i = 0; $i < 20; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
72
|
+
$[0] = "6df9a461da70eeb5250dbca07b72d0ce43e952d7b7d08baba19bf889ba545794";
|
|
73
|
+
}
|
|
66
74
|
const { value } = t0;
|
|
67
75
|
const { page, size, isLinkMode, makeUrl, LinkComponent, makeClickHandler, linkProps } = usePaginationContext();
|
|
68
76
|
const pageItemClassName = useClassNames("charcoal-pagination-button", linkProps?.className);
|
|
69
77
|
if (value === "...") {
|
|
70
78
|
let t1;
|
|
71
|
-
if ($[
|
|
79
|
+
if ($[1] !== size) {
|
|
72
80
|
t1 = /* @__PURE__ */ jsx(IconButton, {
|
|
73
81
|
icon: "24/Dot",
|
|
74
82
|
size,
|
|
@@ -76,69 +84,69 @@ function PageItem(t0) {
|
|
|
76
84
|
className: "charcoal-pagination-spacer",
|
|
77
85
|
"aria-hidden": true
|
|
78
86
|
});
|
|
79
|
-
$[
|
|
80
|
-
$[
|
|
81
|
-
} else t1 = $[
|
|
87
|
+
$[1] = size;
|
|
88
|
+
$[2] = t1;
|
|
89
|
+
} else t1 = $[2];
|
|
82
90
|
return t1;
|
|
83
91
|
}
|
|
84
92
|
if (value === page) {
|
|
85
93
|
let t1;
|
|
86
|
-
if ($[
|
|
94
|
+
if ($[3] !== value) {
|
|
87
95
|
t1 = /* @__PURE__ */ jsx("span", {
|
|
88
96
|
className: "charcoal-pagination-button",
|
|
89
97
|
"aria-current": "page",
|
|
90
98
|
children: value
|
|
91
99
|
});
|
|
92
|
-
$[
|
|
93
|
-
$[
|
|
94
|
-
} else t1 = $[
|
|
100
|
+
$[3] = value;
|
|
101
|
+
$[4] = t1;
|
|
102
|
+
} else t1 = $[4];
|
|
95
103
|
return t1;
|
|
96
104
|
}
|
|
97
105
|
if (typeof value !== "number") return null;
|
|
98
106
|
if (isLinkMode && makeUrl) {
|
|
99
107
|
let t1;
|
|
100
|
-
if ($[
|
|
108
|
+
if ($[5] !== makeUrl || $[6] !== value) {
|
|
101
109
|
t1 = makeUrl(value);
|
|
102
|
-
$[
|
|
103
|
-
$[
|
|
104
|
-
$[
|
|
105
|
-
} else t1 = $[
|
|
110
|
+
$[5] = makeUrl;
|
|
111
|
+
$[6] = value;
|
|
112
|
+
$[7] = t1;
|
|
113
|
+
} else t1 = $[7];
|
|
106
114
|
let t2;
|
|
107
|
-
if ($[
|
|
115
|
+
if ($[8] !== LinkComponent || $[9] !== linkProps || $[10] !== pageItemClassName || $[11] !== t1 || $[12] !== value) {
|
|
108
116
|
t2 = /* @__PURE__ */ jsx(LinkComponent, {
|
|
109
117
|
href: t1,
|
|
110
118
|
...linkProps,
|
|
111
119
|
className: pageItemClassName,
|
|
112
120
|
children: value
|
|
113
121
|
});
|
|
114
|
-
$[
|
|
115
|
-
$[
|
|
116
|
-
$[
|
|
117
|
-
$[
|
|
118
|
-
$[
|
|
119
|
-
$[
|
|
120
|
-
} else t2 = $[
|
|
122
|
+
$[8] = LinkComponent;
|
|
123
|
+
$[9] = linkProps;
|
|
124
|
+
$[10] = pageItemClassName;
|
|
125
|
+
$[11] = t1;
|
|
126
|
+
$[12] = value;
|
|
127
|
+
$[13] = t2;
|
|
128
|
+
} else t2 = $[13];
|
|
121
129
|
return t2;
|
|
122
130
|
}
|
|
123
131
|
let t1;
|
|
124
|
-
if ($[
|
|
132
|
+
if ($[14] !== makeClickHandler || $[15] !== value) {
|
|
125
133
|
t1 = makeClickHandler(value);
|
|
126
|
-
$[
|
|
127
|
-
$[
|
|
128
|
-
$[
|
|
129
|
-
} else t1 = $[
|
|
134
|
+
$[14] = makeClickHandler;
|
|
135
|
+
$[15] = value;
|
|
136
|
+
$[16] = t1;
|
|
137
|
+
} else t1 = $[16];
|
|
130
138
|
let t2;
|
|
131
|
-
if ($[
|
|
139
|
+
if ($[17] !== t1 || $[18] !== value) {
|
|
132
140
|
t2 = /* @__PURE__ */ jsx("button", {
|
|
133
141
|
type: "button",
|
|
134
142
|
className: "charcoal-pagination-button",
|
|
135
143
|
onClick: t1,
|
|
136
144
|
children: value
|
|
137
145
|
});
|
|
138
|
-
$[
|
|
139
|
-
$[
|
|
140
|
-
$[
|
|
141
|
-
} else t2 = $[
|
|
146
|
+
$[17] = t1;
|
|
147
|
+
$[18] = value;
|
|
148
|
+
$[19] = t2;
|
|
149
|
+
} else t2 = $[19];
|
|
142
150
|
return t2;
|
|
143
151
|
}
|
|
144
152
|
function Pagination({ page, pageCount, pageRangeDisplayed, size = "M", onChange, makeUrl, component: LinkComponent = "a", linkProps, className, ariaLabelNext = "Next", ariaLabelPrev = "Previous", ...navProps }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index2.js","names":["size","ariaLabel","value","pageItemClassName"],"sources":["../../../src/components/Pagination/index.tsx"],"sourcesContent":["import './index.css'\n\nimport { usePaginationWindow } from './helper'\nimport { useClassNames } from '../../_lib/useClassNames'\nimport IconButton, { IconButtonProps } from '../IconButton'\nimport {\n PaginationContext,\n usePaginationContext,\n type LinkComponentProps,\n type PaginationContextValue,\n type PageRangeDisplayed,\n type Size,\n} from './PaginationContext'\n\ntype NavButtonProps = {\n direction: 'prev' | 'next'\n ariaLabel: IconButtonProps['aria-label']\n}\n\nfunction NavButton({ direction, ariaLabel }: NavButtonProps) {\n 'use memo'\n const {\n page,\n pageCount,\n size,\n isLinkMode,\n makeUrl,\n LinkComponent,\n makeClickHandler,\n linkProps,\n } = usePaginationContext()\n\n const isPrev = direction === 'prev'\n const targetPage = isPrev\n ? Math.max(1, page - 1)\n : Math.min(pageCount, page + 1)\n const disabled = isPrev ? page <= 1 : page >= pageCount\n const navButtonClassName = useClassNames(\n 'charcoal-pagination-nav-button',\n linkProps?.className,\n )\n\n return (\n <IconButton\n icon={isPrev ? '24/Prev' : '24/Next'}\n size={size}\n /* Use data-hidden, not [hidden]: Tailwind preflight's `[hidden] { display: none !important }` would clobber `visibility: hidden` and collapse the layout space. */\n data-hidden={disabled || undefined}\n aria-label={ariaLabel}\n {...(isLinkMode && makeUrl\n ? {\n component: LinkComponent as 'a',\n href: makeUrl(targetPage),\n 'aria-disabled': disabled,\n ...linkProps,\n className: navButtonClassName,\n }\n : {\n disabled,\n onClick: makeClickHandler(targetPage),\n className: navButtonClassName,\n })}\n />\n )\n}\n\nfunction PageItem({ value }: { value: number | string }) {\n 'use memo'\n const {\n page,\n size,\n isLinkMode,\n makeUrl,\n LinkComponent,\n makeClickHandler,\n linkProps,\n } = usePaginationContext()\n const pageItemClassName = useClassNames(\n 'charcoal-pagination-button',\n linkProps?.className,\n )\n\n // 省略記号\n if (value === '...') {\n return (\n <IconButton\n icon=\"24/Dot\"\n size={size}\n disabled\n className=\"charcoal-pagination-spacer\"\n aria-hidden\n />\n )\n }\n // 現在ページ(クリック不可)\n if (value === page) {\n return (\n <span className=\"charcoal-pagination-button\" aria-current=\"page\">\n {value}\n </span>\n )\n }\n if (typeof value !== 'number') return null\n // リンクモード: ページへのリンク\n if (isLinkMode && makeUrl) {\n return (\n <LinkComponent\n href={makeUrl(value)}\n {...linkProps}\n className={pageItemClassName}\n >\n {value}\n </LinkComponent>\n )\n }\n // ボタンモード: クリックでページ遷移\n return (\n <button\n type=\"button\"\n className=\"charcoal-pagination-button\"\n onClick={makeClickHandler(value)}\n >\n {value}\n </button>\n )\n}\n\ninterface PaginationCommonProps {\n page: number\n pageCount: number\n pageRangeDisplayed?: PageRangeDisplayed\n size?: Size\n ariaLabelPrev?: string\n ariaLabelNext?: string\n}\n\ntype NavProps = Omit<React.ComponentPropsWithoutRef<'nav'>, 'onChange'>\n\n/**\n * Pagination component. Use either `onChange` (button mode) or `makeUrl` (link mode).\n *\n * @example\n * // Button mode - for client-side state\n * <Pagination page={1} pageCount={10} onChange={setPage} />\n *\n * @example\n * // Link mode - for server routing / static pages\n * <Pagination page={1} pageCount={10} makeUrl={(p) => `?page=${p}`} />\n *\n * @example\n * // Link mode with custom component (e.g. Next.js Link)\n * <Pagination page={1} pageCount={10} makeUrl={(p) => `?page=${p}`} component={Link} />\n *\n * @example\n * // Link mode with linkProps (e.g. Next.js scroll)\n * <Pagination page={1} pageCount={10} makeUrl={(p) => `?page=${p}`} component={Link} linkProps={{ scroll: 'marker' }} />\n */\nexport type PaginationProps<T extends React.ElementType = 'a'> =\n PaginationCommonProps &\n NavProps &\n (\n | {\n onChange(newPage: number): void\n makeUrl?: never\n component?: never\n linkProps?: undefined\n }\n | {\n makeUrl(page: number): string\n onChange?: never\n /**\n * The component used for link elements. Receives `href`, `className`, and `children`.\n * @default 'a'\n */\n component?: T\n /**\n * Additional props passed to all link elements (e.g. Next.js Link's scroll, prefetch).\n */\n linkProps?: Omit<\n React.ComponentPropsWithoutRef<T>,\n 'href' | 'children'\n >\n }\n )\n\nexport default function Pagination<T extends React.ElementType = 'a'>({\n page,\n pageCount,\n pageRangeDisplayed,\n size = 'M',\n onChange,\n makeUrl,\n component: LinkComponent = 'a' as T,\n linkProps,\n className,\n ariaLabelNext = 'Next',\n ariaLabelPrev = 'Previous',\n ...navProps\n}: PaginationProps<T>) {\n 'use memo'\n const window = usePaginationWindow(page, pageCount, pageRangeDisplayed)\n const isLinkMode = makeUrl !== undefined\n const makeClickHandler = (value: number) => () => onChange?.(value)\n const classNames = useClassNames('charcoal-pagination', className)\n\n const contextValue = {\n page,\n pageCount,\n size,\n isLinkMode,\n makeUrl,\n LinkComponent,\n makeClickHandler,\n linkProps,\n }\n\n return (\n <PaginationContext.Provider\n value={\n contextValue as PaginationContextValue<\n React.ElementType<LinkComponentProps>\n >\n }\n >\n <nav\n data-size={size}\n aria-label=\"Pagination\"\n {...navProps}\n className={classNames}\n >\n <NavButton direction=\"prev\" ariaLabel={ariaLabelPrev} />\n {window.map((p) => (\n <PageItem key={p} value={p} />\n ))}\n <NavButton direction=\"next\" ariaLabel={ariaLabelNext} />\n </nav>\n </PaginationContext.Provider>\n )\n}\n"],"mappings":";;;;;;;;;;AAmBA,SAAA,UAAA,IAAA;CAAA;CAAA,MAAA,IAAA,EAAA,EAAA;CAAmB,MAAA,EAAA,WAAA,cAAA;CAEjB,MAAA,EAAA,MAAA,WAAA,MAAA,YAAA,SAAA,eAAA,kBAAA,cASI,qBAAqB;CAEzB,MAAA,SAAe,cAAc;CAC7B,MAAA,aAAmB,SACf,KAAI,IAAK,GAAG,OAAO,CACS,IAA5B,KAAI,IAAK,WAAW,OAAO,CAAC;CAChC,MAAA,WAAiB,SAAS,QAAQ,IAAI,QAAQ;CAC9C,MAAA,qBAA2B,cACzB,kCACA,WAAS,SACX;CAIU,MAAA,KAAA,SAAA,YAAA;CAGO,MAAA,KAAA,YAAA;CAAqB,IAAA;CAAA,IAAA,EAAA,OAAA,iBAAA,EAAA,OAAA,YAAA,EAAA,OAAA,cAAA,EAAA,OAAA,aAAA,EAAA,OAAA,oBAAA,EAAA,OAAA,WAAA,EAAA,OAAA,sBAAA,EAAA,OAAA,YAAA;EAE7B,KAAA,cAAA,UAAA;GAAA,WAEY;GAAoB,MACzB,QAAQ,UAAU;GAAC,iBACR;GAAQ,GACtB;GAAS,WACD;EAMb,IAZC;GAAA;GAAA,SAUU,iBAAiB,UAAU;GAAC,WAC1B;EACb;EAAC,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;CAAA,OAAA,KAAA,EAAA;CAAA,IAAA;CAAA,IAAA,EAAA,
|
|
1
|
+
{"version":3,"file":"index2.js","names":["size","ariaLabel","value","pageItemClassName"],"sources":["../../../src/components/Pagination/index.tsx"],"sourcesContent":["import './index.css'\n\nimport { usePaginationWindow } from './helper'\nimport { useClassNames } from '../../_lib/useClassNames'\nimport IconButton, { IconButtonProps } from '../IconButton'\nimport {\n PaginationContext,\n usePaginationContext,\n type LinkComponentProps,\n type PaginationContextValue,\n type PageRangeDisplayed,\n type Size,\n} from './PaginationContext'\n\ntype NavButtonProps = {\n direction: 'prev' | 'next'\n ariaLabel: IconButtonProps['aria-label']\n}\n\nfunction NavButton({ direction, ariaLabel }: NavButtonProps) {\n 'use memo'\n const {\n page,\n pageCount,\n size,\n isLinkMode,\n makeUrl,\n LinkComponent,\n makeClickHandler,\n linkProps,\n } = usePaginationContext()\n\n const isPrev = direction === 'prev'\n const targetPage = isPrev\n ? Math.max(1, page - 1)\n : Math.min(pageCount, page + 1)\n const disabled = isPrev ? page <= 1 : page >= pageCount\n const navButtonClassName = useClassNames(\n 'charcoal-pagination-nav-button',\n linkProps?.className,\n )\n\n return (\n <IconButton\n icon={isPrev ? '24/Prev' : '24/Next'}\n size={size}\n /* Use data-hidden, not [hidden]: Tailwind preflight's `[hidden] { display: none !important }` would clobber `visibility: hidden` and collapse the layout space. */\n data-hidden={disabled || undefined}\n aria-label={ariaLabel}\n {...(isLinkMode && makeUrl\n ? {\n component: LinkComponent as 'a',\n href: makeUrl(targetPage),\n 'aria-disabled': disabled,\n ...linkProps,\n className: navButtonClassName,\n }\n : {\n disabled,\n onClick: makeClickHandler(targetPage),\n className: navButtonClassName,\n })}\n />\n )\n}\n\nfunction PageItem({ value }: { value: number | string }) {\n 'use memo'\n const {\n page,\n size,\n isLinkMode,\n makeUrl,\n LinkComponent,\n makeClickHandler,\n linkProps,\n } = usePaginationContext()\n const pageItemClassName = useClassNames(\n 'charcoal-pagination-button',\n linkProps?.className,\n )\n\n // 省略記号\n if (value === '...') {\n return (\n <IconButton\n icon=\"24/Dot\"\n size={size}\n disabled\n className=\"charcoal-pagination-spacer\"\n aria-hidden\n />\n )\n }\n // 現在ページ(クリック不可)\n if (value === page) {\n return (\n <span className=\"charcoal-pagination-button\" aria-current=\"page\">\n {value}\n </span>\n )\n }\n if (typeof value !== 'number') return null\n // リンクモード: ページへのリンク\n if (isLinkMode && makeUrl) {\n return (\n <LinkComponent\n href={makeUrl(value)}\n {...linkProps}\n className={pageItemClassName}\n >\n {value}\n </LinkComponent>\n )\n }\n // ボタンモード: クリックでページ遷移\n return (\n <button\n type=\"button\"\n className=\"charcoal-pagination-button\"\n onClick={makeClickHandler(value)}\n >\n {value}\n </button>\n )\n}\n\ninterface PaginationCommonProps {\n page: number\n pageCount: number\n pageRangeDisplayed?: PageRangeDisplayed\n size?: Size\n ariaLabelPrev?: string\n ariaLabelNext?: string\n}\n\ntype NavProps = Omit<React.ComponentPropsWithoutRef<'nav'>, 'onChange'>\n\n/**\n * Pagination component. Use either `onChange` (button mode) or `makeUrl` (link mode).\n *\n * @example\n * // Button mode - for client-side state\n * <Pagination page={1} pageCount={10} onChange={setPage} />\n *\n * @example\n * // Link mode - for server routing / static pages\n * <Pagination page={1} pageCount={10} makeUrl={(p) => `?page=${p}`} />\n *\n * @example\n * // Link mode with custom component (e.g. Next.js Link)\n * <Pagination page={1} pageCount={10} makeUrl={(p) => `?page=${p}`} component={Link} />\n *\n * @example\n * // Link mode with linkProps (e.g. Next.js scroll)\n * <Pagination page={1} pageCount={10} makeUrl={(p) => `?page=${p}`} component={Link} linkProps={{ scroll: 'marker' }} />\n */\nexport type PaginationProps<T extends React.ElementType = 'a'> =\n PaginationCommonProps &\n NavProps &\n (\n | {\n onChange(newPage: number): void\n makeUrl?: never\n component?: never\n linkProps?: undefined\n }\n | {\n makeUrl(page: number): string\n onChange?: never\n /**\n * The component used for link elements. Receives `href`, `className`, and `children`.\n * @default 'a'\n */\n component?: T\n /**\n * Additional props passed to all link elements (e.g. Next.js Link's scroll, prefetch).\n */\n linkProps?: Omit<\n React.ComponentPropsWithoutRef<T>,\n 'href' | 'children'\n >\n }\n )\n\nexport default function Pagination<T extends React.ElementType = 'a'>({\n page,\n pageCount,\n pageRangeDisplayed,\n size = 'M',\n onChange,\n makeUrl,\n component: LinkComponent = 'a' as T,\n linkProps,\n className,\n ariaLabelNext = 'Next',\n ariaLabelPrev = 'Previous',\n ...navProps\n}: PaginationProps<T>) {\n 'use memo'\n const window = usePaginationWindow(page, pageCount, pageRangeDisplayed)\n const isLinkMode = makeUrl !== undefined\n const makeClickHandler = (value: number) => () => onChange?.(value)\n const classNames = useClassNames('charcoal-pagination', className)\n\n const contextValue = {\n page,\n pageCount,\n size,\n isLinkMode,\n makeUrl,\n LinkComponent,\n makeClickHandler,\n linkProps,\n }\n\n return (\n <PaginationContext.Provider\n value={\n contextValue as PaginationContextValue<\n React.ElementType<LinkComponentProps>\n >\n }\n >\n <nav\n data-size={size}\n aria-label=\"Pagination\"\n {...navProps}\n className={classNames}\n >\n <NavButton direction=\"prev\" ariaLabel={ariaLabelPrev} />\n {window.map((p) => (\n <PageItem key={p} value={p} />\n ))}\n <NavButton direction=\"next\" ariaLabel={ariaLabelNext} />\n </nav>\n </PaginationContext.Provider>\n )\n}\n"],"mappings":"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"}
|