@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.
Files changed (205) hide show
  1. package/README.md +296 -0
  2. package/dist/accordion/index.js +5 -0
  3. package/dist/accordion/index.js.map +1 -0
  4. package/dist/badge/index.js +5 -0
  5. package/dist/badge/index.js.map +1 -0
  6. package/dist/button/index.js +6 -0
  7. package/dist/button/index.js.map +1 -0
  8. package/dist/card/index.js +4 -0
  9. package/dist/card/index.js.map +1 -0
  10. package/dist/carousel/index.js +3 -0
  11. package/dist/carousel/index.js.map +1 -0
  12. package/dist/cascader/index.js +4 -0
  13. package/dist/cascader/index.js.map +1 -0
  14. package/dist/chart/index.js +4 -0
  15. package/dist/chart/index.js.map +1 -0
  16. package/dist/checkbox/index.js +5 -0
  17. package/dist/checkbox/index.js.map +1 -0
  18. package/dist/checkbox-group/index.js +4 -0
  19. package/dist/checkbox-group/index.js.map +1 -0
  20. package/dist/chunk-2JGAYDZR.js +181 -0
  21. package/dist/chunk-2JGAYDZR.js.map +1 -0
  22. package/dist/chunk-3PFA3YG6.js +228 -0
  23. package/dist/chunk-3PFA3YG6.js.map +1 -0
  24. package/dist/chunk-4OMLQCUV.js +96 -0
  25. package/dist/chunk-4OMLQCUV.js.map +1 -0
  26. package/dist/chunk-4P5EMRFI.js +298 -0
  27. package/dist/chunk-4P5EMRFI.js.map +1 -0
  28. package/dist/chunk-5UEWVFF6.js +212 -0
  29. package/dist/chunk-5UEWVFF6.js.map +1 -0
  30. package/dist/chunk-5VCGW53O.js +332 -0
  31. package/dist/chunk-5VCGW53O.js.map +1 -0
  32. package/dist/chunk-75XESYGN.js +49 -0
  33. package/dist/chunk-75XESYGN.js.map +1 -0
  34. package/dist/chunk-7AEGBABZ.js +1102 -0
  35. package/dist/chunk-7AEGBABZ.js.map +1 -0
  36. package/dist/chunk-AOITJRSV.js +134 -0
  37. package/dist/chunk-AOITJRSV.js.map +1 -0
  38. package/dist/chunk-AWPKZYHT.js +152 -0
  39. package/dist/chunk-AWPKZYHT.js.map +1 -0
  40. package/dist/chunk-BNILRB4T.js +37 -0
  41. package/dist/chunk-BNILRB4T.js.map +1 -0
  42. package/dist/chunk-BP434VYV.js +448 -0
  43. package/dist/chunk-BP434VYV.js.map +1 -0
  44. package/dist/chunk-C7SXY3ZV.js +65 -0
  45. package/dist/chunk-C7SXY3ZV.js.map +1 -0
  46. package/dist/chunk-CLLQDCDR.js +560 -0
  47. package/dist/chunk-CLLQDCDR.js.map +1 -0
  48. package/dist/chunk-CWHFK7ZC.js +128 -0
  49. package/dist/chunk-CWHFK7ZC.js.map +1 -0
  50. package/dist/chunk-D3JWPGCA.js +123 -0
  51. package/dist/chunk-D3JWPGCA.js.map +1 -0
  52. package/dist/chunk-DOKTHDG3.js +55 -0
  53. package/dist/chunk-DOKTHDG3.js.map +1 -0
  54. package/dist/chunk-DPOSWW22.js +126 -0
  55. package/dist/chunk-DPOSWW22.js.map +1 -0
  56. package/dist/chunk-E2CYDDYC.js +39 -0
  57. package/dist/chunk-E2CYDDYC.js.map +1 -0
  58. package/dist/chunk-EYTOKUBM.js +401 -0
  59. package/dist/chunk-EYTOKUBM.js.map +1 -0
  60. package/dist/chunk-FGWSUPVW.js +356 -0
  61. package/dist/chunk-FGWSUPVW.js.map +1 -0
  62. package/dist/chunk-FPOXTCYV.js +166 -0
  63. package/dist/chunk-FPOXTCYV.js.map +1 -0
  64. package/dist/chunk-FTJOSVTY.js +104 -0
  65. package/dist/chunk-FTJOSVTY.js.map +1 -0
  66. package/dist/chunk-FYHQDFKE.js +164 -0
  67. package/dist/chunk-FYHQDFKE.js.map +1 -0
  68. package/dist/chunk-H2HIBD5Y.js +158 -0
  69. package/dist/chunk-H2HIBD5Y.js.map +1 -0
  70. package/dist/chunk-J3G5WWGR.js +53 -0
  71. package/dist/chunk-J3G5WWGR.js.map +1 -0
  72. package/dist/chunk-JZCHZ4B3.js +487 -0
  73. package/dist/chunk-JZCHZ4B3.js.map +1 -0
  74. package/dist/chunk-KBCBVH7B.js +51 -0
  75. package/dist/chunk-KBCBVH7B.js.map +1 -0
  76. package/dist/chunk-KNQ7UQ2W.js +143 -0
  77. package/dist/chunk-KNQ7UQ2W.js.map +1 -0
  78. package/dist/chunk-KTBPIEP2.js +102 -0
  79. package/dist/chunk-KTBPIEP2.js.map +1 -0
  80. package/dist/chunk-L3SP7GHC.js +1023 -0
  81. package/dist/chunk-L3SP7GHC.js.map +1 -0
  82. package/dist/chunk-LBJG2UWT.js +100 -0
  83. package/dist/chunk-LBJG2UWT.js.map +1 -0
  84. package/dist/chunk-MLDX3Z67.js +470 -0
  85. package/dist/chunk-MLDX3Z67.js.map +1 -0
  86. package/dist/chunk-NNSS366W.js +331 -0
  87. package/dist/chunk-NNSS366W.js.map +1 -0
  88. package/dist/chunk-OQANRZPV.js +197 -0
  89. package/dist/chunk-OQANRZPV.js.map +1 -0
  90. package/dist/chunk-OW5A5IIF.js +175 -0
  91. package/dist/chunk-OW5A5IIF.js.map +1 -0
  92. package/dist/chunk-R225A5II.js +187 -0
  93. package/dist/chunk-R225A5II.js.map +1 -0
  94. package/dist/chunk-ROR4E6IE.js +119 -0
  95. package/dist/chunk-ROR4E6IE.js.map +1 -0
  96. package/dist/chunk-RPAQAZTI.js +54 -0
  97. package/dist/chunk-RPAQAZTI.js.map +1 -0
  98. package/dist/chunk-RQBXZKTH.js +452 -0
  99. package/dist/chunk-RQBXZKTH.js.map +1 -0
  100. package/dist/chunk-S5XJXU52.js +178 -0
  101. package/dist/chunk-S5XJXU52.js.map +1 -0
  102. package/dist/chunk-SAVE5ACL.js +324 -0
  103. package/dist/chunk-SAVE5ACL.js.map +1 -0
  104. package/dist/chunk-SERJ3TZE.js +640 -0
  105. package/dist/chunk-SERJ3TZE.js.map +1 -0
  106. package/dist/chunk-SK5ECBBK.js +175 -0
  107. package/dist/chunk-SK5ECBBK.js.map +1 -0
  108. package/dist/chunk-SOV4PE3P.js +218 -0
  109. package/dist/chunk-SOV4PE3P.js.map +1 -0
  110. package/dist/chunk-W7BQYIXF.js +687 -0
  111. package/dist/chunk-W7BQYIXF.js.map +1 -0
  112. package/dist/chunk-XMAH5PDW.js +59 -0
  113. package/dist/chunk-XMAH5PDW.js.map +1 -0
  114. package/dist/chunk-XOBGEMQY.js +94 -0
  115. package/dist/chunk-XOBGEMQY.js.map +1 -0
  116. package/dist/chunk-YNNAOXU5.js +57 -0
  117. package/dist/chunk-YNNAOXU5.js.map +1 -0
  118. package/dist/chunk-YZVSDRJD.js +253 -0
  119. package/dist/chunk-YZVSDRJD.js.map +1 -0
  120. package/dist/collapse/index.js +4 -0
  121. package/dist/collapse/index.js.map +1 -0
  122. package/dist/command/index.js +5 -0
  123. package/dist/command/index.js.map +1 -0
  124. package/dist/date-picker/index.js +5 -0
  125. package/dist/date-picker/index.js.map +1 -0
  126. package/dist/descriptions/index.js +4 -0
  127. package/dist/descriptions/index.js.map +1 -0
  128. package/dist/drawer/index.js +4 -0
  129. package/dist/drawer/index.js.map +1 -0
  130. package/dist/dropdown/index.js +5 -0
  131. package/dist/dropdown/index.js.map +1 -0
  132. package/dist/empty/index.js +4 -0
  133. package/dist/empty/index.js.map +1 -0
  134. package/dist/fetching-overlay/index.js +5 -0
  135. package/dist/fetching-overlay/index.js.map +1 -0
  136. package/dist/image/index.js +4 -0
  137. package/dist/image/index.js.map +1 -0
  138. package/dist/index.d.ts +2672 -0
  139. package/dist/index.js +976 -0
  140. package/dist/index.js.map +1 -0
  141. package/dist/input/index.js +5 -0
  142. package/dist/input/index.js.map +1 -0
  143. package/dist/input-group/index.js +4 -0
  144. package/dist/input-group/index.js.map +1 -0
  145. package/dist/input-otp/index.js +4 -0
  146. package/dist/input-otp/index.js.map +1 -0
  147. package/dist/input-password/index.js +6 -0
  148. package/dist/input-password/index.js.map +1 -0
  149. package/dist/kbd/index.js +4 -0
  150. package/dist/kbd/index.js.map +1 -0
  151. package/dist/modal/index.js +4 -0
  152. package/dist/modal/index.js.map +1 -0
  153. package/dist/multi-select/index.js +5 -0
  154. package/dist/multi-select/index.js.map +1 -0
  155. package/dist/notification/index.js +4 -0
  156. package/dist/notification/index.js.map +1 -0
  157. package/dist/pagination/index.js +4 -0
  158. package/dist/pagination/index.js.map +1 -0
  159. package/dist/popover/index.js +4 -0
  160. package/dist/popover/index.js.map +1 -0
  161. package/dist/progress/index.js +4 -0
  162. package/dist/progress/index.js.map +1 -0
  163. package/dist/radio/index.js +4 -0
  164. package/dist/radio/index.js.map +1 -0
  165. package/dist/radio-group/index.js +4 -0
  166. package/dist/radio-group/index.js.map +1 -0
  167. package/dist/rating/index.js +4 -0
  168. package/dist/rating/index.js.map +1 -0
  169. package/dist/ribbon/index.js +4 -0
  170. package/dist/ribbon/index.js.map +1 -0
  171. package/dist/select/index.js +6 -0
  172. package/dist/select/index.js.map +1 -0
  173. package/dist/skeleton/index.js +4 -0
  174. package/dist/skeleton/index.js.map +1 -0
  175. package/dist/slider/index.js +4 -0
  176. package/dist/slider/index.js.map +1 -0
  177. package/dist/spinner/index.js +4 -0
  178. package/dist/spinner/index.js.map +1 -0
  179. package/dist/stepper/index.js +4 -0
  180. package/dist/stepper/index.js.map +1 -0
  181. package/dist/styles/base.css +161 -0
  182. package/dist/styles/global.css +633 -0
  183. package/dist/styles/themes/dark.css +84 -0
  184. package/dist/styles/themes/light.css +84 -0
  185. package/dist/switch/index.js +4 -0
  186. package/dist/switch/index.js.map +1 -0
  187. package/dist/table/index.js +12 -0
  188. package/dist/table/index.js.map +1 -0
  189. package/dist/tabs/index.js +5 -0
  190. package/dist/tabs/index.js.map +1 -0
  191. package/dist/textarea/index.js +4 -0
  192. package/dist/textarea/index.js.map +1 -0
  193. package/dist/toggle/index.js +4 -0
  194. package/dist/toggle/index.js.map +1 -0
  195. package/dist/toggle-group/index.js +4 -0
  196. package/dist/toggle-group/index.js.map +1 -0
  197. package/dist/tooltip/index.js +4 -0
  198. package/dist/tooltip/index.js.map +1 -0
  199. package/dist/transfer/index.js +6 -0
  200. package/dist/transfer/index.js.map +1 -0
  201. package/dist/tree/index.js +4 -0
  202. package/dist/tree/index.js.map +1 -0
  203. package/dist/tree-select/index.js +6 -0
  204. package/dist/tree-select/index.js.map +1 -0
  205. package/package.json +107 -0
