@andrilla/mado-ui 1.0.7 → 1.0.9

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.
@@ -1,4 +1,4 @@
1
- 'use client'
1
+ "use client";
2
2
  import { extendTailwindMerge, twJoin } from "tailwind-merge";
3
3
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
4
  import { Button as Button$1, Checkbox as Checkbox$1, Description, Dialog, DialogBackdrop, DialogPanel, DialogTitle, Disclosure, DisclosureButton, DisclosurePanel, Field, Fieldset as Fieldset$1, Input as Input$1, Label, Legend, Listbox, ListboxButton, ListboxOption, ListboxOptions, ListboxSelectedOption, Menu, MenuButton, MenuHeading, MenuItem, MenuItems, MenuSection, MenuSeparator, Textarea as Textarea$1 } from "@headlessui/react";
@@ -6,7 +6,6 @@ import * as React from "react";
6
6
  import { Children, cloneElement, createContext, isValidElement, useContext, useEffect, useEffectEvent, useId, useLayoutEffect, useRef, useState, useSyncExternalStore } from "react";
7
7
  import * as ReactDOM from "react-dom";
8
8
  import { createPortal } from "react-dom";
9
-
10
9
  //#region src/utils/custom-tailwind-merge.ts
11
10
  const isInteger = (classPart) => /^\d+$/.test(classPart);
12
11
  const isFloat = (classPart) => /^\d+\.\d+$/.test(classPart);
@@ -101,458 +100,765 @@ const twMerge = extendTailwindMerge({ extend: { classGroups: {
101
100
  "grid-rows": [{ "grid-rows": ["0fr", "1fr"] }],
102
101
  transition: [{ transition: ["transition-cols", "transition-rows"] }]
103
102
  } } });
104
-
105
103
  //#endregion
