@mdigital_ui/ui 0.1.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 +296 -0
- package/dist/accordion/index.js +5 -0
- package/dist/accordion/index.js.map +1 -0
- package/dist/badge/index.js +5 -0
- package/dist/badge/index.js.map +1 -0
- package/dist/button/index.js +6 -0
- package/dist/button/index.js.map +1 -0
- package/dist/card/index.js +4 -0
- package/dist/card/index.js.map +1 -0
- package/dist/carousel/index.js +3 -0
- package/dist/carousel/index.js.map +1 -0
- package/dist/cascader/index.js +4 -0
- package/dist/cascader/index.js.map +1 -0
- package/dist/chart/index.js +4 -0
- package/dist/chart/index.js.map +1 -0
- package/dist/checkbox/index.js +5 -0
- package/dist/checkbox/index.js.map +1 -0
- package/dist/checkbox-group/index.js +4 -0
- package/dist/checkbox-group/index.js.map +1 -0
- package/dist/chunk-2JGAYDZR.js +181 -0
- package/dist/chunk-2JGAYDZR.js.map +1 -0
- package/dist/chunk-3PFA3YG6.js +228 -0
- package/dist/chunk-3PFA3YG6.js.map +1 -0
- package/dist/chunk-4OMLQCUV.js +96 -0
- package/dist/chunk-4OMLQCUV.js.map +1 -0
- package/dist/chunk-4P5EMRFI.js +298 -0
- package/dist/chunk-4P5EMRFI.js.map +1 -0
- package/dist/chunk-5UEWVFF6.js +212 -0
- package/dist/chunk-5UEWVFF6.js.map +1 -0
- package/dist/chunk-5VCGW53O.js +332 -0
- package/dist/chunk-5VCGW53O.js.map +1 -0
- package/dist/chunk-75XESYGN.js +49 -0
- package/dist/chunk-75XESYGN.js.map +1 -0
- package/dist/chunk-7AEGBABZ.js +1102 -0
- package/dist/chunk-7AEGBABZ.js.map +1 -0
- package/dist/chunk-AOITJRSV.js +134 -0
- package/dist/chunk-AOITJRSV.js.map +1 -0
- package/dist/chunk-AWPKZYHT.js +152 -0
- package/dist/chunk-AWPKZYHT.js.map +1 -0
- package/dist/chunk-BNILRB4T.js +37 -0
- package/dist/chunk-BNILRB4T.js.map +1 -0
- package/dist/chunk-BP434VYV.js +448 -0
- package/dist/chunk-BP434VYV.js.map +1 -0
- package/dist/chunk-C7SXY3ZV.js +65 -0
- package/dist/chunk-C7SXY3ZV.js.map +1 -0
- package/dist/chunk-CLLQDCDR.js +560 -0
- package/dist/chunk-CLLQDCDR.js.map +1 -0
- package/dist/chunk-CWHFK7ZC.js +128 -0
- package/dist/chunk-CWHFK7ZC.js.map +1 -0
- package/dist/chunk-D3JWPGCA.js +123 -0
- package/dist/chunk-D3JWPGCA.js.map +1 -0
- package/dist/chunk-DOKTHDG3.js +55 -0
- package/dist/chunk-DOKTHDG3.js.map +1 -0
- package/dist/chunk-DPOSWW22.js +126 -0
- package/dist/chunk-DPOSWW22.js.map +1 -0
- package/dist/chunk-E2CYDDYC.js +39 -0
- package/dist/chunk-E2CYDDYC.js.map +1 -0
- package/dist/chunk-EYTOKUBM.js +401 -0
- package/dist/chunk-EYTOKUBM.js.map +1 -0
- package/dist/chunk-FGWSUPVW.js +356 -0
- package/dist/chunk-FGWSUPVW.js.map +1 -0
- package/dist/chunk-FPOXTCYV.js +166 -0
- package/dist/chunk-FPOXTCYV.js.map +1 -0
- package/dist/chunk-FTJOSVTY.js +104 -0
- package/dist/chunk-FTJOSVTY.js.map +1 -0
- package/dist/chunk-FYHQDFKE.js +164 -0
- package/dist/chunk-FYHQDFKE.js.map +1 -0
- package/dist/chunk-H2HIBD5Y.js +158 -0
- package/dist/chunk-H2HIBD5Y.js.map +1 -0
- package/dist/chunk-J3G5WWGR.js +53 -0
- package/dist/chunk-J3G5WWGR.js.map +1 -0
- package/dist/chunk-JZCHZ4B3.js +487 -0
- package/dist/chunk-JZCHZ4B3.js.map +1 -0
- package/dist/chunk-KBCBVH7B.js +51 -0
- package/dist/chunk-KBCBVH7B.js.map +1 -0
- package/dist/chunk-KNQ7UQ2W.js +143 -0
- package/dist/chunk-KNQ7UQ2W.js.map +1 -0
- package/dist/chunk-KTBPIEP2.js +102 -0
- package/dist/chunk-KTBPIEP2.js.map +1 -0
- package/dist/chunk-L3SP7GHC.js +1023 -0
- package/dist/chunk-L3SP7GHC.js.map +1 -0
- package/dist/chunk-LBJG2UWT.js +100 -0
- package/dist/chunk-LBJG2UWT.js.map +1 -0
- package/dist/chunk-MLDX3Z67.js +470 -0
- package/dist/chunk-MLDX3Z67.js.map +1 -0
- package/dist/chunk-NNSS366W.js +331 -0
- package/dist/chunk-NNSS366W.js.map +1 -0
- package/dist/chunk-OQANRZPV.js +197 -0
- package/dist/chunk-OQANRZPV.js.map +1 -0
- package/dist/chunk-OW5A5IIF.js +175 -0
- package/dist/chunk-OW5A5IIF.js.map +1 -0
- package/dist/chunk-R225A5II.js +187 -0
- package/dist/chunk-R225A5II.js.map +1 -0
- package/dist/chunk-ROR4E6IE.js +119 -0
- package/dist/chunk-ROR4E6IE.js.map +1 -0
- package/dist/chunk-RPAQAZTI.js +54 -0
- package/dist/chunk-RPAQAZTI.js.map +1 -0
- package/dist/chunk-RQBXZKTH.js +452 -0
- package/dist/chunk-RQBXZKTH.js.map +1 -0
- package/dist/chunk-S5XJXU52.js +178 -0
- package/dist/chunk-S5XJXU52.js.map +1 -0
- package/dist/chunk-SAVE5ACL.js +324 -0
- package/dist/chunk-SAVE5ACL.js.map +1 -0
- package/dist/chunk-SERJ3TZE.js +640 -0
- package/dist/chunk-SERJ3TZE.js.map +1 -0
- package/dist/chunk-SK5ECBBK.js +175 -0
- package/dist/chunk-SK5ECBBK.js.map +1 -0
- package/dist/chunk-SOV4PE3P.js +218 -0
- package/dist/chunk-SOV4PE3P.js.map +1 -0
- package/dist/chunk-W7BQYIXF.js +687 -0
- package/dist/chunk-W7BQYIXF.js.map +1 -0
- package/dist/chunk-XMAH5PDW.js +59 -0
- package/dist/chunk-XMAH5PDW.js.map +1 -0
- package/dist/chunk-XOBGEMQY.js +94 -0
- package/dist/chunk-XOBGEMQY.js.map +1 -0
- package/dist/chunk-YNNAOXU5.js +57 -0
- package/dist/chunk-YNNAOXU5.js.map +1 -0
- package/dist/chunk-YZVSDRJD.js +253 -0
- package/dist/chunk-YZVSDRJD.js.map +1 -0
- package/dist/collapse/index.js +4 -0
- package/dist/collapse/index.js.map +1 -0
- package/dist/command/index.js +5 -0
- package/dist/command/index.js.map +1 -0
- package/dist/date-picker/index.js +5 -0
- package/dist/date-picker/index.js.map +1 -0
- package/dist/descriptions/index.js +4 -0
- package/dist/descriptions/index.js.map +1 -0
- package/dist/drawer/index.js +4 -0
- package/dist/drawer/index.js.map +1 -0
- package/dist/dropdown/index.js +5 -0
- package/dist/dropdown/index.js.map +1 -0
- package/dist/empty/index.js +4 -0
- package/dist/empty/index.js.map +1 -0
- package/dist/fetching-overlay/index.js +5 -0
- package/dist/fetching-overlay/index.js.map +1 -0
- package/dist/image/index.js +4 -0
- package/dist/image/index.js.map +1 -0
- package/dist/index.d.ts +2672 -0
- package/dist/index.js +976 -0
- package/dist/index.js.map +1 -0
- package/dist/input/index.js +5 -0
- package/dist/input/index.js.map +1 -0
- package/dist/input-group/index.js +4 -0
- package/dist/input-group/index.js.map +1 -0
- package/dist/input-otp/index.js +4 -0
- package/dist/input-otp/index.js.map +1 -0
- package/dist/input-password/index.js +6 -0
- package/dist/input-password/index.js.map +1 -0
- package/dist/kbd/index.js +4 -0
- package/dist/kbd/index.js.map +1 -0
- package/dist/modal/index.js +4 -0
- package/dist/modal/index.js.map +1 -0
- package/dist/multi-select/index.js +5 -0
- package/dist/multi-select/index.js.map +1 -0
- package/dist/notification/index.js +4 -0
- package/dist/notification/index.js.map +1 -0
- package/dist/pagination/index.js +4 -0
- package/dist/pagination/index.js.map +1 -0
- package/dist/popover/index.js +4 -0
- package/dist/popover/index.js.map +1 -0
- package/dist/progress/index.js +4 -0
- package/dist/progress/index.js.map +1 -0
- package/dist/radio/index.js +4 -0
- package/dist/radio/index.js.map +1 -0
- package/dist/radio-group/index.js +4 -0
- package/dist/radio-group/index.js.map +1 -0
- package/dist/rating/index.js +4 -0
- package/dist/rating/index.js.map +1 -0
- package/dist/ribbon/index.js +4 -0
- package/dist/ribbon/index.js.map +1 -0
- package/dist/select/index.js +6 -0
- package/dist/select/index.js.map +1 -0
- package/dist/skeleton/index.js +4 -0
- package/dist/skeleton/index.js.map +1 -0
- package/dist/slider/index.js +4 -0
- package/dist/slider/index.js.map +1 -0
- package/dist/spinner/index.js +4 -0
- package/dist/spinner/index.js.map +1 -0
- package/dist/stepper/index.js +4 -0
- package/dist/stepper/index.js.map +1 -0
- package/dist/styles/base.css +161 -0
- package/dist/styles/global.css +633 -0
- package/dist/styles/themes/dark.css +84 -0
- package/dist/styles/themes/light.css +84 -0
- package/dist/switch/index.js +4 -0
- package/dist/switch/index.js.map +1 -0
- package/dist/table/index.js +12 -0
- package/dist/table/index.js.map +1 -0
- package/dist/tabs/index.js +5 -0
- package/dist/tabs/index.js.map +1 -0
- package/dist/textarea/index.js +4 -0
- package/dist/textarea/index.js.map +1 -0
- package/dist/toggle/index.js +4 -0
- package/dist/toggle/index.js.map +1 -0
- package/dist/toggle-group/index.js +4 -0
- package/dist/toggle-group/index.js.map +1 -0
- package/dist/tooltip/index.js +4 -0
- package/dist/tooltip/index.js.map +1 -0
- package/dist/transfer/index.js +6 -0
- package/dist/transfer/index.js.map +1 -0
- package/dist/tree/index.js +4 -0
- package/dist/tree/index.js.map +1 -0
- package/dist/tree-select/index.js +6 -0
- package/dist/tree-select/index.js.map +1 -0
- package/package.json +107 -0
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
import { cn, iconSizes } from './chunk-YNNAOXU5.js';
|
|
2
|
+
import { cva } from 'class-variance-authority';
|
|
3
|
+
import { ChevronsLeft, ChevronLeft, MoreHorizontal, ChevronRight, ChevronsRight } from 'lucide-react';
|
|
4
|
+
import React, { useState } from 'react';
|
|
5
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
var paginationVariants = cva("inline-flex items-center gap-1", {
|
|
8
|
+
variants: {
|
|
9
|
+
size: {
|
|
10
|
+
xs: "text-xs",
|
|
11
|
+
sm: "text-sm",
|
|
12
|
+
md: "text-base",
|
|
13
|
+
lg: "text-lg"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
defaultVariants: {
|
|
17
|
+
size: "md"
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
var paginationItemVariants = cva(
|
|
21
|
+
"inline-flex items-center justify-center rounded-md font-medium outline-none transition-all cursor-pointer border min-w-fit",
|
|
22
|
+
{
|
|
23
|
+
variants: {
|
|
24
|
+
size: {
|
|
25
|
+
xs: "h-6 min-w-6 px-1.5 text-xs",
|
|
26
|
+
sm: "h-8 min-w-8 px-2 text-sm",
|
|
27
|
+
md: "h-10 min-w-10 px-3 text-base",
|
|
28
|
+
lg: "h-12 min-w-12 px-4 text-lg"
|
|
29
|
+
},
|
|
30
|
+
disabled: {
|
|
31
|
+
true: "opacity-50 cursor-not-allowed",
|
|
32
|
+
false: ""
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
defaultVariants: {
|
|
36
|
+
size: "md",
|
|
37
|
+
disabled: false
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
);
|
|
41
|
+
var colorStyles = {
|
|
42
|
+
default: {
|
|
43
|
+
default: "border-border bg-background text-text-primary hover:bg-surface hover:border-text-primary",
|
|
44
|
+
solid: "border-surface bg-surface text-text-primary hover:bg-surface/80",
|
|
45
|
+
soft: "border-border bg-surface/50 text-text-primary hover:bg-surface"
|
|
46
|
+
},
|
|
47
|
+
primary: {
|
|
48
|
+
default: "border-border bg-background text-text-primary hover:bg-primary/10 hover:border-primary",
|
|
49
|
+
solid: "border-primary bg-primary text-background hover:bg-primary/90",
|
|
50
|
+
soft: "border-primary/30 bg-primary/10 text-primary hover:bg-primary/20"
|
|
51
|
+
},
|
|
52
|
+
secondary: {
|
|
53
|
+
default: "border-border bg-background text-text-primary hover:bg-secondary/10 hover:border-secondary",
|
|
54
|
+
solid: "border-secondary bg-secondary text-background hover:bg-secondary/90",
|
|
55
|
+
soft: "border-secondary/30 bg-secondary/10 text-secondary hover:bg-secondary/20"
|
|
56
|
+
},
|
|
57
|
+
accent: {
|
|
58
|
+
default: "border-border bg-background text-text-primary hover:bg-accent/10 hover:border-accent",
|
|
59
|
+
solid: "border-accent bg-accent text-background hover:bg-accent/90",
|
|
60
|
+
soft: "border-accent/30 bg-accent/10 text-accent hover:bg-accent/20"
|
|
61
|
+
},
|
|
62
|
+
success: {
|
|
63
|
+
default: "border-border bg-background text-text-primary hover:bg-success/10 hover:border-success",
|
|
64
|
+
solid: "border-success bg-success text-background hover:bg-success/90",
|
|
65
|
+
soft: "border-success/30 bg-success/10 text-success hover:bg-success/20"
|
|
66
|
+
},
|
|
67
|
+
error: {
|
|
68
|
+
default: "border-border bg-background text-text-primary hover:bg-error/10 hover:border-error",
|
|
69
|
+
solid: "border-error bg-error text-background hover:bg-error/90",
|
|
70
|
+
soft: "border-error/30 bg-error/10 text-error hover:bg-error/20"
|
|
71
|
+
},
|
|
72
|
+
warning: {
|
|
73
|
+
default: "border-border bg-background text-text-primary hover:bg-warning/10 hover:border-warning",
|
|
74
|
+
solid: "border-warning bg-warning text-background hover:bg-warning/90",
|
|
75
|
+
soft: "border-warning/30 bg-warning/10 text-warning hover:bg-warning/20"
|
|
76
|
+
},
|
|
77
|
+
info: {
|
|
78
|
+
default: "border-border bg-background text-text-primary hover:bg-info/10 hover:border-info",
|
|
79
|
+
solid: "border-info bg-info text-background hover:bg-info/90",
|
|
80
|
+
soft: "border-info/30 bg-info/10 text-info hover:bg-info/20"
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
var activeColorStyles = {
|
|
84
|
+
default: {
|
|
85
|
+
default: "border-text-primary bg-surface text-text-primary",
|
|
86
|
+
solid: "border-border bg-surface text-text-primary",
|
|
87
|
+
soft: "border-border bg-surface text-text-primary"
|
|
88
|
+
},
|
|
89
|
+
primary: {
|
|
90
|
+
default: "border-primary bg-primary/10 text-primary",
|
|
91
|
+
solid: "border-primary bg-primary-hover text-background",
|
|
92
|
+
soft: "border-primary bg-primary/20 text-primary"
|
|
93
|
+
},
|
|
94
|
+
secondary: {
|
|
95
|
+
default: "border-secondary bg-secondary/10 text-secondary",
|
|
96
|
+
solid: "border-secondary bg-secondary text-background",
|
|
97
|
+
soft: "border-secondary bg-secondary/20 text-secondary"
|
|
98
|
+
},
|
|
99
|
+
accent: {
|
|
100
|
+
default: "border-accent bg-accent/10 text-accent",
|
|
101
|
+
solid: "border-accent bg-accent text-background",
|
|
102
|
+
soft: "border-accent bg-accent/20 text-accent"
|
|
103
|
+
},
|
|
104
|
+
success: {
|
|
105
|
+
default: "border-success bg-success/10 text-success",
|
|
106
|
+
solid: "border-success bg-success text-background",
|
|
107
|
+
soft: "border-success bg-success/20 text-success"
|
|
108
|
+
},
|
|
109
|
+
error: {
|
|
110
|
+
default: "border-error bg-error/10 text-error",
|
|
111
|
+
solid: "border-error bg-error text-background",
|
|
112
|
+
soft: "border-error bg-error/20 text-error"
|
|
113
|
+
},
|
|
114
|
+
warning: {
|
|
115
|
+
default: "border-warning bg-warning/10 text-warning",
|
|
116
|
+
solid: "border-warning bg-warning text-background",
|
|
117
|
+
soft: "border-warning bg-warning/20 text-warning"
|
|
118
|
+
},
|
|
119
|
+
info: {
|
|
120
|
+
default: "border-info bg-info/10 text-info",
|
|
121
|
+
solid: "border-info bg-info text-background",
|
|
122
|
+
soft: "border-info bg-info/20 text-info"
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
var Pagination = React.memo(
|
|
126
|
+
({
|
|
127
|
+
total,
|
|
128
|
+
current: controlledCurrent,
|
|
129
|
+
defaultCurrent = 1,
|
|
130
|
+
pageSize: controlledPageSize,
|
|
131
|
+
defaultPageSize = 10,
|
|
132
|
+
onChange,
|
|
133
|
+
onShowSizeChange,
|
|
134
|
+
color = "default",
|
|
135
|
+
size = "md",
|
|
136
|
+
variant = "default",
|
|
137
|
+
showSizeChanger = false,
|
|
138
|
+
pageSizeOptions = [10, 20, 50, 100],
|
|
139
|
+
showQuickJumper = false,
|
|
140
|
+
showFirstLastButtons = false,
|
|
141
|
+
showTotal,
|
|
142
|
+
disabled = false,
|
|
143
|
+
className
|
|
144
|
+
}) => {
|
|
145
|
+
const [internalCurrent, setInternalCurrent] = useState(defaultCurrent);
|
|
146
|
+
const [internalPageSize, setInternalPageSize] = useState(defaultPageSize);
|
|
147
|
+
const current = controlledCurrent !== void 0 ? controlledCurrent : internalCurrent;
|
|
148
|
+
const pageSize = controlledPageSize !== void 0 ? controlledPageSize : internalPageSize;
|
|
149
|
+
const totalPages = Math.ceil(total / pageSize);
|
|
150
|
+
const handlePageChange = (page) => {
|
|
151
|
+
if (disabled || page === current || page < 1 || page > totalPages) return;
|
|
152
|
+
if (controlledCurrent === void 0) {
|
|
153
|
+
setInternalCurrent(page);
|
|
154
|
+
}
|
|
155
|
+
onChange?.(page, pageSize);
|
|
156
|
+
};
|
|
157
|
+
const handlePageSizeChange = (newSize) => {
|
|
158
|
+
if (disabled) return;
|
|
159
|
+
const newTotalPages = Math.ceil(total / newSize);
|
|
160
|
+
const newCurrent = current > newTotalPages ? newTotalPages : current;
|
|
161
|
+
if (controlledPageSize === void 0) {
|
|
162
|
+
setInternalPageSize(newSize);
|
|
163
|
+
}
|
|
164
|
+
if (controlledCurrent === void 0 && newCurrent !== current) {
|
|
165
|
+
setInternalCurrent(newCurrent);
|
|
166
|
+
}
|
|
167
|
+
onShowSizeChange?.(newCurrent, newSize);
|
|
168
|
+
onChange?.(newCurrent, newSize);
|
|
169
|
+
};
|
|
170
|
+
const getPageNumbers = () => {
|
|
171
|
+
const pages = [];
|
|
172
|
+
const showPages = 5;
|
|
173
|
+
if (totalPages <= showPages + 2) {
|
|
174
|
+
for (let i = 1; i <= totalPages; i++) {
|
|
175
|
+
pages.push(i);
|
|
176
|
+
}
|
|
177
|
+
} else {
|
|
178
|
+
pages.push(1);
|
|
179
|
+
if (current <= 3) {
|
|
180
|
+
for (let i = 2; i <= 4; i++) {
|
|
181
|
+
pages.push(i);
|
|
182
|
+
}
|
|
183
|
+
pages.push("ellipsis");
|
|
184
|
+
} else if (current >= totalPages - 2) {
|
|
185
|
+
pages.push("ellipsis");
|
|
186
|
+
for (let i = totalPages - 3; i < totalPages; i++) {
|
|
187
|
+
pages.push(i);
|
|
188
|
+
}
|
|
189
|
+
} else {
|
|
190
|
+
pages.push("ellipsis");
|
|
191
|
+
pages.push(current - 1);
|
|
192
|
+
pages.push(current);
|
|
193
|
+
pages.push(current + 1);
|
|
194
|
+
pages.push("ellipsis");
|
|
195
|
+
}
|
|
196
|
+
pages.push(totalPages);
|
|
197
|
+
}
|
|
198
|
+
return pages;
|
|
199
|
+
};
|
|
200
|
+
const range = [
|
|
201
|
+
(current - 1) * pageSize + 1,
|
|
202
|
+
Math.min(current * pageSize, total)
|
|
203
|
+
];
|
|
204
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-4", className), children: [
|
|
205
|
+
showTotal && /* @__PURE__ */ jsx("div", { className: "text-text-secondary text-sm", children: showTotal(total, range) }),
|
|
206
|
+
/* @__PURE__ */ jsxs("div", { className: paginationVariants({ size }), children: [
|
|
207
|
+
showFirstLastButtons && /* @__PURE__ */ jsx(
|
|
208
|
+
"button",
|
|
209
|
+
{
|
|
210
|
+
onClick: () => handlePageChange(1),
|
|
211
|
+
disabled: disabled || current === 1,
|
|
212
|
+
className: cn(
|
|
213
|
+
paginationItemVariants({
|
|
214
|
+
size,
|
|
215
|
+
disabled: disabled || current === 1
|
|
216
|
+
}),
|
|
217
|
+
colorStyles[color][variant]
|
|
218
|
+
),
|
|
219
|
+
"aria-label": "First page",
|
|
220
|
+
children: /* @__PURE__ */ jsx(ChevronsLeft, { className: iconSizes[size] })
|
|
221
|
+
}
|
|
222
|
+
),
|
|
223
|
+
/* @__PURE__ */ jsx(
|
|
224
|
+
"button",
|
|
225
|
+
{
|
|
226
|
+
onClick: () => handlePageChange(current - 1),
|
|
227
|
+
disabled: disabled || current === 1,
|
|
228
|
+
className: cn(
|
|
229
|
+
paginationItemVariants({
|
|
230
|
+
size,
|
|
231
|
+
disabled: disabled || current === 1
|
|
232
|
+
}),
|
|
233
|
+
colorStyles[color][variant]
|
|
234
|
+
),
|
|
235
|
+
"aria-label": "Previous page",
|
|
236
|
+
children: /* @__PURE__ */ jsx(ChevronLeft, { className: iconSizes[size] })
|
|
237
|
+
}
|
|
238
|
+
),
|
|
239
|
+
getPageNumbers().map(
|
|
240
|
+
(page, index) => page === "ellipsis" ? /* @__PURE__ */ jsx(
|
|
241
|
+
"span",
|
|
242
|
+
{
|
|
243
|
+
className: cn(
|
|
244
|
+
paginationItemVariants({ size, disabled: false }),
|
|
245
|
+
colorStyles[color]["soft"],
|
|
246
|
+
"border-none pointer-events-none"
|
|
247
|
+
),
|
|
248
|
+
children: /* @__PURE__ */ jsx(MoreHorizontal, { className: iconSizes[size] })
|
|
249
|
+
},
|
|
250
|
+
`ellipsis-${index}`
|
|
251
|
+
) : /* @__PURE__ */ jsx(
|
|
252
|
+
"button",
|
|
253
|
+
{
|
|
254
|
+
onClick: () => handlePageChange(page),
|
|
255
|
+
disabled,
|
|
256
|
+
className: cn(
|
|
257
|
+
paginationItemVariants({ size, disabled }),
|
|
258
|
+
current === page ? activeColorStyles[color][variant] : colorStyles[color][variant]
|
|
259
|
+
),
|
|
260
|
+
children: page
|
|
261
|
+
},
|
|
262
|
+
page
|
|
263
|
+
)
|
|
264
|
+
),
|
|
265
|
+
/* @__PURE__ */ jsx(
|
|
266
|
+
"button",
|
|
267
|
+
{
|
|
268
|
+
onClick: () => handlePageChange(current + 1),
|
|
269
|
+
disabled: disabled || current === totalPages,
|
|
270
|
+
className: cn(
|
|
271
|
+
paginationItemVariants({
|
|
272
|
+
size,
|
|
273
|
+
disabled: disabled || current === totalPages
|
|
274
|
+
}),
|
|
275
|
+
colorStyles[color][variant]
|
|
276
|
+
),
|
|
277
|
+
"aria-label": "Next page",
|
|
278
|
+
children: /* @__PURE__ */ jsx(ChevronRight, { className: iconSizes[size] })
|
|
279
|
+
}
|
|
280
|
+
),
|
|
281
|
+
showFirstLastButtons && /* @__PURE__ */ jsx(
|
|
282
|
+
"button",
|
|
283
|
+
{
|
|
284
|
+
onClick: () => handlePageChange(totalPages),
|
|
285
|
+
disabled: disabled || current === totalPages,
|
|
286
|
+
className: cn(
|
|
287
|
+
paginationItemVariants({
|
|
288
|
+
size,
|
|
289
|
+
disabled: disabled || current === totalPages
|
|
290
|
+
}),
|
|
291
|
+
colorStyles[color][variant]
|
|
292
|
+
),
|
|
293
|
+
"aria-label": "Last page",
|
|
294
|
+
children: /* @__PURE__ */ jsx(ChevronsRight, { className: iconSizes[size] })
|
|
295
|
+
}
|
|
296
|
+
)
|
|
297
|
+
] }),
|
|
298
|
+
showSizeChanger && /* @__PURE__ */ jsx(
|
|
299
|
+
"select",
|
|
300
|
+
{
|
|
301
|
+
value: pageSize,
|
|
302
|
+
onChange: (e) => handlePageSizeChange(Number(e.target.value)),
|
|
303
|
+
disabled,
|
|
304
|
+
className: cn(
|
|
305
|
+
paginationItemVariants({ size, disabled }),
|
|
306
|
+
colorStyles[color][variant],
|
|
307
|
+
"cursor-pointer"
|
|
308
|
+
),
|
|
309
|
+
children: pageSizeOptions.map((option) => /* @__PURE__ */ jsxs(
|
|
310
|
+
"option",
|
|
311
|
+
{
|
|
312
|
+
value: option,
|
|
313
|
+
children: [
|
|
314
|
+
option,
|
|
315
|
+
" / page"
|
|
316
|
+
]
|
|
317
|
+
},
|
|
318
|
+
option
|
|
319
|
+
))
|
|
320
|
+
}
|
|
321
|
+
),
|
|
322
|
+
showQuickJumper && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
323
|
+
/* @__PURE__ */ jsx("span", { className: "text-text-secondary text-sm", children: "Go to" }),
|
|
324
|
+
/* @__PURE__ */ jsx(
|
|
325
|
+
"input",
|
|
326
|
+
{
|
|
327
|
+
type: "number",
|
|
328
|
+
min: 1,
|
|
329
|
+
max: totalPages,
|
|
330
|
+
disabled,
|
|
331
|
+
onKeyDown: (e) => {
|
|
332
|
+
if (e.key === "Enter") {
|
|
333
|
+
const value = parseInt(e.target.value);
|
|
334
|
+
if (value >= 1 && value <= totalPages) {
|
|
335
|
+
handlePageChange(value);
|
|
336
|
+
e.target.value = "";
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
},
|
|
340
|
+
className: cn(
|
|
341
|
+
paginationItemVariants({ size, disabled }),
|
|
342
|
+
colorStyles[color][variant],
|
|
343
|
+
"w-16 text-center"
|
|
344
|
+
)
|
|
345
|
+
}
|
|
346
|
+
)
|
|
347
|
+
] })
|
|
348
|
+
] });
|
|
349
|
+
}
|
|
350
|
+
);
|
|
351
|
+
Pagination.displayName = "Pagination";
|
|
352
|
+
var pagination_default = Pagination;
|
|
353
|
+
|
|
354
|
+
export { pagination_default };
|
|
355
|
+
//# sourceMappingURL=chunk-FGWSUPVW.js.map
|
|
356
|
+
//# sourceMappingURL=chunk-FGWSUPVW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/pagination/index.tsx"],"names":[],"mappings":"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","file":"chunk-FGWSUPVW.js","sourcesContent":["'use client'\n\nimport { cva } from 'class-variance-authority'\nimport {\n ChevronLeft,\n ChevronRight,\n ChevronsLeft,\n ChevronsRight,\n MoreHorizontal,\n} from 'lucide-react'\nimport React, { useState } from 'react'\n\nimport { cn, iconSizes } from '../utils'\nimport type { PaginationProps } from './types'\n\nconst paginationVariants = cva('inline-flex items-center gap-1', {\n variants: {\n size: {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nconst paginationItemVariants = cva(\n 'inline-flex items-center justify-center rounded-md font-medium outline-none transition-all cursor-pointer border min-w-fit',\n {\n variants: {\n size: {\n xs: 'h-6 min-w-6 px-1.5 text-xs',\n sm: 'h-8 min-w-8 px-2 text-sm',\n md: 'h-10 min-w-10 px-3 text-base',\n lg: 'h-12 min-w-12 px-4 text-lg',\n },\n disabled: {\n true: 'opacity-50 cursor-not-allowed',\n false: '',\n },\n },\n defaultVariants: {\n size: 'md',\n disabled: false,\n },\n },\n)\n\nconst colorStyles = {\n default: {\n default:\n 'border-border bg-background text-text-primary hover:bg-surface hover:border-text-primary',\n solid: 'border-surface bg-surface text-text-primary hover:bg-surface/80',\n soft: 'border-border bg-surface/50 text-text-primary hover:bg-surface',\n },\n primary: {\n default:\n 'border-border bg-background text-text-primary hover:bg-primary/10 hover:border-primary',\n solid: 'border-primary bg-primary text-background hover:bg-primary/90',\n soft: 'border-primary/30 bg-primary/10 text-primary hover:bg-primary/20',\n },\n secondary: {\n default:\n 'border-border bg-background text-text-primary hover:bg-secondary/10 hover:border-secondary',\n solid:\n 'border-secondary bg-secondary text-background hover:bg-secondary/90',\n soft: 'border-secondary/30 bg-secondary/10 text-secondary hover:bg-secondary/20',\n },\n accent: {\n default:\n 'border-border bg-background text-text-primary hover:bg-accent/10 hover:border-accent',\n solid: 'border-accent bg-accent text-background hover:bg-accent/90',\n soft: 'border-accent/30 bg-accent/10 text-accent hover:bg-accent/20',\n },\n success: {\n default:\n 'border-border bg-background text-text-primary hover:bg-success/10 hover:border-success',\n solid: 'border-success bg-success text-background hover:bg-success/90',\n soft: 'border-success/30 bg-success/10 text-success hover:bg-success/20',\n },\n error: {\n default:\n 'border-border bg-background text-text-primary hover:bg-error/10 hover:border-error',\n solid: 'border-error bg-error text-background hover:bg-error/90',\n soft: 'border-error/30 bg-error/10 text-error hover:bg-error/20',\n },\n warning: {\n default:\n 'border-border bg-background text-text-primary hover:bg-warning/10 hover:border-warning',\n solid: 'border-warning bg-warning text-background hover:bg-warning/90',\n soft: 'border-warning/30 bg-warning/10 text-warning hover:bg-warning/20',\n },\n info: {\n default:\n 'border-border bg-background text-text-primary hover:bg-info/10 hover:border-info',\n solid: 'border-info bg-info text-background hover:bg-info/90',\n soft: 'border-info/30 bg-info/10 text-info hover:bg-info/20',\n },\n}\n\nconst activeColorStyles = {\n default: {\n default: 'border-text-primary bg-surface text-text-primary',\n solid: 'border-border bg-surface text-text-primary',\n soft: 'border-border bg-surface text-text-primary',\n },\n primary: {\n default: 'border-primary bg-primary/10 text-primary',\n solid: 'border-primary bg-primary-hover text-background',\n soft: 'border-primary bg-primary/20 text-primary',\n },\n secondary: {\n default: 'border-secondary bg-secondary/10 text-secondary',\n solid: 'border-secondary bg-secondary text-background',\n soft: 'border-secondary bg-secondary/20 text-secondary',\n },\n accent: {\n default: 'border-accent bg-accent/10 text-accent',\n solid: 'border-accent bg-accent text-background',\n soft: 'border-accent bg-accent/20 text-accent',\n },\n success: {\n default: 'border-success bg-success/10 text-success',\n solid: 'border-success bg-success text-background',\n soft: 'border-success bg-success/20 text-success',\n },\n error: {\n default: 'border-error bg-error/10 text-error',\n solid: 'border-error bg-error text-background',\n soft: 'border-error bg-error/20 text-error',\n },\n warning: {\n default: 'border-warning bg-warning/10 text-warning',\n solid: 'border-warning bg-warning text-background',\n soft: 'border-warning bg-warning/20 text-warning',\n },\n info: {\n default: 'border-info bg-info/10 text-info',\n solid: 'border-info bg-info text-background',\n soft: 'border-info bg-info/20 text-info',\n },\n}\n\nconst Pagination = React.memo<PaginationProps>(\n ({\n total,\n current: controlledCurrent,\n defaultCurrent = 1,\n pageSize: controlledPageSize,\n defaultPageSize = 10,\n onChange,\n onShowSizeChange,\n color = 'default',\n size = 'md',\n variant = 'default',\n showSizeChanger = false,\n pageSizeOptions = [10, 20, 50, 100],\n showQuickJumper = false,\n showFirstLastButtons = false,\n showTotal,\n disabled = false,\n className,\n }) => {\n const [internalCurrent, setInternalCurrent] = useState(defaultCurrent)\n const [internalPageSize, setInternalPageSize] = useState(defaultPageSize)\n\n const current =\n controlledCurrent !== undefined ? controlledCurrent : internalCurrent\n const pageSize =\n controlledPageSize !== undefined ? controlledPageSize : internalPageSize\n const totalPages = Math.ceil(total / pageSize)\n\n const handlePageChange = (page: number) => {\n if (disabled || page === current || page < 1 || page > totalPages) return\n\n if (controlledCurrent === undefined) {\n setInternalCurrent(page)\n }\n onChange?.(page, pageSize)\n }\n\n const handlePageSizeChange = (newSize: number) => {\n if (disabled) return\n\n const newTotalPages = Math.ceil(total / newSize)\n const newCurrent = current > newTotalPages ? newTotalPages : current\n\n if (controlledPageSize === undefined) {\n setInternalPageSize(newSize)\n }\n if (controlledCurrent === undefined && newCurrent !== current) {\n setInternalCurrent(newCurrent)\n }\n\n onShowSizeChange?.(newCurrent, newSize)\n onChange?.(newCurrent, newSize)\n }\n\n const getPageNumbers = () => {\n const pages: (number | 'ellipsis')[] = []\n const showPages = 5\n\n if (totalPages <= showPages + 2) {\n for (let i = 1; i <= totalPages; i++) {\n pages.push(i)\n }\n } else {\n pages.push(1)\n\n if (current <= 3) {\n for (let i = 2; i <= 4; i++) {\n pages.push(i)\n }\n pages.push('ellipsis')\n } else if (current >= totalPages - 2) {\n pages.push('ellipsis')\n for (let i = totalPages - 3; i < totalPages; i++) {\n pages.push(i)\n }\n } else {\n pages.push('ellipsis')\n pages.push(current - 1)\n pages.push(current)\n pages.push(current + 1)\n pages.push('ellipsis')\n }\n\n pages.push(totalPages)\n }\n\n return pages\n }\n\n const range: [number, number] = [\n (current - 1) * pageSize + 1,\n Math.min(current * pageSize, total),\n ]\n\n return (\n <div className={cn('flex items-center gap-4', className)}>\n {showTotal && (\n <div className=\"text-text-secondary text-sm\">\n {showTotal(total, range)}\n </div>\n )}\n\n <div className={paginationVariants({ size })}>\n {/* First Page Button */}\n {showFirstLastButtons && (\n <button\n onClick={() => handlePageChange(1)}\n disabled={disabled || current === 1}\n className={cn(\n paginationItemVariants({\n size,\n disabled: disabled || current === 1,\n }),\n colorStyles[color][variant],\n )}\n aria-label=\"First page\"\n >\n <ChevronsLeft className={iconSizes[size]} />\n </button>\n )}\n\n {/* Previous Button */}\n <button\n onClick={() => handlePageChange(current - 1)}\n disabled={disabled || current === 1}\n className={cn(\n paginationItemVariants({\n size,\n disabled: disabled || current === 1,\n }),\n colorStyles[color][variant],\n )}\n aria-label=\"Previous page\"\n >\n <ChevronLeft className={iconSizes[size]} />\n </button>\n\n {/* Page Numbers */}\n {getPageNumbers().map((page, index) =>\n page === 'ellipsis' ? (\n <span\n key={`ellipsis-${index}`}\n className={cn(\n paginationItemVariants({ size, disabled: false }),\n colorStyles[color]['soft'],\n 'border-none pointer-events-none',\n )}\n >\n <MoreHorizontal className={iconSizes[size]} />\n </span>\n ) : (\n <button\n key={page}\n onClick={() => handlePageChange(page)}\n disabled={disabled}\n className={cn(\n paginationItemVariants({ size, disabled }),\n current === page\n ? activeColorStyles[color][variant]\n : colorStyles[color][variant],\n )}\n >\n {page}\n </button>\n ),\n )}\n\n {/* Next Button */}\n <button\n onClick={() => handlePageChange(current + 1)}\n disabled={disabled || current === totalPages}\n className={cn(\n paginationItemVariants({\n size,\n disabled: disabled || current === totalPages,\n }),\n colorStyles[color][variant],\n )}\n aria-label=\"Next page\"\n >\n <ChevronRight className={iconSizes[size]} />\n </button>\n\n {/* Last Page Button */}\n {showFirstLastButtons && (\n <button\n onClick={() => handlePageChange(totalPages)}\n disabled={disabled || current === totalPages}\n className={cn(\n paginationItemVariants({\n size,\n disabled: disabled || current === totalPages,\n }),\n colorStyles[color][variant],\n )}\n aria-label=\"Last page\"\n >\n <ChevronsRight className={iconSizes[size]} />\n </button>\n )}\n </div>\n\n {/* Page Size Changer */}\n {showSizeChanger && (\n <select\n value={pageSize}\n onChange={(e) => handlePageSizeChange(Number(e.target.value))}\n disabled={disabled}\n className={cn(\n paginationItemVariants({ size, disabled }),\n colorStyles[color][variant],\n 'cursor-pointer',\n )}\n >\n {pageSizeOptions.map((option) => (\n <option\n key={option}\n value={option}\n >\n {option} / page\n </option>\n ))}\n </select>\n )}\n\n {/* Quick Jumper */}\n {showQuickJumper && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-text-secondary text-sm\">Go to</span>\n <input\n type=\"number\"\n min={1}\n max={totalPages}\n disabled={disabled}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n const value = parseInt((e.target as HTMLInputElement).value)\n if (value >= 1 && value <= totalPages) {\n handlePageChange(value)\n ;(e.target as HTMLInputElement).value = ''\n }\n }\n }}\n className={cn(\n paginationItemVariants({ size, disabled }),\n colorStyles[color][variant],\n 'w-16 text-center',\n )}\n />\n </div>\n )}\n </div>\n )\n },\n)\n\nPagination.displayName = 'Pagination'\n\nexport type * from './types'\nexport default Pagination\n"]}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { getValidationStatus, cn, statusMessageVariants } from './chunk-YNNAOXU5.js';
|
|
2
|
+
import { cva } from 'class-variance-authority';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
var textareaVariants = cva(
|
|
7
|
+
"w-full rounded-md focus:border-primary transition-colors text-text-primary placeholder:text-text-muted disabled:opacity-50 disabled:cursor-not-allowed read-only:bg-surface read-only:cursor-default outline-none",
|
|
8
|
+
{
|
|
9
|
+
variants: {
|
|
10
|
+
variant: {
|
|
11
|
+
outline: "bg-background border border-border",
|
|
12
|
+
filled: "bg-surface border border-transparent"
|
|
13
|
+
},
|
|
14
|
+
status: {
|
|
15
|
+
default: "",
|
|
16
|
+
error: "!border-error focus:!border-error",
|
|
17
|
+
warning: "!border-warning focus:!border-warning",
|
|
18
|
+
info: "!border-info focus:!border-info",
|
|
19
|
+
success: "!border-success focus:!border-success"
|
|
20
|
+
},
|
|
21
|
+
size: {
|
|
22
|
+
xs: "min-h-20 p-2 text-xs",
|
|
23
|
+
sm: "min-h-[var(--textarea-min-height)] p-[var(--textarea-padding-sm)] text-sm",
|
|
24
|
+
md: "min-h-[var(--textarea-min-height)] p-[var(--textarea-padding-md)] text-base",
|
|
25
|
+
lg: "min-h-[var(--textarea-min-height)] p-[var(--textarea-padding-lg)] text-lg"
|
|
26
|
+
},
|
|
27
|
+
resize: {
|
|
28
|
+
none: "resize-none",
|
|
29
|
+
vertical: "resize-y",
|
|
30
|
+
horizontal: "resize-x",
|
|
31
|
+
both: "resize"
|
|
32
|
+
},
|
|
33
|
+
fullWidth: {
|
|
34
|
+
true: "w-full",
|
|
35
|
+
false: "max-w-full"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
defaultVariants: {
|
|
39
|
+
variant: "outline",
|
|
40
|
+
status: "default",
|
|
41
|
+
size: "md",
|
|
42
|
+
resize: "vertical",
|
|
43
|
+
fullWidth: true
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
);
|
|
47
|
+
var Textarea = React.memo(
|
|
48
|
+
({
|
|
49
|
+
variant = "outline",
|
|
50
|
+
size = "md",
|
|
51
|
+
label,
|
|
52
|
+
helperText,
|
|
53
|
+
messagePosition = "bottom",
|
|
54
|
+
error,
|
|
55
|
+
warning,
|
|
56
|
+
info,
|
|
57
|
+
success,
|
|
58
|
+
resize = "vertical",
|
|
59
|
+
showCount = false,
|
|
60
|
+
maxLength,
|
|
61
|
+
autoResize = false,
|
|
62
|
+
fullWidth = true,
|
|
63
|
+
className,
|
|
64
|
+
value,
|
|
65
|
+
onChange,
|
|
66
|
+
ref,
|
|
67
|
+
...props
|
|
68
|
+
}) => {
|
|
69
|
+
const internalRef = React.useRef(null);
|
|
70
|
+
const textareaRef = ref || internalRef;
|
|
71
|
+
const [internalValue, setInternalValue] = React.useState(value || "");
|
|
72
|
+
const currentValue = value !== void 0 ? value : internalValue;
|
|
73
|
+
const currentLength = String(currentValue).length;
|
|
74
|
+
const { status, message: helperMessage } = getValidationStatus({
|
|
75
|
+
error,
|
|
76
|
+
warning,
|
|
77
|
+
info,
|
|
78
|
+
success,
|
|
79
|
+
helperText
|
|
80
|
+
});
|
|
81
|
+
const handleChange = React.useCallback(
|
|
82
|
+
(e) => {
|
|
83
|
+
if (value === void 0) {
|
|
84
|
+
setInternalValue(e.target.value);
|
|
85
|
+
}
|
|
86
|
+
onChange?.(e);
|
|
87
|
+
},
|
|
88
|
+
[value, onChange]
|
|
89
|
+
);
|
|
90
|
+
React.useEffect(() => {
|
|
91
|
+
if (autoResize && textareaRef.current) {
|
|
92
|
+
textareaRef.current.style.height = "auto";
|
|
93
|
+
textareaRef.current.style.height = `${textareaRef.current.scrollHeight}px`;
|
|
94
|
+
}
|
|
95
|
+
}, [currentValue, autoResize, textareaRef]);
|
|
96
|
+
const textareaElement = /* @__PURE__ */ jsx(
|
|
97
|
+
"textarea",
|
|
98
|
+
{
|
|
99
|
+
ref: textareaRef,
|
|
100
|
+
className: cn(
|
|
101
|
+
textareaVariants({
|
|
102
|
+
variant,
|
|
103
|
+
status,
|
|
104
|
+
size,
|
|
105
|
+
resize: autoResize ? "none" : resize,
|
|
106
|
+
fullWidth
|
|
107
|
+
}),
|
|
108
|
+
autoResize && "overflow-hidden",
|
|
109
|
+
className
|
|
110
|
+
),
|
|
111
|
+
maxLength,
|
|
112
|
+
value: currentValue,
|
|
113
|
+
onChange: handleChange,
|
|
114
|
+
"aria-invalid": status === "error",
|
|
115
|
+
"aria-describedby": helperMessage ? `textarea-helper-${status}` : void 0,
|
|
116
|
+
...props
|
|
117
|
+
}
|
|
118
|
+
);
|
|
119
|
+
if (!label && !helperMessage && !showCount) return textareaElement;
|
|
120
|
+
return /* @__PURE__ */ jsxs(
|
|
121
|
+
"div",
|
|
122
|
+
{
|
|
123
|
+
className: cn(
|
|
124
|
+
"w-full flex flex-col relative",
|
|
125
|
+
!fullWidth && "inline-block"
|
|
126
|
+
),
|
|
127
|
+
children: [
|
|
128
|
+
/* @__PURE__ */ jsxs("div", { className: "flex gap-2 items-center relative mb-0.5", children: [
|
|
129
|
+
label && /* @__PURE__ */ jsxs("p", { className: "text-sm font-medium text-text-secondary", children: [
|
|
130
|
+
label,
|
|
131
|
+
props.required && /* @__PURE__ */ jsx("span", { className: "text-error ml-1", children: "*" })
|
|
132
|
+
] }),
|
|
133
|
+
helperMessage && messagePosition === "top" && /* @__PURE__ */ jsx(
|
|
134
|
+
"p",
|
|
135
|
+
{
|
|
136
|
+
id: `textarea-helper-${status}`,
|
|
137
|
+
className: statusMessageVariants({ status }),
|
|
138
|
+
children: helperMessage
|
|
139
|
+
}
|
|
140
|
+
),
|
|
141
|
+
showCount && maxLength && /* @__PURE__ */ jsxs("span", { className: "text-xs text-text-secondary absolute right-0", children: [
|
|
142
|
+
currentLength,
|
|
143
|
+
"/",
|
|
144
|
+
maxLength
|
|
145
|
+
] })
|
|
146
|
+
] }),
|
|
147
|
+
textareaElement,
|
|
148
|
+
helperMessage && messagePosition === "bottom" && /* @__PURE__ */ jsx(
|
|
149
|
+
"p",
|
|
150
|
+
{
|
|
151
|
+
id: `textarea-helper-${status}`,
|
|
152
|
+
className: cn(statusMessageVariants({ status }), "mt-0.5"),
|
|
153
|
+
children: helperMessage
|
|
154
|
+
}
|
|
155
|
+
)
|
|
156
|
+
]
|
|
157
|
+
}
|
|
158
|
+
);
|
|
159
|
+
}
|
|
160
|
+
);
|
|
161
|
+
Textarea.displayName = "Textarea";
|
|
162
|
+
var textarea_default = Textarea;
|
|
163
|
+
|
|
164
|
+
export { textarea_default };
|
|
165
|
+
//# sourceMappingURL=chunk-FPOXTCYV.js.map
|
|
166
|
+
//# sourceMappingURL=chunk-FPOXTCYV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/textarea/index.tsx"],"names":[],"mappings":";;;;;AAMA,IAAM,gBAAA,GAAmB,GAAA;AAAA,EACvB,mNAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,oCAAA;AAAA,QACT,MAAA,EAAQ;AAAA,OACV;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,EAAA;AAAA,QACT,KAAA,EAAO,mCAAA;AAAA,QACP,OAAA,EAAS,uCAAA;AAAA,QACT,IAAA,EAAM,iCAAA;AAAA,QACN,OAAA,EAAS;AAAA,OACX;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,sBAAA;AAAA,QACJ,EAAA,EAAI,2EAAA;AAAA,QACJ,EAAA,EAAI,6EAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,IAAA,EAAM,aAAA;AAAA,QACN,QAAA,EAAU,UAAA;AAAA,QACV,UAAA,EAAY,UAAA;AAAA,QACZ,IAAA,EAAM;AAAA,OACR;AAAA,MACA,SAAA,EAAW;AAAA,QACT,IAAA,EAAM,QAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,MAAA,EAAQ,SAAA;AAAA,MACR,IAAA,EAAM,IAAA;AAAA,MACN,MAAA,EAAQ,UAAA;AAAA,MACR,SAAA,EAAW;AAAA;AACb;AAEJ,CAAA;AAEA,IAAM,WAAW,KAAA,CAAM,IAAA;AAAA,EACrB,CAAC;AAAA,IACC,OAAA,GAAU,SAAA;AAAA,IACV,IAAA,GAAO,IAAA;AAAA,IACP,KAAA;AAAA,IACA,UAAA;AAAA,IACA,eAAA,GAAkB,QAAA;AAAA,IAClB,KAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA,GAAS,UAAA;AAAA,IACT,SAAA,GAAY,KAAA;AAAA,IACZ,SAAA;AAAA,IACA,UAAA,GAAa,KAAA;AAAA,IACb,SAAA,GAAY,IAAA;AAAA,IACZ,SAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG;AAAA,GACL,KAAM;AACJ,IAAA,MAAM,WAAA,GAAc,KAAA,CAAM,MAAA,CAA4B,IAAI,CAAA;AAC1D,IAAA,MAAM,cACH,GAAA,IAAgD,WAAA;AACnD,IAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,IAAI,KAAA,CAAM,QAAA,CAAS,SAAS,EAAE,CAAA;AACpE,IAAA,MAAM,YAAA,GAAe,KAAA,KAAU,MAAA,GAAY,KAAA,GAAQ,aAAA;AACnD,IAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,YAAY,CAAA,CAAE,MAAA;AAG3C,IAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAS,aAAA,KAAkB,mBAAA,CAAoB;AAAA,MAC7D,KAAA;AAAA,MACA,OAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,MAAM,eAAe,KAAA,CAAM,WAAA;AAAA,MACzB,CAAC,CAAA,KAA8C;AAC7C,QAAA,IAAI,UAAU,MAAA,EAAW;AACvB,UAAA,gBAAA,CAAiB,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,QACjC;AACA,QAAA,QAAA,GAAW,CAAC,CAAA;AAAA,MACd,CAAA;AAAA,MACA,CAAC,OAAO,QAAQ;AAAA,KAClB;AAEA,IAAA,KAAA,CAAM,UAAU,MAAM;AACpB,MAAA,IAAI,UAAA,IAAc,YAAY,OAAA,EAAS;AACrC,QAAA,WAAA,CAAY,OAAA,CAAQ,MAAM,MAAA,GAAS,MAAA;AACnC,QAAA,WAAA,CAAY,QAAQ,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG,WAAA,CAAY,QAAQ,YAAY,CAAA,EAAA,CAAA;AAAA,MACxE;AAAA,IACF,CAAA,EAAG,CAAC,YAAA,EAAc,UAAA,EAAY,WAAW,CAAC,CAAA;AAE1C,IAAA,MAAM,eAAA,mBACJ,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,WAAA;AAAA,QACL,SAAA,EAAW,EAAA;AAAA,UACT,gBAAA,CAAiB;AAAA,YACf,OAAA;AAAA,YACA,MAAA;AAAA,YACA,IAAA;AAAA,YACA,MAAA,EAAQ,aAAa,MAAA,GAAS,MAAA;AAAA,YAC9B;AAAA,WACD,CAAA;AAAA,UACD,UAAA,IAAc,iBAAA;AAAA,UACd;AAAA,SACF;AAAA,QACA,SAAA;AAAA,QACA,KAAA,EAAO,YAAA;AAAA,QACP,QAAA,EAAU,YAAA;AAAA,QACV,gBAAc,MAAA,KAAW,OAAA;AAAA,QACzB,kBAAA,EACE,aAAA,GAAgB,CAAA,gBAAA,EAAmB,MAAM,CAAA,CAAA,GAAK,MAAA;AAAA,QAE/C,GAAG;AAAA;AAAA,KACN;AAGF,IAAA,IAAI,CAAC,KAAA,IAAS,CAAC,aAAA,IAAiB,CAAC,WAAW,OAAO,eAAA;AAEnD,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,+BAAA;AAAA,UACA,CAAC,SAAA,IAAa;AAAA,SAChB;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yCAAA,EACZ,QAAA,EAAA;AAAA,YAAA,KAAA,oBACC,IAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,yCAAA,EACV,QAAA,EAAA;AAAA,cAAA,KAAA;AAAA,cACA,MAAM,QAAA,oBAAY,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mBAAkB,QAAA,EAAA,GAAA,EAAC;AAAA,aAAA,EACxD,CAAA;AAAA,YAED,aAAA,IAAiB,oBAAoB,KAAA,oBACpC,GAAA;AAAA,cAAC,GAAA;AAAA,cAAA;AAAA,gBACC,EAAA,EAAI,mBAAmB,MAAM,CAAA,CAAA;AAAA,gBAC7B,SAAA,EAAW,qBAAA,CAAsB,EAAE,MAAA,EAAQ,CAAA;AAAA,gBAE1C,QAAA,EAAA;AAAA;AAAA,aACH;AAAA,YAED,SAAA,IAAa,SAAA,oBACZ,IAAA,CAAC,MAAA,EAAA,EAAK,WAAU,8CAAA,EACb,QAAA,EAAA;AAAA,cAAA,aAAA;AAAA,cAAc,GAAA;AAAA,cAAE;AAAA,aAAA,EACnB;AAAA,WAAA,EAEJ,CAAA;AAAA,UACC,eAAA;AAAA,UACA,aAAA,IAAiB,oBAAoB,QAAA,oBACpC,GAAA;AAAA,YAAC,GAAA;AAAA,YAAA;AAAA,cACC,EAAA,EAAI,mBAAmB,MAAM,CAAA,CAAA;AAAA,cAC7B,WAAW,EAAA,CAAG,qBAAA,CAAsB,EAAE,MAAA,EAAQ,GAAG,QAAQ,CAAA;AAAA,cAExD,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF,CAAA;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA;AAGvB,IAAO,gBAAA,GAAQ","file":"chunk-FPOXTCYV.js","sourcesContent":["import { cva } from 'class-variance-authority'\nimport React from 'react'\n\nimport { cn, getValidationStatus, statusMessageVariants } from '../utils'\nimport type { TextareaProps } from './types'\n\nconst textareaVariants = cva(\n 'w-full rounded-md focus:border-primary transition-colors text-text-primary placeholder:text-text-muted disabled:opacity-50 disabled:cursor-not-allowed read-only:bg-surface read-only:cursor-default outline-none',\n {\n variants: {\n variant: {\n outline: 'bg-background border border-border',\n filled: 'bg-surface border border-transparent',\n },\n status: {\n default: '',\n error: '!border-error focus:!border-error',\n warning: '!border-warning focus:!border-warning',\n info: '!border-info focus:!border-info',\n success: '!border-success focus:!border-success',\n },\n size: {\n xs: 'min-h-20 p-2 text-xs',\n sm: 'min-h-[var(--textarea-min-height)] p-[var(--textarea-padding-sm)] text-sm',\n md: 'min-h-[var(--textarea-min-height)] p-[var(--textarea-padding-md)] text-base',\n lg: 'min-h-[var(--textarea-min-height)] p-[var(--textarea-padding-lg)] text-lg',\n },\n resize: {\n none: 'resize-none',\n vertical: 'resize-y',\n horizontal: 'resize-x',\n both: 'resize',\n },\n fullWidth: {\n true: 'w-full',\n false: 'max-w-full',\n },\n },\n defaultVariants: {\n variant: 'outline',\n status: 'default',\n size: 'md',\n resize: 'vertical',\n fullWidth: true,\n },\n },\n)\n\nconst Textarea = React.memo<TextareaProps>(\n ({\n variant = 'outline',\n size = 'md',\n label,\n helperText,\n messagePosition = 'bottom',\n error,\n warning,\n info,\n success,\n resize = 'vertical',\n showCount = false,\n maxLength,\n autoResize = false,\n fullWidth = true,\n className,\n value,\n onChange,\n ref,\n ...props\n }) => {\n const internalRef = React.useRef<HTMLTextAreaElement>(null)\n const textareaRef =\n (ref as React.RefObject<HTMLTextAreaElement>) || internalRef\n const [internalValue, setInternalValue] = React.useState(value || '')\n const currentValue = value !== undefined ? value : internalValue\n const currentLength = String(currentValue).length\n\n // Use shared validation status utility\n const { status, message: helperMessage } = getValidationStatus({\n error,\n warning,\n info,\n success,\n helperText,\n })\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (value === undefined) {\n setInternalValue(e.target.value)\n }\n onChange?.(e)\n },\n [value, onChange],\n )\n\n React.useEffect(() => {\n if (autoResize && textareaRef.current) {\n textareaRef.current.style.height = 'auto'\n textareaRef.current.style.height = `${textareaRef.current.scrollHeight}px`\n }\n }, [currentValue, autoResize, textareaRef])\n\n const textareaElement = (\n <textarea\n ref={textareaRef}\n className={cn(\n textareaVariants({\n variant,\n status,\n size,\n resize: autoResize ? 'none' : resize,\n fullWidth,\n }),\n autoResize && 'overflow-hidden',\n className,\n )}\n maxLength={maxLength}\n value={currentValue}\n onChange={handleChange}\n aria-invalid={status === 'error'}\n aria-describedby={\n helperMessage ? `textarea-helper-${status}` : undefined\n }\n {...props}\n />\n )\n\n if (!label && !helperMessage && !showCount) return textareaElement\n\n return (\n <div\n className={cn(\n 'w-full flex flex-col relative',\n !fullWidth && 'inline-block',\n )}\n >\n <div className=\"flex gap-2 items-center relative mb-0.5\">\n {label && (\n <p className=\"text-sm font-medium text-text-secondary\">\n {label}\n {props.required && <span className=\"text-error ml-1\">*</span>}\n </p>\n )}\n {helperMessage && messagePosition === 'top' && (\n <p\n id={`textarea-helper-${status}`}\n className={statusMessageVariants({ status })}\n >\n {helperMessage}\n </p>\n )}\n {showCount && maxLength && (\n <span className=\"text-xs text-text-secondary absolute right-0\">\n {currentLength}/{maxLength}\n </span>\n )}\n </div>\n {textareaElement}\n {helperMessage && messagePosition === 'bottom' && (\n <p\n id={`textarea-helper-${status}`}\n className={cn(statusMessageVariants({ status }), 'mt-0.5')}\n >\n {helperMessage}\n </p>\n )}\n </div>\n )\n },\n)\n\nTextarea.displayName = 'Textarea'\n\nexport type * from './types'\nexport default Textarea\n"]}
|