@nattstack/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.
package/dist/index.js ADDED
@@ -0,0 +1,715 @@
1
+ // src/components/button-link/button-link.tsx
2
+ import { createElement } from "react";
3
+
4
+ // src/components/button/button-spinner.tsx
5
+ import styles from "./button-spinner.module-T3OGVJS4.module.css";
6
+ import { jsx } from "react/jsx-runtime";
7
+ function ButtonSpinner(props) {
8
+ const { size = 16 } = props;
9
+ return /* @__PURE__ */ jsx("div", { className: styles.button_spinner, style: { "--size": `${size}px` }, children: Array.from({ length: 12 }).map((_, index) => /* @__PURE__ */ jsx("div", {}, index)) });
10
+ }
11
+
12
+ // src/utils/normalize-whitespace.ts
13
+ function normalizeWhitespace(value) {
14
+ return value.replaceAll(/\s+/g, " ").trim();
15
+ }
16
+
17
+ // src/components/button/button.tsx
18
+ import styles2 from "./button.module-77AJOXGM.module.css";
19
+ import { jsx as jsx2, jsxs } from "react/jsx-runtime";
20
+ function Button(props) {
21
+ const {
22
+ children = "",
23
+ className: customClassName = "",
24
+ iconEnd = "",
25
+ iconStart = "",
26
+ isActive = false,
27
+ isDisabled = false,
28
+ isFullWidth = false,
29
+ isIconOnly = false,
30
+ isLoading = false,
31
+ isRounded = false,
32
+ size = 40,
33
+ type = "button",
34
+ variant = "primary",
35
+ ...rest
36
+ } = props;
37
+ const combinedClassName = normalizeWhitespace(`
38
+ ${BUTTON_CLASS_NAME.BASE}
39
+ ${BUTTON_CLASS_NAME.SIZE[size]}
40
+ ${BUTTON_CLASS_NAME.VARIANT[variant.toUpperCase()]}
41
+ ${isFullWidth ? BUTTON_CLASS_NAME.WIDTH.FULL : BUTTON_CLASS_NAME.WIDTH.BASE}
42
+ ${isIconOnly ? BUTTON_CLASS_NAME.ICON_ONLY : ""}
43
+ ${isRounded ? BUTTON_CLASS_NAME.ROUNDED.FULL : BUTTON_CLASS_NAME.ROUNDED.BASE}
44
+ ${customClassName}
45
+ `);
46
+ return /* @__PURE__ */ jsxs(
47
+ "button",
48
+ {
49
+ "aria-pressed": isActive,
50
+ className: combinedClassName,
51
+ disabled: isDisabled || isLoading,
52
+ type,
53
+ ...rest,
54
+ children: [
55
+ isLoading && /* @__PURE__ */ jsx2(ButtonSpinner, {}),
56
+ !isLoading && iconStart,
57
+ isIconOnly ? isLoading ? void 0 : children : /* @__PURE__ */ jsx2("span", { children }),
58
+ !isLoading && iconEnd
59
+ ]
60
+ }
61
+ );
62
+ }
63
+ var BUTTON_CLASS_NAME = {
64
+ BASE: styles2.button,
65
+ ICON_ONLY: styles2.button__icon_only,
66
+ ROUNDED: {
67
+ BASE: styles2.button__rounded_base,
68
+ FULL: styles2.button__rounded_full
69
+ },
70
+ SIZE: {
71
+ 32: styles2.button__size_32,
72
+ 36: styles2.button__size_36,
73
+ 40: styles2.button__size_40,
74
+ 44: styles2.button__size_44,
75
+ 48: styles2.button__size_48
76
+ },
77
+ VARIANT: {
78
+ ACCENT: styles2.button__variant_accent,
79
+ GHOST: styles2.button__variant_ghost,
80
+ PRIMARY: styles2.button__variant_primary,
81
+ SECONDARY: styles2.button__variant_secondary
82
+ },
83
+ WIDTH: {
84
+ BASE: styles2.button__width_base,
85
+ FULL: styles2.button__width_full
86
+ }
87
+ };
88
+
89
+ // src/components/button-link/button-link.tsx
90
+ function ButtonLink(props) {
91
+ const {
92
+ as = "a",
93
+ className: customClassName = "",
94
+ isFullWidth = false,
95
+ isIconOnly = false,
96
+ isRounded = false,
97
+ size = 40,
98
+ variant = "primary",
99
+ ...rest
100
+ } = props;
101
+ const Component = as;
102
+ const combinedClassName = normalizeWhitespace(`
103
+ ${BUTTON_CLASS_NAME.BASE}
104
+ ${BUTTON_CLASS_NAME.SIZE[size]}
105
+ ${BUTTON_CLASS_NAME.VARIANT[variant.toUpperCase()]}
106
+ ${isFullWidth ? BUTTON_CLASS_NAME.WIDTH.FULL : BUTTON_CLASS_NAME.WIDTH.BASE}
107
+ ${isIconOnly ? BUTTON_CLASS_NAME.ICON_ONLY : ""}
108
+ ${isRounded ? BUTTON_CLASS_NAME.ROUNDED.FULL : BUTTON_CLASS_NAME.ROUNDED.BASE}
109
+ ${customClassName}
110
+ `);
111
+ return createElement(Component, {
112
+ className: combinedClassName,
113
+ ...rest
114
+ });
115
+ }
116
+
117
+ // src/components/column/column.tsx
118
+ import {
119
+ createElement as createElement2
120
+ } from "react";
121
+ import styles3 from "./column.module-A7QCVPFC.module.css";
122
+ function Column(props) {
123
+ const {
124
+ alignItems = void 0,
125
+ as = "div",
126
+ className: customClassName = "",
127
+ flexWrap = void 0,
128
+ gap = void 0,
129
+ gapX = void 0,
130
+ gapY = void 0,
131
+ justifyContent = void 0,
132
+ style: customStyle,
133
+ ...rest
134
+ } = props;
135
+ const Component = as;
136
+ const combinedClassName = normalizeWhitespace(`
137
+ ${COLUMN_CLASS_NAME.BASE}
138
+ ${customClassName}
139
+ `);
140
+ const combinedStyle = {
141
+ ...customStyle,
142
+ ...gap === void 0 ? {} : { gap },
143
+ ...gapX === void 0 ? {} : { columnGap: gapX },
144
+ ...gapY === void 0 ? {} : { rowGap: gapY },
145
+ ...flexWrap === void 0 ? {} : { flexWrap },
146
+ ...alignItems === void 0 ? {} : { alignItems },
147
+ ...justifyContent === void 0 ? {} : { justifyContent }
148
+ };
149
+ return createElement2(Component, {
150
+ className: combinedClassName,
151
+ style: combinedStyle,
152
+ ...rest
153
+ });
154
+ }
155
+ var COLUMN_CLASS_NAME = {
156
+ BASE: styles3.column
157
+ };
158
+
159
+ // src/components/input/input.tsx
160
+ import styles4 from "./input.module-DOM3NIU5.module.css";
161
+ import { jsx as jsx3 } from "react/jsx-runtime";
162
+ function Input(props) {
163
+ const {
164
+ className: customClassName = "",
165
+ isActive = false,
166
+ isDisabled = false,
167
+ isInvalid = void 0,
168
+ isReadOnly = false,
169
+ isRequired = false,
170
+ isRounded = false,
171
+ isValid = void 0,
172
+ size = 44,
173
+ type = "text",
174
+ ...rest
175
+ } = props;
176
+ const isPassword = type === "password";
177
+ const combinedClassName = normalizeWhitespace(`
178
+ ${INPUT_CLASS_NAME.BASE}
179
+ ${INPUT_CLASS_NAME.SIZE[size]}
180
+ ${isPassword ? INPUT_CLASS_NAME.PASSWORD : ""}
181
+ ${isRounded ? INPUT_CLASS_NAME.ROUNDED.FULL : INPUT_CLASS_NAME.ROUNDED.BASE}
182
+ ${customClassName}
183
+ `);
184
+ return /* @__PURE__ */ jsx3(
185
+ "input",
186
+ {
187
+ className: combinedClassName,
188
+ "data-is-active": isActive,
189
+ "data-is-invalid": isInvalid,
190
+ "data-is-valid": isValid,
191
+ disabled: isDisabled,
192
+ readOnly: isReadOnly,
193
+ required: isRequired,
194
+ type,
195
+ ...rest
196
+ }
197
+ );
198
+ }
199
+ var INPUT_CLASS_NAME = {
200
+ BASE: styles4.input,
201
+ PASSWORD: styles4.input__password,
202
+ ROUNDED: {
203
+ BASE: styles4.input__rounded_base,
204
+ FULL: styles4.input__rounded_full
205
+ },
206
+ SIZE: {
207
+ 32: styles4.input__size_32,
208
+ 36: styles4.input__size_36,
209
+ 40: styles4.input__size_40,
210
+ 44: styles4.input__size_44,
211
+ 48: styles4.input__size_48
212
+ }
213
+ };
214
+
215
+ // src/components/label/label.tsx
216
+ import styles5 from "./label.module-HUBUIUFV.module.css";
217
+ import { jsx as jsx4 } from "react/jsx-runtime";
218
+ function Label(props) {
219
+ const { className: customClassName = "", htmlFor = void 0, children = "", ...rest } = props;
220
+ const combinedClassName = normalizeWhitespace(`
221
+ ${LABEL_CLASS_NAME.BASE}
222
+ ${customClassName}
223
+ `);
224
+ return /* @__PURE__ */ jsx4("label", { className: combinedClassName, htmlFor, ...rest, children });
225
+ }
226
+ var LABEL_CLASS_NAME = {
227
+ BASE: styles5.label
228
+ };
229
+
230
+ // src/components/row/row.tsx
231
+ import {
232
+ createElement as createElement3
233
+ } from "react";
234
+ import styles6 from "./row.module-GYNANRAY.module.css";
235
+ function Row(props) {
236
+ const {
237
+ alignItems = void 0,
238
+ as = "div",
239
+ className: customClassName = "",
240
+ flexWrap = void 0,
241
+ gap = void 0,
242
+ gapX = void 0,
243
+ gapY = void 0,
244
+ justifyContent = void 0,
245
+ style: customStyle,
246
+ ...rest
247
+ } = props;
248
+ const Component = as;
249
+ const combinedClassName = normalizeWhitespace(`
250
+ ${ROW_CLASS_NAME.BASE}
251
+ ${customClassName}
252
+ `);
253
+ const combinedStyle = {
254
+ ...customStyle,
255
+ ...gap === void 0 ? {} : { gap },
256
+ ...gapX === void 0 ? {} : { columnGap: gapX },
257
+ ...gapY === void 0 ? {} : { rowGap: gapY },
258
+ ...flexWrap === void 0 ? {} : { flexWrap },
259
+ ...alignItems === void 0 ? {} : { alignItems },
260
+ ...justifyContent === void 0 ? {} : { justifyContent }
261
+ };
262
+ return createElement3(Component, {
263
+ className: combinedClassName,
264
+ style: combinedStyle,
265
+ ...rest
266
+ });
267
+ }
268
+ var ROW_CLASS_NAME = {
269
+ BASE: styles6.row
270
+ };
271
+
272
+ // src/components/spacer/spacer.tsx
273
+ import styles7 from "./spacer.module-ZYYYWYEB.module.css";
274
+ import { jsx as jsx5 } from "react/jsx-runtime";
275
+ function Spacer(props) {
276
+ const { className: customClassName = "", height, style: customStyle, width, ...rest } = props;
277
+ const combinedClassName = normalizeWhitespace(`
278
+ ${SPACER_CLASS_NAME.BASE}
279
+ ${customClassName}
280
+ `);
281
+ const combinedStyle = {
282
+ ...customStyle,
283
+ ...width === void 0 ? {} : { width },
284
+ ...height === void 0 ? {} : { height }
285
+ };
286
+ return /* @__PURE__ */ jsx5("div", { className: combinedClassName, style: combinedStyle, ...rest });
287
+ }
288
+ var SPACER_CLASS_NAME = {
289
+ BASE: styles7.spacer
290
+ };
291
+
292
+ // src/components/switch/switch.tsx
293
+ import { Switch as BaseSwitch } from "@base-ui/react";
294
+ import styles8 from "./switch.module-TLJBHCSA.module.css";
295
+ import { jsx as jsx6 } from "react/jsx-runtime";
296
+ function Switch(props) {
297
+ const {
298
+ className: customClassName = "",
299
+ isChecked = void 0,
300
+ isDefaultChecked = false,
301
+ isDisabled = false,
302
+ isReadOnly = false,
303
+ isRequired = false,
304
+ size = 24,
305
+ ...rest
306
+ } = props;
307
+ const combinedClassName = normalizeWhitespace(`
308
+ ${SWITCH_CLASS_NAME.BASE}
309
+ ${SWITCH_CLASS_NAME.SIZE[size]}
310
+ ${customClassName}
311
+ `);
312
+ return /* @__PURE__ */ jsx6(
313
+ BaseSwitch.Root,
314
+ {
315
+ checked: isChecked,
316
+ className: combinedClassName,
317
+ defaultChecked: isDefaultChecked,
318
+ disabled: isDisabled,
319
+ readOnly: isReadOnly,
320
+ required: isRequired,
321
+ ...rest,
322
+ children: /* @__PURE__ */ jsx6(BaseSwitch.Thumb, { className: styles8.switch__thumb })
323
+ }
324
+ );
325
+ }
326
+ var SWITCH_CLASS_NAME = {
327
+ BASE: styles8.switch,
328
+ SIZE: {
329
+ 18: styles8.switch__size_18,
330
+ 24: styles8.switch__size_24
331
+ }
332
+ };
333
+
334
+ // src/components/tabs-pill/tabs-pill-list.tsx
335
+ import { Tabs as BaseTabs2 } from "@base-ui/react";
336
+
337
+ // src/components/tabs-pill/tabs-pill-indicator.tsx
338
+ import { Tabs as BaseTabs } from "@base-ui/react";
339
+ import styles9 from "./tabs-pill-indicator.module-533HMO7L.module.css";
340
+ import { jsx as jsx7 } from "react/jsx-runtime";
341
+ function TabsPillIndicator(props) {
342
+ const { className: customClassName = "", ...rest } = props;
343
+ const combinedClassName = normalizeWhitespace(`
344
+ ${TABS_PILL_INDICATOR_CLASS_NAME.BASE}
345
+ ${customClassName}
346
+ `);
347
+ return /* @__PURE__ */ jsx7(
348
+ BaseTabs.Indicator,
349
+ {
350
+ className: combinedClassName,
351
+ "data-slot": "tabs-pill-indicator",
352
+ renderBeforeHydration: true,
353
+ ...rest
354
+ }
355
+ );
356
+ }
357
+ var TABS_PILL_INDICATOR_CLASS_NAME = {
358
+ BASE: styles9.tabs_pill_indicator
359
+ };
360
+
361
+ // src/components/tabs-pill/tabs-pill-list.tsx
362
+ import styles10 from "./tabs-pill-list.module-KQW67ZSW.module.css";
363
+ import { jsx as jsx8, jsxs as jsxs2 } from "react/jsx-runtime";
364
+ function TabsPillList(props) {
365
+ const { className: customClassName = "", children = "", ...rest } = props;
366
+ const combinedClassName = normalizeWhitespace(`
367
+ ${TABS_PILL_LIST_CLASS_NAME.BASE}
368
+ ${customClassName}
369
+ `);
370
+ return /* @__PURE__ */ jsxs2(BaseTabs2.List, { className: combinedClassName, "data-slot": "tabs-pill-list", ...rest, children: [
371
+ children,
372
+ /* @__PURE__ */ jsx8(TabsPillIndicator, {})
373
+ ] });
374
+ }
375
+ var TABS_PILL_LIST_CLASS_NAME = {
376
+ BASE: styles10.tabs_pill_list
377
+ };
378
+
379
+ // src/components/tabs-pill/tabs-pill-tab.tsx
380
+ import { Tabs as BaseTabs3 } from "@base-ui/react";
381
+ import styles11 from "./tabs-pill-tab.module-M5YIWTWX.module.css";
382
+ import { jsx as jsx9, jsxs as jsxs3 } from "react/jsx-runtime";
383
+ function TabsPillTab(props) {
384
+ const { className: customClassName = "", isNativeButton = true, ...rest } = props;
385
+ const combinedClassName = normalizeWhitespace(`
386
+ ${TABS_PILL_TAB_CLASS_NAME.BASE}
387
+ ${customClassName}
388
+ `);
389
+ return /* @__PURE__ */ jsxs3("div", { className: TABS_PILL_TAB_CLASS_NAME.WRAPPER, children: [
390
+ /* @__PURE__ */ jsx9(
391
+ BaseTabs3.Tab,
392
+ {
393
+ className: combinedClassName,
394
+ "data-slot": "tabs-pill-tab",
395
+ nativeButton: isNativeButton,
396
+ ...rest
397
+ }
398
+ ),
399
+ /* @__PURE__ */ jsx9("div", { className: TABS_PILL_TAB_CLASS_NAME.BACKGROUND })
400
+ ] });
401
+ }
402
+ var TABS_PILL_TAB_CLASS_NAME = {
403
+ BACKGROUND: styles11.tabs_pill_tab_background,
404
+ BASE: styles11.tabs_pill_tab,
405
+ WRAPPER: styles11.tabs_pill_tab_wrapper
406
+ };
407
+
408
+ // src/components/tabs-segmented/tabs-segmented-list.tsx
409
+ import { Tabs as BaseTabs5 } from "@base-ui/react";
410
+
411
+ // src/components/tabs-segmented/tabs-segmented-indicator.tsx
412
+ import { Tabs as BaseTabs4 } from "@base-ui/react";
413
+ import styles12 from "./tabs-segmented-indicator.module-MB5GZJGW.module.css";
414
+ import { jsx as jsx10 } from "react/jsx-runtime";
415
+ function TabsSegmentedIndicator(props) {
416
+ const { className: customClassName = "", ...rest } = props;
417
+ const combinedClassName = normalizeWhitespace(`
418
+ ${TABS_SEGMENTED_INDICATOR_CLASS_NAME.BASE}
419
+ ${customClassName}
420
+ `);
421
+ return /* @__PURE__ */ jsx10(
422
+ BaseTabs4.Indicator,
423
+ {
424
+ className: combinedClassName,
425
+ "data-slot": "tabs-segmented-indicator",
426
+ renderBeforeHydration: true,
427
+ ...rest
428
+ }
429
+ );
430
+ }
431
+ var TABS_SEGMENTED_INDICATOR_CLASS_NAME = {
432
+ BASE: styles12.tabs_segmented_indicator
433
+ };
434
+
435
+ // src/components/tabs-segmented/tabs-segmented-list.tsx
436
+ import styles13 from "./tabs-segmented-list.module-I3DSVFSP.module.css";
437
+ import { jsx as jsx11, jsxs as jsxs4 } from "react/jsx-runtime";
438
+ function TabsSegmentedList(props) {
439
+ const { className: customClassName = "", children = "", ...rest } = props;
440
+ const combinedClassName = normalizeWhitespace(`
441
+ ${TABS_SEGMENTED_LIST_CLASS_NAME.BASE}
442
+ ${customClassName}
443
+ `);
444
+ return /* @__PURE__ */ jsxs4(BaseTabs5.List, { className: combinedClassName, "data-slot": "tabs-segmented-list", ...rest, children: [
445
+ children,
446
+ /* @__PURE__ */ jsx11(TabsSegmentedIndicator, {})
447
+ ] });
448
+ }
449
+ var TABS_SEGMENTED_LIST_CLASS_NAME = {
450
+ BASE: styles13.tabs_segmented_list
451
+ };
452
+
453
+ // src/components/tabs-segmented/tabs-segmented-tab.tsx
454
+ import { Tabs as BaseTabs6 } from "@base-ui/react";
455
+ import styles14 from "./tabs-segmented-tab.module-GFCOY63Z.module.css";
456
+ import { jsx as jsx12 } from "react/jsx-runtime";
457
+ function TabsSegmentedTab(props) {
458
+ const { className: customClassName = "", isNativeButton = true, ...rest } = props;
459
+ const combinedClassName = normalizeWhitespace(`
460
+ ${TABS_SEGMENTED_TAB_CLASS_NAME.BASE}
461
+ ${customClassName}
462
+ `);
463
+ return /* @__PURE__ */ jsx12(
464
+ BaseTabs6.Tab,
465
+ {
466
+ className: combinedClassName,
467
+ "data-slot": "tabs-segmented-tab",
468
+ nativeButton: isNativeButton,
469
+ ...rest
470
+ }
471
+ );
472
+ }
473
+ var TABS_SEGMENTED_TAB_CLASS_NAME = {
474
+ BASE: styles14.tabs_segmented_tab
475
+ };
476
+
477
+ // src/components/tabs-underline/tabs-underline-list.tsx
478
+ import { Tabs as BaseTabs8 } from "@base-ui/react";
479
+
480
+ // src/components/tabs-underline/tabs-underline-indicator.tsx
481
+ import { Tabs as BaseTabs7 } from "@base-ui/react";
482
+ import styles15 from "./tabs-underline-indicator.module-6SHQHUH5.module.css";
483
+ import { jsx as jsx13 } from "react/jsx-runtime";
484
+ function TabsUnderlineIndicator(props) {
485
+ const { className: customClassName = "", ...rest } = props;
486
+ const combinedClassName = normalizeWhitespace(`
487
+ ${TABS_UNDERLINE_INDICATOR_CLASS_NAME.BASE}
488
+ ${customClassName}
489
+ `);
490
+ return /* @__PURE__ */ jsx13(
491
+ BaseTabs7.Indicator,
492
+ {
493
+ className: combinedClassName,
494
+ "data-slot": "tabs-underline-indicator",
495
+ renderBeforeHydration: true,
496
+ ...rest
497
+ }
498
+ );
499
+ }
500
+ var TABS_UNDERLINE_INDICATOR_CLASS_NAME = {
501
+ BASE: styles15.tabs_underline_indicator
502
+ };
503
+
504
+ // src/components/tabs-underline/tabs-underline-list.tsx
505
+ import styles16 from "./tabs-underline-list.module-72ZCIEAS.module.css";
506
+ import { jsx as jsx14, jsxs as jsxs5 } from "react/jsx-runtime";
507
+ function TabsUnderlineList(props) {
508
+ const { className: customClassName = "", children = "", ...rest } = props;
509
+ const combinedClassName = normalizeWhitespace(`
510
+ ${TABS_UNDERLINE_LIST_CLASS_NAME.BASE}
511
+ ${customClassName}
512
+ `);
513
+ return /* @__PURE__ */ jsxs5(BaseTabs8.List, { className: combinedClassName, "data-slot": "tabs-underline-list", ...rest, children: [
514
+ children,
515
+ /* @__PURE__ */ jsx14(TabsUnderlineIndicator, {})
516
+ ] });
517
+ }
518
+ var TABS_UNDERLINE_LIST_CLASS_NAME = {
519
+ BASE: styles16.tabs_underline_list
520
+ };
521
+
522
+ // src/components/tabs-underline/tabs-underline-tab.tsx
523
+ import { Tabs as BaseTabs9 } from "@base-ui/react";
524
+ import styles17 from "./tabs-underline-tab.module-YGSM4IUK.module.css";
525
+ import { jsx as jsx15 } from "react/jsx-runtime";
526
+ function TabsUnderlineTab(props) {
527
+ const { className: customClassName = "", isNativeButton = true, ...rest } = props;
528
+ const combinedClassName = normalizeWhitespace(`
529
+ ${TABS_UNDERLINE_TAB_CLASS_NAME.BASE}
530
+ ${customClassName}
531
+ `);
532
+ return /* @__PURE__ */ jsx15(
533
+ BaseTabs9.Tab,
534
+ {
535
+ className: combinedClassName,
536
+ "data-slot": "tabs-underline-tab",
537
+ nativeButton: isNativeButton,
538
+ ...rest
539
+ }
540
+ );
541
+ }
542
+ var TABS_UNDERLINE_TAB_CLASS_NAME = {
543
+ BASE: styles17.tabs_underline_tab
544
+ };
545
+
546
+ // src/components/tabs/tabs.tsx
547
+ import { Tabs as BaseTabs10 } from "@base-ui/react";
548
+ import styles18 from "./tabs.module-3Z5DRPPX.module.css";
549
+ import { jsx as jsx16 } from "react/jsx-runtime";
550
+ function Tabs(props) {
551
+ const { className: customClassName = "", ...rest } = props;
552
+ const combinedClassName = normalizeWhitespace(`
553
+ ${TABS_CLASS_NAME.BASE}
554
+ ${customClassName}
555
+ `);
556
+ return /* @__PURE__ */ jsx16(BaseTabs10.Root, { className: combinedClassName, "data-slot": "tabs", ...rest });
557
+ }
558
+ var TABS_CLASS_NAME = {
559
+ BASE: styles18.tabs
560
+ };
561
+
562
+ // src/components/tabs/tabs-panel.tsx
563
+ import { Tabs as BaseTabs11 } from "@base-ui/react";
564
+ import styles19 from "./tabs-panel.module-VGH3G3KV.module.css";
565
+ import { jsx as jsx17 } from "react/jsx-runtime";
566
+ function TabsPanel(props) {
567
+ const { className: customClassName = "", ...rest } = props;
568
+ const combinedClassName = normalizeWhitespace(`
569
+ ${TABS_PANEL_CLASS_NAME.BASE}
570
+ ${customClassName}
571
+ `);
572
+ return /* @__PURE__ */ jsx17(BaseTabs11.Panel, { className: combinedClassName, "data-slot": "tabs-panel", ...rest });
573
+ }
574
+ var TABS_PANEL_CLASS_NAME = {
575
+ BASE: styles19.tabs_panel
576
+ };
577
+
578
+ // src/components/textarea/textarea.tsx
579
+ import inputStyles from "./input.module-DOM3NIU5.module.css";
580
+ import styles20 from "./textarea.module-6GUVSFC7.module.css";
581
+ import { jsx as jsx18 } from "react/jsx-runtime";
582
+ function Textarea(props) {
583
+ const {
584
+ className: customClassName = "",
585
+ isActive = false,
586
+ isDisabled = false,
587
+ isInvalid = void 0,
588
+ isReadOnly = false,
589
+ isRequired = false,
590
+ isRounded = false,
591
+ isValid = void 0,
592
+ rows = 2,
593
+ ...rest
594
+ } = props;
595
+ const combinedClassName = normalizeWhitespace(`
596
+ ${TEXTAREA_CLASS_NAME.INPUT}
597
+ ${TEXTAREA_CLASS_NAME.BASE}
598
+ ${isRounded ? TEXTAREA_CLASS_NAME.ROUNDED.FULL : TEXTAREA_CLASS_NAME.ROUNDED.BASE}
599
+ ${customClassName}
600
+ `);
601
+ return /* @__PURE__ */ jsx18(
602
+ "textarea",
603
+ {
604
+ className: combinedClassName,
605
+ "data-is-active": isActive,
606
+ "data-is-invalid": isInvalid,
607
+ "data-is-valid": isValid,
608
+ disabled: isDisabled,
609
+ readOnly: isReadOnly,
610
+ required: isRequired,
611
+ rows,
612
+ ...rest
613
+ }
614
+ );
615
+ }
616
+ var TEXTAREA_CLASS_NAME = {
617
+ BASE: styles20.textarea,
618
+ INPUT: inputStyles.input,
619
+ ROUNDED: {
620
+ BASE: inputStyles.input__rounded_base,
621
+ FULL: inputStyles.input__rounded_full
622
+ }
623
+ };
624
+
625
+ // src/components/tooltip/tooltip.tsx
626
+ import { Tooltip as BaseTooltip } from "@base-ui/react";
627
+ import { jsx as jsx19 } from "react/jsx-runtime";
628
+ function Tooltip(props) {
629
+ const { ...rest } = props;
630
+ return /* @__PURE__ */ jsx19(BaseTooltip.Root, { "data-slot": "tooltip", disableHoverablePopup: true, ...rest });
631
+ }
632
+
633
+ // src/components/tooltip/tooltip-content.tsx
634
+ import { Tooltip as BaseTooltip2 } from "@base-ui/react";
635
+ import styles21 from "./tooltip-content.module-5MWTMSBY.module.css";
636
+ import { jsx as jsx20, jsxs as jsxs6 } from "react/jsx-runtime";
637
+ function TooltipContent(props) {
638
+ const { children, className: customClassName = "", side = "top", ...rest } = props;
639
+ const SIDE_OFFSET = 4;
640
+ const combinedClassName = normalizeWhitespace(`
641
+ ${TOOLTIP_CONTENT_CLASS_NAME.BASE}
642
+ ${customClassName}
643
+ `);
644
+ return /* @__PURE__ */ jsx20(BaseTooltip2.Portal, { children: /* @__PURE__ */ jsxs6(
645
+ BaseTooltip2.Positioner,
646
+ {
647
+ className: styles21.tooltip_content_positioner,
648
+ side,
649
+ sideOffset: SIDE_OFFSET,
650
+ children: [
651
+ /* @__PURE__ */ jsx20(BaseTooltip2.Popup, { className: combinedClassName, "data-slot": "tooltip-content", ...rest, children }),
652
+ /* @__PURE__ */ jsx20(BaseTooltip2.Arrow, {})
653
+ ]
654
+ }
655
+ ) });
656
+ }
657
+ var TOOLTIP_CONTENT_CLASS_NAME = {
658
+ BASE: styles21.tooltip_content
659
+ };
660
+
661
+ // src/components/tooltip/tooltip-provider.tsx
662
+ import { Tooltip as BaseTooltip3 } from "@base-ui/react";
663
+ import { jsx as jsx21 } from "react/jsx-runtime";
664
+ function TooltipProvider(props) {
665
+ const { ...rest } = props;
666
+ return /* @__PURE__ */ jsx21(BaseTooltip3.Provider, { "data-slot": "tooltip-provider", ...rest });
667
+ }
668
+
669
+ // src/components/tooltip/tooltip-trigger.tsx
670
+ import { Tooltip as BaseTooltip4 } from "@base-ui/react";
671
+ import { jsx as jsx22 } from "react/jsx-runtime";
672
+ function TooltipTrigger(props) {
673
+ const { ...rest } = props;
674
+ return /* @__PURE__ */ jsx22(BaseTooltip4.Trigger, { "data-slot": "tooltip-trigger", ...rest });
675
+ }
676
+ export {
677
+ BUTTON_CLASS_NAME,
678
+ Button,
679
+ ButtonLink,
680
+ COLUMN_CLASS_NAME,
681
+ Column,
682
+ INPUT_CLASS_NAME,
683
+ Input,
684
+ LABEL_CLASS_NAME,
685
+ Label,
686
+ ROW_CLASS_NAME,
687
+ Row,
688
+ SPACER_CLASS_NAME,
689
+ SWITCH_CLASS_NAME,
690
+ Spacer,
691
+ Switch,
692
+ TABS_CLASS_NAME,
693
+ TABS_PANEL_CLASS_NAME,
694
+ TABS_PILL_LIST_CLASS_NAME,
695
+ TABS_PILL_TAB_CLASS_NAME,
696
+ TABS_SEGMENTED_LIST_CLASS_NAME,
697
+ TABS_SEGMENTED_TAB_CLASS_NAME,
698
+ TABS_UNDERLINE_LIST_CLASS_NAME,
699
+ TABS_UNDERLINE_TAB_CLASS_NAME,
700
+ TEXTAREA_CLASS_NAME,
701
+ TOOLTIP_CONTENT_CLASS_NAME,
702
+ Tabs,
703
+ TabsPanel,
704
+ TabsPillList,
705
+ TabsPillTab,
706
+ TabsSegmentedList,
707
+ TabsSegmentedTab,
708
+ TabsUnderlineList,
709
+ TabsUnderlineTab,
710
+ Textarea,
711
+ Tooltip,
712
+ TooltipContent,
713
+ TooltipProvider,
714
+ TooltipTrigger
715
+ };