106
- //#region src/components/link.tsx
107
- function Anchor({ as, className, disabled, href, onClick, target, rel, ...props }) {
108
- const isExternal = `${href}`.startsWith("http"), hasHash = `${href}`.includes("#");
109
- const handleClick = (e) => {
110
- if (disabled) return e.preventDefault();
111
- onClick?.(e);
112
- setTimeout(() => history.replaceState({}, document.title, location.pathname), 100);
113
- };
114
- return /* @__PURE__ */ jsx(as || "a", {
115
- ...props,
116
- "aria-disabled": disabled,
117
- className: twMerge("ease-exponential inline-block transition-transform duration-300 active:scale-95 pointer-fine:active:scale-95", className, disabled && "pointer-events-none"),
118
- href,
119
- target: target || (isExternal ? "_blank" : "_self"),
120
- onClick: hasHash ? handleClick : onClick,
121
- rel: rel !== void 0 ? rel === "nofollow" ? `${rel} noreferrer noopener` : `${rel} prefetch` : isExternal ? "nofollow noreferrer noopener" : "prefetch"
122
- });
123
- }
124
- const baseClasses = "isolate after:absolute after:left-1/2 after:-z-10 after:-translate-x-1/2 after:duration-500 active:after:opacity-100 pointer-fine:active:after:opacity-100";
125
- const lineStaticClasses = twJoin(baseClasses, "whitespace-nowrap after:-bottom-0.5 after:w-[calc(100%+0.15rem)] after:rounded-full after:border after:border-current");
126
- const lineClasses = twJoin(lineStaticClasses, "whitespace-nowrap after:transition-transform after:ease-exponential");
127
- const scaleXClasses = "after:scale-x-0 active:after:scale-x-100 pointer-fine:hover:after:scale-x-100 pointer-fine:active:after:scale-x-100";
128
- const scaleYClasses = "after:scale-y-0 active:after:scale-y-100 pointer-fine:hover:after:scale-y-100 pointer-fine:active:after:scale-y-100";
129
- const lineNormalClasses = twJoin([
130
- lineClasses,
131
- scaleYClasses,
132
- "after:origin-bottom after:translate-y-0.5 active:after:translate-y-0 pointer-fine:hover:after:translate-y-0"
133
- ]);
134
- const lineLtrClasses = twJoin([
135
- lineClasses,
136
- scaleXClasses,
137
- "after:origin-left"
138
- ]);
139
- const lineRtlClasses = twJoin([
140
- lineClasses,
141
- scaleXClasses,
142
- "after:origin-right"
143
- ]);
144
- const lineCenterClasses = twJoin([lineClasses, scaleXClasses]);
145
- const lineLiftClasses = twJoin([
146
- lineClasses,
147
- scaleYClasses,
148
- "after:origin-bottom after:translate-y-1 after:scale-x-75 active:after:translate-y-0 active:after:scale-x-100 pointer-fine:hover:after:translate-y-0 pointer-fine:hover:after:scale-x-100 pointer-fine:active:after:translate-y-0 pointer-fine:active:after:scale-x-100"
149
- ]);
150
- const fillClasses = twJoin(baseClasses, "whitespace-nowrap [--text-color:var(--base-theme-color--foreground)] transition-[transform,color] after:top-1/2 after:h-[calc(100%+0.05rem)] after:w-[calc(100%+0.25rem)] after:-translate-y-1/2 after:rounded after:ease-exponential active:text-(--text-color) pointer-fine:hover:text-(--text-color) pointer-fine:active:text-(--text-color)");
151
- const getFillColorTransitionClasses = (theme = "blue", customTheme) => {
152
- let fillColorTransitionClasses = twJoin(fillClasses, "transition-[scale,color] after:bg-(--theme-color)");
104
+ //#region src/utils/get-theme-color.ts
105
+ function getThemeColor(theme) {
153
106
  switch (theme) {
107
+ case "amber-50": return "[--theme-color:var(--color-amber-50)]";
108
+ case "amber-100": return "[--theme-color:var(--color-amber-100)]";
109
+ case "amber-200": return "[--theme-color:var(--color-amber-200)]";
110
+ case "amber-300": return "[--theme-color:var(--color-amber-300)]";
111
+ case "amber-400": return "[--theme-color:var(--color-amber-400)]";
154
112
  case "amber":
155
- fillColorTransitionClasses = twJoin(fillColorTransitionClasses, "[--theme-color:var(--color-amber-500)]");
156
- break;
113
+ case "amber-500": return "[--theme-color:var(--color-amber-500)]";
114
+ case "amber-600": return "[--theme-color:var(--color-amber-600)]";
115
+ case "amber-700": return "[--theme-color:var(--color-amber-700)]";
116
+ case "amber-800": return "[--theme-color:var(--color-amber-800)]";
117
+ case "amber-900": return "[--theme-color:var(--color-amber-900)]";
118
+ case "amber-950": return "[--theme-color:var(--color-amber-950)]";
119
+ case "blue-50": return "[--theme-color:var(--color-blue-50)]";
120
+ case "blue-100": return "[--theme-color:var(--color-blue-100)]";
121
+ case "blue-200": return "[--theme-color:var(--color-blue-200)]";
122
+ case "blue-300": return "[--theme-color:var(--color-blue-300)]";
123
+ case "blue-400": return "[--theme-color:var(--color-blue-400)]";
157
124
  case "blue":
158
- fillColorTransitionClasses = twJoin(fillColorTransitionClasses, "[--theme-color:var(--color-blue-500)]");
159
- break;
125
+ case "blue-500": return "[--theme-color:var(--color-blue-500)]";
126
+ case "blue-600": return "[--theme-color:var(--color-blue-600)]";
127
+ case "blue-700": return "[--theme-color:var(--color-blue-700)]";
128
+ case "blue-800": return "[--theme-color:var(--color-blue-800)]";
129
+ case "blue-900": return "[--theme-color:var(--color-blue-900)]";
130
+ case "blue-950": return "[--theme-color:var(--color-blue-950)]";
131
+ case "cyan-50": return "[--theme-color:var(--color-cyan-50)]";
132
+ case "cyan-100": return "[--theme-color:var(--color-cyan-100)]";
133
+ case "cyan-200": return "[--theme-color:var(--color-cyan-200)]";
134
+ case "cyan-300": return "[--theme-color:var(--color-cyan-300)]";
135
+ case "cyan-400": return "[--theme-color:var(--color-cyan-400)]";
160
136
  case "cyan":
161
- fillColorTransitionClasses = twJoin(fillColorTransitionClasses, "[--theme-color:var(--color-cyan-500)]");
162
- break;
137
+ case "cyan-500": return "[--theme-color:var(--color-cyan-500)]";
138
+ case "cyan-600": return "[--theme-color:var(--color-cyan-600)]";
139
+ case "cyan-700": return "[--theme-color:var(--color-cyan-700)]";
140
+ case "cyan-800": return "[--theme-color:var(--color-cyan-800)]";
141
+ case "cyan-900": return "[--theme-color:var(--color-cyan-900)]";
142
+ case "cyan-950": return "[--theme-color:var(--color-cyan-950)]";
143
+ case "emerald-50": return "[--theme-color:var(--color-emerald-50)]";
144
+ case "emerald-100": return "[--theme-color:var(--color-emerald-100)]";
145
+ case "emerald-200": return "[--theme-color:var(--color-emerald-200)]";
146
+ case "emerald-300": return "[--theme-color:var(--color-emerald-300)]";
147
+ case "emerald-400": return "[--theme-color:var(--color-emerald-400)]";
163
148
  case "emerald":
164
- fillColorTransitionClasses = twJoin(fillColorTransitionClasses, "[--theme-color:var(--color-emerald-500)]");
165
- break;
149
+ case "emerald-500": return "[--theme-color:var(--color-emerald-500)]";
150
+ case "emerald-600": return "[--theme-color:var(--color-emerald-600)]";
151
+ case "emerald-700": return "[--theme-color:var(--color-emerald-700)]";
152
+ case "emerald-800": return "[--theme-color:var(--color-emerald-800)]";
153
+ case "emerald-900": return "[--theme-color:var(--color-emerald-900)]";
154
+ case "emerald-950": return "[--theme-color:var(--color-emerald-950)]";
155
+ case "fuchsia-50": return "[--theme-color:var(--color-fuchsia-50)]";
156
+ case "fuchsia-100": return "[--theme-color:var(--color-fuchsia-100)]";
157
+ case "fuchsia-200": return "[--theme-color:var(--color-fuchsia-200)]";
158
+ case "fuchsia-300": return "[--theme-color:var(--color-fuchsia-300)]";
159
+ case "fuchsia-400": return "[--theme-color:var(--color-fuchsia-400)]";
166
160
  case "fuchsia":
167
- fillColorTransitionClasses = twJoin(fillColorTransitionClasses, "[--theme-color:var(--color-fuchsia-500)]");
168
- break;
161
+ case "fuchsia-500": return "[--theme-color:var(--color-fuchsia-500)]";
162
+ case "fuchsia-600": return "[--theme-color:var(--color-fuchsia-600)]";
163
+ case "fuchsia-700": return "[--theme-color:var(--color-fuchsia-700)]";
164
+ case "fuchsia-800": return "[--theme-color:var(--color-fuchsia-800)]";
165
+ case "fuchsia-900": return "[--theme-color:var(--color-fuchsia-900)]";
166
+ case "fuchsia-950": return "[--theme-color:var(--color-fuchsia-950)]";
167
+ case "gray-50": return "[--theme-color:var(--color-gray-50)]";
168
+ case "gray-100": return "[--theme-color:var(--color-gray-100)]";
169
+ case "gray-200": return "[--theme-color:var(--color-gray-200)]";
170
+ case "gray-300": return "[--theme-color:var(--color-gray-300)]";
171
+ case "gray-400": return "[--theme-color:var(--color-gray-400)]";
169
172
  case "gray":
170
- fillColorTransitionClasses = twJoin(fillColorTransitionClasses, "[--theme-color:var(--color-gray-500)]");
171
- break;
173
+ case "gray-500": return "[--theme-color:var(--color-gray-500)]";
174
+ case "gray-600": return "[--theme-color:var(--color-gray-600)]";
175
+ case "gray-700": return "[--theme-color:var(--color-gray-700)]";
176
+ case "gray-800": return "[--theme-color:var(--color-gray-800)]";
177
+ case "gray-900": return "[--theme-color:var(--color-gray-900)]";
178
+ case "gray-950": return "[--theme-color:var(--color-gray-950)]";
179
+ case "green-50": return "[--theme-color:var(--color-green-50)]";
180
+ case "green-100": return "[--theme-color:var(--color-green-100)]";
181
+ case "green-200": return "[--theme-color:var(--color-green-200)]";
182
+ case "green-300": return "[--theme-color:var(--color-green-300)]";
183
+ case "green-400": return "[--theme-color:var(--color-green-400)]";
172
184
  case "green":
173
- fillColorTransitionClasses = twJoin(fillColorTransitionClasses, "[--theme-color:var(--color-green-500)]");
174
- break;
185
+ case "green-500": return "[--theme-color:var(--color-green-500)]";
186
+ case "green-600": return "[--theme-color:var(--color-green-600)]";
187
+ case "green-700": return "[--theme-color:var(--color-green-700)]";
188
+ case "green-800": return "[--theme-color:var(--color-green-800)]";
189
+ case "green-900": return "[--theme-color:var(--color-green-900)]";
190
+ case "green-950": return "[--theme-color:var(--color-green-950)]";
191
+ case "indigo-50": return "[--theme-color:var(--color-indigo-50)]";
192
+ case "indigo-100": return "[--theme-color:var(--color-indigo-100)]";
193
+ case "indigo-200": return "[--theme-color:var(--color-indigo-200)]";
194
+ case "indigo-300": return "[--theme-color:var(--color-indigo-300)]";
195
+ case "indigo-400": return "[--theme-color:var(--color-indigo-400)]";
175
196
  case "indigo":
176
- fillColorTransitionClasses = twJoin(fillColorTransitionClasses, "[--theme-color:var(--color-indigo-500)]");
177
- break;
197
+ case "indigo-500": return "[--theme-color:var(--color-indigo-500)]";
198
+ case "indigo-600": return "[--theme-color:var(--color-indigo-600)]";
199
+ case "indigo-700": return "[--theme-color:var(--color-indigo-700)]";
200
+ case "indigo-800": return "[--theme-color:var(--color-indigo-800)]";
201
+ case "indigo-900": return "[--theme-color:var(--color-indigo-900)]";
202
+ case "indigo-950": return "[--theme-color:var(--color-indigo-950)]";
203
+ case "lime-50": return "[--theme-color:var(--color-lime-50)]";
204
+ case "lime-100": return "[--theme-color:var(--color-lime-100)]";
205
+ case "lime-200": return "[--theme-color:var(--color-lime-200)]";
206
+ case "lime-300": return "[--theme-color:var(--color-lime-300)]";
207
+ case "lime-400": return "[--theme-color:var(--color-lime-400)]";
178
208
  case "lime":
179
- fillColorTransitionClasses = twJoin(fillColorTransitionClasses, "[--theme-color:var(--color-lime-500)]");
180
- break;
209
+ case "lime-500": return "[--theme-color:var(--color-lime-500)]";
210
+ case "lime-600": return "[--theme-color:var(--color-lime-600)]";
211
+ case "lime-700": return "[--theme-color:var(--color-lime-700)]";
212
+ case "lime-800": return "[--theme-color:var(--color-lime-800)]";
213
+ case "lime-900": return "[--theme-color:var(--color-lime-900)]";
214
+ case "lime-950": return "[--theme-color:var(--color-lime-950)]";
215
+ case "mauve-50": return "[--theme-color:var(--color-mauve-50)]";
216
+ case "mauve-100": return "[--theme-color:var(--color-mauve-100)]";
217
+ case "mauve-200": return "[--theme-color:var(--color-mauve-200)]";
218
+ case "mauve-300": return "[--theme-color:var(--color-mauve-300)]";
219
+ case "mauve-400": return "[--theme-color:var(--color-mauve-400)]";
181
220
  case "mauve":
182
- fillColorTransitionClasses = twJoin(fillColorTransitionClasses, "[--theme-color:var(--color-mauve-500)]");
183
- break;
221
+ case "mauve-500": return "[--theme-color:var(--color-mauve-500)]";
222
+ case "mauve-600": return "[--theme-color:var(--color-mauve-600)]";
223
+ case "mauve-700": return "[--theme-color:var(--color-mauve-700)]";
224
+ case "mauve-800": return "[--theme-color:var(--color-mauve-800)]";
225
+ case "mauve-900": return "[--theme-color:var(--color-mauve-900)]";
226
+ case "mauve-950": return "[--theme-color:var(--color-mauve-950)]";
227
+ case "mist-50": return "[--theme-color:var(--color-mist-50)]";
228
+ case "mist-100": return "[--theme-color:var(--color-mist-100)]";
229
+ case "mist-200": return "[--theme-color:var(--color-mist-200)]";
230
+ case "mist-300": return "[--theme-color:var(--color-mist-300)]";
231
+ case "mist-400": return "[--theme-color:var(--color-mist-400)]";
184
232
  case "mist":
185
- fillColorTransitionClasses = twJoin(fillColorTransitionClasses, "[--theme-color:var(--color-mist-500)]");
186
- break;
233
+ case "mist-500": return "[--theme-color:var(--color-mist-500)]";
234
+ case "mist-600": return "[--theme-color:var(--color-mist-600)]";
235
+ case "mist-700": return "[--theme-color:var(--color-mist-700)]";
236
+ case "mist-800": return "[--theme-color:var(--color-mist-800)]";
237
+ case "mist-900": return "[--theme-color:var(--color-mist-900)]";
238
+ case "mist-950": return "[--theme-color:var(--color-mist-950)]";
239
+ case "neutral-50": return "[--theme-color:var(--color-neutral-50)]";
240
+ case "neutral-100": return "[--theme-color:var(--color-neutral-100)]";
241
+ case "neutral-200": return "[--theme-color:var(--color-neutral-200)]";
242
+ case "neutral-300": return "[--theme-color:var(--color-neutral-300)]";
243
+ case "neutral-400": return "[--theme-color:var(--color-neutral-400)]";
187
244
  case "neutral":
188
- fillColorTransitionClasses = twJoin(fillColorTransitionClasses, "[--theme-color:var(--color-neutral-500)]");
189
- break;
245
+ case "neutral-500": return "[--theme-color:var(--color-neutral-500)]";
246
+ case "neutral-600": return "[--theme-color:var(--color-neutral-600)]";
247
+ case "neutral-700": return "[--theme-color:var(--color-neutral-700)]";
248
+ case "neutral-800": return "[--theme-color:var(--color-neutral-800)]";
249
+ case "neutral-900": return "[--theme-color:var(--color-neutral-900)]";
250
+ case "neutral-950": return "[--theme-color:var(--color-neutral-950)]";
251
+ case "olive-50": return "[--theme-color:var(--color-olive-50)]";
252
+ case "olive-100": return "[--theme-color:var(--color-olive-100)]";
253
+ case "olive-200": return "[--theme-color:var(--color-olive-200)]";
254
+ case "olive-300": return "[--theme-color:var(--color-olive-300)]";
255
+ case "olive-400": return "[--theme-color:var(--color-olive-400)]";
190
256
  case "olive":
191
- fillColorTransitionClasses = twJoin(fillColorTransitionClasses, "[--theme-color:var(--color-olive-500)]");
192
- break;
257
+ case "olive-500": return "[--theme-color:var(--color-olive-500)]";
258
+ case "olive-600": return "[--theme-color:var(--color-olive-600)]";
259
+ case "olive-700": return "[--theme-color:var(--color-olive-700)]";
260
+ case "olive-800": return "[--theme-color:var(--color-olive-800)]";
261
+ case "olive-900": return "[--theme-color:var(--color-olive-900)]";
262
+ case "olive-950": return "[--theme-color:var(--color-olive-950)]";
263
+ case "orange-50": return "[--theme-color:var(--color-orange-50)]";
264
+ case "orange-100": return "[--theme-color:var(--color-orange-100)]";
265
+ case "orange-200": return "[--theme-color:var(--color-orange-200)]";
266
+ case "orange-300": return "[--theme-color:var(--color-orange-300)]";
267
+ case "orange-400": return "[--theme-color:var(--color-orange-400)]";
193
268
  case "orange":
194
- fillColorTransitionClasses = twJoin(fillColorTransitionClasses, "[--theme-color:var(--color-orange-500)]");
195
- break;
269
+ case "orange-500": return "[--theme-color:var(--color-orange-500)]";
270
+ case "orange-600": return "[--theme-color:var(--color-orange-600)]";
271
+ case "orange-700": return "[--theme-color:var(--color-orange-700)]";
272
+ case "orange-800": return "[--theme-color:var(--color-orange-800)]";
273
+ case "orange-900": return "[--theme-color:var(--color-orange-900)]";
274
+ case "orange-950": return "[--theme-color:var(--color-orange-950)]";
275
+ case "pink-50": return "[--theme-color:var(--color-pink-50)]";
276
+ case "pink-100": return "[--theme-color:var(--color-pink-100)]";
277
+ case "pink-200": return "[--theme-color:var(--color-pink-200)]";
278
+ case "pink-300": return "[--theme-color:var(--color-pink-300)]";
279
+ case "pink-400": return "[--theme-color:var(--color-pink-400)]";
196
280
  case "pink":
197
- fillColorTransitionClasses = twJoin(fillColorTransitionClasses, "[--theme-color:var(--color-pink-500)]");
198
- break;
281
+ case "pink-500": return "[--theme-color:var(--color-pink-500)]";
282
+ case "pink-600": return "[--theme-color:var(--color-pink-600)]";
283
+ case "pink-700": return "[--theme-color:var(--color-pink-700)]";
284
+ case "pink-800": return "[--theme-color:var(--color-pink-800)]";
285
+ case "pink-900": return "[--theme-color:var(--color-pink-900)]";
286
+ case "pink-950": return "[--theme-color:var(--color-pink-950)]";
287
+ case "purple-50": return "[--theme-color:var(--color-purple-50)]";
288
+ case "purple-100": return "[--theme-color:var(--color-purple-100)]";
289
+ case "purple-200": return "[--theme-color:var(--color-purple-200)]";
290
+ case "purple-300": return "[--theme-color:var(--color-purple-300)]";
291
+ case "purple-400": return "[--theme-color:var(--color-purple-400)]";
199
292
  case "purple":
200
- fillColorTransitionClasses = twJoin(fillColorTransitionClasses, "[--theme-color:var(--color-purple-500)]");
201
- break;
293
+ case "purple-500": return "[--theme-color:var(--color-purple-500)]";
294
+ case "purple-600": return "[--theme-color:var(--color-purple-600)]";
295
+ case "purple-700": return "[--theme-color:var(--color-purple-700)]";
296
+ case "purple-800": return "[--theme-color:var(--color-purple-800)]";
297
+ case "purple-900": return "[--theme-color:var(--color-purple-900)]";
298
+ case "purple-950": return "[--theme-color:var(--color-purple-950)]";
299
+ case "red-50": return "[--theme-color:var(--color-red-50)]";
300
+ case "red-100": return "[--theme-color:var(--color-red-100)]";
301
+ case "red-200": return "[--theme-color:var(--color-red-200)]";
302
+ case "red-300": return "[--theme-color:var(--color-red-300)]";
303
+ case "red-400": return "[--theme-color:var(--color-red-400)]";
202
304
  case "red":
203
- fillColorTransitionClasses = twJoin(fillColorTransitionClasses, "[--theme-color:var(--color-red-500)]");
204
- break;
305
+ case "red-500": return "[--theme-color:var(--color-red-500)]";
306
+ case "red-600": return "[--theme-color:var(--color-red-600)]";
307
+ case "red-700": return "[--theme-color:var(--color-red-700)]";
308
+ case "red-800": return "[--theme-color:var(--color-red-800)]";
309
+ case "red-900": return "[--theme-color:var(--color-red-900)]";
310
+ case "red-950": return "[--theme-color:var(--color-red-950)]";
311
+ case "rose-50": return "[--theme-color:var(--color-rose-50)]";
312
+ case "rose-100": return "[--theme-color:var(--color-rose-100)]";
313
+ case "rose-200": return "[--theme-color:var(--color-rose-200)]";
314
+ case "rose-300": return "[--theme-color:var(--color-rose-300)]";
315
+ case "rose-400": return "[--theme-color:var(--color-rose-400)]";
205
316
  case "rose":
206
- fillColorTransitionClasses = twJoin(fillColorTransitionClasses, "[--theme-color:var(--color-rose-500)]");
207
- break;
317
+ case "rose-500": return "[--theme-color:var(--color-rose-500)]";
318
+ case "rose-600": return "[--theme-color:var(--color-rose-600)]";
319
+ case "rose-700": return "[--theme-color:var(--color-rose-700)]";
320
+ case "rose-800": return "[--theme-color:var(--color-rose-800)]";
321
+ case "rose-900": return "[--theme-color:var(--color-rose-900)]";
322
+ case "rose-950": return "[--theme-color:var(--color-rose-950)]";
323
+ case "sky-50": return "[--theme-color:var(--color-sky-50)]";
324
+ case "sky-100": return "[--theme-color:var(--color-sky-100)]";
325
+ case "sky-200": return "[--theme-color:var(--color-sky-200)]";
326
+ case "sky-300": return "[--theme-color:var(--color-sky-300)]";
327
+ case "sky-400": return "[--theme-color:var(--color-sky-400)]";
208
328
  case "sky":
209
- fillColorTransitionClasses = twJoin(fillColorTransitionClasses, "[--theme-color:var(--color-sky-500)]");
210
- break;
329
+ case "sky-500": return "[--theme-color:var(--color-sky-500)]";
330
+ case "sky-600": return "[--theme-color:var(--color-sky-600)]";
331
+ case "sky-700": return "[--theme-color:var(--color-sky-700)]";
332
+ case "sky-800": return "[--theme-color:var(--color-sky-800)]";
333
+ case "sky-900": return "[--theme-color:var(--color-sky-900)]";
334
+ case "sky-950": return "[--theme-color:var(--color-sky-950)]";
335
+ case "slate-50": return "[--theme-color:var(--color-slate-50)]";
336
+ case "slate-100": return "[--theme-color:var(--color-slate-100)]";
337
+ case "slate-200": return "[--theme-color:var(--color-slate-200)]";
338
+ case "slate-300": return "[--theme-color:var(--color-slate-300)]";
339
+ case "slate-400": return "[--theme-color:var(--color-slate-400)]";
211
340
  case "slate":
212
- fillColorTransitionClasses = twJoin(fillColorTransitionClasses, "[--theme-color:var(--color-slate-500)]");
213
- break;
341
+ case "slate-500": return "[--theme-color:var(--color-slate-500)]";
342
+ case "slate-600": return "[--theme-color:var(--color-slate-600)]";
343
+ case "slate-700": return "[--theme-color:var(--color-slate-700)]";
344
+ case "slate-800": return "[--theme-color:var(--color-slate-800)]";
345
+ case "slate-900": return "[--theme-color:var(--color-slate-900)]";
346
+ case "slate-950": return "[--theme-color:var(--color-slate-950)]";
347
+ case "stone-50": return "[--theme-color:var(--color-stone-50)]";
348
+ case "stone-100": return "[--theme-color:var(--color-stone-100)]";
349
+ case "stone-200": return "[--theme-color:var(--color-stone-200)]";
350
+ case "stone-300": return "[--theme-color:var(--color-stone-300)]";
351
+ case "stone-400": return "[--theme-color:var(--color-stone-400)]";
214
352
  case "stone":
215
- fillColorTransitionClasses = twJoin(fillColorTransitionClasses, "[--theme-color:var(--color-stone-500)]");
216
- break;
353
+ case "stone-500": return "[--theme-color:var(--color-stone-500)]";
354
+ case "stone-600": return "[--theme-color:var(--color-stone-600)]";
355
+ case "stone-700": return "[--theme-color:var(--color-stone-700)]";
356
+ case "stone-800": return "[--theme-color:var(--color-stone-800)]";
357
+ case "stone-900": return "[--theme-color:var(--color-stone-900)]";
358
+ case "stone-950": return "[--theme-color:var(--color-stone-950)]";
359
+ case "taupe-50": return "[--theme-color:var(--color-taupe-50)]";
360
+ case "taupe-100": return "[--theme-color:var(--color-taupe-100)]";
361
+ case "taupe-200": return "[--theme-color:var(--color-taupe-200)]";
362
+ case "taupe-300": return "[--theme-color:var(--color-taupe-300)]";
363
+ case "taupe-400": return "[--theme-color:var(--color-taupe-400)]";
217
364
  case "taupe":
218
- fillColorTransitionClasses = twJoin(fillColorTransitionClasses, "[--theme-color:var(--color-taupe-500)]");
219
- break;
365
+ case "taupe-500": return "[--theme-color:var(--color-taupe-500)]";
366
+ case "taupe-600": return "[--theme-color:var(--color-taupe-600)]";
367
+ case "taupe-700": return "[--theme-color:var(--color-taupe-700)]";
368
+ case "taupe-800": return "[--theme-color:var(--color-taupe-800)]";
369
+ case "taupe-900": return "[--theme-color:var(--color-taupe-900)]";
370
+ case "taupe-950": return "[--theme-color:var(--color-taupe-950)]";
371
+ case "teal-50": return "[--theme-color:var(--color-teal-50)]";
372
+ case "teal-100": return "[--theme-color:var(--color-teal-100)]";
373
+ case "teal-200": return "[--theme-color:var(--color-teal-200)]";
374
+ case "teal-300": return "[--theme-color:var(--color-teal-300)]";
375
+ case "teal-400": return "[--theme-color:var(--color-teal-400)]";
220
376
  case "teal":
221
- fillColorTransitionClasses = twJoin(fillColorTransitionClasses, "[--theme-color:var(--color-teal-500)]");
222
- break;
377
+ case "teal-500": return "[--theme-color:var(--color-teal-500)]";
378
+ case "teal-600": return "[--theme-color:var(--color-teal-600)]";
379
+ case "teal-700": return "[--theme-color:var(--color-teal-700)]";
380
+ case "teal-800": return "[--theme-color:var(--color-teal-800)]";
381
+ case "teal-900": return "[--theme-color:var(--color-teal-900)]";
382
+ case "teal-950": return "[--theme-color:var(--color-teal-950)]";
383
+ case "violet-50": return "[--theme-color:var(--color-violet-50)]";
384
+ case "violet-100": return "[--theme-color:var(--color-violet-100)]";
385
+ case "violet-200": return "[--theme-color:var(--color-violet-200)]";
386
+ case "violet-300": return "[--theme-color:var(--color-violet-300)]";
387
+ case "violet-400": return "[--theme-color:var(--color-violet-400)]";
223
388
  case "violet":
224
- fillColorTransitionClasses = twJoin(fillColorTransitionClasses, "[--theme-color:var(--color-violet-500)]");
225
- break;
389
+ case "violet-500": return "[--theme-color:var(--color-violet-500)]";
390
+ case "violet-600": return "[--theme-color:var(--color-violet-600)]";
391
+ case "violet-700": return "[--theme-color:var(--color-violet-700)]";
392
+ case "violet-800": return "[--theme-color:var(--color-violet-800)]";
393
+ case "violet-900": return "[--theme-color:var(--color-violet-900)]";
394
+ case "violet-950": return "[--theme-color:var(--color-violet-950)]";
395
+ case "yellow-50": return "[--theme-color:var(--color-yellow-50)]";
396
+ case "yellow-100": return "[--theme-color:var(--color-yellow-100)]";
397
+ case "yellow-200": return "[--theme-color:var(--color-yellow-200)]";
398
+ case "yellow-300": return "[--theme-color:var(--color-yellow-300)]";
399
+ case "yellow-400": return "[--theme-color:var(--color-yellow-400)]";
226
400
  case "yellow":
227
- fillColorTransitionClasses = twJoin(fillColorTransitionClasses, "[--theme-color:var(--color-yellow-500)]");
228
- break;
401
+ case "yellow-500": return "[--theme-color:var(--color-yellow-500)]";
402
+ case "yellow-600": return "[--theme-color:var(--color-yellow-600)]";
403
+ case "yellow-700": return "[--theme-color:var(--color-yellow-700)]";
404
+ case "yellow-800": return "[--theme-color:var(--color-yellow-800)]";
405
+ case "yellow-900": return "[--theme-color:var(--color-yellow-900)]";
406
+ case "yellow-950": return "[--theme-color:var(--color-yellow-950)]";
407
+ case "zinc-50": return "[--theme-color:var(--color-zinc-50)]";
408
+ case "zinc-100": return "[--theme-color:var(--color-zinc-100)]";
409
+ case "zinc-200": return "[--theme-color:var(--color-zinc-200)]";
410
+ case "zinc-300": return "[--theme-color:var(--color-zinc-300)]";
411
+ case "zinc-400": return "[--theme-color:var(--color-zinc-400)]";
229
412
  case "zinc":
230
- fillColorTransitionClasses = twJoin(fillColorTransitionClasses, "[--theme-color:var(--color-zinc-500)]");
231
- break;
232
- case "custom":
233
- if (customTheme && customTheme.themeColor && !customTheme.themeColor.includes("[--theme-color:")) throw new Error("`customTheme.themeColor` must modify the `--theme-color` variable on the ::after pseudo element. Otherwise, please use `customTheme.classes`.");
234
- fillColorTransitionClasses = customTheme.themeColor ? twMerge(fillColorTransitionClasses, customTheme.themeColor) : twMerge(fillClasses, customTheme.classes);
235
- break;
236
- default:
237
- fillColorTransitionClasses = twMerge(fillColorTransitionClasses, `[--theme-color:var(--base-theme-color)]`);
238
- break;
413
+ case "zinc-500": return "[--theme-color:var(--color-zinc-500)]";
414
+ case "zinc-600": return "[--theme-color:var(--color-zinc-600)]";
415
+ case "zinc-700": return "[--theme-color:var(--color-zinc-700)]";
416
+ case "zinc-800": return "[--theme-color:var(--color-zinc-800)]";
417
+ case "zinc-900": return "[--theme-color:var(--color-zinc-900)]";
418
+ case "zinc-950": return "[--theme-color:var(--color-zinc-950)]";
419
+ default: return "[--theme-color:var(--base-theme-color)]";
239
420
  }
240
- return fillColorTransitionClasses;
241
- };
242
- const getFillCenterClasses = (theme = "blue", customTheme) => {
243
- let fillCenterColorClasses = twJoin(fillClasses, "after:scale-x-50 after:scale-y-[0.25] after:bg-(--theme-color)/0 after:transition-[scale,background-color] active:after:scale-x-100 active:after:scale-y-100 active:after:bg-(--theme-color) pointer-fine:hover:after:scale-x-100 pointer-fine:hover:after:scale-y-100 pointer-fine:hover:after:bg-(--theme-color) pointer-fine:active:after:scale-x-100 pointer-fine:active:after:scale-y-100 pointer-fine:active:after:bg-(--theme-color)");
421
+ }
422
+ function getTextColor(theme, asVariable) {
244
423
  switch (theme) {
424
+ case "amber-50":
425
+ case "blue-50":
426
+ case "cyan-50":
427
+ case "emerald-50":
428
+ case "fuchsia-50":
429
+ case "gray-50":
430
+ case "green-50":
431
+ case "indigo-50":
432
+ case "lime-50":
433
+ case "mauve-50":
434
+ case "mist-50":
435
+ case "neutral-50":
436
+ case "olive-50":
437
+ case "orange-50":
438
+ case "pink-50":
439
+ case "purple-50":
440
+ case "red-50":
441
+ case "rose-50":
442
+ case "sky-50":
443
+ case "slate-50":
444
+ case "stone-50":
445
+ case "taupe-50":
446
+ case "teal-50":
447
+ case "violet-50":
448
+ case "yellow-50":
449
+ case "zinc-50":
450
+ case "amber-100":
451
+ case "blue-100":
452
+ case "cyan-100":
453
+ case "emerald-100":
454
+ case "fuchsia-100":
455
+ case "gray-100":
456
+ case "green-100":
457
+ case "indigo-100":
458
+ case "lime-100":
459
+ case "mauve-100":
460
+ case "mist-100":
461
+ case "neutral-100":
462
+ case "olive-100":
463
+ case "orange-100":
464
+ case "pink-100":
465
+ case "purple-100":
466
+ case "red-100":
467
+ case "rose-100":
468
+ case "sky-100":
469
+ case "slate-100":
470
+ case "stone-100":
471
+ case "taupe-100":
472
+ case "teal-100":
473
+ case "violet-100":
474
+ case "yellow-100":
475
+ case "zinc-100":
476
+ case "amber-200":
477
+ case "blue-200":
478
+ case "cyan-200":
479
+ case "emerald-200":
480
+ case "fuchsia-200":
481
+ case "gray-200":
482
+ case "green-200":
483
+ case "indigo-200":
484
+ case "lime-200":
485
+ case "mauve-200":
486
+ case "mist-200":
487
+ case "neutral-200":
488
+ case "olive-200":
489
+ case "orange-200":
490
+ case "pink-200":
491
+ case "purple-200":
492
+ case "red-200":
493
+ case "rose-200":
494
+ case "sky-200":
495
+ case "slate-200":
496
+ case "stone-200":
497
+ case "taupe-200":
498
+ case "teal-200":
499
+ case "violet-200":
500
+ case "yellow-200":
501
+ case "zinc-200":
502
+ case "amber-300":
503
+ case "blue-300":
504
+ case "cyan-300":
505
+ case "emerald-300":
506
+ case "fuchsia-300":
507
+ case "gray-300":
508
+ case "green-300":
509
+ case "indigo-300":
510
+ case "lime-300":
511
+ case "mauve-300":
512
+ case "mist-300":
513
+ case "neutral-300":
514
+ case "olive-300":
515
+ case "orange-300":
516
+ case "pink-300":
517
+ case "purple-300":
518
+ case "red-300":
519
+ case "rose-300":
520
+ case "sky-300":
521
+ case "slate-300":
522
+ case "stone-300":
523
+ case "taupe-300":
524
+ case "teal-300":
525
+ case "violet-300":
526
+ case "yellow-300":
527
+ case "zinc-300":
528
+ case "amber-400":
529
+ case "blue-400":
530
+ case "cyan-400":
531
+ case "emerald-400":
532
+ case "fuchsia-400":
533
+ case "gray-400":
534
+ case "green-400":
535
+ case "indigo-400":
536
+ case "lime-400":
537
+ case "mauve-400":
538
+ case "mist-400":
539
+ case "neutral-400":
540
+ case "olive-400":
541
+ case "orange-400":
542
+ case "pink-400":
543
+ case "purple-400":
544
+ case "red-400":
545
+ case "rose-400":
546
+ case "sky-400":
547
+ case "slate-400":
548
+ case "stone-400":
549
+ case "taupe-400":
550
+ case "teal-400":
551
+ case "violet-400":
552
+ case "yellow-400":
553
+ case "zinc-400": return asVariable ? "[--text-color:color-mix(in_oklch,var(--theme-color)_5%,var(--color-black))]" : "text-[color-mix(in_oklch,var(--theme-color)_5%,var(--color-black))]";
245
554
  case "amber":
246
- fillCenterColorClasses = twJoin(fillCenterColorClasses, "[--theme-color:var(--color-amber-500)]");
247
- break;
248
555
  case "blue":
249
- fillCenterColorClasses = twJoin(fillCenterColorClasses, "[--theme-color:var(--color-blue-500)]");
250
- break;
556
+ case "custom":
251
557
  case "cyan":
252
- fillCenterColorClasses = twJoin(fillCenterColorClasses, "[--theme-color:var(--color-cyan-500)]");
253
- break;
254
558
  case "emerald":
255
- fillCenterColorClasses = twJoin(fillCenterColorClasses, "[--theme-color:var(--color-emerald-500)]");
256
- break;
257
559
  case "fuchsia":
258
- fillCenterColorClasses = twJoin(fillCenterColorClasses, "[--theme-color:var(--color-fuchsia-500)]");
259
- break;
260
560
  case "gray":
261
- fillCenterColorClasses = twJoin(fillCenterColorClasses, "[--theme-color:var(--color-gray-500)]");
262
- break;
263
561
  case "green":
264
- fillCenterColorClasses = twJoin(fillCenterColorClasses, "[--theme-color:var(--color-green-500)]");
265
- break;
266
562
  case "indigo":
267
- fillCenterColorClasses = twJoin(fillCenterColorClasses, "[--theme-color:var(--color-indigo-500)]");
268
- break;
269
563
  case "lime":
270
- fillCenterColorClasses = twJoin(fillCenterColorClasses, "[--theme-color:var(--color-lime-500)]");
271
- break;
272
564
  case "mauve":
273
- fillCenterColorClasses = twJoin(fillCenterColorClasses, "[--theme-color:var(--color-mauve-500)]");
274
- break;
275
565
  case "mist":
276
- fillCenterColorClasses = twJoin(fillCenterColorClasses, "[--theme-color:var(--color-mist-500)]");
277
- break;
278
566
  case "neutral":
279
- fillCenterColorClasses = twJoin(fillCenterColorClasses, "[--theme-color:var(--color-neutral-500)]");
280
- break;
281
567
  case "olive":
282
- fillCenterColorClasses = twJoin(fillCenterColorClasses, "[--theme-color:var(--color-olive-500)]");
283
- break;
284
568
  case "orange":
285
- fillCenterColorClasses = twJoin(fillCenterColorClasses, "[--theme-color:var(--color-orange-500)]");
286
- break;
287
569
  case "pink":
288
- fillCenterColorClasses = twJoin(fillCenterColorClasses, "[--theme-color:var(--color-pink-500)]");
289
- break;
290
570
  case "purple":
291
- fillCenterColorClasses = twJoin(fillCenterColorClasses, "[--theme-color:var(--color-purple-500)]");
292
- break;
293
571
  case "red":
294
- fillCenterColorClasses = twJoin(fillCenterColorClasses, "[--theme-color:var(--color-red-500)]");
295
- break;
296
572
  case "rose":
297
- fillCenterColorClasses = twJoin(fillCenterColorClasses, "[--theme-color:var(--color-rose-500)]");
298
- break;
299
573
  case "sky":
300
- fillCenterColorClasses = twJoin(fillCenterColorClasses, "[--theme-color:var(--color-sky-500)]");
301
- break;
302
574
  case "slate":
303
- fillCenterColorClasses = twJoin(fillCenterColorClasses, "[--theme-color:var(--color-slate-500)]");
304
- break;
305
575
  case "stone":
306
- fillCenterColorClasses = twJoin(fillCenterColorClasses, "[--theme-color:var(--color-stone-500)]");
307
- break;
308
576
  case "taupe":
309
- fillCenterColorClasses = twJoin(fillCenterColorClasses, "[--theme-color:var(--color-taupe-500)]");
310
- break;
311
577
  case "teal":
312
- fillCenterColorClasses = twJoin(fillCenterColorClasses, "[--theme-color:var(--color-teal-500)]");
313
- break;
314
578
  case "violet":
315
- fillCenterColorClasses = twJoin(fillCenterColorClasses, "[--theme-color:var(--color-violet-500)]");
316
- break;
317
579
  case "yellow":
318
- fillCenterColorClasses = twJoin(fillCenterColorClasses, "[--theme-color:var(--color-yellow-500)]");
319
- break;
320
580
  case "zinc":
321
- fillCenterColorClasses = twJoin(fillCenterColorClasses, "[--theme-color:var(--color-zinc-500)]");
322
- break;
323
- case "custom":
324
- if (customTheme && customTheme.themeColor && !customTheme.themeColor.includes("[--theme-color:")) throw new Error("`customTheme.themeColor` must modify the `--theme-color` variable on the ::after pseudo element. Otherwise, please use `customTheme.classes`.");
325
- fillCenterColorClasses = customTheme.themeColor ? twMerge(fillCenterColorClasses, customTheme.themeColor) : twMerge(fillClasses, customTheme.classes);
326
- break;
327
- default:
328
- fillCenterColorClasses = twMerge(fillCenterColorClasses, `[--theme-color:var(--base-theme-color)]`);
329
- break;
581
+ case "amber-500":
582
+ case "blue-500":
583
+ case "cyan-500":
584
+ case "emerald-500":
585
+ case "fuchsia-500":
586
+ case "gray-500":
587
+ case "green-500":
588
+ case "indigo-500":
589
+ case "lime-500":
590
+ case "mauve-500":
591
+ case "mist-500":
592
+ case "neutral-500":
593
+ case "olive-500":
594
+ case "orange-500":
595
+ case "pink-500":
596
+ case "purple-500":
597
+ case "red-500":
598
+ case "rose-500":
599
+ case "sky-500":
600
+ case "slate-500":
601
+ case "stone-500":
602
+ case "taupe-500":
603
+ case "teal-500":
604
+ case "violet-500":
605
+ case "yellow-500":
606
+ case "zinc-500":
607
+ case "amber-600":
608
+ case "blue-600":
609
+ case "cyan-600":
610
+ case "emerald-600":
611
+ case "fuchsia-600":
612
+ case "gray-600":
613
+ case "green-600":
614
+ case "indigo-600":
615
+ case "lime-600":
616
+ case "mauve-600":
617
+ case "mist-600":
618
+ case "neutral-600":
619
+ case "olive-600":
620
+ case "orange-600":
621
+ case "pink-600":
622
+ case "purple-600":
623
+ case "red-600":
624
+ case "rose-600":
625
+ case "sky-600":
626
+ case "slate-600":
627
+ case "stone-600":
628
+ case "taupe-600":
629
+ case "teal-600":
630
+ case "violet-600":
631
+ case "yellow-600":
632
+ case "zinc-600":
633
+ case "amber-700":
634
+ case "blue-700":
635
+ case "cyan-700":
636
+ case "emerald-700":
637
+ case "fuchsia-700":
638
+ case "gray-700":
639
+ case "green-700":
640
+ case "indigo-700":
641
+ case "lime-700":
642
+ case "mauve-700":
643
+ case "mist-700":
644
+ case "neutral-700":
645
+ case "olive-700":
646
+ case "orange-700":
647
+ case "pink-700":
648
+ case "purple-700":
649
+ case "red-700":
650
+ case "rose-700":
651
+ case "sky-700":
652
+ case "slate-700":
653
+ case "stone-700":
654
+ case "taupe-700":
655
+ case "teal-700":
656
+ case "violet-700":
657
+ case "yellow-700":
658
+ case "zinc-700":
659
+ case "amber-800":
660
+ case "blue-800":
661
+ case "cyan-800":
662
+ case "emerald-800":
663
+ case "fuchsia-800":
664
+ case "gray-800":
665
+ case "green-800":
666
+ case "indigo-800":
667
+ case "lime-800":
668
+ case "mauve-800":
669
+ case "mist-800":
670
+ case "neutral-800":
671
+ case "olive-800":
672
+ case "orange-800":
673
+ case "pink-800":
674
+ case "purple-800":
675
+ case "red-800":
676
+ case "rose-800":
677
+ case "sky-800":
678
+ case "slate-800":
679
+ case "stone-800":
680
+ case "taupe-800":
681
+ case "teal-800":
682
+ case "violet-800":
683
+ case "yellow-800":
684
+ case "zinc-800":
685
+ case "amber-900":
686
+ case "blue-900":
687
+ case "cyan-900":
688
+ case "emerald-900":
689
+ case "fuchsia-900":
690
+ case "gray-900":
691
+ case "green-900":
692
+ case "indigo-900":
693
+ case "lime-900":
694
+ case "mauve-900":
695
+ case "mist-900":
696
+ case "neutral-900":
697
+ case "olive-900":
698
+ case "orange-900":
699
+ case "pink-900":
700
+ case "purple-900":
701
+ case "red-900":
702
+ case "rose-900":
703
+ case "sky-900":
704
+ case "slate-900":
705
+ case "stone-900":
706
+ case "taupe-900":
707
+ case "teal-900":
708
+ case "violet-900":
709
+ case "yellow-900":
710
+ case "zinc-900":
711
+ case "amber-950":
712
+ case "blue-950":
713
+ case "cyan-950":
714
+ case "emerald-950":
715
+ case "fuchsia-950":
716
+ case "gray-950":
717
+ case "green-950":
718
+ case "indigo-950":
719
+ case "lime-950":
720
+ case "mauve-950":
721
+ case "mist-950":
722
+ case "neutral-950":
723
+ case "olive-950":
724
+ case "orange-950":
725
+ case "pink-950":
726
+ case "purple-950":
727
+ case "red-950":
728
+ case "rose-950":
729
+ case "sky-950":
730
+ case "slate-950":
731
+ case "stone-950":
732
+ case "taupe-950":
733
+ case "teal-950":
734
+ case "violet-950":
735
+ case "yellow-950":
736
+ case "zinc-950": return asVariable ? "[--text-color:color-mix(in_oklch,var(--theme-color)_5%,var(--color-white))]" : "text-[color-mix(in_oklch,var(--theme-color)_5%,var(--color-white))]";
737
+ default: return asVariable ? "[--text-color:var(--base-theme-color--foreground)]" : "text-[var(--base-theme-color--foreground)]";
330
738
  }
739
+ }
740
+ //#endregion
741
+ //#region src/components/link.tsx
742
+ function Anchor({ as, className, disabled, href, onClick, target, rel, removeHash = true, ...props }) {
743
+ const isExternal = `${href}`.startsWith("http"), hasHash = `${href}`.includes("#");
744
+ const handleClick = (e) => {
745
+ if (disabled) return e.preventDefault();
746
+ onClick?.(e);
747
+ if (removeHash) setTimeout(() => history.replaceState({}, document.title, location.pathname), 100);
748
+ };
749
+ return /* @__PURE__ */ jsx(as || "a", {
750
+ ...props,
751
+ "aria-disabled": disabled,
752
+ className: twMerge("ease-exponential inline-block transition-transform duration-300 active:scale-95 pointer-fine:active:scale-95", className, disabled && "pointer-events-none"),
753
+ href,
754
+ target: target || (isExternal ? "_blank" : "_self"),
755
+ onClick: hasHash ? handleClick : onClick,
756
+ rel: rel !== void 0 ? rel === "nofollow" ? `${rel} noreferrer noopener` : `${rel} prefetch` : isExternal ? "nofollow noreferrer noopener" : "prefetch"
757
+ });
758
+ }
759
+ const baseClasses = "isolate after:absolute after:left-1/2 after:-z-10 after:-translate-x-1/2 after:duration-500 active:after:opacity-100 pointer-fine:active:after:opacity-100";
760
+ const lineStaticClasses = twJoin(baseClasses, "whitespace-nowrap after:-bottom-0.5 after:w-[calc(100%+0.15rem)] after:rounded-full after:border after:border-current");
761
+ const lineClasses = twJoin(lineStaticClasses, "whitespace-nowrap after:transition-transform after:ease-exponential");
762
+ const scaleXClasses = "after:scale-x-0 active:after:scale-x-100 pointer-fine:hover:after:scale-x-100 pointer-fine:active:after:scale-x-100";
763
+ const scaleYClasses = "after:scale-y-0 active:after:scale-y-100 pointer-fine:hover:after:scale-y-100 pointer-fine:active:after:scale-y-100";
764
+ const lineNormalClasses = twJoin([
765
+ lineClasses,
766
+ scaleYClasses,
767
+ "after:origin-bottom after:translate-y-0.5 active:after:translate-y-0 pointer-fine:hover:after:translate-y-0"
768
+ ]);
769
+ const lineLtrClasses = twJoin([
770
+ lineClasses,
771
+ scaleXClasses,
772
+ "after:origin-left"
773
+ ]);
774
+ const lineRtlClasses = twJoin([
775
+ lineClasses,
776
+ scaleXClasses,
777
+ "after:origin-right"
778
+ ]);
779
+ const lineCenterClasses = twJoin([lineClasses, scaleXClasses]);
780
+ const lineLiftClasses = twJoin([
781
+ lineClasses,
782
+ scaleYClasses,
783
+ "after:origin-bottom after:translate-y-1 after:scale-x-75 active:after:translate-y-0 active:after:scale-x-100 pointer-fine:hover:after:translate-y-0 pointer-fine:hover:after:scale-x-100 pointer-fine:active:after:translate-y-0 pointer-fine:active:after:scale-x-100"
784
+ ]);
785
+ const fillClasses = twJoin(baseClasses, "whitespace-nowrap transition-[transform_color] after:top-1/2 after:h-[calc(100%+.05rem)] after:w-[calc(100%+.25rem)] after:-translate-y-1/2 after:rounded after:ease-exponential active:text-(--text-color) pointer-fine:hover:text-(--text-color) pointer-fine:active:text-(--text-color)");
786
+ const getFillColorTransitionClasses = (theme, customTheme) => {
787
+ let fillColorTransitionClasses = twJoin(fillClasses, "transition-[scale_color] after:bg-(--theme-color)");
788
+ if (theme === "custom") {
789
+ if (!customTheme || customTheme.themeColor && !customTheme.themeColor.includes("[--theme-color:")) throw new Error("`customTheme.themeColor` must modify the `--theme-color` variable on the ::after pseudo element. Otherwise, please use `customTheme.classes`.");
790
+ fillColorTransitionClasses = customTheme.themeColor ? twMerge(fillColorTransitionClasses, customTheme.themeColor) : twMerge(fillClasses, customTheme.classes);
791
+ } else fillColorTransitionClasses = twMerge(fillColorTransitionClasses, getThemeColor(theme));
792
+ return fillColorTransitionClasses;
793
+ };
794
+ const getFillCenterClasses = (theme, customTheme) => {
795
+ let fillCenterColorClasses = twJoin(fillClasses, "after:scale-x-50 after:scale-y-[.25] after:bg-(--theme-color)/0 after:transition-[scale_background-color] active:after:scale-x-100 active:after:scale-y-100 active:after:bg-(--theme-color) pointer-fine:hover:after:scale-x-100 pointer-fine:hover:after:scale-y-100 pointer-fine:hover:after:bg-(--theme-color) pointer-fine:active:after:scale-x-100 pointer-fine:active:after:scale-y-100 pointer-fine:active:after:bg-(--theme-color)");
796
+ if (theme === "custom") {
797
+ if (customTheme && customTheme.themeColor && !customTheme.themeColor.includes("[--theme-color:")) throw new Error("`customTheme.themeColor` must modify the `--theme-color` variable on the ::after pseudo element. Otherwise, please use `customTheme.classes`.");
798
+ fillCenterColorClasses = customTheme.themeColor ? twMerge(fillCenterColorClasses, customTheme.themeColor) : twMerge(fillClasses, customTheme.classes);
799
+ } else fillCenterColorClasses = twMerge(fillCenterColorClasses, getThemeColor(theme));
331
800
  return fillCenterColorClasses;
332
801
  };
333
802
  const multilineBaseClasses = "bg-linear-to-r from-current to-current bg-no-repeat active:scale-95";
334
803
  const multilineLineStaticClasses = "underline";
335
804
  const multilineNormalClasses = "underline-offset-1 active:underline pointer-fine:hover:underline";
336
- const multilineLineClasses = twJoin(twJoin(multilineBaseClasses, "duration-500 ease-exponential"), "bg-position-[0%_100%] px-px pb-px transition-[background-size]");
805
+ const multilineLineClasses = twJoin(twJoin(multilineBaseClasses, "duration-500 ease-exponential"), "bg-position-[0%_100%] px-px pbe-px transition-[background-size]");
337
806
  const multilineXClasses = twJoin(multilineLineClasses, "bg-size-[0%_2px] focus-visible:bg-size-[100%_2px] active:bg-size-[100%_2px] pointer-fine:hover:bg-size-[100%_2px]");
338
807
  const multilineLineRtlClasses = twJoin([multilineXClasses, "bg-position-[100%_100%]"]);
339
808
  const multilineLineCenterClasses = twJoin([multilineXClasses, "bg-position-[50%_100%]"]);
340
809
  const multilineLineLiftClasses = twJoin(multilineLineClasses, "bg-size-[auto_0px] focus-visible:bg-size-[auto_2px] active:bg-size-[auto_2px] pointer-fine:hover:bg-size-[auto_2px]");
341
- const multilineFillBaseClasses = twJoin(multilineBaseClasses, "rounded px-0.5 py-0.75 focus-visible:text-zinc-50 active:text-zinc-50 pointer-fine:hover:text-zinc-50");
342
- const getMultilineFillColorClasses = (theme = "blue", customTheme) => {
810
+ const multilineFillBaseClasses = twJoin(multilineBaseClasses, "rounded px-0.5 py-0.75 focus-visible:text-(--text-color) active:text-(--text-color) pointer-fine:hover:text-(--text-color)");
811
+ const getMultilineFillColorClasses = (theme, customTheme) => {
343
812
  let multilineFillColorClasses = twJoin(multilineFillBaseClasses, "from-(--theme-color) to-(--theme-color) transition-[background-size,color]");
344
- switch (theme) {
345
- case "amber":
346
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-amber-500)]");
347
- break;
348
- case "blue":
349
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-blue-500)]");
350
- break;
351
- case "cyan":
352
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-cyan-500)]");
353
- break;
354
- case "emerald":
355
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-emerald-500)]");
356
- break;
357
- case "fuchsia":
358
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-fuchsia-500)]");
359
- break;
360
- case "gray":
361
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-gray-500)]");
362
- break;
363
- case "green":
364
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-green-500)]");
365
- break;
366
- case "indigo":
367
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-indigo-500)]");
368
- break;
369
- case "lime":
370
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-lime-500)]");
371
- break;
372
- case "mauve":
373
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-mauve-500)]");
374
- break;
375
- case "mist":
376
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-mist-500)]");
377
- break;
378
- case "neutral":
379
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-neutral-500)]");
380
- break;
381
- case "olive":
382
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-olive-500)]");
383
- break;
384
- case "orange":
385
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-orange-500)]");
386
- break;
387
- case "pink":
388
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-pink-500)]");
389
- break;
390
- case "purple":
391
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-purple-500)]");
392
- break;
393
- case "red":
394
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-red-500)]");
395
- break;
396
- case "rose":
397
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-rose-500)]");
398
- break;
399
- case "sky":
400
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-sky-500)]");
401
- break;
402
- case "slate":
403
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-slate-500)]");
404
- break;
405
- case "stone":
406
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-stone-500)]");
407
- break;
408
- case "taupe":
409
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-taupe-500)]");
410
- break;
411
- case "teal":
412
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-teal-500)]");
413
- break;
414
- case "violet":
415
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-violet-500)]");
416
- break;
417
- case "yellow":
418
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-yellow-500)]");
419
- break;
420
- case "zinc":
421
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-zinc-500)]");
422
- break;
423
- case "custom":
424
- if (customTheme && customTheme.themeColor && !customTheme.themeColor.includes("[--theme-color:")) throw new Error("`customTheme.themeColor` must modify the `--theme-color` variable. Otherwise, please use `customTheme.classes`.");
425
- multilineFillColorClasses = customTheme.themeColor ? twMerge(multilineFillColorClasses, customTheme.themeColor) : twMerge(multilineFillBaseClasses, customTheme.classes);
426
- break;
427
- default:
428
- multilineFillColorClasses = twMerge(multilineFillColorClasses, `[--theme-color:var(--base-theme-color)]`);
429
- break;
430
- }
813
+ if (theme === "custom") {
814
+ if (customTheme && customTheme.themeColor && !customTheme.themeColor.includes("[--theme-color:")) throw new Error("`customTheme.themeColor` must modify the `--theme-color` variable. Otherwise, please use `customTheme.classes`.");
815
+ multilineFillColorClasses = customTheme.themeColor ? twMerge(multilineFillColorClasses, customTheme.themeColor) : twMerge(multilineFillBaseClasses, customTheme.classes);
816
+ } else multilineFillColorClasses = twMerge(multilineFillColorClasses, getThemeColor(theme));
431
817
  return multilineFillColorClasses;
