@optimum-intelligence/opti-ui 0.0.0-stage → 0.2.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/LICENSE +23 -0
- package/README.md +161 -2
- package/dist/components/accordion/Accordion.d.ts +17 -0
- package/dist/components/accordion/Accordion.js +204 -0
- package/dist/components/accordion/Accordion.js.map +1 -0
- package/dist/components/alert/Alert.d.ts +18 -0
- package/dist/components/alert/Alert.js +164 -0
- package/dist/components/alert/Alert.js.map +1 -0
- package/dist/components/app-shell/AppShell.d.ts +97 -0
- package/dist/components/app-shell/AppShell.js +689 -0
- package/dist/components/app-shell/AppShell.js.map +1 -0
- package/dist/components/avatar/Avatar.d.ts +21 -0
- package/dist/components/avatar/Avatar.js +190 -0
- package/dist/components/avatar/Avatar.js.map +1 -0
- package/dist/components/badge/Badge.d.ts +16 -0
- package/dist/components/badge/Badge.js +94 -0
- package/dist/components/badge/Badge.js.map +1 -0
- package/dist/components/breadcrumbs/Breadcrumbs.d.ts +18 -0
- package/dist/components/breadcrumbs/Breadcrumbs.js +154 -0
- package/dist/components/breadcrumbs/Breadcrumbs.js.map +1 -0
- package/dist/components/button/Button.d.ts +23 -0
- package/dist/components/button/Button.js +159 -0
- package/dist/components/button/Button.js.map +1 -0
- package/dist/components/calendar/Calendar.d.ts +59 -0
- package/dist/components/calendar/Calendar.js +709 -0
- package/dist/components/calendar/Calendar.js.map +1 -0
- package/dist/components/calendar/date-utils.d.ts +32 -0
- package/dist/components/calendar/date-utils.js +112 -0
- package/dist/components/calendar/date-utils.js.map +1 -0
- package/dist/components/card/Card.d.ts +42 -0
- package/dist/components/card/Card.js +82 -0
- package/dist/components/card/Card.js.map +1 -0
- package/dist/components/choice/Choice.d.ts +32 -0
- package/dist/components/choice/Choice.js +371 -0
- package/dist/components/choice/Choice.js.map +1 -0
- package/dist/components/collapsible/Collapsible.d.ts +15 -0
- package/dist/components/collapsible/Collapsible.js +155 -0
- package/dist/components/collapsible/Collapsible.js.map +1 -0
- package/dist/components/combobox/Combobox.d.ts +68 -0
- package/dist/components/combobox/Combobox.js +752 -0
- package/dist/components/combobox/Combobox.js.map +1 -0
- package/dist/components/command-palette/CommandPalette.d.ts +52 -0
- package/dist/components/command-palette/CommandPalette.js +328 -0
- package/dist/components/command-palette/CommandPalette.js.map +1 -0
- package/dist/components/data-table/DataTable.d.ts +111 -0
- package/dist/components/data-table/DataTable.js +444 -0
- package/dist/components/data-table/DataTable.js.map +1 -0
- package/dist/components/date-picker/DatePicker.d.ts +50 -0
- package/dist/components/date-picker/DatePicker.js +485 -0
- package/dist/components/date-picker/DatePicker.js.map +1 -0
- package/dist/components/date-picker/DateRangePicker.d.ts +39 -0
- package/dist/components/date-picker/DateRangePicker.js +339 -0
- package/dist/components/date-picker/DateRangePicker.js.map +1 -0
- package/dist/components/date-picker/PickerField.d.ts +38 -0
- package/dist/components/date-picker/PickerField.js +238 -0
- package/dist/components/date-picker/PickerField.js.map +1 -0
- package/dist/components/dialog/Dialog.d.ts +70 -0
- package/dist/components/dialog/Dialog.js +354 -0
- package/dist/components/dialog/Dialog.js.map +1 -0
- package/dist/components/drawer/Drawer.d.ts +39 -0
- package/dist/components/drawer/Drawer.js +225 -0
- package/dist/components/drawer/Drawer.js.map +1 -0
- package/dist/components/empty-state/EmptyState.d.ts +12 -0
- package/dist/components/empty-state/EmptyState.js +116 -0
- package/dist/components/empty-state/EmptyState.js.map +1 -0
- package/dist/components/field/Field.d.ts +36 -0
- package/dist/components/field/Field.js +337 -0
- package/dist/components/field/Field.js.map +1 -0
- package/dist/components/file-upload/FileUpload.d.ts +91 -0
- package/dist/components/file-upload/FileUpload.js +714 -0
- package/dist/components/file-upload/FileUpload.js.map +1 -0
- package/dist/components/input/Input.d.ts +49 -0
- package/dist/components/input/Input.js +538 -0
- package/dist/components/input/Input.js.map +1 -0
- package/dist/components/link/Link.d.ts +17 -0
- package/dist/components/link/Link.js +91 -0
- package/dist/components/link/Link.js.map +1 -0
- package/dist/components/menu/Menu.d.ts +79 -0
- package/dist/components/menu/Menu.js +615 -0
- package/dist/components/menu/Menu.js.map +1 -0
- package/dist/components/number-field/NumberField.d.ts +16 -0
- package/dist/components/number-field/NumberField.js +188 -0
- package/dist/components/number-field/NumberField.js.map +1 -0
- package/dist/components/pagination/Pagination.d.ts +34 -0
- package/dist/components/pagination/Pagination.js +244 -0
- package/dist/components/pagination/Pagination.js.map +1 -0
- package/dist/components/popover/Popover.d.ts +22 -0
- package/dist/components/popover/Popover.js +186 -0
- package/dist/components/popover/Popover.js.map +1 -0
- package/dist/components/preview-card/PreviewCard.d.ts +20 -0
- package/dist/components/preview-card/PreviewCard.js +114 -0
- package/dist/components/preview-card/PreviewCard.js.map +1 -0
- package/dist/components/progress/Progress.d.ts +20 -0
- package/dist/components/progress/Progress.js +169 -0
- package/dist/components/progress/Progress.js.map +1 -0
- package/dist/components/scroll-area/ScrollArea.d.ts +8 -0
- package/dist/components/scroll-area/ScrollArea.js +112 -0
- package/dist/components/scroll-area/ScrollArea.js.map +1 -0
- package/dist/components/search-input/SearchInput.d.ts +14 -0
- package/dist/components/search-input/SearchInput.js +114 -0
- package/dist/components/search-input/SearchInput.js.map +1 -0
- package/dist/components/select/Select.d.ts +66 -0
- package/dist/components/select/Select.js +601 -0
- package/dist/components/select/Select.js.map +1 -0
- package/dist/components/separator/Separator.d.ts +4 -0
- package/dist/components/separator/Separator.js +46 -0
- package/dist/components/separator/Separator.js.map +1 -0
- package/dist/components/skeleton/Skeleton.d.ts +16 -0
- package/dist/components/skeleton/Skeleton.js +135 -0
- package/dist/components/skeleton/Skeleton.js.map +1 -0
- package/dist/components/slider/Slider.d.ts +11 -0
- package/dist/components/slider/Slider.js +107 -0
- package/dist/components/slider/Slider.js.map +1 -0
- package/dist/components/spinner/Spinner.d.ts +9 -0
- package/dist/components/spinner/Spinner.js +78 -0
- package/dist/components/spinner/Spinner.js.map +1 -0
- package/dist/components/stack/Stack.d.ts +23 -0
- package/dist/components/stack/Stack.js +79 -0
- package/dist/components/stack/Stack.js.map +1 -0
- package/dist/components/stat-card/StatCard.d.ts +22 -0
- package/dist/components/stat-card/StatCard.js +153 -0
- package/dist/components/stat-card/StatCard.js.map +1 -0
- package/dist/components/stepper/Stepper.d.ts +30 -0
- package/dist/components/stepper/Stepper.js +131 -0
- package/dist/components/stepper/Stepper.js.map +1 -0
- package/dist/components/table/Table.d.ts +53 -0
- package/dist/components/table/Table.js +221 -0
- package/dist/components/table/Table.js.map +1 -0
- package/dist/components/tabs/Tabs.d.ts +19 -0
- package/dist/components/tabs/Tabs.js +183 -0
- package/dist/components/tabs/Tabs.js.map +1 -0
- package/dist/components/tag/Tag.d.ts +22 -0
- package/dist/components/tag/Tag.js +121 -0
- package/dist/components/tag/Tag.js.map +1 -0
- package/dist/components/toast/Toast.d.ts +34 -0
- package/dist/components/toast/Toast.js +187 -0
- package/dist/components/toast/Toast.js.map +1 -0
- package/dist/components/toggle/Toggle.d.ts +31 -0
- package/dist/components/toggle/Toggle.js +197 -0
- package/dist/components/toggle/Toggle.js.map +1 -0
- package/dist/components/toolbar/Toolbar.d.ts +21 -0
- package/dist/components/toolbar/Toolbar.js +239 -0
- package/dist/components/toolbar/Toolbar.js.map +1 -0
- package/dist/components/tooltip/Tooltip.d.ts +33 -0
- package/dist/components/tooltip/Tooltip.js +182 -0
- package/dist/components/tooltip/Tooltip.js.map +1 -0
- package/dist/components/typography/Typography.d.ts +32 -0
- package/dist/components/typography/Typography.js +183 -0
- package/dist/components/typography/Typography.js.map +1 -0
- package/dist/fonts.css +3 -0
- package/dist/icons/index.d.ts +125 -0
- package/dist/icons/index.js +174 -0
- package/dist/icons/index.js.map +1 -0
- package/dist/index.d.ts +53 -0
- package/dist/index.js +56 -0
- package/dist/opti-ui.css +5365 -0
- package/dist/theme/ThemeProvider.d.ts +22 -0
- package/dist/theme/ThemeProvider.js +115 -0
- package/dist/theme/ThemeProvider.js.map +1 -0
- package/dist/theme/index.d.ts +2 -0
- package/dist/utils/cx.d.ts +10 -0
- package/dist/utils/cx.js +18 -0
- package/dist/utils/cx.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/portal.d.ts +8 -0
- package/dist/utils/portal.js +16 -0
- package/dist/utils/portal.js.map +1 -0
- package/dist/utils/primitive.d.ts +13 -0
- package/dist/utils/primitive.js +61 -0
- package/dist/utils/primitive.js.map +1 -0
- package/dist/utils/search.d.ts +4 -0
- package/dist/utils/search.js +15 -0
- package/dist/utils/search.js.map +1 -0
- package/package.json +71 -4
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { withClass } from "../../utils/cx.js";
|
|
3
|
+
import { MinusIcon, PlusIcon } from "../../icons/index.js";
|
|
4
|
+
import { Field } from "../field/Field.js";
|
|
5
|
+
import { c } from "react/compiler-runtime";
|
|
6
|
+
import "react";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
import { NumberField } from "@base-ui/react/number-field";
|
|
9
|
+
//#region src/components/number-field/NumberField.tsx
|
|
10
|
+
/** Numeric input with stepper buttons, locale formatting and keyboard stepping. */
|
|
11
|
+
function NumberField$1(t0) {
|
|
12
|
+
const $ = c(52);
|
|
13
|
+
let className;
|
|
14
|
+
let description;
|
|
15
|
+
let disabled;
|
|
16
|
+
let error;
|
|
17
|
+
let hideStepper;
|
|
18
|
+
let label;
|
|
19
|
+
let name;
|
|
20
|
+
let placeholder;
|
|
21
|
+
let props;
|
|
22
|
+
let ref;
|
|
23
|
+
let required;
|
|
24
|
+
let t1;
|
|
25
|
+
let t2;
|
|
26
|
+
let t3;
|
|
27
|
+
if ($[0] !== t0) {
|
|
28
|
+
({label, description, error, size: t1, placeholder, hideStepper, decrementLabel: t2, incrementLabel: t3, className, name, disabled, required, ref, ...props} = t0);
|
|
29
|
+
$[0] = t0;
|
|
30
|
+
$[1] = className;
|
|
31
|
+
$[2] = description;
|
|
32
|
+
$[3] = disabled;
|
|
33
|
+
$[4] = error;
|
|
34
|
+
$[5] = hideStepper;
|
|
35
|
+
$[6] = label;
|
|
36
|
+
$[7] = name;
|
|
37
|
+
$[8] = placeholder;
|
|
38
|
+
$[9] = props;
|
|
39
|
+
$[10] = ref;
|
|
40
|
+
$[11] = required;
|
|
41
|
+
$[12] = t1;
|
|
42
|
+
$[13] = t2;
|
|
43
|
+
$[14] = t3;
|
|
44
|
+
} else {
|
|
45
|
+
className = $[1];
|
|
46
|
+
description = $[2];
|
|
47
|
+
disabled = $[3];
|
|
48
|
+
error = $[4];
|
|
49
|
+
hideStepper = $[5];
|
|
50
|
+
label = $[6];
|
|
51
|
+
name = $[7];
|
|
52
|
+
placeholder = $[8];
|
|
53
|
+
props = $[9];
|
|
54
|
+
ref = $[10];
|
|
55
|
+
required = $[11];
|
|
56
|
+
t1 = $[12];
|
|
57
|
+
t2 = $[13];
|
|
58
|
+
t3 = $[14];
|
|
59
|
+
}
|
|
60
|
+
const size = t1 === void 0 ? "md" : t1;
|
|
61
|
+
const decrementLabel = t2 === void 0 ? "Decrease" : t2;
|
|
62
|
+
const incrementLabel = t3 === void 0 ? "Increase" : t3;
|
|
63
|
+
const t4 = error ? true : void 0;
|
|
64
|
+
let t5;
|
|
65
|
+
if ($[15] !== label || $[16] !== required) {
|
|
66
|
+
t5 = label && /* @__PURE__ */ jsx(Field.Label, {
|
|
67
|
+
required,
|
|
68
|
+
children: label
|
|
69
|
+
});
|
|
70
|
+
$[15] = label;
|
|
71
|
+
$[16] = required;
|
|
72
|
+
$[17] = t5;
|
|
73
|
+
} else t5 = $[17];
|
|
74
|
+
let t6;
|
|
75
|
+
if ($[18] !== className) {
|
|
76
|
+
t6 = withClass("oui-number-field", className);
|
|
77
|
+
$[18] = className;
|
|
78
|
+
$[19] = t6;
|
|
79
|
+
} else t6 = $[19];
|
|
80
|
+
let t7;
|
|
81
|
+
if ($[20] !== decrementLabel || $[21] !== hideStepper) {
|
|
82
|
+
t7 = !hideStepper && /* @__PURE__ */ jsx(NumberField.Decrement, {
|
|
83
|
+
className: "oui-number-field__step",
|
|
84
|
+
"aria-label": decrementLabel,
|
|
85
|
+
children: /* @__PURE__ */ jsx(MinusIcon, {})
|
|
86
|
+
});
|
|
87
|
+
$[20] = decrementLabel;
|
|
88
|
+
$[21] = hideStepper;
|
|
89
|
+
$[22] = t7;
|
|
90
|
+
} else t7 = $[22];
|
|
91
|
+
let t8;
|
|
92
|
+
if ($[23] !== placeholder) {
|
|
93
|
+
t8 = /* @__PURE__ */ jsx(NumberField.Input, {
|
|
94
|
+
className: "oui-number-field__input",
|
|
95
|
+
placeholder
|
|
96
|
+
});
|
|
97
|
+
$[23] = placeholder;
|
|
98
|
+
$[24] = t8;
|
|
99
|
+
} else t8 = $[24];
|
|
100
|
+
let t9;
|
|
101
|
+
if ($[25] !== hideStepper || $[26] !== incrementLabel) {
|
|
102
|
+
t9 = !hideStepper && /* @__PURE__ */ jsx(NumberField.Increment, {
|
|
103
|
+
className: "oui-number-field__step",
|
|
104
|
+
"aria-label": incrementLabel,
|
|
105
|
+
children: /* @__PURE__ */ jsx(PlusIcon, {})
|
|
106
|
+
});
|
|
107
|
+
$[25] = hideStepper;
|
|
108
|
+
$[26] = incrementLabel;
|
|
109
|
+
$[27] = t9;
|
|
110
|
+
} else t9 = $[27];
|
|
111
|
+
let t10;
|
|
112
|
+
if ($[28] !== size || $[29] !== t7 || $[30] !== t8 || $[31] !== t9) {
|
|
113
|
+
t10 = /* @__PURE__ */ jsxs(NumberField.Group, {
|
|
114
|
+
className: "oui-number-field__group",
|
|
115
|
+
"data-size": size,
|
|
116
|
+
children: [
|
|
117
|
+
t7,
|
|
118
|
+
t8,
|
|
119
|
+
t9
|
|
120
|
+
]
|
|
121
|
+
});
|
|
122
|
+
$[28] = size;
|
|
123
|
+
$[29] = t7;
|
|
124
|
+
$[30] = t8;
|
|
125
|
+
$[31] = t9;
|
|
126
|
+
$[32] = t10;
|
|
127
|
+
} else t10 = $[32];
|
|
128
|
+
let t11;
|
|
129
|
+
if ($[33] !== disabled || $[34] !== props || $[35] !== ref || $[36] !== required || $[37] !== t10 || $[38] !== t6) {
|
|
130
|
+
t11 = /* @__PURE__ */ jsx(NumberField.Root, {
|
|
131
|
+
ref,
|
|
132
|
+
className: t6,
|
|
133
|
+
disabled,
|
|
134
|
+
required,
|
|
135
|
+
...props,
|
|
136
|
+
children: t10
|
|
137
|
+
});
|
|
138
|
+
$[33] = disabled;
|
|
139
|
+
$[34] = props;
|
|
140
|
+
$[35] = ref;
|
|
141
|
+
$[36] = required;
|
|
142
|
+
$[37] = t10;
|
|
143
|
+
$[38] = t6;
|
|
144
|
+
$[39] = t11;
|
|
145
|
+
} else t11 = $[39];
|
|
146
|
+
let t12;
|
|
147
|
+
if ($[40] !== description) {
|
|
148
|
+
t12 = description && /* @__PURE__ */ jsx(Field.Description, { children: description });
|
|
149
|
+
$[40] = description;
|
|
150
|
+
$[41] = t12;
|
|
151
|
+
} else t12 = $[41];
|
|
152
|
+
let t13;
|
|
153
|
+
if ($[42] !== error) {
|
|
154
|
+
t13 = error ? /* @__PURE__ */ jsx(Field.Error, {
|
|
155
|
+
match: true,
|
|
156
|
+
children: error
|
|
157
|
+
}) : /* @__PURE__ */ jsx(Field.Error, {});
|
|
158
|
+
$[42] = error;
|
|
159
|
+
$[43] = t13;
|
|
160
|
+
} else t13 = $[43];
|
|
161
|
+
let t14;
|
|
162
|
+
if ($[44] !== disabled || $[45] !== name || $[46] !== t11 || $[47] !== t12 || $[48] !== t13 || $[49] !== t4 || $[50] !== t5) {
|
|
163
|
+
t14 = /* @__PURE__ */ jsxs(Field.Root, {
|
|
164
|
+
name,
|
|
165
|
+
disabled,
|
|
166
|
+
invalid: t4,
|
|
167
|
+
children: [
|
|
168
|
+
t5,
|
|
169
|
+
t11,
|
|
170
|
+
t12,
|
|
171
|
+
t13
|
|
172
|
+
]
|
|
173
|
+
});
|
|
174
|
+
$[44] = disabled;
|
|
175
|
+
$[45] = name;
|
|
176
|
+
$[46] = t11;
|
|
177
|
+
$[47] = t12;
|
|
178
|
+
$[48] = t13;
|
|
179
|
+
$[49] = t4;
|
|
180
|
+
$[50] = t5;
|
|
181
|
+
$[51] = t14;
|
|
182
|
+
} else t14 = $[51];
|
|
183
|
+
return t14;
|
|
184
|
+
}
|
|
185
|
+
//#endregion
|
|
186
|
+
export { NumberField$1 as NumberField };
|
|
187
|
+
|
|
188
|
+
//# sourceMappingURL=NumberField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NumberField.js","names":["React","NumberField","BaseNumberField","withClass","MinusIcon","PlusIcon","Field","ControlSize","NumberFieldProps","Root","Props","label","ReactNode","description","error","size","placeholder","hideStepper","decrementLabel","incrementLabel","t0","$","_c","className","disabled","name","props","ref","required","t1","t2","t3","undefined","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","NumberField","_c","BaseNumberField"],"sources":["../../../src/components/number-field/NumberField.tsx"],"sourcesContent":["import * as React from 'react';\nimport { NumberField as BaseNumberField } from '@base-ui/react/number-field';\nimport { withClass } from '../../utils/cx';\nimport { MinusIcon, PlusIcon } from '../../icons';\nimport { Field } from '../field/Field';\nimport type { ControlSize } from '../input/Input';\n\nexport interface NumberFieldProps extends BaseNumberField.Root.Props {\n label?: React.ReactNode;\n description?: React.ReactNode;\n error?: React.ReactNode;\n size?: ControlSize;\n placeholder?: string;\n /** Hide the − / + stepper buttons. */\n hideStepper?: boolean;\n decrementLabel?: string;\n incrementLabel?: string;\n}\n\n/** Numeric input with stepper buttons, locale formatting and keyboard stepping. */\nexport function NumberField({\n label,\n description,\n error,\n size = 'md',\n placeholder,\n hideStepper,\n decrementLabel = 'Decrease',\n incrementLabel = 'Increase',\n className,\n name,\n disabled,\n required,\n ref,\n ...props\n}: NumberFieldProps) {\n return (\n <Field.Root name={name} disabled={disabled} invalid={error ? true : undefined}>\n {label && <Field.Label required={required}>{label}</Field.Label>}\n <BaseNumberField.Root\n ref={ref}\n className={withClass('oui-number-field', className)}\n disabled={disabled}\n required={required}\n {...props}\n >\n <BaseNumberField.Group className=\"oui-number-field__group\" data-size={size}>\n {!hideStepper && (\n <BaseNumberField.Decrement className=\"oui-number-field__step\" aria-label={decrementLabel}>\n <MinusIcon />\n </BaseNumberField.Decrement>\n )}\n <BaseNumberField.Input className=\"oui-number-field__input\" placeholder={placeholder} />\n {!hideStepper && (\n <BaseNumberField.Increment className=\"oui-number-field__step\" aria-label={incrementLabel}>\n <PlusIcon />\n </BaseNumberField.Increment>\n )}\n </BaseNumberField.Group>\n </BaseNumberField.Root>\n {description && <Field.Description>{description}</Field.Description>}\n {error ? <Field.Error match>{error}</Field.Error> : <Field.Error />}\n </Field.Root>\n );\n}\n"],"mappings":";;;;;;;;;;AAoBA,SAAOC,cAAAmB,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAC;CAAA,IAAAV;CAAA,IAAAW;CAAA,IAAAV;CAAA,IAAAG;CAAA,IAAAN;CAAA,IAAAc;CAAA,IAAAT;CAAA,IAAAU;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAV,EAAA,OAAAD,IAAA;EAAqB,CAAA,CAAAT,OAAAE,aAAAC,OAAAC,MAAAc,IAAAb,aAAAC,aAAAC,gBAAAY,IAAAX,gBAAAY,IAAAR,WAAAE,MAAAD,UAAAI,UAAAD,KAAA,GAAAD,SAAAN;EAeTC,EAAA,KAAAD;EAAAC,EAAA,KAAAE;EAAAF,EAAA,KAAAR;EAAAQ,EAAA,KAAAG;EAAAH,EAAA,KAAAP;EAAAO,EAAA,KAAAJ;EAAAI,EAAA,KAAAV;EAAAU,EAAA,KAAAI;EAAAJ,EAAA,KAAAL;EAAAK,EAAA,KAAAK;EAAAL,EAAA,MAAAM;EAAAN,EAAA,MAAAO;EAAAP,EAAA,MAAAQ;EAAAR,EAAA,MAAAS;EAAAT,EAAA,MAAAU;CAAA,OAAA;EAAAR,YAAAF,EAAA;EAAAR,cAAAQ,EAAA;EAAAG,WAAAH,EAAA;EAAAP,QAAAO,EAAA;EAAAJ,cAAAI,EAAA;EAAAV,QAAAU,EAAA;EAAAI,OAAAJ,EAAA;EAAAL,cAAAK,EAAA;EAAAK,QAAAL,EAAA;EAAAM,MAAAN,EAAA;EAAAO,WAAAP,EAAA;EAAAQ,KAAAR,EAAA;EAAAS,KAAAT,EAAA;EAAAU,KAAAV,EAAA;CAAA;CAXjB,MAAAN,OAAAc,OAAAG,KAAAA,IAAA,OAAAH;CAGA,MAAAX,iBAAAY,OAAAE,KAAAA,IAAA,aAAAF;CACA,MAAAX,iBAAAY,OAAAC,KAAAA,IAAA,aAAAD;CASuD,MAAAE,KAAAnB,QAAA,OAAAkB,KAAAA;CAAwB,IAAAE;CAAA,IAAAb,EAAA,QAAAV,SAAAU,EAAA,QAAAO,UAAA;EAC1EM,KAAAvB,SAAS,oBAAA,MAAA,OAAA;GAAuBiB;GAAWjB,UAAAA;EAAM,CAAA;EAAcU,EAAA,MAAAV;EAAAU,EAAA,MAAAO;EAAAP,EAAA,MAAAa;CAAA,OAAAA,KAAAb,EAAA;CAAA,IAAAc;CAAA,IAAAd,EAAA,QAAAE,WAAA;EAGnDY,KAAAhC,UAAU,oBAAoBoB,SAAS;EAACF,EAAA,MAAAE;EAAAF,EAAA,MAAAc;CAAA,OAAAA,KAAAd,EAAA;CAAA,IAAAe;CAAA,IAAAf,EAAA,QAAAH,kBAAAG,EAAA,QAAAJ,aAAA;EAMhDmB,KAAA,CAACnB,eACA,oBAAA6B,YAAA,WAAA;GAAqC,WAAA;GAAqC5B,cAAAA;GACxE,UAAA,oBAAC,WAAD,CAAU,CAAA;EACZ,CAAA;EACDG,EAAA,MAAAH;EAAAG,EAAA,MAAAJ;EAAAI,EAAA,MAAAe;CAAA,OAAAA,KAAAf,EAAA;CAAA,IAAAgB;CAAA,IAAAhB,EAAA,QAAAL,aAAA;EACDqB,KAAA,oBAAAS,YAAA,OAAA;GAAiC,WAAA;GAAuC9B;EAAW,CAAA;EAAIK,EAAA,MAAAL;EAAAK,EAAA,MAAAgB;CAAA,OAAAA,KAAAhB,EAAA;CAAA,IAAAiB;CAAA,IAAAjB,EAAA,QAAAJ,eAAAI,EAAA,QAAAF,gBAAA;EACtFmB,KAAA,CAACrB,eACA,oBAAA6B,YAAA,WAAA;GAAqC,WAAA;GAAqC3B,cAAAA;GACxE,UAAA,oBAAC,UAAD,CAAS,CAAA;EACX,CAAA;EACDE,EAAA,MAAAJ;EAAAI,EAAA,MAAAF;EAAAE,EAAA,MAAAiB;CAAA,OAAAA,KAAAjB,EAAA;CAAA,IAAAkB;CAAA,IAAAlB,EAAA,QAAAN,QAAAM,EAAA,QAAAe,MAAAf,EAAA,QAAAgB,MAAAhB,EAAA,QAAAiB,IAAA;EAXHC,MAAA,qBAAAO,YAAA,OAAA;GAAiC,WAAA;GAAqC/B,aAAAA;GAAtE,UAAA;IACGqB;IAKDC;IACCC;GAKH;;EAAwBjB,EAAA,MAAAN;EAAAM,EAAA,MAAAe;EAAAf,EAAA,MAAAgB;EAAAhB,EAAA,MAAAiB;EAAAjB,EAAA,MAAAkB;CAAA,OAAAA,MAAAlB,EAAA;CAAA,IAAAmB;CAAA,IAAAnB,EAAA,QAAAG,YAAAH,EAAA,QAAAK,SAAAL,EAAA,QAAAM,OAAAN,EAAA,QAAAO,YAAAP,EAAA,QAAAkB,OAAAlB,EAAA,QAAAc,IAAA;EAnB1BK,MAAA,oBAAAM,YAAA,MAAA;GACOnB;GACM,WAAAQ;GACDX;GACAI;GAAQ,GACdF;GAEJa,UAAAA;EAaF,CAAA;EAAuBlB,EAAA,MAAAG;EAAAH,EAAA,MAAAK;EAAAL,EAAA,MAAAM;EAAAN,EAAA,MAAAO;EAAAP,EAAA,MAAAkB;EAAAlB,EAAA,MAAAc;EAAAd,EAAA,MAAAmB;CAAA,OAAAA,MAAAnB,EAAA;CAAA,IAAAoB;CAAA,IAAApB,EAAA,QAAAR,aAAA;EACtB4B,MAAA5B,eAAe,oBAAA,MAAA,aAAA,EAAA,UAAoBA,YAAY,CAAA;EAAoBQ,EAAA,MAAAR;EAAAQ,EAAA,MAAAoB;CAAA,OAAAA,MAAApB,EAAA;CAAA,IAAAqB;CAAA,IAAArB,EAAA,QAAAP,OAAA;EACnE4B,MAAA5B,QAAQ,oBAAA,MAAA,OAAA;GAAa,OAAA;GAAOA,UAAAA;EAAM,CAAA,IAAiB,oBAAA,MAAA,OAAA,CAAA,CAAA;EAAeO,EAAA,MAAAP;EAAAO,EAAA,MAAAqB;CAAA,OAAAA,MAAArB,EAAA;CAAA,IAAAsB;CAAA,IAAAtB,EAAA,QAAAG,YAAAH,EAAA,QAAAI,QAAAJ,EAAA,QAAAmB,OAAAnB,EAAA,QAAAoB,OAAApB,EAAA,QAAAqB,OAAArB,EAAA,QAAAY,MAAAZ,EAAA,QAAAa,IAAA;EAxBrES,MAAA,qBAAA,MAAA,MAAA;GAAkBlB;GAAgBD;GAAmB,SAAAS;GAArD,UAAA;IACGC;IACDM;IAqBCC;IACAC;GACH;;EAAarB,EAAA,MAAAG;EAAAH,EAAA,MAAAI;EAAAJ,EAAA,MAAAmB;EAAAnB,EAAA,MAAAoB;EAAApB,EAAA,MAAAqB;EAAArB,EAAA,MAAAY;EAAAZ,EAAA,MAAAa;EAAAb,EAAA,MAAAsB;CAAA,OAAAA,MAAAtB,EAAA;CAAA,OAzBbsB;AAyBa"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export interface PaginationLabels {
|
|
3
|
+
navigation: string;
|
|
4
|
+
previous: string;
|
|
5
|
+
next: string;
|
|
6
|
+
rowsPerPage: string;
|
|
7
|
+
page: (page: number) => string;
|
|
8
|
+
/** Summary text, e.g. "11–20 of 87". `total` is 0 when there is nothing to show. */
|
|
9
|
+
range: (from: number, to: number, total: number) => React.ReactNode;
|
|
10
|
+
}
|
|
11
|
+
/** Page numbers to render, with `'gap'` where pages are skipped. */
|
|
12
|
+
export declare function getPageItems(page: number, pageCount: number, siblingCount?: number): Array<number | 'gap'>;
|
|
13
|
+
export interface PaginationProps extends Omit<React.HTMLAttributes<HTMLElement>, 'onChange'> {
|
|
14
|
+
ref?: React.Ref<HTMLElement>;
|
|
15
|
+
/** Current page, starting at 1. */
|
|
16
|
+
page: number;
|
|
17
|
+
pageSize: number;
|
|
18
|
+
/** Total number of items across all pages. */
|
|
19
|
+
total: number;
|
|
20
|
+
onPageChange: (page: number) => void;
|
|
21
|
+
/** Passing this adds the rows-per-page select. */
|
|
22
|
+
onPageSizeChange?: (pageSize: number) => void;
|
|
23
|
+
pageSizeOptions?: number[];
|
|
24
|
+
/** `pages` shows numbered buttons; `simple` only previous / next. */
|
|
25
|
+
variant?: 'pages' | 'simple';
|
|
26
|
+
/** Numbered pages shown on each side of the current one. */
|
|
27
|
+
siblingCount?: number;
|
|
28
|
+
/** Hide the "11–20 of 87" summary. */
|
|
29
|
+
hideRange?: boolean;
|
|
30
|
+
/** Override texts for localisation. */
|
|
31
|
+
labels?: Partial<PaginationLabels>;
|
|
32
|
+
}
|
|
33
|
+
/** Controlled page navigation with an optional rows-per-page select. */
|
|
34
|
+
export declare function Pagination({ page, pageSize, total, onPageChange, onPageSizeChange, pageSizeOptions, variant, siblingCount, hideRange, labels, className, ref, ...props }: PaginationProps): React.JSX.Element;
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cx } from "../../utils/cx.js";
|
|
3
|
+
import { ChevronLeftIcon, ChevronRightIcon } from "../../icons/index.js";
|
|
4
|
+
import { IconButton } from "../button/Button.js";
|
|
5
|
+
import { Select } from "../select/Select.js";
|
|
6
|
+
import { c } from "react/compiler-runtime";
|
|
7
|
+
import "react";
|
|
8
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
+
//#region src/components/pagination/Pagination.tsx
|
|
10
|
+
var defaultLabels = {
|
|
11
|
+
navigation: "Pagination",
|
|
12
|
+
previous: "Previous page",
|
|
13
|
+
next: "Next page",
|
|
14
|
+
rowsPerPage: "Rows per page",
|
|
15
|
+
page: (page) => `Page ${page}`,
|
|
16
|
+
range: (from, to, total) => total ? `${from}–${to} of ${total}` : "0 results"
|
|
17
|
+
};
|
|
18
|
+
/** Page numbers to render, with `'gap'` where pages are skipped. */
|
|
19
|
+
function getPageItems(page, pageCount, siblingCount = 1) {
|
|
20
|
+
if (pageCount <= siblingCount * 2 + 5) return Array.from({ length: pageCount }, (_, i) => i + 1);
|
|
21
|
+
const start = Math.max(2, Math.min(page - siblingCount, pageCount - siblingCount * 2 - 2));
|
|
22
|
+
const end = Math.min(pageCount - 1, Math.max(page + siblingCount, siblingCount * 2 + 3));
|
|
23
|
+
const items = [1];
|
|
24
|
+
if (start > 2) items.push("gap");
|
|
25
|
+
for (let i = start; i <= end; i++) items.push(i);
|
|
26
|
+
if (end < pageCount - 1) items.push("gap");
|
|
27
|
+
items.push(pageCount);
|
|
28
|
+
return items;
|
|
29
|
+
}
|
|
30
|
+
/** Controlled page navigation with an optional rows-per-page select. */
|
|
31
|
+
function Pagination(t0) {
|
|
32
|
+
const $ = c(47);
|
|
33
|
+
let current;
|
|
34
|
+
let onPageChange;
|
|
35
|
+
let pageCount;
|
|
36
|
+
let t1;
|
|
37
|
+
let t10;
|
|
38
|
+
let t11;
|
|
39
|
+
let t2;
|
|
40
|
+
let t3;
|
|
41
|
+
let t4;
|
|
42
|
+
let t5;
|
|
43
|
+
let t6;
|
|
44
|
+
let t7;
|
|
45
|
+
let t8;
|
|
46
|
+
let t9;
|
|
47
|
+
let text;
|
|
48
|
+
if ($[0] !== t0) {
|
|
49
|
+
const { page, pageSize, total, onPageChange: t12, onPageSizeChange, pageSizeOptions: t13, variant: t14, siblingCount: t15, hideRange, labels, className, ref, ...props } = t0;
|
|
50
|
+
onPageChange = t12;
|
|
51
|
+
const pageSizeOptions = t13 === void 0 ? [
|
|
52
|
+
10,
|
|
53
|
+
25,
|
|
54
|
+
50
|
|
55
|
+
] : t13;
|
|
56
|
+
const variant = t14 === void 0 ? "pages" : t14;
|
|
57
|
+
const siblingCount = t15 === void 0 ? 1 : t15;
|
|
58
|
+
text = {
|
|
59
|
+
...defaultLabels,
|
|
60
|
+
...labels
|
|
61
|
+
};
|
|
62
|
+
pageCount = Math.max(1, Math.ceil(total / pageSize));
|
|
63
|
+
current = Math.min(Math.max(1, page), pageCount);
|
|
64
|
+
const from = total ? (current - 1) * pageSize + 1 : 0;
|
|
65
|
+
const to = Math.min(current * pageSize, total);
|
|
66
|
+
const sizes = pageSizeOptions.includes(pageSize) ? pageSizeOptions : [...pageSizeOptions, pageSize].sort(_temp);
|
|
67
|
+
t6 = ref;
|
|
68
|
+
t7 = text.navigation;
|
|
69
|
+
if ($[16] !== className) {
|
|
70
|
+
t8 = cx("oui-pagination", className);
|
|
71
|
+
$[16] = className;
|
|
72
|
+
$[17] = t8;
|
|
73
|
+
} else t8 = $[17];
|
|
74
|
+
t9 = variant;
|
|
75
|
+
t10 = props;
|
|
76
|
+
t11 = !hideRange && /* @__PURE__ */ jsx("span", {
|
|
77
|
+
className: "oui-pagination__range",
|
|
78
|
+
"aria-live": "polite",
|
|
79
|
+
children: text.range(from, to, total)
|
|
80
|
+
});
|
|
81
|
+
t4 = "oui-pagination__controls";
|
|
82
|
+
t5 = onPageSizeChange && /* @__PURE__ */ jsxs("label", {
|
|
83
|
+
className: "oui-pagination__size",
|
|
84
|
+
children: [/* @__PURE__ */ jsx("span", { children: text.rowsPerPage }), /* @__PURE__ */ jsx(Select, {
|
|
85
|
+
size: "sm",
|
|
86
|
+
items: sizes.map(_temp2),
|
|
87
|
+
value: String(pageSize),
|
|
88
|
+
onValueChange: (value) => value && onPageSizeChange(Number(value)),
|
|
89
|
+
triggerProps: { "aria-label": text.rowsPerPage }
|
|
90
|
+
})]
|
|
91
|
+
});
|
|
92
|
+
t1 = "oui-pagination__pages";
|
|
93
|
+
let t16;
|
|
94
|
+
if ($[18] !== current || $[19] !== onPageChange) {
|
|
95
|
+
t16 = () => onPageChange(current - 1);
|
|
96
|
+
$[18] = current;
|
|
97
|
+
$[19] = onPageChange;
|
|
98
|
+
$[20] = t16;
|
|
99
|
+
} else t16 = $[20];
|
|
100
|
+
let t17;
|
|
101
|
+
if ($[21] === Symbol.for("react.memo_cache_sentinel")) {
|
|
102
|
+
t17 = /* @__PURE__ */ jsx(ChevronLeftIcon, {});
|
|
103
|
+
$[21] = t17;
|
|
104
|
+
} else t17 = $[21];
|
|
105
|
+
t2 = /* @__PURE__ */ jsx(IconButton, {
|
|
106
|
+
size: "sm",
|
|
107
|
+
"aria-label": text.previous,
|
|
108
|
+
disabled: current <= 1,
|
|
109
|
+
onClick: t16,
|
|
110
|
+
children: t17
|
|
111
|
+
});
|
|
112
|
+
t3 = variant === "pages" && getPageItems(current, pageCount, siblingCount).map((item, index) => item === "gap" ? /* @__PURE__ */ jsx("span", {
|
|
113
|
+
className: "oui-pagination__gap",
|
|
114
|
+
"aria-hidden": true,
|
|
115
|
+
children: "…"
|
|
116
|
+
}, `gap-${index}`) : /* @__PURE__ */ jsx("button", {
|
|
117
|
+
type: "button",
|
|
118
|
+
className: "oui-pagination__page",
|
|
119
|
+
"aria-label": text.page(item),
|
|
120
|
+
"aria-current": item === current ? "page" : void 0,
|
|
121
|
+
onClick: () => onPageChange(item),
|
|
122
|
+
children: item
|
|
123
|
+
}, item));
|
|
124
|
+
$[0] = t0;
|
|
125
|
+
$[1] = current;
|
|
126
|
+
$[2] = onPageChange;
|
|
127
|
+
$[3] = pageCount;
|
|
128
|
+
$[4] = t1;
|
|
129
|
+
$[5] = t10;
|
|
130
|
+
$[6] = t11;
|
|
131
|
+
$[7] = t2;
|
|
132
|
+
$[8] = t3;
|
|
133
|
+
$[9] = t4;
|
|
134
|
+
$[10] = t5;
|
|
135
|
+
$[11] = t6;
|
|
136
|
+
$[12] = t7;
|
|
137
|
+
$[13] = t8;
|
|
138
|
+
$[14] = t9;
|
|
139
|
+
$[15] = text;
|
|
140
|
+
} else {
|
|
141
|
+
current = $[1];
|
|
142
|
+
onPageChange = $[2];
|
|
143
|
+
pageCount = $[3];
|
|
144
|
+
t1 = $[4];
|
|
145
|
+
t10 = $[5];
|
|
146
|
+
t11 = $[6];
|
|
147
|
+
t2 = $[7];
|
|
148
|
+
t3 = $[8];
|
|
149
|
+
t4 = $[9];
|
|
150
|
+
t5 = $[10];
|
|
151
|
+
t6 = $[11];
|
|
152
|
+
t7 = $[12];
|
|
153
|
+
t8 = $[13];
|
|
154
|
+
t9 = $[14];
|
|
155
|
+
text = $[15];
|
|
156
|
+
}
|
|
157
|
+
const t12 = current >= pageCount;
|
|
158
|
+
let t13;
|
|
159
|
+
if ($[22] !== current || $[23] !== onPageChange) {
|
|
160
|
+
t13 = () => onPageChange(current + 1);
|
|
161
|
+
$[22] = current;
|
|
162
|
+
$[23] = onPageChange;
|
|
163
|
+
$[24] = t13;
|
|
164
|
+
} else t13 = $[24];
|
|
165
|
+
let t14;
|
|
166
|
+
if ($[25] === Symbol.for("react.memo_cache_sentinel")) {
|
|
167
|
+
t14 = /* @__PURE__ */ jsx(ChevronRightIcon, {});
|
|
168
|
+
$[25] = t14;
|
|
169
|
+
} else t14 = $[25];
|
|
170
|
+
let t15;
|
|
171
|
+
if ($[26] !== t12 || $[27] !== t13 || $[28] !== text.next) {
|
|
172
|
+
t15 = /* @__PURE__ */ jsx(IconButton, {
|
|
173
|
+
size: "sm",
|
|
174
|
+
"aria-label": text.next,
|
|
175
|
+
disabled: t12,
|
|
176
|
+
onClick: t13,
|
|
177
|
+
children: t14
|
|
178
|
+
});
|
|
179
|
+
$[26] = t12;
|
|
180
|
+
$[27] = t13;
|
|
181
|
+
$[28] = text.next;
|
|
182
|
+
$[29] = t15;
|
|
183
|
+
} else t15 = $[29];
|
|
184
|
+
let t16;
|
|
185
|
+
if ($[30] !== t1 || $[31] !== t15 || $[32] !== t2 || $[33] !== t3) {
|
|
186
|
+
t16 = /* @__PURE__ */ jsxs("div", {
|
|
187
|
+
className: t1,
|
|
188
|
+
children: [
|
|
189
|
+
t2,
|
|
190
|
+
t3,
|
|
191
|
+
t15
|
|
192
|
+
]
|
|
193
|
+
});
|
|
194
|
+
$[30] = t1;
|
|
195
|
+
$[31] = t15;
|
|
196
|
+
$[32] = t2;
|
|
197
|
+
$[33] = t3;
|
|
198
|
+
$[34] = t16;
|
|
199
|
+
} else t16 = $[34];
|
|
200
|
+
let t17;
|
|
201
|
+
if ($[35] !== t16 || $[36] !== t4 || $[37] !== t5) {
|
|
202
|
+
t17 = /* @__PURE__ */ jsxs("div", {
|
|
203
|
+
className: t4,
|
|
204
|
+
children: [t5, t16]
|
|
205
|
+
});
|
|
206
|
+
$[35] = t16;
|
|
207
|
+
$[36] = t4;
|
|
208
|
+
$[37] = t5;
|
|
209
|
+
$[38] = t17;
|
|
210
|
+
} else t17 = $[38];
|
|
211
|
+
let t18;
|
|
212
|
+
if ($[39] !== t10 || $[40] !== t11 || $[41] !== t17 || $[42] !== t6 || $[43] !== t7 || $[44] !== t8 || $[45] !== t9) {
|
|
213
|
+
t18 = /* @__PURE__ */ jsxs("nav", {
|
|
214
|
+
ref: t6,
|
|
215
|
+
"aria-label": t7,
|
|
216
|
+
className: t8,
|
|
217
|
+
"data-variant": t9,
|
|
218
|
+
...t10,
|
|
219
|
+
children: [t11, t17]
|
|
220
|
+
});
|
|
221
|
+
$[39] = t10;
|
|
222
|
+
$[40] = t11;
|
|
223
|
+
$[41] = t17;
|
|
224
|
+
$[42] = t6;
|
|
225
|
+
$[43] = t7;
|
|
226
|
+
$[44] = t8;
|
|
227
|
+
$[45] = t9;
|
|
228
|
+
$[46] = t18;
|
|
229
|
+
} else t18 = $[46];
|
|
230
|
+
return t18;
|
|
231
|
+
}
|
|
232
|
+
function _temp2(size) {
|
|
233
|
+
return {
|
|
234
|
+
value: String(size),
|
|
235
|
+
label: String(size)
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
function _temp(a, b) {
|
|
239
|
+
return a - b;
|
|
240
|
+
}
|
|
241
|
+
//#endregion
|
|
242
|
+
export { Pagination, getPageItems };
|
|
243
|
+
|
|
244
|
+
//# sourceMappingURL=Pagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pagination.js","names":["React","cx","IconButton","Select","ChevronLeftIcon","ChevronRightIcon","PaginationLabels","navigation","previous","next","rowsPerPage","page","range","from","to","total","ReactNode","defaultLabels","getPageItems","pageCount","siblingCount","Array","slots","length","_","i","start","Math","max","min","end","items","push","PaginationProps","Omit","HTMLAttributes","HTMLElement","ref","Ref","pageSize","onPageChange","onPageSizeChange","pageSizeOptions","variant","hideRange","labels","Partial","Pagination","t0","$","_c","current","t1","t10","t11","t2","t3","t4","t5","t6","t7","t8","t9","text","t12","t13","t14","t15","className","props","undefined","ceil","sizes","includes","sort","_temp","map","_temp2","String","value","Number","t16","t17","Symbol","for","item","index","t18","size","label","a","b","_c"],"sources":["../../../src/components/pagination/Pagination.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cx } from '../../utils/cx';\nimport { IconButton } from '../button/Button';\nimport { Select } from '../select/Select';\nimport { ChevronLeftIcon, ChevronRightIcon } from '../../icons';\n\nexport interface PaginationLabels {\n navigation: string;\n previous: string;\n next: string;\n rowsPerPage: string;\n page: (page: number) => string;\n /** Summary text, e.g. \"11–20 of 87\". `total` is 0 when there is nothing to show. */\n range: (from: number, to: number, total: number) => React.ReactNode;\n}\n\nconst defaultLabels: PaginationLabels = {\n navigation: 'Pagination',\n previous: 'Previous page',\n next: 'Next page',\n rowsPerPage: 'Rows per page',\n page: (page) => `Page ${page}`,\n range: (from, to, total) => (total ? `${from}–${to} of ${total}` : '0 results'),\n};\n\n/** Page numbers to render, with `'gap'` where pages are skipped. */\nexport function getPageItems(page: number, pageCount: number, siblingCount = 1): Array<number | 'gap'> {\n // first + last + current + siblings + two gaps\n const slots = siblingCount * 2 + 5;\n if (pageCount <= slots) return Array.from({ length: pageCount }, (_, i) => i + 1);\n const start = Math.max(2, Math.min(page - siblingCount, pageCount - siblingCount * 2 - 2));\n const end = Math.min(pageCount - 1, Math.max(page + siblingCount, siblingCount * 2 + 3));\n const items: Array<number | 'gap'> = [1];\n if (start > 2) items.push('gap');\n for (let i = start; i <= end; i++) items.push(i);\n if (end < pageCount - 1) items.push('gap');\n items.push(pageCount);\n return items;\n}\n\nexport interface PaginationProps extends Omit<React.HTMLAttributes<HTMLElement>, 'onChange'> {\n ref?: React.Ref<HTMLElement>;\n /** Current page, starting at 1. */\n page: number;\n pageSize: number;\n /** Total number of items across all pages. */\n total: number;\n onPageChange: (page: number) => void;\n /** Passing this adds the rows-per-page select. */\n onPageSizeChange?: (pageSize: number) => void;\n pageSizeOptions?: number[];\n /** `pages` shows numbered buttons; `simple` only previous / next. */\n variant?: 'pages' | 'simple';\n /** Numbered pages shown on each side of the current one. */\n siblingCount?: number;\n /** Hide the \"11–20 of 87\" summary. */\n hideRange?: boolean;\n /** Override texts for localisation. */\n labels?: Partial<PaginationLabels>;\n}\n\n/** Controlled page navigation with an optional rows-per-page select. */\nexport function Pagination({\n page,\n pageSize,\n total,\n onPageChange,\n onPageSizeChange,\n pageSizeOptions = [10, 25, 50],\n variant = 'pages',\n siblingCount = 1,\n hideRange,\n labels,\n className,\n ref,\n ...props\n}: PaginationProps) {\n const text = { ...defaultLabels, ...labels };\n const pageCount = Math.max(1, Math.ceil(total / pageSize));\n const current = Math.min(Math.max(1, page), pageCount);\n const from = total ? (current - 1) * pageSize + 1 : 0;\n const to = Math.min(current * pageSize, total);\n const sizes = pageSizeOptions.includes(pageSize) ? pageSizeOptions : [...pageSizeOptions, pageSize].sort((a, b) => a - b);\n\n return (\n <nav ref={ref} aria-label={text.navigation} className={cx('oui-pagination', className)} data-variant={variant} {...props}>\n {!hideRange && (\n <span className=\"oui-pagination__range\" aria-live=\"polite\">\n {text.range(from, to, total)}\n </span>\n )}\n <div className=\"oui-pagination__controls\">\n {onPageSizeChange && (\n <label className=\"oui-pagination__size\">\n <span>{text.rowsPerPage}</span>\n <Select\n size=\"sm\"\n items={sizes.map((size) => ({ value: String(size), label: String(size) }))}\n value={String(pageSize)}\n onValueChange={(value) => value && onPageSizeChange(Number(value))}\n triggerProps={{ 'aria-label': text.rowsPerPage }}\n />\n </label>\n )}\n <div className=\"oui-pagination__pages\">\n <IconButton size=\"sm\" aria-label={text.previous} disabled={current <= 1} onClick={() => onPageChange(current - 1)}>\n <ChevronLeftIcon />\n </IconButton>\n {variant === 'pages' &&\n getPageItems(current, pageCount, siblingCount).map((item, index) =>\n item === 'gap' ? (\n <span key={`gap-${index}`} className=\"oui-pagination__gap\" aria-hidden>\n …\n </span>\n ) : (\n <button\n key={item}\n type=\"button\"\n className=\"oui-pagination__page\"\n aria-label={text.page(item)}\n aria-current={item === current ? 'page' : undefined}\n onClick={() => onPageChange(item)}\n >\n {item}\n </button>\n ),\n )}\n <IconButton size=\"sm\" aria-label={text.next} disabled={current >= pageCount} onClick={() => onPageChange(current + 1)}>\n <ChevronRightIcon />\n </IconButton>\n </div>\n </div>\n </nav>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Popover as BasePopover } from '@base-ui/react/popover';
|
|
2
|
+
export interface PopoverContentProps extends BasePopover.Popup.Props {
|
|
3
|
+
side?: BasePopover.Positioner.Props['side'];
|
|
4
|
+
align?: BasePopover.Positioner.Props['align'];
|
|
5
|
+
sideOffset?: BasePopover.Positioner.Props['sideOffset'];
|
|
6
|
+
/** Show a small arrow pointing at the trigger. */
|
|
7
|
+
arrow?: boolean;
|
|
8
|
+
positionerProps?: BasePopover.Positioner.Props;
|
|
9
|
+
}
|
|
10
|
+
declare function PopoverContent({ side, align, sideOffset, arrow, positionerProps, className, children, ref, ...props }: PopoverContentProps): import("react").JSX.Element;
|
|
11
|
+
declare function PopoverTitle({ className, ref, ...props }: BasePopover.Title.Props): import("react").JSX.Element;
|
|
12
|
+
declare function PopoverDescription({ className, ref, ...props }: BasePopover.Description.Props): import("react").JSX.Element;
|
|
13
|
+
/** Floating panel anchored to a trigger, for small forms, filters and details. */
|
|
14
|
+
export declare const Popover: {
|
|
15
|
+
Root: typeof BasePopover.Root;
|
|
16
|
+
Trigger: BasePopover.Trigger;
|
|
17
|
+
Content: typeof PopoverContent;
|
|
18
|
+
Title: typeof PopoverTitle;
|
|
19
|
+
Description: typeof PopoverDescription;
|
|
20
|
+
Close: import("react").ForwardRefExoticComponent<Omit<import("@base-ui/react").PopoverCloseProps, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
|
|
21
|
+
};
|
|
22
|
+
export {};
|