@northslopetech/altitude-ui 2.4.0 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +119 -1
- package/dist/index.d.ts +119 -1
- package/dist/index.js +611 -240
- package/dist/index.mjs +610 -256
- package/dist/tokens.css +1 -1
- package/package.json +3 -2
package/dist/index.mjs
CHANGED
|
@@ -1698,6 +1698,29 @@ var Download = ({
|
|
|
1698
1698
|
)
|
|
1699
1699
|
}
|
|
1700
1700
|
);
|
|
1701
|
+
var Panel = ({
|
|
1702
|
+
className,
|
|
1703
|
+
variant = "dark",
|
|
1704
|
+
...props
|
|
1705
|
+
}) => /* @__PURE__ */ jsx2(
|
|
1706
|
+
"svg",
|
|
1707
|
+
{
|
|
1708
|
+
width: "16",
|
|
1709
|
+
height: "16",
|
|
1710
|
+
viewBox: "0 0 16 16",
|
|
1711
|
+
fill: "none",
|
|
1712
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1713
|
+
className: cn(getVariantStyles(variant), className),
|
|
1714
|
+
...props,
|
|
1715
|
+
children: /* @__PURE__ */ jsx2(
|
|
1716
|
+
"path",
|
|
1717
|
+
{
|
|
1718
|
+
d: "M14 2C14.5523 2 15 2.44772 15 3V13C15 13.5523 14.5523 14 14 14H2C1.44772 14 1 13.5523 1 13V3C1 2.44772 1.44772 2 2 2H14ZM7 12H13V4H7V12ZM3 12H5V4H3V12Z",
|
|
1719
|
+
fill: "currentColor"
|
|
1720
|
+
}
|
|
1721
|
+
)
|
|
1722
|
+
}
|
|
1723
|
+
);
|
|
1701
1724
|
|
|
1702
1725
|
// src/components/ui/select.tsx
|
|
1703
1726
|
import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
@@ -2117,15 +2140,329 @@ function FieldError({
|
|
|
2117
2140
|
);
|
|
2118
2141
|
}
|
|
2119
2142
|
|
|
2120
|
-
// src/components/ui/
|
|
2143
|
+
// src/components/ui/tooltip.tsx
|
|
2144
|
+
import * as React4 from "react";
|
|
2145
|
+
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
2146
|
+
import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
2147
|
+
function TooltipProvider({
|
|
2148
|
+
delayDuration = 0,
|
|
2149
|
+
...props
|
|
2150
|
+
}) {
|
|
2151
|
+
return /* @__PURE__ */ jsx7(
|
|
2152
|
+
TooltipPrimitive.Provider,
|
|
2153
|
+
{
|
|
2154
|
+
"data-slot": "tooltip-provider",
|
|
2155
|
+
delayDuration,
|
|
2156
|
+
...props
|
|
2157
|
+
}
|
|
2158
|
+
);
|
|
2159
|
+
}
|
|
2160
|
+
TooltipProvider.displayName = "TooltipProvider";
|
|
2161
|
+
function Tooltip({ delayDuration, ...props }) {
|
|
2162
|
+
return /* @__PURE__ */ jsx7(TooltipProvider, { delayDuration, children: /* @__PURE__ */ jsx7(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props }) });
|
|
2163
|
+
}
|
|
2164
|
+
Tooltip.displayName = "Tooltip";
|
|
2165
|
+
var TooltipTrigger = React4.forwardRef(({ ...props }, ref) => {
|
|
2166
|
+
return /* @__PURE__ */ jsx7(
|
|
2167
|
+
TooltipPrimitive.Trigger,
|
|
2168
|
+
{
|
|
2169
|
+
ref,
|
|
2170
|
+
"data-slot": "tooltip-trigger",
|
|
2171
|
+
...props
|
|
2172
|
+
}
|
|
2173
|
+
);
|
|
2174
|
+
});
|
|
2175
|
+
TooltipTrigger.displayName = "TooltipTrigger";
|
|
2176
|
+
var TooltipContent = React4.forwardRef(({ className, sideOffset = 2, children, ...props }, ref) => {
|
|
2177
|
+
return /* @__PURE__ */ jsx7(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs5(
|
|
2178
|
+
TooltipPrimitive.Content,
|
|
2179
|
+
{
|
|
2180
|
+
ref,
|
|
2181
|
+
"data-slot": "tooltip-content",
|
|
2182
|
+
sideOffset,
|
|
2183
|
+
className: cn(
|
|
2184
|
+
"bg-dark text-light animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-[var(--radix-tooltip-content-transform-origin)] flex items-start gap-2 rounded p-1.5 text-balance shadow-sm",
|
|
2185
|
+
className
|
|
2186
|
+
),
|
|
2187
|
+
...props,
|
|
2188
|
+
children: [
|
|
2189
|
+
/* @__PURE__ */ jsx7(TooltipPrimitive.Arrow, { className: "fill-dark", width: 10, height: 9 }),
|
|
2190
|
+
children
|
|
2191
|
+
]
|
|
2192
|
+
}
|
|
2193
|
+
) });
|
|
2194
|
+
});
|
|
2195
|
+
TooltipContent.displayName = "TooltipContent";
|
|
2196
|
+
|
|
2197
|
+
// src/components/ui/sidebar.tsx
|
|
2121
2198
|
import * as React5 from "react";
|
|
2199
|
+
import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
2200
|
+
var SIDEBAR_CONSTANTS = {
|
|
2201
|
+
WIDTH: "144px",
|
|
2202
|
+
WIDTH_ICON: "48px"
|
|
2203
|
+
};
|
|
2204
|
+
var SidebarContext = React5.createContext(null);
|
|
2205
|
+
function useSidebar() {
|
|
2206
|
+
const context = React5.useContext(SidebarContext);
|
|
2207
|
+
if (!context) {
|
|
2208
|
+
throw new Error("useSidebar must be used within a SidebarProvider.");
|
|
2209
|
+
}
|
|
2210
|
+
return context;
|
|
2211
|
+
}
|
|
2212
|
+
var SidebarProvider = React5.forwardRef(
|
|
2213
|
+
({
|
|
2214
|
+
defaultOpen = true,
|
|
2215
|
+
open: openProp,
|
|
2216
|
+
onOpenChange: setOpenProp,
|
|
2217
|
+
className,
|
|
2218
|
+
style,
|
|
2219
|
+
children,
|
|
2220
|
+
...props
|
|
2221
|
+
}, ref) => {
|
|
2222
|
+
const [_open, _setOpen] = React5.useState(defaultOpen);
|
|
2223
|
+
const open = openProp ?? _open;
|
|
2224
|
+
const setOpen = React5.useCallback(
|
|
2225
|
+
(value) => {
|
|
2226
|
+
const openState = typeof value === "function" ? value(open) : value;
|
|
2227
|
+
if (setOpenProp) {
|
|
2228
|
+
setOpenProp(openState);
|
|
2229
|
+
} else {
|
|
2230
|
+
_setOpen(openState);
|
|
2231
|
+
}
|
|
2232
|
+
},
|
|
2233
|
+
[setOpenProp, open]
|
|
2234
|
+
);
|
|
2235
|
+
const toggleSidebar = React5.useCallback(() => {
|
|
2236
|
+
return setOpen((open2) => !open2);
|
|
2237
|
+
}, [setOpen]);
|
|
2238
|
+
const state = open ? "expanded" : "collapsed";
|
|
2239
|
+
const contextValue = React5.useMemo(
|
|
2240
|
+
() => ({
|
|
2241
|
+
state,
|
|
2242
|
+
open,
|
|
2243
|
+
setOpen,
|
|
2244
|
+
toggleSidebar
|
|
2245
|
+
}),
|
|
2246
|
+
[state, open, setOpen, toggleSidebar]
|
|
2247
|
+
);
|
|
2248
|
+
return /* @__PURE__ */ jsx8(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx8(
|
|
2249
|
+
"div",
|
|
2250
|
+
{
|
|
2251
|
+
style: {
|
|
2252
|
+
"--sidebar-width": SIDEBAR_CONSTANTS.WIDTH,
|
|
2253
|
+
"--sidebar-width-icon": SIDEBAR_CONSTANTS.WIDTH_ICON,
|
|
2254
|
+
...style
|
|
2255
|
+
},
|
|
2256
|
+
className: cn(
|
|
2257
|
+
"group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-light",
|
|
2258
|
+
className
|
|
2259
|
+
),
|
|
2260
|
+
ref,
|
|
2261
|
+
...props,
|
|
2262
|
+
children
|
|
2263
|
+
}
|
|
2264
|
+
) });
|
|
2265
|
+
}
|
|
2266
|
+
);
|
|
2267
|
+
SidebarProvider.displayName = "SidebarProvider";
|
|
2268
|
+
var Sidebar = React5.forwardRef(
|
|
2269
|
+
({ collapsible = "icon", className, children, ...props }, ref) => {
|
|
2270
|
+
const { state } = useSidebar();
|
|
2271
|
+
return /* @__PURE__ */ jsxs6(
|
|
2272
|
+
"aside",
|
|
2273
|
+
{
|
|
2274
|
+
ref,
|
|
2275
|
+
className: "group peer text-light",
|
|
2276
|
+
"data-state": state,
|
|
2277
|
+
"data-collapsible": state === "collapsed" ? collapsible : "",
|
|
2278
|
+
"aria-label": "Main navigation",
|
|
2279
|
+
"aria-expanded": state === "expanded",
|
|
2280
|
+
role: "navigation",
|
|
2281
|
+
children: [
|
|
2282
|
+
/* @__PURE__ */ jsx8(
|
|
2283
|
+
"div",
|
|
2284
|
+
{
|
|
2285
|
+
className: cn(
|
|
2286
|
+
"relative h-svh shrink-0 transition-[width] duration-200 ease-linear",
|
|
2287
|
+
"w-[var(--sidebar-width)] group-data-[collapsible=icon]:w-[var(--sidebar-width-icon)]"
|
|
2288
|
+
)
|
|
2289
|
+
}
|
|
2290
|
+
),
|
|
2291
|
+
/* @__PURE__ */ jsx8(
|
|
2292
|
+
"div",
|
|
2293
|
+
{
|
|
2294
|
+
className: cn(
|
|
2295
|
+
"fixed inset-y-0 z-10 h-svh w-[var(--sidebar-width)] transition-[left,right,width] duration-200 ease-linear flex left-0",
|
|
2296
|
+
"group-data-[collapsible=icon]:w-[var(--sidebar-width-icon)]",
|
|
2297
|
+
className
|
|
2298
|
+
),
|
|
2299
|
+
...props,
|
|
2300
|
+
children: /* @__PURE__ */ jsx8(
|
|
2301
|
+
"div",
|
|
2302
|
+
{
|
|
2303
|
+
"data-sidebar": "sidebar",
|
|
2304
|
+
className: "flex h-full w-full flex-col gap-8 p-4 px-2 bg-dark",
|
|
2305
|
+
children
|
|
2306
|
+
}
|
|
2307
|
+
)
|
|
2308
|
+
}
|
|
2309
|
+
)
|
|
2310
|
+
]
|
|
2311
|
+
}
|
|
2312
|
+
);
|
|
2313
|
+
}
|
|
2314
|
+
);
|
|
2315
|
+
Sidebar.displayName = "Sidebar";
|
|
2316
|
+
var SidebarInset = React5.forwardRef(
|
|
2317
|
+
({ className, ...props }, ref) => {
|
|
2318
|
+
return /* @__PURE__ */ jsx8(
|
|
2319
|
+
"main",
|
|
2320
|
+
{
|
|
2321
|
+
ref,
|
|
2322
|
+
className: cn(
|
|
2323
|
+
"relative flex min-h-svh flex-1 flex-col bg-dark",
|
|
2324
|
+
className
|
|
2325
|
+
),
|
|
2326
|
+
...props
|
|
2327
|
+
}
|
|
2328
|
+
);
|
|
2329
|
+
}
|
|
2330
|
+
);
|
|
2331
|
+
SidebarInset.displayName = "SidebarInset";
|
|
2332
|
+
var SidebarHeader = React5.forwardRef(
|
|
2333
|
+
({ className, ...props }, ref) => {
|
|
2334
|
+
return /* @__PURE__ */ jsx8(
|
|
2335
|
+
"div",
|
|
2336
|
+
{
|
|
2337
|
+
ref,
|
|
2338
|
+
"data-sidebar": "header",
|
|
2339
|
+
className: cn(
|
|
2340
|
+
"flex h-8 justify-between items-center shrink-0 self-stretch",
|
|
2341
|
+
"group-data-[collapsible=icon]:justify-center group-data-[collapsible=icon]:p-2",
|
|
2342
|
+
className
|
|
2343
|
+
),
|
|
2344
|
+
...props
|
|
2345
|
+
}
|
|
2346
|
+
);
|
|
2347
|
+
}
|
|
2348
|
+
);
|
|
2349
|
+
SidebarHeader.displayName = "SidebarHeader";
|
|
2350
|
+
var SidebarFooter = React5.forwardRef(
|
|
2351
|
+
({ className, ...props }, ref) => {
|
|
2352
|
+
return /* @__PURE__ */ jsx8(
|
|
2353
|
+
"div",
|
|
2354
|
+
{
|
|
2355
|
+
ref,
|
|
2356
|
+
"data-sidebar": "footer",
|
|
2357
|
+
className: cn("flex flex-col gap-2", className),
|
|
2358
|
+
...props
|
|
2359
|
+
}
|
|
2360
|
+
);
|
|
2361
|
+
}
|
|
2362
|
+
);
|
|
2363
|
+
SidebarFooter.displayName = "SidebarFooter";
|
|
2364
|
+
var SidebarContent = React5.forwardRef(
|
|
2365
|
+
({ className, ...props }, ref) => {
|
|
2366
|
+
return /* @__PURE__ */ jsx8(
|
|
2367
|
+
"div",
|
|
2368
|
+
{
|
|
2369
|
+
ref,
|
|
2370
|
+
"data-sidebar": "content",
|
|
2371
|
+
className: cn(
|
|
2372
|
+
"flex min-h-0 flex-1 flex-col gap-8 overflow-auto group-data-[collapsible=icon]:overflow-hidden",
|
|
2373
|
+
className
|
|
2374
|
+
),
|
|
2375
|
+
...props
|
|
2376
|
+
}
|
|
2377
|
+
);
|
|
2378
|
+
}
|
|
2379
|
+
);
|
|
2380
|
+
SidebarContent.displayName = "SidebarContent";
|
|
2381
|
+
var SidebarGroup = React5.forwardRef(
|
|
2382
|
+
({ className, ...props }, ref) => {
|
|
2383
|
+
return /* @__PURE__ */ jsx8(
|
|
2384
|
+
"div",
|
|
2385
|
+
{
|
|
2386
|
+
ref,
|
|
2387
|
+
"data-sidebar": "group",
|
|
2388
|
+
className: cn("relative flex w-full min-w-0 flex-col", className),
|
|
2389
|
+
...props
|
|
2390
|
+
}
|
|
2391
|
+
);
|
|
2392
|
+
}
|
|
2393
|
+
);
|
|
2394
|
+
SidebarGroup.displayName = "SidebarGroup";
|
|
2395
|
+
var SidebarGroupContent = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx8(
|
|
2396
|
+
"div",
|
|
2397
|
+
{
|
|
2398
|
+
ref,
|
|
2399
|
+
"data-sidebar": "group-content",
|
|
2400
|
+
className: cn("w-full text-sm", className),
|
|
2401
|
+
...props
|
|
2402
|
+
}
|
|
2403
|
+
));
|
|
2404
|
+
SidebarGroupContent.displayName = "SidebarGroupContent";
|
|
2405
|
+
var SidebarMenu = React5.forwardRef(
|
|
2406
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx8(
|
|
2407
|
+
"ul",
|
|
2408
|
+
{
|
|
2409
|
+
ref,
|
|
2410
|
+
"data-sidebar": "menu",
|
|
2411
|
+
className: cn("flex w-full min-w-0 flex-col gap-1", className),
|
|
2412
|
+
...props
|
|
2413
|
+
}
|
|
2414
|
+
)
|
|
2415
|
+
);
|
|
2416
|
+
SidebarMenu.displayName = "SidebarMenu";
|
|
2417
|
+
var SidebarMenuItem = React5.forwardRef(
|
|
2418
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx8(
|
|
2419
|
+
"li",
|
|
2420
|
+
{
|
|
2421
|
+
ref,
|
|
2422
|
+
"data-sidebar": "menu-item",
|
|
2423
|
+
className: cn("group/menu-item relative", className),
|
|
2424
|
+
...props
|
|
2425
|
+
}
|
|
2426
|
+
)
|
|
2427
|
+
);
|
|
2428
|
+
SidebarMenuItem.displayName = "SidebarMenuItem";
|
|
2429
|
+
var SidebarMenuButton = React5.forwardRef(({ isActive = false, tooltip, className, children, ...props }, ref) => {
|
|
2430
|
+
const { state } = useSidebar();
|
|
2431
|
+
const button = /* @__PURE__ */ jsx8(
|
|
2432
|
+
"button",
|
|
2433
|
+
{
|
|
2434
|
+
ref,
|
|
2435
|
+
"data-sidebar": "menu-button",
|
|
2436
|
+
"data-active": isActive,
|
|
2437
|
+
"aria-current": isActive ? "page" : void 0,
|
|
2438
|
+
className: cn(
|
|
2439
|
+
"peer/menu-button flex w-full h-8 items-center gap-2 overflow-hidden rounded-lg p-2 text-left outline-none transition-[width,height,padding] hover:bg-white/10 data-[active=true]:bg-info data-[active=true]:hover:bg-info group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 group-data-[collapsible=icon]:!gap-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
|
|
2440
|
+
className
|
|
2441
|
+
),
|
|
2442
|
+
...props,
|
|
2443
|
+
children
|
|
2444
|
+
}
|
|
2445
|
+
);
|
|
2446
|
+
if (!tooltip || state !== "collapsed") {
|
|
2447
|
+
return button;
|
|
2448
|
+
}
|
|
2449
|
+
const tooltipProps = typeof tooltip === "string" ? { children: tooltip } : tooltip;
|
|
2450
|
+
return /* @__PURE__ */ jsxs6(Tooltip, { delayDuration: 0, children: [
|
|
2451
|
+
/* @__PURE__ */ jsx8(TooltipTrigger, { asChild: true, children: button }),
|
|
2452
|
+
/* @__PURE__ */ jsx8(TooltipContent, { side: "right", align: "center", ...tooltipProps })
|
|
2453
|
+
] });
|
|
2454
|
+
});
|
|
2455
|
+
SidebarMenuButton.displayName = "SidebarMenuButton";
|
|
2456
|
+
|
|
2457
|
+
// src/components/ui/date-picker.tsx
|
|
2458
|
+
import * as React7 from "react";
|
|
2122
2459
|
import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
2123
2460
|
|
|
2124
2461
|
// src/components/ui/input.tsx
|
|
2125
|
-
import * as
|
|
2126
|
-
import { jsx as
|
|
2462
|
+
import * as React6 from "react";
|
|
2463
|
+
import { jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
2127
2464
|
var inputBaseStyles = "flex h-10 py-2 w-full border bg-light text-dark focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 transition-colors rounded-md px-3 min-w-80 placeholder:text-secondary read-only:bg-gray read-only:cursor-default read-only:border-transparent read-only:text-secondary read-only:focus-visible:border-transparent border-secondary focus-visible:border-2 focus-visible:border-strong disabled:border-secondary aria-invalid:border-error aria-invalid:focus-visible:border-error";
|
|
2128
|
-
var Input =
|
|
2465
|
+
var Input = React6.forwardRef(
|
|
2129
2466
|
({
|
|
2130
2467
|
className,
|
|
2131
2468
|
style,
|
|
@@ -2136,7 +2473,7 @@ var Input = React4.forwardRef(
|
|
|
2136
2473
|
readOnly,
|
|
2137
2474
|
...props
|
|
2138
2475
|
}, ref) => {
|
|
2139
|
-
const [internalValue, setInternalValue] =
|
|
2476
|
+
const [internalValue, setInternalValue] = React6.useState(value || "");
|
|
2140
2477
|
const isControlled = value !== void 0;
|
|
2141
2478
|
const currentValue = isControlled ? value : internalValue;
|
|
2142
2479
|
const showClear = showClearProp !== false && currentValue && currentValue.toString().length > 0 && !readOnly;
|
|
@@ -2166,8 +2503,8 @@ var Input = React4.forwardRef(
|
|
|
2166
2503
|
}
|
|
2167
2504
|
onClear?.();
|
|
2168
2505
|
};
|
|
2169
|
-
return /* @__PURE__ */
|
|
2170
|
-
/* @__PURE__ */
|
|
2506
|
+
return /* @__PURE__ */ jsxs7("div", { className: "relative", children: [
|
|
2507
|
+
/* @__PURE__ */ jsx9(
|
|
2171
2508
|
"input",
|
|
2172
2509
|
{
|
|
2173
2510
|
className: cn(
|
|
@@ -2183,23 +2520,23 @@ var Input = React4.forwardRef(
|
|
|
2183
2520
|
...props
|
|
2184
2521
|
}
|
|
2185
2522
|
),
|
|
2186
|
-
showClear && /* @__PURE__ */
|
|
2523
|
+
showClear && /* @__PURE__ */ jsx9(
|
|
2187
2524
|
"button",
|
|
2188
2525
|
{
|
|
2189
2526
|
type: "button",
|
|
2190
2527
|
onClick: handleClear,
|
|
2191
2528
|
className: "absolute right-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-secondary hover:text-dark transition-colors",
|
|
2192
|
-
children: /* @__PURE__ */
|
|
2529
|
+
children: /* @__PURE__ */ jsx9(X, { className: "h-4 w-4" })
|
|
2193
2530
|
}
|
|
2194
2531
|
),
|
|
2195
|
-
showLock && /* @__PURE__ */
|
|
2532
|
+
showLock && /* @__PURE__ */ jsx9(Lock, { className: "absolute right-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-secondary" })
|
|
2196
2533
|
] });
|
|
2197
2534
|
}
|
|
2198
2535
|
);
|
|
2199
2536
|
Input.displayName = "Input";
|
|
2200
2537
|
|
|
2201
2538
|
// src/components/ui/date-picker.tsx
|
|
2202
|
-
import { jsx as
|
|
2539
|
+
import { jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
2203
2540
|
var getDayNames = () => {
|
|
2204
2541
|
const days = [];
|
|
2205
2542
|
for (let i = 0; i < 7; i++) {
|
|
@@ -2235,7 +2572,7 @@ var formatDateInput = (date) => {
|
|
|
2235
2572
|
day: "2-digit"
|
|
2236
2573
|
});
|
|
2237
2574
|
};
|
|
2238
|
-
var DatePicker =
|
|
2575
|
+
var DatePicker = React7.forwardRef(
|
|
2239
2576
|
({
|
|
2240
2577
|
value,
|
|
2241
2578
|
onValueChange,
|
|
@@ -2254,19 +2591,19 @@ var DatePicker = React5.forwardRef(
|
|
|
2254
2591
|
if (isNaN(parsed.getTime())) return void 0;
|
|
2255
2592
|
return parsed;
|
|
2256
2593
|
};
|
|
2257
|
-
const [selectedDate, setSelectedDate] =
|
|
2594
|
+
const [selectedDate, setSelectedDate] = React7.useState(
|
|
2258
2595
|
value || parseDate(defaultValue)
|
|
2259
2596
|
);
|
|
2260
|
-
const [currentMonth, setCurrentMonth] =
|
|
2597
|
+
const [currentMonth, setCurrentMonth] = React7.useState(() => {
|
|
2261
2598
|
const date = value || parseDate(defaultValue) || /* @__PURE__ */ new Date();
|
|
2262
2599
|
return new Date(date.getFullYear(), date.getMonth());
|
|
2263
2600
|
});
|
|
2264
|
-
const [open, setOpen] =
|
|
2265
|
-
const [inputValue, setInputValue] =
|
|
2601
|
+
const [open, setOpen] = React7.useState(false);
|
|
2602
|
+
const [inputValue, setInputValue] = React7.useState(() => {
|
|
2266
2603
|
const initialDate = value || parseDate(defaultValue);
|
|
2267
2604
|
return initialDate ? formatDateInput(initialDate) : "";
|
|
2268
2605
|
});
|
|
2269
|
-
|
|
2606
|
+
React7.useEffect(() => {
|
|
2270
2607
|
setSelectedDate(value);
|
|
2271
2608
|
if (value) {
|
|
2272
2609
|
setCurrentMonth(new Date(value.getFullYear(), value.getMonth()));
|
|
@@ -2277,7 +2614,7 @@ var DatePicker = React5.forwardRef(
|
|
|
2277
2614
|
setInputValue("");
|
|
2278
2615
|
}
|
|
2279
2616
|
}, [value]);
|
|
2280
|
-
|
|
2617
|
+
React7.useEffect(() => {
|
|
2281
2618
|
if (value) return;
|
|
2282
2619
|
const parsedDefault = parseDate(defaultValue);
|
|
2283
2620
|
if (!parsedDefault) return;
|
|
@@ -2400,14 +2737,14 @@ var DatePicker = React5.forwardRef(
|
|
|
2400
2737
|
const months = getMonthNames();
|
|
2401
2738
|
const dayNames = getDayNames();
|
|
2402
2739
|
const years = generateYears();
|
|
2403
|
-
return /* @__PURE__ */
|
|
2740
|
+
return /* @__PURE__ */ jsxs8(
|
|
2404
2741
|
PopoverPrimitive.Root,
|
|
2405
2742
|
{
|
|
2406
2743
|
open: disabled ? false : open,
|
|
2407
2744
|
onOpenChange: disabled ? void 0 : setOpen,
|
|
2408
2745
|
children: [
|
|
2409
|
-
/* @__PURE__ */
|
|
2410
|
-
/* @__PURE__ */
|
|
2746
|
+
/* @__PURE__ */ jsxs8("div", { className: "relative", children: [
|
|
2747
|
+
/* @__PURE__ */ jsx10(
|
|
2411
2748
|
Input,
|
|
2412
2749
|
{
|
|
2413
2750
|
ref,
|
|
@@ -2420,7 +2757,7 @@ var DatePicker = React5.forwardRef(
|
|
|
2420
2757
|
...props
|
|
2421
2758
|
}
|
|
2422
2759
|
),
|
|
2423
|
-
/* @__PURE__ */
|
|
2760
|
+
/* @__PURE__ */ jsx10(PopoverPrimitive.Trigger, { asChild: true, children: /* @__PURE__ */ jsx10("button", { className: "absolute right-3 top-1/2 transform -translate-y-1/2 hover:bg-gray rounded p-0.5 transition-colors", children: /* @__PURE__ */ jsx10(
|
|
2424
2761
|
Calendar,
|
|
2425
2762
|
{
|
|
2426
2763
|
className: cn(
|
|
@@ -2430,7 +2767,7 @@ var DatePicker = React5.forwardRef(
|
|
|
2430
2767
|
}
|
|
2431
2768
|
) }) })
|
|
2432
2769
|
] }),
|
|
2433
|
-
/* @__PURE__ */
|
|
2770
|
+
/* @__PURE__ */ jsx10(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx10(
|
|
2434
2771
|
PopoverPrimitive.Content,
|
|
2435
2772
|
{
|
|
2436
2773
|
className: "z-50 w-80 rounded-lg border border-secondary bg-light text-dark shadow-lg animate-in fade-in-0 zoom-in-95 duration-200",
|
|
@@ -2439,51 +2776,51 @@ var DatePicker = React5.forwardRef(
|
|
|
2439
2776
|
alignOffset: -12,
|
|
2440
2777
|
side: "bottom",
|
|
2441
2778
|
sticky: "always",
|
|
2442
|
-
children: /* @__PURE__ */
|
|
2443
|
-
/* @__PURE__ */
|
|
2444
|
-
/* @__PURE__ */
|
|
2779
|
+
children: /* @__PURE__ */ jsxs8("div", { className: "p-4", children: [
|
|
2780
|
+
/* @__PURE__ */ jsxs8("div", { className: "flex items-center justify-between mb-4 gap-1", children: [
|
|
2781
|
+
/* @__PURE__ */ jsx10(
|
|
2445
2782
|
"button",
|
|
2446
2783
|
{
|
|
2447
2784
|
onClick: () => handleMonthChange("prev"),
|
|
2448
2785
|
className: "p-1 hover:bg-gray rounded transition-colors flex-shrink-0",
|
|
2449
|
-
children: /* @__PURE__ */
|
|
2786
|
+
children: /* @__PURE__ */ jsx10(ChevronLeft, { className: "h-4 w-4" })
|
|
2450
2787
|
}
|
|
2451
2788
|
),
|
|
2452
|
-
/* @__PURE__ */
|
|
2453
|
-
/* @__PURE__ */
|
|
2789
|
+
/* @__PURE__ */ jsxs8("div", { className: "flex gap-1 flex-1 min-w-0", children: [
|
|
2790
|
+
/* @__PURE__ */ jsxs8(
|
|
2454
2791
|
Select,
|
|
2455
2792
|
{
|
|
2456
2793
|
value: currentMonth.getMonth().toString(),
|
|
2457
2794
|
onValueChange: handleMonthSelect,
|
|
2458
2795
|
children: [
|
|
2459
|
-
/* @__PURE__ */
|
|
2460
|
-
/* @__PURE__ */
|
|
2796
|
+
/* @__PURE__ */ jsx10(SelectTrigger, { className: "min-w-fit h-8 text-sm", children: /* @__PURE__ */ jsx10(SelectValue, {}) }),
|
|
2797
|
+
/* @__PURE__ */ jsx10(SelectContent, { children: months.map((month, index) => /* @__PURE__ */ jsx10(SelectItem, { value: index.toString(), children: month }, month)) })
|
|
2461
2798
|
]
|
|
2462
2799
|
}
|
|
2463
2800
|
),
|
|
2464
|
-
/* @__PURE__ */
|
|
2801
|
+
/* @__PURE__ */ jsxs8(
|
|
2465
2802
|
Select,
|
|
2466
2803
|
{
|
|
2467
2804
|
value: currentMonth.getFullYear().toString(),
|
|
2468
2805
|
onValueChange: handleYearSelect,
|
|
2469
2806
|
children: [
|
|
2470
|
-
/* @__PURE__ */
|
|
2471
|
-
/* @__PURE__ */
|
|
2807
|
+
/* @__PURE__ */ jsx10(SelectTrigger, { className: "min-w-fit h-8 text-sm", children: /* @__PURE__ */ jsx10(SelectValue, {}) }),
|
|
2808
|
+
/* @__PURE__ */ jsx10(SelectContent, { children: years.map((year) => /* @__PURE__ */ jsx10(SelectItem, { value: year.toString(), children: year }, year)) })
|
|
2472
2809
|
]
|
|
2473
2810
|
}
|
|
2474
2811
|
)
|
|
2475
2812
|
] }),
|
|
2476
|
-
/* @__PURE__ */
|
|
2813
|
+
/* @__PURE__ */ jsx10(
|
|
2477
2814
|
"button",
|
|
2478
2815
|
{
|
|
2479
2816
|
onClick: () => handleMonthChange("next"),
|
|
2480
2817
|
className: "p-1 hover:bg-gray rounded transition-colors flex-shrink-0",
|
|
2481
|
-
children: /* @__PURE__ */
|
|
2818
|
+
children: /* @__PURE__ */ jsx10(ChevronRight, { className: "h-4 w-4" })
|
|
2482
2819
|
}
|
|
2483
2820
|
)
|
|
2484
2821
|
] }),
|
|
2485
|
-
/* @__PURE__ */
|
|
2486
|
-
/* @__PURE__ */
|
|
2822
|
+
/* @__PURE__ */ jsxs8("div", { className: "space-y-1", children: [
|
|
2823
|
+
/* @__PURE__ */ jsx10("div", { className: "grid grid-cols-7 gap-1 mb-2", children: dayNames.map((day) => /* @__PURE__ */ jsx10(
|
|
2487
2824
|
Typography,
|
|
2488
2825
|
{
|
|
2489
2826
|
variant: "label-xs-bold",
|
|
@@ -2493,11 +2830,11 @@ var DatePicker = React5.forwardRef(
|
|
|
2493
2830
|
},
|
|
2494
2831
|
day
|
|
2495
2832
|
)) }),
|
|
2496
|
-
/* @__PURE__ */
|
|
2833
|
+
/* @__PURE__ */ jsx10("div", { className: "grid grid-cols-7 gap-1", children: days.map((date, index) => /* @__PURE__ */ jsx10(
|
|
2497
2834
|
"div",
|
|
2498
2835
|
{
|
|
2499
2836
|
className: "h-8 w-8 flex items-center justify-center",
|
|
2500
|
-
children: date && /* @__PURE__ */
|
|
2837
|
+
children: date && /* @__PURE__ */ jsx10(
|
|
2501
2838
|
"button",
|
|
2502
2839
|
{
|
|
2503
2840
|
onClick: () => handleDateSelect(date),
|
|
@@ -2511,7 +2848,7 @@ var DatePicker = React5.forwardRef(
|
|
|
2511
2848
|
isToday(date) && !isDateSelected(date) && !isDateDisabled(date) && "text-blue-600 after:content-[''] after:absolute after:bottom-1 after:left-1/2 after:-translate-x-1/2 after:w-1 after:h-1 after:bg-blue-600 after:rounded-full",
|
|
2512
2849
|
isDateDisabled(date) && "text-secondary/40 cursor-not-allowed opacity-50"
|
|
2513
2850
|
),
|
|
2514
|
-
children: /* @__PURE__ */
|
|
2851
|
+
children: /* @__PURE__ */ jsx10(Typography, { variant: "label-sm", as: "span", children: date.getDate() })
|
|
2515
2852
|
}
|
|
2516
2853
|
)
|
|
2517
2854
|
},
|
|
@@ -2529,9 +2866,9 @@ var DatePicker = React5.forwardRef(
|
|
|
2529
2866
|
DatePicker.displayName = "DatePicker";
|
|
2530
2867
|
|
|
2531
2868
|
// src/components/ui/upload.tsx
|
|
2532
|
-
import * as
|
|
2869
|
+
import * as React8 from "react";
|
|
2533
2870
|
import { cva as cva6 } from "class-variance-authority";
|
|
2534
|
-
import { jsx as
|
|
2871
|
+
import { jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
2535
2872
|
var DEFAULT_MAX_FILE_SIZE = 10 * 1024 * 1024;
|
|
2536
2873
|
var uploadVariants = cva6(
|
|
2537
2874
|
"relative flex flex-col items-center justify-center rounded-lg transition-all duration-200 ease-in-out overflow-hidden",
|
|
@@ -2555,7 +2892,7 @@ var uploadVariants = cva6(
|
|
|
2555
2892
|
}
|
|
2556
2893
|
}
|
|
2557
2894
|
);
|
|
2558
|
-
var Upload =
|
|
2895
|
+
var Upload = React8.forwardRef(
|
|
2559
2896
|
({
|
|
2560
2897
|
className,
|
|
2561
2898
|
onFileSelect,
|
|
@@ -2568,8 +2905,8 @@ var Upload = React6.forwardRef(
|
|
|
2568
2905
|
selectedFiles = [],
|
|
2569
2906
|
...props
|
|
2570
2907
|
}, ref) => {
|
|
2571
|
-
const fileInputRef =
|
|
2572
|
-
const [isDragOver, setIsDragOver] =
|
|
2908
|
+
const fileInputRef = React8.useRef(null);
|
|
2909
|
+
const [isDragOver, setIsDragOver] = React8.useState(false);
|
|
2573
2910
|
const getFileTypeDisplay = () => {
|
|
2574
2911
|
const typeMap = {
|
|
2575
2912
|
"application/pdf": "PDF",
|
|
@@ -2633,17 +2970,17 @@ var Upload = React6.forwardRef(
|
|
|
2633
2970
|
const renderContent = () => {
|
|
2634
2971
|
switch (effectiveState) {
|
|
2635
2972
|
case "error":
|
|
2636
|
-
return /* @__PURE__ */
|
|
2973
|
+
return /* @__PURE__ */ jsxs9(
|
|
2637
2974
|
"div",
|
|
2638
2975
|
{
|
|
2639
2976
|
className: "flex flex-col items-center text-center max-w-[289px]",
|
|
2640
2977
|
style: { gap: "32px" },
|
|
2641
2978
|
children: [
|
|
2642
|
-
/* @__PURE__ */
|
|
2643
|
-
/* @__PURE__ */
|
|
2644
|
-
/* @__PURE__ */
|
|
2979
|
+
/* @__PURE__ */ jsxs9("div", { className: "space-y-4", children: [
|
|
2980
|
+
/* @__PURE__ */ jsx11(Typography, { variant: "heading-sm", children: "Upload fail" }),
|
|
2981
|
+
/* @__PURE__ */ jsx11(Typography, { variant: "body-md", className: "text-error", children: errorMessage })
|
|
2645
2982
|
] }),
|
|
2646
|
-
/* @__PURE__ */
|
|
2983
|
+
/* @__PURE__ */ jsx11(
|
|
2647
2984
|
Button,
|
|
2648
2985
|
{
|
|
2649
2986
|
variant: "destructive",
|
|
@@ -2657,22 +2994,22 @@ var Upload = React6.forwardRef(
|
|
|
2657
2994
|
}
|
|
2658
2995
|
);
|
|
2659
2996
|
case "uploading":
|
|
2660
|
-
return /* @__PURE__ */
|
|
2997
|
+
return /* @__PURE__ */ jsxs9(
|
|
2661
2998
|
"div",
|
|
2662
2999
|
{
|
|
2663
3000
|
className: "flex flex-col items-center text-center max-w-[289px]",
|
|
2664
3001
|
style: { gap: "32px" },
|
|
2665
3002
|
children: [
|
|
2666
|
-
/* @__PURE__ */
|
|
2667
|
-
/* @__PURE__ */
|
|
2668
|
-
/* @__PURE__ */
|
|
3003
|
+
/* @__PURE__ */ jsx11(Typography, { variant: "heading-sm", className: "text-dark", children: "Uploading files" }),
|
|
3004
|
+
/* @__PURE__ */ jsxs9("div", { className: "w-full max-w-[720px] space-y-2", children: [
|
|
3005
|
+
/* @__PURE__ */ jsx11("div", { className: "w-full bg-gray rounded-full h-2", children: /* @__PURE__ */ jsx11(
|
|
2669
3006
|
"div",
|
|
2670
3007
|
{
|
|
2671
3008
|
className: "bg-canvas-primary h-2 rounded-full transition-all duration-300 ease-in-out",
|
|
2672
3009
|
style: { width: `${progress}%` }
|
|
2673
3010
|
}
|
|
2674
3011
|
) }),
|
|
2675
|
-
/* @__PURE__ */
|
|
3012
|
+
/* @__PURE__ */ jsxs9(
|
|
2676
3013
|
Typography,
|
|
2677
3014
|
{
|
|
2678
3015
|
variant: "body-sm",
|
|
@@ -2688,29 +3025,29 @@ var Upload = React6.forwardRef(
|
|
|
2688
3025
|
}
|
|
2689
3026
|
);
|
|
2690
3027
|
case "success":
|
|
2691
|
-
return /* @__PURE__ */
|
|
3028
|
+
return /* @__PURE__ */ jsx11(
|
|
2692
3029
|
"div",
|
|
2693
3030
|
{
|
|
2694
3031
|
className: "flex flex-col items-center text-center max-w-[289px]",
|
|
2695
3032
|
style: { gap: "32px" },
|
|
2696
|
-
children: /* @__PURE__ */
|
|
2697
|
-
/* @__PURE__ */
|
|
2698
|
-
selectedFiles.length > 0 && /* @__PURE__ */
|
|
3033
|
+
children: /* @__PURE__ */ jsxs9("div", { className: "space-y-4", children: [
|
|
3034
|
+
/* @__PURE__ */ jsx11(Typography, { variant: "heading-sm", className: "text-success", children: "Upload successful!" }),
|
|
3035
|
+
selectedFiles.length > 0 && /* @__PURE__ */ jsx11("div", { className: "text-center", children: selectedFiles.map((file, index) => /* @__PURE__ */ jsx11(Typography, { variant: "body-sm", children: file.name }, index)) })
|
|
2699
3036
|
] })
|
|
2700
3037
|
}
|
|
2701
3038
|
);
|
|
2702
3039
|
default:
|
|
2703
|
-
return /* @__PURE__ */
|
|
3040
|
+
return /* @__PURE__ */ jsxs9(
|
|
2704
3041
|
"div",
|
|
2705
3042
|
{
|
|
2706
3043
|
className: "flex flex-col items-center text-center max-w-[289px]",
|
|
2707
3044
|
style: { gap: "32px" },
|
|
2708
3045
|
children: [
|
|
2709
|
-
/* @__PURE__ */
|
|
2710
|
-
/* @__PURE__ */
|
|
2711
|
-
/* @__PURE__ */
|
|
3046
|
+
/* @__PURE__ */ jsxs9("div", { className: "space-y-4", children: [
|
|
3047
|
+
/* @__PURE__ */ jsx11(Typography, { variant: "heading-sm", className: "text-dark", children: "Drag & drop files here" }),
|
|
3048
|
+
/* @__PURE__ */ jsx11(Typography, { variant: "body-md", className: "text-secondary", children: "or click to browse from your computer" })
|
|
2712
3049
|
] }),
|
|
2713
|
-
/* @__PURE__ */
|
|
3050
|
+
/* @__PURE__ */ jsx11(
|
|
2714
3051
|
Button,
|
|
2715
3052
|
{
|
|
2716
3053
|
variant: "default",
|
|
@@ -2724,10 +3061,10 @@ var Upload = React6.forwardRef(
|
|
|
2724
3061
|
children: "Choose files"
|
|
2725
3062
|
}
|
|
2726
3063
|
),
|
|
2727
|
-
/* @__PURE__ */
|
|
3064
|
+
/* @__PURE__ */ jsxs9(Typography, { variant: "body-sm", className: "text-secondary", children: [
|
|
2728
3065
|
"Supported file: ",
|
|
2729
3066
|
getFileTypeDisplay(),
|
|
2730
|
-
/* @__PURE__ */
|
|
3067
|
+
/* @__PURE__ */ jsx11("br", {}),
|
|
2731
3068
|
"Max: ",
|
|
2732
3069
|
Math.round(maxFileSize / 1024 / 1024),
|
|
2733
3070
|
" MB each"
|
|
@@ -2737,7 +3074,7 @@ var Upload = React6.forwardRef(
|
|
|
2737
3074
|
);
|
|
2738
3075
|
}
|
|
2739
3076
|
};
|
|
2740
|
-
return /* @__PURE__ */
|
|
3077
|
+
return /* @__PURE__ */ jsxs9(
|
|
2741
3078
|
"div",
|
|
2742
3079
|
{
|
|
2743
3080
|
ref,
|
|
@@ -2761,7 +3098,7 @@ var Upload = React6.forwardRef(
|
|
|
2761
3098
|
"aria-disabled": disabled,
|
|
2762
3099
|
...props,
|
|
2763
3100
|
children: [
|
|
2764
|
-
/* @__PURE__ */
|
|
3101
|
+
/* @__PURE__ */ jsx11(
|
|
2765
3102
|
"input",
|
|
2766
3103
|
{
|
|
2767
3104
|
ref: fileInputRef,
|
|
@@ -2781,34 +3118,34 @@ var Upload = React6.forwardRef(
|
|
|
2781
3118
|
Upload.displayName = "Upload";
|
|
2782
3119
|
|
|
2783
3120
|
// src/components/ui/checkbox.tsx
|
|
2784
|
-
import * as
|
|
3121
|
+
import * as React9 from "react";
|
|
2785
3122
|
import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
|
|
2786
3123
|
import { cva as cva7 } from "class-variance-authority";
|
|
2787
|
-
import { jsx as
|
|
3124
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
2788
3125
|
var checkboxVariants = cva7(
|
|
2789
3126
|
"peer size-4 shrink-0 rounded-[4px] border bg-light hover:bg-info-subtle transition-colors focus-visible:outline-none focus-visible:border-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=checked]:text-light [&_svg]:pointer-events-none [&_svg]:size-3 [&_svg]:shrink-0 border-strong focus-visible:border-interactive aria-invalid:border-error aria-invalid:focus-visible:border-error"
|
|
2790
3127
|
);
|
|
2791
|
-
var Checkbox =
|
|
3128
|
+
var Checkbox = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx12(
|
|
2792
3129
|
CheckboxPrimitive.Root,
|
|
2793
3130
|
{
|
|
2794
3131
|
ref,
|
|
2795
3132
|
className: cn(checkboxVariants(), className),
|
|
2796
3133
|
...props,
|
|
2797
|
-
children: /* @__PURE__ */
|
|
3134
|
+
children: /* @__PURE__ */ jsx12(CheckboxPrimitive.Indicator, { className: "flex items-center justify-center text-current", children: /* @__PURE__ */ jsx12(CheckIcon, { variant: "light", className: "size-3" }) })
|
|
2798
3135
|
}
|
|
2799
3136
|
));
|
|
2800
3137
|
Checkbox.displayName = CheckboxPrimitive.Root.displayName;
|
|
2801
3138
|
|
|
2802
3139
|
// src/components/ui/textarea.tsx
|
|
2803
|
-
import * as
|
|
2804
|
-
import { jsx as
|
|
2805
|
-
var Textarea =
|
|
3140
|
+
import * as React10 from "react";
|
|
3141
|
+
import { jsx as jsx13 } from "react/jsx-runtime";
|
|
3142
|
+
var Textarea = React10.forwardRef(
|
|
2806
3143
|
({ className, style, ...props }, ref) => {
|
|
2807
3144
|
const tokenStyles = {
|
|
2808
3145
|
font: "var(--typography-label-md-regular)",
|
|
2809
3146
|
...style
|
|
2810
3147
|
};
|
|
2811
|
-
return /* @__PURE__ */
|
|
3148
|
+
return /* @__PURE__ */ jsx13(
|
|
2812
3149
|
"textarea",
|
|
2813
3150
|
{
|
|
2814
3151
|
className: cn(
|
|
@@ -2825,9 +3162,9 @@ var Textarea = React8.forwardRef(
|
|
|
2825
3162
|
Textarea.displayName = "Textarea";
|
|
2826
3163
|
|
|
2827
3164
|
// src/components/ui/badge.tsx
|
|
2828
|
-
import * as
|
|
3165
|
+
import * as React11 from "react";
|
|
2829
3166
|
import { cva as cva8 } from "class-variance-authority";
|
|
2830
|
-
import { jsx as
|
|
3167
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
2831
3168
|
var badgeVariants = cva8(
|
|
2832
3169
|
"inline-flex items-center justify-center gap-1 whitespace-nowrap transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2",
|
|
2833
3170
|
{
|
|
@@ -2850,7 +3187,7 @@ var badgeVariants = cva8(
|
|
|
2850
3187
|
function getBadgeTypographyStyles() {
|
|
2851
3188
|
return { font: "var(--typography-label-sm-bold)" };
|
|
2852
3189
|
}
|
|
2853
|
-
var Badge =
|
|
3190
|
+
var Badge = React11.forwardRef(
|
|
2854
3191
|
({ className, variant, style, ...props }, ref) => {
|
|
2855
3192
|
if (!variant) {
|
|
2856
3193
|
return null;
|
|
@@ -2860,7 +3197,7 @@ var Badge = React9.forwardRef(
|
|
|
2860
3197
|
...typographyStyles,
|
|
2861
3198
|
...style
|
|
2862
3199
|
};
|
|
2863
|
-
return /* @__PURE__ */
|
|
3200
|
+
return /* @__PURE__ */ jsx14(
|
|
2864
3201
|
"span",
|
|
2865
3202
|
{
|
|
2866
3203
|
className: cn(
|
|
@@ -2878,13 +3215,13 @@ var Badge = React9.forwardRef(
|
|
|
2878
3215
|
Badge.displayName = "Badge";
|
|
2879
3216
|
|
|
2880
3217
|
// src/components/pdf-viewer/index.tsx
|
|
2881
|
-
import * as
|
|
3218
|
+
import * as React16 from "react";
|
|
2882
3219
|
import "react-pdf/dist/Page/TextLayer.css";
|
|
2883
3220
|
|
|
2884
3221
|
// src/components/pdf-viewer/components/PdfDocument.tsx
|
|
2885
|
-
import * as
|
|
3222
|
+
import * as React12 from "react";
|
|
2886
3223
|
import { Document, Page } from "react-pdf";
|
|
2887
|
-
import { jsx as
|
|
3224
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
2888
3225
|
var PdfDocument = ({
|
|
2889
3226
|
file,
|
|
2890
3227
|
pageWidth,
|
|
@@ -2892,24 +3229,24 @@ var PdfDocument = ({
|
|
|
2892
3229
|
onLoadSuccess,
|
|
2893
3230
|
onLoadError
|
|
2894
3231
|
}) => {
|
|
2895
|
-
const [numPages, setNumPages] =
|
|
3232
|
+
const [numPages, setNumPages] = React12.useState();
|
|
2896
3233
|
function handleDocumentLoadSuccess({ numPages: numPages2 }) {
|
|
2897
3234
|
setNumPages(numPages2);
|
|
2898
3235
|
onLoadSuccess?.(numPages2);
|
|
2899
3236
|
}
|
|
2900
3237
|
if (!file) {
|
|
2901
|
-
return /* @__PURE__ */
|
|
3238
|
+
return /* @__PURE__ */ jsx15("div", { className: "flex items-center justify-center h-64", children: /* @__PURE__ */ jsx15(Typography, { variant: "body-md", className: "text-secondary", children: "No PDF available" }) });
|
|
2902
3239
|
}
|
|
2903
|
-
return /* @__PURE__ */
|
|
3240
|
+
return /* @__PURE__ */ jsx15(
|
|
2904
3241
|
Document,
|
|
2905
3242
|
{
|
|
2906
3243
|
file,
|
|
2907
3244
|
onLoadSuccess: handleDocumentLoadSuccess,
|
|
2908
3245
|
onLoadError,
|
|
2909
|
-
loading: /* @__PURE__ */
|
|
2910
|
-
error: /* @__PURE__ */
|
|
3246
|
+
loading: /* @__PURE__ */ jsx15("div", { className: "flex items-center justify-center h-64", children: /* @__PURE__ */ jsx15(Typography, { variant: "body-md", className: "text-secondary", children: "Rendering PDF..." }) }),
|
|
3247
|
+
error: /* @__PURE__ */ jsx15("div", { className: "flex items-center justify-center h-64", children: /* @__PURE__ */ jsx15(Typography, { variant: "body-md", className: "text-error", children: "Failed to render PDF" }) }),
|
|
2911
3248
|
className: "flex flex-col items-center p-4",
|
|
2912
|
-
children: numPages && pageWidth > 0 && Array.from(new Array(numPages), (_, index) => /* @__PURE__ */
|
|
3249
|
+
children: numPages && pageWidth > 0 && Array.from(new Array(numPages), (_, index) => /* @__PURE__ */ jsx15(
|
|
2913
3250
|
Page,
|
|
2914
3251
|
{
|
|
2915
3252
|
pageNumber: index + 1,
|
|
@@ -2926,14 +3263,14 @@ var PdfDocument = ({
|
|
|
2926
3263
|
PdfDocument.displayName = "PdfDocument";
|
|
2927
3264
|
|
|
2928
3265
|
// src/components/pdf-viewer/components/PdfHeader.tsx
|
|
2929
|
-
import { jsx as
|
|
3266
|
+
import { jsx as jsx16, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
2930
3267
|
var PdfHeader = ({
|
|
2931
3268
|
title,
|
|
2932
3269
|
onDownload,
|
|
2933
3270
|
onPrint
|
|
2934
3271
|
}) => {
|
|
2935
|
-
return /* @__PURE__ */
|
|
2936
|
-
/* @__PURE__ */
|
|
3272
|
+
return /* @__PURE__ */ jsxs10("div", { className: "flex items-center justify-between gap-4 px-4 py-3 bg-neutral-400 border-b border-subtle", children: [
|
|
3273
|
+
/* @__PURE__ */ jsx16("div", { className: "flex-shrink min-w-0", children: /* @__PURE__ */ jsx16(
|
|
2937
3274
|
Typography,
|
|
2938
3275
|
{
|
|
2939
3276
|
variant: "label-md-bold",
|
|
@@ -2942,25 +3279,25 @@ var PdfHeader = ({
|
|
|
2942
3279
|
children: title || "Untitled Document"
|
|
2943
3280
|
}
|
|
2944
3281
|
) }),
|
|
2945
|
-
/* @__PURE__ */
|
|
2946
|
-
/* @__PURE__ */
|
|
3282
|
+
/* @__PURE__ */ jsxs10("div", { className: "flex items-center gap-2 flex-shrink-0", children: [
|
|
3283
|
+
/* @__PURE__ */ jsx16(
|
|
2947
3284
|
"button",
|
|
2948
3285
|
{
|
|
2949
3286
|
onClick: onDownload,
|
|
2950
3287
|
className: "p-2 hover:bg-neutral-500 rounded transition-colors",
|
|
2951
3288
|
"aria-label": "Download PDF",
|
|
2952
3289
|
type: "button",
|
|
2953
|
-
children: /* @__PURE__ */
|
|
3290
|
+
children: /* @__PURE__ */ jsx16(Download, { variant: "dark", className: "w-5 h-5" })
|
|
2954
3291
|
}
|
|
2955
3292
|
),
|
|
2956
|
-
/* @__PURE__ */
|
|
3293
|
+
/* @__PURE__ */ jsx16(
|
|
2957
3294
|
"button",
|
|
2958
3295
|
{
|
|
2959
3296
|
onClick: onPrint,
|
|
2960
3297
|
className: "p-2 hover:bg-neutral-500 rounded transition-colors",
|
|
2961
3298
|
"aria-label": "Print PDF",
|
|
2962
3299
|
type: "button",
|
|
2963
|
-
children: /* @__PURE__ */
|
|
3300
|
+
children: /* @__PURE__ */ jsx16(Print, { variant: "dark", className: "w-5 h-5" })
|
|
2964
3301
|
}
|
|
2965
3302
|
)
|
|
2966
3303
|
] })
|
|
@@ -2969,12 +3306,12 @@ var PdfHeader = ({
|
|
|
2969
3306
|
PdfHeader.displayName = "PdfHeader";
|
|
2970
3307
|
|
|
2971
3308
|
// src/components/pdf-viewer/hooks/useContainerWidth.ts
|
|
2972
|
-
import * as
|
|
3309
|
+
import * as React13 from "react";
|
|
2973
3310
|
function useContainerWidth(padding = 32) {
|
|
2974
|
-
const [containerWidth, setContainerWidth] =
|
|
2975
|
-
const containerRef =
|
|
2976
|
-
const lastWidthRef =
|
|
2977
|
-
|
|
3311
|
+
const [containerWidth, setContainerWidth] = React13.useState(0);
|
|
3312
|
+
const containerRef = React13.useRef(null);
|
|
3313
|
+
const lastWidthRef = React13.useRef(0);
|
|
3314
|
+
React13.useEffect(() => {
|
|
2978
3315
|
const element = containerRef.current;
|
|
2979
3316
|
if (!element) return;
|
|
2980
3317
|
const resizeObserver = new ResizeObserver((entries) => {
|
|
@@ -2998,9 +3335,9 @@ function useContainerWidth(padding = 32) {
|
|
|
2998
3335
|
}
|
|
2999
3336
|
|
|
3000
3337
|
// src/components/pdf-viewer/hooks/usePdfDownload.ts
|
|
3001
|
-
import * as
|
|
3338
|
+
import * as React14 from "react";
|
|
3002
3339
|
function usePdfDownload(file, title) {
|
|
3003
|
-
const download =
|
|
3340
|
+
const download = React14.useCallback(async () => {
|
|
3004
3341
|
if (!file) return;
|
|
3005
3342
|
try {
|
|
3006
3343
|
let blob;
|
|
@@ -3032,11 +3369,11 @@ function usePdfDownload(file, title) {
|
|
|
3032
3369
|
}
|
|
3033
3370
|
|
|
3034
3371
|
// src/components/pdf-viewer/hooks/usePdfPrint.ts
|
|
3035
|
-
import * as
|
|
3372
|
+
import * as React15 from "react";
|
|
3036
3373
|
function usePdfPrint(file) {
|
|
3037
|
-
const [printBlobUrl, setPrintBlobUrl] =
|
|
3038
|
-
const printFrameRef =
|
|
3039
|
-
const preparePrint =
|
|
3374
|
+
const [printBlobUrl, setPrintBlobUrl] = React15.useState(null);
|
|
3375
|
+
const printFrameRef = React15.useRef(null);
|
|
3376
|
+
const preparePrint = React15.useCallback(async () => {
|
|
3040
3377
|
if (!file) return;
|
|
3041
3378
|
try {
|
|
3042
3379
|
let blob;
|
|
@@ -3052,14 +3389,14 @@ function usePdfPrint(file) {
|
|
|
3052
3389
|
console.error("Failed to prepare PDF for printing:", error);
|
|
3053
3390
|
}
|
|
3054
3391
|
}, [file]);
|
|
3055
|
-
|
|
3392
|
+
React15.useEffect(() => {
|
|
3056
3393
|
return () => {
|
|
3057
3394
|
if (printBlobUrl) {
|
|
3058
3395
|
URL.revokeObjectURL(printBlobUrl);
|
|
3059
3396
|
}
|
|
3060
3397
|
};
|
|
3061
3398
|
}, [printBlobUrl]);
|
|
3062
|
-
const print =
|
|
3399
|
+
const print = React15.useCallback(() => {
|
|
3063
3400
|
if (printFrameRef.current?.contentWindow) {
|
|
3064
3401
|
printFrameRef.current.contentWindow.print();
|
|
3065
3402
|
}
|
|
@@ -3074,8 +3411,8 @@ function initializePdfWorker(workerUrl) {
|
|
|
3074
3411
|
}
|
|
3075
3412
|
|
|
3076
3413
|
// src/components/pdf-viewer/index.tsx
|
|
3077
|
-
import { jsx as
|
|
3078
|
-
var PdfViewer =
|
|
3414
|
+
import { jsx as jsx17, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
3415
|
+
var PdfViewer = React16.forwardRef(
|
|
3079
3416
|
({
|
|
3080
3417
|
file,
|
|
3081
3418
|
title,
|
|
@@ -3092,35 +3429,35 @@ var PdfViewer = React14.forwardRef(
|
|
|
3092
3429
|
const { printFrameRef, printBlobUrl, preparePrint, print } = usePdfPrint(file);
|
|
3093
3430
|
const download = usePdfDownload(file, title);
|
|
3094
3431
|
const effectiveWidth = pageWidth || containerWidth;
|
|
3095
|
-
const handleLoadSuccess =
|
|
3432
|
+
const handleLoadSuccess = React16.useCallback(
|
|
3096
3433
|
async (numPages) => {
|
|
3097
3434
|
onLoadSuccess?.(numPages);
|
|
3098
3435
|
await preparePrint();
|
|
3099
3436
|
},
|
|
3100
3437
|
[onLoadSuccess, preparePrint]
|
|
3101
3438
|
);
|
|
3102
|
-
const handleDownload =
|
|
3439
|
+
const handleDownload = React16.useCallback(() => {
|
|
3103
3440
|
if (onDownload) {
|
|
3104
3441
|
onDownload();
|
|
3105
3442
|
return;
|
|
3106
3443
|
}
|
|
3107
3444
|
download();
|
|
3108
3445
|
}, [onDownload, download]);
|
|
3109
|
-
const handlePrint =
|
|
3446
|
+
const handlePrint = React16.useCallback(() => {
|
|
3110
3447
|
if (onPrint) {
|
|
3111
3448
|
onPrint();
|
|
3112
3449
|
return;
|
|
3113
3450
|
}
|
|
3114
3451
|
print();
|
|
3115
3452
|
}, [onPrint, print]);
|
|
3116
|
-
return /* @__PURE__ */
|
|
3453
|
+
return /* @__PURE__ */ jsxs11(
|
|
3117
3454
|
"div",
|
|
3118
3455
|
{
|
|
3119
3456
|
ref,
|
|
3120
3457
|
className: cn("h-full flex flex-col", className),
|
|
3121
3458
|
...props,
|
|
3122
3459
|
children: [
|
|
3123
|
-
printBlobUrl && /* @__PURE__ */
|
|
3460
|
+
printBlobUrl && /* @__PURE__ */ jsx17(
|
|
3124
3461
|
"iframe",
|
|
3125
3462
|
{
|
|
3126
3463
|
ref: printFrameRef,
|
|
@@ -3129,7 +3466,7 @@ var PdfViewer = React14.forwardRef(
|
|
|
3129
3466
|
title: "PDF for printing"
|
|
3130
3467
|
}
|
|
3131
3468
|
),
|
|
3132
|
-
/* @__PURE__ */
|
|
3469
|
+
/* @__PURE__ */ jsx17(
|
|
3133
3470
|
PdfHeader,
|
|
3134
3471
|
{
|
|
3135
3472
|
title,
|
|
@@ -3137,12 +3474,12 @@ var PdfViewer = React14.forwardRef(
|
|
|
3137
3474
|
onPrint: handlePrint
|
|
3138
3475
|
}
|
|
3139
3476
|
),
|
|
3140
|
-
/* @__PURE__ */
|
|
3477
|
+
/* @__PURE__ */ jsx17(
|
|
3141
3478
|
"div",
|
|
3142
3479
|
{
|
|
3143
3480
|
ref: containerRef,
|
|
3144
3481
|
className: "flex-1 overflow-y-auto overflow-x-hidden bg-neutral-300",
|
|
3145
|
-
children: /* @__PURE__ */
|
|
3482
|
+
children: /* @__PURE__ */ jsx17(
|
|
3146
3483
|
PdfDocument,
|
|
3147
3484
|
{
|
|
3148
3485
|
file,
|
|
@@ -3162,9 +3499,9 @@ var PdfViewer = React14.forwardRef(
|
|
|
3162
3499
|
PdfViewer.displayName = "PdfViewer";
|
|
3163
3500
|
|
|
3164
3501
|
// src/components/ui/tabs.tsx
|
|
3165
|
-
import * as
|
|
3502
|
+
import * as React17 from "react";
|
|
3166
3503
|
import { cva as cva9 } from "class-variance-authority";
|
|
3167
|
-
import { jsx as
|
|
3504
|
+
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
3168
3505
|
var tabsVariants = cva9(
|
|
3169
3506
|
"inline-flex items-center justify-start whitespace-nowrap transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-interactive focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 h-10",
|
|
3170
3507
|
{
|
|
@@ -3178,17 +3515,17 @@ var tabsVariants = cva9(
|
|
|
3178
3515
|
}
|
|
3179
3516
|
}
|
|
3180
3517
|
);
|
|
3181
|
-
var TabsContext =
|
|
3518
|
+
var TabsContext = React17.createContext(
|
|
3182
3519
|
void 0
|
|
3183
3520
|
);
|
|
3184
3521
|
function useTabsContext() {
|
|
3185
|
-
const context =
|
|
3522
|
+
const context = React17.useContext(TabsContext);
|
|
3186
3523
|
if (!context) {
|
|
3187
3524
|
throw new Error("Tabs components must be used within a Tabs provider");
|
|
3188
3525
|
}
|
|
3189
3526
|
return context;
|
|
3190
3527
|
}
|
|
3191
|
-
var Tabs =
|
|
3528
|
+
var Tabs = React17.forwardRef((props, ref) => {
|
|
3192
3529
|
const {
|
|
3193
3530
|
className,
|
|
3194
3531
|
value,
|
|
@@ -3197,7 +3534,7 @@ var Tabs = React15.forwardRef((props, ref) => {
|
|
|
3197
3534
|
children,
|
|
3198
3535
|
...restProps
|
|
3199
3536
|
} = props;
|
|
3200
|
-
const contextValue =
|
|
3537
|
+
const contextValue = React17.useMemo(
|
|
3201
3538
|
() => ({
|
|
3202
3539
|
activeTab: value,
|
|
3203
3540
|
setActiveTab: onValueChange,
|
|
@@ -3205,13 +3542,13 @@ var Tabs = React15.forwardRef((props, ref) => {
|
|
|
3205
3542
|
}),
|
|
3206
3543
|
[value, onValueChange, variant]
|
|
3207
3544
|
);
|
|
3208
|
-
return /* @__PURE__ */
|
|
3545
|
+
return /* @__PURE__ */ jsx18(TabsContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx18("div", { ref, className: cn("w-full", className), ...restProps, children }) });
|
|
3209
3546
|
});
|
|
3210
3547
|
Tabs.displayName = "Tabs";
|
|
3211
|
-
var TabsList =
|
|
3548
|
+
var TabsList = React17.forwardRef(
|
|
3212
3549
|
(props, ref) => {
|
|
3213
3550
|
const { className, children, ...restProps } = props;
|
|
3214
|
-
return /* @__PURE__ */
|
|
3551
|
+
return /* @__PURE__ */ jsx18(
|
|
3215
3552
|
"div",
|
|
3216
3553
|
{
|
|
3217
3554
|
ref,
|
|
@@ -3227,7 +3564,7 @@ TabsList.displayName = "TabsList";
|
|
|
3227
3564
|
var getTabTypographyStyles = (isActive) => ({
|
|
3228
3565
|
font: isActive ? "var(--typography-label-sm-bold)" : "var(--typography-label-sm-regular)"
|
|
3229
3566
|
});
|
|
3230
|
-
var TabsTrigger =
|
|
3567
|
+
var TabsTrigger = React17.forwardRef(
|
|
3231
3568
|
(props, ref) => {
|
|
3232
3569
|
const { className, value, disabled, style, children, ...restProps } = props;
|
|
3233
3570
|
const { activeTab, setActiveTab, variant } = useTabsContext();
|
|
@@ -3235,22 +3572,22 @@ var TabsTrigger = React15.forwardRef(
|
|
|
3235
3572
|
throw new Error("TabsTrigger must have a value prop");
|
|
3236
3573
|
}
|
|
3237
3574
|
const isActive = activeTab === value;
|
|
3238
|
-
const tokenStyles =
|
|
3575
|
+
const tokenStyles = React17.useMemo(
|
|
3239
3576
|
() => ({
|
|
3240
3577
|
...getTabTypographyStyles(isActive),
|
|
3241
3578
|
...style
|
|
3242
3579
|
}),
|
|
3243
3580
|
[isActive, style]
|
|
3244
3581
|
);
|
|
3245
|
-
const triggerClassName =
|
|
3582
|
+
const triggerClassName = React17.useMemo(
|
|
3246
3583
|
() => cn(tabsVariants({ variant }), className),
|
|
3247
3584
|
[variant, className]
|
|
3248
3585
|
);
|
|
3249
|
-
const handleClick =
|
|
3586
|
+
const handleClick = React17.useCallback(() => {
|
|
3250
3587
|
if (disabled) return;
|
|
3251
3588
|
setActiveTab(value);
|
|
3252
3589
|
}, [disabled, setActiveTab, value]);
|
|
3253
|
-
return /* @__PURE__ */
|
|
3590
|
+
return /* @__PURE__ */ jsx18(
|
|
3254
3591
|
"button",
|
|
3255
3592
|
{
|
|
3256
3593
|
ref,
|
|
@@ -3264,13 +3601,13 @@ var TabsTrigger = React15.forwardRef(
|
|
|
3264
3601
|
disabled,
|
|
3265
3602
|
onClick: handleClick,
|
|
3266
3603
|
...restProps,
|
|
3267
|
-
children: /* @__PURE__ */
|
|
3604
|
+
children: /* @__PURE__ */ jsx18("span", { className: "pl-3 pr-6 py-2", children })
|
|
3268
3605
|
}
|
|
3269
3606
|
);
|
|
3270
3607
|
}
|
|
3271
3608
|
);
|
|
3272
3609
|
TabsTrigger.displayName = "TabsTrigger";
|
|
3273
|
-
var TabsContent =
|
|
3610
|
+
var TabsContent = React17.forwardRef(
|
|
3274
3611
|
(props, ref) => {
|
|
3275
3612
|
const { className, value, children, ...restProps } = props;
|
|
3276
3613
|
const { activeTab } = useTabsContext();
|
|
@@ -3281,7 +3618,7 @@ var TabsContent = React15.forwardRef(
|
|
|
3281
3618
|
if (!isActive) {
|
|
3282
3619
|
return null;
|
|
3283
3620
|
}
|
|
3284
|
-
return /* @__PURE__ */
|
|
3621
|
+
return /* @__PURE__ */ jsx18(
|
|
3285
3622
|
"div",
|
|
3286
3623
|
{
|
|
3287
3624
|
ref,
|
|
@@ -3299,11 +3636,11 @@ var TabsContent = React15.forwardRef(
|
|
|
3299
3636
|
TabsContent.displayName = "TabsContent";
|
|
3300
3637
|
|
|
3301
3638
|
// src/components/ui/dropdown-menu.tsx
|
|
3302
|
-
import * as
|
|
3639
|
+
import * as React18 from "react";
|
|
3303
3640
|
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
3304
|
-
import { jsx as
|
|
3641
|
+
import { jsx as jsx19, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
3305
3642
|
var DropdownMenu = DropdownMenuPrimitive.Root;
|
|
3306
|
-
var DropdownMenuTrigger =
|
|
3643
|
+
var DropdownMenuTrigger = React18.forwardRef(({ className, icon, children, ...props }, ref) => /* @__PURE__ */ jsxs12(
|
|
3307
3644
|
DropdownMenuPrimitive.Trigger,
|
|
3308
3645
|
{
|
|
3309
3646
|
ref,
|
|
@@ -3313,7 +3650,7 @@ var DropdownMenuTrigger = React16.forwardRef(({ className, icon, children, ...pr
|
|
|
3313
3650
|
),
|
|
3314
3651
|
...props,
|
|
3315
3652
|
children: [
|
|
3316
|
-
icon || /* @__PURE__ */
|
|
3653
|
+
icon || /* @__PURE__ */ jsx19(MoreMenu, { className: "size-4" }),
|
|
3317
3654
|
children
|
|
3318
3655
|
]
|
|
3319
3656
|
}
|
|
@@ -3323,7 +3660,7 @@ var DropdownMenuGroup = DropdownMenuPrimitive.Group;
|
|
|
3323
3660
|
var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
|
|
3324
3661
|
var DropdownMenuSub = DropdownMenuPrimitive.Sub;
|
|
3325
3662
|
var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
|
|
3326
|
-
var DropdownMenuSubTrigger =
|
|
3663
|
+
var DropdownMenuSubTrigger = React18.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs12(
|
|
3327
3664
|
DropdownMenuPrimitive.SubTrigger,
|
|
3328
3665
|
{
|
|
3329
3666
|
ref,
|
|
@@ -3336,12 +3673,12 @@ var DropdownMenuSubTrigger = React16.forwardRef(({ className, inset, children, .
|
|
|
3336
3673
|
...props,
|
|
3337
3674
|
children: [
|
|
3338
3675
|
children,
|
|
3339
|
-
/* @__PURE__ */
|
|
3676
|
+
/* @__PURE__ */ jsx19(ChevronRight, { className: "ml-auto" })
|
|
3340
3677
|
]
|
|
3341
3678
|
}
|
|
3342
3679
|
));
|
|
3343
3680
|
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
|
|
3344
|
-
var DropdownMenuSubContent =
|
|
3681
|
+
var DropdownMenuSubContent = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx19(
|
|
3345
3682
|
DropdownMenuPrimitive.SubContent,
|
|
3346
3683
|
{
|
|
3347
3684
|
ref,
|
|
@@ -3353,7 +3690,7 @@ var DropdownMenuSubContent = React16.forwardRef(({ className, ...props }, ref) =
|
|
|
3353
3690
|
}
|
|
3354
3691
|
));
|
|
3355
3692
|
DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
|
|
3356
|
-
var DropdownMenuContent =
|
|
3693
|
+
var DropdownMenuContent = React18.forwardRef(({ className, sideOffset = 4, align = "end", ...props }, ref) => /* @__PURE__ */ jsx19(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx19(
|
|
3357
3694
|
DropdownMenuPrimitive.Content,
|
|
3358
3695
|
{
|
|
3359
3696
|
ref,
|
|
@@ -3367,7 +3704,7 @@ var DropdownMenuContent = React16.forwardRef(({ className, sideOffset = 4, align
|
|
|
3367
3704
|
}
|
|
3368
3705
|
) }));
|
|
3369
3706
|
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
|
|
3370
|
-
var DropdownMenuItem =
|
|
3707
|
+
var DropdownMenuItem = React18.forwardRef(({ className, inset, style, ...props }, ref) => /* @__PURE__ */ jsx19(
|
|
3371
3708
|
DropdownMenuPrimitive.Item,
|
|
3372
3709
|
{
|
|
3373
3710
|
ref,
|
|
@@ -3384,7 +3721,7 @@ var DropdownMenuItem = React16.forwardRef(({ className, inset, style, ...props }
|
|
|
3384
3721
|
}
|
|
3385
3722
|
));
|
|
3386
3723
|
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
|
|
3387
|
-
var DropdownMenuCheckboxItem =
|
|
3724
|
+
var DropdownMenuCheckboxItem = React18.forwardRef(({ className, children, style, checked, ...props }, ref) => /* @__PURE__ */ jsxs12(
|
|
3388
3725
|
DropdownMenuPrimitive.CheckboxItem,
|
|
3389
3726
|
{
|
|
3390
3727
|
ref,
|
|
@@ -3399,7 +3736,7 @@ var DropdownMenuCheckboxItem = React16.forwardRef(({ className, children, style,
|
|
|
3399
3736
|
},
|
|
3400
3737
|
...props,
|
|
3401
3738
|
children: [
|
|
3402
|
-
/* @__PURE__ */
|
|
3739
|
+
/* @__PURE__ */ jsx19(
|
|
3403
3740
|
Checkbox,
|
|
3404
3741
|
{
|
|
3405
3742
|
checked: checked === true,
|
|
@@ -3407,12 +3744,12 @@ var DropdownMenuCheckboxItem = React16.forwardRef(({ className, children, style,
|
|
|
3407
3744
|
"aria-hidden": "true"
|
|
3408
3745
|
}
|
|
3409
3746
|
),
|
|
3410
|
-
/* @__PURE__ */
|
|
3747
|
+
/* @__PURE__ */ jsx19("span", { className: "flex-1", children })
|
|
3411
3748
|
]
|
|
3412
3749
|
}
|
|
3413
3750
|
));
|
|
3414
3751
|
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
|
|
3415
|
-
var DropdownMenuRadioItem =
|
|
3752
|
+
var DropdownMenuRadioItem = React18.forwardRef(({ className, children, style, ...props }, ref) => /* @__PURE__ */ jsxs12(
|
|
3416
3753
|
DropdownMenuPrimitive.RadioItem,
|
|
3417
3754
|
{
|
|
3418
3755
|
ref,
|
|
@@ -3426,13 +3763,13 @@ var DropdownMenuRadioItem = React16.forwardRef(({ className, children, style, ..
|
|
|
3426
3763
|
},
|
|
3427
3764
|
...props,
|
|
3428
3765
|
children: [
|
|
3429
|
-
/* @__PURE__ */
|
|
3766
|
+
/* @__PURE__ */ jsx19("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx19(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx19("span", { className: "h-2 w-2 rounded-full bg-current" }) }) }),
|
|
3430
3767
|
children
|
|
3431
3768
|
]
|
|
3432
3769
|
}
|
|
3433
3770
|
));
|
|
3434
3771
|
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
|
|
3435
|
-
var DropdownMenuLabel =
|
|
3772
|
+
var DropdownMenuLabel = React18.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx19(
|
|
3436
3773
|
DropdownMenuPrimitive.Label,
|
|
3437
3774
|
{
|
|
3438
3775
|
ref,
|
|
@@ -3445,7 +3782,7 @@ var DropdownMenuLabel = React16.forwardRef(({ className, inset, ...props }, ref)
|
|
|
3445
3782
|
}
|
|
3446
3783
|
));
|
|
3447
3784
|
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
|
|
3448
|
-
var DropdownMenuSeparator =
|
|
3785
|
+
var DropdownMenuSeparator = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx19(
|
|
3449
3786
|
DropdownMenuPrimitive.Separator,
|
|
3450
3787
|
{
|
|
3451
3788
|
ref,
|
|
@@ -3458,7 +3795,7 @@ var DropdownMenuShortcut = ({
|
|
|
3458
3795
|
className,
|
|
3459
3796
|
...props
|
|
3460
3797
|
}) => {
|
|
3461
|
-
return /* @__PURE__ */
|
|
3798
|
+
return /* @__PURE__ */ jsx19(
|
|
3462
3799
|
"span",
|
|
3463
3800
|
{
|
|
3464
3801
|
className: cn("ml-auto text-xs tracking-widest opacity-60", className),
|
|
@@ -3469,21 +3806,21 @@ var DropdownMenuShortcut = ({
|
|
|
3469
3806
|
DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
|
3470
3807
|
|
|
3471
3808
|
// src/components/ui/charts/chart-legend.tsx
|
|
3472
|
-
import { jsx as
|
|
3809
|
+
import { jsx as jsx20, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
3473
3810
|
function ChartLegend({
|
|
3474
3811
|
items,
|
|
3475
3812
|
x = 0,
|
|
3476
3813
|
y = 550,
|
|
3477
3814
|
className = ""
|
|
3478
3815
|
}) {
|
|
3479
|
-
return /* @__PURE__ */
|
|
3816
|
+
return /* @__PURE__ */ jsx20("foreignObject", { x, y, width: "100%", height: "40", children: /* @__PURE__ */ jsx20(
|
|
3480
3817
|
"div",
|
|
3481
3818
|
{
|
|
3482
3819
|
className: `flex justify-center items-center gap-6 ${className}`,
|
|
3483
3820
|
style: { height: "100%" },
|
|
3484
|
-
children: items.map(({ key, color, label }) => /* @__PURE__ */
|
|
3485
|
-
/* @__PURE__ */
|
|
3486
|
-
/* @__PURE__ */
|
|
3821
|
+
children: items.map(({ key, color, label }) => /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-2", children: [
|
|
3822
|
+
/* @__PURE__ */ jsx20("div", { className: "w-3 h-3", style: { backgroundColor: color } }),
|
|
3823
|
+
/* @__PURE__ */ jsx20(Typography, { variant: "body-xs", children: label || key })
|
|
3487
3824
|
] }, key))
|
|
3488
3825
|
}
|
|
3489
3826
|
) });
|
|
@@ -3601,12 +3938,12 @@ var formatLargeNumber = (value) => {
|
|
|
3601
3938
|
};
|
|
3602
3939
|
|
|
3603
3940
|
// src/components/ui/charts/chart-labels.tsx
|
|
3604
|
-
import { jsx as
|
|
3941
|
+
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
3605
3942
|
var createCustomXAxisLabel = (text, yOffset = 40) => {
|
|
3606
3943
|
const CustomXAxisLabel = ({ viewBox }) => {
|
|
3607
3944
|
if (!viewBox) return null;
|
|
3608
3945
|
const { x, y, width } = viewBox;
|
|
3609
|
-
return /* @__PURE__ */
|
|
3946
|
+
return /* @__PURE__ */ jsx21("g", { children: /* @__PURE__ */ jsx21("foreignObject", { x, y: y + yOffset, width, height: 20, children: /* @__PURE__ */ jsx21("div", { className: "flex justify-center w-full", children: /* @__PURE__ */ jsx21(Typography, { variant: "label-xs-bold", className: "text-secondary", children: text }) }) }) });
|
|
3610
3947
|
};
|
|
3611
3948
|
CustomXAxisLabel.displayName = "CustomXAxisLabel";
|
|
3612
3949
|
return CustomXAxisLabel;
|
|
@@ -3616,7 +3953,7 @@ var createCustomYAxisLabel = (text, leftMargin) => {
|
|
|
3616
3953
|
if (!viewBox) return null;
|
|
3617
3954
|
const { x, y, height } = viewBox;
|
|
3618
3955
|
const offset = leftMargin ? leftMargin + 10 : 110;
|
|
3619
|
-
return /* @__PURE__ */
|
|
3956
|
+
return /* @__PURE__ */ jsx21("g", { children: /* @__PURE__ */ jsx21("foreignObject", { x: x - offset, y, width: 100, height, children: /* @__PURE__ */ jsx21("div", { className: "flex items-center justify-center h-full transform -rotate-90 whitespace-nowrap", children: /* @__PURE__ */ jsx21(Typography, { variant: "label-xs-bold", className: "text-secondary", children: text }) }) }) });
|
|
3620
3957
|
};
|
|
3621
3958
|
CustomYAxisLabel.displayName = "CustomYAxisLabel";
|
|
3622
3959
|
return CustomYAxisLabel;
|
|
@@ -3625,14 +3962,14 @@ var createCustomYAxisRightLabel = (text) => {
|
|
|
3625
3962
|
const CustomYAxisRightLabel = ({ viewBox }) => {
|
|
3626
3963
|
if (!viewBox) return null;
|
|
3627
3964
|
const { x, y, width, height } = viewBox;
|
|
3628
|
-
return /* @__PURE__ */
|
|
3965
|
+
return /* @__PURE__ */ jsx21("g", { children: /* @__PURE__ */ jsx21("foreignObject", { x: x + width - 70, y, width: 120, height, children: /* @__PURE__ */ jsx21("div", { className: "flex items-center justify-center h-full transform rotate-90 whitespace-nowrap", children: /* @__PURE__ */ jsx21(Typography, { variant: "label-xs-bold", className: "text-secondary", children: text }) }) }) });
|
|
3629
3966
|
};
|
|
3630
3967
|
CustomYAxisRightLabel.displayName = "CustomYAxisRightLabel";
|
|
3631
3968
|
return CustomYAxisRightLabel;
|
|
3632
3969
|
};
|
|
3633
3970
|
var customXAxisTick = (props) => {
|
|
3634
3971
|
const { x, y, payload } = props;
|
|
3635
|
-
return /* @__PURE__ */
|
|
3972
|
+
return /* @__PURE__ */ jsx21("g", { transform: `translate(${x},${y})`, children: /* @__PURE__ */ jsx21(
|
|
3636
3973
|
"foreignObject",
|
|
3637
3974
|
{
|
|
3638
3975
|
x: -20,
|
|
@@ -3640,12 +3977,12 @@ var customXAxisTick = (props) => {
|
|
|
3640
3977
|
width: 40,
|
|
3641
3978
|
height: 20,
|
|
3642
3979
|
style: { overflow: "visible" },
|
|
3643
|
-
children: /* @__PURE__ */
|
|
3980
|
+
children: /* @__PURE__ */ jsx21(
|
|
3644
3981
|
"div",
|
|
3645
3982
|
{
|
|
3646
3983
|
className: "flex items-start justify-center h-full",
|
|
3647
3984
|
style: { overflow: "visible" },
|
|
3648
|
-
children: /* @__PURE__ */
|
|
3985
|
+
children: /* @__PURE__ */ jsx21(
|
|
3649
3986
|
Typography,
|
|
3650
3987
|
{
|
|
3651
3988
|
variant: "body-xs",
|
|
@@ -3660,7 +3997,7 @@ var customXAxisTick = (props) => {
|
|
|
3660
3997
|
};
|
|
3661
3998
|
var customXAxisTickRotated = (props) => {
|
|
3662
3999
|
const { x, y, payload } = props;
|
|
3663
|
-
return /* @__PURE__ */
|
|
4000
|
+
return /* @__PURE__ */ jsx21("g", { transform: `translate(${x},${y})`, children: /* @__PURE__ */ jsx21(
|
|
3664
4001
|
"text",
|
|
3665
4002
|
{
|
|
3666
4003
|
x: 0,
|
|
@@ -3679,25 +4016,25 @@ var customYAxisTick = (props) => {
|
|
|
3679
4016
|
const { x, y, payload } = props;
|
|
3680
4017
|
const text = String(payload.value);
|
|
3681
4018
|
const estimatedWidth = Math.max(text.length * 8, 80);
|
|
3682
|
-
return /* @__PURE__ */
|
|
4019
|
+
return /* @__PURE__ */ jsx21(
|
|
3683
4020
|
"foreignObject",
|
|
3684
4021
|
{
|
|
3685
4022
|
x: x - estimatedWidth + 5,
|
|
3686
4023
|
y: y - 6,
|
|
3687
4024
|
width: estimatedWidth,
|
|
3688
4025
|
height: 15,
|
|
3689
|
-
children: /* @__PURE__ */
|
|
4026
|
+
children: /* @__PURE__ */ jsx21("div", { className: "flex justify-end w-full", children: /* @__PURE__ */ jsx21(Typography, { variant: "body-xs", className: "text-secondary", children: payload.value }) })
|
|
3690
4027
|
}
|
|
3691
4028
|
);
|
|
3692
4029
|
};
|
|
3693
4030
|
|
|
3694
4031
|
// src/components/ui/charts/chart-tooltip.tsx
|
|
3695
|
-
import { Fragment, jsx as
|
|
4032
|
+
import { Fragment, jsx as jsx22, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
3696
4033
|
function TooltipContainer({
|
|
3697
4034
|
children,
|
|
3698
4035
|
className = ""
|
|
3699
4036
|
}) {
|
|
3700
|
-
return /* @__PURE__ */
|
|
4037
|
+
return /* @__PURE__ */ jsx22(
|
|
3701
4038
|
"div",
|
|
3702
4039
|
{
|
|
3703
4040
|
className: `bg-light border border-subtle rounded p-2.5 text-dark ${className}`,
|
|
@@ -3711,10 +4048,10 @@ function TooltipItem({
|
|
|
3711
4048
|
value,
|
|
3712
4049
|
className = ""
|
|
3713
4050
|
}) {
|
|
3714
|
-
return /* @__PURE__ */
|
|
3715
|
-
/* @__PURE__ */
|
|
3716
|
-
/* @__PURE__ */
|
|
3717
|
-
/* @__PURE__ */
|
|
4051
|
+
return /* @__PURE__ */ jsxs14(Fragment, { children: [
|
|
4052
|
+
/* @__PURE__ */ jsx22("br", {}),
|
|
4053
|
+
/* @__PURE__ */ jsxs14(Typography, { variant: "label-sm", className, children: [
|
|
4054
|
+
/* @__PURE__ */ jsx22(
|
|
3718
4055
|
"span",
|
|
3719
4056
|
{
|
|
3720
4057
|
className: "inline-block w-3 h-3 mr-1.5",
|
|
@@ -3732,9 +4069,9 @@ function GenericTooltip({
|
|
|
3732
4069
|
items,
|
|
3733
4070
|
className = ""
|
|
3734
4071
|
}) {
|
|
3735
|
-
return /* @__PURE__ */
|
|
3736
|
-
title && /* @__PURE__ */
|
|
3737
|
-
items.map((item, index) => /* @__PURE__ */
|
|
4072
|
+
return /* @__PURE__ */ jsxs14(TooltipContainer, { className, children: [
|
|
4073
|
+
title && /* @__PURE__ */ jsx22(Typography, { variant: "label-sm-bold", children: title }),
|
|
4074
|
+
items.map((item, index) => /* @__PURE__ */ jsx22(
|
|
3738
4075
|
TooltipItem,
|
|
3739
4076
|
{
|
|
3740
4077
|
color: item.color,
|
|
@@ -3747,17 +4084,17 @@ function GenericTooltip({
|
|
|
3747
4084
|
}
|
|
3748
4085
|
|
|
3749
4086
|
// src/components/ui/charts/bar-chart.tsx
|
|
3750
|
-
import { forwardRef as
|
|
4087
|
+
import { forwardRef as forwardRef15 } from "react";
|
|
3751
4088
|
import {
|
|
3752
4089
|
BarChart as RechartsBarChart,
|
|
3753
4090
|
Bar,
|
|
3754
4091
|
XAxis,
|
|
3755
4092
|
YAxis,
|
|
3756
|
-
Tooltip,
|
|
4093
|
+
Tooltip as Tooltip2,
|
|
3757
4094
|
ResponsiveContainer
|
|
3758
4095
|
} from "recharts";
|
|
3759
|
-
import { jsx as
|
|
3760
|
-
var BarChart =
|
|
4096
|
+
import { jsx as jsx23, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
4097
|
+
var BarChart = forwardRef15(
|
|
3761
4098
|
({
|
|
3762
4099
|
data,
|
|
3763
4100
|
xAxisKey,
|
|
@@ -3783,19 +4120,19 @@ var BarChart = forwardRef13(
|
|
|
3783
4120
|
};
|
|
3784
4121
|
const defaultLegendItems = showLegend && legendItems.length === 0 ? [{ key: yAxisKey, color: barColor, label: yAxisKey }] : legendItems;
|
|
3785
4122
|
const hasData = data && data.length > 0;
|
|
3786
|
-
return /* @__PURE__ */
|
|
4123
|
+
return /* @__PURE__ */ jsxs15(
|
|
3787
4124
|
"div",
|
|
3788
4125
|
{
|
|
3789
4126
|
ref,
|
|
3790
4127
|
className: `bg-light border border-subtle mx-6 ${className}`,
|
|
3791
4128
|
children: [
|
|
3792
|
-
/* @__PURE__ */
|
|
3793
|
-
/* @__PURE__ */
|
|
4129
|
+
/* @__PURE__ */ jsx23("div", { className: "flex items-center justify-between px-3 py-2 border-b border-subtle", children: /* @__PURE__ */ jsx23(Typography, { variant: "label-sm-bold", children: title }) }),
|
|
4130
|
+
/* @__PURE__ */ jsx23("div", { className: "pt-2 px-2", children: hasData ? /* @__PURE__ */ jsx23(
|
|
3794
4131
|
ResponsiveContainer,
|
|
3795
4132
|
{
|
|
3796
4133
|
width: "100%",
|
|
3797
4134
|
height: CHART_CONSTANTS.STANDARD_HEIGHT,
|
|
3798
|
-
children: /* @__PURE__ */
|
|
4135
|
+
children: /* @__PURE__ */ jsxs15(
|
|
3799
4136
|
RechartsBarChart,
|
|
3800
4137
|
{
|
|
3801
4138
|
data,
|
|
@@ -3807,7 +4144,7 @@ var BarChart = forwardRef13(
|
|
|
3807
4144
|
onClick: handleClick,
|
|
3808
4145
|
layout,
|
|
3809
4146
|
children: [
|
|
3810
|
-
/* @__PURE__ */
|
|
4147
|
+
/* @__PURE__ */ jsx23(
|
|
3811
4148
|
XAxis,
|
|
3812
4149
|
{
|
|
3813
4150
|
dataKey: xAxisKey,
|
|
@@ -3821,7 +4158,7 @@ var BarChart = forwardRef13(
|
|
|
3821
4158
|
label: xAxisLabel ? createCustomXAxisLabel(xAxisLabel, 80) : void 0
|
|
3822
4159
|
}
|
|
3823
4160
|
),
|
|
3824
|
-
/* @__PURE__ */
|
|
4161
|
+
/* @__PURE__ */ jsx23(
|
|
3825
4162
|
YAxis,
|
|
3826
4163
|
{
|
|
3827
4164
|
axisLine: false,
|
|
@@ -3832,8 +4169,8 @@ var BarChart = forwardRef13(
|
|
|
3832
4169
|
type: yAxisType
|
|
3833
4170
|
}
|
|
3834
4171
|
),
|
|
3835
|
-
/* @__PURE__ */
|
|
3836
|
-
|
|
4172
|
+
/* @__PURE__ */ jsx23(
|
|
4173
|
+
Tooltip2,
|
|
3837
4174
|
{
|
|
3838
4175
|
content: ({
|
|
3839
4176
|
active,
|
|
@@ -3841,7 +4178,7 @@ var BarChart = forwardRef13(
|
|
|
3841
4178
|
label
|
|
3842
4179
|
}) => {
|
|
3843
4180
|
if (active && payload && payload.length) {
|
|
3844
|
-
return /* @__PURE__ */
|
|
4181
|
+
return /* @__PURE__ */ jsx23(
|
|
3845
4182
|
GenericTooltip,
|
|
3846
4183
|
{
|
|
3847
4184
|
title: label?.toString(),
|
|
@@ -3857,7 +4194,7 @@ var BarChart = forwardRef13(
|
|
|
3857
4194
|
}
|
|
3858
4195
|
}
|
|
3859
4196
|
),
|
|
3860
|
-
/* @__PURE__ */
|
|
4197
|
+
/* @__PURE__ */ jsx23(
|
|
3861
4198
|
Bar,
|
|
3862
4199
|
{
|
|
3863
4200
|
dataKey: barDataKey || yAxisKey,
|
|
@@ -3865,12 +4202,12 @@ var BarChart = forwardRef13(
|
|
|
3865
4202
|
name: barDataKey || yAxisKey
|
|
3866
4203
|
}
|
|
3867
4204
|
),
|
|
3868
|
-
showLegend && defaultLegendItems.length > 0 && /* @__PURE__ */
|
|
4205
|
+
showLegend && defaultLegendItems.length > 0 && /* @__PURE__ */ jsx23(ChartLegend, { items: defaultLegendItems })
|
|
3869
4206
|
]
|
|
3870
4207
|
}
|
|
3871
4208
|
)
|
|
3872
4209
|
}
|
|
3873
|
-
) : /* @__PURE__ */
|
|
4210
|
+
) : /* @__PURE__ */ jsx23("div", { className: "flex items-center justify-center h-[500px]", children: /* @__PURE__ */ jsx23(Typography, { variant: "body-md", className: "text-secondary", children: "No data is available" }) }) })
|
|
3874
4211
|
]
|
|
3875
4212
|
}
|
|
3876
4213
|
);
|
|
@@ -3879,17 +4216,17 @@ var BarChart = forwardRef13(
|
|
|
3879
4216
|
BarChart.displayName = "BarChart";
|
|
3880
4217
|
|
|
3881
4218
|
// src/components/ui/charts/line-chart.tsx
|
|
3882
|
-
import { forwardRef as
|
|
4219
|
+
import { forwardRef as forwardRef16 } from "react";
|
|
3883
4220
|
import {
|
|
3884
4221
|
LineChart as RechartsLineChart,
|
|
3885
4222
|
Line,
|
|
3886
4223
|
XAxis as XAxis2,
|
|
3887
4224
|
YAxis as YAxis2,
|
|
3888
|
-
Tooltip as
|
|
4225
|
+
Tooltip as Tooltip3,
|
|
3889
4226
|
ResponsiveContainer as ResponsiveContainer2
|
|
3890
4227
|
} from "recharts";
|
|
3891
|
-
import { jsx as
|
|
3892
|
-
var LineChart =
|
|
4228
|
+
import { jsx as jsx24, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
4229
|
+
var LineChart = forwardRef16(
|
|
3893
4230
|
({
|
|
3894
4231
|
data,
|
|
3895
4232
|
xAxisKey,
|
|
@@ -3917,19 +4254,19 @@ var LineChart = forwardRef14(
|
|
|
3917
4254
|
)
|
|
3918
4255
|
);
|
|
3919
4256
|
const hasData = data && data.length > 0;
|
|
3920
|
-
return /* @__PURE__ */
|
|
4257
|
+
return /* @__PURE__ */ jsxs16(
|
|
3921
4258
|
"div",
|
|
3922
4259
|
{
|
|
3923
4260
|
ref,
|
|
3924
4261
|
className: `bg-light border border-subtle mx-6 ${className}`,
|
|
3925
4262
|
children: [
|
|
3926
|
-
/* @__PURE__ */
|
|
3927
|
-
/* @__PURE__ */
|
|
4263
|
+
/* @__PURE__ */ jsx24("div", { className: "flex items-center justify-between px-3 py-2 border-b border-subtle", children: /* @__PURE__ */ jsx24(Typography, { variant: "label-sm-bold", children: title }) }),
|
|
4264
|
+
/* @__PURE__ */ jsx24("div", { className: "pt-2 px-2", children: hasData ? /* @__PURE__ */ jsx24(
|
|
3928
4265
|
ResponsiveContainer2,
|
|
3929
4266
|
{
|
|
3930
4267
|
width: "100%",
|
|
3931
4268
|
height: CHART_CONSTANTS.STANDARD_HEIGHT,
|
|
3932
|
-
children: /* @__PURE__ */
|
|
4269
|
+
children: /* @__PURE__ */ jsxs16(
|
|
3933
4270
|
RechartsLineChart,
|
|
3934
4271
|
{
|
|
3935
4272
|
data,
|
|
@@ -3940,7 +4277,7 @@ var LineChart = forwardRef14(
|
|
|
3940
4277
|
},
|
|
3941
4278
|
onClick: handleClick,
|
|
3942
4279
|
children: [
|
|
3943
|
-
/* @__PURE__ */
|
|
4280
|
+
/* @__PURE__ */ jsx24(
|
|
3944
4281
|
XAxis2,
|
|
3945
4282
|
{
|
|
3946
4283
|
dataKey: xAxisKey,
|
|
@@ -3952,7 +4289,7 @@ var LineChart = forwardRef14(
|
|
|
3952
4289
|
label: xAxisLabel ? createCustomXAxisLabel(xAxisLabel) : void 0
|
|
3953
4290
|
}
|
|
3954
4291
|
),
|
|
3955
|
-
/* @__PURE__ */
|
|
4292
|
+
/* @__PURE__ */ jsx24(
|
|
3956
4293
|
YAxis2,
|
|
3957
4294
|
{
|
|
3958
4295
|
axisLine: false,
|
|
@@ -3961,8 +4298,8 @@ var LineChart = forwardRef14(
|
|
|
3961
4298
|
label: yAxisLabel ? createCustomYAxisLabel(yAxisLabel, 40) : void 0
|
|
3962
4299
|
}
|
|
3963
4300
|
),
|
|
3964
|
-
/* @__PURE__ */
|
|
3965
|
-
|
|
4301
|
+
/* @__PURE__ */ jsx24(
|
|
4302
|
+
Tooltip3,
|
|
3966
4303
|
{
|
|
3967
4304
|
content: ({
|
|
3968
4305
|
active,
|
|
@@ -3970,7 +4307,7 @@ var LineChart = forwardRef14(
|
|
|
3970
4307
|
label
|
|
3971
4308
|
}) => {
|
|
3972
4309
|
if (active && payload && payload.length) {
|
|
3973
|
-
return /* @__PURE__ */
|
|
4310
|
+
return /* @__PURE__ */ jsx24(
|
|
3974
4311
|
GenericTooltip,
|
|
3975
4312
|
{
|
|
3976
4313
|
title: label?.toString(),
|
|
@@ -3986,7 +4323,7 @@ var LineChart = forwardRef14(
|
|
|
3986
4323
|
}
|
|
3987
4324
|
}
|
|
3988
4325
|
),
|
|
3989
|
-
series.map((s, index) => /* @__PURE__ */
|
|
4326
|
+
series.map((s, index) => /* @__PURE__ */ jsx24(
|
|
3990
4327
|
Line,
|
|
3991
4328
|
{
|
|
3992
4329
|
type: "monotone",
|
|
@@ -3998,12 +4335,12 @@ var LineChart = forwardRef14(
|
|
|
3998
4335
|
},
|
|
3999
4336
|
s.dataKey
|
|
4000
4337
|
)),
|
|
4001
|
-
showLegend && defaultLegendItems.length > 0 && /* @__PURE__ */
|
|
4338
|
+
showLegend && defaultLegendItems.length > 0 && /* @__PURE__ */ jsx24(ChartLegend, { items: defaultLegendItems })
|
|
4002
4339
|
]
|
|
4003
4340
|
}
|
|
4004
4341
|
)
|
|
4005
4342
|
}
|
|
4006
|
-
) : /* @__PURE__ */
|
|
4343
|
+
) : /* @__PURE__ */ jsx24("div", { className: "flex items-center justify-center h-[500px]", children: /* @__PURE__ */ jsx24(Typography, { variant: "body-md", className: "text-secondary", children: "No data is available" }) }) })
|
|
4007
4344
|
]
|
|
4008
4345
|
}
|
|
4009
4346
|
);
|
|
@@ -4012,10 +4349,10 @@ var LineChart = forwardRef14(
|
|
|
4012
4349
|
LineChart.displayName = "LineChart";
|
|
4013
4350
|
|
|
4014
4351
|
// src/components/ui/charts/pie-chart.tsx
|
|
4015
|
-
import { forwardRef as
|
|
4016
|
-
import { PieChart as RechartsPieChart, Pie, Cell, Tooltip as
|
|
4017
|
-
import { jsx as
|
|
4018
|
-
var PieChart =
|
|
4352
|
+
import { forwardRef as forwardRef17 } from "react";
|
|
4353
|
+
import { PieChart as RechartsPieChart, Pie, Cell, Tooltip as Tooltip4 } from "recharts";
|
|
4354
|
+
import { jsx as jsx25, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
4355
|
+
var PieChart = forwardRef17(
|
|
4019
4356
|
({
|
|
4020
4357
|
data,
|
|
4021
4358
|
title,
|
|
@@ -4042,20 +4379,20 @@ var PieChart = forwardRef15(
|
|
|
4042
4379
|
)
|
|
4043
4380
|
);
|
|
4044
4381
|
const hasData = data && data.length > 0;
|
|
4045
|
-
return /* @__PURE__ */
|
|
4382
|
+
return /* @__PURE__ */ jsxs17(
|
|
4046
4383
|
"div",
|
|
4047
4384
|
{
|
|
4048
4385
|
ref,
|
|
4049
4386
|
className: `bg-light border border-subtle mx-6 ${className}`,
|
|
4050
4387
|
children: [
|
|
4051
|
-
/* @__PURE__ */
|
|
4052
|
-
/* @__PURE__ */
|
|
4388
|
+
/* @__PURE__ */ jsx25("div", { className: "flex items-center justify-between px-3 py-2 border-b border-subtle", children: /* @__PURE__ */ jsx25(Typography, { variant: "label-sm-bold", children: title }) }),
|
|
4389
|
+
/* @__PURE__ */ jsx25("div", { className: "pt-2 px-2", children: hasData ? /* @__PURE__ */ jsx25("div", { className: "flex justify-center", children: /* @__PURE__ */ jsxs17(
|
|
4053
4390
|
RechartsPieChart,
|
|
4054
4391
|
{
|
|
4055
4392
|
width: 600,
|
|
4056
4393
|
height: CHART_CONSTANTS.LARGE_HEIGHT,
|
|
4057
4394
|
children: [
|
|
4058
|
-
/* @__PURE__ */
|
|
4395
|
+
/* @__PURE__ */ jsx25(
|
|
4059
4396
|
Pie,
|
|
4060
4397
|
{
|
|
4061
4398
|
data,
|
|
@@ -4067,7 +4404,7 @@ var PieChart = forwardRef15(
|
|
|
4067
4404
|
label: showLabels,
|
|
4068
4405
|
labelLine: false,
|
|
4069
4406
|
onClick: handleClick,
|
|
4070
|
-
children: data.map((entry, index) => /* @__PURE__ */
|
|
4407
|
+
children: data.map((entry, index) => /* @__PURE__ */ jsx25(
|
|
4071
4408
|
Cell,
|
|
4072
4409
|
{
|
|
4073
4410
|
fill: entry.color || getSeriesColor(index)
|
|
@@ -4076,8 +4413,8 @@ var PieChart = forwardRef15(
|
|
|
4076
4413
|
))
|
|
4077
4414
|
}
|
|
4078
4415
|
),
|
|
4079
|
-
/* @__PURE__ */
|
|
4080
|
-
|
|
4416
|
+
/* @__PURE__ */ jsx25(
|
|
4417
|
+
Tooltip4,
|
|
4081
4418
|
{
|
|
4082
4419
|
content: ({
|
|
4083
4420
|
active,
|
|
@@ -4085,7 +4422,7 @@ var PieChart = forwardRef15(
|
|
|
4085
4422
|
}) => {
|
|
4086
4423
|
if (active && payload && payload.length && payload[0]) {
|
|
4087
4424
|
const data2 = payload[0].payload;
|
|
4088
|
-
return /* @__PURE__ */
|
|
4425
|
+
return /* @__PURE__ */ jsx25(
|
|
4089
4426
|
GenericTooltip,
|
|
4090
4427
|
{
|
|
4091
4428
|
title: data2.name,
|
|
@@ -4103,10 +4440,10 @@ var PieChart = forwardRef15(
|
|
|
4103
4440
|
}
|
|
4104
4441
|
}
|
|
4105
4442
|
),
|
|
4106
|
-
showLegend && defaultLegendItems.length > 0 && /* @__PURE__ */
|
|
4443
|
+
showLegend && defaultLegendItems.length > 0 && /* @__PURE__ */ jsx25(ChartLegend, { items: defaultLegendItems, y: 400 })
|
|
4107
4444
|
]
|
|
4108
4445
|
}
|
|
4109
|
-
) }) : /* @__PURE__ */
|
|
4446
|
+
) }) : /* @__PURE__ */ jsx25("div", { className: "flex items-center justify-center h-[500px]", children: /* @__PURE__ */ jsx25(Typography, { variant: "body-md", className: "text-secondary", children: "No data is available" }) }) })
|
|
4110
4447
|
]
|
|
4111
4448
|
}
|
|
4112
4449
|
);
|
|
@@ -4115,11 +4452,11 @@ var PieChart = forwardRef15(
|
|
|
4115
4452
|
PieChart.displayName = "PieChart";
|
|
4116
4453
|
|
|
4117
4454
|
// src/components/ui/table.tsx
|
|
4118
|
-
import { useCallback as
|
|
4455
|
+
import { useCallback as useCallback6 } from "react";
|
|
4119
4456
|
import {
|
|
4120
4457
|
flexRender
|
|
4121
4458
|
} from "@tanstack/react-table";
|
|
4122
|
-
import { Fragment as Fragment2, jsx as
|
|
4459
|
+
import { Fragment as Fragment2, jsx as jsx26, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
4123
4460
|
function Table({
|
|
4124
4461
|
table,
|
|
4125
4462
|
className,
|
|
@@ -4131,33 +4468,33 @@ function Table({
|
|
|
4131
4468
|
const totalPages = table.getPageCount();
|
|
4132
4469
|
const totalRows = table.getFilteredRowModel().rows.length;
|
|
4133
4470
|
const showingText = totalRows > 0 ? "Showing " + (currentPage * pageSize + 1) + "-" + Math.min((currentPage + 1) * pageSize, totalRows) + " of " + totalRows + " results" : "No results found";
|
|
4134
|
-
const handlePreviousPage =
|
|
4471
|
+
const handlePreviousPage = useCallback6(() => {
|
|
4135
4472
|
table.previousPage();
|
|
4136
4473
|
}, [table]);
|
|
4137
|
-
const handleNextPage =
|
|
4474
|
+
const handleNextPage = useCallback6(() => {
|
|
4138
4475
|
table.nextPage();
|
|
4139
4476
|
}, [table]);
|
|
4140
|
-
const handlePageChange =
|
|
4477
|
+
const handlePageChange = useCallback6(
|
|
4141
4478
|
(pageIndex) => {
|
|
4142
4479
|
table.setPageIndex(pageIndex);
|
|
4143
4480
|
},
|
|
4144
4481
|
[table]
|
|
4145
4482
|
);
|
|
4146
|
-
const handlePageSizeChange =
|
|
4483
|
+
const handlePageSizeChange = useCallback6(
|
|
4147
4484
|
(value) => {
|
|
4148
4485
|
table.setPageSize(Number(value));
|
|
4149
4486
|
},
|
|
4150
4487
|
[table]
|
|
4151
4488
|
);
|
|
4152
|
-
return /* @__PURE__ */
|
|
4153
|
-
/* @__PURE__ */
|
|
4154
|
-
/* @__PURE__ */
|
|
4489
|
+
return /* @__PURE__ */ jsxs18("div", { children: [
|
|
4490
|
+
/* @__PURE__ */ jsx26("div", { className: cn("overflow-x-auto", className), children: /* @__PURE__ */ jsxs18("table", { className: "min-w-full divide-y divide-border", children: [
|
|
4491
|
+
/* @__PURE__ */ jsx26("thead", { className: "bg-dark text-light", children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx26("tr", { children: headerGroup.headers.map((header) => /* @__PURE__ */ jsx26("th", { className: "px-6 py-3 text-left", children: /* @__PURE__ */ jsxs18(
|
|
4155
4492
|
"div",
|
|
4156
4493
|
{
|
|
4157
4494
|
className: `flex items-center space-x-1 ${header.column.getCanSort() ? "cursor-pointer select-none" : ""}`,
|
|
4158
4495
|
onClick: header.column.getToggleSortingHandler(),
|
|
4159
4496
|
children: [
|
|
4160
|
-
/* @__PURE__ */
|
|
4497
|
+
/* @__PURE__ */ jsx26(
|
|
4161
4498
|
Typography,
|
|
4162
4499
|
{
|
|
4163
4500
|
variant: "label-xs",
|
|
@@ -4168,19 +4505,19 @@ function Table({
|
|
|
4168
4505
|
)
|
|
4169
4506
|
}
|
|
4170
4507
|
),
|
|
4171
|
-
header.column.getCanSort() && /* @__PURE__ */
|
|
4172
|
-
header.column.getIsSorted() === "asc" && /* @__PURE__ */
|
|
4173
|
-
header.column.getIsSorted() === "desc" && /* @__PURE__ */
|
|
4508
|
+
header.column.getCanSort() && /* @__PURE__ */ jsxs18("span", { className: "ml-1", children: [
|
|
4509
|
+
header.column.getIsSorted() === "asc" && /* @__PURE__ */ jsx26(ChevronUp, { className: "w-4 h-4 text-light" }),
|
|
4510
|
+
header.column.getIsSorted() === "desc" && /* @__PURE__ */ jsx26(ChevronDown, { className: "w-4 h-4 text-light" })
|
|
4174
4511
|
] })
|
|
4175
4512
|
]
|
|
4176
4513
|
}
|
|
4177
4514
|
) }, header.id)) }, headerGroup.id)) }),
|
|
4178
|
-
/* @__PURE__ */
|
|
4515
|
+
/* @__PURE__ */ jsx26("tbody", { className: "bg-light divide-y divide-border", children: table.getRowModel().rows.map((row) => /* @__PURE__ */ jsx26("tr", { children: row.getVisibleCells().map((cell) => /* @__PURE__ */ jsx26("td", { className: "px-6 py-4 whitespace-nowrap", children: /* @__PURE__ */ jsx26(Typography, { variant: "body-sm", children: flexRender(
|
|
4179
4516
|
cell.column.columnDef.cell,
|
|
4180
4517
|
cell.getContext()
|
|
4181
4518
|
) }) }, cell.id)) }, row.id)) })
|
|
4182
4519
|
] }) }),
|
|
4183
|
-
showPagination && /* @__PURE__ */
|
|
4520
|
+
showPagination && /* @__PURE__ */ jsxs18(
|
|
4184
4521
|
"div",
|
|
4185
4522
|
{
|
|
4186
4523
|
className: cn(
|
|
@@ -4188,9 +4525,9 @@ function Table({
|
|
|
4188
4525
|
paginationClassName
|
|
4189
4526
|
),
|
|
4190
4527
|
children: [
|
|
4191
|
-
/* @__PURE__ */
|
|
4192
|
-
/* @__PURE__ */
|
|
4193
|
-
/* @__PURE__ */
|
|
4528
|
+
/* @__PURE__ */ jsx26("div", { className: "flex items-center", children: /* @__PURE__ */ jsx26(Typography, { variant: "body-sm", className: "text-secondary", children: showingText }) }),
|
|
4529
|
+
/* @__PURE__ */ jsxs18("div", { className: "flex items-center space-x-1", children: [
|
|
4530
|
+
/* @__PURE__ */ jsx26(
|
|
4194
4531
|
Button,
|
|
4195
4532
|
{
|
|
4196
4533
|
variant: "ghost",
|
|
@@ -4198,7 +4535,7 @@ function Table({
|
|
|
4198
4535
|
onClick: handlePreviousPage,
|
|
4199
4536
|
disabled: !table.getCanPreviousPage(),
|
|
4200
4537
|
className: "p-2",
|
|
4201
|
-
children: /* @__PURE__ */
|
|
4538
|
+
children: /* @__PURE__ */ jsx26(ChevronLeft, { className: "w-4 h-4" })
|
|
4202
4539
|
}
|
|
4203
4540
|
),
|
|
4204
4541
|
Array.from(
|
|
@@ -4215,7 +4552,7 @@ function Table({
|
|
|
4215
4552
|
pageNumber = currentPage - 2 + i;
|
|
4216
4553
|
}
|
|
4217
4554
|
const isActive = pageNumber === currentPage;
|
|
4218
|
-
return /* @__PURE__ */
|
|
4555
|
+
return /* @__PURE__ */ jsx26(
|
|
4219
4556
|
Button,
|
|
4220
4557
|
{
|
|
4221
4558
|
variant: isActive ? "default" : "ghost",
|
|
@@ -4228,11 +4565,11 @@ function Table({
|
|
|
4228
4565
|
);
|
|
4229
4566
|
}
|
|
4230
4567
|
),
|
|
4231
|
-
table.getPageCount() > 5 && currentPage < totalPages - 3 && /* @__PURE__ */
|
|
4232
|
-
/* @__PURE__ */
|
|
4233
|
-
/* @__PURE__ */
|
|
4568
|
+
table.getPageCount() > 5 && currentPage < totalPages - 3 && /* @__PURE__ */ jsxs18(Fragment2, { children: [
|
|
4569
|
+
/* @__PURE__ */ jsx26("span", { className: "px-1 text-secondary", children: "..." }),
|
|
4570
|
+
/* @__PURE__ */ jsx26(Typography, { variant: "body-sm", className: "text-secondary", children: totalPages })
|
|
4234
4571
|
] }),
|
|
4235
|
-
/* @__PURE__ */
|
|
4572
|
+
/* @__PURE__ */ jsx26(
|
|
4236
4573
|
Button,
|
|
4237
4574
|
{
|
|
4238
4575
|
variant: "ghost",
|
|
@@ -4240,12 +4577,12 @@ function Table({
|
|
|
4240
4577
|
onClick: handleNextPage,
|
|
4241
4578
|
disabled: !table.getCanNextPage(),
|
|
4242
4579
|
className: "p-2",
|
|
4243
|
-
children: /* @__PURE__ */
|
|
4580
|
+
children: /* @__PURE__ */ jsx26(ChevronRight, { className: "w-4 h-4" })
|
|
4244
4581
|
}
|
|
4245
4582
|
)
|
|
4246
4583
|
] }),
|
|
4247
|
-
/* @__PURE__ */
|
|
4248
|
-
/* @__PURE__ */
|
|
4584
|
+
/* @__PURE__ */ jsxs18("div", { className: "flex items-center gap-3 w-48", children: [
|
|
4585
|
+
/* @__PURE__ */ jsx26(
|
|
4249
4586
|
Typography,
|
|
4250
4587
|
{
|
|
4251
4588
|
variant: "body-sm",
|
|
@@ -4253,14 +4590,14 @@ function Table({
|
|
|
4253
4590
|
children: "Rows per page:"
|
|
4254
4591
|
}
|
|
4255
4592
|
),
|
|
4256
|
-
/* @__PURE__ */
|
|
4593
|
+
/* @__PURE__ */ jsxs18(
|
|
4257
4594
|
Select,
|
|
4258
4595
|
{
|
|
4259
4596
|
value: table.getState().pagination.pageSize.toString(),
|
|
4260
4597
|
onValueChange: handlePageSizeChange,
|
|
4261
4598
|
children: [
|
|
4262
|
-
/* @__PURE__ */
|
|
4263
|
-
/* @__PURE__ */
|
|
4599
|
+
/* @__PURE__ */ jsx26(SelectTrigger, { className: "min-w-0 h-8", children: /* @__PURE__ */ jsx26(SelectValue, {}) }),
|
|
4600
|
+
/* @__PURE__ */ jsx26(SelectContent, { children: [10, 20, 50, 100].map((size) => /* @__PURE__ */ jsx26(SelectItem, { value: size.toString(), children: size }, size)) })
|
|
4264
4601
|
]
|
|
4265
4602
|
}
|
|
4266
4603
|
)
|
|
@@ -4356,6 +4693,7 @@ export {
|
|
|
4356
4693
|
MagnifyingGlass,
|
|
4357
4694
|
Minus,
|
|
4358
4695
|
MoreMenu,
|
|
4696
|
+
Panel,
|
|
4359
4697
|
PdfViewer,
|
|
4360
4698
|
Phone,
|
|
4361
4699
|
PieChart,
|
|
@@ -4374,6 +4712,17 @@ export {
|
|
|
4374
4712
|
SelectValue,
|
|
4375
4713
|
Separator2 as Separator,
|
|
4376
4714
|
Share,
|
|
4715
|
+
Sidebar,
|
|
4716
|
+
SidebarContent,
|
|
4717
|
+
SidebarFooter,
|
|
4718
|
+
SidebarGroup,
|
|
4719
|
+
SidebarGroupContent,
|
|
4720
|
+
SidebarHeader,
|
|
4721
|
+
SidebarInset,
|
|
4722
|
+
SidebarMenu,
|
|
4723
|
+
SidebarMenuButton,
|
|
4724
|
+
SidebarMenuItem,
|
|
4725
|
+
SidebarProvider,
|
|
4377
4726
|
Star,
|
|
4378
4727
|
Statement,
|
|
4379
4728
|
Table,
|
|
@@ -4383,8 +4732,12 @@ export {
|
|
|
4383
4732
|
TabsList,
|
|
4384
4733
|
TabsTrigger,
|
|
4385
4734
|
Textarea,
|
|
4735
|
+
Tooltip,
|
|
4386
4736
|
TooltipContainer,
|
|
4737
|
+
TooltipContent,
|
|
4387
4738
|
TooltipItem,
|
|
4739
|
+
TooltipProvider,
|
|
4740
|
+
TooltipTrigger,
|
|
4388
4741
|
Trash,
|
|
4389
4742
|
Typography,
|
|
4390
4743
|
Upload,
|
|
@@ -4413,5 +4766,6 @@ export {
|
|
|
4413
4766
|
selectTriggerVariants,
|
|
4414
4767
|
tabsVariants,
|
|
4415
4768
|
typographyVariants,
|
|
4416
|
-
uploadVariants
|
|
4769
|
+
uploadVariants,
|
|
4770
|
+
useSidebar
|
|
4417
4771
|
};
|