432
818
  };
433
- const getMultilineFillClasses = (theme = "blue", customTheme) => {
819
+ const getMultilineFillClasses = (theme, customTheme) => {
434
820
  let multilineFillColorClasses = twJoin(multilineFillBaseClasses, "from-(--theme-color)/0 to-(--theme-color)/0 bg-size-[50%_0px] bg-position-[50%_50%] transition-[background-size,background-image,color] focus-visible:from-(--theme-color) focus-visible:to-(--theme-color) focus-visible:bg-size-[100%_100%] active:from-(--theme-color) active:to-(--theme-color) active:bg-size-[100%_100%] contrast-more:from-(--theme-color)/0 pointer-fine:hover:from-(--theme-color) pointer-fine:hover:to-(--theme-color) pointer-fine:hover:bg-size-[100%_100%]");
435
- switch (theme) {
436
- case "amber":
437
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-amber-500)]");
438
- break;
439
- case "blue":
440
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-blue-500)]");
441
- break;
442
- case "cyan":
443
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-cyan-500)]");
444
- break;
445
- case "emerald":
446
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-emerald-500)]");
447
- break;
448
- case "fuchsia":
449
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-fuchsia-500)]");
450
- break;
451
- case "gray":
452
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-gray-500)]");
453
- break;
454
- case "green":
455
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-green-500)]");
456
- break;
457
- case "indigo":
458
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-indigo-500)]");
459
- break;
460
- case "lime":
461
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-lime-500)]");
462
- break;
463
- case "mauve":
464
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-mauve-500)]");
465
- break;
466
- case "mist":
467
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-mist-500)]");
468
- break;
469
- case "neutral":
470
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-neutral-500)]");
471
- break;
472
- case "olive":
473
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-olive-500)]");
474
- break;
475
- case "orange":
476
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-orange-500)]");
477
- break;
478
- case "pink":
479
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-pink-500)]");
480
- break;
481
- case "purple":
482
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-purple-500)]");
483
- break;
484
- case "red":
485
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-red-500)]");
486
- break;
487
- case "rose":
488
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-rose-500)]");
489
- break;
490
- case "sky":
491
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-sky-500)]");
492
- break;
493
- case "slate":
494
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-slate-500)]");
495
- break;
496
- case "stone":
497
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-stone-500)]");
498
- break;
499
- case "taupe":
500
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-taupe-500)]");
501
- break;
502
- case "teal":
503
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-teal-500)]");
504
- break;
505
- case "violet":
506
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-violet-500)]");
507
- break;
508
- case "yellow":
509
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-yellow-500)]");
510
- break;
511
- case "zinc":
512
- multilineFillColorClasses = twJoin(multilineFillColorClasses, "[--theme-color:var(--color-zinc-500)]");
513
- break;
514
- case "custom":
515
- if (customTheme && customTheme.themeColor && !customTheme.themeColor.includes("[--theme-color:")) throw new Error("`customTheme.themeColor` must modify the `--theme-color` variable. Otherwise, please use `customTheme.classes`.");
516
- multilineFillColorClasses = customTheme.themeColor ? twMerge(multilineFillColorClasses, customTheme.themeColor) : twMerge(multilineFillBaseClasses, customTheme.classes);
517
- break;
518
- default:
519
- multilineFillColorClasses = twMerge(multilineFillColorClasses, `[--theme-color:var(--base-theme-color)]`);
520
- break;
521
- }
821
+ if (theme === "custom") {
822
+ if (customTheme && customTheme.themeColor && !customTheme.themeColor.includes("[--theme-color:")) throw new Error("`customTheme.themeColor` must modify the `--theme-color` variable. Otherwise, please use `customTheme.classes`.");
823
+ multilineFillColorClasses = customTheme.themeColor ? twMerge(multilineFillColorClasses, customTheme.themeColor) : twMerge(multilineFillBaseClasses, customTheme.classes);
824
+ } else multilineFillColorClasses = twMerge(multilineFillColorClasses, getThemeColor(theme));
522
825
  return multilineFillColorClasses;
