@dnanpm/ui-components 0.8.0 → 0.10.0
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/README.md +13 -0
- package/dist/components/Accordion/Accordion.css +9 -2
- package/dist/components/AccordionItem/AccordionItem.cjs +4 -4
- package/dist/components/AccordionItem/AccordionItem.cjs.map +1 -1
- package/dist/components/AccordionItem/AccordionItem.css +8 -2
- package/dist/components/AccordionItem/AccordionItem.d.ts.map +1 -1
- package/dist/components/AccordionItem/AccordionItem.js +2 -2
- package/dist/components/AccordionItem/AccordionItem.js.map +1 -1
- package/dist/components/Avatar/Avatar.cjs +83 -0
- package/dist/components/Avatar/Avatar.cjs.map +1 -0
- package/dist/components/Avatar/Avatar.css +188 -0
- package/dist/components/Avatar/Avatar.d.ts +3 -0
- package/dist/components/Avatar/Avatar.d.ts.map +1 -0
- package/dist/components/Avatar/Avatar.js +83 -0
- package/dist/components/Avatar/Avatar.js.map +1 -0
- package/dist/components/Avatar/Avatar.module.css.cjs +40 -0
- package/dist/components/Avatar/Avatar.module.css.cjs.map +1 -0
- package/dist/components/Avatar/Avatar.module.css.js +40 -0
- package/dist/components/Avatar/Avatar.module.css.js.map +1 -0
- package/dist/components/Avatar/Avatar.types.d.ts +66 -0
- package/dist/components/Avatar/Avatar.types.d.ts.map +1 -0
- package/dist/components/Avatar/Avatar.utils.cjs +17 -0
- package/dist/components/Avatar/Avatar.utils.cjs.map +1 -0
- package/dist/components/Avatar/Avatar.utils.d.ts +6 -0
- package/dist/components/Avatar/Avatar.utils.d.ts.map +1 -0
- package/dist/components/Avatar/Avatar.utils.js +17 -0
- package/dist/components/Avatar/Avatar.utils.js.map +1 -0
- package/dist/components/Avatar/index.d.ts +3 -0
- package/dist/components/Avatar/index.d.ts.map +1 -0
- package/dist/components/Breadcrumb/Breadcrumb.cjs +9 -12
- package/dist/components/Breadcrumb/Breadcrumb.cjs.map +1 -1
- package/dist/components/Breadcrumb/Breadcrumb.css +20 -17
- package/dist/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
- package/dist/components/Breadcrumb/Breadcrumb.js +2 -5
- package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/components/Breadcrumb/Breadcrumb.module.css.cjs +5 -8
- package/dist/components/Breadcrumb/Breadcrumb.module.css.cjs.map +1 -1
- package/dist/components/Breadcrumb/Breadcrumb.module.css.js +5 -8
- package/dist/components/Breadcrumb/Breadcrumb.module.css.js.map +1 -1
- package/dist/components/Button/Button.cjs +29 -3
- package/dist/components/Button/Button.cjs.map +1 -1
- package/dist/components/Button/Button.css +76 -30
- package/dist/components/Button/Button.d.ts +1 -1
- package/dist/components/Button/Button.d.ts.map +1 -1
- package/dist/components/Button/Button.js +28 -2
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/Button/Button.module.css.cjs +19 -11
- package/dist/components/Button/Button.module.css.cjs.map +1 -1
- package/dist/components/Button/Button.module.css.js +19 -11
- package/dist/components/Button/Button.module.css.js.map +1 -1
- package/dist/components/Button/Button.types.d.ts +20 -3
- package/dist/components/Button/Button.types.d.ts.map +1 -1
- package/dist/components/Button/index.d.ts +1 -1
- package/dist/components/Button/index.d.ts.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.cjs +19 -14
- package/dist/components/ButtonCard/ButtonCard.cjs.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.css +62 -20
- package/dist/components/ButtonCard/ButtonCard.d.ts +2 -1
- package/dist/components/ButtonCard/ButtonCard.d.ts.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.js +17 -12
- package/dist/components/ButtonCard/ButtonCard.js.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.module.css.cjs +14 -12
- package/dist/components/ButtonCard/ButtonCard.module.css.cjs.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.module.css.js +14 -12
- package/dist/components/ButtonCard/ButtonCard.module.css.js.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.types.d.ts +3 -2
- package/dist/components/ButtonCard/ButtonCard.types.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.cjs +105 -0
- package/dist/components/Checkbox/Checkbox.cjs.map +1 -0
- package/dist/components/Checkbox/Checkbox.css +323 -0
- package/dist/components/Checkbox/Checkbox.d.ts +3 -0
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -0
- package/dist/components/Checkbox/Checkbox.js +105 -0
- package/dist/components/Checkbox/Checkbox.js.map +1 -0
- package/dist/components/Checkbox/Checkbox.module.css.cjs +35 -0
- package/dist/components/Checkbox/Checkbox.module.css.cjs.map +1 -0
- package/dist/components/Checkbox/Checkbox.module.css.js +35 -0
- package/dist/components/Checkbox/Checkbox.module.css.js.map +1 -0
- package/dist/components/Checkbox/Checkbox.types.d.ts +47 -0
- package/dist/components/Checkbox/Checkbox.types.d.ts.map +1 -0
- package/dist/components/Checkbox/index.d.ts +3 -0
- package/dist/components/Checkbox/index.d.ts.map +1 -0
- package/dist/components/ContentCard/ContentCard.cjs +97 -0
- package/dist/components/ContentCard/ContentCard.cjs.map +1 -0
- package/dist/components/ContentCard/ContentCard.css +254 -0
- package/dist/components/ContentCard/ContentCard.d.ts +3 -0
- package/dist/components/ContentCard/ContentCard.d.ts.map +1 -0
- package/dist/components/ContentCard/ContentCard.js +97 -0
- package/dist/components/ContentCard/ContentCard.js.map +1 -0
- package/dist/components/ContentCard/ContentCard.module.css.cjs +24 -0
- package/dist/components/ContentCard/ContentCard.module.css.cjs.map +1 -0
- package/dist/components/ContentCard/ContentCard.module.css.js +25 -0
- package/dist/components/ContentCard/ContentCard.module.css.js.map +1 -0
- package/dist/components/ContentCard/ContentCard.types.d.ts +100 -0
- package/dist/components/ContentCard/ContentCard.types.d.ts.map +1 -0
- package/dist/components/ContentCard/index.d.ts +3 -0
- package/dist/components/ContentCard/index.d.ts.map +1 -0
- package/dist/components/Drawer/Drawer.cjs +15 -7
- package/dist/components/Drawer/Drawer.cjs.map +1 -1
- package/dist/components/Drawer/Drawer.css +47 -45
- package/dist/components/Drawer/Drawer.d.ts.map +1 -1
- package/dist/components/Drawer/Drawer.js +12 -4
- package/dist/components/Drawer/Drawer.js.map +1 -1
- package/dist/components/Drawer/Drawer.module.css.cjs +16 -16
- package/dist/components/Drawer/Drawer.module.css.js +16 -16
- package/dist/components/Footer/Footer.cjs +8 -9
- package/dist/components/Footer/Footer.cjs.map +1 -1
- package/dist/components/Footer/Footer.css +91 -84
- package/dist/components/Footer/Footer.d.ts.map +1 -1
- package/dist/components/Footer/Footer.js +1 -2
- package/dist/components/Footer/Footer.js.map +1 -1
- package/dist/components/Footer/Footer.module.css.cjs +39 -39
- package/dist/components/Footer/Footer.module.css.js +39 -39
- package/dist/components/FunctionButton/FunctionButton.cjs +2 -2
- package/dist/components/FunctionButton/FunctionButton.cjs.map +1 -1
- package/dist/components/FunctionButton/FunctionButton.css +5 -2
- package/dist/components/FunctionButton/FunctionButton.js +1 -1
- package/dist/components/FunctionButton/FunctionButton.js.map +1 -1
- package/dist/components/Hero/Hero.cjs +30 -29
- package/dist/components/Hero/Hero.cjs.map +1 -1
- package/dist/components/Hero/Hero.css +86 -74
- package/dist/components/Hero/Hero.d.ts +1 -1
- package/dist/components/Hero/Hero.d.ts.map +1 -1
- package/dist/components/Hero/Hero.js +30 -29
- package/dist/components/Hero/Hero.js.map +1 -1
- package/dist/components/Hero/Hero.module.css.cjs +20 -17
- package/dist/components/Hero/Hero.module.css.cjs.map +1 -1
- package/dist/components/Hero/Hero.module.css.js +20 -17
- package/dist/components/Hero/Hero.module.css.js.map +1 -1
- package/dist/components/Hero/Hero.types.d.ts +2 -6
- package/dist/components/Hero/Hero.types.d.ts.map +1 -1
- package/dist/components/IconButton/IconButton.cjs +3 -4
- package/dist/components/IconButton/IconButton.cjs.map +1 -1
- package/dist/components/IconButton/IconButton.css +5 -2
- package/dist/components/IconButton/IconButton.d.ts.map +1 -1
- package/dist/components/IconButton/IconButton.js +1 -2
- package/dist/components/IconButton/IconButton.js.map +1 -1
- package/dist/components/Label/Label.css +5 -2
- package/dist/components/MainNavigation/MainNavigation.cjs +556 -191
- package/dist/components/MainNavigation/MainNavigation.cjs.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.css +297 -170
- package/dist/components/MainNavigation/MainNavigation.d.ts +1 -1
- package/dist/components/MainNavigation/MainNavigation.d.ts.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.js +526 -161
- package/dist/components/MainNavigation/MainNavigation.js.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.module.css.cjs +80 -68
- package/dist/components/MainNavigation/MainNavigation.module.css.cjs.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.module.css.js +80 -68
- package/dist/components/MainNavigation/MainNavigation.module.css.js.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.types.d.ts +55 -21
- package/dist/components/MainNavigation/MainNavigation.types.d.ts.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.utils.cjs +28 -4
- package/dist/components/MainNavigation/MainNavigation.utils.cjs.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.utils.d.ts +11 -1
- package/dist/components/MainNavigation/MainNavigation.utils.d.ts.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.utils.js +28 -4
- package/dist/components/MainNavigation/MainNavigation.utils.js.map +1 -1
- package/dist/components/MainNavigation/index.d.ts +1 -1
- package/dist/components/MainNavigation/index.d.ts.map +1 -1
- package/dist/components/Modal/Modal.cjs +14 -6
- package/dist/components/Modal/Modal.cjs.map +1 -1
- package/dist/components/Modal/Modal.css +43 -40
- package/dist/components/Modal/Modal.d.ts.map +1 -1
- package/dist/components/Modal/Modal.js +12 -4
- package/dist/components/Modal/Modal.js.map +1 -1
- package/dist/components/Modal/Modal.module.css.cjs +18 -18
- package/dist/components/Modal/Modal.module.css.js +18 -18
- package/dist/components/Notification/Notification.cjs +3 -2
- package/dist/components/Notification/Notification.cjs.map +1 -1
- package/dist/components/Notification/Notification.css +20 -12
- package/dist/components/Notification/Notification.d.ts.map +1 -1
- package/dist/components/Notification/Notification.js +2 -1
- package/dist/components/Notification/Notification.js.map +1 -1
- package/dist/components/Notification/Notification.module.css.cjs +9 -9
- package/dist/components/Notification/Notification.module.css.js +9 -9
- package/dist/components/Pagination/Pagination.cjs +142 -0
- package/dist/components/Pagination/Pagination.cjs.map +1 -0
- package/dist/components/Pagination/Pagination.css +256 -0
- package/dist/components/Pagination/Pagination.d.ts +3 -0
- package/dist/components/Pagination/Pagination.d.ts.map +1 -0
- package/dist/components/Pagination/Pagination.js +142 -0
- package/dist/components/Pagination/Pagination.js.map +1 -0
- package/dist/components/Pagination/Pagination.module.css.cjs +34 -0
- package/dist/components/Pagination/Pagination.module.css.cjs.map +1 -0
- package/dist/components/Pagination/Pagination.module.css.js +34 -0
- package/dist/components/Pagination/Pagination.module.css.js.map +1 -0
- package/dist/components/Pagination/Pagination.types.d.ts +20 -0
- package/dist/components/Pagination/Pagination.types.d.ts.map +1 -0
- package/dist/components/Pagination/Pagination.utils.cjs +76 -0
- package/dist/components/Pagination/Pagination.utils.cjs.map +1 -0
- package/dist/components/Pagination/Pagination.utils.d.ts +21 -0
- package/dist/components/Pagination/Pagination.utils.d.ts.map +1 -0
- package/dist/components/Pagination/Pagination.utils.js +76 -0
- package/dist/components/Pagination/Pagination.utils.js.map +1 -0
- package/dist/components/Pagination/index.d.ts +3 -0
- package/dist/components/Pagination/index.d.ts.map +1 -0
- package/dist/components/Pictograph/Pictograph.css +9 -2
- package/dist/components/Pictograph/PictographItem.css +9 -2
- package/dist/components/Quote/Quote.css +5 -2
- package/dist/components/Spinner/Spinner.css +9 -2
- package/dist/design-tokens/dist/tokens.cjs +5 -0
- package/dist/design-tokens/dist/tokens.cjs.map +1 -0
- package/dist/design-tokens/dist/tokens.js +5 -0
- package/dist/design-tokens/dist/tokens.js.map +1 -0
- package/dist/index.cjs +8 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +10 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/styles/utilities.css +6 -0
- package/dist/styles/utils/elevation.css +34 -26
- package/dist/styles/utils/focus.css +63 -65
- package/dist/styles/utils/index.cjs +33 -0
- package/dist/styles/utils/index.cjs.map +1 -0
- package/dist/styles/utils/index.d.ts +20 -0
- package/dist/styles/utils/index.d.ts.map +1 -0
- package/dist/styles/utils/index.js +33 -0
- package/dist/styles/utils/index.js.map +1 -0
- package/dist/styles/utils/overlay.css +35 -28
- package/dist/styles/utils/text-decoration.css +19 -12
- package/dist/styles.css +46 -12
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/isRenderable/index.d.ts +2 -0
- package/dist/utils/isRenderable/index.d.ts.map +1 -0
- package/dist/utils/isRenderable/isRenderable.cjs +5 -0
- package/dist/utils/isRenderable/isRenderable.cjs.map +1 -0
- package/dist/utils/isRenderable/isRenderable.d.ts +4 -0
- package/dist/utils/isRenderable/isRenderable.d.ts.map +1 -0
- package/dist/utils/isRenderable/isRenderable.js +5 -0
- package/dist/utils/isRenderable/isRenderable.js.map +1 -0
- package/package.json +12 -4
- package/dist/styles/utils/elevation.module.css.cjs +0 -16
- package/dist/styles/utils/elevation.module.css.cjs.map +0 -1
- package/dist/styles/utils/elevation.module.css.js +0 -16
- package/dist/styles/utils/elevation.module.css.js.map +0 -1
- package/dist/styles/utils/focus.module.css.cjs +0 -16
- package/dist/styles/utils/focus.module.css.cjs.map +0 -1
- package/dist/styles/utils/focus.module.css.js +0 -16
- package/dist/styles/utils/focus.module.css.js.map +0 -1
- package/dist/styles/utils/overlay.module.css.cjs +0 -13
- package/dist/styles/utils/overlay.module.css.cjs.map +0 -1
- package/dist/styles/utils/overlay.module.css.js +0 -13
- package/dist/styles/utils/overlay.module.css.js.map +0 -1
- package/dist/styles/utils/text-decoration.module.css.cjs +0 -13
- package/dist/styles/utils/text-decoration.module.css.cjs.map +0 -1
- package/dist/styles/utils/text-decoration.module.css.js +0 -13
- package/dist/styles/utils/text-decoration.module.css.js.map +0 -1
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
@layer dds-base, dds-components;@layer dds-components { @layer fallback, components; }@layer dds-components.components{._pagination_1w4hz_1 {
|
|
2
|
+
container: pagination / inline-size;
|
|
3
|
+
width: 100%;
|
|
4
|
+
min-width: 0;
|
|
5
|
+
font: var(--typography-label-lg);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
._pagination__list_1w4hz_8 {
|
|
9
|
+
--_pagination-3: flex;
|
|
10
|
+
--_pagination-cell: var(--spacing-space-40);
|
|
11
|
+
|
|
12
|
+
display: flex;
|
|
13
|
+
flex-wrap: wrap;
|
|
14
|
+
align-items: center;
|
|
15
|
+
gap: var(--spacing-space-8);
|
|
16
|
+
margin: 0;
|
|
17
|
+
padding: 0;
|
|
18
|
+
list-style: none;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
._pagination__list--wide_1w4hz_21 {
|
|
22
|
+
--_pagination-cell: var(--spacing-space-64);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
._pagination__list--arrows_1w4hz_25 {
|
|
26
|
+
--_pagination-3: initial;
|
|
27
|
+
|
|
28
|
+
flex-wrap: nowrap;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
._pagination__item_1w4hz_31,
|
|
32
|
+
._pagination__arrow_1w4hz_32 {
|
|
33
|
+
flex: 0 0 auto;
|
|
34
|
+
margin: 0;
|
|
35
|
+
padding: 0;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
._pagination__item_1w4hz_31 {
|
|
39
|
+
display: var(
|
|
40
|
+
--_pagination-member-3,
|
|
41
|
+
var(--_pagination-member-5, var(--_pagination-member-7, var(--_pagination-member-9, none)))
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
._pagination__item--3_1w4hz_45 {
|
|
46
|
+
--_pagination-member-3: var(--_pagination-3);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
._pagination__item--5_1w4hz_49 {
|
|
50
|
+
--_pagination-member-5: var(--_pagination-5);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
._pagination__item--7_1w4hz_53 {
|
|
54
|
+
--_pagination-member-7: var(--_pagination-7);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
._pagination__item--9_1w4hz_57 {
|
|
58
|
+
--_pagination-member-9: var(--_pagination-9);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/* Each query budget reserves one extra cell for a number focused before a resize. */
|
|
62
|
+
._pagination__item_1w4hz_31:focus-within,
|
|
63
|
+
._pagination__item--current_1w4hz_63 {
|
|
64
|
+
display: flex;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
._pagination__button_1w4hz_67,
|
|
68
|
+
._pagination__gap_1w4hz_68 {
|
|
69
|
+
box-sizing: border-box;
|
|
70
|
+
display: inline-flex;
|
|
71
|
+
flex: 0 0 auto;
|
|
72
|
+
align-items: center;
|
|
73
|
+
justify-content: center;
|
|
74
|
+
min-width: var(--_pagination-cell);
|
|
75
|
+
min-height: var(--spacing-space-40);
|
|
76
|
+
font: inherit;
|
|
77
|
+
font-variant-numeric: tabular-nums;
|
|
78
|
+
white-space: nowrap;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
._pagination__button_1w4hz_67 {
|
|
82
|
+
appearance: none;
|
|
83
|
+
padding: var(--spacing-space-8);
|
|
84
|
+
border: var(--borderwidth-semantic-xs) solid var(--color-semantic-border-neutral-mid);
|
|
85
|
+
border-radius: var(--radius-semantic-sm);
|
|
86
|
+
background: var(--color-semantic-surface-base);
|
|
87
|
+
color: var(--color-semantic-foreground-default);
|
|
88
|
+
cursor: pointer;
|
|
89
|
+
|
|
90
|
+
&:hover,
|
|
91
|
+
&:focus-visible {
|
|
92
|
+
background: var(--color-semantic-surface-neutral-mid);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
&[aria-current='page'] {
|
|
96
|
+
border-color: transparent;
|
|
97
|
+
background: var(--color-semantic-interactive-primary-default);
|
|
98
|
+
color: var(--color-semantic-foreground-inverse);
|
|
99
|
+
|
|
100
|
+
&:hover,
|
|
101
|
+
&:focus-visible,
|
|
102
|
+
&:active {
|
|
103
|
+
background: var(--color-semantic-interactive-primary-hover);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
&:disabled {
|
|
108
|
+
background: var(--color-semantic-interactive-neutral-disabled);
|
|
109
|
+
color: var(--color-semantic-foreground-muted);
|
|
110
|
+
cursor: default;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
& > svg {
|
|
114
|
+
width: var(--spacing-space-16);
|
|
115
|
+
height: var(--spacing-space-16);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
._pagination__arrow_1w4hz_32 ._pagination__button_1w4hz_67 {
|
|
120
|
+
min-width: var(--spacing-space-40);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
._pagination__gap_1w4hz_68 {
|
|
124
|
+
color: var(--color-semantic-foreground-default);
|
|
125
|
+
|
|
126
|
+
& > svg {
|
|
127
|
+
width: var(--spacing-space-16);
|
|
128
|
+
height: var(--spacing-space-16);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
@scope ([data-color-scheme='dark']) to ([data-color-scheme='light']) {
|
|
133
|
+
._pagination__gap_1w4hz_68 {
|
|
134
|
+
color: var(--color-semantic-foreground-inverse);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/* Thresholds include 8px gaps, 8px focus clearance, arrows, and one spare page cell. */
|
|
139
|
+
@container pagination (width >= 17.5em) {
|
|
140
|
+
._pagination__list--normal_1w4hz_140._pagination__list--arrows_1w4hz_25 {
|
|
141
|
+
--_pagination-3: flex;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
@container pagination (width >= 18em) {
|
|
146
|
+
._pagination__list--normal_1w4hz_140:not(._pagination__list--arrows_1w4hz_25) {
|
|
147
|
+
--_pagination-3: initial;
|
|
148
|
+
--_pagination-5: flex;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
@container pagination (width >= 23.5em) {
|
|
153
|
+
._pagination__list--wide_1w4hz_21._pagination__list--arrows_1w4hz_25 {
|
|
154
|
+
--_pagination-3: flex;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
@container pagination (width >= 24em) {
|
|
159
|
+
._pagination__list--normal_1w4hz_140._pagination__list--arrows_1w4hz_25 {
|
|
160
|
+
--_pagination-3: initial;
|
|
161
|
+
--_pagination-5: flex;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
._pagination__list--normal_1w4hz_140:not(._pagination__list--arrows_1w4hz_25) {
|
|
165
|
+
--_pagination-5: initial;
|
|
166
|
+
--_pagination-7: flex;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
@container pagination (width >= 27em) {
|
|
171
|
+
._pagination__list--wide_1w4hz_21:not(._pagination__list--arrows_1w4hz_25) {
|
|
172
|
+
--_pagination-3: initial;
|
|
173
|
+
--_pagination-5: flex;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
@container pagination (width >= 30em) {
|
|
178
|
+
._pagination__list--normal_1w4hz_140._pagination__list--arrows_1w4hz_25 {
|
|
179
|
+
--_pagination-5: initial;
|
|
180
|
+
--_pagination-7: flex;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
._pagination__list--normal_1w4hz_140:not(._pagination__list--arrows_1w4hz_25) {
|
|
184
|
+
--_pagination-7: initial;
|
|
185
|
+
--_pagination-9: flex;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
@container pagination (width >= 33em) {
|
|
190
|
+
._pagination__list--wide_1w4hz_21._pagination__list--arrows_1w4hz_25 {
|
|
191
|
+
--_pagination-3: initial;
|
|
192
|
+
--_pagination-5: flex;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
@container pagination (width >= 36em) {
|
|
197
|
+
._pagination__list--normal_1w4hz_140._pagination__list--arrows_1w4hz_25 {
|
|
198
|
+
--_pagination-7: initial;
|
|
199
|
+
--_pagination-9: flex;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
._pagination__list--wide_1w4hz_21:not(._pagination__list--arrows_1w4hz_25) {
|
|
203
|
+
--_pagination-5: initial;
|
|
204
|
+
--_pagination-7: flex;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
@container pagination (width >= 42em) {
|
|
209
|
+
._pagination__list--wide_1w4hz_21._pagination__list--arrows_1w4hz_25 {
|
|
210
|
+
--_pagination-5: initial;
|
|
211
|
+
--_pagination-7: flex;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
@container pagination (width >= 45em) {
|
|
216
|
+
._pagination__list--wide_1w4hz_21:not(._pagination__list--arrows_1w4hz_25) {
|
|
217
|
+
--_pagination-7: initial;
|
|
218
|
+
--_pagination-9: flex;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
@container pagination (width >= 51em) {
|
|
223
|
+
._pagination__list--wide_1w4hz_21._pagination__list--arrows_1w4hz_25 {
|
|
224
|
+
--_pagination-7: initial;
|
|
225
|
+
--_pagination-9: flex;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
._pagination__sr-only_1w4hz_229 {
|
|
230
|
+
position: absolute;
|
|
231
|
+
width: 1px;
|
|
232
|
+
height: 1px;
|
|
233
|
+
padding: 0;
|
|
234
|
+
margin: -1px;
|
|
235
|
+
overflow: hidden;
|
|
236
|
+
white-space: nowrap;
|
|
237
|
+
border: 0;
|
|
238
|
+
clip: rect(0, 0, 0, 0);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
@media (forced-colors: active) {
|
|
242
|
+
._pagination__button_1w4hz_67[aria-current='page'] {
|
|
243
|
+
border-color: Highlight;
|
|
244
|
+
background: Highlight;
|
|
245
|
+
color: HighlightText;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
._pagination__button_1w4hz_67:disabled {
|
|
249
|
+
border-color: GrayText;
|
|
250
|
+
color: GrayText;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* Do not edit directly, this file was auto-generated.
|
|
256
|
+
*/ }
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { PaginationProps } from './Pagination.types';
|
|
2
|
+
export declare const Pagination: ({ currentPage, totalPages, onPageChange, showPreviousNext, previousPageLabel, nextPageLabel, formatPageLabel, formatPageAnnouncement, className, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, onFocusCapture, onBlurCapture, ref, ...props }: PaginationProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
3
|
+
//# sourceMappingURL=Pagination.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../src/components/Pagination/Pagination.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAO1D,eAAO,MAAM,UAAU,GAAI,6PAgBxB,eAAe,mDAoIjB,CAAC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { ChevronLeftFilled, MoreFilled, ChevronRightFilled } from "@dnanpm/icons";
|
|
3
|
+
import { useRef, useState, useLayoutEffect } from "react";
|
|
4
|
+
import { focusStyles } from "../../styles/utils/index.js";
|
|
5
|
+
import { validatePages, getPageCandidates, getPageWidth } from "./Pagination.utils.js";
|
|
6
|
+
import styles from "./Pagination.module.css.js";
|
|
7
|
+
import { cn } from "../../utils/cn/cn.js";
|
|
8
|
+
const defaultPageLabel = (page) => `Sivu ${page}`;
|
|
9
|
+
const defaultAnnouncement = (page, total) => `Sivu ${page} / ${total}`;
|
|
10
|
+
const Pagination = ({
|
|
11
|
+
currentPage,
|
|
12
|
+
totalPages,
|
|
13
|
+
onPageChange,
|
|
14
|
+
showPreviousNext = true,
|
|
15
|
+
previousPageLabel = "Edellinen sivu",
|
|
16
|
+
nextPageLabel = "Seuraava sivu",
|
|
17
|
+
formatPageLabel = defaultPageLabel,
|
|
18
|
+
formatPageAnnouncement = defaultAnnouncement,
|
|
19
|
+
className,
|
|
20
|
+
"aria-label": ariaLabel,
|
|
21
|
+
"aria-labelledby": ariaLabelledBy,
|
|
22
|
+
onFocusCapture,
|
|
23
|
+
onBlurCapture,
|
|
24
|
+
ref,
|
|
25
|
+
...props
|
|
26
|
+
}) => {
|
|
27
|
+
validatePages(currentPage, totalPages);
|
|
28
|
+
const currentButton = useRef(null);
|
|
29
|
+
const focusedButton = useRef(null);
|
|
30
|
+
const [announcement, setAnnouncement] = useState({
|
|
31
|
+
page: currentPage,
|
|
32
|
+
empty: totalPages === 0,
|
|
33
|
+
text: ""
|
|
34
|
+
});
|
|
35
|
+
if (announcement.page !== currentPage || announcement.empty !== (totalPages === 0)) {
|
|
36
|
+
setAnnouncement({
|
|
37
|
+
page: currentPage,
|
|
38
|
+
empty: totalPages === 0,
|
|
39
|
+
text: totalPages > 0 && !announcement.empty && announcement.page !== currentPage ? formatPageAnnouncement(currentPage, totalPages) : ""
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
useLayoutEffect(() => {
|
|
43
|
+
const focused = focusedButton.current;
|
|
44
|
+
if (focused && (!focused.isConnected || focused.disabled) && (document.activeElement === document.body || document.activeElement === focused)) {
|
|
45
|
+
currentButton.current?.focus();
|
|
46
|
+
}
|
|
47
|
+
}, [currentPage, totalPages, showPreviousNext]);
|
|
48
|
+
if (totalPages === 0) return null;
|
|
49
|
+
const requestPage = (page) => {
|
|
50
|
+
if (page !== currentPage) onPageChange(page);
|
|
51
|
+
};
|
|
52
|
+
const buttonClass = cn(styles.pagination__button, focusStyles.focusable);
|
|
53
|
+
return /* @__PURE__ */ jsxs(
|
|
54
|
+
"nav",
|
|
55
|
+
{
|
|
56
|
+
ref,
|
|
57
|
+
className: cn(styles.pagination, className),
|
|
58
|
+
"aria-label": ariaLabel ?? (ariaLabelledBy ? void 0 : "Sivutus"),
|
|
59
|
+
"aria-labelledby": ariaLabelledBy,
|
|
60
|
+
onFocusCapture: (event) => {
|
|
61
|
+
if (event.target instanceof HTMLButtonElement) focusedButton.current = event.target;
|
|
62
|
+
onFocusCapture?.(event);
|
|
63
|
+
},
|
|
64
|
+
onBlurCapture: (event) => {
|
|
65
|
+
const button = focusedButton.current;
|
|
66
|
+
const focusLeftPagination = event.relatedTarget ? !event.currentTarget.contains(event.relatedTarget) : button?.isConnected && !button.disabled;
|
|
67
|
+
if (focusLeftPagination) {
|
|
68
|
+
focusedButton.current = null;
|
|
69
|
+
}
|
|
70
|
+
onBlurCapture?.(event);
|
|
71
|
+
},
|
|
72
|
+
...props,
|
|
73
|
+
children: [
|
|
74
|
+
/* @__PURE__ */ jsxs(
|
|
75
|
+
"ul",
|
|
76
|
+
{
|
|
77
|
+
className: cn(
|
|
78
|
+
styles.pagination__list,
|
|
79
|
+
styles[`pagination__list--${getPageWidth(totalPages)}`],
|
|
80
|
+
{ [styles["pagination__list--arrows"]]: showPreviousNext }
|
|
81
|
+
),
|
|
82
|
+
children: [
|
|
83
|
+
showPreviousNext && /* @__PURE__ */ jsx("li", { className: styles.pagination__arrow, children: /* @__PURE__ */ jsx(
|
|
84
|
+
"button",
|
|
85
|
+
{
|
|
86
|
+
type: "button",
|
|
87
|
+
className: buttonClass,
|
|
88
|
+
"aria-label": previousPageLabel,
|
|
89
|
+
disabled: currentPage === 1,
|
|
90
|
+
onClick: () => requestPage(currentPage - 1),
|
|
91
|
+
children: /* @__PURE__ */ jsx(ChevronLeftFilled, { "aria-hidden": "true", size: "16" })
|
|
92
|
+
}
|
|
93
|
+
) }),
|
|
94
|
+
getPageCandidates(currentPage, totalPages).map(({ item, budgets }) => /* @__PURE__ */ jsx(
|
|
95
|
+
"li",
|
|
96
|
+
{
|
|
97
|
+
className: cn(
|
|
98
|
+
styles.pagination__item,
|
|
99
|
+
{
|
|
100
|
+
[styles["pagination__item--current"]]: item.kind === "page" && item.page === currentPage
|
|
101
|
+
},
|
|
102
|
+
budgets.map((budget) => styles[`pagination__item--${budget}`])
|
|
103
|
+
),
|
|
104
|
+
"aria-hidden": item.kind === "gap" ? true : void 0,
|
|
105
|
+
children: item.kind === "page" ? /* @__PURE__ */ jsx(
|
|
106
|
+
"button",
|
|
107
|
+
{
|
|
108
|
+
type: "button",
|
|
109
|
+
ref: item.page === currentPage ? currentButton : void 0,
|
|
110
|
+
className: buttonClass,
|
|
111
|
+
"aria-label": formatPageLabel(item.page),
|
|
112
|
+
"aria-current": item.page === currentPage ? "page" : void 0,
|
|
113
|
+
onClick: () => requestPage(item.page),
|
|
114
|
+
children: item.page
|
|
115
|
+
}
|
|
116
|
+
) : /* @__PURE__ */ jsx("span", { className: styles.pagination__gap, children: /* @__PURE__ */ jsx(MoreFilled, { "aria-hidden": "true", size: "16" }) })
|
|
117
|
+
},
|
|
118
|
+
item.key
|
|
119
|
+
)),
|
|
120
|
+
showPreviousNext && /* @__PURE__ */ jsx("li", { className: styles.pagination__arrow, children: /* @__PURE__ */ jsx(
|
|
121
|
+
"button",
|
|
122
|
+
{
|
|
123
|
+
type: "button",
|
|
124
|
+
className: buttonClass,
|
|
125
|
+
"aria-label": nextPageLabel,
|
|
126
|
+
disabled: currentPage === totalPages,
|
|
127
|
+
onClick: () => requestPage(currentPage + 1),
|
|
128
|
+
children: /* @__PURE__ */ jsx(ChevronRightFilled, { "aria-hidden": "true", size: "16" })
|
|
129
|
+
}
|
|
130
|
+
) })
|
|
131
|
+
]
|
|
132
|
+
}
|
|
133
|
+
),
|
|
134
|
+
/* @__PURE__ */ jsx("span", { className: styles["pagination__sr-only"], "aria-live": "polite", "aria-atomic": "true", children: announcement.text })
|
|
135
|
+
]
|
|
136
|
+
}
|
|
137
|
+
);
|
|
138
|
+
};
|
|
139
|
+
export {
|
|
140
|
+
Pagination
|
|
141
|
+
};
|
|
142
|
+
//# sourceMappingURL=Pagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pagination.js","sources":["../../../src/components/Pagination/Pagination.tsx"],"sourcesContent":["import { ChevronLeftFilled, ChevronRightFilled, MoreFilled } from '@dnanpm/icons';\nimport { useLayoutEffect, useRef, useState } from 'react';\nimport { cn } from '../../utils/cn';\nimport { focusStyles } from '../../styles/utils';\nimport type { PaginationProps } from './Pagination.types';\nimport { getPageCandidates, getPageWidth, validatePages } from './Pagination.utils';\nimport styles from './Pagination.module.css';\n\nconst defaultPageLabel = (page: number) => `Sivu ${page}`;\nconst defaultAnnouncement = (page: number, total: number) => `Sivu ${page} / ${total}`;\n\nexport const Pagination = ({\n currentPage,\n totalPages,\n onPageChange,\n showPreviousNext = true,\n previousPageLabel = 'Edellinen sivu',\n nextPageLabel = 'Seuraava sivu',\n formatPageLabel = defaultPageLabel,\n formatPageAnnouncement = defaultAnnouncement,\n className,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n onFocusCapture,\n onBlurCapture,\n ref,\n ...props\n}: PaginationProps) => {\n validatePages(currentPage, totalPages);\n const currentButton = useRef<HTMLButtonElement>(null);\n const focusedButton = useRef<HTMLButtonElement | null>(null);\n const [announcement, setAnnouncement] = useState({\n page: currentPage,\n empty: totalPages === 0,\n text: '',\n });\n\n if (announcement.page !== currentPage || announcement.empty !== (totalPages === 0)) {\n setAnnouncement({\n page: currentPage,\n empty: totalPages === 0,\n text:\n totalPages > 0 && !announcement.empty && announcement.page !== currentPage\n ? formatPageAnnouncement(currentPage, totalPages)\n : '',\n });\n }\n\n useLayoutEffect(() => {\n const focused = focusedButton.current;\n if (\n focused &&\n (!focused.isConnected || focused.disabled) &&\n (document.activeElement === document.body || document.activeElement === focused)\n ) {\n currentButton.current?.focus();\n }\n }, [currentPage, totalPages, showPreviousNext]);\n\n if (totalPages === 0) return null;\n\n const requestPage = (page: number) => {\n if (page !== currentPage) onPageChange(page);\n };\n const buttonClass = cn(styles.pagination__button, focusStyles.focusable);\n\n return (\n <nav\n ref={ref}\n className={cn(styles.pagination, className)}\n aria-label={ariaLabel ?? (ariaLabelledBy ? undefined : 'Sivutus')}\n aria-labelledby={ariaLabelledBy}\n onFocusCapture={(event) => {\n if (event.target instanceof HTMLButtonElement) focusedButton.current = event.target;\n onFocusCapture?.(event);\n }}\n onBlurCapture={(event) => {\n const button = focusedButton.current;\n const focusLeftPagination = event.relatedTarget\n ? !event.currentTarget.contains(event.relatedTarget)\n : button?.isConnected && !button.disabled;\n\n if (focusLeftPagination) {\n focusedButton.current = null;\n }\n onBlurCapture?.(event);\n }}\n {...props}\n >\n <ul\n className={cn(\n styles.pagination__list,\n styles[`pagination__list--${getPageWidth(totalPages)}`],\n { [styles['pagination__list--arrows']]: showPreviousNext },\n )}\n >\n {showPreviousNext && (\n <li className={styles.pagination__arrow}>\n <button\n type=\"button\"\n className={buttonClass}\n aria-label={previousPageLabel}\n disabled={currentPage === 1}\n onClick={() => requestPage(currentPage - 1)}\n >\n <ChevronLeftFilled aria-hidden=\"true\" size=\"16\" />\n </button>\n </li>\n )}\n {getPageCandidates(currentPage, totalPages).map(({ item, budgets }) => (\n <li\n key={item.key}\n className={cn(\n styles.pagination__item,\n {\n [styles['pagination__item--current']]:\n item.kind === 'page' && item.page === currentPage,\n },\n budgets.map((budget) => styles[`pagination__item--${budget}`]),\n )}\n aria-hidden={item.kind === 'gap' ? true : undefined}\n >\n {item.kind === 'page' ? (\n <button\n type=\"button\"\n ref={item.page === currentPage ? currentButton : undefined}\n className={buttonClass}\n aria-label={formatPageLabel(item.page)}\n aria-current={item.page === currentPage ? 'page' : undefined}\n onClick={() => requestPage(item.page)}\n >\n {item.page}\n </button>\n ) : (\n <span className={styles.pagination__gap}>\n <MoreFilled aria-hidden=\"true\" size=\"16\" />\n </span>\n )}\n </li>\n ))}\n {showPreviousNext && (\n <li className={styles.pagination__arrow}>\n <button\n type=\"button\"\n className={buttonClass}\n aria-label={nextPageLabel}\n disabled={currentPage === totalPages}\n onClick={() => requestPage(currentPage + 1)}\n >\n <ChevronRightFilled aria-hidden=\"true\" size=\"16\" />\n </button>\n </li>\n )}\n </ul>\n <span className={styles['pagination__sr-only']} aria-live=\"polite\" aria-atomic=\"true\">\n {announcement.text}\n </span>\n </nav>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require('./Pagination.css');
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
4
|
+
const pagination = "_pagination_1w4hz_1";
|
|
5
|
+
const pagination__list = "_pagination__list_1w4hz_8";
|
|
6
|
+
const pagination__item = "_pagination__item_1w4hz_31";
|
|
7
|
+
const pagination__arrow = "_pagination__arrow_1w4hz_32";
|
|
8
|
+
const pagination__button = "_pagination__button_1w4hz_67";
|
|
9
|
+
const pagination__gap = "_pagination__gap_1w4hz_68";
|
|
10
|
+
const styles = {
|
|
11
|
+
pagination,
|
|
12
|
+
pagination__list,
|
|
13
|
+
"pagination__list--wide": "_pagination__list--wide_1w4hz_21",
|
|
14
|
+
"pagination__list--arrows": "_pagination__list--arrows_1w4hz_25",
|
|
15
|
+
pagination__item,
|
|
16
|
+
pagination__arrow,
|
|
17
|
+
"pagination__item--3": "_pagination__item--3_1w4hz_45",
|
|
18
|
+
"pagination__item--5": "_pagination__item--5_1w4hz_49",
|
|
19
|
+
"pagination__item--7": "_pagination__item--7_1w4hz_53",
|
|
20
|
+
"pagination__item--9": "_pagination__item--9_1w4hz_57",
|
|
21
|
+
"pagination__item--current": "_pagination__item--current_1w4hz_63",
|
|
22
|
+
pagination__button,
|
|
23
|
+
pagination__gap,
|
|
24
|
+
"pagination__list--normal": "_pagination__list--normal_1w4hz_140",
|
|
25
|
+
"pagination__sr-only": "_pagination__sr-only_1w4hz_229"
|
|
26
|
+
};
|
|
27
|
+
exports.default = styles;
|
|
28
|
+
exports.pagination = pagination;
|
|
29
|
+
exports.pagination__arrow = pagination__arrow;
|
|
30
|
+
exports.pagination__button = pagination__button;
|
|
31
|
+
exports.pagination__gap = pagination__gap;
|
|
32
|
+
exports.pagination__item = pagination__item;
|
|
33
|
+
exports.pagination__list = pagination__list;
|
|
34
|
+
//# sourceMappingURL=Pagination.module.css.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pagination.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import './Pagination.css';
|
|
2
|
+
const pagination = "_pagination_1w4hz_1";
|
|
3
|
+
const pagination__list = "_pagination__list_1w4hz_8";
|
|
4
|
+
const pagination__item = "_pagination__item_1w4hz_31";
|
|
5
|
+
const pagination__arrow = "_pagination__arrow_1w4hz_32";
|
|
6
|
+
const pagination__button = "_pagination__button_1w4hz_67";
|
|
7
|
+
const pagination__gap = "_pagination__gap_1w4hz_68";
|
|
8
|
+
const styles = {
|
|
9
|
+
pagination,
|
|
10
|
+
pagination__list,
|
|
11
|
+
"pagination__list--wide": "_pagination__list--wide_1w4hz_21",
|
|
12
|
+
"pagination__list--arrows": "_pagination__list--arrows_1w4hz_25",
|
|
13
|
+
pagination__item,
|
|
14
|
+
pagination__arrow,
|
|
15
|
+
"pagination__item--3": "_pagination__item--3_1w4hz_45",
|
|
16
|
+
"pagination__item--5": "_pagination__item--5_1w4hz_49",
|
|
17
|
+
"pagination__item--7": "_pagination__item--7_1w4hz_53",
|
|
18
|
+
"pagination__item--9": "_pagination__item--9_1w4hz_57",
|
|
19
|
+
"pagination__item--current": "_pagination__item--current_1w4hz_63",
|
|
20
|
+
pagination__button,
|
|
21
|
+
pagination__gap,
|
|
22
|
+
"pagination__list--normal": "_pagination__list--normal_1w4hz_140",
|
|
23
|
+
"pagination__sr-only": "_pagination__sr-only_1w4hz_229"
|
|
24
|
+
};
|
|
25
|
+
export {
|
|
26
|
+
styles as default,
|
|
27
|
+
pagination,
|
|
28
|
+
pagination__arrow,
|
|
29
|
+
pagination__button,
|
|
30
|
+
pagination__gap,
|
|
31
|
+
pagination__item,
|
|
32
|
+
pagination__list
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=Pagination.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pagination.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ComponentPropsWithRef } from 'react';
|
|
2
|
+
export interface PaginationProps extends Omit<ComponentPropsWithRef<'nav'>, 'children' | 'onChange'> {
|
|
3
|
+
/** One-based current page. The application owns this value. */
|
|
4
|
+
readonly currentPage: number;
|
|
5
|
+
/** Nonnegative safe integer. Zero renders nothing. */
|
|
6
|
+
readonly totalPages: number;
|
|
7
|
+
/** Requests a different page; does not load results or update currentPage. */
|
|
8
|
+
readonly onPageChange: (page: number) => void;
|
|
9
|
+
/** Show the Previous and Next controls. @default true */
|
|
10
|
+
readonly showPreviousNext?: boolean;
|
|
11
|
+
/** Accessible name of the Previous control. @default 'Edellinen sivu' */
|
|
12
|
+
readonly previousPageLabel?: string;
|
|
13
|
+
/** Accessible name of the Next control. @default 'Seuraava sivu' */
|
|
14
|
+
readonly nextPageLabel?: string;
|
|
15
|
+
/** Accessible name of each numbered control. @default page => `Sivu ${page}` */
|
|
16
|
+
readonly formatPageLabel?: (page: number) => string;
|
|
17
|
+
/** Announcement after a controlled page change. @default (page, total) => `Sivu ${page} / ${total}` */
|
|
18
|
+
readonly formatPageAnnouncement?: (page: number, totalPages: number) => string;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=Pagination.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pagination.types.d.ts","sourceRoot":"","sources":["../../../src/components/Pagination/Pagination.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAEnD,MAAM,WAAW,eAAgB,SAAQ,IAAI,CACzC,qBAAqB,CAAC,KAAK,CAAC,EAC5B,UAAU,GAAG,UAAU,CAC1B;IACG,+DAA+D;IAC/D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,sDAAsD;IACtD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,8EAA8E;IAC9E,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,yDAAyD;IACzD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,yEAAyE;IACzE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,oEAAoE;IACpE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,gFAAgF;IAChF,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACpD,uGAAuG;IACvG,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;CAClF"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const pageBudgets = [3, 5, 7, 9];
|
|
4
|
+
const validatePages = (currentPage, totalPages) => {
|
|
5
|
+
if (!Number.isSafeInteger(totalPages) || totalPages < 0) {
|
|
6
|
+
throw new RangeError("Pagination: totalPages must be a nonnegative safe integer.");
|
|
7
|
+
}
|
|
8
|
+
if (!Number.isSafeInteger(currentPage) || currentPage < 1 || totalPages > 0 && currentPage > totalPages) {
|
|
9
|
+
throw new RangeError(
|
|
10
|
+
"Pagination: currentPage must be a positive safe integer within totalPages."
|
|
11
|
+
);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
const pageItem = (page) => ({
|
|
15
|
+
key: `page-${page}`,
|
|
16
|
+
kind: "page",
|
|
17
|
+
page
|
|
18
|
+
});
|
|
19
|
+
const getPageItems = (currentPage, totalPages, budget) => {
|
|
20
|
+
if (totalPages === 0) return [];
|
|
21
|
+
const count = Math.min(budget, totalPages);
|
|
22
|
+
if (totalPages <= budget || budget < 7) {
|
|
23
|
+
const start2 = Math.max(
|
|
24
|
+
1,
|
|
25
|
+
Math.min(currentPage - Math.floor(count / 2), totalPages - count + 1)
|
|
26
|
+
);
|
|
27
|
+
return Array.from({ length: count }, (_, index) => pageItem(start2 + index));
|
|
28
|
+
}
|
|
29
|
+
const siblings = (budget - 5) / 2;
|
|
30
|
+
const windowSize = budget - 4;
|
|
31
|
+
const start = Math.max(2, Math.min(currentPage - siblings, totalPages - windowSize));
|
|
32
|
+
const pages = [1];
|
|
33
|
+
if (currentPage <= siblings + 2) {
|
|
34
|
+
for (let page = 2; page <= budget - 2; page++) pages.push(page);
|
|
35
|
+
} else if (currentPage >= totalPages - siblings - 1) {
|
|
36
|
+
for (let offset = budget - 3; offset >= 1; offset--) pages.push(totalPages - offset);
|
|
37
|
+
} else {
|
|
38
|
+
for (let offset = 0; offset < windowSize; offset++) pages.push(start + offset);
|
|
39
|
+
}
|
|
40
|
+
pages.push(totalPages);
|
|
41
|
+
return pages.flatMap((page, index) => {
|
|
42
|
+
const previous = pages[index - 1];
|
|
43
|
+
if (previous === void 0 || page === previous + 1) return [pageItem(page)];
|
|
44
|
+
if (page === previous + 2) return [pageItem(previous + 1), pageItem(page)];
|
|
45
|
+
return [
|
|
46
|
+
{ key: `gap-${previous}-${page}`, kind: "gap", after: previous, before: page },
|
|
47
|
+
pageItem(page)
|
|
48
|
+
];
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
const getPageCandidates = (currentPage, totalPages) => {
|
|
52
|
+
const candidates = /* @__PURE__ */ new Map();
|
|
53
|
+
for (const budget of pageBudgets) {
|
|
54
|
+
for (const item of getPageItems(currentPage, totalPages, budget)) {
|
|
55
|
+
const existing = candidates.get(item.key);
|
|
56
|
+
if (existing) existing.budgets.push(budget);
|
|
57
|
+
else candidates.set(item.key, { item, budgets: [budget] });
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return [...candidates.values()].sort((a, b) => {
|
|
61
|
+
const aPosition = a.item.kind === "page" ? a.item.page : a.item.after;
|
|
62
|
+
const bPosition = b.item.kind === "page" ? b.item.page : b.item.after;
|
|
63
|
+
return aPosition - bPosition || Number(a.item.kind === "gap") - Number(b.item.kind === "gap");
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
const getPageWidth = (totalPages) => {
|
|
67
|
+
const digits = String(totalPages).length;
|
|
68
|
+
if (digits <= 2) return "normal";
|
|
69
|
+
return "wide";
|
|
70
|
+
};
|
|
71
|
+
exports.getPageCandidates = getPageCandidates;
|
|
72
|
+
exports.getPageItems = getPageItems;
|
|
73
|
+
exports.getPageWidth = getPageWidth;
|
|
74
|
+
exports.pageBudgets = pageBudgets;
|
|
75
|
+
exports.validatePages = validatePages;
|
|
76
|
+
//# sourceMappingURL=Pagination.utils.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pagination.utils.cjs","sources":["../../../src/components/Pagination/Pagination.utils.ts"],"sourcesContent":["export const pageBudgets = [3, 5, 7, 9] as const;\nexport type PageBudget = (typeof pageBudgets)[number];\n\nexport type PaginationItem =\n | { readonly key: string; readonly kind: 'page'; readonly page: number }\n | {\n readonly key: string;\n readonly kind: 'gap';\n readonly after: number;\n readonly before: number;\n };\n\nexport interface PaginationCandidate {\n readonly item: PaginationItem;\n readonly budgets: readonly PageBudget[];\n}\n\nexport const validatePages = (currentPage: number, totalPages: number) => {\n if (!Number.isSafeInteger(totalPages) || totalPages < 0) {\n throw new RangeError('Pagination: totalPages must be a nonnegative safe integer.');\n }\n if (\n !Number.isSafeInteger(currentPage) ||\n currentPage < 1 ||\n (totalPages > 0 && currentPage > totalPages)\n ) {\n throw new RangeError(\n 'Pagination: currentPage must be a positive safe integer within totalPages.',\n );\n }\n};\n\nconst pageItem = (page: number): PaginationItem => ({\n key: `page-${page}`,\n kind: 'page',\n page,\n});\n\nexport const getPageItems = (\n currentPage: number,\n totalPages: number,\n budget: PageBudget,\n): PaginationItem[] => {\n if (totalPages === 0) return [];\n\n const count = Math.min(budget, totalPages);\n if (totalPages <= budget || budget < 7) {\n const start = Math.max(\n 1,\n Math.min(currentPage - Math.floor(count / 2), totalPages - count + 1),\n );\n return Array.from({ length: count }, (_, index) => pageItem(start + index));\n }\n\n const siblings = (budget - 5) / 2;\n const windowSize = budget - 4;\n const start = Math.max(2, Math.min(currentPage - siblings, totalPages - windowSize));\n const pages = [1];\n if (currentPage <= siblings + 2) {\n for (let page = 2; page <= budget - 2; page++) pages.push(page);\n } else if (currentPage >= totalPages - siblings - 1) {\n for (let offset = budget - 3; offset >= 1; offset--) pages.push(totalPages - offset);\n } else {\n for (let offset = 0; offset < windowSize; offset++) pages.push(start + offset);\n }\n pages.push(totalPages);\n\n return pages.flatMap((page, index): PaginationItem[] => {\n const previous = pages[index - 1];\n if (previous === undefined || page === previous + 1) return [pageItem(page)];\n if (page === previous + 2) return [pageItem(previous + 1), pageItem(page)];\n return [\n { key: `gap-${previous}-${page}`, kind: 'gap', after: previous, before: page },\n pageItem(page),\n ];\n });\n};\n\nexport const getPageCandidates = (\n currentPage: number,\n totalPages: number,\n): PaginationCandidate[] => {\n const candidates = new Map<string, { item: PaginationItem; budgets: PageBudget[] }>();\n for (const budget of pageBudgets) {\n for (const item of getPageItems(currentPage, totalPages, budget)) {\n const existing = candidates.get(item.key);\n if (existing) existing.budgets.push(budget);\n else candidates.set(item.key, { item, budgets: [budget] });\n }\n }\n return [...candidates.values()].sort((a, b) => {\n const aPosition = a.item.kind === 'page' ? a.item.page : a.item.after;\n const bPosition = b.item.kind === 'page' ? b.item.page : b.item.after;\n return (\n aPosition - bPosition || Number(a.item.kind === 'gap') - Number(b.item.kind === 'gap')\n );\n });\n};\n\nexport const getPageWidth = (totalPages: number) => {\n const digits = String(totalPages).length;\n if (digits <= 2) return 'normal';\n return 'wide';\n};\n"],"names":["start"],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare const pageBudgets: readonly [3, 5, 7, 9];
|
|
2
|
+
export type PageBudget = (typeof pageBudgets)[number];
|
|
3
|
+
export type PaginationItem = {
|
|
4
|
+
readonly key: string;
|
|
5
|
+
readonly kind: 'page';
|
|
6
|
+
readonly page: number;
|
|
7
|
+
} | {
|
|
8
|
+
readonly key: string;
|
|
9
|
+
readonly kind: 'gap';
|
|
10
|
+
readonly after: number;
|
|
11
|
+
readonly before: number;
|
|
12
|
+
};
|
|
13
|
+
export interface PaginationCandidate {
|
|
14
|
+
readonly item: PaginationItem;
|
|
15
|
+
readonly budgets: readonly PageBudget[];
|
|
16
|
+
}
|
|
17
|
+
export declare const validatePages: (currentPage: number, totalPages: number) => void;
|
|
18
|
+
export declare const getPageItems: (currentPage: number, totalPages: number, budget: PageBudget) => PaginationItem[];
|
|
19
|
+
export declare const getPageCandidates: (currentPage: number, totalPages: number) => PaginationCandidate[];
|
|
20
|
+
export declare const getPageWidth: (totalPages: number) => "normal" | "wide";
|
|
21
|
+
//# sourceMappingURL=Pagination.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pagination.utils.d.ts","sourceRoot":"","sources":["../../../src/components/Pagination/Pagination.utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,uBAAwB,CAAC;AACjD,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,MAAM,MAAM,cAAc,GACpB;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACtE;IACI,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B,CAAC;AAER,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;CAC3C;AAED,eAAO,MAAM,aAAa,GAAI,aAAa,MAAM,EAAE,YAAY,MAAM,SAapE,CAAC;AAQF,eAAO,MAAM,YAAY,GACrB,aAAa,MAAM,EACnB,YAAY,MAAM,EAClB,QAAQ,UAAU,KACnB,cAAc,EAkChB,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC1B,aAAa,MAAM,EACnB,YAAY,MAAM,KACnB,mBAAmB,EAgBrB,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,YAAY,MAAM,sBAI9C,CAAC"}
|