@codapet/design-system 0.4.0 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +50 -6
- package/dist/index.mjs +866 -308
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1886,6 +1886,7 @@ function ContextMenuShortcut({
|
|
|
1886
1886
|
|
|
1887
1887
|
// src/components/ui/date-input.tsx
|
|
1888
1888
|
import "class-variance-authority";
|
|
1889
|
+
import { format as dateFnsFormat, parse as dateFnsParse, isValid } from "date-fns";
|
|
1889
1890
|
import { CalendarDays } from "lucide-react";
|
|
1890
1891
|
import * as React20 from "react";
|
|
1891
1892
|
|
|
@@ -2063,6 +2064,26 @@ function PopoverAnchor({
|
|
|
2063
2064
|
|
|
2064
2065
|
// src/components/ui/date-input.tsx
|
|
2065
2066
|
import { jsx as jsx22, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
2067
|
+
var DATE_FORMAT_TOKENS = {
|
|
2068
|
+
"MM/DD/YYYY": "MM/dd/yyyy",
|
|
2069
|
+
"DD/MM/YYYY": "dd/MM/yyyy",
|
|
2070
|
+
"YYYY-MM-DD": "yyyy-MM-dd",
|
|
2071
|
+
"DD-MM-YYYY": "dd-MM-yyyy",
|
|
2072
|
+
"MM-DD-YYYY": "MM-dd-yyyy",
|
|
2073
|
+
"DD.MM.YYYY": "dd.MM.yyyy",
|
|
2074
|
+
"MMMM D, YYYY": "MMMM d, yyyy",
|
|
2075
|
+
"D MMMM YYYY": "d MMMM yyyy"
|
|
2076
|
+
};
|
|
2077
|
+
var DATE_FORMAT_PLACEHOLDER = {
|
|
2078
|
+
"MM/DD/YYYY": "mm/dd/yyyy",
|
|
2079
|
+
"DD/MM/YYYY": "dd/mm/yyyy",
|
|
2080
|
+
"YYYY-MM-DD": "yyyy-mm-dd",
|
|
2081
|
+
"DD-MM-YYYY": "dd-mm-yyyy",
|
|
2082
|
+
"MM-DD-YYYY": "mm-dd-yyyy",
|
|
2083
|
+
"DD.MM.YYYY": "dd.mm.yyyy",
|
|
2084
|
+
"MMMM D, YYYY": "Month d, yyyy",
|
|
2085
|
+
"D MMMM YYYY": "d Month yyyy"
|
|
2086
|
+
};
|
|
2066
2087
|
var INPUT_PROP_KEYS = /* @__PURE__ */ new Set([
|
|
2067
2088
|
"accept",
|
|
2068
2089
|
"alt",
|
|
@@ -2122,21 +2143,16 @@ var INPUT_PROP_KEYS = /* @__PURE__ */ new Set([
|
|
|
2122
2143
|
"onCompositionStart",
|
|
2123
2144
|
"onCompositionUpdate"
|
|
2124
2145
|
]);
|
|
2125
|
-
function formatDate(date) {
|
|
2126
|
-
if (!date) {
|
|
2146
|
+
function formatDate(date, dateFormat = "MM/DD/YYYY") {
|
|
2147
|
+
if (!date || !isValid(date)) {
|
|
2127
2148
|
return "";
|
|
2128
2149
|
}
|
|
2129
|
-
return date
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
function isValidDate(date) {
|
|
2136
|
-
if (!date) {
|
|
2137
|
-
return false;
|
|
2138
|
-
}
|
|
2139
|
-
return !isNaN(date.getTime());
|
|
2150
|
+
return dateFnsFormat(date, DATE_FORMAT_TOKENS[dateFormat]);
|
|
2151
|
+
}
|
|
2152
|
+
function parseDate(value, dateFormat = "MM/DD/YYYY") {
|
|
2153
|
+
if (!value) return null;
|
|
2154
|
+
const parsed = dateFnsParse(value, DATE_FORMAT_TOKENS[dateFormat], /* @__PURE__ */ new Date());
|
|
2155
|
+
return isValid(parsed) ? parsed : null;
|
|
2140
2156
|
}
|
|
2141
2157
|
function DateInput({
|
|
2142
2158
|
date,
|
|
@@ -2148,6 +2164,7 @@ function DateInput({
|
|
|
2148
2164
|
inputClassName,
|
|
2149
2165
|
calendarClassName,
|
|
2150
2166
|
inputDisabled,
|
|
2167
|
+
dateFormat = "MM/DD/YYYY",
|
|
2151
2168
|
mode,
|
|
2152
2169
|
selected,
|
|
2153
2170
|
onSelect,
|
|
@@ -2157,13 +2174,14 @@ function DateInput({
|
|
|
2157
2174
|
captionLayout = "dropdown",
|
|
2158
2175
|
showOutsideDays = false,
|
|
2159
2176
|
classNames,
|
|
2160
|
-
placeholder
|
|
2177
|
+
placeholder,
|
|
2161
2178
|
onBlur,
|
|
2162
2179
|
...restProps
|
|
2163
2180
|
}) {
|
|
2181
|
+
const resolvedPlaceholder = placeholder ?? DATE_FORMAT_PLACEHOLDER[dateFormat];
|
|
2164
2182
|
const [open, setOpen] = React20.useState(false);
|
|
2165
2183
|
const [monthState, setMonthState] = React20.useState(date ?? null);
|
|
2166
|
-
const [value, setValue] = React20.useState(formatDate(date ?? null));
|
|
2184
|
+
const [value, setValue] = React20.useState(formatDate(date ?? null, dateFormat));
|
|
2167
2185
|
const [inputProps, calendarProps] = React20.useMemo(() => {
|
|
2168
2186
|
const nextInputProps = {};
|
|
2169
2187
|
const nextCalendarProps = {};
|
|
@@ -2211,10 +2229,10 @@ function DateInput({
|
|
|
2211
2229
|
}, [minDate]);
|
|
2212
2230
|
React20.useEffect(() => {
|
|
2213
2231
|
if (date) {
|
|
2214
|
-
setValue(formatDate(date));
|
|
2232
|
+
setValue(formatDate(date, dateFormat));
|
|
2215
2233
|
setMonthState(date);
|
|
2216
2234
|
}
|
|
2217
|
-
}, [date]);
|
|
2235
|
+
}, [date, dateFormat]);
|
|
2218
2236
|
const effectiveMonth = month ?? monthState ?? void 0;
|
|
2219
2237
|
const effectiveSelected = selected ?? date ?? void 0;
|
|
2220
2238
|
const isInputDisabled = inputDisabled ?? (typeof calendarDisabled === "boolean" ? calendarDisabled : false);
|
|
@@ -2226,7 +2244,7 @@ function DateInput({
|
|
|
2226
2244
|
const isBeforeMax = !effectiveMaxDate || dateObj <= effectiveMaxDate;
|
|
2227
2245
|
if (isAfterMin && isBeforeMax) {
|
|
2228
2246
|
setDate(selectedDate);
|
|
2229
|
-
setValue(formatDate(selectedDate));
|
|
2247
|
+
setValue(formatDate(selectedDate, dateFormat));
|
|
2230
2248
|
setOpen(false);
|
|
2231
2249
|
}
|
|
2232
2250
|
}
|
|
@@ -2257,8 +2275,8 @@ function DateInput({
|
|
|
2257
2275
|
const handleInputChange = (e) => {
|
|
2258
2276
|
const inputValue = e.target.value;
|
|
2259
2277
|
setValue(inputValue);
|
|
2260
|
-
const parsedDate =
|
|
2261
|
-
if (
|
|
2278
|
+
const parsedDate = parseDate(inputValue, dateFormat);
|
|
2279
|
+
if (parsedDate) {
|
|
2262
2280
|
const selectedDate = new Date(parsedDate);
|
|
2263
2281
|
selectedDate.setHours(0, 0, 0, 0);
|
|
2264
2282
|
const isAfterMin = !effectiveMinDate || selectedDate >= effectiveMinDate;
|
|
@@ -2281,16 +2299,16 @@ function DateInput({
|
|
|
2281
2299
|
}
|
|
2282
2300
|
return;
|
|
2283
2301
|
}
|
|
2284
|
-
const parsedDate =
|
|
2285
|
-
if (!
|
|
2286
|
-
setValue(formatDate(date));
|
|
2302
|
+
const parsedDate = parseDate(value, dateFormat);
|
|
2303
|
+
if (!parsedDate) {
|
|
2304
|
+
setValue(formatDate(date, dateFormat));
|
|
2287
2305
|
} else {
|
|
2288
2306
|
const selectedDate = new Date(parsedDate);
|
|
2289
2307
|
selectedDate.setHours(0, 0, 0, 0);
|
|
2290
2308
|
const isAfterMin = !effectiveMinDate || selectedDate >= effectiveMinDate;
|
|
2291
2309
|
const isBeforeMax = !effectiveMaxDate || selectedDate <= effectiveMaxDate;
|
|
2292
2310
|
if (!isAfterMin || !isBeforeMax) {
|
|
2293
|
-
setValue(formatDate(date));
|
|
2311
|
+
setValue(formatDate(date, dateFormat));
|
|
2294
2312
|
}
|
|
2295
2313
|
}
|
|
2296
2314
|
};
|
|
@@ -2300,7 +2318,7 @@ function DateInput({
|
|
|
2300
2318
|
{
|
|
2301
2319
|
id: "date",
|
|
2302
2320
|
value,
|
|
2303
|
-
placeholder,
|
|
2321
|
+
placeholder: resolvedPlaceholder,
|
|
2304
2322
|
className: cn("bg-background cursor-pointer", inputClassName),
|
|
2305
2323
|
onChange: handleInputChange,
|
|
2306
2324
|
onBlur: handleBlur,
|
|
@@ -2331,35 +2349,354 @@ function DateInput({
|
|
|
2331
2349
|
] }) });
|
|
2332
2350
|
}
|
|
2333
2351
|
|
|
2352
|
+
// src/components/ui/date-range-input.tsx
|
|
2353
|
+
import "class-variance-authority";
|
|
2354
|
+
import { format as dateFnsFormat2, parse as dateFnsParse2, isValid as isValid2 } from "date-fns";
|
|
2355
|
+
import { CalendarDays as CalendarDays2 } from "lucide-react";
|
|
2356
|
+
import * as React21 from "react";
|
|
2357
|
+
import { jsx as jsx23, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
2358
|
+
var DATE_FORMAT_TOKENS2 = {
|
|
2359
|
+
"MM/DD/YYYY": "MM/dd/yyyy",
|
|
2360
|
+
"DD/MM/YYYY": "dd/MM/yyyy",
|
|
2361
|
+
"YYYY-MM-DD": "yyyy-MM-dd",
|
|
2362
|
+
"DD-MM-YYYY": "dd-MM-yyyy",
|
|
2363
|
+
"MM-DD-YYYY": "MM-dd-yyyy",
|
|
2364
|
+
"DD.MM.YYYY": "dd.MM.yyyy",
|
|
2365
|
+
"MMMM D, YYYY": "MMMM d, yyyy",
|
|
2366
|
+
"D MMMM YYYY": "d MMMM yyyy"
|
|
2367
|
+
};
|
|
2368
|
+
var DATE_FORMAT_PLACEHOLDER2 = {
|
|
2369
|
+
"MM/DD/YYYY": "mm/dd/yyyy",
|
|
2370
|
+
"DD/MM/YYYY": "dd/mm/yyyy",
|
|
2371
|
+
"YYYY-MM-DD": "yyyy-mm-dd",
|
|
2372
|
+
"DD-MM-YYYY": "dd-mm-yyyy",
|
|
2373
|
+
"MM-DD-YYYY": "mm-dd-yyyy",
|
|
2374
|
+
"DD.MM.YYYY": "dd.mm.yyyy",
|
|
2375
|
+
"MMMM D, YYYY": "Month d, yyyy",
|
|
2376
|
+
"D MMMM YYYY": "d Month yyyy"
|
|
2377
|
+
};
|
|
2378
|
+
var INPUT_PROP_KEYS2 = /* @__PURE__ */ new Set([
|
|
2379
|
+
"accept",
|
|
2380
|
+
"alt",
|
|
2381
|
+
"autoComplete",
|
|
2382
|
+
"autoFocus",
|
|
2383
|
+
"capture",
|
|
2384
|
+
"checked",
|
|
2385
|
+
"dirName",
|
|
2386
|
+
"form",
|
|
2387
|
+
"formAction",
|
|
2388
|
+
"formEncType",
|
|
2389
|
+
"formMethod",
|
|
2390
|
+
"formNoValidate",
|
|
2391
|
+
"formTarget",
|
|
2392
|
+
"height",
|
|
2393
|
+
"list",
|
|
2394
|
+
"maxLength",
|
|
2395
|
+
"minLength",
|
|
2396
|
+
"multiple",
|
|
2397
|
+
"name",
|
|
2398
|
+
"pattern",
|
|
2399
|
+
"readOnly",
|
|
2400
|
+
"required",
|
|
2401
|
+
"size",
|
|
2402
|
+
"src",
|
|
2403
|
+
"step",
|
|
2404
|
+
"type",
|
|
2405
|
+
"width",
|
|
2406
|
+
"id",
|
|
2407
|
+
"inputMode",
|
|
2408
|
+
"lang",
|
|
2409
|
+
"tabIndex",
|
|
2410
|
+
"title",
|
|
2411
|
+
"role",
|
|
2412
|
+
"style",
|
|
2413
|
+
"onFocus",
|
|
2414
|
+
"onFocusCapture",
|
|
2415
|
+
"onBlurCapture",
|
|
2416
|
+
"onInput",
|
|
2417
|
+
"onInvalid",
|
|
2418
|
+
"onKeyDownCapture",
|
|
2419
|
+
"onKeyPress",
|
|
2420
|
+
"onKeyPressCapture",
|
|
2421
|
+
"onKeyUp",
|
|
2422
|
+
"onKeyUpCapture",
|
|
2423
|
+
"onPaste",
|
|
2424
|
+
"onPasteCapture",
|
|
2425
|
+
"onPointerDown",
|
|
2426
|
+
"onPointerDownCapture",
|
|
2427
|
+
"onPointerUp",
|
|
2428
|
+
"onPointerUpCapture",
|
|
2429
|
+
"onMouseDown",
|
|
2430
|
+
"onMouseDownCapture",
|
|
2431
|
+
"onMouseUp",
|
|
2432
|
+
"onMouseUpCapture",
|
|
2433
|
+
"onCompositionEnd",
|
|
2434
|
+
"onCompositionStart",
|
|
2435
|
+
"onCompositionUpdate"
|
|
2436
|
+
]);
|
|
2437
|
+
function formatDate2(date, dateFormat = "MM/DD/YYYY") {
|
|
2438
|
+
if (!date || !isValid2(date)) {
|
|
2439
|
+
return "";
|
|
2440
|
+
}
|
|
2441
|
+
return dateFnsFormat2(date, DATE_FORMAT_TOKENS2[dateFormat]);
|
|
2442
|
+
}
|
|
2443
|
+
function formatRange(range, dateFormat = "MM/DD/YYYY") {
|
|
2444
|
+
if (!range) return "";
|
|
2445
|
+
const from = formatDate2(range.from, dateFormat);
|
|
2446
|
+
const to = formatDate2(range.to, dateFormat);
|
|
2447
|
+
if (from && to) return `${from} \u2013 ${to}`;
|
|
2448
|
+
if (from) return `${from} \u2013`;
|
|
2449
|
+
return "";
|
|
2450
|
+
}
|
|
2451
|
+
function parseRange(value, dateFormat = "MM/DD/YYYY") {
|
|
2452
|
+
if (!value) return null;
|
|
2453
|
+
const parts = value.split(/\s*[\u2013\-]\s*/);
|
|
2454
|
+
const fromStr = parts[0]?.trim();
|
|
2455
|
+
if (!fromStr) return null;
|
|
2456
|
+
const fromParsed = dateFnsParse2(fromStr, DATE_FORMAT_TOKENS2[dateFormat], /* @__PURE__ */ new Date());
|
|
2457
|
+
if (!isValid2(fromParsed)) return null;
|
|
2458
|
+
const toStr = parts[1]?.trim();
|
|
2459
|
+
if (!toStr) return { from: fromParsed, to: void 0 };
|
|
2460
|
+
const toParsed = dateFnsParse2(toStr, DATE_FORMAT_TOKENS2[dateFormat], /* @__PURE__ */ new Date());
|
|
2461
|
+
if (!isValid2(toParsed)) return { from: fromParsed, to: void 0 };
|
|
2462
|
+
return { from: fromParsed, to: toParsed };
|
|
2463
|
+
}
|
|
2464
|
+
function rangePlaceholder(dateFormat) {
|
|
2465
|
+
const p = DATE_FORMAT_PLACEHOLDER2[dateFormat];
|
|
2466
|
+
return `${p} \u2013 ${p}`;
|
|
2467
|
+
}
|
|
2468
|
+
function DateRangeInput({
|
|
2469
|
+
dateRange,
|
|
2470
|
+
setDateRange,
|
|
2471
|
+
maxDate,
|
|
2472
|
+
minDate,
|
|
2473
|
+
disableFuture = true,
|
|
2474
|
+
className,
|
|
2475
|
+
inputClassName,
|
|
2476
|
+
calendarClassName,
|
|
2477
|
+
inputDisabled,
|
|
2478
|
+
dateFormat = "MM/DD/YYYY",
|
|
2479
|
+
selected,
|
|
2480
|
+
onSelect,
|
|
2481
|
+
month,
|
|
2482
|
+
onMonthChange,
|
|
2483
|
+
disabled: calendarDisabled,
|
|
2484
|
+
captionLayout = "dropdown",
|
|
2485
|
+
showOutsideDays = false,
|
|
2486
|
+
classNames,
|
|
2487
|
+
placeholder,
|
|
2488
|
+
onBlur,
|
|
2489
|
+
...restProps
|
|
2490
|
+
}) {
|
|
2491
|
+
const resolvedPlaceholder = placeholder ?? rangePlaceholder(dateFormat);
|
|
2492
|
+
const [open, setOpen] = React21.useState(false);
|
|
2493
|
+
const [monthState, setMonthState] = React21.useState(
|
|
2494
|
+
dateRange?.from ?? null
|
|
2495
|
+
);
|
|
2496
|
+
const [value, setValue] = React21.useState(formatRange(dateRange, dateFormat));
|
|
2497
|
+
const [inputProps, calendarProps] = React21.useMemo(() => {
|
|
2498
|
+
const nextInputProps = {};
|
|
2499
|
+
const nextCalendarProps = {};
|
|
2500
|
+
for (const [key, val] of Object.entries(restProps)) {
|
|
2501
|
+
const isInputProp = INPUT_PROP_KEYS2.has(key) || key.startsWith("aria-") || key.startsWith("data-");
|
|
2502
|
+
if (isInputProp) {
|
|
2503
|
+
nextInputProps[key] = val;
|
|
2504
|
+
} else {
|
|
2505
|
+
nextCalendarProps[key] = val;
|
|
2506
|
+
}
|
|
2507
|
+
}
|
|
2508
|
+
return [
|
|
2509
|
+
nextInputProps,
|
|
2510
|
+
nextCalendarProps
|
|
2511
|
+
];
|
|
2512
|
+
}, [restProps]);
|
|
2513
|
+
const today = React21.useMemo(() => {
|
|
2514
|
+
const d = /* @__PURE__ */ new Date();
|
|
2515
|
+
d.setHours(0, 0, 0, 0);
|
|
2516
|
+
return d;
|
|
2517
|
+
}, []);
|
|
2518
|
+
const effectiveMaxDate = React21.useMemo(() => {
|
|
2519
|
+
if (disableFuture) {
|
|
2520
|
+
if (maxDate) {
|
|
2521
|
+
const max = new Date(maxDate);
|
|
2522
|
+
max.setHours(0, 0, 0, 0);
|
|
2523
|
+
return max < today ? max : today;
|
|
2524
|
+
}
|
|
2525
|
+
return today;
|
|
2526
|
+
}
|
|
2527
|
+
if (maxDate) {
|
|
2528
|
+
const max = new Date(maxDate);
|
|
2529
|
+
max.setHours(0, 0, 0, 0);
|
|
2530
|
+
return max;
|
|
2531
|
+
}
|
|
2532
|
+
return void 0;
|
|
2533
|
+
}, [maxDate, disableFuture, today]);
|
|
2534
|
+
const effectiveMinDate = React21.useMemo(() => {
|
|
2535
|
+
if (minDate) {
|
|
2536
|
+
const min = new Date(minDate);
|
|
2537
|
+
min.setHours(0, 0, 0, 0);
|
|
2538
|
+
return min;
|
|
2539
|
+
}
|
|
2540
|
+
return null;
|
|
2541
|
+
}, [minDate]);
|
|
2542
|
+
React21.useEffect(() => {
|
|
2543
|
+
setValue(formatRange(dateRange, dateFormat));
|
|
2544
|
+
if (dateRange?.from) {
|
|
2545
|
+
setMonthState(dateRange.from);
|
|
2546
|
+
}
|
|
2547
|
+
}, [dateRange, dateFormat]);
|
|
2548
|
+
const effectiveMonth = month ?? monthState ?? void 0;
|
|
2549
|
+
const effectiveSelected = selected ?? dateRange;
|
|
2550
|
+
const isInputDisabled = inputDisabled ?? (typeof calendarDisabled === "boolean" ? calendarDisabled : false);
|
|
2551
|
+
const isWithinBounds = (d) => {
|
|
2552
|
+
const isAfterMin = !effectiveMinDate || d >= effectiveMinDate;
|
|
2553
|
+
const isBeforeMax = !effectiveMaxDate || d <= effectiveMaxDate;
|
|
2554
|
+
return isAfterMin && isBeforeMax;
|
|
2555
|
+
};
|
|
2556
|
+
const defaultCalendarDisabled = (date) => {
|
|
2557
|
+
const checkDate = new Date(date);
|
|
2558
|
+
checkDate.setHours(0, 0, 0, 0);
|
|
2559
|
+
return !isWithinBounds(checkDate);
|
|
2560
|
+
};
|
|
2561
|
+
const handleCalendarSelect = (range) => {
|
|
2562
|
+
if (onSelect) {
|
|
2563
|
+
onSelect(range);
|
|
2564
|
+
return;
|
|
2565
|
+
}
|
|
2566
|
+
setDateRange(range);
|
|
2567
|
+
};
|
|
2568
|
+
const resolvedCalendarProps = {
|
|
2569
|
+
...calendarProps,
|
|
2570
|
+
mode: "range",
|
|
2571
|
+
selected: effectiveSelected,
|
|
2572
|
+
captionLayout,
|
|
2573
|
+
month: effectiveMonth,
|
|
2574
|
+
onMonthChange: onMonthChange ?? setMonthState,
|
|
2575
|
+
showOutsideDays,
|
|
2576
|
+
className: cn(
|
|
2577
|
+
"md:w-auto w-[calc(100vw-50px)] mx-auto h-[350px] overflow-y-auto md:h-auto m-2",
|
|
2578
|
+
calendarClassName
|
|
2579
|
+
),
|
|
2580
|
+
classNames,
|
|
2581
|
+
onSelect: handleCalendarSelect,
|
|
2582
|
+
disabled: calendarDisabled ?? defaultCalendarDisabled
|
|
2583
|
+
};
|
|
2584
|
+
const handleInputChange = (e) => {
|
|
2585
|
+
const inputValue = e.target.value;
|
|
2586
|
+
setValue(inputValue);
|
|
2587
|
+
if (inputValue === "") {
|
|
2588
|
+
setDateRange(void 0);
|
|
2589
|
+
return;
|
|
2590
|
+
}
|
|
2591
|
+
const parsed = parseRange(inputValue, dateFormat);
|
|
2592
|
+
if (!parsed || !parsed.from) return;
|
|
2593
|
+
const from = new Date(parsed.from);
|
|
2594
|
+
from.setHours(0, 0, 0, 0);
|
|
2595
|
+
if (!isWithinBounds(from)) return;
|
|
2596
|
+
if (parsed.to) {
|
|
2597
|
+
const to = new Date(parsed.to);
|
|
2598
|
+
to.setHours(0, 0, 0, 0);
|
|
2599
|
+
if (isWithinBounds(to) && from <= to) {
|
|
2600
|
+
setDateRange(parsed);
|
|
2601
|
+
setMonthState(from);
|
|
2602
|
+
}
|
|
2603
|
+
} else {
|
|
2604
|
+
setDateRange({ from: parsed.from, to: void 0 });
|
|
2605
|
+
setMonthState(from);
|
|
2606
|
+
}
|
|
2607
|
+
};
|
|
2608
|
+
const handleBlur = (e) => {
|
|
2609
|
+
onBlur?.(e);
|
|
2610
|
+
if (value === "") {
|
|
2611
|
+
if (dateRange !== void 0) {
|
|
2612
|
+
setDateRange(void 0);
|
|
2613
|
+
}
|
|
2614
|
+
return;
|
|
2615
|
+
}
|
|
2616
|
+
const parsed = parseRange(value, dateFormat);
|
|
2617
|
+
if (!parsed || !parsed.from) {
|
|
2618
|
+
setValue(formatRange(dateRange, dateFormat));
|
|
2619
|
+
return;
|
|
2620
|
+
}
|
|
2621
|
+
const from = new Date(parsed.from);
|
|
2622
|
+
from.setHours(0, 0, 0, 0);
|
|
2623
|
+
if (!isWithinBounds(from)) {
|
|
2624
|
+
setValue(formatRange(dateRange, dateFormat));
|
|
2625
|
+
return;
|
|
2626
|
+
}
|
|
2627
|
+
if (parsed.to) {
|
|
2628
|
+
const to = new Date(parsed.to);
|
|
2629
|
+
to.setHours(0, 0, 0, 0);
|
|
2630
|
+
if (!isWithinBounds(to) || from > to) {
|
|
2631
|
+
setValue(formatRange(dateRange, dateFormat));
|
|
2632
|
+
}
|
|
2633
|
+
}
|
|
2634
|
+
};
|
|
2635
|
+
return /* @__PURE__ */ jsx23("div", { className: cn("relative flex gap-2", className), children: /* @__PURE__ */ jsxs11(Popover, { open, onOpenChange: setOpen, children: [
|
|
2636
|
+
/* @__PURE__ */ jsx23(PopoverTrigger, { asChild: true, disabled: isInputDisabled, children: /* @__PURE__ */ jsx23("div", { className: "w-full relative", children: /* @__PURE__ */ jsx23(
|
|
2637
|
+
Input,
|
|
2638
|
+
{
|
|
2639
|
+
value,
|
|
2640
|
+
placeholder: resolvedPlaceholder,
|
|
2641
|
+
className: cn("bg-background cursor-pointer", inputClassName),
|
|
2642
|
+
onChange: handleInputChange,
|
|
2643
|
+
onBlur: handleBlur,
|
|
2644
|
+
disabled: isInputDisabled,
|
|
2645
|
+
onKeyDown: (e) => {
|
|
2646
|
+
if (e.key === "ArrowDown" && !isInputDisabled) {
|
|
2647
|
+
e.preventDefault();
|
|
2648
|
+
setOpen(true);
|
|
2649
|
+
}
|
|
2650
|
+
},
|
|
2651
|
+
rightIcon: /* @__PURE__ */ jsx23(CalendarDays2, { className: "h-4 w-4 text-muted-foreground" }),
|
|
2652
|
+
rightIconOnClick: isInputDisabled ? void 0 : () => setOpen(!open),
|
|
2653
|
+
rightIconButtonProps: { disabled: isInputDisabled },
|
|
2654
|
+
...inputProps
|
|
2655
|
+
}
|
|
2656
|
+
) }) }),
|
|
2657
|
+
/* @__PURE__ */ jsx23(
|
|
2658
|
+
PopoverContent,
|
|
2659
|
+
{
|
|
2660
|
+
className: "w-auto overflow-hidden p-0",
|
|
2661
|
+
align: "end",
|
|
2662
|
+
alignOffset: -8,
|
|
2663
|
+
sideOffset: 10,
|
|
2664
|
+
side: "top",
|
|
2665
|
+
children: /* @__PURE__ */ jsx23(Calendar, { ...resolvedCalendarProps })
|
|
2666
|
+
}
|
|
2667
|
+
)
|
|
2668
|
+
] }) });
|
|
2669
|
+
}
|
|
2670
|
+
|
|
2334
2671
|
// src/components/ui/drawer.tsx
|
|
2335
2672
|
import "react";
|
|
2336
2673
|
import { Drawer as DrawerPrimitive } from "vaul";
|
|
2337
|
-
import { jsx as
|
|
2674
|
+
import { jsx as jsx24, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
2338
2675
|
function Drawer({
|
|
2339
2676
|
...props
|
|
2340
2677
|
}) {
|
|
2341
|
-
return /* @__PURE__ */
|
|
2678
|
+
return /* @__PURE__ */ jsx24(DrawerPrimitive.Root, { "data-slot": "drawer", ...props, repositionInputs: false });
|
|
2342
2679
|
}
|
|
2343
2680
|
function DrawerTrigger({
|
|
2344
2681
|
...props
|
|
2345
2682
|
}) {
|
|
2346
|
-
return /* @__PURE__ */
|
|
2683
|
+
return /* @__PURE__ */ jsx24(DrawerPrimitive.Trigger, { "data-slot": "drawer-trigger", ...props });
|
|
2347
2684
|
}
|
|
2348
2685
|
function DrawerPortal({
|
|
2349
2686
|
...props
|
|
2350
2687
|
}) {
|
|
2351
|
-
return /* @__PURE__ */
|
|
2688
|
+
return /* @__PURE__ */ jsx24(DrawerPrimitive.Portal, { "data-slot": "drawer-portal", ...props });
|
|
2352
2689
|
}
|
|
2353
2690
|
function DrawerClose({
|
|
2354
2691
|
...props
|
|
2355
2692
|
}) {
|
|
2356
|
-
return /* @__PURE__ */
|
|
2693
|
+
return /* @__PURE__ */ jsx24(DrawerPrimitive.Close, { "data-slot": "drawer-close", ...props });
|
|
2357
2694
|
}
|
|
2358
2695
|
function DrawerOverlay({
|
|
2359
2696
|
className,
|
|
2360
2697
|
...props
|
|
2361
2698
|
}) {
|
|
2362
|
-
return /* @__PURE__ */
|
|
2699
|
+
return /* @__PURE__ */ jsx24(
|
|
2363
2700
|
DrawerPrimitive.Overlay,
|
|
2364
2701
|
{
|
|
2365
2702
|
"data-slot": "drawer-overlay",
|
|
@@ -2377,9 +2714,9 @@ function DrawerContent({
|
|
|
2377
2714
|
withCloseButton = true,
|
|
2378
2715
|
...props
|
|
2379
2716
|
}) {
|
|
2380
|
-
return /* @__PURE__ */
|
|
2381
|
-
/* @__PURE__ */
|
|
2382
|
-
/* @__PURE__ */
|
|
2717
|
+
return /* @__PURE__ */ jsxs12(DrawerPortal, { "data-slot": "drawer-portal", children: [
|
|
2718
|
+
/* @__PURE__ */ jsx24(DrawerOverlay, {}),
|
|
2719
|
+
/* @__PURE__ */ jsxs12(
|
|
2383
2720
|
DrawerPrimitive.Content,
|
|
2384
2721
|
{
|
|
2385
2722
|
"data-slot": "drawer-content",
|
|
@@ -2393,7 +2730,7 @@ function DrawerContent({
|
|
|
2393
2730
|
),
|
|
2394
2731
|
...props,
|
|
2395
2732
|
children: [
|
|
2396
|
-
withCloseButton && /* @__PURE__ */
|
|
2733
|
+
withCloseButton && /* @__PURE__ */ jsx24("div", { className: "bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block" }),
|
|
2397
2734
|
children
|
|
2398
2735
|
]
|
|
2399
2736
|
}
|
|
@@ -2401,7 +2738,7 @@ function DrawerContent({
|
|
|
2401
2738
|
] });
|
|
2402
2739
|
}
|
|
2403
2740
|
function DrawerHeader({ className, ...props }) {
|
|
2404
|
-
return /* @__PURE__ */
|
|
2741
|
+
return /* @__PURE__ */ jsx24(
|
|
2405
2742
|
"div",
|
|
2406
2743
|
{
|
|
2407
2744
|
"data-slot": "drawer-header",
|
|
@@ -2414,7 +2751,7 @@ function DrawerHeader({ className, ...props }) {
|
|
|
2414
2751
|
);
|
|
2415
2752
|
}
|
|
2416
2753
|
function DrawerFooter({ className, ...props }) {
|
|
2417
|
-
return /* @__PURE__ */
|
|
2754
|
+
return /* @__PURE__ */ jsx24(
|
|
2418
2755
|
"div",
|
|
2419
2756
|
{
|
|
2420
2757
|
"data-slot": "drawer-footer",
|
|
@@ -2427,7 +2764,7 @@ function DrawerTitle({
|
|
|
2427
2764
|
className,
|
|
2428
2765
|
...props
|
|
2429
2766
|
}) {
|
|
2430
|
-
return /* @__PURE__ */
|
|
2767
|
+
return /* @__PURE__ */ jsx24(
|
|
2431
2768
|
DrawerPrimitive.Title,
|
|
2432
2769
|
{
|
|
2433
2770
|
"data-slot": "drawer-title",
|
|
@@ -2440,7 +2777,7 @@ function DrawerDescription({
|
|
|
2440
2777
|
className,
|
|
2441
2778
|
...props
|
|
2442
2779
|
}) {
|
|
2443
|
-
return /* @__PURE__ */
|
|
2780
|
+
return /* @__PURE__ */ jsx24(
|
|
2444
2781
|
DrawerPrimitive.Description,
|
|
2445
2782
|
{
|
|
2446
2783
|
"data-slot": "drawer-description",
|
|
@@ -2454,21 +2791,21 @@ function DrawerDescription({
|
|
|
2454
2791
|
import "react";
|
|
2455
2792
|
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
2456
2793
|
import { CheckIcon as CheckIcon2, ChevronRightIcon as ChevronRightIcon3, CircleIcon as CircleIcon2 } from "lucide-react";
|
|
2457
|
-
import { jsx as
|
|
2794
|
+
import { jsx as jsx25, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
2458
2795
|
function DropdownMenu({
|
|
2459
2796
|
...props
|
|
2460
2797
|
}) {
|
|
2461
|
-
return /* @__PURE__ */
|
|
2798
|
+
return /* @__PURE__ */ jsx25(DropdownMenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
|
|
2462
2799
|
}
|
|
2463
2800
|
function DropdownMenuPortal({
|
|
2464
2801
|
...props
|
|
2465
2802
|
}) {
|
|
2466
|
-
return /* @__PURE__ */
|
|
2803
|
+
return /* @__PURE__ */ jsx25(DropdownMenuPrimitive.Portal, { "data-slot": "dropdown-menu-portal", ...props });
|
|
2467
2804
|
}
|
|
2468
2805
|
function DropdownMenuTrigger({
|
|
2469
2806
|
...props
|
|
2470
2807
|
}) {
|
|
2471
|
-
return /* @__PURE__ */
|
|
2808
|
+
return /* @__PURE__ */ jsx25(
|
|
2472
2809
|
DropdownMenuPrimitive.Trigger,
|
|
2473
2810
|
{
|
|
2474
2811
|
"data-slot": "dropdown-menu-trigger",
|
|
@@ -2481,7 +2818,7 @@ function DropdownMenuContent({
|
|
|
2481
2818
|
sideOffset = 4,
|
|
2482
2819
|
...props
|
|
2483
2820
|
}) {
|
|
2484
|
-
return /* @__PURE__ */
|
|
2821
|
+
return /* @__PURE__ */ jsx25(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx25(
|
|
2485
2822
|
DropdownMenuPrimitive.Content,
|
|
2486
2823
|
{
|
|
2487
2824
|
"data-slot": "dropdown-menu-content",
|
|
@@ -2497,7 +2834,7 @@ function DropdownMenuContent({
|
|
|
2497
2834
|
function DropdownMenuGroup({
|
|
2498
2835
|
...props
|
|
2499
2836
|
}) {
|
|
2500
|
-
return /* @__PURE__ */
|
|
2837
|
+
return /* @__PURE__ */ jsx25(DropdownMenuPrimitive.Group, { "data-slot": "dropdown-menu-group", ...props });
|
|
2501
2838
|
}
|
|
2502
2839
|
function DropdownMenuItem({
|
|
2503
2840
|
className,
|
|
@@ -2505,7 +2842,7 @@ function DropdownMenuItem({
|
|
|
2505
2842
|
variant = "default",
|
|
2506
2843
|
...props
|
|
2507
2844
|
}) {
|
|
2508
|
-
return /* @__PURE__ */
|
|
2845
|
+
return /* @__PURE__ */ jsx25(
|
|
2509
2846
|
DropdownMenuPrimitive.Item,
|
|
2510
2847
|
{
|
|
2511
2848
|
"data-slot": "dropdown-menu-item",
|
|
@@ -2525,7 +2862,7 @@ function DropdownMenuCheckboxItem({
|
|
|
2525
2862
|
checked,
|
|
2526
2863
|
...props
|
|
2527
2864
|
}) {
|
|
2528
|
-
return /* @__PURE__ */
|
|
2865
|
+
return /* @__PURE__ */ jsxs13(
|
|
2529
2866
|
DropdownMenuPrimitive.CheckboxItem,
|
|
2530
2867
|
{
|
|
2531
2868
|
"data-slot": "dropdown-menu-checkbox-item",
|
|
@@ -2536,7 +2873,7 @@ function DropdownMenuCheckboxItem({
|
|
|
2536
2873
|
checked,
|
|
2537
2874
|
...props,
|
|
2538
2875
|
children: [
|
|
2539
|
-
/* @__PURE__ */
|
|
2876
|
+
/* @__PURE__ */ jsx25("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx25(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx25(CheckIcon2, { className: "size-4" }) }) }),
|
|
2540
2877
|
children
|
|
2541
2878
|
]
|
|
2542
2879
|
}
|
|
@@ -2545,7 +2882,7 @@ function DropdownMenuCheckboxItem({
|
|
|
2545
2882
|
function DropdownMenuRadioGroup({
|
|
2546
2883
|
...props
|
|
2547
2884
|
}) {
|
|
2548
|
-
return /* @__PURE__ */
|
|
2885
|
+
return /* @__PURE__ */ jsx25(
|
|
2549
2886
|
DropdownMenuPrimitive.RadioGroup,
|
|
2550
2887
|
{
|
|
2551
2888
|
"data-slot": "dropdown-menu-radio-group",
|
|
@@ -2558,7 +2895,7 @@ function DropdownMenuRadioItem({
|
|
|
2558
2895
|
children,
|
|
2559
2896
|
...props
|
|
2560
2897
|
}) {
|
|
2561
|
-
return /* @__PURE__ */
|
|
2898
|
+
return /* @__PURE__ */ jsxs13(
|
|
2562
2899
|
DropdownMenuPrimitive.RadioItem,
|
|
2563
2900
|
{
|
|
2564
2901
|
"data-slot": "dropdown-menu-radio-item",
|
|
@@ -2568,7 +2905,7 @@ function DropdownMenuRadioItem({
|
|
|
2568
2905
|
),
|
|
2569
2906
|
...props,
|
|
2570
2907
|
children: [
|
|
2571
|
-
/* @__PURE__ */
|
|
2908
|
+
/* @__PURE__ */ jsx25("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx25(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx25(CircleIcon2, { className: "size-2 fill-current" }) }) }),
|
|
2572
2909
|
children
|
|
2573
2910
|
]
|
|
2574
2911
|
}
|
|
@@ -2579,7 +2916,7 @@ function DropdownMenuLabel({
|
|
|
2579
2916
|
inset,
|
|
2580
2917
|
...props
|
|
2581
2918
|
}) {
|
|
2582
|
-
return /* @__PURE__ */
|
|
2919
|
+
return /* @__PURE__ */ jsx25(
|
|
2583
2920
|
DropdownMenuPrimitive.Label,
|
|
2584
2921
|
{
|
|
2585
2922
|
"data-slot": "dropdown-menu-label",
|
|
@@ -2596,7 +2933,7 @@ function DropdownMenuSeparator({
|
|
|
2596
2933
|
className,
|
|
2597
2934
|
...props
|
|
2598
2935
|
}) {
|
|
2599
|
-
return /* @__PURE__ */
|
|
2936
|
+
return /* @__PURE__ */ jsx25(
|
|
2600
2937
|
DropdownMenuPrimitive.Separator,
|
|
2601
2938
|
{
|
|
2602
2939
|
"data-slot": "dropdown-menu-separator",
|
|
@@ -2609,7 +2946,7 @@ function DropdownMenuShortcut({
|
|
|
2609
2946
|
className,
|
|
2610
2947
|
...props
|
|
2611
2948
|
}) {
|
|
2612
|
-
return /* @__PURE__ */
|
|
2949
|
+
return /* @__PURE__ */ jsx25(
|
|
2613
2950
|
"span",
|
|
2614
2951
|
{
|
|
2615
2952
|
"data-slot": "dropdown-menu-shortcut",
|
|
@@ -2624,7 +2961,7 @@ function DropdownMenuShortcut({
|
|
|
2624
2961
|
function DropdownMenuSub({
|
|
2625
2962
|
...props
|
|
2626
2963
|
}) {
|
|
2627
|
-
return /* @__PURE__ */
|
|
2964
|
+
return /* @__PURE__ */ jsx25(DropdownMenuPrimitive.Sub, { "data-slot": "dropdown-menu-sub", ...props });
|
|
2628
2965
|
}
|
|
2629
2966
|
function DropdownMenuSubTrigger({
|
|
2630
2967
|
className,
|
|
@@ -2632,7 +2969,7 @@ function DropdownMenuSubTrigger({
|
|
|
2632
2969
|
children,
|
|
2633
2970
|
...props
|
|
2634
2971
|
}) {
|
|
2635
|
-
return /* @__PURE__ */
|
|
2972
|
+
return /* @__PURE__ */ jsxs13(
|
|
2636
2973
|
DropdownMenuPrimitive.SubTrigger,
|
|
2637
2974
|
{
|
|
2638
2975
|
"data-slot": "dropdown-menu-sub-trigger",
|
|
@@ -2644,7 +2981,7 @@ function DropdownMenuSubTrigger({
|
|
|
2644
2981
|
...props,
|
|
2645
2982
|
children: [
|
|
2646
2983
|
children,
|
|
2647
|
-
/* @__PURE__ */
|
|
2984
|
+
/* @__PURE__ */ jsx25(ChevronRightIcon3, { className: "ml-auto size-4" })
|
|
2648
2985
|
]
|
|
2649
2986
|
}
|
|
2650
2987
|
);
|
|
@@ -2653,7 +2990,7 @@ function DropdownMenuSubContent({
|
|
|
2653
2990
|
className,
|
|
2654
2991
|
...props
|
|
2655
2992
|
}) {
|
|
2656
|
-
return /* @__PURE__ */
|
|
2993
|
+
return /* @__PURE__ */ jsx25(
|
|
2657
2994
|
DropdownMenuPrimitive.SubContent,
|
|
2658
2995
|
{
|
|
2659
2996
|
"data-slot": "dropdown-menu-sub-content",
|
|
@@ -2667,7 +3004,7 @@ function DropdownMenuSubContent({
|
|
|
2667
3004
|
}
|
|
2668
3005
|
|
|
2669
3006
|
// src/components/ui/form.tsx
|
|
2670
|
-
import * as
|
|
3007
|
+
import * as React25 from "react";
|
|
2671
3008
|
import "@radix-ui/react-label";
|
|
2672
3009
|
import { Slot as Slot5 } from "@radix-ui/react-slot";
|
|
2673
3010
|
import {
|
|
@@ -2681,7 +3018,7 @@ import {
|
|
|
2681
3018
|
import { Slot as Slot4 } from "@radix-ui/react-slot";
|
|
2682
3019
|
import { cva as cva5 } from "class-variance-authority";
|
|
2683
3020
|
import "react";
|
|
2684
|
-
import { jsx as
|
|
3021
|
+
import { jsx as jsx26 } from "react/jsx-runtime";
|
|
2685
3022
|
var labelTextVariants = cva5("font-sans font-semibold ", {
|
|
2686
3023
|
variants: {
|
|
2687
3024
|
size: {
|
|
@@ -2702,7 +3039,7 @@ function Label3({
|
|
|
2702
3039
|
...props
|
|
2703
3040
|
}) {
|
|
2704
3041
|
const Comp = asChild ? Slot4 : "label";
|
|
2705
|
-
return /* @__PURE__ */
|
|
3042
|
+
return /* @__PURE__ */ jsx26(
|
|
2706
3043
|
Comp,
|
|
2707
3044
|
{
|
|
2708
3045
|
"data-slot": "label",
|
|
@@ -2713,19 +3050,19 @@ function Label3({
|
|
|
2713
3050
|
}
|
|
2714
3051
|
|
|
2715
3052
|
// src/components/ui/form.tsx
|
|
2716
|
-
import { jsx as
|
|
3053
|
+
import { jsx as jsx27 } from "react/jsx-runtime";
|
|
2717
3054
|
var Form = FormProvider;
|
|
2718
|
-
var FormFieldContext =
|
|
3055
|
+
var FormFieldContext = React25.createContext(
|
|
2719
3056
|
{}
|
|
2720
3057
|
);
|
|
2721
3058
|
var FormField = ({
|
|
2722
3059
|
...props
|
|
2723
3060
|
}) => {
|
|
2724
|
-
return /* @__PURE__ */
|
|
3061
|
+
return /* @__PURE__ */ jsx27(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx27(Controller, { ...props }) });
|
|
2725
3062
|
};
|
|
2726
3063
|
var useFormField = () => {
|
|
2727
|
-
const fieldContext =
|
|
2728
|
-
const itemContext =
|
|
3064
|
+
const fieldContext = React25.useContext(FormFieldContext);
|
|
3065
|
+
const itemContext = React25.useContext(FormItemContext);
|
|
2729
3066
|
const { getFieldState } = useFormContext();
|
|
2730
3067
|
const formState = useFormState({ name: fieldContext.name });
|
|
2731
3068
|
const fieldState = getFieldState(fieldContext.name, formState);
|
|
@@ -2742,12 +3079,12 @@ var useFormField = () => {
|
|
|
2742
3079
|
...fieldState
|
|
2743
3080
|
};
|
|
2744
3081
|
};
|
|
2745
|
-
var FormItemContext =
|
|
3082
|
+
var FormItemContext = React25.createContext(
|
|
2746
3083
|
{}
|
|
2747
3084
|
);
|
|
2748
3085
|
function FormItem({ className, ...props }) {
|
|
2749
|
-
const id =
|
|
2750
|
-
return /* @__PURE__ */
|
|
3086
|
+
const id = React25.useId();
|
|
3087
|
+
return /* @__PURE__ */ jsx27(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx27(
|
|
2751
3088
|
"div",
|
|
2752
3089
|
{
|
|
2753
3090
|
"data-slot": "form-item",
|
|
@@ -2761,7 +3098,7 @@ function FormLabel({
|
|
|
2761
3098
|
...props
|
|
2762
3099
|
}) {
|
|
2763
3100
|
const { error, formItemId } = useFormField();
|
|
2764
|
-
return /* @__PURE__ */
|
|
3101
|
+
return /* @__PURE__ */ jsx27(
|
|
2765
3102
|
Label3,
|
|
2766
3103
|
{
|
|
2767
3104
|
"data-slot": "form-label",
|
|
@@ -2774,7 +3111,7 @@ function FormLabel({
|
|
|
2774
3111
|
}
|
|
2775
3112
|
function FormControl({ ...props }) {
|
|
2776
3113
|
const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
|
|
2777
|
-
return /* @__PURE__ */
|
|
3114
|
+
return /* @__PURE__ */ jsx27(
|
|
2778
3115
|
Slot5,
|
|
2779
3116
|
{
|
|
2780
3117
|
"data-slot": "form-control",
|
|
@@ -2787,7 +3124,7 @@ function FormControl({ ...props }) {
|
|
|
2787
3124
|
}
|
|
2788
3125
|
function FormDescription({ className, ...props }) {
|
|
2789
3126
|
const { formDescriptionId } = useFormField();
|
|
2790
|
-
return /* @__PURE__ */
|
|
3127
|
+
return /* @__PURE__ */ jsx27(
|
|
2791
3128
|
"p",
|
|
2792
3129
|
{
|
|
2793
3130
|
"data-slot": "form-description",
|
|
@@ -2803,7 +3140,7 @@ function FormMessage({ className, ...props }) {
|
|
|
2803
3140
|
if (!body) {
|
|
2804
3141
|
return null;
|
|
2805
3142
|
}
|
|
2806
|
-
return /* @__PURE__ */
|
|
3143
|
+
return /* @__PURE__ */ jsx27(
|
|
2807
3144
|
"p",
|
|
2808
3145
|
{
|
|
2809
3146
|
"data-slot": "form-message",
|
|
@@ -2818,16 +3155,16 @@ function FormMessage({ className, ...props }) {
|
|
|
2818
3155
|
// src/components/ui/hover-card.tsx
|
|
2819
3156
|
import "react";
|
|
2820
3157
|
import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
|
|
2821
|
-
import { jsx as
|
|
3158
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
2822
3159
|
function HoverCard({
|
|
2823
3160
|
...props
|
|
2824
3161
|
}) {
|
|
2825
|
-
return /* @__PURE__ */
|
|
3162
|
+
return /* @__PURE__ */ jsx28(HoverCardPrimitive.Root, { "data-slot": "hover-card", ...props });
|
|
2826
3163
|
}
|
|
2827
3164
|
function HoverCardTrigger({
|
|
2828
3165
|
...props
|
|
2829
3166
|
}) {
|
|
2830
|
-
return /* @__PURE__ */
|
|
3167
|
+
return /* @__PURE__ */ jsx28(HoverCardPrimitive.Trigger, { "data-slot": "hover-card-trigger", ...props });
|
|
2831
3168
|
}
|
|
2832
3169
|
function HoverCardContent({
|
|
2833
3170
|
className,
|
|
@@ -2835,7 +3172,7 @@ function HoverCardContent({
|
|
|
2835
3172
|
sideOffset = 4,
|
|
2836
3173
|
...props
|
|
2837
3174
|
}) {
|
|
2838
|
-
return /* @__PURE__ */
|
|
3175
|
+
return /* @__PURE__ */ jsx28(HoverCardPrimitive.Portal, { "data-slot": "hover-card-portal", children: /* @__PURE__ */ jsx28(
|
|
2839
3176
|
HoverCardPrimitive.Content,
|
|
2840
3177
|
{
|
|
2841
3178
|
"data-slot": "hover-card-content",
|
|
@@ -2851,16 +3188,16 @@ function HoverCardContent({
|
|
|
2851
3188
|
}
|
|
2852
3189
|
|
|
2853
3190
|
// src/components/ui/input-otp.tsx
|
|
2854
|
-
import * as
|
|
3191
|
+
import * as React27 from "react";
|
|
2855
3192
|
import { OTPInput, OTPInputContext } from "input-otp";
|
|
2856
3193
|
import { MinusIcon } from "lucide-react";
|
|
2857
|
-
import { jsx as
|
|
3194
|
+
import { jsx as jsx29, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
2858
3195
|
function InputOTP({
|
|
2859
3196
|
className,
|
|
2860
3197
|
containerClassName,
|
|
2861
3198
|
...props
|
|
2862
3199
|
}) {
|
|
2863
|
-
return /* @__PURE__ */
|
|
3200
|
+
return /* @__PURE__ */ jsx29(
|
|
2864
3201
|
OTPInput,
|
|
2865
3202
|
{
|
|
2866
3203
|
"data-slot": "input-otp",
|
|
@@ -2874,7 +3211,7 @@ function InputOTP({
|
|
|
2874
3211
|
);
|
|
2875
3212
|
}
|
|
2876
3213
|
function InputOTPGroup({ className, ...props }) {
|
|
2877
|
-
return /* @__PURE__ */
|
|
3214
|
+
return /* @__PURE__ */ jsx29(
|
|
2878
3215
|
"div",
|
|
2879
3216
|
{
|
|
2880
3217
|
"data-slot": "input-otp-group",
|
|
@@ -2888,9 +3225,9 @@ function InputOTPSlot({
|
|
|
2888
3225
|
className,
|
|
2889
3226
|
...props
|
|
2890
3227
|
}) {
|
|
2891
|
-
const inputOTPContext =
|
|
3228
|
+
const inputOTPContext = React27.useContext(OTPInputContext);
|
|
2892
3229
|
const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};
|
|
2893
|
-
return /* @__PURE__ */
|
|
3230
|
+
return /* @__PURE__ */ jsxs14(
|
|
2894
3231
|
"div",
|
|
2895
3232
|
{
|
|
2896
3233
|
"data-slot": "input-otp-slot",
|
|
@@ -2902,25 +3239,25 @@ function InputOTPSlot({
|
|
|
2902
3239
|
...props,
|
|
2903
3240
|
children: [
|
|
2904
3241
|
char,
|
|
2905
|
-
hasFakeCaret && /* @__PURE__ */
|
|
3242
|
+
hasFakeCaret && /* @__PURE__ */ jsx29("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx29("div", { className: "animate-caret-blink bg-foreground h-4 w-px duration-1000" }) })
|
|
2906
3243
|
]
|
|
2907
3244
|
}
|
|
2908
3245
|
);
|
|
2909
3246
|
}
|
|
2910
3247
|
function InputOTPSeparator({ ...props }) {
|
|
2911
|
-
return /* @__PURE__ */
|
|
3248
|
+
return /* @__PURE__ */ jsx29("div", { "data-slot": "input-otp-separator", role: "separator", ...props, children: /* @__PURE__ */ jsx29(MinusIcon, {}) });
|
|
2912
3249
|
}
|
|
2913
3250
|
|
|
2914
3251
|
// src/components/ui/menubar.tsx
|
|
2915
3252
|
import "react";
|
|
2916
3253
|
import * as MenubarPrimitive from "@radix-ui/react-menubar";
|
|
2917
3254
|
import { CheckIcon as CheckIcon3, ChevronRightIcon as ChevronRightIcon4, CircleIcon as CircleIcon3 } from "lucide-react";
|
|
2918
|
-
import { jsx as
|
|
3255
|
+
import { jsx as jsx30, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
2919
3256
|
function Menubar({
|
|
2920
3257
|
className,
|
|
2921
3258
|
...props
|
|
2922
3259
|
}) {
|
|
2923
|
-
return /* @__PURE__ */
|
|
3260
|
+
return /* @__PURE__ */ jsx30(
|
|
2924
3261
|
MenubarPrimitive.Root,
|
|
2925
3262
|
{
|
|
2926
3263
|
"data-slot": "menubar",
|
|
@@ -2935,28 +3272,28 @@ function Menubar({
|
|
|
2935
3272
|
function MenubarMenu({
|
|
2936
3273
|
...props
|
|
2937
3274
|
}) {
|
|
2938
|
-
return /* @__PURE__ */
|
|
3275
|
+
return /* @__PURE__ */ jsx30(MenubarPrimitive.Menu, { "data-slot": "menubar-menu", ...props });
|
|
2939
3276
|
}
|
|
2940
3277
|
function MenubarGroup({
|
|
2941
3278
|
...props
|
|
2942
3279
|
}) {
|
|
2943
|
-
return /* @__PURE__ */
|
|
3280
|
+
return /* @__PURE__ */ jsx30(MenubarPrimitive.Group, { "data-slot": "menubar-group", ...props });
|
|
2944
3281
|
}
|
|
2945
3282
|
function MenubarPortal({
|
|
2946
3283
|
...props
|
|
2947
3284
|
}) {
|
|
2948
|
-
return /* @__PURE__ */
|
|
3285
|
+
return /* @__PURE__ */ jsx30(MenubarPrimitive.Portal, { "data-slot": "menubar-portal", ...props });
|
|
2949
3286
|
}
|
|
2950
3287
|
function MenubarRadioGroup({
|
|
2951
3288
|
...props
|
|
2952
3289
|
}) {
|
|
2953
|
-
return /* @__PURE__ */
|
|
3290
|
+
return /* @__PURE__ */ jsx30(MenubarPrimitive.RadioGroup, { "data-slot": "menubar-radio-group", ...props });
|
|
2954
3291
|
}
|
|
2955
3292
|
function MenubarTrigger({
|
|
2956
3293
|
className,
|
|
2957
3294
|
...props
|
|
2958
3295
|
}) {
|
|
2959
|
-
return /* @__PURE__ */
|
|
3296
|
+
return /* @__PURE__ */ jsx30(
|
|
2960
3297
|
MenubarPrimitive.Trigger,
|
|
2961
3298
|
{
|
|
2962
3299
|
"data-slot": "menubar-trigger",
|
|
@@ -2975,7 +3312,7 @@ function MenubarContent({
|
|
|
2975
3312
|
sideOffset = 8,
|
|
2976
3313
|
...props
|
|
2977
3314
|
}) {
|
|
2978
|
-
return /* @__PURE__ */
|
|
3315
|
+
return /* @__PURE__ */ jsx30(MenubarPortal, { children: /* @__PURE__ */ jsx30(
|
|
2979
3316
|
MenubarPrimitive.Content,
|
|
2980
3317
|
{
|
|
2981
3318
|
"data-slot": "menubar-content",
|
|
@@ -2996,7 +3333,7 @@ function MenubarItem({
|
|
|
2996
3333
|
variant = "default",
|
|
2997
3334
|
...props
|
|
2998
3335
|
}) {
|
|
2999
|
-
return /* @__PURE__ */
|
|
3336
|
+
return /* @__PURE__ */ jsx30(
|
|
3000
3337
|
MenubarPrimitive.Item,
|
|
3001
3338
|
{
|
|
3002
3339
|
"data-slot": "menubar-item",
|
|
@@ -3016,7 +3353,7 @@ function MenubarCheckboxItem({
|
|
|
3016
3353
|
checked,
|
|
3017
3354
|
...props
|
|
3018
3355
|
}) {
|
|
3019
|
-
return /* @__PURE__ */
|
|
3356
|
+
return /* @__PURE__ */ jsxs15(
|
|
3020
3357
|
MenubarPrimitive.CheckboxItem,
|
|
3021
3358
|
{
|
|
3022
3359
|
"data-slot": "menubar-checkbox-item",
|
|
@@ -3027,7 +3364,7 @@ function MenubarCheckboxItem({
|
|
|
3027
3364
|
checked,
|
|
3028
3365
|
...props,
|
|
3029
3366
|
children: [
|
|
3030
|
-
/* @__PURE__ */
|
|
3367
|
+
/* @__PURE__ */ jsx30("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx30(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx30(CheckIcon3, { className: "size-4" }) }) }),
|
|
3031
3368
|
children
|
|
3032
3369
|
]
|
|
3033
3370
|
}
|
|
@@ -3038,7 +3375,7 @@ function MenubarRadioItem({
|
|
|
3038
3375
|
children,
|
|
3039
3376
|
...props
|
|
3040
3377
|
}) {
|
|
3041
|
-
return /* @__PURE__ */
|
|
3378
|
+
return /* @__PURE__ */ jsxs15(
|
|
3042
3379
|
MenubarPrimitive.RadioItem,
|
|
3043
3380
|
{
|
|
3044
3381
|
"data-slot": "menubar-radio-item",
|
|
@@ -3048,7 +3385,7 @@ function MenubarRadioItem({
|
|
|
3048
3385
|
),
|
|
3049
3386
|
...props,
|
|
3050
3387
|
children: [
|
|
3051
|
-
/* @__PURE__ */
|
|
3388
|
+
/* @__PURE__ */ jsx30("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx30(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx30(CircleIcon3, { className: "size-2 fill-current" }) }) }),
|
|
3052
3389
|
children
|
|
3053
3390
|
]
|
|
3054
3391
|
}
|
|
@@ -3059,7 +3396,7 @@ function MenubarLabel({
|
|
|
3059
3396
|
inset,
|
|
3060
3397
|
...props
|
|
3061
3398
|
}) {
|
|
3062
|
-
return /* @__PURE__ */
|
|
3399
|
+
return /* @__PURE__ */ jsx30(
|
|
3063
3400
|
MenubarPrimitive.Label,
|
|
3064
3401
|
{
|
|
3065
3402
|
"data-slot": "menubar-label",
|
|
@@ -3076,7 +3413,7 @@ function MenubarSeparator({
|
|
|
3076
3413
|
className,
|
|
3077
3414
|
...props
|
|
3078
3415
|
}) {
|
|
3079
|
-
return /* @__PURE__ */
|
|
3416
|
+
return /* @__PURE__ */ jsx30(
|
|
3080
3417
|
MenubarPrimitive.Separator,
|
|
3081
3418
|
{
|
|
3082
3419
|
"data-slot": "menubar-separator",
|
|
@@ -3089,7 +3426,7 @@ function MenubarShortcut({
|
|
|
3089
3426
|
className,
|
|
3090
3427
|
...props
|
|
3091
3428
|
}) {
|
|
3092
|
-
return /* @__PURE__ */
|
|
3429
|
+
return /* @__PURE__ */ jsx30(
|
|
3093
3430
|
"span",
|
|
3094
3431
|
{
|
|
3095
3432
|
"data-slot": "menubar-shortcut",
|
|
@@ -3104,7 +3441,7 @@ function MenubarShortcut({
|
|
|
3104
3441
|
function MenubarSub({
|
|
3105
3442
|
...props
|
|
3106
3443
|
}) {
|
|
3107
|
-
return /* @__PURE__ */
|
|
3444
|
+
return /* @__PURE__ */ jsx30(MenubarPrimitive.Sub, { "data-slot": "menubar-sub", ...props });
|
|
3108
3445
|
}
|
|
3109
3446
|
function MenubarSubTrigger({
|
|
3110
3447
|
className,
|
|
@@ -3112,7 +3449,7 @@ function MenubarSubTrigger({
|
|
|
3112
3449
|
children,
|
|
3113
3450
|
...props
|
|
3114
3451
|
}) {
|
|
3115
|
-
return /* @__PURE__ */
|
|
3452
|
+
return /* @__PURE__ */ jsxs15(
|
|
3116
3453
|
MenubarPrimitive.SubTrigger,
|
|
3117
3454
|
{
|
|
3118
3455
|
"data-slot": "menubar-sub-trigger",
|
|
@@ -3124,7 +3461,7 @@ function MenubarSubTrigger({
|
|
|
3124
3461
|
...props,
|
|
3125
3462
|
children: [
|
|
3126
3463
|
children,
|
|
3127
|
-
/* @__PURE__ */
|
|
3464
|
+
/* @__PURE__ */ jsx30(ChevronRightIcon4, { className: "ml-auto h-4 w-4" })
|
|
3128
3465
|
]
|
|
3129
3466
|
}
|
|
3130
3467
|
);
|
|
@@ -3133,7 +3470,7 @@ function MenubarSubContent({
|
|
|
3133
3470
|
className,
|
|
3134
3471
|
...props
|
|
3135
3472
|
}) {
|
|
3136
|
-
return /* @__PURE__ */
|
|
3473
|
+
return /* @__PURE__ */ jsx30(
|
|
3137
3474
|
MenubarPrimitive.SubContent,
|
|
3138
3475
|
{
|
|
3139
3476
|
"data-slot": "menubar-sub-content",
|
|
@@ -3151,14 +3488,14 @@ import "react";
|
|
|
3151
3488
|
import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
|
|
3152
3489
|
import { cva as cva6 } from "class-variance-authority";
|
|
3153
3490
|
import { ChevronDownIcon as ChevronDownIcon3 } from "lucide-react";
|
|
3154
|
-
import { jsx as
|
|
3491
|
+
import { jsx as jsx31, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
3155
3492
|
function NavigationMenu({
|
|
3156
3493
|
className,
|
|
3157
3494
|
children,
|
|
3158
3495
|
viewport = true,
|
|
3159
3496
|
...props
|
|
3160
3497
|
}) {
|
|
3161
|
-
return /* @__PURE__ */
|
|
3498
|
+
return /* @__PURE__ */ jsxs16(
|
|
3162
3499
|
NavigationMenuPrimitive.Root,
|
|
3163
3500
|
{
|
|
3164
3501
|
"data-slot": "navigation-menu",
|
|
@@ -3170,7 +3507,7 @@ function NavigationMenu({
|
|
|
3170
3507
|
...props,
|
|
3171
3508
|
children: [
|
|
3172
3509
|
children,
|
|
3173
|
-
viewport && /* @__PURE__ */
|
|
3510
|
+
viewport && /* @__PURE__ */ jsx31(NavigationMenuViewport, {})
|
|
3174
3511
|
]
|
|
3175
3512
|
}
|
|
3176
3513
|
);
|
|
@@ -3179,7 +3516,7 @@ function NavigationMenuList({
|
|
|
3179
3516
|
className,
|
|
3180
3517
|
...props
|
|
3181
3518
|
}) {
|
|
3182
|
-
return /* @__PURE__ */
|
|
3519
|
+
return /* @__PURE__ */ jsx31(
|
|
3183
3520
|
NavigationMenuPrimitive.List,
|
|
3184
3521
|
{
|
|
3185
3522
|
"data-slot": "navigation-menu-list",
|
|
@@ -3195,7 +3532,7 @@ function NavigationMenuItem({
|
|
|
3195
3532
|
className,
|
|
3196
3533
|
...props
|
|
3197
3534
|
}) {
|
|
3198
|
-
return /* @__PURE__ */
|
|
3535
|
+
return /* @__PURE__ */ jsx31(
|
|
3199
3536
|
NavigationMenuPrimitive.Item,
|
|
3200
3537
|
{
|
|
3201
3538
|
"data-slot": "navigation-menu-item",
|
|
@@ -3212,7 +3549,7 @@ function NavigationMenuTrigger({
|
|
|
3212
3549
|
children,
|
|
3213
3550
|
...props
|
|
3214
3551
|
}) {
|
|
3215
|
-
return /* @__PURE__ */
|
|
3552
|
+
return /* @__PURE__ */ jsxs16(
|
|
3216
3553
|
NavigationMenuPrimitive.Trigger,
|
|
3217
3554
|
{
|
|
3218
3555
|
"data-slot": "navigation-menu-trigger",
|
|
@@ -3221,7 +3558,7 @@ function NavigationMenuTrigger({
|
|
|
3221
3558
|
children: [
|
|
3222
3559
|
children,
|
|
3223
3560
|
" ",
|
|
3224
|
-
/* @__PURE__ */
|
|
3561
|
+
/* @__PURE__ */ jsx31(
|
|
3225
3562
|
ChevronDownIcon3,
|
|
3226
3563
|
{
|
|
3227
3564
|
className: "relative top-[1px] ml-1 size-3 transition duration-400 group-data-[state=open]:rotate-180",
|
|
@@ -3236,7 +3573,7 @@ function NavigationMenuContent({
|
|
|
3236
3573
|
className,
|
|
3237
3574
|
...props
|
|
3238
3575
|
}) {
|
|
3239
|
-
return /* @__PURE__ */
|
|
3576
|
+
return /* @__PURE__ */ jsx31(
|
|
3240
3577
|
NavigationMenuPrimitive.Content,
|
|
3241
3578
|
{
|
|
3242
3579
|
"data-slot": "navigation-menu-content",
|
|
@@ -3253,13 +3590,13 @@ function NavigationMenuViewport({
|
|
|
3253
3590
|
className,
|
|
3254
3591
|
...props
|
|
3255
3592
|
}) {
|
|
3256
|
-
return /* @__PURE__ */
|
|
3593
|
+
return /* @__PURE__ */ jsx31(
|
|
3257
3594
|
"div",
|
|
3258
3595
|
{
|
|
3259
3596
|
className: cn(
|
|
3260
3597
|
"absolute top-full left-0 isolate z-50 flex justify-center"
|
|
3261
3598
|
),
|
|
3262
|
-
children: /* @__PURE__ */
|
|
3599
|
+
children: /* @__PURE__ */ jsx31(
|
|
3263
3600
|
NavigationMenuPrimitive.Viewport,
|
|
3264
3601
|
{
|
|
3265
3602
|
"data-slot": "navigation-menu-viewport",
|
|
@@ -3277,7 +3614,7 @@ function NavigationMenuLink({
|
|
|
3277
3614
|
className,
|
|
3278
3615
|
...props
|
|
3279
3616
|
}) {
|
|
3280
|
-
return /* @__PURE__ */
|
|
3617
|
+
return /* @__PURE__ */ jsx31(
|
|
3281
3618
|
NavigationMenuPrimitive.Link,
|
|
3282
3619
|
{
|
|
3283
3620
|
"data-slot": "navigation-menu-link",
|
|
@@ -3293,7 +3630,7 @@ function NavigationMenuIndicator({
|
|
|
3293
3630
|
className,
|
|
3294
3631
|
...props
|
|
3295
3632
|
}) {
|
|
3296
|
-
return /* @__PURE__ */
|
|
3633
|
+
return /* @__PURE__ */ jsx31(
|
|
3297
3634
|
NavigationMenuPrimitive.Indicator,
|
|
3298
3635
|
{
|
|
3299
3636
|
"data-slot": "navigation-menu-indicator",
|
|
@@ -3302,7 +3639,7 @@ function NavigationMenuIndicator({
|
|
|
3302
3639
|
className
|
|
3303
3640
|
),
|
|
3304
3641
|
...props,
|
|
3305
|
-
children: /* @__PURE__ */
|
|
3642
|
+
children: /* @__PURE__ */ jsx31("div", { className: "bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md" })
|
|
3306
3643
|
}
|
|
3307
3644
|
);
|
|
3308
3645
|
}
|
|
@@ -3314,9 +3651,9 @@ import {
|
|
|
3314
3651
|
ChevronRightIcon as ChevronRightIcon5,
|
|
3315
3652
|
MoreHorizontalIcon
|
|
3316
3653
|
} from "lucide-react";
|
|
3317
|
-
import { jsx as
|
|
3654
|
+
import { jsx as jsx32, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
3318
3655
|
function Pagination({ className, ...props }) {
|
|
3319
|
-
return /* @__PURE__ */
|
|
3656
|
+
return /* @__PURE__ */ jsx32(
|
|
3320
3657
|
"nav",
|
|
3321
3658
|
{
|
|
3322
3659
|
role: "navigation",
|
|
@@ -3331,7 +3668,7 @@ function PaginationContent({
|
|
|
3331
3668
|
className,
|
|
3332
3669
|
...props
|
|
3333
3670
|
}) {
|
|
3334
|
-
return /* @__PURE__ */
|
|
3671
|
+
return /* @__PURE__ */ jsx32(
|
|
3335
3672
|
"ul",
|
|
3336
3673
|
{
|
|
3337
3674
|
"data-slot": "pagination-content",
|
|
@@ -3341,7 +3678,7 @@ function PaginationContent({
|
|
|
3341
3678
|
);
|
|
3342
3679
|
}
|
|
3343
3680
|
function PaginationItem({ ...props }) {
|
|
3344
|
-
return /* @__PURE__ */
|
|
3681
|
+
return /* @__PURE__ */ jsx32("li", { "data-slot": "pagination-item", ...props });
|
|
3345
3682
|
}
|
|
3346
3683
|
function PaginationLink({
|
|
3347
3684
|
className,
|
|
@@ -3349,7 +3686,7 @@ function PaginationLink({
|
|
|
3349
3686
|
size = "icon",
|
|
3350
3687
|
...props
|
|
3351
3688
|
}) {
|
|
3352
|
-
return /* @__PURE__ */
|
|
3689
|
+
return /* @__PURE__ */ jsx32(
|
|
3353
3690
|
"a",
|
|
3354
3691
|
{
|
|
3355
3692
|
"aria-current": isActive ? "page" : void 0,
|
|
@@ -3370,7 +3707,7 @@ function PaginationPrevious({
|
|
|
3370
3707
|
className,
|
|
3371
3708
|
...props
|
|
3372
3709
|
}) {
|
|
3373
|
-
return /* @__PURE__ */
|
|
3710
|
+
return /* @__PURE__ */ jsxs17(
|
|
3374
3711
|
PaginationLink,
|
|
3375
3712
|
{
|
|
3376
3713
|
"aria-label": "Go to previous page",
|
|
@@ -3378,8 +3715,8 @@ function PaginationPrevious({
|
|
|
3378
3715
|
className: cn("gap-1 px-2.5 sm:pl-2.5", className),
|
|
3379
3716
|
...props,
|
|
3380
3717
|
children: [
|
|
3381
|
-
/* @__PURE__ */
|
|
3382
|
-
/* @__PURE__ */
|
|
3718
|
+
/* @__PURE__ */ jsx32(ChevronLeftIcon2, {}),
|
|
3719
|
+
/* @__PURE__ */ jsx32("span", { className: "hidden sm:block", children: "Previous" })
|
|
3383
3720
|
]
|
|
3384
3721
|
}
|
|
3385
3722
|
);
|
|
@@ -3388,7 +3725,7 @@ function PaginationNext({
|
|
|
3388
3725
|
className,
|
|
3389
3726
|
...props
|
|
3390
3727
|
}) {
|
|
3391
|
-
return /* @__PURE__ */
|
|
3728
|
+
return /* @__PURE__ */ jsxs17(
|
|
3392
3729
|
PaginationLink,
|
|
3393
3730
|
{
|
|
3394
3731
|
"aria-label": "Go to next page",
|
|
@@ -3396,8 +3733,8 @@ function PaginationNext({
|
|
|
3396
3733
|
className: cn("gap-1 px-2.5 sm:pr-2.5", className),
|
|
3397
3734
|
...props,
|
|
3398
3735
|
children: [
|
|
3399
|
-
/* @__PURE__ */
|
|
3400
|
-
/* @__PURE__ */
|
|
3736
|
+
/* @__PURE__ */ jsx32("span", { className: "hidden sm:block", children: "Next" }),
|
|
3737
|
+
/* @__PURE__ */ jsx32(ChevronRightIcon5, {})
|
|
3401
3738
|
]
|
|
3402
3739
|
}
|
|
3403
3740
|
);
|
|
@@ -3406,7 +3743,7 @@ function PaginationEllipsis({
|
|
|
3406
3743
|
className,
|
|
3407
3744
|
...props
|
|
3408
3745
|
}) {
|
|
3409
|
-
return /* @__PURE__ */
|
|
3746
|
+
return /* @__PURE__ */ jsxs17(
|
|
3410
3747
|
"span",
|
|
3411
3748
|
{
|
|
3412
3749
|
"aria-hidden": true,
|
|
@@ -3414,8 +3751,8 @@ function PaginationEllipsis({
|
|
|
3414
3751
|
className: cn("flex size-9 items-center justify-center", className),
|
|
3415
3752
|
...props,
|
|
3416
3753
|
children: [
|
|
3417
|
-
/* @__PURE__ */
|
|
3418
|
-
/* @__PURE__ */
|
|
3754
|
+
/* @__PURE__ */ jsx32(MoreHorizontalIcon, { className: "size-4" }),
|
|
3755
|
+
/* @__PURE__ */ jsx32("span", { className: "sr-only", children: "More pages" })
|
|
3419
3756
|
]
|
|
3420
3757
|
}
|
|
3421
3758
|
);
|
|
@@ -3424,13 +3761,13 @@ function PaginationEllipsis({
|
|
|
3424
3761
|
// src/components/ui/progress.tsx
|
|
3425
3762
|
import * as ProgressPrimitive from "@radix-ui/react-progress";
|
|
3426
3763
|
import "react";
|
|
3427
|
-
import { jsx as
|
|
3764
|
+
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
3428
3765
|
function Progress({
|
|
3429
3766
|
className,
|
|
3430
3767
|
value,
|
|
3431
3768
|
...props
|
|
3432
3769
|
}) {
|
|
3433
|
-
return /* @__PURE__ */
|
|
3770
|
+
return /* @__PURE__ */ jsx33(
|
|
3434
3771
|
ProgressPrimitive.Root,
|
|
3435
3772
|
{
|
|
3436
3773
|
"data-slot": "progress",
|
|
@@ -3439,7 +3776,7 @@ function Progress({
|
|
|
3439
3776
|
className
|
|
3440
3777
|
),
|
|
3441
3778
|
...props,
|
|
3442
|
-
children: /* @__PURE__ */
|
|
3779
|
+
children: /* @__PURE__ */ jsx33(
|
|
3443
3780
|
ProgressPrimitive.Indicator,
|
|
3444
3781
|
{
|
|
3445
3782
|
"data-slot": "progress-indicator",
|
|
@@ -3455,12 +3792,12 @@ function Progress({
|
|
|
3455
3792
|
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
|
|
3456
3793
|
import { CircleIcon as CircleIcon4 } from "lucide-react";
|
|
3457
3794
|
import "react";
|
|
3458
|
-
import { jsx as
|
|
3795
|
+
import { jsx as jsx34 } from "react/jsx-runtime";
|
|
3459
3796
|
function RadioGroup4({
|
|
3460
3797
|
className,
|
|
3461
3798
|
...props
|
|
3462
3799
|
}) {
|
|
3463
|
-
return /* @__PURE__ */
|
|
3800
|
+
return /* @__PURE__ */ jsx34(
|
|
3464
3801
|
RadioGroupPrimitive.Root,
|
|
3465
3802
|
{
|
|
3466
3803
|
"data-slot": "radio-group",
|
|
@@ -3473,7 +3810,7 @@ function RadioGroupItem({
|
|
|
3473
3810
|
className,
|
|
3474
3811
|
...props
|
|
3475
3812
|
}) {
|
|
3476
|
-
return /* @__PURE__ */
|
|
3813
|
+
return /* @__PURE__ */ jsx34(
|
|
3477
3814
|
RadioGroupPrimitive.Item,
|
|
3478
3815
|
{
|
|
3479
3816
|
"data-slot": "radio-group-item",
|
|
@@ -3482,12 +3819,12 @@ function RadioGroupItem({
|
|
|
3482
3819
|
className
|
|
3483
3820
|
),
|
|
3484
3821
|
...props,
|
|
3485
|
-
children: /* @__PURE__ */
|
|
3822
|
+
children: /* @__PURE__ */ jsx34(
|
|
3486
3823
|
RadioGroupPrimitive.Indicator,
|
|
3487
3824
|
{
|
|
3488
3825
|
"data-slot": "radio-group-indicator",
|
|
3489
3826
|
className: "relative flex items-center justify-center",
|
|
3490
|
-
children: /* @__PURE__ */
|
|
3827
|
+
children: /* @__PURE__ */ jsx34(CircleIcon4, { className: "fill-white absolute top-1/2 left-1/2 size-1.5 -translate-x-1/2 -translate-y-1/2" })
|
|
3491
3828
|
}
|
|
3492
3829
|
)
|
|
3493
3830
|
}
|
|
@@ -3498,12 +3835,12 @@ function RadioGroupItem({
|
|
|
3498
3835
|
import "react";
|
|
3499
3836
|
import { GripVerticalIcon } from "lucide-react";
|
|
3500
3837
|
import * as ResizablePrimitive from "react-resizable-panels";
|
|
3501
|
-
import { jsx as
|
|
3838
|
+
import { jsx as jsx35 } from "react/jsx-runtime";
|
|
3502
3839
|
function ResizablePanelGroup({
|
|
3503
3840
|
className,
|
|
3504
3841
|
...props
|
|
3505
3842
|
}) {
|
|
3506
|
-
return /* @__PURE__ */
|
|
3843
|
+
return /* @__PURE__ */ jsx35(
|
|
3507
3844
|
ResizablePrimitive.PanelGroup,
|
|
3508
3845
|
{
|
|
3509
3846
|
"data-slot": "resizable-panel-group",
|
|
@@ -3518,14 +3855,14 @@ function ResizablePanelGroup({
|
|
|
3518
3855
|
function ResizablePanel({
|
|
3519
3856
|
...props
|
|
3520
3857
|
}) {
|
|
3521
|
-
return /* @__PURE__ */
|
|
3858
|
+
return /* @__PURE__ */ jsx35(ResizablePrimitive.Panel, { "data-slot": "resizable-panel", ...props });
|
|
3522
3859
|
}
|
|
3523
3860
|
function ResizableHandle({
|
|
3524
3861
|
withHandle,
|
|
3525
3862
|
className,
|
|
3526
3863
|
...props
|
|
3527
3864
|
}) {
|
|
3528
|
-
return /* @__PURE__ */
|
|
3865
|
+
return /* @__PURE__ */ jsx35(
|
|
3529
3866
|
ResizablePrimitive.PanelResizeHandle,
|
|
3530
3867
|
{
|
|
3531
3868
|
"data-slot": "resizable-handle",
|
|
@@ -3534,7 +3871,7 @@ function ResizableHandle({
|
|
|
3534
3871
|
className
|
|
3535
3872
|
),
|
|
3536
3873
|
...props,
|
|
3537
|
-
children: withHandle && /* @__PURE__ */
|
|
3874
|
+
children: withHandle && /* @__PURE__ */ jsx35("div", { className: "bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border", children: /* @__PURE__ */ jsx35(GripVerticalIcon, { className: "size-2.5" }) })
|
|
3538
3875
|
}
|
|
3539
3876
|
);
|
|
3540
3877
|
}
|
|
@@ -3542,20 +3879,20 @@ function ResizableHandle({
|
|
|
3542
3879
|
// src/components/ui/scroll-area.tsx
|
|
3543
3880
|
import "react";
|
|
3544
3881
|
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
|
|
3545
|
-
import { jsx as
|
|
3882
|
+
import { jsx as jsx36, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
3546
3883
|
function ScrollArea({
|
|
3547
3884
|
className,
|
|
3548
3885
|
children,
|
|
3549
3886
|
...props
|
|
3550
3887
|
}) {
|
|
3551
|
-
return /* @__PURE__ */
|
|
3888
|
+
return /* @__PURE__ */ jsxs18(
|
|
3552
3889
|
ScrollAreaPrimitive.Root,
|
|
3553
3890
|
{
|
|
3554
3891
|
"data-slot": "scroll-area",
|
|
3555
3892
|
className: cn("relative", className),
|
|
3556
3893
|
...props,
|
|
3557
3894
|
children: [
|
|
3558
|
-
/* @__PURE__ */
|
|
3895
|
+
/* @__PURE__ */ jsx36(
|
|
3559
3896
|
ScrollAreaPrimitive.Viewport,
|
|
3560
3897
|
{
|
|
3561
3898
|
"data-slot": "scroll-area-viewport",
|
|
@@ -3563,8 +3900,8 @@ function ScrollArea({
|
|
|
3563
3900
|
children
|
|
3564
3901
|
}
|
|
3565
3902
|
),
|
|
3566
|
-
/* @__PURE__ */
|
|
3567
|
-
/* @__PURE__ */
|
|
3903
|
+
/* @__PURE__ */ jsx36(ScrollBar, {}),
|
|
3904
|
+
/* @__PURE__ */ jsx36(ScrollAreaPrimitive.Corner, {})
|
|
3568
3905
|
]
|
|
3569
3906
|
}
|
|
3570
3907
|
);
|
|
@@ -3574,7 +3911,7 @@ function ScrollBar({
|
|
|
3574
3911
|
orientation = "vertical",
|
|
3575
3912
|
...props
|
|
3576
3913
|
}) {
|
|
3577
|
-
return /* @__PURE__ */
|
|
3914
|
+
return /* @__PURE__ */ jsx36(
|
|
3578
3915
|
ScrollAreaPrimitive.ScrollAreaScrollbar,
|
|
3579
3916
|
{
|
|
3580
3917
|
"data-slot": "scroll-area-scrollbar",
|
|
@@ -3586,7 +3923,7 @@ function ScrollBar({
|
|
|
3586
3923
|
className
|
|
3587
3924
|
),
|
|
3588
3925
|
...props,
|
|
3589
|
-
children: /* @__PURE__ */
|
|
3926
|
+
children: /* @__PURE__ */ jsx36(
|
|
3590
3927
|
ScrollAreaPrimitive.ScrollAreaThumb,
|
|
3591
3928
|
{
|
|
3592
3929
|
"data-slot": "scroll-area-thumb",
|
|
@@ -3601,21 +3938,21 @@ function ScrollBar({
|
|
|
3601
3938
|
import "react";
|
|
3602
3939
|
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
3603
3940
|
import { CheckIcon as CheckIcon4, ChevronDownIcon as ChevronDownIcon4, ChevronUpIcon } from "lucide-react";
|
|
3604
|
-
import { jsx as
|
|
3941
|
+
import { jsx as jsx37, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
3605
3942
|
function Select({
|
|
3606
3943
|
...props
|
|
3607
3944
|
}) {
|
|
3608
|
-
return /* @__PURE__ */
|
|
3945
|
+
return /* @__PURE__ */ jsx37(SelectPrimitive.Root, { "data-slot": "select", ...props });
|
|
3609
3946
|
}
|
|
3610
3947
|
function SelectGroup({
|
|
3611
3948
|
...props
|
|
3612
3949
|
}) {
|
|
3613
|
-
return /* @__PURE__ */
|
|
3950
|
+
return /* @__PURE__ */ jsx37(SelectPrimitive.Group, { "data-slot": "select-group", ...props });
|
|
3614
3951
|
}
|
|
3615
3952
|
function SelectValue({
|
|
3616
3953
|
...props
|
|
3617
3954
|
}) {
|
|
3618
|
-
return /* @__PURE__ */
|
|
3955
|
+
return /* @__PURE__ */ jsx37(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
|
|
3619
3956
|
}
|
|
3620
3957
|
function SelectTrigger({
|
|
3621
3958
|
className,
|
|
@@ -3623,7 +3960,7 @@ function SelectTrigger({
|
|
|
3623
3960
|
children,
|
|
3624
3961
|
...props
|
|
3625
3962
|
}) {
|
|
3626
|
-
return /* @__PURE__ */
|
|
3963
|
+
return /* @__PURE__ */ jsxs19(
|
|
3627
3964
|
SelectPrimitive.Trigger,
|
|
3628
3965
|
{
|
|
3629
3966
|
"data-slot": "select-trigger",
|
|
@@ -3635,7 +3972,7 @@ function SelectTrigger({
|
|
|
3635
3972
|
...props,
|
|
3636
3973
|
children: [
|
|
3637
3974
|
children,
|
|
3638
|
-
/* @__PURE__ */
|
|
3975
|
+
/* @__PURE__ */ jsx37(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx37(ChevronDownIcon4, { className: "size-4 opacity-50" }) })
|
|
3639
3976
|
]
|
|
3640
3977
|
}
|
|
3641
3978
|
);
|
|
@@ -3646,7 +3983,7 @@ function SelectContent({
|
|
|
3646
3983
|
position = "popper",
|
|
3647
3984
|
...props
|
|
3648
3985
|
}) {
|
|
3649
|
-
return /* @__PURE__ */
|
|
3986
|
+
return /* @__PURE__ */ jsx37(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs19(
|
|
3650
3987
|
SelectPrimitive.Content,
|
|
3651
3988
|
{
|
|
3652
3989
|
"data-slot": "select-content",
|
|
@@ -3658,8 +3995,8 @@ function SelectContent({
|
|
|
3658
3995
|
position,
|
|
3659
3996
|
...props,
|
|
3660
3997
|
children: [
|
|
3661
|
-
/* @__PURE__ */
|
|
3662
|
-
/* @__PURE__ */
|
|
3998
|
+
/* @__PURE__ */ jsx37(SelectScrollUpButton, {}),
|
|
3999
|
+
/* @__PURE__ */ jsx37(
|
|
3663
4000
|
SelectPrimitive.Viewport,
|
|
3664
4001
|
{
|
|
3665
4002
|
className: cn(
|
|
@@ -3669,7 +4006,7 @@ function SelectContent({
|
|
|
3669
4006
|
children
|
|
3670
4007
|
}
|
|
3671
4008
|
),
|
|
3672
|
-
/* @__PURE__ */
|
|
4009
|
+
/* @__PURE__ */ jsx37(SelectScrollDownButton, {})
|
|
3673
4010
|
]
|
|
3674
4011
|
}
|
|
3675
4012
|
) });
|
|
@@ -3678,7 +4015,7 @@ function SelectLabel({
|
|
|
3678
4015
|
className,
|
|
3679
4016
|
...props
|
|
3680
4017
|
}) {
|
|
3681
|
-
return /* @__PURE__ */
|
|
4018
|
+
return /* @__PURE__ */ jsx37(
|
|
3682
4019
|
SelectPrimitive.Label,
|
|
3683
4020
|
{
|
|
3684
4021
|
"data-slot": "select-label",
|
|
@@ -3692,7 +4029,7 @@ function SelectItem({
|
|
|
3692
4029
|
children,
|
|
3693
4030
|
...props
|
|
3694
4031
|
}) {
|
|
3695
|
-
return /* @__PURE__ */
|
|
4032
|
+
return /* @__PURE__ */ jsxs19(
|
|
3696
4033
|
SelectPrimitive.Item,
|
|
3697
4034
|
{
|
|
3698
4035
|
"data-slot": "select-item",
|
|
@@ -3702,8 +4039,8 @@ function SelectItem({
|
|
|
3702
4039
|
),
|
|
3703
4040
|
...props,
|
|
3704
4041
|
children: [
|
|
3705
|
-
/* @__PURE__ */
|
|
3706
|
-
/* @__PURE__ */
|
|
4042
|
+
/* @__PURE__ */ jsx37("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx37(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx37(CheckIcon4, { className: "size-4" }) }) }),
|
|
4043
|
+
/* @__PURE__ */ jsx37(SelectPrimitive.ItemText, { children })
|
|
3707
4044
|
]
|
|
3708
4045
|
}
|
|
3709
4046
|
);
|
|
@@ -3712,7 +4049,7 @@ function SelectSeparator({
|
|
|
3712
4049
|
className,
|
|
3713
4050
|
...props
|
|
3714
4051
|
}) {
|
|
3715
|
-
return /* @__PURE__ */
|
|
4052
|
+
return /* @__PURE__ */ jsx37(
|
|
3716
4053
|
SelectPrimitive.Separator,
|
|
3717
4054
|
{
|
|
3718
4055
|
"data-slot": "select-separator",
|
|
@@ -3725,7 +4062,7 @@ function SelectScrollUpButton({
|
|
|
3725
4062
|
className,
|
|
3726
4063
|
...props
|
|
3727
4064
|
}) {
|
|
3728
|
-
return /* @__PURE__ */
|
|
4065
|
+
return /* @__PURE__ */ jsx37(
|
|
3729
4066
|
SelectPrimitive.ScrollUpButton,
|
|
3730
4067
|
{
|
|
3731
4068
|
"data-slot": "select-scroll-up-button",
|
|
@@ -3734,7 +4071,7 @@ function SelectScrollUpButton({
|
|
|
3734
4071
|
className
|
|
3735
4072
|
),
|
|
3736
4073
|
...props,
|
|
3737
|
-
children: /* @__PURE__ */
|
|
4074
|
+
children: /* @__PURE__ */ jsx37(ChevronUpIcon, { className: "size-4" })
|
|
3738
4075
|
}
|
|
3739
4076
|
);
|
|
3740
4077
|
}
|
|
@@ -3742,7 +4079,7 @@ function SelectScrollDownButton({
|
|
|
3742
4079
|
className,
|
|
3743
4080
|
...props
|
|
3744
4081
|
}) {
|
|
3745
|
-
return /* @__PURE__ */
|
|
4082
|
+
return /* @__PURE__ */ jsx37(
|
|
3746
4083
|
SelectPrimitive.ScrollDownButton,
|
|
3747
4084
|
{
|
|
3748
4085
|
"data-slot": "select-scroll-down-button",
|
|
@@ -3751,7 +4088,7 @@ function SelectScrollDownButton({
|
|
|
3751
4088
|
className
|
|
3752
4089
|
),
|
|
3753
4090
|
...props,
|
|
3754
|
-
children: /* @__PURE__ */
|
|
4091
|
+
children: /* @__PURE__ */ jsx37(ChevronDownIcon4, { className: "size-4" })
|
|
3755
4092
|
}
|
|
3756
4093
|
);
|
|
3757
4094
|
}
|
|
@@ -3759,14 +4096,14 @@ function SelectScrollDownButton({
|
|
|
3759
4096
|
// src/components/ui/separator.tsx
|
|
3760
4097
|
import "react";
|
|
3761
4098
|
import * as SeparatorPrimitive from "@radix-ui/react-separator";
|
|
3762
|
-
import { jsx as
|
|
4099
|
+
import { jsx as jsx38 } from "react/jsx-runtime";
|
|
3763
4100
|
function Separator5({
|
|
3764
4101
|
className,
|
|
3765
4102
|
orientation = "horizontal",
|
|
3766
4103
|
decorative = true,
|
|
3767
4104
|
...props
|
|
3768
4105
|
}) {
|
|
3769
|
-
return /* @__PURE__ */
|
|
4106
|
+
return /* @__PURE__ */ jsx38(
|
|
3770
4107
|
SeparatorPrimitive.Root,
|
|
3771
4108
|
{
|
|
3772
4109
|
"data-slot": "separator",
|
|
@@ -3785,30 +4122,30 @@ function Separator5({
|
|
|
3785
4122
|
import * as SheetPrimitive from "@radix-ui/react-dialog";
|
|
3786
4123
|
import { XIcon as XIcon2 } from "lucide-react";
|
|
3787
4124
|
import "react";
|
|
3788
|
-
import { jsx as
|
|
4125
|
+
import { jsx as jsx39, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
3789
4126
|
function Sheet({ ...props }) {
|
|
3790
|
-
return /* @__PURE__ */
|
|
4127
|
+
return /* @__PURE__ */ jsx39(SheetPrimitive.Root, { "data-slot": "sheet", ...props });
|
|
3791
4128
|
}
|
|
3792
4129
|
function SheetTrigger({
|
|
3793
4130
|
...props
|
|
3794
4131
|
}) {
|
|
3795
|
-
return /* @__PURE__ */
|
|
4132
|
+
return /* @__PURE__ */ jsx39(SheetPrimitive.Trigger, { "data-slot": "sheet-trigger", ...props });
|
|
3796
4133
|
}
|
|
3797
4134
|
function SheetClose({
|
|
3798
4135
|
...props
|
|
3799
4136
|
}) {
|
|
3800
|
-
return /* @__PURE__ */
|
|
4137
|
+
return /* @__PURE__ */ jsx39(SheetPrimitive.Close, { "data-slot": "sheet-close", ...props });
|
|
3801
4138
|
}
|
|
3802
4139
|
function SheetPortal({
|
|
3803
4140
|
...props
|
|
3804
4141
|
}) {
|
|
3805
|
-
return /* @__PURE__ */
|
|
4142
|
+
return /* @__PURE__ */ jsx39(SheetPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
|
|
3806
4143
|
}
|
|
3807
4144
|
function SheetOverlay({
|
|
3808
4145
|
className,
|
|
3809
4146
|
...props
|
|
3810
4147
|
}) {
|
|
3811
|
-
return /* @__PURE__ */
|
|
4148
|
+
return /* @__PURE__ */ jsx39(
|
|
3812
4149
|
SheetPrimitive.Overlay,
|
|
3813
4150
|
{
|
|
3814
4151
|
"data-slot": "sheet-overlay",
|
|
@@ -3827,9 +4164,9 @@ function SheetContent({
|
|
|
3827
4164
|
showCloseButton = true,
|
|
3828
4165
|
...props
|
|
3829
4166
|
}) {
|
|
3830
|
-
return /* @__PURE__ */
|
|
3831
|
-
/* @__PURE__ */
|
|
3832
|
-
/* @__PURE__ */
|
|
4167
|
+
return /* @__PURE__ */ jsxs20(SheetPortal, { children: [
|
|
4168
|
+
/* @__PURE__ */ jsx39(SheetOverlay, {}),
|
|
4169
|
+
/* @__PURE__ */ jsxs20(
|
|
3833
4170
|
SheetPrimitive.Content,
|
|
3834
4171
|
{
|
|
3835
4172
|
"data-slot": "sheet-content",
|
|
@@ -3844,9 +4181,9 @@ function SheetContent({
|
|
|
3844
4181
|
...props,
|
|
3845
4182
|
children: [
|
|
3846
4183
|
children,
|
|
3847
|
-
showCloseButton && /* @__PURE__ */
|
|
3848
|
-
/* @__PURE__ */
|
|
3849
|
-
/* @__PURE__ */
|
|
4184
|
+
showCloseButton && /* @__PURE__ */ jsxs20(SheetPrimitive.Close, { className: "ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none", children: [
|
|
4185
|
+
/* @__PURE__ */ jsx39(XIcon2, { className: "size-4" }),
|
|
4186
|
+
/* @__PURE__ */ jsx39("span", { className: "sr-only", children: "Close" })
|
|
3850
4187
|
] })
|
|
3851
4188
|
]
|
|
3852
4189
|
}
|
|
@@ -3854,7 +4191,7 @@ function SheetContent({
|
|
|
3854
4191
|
] });
|
|
3855
4192
|
}
|
|
3856
4193
|
function SheetHeader({ className, ...props }) {
|
|
3857
|
-
return /* @__PURE__ */
|
|
4194
|
+
return /* @__PURE__ */ jsx39(
|
|
3858
4195
|
"div",
|
|
3859
4196
|
{
|
|
3860
4197
|
"data-slot": "sheet-header",
|
|
@@ -3864,7 +4201,7 @@ function SheetHeader({ className, ...props }) {
|
|
|
3864
4201
|
);
|
|
3865
4202
|
}
|
|
3866
4203
|
function SheetFooter({ className, ...props }) {
|
|
3867
|
-
return /* @__PURE__ */
|
|
4204
|
+
return /* @__PURE__ */ jsx39(
|
|
3868
4205
|
"div",
|
|
3869
4206
|
{
|
|
3870
4207
|
"data-slot": "sheet-footer",
|
|
@@ -3877,7 +4214,7 @@ function SheetTitle({
|
|
|
3877
4214
|
className,
|
|
3878
4215
|
...props
|
|
3879
4216
|
}) {
|
|
3880
|
-
return /* @__PURE__ */
|
|
4217
|
+
return /* @__PURE__ */ jsx39(
|
|
3881
4218
|
SheetPrimitive.Title,
|
|
3882
4219
|
{
|
|
3883
4220
|
"data-slot": "sheet-title",
|
|
@@ -3890,7 +4227,7 @@ function SheetDescription({
|
|
|
3890
4227
|
className,
|
|
3891
4228
|
...props
|
|
3892
4229
|
}) {
|
|
3893
|
-
return /* @__PURE__ */
|
|
4230
|
+
return /* @__PURE__ */ jsx39(
|
|
3894
4231
|
SheetPrimitive.Description,
|
|
3895
4232
|
{
|
|
3896
4233
|
"data-slot": "sheet-description",
|
|
@@ -3904,12 +4241,12 @@ function SheetDescription({
|
|
|
3904
4241
|
import { Slot as Slot6 } from "@radix-ui/react-slot";
|
|
3905
4242
|
import { cva as cva7 } from "class-variance-authority";
|
|
3906
4243
|
import { PanelLeftIcon } from "lucide-react";
|
|
3907
|
-
import * as
|
|
4244
|
+
import * as React40 from "react";
|
|
3908
4245
|
|
|
3909
4246
|
// src/components/ui/skeleton.tsx
|
|
3910
|
-
import { jsx as
|
|
4247
|
+
import { jsx as jsx40 } from "react/jsx-runtime";
|
|
3911
4248
|
function Skeleton({ className, ...props }) {
|
|
3912
|
-
return /* @__PURE__ */
|
|
4249
|
+
return /* @__PURE__ */ jsx40(
|
|
3913
4250
|
"div",
|
|
3914
4251
|
{
|
|
3915
4252
|
"data-slot": "skeleton",
|
|
@@ -3922,12 +4259,12 @@ function Skeleton({ className, ...props }) {
|
|
|
3922
4259
|
// src/components/ui/tooltip.tsx
|
|
3923
4260
|
import "react";
|
|
3924
4261
|
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
3925
|
-
import { jsx as
|
|
4262
|
+
import { jsx as jsx41, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
3926
4263
|
function TooltipProvider({
|
|
3927
4264
|
delayDuration = 0,
|
|
3928
4265
|
...props
|
|
3929
4266
|
}) {
|
|
3930
|
-
return /* @__PURE__ */
|
|
4267
|
+
return /* @__PURE__ */ jsx41(
|
|
3931
4268
|
TooltipPrimitive.Provider,
|
|
3932
4269
|
{
|
|
3933
4270
|
"data-slot": "tooltip-provider",
|
|
@@ -3939,12 +4276,12 @@ function TooltipProvider({
|
|
|
3939
4276
|
function Tooltip2({
|
|
3940
4277
|
...props
|
|
3941
4278
|
}) {
|
|
3942
|
-
return /* @__PURE__ */
|
|
4279
|
+
return /* @__PURE__ */ jsx41(TooltipProvider, { children: /* @__PURE__ */ jsx41(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props }) });
|
|
3943
4280
|
}
|
|
3944
4281
|
function TooltipTrigger({
|
|
3945
4282
|
...props
|
|
3946
4283
|
}) {
|
|
3947
|
-
return /* @__PURE__ */
|
|
4284
|
+
return /* @__PURE__ */ jsx41(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
|
|
3948
4285
|
}
|
|
3949
4286
|
function TooltipContent({
|
|
3950
4287
|
className,
|
|
@@ -3952,7 +4289,7 @@ function TooltipContent({
|
|
|
3952
4289
|
children,
|
|
3953
4290
|
...props
|
|
3954
4291
|
}) {
|
|
3955
|
-
return /* @__PURE__ */
|
|
4292
|
+
return /* @__PURE__ */ jsx41(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs21(
|
|
3956
4293
|
TooltipPrimitive.Content,
|
|
3957
4294
|
{
|
|
3958
4295
|
"data-slot": "tooltip-content",
|
|
@@ -3964,18 +4301,18 @@ function TooltipContent({
|
|
|
3964
4301
|
...props,
|
|
3965
4302
|
children: [
|
|
3966
4303
|
children,
|
|
3967
|
-
/* @__PURE__ */
|
|
4304
|
+
/* @__PURE__ */ jsx41(TooltipPrimitive.Arrow, { className: "bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })
|
|
3968
4305
|
]
|
|
3969
4306
|
}
|
|
3970
4307
|
) });
|
|
3971
4308
|
}
|
|
3972
4309
|
|
|
3973
4310
|
// src/hooks/use-mobile.ts
|
|
3974
|
-
import * as
|
|
4311
|
+
import * as React39 from "react";
|
|
3975
4312
|
var MOBILE_BREAKPOINT = 768;
|
|
3976
4313
|
function useIsMobile() {
|
|
3977
|
-
const [isMobile, setIsMobile] =
|
|
3978
|
-
|
|
4314
|
+
const [isMobile, setIsMobile] = React39.useState(void 0);
|
|
4315
|
+
React39.useEffect(() => {
|
|
3979
4316
|
const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
|
|
3980
4317
|
const onChange = () => {
|
|
3981
4318
|
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
@@ -3988,16 +4325,16 @@ function useIsMobile() {
|
|
|
3988
4325
|
}
|
|
3989
4326
|
|
|
3990
4327
|
// src/components/ui/sidebar.tsx
|
|
3991
|
-
import { jsx as
|
|
4328
|
+
import { jsx as jsx42, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
3992
4329
|
var SIDEBAR_COOKIE_NAME = "sidebar_state";
|
|
3993
4330
|
var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
|
|
3994
4331
|
var SIDEBAR_WIDTH = "18rem";
|
|
3995
4332
|
var SIDEBAR_WIDTH_MOBILE = "18rem";
|
|
3996
4333
|
var SIDEBAR_WIDTH_ICON = "3rem";
|
|
3997
4334
|
var SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
3998
|
-
var SidebarContext =
|
|
4335
|
+
var SidebarContext = React40.createContext(null);
|
|
3999
4336
|
function useSidebar() {
|
|
4000
|
-
const context =
|
|
4337
|
+
const context = React40.useContext(SidebarContext);
|
|
4001
4338
|
if (!context) {
|
|
4002
4339
|
throw new Error("useSidebar must be used within a SidebarProvider.");
|
|
4003
4340
|
}
|
|
@@ -4013,10 +4350,10 @@ function SidebarProvider({
|
|
|
4013
4350
|
...props
|
|
4014
4351
|
}) {
|
|
4015
4352
|
const isMobile = useIsMobile();
|
|
4016
|
-
const [openMobile, setOpenMobile] =
|
|
4017
|
-
const [_open, _setOpen] =
|
|
4353
|
+
const [openMobile, setOpenMobile] = React40.useState(false);
|
|
4354
|
+
const [_open, _setOpen] = React40.useState(defaultOpen);
|
|
4018
4355
|
const open = openProp ?? _open;
|
|
4019
|
-
const setOpen =
|
|
4356
|
+
const setOpen = React40.useCallback(
|
|
4020
4357
|
(value) => {
|
|
4021
4358
|
const openState = typeof value === "function" ? value(open) : value;
|
|
4022
4359
|
if (setOpenProp) {
|
|
@@ -4028,10 +4365,10 @@ function SidebarProvider({
|
|
|
4028
4365
|
},
|
|
4029
4366
|
[setOpenProp, open]
|
|
4030
4367
|
);
|
|
4031
|
-
const toggleSidebar =
|
|
4368
|
+
const toggleSidebar = React40.useCallback(() => {
|
|
4032
4369
|
return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
|
|
4033
4370
|
}, [isMobile, setOpen, setOpenMobile]);
|
|
4034
|
-
|
|
4371
|
+
React40.useEffect(() => {
|
|
4035
4372
|
const handleKeyDown = (event) => {
|
|
4036
4373
|
if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
|
|
4037
4374
|
event.preventDefault();
|
|
@@ -4042,7 +4379,7 @@ function SidebarProvider({
|
|
|
4042
4379
|
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
4043
4380
|
}, [toggleSidebar]);
|
|
4044
4381
|
const state = open ? "expanded" : "collapsed";
|
|
4045
|
-
const contextValue =
|
|
4382
|
+
const contextValue = React40.useMemo(
|
|
4046
4383
|
() => ({
|
|
4047
4384
|
state,
|
|
4048
4385
|
open,
|
|
@@ -4054,7 +4391,7 @@ function SidebarProvider({
|
|
|
4054
4391
|
}),
|
|
4055
4392
|
[state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
|
|
4056
4393
|
);
|
|
4057
|
-
return /* @__PURE__ */
|
|
4394
|
+
return /* @__PURE__ */ jsx42(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx42(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx42(
|
|
4058
4395
|
"div",
|
|
4059
4396
|
{
|
|
4060
4397
|
"data-slot": "sidebar-wrapper",
|
|
@@ -4082,7 +4419,7 @@ function Sidebar({
|
|
|
4082
4419
|
}) {
|
|
4083
4420
|
const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
|
|
4084
4421
|
if (collapsible === "none") {
|
|
4085
|
-
return /* @__PURE__ */
|
|
4422
|
+
return /* @__PURE__ */ jsx42(
|
|
4086
4423
|
"div",
|
|
4087
4424
|
{
|
|
4088
4425
|
"data-slot": "sidebar",
|
|
@@ -4096,7 +4433,7 @@ function Sidebar({
|
|
|
4096
4433
|
);
|
|
4097
4434
|
}
|
|
4098
4435
|
if (isMobile) {
|
|
4099
|
-
return /* @__PURE__ */
|
|
4436
|
+
return /* @__PURE__ */ jsx42(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxs22(
|
|
4100
4437
|
SheetContent,
|
|
4101
4438
|
{
|
|
4102
4439
|
"data-sidebar": "sidebar",
|
|
@@ -4108,16 +4445,16 @@ function Sidebar({
|
|
|
4108
4445
|
},
|
|
4109
4446
|
side,
|
|
4110
4447
|
children: [
|
|
4111
|
-
/* @__PURE__ */
|
|
4112
|
-
/* @__PURE__ */
|
|
4113
|
-
/* @__PURE__ */
|
|
4448
|
+
/* @__PURE__ */ jsxs22(SheetHeader, { className: "sr-only", children: [
|
|
4449
|
+
/* @__PURE__ */ jsx42(SheetTitle, { children: "Sidebar" }),
|
|
4450
|
+
/* @__PURE__ */ jsx42(SheetDescription, { children: "Displays the mobile sidebar." })
|
|
4114
4451
|
] }),
|
|
4115
|
-
/* @__PURE__ */
|
|
4452
|
+
/* @__PURE__ */ jsx42("div", { className: "flex h-full w-full flex-col", children })
|
|
4116
4453
|
]
|
|
4117
4454
|
}
|
|
4118
4455
|
) });
|
|
4119
4456
|
}
|
|
4120
|
-
return /* @__PURE__ */
|
|
4457
|
+
return /* @__PURE__ */ jsxs22(
|
|
4121
4458
|
"div",
|
|
4122
4459
|
{
|
|
4123
4460
|
className: "group peer text-sidebar-foreground hidden md:block",
|
|
@@ -4127,7 +4464,7 @@ function Sidebar({
|
|
|
4127
4464
|
"data-side": side,
|
|
4128
4465
|
"data-slot": "sidebar",
|
|
4129
4466
|
children: [
|
|
4130
|
-
/* @__PURE__ */
|
|
4467
|
+
/* @__PURE__ */ jsx42(
|
|
4131
4468
|
"div",
|
|
4132
4469
|
{
|
|
4133
4470
|
"data-slot": "sidebar-gap",
|
|
@@ -4139,7 +4476,7 @@ function Sidebar({
|
|
|
4139
4476
|
)
|
|
4140
4477
|
}
|
|
4141
4478
|
),
|
|
4142
|
-
/* @__PURE__ */
|
|
4479
|
+
/* @__PURE__ */ jsx42(
|
|
4143
4480
|
"div",
|
|
4144
4481
|
{
|
|
4145
4482
|
"data-slot": "sidebar-container",
|
|
@@ -4151,7 +4488,7 @@ function Sidebar({
|
|
|
4151
4488
|
className
|
|
4152
4489
|
),
|
|
4153
4490
|
...props,
|
|
4154
|
-
children: /* @__PURE__ */
|
|
4491
|
+
children: /* @__PURE__ */ jsx42(
|
|
4155
4492
|
"div",
|
|
4156
4493
|
{
|
|
4157
4494
|
"data-sidebar": "sidebar",
|
|
@@ -4172,7 +4509,7 @@ function SidebarTrigger({
|
|
|
4172
4509
|
...props
|
|
4173
4510
|
}) {
|
|
4174
4511
|
const { toggleSidebar } = useSidebar();
|
|
4175
|
-
return /* @__PURE__ */
|
|
4512
|
+
return /* @__PURE__ */ jsxs22(
|
|
4176
4513
|
Button,
|
|
4177
4514
|
{
|
|
4178
4515
|
"data-sidebar": "trigger",
|
|
@@ -4186,15 +4523,15 @@ function SidebarTrigger({
|
|
|
4186
4523
|
},
|
|
4187
4524
|
...props,
|
|
4188
4525
|
children: [
|
|
4189
|
-
/* @__PURE__ */
|
|
4190
|
-
/* @__PURE__ */
|
|
4526
|
+
/* @__PURE__ */ jsx42(PanelLeftIcon, {}),
|
|
4527
|
+
/* @__PURE__ */ jsx42("span", { className: "sr-only", children: "Toggle Sidebar" })
|
|
4191
4528
|
]
|
|
4192
4529
|
}
|
|
4193
4530
|
);
|
|
4194
4531
|
}
|
|
4195
4532
|
function SidebarRail({ className, ...props }) {
|
|
4196
4533
|
const { toggleSidebar } = useSidebar();
|
|
4197
|
-
return /* @__PURE__ */
|
|
4534
|
+
return /* @__PURE__ */ jsx42(
|
|
4198
4535
|
"button",
|
|
4199
4536
|
{
|
|
4200
4537
|
"data-sidebar": "rail",
|
|
@@ -4217,7 +4554,7 @@ function SidebarRail({ className, ...props }) {
|
|
|
4217
4554
|
);
|
|
4218
4555
|
}
|
|
4219
4556
|
function SidebarInset({ className, ...props }) {
|
|
4220
|
-
return /* @__PURE__ */
|
|
4557
|
+
return /* @__PURE__ */ jsx42(
|
|
4221
4558
|
"main",
|
|
4222
4559
|
{
|
|
4223
4560
|
"data-slot": "sidebar-inset",
|
|
@@ -4234,7 +4571,7 @@ function SidebarInput({
|
|
|
4234
4571
|
className,
|
|
4235
4572
|
...props
|
|
4236
4573
|
}) {
|
|
4237
|
-
return /* @__PURE__ */
|
|
4574
|
+
return /* @__PURE__ */ jsx42(
|
|
4238
4575
|
Input,
|
|
4239
4576
|
{
|
|
4240
4577
|
"data-slot": "sidebar-input",
|
|
@@ -4245,7 +4582,7 @@ function SidebarInput({
|
|
|
4245
4582
|
);
|
|
4246
4583
|
}
|
|
4247
4584
|
function SidebarHeader({ className, ...props }) {
|
|
4248
|
-
return /* @__PURE__ */
|
|
4585
|
+
return /* @__PURE__ */ jsx42(
|
|
4249
4586
|
"div",
|
|
4250
4587
|
{
|
|
4251
4588
|
"data-slot": "sidebar-header",
|
|
@@ -4256,7 +4593,7 @@ function SidebarHeader({ className, ...props }) {
|
|
|
4256
4593
|
);
|
|
4257
4594
|
}
|
|
4258
4595
|
function SidebarFooter({ className, ...props }) {
|
|
4259
|
-
return /* @__PURE__ */
|
|
4596
|
+
return /* @__PURE__ */ jsx42(
|
|
4260
4597
|
"div",
|
|
4261
4598
|
{
|
|
4262
4599
|
"data-slot": "sidebar-footer",
|
|
@@ -4270,7 +4607,7 @@ function SidebarSeparator({
|
|
|
4270
4607
|
className,
|
|
4271
4608
|
...props
|
|
4272
4609
|
}) {
|
|
4273
|
-
return /* @__PURE__ */
|
|
4610
|
+
return /* @__PURE__ */ jsx42(
|
|
4274
4611
|
Separator5,
|
|
4275
4612
|
{
|
|
4276
4613
|
"data-slot": "sidebar-separator",
|
|
@@ -4281,7 +4618,7 @@ function SidebarSeparator({
|
|
|
4281
4618
|
);
|
|
4282
4619
|
}
|
|
4283
4620
|
function SidebarContent({ className, ...props }) {
|
|
4284
|
-
return /* @__PURE__ */
|
|
4621
|
+
return /* @__PURE__ */ jsx42(
|
|
4285
4622
|
"div",
|
|
4286
4623
|
{
|
|
4287
4624
|
"data-slot": "sidebar-content",
|
|
@@ -4295,7 +4632,7 @@ function SidebarContent({ className, ...props }) {
|
|
|
4295
4632
|
);
|
|
4296
4633
|
}
|
|
4297
4634
|
function SidebarGroup({ className, ...props }) {
|
|
4298
|
-
return /* @__PURE__ */
|
|
4635
|
+
return /* @__PURE__ */ jsx42(
|
|
4299
4636
|
"div",
|
|
4300
4637
|
{
|
|
4301
4638
|
"data-slot": "sidebar-group",
|
|
@@ -4311,7 +4648,7 @@ function SidebarGroupLabel({
|
|
|
4311
4648
|
...props
|
|
4312
4649
|
}) {
|
|
4313
4650
|
const Comp = asChild ? Slot6 : "div";
|
|
4314
|
-
return /* @__PURE__ */
|
|
4651
|
+
return /* @__PURE__ */ jsx42(
|
|
4315
4652
|
Comp,
|
|
4316
4653
|
{
|
|
4317
4654
|
"data-slot": "sidebar-group-label",
|
|
@@ -4331,7 +4668,7 @@ function SidebarGroupAction({
|
|
|
4331
4668
|
...props
|
|
4332
4669
|
}) {
|
|
4333
4670
|
const Comp = asChild ? Slot6 : "button";
|
|
4334
|
-
return /* @__PURE__ */
|
|
4671
|
+
return /* @__PURE__ */ jsx42(
|
|
4335
4672
|
Comp,
|
|
4336
4673
|
{
|
|
4337
4674
|
"data-slot": "sidebar-group-action",
|
|
@@ -4351,7 +4688,7 @@ function SidebarGroupContent({
|
|
|
4351
4688
|
className,
|
|
4352
4689
|
...props
|
|
4353
4690
|
}) {
|
|
4354
|
-
return /* @__PURE__ */
|
|
4691
|
+
return /* @__PURE__ */ jsx42(
|
|
4355
4692
|
"div",
|
|
4356
4693
|
{
|
|
4357
4694
|
"data-slot": "sidebar-group-content",
|
|
@@ -4362,7 +4699,7 @@ function SidebarGroupContent({
|
|
|
4362
4699
|
);
|
|
4363
4700
|
}
|
|
4364
4701
|
function SidebarMenu({ className, ...props }) {
|
|
4365
|
-
return /* @__PURE__ */
|
|
4702
|
+
return /* @__PURE__ */ jsx42(
|
|
4366
4703
|
"ul",
|
|
4367
4704
|
{
|
|
4368
4705
|
"data-slot": "sidebar-menu",
|
|
@@ -4373,7 +4710,7 @@ function SidebarMenu({ className, ...props }) {
|
|
|
4373
4710
|
);
|
|
4374
4711
|
}
|
|
4375
4712
|
function SidebarMenuItem({ className, ...props }) {
|
|
4376
|
-
return /* @__PURE__ */
|
|
4713
|
+
return /* @__PURE__ */ jsx42(
|
|
4377
4714
|
"li",
|
|
4378
4715
|
{
|
|
4379
4716
|
"data-slot": "sidebar-menu-item",
|
|
@@ -4414,7 +4751,7 @@ function SidebarMenuButton({
|
|
|
4414
4751
|
}) {
|
|
4415
4752
|
const Comp = asChild ? Slot6 : "button";
|
|
4416
4753
|
const { isMobile, state } = useSidebar();
|
|
4417
|
-
const button = /* @__PURE__ */
|
|
4754
|
+
const button = /* @__PURE__ */ jsx42(
|
|
4418
4755
|
Comp,
|
|
4419
4756
|
{
|
|
4420
4757
|
"data-slot": "sidebar-menu-button",
|
|
@@ -4433,9 +4770,9 @@ function SidebarMenuButton({
|
|
|
4433
4770
|
children: tooltip
|
|
4434
4771
|
};
|
|
4435
4772
|
}
|
|
4436
|
-
return /* @__PURE__ */
|
|
4437
|
-
/* @__PURE__ */
|
|
4438
|
-
/* @__PURE__ */
|
|
4773
|
+
return /* @__PURE__ */ jsxs22(Tooltip2, { children: [
|
|
4774
|
+
/* @__PURE__ */ jsx42(TooltipTrigger, { asChild: true, children: button }),
|
|
4775
|
+
/* @__PURE__ */ jsx42(
|
|
4439
4776
|
TooltipContent,
|
|
4440
4777
|
{
|
|
4441
4778
|
side: "right",
|
|
@@ -4453,7 +4790,7 @@ function SidebarMenuAction({
|
|
|
4453
4790
|
...props
|
|
4454
4791
|
}) {
|
|
4455
4792
|
const Comp = asChild ? Slot6 : "button";
|
|
4456
|
-
return /* @__PURE__ */
|
|
4793
|
+
return /* @__PURE__ */ jsx42(
|
|
4457
4794
|
Comp,
|
|
4458
4795
|
{
|
|
4459
4796
|
"data-slot": "sidebar-menu-action",
|
|
@@ -4477,7 +4814,7 @@ function SidebarMenuBadge({
|
|
|
4477
4814
|
className,
|
|
4478
4815
|
...props
|
|
4479
4816
|
}) {
|
|
4480
|
-
return /* @__PURE__ */
|
|
4817
|
+
return /* @__PURE__ */ jsx42(
|
|
4481
4818
|
"div",
|
|
4482
4819
|
{
|
|
4483
4820
|
"data-slot": "sidebar-menu-badge",
|
|
@@ -4500,10 +4837,10 @@ function SidebarMenuSkeleton({
|
|
|
4500
4837
|
showIcon = false,
|
|
4501
4838
|
...props
|
|
4502
4839
|
}) {
|
|
4503
|
-
const width =
|
|
4840
|
+
const width = React40.useMemo(() => {
|
|
4504
4841
|
return `${Math.floor(Math.random() * 40) + 50}%`;
|
|
4505
4842
|
}, []);
|
|
4506
|
-
return /* @__PURE__ */
|
|
4843
|
+
return /* @__PURE__ */ jsxs22(
|
|
4507
4844
|
"div",
|
|
4508
4845
|
{
|
|
4509
4846
|
"data-slot": "sidebar-menu-skeleton",
|
|
@@ -4511,14 +4848,14 @@ function SidebarMenuSkeleton({
|
|
|
4511
4848
|
className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
|
|
4512
4849
|
...props,
|
|
4513
4850
|
children: [
|
|
4514
|
-
showIcon && /* @__PURE__ */
|
|
4851
|
+
showIcon && /* @__PURE__ */ jsx42(
|
|
4515
4852
|
Skeleton,
|
|
4516
4853
|
{
|
|
4517
4854
|
className: "size-4 rounded-md",
|
|
4518
4855
|
"data-sidebar": "menu-skeleton-icon"
|
|
4519
4856
|
}
|
|
4520
4857
|
),
|
|
4521
|
-
/* @__PURE__ */
|
|
4858
|
+
/* @__PURE__ */ jsx42(
|
|
4522
4859
|
Skeleton,
|
|
4523
4860
|
{
|
|
4524
4861
|
className: "h-4 max-w-(--skeleton-width) flex-1",
|
|
@@ -4533,7 +4870,7 @@ function SidebarMenuSkeleton({
|
|
|
4533
4870
|
);
|
|
4534
4871
|
}
|
|
4535
4872
|
function SidebarMenuSub({ className, ...props }) {
|
|
4536
|
-
return /* @__PURE__ */
|
|
4873
|
+
return /* @__PURE__ */ jsx42(
|
|
4537
4874
|
"ul",
|
|
4538
4875
|
{
|
|
4539
4876
|
"data-slot": "sidebar-menu-sub",
|
|
@@ -4551,7 +4888,7 @@ function SidebarMenuSubItem({
|
|
|
4551
4888
|
className,
|
|
4552
4889
|
...props
|
|
4553
4890
|
}) {
|
|
4554
|
-
return /* @__PURE__ */
|
|
4891
|
+
return /* @__PURE__ */ jsx42(
|
|
4555
4892
|
"li",
|
|
4556
4893
|
{
|
|
4557
4894
|
"data-slot": "sidebar-menu-sub-item",
|
|
@@ -4569,7 +4906,7 @@ function SidebarMenuSubButton({
|
|
|
4569
4906
|
...props
|
|
4570
4907
|
}) {
|
|
4571
4908
|
const Comp = asChild ? Slot6 : "a";
|
|
4572
|
-
return /* @__PURE__ */
|
|
4909
|
+
return /* @__PURE__ */ jsx42(
|
|
4573
4910
|
Comp,
|
|
4574
4911
|
{
|
|
4575
4912
|
"data-slot": "sidebar-menu-sub-button",
|
|
@@ -4590,9 +4927,9 @@ function SidebarMenuSubButton({
|
|
|
4590
4927
|
}
|
|
4591
4928
|
|
|
4592
4929
|
// src/components/ui/slider.tsx
|
|
4593
|
-
import * as
|
|
4930
|
+
import * as React41 from "react";
|
|
4594
4931
|
import * as SliderPrimitive from "@radix-ui/react-slider";
|
|
4595
|
-
import { jsx as
|
|
4932
|
+
import { jsx as jsx43, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
4596
4933
|
function Slider({
|
|
4597
4934
|
className,
|
|
4598
4935
|
defaultValue,
|
|
@@ -4601,11 +4938,11 @@ function Slider({
|
|
|
4601
4938
|
max = 100,
|
|
4602
4939
|
...props
|
|
4603
4940
|
}) {
|
|
4604
|
-
const _values =
|
|
4941
|
+
const _values = React41.useMemo(
|
|
4605
4942
|
() => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
|
|
4606
4943
|
[value, defaultValue, min, max]
|
|
4607
4944
|
);
|
|
4608
|
-
return /* @__PURE__ */
|
|
4945
|
+
return /* @__PURE__ */ jsxs23(
|
|
4609
4946
|
SliderPrimitive.Root,
|
|
4610
4947
|
{
|
|
4611
4948
|
"data-slot": "slider",
|
|
@@ -4619,14 +4956,14 @@ function Slider({
|
|
|
4619
4956
|
),
|
|
4620
4957
|
...props,
|
|
4621
4958
|
children: [
|
|
4622
|
-
/* @__PURE__ */
|
|
4959
|
+
/* @__PURE__ */ jsx43(
|
|
4623
4960
|
SliderPrimitive.Track,
|
|
4624
4961
|
{
|
|
4625
4962
|
"data-slot": "slider-track",
|
|
4626
4963
|
className: cn(
|
|
4627
4964
|
"bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5"
|
|
4628
4965
|
),
|
|
4629
|
-
children: /* @__PURE__ */
|
|
4966
|
+
children: /* @__PURE__ */ jsx43(
|
|
4630
4967
|
SliderPrimitive.Range,
|
|
4631
4968
|
{
|
|
4632
4969
|
"data-slot": "slider-range",
|
|
@@ -4637,7 +4974,7 @@ function Slider({
|
|
|
4637
4974
|
)
|
|
4638
4975
|
}
|
|
4639
4976
|
),
|
|
4640
|
-
Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */
|
|
4977
|
+
Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx43(
|
|
4641
4978
|
SliderPrimitive.Thumb,
|
|
4642
4979
|
{
|
|
4643
4980
|
"data-slot": "slider-thumb",
|
|
@@ -4654,7 +4991,7 @@ function Slider({
|
|
|
4654
4991
|
import "react";
|
|
4655
4992
|
|
|
4656
4993
|
// src/components/ui/useMediaQuery.ts
|
|
4657
|
-
import { useEffect as
|
|
4994
|
+
import { useEffect as useEffect7, useState as useState6 } from "react";
|
|
4658
4995
|
function useMediaQuery(query) {
|
|
4659
4996
|
const getMatches = (query2) => {
|
|
4660
4997
|
if (typeof window !== "undefined") {
|
|
@@ -4662,11 +4999,11 @@ function useMediaQuery(query) {
|
|
|
4662
4999
|
}
|
|
4663
5000
|
return false;
|
|
4664
5001
|
};
|
|
4665
|
-
const [matches, setMatches] =
|
|
5002
|
+
const [matches, setMatches] = useState6(getMatches(query));
|
|
4666
5003
|
function handleChange() {
|
|
4667
5004
|
setMatches(getMatches(query));
|
|
4668
5005
|
}
|
|
4669
|
-
|
|
5006
|
+
useEffect7(() => {
|
|
4670
5007
|
const matchMedia = window.matchMedia(query);
|
|
4671
5008
|
handleChange();
|
|
4672
5009
|
if (matchMedia.addListener) {
|
|
@@ -4686,10 +5023,10 @@ function useMediaQuery(query) {
|
|
|
4686
5023
|
}
|
|
4687
5024
|
|
|
4688
5025
|
// src/components/ui/smart-dialog-drawer.tsx
|
|
4689
|
-
import { Fragment as Fragment3, jsx as
|
|
5026
|
+
import { Fragment as Fragment3, jsx as jsx44 } from "react/jsx-runtime";
|
|
4690
5027
|
var SmartDialog = ({ children, ...props }) => {
|
|
4691
5028
|
const isMobile = useMediaQuery("(max-width: 600px)");
|
|
4692
|
-
return isMobile ? /* @__PURE__ */
|
|
5029
|
+
return isMobile ? /* @__PURE__ */ jsx44(Drawer, { ...props, children }) : /* @__PURE__ */ jsx44(Dialog, { ...props, children });
|
|
4693
5030
|
};
|
|
4694
5031
|
var SmartDialogContent = ({
|
|
4695
5032
|
children,
|
|
@@ -4699,14 +5036,14 @@ var SmartDialogContent = ({
|
|
|
4699
5036
|
...props
|
|
4700
5037
|
}) => {
|
|
4701
5038
|
const isMobile = useMediaQuery("(max-width: 600px)");
|
|
4702
|
-
return isMobile ? /* @__PURE__ */
|
|
5039
|
+
return isMobile ? /* @__PURE__ */ jsx44(
|
|
4703
5040
|
DrawerContent,
|
|
4704
5041
|
{
|
|
4705
5042
|
...props,
|
|
4706
5043
|
withCloseButton: withCloseButton ?? showCloseButton ?? true,
|
|
4707
5044
|
children
|
|
4708
5045
|
}
|
|
4709
|
-
) : /* @__PURE__ */
|
|
5046
|
+
) : /* @__PURE__ */ jsx44(
|
|
4710
5047
|
DialogContent,
|
|
4711
5048
|
{
|
|
4712
5049
|
...props,
|
|
@@ -4721,39 +5058,39 @@ var SmartDialogDescription = ({
|
|
|
4721
5058
|
...props
|
|
4722
5059
|
}) => {
|
|
4723
5060
|
const isMobile = useMediaQuery("(max-width: 600px)");
|
|
4724
|
-
return isMobile ? /* @__PURE__ */
|
|
5061
|
+
return isMobile ? /* @__PURE__ */ jsx44(DrawerDescription, { ...props, children }) : /* @__PURE__ */ jsx44(DialogDescription, { ...props, children });
|
|
4725
5062
|
};
|
|
4726
5063
|
var SmartDialogHeader = ({ children, ...props }) => {
|
|
4727
5064
|
const isMobile = useMediaQuery("(max-width: 600px)");
|
|
4728
|
-
return isMobile ? /* @__PURE__ */
|
|
5065
|
+
return isMobile ? /* @__PURE__ */ jsx44(DrawerHeader, { ...props, children }) : /* @__PURE__ */ jsx44(DialogHeader, { ...props, children });
|
|
4729
5066
|
};
|
|
4730
5067
|
var SmartDialogTitle = ({ children, ...props }) => {
|
|
4731
5068
|
const isMobile = useMediaQuery("(max-width: 600px)");
|
|
4732
|
-
return isMobile ? /* @__PURE__ */
|
|
5069
|
+
return isMobile ? /* @__PURE__ */ jsx44(DrawerTitle, { ...props, children }) : /* @__PURE__ */ jsx44(DialogTitle, { ...props, children });
|
|
4733
5070
|
};
|
|
4734
5071
|
var SmartDialogTrigger = ({
|
|
4735
5072
|
children,
|
|
4736
5073
|
...props
|
|
4737
5074
|
}) => {
|
|
4738
5075
|
const isMobile = useMediaQuery("(max-width: 600px)");
|
|
4739
|
-
return isMobile ? /* @__PURE__ */
|
|
5076
|
+
return isMobile ? /* @__PURE__ */ jsx44(DrawerTrigger, { ...props, children }) : /* @__PURE__ */ jsx44(DialogTrigger, { ...props, children });
|
|
4740
5077
|
};
|
|
4741
5078
|
var SmartDialogFooter = ({ children, ...props }) => {
|
|
4742
5079
|
const isMobile = useMediaQuery("(max-width: 600px)");
|
|
4743
|
-
return isMobile ? /* @__PURE__ */
|
|
5080
|
+
return isMobile ? /* @__PURE__ */ jsx44(DrawerFooter, { ...props, children }) : /* @__PURE__ */ jsx44(DialogFooter, { ...props, children });
|
|
4744
5081
|
};
|
|
4745
5082
|
var SmartDialogClose = ({ children, ...props }) => {
|
|
4746
5083
|
const isMobile = useMediaQuery("(max-width: 600px)");
|
|
4747
|
-
return isMobile ? /* @__PURE__ */
|
|
5084
|
+
return isMobile ? /* @__PURE__ */ jsx44(Fragment3, { children: /* @__PURE__ */ jsx44(DrawerClose, { ...props, children }) }) : /* @__PURE__ */ jsx44(DialogClose, { ...props, children });
|
|
4748
5085
|
};
|
|
4749
5086
|
|
|
4750
5087
|
// src/components/ui/sonner.tsx
|
|
4751
5088
|
import { useTheme } from "next-themes";
|
|
4752
5089
|
import { Toaster as Sonner } from "sonner";
|
|
4753
|
-
import { jsx as
|
|
5090
|
+
import { jsx as jsx45 } from "react/jsx-runtime";
|
|
4754
5091
|
var Toaster = ({ ...props }) => {
|
|
4755
5092
|
const { theme = "system" } = useTheme();
|
|
4756
|
-
return /* @__PURE__ */
|
|
5093
|
+
return /* @__PURE__ */ jsx45(
|
|
4757
5094
|
Sonner,
|
|
4758
5095
|
{
|
|
4759
5096
|
theme,
|
|
@@ -4771,12 +5108,12 @@ var Toaster = ({ ...props }) => {
|
|
|
4771
5108
|
// src/components/ui/switch.tsx
|
|
4772
5109
|
import * as SwitchPrimitive from "@radix-ui/react-switch";
|
|
4773
5110
|
import "react";
|
|
4774
|
-
import { jsx as
|
|
5111
|
+
import { jsx as jsx46 } from "react/jsx-runtime";
|
|
4775
5112
|
function Switch({
|
|
4776
5113
|
className,
|
|
4777
5114
|
...props
|
|
4778
5115
|
}) {
|
|
4779
|
-
return /* @__PURE__ */
|
|
5116
|
+
return /* @__PURE__ */ jsx46(
|
|
4780
5117
|
SwitchPrimitive.Root,
|
|
4781
5118
|
{
|
|
4782
5119
|
"data-slot": "switch",
|
|
@@ -4785,7 +5122,7 @@ function Switch({
|
|
|
4785
5122
|
className
|
|
4786
5123
|
),
|
|
4787
5124
|
...props,
|
|
4788
|
-
children: /* @__PURE__ */
|
|
5125
|
+
children: /* @__PURE__ */ jsx46(
|
|
4789
5126
|
SwitchPrimitive.Thumb,
|
|
4790
5127
|
{
|
|
4791
5128
|
"data-slot": "switch-thumb",
|
|
@@ -4800,14 +5137,14 @@ function Switch({
|
|
|
4800
5137
|
|
|
4801
5138
|
// src/components/ui/table.tsx
|
|
4802
5139
|
import "react";
|
|
4803
|
-
import { jsx as
|
|
5140
|
+
import { jsx as jsx47 } from "react/jsx-runtime";
|
|
4804
5141
|
function Table({ className, ...props }) {
|
|
4805
|
-
return /* @__PURE__ */
|
|
5142
|
+
return /* @__PURE__ */ jsx47(
|
|
4806
5143
|
"div",
|
|
4807
5144
|
{
|
|
4808
5145
|
"data-slot": "table-container",
|
|
4809
5146
|
className: "relative w-full overflow-x-auto",
|
|
4810
|
-
children: /* @__PURE__ */
|
|
5147
|
+
children: /* @__PURE__ */ jsx47(
|
|
4811
5148
|
"table",
|
|
4812
5149
|
{
|
|
4813
5150
|
"data-slot": "table",
|
|
@@ -4819,7 +5156,7 @@ function Table({ className, ...props }) {
|
|
|
4819
5156
|
);
|
|
4820
5157
|
}
|
|
4821
5158
|
function TableHeader({ className, ...props }) {
|
|
4822
|
-
return /* @__PURE__ */
|
|
5159
|
+
return /* @__PURE__ */ jsx47(
|
|
4823
5160
|
"thead",
|
|
4824
5161
|
{
|
|
4825
5162
|
"data-slot": "table-header",
|
|
@@ -4829,7 +5166,7 @@ function TableHeader({ className, ...props }) {
|
|
|
4829
5166
|
);
|
|
4830
5167
|
}
|
|
4831
5168
|
function TableBody({ className, ...props }) {
|
|
4832
|
-
return /* @__PURE__ */
|
|
5169
|
+
return /* @__PURE__ */ jsx47(
|
|
4833
5170
|
"tbody",
|
|
4834
5171
|
{
|
|
4835
5172
|
"data-slot": "table-body",
|
|
@@ -4839,7 +5176,7 @@ function TableBody({ className, ...props }) {
|
|
|
4839
5176
|
);
|
|
4840
5177
|
}
|
|
4841
5178
|
function TableFooter({ className, ...props }) {
|
|
4842
|
-
return /* @__PURE__ */
|
|
5179
|
+
return /* @__PURE__ */ jsx47(
|
|
4843
5180
|
"tfoot",
|
|
4844
5181
|
{
|
|
4845
5182
|
"data-slot": "table-footer",
|
|
@@ -4852,7 +5189,7 @@ function TableFooter({ className, ...props }) {
|
|
|
4852
5189
|
);
|
|
4853
5190
|
}
|
|
4854
5191
|
function TableRow({ className, ...props }) {
|
|
4855
|
-
return /* @__PURE__ */
|
|
5192
|
+
return /* @__PURE__ */ jsx47(
|
|
4856
5193
|
"tr",
|
|
4857
5194
|
{
|
|
4858
5195
|
"data-slot": "table-row",
|
|
@@ -4865,7 +5202,7 @@ function TableRow({ className, ...props }) {
|
|
|
4865
5202
|
);
|
|
4866
5203
|
}
|
|
4867
5204
|
function TableHead({ className, ...props }) {
|
|
4868
|
-
return /* @__PURE__ */
|
|
5205
|
+
return /* @__PURE__ */ jsx47(
|
|
4869
5206
|
"th",
|
|
4870
5207
|
{
|
|
4871
5208
|
"data-slot": "table-head",
|
|
@@ -4878,7 +5215,7 @@ function TableHead({ className, ...props }) {
|
|
|
4878
5215
|
);
|
|
4879
5216
|
}
|
|
4880
5217
|
function TableCell({ className, ...props }) {
|
|
4881
|
-
return /* @__PURE__ */
|
|
5218
|
+
return /* @__PURE__ */ jsx47(
|
|
4882
5219
|
"td",
|
|
4883
5220
|
{
|
|
4884
5221
|
"data-slot": "table-cell",
|
|
@@ -4894,7 +5231,7 @@ function TableCaption({
|
|
|
4894
5231
|
className,
|
|
4895
5232
|
...props
|
|
4896
5233
|
}) {
|
|
4897
|
-
return /* @__PURE__ */
|
|
5234
|
+
return /* @__PURE__ */ jsx47(
|
|
4898
5235
|
"caption",
|
|
4899
5236
|
{
|
|
4900
5237
|
"data-slot": "table-caption",
|
|
@@ -4907,12 +5244,12 @@ function TableCaption({
|
|
|
4907
5244
|
// src/components/ui/tabs.tsx
|
|
4908
5245
|
import * as TabsPrimitive from "@radix-ui/react-tabs";
|
|
4909
5246
|
import "react";
|
|
4910
|
-
import { jsx as
|
|
5247
|
+
import { jsx as jsx48 } from "react/jsx-runtime";
|
|
4911
5248
|
function Tabs({
|
|
4912
5249
|
className,
|
|
4913
5250
|
...props
|
|
4914
5251
|
}) {
|
|
4915
|
-
return /* @__PURE__ */
|
|
5252
|
+
return /* @__PURE__ */ jsx48(
|
|
4916
5253
|
TabsPrimitive.Root,
|
|
4917
5254
|
{
|
|
4918
5255
|
"data-slot": "tabs",
|
|
@@ -4925,7 +5262,7 @@ function TabsList({
|
|
|
4925
5262
|
className,
|
|
4926
5263
|
...props
|
|
4927
5264
|
}) {
|
|
4928
|
-
return /* @__PURE__ */
|
|
5265
|
+
return /* @__PURE__ */ jsx48(
|
|
4929
5266
|
TabsPrimitive.List,
|
|
4930
5267
|
{
|
|
4931
5268
|
"data-slot": "tabs-list",
|
|
@@ -4941,7 +5278,7 @@ function TabsTrigger({
|
|
|
4941
5278
|
className,
|
|
4942
5279
|
...props
|
|
4943
5280
|
}) {
|
|
4944
|
-
return /* @__PURE__ */
|
|
5281
|
+
return /* @__PURE__ */ jsx48(
|
|
4945
5282
|
TabsPrimitive.Trigger,
|
|
4946
5283
|
{
|
|
4947
5284
|
"data-slot": "tabs-trigger",
|
|
@@ -4957,7 +5294,7 @@ function TabsContent({
|
|
|
4957
5294
|
className,
|
|
4958
5295
|
...props
|
|
4959
5296
|
}) {
|
|
4960
|
-
return /* @__PURE__ */
|
|
5297
|
+
return /* @__PURE__ */ jsx48(
|
|
4961
5298
|
TabsPrimitive.Content,
|
|
4962
5299
|
{
|
|
4963
5300
|
"data-slot": "tabs-content",
|
|
@@ -4967,11 +5304,230 @@ function TabsContent({
|
|
|
4967
5304
|
);
|
|
4968
5305
|
}
|
|
4969
5306
|
|
|
5307
|
+
// src/components/ui/time-input.tsx
|
|
5308
|
+
import "class-variance-authority";
|
|
5309
|
+
import { Clock } from "lucide-react";
|
|
5310
|
+
import * as React46 from "react";
|
|
5311
|
+
import { jsx as jsx49, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
5312
|
+
function formatTime(time, timeFormat = "12h") {
|
|
5313
|
+
if (!time) return "";
|
|
5314
|
+
if (timeFormat === "24h") {
|
|
5315
|
+
return `${String(time.hours).padStart(2, "0")}:${String(time.minutes).padStart(2, "0")}`;
|
|
5316
|
+
}
|
|
5317
|
+
const period = time.hours >= 12 ? "PM" : "AM";
|
|
5318
|
+
const h12 = time.hours % 12 || 12;
|
|
5319
|
+
return `${String(h12).padStart(2, "0")}:${String(time.minutes).padStart(2, "0")} ${period}`;
|
|
5320
|
+
}
|
|
5321
|
+
function parseTime(value, timeFormat = "12h") {
|
|
5322
|
+
if (!value.trim()) return null;
|
|
5323
|
+
if (timeFormat === "24h") {
|
|
5324
|
+
const match2 = value.trim().match(/^(\d{1,2}):(\d{2})$/);
|
|
5325
|
+
if (!match2) return null;
|
|
5326
|
+
const hours2 = parseInt(match2[1], 10);
|
|
5327
|
+
const minutes2 = parseInt(match2[2], 10);
|
|
5328
|
+
if (hours2 < 0 || hours2 > 23 || minutes2 < 0 || minutes2 > 59) return null;
|
|
5329
|
+
return { hours: hours2, minutes: minutes2 };
|
|
5330
|
+
}
|
|
5331
|
+
const match = value.trim().match(/^(\d{1,2}):(\d{2})\s*(AM|PM|am|pm)$/i);
|
|
5332
|
+
if (!match) return null;
|
|
5333
|
+
let hours = parseInt(match[1], 10);
|
|
5334
|
+
const minutes = parseInt(match[2], 10);
|
|
5335
|
+
const period = match[3].toUpperCase();
|
|
5336
|
+
if (hours < 1 || hours > 12 || minutes < 0 || minutes > 59) return null;
|
|
5337
|
+
if (period === "AM" && hours === 12) hours = 0;
|
|
5338
|
+
else if (period === "PM" && hours !== 12) hours += 12;
|
|
5339
|
+
return { hours, minutes };
|
|
5340
|
+
}
|
|
5341
|
+
function getDisplayHour(hours, timeFormat) {
|
|
5342
|
+
if (timeFormat === "24h") return hours;
|
|
5343
|
+
return hours % 12 || 12;
|
|
5344
|
+
}
|
|
5345
|
+
function getPeriod(hours) {
|
|
5346
|
+
return hours >= 12 ? "PM" : "AM";
|
|
5347
|
+
}
|
|
5348
|
+
function TimeInput({
|
|
5349
|
+
time,
|
|
5350
|
+
setTime,
|
|
5351
|
+
timeFormat = "12h",
|
|
5352
|
+
minuteStep = 1,
|
|
5353
|
+
inputDisabled,
|
|
5354
|
+
className,
|
|
5355
|
+
inputClassName,
|
|
5356
|
+
size,
|
|
5357
|
+
placeholder,
|
|
5358
|
+
onBlur,
|
|
5359
|
+
...restProps
|
|
5360
|
+
}) {
|
|
5361
|
+
const resolvedPlaceholder = placeholder ?? (timeFormat === "12h" ? "hh:mm AM/PM" : "HH:mm");
|
|
5362
|
+
const [open, setOpen] = React46.useState(false);
|
|
5363
|
+
const [value, setValue] = React46.useState(formatTime(time, timeFormat));
|
|
5364
|
+
const hoursRef = React46.useRef(null);
|
|
5365
|
+
const minutesRef = React46.useRef(null);
|
|
5366
|
+
const periodRef = React46.useRef(null);
|
|
5367
|
+
React46.useEffect(() => {
|
|
5368
|
+
setValue(formatTime(time, timeFormat));
|
|
5369
|
+
}, [time, timeFormat]);
|
|
5370
|
+
const scrollToSelected = React46.useCallback(() => {
|
|
5371
|
+
requestAnimationFrame(() => {
|
|
5372
|
+
for (const ref of [hoursRef, minutesRef, periodRef]) {
|
|
5373
|
+
const container = ref.current;
|
|
5374
|
+
if (!container) continue;
|
|
5375
|
+
const selected = container.querySelector('[data-selected="true"]');
|
|
5376
|
+
if (selected) {
|
|
5377
|
+
selected.scrollIntoView({ block: "center", behavior: "instant" });
|
|
5378
|
+
}
|
|
5379
|
+
}
|
|
5380
|
+
});
|
|
5381
|
+
}, []);
|
|
5382
|
+
React46.useEffect(() => {
|
|
5383
|
+
if (open) {
|
|
5384
|
+
scrollToSelected();
|
|
5385
|
+
}
|
|
5386
|
+
}, [open, scrollToSelected]);
|
|
5387
|
+
const handleInputChange = (e) => {
|
|
5388
|
+
const inputValue = e.target.value;
|
|
5389
|
+
setValue(inputValue);
|
|
5390
|
+
if (inputValue === "") {
|
|
5391
|
+
setTime(null);
|
|
5392
|
+
return;
|
|
5393
|
+
}
|
|
5394
|
+
const parsed = parseTime(inputValue, timeFormat);
|
|
5395
|
+
if (parsed) {
|
|
5396
|
+
setTime(parsed);
|
|
5397
|
+
}
|
|
5398
|
+
};
|
|
5399
|
+
const handleBlur = (e) => {
|
|
5400
|
+
onBlur?.(e);
|
|
5401
|
+
if (value === "") {
|
|
5402
|
+
if (time !== null) setTime(null);
|
|
5403
|
+
return;
|
|
5404
|
+
}
|
|
5405
|
+
const parsed = parseTime(value, timeFormat);
|
|
5406
|
+
if (!parsed) {
|
|
5407
|
+
setValue(formatTime(time, timeFormat));
|
|
5408
|
+
}
|
|
5409
|
+
};
|
|
5410
|
+
const handleHourSelect = (hour) => {
|
|
5411
|
+
let h24;
|
|
5412
|
+
if (timeFormat === "24h") {
|
|
5413
|
+
h24 = hour;
|
|
5414
|
+
} else {
|
|
5415
|
+
const currentPeriod = time ? getPeriod(time.hours) : "AM";
|
|
5416
|
+
if (currentPeriod === "AM") {
|
|
5417
|
+
h24 = hour === 12 ? 0 : hour;
|
|
5418
|
+
} else {
|
|
5419
|
+
h24 = hour === 12 ? 12 : hour + 12;
|
|
5420
|
+
}
|
|
5421
|
+
}
|
|
5422
|
+
setTime({ hours: h24, minutes: time?.minutes ?? 0 });
|
|
5423
|
+
};
|
|
5424
|
+
const handleMinuteSelect = (minute) => {
|
|
5425
|
+
setTime({ hours: time?.hours ?? 0, minutes: minute });
|
|
5426
|
+
};
|
|
5427
|
+
const handlePeriodSelect = (period) => {
|
|
5428
|
+
const currentHours = time?.hours ?? 0;
|
|
5429
|
+
const currentH12 = currentHours % 12;
|
|
5430
|
+
const newHours = period === "AM" ? currentH12 : currentH12 + 12;
|
|
5431
|
+
setTime({ hours: newHours, minutes: time?.minutes ?? 0 });
|
|
5432
|
+
};
|
|
5433
|
+
const hoursList = timeFormat === "12h" ? Array.from({ length: 12 }, (_, i) => i + 1) : Array.from({ length: 24 }, (_, i) => i);
|
|
5434
|
+
const minutesList = Array.from(
|
|
5435
|
+
{ length: Math.ceil(60 / minuteStep) },
|
|
5436
|
+
(_, i) => i * minuteStep
|
|
5437
|
+
);
|
|
5438
|
+
const selectedH12 = time ? getDisplayHour(time.hours, timeFormat) : null;
|
|
5439
|
+
const selectedMinute = time?.minutes ?? null;
|
|
5440
|
+
const selectedPeriod = time ? getPeriod(time.hours) : null;
|
|
5441
|
+
return /* @__PURE__ */ jsx49("div", { className: cn("relative flex gap-2", className), children: /* @__PURE__ */ jsxs24(Popover, { open, onOpenChange: setOpen, children: [
|
|
5442
|
+
/* @__PURE__ */ jsx49(PopoverTrigger, { asChild: true, disabled: inputDisabled, children: /* @__PURE__ */ jsx49("div", { className: "w-full relative", children: /* @__PURE__ */ jsx49(
|
|
5443
|
+
Input,
|
|
5444
|
+
{
|
|
5445
|
+
value,
|
|
5446
|
+
placeholder: resolvedPlaceholder,
|
|
5447
|
+
className: cn("bg-background cursor-pointer", inputClassName),
|
|
5448
|
+
onChange: handleInputChange,
|
|
5449
|
+
onBlur: handleBlur,
|
|
5450
|
+
disabled: inputDisabled,
|
|
5451
|
+
size,
|
|
5452
|
+
onClick: () => {
|
|
5453
|
+
if (!inputDisabled) setOpen(true);
|
|
5454
|
+
},
|
|
5455
|
+
onKeyDown: (e) => {
|
|
5456
|
+
if (e.key === "ArrowDown" && !inputDisabled) {
|
|
5457
|
+
e.preventDefault();
|
|
5458
|
+
setOpen(true);
|
|
5459
|
+
}
|
|
5460
|
+
},
|
|
5461
|
+
rightIcon: /* @__PURE__ */ jsx49(Clock, { className: "h-4 w-4 text-muted-foreground" }),
|
|
5462
|
+
...restProps
|
|
5463
|
+
}
|
|
5464
|
+
) }) }),
|
|
5465
|
+
/* @__PURE__ */ jsx49(
|
|
5466
|
+
PopoverContent,
|
|
5467
|
+
{
|
|
5468
|
+
className: "w-auto overflow-hidden p-0",
|
|
5469
|
+
align: "end",
|
|
5470
|
+
alignOffset: -8,
|
|
5471
|
+
sideOffset: 10,
|
|
5472
|
+
side: "top",
|
|
5473
|
+
onOpenAutoFocus: (e) => e.preventDefault(),
|
|
5474
|
+
children: /* @__PURE__ */ jsxs24("div", { className: "flex divide-x", children: [
|
|
5475
|
+
/* @__PURE__ */ jsx49(ScrollArea, { className: "h-56 w-16", children: /* @__PURE__ */ jsx49("div", { ref: hoursRef, className: "flex flex-col p-1", children: hoursList.map((h) => /* @__PURE__ */ jsx49(
|
|
5476
|
+
Button,
|
|
5477
|
+
{
|
|
5478
|
+
variant: "ghost",
|
|
5479
|
+
size: "sm",
|
|
5480
|
+
"data-selected": selectedH12 === h,
|
|
5481
|
+
className: cn(
|
|
5482
|
+
"w-full justify-center font-mono text-sm",
|
|
5483
|
+
selectedH12 === h && "bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground"
|
|
5484
|
+
),
|
|
5485
|
+
onClick: () => handleHourSelect(h),
|
|
5486
|
+
children: String(h).padStart(2, "0")
|
|
5487
|
+
},
|
|
5488
|
+
h
|
|
5489
|
+
)) }) }),
|
|
5490
|
+
/* @__PURE__ */ jsx49(ScrollArea, { className: "h-56 w-16", children: /* @__PURE__ */ jsx49("div", { ref: minutesRef, className: "flex flex-col p-1", children: minutesList.map((m) => /* @__PURE__ */ jsx49(
|
|
5491
|
+
Button,
|
|
5492
|
+
{
|
|
5493
|
+
variant: "ghost",
|
|
5494
|
+
size: "sm",
|
|
5495
|
+
"data-selected": selectedMinute === m,
|
|
5496
|
+
className: cn(
|
|
5497
|
+
"w-full justify-center font-mono text-sm",
|
|
5498
|
+
selectedMinute === m && "bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground"
|
|
5499
|
+
),
|
|
5500
|
+
onClick: () => handleMinuteSelect(m),
|
|
5501
|
+
children: String(m).padStart(2, "0")
|
|
5502
|
+
},
|
|
5503
|
+
m
|
|
5504
|
+
)) }) }),
|
|
5505
|
+
timeFormat === "12h" && /* @__PURE__ */ jsx49("div", { className: "flex flex-col p-1 justify-center gap-1", children: ["AM", "PM"].map((p) => /* @__PURE__ */ jsx49(
|
|
5506
|
+
Button,
|
|
5507
|
+
{
|
|
5508
|
+
variant: "ghost",
|
|
5509
|
+
size: "sm",
|
|
5510
|
+
"data-selected": selectedPeriod === p,
|
|
5511
|
+
className: cn(
|
|
5512
|
+
"w-14 justify-center text-sm",
|
|
5513
|
+
selectedPeriod === p && "bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground"
|
|
5514
|
+
),
|
|
5515
|
+
onClick: () => handlePeriodSelect(p),
|
|
5516
|
+
children: p
|
|
5517
|
+
},
|
|
5518
|
+
p
|
|
5519
|
+
)) })
|
|
5520
|
+
] })
|
|
5521
|
+
}
|
|
5522
|
+
)
|
|
5523
|
+
] }) });
|
|
5524
|
+
}
|
|
5525
|
+
|
|
4970
5526
|
// src/components/ui/toggle.tsx
|
|
4971
5527
|
import "react";
|
|
4972
5528
|
import * as TogglePrimitive from "@radix-ui/react-toggle";
|
|
4973
5529
|
import { cva as cva8 } from "class-variance-authority";
|
|
4974
|
-
import { jsx as
|
|
5530
|
+
import { jsx as jsx50 } from "react/jsx-runtime";
|
|
4975
5531
|
var toggleVariants = cva8(
|
|
4976
5532
|
"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap",
|
|
4977
5533
|
{
|
|
@@ -4998,7 +5554,7 @@ function Toggle({
|
|
|
4998
5554
|
size,
|
|
4999
5555
|
...props
|
|
5000
5556
|
}) {
|
|
5001
|
-
return /* @__PURE__ */
|
|
5557
|
+
return /* @__PURE__ */ jsx50(
|
|
5002
5558
|
TogglePrimitive.Root,
|
|
5003
5559
|
{
|
|
5004
5560
|
"data-slot": "toggle",
|
|
@@ -5009,11 +5565,11 @@ function Toggle({
|
|
|
5009
5565
|
}
|
|
5010
5566
|
|
|
5011
5567
|
// src/components/ui/toggle-group.tsx
|
|
5012
|
-
import * as
|
|
5568
|
+
import * as React48 from "react";
|
|
5013
5569
|
import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
|
|
5014
5570
|
import "class-variance-authority";
|
|
5015
|
-
import { jsx as
|
|
5016
|
-
var ToggleGroupContext =
|
|
5571
|
+
import { jsx as jsx51 } from "react/jsx-runtime";
|
|
5572
|
+
var ToggleGroupContext = React48.createContext({
|
|
5017
5573
|
size: "default",
|
|
5018
5574
|
variant: "default"
|
|
5019
5575
|
});
|
|
@@ -5024,7 +5580,7 @@ function ToggleGroup({
|
|
|
5024
5580
|
children,
|
|
5025
5581
|
...props
|
|
5026
5582
|
}) {
|
|
5027
|
-
return /* @__PURE__ */
|
|
5583
|
+
return /* @__PURE__ */ jsx51(
|
|
5028
5584
|
ToggleGroupPrimitive.Root,
|
|
5029
5585
|
{
|
|
5030
5586
|
"data-slot": "toggle-group",
|
|
@@ -5035,7 +5591,7 @@ function ToggleGroup({
|
|
|
5035
5591
|
className
|
|
5036
5592
|
),
|
|
5037
5593
|
...props,
|
|
5038
|
-
children: /* @__PURE__ */
|
|
5594
|
+
children: /* @__PURE__ */ jsx51(ToggleGroupContext.Provider, { value: { variant, size }, children })
|
|
5039
5595
|
}
|
|
5040
5596
|
);
|
|
5041
5597
|
}
|
|
@@ -5046,8 +5602,8 @@ function ToggleGroupItem({
|
|
|
5046
5602
|
size,
|
|
5047
5603
|
...props
|
|
5048
5604
|
}) {
|
|
5049
|
-
const context =
|
|
5050
|
-
return /* @__PURE__ */
|
|
5605
|
+
const context = React48.useContext(ToggleGroupContext);
|
|
5606
|
+
return /* @__PURE__ */ jsx51(
|
|
5051
5607
|
ToggleGroupPrimitive.Item,
|
|
5052
5608
|
{
|
|
5053
5609
|
"data-slot": "toggle-group-item",
|
|
@@ -5071,7 +5627,7 @@ function ToggleGroupItem({
|
|
|
5071
5627
|
import { Slot as Slot7 } from "@radix-ui/react-slot";
|
|
5072
5628
|
import { cva as cva9 } from "class-variance-authority";
|
|
5073
5629
|
import "react";
|
|
5074
|
-
import { jsx as
|
|
5630
|
+
import { jsx as jsx52 } from "react/jsx-runtime";
|
|
5075
5631
|
var displayTextVariants = cva9(
|
|
5076
5632
|
"tracking-normal font-normal leading-none text-brand-dark font-serif italic",
|
|
5077
5633
|
{
|
|
@@ -5094,7 +5650,7 @@ function DisplayHeading({
|
|
|
5094
5650
|
...props
|
|
5095
5651
|
}) {
|
|
5096
5652
|
const Comp = asChild ? Slot7 : "h1";
|
|
5097
|
-
return /* @__PURE__ */
|
|
5653
|
+
return /* @__PURE__ */ jsx52(
|
|
5098
5654
|
Comp,
|
|
5099
5655
|
{
|
|
5100
5656
|
"data-slot": "h1",
|
|
@@ -5123,7 +5679,7 @@ function Body({
|
|
|
5123
5679
|
...props
|
|
5124
5680
|
}) {
|
|
5125
5681
|
const Comp = asChild ? Slot7 : "p";
|
|
5126
|
-
return /* @__PURE__ */
|
|
5682
|
+
return /* @__PURE__ */ jsx52(
|
|
5127
5683
|
Comp,
|
|
5128
5684
|
{
|
|
5129
5685
|
"data-slot": "h1",
|
|
@@ -5138,7 +5694,7 @@ function HeadingXL({
|
|
|
5138
5694
|
...props
|
|
5139
5695
|
}) {
|
|
5140
5696
|
const Comp = asChild ? Slot7 : "h1";
|
|
5141
|
-
return /* @__PURE__ */
|
|
5697
|
+
return /* @__PURE__ */ jsx52(
|
|
5142
5698
|
Comp,
|
|
5143
5699
|
{
|
|
5144
5700
|
"data-slot": "h1",
|
|
@@ -5156,7 +5712,7 @@ function HeadingL({
|
|
|
5156
5712
|
...props
|
|
5157
5713
|
}) {
|
|
5158
5714
|
const Comp = asChild ? Slot7 : "h2";
|
|
5159
|
-
return /* @__PURE__ */
|
|
5715
|
+
return /* @__PURE__ */ jsx52(
|
|
5160
5716
|
Comp,
|
|
5161
5717
|
{
|
|
5162
5718
|
"data-slot": "h2",
|
|
@@ -5174,7 +5730,7 @@ function HeadingM({
|
|
|
5174
5730
|
...props
|
|
5175
5731
|
}) {
|
|
5176
5732
|
const Comp = asChild ? Slot7 : "h3";
|
|
5177
|
-
return /* @__PURE__ */
|
|
5733
|
+
return /* @__PURE__ */ jsx52(
|
|
5178
5734
|
Comp,
|
|
5179
5735
|
{
|
|
5180
5736
|
"data-slot": "h3",
|
|
@@ -5192,7 +5748,7 @@ function HeadingS({
|
|
|
5192
5748
|
...props
|
|
5193
5749
|
}) {
|
|
5194
5750
|
const Comp = asChild ? Slot7 : "h4";
|
|
5195
|
-
return /* @__PURE__ */
|
|
5751
|
+
return /* @__PURE__ */ jsx52(
|
|
5196
5752
|
Comp,
|
|
5197
5753
|
{
|
|
5198
5754
|
"data-slot": "h4",
|
|
@@ -5210,7 +5766,7 @@ function HeadingXS({
|
|
|
5210
5766
|
...props
|
|
5211
5767
|
}) {
|
|
5212
5768
|
const Comp = asChild ? Slot7 : "h5";
|
|
5213
|
-
return /* @__PURE__ */
|
|
5769
|
+
return /* @__PURE__ */ jsx52(
|
|
5214
5770
|
Comp,
|
|
5215
5771
|
{
|
|
5216
5772
|
"data-slot": "h5",
|
|
@@ -5228,7 +5784,7 @@ function HeadingXXS({
|
|
|
5228
5784
|
...props
|
|
5229
5785
|
}) {
|
|
5230
5786
|
const Comp = asChild ? Slot7 : "h6";
|
|
5231
|
-
return /* @__PURE__ */
|
|
5787
|
+
return /* @__PURE__ */ jsx52(
|
|
5232
5788
|
Comp,
|
|
5233
5789
|
{
|
|
5234
5790
|
"data-slot": "h5",
|
|
@@ -5323,6 +5879,7 @@ export {
|
|
|
5323
5879
|
ContextMenuSubTrigger,
|
|
5324
5880
|
ContextMenuTrigger,
|
|
5325
5881
|
DateInput,
|
|
5882
|
+
DateRangeInput,
|
|
5326
5883
|
Dialog,
|
|
5327
5884
|
DialogClose,
|
|
5328
5885
|
DialogContent,
|
|
@@ -5490,6 +6047,7 @@ export {
|
|
|
5490
6047
|
TabsList,
|
|
5491
6048
|
TabsTrigger,
|
|
5492
6049
|
Textarea,
|
|
6050
|
+
TimeInput,
|
|
5493
6051
|
Toaster,
|
|
5494
6052
|
Toggle,
|
|
5495
6053
|
ToggleGroup,
|