523
826
  };
524
- const getMultilineFillLiftClasses = (theme = "blue", customTheme) => {
827
+ const getMultilineFillLiftClasses = (theme, customTheme) => {
525
828
  return twJoin(getMultilineFillColorClasses(theme, customTheme), "bg-size-[auto_0px] bg-position-[50%_100%] focus-visible:bg-size-[auto_100%] active:bg-size-[auto_100%] pointer-fine:hover:bg-size-[auto_100%]");
526
829
  };
527
- const getMultilineFillXClasses = (theme = "blue", customTheme) => {
830
+ const getMultilineFillXClasses = (theme, customTheme) => {
528
831
  return twJoin(getMultilineFillColorClasses(theme, customTheme), "bg-size-[0%_100%] focus-visible:bg-size-[100%_100%] active:bg-size-[100%_100%] pointer-fine:hover:bg-size-[100%_100%]");
529
832
  };
530
- const getMultilineFillRtlClasses = (theme = "blue", customTheme) => {
833
+ const getMultilineFillRtlClasses = (theme, customTheme) => {
531
834
  return twJoin(getMultilineFillXClasses(theme, customTheme), "bg-position-[100%_auto]");
532
835
  };
533
- const getMultilineFillCenterClasses = (theme = "blue", customTheme) => {
836
+ const getMultilineFillCenterClasses = (theme, customTheme) => {
534
837
  return twJoin(getMultilineFillXClasses(theme, customTheme), "bg-position-[50%_auto]");
535
838
  };
536
- function getLinkClasses({ customTheme, theme, type }) {
537
- switch (type) {
839
+ function getLinkClasses({ customTheme, theme, lineType }) {
840
+ switch (lineType) {
538
841
  case "static": return lineStaticClasses;
539
842
  case "ltr": return lineLtrClasses;
540
843
  case "rtl": return lineRtlClasses;
541
844
  case "center": return lineCenterClasses;
542
845
  case "lift": return lineLiftClasses;
543
- case "fill": return getFillCenterClasses(theme, customTheme);
846
+ case "fill": return twJoin([getFillCenterClasses(theme, customTheme), getTextColor(theme, true)]);
544
847
  case "fill-ltr": return twJoin([
545
848
  getFillColorTransitionClasses(theme, customTheme),
849
+ getTextColor(theme, true),
546
850
  scaleXClasses,
547
851
  "after:origin-left"
548
852
  ]);
549
853
  case "fill-rtl": return twJoin([
550
854
  getFillColorTransitionClasses(theme, customTheme),
855
+ getTextColor(theme, true),
551
856
  scaleXClasses,
552
857
  "after:origin-right"
553
858
  ]);
554
859
  case "fill-lift": return twJoin([
555
860
  getFillColorTransitionClasses(theme, customTheme),
861
+ getTextColor(theme, true),
556
862
  scaleYClasses,
557
863
  "after:origin-bottom"
558
864
  ]);
@@ -562,11 +868,11 @@ function getLinkClasses({ customTheme, theme, type }) {
562
868
  case "multiline-rtl": return multilineLineRtlClasses;
563
869
  case "multiline-center": return multilineLineCenterClasses;
564
870
  case "multiline-lift": return multilineLineLiftClasses;
565
- case "multiline-fill": return getMultilineFillClasses(theme, customTheme);
566
- case "multiline-fill-ltr": return getMultilineFillXClasses(theme, customTheme);
567
- case "multiline-fill-rtl": return getMultilineFillRtlClasses(theme, customTheme);
568
- case "multiline-fill-center": return getMultilineFillCenterClasses(theme, customTheme);
569
- case "multiline-fill-lift": return getMultilineFillLiftClasses(theme, customTheme);
871
+ case "multiline-fill": return twJoin([getMultilineFillClasses(theme, customTheme), getTextColor(theme, true)]);
872
+ case "multiline-fill-ltr": return twJoin([getMultilineFillXClasses(theme, customTheme), getTextColor(theme, true)]);
873
+ case "multiline-fill-rtl": return twJoin([getMultilineFillRtlClasses(theme, customTheme), getTextColor(theme, true)]);
874
+ case "multiline-fill-center": return twJoin([getMultilineFillCenterClasses(theme, customTheme), getTextColor(theme, true)]);
875
+ case "multiline-fill-lift": return twJoin([getMultilineFillLiftClasses(theme, customTheme), getTextColor(theme, true)]);
570
876
  default: return lineNormalClasses;
571
877
  }
572
878
  }
@@ -591,26 +897,28 @@ function getLinkClasses({ customTheme, theme, type }) {
591
897
  * ## Examples
592
898
  *
593
899
  * @example
594
- * <Link href='/about' type='ltr' title='About Us'>Learn more about our company</Link>
900
+ * <Link href='/about' lineType='ltr' title='About Us'>Learn more about our company</Link>
901
+ *
902
+ * @example
903
+ * <Link href='/about' lineType='fill-ltr' title='About Us'>Learn more about our company</Link>
595
904
  *
596
905
  * @example
597
- * <Link href='/about' type='fill-ltr' title='About Us'>Learn more about our company</Link>
906
+ * <Link href='/about' lineType='multiline-fill-rtl' theme='red' title='About Us'>Learn more about our company</Link>
598
907
  *
599
908
  * @example
600
- * <Link href='/about' type='fill-ltr' theme='red' title='About Us'>Learn more about our company</Link>
909
+ * <Link as='button' lineType='fill-lift' theme='mauve-700'>Edit</Link>
601
910
  */
602
- function Link({ as, className, customTheme, theme, type, ...props }) {
911
+ function Link({ as, className, customTheme, lineType, theme, ...props }) {
603
912
  const linkClasses = getLinkClasses({
604
913
  customTheme,
605
914
  theme,
606
- type
915
+ lineType
607
916
  });
608
917
  return /* @__PURE__ */ jsx(as || Anchor, {
609
918
  ...props,
610
919
  className: twMerge(linkClasses, className)
611
920
  });
612
921
  }
613
-
614
922
  //#endregion
615
923
  //#region src/components/button.tsx
616
924
  /**
@@ -640,45 +948,18 @@ function Button({ className, customTheme, gradient = false, padding = "md", roun
640
948
  }
641
949
  };
642
950
  const getThemeColorVariable = () => {
643
- switch (theme) {
644
- case "amber": return "text-white [--theme-color:var(--color-amber-500)]";
645
- case "blue": return "text-white [--theme-color:var(--color-blue-500)]";
646
- case "cyan": return "text-white [--theme-color:var(--color-cyan-500)]";
647
- case "emerald": return "text-white [--theme-color:var(--color-emerald-500)]";
648
- case "fuchsia": return "text-white [--theme-color:var(--color-fuchsia-500)]";
649
- case "gray": return "text-white [--theme-color:var(--color-gray-500)]";
650
- case "green": return "text-white [--theme-color:var(--color-green-500)]";
651
- case "indigo": return "text-white [--theme-color:var(--color-indigo-500)]";
652
- case "lime": return "text-white [--theme-color:var(--color-lime-500)]";
653
- case "mauve": return "text-white [--theme-color:var(--color-mauve-500)]";
654
- case "mist": return "text-white [--theme-color:var(--color-mist-500)]";
655
- case "neutral": return "text-white [--theme-color:var(--color-neutral-500)]";
656
- case "olive": return "text-white [--theme-color:var(--color-olive-500)]";
657
- case "orange": return "text-white [--theme-color:var(--color-orange-500)]";
658
- case "pink": return "text-white [--theme-color:var(--color-pink-500)]";
659
- case "purple": return "text-white [--theme-color:var(--color-purple-500)]";
660
- case "red": return "text-white [--theme-color:var(--color-red-500)]";
661
- case "rose": return "text-white [--theme-color:var(--color-rose-500)]";
662
- case "sky": return "text-white [--theme-color:var(--color-sky-500)]";
663
- case "slate": return "text-white [--theme-color:var(--color-slate-500)]";
664
- case "stone": return "text-white [--theme-color:var(--color-stone-500)]";
665
- case "taupe": return "text-white [--theme-color:var(--color-taupe-500)]";
666
- case "teal": return "text-white [--theme-color:var(--color-teal-500)]";
667
- case "violet": return "text-white [--theme-color:var(--color-violet-500)]";
668
- case "yellow": return "text-white [--theme-color:var(--color-yellow-500)]";
669
- case "zinc": return "text-white [--theme-color:var(--color-zinc-500)]";
670
- case "custom":
671
- if (customTheme && customTheme.themeColor && !customTheme.themeColor.includes("[--theme-color:")) throw new Error("`customTheme.themeColor` must modify the `--theme-color` variable. Otherwise, please use `customTheme.classes`.");
672
- return customTheme.themeColor || customTheme.classes || "";
673
- default: return "text-(--base-theme-color--foreground) [--theme-color:var(--base-theme-color)]";
951
+ if (theme === "custom") {
952
+ if (customTheme && customTheme.themeColor && !customTheme.themeColor.includes("[--theme-color:")) throw new Error("`customTheme.themeColor` must modify the `--theme-color` variable. Otherwise, please use `customTheme.classes`.");
953
+ return customTheme.themeColor || customTheme.classes || "";
674
954
  }
955
+ return twJoin([getTextColor(theme), getThemeColor(theme)]);
675
956
  };
676
957
  const buttonClasses = twMerge([
677
958
  "block w-fit min-w-fit corner-super-1.5 text-center font-semibold shadow-lg duration-300 ease-exponential active:scale-99 data-focus:scale-101 pointer-fine:hover:scale-101 pointer-fine:hover:active:scale-99 pointer-fine:active:scale-99",
678
959
  getPaddingClasses(),
679
960
  getRoundedClasses(),
680
961
  getThemeColorVariable(),
681
- customTheme && customTheme.classes ? customTheme.classes : [gradient ? "bg-linear-to-t from-[color-mix(in_oklch,var(--theme-color),var(--color-black)_20%)] via-(--theme-color) to-[color-mix(in_oklch,var(--theme-color),var(--color-white)_20%)] bg-size-[100%_200%] transition-[scale,background-position-y] [background-position-y:50%] active:[background-position-y:100%] data-focus:[background-position-y:0%] pointer-fine:hover:[background-position-y:0%] pointer-fine:hover:active:[background-position-y:100%]" : "bg-(--theme-color) transition-[scale,background-color] active:bg-[color-mix(in_oklch,var(--theme-color),var(--color-black)_10%)] data-focus:bg-[color-mix(in_oklch,var(--theme-color),var(--color-white)_10%)] pointer-fine:hover:bg-[color-mix(in_oklch,var(--theme-color),var(--color-white)_10%)] pointer-fine:hover:active:bg-[color-mix(in_oklch,var(--theme-color),var(--color-black)_10%)]", "shadow-(--theme-color)/25"].join(" "),
962
+ customTheme && customTheme.classes ? customTheme.classes : [gradient ? "bg-linear-to-t from-[color-mix(in_oklch,var(--theme-color),var(--color-black)_20%)] via-(--theme-color) to-[color-mix(in_oklch,var(--theme-color),var(--color-white)_20%)] bg-size-[100%_200%] transition-[scale_background-position-y] [background-position-y:50%] active:[background-position-y:100%] data-focus:[background-position-y:0%] pointer-fine:hover:[background-position-y:0%] pointer-fine:hover:active:[background-position-y:100%]" : "bg-(--theme-color) transition-[scale_background-color] active:bg-[color-mix(in_oklch,var(--theme-color),var(--color-black)_10%)] data-focus:bg-[color-mix(in_oklch,var(--theme-color),var(--color-white)_10%)] pointer-fine:hover:bg-[color-mix(in_oklch,var(--theme-color),var(--color-white)_10%)] pointer-fine:hover:active:bg-[color-mix(in_oklch,var(--theme-color),var(--color-black)_10%)]", "shadow-(--theme-color)/25"].join(" "),
682
963
  className
683
964
  ]);
684
965
  if ("href" in props && !props.as && props.href) return /* @__PURE__ */ jsx(Button$1, {
@@ -691,7 +972,6 @@ function Button({ className, customTheme, gradient = false, padding = "md", roun
691
972
  className: buttonClasses
692
973
  });
693
974
  }
694
-
695
975
  //#endregion
696
976
  //#region src/symbols/checkmark.tsx
697
977
  function Checkmark({ weight = "regular", ...props }) {
@@ -743,7 +1023,6 @@ function Checkmark({ weight = "regular", ...props }) {
743
1023
  });
744
1024
  }
745
1025
  }
746
-
747
1026
  //#endregion
748
1027
  //#region src/components/checkbox.tsx
749
1028
  function Checkbox({ checkmark, children, className, description, descriptionProps: { className: descriptionClassName, ...descriptionProps } = {}, fieldProps: { className: fieldClassName, ...fieldProps } = {}, labelProps: { className: labelClassName, ...labelProps } = {}, inputContainerProps: { className: inputContainerClassName, ...inputContainerProps } = {}, onChange, required, value, ...props }) {
@@ -798,7 +1077,6 @@ function Checkbox({ checkmark, children, className, description, descriptionProp
798
1077
  })]
799
1078
  });
800
1079
  }
801
-
802
1080
  //#endregion
803
1081
  //#region node_modules/animejs/dist/modules/core/consts.js
804
1082
  /**
@@ -850,9 +1128,6 @@ const proxyTargetSymbol = Symbol();
850
1128
  const minValue = 1e-11;
851
1129
  const maxValue = 0xe8d4a51000;
852
1130
  const K = 1e3;
853
- const maxFps = 240;
854
- const emptyString = "";
855
- const cssVarPrefix = "var(";
856
1131
  const shortTransforms = /* @__PURE__ */ (() => {
857
1132
  const map = /* @__PURE__ */ new Map();
858
1133
  map.set("x", "translateX");
@@ -896,7 +1171,6 @@ const unitsExecRgx = /^([-+]?\d*\.?\d+(?:e[-+]?\d+)?)([a-z]+|%)$/i;
896
1171
  const lowerCaseRgx = /([a-z])([A-Z])/g;
897
1172
  const transformsExecRgx = /(\w+)(\([^)]+\)+)/g;
898
1173
  const cssVariableMatchRgx = /var\(\s*(--[\w-]+)(?:\s*,\s*([^)]+))?\s*\)/;
899
-
900
1174
  //#endregion
901
1175
  //#region node_modules/animejs/dist/modules/core/globals.js
902
1176
  /**
@@ -921,7 +1195,7 @@ const defaults = {
921
1195
  keyframes: null,
922
1196
  playbackEase: null,
923
1197
  playbackRate: 1,
924
- frameRate: maxFps,
1198
+ frameRate: 240,
925
1199
  loop: 0,
926
1200
  reversed: false,
927
1201
  alternate: false,
@@ -960,7 +1234,6 @@ if (isBrowser) {
960
1234
  if (!win.AnimeJS) win.AnimeJS = [];
961
1235
  win.AnimeJS.push(globalVersions);
962
1236
  }
963
-
964
1237
  //#endregion
965
1238
  //#region node_modules/animejs/dist/modules/core/helpers.js
966
1239
  /**
@@ -1099,7 +1372,7 @@ const clampInfinity = (v) => v === Infinity ? maxValue : v === -Infinity ? -maxV
1099
1372
  * @param {Number} v - Time value to normalize
1100
1373
  * @return {Number}
1101
1374
  */
1102
- const normalizeTime = (v) => v <= minValue ? minValue : clampInfinity(round$1(v, 11));
1375
+ const normalizeTime = (v) => v <= 1e-11 ? minValue : clampInfinity(round$1(v, 11));
1103
1376
  /**
1104
1377
  * @template T
1105
1378
  * @param {T[]} a
@@ -1174,7 +1447,6 @@ const addChild = (parent, child, sortMethod, prevProp = "_prev", nextProp = "_ne
1174
1447
  child[prevProp] = prev;
1175
1448
  child[nextProp] = next;
1176
1449
  };
1177
-
1178
1450
  //#endregion
1179
1451
  //#region node_modules/animejs/dist/modules/core/targets.js
1180
1452
  /**
@@ -1287,7 +1559,6 @@ function registerTargets(targets) {
1287
1559
  }
1288
1560
  return parsedTargetsArray;
1289
1561
  }
1290
-
1291
1562
  //#endregion
1292
1563
  //#region node_modules/animejs/dist/modules/core/transforms.js
1293
1564
  /**
@@ -1325,7 +1596,6 @@ const parseInlineTransforms = (target, propName, animationInlineStyles) => {
1325
1596
  }
1326
1597
  return inlineTransforms && !isUnd(inlinedStylesPropertyValue) ? inlinedStylesPropertyValue : stringStartsWith(propName, "scale") ? "1" : stringStartsWith(propName, "rotate") || stringStartsWith(propName, "skew") ? "0deg" : "0px";
1327
1598
  };
1328
-
1329
1599
  //#endregion
1330
1600
  //#region node_modules/animejs/dist/modules/core/colors.js
1331
1601
  /**
@@ -1420,7 +1690,6 @@ const convertColorStringValuesToRgbaArray = (colorString) => {
1420
1690
  1
1421
1691
  ];
1422
1692
  };
1423
-
1424
1693
  //#endregion
1425
1694
  //#region node_modules/animejs/dist/modules/core/values.js
1426
1695
  /**
@@ -1461,12 +1730,12 @@ const getFunctionValue = (value, target, index, total, store) => {
1461
1730
  const computed = value(target, index, total);
1462
1731
  return !isNaN(+computed) ? +computed : computed || 0;
1463
1732
  };
1464
- else if (isStr(value) && stringStartsWith(value, cssVarPrefix)) func = () => {
1733
+ else if (isStr(value) && stringStartsWith(value, "var(")) func = () => {
1465
1734
  const match = value.match(cssVariableMatchRgx);
1466
1735
  const cssVarName = match[1];
1467
1736
  const fallbackValue = match[2];
1468
1737
  let computed = getComputedStyle(target)?.getPropertyValue(cssVarName);
1469
- if ((!computed || computed.trim() === emptyString) && fallbackValue) computed = fallbackValue.trim();
1738
+ if ((!computed || computed.trim() === "") && fallbackValue) computed = fallbackValue.trim();
1470
1739
  return computed || 0;
1471
1740
  };
1472
1741
  else return value;
@@ -1585,7 +1854,6 @@ const decomposeTweenValue = (tween, targetObject) => {
1585
1854
  return targetObject;
1586
1855
  };
1587
1856
  const decomposedOriginalValue = createDecomposedValueTargetObject();
1588
-
1589
1857
  //#endregion
1590
1858
  //#region node_modules/animejs/dist/modules/core/styles.js
1591
1859
  /**
@@ -1644,28 +1912,27 @@ const cleanInlineStyles = (renderable) => {
1644
1912
  if (tweenTarget[isDomSymbol]) {
1645
1913
  const targetStyle = tweenTarget.style;
1646
1914
  const originalInlinedValue = tween._inlineValue;
1647
- const tweenHadNoInlineValue = isNil(originalInlinedValue) || originalInlinedValue === emptyString;
1915
+ const tweenHadNoInlineValue = isNil(originalInlinedValue) || originalInlinedValue === "";
1648
1916
  if (tween._tweenType === tweenTypes.TRANSFORM) {
1649
1917
  const cachedTransforms = tweenTarget[transformsSymbol];
1650
1918
  if (tweenHadNoInlineValue) delete cachedTransforms[tweenProperty];
1651
1919
  else cachedTransforms[tweenProperty] = originalInlinedValue;
1652
1920
  if (tween._renderTransforms) if (!Object.keys(cachedTransforms).length) targetStyle.removeProperty("transform");
1653
1921
  else {
1654
- let str = emptyString;
1922
+ let str = "";
1655
1923
  for (let key in cachedTransforms) str += transformsFragmentStrings[key] + cachedTransforms[key] + ") ";
1656
1924
  targetStyle.transform = str;
1657
1925
  }
1658
1926
  } else if (tweenHadNoInlineValue) targetStyle.removeProperty(toLowerCase(tweenProperty));
1659
1927
  else targetStyle[tweenProperty] = originalInlinedValue;
1660
1928
  if (animation._tail === tween) animation.targets.forEach((t) => {
1661
- if (t.getAttribute && t.getAttribute("style") === emptyString) t.removeAttribute("style");
1929
+ if (t.getAttribute && t.getAttribute("style") === "") t.removeAttribute("style");
1662
1930
  });
1663
1931
  }
1664
1932
  });
1665
1933
  }
1666
1934
  return renderable;
1667
1935
  };
1668
-
1669
1936
  //#endregion
1670
1937
  //#region node_modules/animejs/dist/modules/core/units.js
1671
1938
  /**
@@ -1724,7 +1991,6 @@ const convertValueUnit = (el, decomposedValue, unit, force = false) => {
1724
1991
  decomposedValue.u = unit;
1725
1992
  return decomposedValue;
1726
1993
  };
1727
-
1728
1994
  //#endregion
1729
1995
  //#region node_modules/animejs/dist/modules/easings/none.js
1730
1996
  /**
@@ -1740,7 +2006,6 @@ const convertValueUnit = (el, decomposedValue, unit, force = false) => {
1740
2006
  */
1741
2007
  /** @type {EasingFunction} */
1742
2008
  const none = (t) => t;
1743
-
1744
2009
  //#endregion
1745
2010
  //#region node_modules/animejs/dist/modules/easings/eases/parser.js
1746
2011
  /**
@@ -1781,7 +2046,7 @@ const halfPI = PI / 2;
1781
2046
  const doublePI = PI * 2;
1782
2047
  /** @type {Record<String, EasingFunctionWithParams|EasingFunction>} */
1783
2048
  const easeInFunctions = {
1784
- [emptyString]: easeInPower,
2049
+ [""]: easeInPower,
1785
2050
  Quad: easeInPower(2),
1786
2051
  Cubic: easeInPower(3),
1787
2052
  Quart: easeInPower(4),
@@ -1860,7 +2125,7 @@ const eases = /* @__PURE__ */ (() => {
1860
2125
  for (let type in easeTypes) for (let name in easeInFunctions) {
1861
2126
  const easeIn = easeInFunctions[name];
1862
2127
  const easeType = easeTypes[type];
1863
- list[type + name] = name === emptyString || name === "Back" || name === "Elastic" ? (a, b) => easeType(
2128
+ list[type + name] = name === "" || name === "Back" || name === "Elastic" ? (a, b) => easeType(
1864
2129
  /** @type {EasingFunctionWithParams} */
1865
2130
  easeIn(a, b)
1866
2131
  ) : easeType(easeIn);
@@ -1906,7 +2171,6 @@ const parseEase = (ease) => {
1906
2171
  }
1907
2172
  return isFnc(ease) ? ease : isStr(ease) ? parseEaseString(ease) : none;
1908
2173
  };
1909
-
1910
2174
  //#endregion
1911
2175
  //#region node_modules/animejs/dist/modules/core/render.js
1912
2176
  /**
@@ -2072,7 +2336,7 @@ const render = (tickable, time, muteCallbacks, internalRender, tickMode) => {
2072
2336
  } else tween._value = value;
2073
2337
  }
2074
2338
  if (tweenTransformsNeedUpdate && tween._renderTransforms) {
2075
- let str = emptyString;
2339
+ let str = "";
2076
2340
  for (let key in tweenTargetTransformsProperties) str += `${transformsFragmentStrings[key]}${tweenTargetTransformsProperties[key]}) `;
2077
2341
  tweenStyle.transform = str;
2078
2342
  tweenTransformsNeedUpdate = 0;
@@ -2085,7 +2349,7 @@ const render = (tickable, time, muteCallbacks, internalRender, tickMode) => {
2085
2349
  if (!muteCallbacks && isCurrentTimeAboveZero) tickable.onUpdate(tickable);
2086
2350
  }
2087
2351
  if (parent && isSetter) {
2088
- if (!muteCallbacks && (parent.began && !isRunningBackwards && tickableAbsoluteTime > 0 && !completed || isRunningBackwards && tickableAbsoluteTime <= minValue && completed)) {
2352
+ if (!muteCallbacks && (parent.began && !isRunningBackwards && tickableAbsoluteTime > 0 && !completed || isRunningBackwards && tickableAbsoluteTime <= 1e-11 && completed)) {
2089
2353
  tickable.onComplete(tickable);
2090
2354
  tickable.completed = !isRunningBackwards;
2091
2355
  }
@@ -2133,7 +2397,7 @@ const tick = (tickable, time, muteCallbacks, internalRender, tickMode) => {
2133
2397
  const childDuration = child.duration;
2134
2398
  const childStartTime = child._offset + child._delay;
2135
2399
  const childEndTime = childStartTime + childDuration;
2136
- if (!muteCallbacks && childDuration <= minValue && (!childStartTime || childEndTime === tlIterationDuration)) child.onComplete(child);
2400
+ if (!muteCallbacks && childDuration <= 1e-11 && (!childStartTime || childEndTime === tlIterationDuration)) child.onComplete(child);
2137
2401
  }
2138
2402
  });
2139
2403
  if (!muteCallbacks) tl.onLoop(tl);
@@ -2157,7 +2421,6 @@ const tick = (tickable, time, muteCallbacks, internalRender, tickMode) => {
2157
2421
  }
2158
2422
  }
2159
2423
  };
2160
-
2161
2424
  //#endregion
2162
2425
  //#region node_modules/animejs/dist/modules/core/clock.js
2163
2426
  /**
@@ -2188,9 +2451,9 @@ var Clock = class {
2188
2451
  /** @type {Number} */
2189
2452
  this._scheduledTime = 0;
2190
2453
  /** @type {Number} */
2191
- this._frameDuration = K / maxFps;
2454
+ this._frameDuration = K / 240;
2192
2455
  /** @type {Number} */
2193
- this._fps = maxFps;
2456
+ this._fps = 240;
2194
2457
  /** @type {Number} */
2195
2458
  this._speed = 1;
2196
2459
  /** @type {Boolean} */
@@ -2206,7 +2469,7 @@ var Clock = class {
2206
2469
  set fps(frameRate) {
2207
2470
  const previousFrameDuration = this._frameDuration;
2208
2471
  const fr = +frameRate;
2209
- const fps = fr < minValue ? minValue : fr;
2472
+ const fps = fr < 1e-11 ? minValue : fr;
2210
2473
  const frameDuration = K / fps;
2211
2474
  if (fps > defaults.frameRate) defaults.frameRate = fps;
2212
2475
  this._fps = fps;
@@ -2218,7 +2481,7 @@ var Clock = class {
2218
2481
  }
2219
2482
  set speed(playbackRate) {
2220
2483
  const pbr = +playbackRate;
2221
- this._speed = pbr < minValue ? minValue : pbr;
2484
+ this._speed = pbr < 1e-11 ? minValue : pbr;
2222
2485
  }
2223
2486
  /**
2224
2487
  * @param {Number} time
@@ -2244,7 +2507,6 @@ var Clock = class {
2244
2507
  return delta;
2245
2508
  }
2246
2509
  };
2247
-
2248
2510
  //#endregion
2249
2511
  //#region node_modules/animejs/dist/modules/animation/additive.js
2250
2512
  /**
@@ -2312,7 +2574,6 @@ const addAdditiveAnimation = (lookups) => {
2312
2574
  }
2313
2575
  return animation;
2314
2576
  };
2315
-
2316
2577
  //#endregion
2317
2578
  //#region node_modules/animejs/dist/modules/engine/engine.js
2318
2579
  /**
@@ -2436,7 +2697,6 @@ const killEngine = () => {
2436
2697
  engine.reqId = 0;
2437
2698
  return engine;
2438
2699
  };
2439
-
2440
2700
  //#endregion
2441
2701
  //#region node_modules/animejs/dist/modules/animation/composition.js
2442
2702
  /**
@@ -2528,7 +2788,7 @@ const composeTween = (tween, siblings) => {
2528
2788
  prevSibling._changeDuration = updatedPrevChangeDuration;
2529
2789
  prevSibling._currentTime = updatedPrevChangeDuration;
2530
2790
  prevSibling._isOverlapped = 1;
2531
- if (updatedPrevChangeDuration < minValue) overrideTween(prevSibling);
2791
+ if (updatedPrevChangeDuration < 1e-11) overrideTween(prevSibling);
2532
2792
  }
2533
2793
  let pausePrevParentAnimation = true;
2534
2794
  forEachChildren(prevParent, (t) => {
@@ -2673,7 +2933,6 @@ const removeTargetsFromRenderable = (targetsArray, renderable, propertyName) =>
2673
2933
  if (parent.cancel) /** @type {Renderable} */ parent.cancel();
2674
2934
  }
2675
2935
  };
2676
-
2677
2936
  //#endregion
2678
2937
  //#region node_modules/animejs/dist/modules/timer/timer.js
2679
2938
  /**
@@ -2763,7 +3022,7 @@ var Timer = class extends Clock {
2763
3022
  this.id = !isUnd(id) ? id : timerId;
2764
3023
  /** @type {Timeline} */
2765
3024
  this.parent = parent;
2766
- this.duration = clampInfinity((timerDuration + timerLoopDelay) * timerIterationCount - timerLoopDelay) || minValue;
3025
+ this.duration = clampInfinity((timerDuration + timerLoopDelay) * timerIterationCount - timerLoopDelay) || 1e-11;
2767
3026
  /** @type {Boolean} */
2768
3027
  this.backwards = false;
2769
3028
  /** @type {Boolean} */
@@ -2927,7 +3186,7 @@ var Timer = class extends Clock {
2927
3186
  resume() {
2928
3187
  if (!this.paused) return this;
2929
3188
  this.paused = false;
2930
- if (this.duration <= minValue && !this._hasChildren) tick(this, minValue, 0, 0, tickModes.FORCE);
3189
+ if (this.duration <= 1e-11 && !this._hasChildren) tick(this, minValue, 0, 0, tickModes.FORCE);
2931
3190
  else {
2932
3191
  if (!this._running) {
2933
3192
  addChild(engine, this);
@@ -3044,7 +3303,6 @@ var Timer = class extends Clock {
3044
3303
  });
3045
3304
  }
3046
3305
  };
3047
-
3048
3306
  //#endregion
3049
3307
  //#region node_modules/animejs/dist/modules/animation/animation.js
3050
3308
  /**
@@ -3189,7 +3447,7 @@ var JSAnimation = class extends Timer {
3189
3447
  const tDuration = hasSpring ? animEase.settlingDuration : setValue(duration, animDefaults.duration);
3190
3448
  const tDelay = setValue(delay, animDefaults.delay);
3191
3449
  const tModifier = modifier || animDefaults.modifier;
3192
- const tComposition = isUnd(composition) && targetsLength >= K ? compositionTypes.none : !isUnd(composition) ? composition : animDefaults.composition;
3450
+ const tComposition = isUnd(composition) && targetsLength >= 1e3 ? compositionTypes.none : !isUnd(composition) ? composition : animDefaults.composition;
3193
3451
  const absoluteOffsetTime = this._offset + (parent ? parent._offset : 0);
3194
3452
  if (hasSpring) /** @type {Spring} */ animEase.parent = this;
3195
3453
  let iterationDuration = NaN;
@@ -3348,7 +3606,7 @@ var JSAnimation = class extends Timer {
3348
3606
  shortestValue.d = longestValue.d.map((_, i) => isUnd(shortestValue.d[i]) ? 0 : shortestValue.d[i]);
3349
3607
  shortestValue.s = cloneArray(longestValue.s);
3350
3608
  }
3351
- const tweenUpdateDuration = round$1(+tweenDuration || minValue, 12);
3609
+ const tweenUpdateDuration = round$1(+tweenDuration || 1e-11, 12);
3352
3610
  let inlineValue = inlineStylesStore[propName];
3353
3611
  if (!isNil(inlineValue)) inlineStylesStore[propName] = null;
3354
3612
  /** @type {Tween} */
@@ -3434,7 +3692,7 @@ var JSAnimation = class extends Timer {
3434
3692
  /** @type {String|Number} */
3435
3693
  this.id = !isUnd(id) ? id : JSAnimationId;
3436
3694
  /** @type {Number} */
3437
- this.duration = iterationDuration === minValue ? minValue : clampInfinity((iterationDuration + this._loopDelay) * this.iterationCount - this._loopDelay) || minValue;
3695
+ this.duration = iterationDuration === 1e-11 ? minValue : clampInfinity((iterationDuration + this._loopDelay) * this.iterationCount - this._loopDelay) || 1e-11;
3438
3696
  /** @type {Callback<this>} */
3439
3697
  this.onRender = onRender || animDefaults.onRender;
3440
3698
  /** @type {EasingFunction} */
@@ -3488,7 +3746,7 @@ var JSAnimation = class extends Timer {
3488
3746
  }
3489
3747
  }
3490
3748
  });
3491
- if (this.duration === minValue) this.restart();
3749
+ if (this.duration === 1e-11) this.restart();
3492
3750
  return this;
3493
3751
  }
3494
3752
  /**
@@ -3516,7 +3774,6 @@ var JSAnimation = class extends Timer {
3516
3774
  * @return {JSAnimation}
3517
3775
  */
3518
3776
  const animate = (targets, parameters) => new JSAnimation(targets, parameters, null, 0, false).init();
3519
-
3520
3777
  //#endregion
3521
3778
  //#region node_modules/animejs/dist/modules/svg/helpers.js
3522
3779
  /**
@@ -3539,7 +3796,6 @@ const getPath = (path) => {
3539
3796
  if (!$parsedSvg || !isSvg($parsedSvg)) return console.warn(`${path} is not a valid SVGGeometryElement`);
3540
3797
  return $parsedSvg;
3541
3798
  };
3542
-
3543
3799
  //#endregion
3544
3800
  //#region node_modules/animejs/dist/modules/svg/morphto.js
3545
3801
  /**
@@ -3588,15 +3844,13 @@ const morphTo = (path2, precision = .33) => ($path1) => {
3588
3844
  $path1[morphPointsSymbol] = v2;
3589
3845
  return [v1, v2];
3590
3846
  };
3591
-
3592
3847
  //#endregion
3593
3848
  //#region src/utils/get-date.ts
3594
3849
  /** The current date as a Date object */
3595
3850
  const d = /* @__PURE__ */ new Date();
3596
3851
  /** The current minute of the current hour */
3597
3852
  const minutes = d.getMinutes();
3598
- /** The current year */
3599
- const year = d.getFullYear();
3853
+ d.getFullYear();
3600
3854
  /** An array of the names of month in order */
3601
3855
  const monthNamesList = [
3602
3856
  "January",
@@ -3622,10 +3876,8 @@ const weekdayNamesList = [
3622
3876
  "Friday",
3623
3877
  "Saturday"
3624
3878
  ];
3625
- /** The name of the current month */
3626
- const currentMonthName = getMonthName();
3627
- /** The name of the current day of the week */
3628
- const currentWeekdayName = getWeekdayName();
3879
+ getMonthName();
3880
+ getWeekdayName();
3629
3881
  /**
3630
3882
  * ### Get Date
3631
3883
  * - Returns the date with two digits
@@ -3718,13 +3970,11 @@ function getWeekdayName(weekday = d) {
3718
3970
  if (typeof weekday === "number") return weekdayNamesList[weekday];
3719
3971
  return weekdayNamesList[weekday.getDay()];
3720
3972
  }
3721
-
3722
3973
  //#endregion
3723
3974
  //#region src/utils/math.ts
3724
3975
  function easeOutExpo(time, start, end, duration) {
3725
3976
  return time == duration ? start + end : end * (-Math.pow(2, -10 * time / duration) + 1) + start;
3726
3977
  }
3727
-
3728
3978
  //#endregion
3729
3979
  //#region src/components/chevron-up-down-anime.tsx
3730
3980
  function ChevronUpDownAnime({ className, isUp = false }) {
@@ -3767,7 +4017,6 @@ function ChevronUpDownAnime({ className, isUp = false }) {
3767
4017
  })]
3768
4018
  });
3769
4019
  }
3770
-
3771
4020
  //#endregion
3772
4021
  //#region src/components/details.tsx
3773
4022
  function DetailsSummary({ arrow = true, children, className, onClick, ...props }) {
@@ -3794,7 +4043,7 @@ function DetailsBody({ children, className, ...props }) {
3794
4043
  className: twMerge("grid-rows-1fr transition-rows ease-exponential data-closed:grid-rows-0fr grid duration-500", className),
3795
4044
  transition: true,
3796
4045
  children: (bag) => /* @__PURE__ */ jsx("div", {
3797
- className: "overflow-y-hidden px-2 pt-3 pb-1",
4046
+ className: "overflow-y-hidden px-2 pbs-3 pbe-1",
3798
4047
  children: typeof children === "function" ? children(bag) : children
3799
4048
  })
3800
4049
  });
@@ -3807,7 +4056,6 @@ function Details({ as = "div", className, ...props }) {
3807
4056
  role: "details"
3808
4057
  });
3809
4058
  }
3810
-
3811
4059
  //#endregion
3812
4060
  //#region src/components/drop-down.tsx
3813
4061
  function DropDownButton({ arrow = true, as, children, className, ...props }) {
@@ -3874,7 +4122,7 @@ function DropDownSection({ children, label, labelProps, separatorAbove, separato
3874
4122
  separatorAbove && /* @__PURE__ */ jsx(DropDownSeparator, {}),
3875
4123
  label && /* @__PURE__ */ jsx(MenuHeading, {
3876
4124
  ...restLabelProps,
3877
- className: (headingBag) => twMerge("text-[larger] font-bold text-current/80", typeof labelClassName === "function" ? labelClassName(headingBag) : labelClassName),
4125
+ className: (headingBag) => twMerge("text-larger font-bold text-current/80", typeof labelClassName === "function" ? labelClassName(headingBag) : labelClassName),
3878
4126
  children: label
3879
4127
  }),
3880
4128
  typeof children === "function" ? children(sectionBag) : children,
@@ -3889,12 +4137,21 @@ function DropDownSeparator({ as, className, ...props }) {
3889
4137
  className: (bag) => twMerge("my-4 block h-px rounded-full bg-neutral-950/20", typeof className === "function" ? className(bag) : className)
3890
4138
  });
3891
4139
  }
3892
- function DropDown(props) {
3893
- return /* @__PURE__ */ jsx(Menu, { ...props });
4140
+ function DropDown({ as, ...props }) {
4141
+ return /* @__PURE__ */ jsx(Menu, {
4142
+ ...props,
4143
+ as
4144
+ });
3894
4145
  }
3895
-
3896
4146
  //#endregion
3897
4147
  //#region src/components/fieldset.tsx
4148
+ /**
4149
+ * # Fieldset
4150
+ *
4151
+ * @prop legend - The legend text to display above the fieldset.
4152
+ * @prop legendProps - Additional props to pass to the legend component.
4153
+ * @prop className - GOTCHA: The default className includes `contents`, to effectively remove it from the layout. Be sure to change the display style if you want to modify any other styles.
4154
+ */
3898
4155
  function Fieldset({ children, className, legend, legendProps, name, ...props }) {
3899
4156
  const { className: legendClassName, ...restLegendProps } = legendProps || {};
3900
4157
  name = legend || name;
@@ -3909,7 +4166,6 @@ function Fieldset({ children, className, legend, legendProps, name, ...props })
3909
4166
  }), typeof children === "function" ? children(bag) : children] })
3910
4167
  });
