@rockshin/tao-ui 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +65 -0
  3. package/dist/components/button/button.css +1055 -0
  4. package/dist/components/button/button.d.ts +15 -0
  5. package/dist/components/button/button.js +93 -0
  6. package/dist/components/checkbox/checkbox.css +1035 -0
  7. package/dist/components/checkbox/checkbox.d.ts +33 -0
  8. package/dist/components/checkbox/checkbox.js +312 -0
  9. package/dist/components/date-picker/calendar/calendar-grid.d.ts +18 -0
  10. package/dist/components/date-picker/calendar/calendar-grid.js +173 -0
  11. package/dist/components/date-picker/calendar/calendar-header.d.ts +10 -0
  12. package/dist/components/date-picker/calendar/calendar-header.js +336 -0
  13. package/dist/components/date-picker/calendar/month-grid.d.ts +9 -0
  14. package/dist/components/date-picker/calendar/month-grid.js +61 -0
  15. package/dist/components/date-picker/calendar/time-panel.d.ts +12 -0
  16. package/dist/components/date-picker/calendar/time-panel.js +233 -0
  17. package/dist/components/date-picker/calendar/use-calendar.d.ts +15 -0
  18. package/dist/components/date-picker/calendar/use-calendar.js +24 -0
  19. package/dist/components/date-picker/calendar/year-grid.d.ts +9 -0
  20. package/dist/components/date-picker/calendar/year-grid.js +60 -0
  21. package/dist/components/date-picker/date-picker.css +1799 -0
  22. package/dist/components/date-picker/date-picker.d.ts +29 -0
  23. package/dist/components/date-picker/date-picker.js +663 -0
  24. package/dist/components/date-picker/presets.d.ts +9 -0
  25. package/dist/components/date-picker/presets.js +36 -0
  26. package/dist/components/date-picker/range-picker.d.ts +30 -0
  27. package/dist/components/date-picker/range-picker.js +432 -0
  28. package/dist/components/date-picker/types.d.ts +39 -0
  29. package/dist/components/date-picker/types.js +7 -0
  30. package/dist/components/drawer/drawer.css +1112 -0
  31. package/dist/components/drawer/drawer.d.ts +17 -0
  32. package/dist/components/drawer/drawer.js +184 -0
  33. package/dist/components/form-actions/form-actions.d.ts +12 -0
  34. package/dist/components/form-actions/form-actions.js +42 -0
  35. package/dist/components/form-field/form-field.d.ts +17 -0
  36. package/dist/components/form-field/form-field.js +101 -0
  37. package/dist/components/form-field/form.css +1036 -0
  38. package/dist/components/form-section/form-section.d.ts +14 -0
  39. package/dist/components/form-section/form-section.js +92 -0
  40. package/dist/components/input/input.css +1185 -0
  41. package/dist/components/input/input.d.ts +15 -0
  42. package/dist/components/input/input.js +143 -0
  43. package/dist/components/pagination/pagination.css +1099 -0
  44. package/dist/components/pagination/pagination.d.ts +22 -0
  45. package/dist/components/pagination/pagination.js +310 -0
  46. package/dist/components/radio/radio.css +1045 -0
  47. package/dist/components/radio/radio.d.ts +34 -0
  48. package/dist/components/radio/radio.js +215 -0
  49. package/dist/components/scroll-area/scroll-area.css +1099 -0
  50. package/dist/components/scroll-area/scroll-area.d.ts +33 -0
  51. package/dist/components/scroll-area/scroll-area.js +375 -0
  52. package/dist/components/select/mobile-select.css +1044 -0
  53. package/dist/components/select/mobile-select.d.ts +19 -0
  54. package/dist/components/select/mobile-select.js +224 -0
  55. package/dist/components/select/select.css +1327 -0
  56. package/dist/components/select/select.d.ts +32 -0
  57. package/dist/components/select/select.js +532 -0
  58. package/dist/components/select/use-is-mobile.d.ts +1 -0
  59. package/dist/components/select/use-is-mobile.js +30 -0
  60. package/dist/components/splitter/splitter.css +1104 -0
  61. package/dist/components/splitter/splitter.d.ts +33 -0
  62. package/dist/components/splitter/splitter.js +451 -0
  63. package/dist/components/switch/switch.css +1170 -0
  64. package/dist/components/switch/switch.d.ts +19 -0
  65. package/dist/components/switch/switch.js +143 -0
  66. package/dist/components/table/table.css +1255 -0
  67. package/dist/components/table/table.d.ts +73 -0
  68. package/dist/components/table/table.js +1022 -0
  69. package/dist/components/tabs/tabs.css +1076 -0
  70. package/dist/components/tabs/tabs.d.ts +24 -0
  71. package/dist/components/tabs/tabs.js +256 -0
  72. package/dist/components/tag/tag.css +1124 -0
  73. package/dist/components/tag/tag.d.ts +33 -0
  74. package/dist/components/tag/tag.js +237 -0
  75. package/dist/index.d.ts +23 -0
  76. package/dist/index.js +23 -0
  77. package/dist/layouts/form-layout/form-layout.d.ts +6 -0
  78. package/dist/layouts/form-layout/form-layout.js +18 -0
  79. package/dist/layouts/stack/layout.css +1003 -0
  80. package/dist/layouts/stack/stack.d.ts +9 -0
  81. package/dist/layouts/stack/stack.js +27 -0
  82. package/dist/number-input/cursor.d.ts +9 -0
  83. package/dist/number-input/cursor.js +44 -0
  84. package/dist/number-input/format.d.ts +5 -0
  85. package/dist/number-input/format.js +50 -0
  86. package/dist/number-input/index.d.ts +5 -0
  87. package/dist/number-input/index.js +2 -0
  88. package/dist/number-input/number-input.d.ts +9 -0
  89. package/dist/number-input/number-input.js +101 -0
  90. package/dist/number-input/percentage.d.ts +3 -0
  91. package/dist/number-input/percentage.js +28 -0
  92. package/dist/number-input/types.d.ts +5 -0
  93. package/dist/number-input/types.js +0 -0
  94. package/dist/number-input/use-number-input.d.ts +30 -0
  95. package/dist/number-input/use-number-input.js +211 -0
  96. package/dist/number-input/validate.d.ts +3 -0
  97. package/dist/number-input/validate.js +17 -0
  98. package/dist/provider/tao-provider.d.ts +42 -0
  99. package/dist/provider/tao-provider.js +67 -0
  100. package/dist/theme/control.css +1061 -0
  101. package/dist/theme/theme.css +957 -0
  102. package/dist/utils/semantic.d.ts +10 -0
  103. package/dist/utils/semantic.js +5 -0
  104. package/llms.txt +67 -0
  105. package/package.json +97 -0
