@lindle/linoardo 1.0.16 → 1.0.18

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 (120) hide show
  1. package/dist/ExpansionPanelItem-Bd6ZWGkR.d.cts +58 -0
  2. package/dist/ExpansionPanelItem-DOjgDeB6.d.ts +58 -0
  3. package/dist/button.cjs +214 -0
  4. package/dist/button.cjs.map +1 -0
  5. package/dist/button.d.cts +20 -0
  6. package/dist/button.d.ts +20 -0
  7. package/dist/button.js +4 -0
  8. package/dist/button.js.map +1 -0
  9. package/dist/card.cjs +87 -0
  10. package/dist/card.cjs.map +1 -0
  11. package/dist/card.d.cts +34 -0
  12. package/dist/card.d.ts +34 -0
  13. package/dist/card.js +3 -0
  14. package/dist/card.js.map +1 -0
  15. package/dist/chip.cjs +247 -0
  16. package/dist/chip.cjs.map +1 -0
  17. package/dist/chip.d.cts +368 -0
  18. package/dist/chip.d.ts +368 -0
  19. package/dist/chip.js +4 -0
  20. package/dist/chip.js.map +1 -0
  21. package/dist/chunk-32KFNI6K.js +114 -0
  22. package/dist/chunk-32KFNI6K.js.map +1 -0
  23. package/dist/chunk-5GY2JCBO.js +92 -0
  24. package/dist/chunk-5GY2JCBO.js.map +1 -0
  25. package/dist/chunk-AOHXZ7OM.js +126 -0
  26. package/dist/chunk-AOHXZ7OM.js.map +1 -0
  27. package/dist/chunk-E32P5AHO.js +125 -0
  28. package/dist/chunk-E32P5AHO.js.map +1 -0
  29. package/dist/chunk-GA6HSRN6.js +235 -0
  30. package/dist/chunk-GA6HSRN6.js.map +1 -0
  31. package/dist/chunk-IEILIKS2.js +8 -0
  32. package/dist/chunk-IEILIKS2.js.map +1 -0
  33. package/dist/chunk-N65GNKRG.js +143 -0
  34. package/dist/chunk-N65GNKRG.js.map +1 -0
  35. package/dist/chunk-PWK6MLZT.js +239 -0
  36. package/dist/chunk-PWK6MLZT.js.map +1 -0
  37. package/dist/chunk-PYG5SDNO.js +98 -0
  38. package/dist/chunk-PYG5SDNO.js.map +1 -0
  39. package/dist/chunk-QGQ66FJD.js +155 -0
  40. package/dist/chunk-QGQ66FJD.js.map +1 -0
  41. package/dist/chunk-SZU6OYLS.js +187 -0
  42. package/dist/chunk-SZU6OYLS.js.map +1 -0
  43. package/dist/chunk-U6NAIIDI.js +99 -0
  44. package/dist/chunk-U6NAIIDI.js.map +1 -0
  45. package/dist/chunk-V4BVJOSC.js +85 -0
  46. package/dist/chunk-V4BVJOSC.js.map +1 -0
  47. package/dist/chunk-XFPBICJG.js +127 -0
  48. package/dist/chunk-XFPBICJG.js.map +1 -0
  49. package/dist/dialog.cjs +121 -0
  50. package/dist/dialog.cjs.map +1 -0
  51. package/dist/dialog.d.cts +17 -0
  52. package/dist/dialog.d.ts +17 -0
  53. package/dist/dialog.js +3 -0
  54. package/dist/dialog.js.map +1 -0
  55. package/dist/expansion-panel/item.cjs +195 -0
  56. package/dist/expansion-panel/item.cjs.map +1 -0
  57. package/dist/expansion-panel/item.d.cts +3 -0
  58. package/dist/expansion-panel/item.d.ts +3 -0
  59. package/dist/expansion-panel/item.js +3 -0
  60. package/dist/expansion-panel/item.js.map +1 -0
  61. package/dist/expansion-panel.cjs +356 -0
  62. package/dist/expansion-panel.cjs.map +1 -0
  63. package/dist/expansion-panel.d.cts +8 -0
  64. package/dist/expansion-panel.d.ts +8 -0
  65. package/dist/expansion-panel.js +4 -0
  66. package/dist/expansion-panel.js.map +1 -0
  67. package/dist/global.types-E2uVLemv.d.cts +7 -0
  68. package/dist/global.types-E2uVLemv.d.ts +7 -0
  69. package/dist/index-Md3BuoGM.d.cts +32 -0
  70. package/dist/index-d_JuI06O.d.ts +32 -0
  71. package/dist/index.cjs +557 -160
  72. package/dist/index.cjs.map +1 -1
  73. package/dist/index.d.cts +15 -549
  74. package/dist/index.d.ts +15 -549
  75. package/dist/index.js +14 -1330
  76. package/dist/index.js.map +1 -1
  77. package/dist/input.cjs +106 -0
  78. package/dist/input.cjs.map +1 -0
  79. package/dist/input.d.cts +22 -0
  80. package/dist/input.d.ts +22 -0
  81. package/dist/input.js +4 -0
  82. package/dist/input.js.map +1 -0
  83. package/dist/list/item.cjs +149 -0
  84. package/dist/list/item.cjs.map +1 -0
  85. package/dist/list/item.d.cts +3 -0
  86. package/dist/list/item.d.ts +3 -0
  87. package/dist/list/item.js +3 -0
  88. package/dist/list/item.js.map +1 -0
  89. package/dist/list.cjs +235 -0
  90. package/dist/list.cjs.map +1 -0
  91. package/dist/list.d.cts +17 -0
  92. package/dist/list.d.ts +17 -0
  93. package/dist/list.js +4 -0
  94. package/dist/list.js.map +1 -0
  95. package/dist/menu.cjs +177 -0
  96. package/dist/menu.cjs.map +1 -0
  97. package/dist/menu.d.cts +20 -0
  98. package/dist/menu.d.ts +20 -0
  99. package/dist/menu.js +3 -0
  100. package/dist/menu.js.map +1 -0
  101. package/dist/slider.cjs +128 -0
  102. package/dist/slider.cjs.map +1 -0
  103. package/dist/slider.d.cts +42 -0
  104. package/dist/slider.d.ts +42 -0
  105. package/dist/slider.js +3 -0
  106. package/dist/slider.js.map +1 -0
  107. package/dist/styles.css +334 -44
  108. package/dist/switch.cjs +145 -0
  109. package/dist/switch.cjs.map +1 -0
  110. package/dist/switch.d.cts +16 -0
  111. package/dist/switch.d.ts +16 -0
  112. package/dist/switch.js +3 -0
  113. package/dist/switch.js.map +1 -0
  114. package/dist/tooltip.cjs +136 -0
  115. package/dist/tooltip.cjs.map +1 -0
  116. package/dist/tooltip.d.cts +19 -0
  117. package/dist/tooltip.d.ts +19 -0
  118. package/dist/tooltip.js +3 -0
  119. package/dist/tooltip.js.map +1 -0
  120. package/package.json +67 -2