3911
4168
  }
3912
-
3913
4169
  //#endregion
3914
4170
  //#region src/components/form.tsx
3915
4171
  function Form({ children, className, ...props }) {
@@ -3919,7 +4175,6 @@ function Form({ children, className, ...props }) {
3919
4175
  children
3920
4176
  });
3921
4177
  }
3922
-
3923
4178
  //#endregion
3924
4179
  //#region src/components/ghost.tsx
3925
4180
  function Ghost({ children, className, ...props }) {
@@ -3929,7 +4184,6 @@ function Ghost({ children, className, ...props }) {
3929
4184
  children: children || /* @__PURE__ */ jsx(Fragment, { children: "\xA0" })
3930
4185
  });
3931
4186
  }
3932
-
3933
4187
  //#endregion
3934
4188
  //#region src/components/heading.tsx
3935
4189
  function getTextFromChildren(children) {
@@ -3950,12 +4204,12 @@ function Heading({ as = "h2", children, customize, className, id, ref, ...props
3950
4204
  const targetableID = id || getTextFromChildren(children).replace(/\s+/g, "-").toLowerCase();
3951
4205
  const getBaseClasses = () => {
3952
4206
  switch (as) {
3953
- case "h1": return twMerge("pb-2.5 text-6xl font-black last:pb-0", customize?.h1);
3954
- case "h3": return twMerge("pb-2 text-4xl font-extralight last:pb-0", customize?.h3);
3955
- case "h4": return twMerge("pb-2 text-3xl font-medium last:pb-0", customize?.h4);
3956
- case "h5": return twMerge("pb-1.5 text-2xl font-semibold last:pb-0", customize?.h5);
3957
- case "h6": return twMerge("pb-1 text-xl font-bold last:pb-0", customize?.h6);
3958
- default: return twMerge("pb-2.5 text-5xl font-extrabold last:pb-0", customize?.h2);
4207
+ case "h1": return twMerge("pbe-2.5 text-6xl font-black last:pbe-0", customize?.h1);
4208
+ case "h3": return twMerge("pbe-2 text-4xl font-extralight last:pbe-0", customize?.h3);
4209
+ case "h4": return twMerge("pbe-2 text-3xl font-medium last:pbe-0", customize?.h4);
4210
+ case "h5": return twMerge("pbe-1.5 text-2xl font-semibold last:pbe-0", customize?.h5);
4211
+ case "h6": return twMerge("pbe-1 text-xl font-bold last:pbe-0", customize?.h6);
4212
+ default: return twMerge("pbe-2.5 text-5xl font-extrabold last:pbe-0", customize?.h2);
3959
4213
  }
3960
4214
  };
3961
4215
  const baseClasses = getBaseClasses();
@@ -3967,7 +4221,6 @@ function Heading({ as = "h2", children, customize, className, id, ref, ...props
3967
4221
  children
3968
4222
  });
3969
4223
  }
3970
-
3971
4224
  //#endregion
3972
4225
  //#region src/symbols/chevron.forward.tsx
3973
4226
  function ChevronForward({ weight = "regular", ...props }) {
@@ -4019,7 +4272,6 @@ function ChevronForward({ weight = "regular", ...props }) {
4019
4272
  });
4020
4273
  }
4021
4274
  }