@@ -0,0 +1,331 @@
1
+ import { cn } from './chunk-YNNAOXU5.js';
2
+ import { cva } from 'class-variance-authority';
3
+ import React, { useState, useRef, useCallback } from 'react';
4
+ import { jsxs, jsx } from 'react/jsx-runtime';
5
+
6
+ var sliderTrackVariants = cva("relative rounded-full", {
7
+ variants: {
8
+ size: {
9
+ xs: "h-1",
10
+ sm: "h-2",
11
+ md: "h-3",
12
+ lg: "h-4"
13
+ }
14
+ },
15
+ defaultVariants: {
16
+ size: "md"
17
+ }
18
+ });
19
+ var thumbVariants = cva(
20
+ "absolute top-1/2 rounded-full border-2 bg-background cursor-pointer hover:scale-110 active:scale-100 transition-transform duration-150",
21
+ {
22
+ variants: {
23
+ size: {
24
+ xs: "w-3 h-3",
25
+ sm: "w-4 h-4",
26
+ md: "w-4 h-4",
27
+ lg: "w-6 h-6"
28
+ }
29
+ },
30
+ defaultVariants: {
31
+ size: "md"
32
+ }
33
+ }
34
+ );
35
+ var trackColorStyles = {
36
+ default: {
37
+ default: "bg-surface",
38
+ solid: "bg-border",
39
+ soft: "bg-surface/50"
40
+ },
41
+ primary: {
42
+ default: "bg-primary/10",
43
+ solid: "bg-primary/20",
44
+ soft: "bg-primary/5"
45
+ },
46
+ secondary: {
47
+ default: "bg-secondary/10",
48
+ solid: "bg-secondary/20",
49
+ soft: "bg-secondary/5"
50
+ },
51
+ accent: {
52
+ default: "bg-accent/10",
53
+ solid: "bg-accent/20",
54
+ soft: "bg-accent/5"
55
+ },
56
+ success: {
57
+ default: "bg-success/10",
58
+ solid: "bg-success/20",
59
+ soft: "bg-success/5"
60
+ },
61
+ error: {
62
+ default: "bg-error/10",
63
+ solid: "bg-error/20",
64
+ soft: "bg-error/5"
65
+ },
66
+ warning: {
67
+ default: "bg-warning/10",
68
+ solid: "bg-warning/20",
69
+ soft: "bg-warning/5"
70
+ },
71
+ info: {
72
+ default: "bg-info/10",
73
+ solid: "bg-info/20",
74
+ soft: "bg-info/5"
75
+ }
76
+ };
77
+ var fillColorStyles = {
78
+ default: {
79
+ default: "bg-surface border-border",
80
+ solid: "bg-border",
81
+ soft: "bg-surface/80"
82
+ },
83
+ primary: {
84
+ default: "bg-primary/20 border-primary",
85
+ solid: "bg-primary",
86
+ soft: "bg-primary/60"
87
+ },
88
+ secondary: {
89
+ default: "bg-secondary/20 border-secondary",
90
+ solid: "bg-secondary",
91
+ soft: "bg-secondary/60"
92
+ },
93
+ accent: {
94
+ default: "bg-accent/20 border-accent",
95
+ solid: "bg-accent",
96
+ soft: "bg-accent/60"
97
+ },
98
+ success: {
99
+ default: "bg-success/20 border-success",
100
+ solid: "bg-success",
101
+ soft: "bg-success/60"
102
+ },
103
+ error: {
104
+ default: "bg-error/20 border-error",
105
+ solid: "bg-error",
106
+ soft: "bg-error/60"
107
+ },
108
+ warning: {
109
+ default: "bg-warning/20 border-warning",
110
+ solid: "bg-warning",
111
+ soft: "bg-warning/60"
112
+ },
113
+ info: {
114
+ default: "bg-info/20 border-info",
115
+ solid: "bg-info",
116
+ soft: "bg-info/60"
117
+ }
118
+ };
119
+ var thumbColorStyles = {
120
+ default: {
121
+ default: "border-border",
122
+ solid: "border-border",
123
+ soft: "border-surface"
124
+ },
125
+ primary: {
126
+ default: "border-primary",
127
+ solid: "border-primary",
128
+ soft: "border-primary/60"
129
+ },
130
+ secondary: {
131
+ default: "border-secondary",
132
+ solid: "border-secondary",
133
+ soft: "border-secondary/60"
134
+ },
135
+ accent: {
136
+ default: "border-accent",
137
+ solid: "border-accent",
138
+ soft: "border-accent/60"
139
+ },
140
+ success: {
141
+ default: "border-success",
142
+ solid: "border-success",
143
+ soft: "border-success/60"
144
+ },
145
+ error: {
146
+ default: "border-error",
147
+ solid: "border-error",
148
+ soft: "border-error/60"
149
+ },
150
+ warning: {
151
+ default: "border-warning",
152
+ solid: "border-warning",
153
+ soft: "border-warning/60"
154
+ },
155
+ info: {
156
+ default: "border-info",
157
+ solid: "border-info",
158
+ soft: "border-info/60"
159
+ }
160
+ };
161
+ var Slider = React.memo(
162
+ ({
163
+ value: controlledValue,
164
+ defaultValue = 50,
165
+ min = 0,
166
+ max = 100,
167
+ step = 1,
168
+ color = "primary",
169
+ size = "md",
170
+ variant = "default",
171
+ onChange,
172
+ disabled = false,
173
+ className,
174
+ footer = false,
175
+ range = false
176
+ }) => {
177
+ const [internalValue, setInternalValue] = useState(
178
+ defaultValue
179
+ );
180
+ const [hoveredThumb, setHoveredThumb] = useState(null);
181
+ const trackRef = useRef(null);
182
+ const isDragging = useRef(false);
183
+ const activeThumb = useRef(0);
184
+ const value = controlledValue ?? internalValue;
185
+ const values = Array.isArray(value) ? value : [value];
186
+ const getPercentage = (val) => (val - min) / (max - min) * 100;
187
+ const getValue = (clientX) => {
188
+ if (!trackRef.current) return min;
189
+ const rect = trackRef.current.getBoundingClientRect();
190
+ const percentage = (clientX - rect.left) / rect.width;
191
+ const rawValue = min + percentage * (max - min);
192
+ const steppedValue = Math.round(rawValue / step) * step;
193
+ return Math.max(min, Math.min(max, steppedValue));
194
+ };
195
+ const handleMouseDown = (thumbIndex) => (e) => {
196
+ if (disabled) return;
197
+ isDragging.current = true;
198
+ activeThumb.current = thumbIndex;
199
+ setHoveredThumb(thumbIndex);
200
+ e.preventDefault();
201
+ };
202
+ const handleMouseMove = useCallback(
203
+ (e) => {
204
+ if (!isDragging.current || disabled) return;
205
+ const newValue = getValue(e.clientX);
206
+ if (range && Array.isArray(value)) {
207
+ const newValues = [...value];
208
+ newValues[activeThumb.current] = newValue;
209
+ newValues.sort((a, b) => a - b);
210
+ if (!controlledValue) setInternalValue(newValues);
211
+ onChange?.(newValues);
212
+ } else {
213
+ if (!controlledValue) setInternalValue(newValue);
214
+ onChange?.(newValue);
215
+ }
216
+ },
217
+ [disabled, value, range, controlledValue, min, max, step]
218
+ );
219
+ const handleMouseUp = useCallback(() => {
220
+ isDragging.current = false;
221
+ setHoveredThumb(null);
222
+ }, []);
223
+ React.useEffect(() => {
224
+ document.addEventListener("mousemove", handleMouseMove);
225
+ document.addEventListener("mouseup", handleMouseUp);
226
+ return () => {
227
+ document.removeEventListener("mousemove", handleMouseMove);
228
+ document.removeEventListener("mouseup", handleMouseUp);
229
+ };
230
+ }, [handleMouseMove, handleMouseUp]);
231
+ const handleTrackClick = (e) => {
232
+ if (disabled || isDragging.current) return;
233
+ const newValue = getValue(e.clientX);
234
+ if (range && Array.isArray(value)) {
235
+ let closestThumbIndex = 0;
236
+ let minDistance = Math.abs(newValue - (value[0] || 0));
237
+ for (let i = 1; i < value.length; i++) {
238
+ const distance = Math.abs(newValue - (value[i] || 0));
239
+ if (distance < minDistance) {
240
+ minDistance = distance;
241
+ closestThumbIndex = i;
242
+ }
243
+ }
244
+ const newValues = [...value];
245
+ newValues[closestThumbIndex] = newValue;
246
+ newValues.sort((a, b) => a - b);
247
+ if (!controlledValue) setInternalValue(newValues);
248
+ onChange?.(newValues);
249
+ } else {
250
+ if (!controlledValue) setInternalValue(newValue);
251
+ onChange?.(newValue);
252
+ }
253
+ };
254
+ return /* @__PURE__ */ jsxs("div", { className: cn("w-full", className), children: [
255
+ /* @__PURE__ */ jsxs(
256
+ "div",
257
+ {
258
+ ref: trackRef,
259
+ onClick: handleTrackClick,
260
+ className: cn(
261
+ sliderTrackVariants({ size }),
262
+ trackColorStyles[color][variant],
263
+ "relative cursor-pointer",
264
+ // ✅ фикс выхода
265
+ disabled && "opacity-50 cursor-not-allowed"
266
+ ),
267
+ children: [
268
+ range && values.length > 1 ? values.slice(0, -1).map((val, index) => {
269
+ const left = getPercentage(val);
270
+ const right = getPercentage(values[index + 1]);
271
+ return /* @__PURE__ */ jsx(
272
+ "div",
273
+ {
274
+ className: cn(
275
+ "absolute h-full rounded-full",
276
+ fillColorStyles[color][variant]
277
+ ),
278
+ style: { left: `${left}%`, width: `${right - left}%` }
279
+ },
280
+ index
281
+ );
282
+ }) : /* @__PURE__ */ jsx(
283
+ "div",
284
+ {
285
+ className: cn(
286
+ "absolute h-full rounded-full",
287
+ fillColorStyles[color][variant]
288
+ ),
289
+ style: { left: "0%", width: `${getPercentage(values[0] || 0)}%` }
290
+ }
291
+ ),
292
+ values.map((val, index) => {
293
+ const left = getPercentage(val);
294
+ const isAtStart = left <= 0;
295
+ const isAtEnd = left >= 100;
296
+ return /* @__PURE__ */ jsx(
297
+ "div",
298
+ {
299
+ className: cn(
300
+ thumbVariants({ size }),
301
+ thumbColorStyles[color][variant],
302
+ disabled && "cursor-not-allowed"
303
+ ),
304
+ style: {
305
+ left: `${left}%`,
306
+ transform: `translate(-50%, -50%) ${isAtStart ? "translateX(50%)" : isAtEnd ? "translateX(-50%)" : ""}`
307
+ },
308
+ onMouseDown: handleMouseDown(index),
309
+ children: hoveredThumb === index && /* @__PURE__ */ jsx("div", { className: "absolute -top-8 left-1/2 -translate-x-1/2 bg-text-primary text-background text-xs px-2 py-1 rounded whitespace-nowrap", children: val })
310
+ },
311
+ index
312
+ );
313
+ })
314
+ ]
315
+ }
316
+ ),
317
+ typeof footer === "boolean" && /* @__PURE__ */ jsxs("div", { className: "flex justify-between mt-1 text-sm text-text-secondary", children: [
318
+ /* @__PURE__ */ jsx("span", { children: min }),
319
+ /* @__PURE__ */ jsx("span", { className: "font-medium text-text-primary", children: range && Array.isArray(value) ? value.join(" - ") : value }),
320
+ /* @__PURE__ */ jsx("span", { children: max })
321
+ ] }),
322
+ footer && typeof footer !== "boolean" && footer
323
+ ] });
324
+ }
325
+ );
326
+ Slider.displayName = "Slider";
327
+ var slider_default = Slider;
328
+
329
+ export { slider_default };
330
+ //# sourceMappingURL=chunk-NNSS366W.js.map
331
+ //# sourceMappingURL=chunk-NNSS366W.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/slider/index.tsx"],"names":[],"mappings":"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","file":"chunk-NNSS366W.js","sourcesContent":["import { cva } from 'class-variance-authority'\nimport React, { useCallback, useRef, useState } from 'react'\n\nimport { cn } from '../utils'\nimport type { SliderProps } from './types'\n\nconst sliderTrackVariants = cva('relative rounded-full', {\n variants: {\n size: {\n xs: 'h-1',\n sm: 'h-2',\n md: 'h-3',\n lg: 'h-4',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nconst thumbVariants = cva(\n 'absolute top-1/2 rounded-full border-2 bg-background cursor-pointer hover:scale-110 active:scale-100 transition-transform duration-150',\n {\n variants: {\n size: {\n xs: 'w-3 h-3',\n sm: 'w-4 h-4',\n md: 'w-4 h-4',\n lg: 'w-6 h-6',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n)\n\nconst trackColorStyles = {\n default: {\n default: 'bg-surface',\n solid: 'bg-border',\n soft: 'bg-surface/50',\n },\n primary: {\n default: 'bg-primary/10',\n solid: 'bg-primary/20',\n soft: 'bg-primary/5',\n },\n secondary: {\n default: 'bg-secondary/10',\n solid: 'bg-secondary/20',\n soft: 'bg-secondary/5',\n },\n accent: {\n default: 'bg-accent/10',\n solid: 'bg-accent/20',\n soft: 'bg-accent/5',\n },\n success: {\n default: 'bg-success/10',\n solid: 'bg-success/20',\n soft: 'bg-success/5',\n },\n error: {\n default: 'bg-error/10',\n solid: 'bg-error/20',\n soft: 'bg-error/5',\n },\n warning: {\n default: 'bg-warning/10',\n solid: 'bg-warning/20',\n soft: 'bg-warning/5',\n },\n info: {\n default: 'bg-info/10',\n solid: 'bg-info/20',\n soft: 'bg-info/5',\n },\n}\n\nconst fillColorStyles = {\n default: {\n default: 'bg-surface border-border',\n solid: 'bg-border',\n soft: 'bg-surface/80',\n },\n primary: {\n default: 'bg-primary/20 border-primary',\n solid: 'bg-primary',\n soft: 'bg-primary/60',\n },\n secondary: {\n default: 'bg-secondary/20 border-secondary',\n solid: 'bg-secondary',\n soft: 'bg-secondary/60',\n },\n accent: {\n default: 'bg-accent/20 border-accent',\n solid: 'bg-accent',\n soft: 'bg-accent/60',\n },\n success: {\n default: 'bg-success/20 border-success',\n solid: 'bg-success',\n soft: 'bg-success/60',\n },\n error: {\n default: 'bg-error/20 border-error',\n solid: 'bg-error',\n soft: 'bg-error/60',\n },\n warning: {\n default: 'bg-warning/20 border-warning',\n solid: 'bg-warning',\n soft: 'bg-warning/60',\n },\n info: {\n default: 'bg-info/20 border-info',\n solid: 'bg-info',\n soft: 'bg-info/60',\n },\n}\n\nconst thumbColorStyles = {\n default: {\n default: 'border-border',\n solid: 'border-border',\n soft: 'border-surface',\n },\n primary: {\n default: 'border-primary',\n solid: 'border-primary',\n soft: 'border-primary/60',\n },\n secondary: {\n default: 'border-secondary',\n solid: 'border-secondary',\n soft: 'border-secondary/60',\n },\n accent: {\n default: 'border-accent',\n solid: 'border-accent',\n soft: 'border-accent/60',\n },\n success: {\n default: 'border-success',\n solid: 'border-success',\n soft: 'border-success/60',\n },\n error: {\n default: 'border-error',\n solid: 'border-error',\n soft: 'border-error/60',\n },\n warning: {\n default: 'border-warning',\n solid: 'border-warning',\n soft: 'border-warning/60',\n },\n info: {\n default: 'border-info',\n solid: 'border-info',\n soft: 'border-info/60',\n },\n}\n\nconst Slider = React.memo<SliderProps>(\n ({\n value: controlledValue,\n defaultValue = 50,\n min = 0,\n max = 100,\n step = 1,\n color = 'primary',\n size = 'md',\n variant = 'default',\n onChange,\n disabled = false,\n className,\n footer = false,\n range = false,\n }) => {\n const [internalValue, setInternalValue] = useState<number | number[]>(\n defaultValue,\n )\n const [hoveredThumb, setHoveredThumb] = useState<number | null>(null)\n const trackRef = useRef<HTMLDivElement>(null)\n const isDragging = useRef(false)\n const activeThumb = useRef<number>(0)\n\n const value = controlledValue ?? internalValue\n const values = Array.isArray(value) ? value : [value]\n\n const getPercentage = (val: number) => ((val - min) / (max - min)) * 100\n\n const getValue = (clientX: number) => {\n if (!trackRef.current) return min\n const rect = trackRef.current.getBoundingClientRect()\n const percentage = (clientX - rect.left) / rect.width\n const rawValue = min + percentage * (max - min)\n const steppedValue = Math.round(rawValue / step) * step\n return Math.max(min, Math.min(max, steppedValue))\n }\n\n const handleMouseDown = (thumbIndex: number) => (e: React.MouseEvent) => {\n if (disabled) return\n isDragging.current = true\n activeThumb.current = thumbIndex\n setHoveredThumb(thumbIndex)\n e.preventDefault()\n }\n\n const handleMouseMove = useCallback(\n (e: MouseEvent) => {\n if (!isDragging.current || disabled) return\n const newValue = getValue(e.clientX)\n\n if (range && Array.isArray(value)) {\n const newValues = [...value]\n newValues[activeThumb.current] = newValue\n newValues.sort((a, b) => a - b)\n if (!controlledValue) setInternalValue(newValues)\n onChange?.(newValues)\n } else {\n if (!controlledValue) setInternalValue(newValue)\n onChange?.(newValue)\n }\n },\n [disabled, value, range, controlledValue, min, max, step],\n )\n\n const handleMouseUp = useCallback(() => {\n isDragging.current = false\n setHoveredThumb(null)\n }, [])\n\n React.useEffect(() => {\n document.addEventListener('mousemove', handleMouseMove)\n document.addEventListener('mouseup', handleMouseUp)\n return () => {\n document.removeEventListener('mousemove', handleMouseMove)\n document.removeEventListener('mouseup', handleMouseUp)\n }\n }, [handleMouseMove, handleMouseUp])\n\n const handleTrackClick = (e: React.MouseEvent<HTMLDivElement>) => {\n if (disabled || isDragging.current) return\n const newValue = getValue(e.clientX)\n\n if (range && Array.isArray(value)) {\n let closestThumbIndex = 0\n let minDistance = Math.abs(newValue - (value[0] || 0))\n for (let i = 1; i < value.length; i++) {\n const distance = Math.abs(newValue - (value[i] || 0))\n if (distance < minDistance) {\n minDistance = distance\n closestThumbIndex = i\n }\n }\n\n const newValues = [...value]\n newValues[closestThumbIndex] = newValue\n newValues.sort((a, b) => a - b)\n if (!controlledValue) setInternalValue(newValues)\n onChange?.(newValues)\n } else {\n if (!controlledValue) setInternalValue(newValue)\n onChange?.(newValue)\n }\n }\n\n return (\n <div className={cn('w-full', className)}>\n <div\n ref={trackRef}\n onClick={handleTrackClick}\n className={cn(\n sliderTrackVariants({ size }),\n trackColorStyles[color][variant],\n 'relative cursor-pointer', // ✅ фикс выхода\n disabled && 'opacity-50 cursor-not-allowed',\n )}\n >\n {/* Fill segment */}\n {range && values.length > 1 ? (\n values.slice(0, -1).map((val, index) => {\n const left = getPercentage(val)\n const right = getPercentage(values[index + 1]!)\n return (\n <div\n key={index}\n className={cn(\n 'absolute h-full rounded-full',\n fillColorStyles[color][variant],\n )}\n style={{ left: `${left}%`, width: `${right - left}%` }}\n />\n )\n })\n ) : (\n <div\n className={cn(\n 'absolute h-full rounded-full',\n fillColorStyles[color][variant],\n )}\n style={{ left: '0%', width: `${getPercentage(values[0] || 0)}%` }}\n />\n )}\n\n {/* Thumbs */}\n {values.map((val, index) => {\n const left = getPercentage(val)\n const isAtStart = left <= 0\n const isAtEnd = left >= 100\n return (\n <div\n key={index}\n className={cn(\n thumbVariants({ size }),\n thumbColorStyles[color][variant],\n disabled && 'cursor-not-allowed',\n )}\n style={{\n left: `${left}%`,\n transform: `translate(-50%, -50%) ${\n isAtStart\n ? 'translateX(50%)'\n : isAtEnd\n ? 'translateX(-50%)'\n : ''\n }`,\n }}\n onMouseDown={handleMouseDown(index)}\n >\n {hoveredThumb === index && (\n <div className=\"absolute -top-8 left-1/2 -translate-x-1/2 bg-text-primary text-background text-xs px-2 py-1 rounded whitespace-nowrap\">\n {val}\n </div>\n )}\n </div>\n )\n })}\n </div>\n\n {typeof footer === 'boolean' && (\n <div className=\"flex justify-between mt-1 text-sm text-text-secondary\">\n <span>{min}</span>\n <span className=\"font-medium text-text-primary\">\n {range && Array.isArray(value) ? value.join(' - ') : value}\n </span>\n <span>{max}</span>\n </div>\n )}\n {footer && typeof footer !== 'boolean' && footer}\n </div>\n )\n },\n)\n\nSlider.displayName = 'Slider'\n\nexport type * from './types'\nexport default Slider\n"]}
@@ -0,0 +1,197 @@
1
+ import { cn } from './chunk-YNNAOXU5.js';
2
+ import { cva } from 'class-variance-authority';
3
+ import React from 'react';
4
+ import { jsx } from 'react/jsx-runtime';
5
+
6
+ var kbdVariants = cva(
7
+ "pointer-events-none min-w-4 min-h-3.5 border inline-flex w-fit items-center justify-center gap-1 rounded-sm font-sans font-medium select-none",
8
+ {
9
+ variants: {
10
+ variant: {
11
+ solid: "",
12
+ outline: "",
13
+ soft: ""
14
+ },
15
+ color: {
16
+ default: "",
17
+ primary: "",
18
+ secondary: "",
19
+ accent: "",
20
+ success: "",
21
+ error: "",
22
+ warning: "",
23
+ info: ""
24
+ },
25
+ size: {
26
+ xs: "h-3.5 p-0.5 text-[9px]",
27
+ sm: "h-4 p-0.5 text-xs",
28
+ md: "h-4.5 px-1.5 text-sm",
29
+ lg: "h-5 px-2 text-sm"
30
+ }
31
+ },
32
+ compoundVariants: [
33
+ // Default color variants
34
+ {
35
+ variant: "solid",
36
+ color: "default",
37
+ class: "bg-gray-700 border-gray-700 text-white"
38
+ },
39
+ {
40
+ variant: "outline",
41
+ color: "default",
42
+ class: "bg-white border-gray-300 text-gray-700"
43
+ },
44
+ {
45
+ variant: "soft",
46
+ color: "default",
47
+ class: "bg-gray-50 border-gray-100 text-gray-600"
48
+ },
49
+ // Primary color variants
50
+ {
51
+ variant: "solid",
52
+ color: "primary",
53
+ class: "bg-primary border-primary text-primary-text"
54
+ },
55
+ {
56
+ variant: "outline",
57
+ color: "primary",
58
+ class: "bg-white border-primary text-primary"
59
+ },
60
+ {
61
+ variant: "soft",
62
+ color: "primary",
63
+ class: "bg-primary/10 border-primary/20 text-primary"
64
+ },
65
+ // Secondary color variants
66
+ {
67
+ variant: "solid",
68
+ color: "secondary",
69
+ class: "bg-secondary border-secondary text-secondary-text"
70
+ },
71
+ {
72
+ variant: "outline",
73
+ color: "secondary",
74
+ class: "bg-white border-secondary text-secondary"
75
+ },
76
+ {
77
+ variant: "soft",
78
+ color: "secondary",
79
+ class: "bg-secondary/10 border-secondary/20 text-secondary"
80
+ },
81
+ // Success color variants
82
+ {
83
+ variant: "solid",
84
+ color: "success",
85
+ class: "bg-success border-success text-success-text"
86
+ },
87
+ {
88
+ variant: "outline",
89
+ color: "success",
90
+ class: "bg-white border-success text-success"
91
+ },
92
+ {
93
+ variant: "soft",
94
+ color: "success",
95
+ class: "bg-success/10 border-success/20 text-success"
96
+ },
97
+ // Error color variants
98
+ {
99
+ variant: "solid",
100
+ color: "error",
101
+ class: "bg-error border-error text-error-text"
102
+ },
103
+ {
104
+ variant: "outline",
105
+ color: "error",
106
+ class: "bg-white border-error text-error"
107
+ },
108
+ {
109
+ variant: "soft",
110
+ color: "error",
111
+ class: "bg-error/10 border-error/20 text-error"
112
+ },
113
+ // Warning color variants
114
+ {
115
+ variant: "solid",
116
+ color: "warning",
117
+ class: "bg-warning border-warning text-warning-text"
118
+ },
119
+ {
120
+ variant: "outline",
121
+ color: "warning",
122
+ class: "bg-white border-warning text-warning"
123
+ },
124
+ {
125
+ variant: "soft",
126
+ color: "warning",
127
+ class: "bg-warning/10 border-warning/20 text-warning"
128
+ },
129
+ // Accent color variants
130
+ {
131
+ variant: "solid",
132
+ color: "accent",
133
+ class: "bg-accent border-accent text-accent-text"
134
+ },
135
+ {
136
+ variant: "outline",
137
+ color: "accent",
138
+ class: "bg-white border-accent text-accent"
139
+ },
140
+ {
141
+ variant: "soft",
142
+ color: "accent",
143
+ class: "bg-accent/10 border-accent/20 text-accent"
144
+ },
145
+ // Info color variants
146
+ {
147
+ variant: "solid",
148
+ color: "info",
149
+ class: "bg-info border-info text-info-text"
150
+ },
151
+ {
152
+ variant: "outline",
153
+ color: "info",
154
+ class: "bg-white border-info text-info"
155
+ },
156
+ {
157
+ variant: "soft",
158
+ color: "info",
159
+ class: "bg-info/10 border-info/20 text-info"
160
+ }
161
+ ],
162
+ defaultVariants: {
163
+ variant: "outline",
164
+ color: "default",
165
+ size: "sm"
166
+ }
167
+ }
168
+ );
169
+ var Kbd = React.memo(
170
+ ({
171
+ variant = "outline",
172
+ color = "default",
173
+ size = "sm",
174
+ className,
175
+ children,
176
+ ...props
177
+ }) => {
178
+ return /* @__PURE__ */ jsx(
179
+ "kbd",
180
+ {
181
+ className: cn(
182
+ kbdVariants({ variant, color, size }),
183
+ "[&_svg:not([class*='size-'])]:size-3",
184
+ className
185
+ ),
186
+ ...props,
187
+ children
188
+ }
189
+ );
190
+ }
191
+ );
192
+ Kbd.displayName = "Kbd";
193
+ var kbd_default = Kbd;
194
+
195
+ export { kbd_default };
196
+ //# sourceMappingURL=chunk-OQANRZPV.js.map
197
+ //# sourceMappingURL=chunk-OQANRZPV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/kbd/index.tsx"],"names":[],"mappings":"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","file":"chunk-OQANRZPV.js","sourcesContent":["import { cva } from 'class-variance-authority'\nimport React from 'react'\n\nimport { cn } from '../utils'\nimport type { KbdProps } from './types'\n\nconst kbdVariants = cva(\n 'pointer-events-none min-w-4 min-h-3.5 border inline-flex w-fit items-center justify-center gap-1 rounded-sm font-sans font-medium select-none',\n {\n variants: {\n variant: {\n solid: '',\n outline: '',\n soft: '',\n },\n color: {\n default: '',\n primary: '',\n secondary: '',\n accent: '',\n success: '',\n error: '',\n warning: '',\n info: '',\n },\n size: {\n xs: 'h-3.5 p-0.5 text-[9px]',\n sm: 'h-4 p-0.5 text-xs',\n md: 'h-4.5 px-1.5 text-sm',\n lg: 'h-5 px-2 text-sm',\n },\n },\n compoundVariants: [\n // Default color variants\n {\n variant: 'solid',\n color: 'default',\n class: 'bg-gray-700 border-gray-700 text-white',\n },\n {\n variant: 'outline',\n color: 'default',\n class: 'bg-white border-gray-300 text-gray-700',\n },\n {\n variant: 'soft',\n color: 'default',\n class: 'bg-gray-50 border-gray-100 text-gray-600',\n },\n\n // Primary color variants\n {\n variant: 'solid',\n color: 'primary',\n class: 'bg-primary border-primary text-primary-text',\n },\n {\n variant: 'outline',\n color: 'primary',\n class: 'bg-white border-primary text-primary',\n },\n {\n variant: 'soft',\n color: 'primary',\n class: 'bg-primary/10 border-primary/20 text-primary',\n },\n\n // Secondary color variants\n {\n variant: 'solid',\n color: 'secondary',\n class: 'bg-secondary border-secondary text-secondary-text',\n },\n {\n variant: 'outline',\n color: 'secondary',\n class: 'bg-white border-secondary text-secondary',\n },\n {\n variant: 'soft',\n color: 'secondary',\n class: 'bg-secondary/10 border-secondary/20 text-secondary',\n },\n\n // Success color variants\n {\n variant: 'solid',\n color: 'success',\n class: 'bg-success border-success text-success-text',\n },\n {\n variant: 'outline',\n color: 'success',\n class: 'bg-white border-success text-success',\n },\n {\n variant: 'soft',\n color: 'success',\n class: 'bg-success/10 border-success/20 text-success',\n },\n\n // Error color variants\n {\n variant: 'solid',\n color: 'error',\n class: 'bg-error border-error text-error-text',\n },\n {\n variant: 'outline',\n color: 'error',\n class: 'bg-white border-error text-error',\n },\n {\n variant: 'soft',\n color: 'error',\n class: 'bg-error/10 border-error/20 text-error',\n },\n\n // Warning color variants\n {\n variant: 'solid',\n color: 'warning',\n class: 'bg-warning border-warning text-warning-text',\n },\n {\n variant: 'outline',\n color: 'warning',\n class: 'bg-white border-warning text-warning',\n },\n {\n variant: 'soft',\n color: 'warning',\n class: 'bg-warning/10 border-warning/20 text-warning',\n },\n\n // Accent color variants\n {\n variant: 'solid',\n color: 'accent',\n class: 'bg-accent border-accent text-accent-text',\n },\n {\n variant: 'outline',\n color: 'accent',\n class: 'bg-white border-accent text-accent',\n },\n {\n variant: 'soft',\n color: 'accent',\n class: 'bg-accent/10 border-accent/20 text-accent',\n },\n\n // Info color variants\n {\n variant: 'solid',\n color: 'info',\n class: 'bg-info border-info text-info-text',\n },\n {\n variant: 'outline',\n color: 'info',\n class: 'bg-white border-info text-info',\n },\n {\n variant: 'soft',\n color: 'info',\n class: 'bg-info/10 border-info/20 text-info',\n },\n ],\n defaultVariants: {\n variant: 'outline',\n color: 'default',\n size: 'sm',\n },\n },\n)\n\nconst Kbd = React.memo<KbdProps>(\n ({\n variant = 'outline',\n color = 'default',\n size = 'sm',\n className,\n children,\n ...props\n }) => {\n return (\n <kbd\n className={cn(\n kbdVariants({ variant, color, size }),\n \"[&_svg:not([class*='size-'])]:size-3\",\n className,\n )}\n {...props}\n >\n {children}\n </kbd>\n )\n },\n)\n\nKbd.displayName = 'Kbd'\n\nexport type * from './types'\nexport default Kbd\n"]}