package/dist/index.js CHANGED
@@ -1,1332 +1,16 @@
1
- import * as React3 from 'react';
2
- import { forwardRef, Component, useState, useRef, useEffect, useCallback, useMemo, isValidElement, cloneElement } from 'react';
3
- import { twMerge } from 'tailwind-merge';
4
- import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
5
-
6
- // src/Containment/Button/index.tsx
7
-
8
- // src/globals.ts
9
- var iconBaseClasses = {
10
- mdi: ["mdi"]
11
- };
12
- var base = "btn-base focus-visible:outline-none focus-visible:ring-2 rounded-lg transition-colors duration-200 font-medium disabled:opacity-50 disabled:cursor-not-allowed";
13
- var blackAndWhiteVariantClass = "bg-white text-black border border-black focus-visible:ring-black/40 focus-visible:ring-offset-white";
14
- var blackAndWhitePaletteClasses = {
15
- solid: twMerge(blackAndWhiteVariantClass, "bg-black text-white"),
16
- outline: blackAndWhiteVariantClass,
17
- ghost: "bg-neutral-300 text-white",
18
- text: blackAndWhiteVariantClass,
19
- filled: "bg-black text-white",
20
- underlined: twMerge(blackAndWhiteVariantClass, "b"),
21
- rounded: blackAndWhiteVariantClass,
22
- sharp: "bg-black text-white rounded-none"
23
- };
24
- var paletteVariantClasses = {
25
- primary: {
26
- solid: "bg-primary text-white hover:bg-primary/90 focus-visible:ring-primary",
27
- sharp: "rounded-none bg-primary text-white hover:bg-primary/90 focus-visible:ring-primary",
28
- outline: "border border-primary text-primary bg-white hover:bg-primary hover:text-white focus-visible:ring-primary",
29
- ghost: "text-primary bg-primary/10 hover:bg-primary/20 focus-visible:ring-primary/40 border border-transparent",
30
- text: "bg-transparent text-primary hover:bg-primary/10 focus-visible:ring-primary/30 underline-offset-2 border border-transparent",
31
- filled: "bg-primary/15 text-primary border border-primary/30 hover:bg-primary/25 focus-visible:ring-primary/25",
32
- underlined: "bg-transparent text-primary border border-transparent underline decoration-2 underline-offset-4 hover:bg-primary/5 focus-visible:ring-primary/25",
33
- rounded: "rounded-full border border-primary/60 bg-primary/10 text-primary hover:bg-primary/20 focus-visible:ring-primary/25"
34
- },
35
- neutral: {
36
- solid: "bg-gray-600 text-white hover:bg-gray-700 focus-visible:ring-gray-500",
37
- sharp: "rounded-none bg-gray-600 text-white hover:bg-gray-700 focus-visible:ring-gray-500",
38
- outline: "border border-gray-400 text-gray-700 bg-white hover:bg-gray-700 hover:text-white focus-visible:ring-gray-400",
39
- ghost: "text-gray-700 bg-gray-100 hover:bg-gray-200 focus-visible:ring-gray-300 border border-transparent",
40
- text: "bg-transparent text-gray-700 hover:bg-gray-100 focus-visible:ring-gray-200 underline-offset-2 border border-transparent",
41
- filled: "bg-gray-200 text-gray-900 border border-gray-300 hover:bg-gray-300 focus-visible:ring-gray-300",
42
- underlined: "bg-transparent text-gray-900 border border-transparent underline decoration-2 underline-offset-4 hover:bg-gray-100 focus-visible:ring-gray-300",
43
- rounded: "rounded-full border border-gray-400 bg-white text-gray-800 hover:bg-gray-100 focus-visible:ring-gray-300"
44
- },
45
- info: {
46
- solid: "bg-sky-500 text-white hover:bg-sky-600 focus-visible:ring-sky-400",
47
- sharp: "rounded-none bg-sky-500 text-white hover:bg-sky-600 focus-visible:ring-sky-400",
48
- outline: "border border-sky-500 text-sky-600 bg-white hover:bg-sky-500 hover:text-white focus-visible:ring-sky-400",
49
- ghost: "text-sky-600 bg-sky-100 hover:bg-sky-200 focus-visible:ring-sky-300 border border-transparent",
50
- text: "bg-transparent text-sky-600 hover:bg-sky-100 focus-visible:ring-sky-200 underline-offset-2 border border-transparent",
51
- filled: "bg-sky-100 text-sky-700 border border-sky-200 hover:bg-sky-200 focus-visible:ring-sky-200",
52
- underlined: "bg-transparent text-sky-600 border border-transparent underline decoration-2 underline-offset-4 hover:bg-sky-50 focus-visible:ring-sky-200",
53
- rounded: "rounded-full border border-sky-500/70 bg-sky-50 text-sky-700 hover:bg-sky-100 focus-visible:ring-sky-200"
54
- },
55
- success: {
56
- solid: "bg-emerald-500 text-white hover:bg-emerald-600 focus-visible:ring-emerald-400",
57
- sharp: "rounded-none bg-emerald-500 text-white hover:bg-emerald-600 focus-visible:ring-emerald-400",
58
- outline: "border border-emerald-500 text-emerald-600 bg-white hover:bg-emerald-500 hover:text-white focus-visible:ring-emerald-400",
59
- ghost: "text-emerald-600 bg-emerald-100 hover:bg-emerald-200 focus-visible:ring-emerald-300 border border-transparent",
60
- text: "bg-transparent text-emerald-600 hover:bg-emerald-100 focus-visible:ring-emerald-200 underline-offset-2 border border-transparent",
61
- filled: "bg-emerald-100 text-emerald-700 border border-emerald-200 hover:bg-emerald-200 focus-visible:ring-emerald-200",
62
- underlined: "bg-transparent text-emerald-600 border border-transparent underline decoration-2 underline-offset-4 hover:bg-emerald-50 focus-visible:ring-emerald-200",
63
- rounded: "rounded-full border border-emerald-500/70 bg-emerald-50 text-emerald-700 hover:bg-emerald-100 focus-visible:ring-emerald-200"
64
- },
65
- warning: {
66
- solid: "bg-amber-500 text-white hover:bg-amber-600 focus-visible:ring-amber-400",
67
- sharp: "rounded-none bg-amber-500 text-white hover:bg-amber-600 focus-visible:ring-amber-400",
68
- outline: "border border-amber-500 text-amber-600 bg-white hover:bg-amber-500 hover:text-white focus-visible:ring-amber-400",
69
- ghost: "text-amber-600 bg-amber-100 hover:bg-amber-200 focus-visible:ring-amber-300 border border-transparent",
70
- text: "bg-transparent text-amber-600 hover:bg-amber-100 focus-visible:ring-amber-200 underline-offset-2 border border-transparent",
71
- filled: "bg-amber-100 text-amber-800 border border-amber-200 hover:bg-amber-200 focus-visible:ring-amber-200",
72
- underlined: "bg-transparent text-amber-600 border border-transparent underline decoration-2 underline-offset-4 hover:bg-amber-50 focus-visible:ring-amber-200",
73
- rounded: "rounded-full border border-amber-500/70 bg-amber-50 text-amber-700 hover:bg-amber-100 focus-visible:ring-amber-200"
74
- },
75
- danger: {
76
- solid: "bg-red-500 text-white hover:bg-red-600 focus-visible:ring-red-400",
77
- sharp: "rounded-none bg-red-500 text-white hover:bg-red-600 focus-visible:ring-red-400",
78
- outline: "border border-red-500 text-red-600 bg-white hover:bg-red-500 hover:text-white focus-visible:ring-red-400",
79
- ghost: "text-red-600 bg-red-100 hover:bg-red-200 focus-visible:ring-red-300 border border-transparent",
80
- text: "bg-transparent text-red-600 hover:bg-red-100 focus-visible:ring-red-200 underline-offset-2 border border-transparent",
81
- filled: "bg-red-100 text-red-700 border border-red-200 hover:bg-red-200 focus-visible:ring-red-200",
82
- underlined: "bg-transparent text-red-600 border border-transparent underline decoration-2 underline-offset-4 hover:bg-red-50 focus-visible:ring-red-200",
83
- rounded: "rounded-full border border-red-500/70 bg-red-50 text-red-700 hover:bg-red-100 focus-visible:ring-red-200"
84
- },
85
- surface: {
86
- solid: "bg-white text-gray-900 border border-gray-200 hover:bg-gray-50 focus-visible:ring-gray-200",
87
- sharp: "rounded-none bg-white text-gray-900 border border-gray-200 hover:bg-gray-50 focus-visible:ring-gray-200",
88
- outline: "border border-gray-300 text-gray-900 bg-white hover:bg-gray-100 focus-visible:ring-gray-200",
89
- ghost: "text-gray-900 bg-gray-100 hover:bg-gray-200 focus-visible:ring-gray-200 border border-transparent",
90
- text: "bg-transparent text-gray-900 hover:bg-gray-100 focus-visible:ring-gray-200 underline-offset-2 border border-transparent",
91
- filled: "bg-gray-50 text-gray-900 border border-gray-200 hover:bg-white focus-visible:ring-gray-200",
92
- underlined: "bg-transparent text-gray-900 border border-transparent underline decoration-2 underline-offset-4 hover:bg-gray-100 focus-visible:ring-gray-200",
93
- rounded: "rounded-full border border-gray-300 bg-white text-gray-900 hover:bg-gray-50 focus-visible:ring-gray-200"
94
- },
95
- bw: blackAndWhitePaletteClasses
96
- };
97
- var resolveVariantClass = (variant, palette) => {
98
- const paletteVariants = paletteVariantClasses[palette] ?? paletteVariantClasses.primary;
99
- return paletteVariants[variant] ?? paletteVariants.solid;
100
- };
101
- var resolveIconClassName = (icon) => {
102
- if (!icon) {
103
- return void 0;
104
- }
105
- if (typeof icon === "string") {
106
- const trimmed = icon.trim();
107
- if (!trimmed) {
108
- return void 0;
109
- }
110
- if (trimmed.includes(" ")) {
111
- return trimmed;
112
- }
113
- const normalized2 = trimmed.startsWith("mdi-") ? trimmed : `mdi-${trimmed}`;
114
- return ["mdi", normalized2].join(" ");
115
- }
116
- const [library, providedName] = icon;
117
- const normalizedLibrary = library.trim();
118
- const baseClasses = iconBaseClasses[normalizedLibrary] ?? [normalizedLibrary];
119
- const iconName = providedName.trim();
120
- if (!iconName) {
121
- return baseClasses.join(" ");
122
- }
123
- const normalized = iconName.startsWith("mdi-") ? iconName : `mdi-${iconName}`;
124
- return Array.from(/* @__PURE__ */ new Set([...baseClasses, normalized])).join(" ");
125
- };
126
- var sizeClasses = {
127
- "x-small": "px-2.5 py-1 text-xs",
128
- small: "px-3 py-1.5 text-sm",
129
- medium: "px-4 py-2 text-base",
130
- large: "px-6 py-3 text-lg",
131
- "x-large": "px-7 py-3.5 text-xl"
132
- };
133
- var Button = React3.forwardRef(
134
- ({
135
- variant = "solid",
136
- color = "primary",
137
- size = "medium",
138
- block = false,
139
- loading = false,
140
- loadingText,
141
- icon,
142
- className,
143
- children,
144
- disabled,
145
- onClick,
146
- ...rest
147
- }, ref) => {
148
- const variantClass = resolveVariantClass(variant, color);
149
- const sizeClass = sizeClasses[size] ?? sizeClasses.medium;
150
- const blockClass = block ? "w-full" : null;
151
- const isDisabled = disabled || loading;
152
- const cursor = onClick && !isDisabled ? "cursor-pointer" : "cursor-default";
153
- const resolvedIconClass = resolveIconClassName(icon);
154
- const shouldRenderIcon = Boolean(resolvedIconClass && !loading);
155
- const isLoadingTextProvided = loadingText !== void 0 && loadingText !== null;
156
- const content = loading && isLoadingTextProvided ? loadingText : children;
157
- const hasDecorators = (loading || shouldRenderIcon) && Boolean(content);
158
- const gapClass = hasDecorators ? "gap-2" : void 0;
159
- const loadingIconClass = loading ? twMerge("mdi mdi-loading mdi-spin", "leading-none") : void 0;
160
- const iconClassName = shouldRenderIcon ? twMerge("leading-none", resolvedIconClass) : void 0;
161
- return /* @__PURE__ */ jsxs(
162
- "button",
163
- {
164
- ...rest,
165
- ref,
166
- onClick,
167
- disabled: isDisabled,
168
- className: twMerge(base, cursor, variantClass, sizeClass, blockClass, gapClass, className),
169
- "data-loading": loading || void 0,
170
- "aria-busy": loading || void 0,
171
- children: [
172
- loading && /* @__PURE__ */ jsx("i", { className: loadingIconClass, "aria-hidden": true }),
173
- iconClassName && /* @__PURE__ */ jsx("i", { className: iconClassName, "aria-hidden": true }),
174
- content
175
- ]
176
- }
177
- );
178
- }
179
- );
180
- Button.displayName = "Button";
181
- var Button_default = Button;
182
-
183
- // src/Containment/Chip/states.chip.ts
184
- var chipBaseClasses = "inline-flex items-center gap-1.5 border font-medium leading-tight transition-all duration-200 select-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2";
185
- var chipSizeClasses = {
186
- small: "text-xs px-3 py-1 min-h-[1.5rem]",
187
- medium: "text-sm px-4 py-1.5 min-h-[2rem]",
188
- large: "text-base px-5 py-2 min-h-[2.5rem]"
189
- };
190
- var closeButtonClasses = "ml-1 flex h-5 w-5 shrink-0 items-center justify-center rounded-full border border-transparent text-current/70 transition-colors duration-200 hover:bg-current/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-current/30 focus-visible:ring-offset-2";
191
- var blackAndWhiteChipVariantClass = "bg-white text-black border border-black hover:bg-white focus-visible:ring-black/40 focus-visible:ring-offset-white";
192
- var blackAndWhitePaletteClasses2 = {
193
- solid: blackAndWhiteChipVariantClass,
194
- outline: blackAndWhiteChipVariantClass,
195
- ghost: blackAndWhiteChipVariantClass,
196
- text: blackAndWhiteChipVariantClass,
197
- filled: blackAndWhiteChipVariantClass,
198
- underlined: blackAndWhiteChipVariantClass,
199
- rounded: blackAndWhiteChipVariantClass,
200
- sharp: `${blackAndWhiteChipVariantClass} rounded-none`
201
- };
202
- var paletteVariantClasses2 = {
203
- primary: {
204
- solid: "bg-primary text-white border border-primary hover:bg-primary/90",
205
- sharp: "rounded-none bg-primary text-white border border-primary hover:bg-primary/90",
206
- outline: "bg-transparent text-primary border border-primary hover:bg-primary/10",
207
- ghost: "bg-primary/15 text-primary border border-transparent hover:bg-primary/25",
208
- text: "bg-transparent text-primary border border-transparent hover:text-primary/80",
209
- filled: "bg-primary/10 text-primary border border-primary/30 hover:bg-primary/20",
210
- underlined: "bg-transparent text-primary border-0 border-b-2 border-primary px-0 rounded-none hover:text-primary/80",
211
- rounded: "bg-white text-primary border border-primary/40 shadow-sm hover:bg-primary/5"
212
- },
213
- neutral: {
214
- solid: "bg-gray-900 text-white border border-gray-900 hover:bg-gray-800",
215
- sharp: "rounded-none bg-gray-900 text-white border border-gray-900 hover:bg-gray-800",
216
- outline: "bg-transparent text-gray-900 border border-gray-500 hover:bg-gray-100",
217
- ghost: "bg-gray-100 text-gray-900 border border-transparent hover:bg-gray-200",
218
- text: "bg-transparent text-gray-900 border border-transparent hover:text-gray-700",
219
- filled: "bg-gray-200 text-gray-900 border border-gray-300 hover:bg-gray-300",
220
- underlined: "bg-transparent text-gray-900 border-0 border-b-2 border-gray-500 px-0 rounded-none hover:text-gray-700",
221
- rounded: "bg-white text-gray-900 border border-gray-300 shadow-sm hover:bg-gray-100"
222
- },
223
- info: {
224
- solid: "bg-sky-500 text-white border border-sky-500 hover:bg-sky-600",
225
- sharp: "rounded-none bg-sky-500 text-white border border-sky-500 hover:bg-sky-600",
226
- outline: "bg-transparent text-sky-600 border border-sky-500 hover:bg-sky-50",
227
- ghost: "bg-sky-100 text-sky-700 border border-transparent hover:bg-sky-200",
228
- text: "bg-transparent text-sky-600 border border-transparent hover:text-sky-700",
229
- filled: "bg-sky-100 text-sky-700 border border-sky-200 hover:bg-sky-200",
230
- underlined: "bg-transparent text-sky-600 border-0 border-b-2 border-sky-500 px-0 rounded-none hover:text-sky-700",
231
- rounded: "bg-white text-sky-700 border border-sky-200 shadow-sm hover:bg-sky-50"
232
- },
233
- success: {
234
- solid: "bg-emerald-500 text-white border border-emerald-500 hover:bg-emerald-600",
235
- sharp: "rounded-none bg-emerald-500 text-white border border-emerald-500 hover:bg-emerald-600",
236
- outline: "bg-transparent text-emerald-600 border border-emerald-500 hover:bg-emerald-50",
237
- ghost: "bg-emerald-100 text-emerald-700 border border-transparent hover:bg-emerald-200",
238
- text: "bg-transparent text-emerald-600 border border-transparent hover:text-emerald-700",
239
- filled: "bg-emerald-100 text-emerald-700 border border-emerald-200 hover:bg-emerald-200",
240
- underlined: "bg-transparent text-emerald-600 border-0 border-b-2 border-emerald-500 px-0 rounded-none hover:text-emerald-700",
241
- rounded: "bg-white text-emerald-700 border border-emerald-200 shadow-sm hover:bg-emerald-50"
242
- },
243
- warning: {
244
- solid: "bg-amber-500 text-white border border-amber-500 hover:bg-amber-600",
245
- sharp: "rounded-none bg-amber-500 text-white border border-amber-500 hover:bg-amber-600",
246
- outline: "bg-transparent text-amber-700 border border-amber-500 hover:bg-amber-50",
247
- ghost: "bg-amber-100 text-amber-800 border border-transparent hover:bg-amber-200",
248
- text: "bg-transparent text-amber-700 border border-transparent hover:text-amber-800",
249
- filled: "bg-amber-100 text-amber-800 border border-amber-200 hover:bg-amber-200",
250
- underlined: "bg-transparent text-amber-700 border-0 border-b-2 border-amber-500 px-0 rounded-none hover:text-amber-800",
251
- rounded: "bg-white text-amber-700 border border-amber-200 shadow-sm hover:bg-amber-50"
252
- },
253
- danger: {
254
- solid: "bg-red-500 text-white border border-red-500 hover:bg-red-600",
255
- sharp: "rounded-none bg-red-500 text-white border border-red-500 hover:bg-red-600",
256
- outline: "bg-transparent text-red-600 border border-red-500 hover:bg-red-50",
257
- ghost: "bg-red-100 text-red-700 border border-transparent hover:bg-red-200",
258
- text: "bg-transparent text-red-600 border border-transparent hover:text-red-700",
259
- filled: "bg-red-100 text-red-700 border border-red-200 hover:bg-red-200",
260
- underlined: "bg-transparent text-red-600 border-0 border-b-2 border-red-500 px-0 rounded-none hover:text-red-700",
261
- rounded: "bg-white text-red-600 border border-red-200 shadow-sm hover:bg-red-50"
262
- },
263
- surface: {
264
- solid: "bg-white text-gray-900 border border-gray-200 hover:bg-gray-50",
265
- sharp: "rounded-none bg-white text-gray-900 border border-gray-200 hover:bg-gray-50",
266
- outline: "bg-transparent text-gray-900 border border-gray-300 hover:bg-gray-50",
267
- ghost: "bg-gray-100 text-gray-900 border border-transparent hover:bg-gray-200",
268
- text: "bg-transparent text-gray-900 border border-transparent hover:text-gray-600",
269
- filled: "bg-gray-50 text-gray-900 border border-gray-200 hover:bg-white",
270
- underlined: "bg-transparent text-gray-900 border-0 border-b-2 border-gray-400 px-0 rounded-none hover:text-gray-600",
271
- rounded: "bg-white text-gray-900 border border-gray-200 shadow-sm hover:bg-gray-50"
272
- },
273
- bw: blackAndWhitePaletteClasses2
274
- };
275
- var resolveVariantClass2 = (variant, palette) => {
276
- const variants = paletteVariantClasses2[palette] ?? paletteVariantClasses2.primary;
277
- return variants[variant] ?? variants.solid;
278
- };
279
- var resolveIconClassName2 = (icon) => {
280
- if (!icon) {
281
- return void 0;
282
- }
283
- if (typeof icon === "string") {
284
- const trimmed = icon.trim();
285
- if (!trimmed) {
286
- return void 0;
287
- }
288
- if (trimmed.includes(" ")) {
289
- return trimmed;
290
- }
291
- const normalized2 = trimmed.startsWith("mdi-") ? trimmed : `mdi-${trimmed}`;
292
- return ["mdi", normalized2].join(" ");
293
- }
294
- const [library, providedName] = icon;
295
- const normalizedLibrary = library.trim();
296
- const baseClasses = iconBaseClasses[normalizedLibrary] ?? [normalizedLibrary];
297
- const iconName = providedName.trim();
298
- if (!iconName) {
299
- return baseClasses.join(" ");
300
- }
301
- const normalized = iconName.startsWith("mdi-") ? iconName : `mdi-${iconName}`;
302
- return Array.from(/* @__PURE__ */ new Set([...baseClasses, normalized])).join(" ");
303
- };
304
- var Chip = forwardRef(
305
- ({
306
- variant = "solid",
307
- color = "primary",
308
- size = "medium",
309
- pill = true,
310
- selected = false,
311
- closable = false,
312
- closeIcon = "mdi-close",
313
- onClose,
314
- filter = false,
315
- filterIcon = "mdi-check-bold",
316
- prependIcon,
317
- appendIcon,
318
- disabled = false,
319
- className,
320
- children,
321
- ...rest
322
- }, ref) => {
323
- const { onClick, onKeyDown, role, tabIndex, ...nativeProps } = rest;
324
- const interactive = typeof onClick === "function";
325
- const variantClass = resolveVariantClass2(variant, color);
326
- const sizeClass = chipSizeClasses[size] ?? chipSizeClasses.medium;
327
- const pillClass = pill ? "rounded-full" : "rounded-lg";
328
- const cursorClass = disabled ? "pointer-events-none opacity-50" : interactive ? "cursor-pointer" : "cursor-default";
329
- const selectedClass = selected ? "ring-2 ring-current/50 ring-offset-2 ring-offset-white" : void 0;
330
- const resolvedRole = disabled ? role : role ?? (interactive ? "button" : void 0);
331
- const resolvedTabIndex = disabled ? -1 : tabIndex ?? (interactive ? 0 : void 0);
332
- const prependIconClassName = resolveIconClassName2(prependIcon);
333
- const appendIconClassName = resolveIconClassName2(appendIcon);
334
- const closeIconClassName = resolveIconClassName2(closeIcon);
335
- const filterIconClassName = filter && selected ? resolveIconClassName2(filterIcon) : void 0;
336
- const handleClick = (event) => {
337
- if (disabled) {
338
- event.preventDefault();
339
- event.stopPropagation();
340
- return;
341
- }
342
- onClick?.(event);
343
- };
344
- const handleKeyDown = (event) => {
345
- onKeyDown?.(event);
346
- if (event.defaultPrevented || disabled || !interactive) {
347
- return;
348
- }
349
- if (event.key === "Enter" || event.key === " ") {
350
- event.preventDefault();
351
- event.currentTarget.click();
352
- }
353
- };
354
- const handleCloseClick = (event) => {
355
- event.stopPropagation();
356
- if (disabled) {
357
- event.preventDefault();
358
- return;
359
- }
360
- onClose?.(event);
361
- };
362
- const handleCloseKeyDown = (event) => {
363
- if (event.key === " " || event.key === "Enter") {
364
- event.stopPropagation();
365
- }
366
- };
367
- const renderableChildren = typeof children === "string" || typeof children === "number" ? /* @__PURE__ */ jsx("span", { className: "truncate", children }) : children;
368
- const filterAdornment = filter ? /* @__PURE__ */ jsx(
369
- "span",
370
- {
371
- className: "flex h-4 w-4 shrink-0 items-center justify-center rounded-full border border-current/30 text-[0.55rem]",
372
- "aria-hidden": true,
373
- children: filterIconClassName ? /* @__PURE__ */ jsx("i", { className: filterIconClassName, "aria-hidden": true }) : null
374
- }
375
- ) : null;
376
- return /* @__PURE__ */ jsxs(
377
- "span",
378
- {
379
- ...nativeProps,
380
- ref,
381
- role: resolvedRole,
382
- tabIndex: resolvedTabIndex,
383
- "aria-disabled": disabled || void 0,
384
- "aria-pressed": filter ? selected : void 0,
385
- "data-selected": selected || void 0,
386
- className: twMerge(chipBaseClasses, sizeClass, pillClass, variantClass, cursorClass, selectedClass, className),
387
- onClick: interactive ? handleClick : void 0,
388
- onKeyDown: interactive ? handleKeyDown : onKeyDown,
389
- children: [
390
- filterAdornment,
391
- prependIconClassName && /* @__PURE__ */ jsx("i", { className: twMerge("text-[1em] leading-none", prependIconClassName), "aria-hidden": true }),
392
- renderableChildren,
393
- appendIconClassName && /* @__PURE__ */ jsx("i", { className: twMerge("text-[1em] leading-none", appendIconClassName), "aria-hidden": true }),
394
- closable && /* @__PURE__ */ jsx(
395
- "button",
396
- {
397
- type: "button",
398
- disabled,
399
- "aria-label": "Remove chip",
400
- className: twMerge(closeButtonClasses),
401
- onClick: handleCloseClick,
402
- onKeyDown: handleCloseKeyDown,
403
- children: closeIconClassName ? /* @__PURE__ */ jsx("i", { className: closeIconClassName, "aria-hidden": true }) : /* @__PURE__ */ jsx("span", { "aria-hidden": true, children: "\xD7" })
404
- }
405
- )
406
- ]
407
- }
408
- );
409
- }
410
- );
411
- Chip.displayName = "Chip";
412
- var Chip_default = Chip;
413
- var listItemBaseClasses = "relative flex w-full items-center gap-4 bg-transparent text-left text-sm transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2 focus-visible:ring-offset-white hover:bg-neutral-200";
414
- var densityClasses = {
415
- default: "px-4 py-3 text-base",
416
- comfortable: "px-4 py-2.5 text-sm",
417
- compact: "px-3 py-2 text-sm"
418
- };
419
- var lineClasses = {
420
- one: "min-h-[3rem]",
421
- two: "min-h-[3.75rem]",
422
- three: "min-h-[4.5rem]"
423
- };
424
- var accentClasses = {
425
- primary: { text: "text-primary", bg: "bg-primary/10", indicator: "bg-primary" },
426
- neutral: { text: "text-gray-900", bg: "bg-gray-100", indicator: "bg-gray-900" },
427
- info: { text: "text-sky-600", bg: "bg-sky-50", indicator: "bg-sky-500" },
428
- success: { text: "text-emerald-600", bg: "bg-emerald-50", indicator: "bg-emerald-500" },
429
- warning: { text: "text-amber-700", bg: "bg-amber-50", indicator: "bg-amber-500" },
430
- danger: { text: "text-red-600", bg: "bg-red-50", indicator: "bg-red-500" },
431
- surface: { text: "text-gray-900", bg: "bg-gray-100", indicator: "bg-gray-900" },
432
- bw: { text: "text-gray-900", bg: "bg-gray-100", indicator: "bg-gray-900" }
433
- };
434
- var ListItem = React3.forwardRef((props, ref) => {
435
- const {
436
- component,
437
- href,
438
- target,
439
- rel,
440
- type,
441
- title,
442
- subtitle,
443
- overline,
444
- prepend,
445
- append,
446
- active = false,
447
- disabled = false,
448
- inset = false,
449
- density: densityOverride,
450
- lines: linesOverride,
451
- nav: navOverride,
452
- divided: dividedOverride,
453
- color: colorOverride,
454
- sharp: sharpOverride,
455
- className,
456
- children,
457
- tabIndex,
458
- role,
459
- ...rest
460
- } = props;
461
- const density = densityOverride ?? "default";
462
- const lines = linesOverride ?? "one";
463
- const nav = navOverride ?? false;
464
- const divided = dividedOverride ?? false;
465
- const color = colorOverride ?? "primary";
466
- const sharp = sharpOverride ?? false;
467
- const accent = accentClasses[color] ?? accentClasses.primary;
468
- const shapeClass = divided || sharp ? "rounded-none" : "rounded-lg";
469
- const Component2 = component ?? (href ? "a" : "div");
470
- const interactive = typeof rest.onClick === "function" || Component2 === "a" || Component2 === "button";
471
- const resolvedRole = role ?? "listitem";
472
- const resolvedTabIndex = disabled ? -1 : tabIndex ?? (interactive && Component2 === "div" ? 0 : void 0);
473
- const resolvedRel = Component2 === "a" ? rel : void 0;
474
- const resolvedTarget = Component2 === "a" ? target : void 0;
475
- const resolvedHref = Component2 === "a" ? href : void 0;
476
- const resolvedType = Component2 === "button" ? type ?? "button" : void 0;
477
- const disabledClass = disabled ? "pointer-events-none opacity-60" : "cursor-pointer";
478
- const navPaddingClass = nav ? "pl-5" : void 0;
479
- const insetClass = inset ? "pl-12" : void 0;
480
- const activeClasses = active ? accent.bg : void 0;
481
- return /* @__PURE__ */ jsxs(
482
- Component2,
483
- {
484
- ...rest,
485
- ref,
486
- role: resolvedRole,
487
- tabIndex: resolvedTabIndex,
488
- "aria-disabled": disabled || void 0,
489
- "aria-current": active ? "true" : void 0,
490
- className: twMerge(
491
- listItemBaseClasses,
492
- densityClasses[density],
493
- lineClasses[lines],
494
- shapeClass,
495
- navPaddingClass,
496
- insetClass,
497
- disabledClass,
498
- activeClasses,
499
- className
500
- ),
501
- href: resolvedHref,
502
- target: resolvedTarget,
503
- rel: resolvedRel,
504
- type: resolvedType,
505
- "data-active": active || void 0,
506
- children: [
507
- nav && /* @__PURE__ */ jsx(
508
- "span",
509
- {
510
- "aria-hidden": true,
511
- className: twMerge(
512
- "absolute left-1 top-2 bottom-2 w-0.5 rounded-full bg-transparent transition-colors duration-150",
513
- active ? accent.indicator : void 0
514
- )
515
- }
516
- ),
517
- prepend && /* @__PURE__ */ jsx("span", { className: "flex h-10 w-10 shrink-0 items-center justify-center text-base text-gray-500", children: prepend }),
518
- /* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-col gap-0.5 text-left", children: [
519
- overline && /* @__PURE__ */ jsx("span", { className: "text-[0.65rem] font-semibold uppercase tracking-wide text-gray-500", children: overline }),
520
- title && /* @__PURE__ */ jsx("span", { className: twMerge("truncate font-medium text-gray-900", active ? accent.text : void 0), children: title }),
521
- subtitle && /* @__PURE__ */ jsx("span", { className: "text-sm text-gray-500", children: subtitle }),
522
- children
523
- ] }),
524
- append && /* @__PURE__ */ jsx("span", { className: "ml-auto flex items-center gap-2 whitespace-nowrap text-sm text-gray-500", children: append })
525
- ]
526
- }
527
- );
528
- });
529
- ListItem.displayName = "ListItem";
530
- var Item_default = ListItem;
531
- var listBaseClasses = "flex w-full min-w-0 flex-col text-gray-900 transition-colors duration-150";
532
- var listVariantClasses = {
533
- solid: "bg-white border border-gray-200 shadow-sm shadow-gray-900/5",
534
- sharp: "bg-white border border-gray-200 shadow-sm shadow-gray-900/5 rounded-none",
535
- outline: "bg-transparent border border-gray-300",
536
- ghost: "bg-gray-50 border border-transparent",
537
- text: "bg-transparent border border-transparent",
538
- filled: "bg-gray-50 border border-gray-200 shadow-inner shadow-gray-900/5",
539
- underlined: "bg-transparent border border-transparent border-b border-gray-200 rounded-none",
540
- rounded: "bg-white border border-gray-200 shadow-lg shadow-gray-900/10"
541
- };
542
- var listRoundedClasses = {
543
- none: "rounded-none",
544
- sm: "rounded-sm",
545
- md: "rounded-md",
546
- lg: "rounded-lg",
547
- xl: "rounded-xl",
548
- pill: "rounded-full"
549
- };
550
- var isListItemElement = (element) => {
551
- if (!React3.isValidElement(element)) {
552
- return false;
553
- }
554
- const elementType = element.type;
555
- return element.type === Item_default || elementType.displayName === Item_default.displayName;
556
- };
557
- var List = React3.forwardRef((props, ref) => {
558
- const {
559
- variant = "solid",
560
- density = "default",
561
- lines = "one",
562
- nav = false,
563
- divided = false,
564
- rounded = "lg",
565
- color = "primary",
566
- className,
567
- role,
568
- children,
569
- ...rest
570
- } = props;
571
- const isSharpVariant = variant === "sharp";
572
- const variantClass = listVariantClasses[variant] ?? listVariantClasses.solid;
573
- const roundedClass = isSharpVariant ? "rounded-none" : listRoundedClasses[rounded] ?? listRoundedClasses.lg;
574
- const dividerClass = divided ? "divide-y divide-gray-100" : void 0;
575
- const gapClass = divided ? "p-0" : "gap-1 p-1";
576
- const navClass = nav ? "py-1" : void 0;
577
- const accentColor = color;
578
- const enhanceChild = (child) => {
579
- if (!React3.isValidElement(child)) {
580
- return child;
581
- }
582
- if (isListItemElement(child)) {
583
- return React3.cloneElement(child, {
584
- density: child.props.density ?? density,
585
- lines: child.props.lines ?? lines,
586
- nav: child.props.nav ?? nav,
587
- divided: child.props.divided ?? divided,
588
- color: child.props.color ?? accentColor,
589
- sharp: child.props.sharp ?? isSharpVariant
590
- });
591
- }
592
- if (child.props && typeof child.props === "object" && "children" in child.props) {
593
- const nestedChildren = React3.Children.map(child.props.children, enhanceChild);
594
- if (nestedChildren !== child.props.children) {
595
- return React3.cloneElement(child, void 0, nestedChildren);
596
- }
597
- }
598
- return child;
599
- };
600
- const resolvedChildren = React3.Children.map(children, enhanceChild);
601
- return /* @__PURE__ */ jsx(
602
- "div",
603
- {
604
- ...rest,
605
- ref,
606
- role: role ?? "list",
607
- className: twMerge(listBaseClasses, variantClass, roundedClass, dividerClass, gapClass, navClass, className),
608
- children: resolvedChildren
609
- }
610
- );
611
- });
612
- List.displayName = "List";
613
- var List_default = List;
614
- var placementClasses = {
615
- "bottom-start": "left-0 top-full origin-top-left",
616
- bottom: "left-1/2 top-full -translate-x-1/2 origin-top",
617
- "bottom-end": "right-0 top-full origin-top-right",
618
- "top-start": "left-0 bottom-full origin-bottom-left",
619
- top: "left-1/2 bottom-full -translate-x-1/2 origin-bottom",
620
- "top-end": "right-0 bottom-full origin-bottom-right"
621
- };
622
- var offsetClasses = {
623
- top: "mb-2",
624
- bottom: "mt-2"
625
- };
626
- var menuBaseClasses = "absolute z-50 min-w-[10rem] rounded-xl border border-gray-200/80 bg-white/95 p-2 text-sm text-gray-700 shadow-lg shadow-gray-900/10 ring-1 ring-black/5 backdrop-blur-md transition-all duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2";
627
- var overlayBaseClasses = "fixed inset-0 z-40 bg-gray-900/30 backdrop-blur-[1px]";
628
- var Menu = React3.forwardRef((props, ref) => {
629
- const {
630
- activator,
631
- children,
632
- placement = "bottom-start",
633
- open,
634
- openOnHover = true,
635
- openOnFocus = true,
636
- matchActivatorWidth = false,
637
- keepMounted = false,
638
- scrim = false,
639
- contentClassName,
640
- contentProps,
641
- overlayClassName,
642
- className,
643
- ...rest
644
- } = props;
645
- const hasContent = children !== void 0 && children !== null;
646
- const manual = typeof open === "boolean";
647
- const visible = Boolean(open);
648
- const shouldRenderContent = hasContent && (keepMounted || visible || !manual && (openOnHover || openOnFocus));
649
- const verticalPlacement = placement.startsWith("top") ? "top" : "bottom";
650
- const visibilityClasses = (() => {
651
- if (manual) {
652
- return visible ? "pointer-events-auto opacity-100 scale-100" : "pointer-events-none opacity-0 scale-95";
653
- }
654
- const base2 = "pointer-events-none opacity-0 scale-95";
655
- const hover = openOnHover ? " group-hover/menu:pointer-events-auto group-hover/menu:opacity-100 group-hover/menu:scale-100" : "";
656
- const focus = openOnFocus ? " group-focus-within/menu:pointer-events-auto group-focus-within/menu:opacity-100 group-focus-within/menu:scale-100" : "";
657
- return `${base2}${hover}${focus}`;
658
- })();
659
- const {
660
- className: contentExtraClassName,
661
- style: contentStyle,
662
- role: contentRole,
663
- tabIndex: contentTabIndex,
664
- ...restContentProps
665
- } = contentProps ?? {};
666
- const overlayNode = scrim && visible ? /* @__PURE__ */ jsx("div", { className: twMerge(overlayBaseClasses, overlayClassName), "aria-hidden": true }) : null;
667
- return /* @__PURE__ */ jsxs(Fragment, { children: [
668
- overlayNode,
669
- /* @__PURE__ */ jsxs(
670
- "div",
671
- {
672
- ...rest,
673
- ref,
674
- className: twMerge("relative inline-flex min-w-0 group/menu", className),
675
- "data-open": visible || void 0,
676
- children: [
677
- /* @__PURE__ */ jsx("div", { className: "inline-flex w-full min-w-0", children: activator }),
678
- shouldRenderContent ? /* @__PURE__ */ jsx(
679
- "div",
680
- {
681
- ...restContentProps,
682
- className: twMerge(
683
- menuBaseClasses,
684
- placementClasses[placement],
685
- offsetClasses[verticalPlacement],
686
- matchActivatorWidth ? "min-w-full" : void 0,
687
- visibilityClasses,
688
- contentClassName,
689
- contentExtraClassName
690
- ),
691
- "data-state": visible ? "open" : "closed",
692
- role: contentRole ?? "menu",
693
- tabIndex: contentTabIndex ?? -1,
694
- style: contentStyle,
695
- children
696
- }
697
- ) : null
698
- ]
699
- }
700
- )
701
- ] });
702
- });
703
- Menu.displayName = "Menu";
704
- var Menu_default = Menu;
705
- var EXPANSION_PANEL_CONTEXT_PROP = "__expansionPanelContext";
706
- var EXPANSION_PANEL_ITEM_MARKER = "__isExpansionPanelItem";
707
- var hasMarker = (type) => {
708
- if (!type || typeof type !== "function" && typeof type !== "object") {
709
- return false;
710
- }
711
- if (type[EXPANSION_PANEL_ITEM_MARKER]) {
712
- return true;
713
- }
714
- const innerType = type.type;
715
- if (innerType && innerType !== type) {
716
- return hasMarker(innerType);
717
- }
718
- return false;
719
- };
720
- var traverseNode = (node, value) => {
721
- if (Array.isArray(node)) {
722
- let changed = false;
723
- const nextArray = node.map((child) => {
724
- const result = traverseNode(child, value);
725
- if (result.changed) {
726
- changed = true;
727
- }
728
- return result.node;
729
- });
730
- return { node: changed ? nextArray : node, changed };
731
- }
732
- if (node === null || node === void 0 || typeof node === "boolean" || typeof node === "string" || typeof node === "number") {
733
- return { node, changed: false };
734
- }
735
- if (!isValidElement(node)) {
736
- return { node, changed: false };
737
- }
738
- const { node: mappedChildren, changed: childrenChanged } = traverseNode(node.props.children, value);
739
- const shouldInject = hasMarker(node.type);
740
- if (!shouldInject && !childrenChanged) {
741
- return { node, changed: false };
742
- }
743
- const injectedProps = shouldInject ? { [EXPANSION_PANEL_CONTEXT_PROP]: value } : void 0;
744
- const cloned = mappedChildren === void 0 ? cloneElement(node, injectedProps) : cloneElement(node, injectedProps, mappedChildren);
745
- return { node: cloned, changed: true };
746
- };
747
- var injectExpansionPanelContext = (children, value) => traverseNode(children, value).node;
748
- var markExpansionPanelItem = (component) => {
749
- if (typeof component !== "function" && (typeof component !== "object" || component === null)) {
750
- return;
751
- }
752
- component[EXPANSION_PANEL_ITEM_MARKER] = true;
753
- };
754
- var densityClasses2 = {
755
- comfortable: "py-5",
756
- default: "py-4",
757
- compact: "py-3"
758
- };
759
- var roundedClasses = {
760
- none: "rounded-none",
761
- sm: "rounded-sm",
762
- md: "rounded-md",
763
- lg: "rounded-lg",
764
- xl: "rounded-xl"
765
- };
766
- var itemVariantClasses = {
767
- elevated: "bg-white border border-gray-200 shadow-sm shadow-gray-900/5",
768
- outlined: "bg-white border border-gray-200",
769
- tonal: "bg-gray-50 border border-gray-100",
770
- plain: "bg-transparent border border-transparent"
771
- };
772
- var accentClasses2 = {
773
- primary: { text: "text-primary", bg: "bg-primary/5", border: "border-primary/30" },
774
- neutral: { text: "text-gray-900", bg: "bg-gray-100", border: "border-gray-200" },
775
- info: { text: "text-sky-600", bg: "bg-sky-50", border: "border-sky-200" },
776
- success: { text: "text-emerald-600", bg: "bg-emerald-50", border: "border-emerald-200" },
777
- warning: { text: "text-amber-600", bg: "bg-amber-50", border: "border-amber-200" },
778
- danger: { text: "text-red-600", bg: "bg-red-50", border: "border-red-200" },
779
- surface: { text: "text-gray-900", bg: "bg-gray-100", border: "border-gray-200" },
780
- bw: { text: "text-gray-900", bg: "bg-gray-100", border: "border-gray-200" }
781
- };
782
- var uniqueIdCounter = 0;
783
- var generateId = (prefix) => `${prefix}-${++uniqueIdCounter}`;
784
- var ExpansionPanelItemInner = class extends Component {
785
- constructor(props) {
786
- super(props);
787
- this.getContext = () => this.props.__expansionPanelContext ?? null;
788
- this.handleToggle = () => {
789
- const { disabled = false } = this.props;
790
- if (disabled) {
791
- return;
792
- }
793
- const context = this.getContext();
794
- const panelValue = this.props.value ?? this.generatedValue;
795
- if (context) {
796
- context.toggle(panelValue, disabled);
797
- return;
798
- }
799
- this.setState((prev) => ({ standaloneExpanded: !prev.standaloneExpanded }));
800
- };
801
- this.state = { standaloneExpanded: false };
802
- this.generatedValue = generateId("expansion-panel-value");
803
- this.headerId = generateId("expansion-panel-header");
804
- this.contentId = generateId("expansion-panel-content");
805
- }
806
- render() {
807
- const {
808
- value,
809
- title,
810
- subtitle,
811
- text,
812
- prepend,
813
- append,
814
- expandIcon,
815
- collapseIcon,
816
- hideToggleIcon = false,
817
- headerClassName,
818
- contentClassName,
819
- className,
820
- disabled = false,
821
- children,
822
- color: colorOverride,
823
- forwardedRef,
824
- ...rest
825
- } = this.props;
826
- const context = this.getContext();
827
- const panelValue = value ?? this.generatedValue;
828
- const density = context?.density ?? "default";
829
- const color = colorOverride ?? context?.color ?? "primary";
830
- const divider = context?.divider ?? true;
831
- const variant = context?.variant ?? "elevated";
832
- const rounded = context?.rounded ?? "lg";
833
- const accent = accentClasses2[color] ?? accentClasses2.primary;
834
- const isExpanded = context ? context.expandedValues.includes(panelValue) : this.state.standaloneExpanded;
835
- const rootSurface = divider ? "bg-transparent border-0 shadow-none" : itemVariantClasses[variant];
836
- const shapeClass = divider ? void 0 : roundedClasses[rounded] ?? roundedClasses.lg;
837
- const densityPadding = densityClasses2[density] ?? densityClasses2.default;
838
- const disabledClass = disabled ? "cursor-not-allowed opacity-60" : "cursor-pointer";
839
- const titleClass = isExpanded ? accent.text : void 0;
840
- const activeBorderClass = twMerge("border-l-2 border-transparent", isExpanded ? accent.border : void 0);
841
- const defaultToggleIcon = /* @__PURE__ */ jsx("i", { className: "mdi mdi-chevron-down text-lg leading-none transition-transform duration-200", "aria-hidden": true });
842
- const hasContent = Boolean(children ?? text);
843
- const contentAnimationClass = isExpanded ? "pb-5 opacity-100" : "pb-0 opacity-0";
844
- const toggleIconNode = hideToggleIcon ? null : isExpanded && collapseIcon ? collapseIcon : expandIcon ?? defaultToggleIcon;
845
- const shouldRotateDefaultIcon = !expandIcon && !collapseIcon && !hideToggleIcon;
846
- const toggleWrapperClass = twMerge(
847
- "ml-3 flex h-6 w-6 items-center justify-center text-gray-500 transition-transform duration-200",
848
- shouldRotateDefaultIcon && isExpanded ? "rotate-180" : void 0
849
- );
850
- return /* @__PURE__ */ jsxs(
851
- "div",
852
- {
853
- ...rest,
854
- ref: forwardedRef,
855
- className: twMerge(
856
- "expansion-panel-item flex flex-col overflow-hidden transition-colors duration-200",
857
- rootSurface,
858
- shapeClass,
859
- className
860
- ),
861
- "data-state": isExpanded ? "open" : "closed",
862
- "data-disabled": disabled || void 0,
863
- children: [
864
- /* @__PURE__ */ jsxs(
865
- "button",
866
- {
867
- type: "button",
868
- id: this.headerId,
869
- onClick: this.handleToggle,
870
- disabled,
871
- "aria-expanded": isExpanded,
872
- "aria-controls": hasContent ? this.contentId : void 0,
873
- className: twMerge(
874
- "flex w-full items-center gap-4 px-4 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40",
875
- densityPadding,
876
- disabledClass,
877
- isExpanded ? accent.bg : void 0,
878
- headerClassName
879
- ),
880
- "data-state": isExpanded ? "open" : "closed",
881
- children: [
882
- prepend && /* @__PURE__ */ jsx("span", { className: "flex h-10 w-10 items-center justify-center text-gray-500", children: prepend }),
883
- /* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-1 flex-col gap-0.5 text-left", children: [
884
- title && /* @__PURE__ */ jsx("span", { className: twMerge("truncate font-medium text-gray-900", titleClass), children: title }),
885
- subtitle && /* @__PURE__ */ jsx("span", { className: "text-sm text-gray-500", children: subtitle })
886
- ] }),
887
- append && /* @__PURE__ */ jsx("span", { className: "ml-auto flex items-center gap-2 text-sm text-gray-500", children: append }),
888
- !hideToggleIcon && /* @__PURE__ */ jsx("span", { className: toggleWrapperClass, children: toggleIconNode })
889
- ]
890
- }
891
- ),
892
- hasContent && /* @__PURE__ */ jsx(
893
- "div",
894
- {
895
- className: "grid overflow-hidden border-t border-gray-100 transition-all duration-200 ease-in-out",
896
- style: { gridTemplateRows: isExpanded ? "1fr" : "0fr" },
897
- "aria-hidden": isExpanded ? void 0 : true,
898
- "data-state": isExpanded ? "open" : "closed",
899
- children: /* @__PURE__ */ jsx(
900
- "div",
901
- {
902
- id: this.contentId,
903
- role: "region",
904
- "aria-labelledby": this.headerId,
905
- "data-state": isExpanded ? "open" : "closed",
906
- className: twMerge(
907
- "min-h-0 px-4 pt-0 text-sm text-gray-600 transition-all duration-200",
908
- activeBorderClass,
909
- contentAnimationClass,
910
- isExpanded ? "pointer-events-auto" : "pointer-events-none",
911
- contentClassName
912
- ),
913
- children: children ?? text
914
- }
915
- )
916
- }
917
- )
918
- ]
919
- }
920
- );
921
- }
922
- };
923
- var ExpansionPanelItem = forwardRef((props, ref) => /* @__PURE__ */ jsx(ExpansionPanelItemInner, { ...props, forwardedRef: ref }));
924
- ExpansionPanelItem.displayName = "ExpansionPanelItem";
925
- markExpansionPanelItem(ExpansionPanelItem);
926
- var ExpansionPanelItem_default = ExpansionPanelItem;
927
- var variantContainerClasses = {
928
- elevated: "bg-white border border-gray-200 shadow-lg shadow-gray-900/10",
929
- outlined: "bg-white border border-gray-200",
930
- tonal: "bg-gray-50 border border-gray-100",
931
- plain: "bg-transparent border border-transparent"
932
- };
933
- var roundedClasses2 = {
934
- none: "rounded-none",
935
- sm: "rounded-sm",
936
- md: "rounded-md",
937
- lg: "rounded-lg",
938
- xl: "rounded-xl"
939
- };
940
- var uniqueValues = (values) => Array.from(new Set(values));
941
- var normalizeValues = (value, allowMultiple) => {
942
- if (value === void 0 || value === null) {
943
- return [];
944
- }
945
- const normalized = Array.isArray(value) ? value : [value];
946
- if (allowMultiple) {
947
- return uniqueValues(normalized);
948
- }
949
- return normalized.length ? [normalized[0]] : [];
950
- };
951
- var clampValues = (values, allowMultiple) => allowMultiple ? uniqueValues(values) : values.length ? [values[0]] : [];
952
- var ExpansionPanelInner = (props, forwardedRef) => {
953
- const {
954
- variant = "elevated",
955
- rounded = "lg",
956
- density = "default",
957
- color = "primary",
958
- divider = true,
959
- multiple = false,
960
- className,
961
- children,
962
- value,
963
- defaultValue,
964
- onChange,
965
- ...rest
966
- } = props;
967
- const allowMultiple = multiple ?? false;
968
- const isControlled = value !== void 0;
969
- const [internalValues, setInternalValues] = useState(
970
- () => normalizeValues(defaultValue, allowMultiple)
971
- );
972
- const prevAllowMultipleRef = useRef(allowMultiple);
973
- const prevIsControlledRef = useRef(isControlled);
974
- useEffect(() => {
975
- const prevAllowMultiple = prevAllowMultipleRef.current;
976
- const wasControlled = prevIsControlledRef.current;
977
- if (!isControlled && (allowMultiple !== prevAllowMultiple || wasControlled !== isControlled)) {
978
- setInternalValues((prev) => clampValues(prev, allowMultiple));
979
- }
980
- prevAllowMultipleRef.current = allowMultiple;
981
- prevIsControlledRef.current = isControlled;
982
- }, [allowMultiple, isControlled]);
983
- const handleValueChange = useCallback(
984
- (next) => {
985
- if (!isControlled) {
986
- setInternalValues(next);
987
- }
988
- if (onChange) {
989
- if (allowMultiple) {
990
- onChange(next);
991
- } else {
992
- onChange(next[0] ?? null);
993
- }
994
- }
995
- },
996
- [allowMultiple, isControlled, onChange]
997
- );
998
- const handleToggle = useCallback(
999
- (panelValue, disabled) => {
1000
- if (disabled) {
1001
- return;
1002
- }
1003
- const expandedValues2 = isControlled ? normalizeValues(value, allowMultiple) : internalValues;
1004
- const isActive = expandedValues2.includes(panelValue);
1005
- const next = allowMultiple ? isActive ? expandedValues2.filter((v) => v !== panelValue) : [...expandedValues2, panelValue] : isActive ? [] : [panelValue];
1006
- handleValueChange(next);
1007
- },
1008
- [allowMultiple, handleValueChange, internalValues, isControlled, value]
1009
- );
1010
- const expandedValues = useMemo(
1011
- () => isControlled ? normalizeValues(value, allowMultiple) : internalValues,
1012
- [allowMultiple, internalValues, isControlled, value]
1013
- );
1014
- const providerValue = useMemo(
1015
- () => ({
1016
- expandedValues,
1017
- toggle: handleToggle,
1018
- density,
1019
- color,
1020
- divider,
1021
- rounded,
1022
- variant
1023
- }),
1024
- [color, density, divider, expandedValues, handleToggle, rounded, variant]
1025
- );
1026
- const variantClass = divider ? variantContainerClasses[variant] : "bg-transparent border border-transparent shadow-none";
1027
- const shapeClass = roundedClasses2[rounded] ?? roundedClasses2.lg;
1028
- const layoutClass = divider ? "divide-y divide-gray-100 overflow-hidden" : "gap-4";
1029
- const enhancedChildren = injectExpansionPanelContext(children, providerValue);
1030
- return /* @__PURE__ */ jsx(
1031
- "div",
1032
- {
1033
- ...rest,
1034
- ref: forwardedRef,
1035
- className: twMerge("expansion-panel flex w-full flex-col text-gray-900", variantClass, shapeClass, layoutClass, className),
1036
- children: enhancedChildren
1037
- }
1038
- );
1039
- };
1040
- var ExpansionPanel = forwardRef(ExpansionPanelInner);
1041
- ExpansionPanel.displayName = "ExpansionPanel";
1042
- var ExpansionPanel_default = ExpansionPanel;
1043
- var containerBaseClasses = "fixed inset-0 z-[70] flex items-center justify-center p-4 sm:p-8 data-[state=closed]:pointer-events-none";
1044
- var overlayBaseClasses2 = "absolute inset-0 bg-gray-900/55 backdrop-blur-[2px] transition-opacity duration-200 data-[state=closed]:opacity-0 data-[state=open]:opacity-100";
1045
- var panelWrapperClasses = "relative z-10 flex w-full max-h-[95vh] justify-center transition-transform transition-opacity duration-200 data-[state=closed]:translate-y-4 data-[state=closed]:opacity-0 data-[state=open]:translate-y-0 data-[state=open]:opacity-100";
1046
- var panelBaseClasses = "pointer-events-auto w-full max-h-[90vh] overflow-auto rounded-2xl bg-white p-6 text-gray-900 shadow-2xl shadow-black/20 ring-1 ring-black/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40";
1047
- var resolveSizeValue = (value) => {
1048
- if (value === void 0) {
1049
- return void 0;
1050
- }
1051
- return typeof value === "number" ? `${value}px` : value;
1052
- };
1053
- var Dialog = React3.forwardRef((props, forwardedRef) => {
1054
- const {
1055
- activator,
1056
- children,
1057
- open = false,
1058
- keepMounted = false,
1059
- scrim = true,
1060
- fullscreen = false,
1061
- maxWidth = "32rem",
1062
- width,
1063
- containerClassName,
1064
- overlayClassName,
1065
- overlayProps,
1066
- className,
1067
- style,
1068
- role: roleProp = "dialog",
1069
- tabIndex = -1,
1070
- id,
1071
- ["aria-modal"]: ariaModalProp,
1072
- ...rest
1073
- } = props;
1074
- const state = open ? "open" : "closed";
1075
- const shouldRenderDialog = keepMounted || open;
1076
- const resolvedStyle = { ...style };
1077
- if (fullscreen) {
1078
- if (resolvedStyle.maxWidth === void 0) {
1079
- resolvedStyle.maxWidth = "none";
1080
- }
1081
- if (resolvedStyle.width === void 0) {
1082
- resolvedStyle.width = "100%";
1083
- }
1084
- if (resolvedStyle.height === void 0) {
1085
- resolvedStyle.height = "100%";
1086
- }
1087
- if (resolvedStyle.maxHeight === void 0) {
1088
- resolvedStyle.maxHeight = "100%";
1089
- }
1090
- } else {
1091
- if (resolvedStyle.maxWidth === void 0) {
1092
- resolvedStyle.maxWidth = resolveSizeValue(maxWidth);
1093
- }
1094
- if (width !== void 0 && resolvedStyle.width === void 0) {
1095
- resolvedStyle.width = resolveSizeValue(width);
1096
- }
1097
- }
1098
- const ariaModal = ariaModalProp ?? (roleProp === "dialog" || roleProp === "alertdialog" ? true : void 0);
1099
- const { className: overlayExtraClassName, ...restOverlayProps } = overlayProps ?? {};
1100
- const overlayNode = shouldRenderDialog && scrim ? /* @__PURE__ */ jsx(
1101
- "div",
1102
- {
1103
- ...restOverlayProps,
1104
- className: twMerge(overlayBaseClasses2, overlayClassName, overlayExtraClassName),
1105
- "data-state": state,
1106
- "aria-hidden": true
1107
- }
1108
- ) : null;
1109
- return /* @__PURE__ */ jsxs(Fragment, { children: [
1110
- activator ? /* @__PURE__ */ jsx("div", { className: "inline-flex", children: activator }) : null,
1111
- shouldRenderDialog ? /* @__PURE__ */ jsxs("div", { className: twMerge(containerBaseClasses, containerClassName), "data-state": state, "aria-hidden": !open, children: [
1112
- overlayNode,
1113
- /* @__PURE__ */ jsx("div", { className: twMerge(panelWrapperClasses, fullscreen ? "h-full items-stretch" : "mx-auto"), "data-state": state, children: /* @__PURE__ */ jsx(
1114
- "div",
1115
- {
1116
- ...rest,
1117
- ref: forwardedRef,
1118
- id,
1119
- role: roleProp,
1120
- tabIndex,
1121
- "aria-modal": ariaModal,
1122
- className: twMerge(panelBaseClasses, fullscreen ? "h-full w-full max-w-none rounded-none" : void 0, className),
1123
- style: resolvedStyle,
1124
- "data-state": state,
1125
- children
1126
- }
1127
- ) })
1128
- ] }) : null
1129
- ] });
1130
- });
1131
- Dialog.displayName = "Dialog";
1132
- var Dialog_default = Dialog;
1133
- var tooltipBaseClasses = "absolute z-[60] max-w-xs rounded-lg border border-white/10 bg-gray-900 px-3 py-2 text-xs font-medium text-white shadow-lg shadow-black/30 ring-1 ring-black/40 transition-all duration-150";
1134
- var wrapperBaseClasses = "relative inline-flex max-w-full align-middle";
1135
- var arrowBaseClasses = "pointer-events-none absolute h-2 w-2 rotate-45 border border-white/10 bg-gray-900 shadow-lg shadow-black/20";
1136
- var resolveSizeValue2 = (value) => {
1137
- if (value === void 0) {
1138
- return void 0;
1139
- }
1140
- return typeof value === "number" ? `${value}px` : value;
1141
- };
1142
- var placementClasses2 = {
1143
- top: "bottom-full left-1/2 -translate-x-1/2 -translate-y-2 origin-bottom",
1144
- "top-start": "bottom-full left-0 -translate-y-2 origin-bottom-left",
1145
- "top-end": "bottom-full right-0 -translate-y-2 origin-bottom-right",
1146
- bottom: "top-full left-1/2 -translate-x-1/2 translate-y-2 origin-top",
1147
- "bottom-start": "top-full left-0 translate-y-2 origin-top-left",
1148
- "bottom-end": "top-full right-0 translate-y-2 origin-top-right",
1149
- left: "right-full top-1/2 -translate-y-1/2 -translate-x-2 origin-right",
1150
- "left-start": "right-full top-0 -translate-x-2 origin-top-right",
1151
- "left-end": "right-full bottom-0 -translate-x-2 origin-bottom-right",
1152
- right: "left-full top-1/2 -translate-y-1/2 translate-x-2 origin-left",
1153
- "right-start": "left-full top-0 translate-x-2 origin-top-left",
1154
- "right-end": "left-full bottom-0 translate-x-2 origin-bottom-left"
1155
- };
1156
- var arrowPlacementClasses = {
1157
- top: "left-1/2 top-full -translate-x-1/2 -translate-y-1/2",
1158
- "top-start": "left-4 top-full -translate-y-1/2",
1159
- "top-end": "right-4 top-full -translate-y-1/2",
1160
- bottom: "left-1/2 bottom-full -translate-x-1/2 translate-y-1/2",
1161
- "bottom-start": "left-4 bottom-full translate-y-1/2",
1162
- "bottom-end": "right-4 bottom-full translate-y-1/2",
1163
- left: "right-full top-1/2 -translate-y-1/2 translate-x-1/2",
1164
- "left-start": "right-full top-4 translate-x-1/2",
1165
- "left-end": "right-full bottom-4 translate-x-1/2",
1166
- right: "left-full top-1/2 -translate-y-1/2 -translate-x-1/2",
1167
- "right-start": "left-full top-4 -translate-x-1/2",
1168
- "right-end": "left-full bottom-4 -translate-x-1/2"
1169
- };
1170
- var ToolTip = React3.forwardRef((props, forwardedRef) => {
1171
- const {
1172
- activator,
1173
- children,
1174
- placement = "top",
1175
- arrow = true,
1176
- disabled = false,
1177
- persistent = false,
1178
- showOnHover = true,
1179
- showOnFocus = true,
1180
- interactive = false,
1181
- keepMounted = false,
1182
- maxWidth = "18rem",
1183
- wrapperClassName,
1184
- className,
1185
- style,
1186
- id,
1187
- ...rest
1188
- } = props;
1189
- const hasRenderableContent = children !== void 0 && children !== null;
1190
- const shouldEnableTriggers = !disabled && (persistent || showOnHover || showOnFocus);
1191
- const shouldRenderTooltip = hasRenderableContent && (shouldEnableTriggers || keepMounted);
1192
- const resolvedStyle = { ...style };
1193
- if (resolvedStyle.maxWidth === void 0) {
1194
- resolvedStyle.maxWidth = resolveSizeValue2(maxWidth);
1195
- }
1196
- const baseVisibility = persistent ? "opacity-100 scale-100" : "opacity-0 scale-95";
1197
- const hoverClasses = !persistent && showOnHover ? " group-hover/tooltip:opacity-100 group-hover/tooltip:scale-100" : "";
1198
- const focusClasses = !persistent && showOnFocus ? " group-focus-within/tooltip:opacity-100 group-focus-within/tooltip:scale-100" : "";
1199
- const visibilityClasses = `${baseVisibility}${hoverClasses}${focusClasses}`;
1200
- const pointerClasses = (() => {
1201
- if (persistent) {
1202
- return "pointer-events-auto";
1203
- }
1204
- if (!interactive) {
1205
- return "pointer-events-none";
1206
- }
1207
- const classes = ["pointer-events-none"];
1208
- if (showOnHover) {
1209
- classes.push("group-hover/tooltip:pointer-events-auto");
1210
- }
1211
- if (showOnFocus) {
1212
- classes.push("group-focus-within/tooltip:pointer-events-auto");
1213
- }
1214
- return classes.join(" ");
1215
- })();
1216
- return /* @__PURE__ */ jsxs("span", { className: twMerge(wrapperBaseClasses, "group/tooltip", wrapperClassName), "data-disabled": disabled || void 0, children: [
1217
- /* @__PURE__ */ jsx("span", { className: "inline-flex max-w-full", children: activator }),
1218
- shouldRenderTooltip ? /* @__PURE__ */ jsxs(
1219
- "div",
1220
- {
1221
- ...rest,
1222
- ref: forwardedRef,
1223
- role: "tooltip",
1224
- id,
1225
- "aria-hidden": persistent || disabled ? void 0 : true,
1226
- className: twMerge(tooltipBaseClasses, placementClasses2[placement], visibilityClasses, pointerClasses, className),
1227
- style: resolvedStyle,
1228
- children: [
1229
- children,
1230
- arrow && /* @__PURE__ */ jsx("span", { className: twMerge(arrowBaseClasses, arrowPlacementClasses[placement]), "aria-hidden": true, "data-arrow": true })
1231
- ]
1232
- }
1233
- ) : null
1234
- ] });
1235
- });
1236
- ToolTip.displayName = "ToolTip";
1237
- var ToolTip_default = ToolTip;
1238
-
1239
- // src/Form/Input/states.input.ts
1240
- var resolveIconClassName3 = (icon) => {
1241
- if (!icon) {
1242
- return void 0;
1243
- }
1244
- if (typeof icon === "string") {
1245
- const trimmed = icon.trim();
1246
- if (!trimmed) {
1247
- return void 0;
1248
- }
1249
- if (trimmed.includes(" ")) {
1250
- return trimmed;
1251
- }
1252
- const normalizedName2 = trimmed.startsWith("mdi-") ? trimmed : `mdi-${trimmed}`;
1253
- return ["mdi", normalizedName2].join(" ");
1254
- }
1255
- const [library, iconNameRaw] = icon;
1256
- const baseClasses = iconBaseClasses[library] ?? [library];
1257
- const iconName = iconNameRaw.trim();
1258
- if (!iconName) {
1259
- return baseClasses.join(" ");
1260
- }
1261
- const normalizedName = iconName.startsWith("mdi-") ? iconName : `mdi-${iconName}`;
1262
- const classes = [...baseClasses, normalizedName];
1263
- return Array.from(new Set(classes)).join(" ");
1264
- };
1265
-
1266
- // src/utils/helpers/randomStr.ts
1267
- var characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
1268
- function generateString(length = 5) {
1269
- let result = "";
1270
- const charactersLength = characters.length;
1271
- for (let i = 0; i < length; i++) {
1272
- result += characters.charAt(Math.floor(Math.random() * charactersLength));
1273
- }
1274
- return result;
1275
- }
1276
- var Input = ({
1277
- variant = "outline",
1278
- success,
1279
- error,
1280
- warn,
1281
- icon,
1282
- className,
1283
- wrapperClassName,
1284
- ...props
1285
- }) => {
1286
- const classBase = "input-base px-3 py-2 focus-visible:outline-none focus-visible:ring-primary transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed w-full";
1287
- const variantClasses = {
1288
- solid: "rounded border border-gray-400 bg-white shadow-sm focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/30",
1289
- sharp: "rounded-none border border-gray-400 bg-white shadow-sm focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/30",
1290
- outline: "rounded border border-gray-300 bg-transparent focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/30",
1291
- text: "rounded-none border-0 border-b border-transparent px-0 bg-transparent focus-visible:border-primary focus-visible:ring-0 focus-visible:ring-transparent",
1292
- ghost: "rounded border border-transparent bg-gray-50 text-gray-900 focus-visible:bg-white focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/15",
1293
- filled: "rounded border border-gray-200 bg-gray-100 focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/25",
1294
- underlined: "rounded-none border-0 border-b border-gray-300 px-0 bg-transparent focus-visible:border-primary focus-visible:ring-0 focus-visible:ring-transparent",
1295
- rounded: "rounded-full px-4 border border-gray-300 bg-white focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/20 shadow-sm"
1296
- };
1297
- const status = error ? { tone: "error", message: error } : warn ? { tone: "warn", message: warn } : success ? { tone: "success", message: success } : void 0;
1298
- const statusClasses = {
1299
- error: "border-red-500 focus:border-red-500 focus:ring-red-400",
1300
- warn: "border-amber-500 focus:border-amber-500 focus:ring-amber-400",
1301
- success: "border-emerald-500 focus:border-emerald-500 focus:ring-emerald-400"
1302
- };
1303
- const statusMessageClasses = {
1304
- error: "text-red-600",
1305
- warn: "text-amber-600",
1306
- success: "text-emerald-600"
1307
- };
1308
- const variantClass = variantClasses[variant] ?? variantClasses.outline;
1309
- const toneClass = status ? statusClasses[status.tone] : void 0;
1310
- const prependIconClass = resolveIconClassName3(icon);
1311
- const prependPadding = prependIconClass ? "pl-10" : void 0;
1312
- const inputName = props.name || generateString();
1313
- return /* @__PURE__ */ jsxs("div", { className: twMerge("flex flex-col gap-1", wrapperClassName), children: [
1314
- /* @__PURE__ */ jsxs("div", { className: "relative flex items-center", children: [
1315
- prependIconClass && /* @__PURE__ */ jsx("i", { className: twMerge("pointer-events-none absolute left-3 ", prependIconClass), "aria-hidden": true }),
1316
- /* @__PURE__ */ jsx(
1317
- "input",
1318
- {
1319
- ...props,
1320
- className: twMerge(classBase, variantClass, toneClass, prependPadding, className),
1321
- name: inputName
1322
- }
1323
- )
1324
- ] }),
1325
- status?.message && /* @__PURE__ */ jsx("span", { className: twMerge("text-sm", statusMessageClasses[status.tone]), children: status.message })
1326
- ] });
1327
- };
1328
- var Input_default = Input;
1329
-
1330
- export { Button_default as Button, Chip_default as Chip, Dialog_default as Dialog, ExpansionPanel_default as ExpansionPanel, ExpansionPanelItem_default as ExpansionPanelItem, Input_default as Input, List_default as List, Item_default as ListItem, Menu_default as Menu, ToolTip_default as ToolTip };
1
+ export { Dialog_default as Dialog } from './chunk-U6NAIIDI.js';
2
+ export { ToolTip_default as ToolTip } from './chunk-32KFNI6K.js';
3
+ export { Card_default as Card } from './chunk-V4BVJOSC.js';
4
+ export { Input_default as Input } from './chunk-PYG5SDNO.js';
5
+ export { Slider_default as Slider } from './chunk-AOHXZ7OM.js';
6
+ export { Switch_default as Switch } from './chunk-N65GNKRG.js';
7
+ export { Button_default as Button } from './chunk-SZU6OYLS.js';
8
+ export { Chip_default as Chip } from './chunk-PWK6MLZT.js';
9
+ import './chunk-IEILIKS2.js';
10
+ export { List_default as List } from './chunk-5GY2JCBO.js';
11
+ export { Item_default as ListItem } from './chunk-XFPBICJG.js';
12
+ export { Menu_default as Menu } from './chunk-QGQ66FJD.js';
13
+ export { ExpansionPanel_default as ExpansionPanel } from './chunk-E32P5AHO.js';
14
+ export { ExpansionPanelItem_default as ExpansionPanelItem } from './chunk-GA6HSRN6.js';
1331
15
  //# sourceMappingURL=index.js.map
1332
16
  //# sourceMappingURL=index.js.map