4022
-
4023
4275
  //#endregion
4024
4276
  //#region node_modules/animejs/dist/modules/animatable/animatable.js
4025
4277
  /**
@@ -4138,7 +4390,6 @@ var Animatable = class {
4138
4390
  return this;
4139
4391
  }
4140
4392
  };
4141
-
4142
4393
  //#endregion
4143
4394
  //#region node_modules/animejs/dist/modules/utils/number.js
4144
4395
  /**
@@ -4151,7 +4402,6 @@ var Animatable = class {
4151
4402
  * @return {Number}
4152
4403
  */
4153
4404
  const mapRange = (value, inLow, inHigh, outLow, outHigh) => outLow + (value - inLow) / (inHigh - inLow) * (outHigh - outLow);
4154
-
4155
4405
  //#endregion
4156
4406
  //#region node_modules/animejs/dist/modules/easings/spring/index.js
4157
4407
  /**
@@ -4322,7 +4572,6 @@ var Spring = class {
4322
4572
  * @returns {Spring}
4323
4573
  */
4324
4574
  const spring = (parameters) => new Spring(parameters);
4325
-
4326
4575
  //#endregion
4327
4576
  //#region node_modules/animejs/dist/modules/utils/target.js
4328
4577
  /**
@@ -4401,7 +4650,6 @@ const set = (targets, parameters) => {
4401
4650
  parameters.composition = setValue(parameters.composition, compositionTypes.none);
4402
4651
  return new JSAnimation(targets, parameters, null, 0, true).resume();
4403
4652
  };
4404
-
4405
4653
  //#endregion
4406
4654
  //#region node_modules/animejs/dist/modules/draggable/draggable.js
4407
4655
  /**
@@ -5585,7 +5833,6 @@ var Draggable = class {
5585
5833
  * @return {Draggable}
5586
5834
  */
5587
5835
  const createDraggable = (target, parameters) => new Draggable(target, parameters);
5588
-
5589
5836
  //#endregion
5590
5837
  //#region src/components/human-verification.tsx
5591
5838
  function checkHashSecret([number, letter]) {
@@ -5821,7 +6068,7 @@ function HumanVerification({ children = "Verify", className }) {
5821
6068
  }),
5822
6069
  /* @__PURE__ */ jsxs("div", {
5823
6070
  id: "human-verification-instructions",
5824
- className: "pt-1 text-center text-xs",
6071
+ className: "pbs-1 text-center text-xs",
5825
6072
  children: [
5826
6073
  "Human verification challenge.",
5827
6074
  " ",
@@ -5834,7 +6081,6 @@ function HumanVerification({ children = "Verify", className }) {
5834
6081
  ]
5835
6082
  });
5836
6083
  }
5837
-
5838
6084
  //#endregion
5839
6085
  //#region src/components/iframe.tsx
5840
6086
  const allAllowProperties = [
@@ -5903,7 +6149,6 @@ function IFrame({ allow, className, referrerPolicy = "no-referrer-when-downgrade
5903
6149
  sandbox: sandbox?.join(" ")
5904
6150
  });
5905
6151
  }
5906
-
5907
6152
  //#endregion
5908
6153
  //#region src/components/input.tsx
5909
6154
  /**
@@ -5927,7 +6172,7 @@ function Input({ children, className, description, descriptionProps: { className
5927
6172
  children: [
5928
6173
  label && /* @__PURE__ */ jsx(Label, {
5929
6174
  ...labelProps,
5930
- className: (bag) => twMerge("text-sm font-medium", required ? "after:text-red-700 after:content-[\"_*\"]" : "", typeof labelClassName === "function" ? labelClassName(bag) : labelClassName),
6175
+ className: (bag) => twMerge("text-sm font-medium", required ? `after:text-red-700 after:content-['_*']` : "", typeof labelClassName === "function" ? labelClassName(bag) : labelClassName),
5931
6176
  children: label
5932
6177
  }),
5933
6178
  /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx(Input$1, {
@@ -5937,13 +6182,12 @@ function Input({ children, className, description, descriptionProps: { className
5937
6182
  }), children] }),
5938
6183
  description && /* @__PURE__ */ jsx(Description, {
5939
6184
  ...descriptionProps,
5940
- className: (bag) => twMerge("text-xs text-current/60", typeof descriptionClassName === "function" ? descriptionClassName(bag) : descriptionClassName),
6185
+ className: (bag) => twMerge("max-w-none text-xs text-current/60", typeof descriptionClassName === "function" ? descriptionClassName(bag) : descriptionClassName),
5941
6186
  children: description
5942
6187
  })
5943
6188
  ]
5944
6189
  });
5945
6190
  }
5946
-
5947
6191
  //#endregion
5948
6192
  //#region src/symbols/xmark.tsx
5949
6193
  function Xmark({ weight = "regular", ...props }) {
@@ -5995,7 +6239,6 @@ function Xmark({ weight = "regular", ...props }) {
5995
6239
  });
5996
6240
  }
5997
6241
  }
5998
-
5999
6242
  //#endregion
6000
6243
  //#region src/hooks/create-fast-context.tsx
6001
6244
  function createFastContext(defaultInitialState) {
@@ -6037,12 +6280,7 @@ function createFastContext(defaultInitialState) {
6037
6280
  useStore
6038
6281
  };
6039
6282
  }
6040
-
6041
- //#endregion
6042
- //#region src/hooks/use-form-status.tsx
6043
- const DEFAULT_STATUS = "incomplete";
6044
- const { Provider, useStore } = createFastContext(DEFAULT_STATUS);
6045
-
6283
+ const { Provider, useStore } = createFastContext("incomplete");
6046
6284
  //#endregion
6047
6285
  //#region src/components/modal.tsx
6048
6286
  const { Provider: ModalControlsProvider, useStore: useModalControls } = createFastContext({
@@ -6069,8 +6307,12 @@ function ModalTrigger({ as, onClick, ...props }) {
6069
6307
  onClick: handleClick
6070
6308
  });
6071
6309
  }