@@ -0,0 +1,22 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type TaoSize } from '../../provider/tao-provider';
3
+ import { type SemanticClassNames, type SemanticStyles } from '../../utils/semantic';
4
+ import './pagination.css';
5
+ export type PaginationSemanticPart = 'root' | 'item' | 'total';
6
+ export interface PaginationProps {
7
+ current?: number;
8
+ defaultCurrent?: number;
9
+ pageSize?: number;
10
+ defaultPageSize?: number;
11
+ total: number;
12
+ onChange?: (page: number, pageSize: number) => void;
13
+ showSizeChanger?: boolean;
14
+ pageSizeOptions?: number[];
15
+ showTotal?: (total: number, range: [number, number]) => ReactNode;
16
+ size?: TaoSize;
17
+ disabled?: boolean;
18
+ className?: string;
19
+ classNames?: SemanticClassNames<PaginationSemanticPart>;
20
+ styles?: SemanticStyles<PaginationSemanticPart>;
21
+ }
22
+ export declare function Pagination({ current: currentProp, defaultCurrent, pageSize: pageSizeProp, defaultPageSize, total, onChange, showSizeChanger, pageSizeOptions, showTotal, size, disabled, className, classNames, styles, }: PaginationProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,310 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { c } from "react/compiler-runtime";
3
+ import { useState } from "react";
4
+ import { useTaoConfig } from "../../provider/tao-provider.js";
5
+ import { cx } from "../../utils/semantic.js";
6
+ import { Select } from "../select/select.js";
7
+ import "./pagination.css";
8
+ function range(start, end) {
9
+ const result = [];
10
+ for(let i = start; i <= end; i++)result.push(i);
11
+ return result;
12
+ }
13
+ function computePages(current, totalPages) {
14
+ if (totalPages <= 7) return range(1, totalPages);
15
+ const items = [
16
+ 1
17
+ ];
18
+ if (current <= 4) items.push(...range(2, 5), 'ellipsis', totalPages);
19
+ else if (current >= totalPages - 3) items.push('ellipsis', ...range(totalPages - 4, totalPages));
20
+ else items.push('ellipsis', current - 1, current, current + 1, 'ellipsis', totalPages);
21
+ return items;
22
+ }
23
+ function ChevronLeft() {
24
+ const $ = c(1);
25
+ let t0;
26
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
27
+ t0 = /*#__PURE__*/ jsx("svg", {
28
+ width: "16",
29
+ height: "16",
30
+ viewBox: "0 0 16 16",
31
+ fill: "none",
32
+ "aria-hidden": true,
33
+ children: /*#__PURE__*/ jsx("path", {
34
+ d: "M10 12L6 8l4-4",
35
+ stroke: "currentColor",
36
+ strokeWidth: "1.5",
37
+ strokeLinecap: "round",
38
+ strokeLinejoin: "round"
39
+ })
40
+ });
41
+ $[0] = t0;
42
+ } else t0 = $[0];
43
+ return t0;
44
+ }
45
+ function ChevronRight() {
46
+ const $ = c(1);
47
+ let t0;
48
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
49
+ t0 = /*#__PURE__*/ jsx("svg", {
50
+ width: "16",
51
+ height: "16",
52
+ viewBox: "0 0 16 16",
53
+ fill: "none",
54
+ "aria-hidden": true,
55
+ children: /*#__PURE__*/ jsx("path", {
56
+ d: "M6 4l4 4-4 4",
57
+ stroke: "currentColor",
58
+ strokeWidth: "1.5",
59
+ strokeLinecap: "round",
60
+ strokeLinejoin: "round"
61
+ })
62
+ });
63
+ $[0] = t0;
64
+ } else t0 = $[0];
65
+ return t0;
66
+ }
67
+ function Pagination(t0) {
68
+ const $ = c(69);
69
+ const { current: currentProp, defaultCurrent: t1, pageSize: pageSizeProp, defaultPageSize: t2, total, onChange, showSizeChanger: t3, pageSizeOptions: t4, showTotal, size, disabled, className, classNames, styles } = t0;
70
+ const defaultCurrent = void 0 === t1 ? 1 : t1;
71
+ const defaultPageSize = void 0 === t2 ? 10 : t2;
72
+ const showSizeChanger = void 0 === t3 ? false : t3;
73
+ let t5;
74
+ if ($[0] !== t4) {
75
+ t5 = void 0 === t4 ? [
76
+ 10,
77
+ 20,
78
+ 50,
79
+ 100
80
+ ] : t4;
81
+ $[0] = t4;
82
+ $[1] = t5;
83
+ } else t5 = $[1];
84
+ const pageSizeOptions = t5;
85
+ const ctx = useTaoConfig();
86
+ const resolvedSize = size ?? ctx.size;
87
+ const resolvedDisabled = disabled ?? ctx.disabled ?? false;
88
+ const isCurrentControlled = void 0 !== currentProp;
89
+ const [internalCurrent, setInternalCurrent] = useState(defaultCurrent);
90
+ const current = isCurrentControlled ? currentProp : internalCurrent;
91
+ const isPageSizeControlled = void 0 !== pageSizeProp;
92
+ const [internalPageSize, setInternalPageSize] = useState(defaultPageSize);
93
+ const pageSize = isPageSizeControlled ? pageSizeProp : internalPageSize;
94
+ const totalPages = Math.max(1, Math.ceil(total / pageSize));
95
+ let t6;
96
+ if ($[2] !== current || $[3] !== totalPages) {
97
+ t6 = computePages(current, totalPages);
98
+ $[2] = current;
99
+ $[3] = totalPages;
100
+ $[4] = t6;
101
+ } else t6 = $[4];
102
+ const pages = t6;
103
+ let t7;
104
+ if ($[5] !== isCurrentControlled || $[6] !== isPageSizeControlled || $[7] !== onChange || $[8] !== pageSize || $[9] !== total) {
105
+ t7 = (page, newPageSize)=>{
106
+ const ps = newPageSize ?? pageSize;
107
+ const maxPage = Math.max(1, Math.ceil(total / ps));
108
+ const safePage = Math.min(Math.max(1, page), maxPage);
109
+ if (!isCurrentControlled) setInternalCurrent(safePage);
110
+ if (null != newPageSize && !isPageSizeControlled) setInternalPageSize(newPageSize);
111
+ onChange?.(safePage, ps);
112
+ };
113
+ $[5] = isCurrentControlled;
114
+ $[6] = isPageSizeControlled;
115
+ $[7] = onChange;
116
+ $[8] = pageSize;
117
+ $[9] = total;
118
+ $[10] = t7;
119
+ } else t7 = $[10];
120
+ const goTo = t7;
121
+ const rangeStart = Math.min((current - 1) * pageSize + 1, total);
122
+ const rangeEnd = Math.min(current * pageSize, total);
123
+ const t8 = resolvedDisabled || void 0;
124
+ const t9 = classNames?.root;
125
+ let t10;
126
+ if ($[11] !== className || $[12] !== t9) {
127
+ t10 = cx(t9, className);
128
+ $[11] = className;
129
+ $[12] = t9;
130
+ $[13] = t10;
131
+ } else t10 = $[13];
132
+ const t11 = styles?.root;
133
+ let t12;
134
+ if ($[14] !== classNames?.total || $[15] !== rangeEnd || $[16] !== rangeStart || $[17] !== showTotal || $[18] !== styles?.total || $[19] !== total) {
135
+ t12 = showTotal && /*#__PURE__*/ jsx("span", {
136
+ "data-tao-pagination-total": "",
137
+ className: classNames?.total,
138
+ style: styles?.total,
139
+ children: showTotal(total, [
140
+ rangeStart,
141
+ rangeEnd
142
+ ])
143
+ });
144
+ $[14] = classNames?.total;
145
+ $[15] = rangeEnd;
146
+ $[16] = rangeStart;
147
+ $[17] = showTotal;
148
+ $[18] = styles?.total;
149
+ $[19] = total;
150
+ $[20] = t12;
151
+ } else t12 = $[20];
152
+ const t13 = resolvedDisabled || current <= 1;
153
+ let t14;
154
+ if ($[21] !== current || $[22] !== goTo) {
155
+ t14 = ()=>goTo(current - 1);
156
+ $[21] = current;
157
+ $[22] = goTo;
158
+ $[23] = t14;
159
+ } else t14 = $[23];
160
+ const t15 = classNames?.item;
161
+ const t16 = styles?.item;
162
+ let t17;
163
+ if ($[24] === Symbol.for("react.memo_cache_sentinel")) {
164
+ t17 = /*#__PURE__*/ jsx(ChevronLeft, {});
165
+ $[24] = t17;
166
+ } else t17 = $[24];
167
+ let t18;
168
+ if ($[25] !== t13 || $[26] !== t14 || $[27] !== t15 || $[28] !== t16) {
169
+ t18 = /*#__PURE__*/ jsx("button", {
170
+ type: "button",
171
+ "data-tao-pagination-btn": "",
172
+ disabled: t13,
173
+ "aria-label": "Previous page",
174
+ onClick: t14,
175
+ className: t15,
176
+ style: t16,
177
+ children: t17
178
+ });
179
+ $[25] = t13;
180
+ $[26] = t14;
181
+ $[27] = t15;
182
+ $[28] = t16;
183
+ $[29] = t18;
184
+ } else t18 = $[29];
185
+ let t19;
186
+ if ($[30] !== classNames?.item || $[31] !== current || $[32] !== goTo || $[33] !== pages || $[34] !== resolvedDisabled || $[35] !== styles?.item) {
187
+ let t20;
188
+ if ($[37] !== classNames?.item || $[38] !== current || $[39] !== goTo || $[40] !== resolvedDisabled || $[41] !== styles?.item) {
189
+ t20 = (item, i)=>"ellipsis" === item ? /*#__PURE__*/ jsx("span", {
190
+ "data-tao-pagination-ellipsis": "",
191
+ children: "\xb7\xb7\xb7"
192
+ }, `e${i}`) : /*#__PURE__*/ jsx("button", {
193
+ type: "button",
194
+ "data-tao-pagination-btn": "",
195
+ "data-tao-active": item === current || void 0,
196
+ disabled: resolvedDisabled,
197
+ "aria-label": `Page ${item}`,
198
+ "aria-current": item === current ? "page" : void 0,
199
+ onClick: ()=>goTo(item),
200
+ className: classNames?.item,
201
+ style: styles?.item,
202
+ children: item
203
+ }, item);
204
+ $[37] = classNames?.item;
205
+ $[38] = current;
206
+ $[39] = goTo;
207
+ $[40] = resolvedDisabled;
208
+ $[41] = styles?.item;
209
+ $[42] = t20;
210
+ } else t20 = $[42];
211
+ t19 = pages.map(t20);
212
+ $[30] = classNames?.item;
213
+ $[31] = current;
214
+ $[32] = goTo;
215
+ $[33] = pages;
216
+ $[34] = resolvedDisabled;
217
+ $[35] = styles?.item;
218
+ $[36] = t19;
219
+ } else t19 = $[36];
220
+ const t20 = resolvedDisabled || current >= totalPages;
221
+ let t21;
222
+ if ($[43] !== current || $[44] !== goTo) {
223
+ t21 = ()=>goTo(current + 1);
224
+ $[43] = current;
225
+ $[44] = goTo;
226
+ $[45] = t21;
227
+ } else t21 = $[45];
228
+ const t22 = classNames?.item;
229
+ const t23 = styles?.item;
230
+ let t24;
231
+ if ($[46] === Symbol.for("react.memo_cache_sentinel")) {
232
+ t24 = /*#__PURE__*/ jsx(ChevronRight, {});
233
+ $[46] = t24;
234
+ } else t24 = $[46];
235
+ let t25;
236
+ if ($[47] !== t20 || $[48] !== t21 || $[49] !== t22 || $[50] !== t23) {
237
+ t25 = /*#__PURE__*/ jsx("button", {
238
+ type: "button",
239
+ "data-tao-pagination-btn": "",
240
+ disabled: t20,
241
+ "aria-label": "Next page",
242
+ onClick: t21,
243
+ className: t22,
244
+ style: t23,
245
+ children: t24
246
+ });
247
+ $[47] = t20;
248
+ $[48] = t21;
249
+ $[49] = t22;
250
+ $[50] = t23;
251
+ $[51] = t25;
252
+ } else t25 = $[51];
253
+ let t26;
254
+ if ($[52] !== goTo || $[53] !== pageSize || $[54] !== pageSizeOptions || $[55] !== resolvedDisabled || $[56] !== resolvedSize || $[57] !== showSizeChanger) {
255
+ t26 = showSizeChanger && /*#__PURE__*/ jsx(Select, {
256
+ "data-tao-pagination-sizer": "",
257
+ options: pageSizeOptions.map(_temp),
258
+ value: String(pageSize),
259
+ onChange: (val)=>{
260
+ const newSize = Number(val);
261
+ goTo(1, newSize);
262
+ },
263
+ disabled: resolvedDisabled,
264
+ size: "large" === resolvedSize ? "medium" : resolvedSize
265
+ });
266
+ $[52] = goTo;
267
+ $[53] = pageSize;
268
+ $[54] = pageSizeOptions;
269
+ $[55] = resolvedDisabled;
270
+ $[56] = resolvedSize;
271
+ $[57] = showSizeChanger;
272
+ $[58] = t26;
273
+ } else t26 = $[58];
274
+ let t27;
275
+ if ($[59] !== resolvedSize || $[60] !== t10 || $[61] !== t11 || $[62] !== t12 || $[63] !== t18 || $[64] !== t19 || $[65] !== t25 || $[66] !== t26 || $[67] !== t8) {
276
+ t27 = /*#__PURE__*/ jsxs("nav", {
277
+ "data-tao-pagination": "",
278
+ "data-tao-size": resolvedSize,
279
+ "data-tao-disabled": t8,
280
+ "aria-label": "Pagination",
281
+ className: t10,
282
+ style: t11,
283
+ children: [
284
+ t12,
285
+ t18,
286
+ t19,
287
+ t25,
288
+ t26
289
+ ]
290
+ });
291
+ $[59] = resolvedSize;
292
+ $[60] = t10;
293
+ $[61] = t11;
294
+ $[62] = t12;
295
+ $[63] = t18;
296
+ $[64] = t19;
297
+ $[65] = t25;
298
+ $[66] = t26;
299
+ $[67] = t8;
300
+ $[68] = t27;
301
+ } else t27 = $[68];
302
+ return t27;
303
+ }
304
+ function _temp(opt) {
305
+ return {
306
+ label: `${opt} / page`,
307
+ value: String(opt)
308
+ };
309
+ }
310
+ export { Pagination };