6072
- function ModalTitle(props) {
6073
- return /* @__PURE__ */ jsx(DialogTitle, { ...props });
6310
+ function ModalTitle({ as, ref, ...props }) {
6311
+ return /* @__PURE__ */ jsx(DialogTitle, {
6312
+ ...props,
6313
+ as,
6314
+ ref
6315
+ });
6074
6316
  }
6075
6317
  function ModalDialog(props) {
6076
6318
  const [modalControls] = useModalControls((store) => store);
@@ -6090,13 +6332,13 @@ function ModalDialog(props) {
6090
6332
  className: ["isolate z-50", place === "bottom" && "after:fixed after:inset-x-0 after:bottom-0 after:-z-10 after:h-16 after:bg-neutral-50 sm:after:hidden"].join(" "),
6091
6333
  children: [/* @__PURE__ */ jsx(DialogBackdrop, {
6092
6334
  transition: true,
6093
- className: ["ease-exponential fixed inset-0 cursor-pointer transition-[opacity,background-color,backdrop-filter,-webkit-backdrop-filter] delay-100 duration-750 data-closed:opacity-0", readyToClose ? "bg-neutral-50/5 backdrop-blur-[1px] dark:bg-neutral-950/5" : "bg-neutral-50/25 backdrop-blur-sm dark:bg-neutral-950/25"].join(" "),
6335
+ className: ["ease-exponential fixed inset-0 cursor-pointer transition-[opacity_background-color_backdrop-filter_-webkit-backdrop-filter] delay-100 duration-750 data-closed:opacity-0", readyToClose ? "bg-neutral-50/5 backdrop-blur-[1px] dark:bg-neutral-950/5" : "bg-neutral-50/25 backdrop-blur-sm dark:bg-neutral-950/25"].join(" "),
6094
6336
  children: /* @__PURE__ */ jsx(Button, {
6095
6337
  padding: "none",
6096
6338
  rounded: "full",
6097
6339
  className: "group/button fixed top-4 right-4 size-7 overflow-x-hidden transition-[scale,width,filter] pointer-fine:hover:w-20",
6098
6340
  children: /* @__PURE__ */ jsxs("div", {
6099
- className: "ease-exponential absolute top-1 right-1 flex items-center gap-1 pt-px transition-transform duration-300 pointer-fine:group-hover/button:-translate-x-0.5",
6341
+ className: "ease-exponential absolute top-1 right-1 flex items-center gap-1 pbs-px transition-transform duration-300 pointer-fine:group-hover/button:-translate-x-0.5",
6100
6342
  children: [/* @__PURE__ */ jsxs("span", {
6101
6343
  className: "block text-xs leading-none uppercase",
6102
6344
  children: ["Close", /* @__PURE__ */ jsx("span", {
@@ -6111,7 +6353,7 @@ function ModalDialog(props) {
6111
6353
  transition: true,
6112
6354
  className: twMerge("ease-exponential fixed left-1/2 -translate-x-1/2 overflow-y-scroll bg-neutral-50 p-4 shadow-[0_-15px_50px_-12px] shadow-neutral-950/25 transition-[transform,translate,opacity] duration-750 data-closed:scale-50 data-closed:opacity-0 sm:w-[calc(100vw-2rem)] sm:max-w-fit sm:p-6 sm:shadow-2xl lg:p-8 dark:bg-neutral-900", place === "center" ? "top-1/2 -translate-y-1/2 rounded-2xl data-enter:translate-y-[calc(-50%+12rem)] data-leave:translate-y-[calc(-50%-8rem)]" : "bottom-0 h-fit max-h-[calc(100dvh-4rem)] translate-y-0 rounded-t-4xl data-enter:translate-y-full data-leave:translate-y-full sm:top-1/2 sm:bottom-auto sm:rounded-t-2xl sm:rounded-b-2xl sm:data-enter:translate-y-[calc(-50%+12rem)] sm:data-leave:translate-y-[calc(-50%-8rem)] sm:data-open:-translate-y-1/2 pointer-fine:top-1/2 pointer-fine:bottom-auto pointer-fine:-translate-y-1/2 pointer-fine:rounded-2xl", className),
6113
6355
  children: [/* @__PURE__ */ jsx("button", {
6114
- className: ["after:ease-exponential absolute inset-x-0 top-0 z-10 flex h-6 cursor-grab items-center justify-center after:h-1 after:w-8 after:rounded-full after:transition-[transform,background-color] after:duration-500 active:cursor-grabbing", readyToClose ? "after:scale-x-200 after:scale-y-200 after:bg-blue-500" : "after:bg-neutral-500/50 active:after:scale-x-150 active:after:scale-y-125 active:after:bg-neutral-500 pointer-fine:hover:after:scale-x-125 pointer-fine:hover:after:bg-neutral-500/75 pointer-fine:active:after:scale-x-150 pointer-fine:active:after:bg-neutral-500"].join(" "),
6356
+ className: ["after:ease-exponential absolute inset-x-0 top-0 z-10 flex h-6 cursor-grab items-center justify-center after:h-1 after:w-8 after:rounded-full after:transition-[transform_background-color] after:duration-500 active:cursor-grabbing", readyToClose ? "after:scale-x-200 after:scale-y-200 after:bg-blue-500" : "after:bg-neutral-500/50 active:after:scale-x-150 active:after:scale-y-125 active:after:bg-neutral-500 pointer-fine:hover:after:scale-x-125 pointer-fine:hover:after:bg-neutral-500/75 pointer-fine:active:after:scale-x-150 pointer-fine:active:after:bg-neutral-500"].join(" "),
6115
6357
  onTouchStart: enableTouchClose,
6116
6358
  onMouseDown: enableMouseClose,
6117
6359
  type: "button",
@@ -6123,8 +6365,18 @@ function ModalDialog(props) {
6123
6365
  })]
6124
6366
  });
6125
6367
  }
6126
- function ModalClose({ as, ...props }) {
6127
- return /* @__PURE__ */ jsx(as || Button$1, { ...props });
6368
+ function ModalClose({ as, onClick, ...props }) {
6369
+ const ModalCloseElement = as || Button$1;
6370
+ const [modalControls] = useModalControls((store) => store);
6371
+ const { closeModal } = modalControls || { closeModal: () => {} };
6372
+ const handleClick = (e) => {
6373
+ onClick?.(e);
6374
+ if (!e.defaultPrevented) closeModal();
6375
+ };
6376
+ return /* @__PURE__ */ jsx(ModalCloseElement, {
6377
+ ...props,
6378
+ onClick: handleClick
6379
+ });
6128
6380
  }
6129
6381
  function ModalDisplay({ children, className, onClose, onOpen, place = "bottom" }) {
6130
6382
  const [bodyElement, setBodyElement] = useState(null);
@@ -6234,7 +6486,6 @@ function ModalDisplay({ children, className, onClose, onOpen, place = "bottom" }
6234
6486
  function Modal(props) {
6235
6487
  return /* @__PURE__ */ jsx(ModalControlsProvider, { children: /* @__PURE__ */ jsx(ModalDisplay, { ...props }) });
6236
6488
  }
6237
-
6238
6489
  //#endregion
6239
6490
  //#region src/symbols/chevron.up.chevron.down.tsx
6240
6491
  function ChevronUpChevronDown({ weight = "regular", ...props }) {
@@ -6286,7 +6537,6 @@ function ChevronUpChevronDown({ weight = "regular", ...props }) {
6286
6537
  });
6287
6538
  }
6288
6539
  }
6289
-
6290
6540
  //#endregion
6291
6541
  //#region src/components/select.tsx
6292
6542
  /**
@@ -6312,7 +6562,7 @@ function SelectOption({ children, className, name, ...props }) {
6312
6562
  className: "group/option contents",
6313
6563
  ...props,
6314
6564
  children: (bag) => bag.selectedOption ? /* @__PURE__ */ jsx("span", {
6315
- className: "mr-3 before:absolute before:-left-3 before:content-[\",_\"]",
6565
+ className: `mr-3 before:absolute before:-left-3 before:content-[',_']`,
6316
6566
  children: name
6317
6567
  }) : /* @__PURE__ */ jsxs("div", {
6318
6568
  className: twMerge("ease-exponential corner-super-1.5 flex cursor-pointer items-center gap-2 rounded-lg px-2 py-1 transition-[background-color] duration-200 select-none [--theme-color:var(--base-theme-color)] group-disabled/option:opacity-50 group-data-focus/option:bg-(--theme-color)/15 group-data-selected/option:cursor-default group-data-selected/option:text-(--theme-color) group-data-focus/option:group-data-selected/option:bg-transparent dark:group-data-focus/option:bg-(--theme-color)/15", className),
@@ -6362,7 +6612,7 @@ function Select({ buttonProps, children, className, description, descriptionProp
6362
6612
  children: [
6363
6613
  label && /* @__PURE__ */ jsx(Label, {
6364
6614
  ...labelProps,
6365
- className: (bag) => twMerge("text-sm font-medium", required ? "after:text-red-700 after:content-[\"_*\"]" : "", typeof labelClassName === "function" ? labelClassName(bag) : labelClassName),
6615
+ className: (bag) => twMerge("text-sm font-medium", required ? `after:text-red-700 after:content-['_*']` : "", typeof labelClassName === "function" ? labelClassName(bag) : labelClassName),
6366
6616
  children: label
6367
6617
  }),
6368
6618
  /* @__PURE__ */ jsxs(Listbox, {
@@ -6378,7 +6628,7 @@ function Select({ buttonProps, children, className, description, descriptionProp
6378
6628
  "aria-hidden": "true",
6379
6629
  className: "sr-only top-0 left-1/2",
6380
6630
  id: props.name + ":input:id" + uniqueId,
6381
- name: props.name + ":input:name" + uniqueId,
6631
+ name: props.name,
6382
6632
  onChange: () => {},
6383
6633
  onInvalid: handleInvalid,
6384
6634
  onFocus: refocus,
@@ -6399,7 +6649,7 @@ function Select({ buttonProps, children, className, description, descriptionProp
6399
6649
  }), /* @__PURE__ */ jsx(ListboxOptions, {
6400
6650
  ...optionsProps,
6401
6651
  anchor: anchor || "bottom start",
6402
- className: (bag) => twMerge("ease-exponential corner-super-1.5 z-50 w-(--button-width) origin-top rounded-xl border border-neutral-500/50 bg-neutral-50/95 p-1 backdrop-blur-sm backdrop-brightness-110 transition-[opacity,scale,translate] duration-300 [--anchor-gap:--spacing(1)] focus:outline-none data-closed:-translate-y-0.5 data-closed:scale-y-0 data-closed:opacity-0 data-[anchor*=top]:origin-bottom dark:bg-neutral-800/95", typeof optionsClassName === "function" ? optionsClassName(bag) : optionsClassName),
6652
+ className: (bag) => twMerge("ease-exponential corner-super-1.5 z-50 w-(--button-width) origin-top rounded-xl border border-neutral-500/50 bg-neutral-50/95 p-1 backdrop-blur-sm backdrop-brightness-110 transition-[opacity_scale_translate] duration-300 [--anchor-gap:--spacing(1)] focus:outline-none data-closed:-translate-y-0.5 data-closed:scale-y-0 data-closed:opacity-0 data-[anchor*=top]:origin-bottom dark:bg-neutral-800/95", typeof optionsClassName === "function" ? optionsClassName(bag) : optionsClassName),
6403
6653
  transition: transition || true,
6404
6654
  children
6405
6655
  })]
@@ -6412,7 +6662,57 @@ function Select({ buttonProps, children, className, description, descriptionProp
6412
6662
  ]
6413
6663
  });
6414
6664
  }
6415
-
6665
+ //#endregion
6666
+ //#region src/symbols/circle.fill.tsx
6667
+ function CircleFill({ weight = "regular", ...props }) {
6668
+ switch (weight) {
6669
+ case "ultralight": return /* @__PURE__ */ jsx("svg", {
6670
+ viewBox: "6.83594 -72.4785 74.45 74.45",
6671
+ ...props,
6672
+ children: /* @__PURE__ */ jsx("path", { d: "M44.0606 1.97072C64.521 1.97072 81.2886-14.7969 81.2886-35.2539C81.2886-55.7109 64.521-72.4785 44.0606-72.4785C23.6035-72.4785 6.83594-55.7109 6.83594-35.2539C6.83594-14.7969 23.6035 1.97072 44.0606 1.97072Z" })
6673
+ });
6674
+ case "thin": return /* @__PURE__ */ jsx("svg", {
6675
+ viewBox: "6.83594 -72.9707 75.45 75.43",
6676
+ ...props,
6677
+ children: /* @__PURE__ */ jsx("path", { d: "M44.5527 2.4629C65.3106 2.4629 82.2832-14.5098 82.2832-35.2539C82.2832-55.9981 65.3106-72.9707 44.5527-72.9707C23.8086-72.9707 6.83594-55.9981 6.83594-35.2539C6.83594-14.5098 23.8086 2.4629 44.5527 2.4629Z" })
6678
+ });
6679
+ case "light": return /* @__PURE__ */ jsx("svg", {
6680
+ viewBox: "6.83594 -73.9316 77.39 77.36",
6681
+ ...props,
6682
+ children: /* @__PURE__ */ jsx("path", { d: "M45.5137 3.42383C66.8521 3.42383 84.2251-13.9492 84.2251-35.2539C84.2251-56.5586 66.8521-73.9316 45.5137-73.9316C24.209-73.9316 6.83594-56.5586 6.83594-35.2539C6.83594-13.9492 24.209 3.42383 45.5137 3.42383Z" })
6683
+ });
6684
+ case "regular": return /* @__PURE__ */ jsx("svg", {
6685
+ viewBox: "6.83594 -74.6582 78.86 78.81",
6686
+ ...props,
6687
+ children: /* @__PURE__ */ jsx("path", { d: "M46.2402 4.15039C68.0176 4.15039 85.6934-13.5254 85.6934-35.2539C85.6934-56.9824 68.0176-74.6582 46.2402-74.6582C24.5117-74.6582 6.83594-56.9824 6.83594-35.2539C6.83594-13.5254 24.5117 4.15039 46.2402 4.15039Z" })
6688
+ });
6689
+ case "medium": return /* @__PURE__ */ jsx("svg", {
6690
+ viewBox: "6.83594 -75.124 79.78 79.74",
6691
+ ...props,
6692
+ children: /* @__PURE__ */ jsx("path", { d: "M46.7061 4.61621C68.7383 4.61621 86.6162-13.2617 86.6162-35.2539C86.6162-57.2461 68.7383-75.124 46.7061-75.124C24.7139-75.124 6.83594-57.2461 6.83594-35.2539C6.83594-13.2617 24.7139 4.61621 46.7061 4.61621Z" })
6693
+ });
6694
+ case "semibold": return /* @__PURE__ */ jsx("svg", {
6695
+ viewBox: "6.83594 -75.4812 80.49 80.45",
6696
+ ...props,
6697
+ children: /* @__PURE__ */ jsx("path", { d: "M47.0632 4.97334C69.2908 4.97334 87.3237-13.0596 87.3237-35.2539C87.3237-57.4482 69.2908-75.4812 47.0632-75.4812C24.8688-75.4812 6.83594-57.4482 6.83594-35.2539C6.83594-13.0596 24.8688 4.97334 47.0632 4.97334Z" })
6698
+ });
6699
+ case "bold": return /* @__PURE__ */ jsx("svg", {
6700
+ viewBox: "6.83594 -75.9521 81.42 81.4",
6701
+ ...props,
6702
+ children: /* @__PURE__ */ jsx("path", { d: "M47.5342 5.44434C70.0195 5.44434 88.2568-12.793 88.2568-35.2539C88.2568-57.7148 70.0195-75.9521 47.5342-75.9521C25.0732-75.9521 6.83594-57.7148 6.83594-35.2539C6.83594-12.793 25.0732 5.44434 47.5342 5.44434Z" })
6703
+ });
6704
+ case "heavy": return /* @__PURE__ */ jsx("svg", {
6705
+ viewBox: "6.83594 -76.6353 82.77 82.76",
6706
+ ...props,
6707
+ children: /* @__PURE__ */ jsx("path", { d: "M48.2173 6.12748C71.0765 6.12748 89.6102-12.4063 89.6102-35.2539C89.6102-58.1015 71.0765-76.6353 48.2173-76.6353C25.3697-76.6353 6.83594-58.1015 6.83594-35.2539C6.83594-12.4063 25.3697 6.12748 48.2173 6.12748Z" })
6708
+ });
6709
+ case "black": return /* @__PURE__ */ jsx("svg", {
6710
+ viewBox: "6.83594 -77.2461 83.98 83.98",
6711
+ ...props,
6712
+ children: /* @__PURE__ */ jsx("path", { d: "M48.8281 6.73828C72.0215 6.73828 90.8203-12.0605 90.8203-35.2539C90.8203-58.4473 72.0215-77.2461 48.8281-77.2461C25.6348-77.2461 6.83594-58.4473 6.83594-35.2539C6.83594-12.0605 25.6348 6.73828 48.8281 6.73828Z" })
6713
+ });
6714
+ }
6715
+ }
6416
6716
  //#endregion
6417
6717
  //#region src/components/submit-button.tsx
6418
6718
  /**
@@ -6440,28 +6740,33 @@ function SubmitButton({ children, className, customTheme, error, formStatus = "r
6440
6740
  case "incomplete": return incomplete || "Complete Form";
6441
6741
  case "loading": return loading || /* @__PURE__ */ jsxs(Fragment, { children: [
6442
6742
  /* @__PURE__ */ jsx("span", {
6443
- className: "animate-wave animation-delay-300 inline-block",
6444
- children: ""
6743
+ className: "sr-only",
6744
+ children: "Submitting…"
6445
6745
  }),
6446
- /* @__PURE__ */ jsx("span", {
6447
- className: "animate-wave animation-delay-150 inline-block",
6448
- children: ""
6746
+ "\xA0",
6747
+ /* @__PURE__ */ jsx(CircleFill, {
6748
+ className: "animate-wave size-2",
6749
+ weight: "black"
6449
6750
  }),
6450
- /* @__PURE__ */ jsx("span", {
6451
- className: "animate-wave inline-block",
6452
- children: ""
6453
- })
6454
- ] });
6455
- case "error": return /* @__PURE__ */ jsxs(Fragment, { children: [
6456
- error || "Error",
6457
- " ",
6458
- /* @__PURE__ */ jsx("span", {
6459
- className: "absolute top-1/2 ml-1.5 translate-y-[calc(-50%-1.5px)] text-2xl",
6460
- children: "×"
6461
- })
6751
+ /* @__PURE__ */ jsx(CircleFill, {
6752
+ className: "animate-wave animation-delay-100 size-2",
6753
+ weight: "black"
6754
+ }),
6755
+ /* @__PURE__ */ jsx(CircleFill, {
6756
+ className: "animate-wave animation-delay-200 size-2",
6757
+ weight: "black"
6758
+ }),
6759
+ "\xA0"
6462
6760
  ] });
6761
+ case "error": return error || /* @__PURE__ */ jsxs(Fragment, { children: ["Error", /* @__PURE__ */ jsx(Xmark, {
6762
+ className: "size-3.5",
6763
+ weight: "semibold"
6764
+ })] });
6463
6765
  case "readonly": return readonly || children;
6464
- case "success": return success || "Successfully Submitted";
6766
+ case "success": return success || /* @__PURE__ */ jsxs(Fragment, { children: ["Successfully Submitted", /* @__PURE__ */ jsx(Checkmark, {
6767
+ className: "size-3.5",
6768
+ weight: "semibold"
6769
+ })] });
6465
6770
  default: return children || "Submit";
6466
6771
  }
6467
6772
  };
@@ -6483,7 +6788,7 @@ function SubmitButton({ children, className, customTheme, error, formStatus = "r
6483
6788
  ...dataFormState,
6484
6789
  className: twMerge([
6485
6790
  formStatusButtonClasses,
6486
- "w-full text-white",
6791
+ "flex w-full items-center justify-center gap-2 text-white",
6487
6792
  className
6488
6793
  ]),
6489
6794
  customTheme: { themeColor: twMerge("data-error:[--theme-color:var(--color-red-500)] data-incomplete:[--theme-color:var(--color-neutral-500)] data-loading:[--theme-color:var(--color-yellow-500)] data-readonly:[--theme-color:var(--color-neutral-500)] data-ready:[--theme-color:var(--base-theme-color)] data-success:[--theme-color:var(--color-green-500)]", customTheme?.themeColor) },
@@ -6492,7 +6797,6 @@ function SubmitButton({ children, className, customTheme, error, formStatus = "r
6492
6797
  children: buttonText
6493
6798
  });
6494
6799
  }
6495
-
6496
6800
  //#endregion
6497
6801
  //#region src/components/textarea.tsx
6498
6802
  /**
@@ -6561,7 +6865,6 @@ function Textarea({ children, className, description, descriptionProps: { classN
6561
6865
  ]
6562
6866
  });
6563
6867
  }
6564
-
6565
6868
  //#endregion
6566
6869
  //#region src/components/time.tsx
6567
6870
  /**
@@ -6574,45 +6877,48 @@ function Textarea({ children, className, description, descriptionProps: { classN
6574
6877
  * @prop dateTime - Set the dateTime itself.
6575
6878
  * @prop day - Include the day of the month in the display.
6576
6879
  * @prop hours - Include the hours in the display.
6880
+ * @prop militaryTime - Use military time (24-hour clock) instead of AM/PM.
6577
6881
  * @prop milliseconds - Include the milliseconds in the display.
6578
6882
  * @prop minutes - Include the minutes in the display.
6579
6883
  * @prop month - Include the month in the display.
6580
6884
  * @prop seconds - Include the seconds in the display.
6581
6885
  * @prop year - Include the year in the display.
6582
6886
  */
6583
- function Time({ children, dateObject, dateTime, day, hours, milliseconds, minutes, month, seconds, year, ref, ...props }) {
6887
+ function Time({ children, dateObject, dateTime, day, hours, militaryTime, milliseconds, minutes, month, seconds, year, ref, ...props }) {
6584
6888
  const [date, setDate] = useState(dateObject || void 0);
6585
6889
  const getDateAndTime = () => {
6586
6890
  if (dateTime) return dateTime;
6587
6891
  if (!date) return "";
6588
- return [
6589
- date.getFullYear(),
6590
- getMonth(date),
6591
- getDate(date),
6592
- getHours(date),
6593
- getMinutes(date),
6594
- getSeconds(date),
6595
- getMilliseconds(date)
6596
- ].join("-");
6892
+ const currentYear = date.getFullYear(), currentMonth = getMonth(date), currentDay = getDate(date), currentHour = getHours(date), currentMinute = getMinutes(date), currentSecond = getSeconds(date), currentMillisecond = getMilliseconds(date);
6893
+ return [[
6894
+ currentYear,
6895
+ currentMonth,
6896
+ currentDay
6897
+ ].join("-"), [
6898
+ currentHour,
6899
+ currentMinute,
6900
+ [currentSecond, currentMillisecond].join(".")
6901
+ ].join(":")].join(" ");
6597
6902
  };
6598
6903
  const dateAndTime = getDateAndTime();
6599
6904
  const getDateDisplay = () => {
6600
6905
  if (children) return children;
6601
6906
  if (dateAndTime === "") return "";
6602
- const [dtYear, dtMonth, dtDay, dtHour, dtMinute, dtSecond, dtMillisecond] = dateAndTime.split("-").map(Number);
6907
+ const [dateData, timeData] = dateAndTime.split(" "), [dtYear, dtMonth, dtDay] = dateData.split("-").map(Number), [dtHour, dtMinute, secondData] = timeData.split(":").map(Number), [dtSecond, dtMillisecond] = String(secondData).split(".").map(Number);
6603
6908
  return [
6604
- day && dtDay,
6605
- month && [getMonthName(Number(dtMonth) - 1), month && year && ","].filter(Boolean).join(""),
6909
+ [month && getMonthName(Number(dtMonth) - 1), !day && month && year && ","].filter(Boolean).join(""),
6910
+ [day && dtDay, day && month && year && ","].filter(Boolean).join(""),
6606
6911
  year && dtYear,
6607
6912
  hours && minutes && [
6608
6913
  "at ",
6609
- hours && dtHour,
6914
+ hours && militaryTime ? dtHour : dtHour % 12 || 12,
6610
6915
  hours && minutes && ":",
6611
6916
  minutes && dtMinute,
6612
6917
  minutes && seconds && ":",
6613
6918
  seconds && dtSecond,
6614
6919
  seconds && milliseconds && ".",
6615
- milliseconds && dtMillisecond
6920
+ milliseconds && dtMillisecond,
6921
+ !militaryTime && (dtHour < 12 ? "am" : "pm")
6616
6922
  ].filter(Boolean).join("")
6617
6923
  ].filter(Boolean).join(" ");
6618
6924
  };
@@ -6630,7 +6936,6 @@ function Time({ children, dateObject, dateTime, day, hours, milliseconds, minute
6630
6936
  children: dateDisplay
6631
6937
  });
6632
6938
  }
6633
-
6634
6939
  //#endregion
6635
6940
  //#region node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs
6636
6941
  const min = Math.min;
@@ -6647,10 +6952,6 @@ const oppositeSideMap = {
6647
6952
  bottom: "top",
6648
6953
  top: "bottom"
6649
6954
  };
6650
- const oppositeAlignmentMap = {
6651
- start: "end",
6652
- end: "start"
6653
- };
6654
6955
  function clamp(start, value, end) {
6655
6956
  return max(start, min(value, end));
6656
6957
  }
@@ -6669,9 +6970,9 @@ function getOppositeAxis(axis) {
6669
6970
  function getAxisLength(axis) {
6670
6971
  return axis === "y" ? "height" : "width";
6671
6972
  }
6672
- const yAxisSides = /* @__PURE__ */ new Set(["top", "bottom"]);
6673
6973
  function getSideAxis(placement) {
6674
- return yAxisSides.has(getSide(placement)) ? "y" : "x";
6974
+ const firstChar = placement[0];
6975
+ return firstChar === "t" || firstChar === "b" ? "y" : "x";
6675
6976
  }
6676
6977
  function getAlignmentAxis(placement) {
6677
6978
  return getOppositeAxis(getSideAxis(placement));
@@ -6694,7 +6995,7 @@ function getExpandedPlacements(placement) {
6694
6995
  ];
6695
6996
  }
6696
6997
  function getOppositeAlignmentPlacement(placement) {
6697
- return placement.replace(/start|end/g, (alignment) => oppositeAlignmentMap[alignment]);
6998
+ return placement.includes("start") ? placement.replace("start", "end") : placement.replace("end", "start");
6698
6999
  }
6699
7000
  const lrPlacement = ["left", "right"];
6700
7001
  const rlPlacement = ["right", "left"];
@@ -6721,7 +7022,8 @@ function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {
6721
7022
  return list;
6722
7023
  }
6723
7024
  function getOppositePlacement(placement) {
6724
- return placement.replace(/left|right|bottom|top/g, (side) => oppositeSideMap[side]);
7025
+ const side = getSide(placement);
7026
+ return oppositeSideMap[side] + placement.slice(side.length);
6725
7027
  }
6726
7028
  function expandPaddingObject(padding) {
6727
7029
  return {
@@ -6753,7 +7055,6 @@ function rectToClientRect(rect) {
6753
7055
  y
6754
7056
  };
6755
7057
  }
6756
-
6757
7058
  //#endregion
6758
7059
  //#region node_modules/@floating-ui/core/dist/floating-ui.core.mjs
6759
7060
  function computeCoordsFromPlacement(_ref, placement, rtl) {
@@ -6855,6 +7156,7 @@ async function detectOverflow(state, options) {
6855
7156
  right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
6856
7157
  };
6857
7158
  }
7159
+ const MAX_RESET_COUNT = 50;
6858
7160
  /**
6859
7161
  * Computes the `x` and `y` coordinates that will place the floating element
6860
7162
  * next to a given reference element.
@@ -6864,7 +7166,10 @@ async function detectOverflow(state, options) {
6864
7166
  */
6865
7167
  const computePosition$1 = async (reference, floating, config) => {
6866
7168
  const { placement = "bottom", strategy = "absolute", middleware = [], platform } = config;
6867
- const validMiddleware = middleware.filter(Boolean);
7169
+ const platformWithDetectOverflow = platform.detectOverflow ? platform : {
7170
+ ...platform,
7171
+ detectOverflow
7172
+ };
6868
7173
  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));
6869
7174
  let rects = await platform.getElementRects({
6870
7175
  reference,
@@ -6873,11 +7178,12 @@ const computePosition$1 = async (reference, floating, config) => {
6873
7178
  });
6874
7179
  let { x, y } = computeCoordsFromPlacement(rects, placement, rtl);
6875
7180
  let statefulPlacement = placement;
6876
- let middlewareData = {};
6877
7181
  let resetCount = 0;
6878
- for (let i = 0; i < validMiddleware.length; i++) {
6879
- var _platform$detectOverf;
6880
- const { name, fn } = validMiddleware[i];
7182
+ const middlewareData = {};
7183
+ for (let i = 0; i < middleware.length; i++) {
7184
+ const currentMiddleware = middleware[i];
7185
+ if (!currentMiddleware) continue;
7186
+ const { name, fn } = currentMiddleware;
6881
7187
  const { x: nextX, y: nextY, data, reset } = await fn({
6882
7188
  x,
6883
7189
  y,
@@ -6886,10 +7192,7 @@ const computePosition$1 = async (reference, floating, config) => {
6886
7192
  strategy,
6887
7193
  middlewareData,
6888
7194
  rects,
6889
- platform: {
6890
- ...platform,
6891
- detectOverflow: (_platform$detectOverf = platform.detectOverflow) != null ? _platform$detectOverf : detectOverflow
6892
- },
7195
+ platform: platformWithDetectOverflow,
6893
7196
  elements: {
6894
7197
  reference,
6895
7198
  floating
@@ -6897,14 +7200,11 @@ const computePosition$1 = async (reference, floating, config) => {
6897
7200
  });
6898
7201
  x = nextX != null ? nextX : x;
6899
7202
  y = nextY != null ? nextY : y;
6900
- middlewareData = {
6901
- ...middlewareData,
6902
- [name]: {
6903
- ...middlewareData[name],
6904
- ...data
6905
- }
7203
+ middlewareData[name] = {
7204
+ ...middlewareData[name],
7205
+ ...data
6906
7206
  };
6907
- if (reset && resetCount <= 50) {
7207
+ if (reset && resetCount < MAX_RESET_COUNT) {
6908
7208
  resetCount++;
6909
7209
  if (typeof reset === "object") {
6910
7210
  if (reset.placement) statefulPlacement = reset.placement;
@@ -7223,7 +7523,6 @@ const size$2 = function(options) {
7223
7523
  }
7224
7524
  };
7225
7525
  };
7226
-
7227
7526
  //#endregion
7228
7527
  //#region node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs
7229
7528
  function hasWindow() {
@@ -7257,54 +7556,30 @@ function isShadowRoot(value) {
7257
7556
  if (!hasWindow() || typeof ShadowRoot === "undefined") return false;
7258
7557
  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;
7259
7558
  }
7260
- const invalidOverflowDisplayValues = /* @__PURE__ */ new Set(["inline", "contents"]);
7261
7559
  function isOverflowElement(element) {
7262
7560
  const { overflow, overflowX, overflowY, display } = getComputedStyle$1(element);
7263
- return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);
7561
+ return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== "inline" && display !== "contents";
7264
7562
  }
7265
- const tableElements = /* @__PURE__ */ new Set([
7266
- "table",
7267
- "td",
7268
- "th"
7269
- ]);
7270
7563
  function isTableElement(element) {
7271
- return tableElements.has(getNodeName(element));
7564
+ return /^(table|td|th)$/.test(getNodeName(element));
7272
7565
  }
7273
- const topLayerSelectors = [":popover-open", ":modal"];
7274
7566
  function isTopLayer(element) {
7275
- return topLayerSelectors.some((selector) => {
7276
- try {
7277
- return element.matches(selector);
7278
- } catch (_e) {
7279
- return false;
7280
- }
7281
- });
7282
- }
7283
- const transformProperties = [
7284
- "transform",
7285
- "translate",
7286
- "scale",
7287
- "rotate",
7288
- "perspective"
7289
- ];
7290
- const willChangeValues = [
7291
- "transform",
7292
- "translate",
7293
- "scale",
7294
- "rotate",
7295
- "perspective",
7296
- "filter"
7297
- ];
7298
- const containValues = [
7299
- "paint",
7300
- "layout",
7301
- "strict",
7302
- "content"
7303
- ];
7567
+ try {
7568
+ if (element.matches(":popover-open")) return true;
7569
+ } catch (_e) {}
7570
+ try {
7571
+ return element.matches(":modal");
7572
+ } catch (_e) {
7573
+ return false;
7574
+ }
7575
+ }
7576
+ const willChangeRe = /transform|translate|scale|rotate|perspective|filter/;
7577
+ const containRe = /paint|layout|strict|content/;
7578
+ const isNotNone = (value) => !!value && value !== "none";
7579
+ let isWebKitValue;
7304
7580
  function isContainingBlock(elementOrCss) {
7305
- const webkit = isWebKit();
7306
7581
  const css = isElement(elementOrCss) ? getComputedStyle$1(elementOrCss) : elementOrCss;
7307
- return transformProperties.some((value) => css[value] ? css[value] !== "none" : false) || (css.containerType ? css.containerType !== "normal" : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== "none" : false) || !webkit && (css.filter ? css.filter !== "none" : false) || willChangeValues.some((value) => (css.willChange || "").includes(value)) || containValues.some((value) => (css.contain || "").includes(value));
7582
+ return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || "") || containRe.test(css.contain || "");
7308
7583
  }
7309
7584
  function getContainingBlock(element) {
7310
7585
  let currentNode = getParentNode(element);
@@ -7316,16 +7591,11 @@ function getContainingBlock(element) {
7316
7591
  return null;
7317
7592
  }
7318
7593
  function isWebKit() {
7319
- if (typeof CSS === "undefined" || !CSS.supports) return false;
7320
- return CSS.supports("-webkit-backdrop-filter", "none");
7594
+ if (isWebKitValue == null) isWebKitValue = typeof CSS !== "undefined" && CSS.supports && CSS.supports("-webkit-backdrop-filter", "none");
7595
+ return isWebKitValue;
7321
7596
  }
7322
- const lastTraversableNodeNames = /* @__PURE__ */ new Set([
7323
- "html",
7324
- "body",
7325
- "#document"
7326
- ]);
7327
7597
  function isLastTraversableNode(node) {
7328
- return lastTraversableNodeNames.has(getNodeName(node));
7598
+ return /^(html|body|#document)$/.test(getNodeName(node));
7329
7599
  }
7330
7600
  function getComputedStyle$1(element) {
7331
7601
  return getWindow(element).getComputedStyle(element);
@@ -7361,13 +7631,11 @@ function getOverflowAncestors(node, list, traverseIframes) {
7361
7631
  if (isBody) {
7362
7632
  const frameElement = getFrameElement(win);
7363
7633
  return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);
7364
- }
7365
- return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));
7634
+ } else return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));
7366
7635
  }
7367
7636
  function getFrameElement(win) {
7368
7637
  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;
7369
7638
  }
7370
-
7371
7639
  //#endregion
7372
7640
  //#region node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs
7373
7641
  function getCssDimensions(element) {
@@ -7488,7 +7756,7 @@ function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
7488
7756
  const isOffsetParentAnElement = isHTMLElement(offsetParent);
7489
7757
  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
7490
7758
  if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) scroll = getNodeScroll(offsetParent);
7491
- if (isHTMLElement(offsetParent)) {
7759
+ if (isOffsetParentAnElement) {
7492
7760
  const offsetRect = getBoundingClientRect(offsetParent);
7493
7761
  scale = getScale(offsetParent);
7494
7762
  offsets.x = offsetRect.x + offsetParent.clientLeft;
@@ -7556,7 +7824,6 @@ function getViewportRect(element, strategy) {
7556
7824
  y
7557
7825
  };
7558
7826
  }
7559
- const absoluteOrFixed = /* @__PURE__ */ new Set(["absolute", "fixed"]);
7560
7827
  function getInnerBoundingClientRect(element, strategy) {
7561
7828
  const clientRect = getBoundingClientRect(element, true, strategy === "fixed");
7562
7829
  const top = clientRect.top + element.clientTop;
@@ -7601,7 +7868,7 @@ function getClippingElementAncestors(element, cache) {
7601
7868
  const computedStyle = getComputedStyle$1(currentNode);
7602
7869
  const currentNodeIsContaining = isContainingBlock(currentNode);
7603
7870
  if (!currentNodeIsContaining && computedStyle.position === "fixed") currentContainingBlockComputedStyle = null;
7604
- if (elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === "static" && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode)) result = result.filter((ancestor) => ancestor !== currentNode);
7871
+ if (elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === "static" && !!currentContainingBlockComputedStyle && (currentContainingBlockComputedStyle.position === "absolute" || currentContainingBlockComputedStyle.position === "fixed") || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode)) result = result.filter((ancestor) => ancestor !== currentNode);
7605
7872
  else currentContainingBlockComputedStyle = computedStyle;
7606
7873
  currentNode = getParentNode(currentNode);
7607
7874
  }
@@ -7611,20 +7878,23 @@ function getClippingElementAncestors(element, cache) {
7611
7878
  function getClippingRect(_ref) {
7612
7879
  let { element, boundary, rootBoundary, strategy } = _ref;
7613
7880
  const clippingAncestors = [...boundary === "clippingAncestors" ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary), rootBoundary];
7614
- const firstClippingAncestor = clippingAncestors[0];
7615
- const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {
7616
- const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);
7617
- accRect.top = max(rect.top, accRect.top);
7618
- accRect.right = min(rect.right, accRect.right);
7619
- accRect.bottom = min(rect.bottom, accRect.bottom);
7620
- accRect.left = max(rect.left, accRect.left);
7621
- return accRect;
7622
- }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));
7881
+ const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);
7882
+ let top = firstRect.top;
7883
+ let right = firstRect.right;
7884
+ let bottom = firstRect.bottom;
7885
+ let left = firstRect.left;
7886
+ for (let i = 1; i < clippingAncestors.length; i++) {
7887
+ const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);
7888
+ top = max(rect.top, top);
7889
+ right = min(rect.right, right);
7890
+ bottom = min(rect.bottom, bottom);
7891
+ left = max(rect.left, left);
7892
+ }
7623
7893
  return {
7624
- width: clippingRect.right - clippingRect.left,
7625
- height: clippingRect.bottom - clippingRect.top,
7626
- x: clippingRect.left,
7627
- y: clippingRect.top
7894
+ width: right - left,
7895
+ height: bottom - top,
7896
+ x: left,
7897
+ y: top
7628
7898
  };
7629
7899
  }
7630
7900
  function getDimensions(element) {
@@ -7786,7 +8056,7 @@ function autoUpdate(reference, floating, update, options) {
7786
8056
  if (options === void 0) options = {};
7787
8057
  const { ancestorScroll = true, ancestorResize = true, elementResize = typeof ResizeObserver === "function", layoutShift = typeof IntersectionObserver === "function", animationFrame = false } = options;
7788
8058
  const referenceEl = unwrapElement(reference);
7789
- const ancestors = ancestorScroll || ancestorResize ? [...referenceEl ? getOverflowAncestors(referenceEl) : [], ...getOverflowAncestors(floating)] : [];
8059
+ const ancestors = ancestorScroll || ancestorResize ? [...referenceEl ? getOverflowAncestors(referenceEl) : [], ...floating ? getOverflowAncestors(floating) : []] : [];
7790
8060
  ancestors.forEach((ancestor) => {
7791
8061
  ancestorScroll && ancestor.addEventListener("scroll", update, { passive: true });
7792
8062
  ancestorResize && ancestor.addEventListener("resize", update);
@@ -7797,7 +8067,7 @@ function autoUpdate(reference, floating, update, options) {
7797
8067
  if (elementResize) {
7798
8068
  resizeObserver = new ResizeObserver((_ref) => {
7799
8069
  let [firstEntry] = _ref;
7800
- if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {
8070
+ if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) {
7801
8071
  resizeObserver.unobserve(floating);
7802
8072
  cancelAnimationFrame(reobserveFrame);
7803
8073
  reobserveFrame = requestAnimationFrame(() => {
@@ -7808,7 +8078,7 @@ function autoUpdate(reference, floating, update, options) {
7808
8078
  update();
7809
8079
  });
7810
8080
  if (referenceEl && !animationFrame) resizeObserver.observe(referenceEl);
7811
- resizeObserver.observe(floating);
8081
+ if (floating) resizeObserver.observe(floating);
7812
8082
  }
7813
8083
  let frameId;
7814
8084
  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;
@@ -7885,7 +8155,6 @@ const computePosition = (reference, floating, options) => {
7885
8155
  platform: platformWithCache
7886
8156
  });
7887
8157
  };
7888
-
7889
8158
  //#endregion
7890
8159
  //#region node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs
7891
8160
  var index = typeof document !== "undefined" ? useLayoutEffect : function noop() {};
@@ -8115,50 +8384,69 @@ const arrow$1 = (options) => {
8115
8384
  * object may be passed.
8116
8385
  * @see https://floating-ui.com/docs/offset
8117
8386
  */
8118
- const offset = (options, deps) => ({
8119
- ...offset$1(options),
8120
- options: [options, deps]
8121
- });
8387
+ const offset = (options, deps) => {
8388
+ const result = offset$1(options);
8389
+ return {
8390
+ name: result.name,
8391
+ fn: result.fn,
8392
+ options: [options, deps]
8393
+ };
8394
+ };
8122
8395
  /**
8123
8396
  * Optimizes the visibility of the floating element by shifting it in order to
8124
8397
  * keep it in view when it will overflow the clipping boundary.
8125
8398
  * @see https://floating-ui.com/docs/shift
8126
8399
  */
8127
- const shift = (options, deps) => ({
8128
- ...shift$1(options),
8129
- options: [options, deps]
8130
- });
8400
+ const shift = (options, deps) => {
8401
+ const result = shift$1(options);
8402
+ return {
8403
+ name: result.name,
8404
+ fn: result.fn,
8405
+ options: [options, deps]
8406
+ };
8407
+ };
8131
8408
  /**
8132
8409
  * Optimizes the visibility of the floating element by flipping the `placement`
8133
8410
  * in order to keep it in view when the preferred placement(s) will overflow the
8134
8411
  * clipping boundary. Alternative to `autoPlacement`.
8135
8412
  * @see https://floating-ui.com/docs/flip
8136
8413
  */
8137
- const flip = (options, deps) => ({
8138
- ...flip$1(options),
8139
- options: [options, deps]
8140
- });
8414
+ const flip = (options, deps) => {
8415
+ const result = flip$1(options);
8416
+ return {
8417
+ name: result.name,
8418
+ fn: result.fn,
8419
+ options: [options, deps]
8420
+ };
8421
+ };
8141
8422
  /**
8142
8423
  * Provides data that allows you to change the size of the floating element —
8143
8424
  * for instance, prevent it from overflowing the clipping boundary or match the
8144
8425
  * width of the reference element.
8145
8426
  * @see https://floating-ui.com/docs/size
8146
8427
  */
8147
- const size = (options, deps) => ({
8148
- ...size$1(options),
8149
- options: [options, deps]
8150
- });
8428
+ const size = (options, deps) => {
8429
+ const result = size$1(options);
8430
+ return {
8431
+ name: result.name,
8432
+ fn: result.fn,
8433
+ options: [options, deps]
8434
+ };
8435
+ };
8151
8436
  /**
8152
8437
  * Provides data to position an inner element of the floating element so that it
8153
8438
  * appears centered to the reference element.
8154
8439
  * This wraps the core `arrow` middleware to allow React refs as the element.
8155
8440
  * @see https://floating-ui.com/docs/arrow
8156
8441
  */
8157
- const arrow = (options, deps) => ({
8158
- ...arrow$1(options),
8159
- options: [options, deps]
8160
- });
8161
-
8442
+ const arrow = (options, deps) => {
8443
+ const result = arrow$1(options);
8444
+ return {
8445
+ name: result.name,
8446
+ fn: result.fn,
8447
+ options: [options, deps]
8448
+ };
8449
+ };
8162
8450
  //#endregion
8163
8451
  //#region src/components/tooltip.tsx
8164
8452
  const defaultTooltipContext = {
@@ -8453,6 +8741,5 @@ function ArrowSvg({ className, ...props }) {
8453
8741
  ]
8454
8742
  });
8455
8743
  }
8456
-
8457
8744
  //#endregion
8458
- export { Anchor, Button, Checkbox, Details, DetailsBody, DetailsSummary, DropDown, DropDownButton, DropDownItem, DropDownItems, DropDownSection, DropDownSeparator, Fieldset, Form, Ghost, Heading, HumanVerification, IFrame, Input, Link, Modal, ModalClose, ModalDialog, ModalTitle, ModalTrigger, Select, SelectOption, SelectSectionTitle, SubmitButton, Textarea, Time, Tooltip, TooltipPanel, TooltipTrigger, generateHumanValidationToken, getLinkClasses, validateHuman };
8745
+ export { Anchor, Button, Checkbox, Details, DetailsBody, DetailsSummary, DropDown, DropDownButton, DropDownItem, DropDownItems, DropDownSection, DropDownSeparator, Fieldset, Form, Ghost, Heading, HumanVerification, IFrame, Input, Link, Modal, ModalClose, ModalDialog, ModalTitle, ModalTrigger, Select, SelectOption, SelectSectionTitle, SubmitButton, Textarea, Time, Tooltip, TooltipPanel, TooltipTrigger, generateHumanValidationToken, getLinkClasses, validateHuman };