@propknot/shared-ui 1.0.26 → 1.1.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.mjs CHANGED
@@ -231,7 +231,10 @@ import React2, { createContext, useContext, useState, useEffect } from "react";
231
231
  // src/services/api.js
232
232
  import axios from "axios";
233
233
  var getApiUrl = () => {
234
- if (process.env.REACT_APP_API_URL) {
234
+ if (typeof import.meta !== "undefined" && import.meta.env && import.meta.env.VITE_API_URL) {
235
+ return import.meta.env.VITE_API_URL;
236
+ }
237
+ if (typeof process !== "undefined" && process.env && process.env.REACT_APP_API_URL) {
235
238
  return process.env.REACT_APP_API_URL;
236
239
  }
237
240
  const hostname = window.location.hostname;
@@ -1534,17 +1537,23 @@ var CustomThemeProvider = ({ children }) => {
1534
1537
  if (!isEmbedded) return;
1535
1538
  let isInitialRequest = true;
1536
1539
  const handleMessage = (event) => {
1537
- if (!event.origin.startsWith("http://localhost:")) return;
1540
+ const expectedOriginProtocol = window.location.protocol;
1541
+ const expectedOriginHostname = window.location.hostname;
1542
+ if (!event.origin.startsWith(`${expectedOriginProtocol}//${expectedOriginHostname}`)) {
1543
+ console.warn("[SharedUI Theme] Rejected message from:", event.origin);
1544
+ return;
1545
+ }
1546
+ console.log("[SharedUI Theme] Received message:", event.data);
1538
1547
  const { type, theme } = event.data;
1539
- if (type === "THEME_CHANGE" && theme && ["light", "dark"].includes(theme)) {
1540
- const storedTheme2 = localStorage.getItem("embedded-theme");
1541
- if (isInitialRequest && storedTheme2 && storedTheme2 !== theme) {
1548
+ if (type === "THEME_CHANGE" && theme) {
1549
+ const themeValue = typeof theme === "object" ? theme.mode : theme;
1550
+ if (["light", "dark"].includes(themeValue)) {
1551
+ console.log("[SharedUI Theme] Updating theme to:", themeValue);
1552
+ const storedTheme2 = localStorage.getItem("embedded-theme");
1542
1553
  isInitialRequest = false;
1543
- return;
1554
+ setCurrentTheme(themeValue);
1555
+ localStorage.setItem("embedded-theme", themeValue);
1544
1556
  }
1545
- isInitialRequest = false;
1546
- setCurrentTheme(theme);
1547
- localStorage.setItem("embedded-theme", theme);
1548
1557
  }
1549
1558
  };
1550
1559
  window.addEventListener("message", handleMessage);
@@ -1607,6 +1616,15 @@ var CustomThemeProvider = ({ children }) => {
1607
1616
  const themeObject = effectiveTheme === "dark" ? darkTheme : lightTheme;
1608
1617
  const isDarkMode = effectiveTheme === "dark";
1609
1618
  const effectiveBrandingColor = getEffectiveBrandingColor();
1619
+ useEffect2(() => {
1620
+ const root = window.document.documentElement;
1621
+ root.classList.remove("light", "dark");
1622
+ if (effectiveTheme === "dark") {
1623
+ root.classList.add("dark");
1624
+ } else {
1625
+ root.classList.add("light");
1626
+ }
1627
+ }, [effectiveTheme]);
1610
1628
  const value = {
1611
1629
  currentThemeKey: effectiveTheme,
1612
1630
  theme: themeObject,
@@ -3187,11 +3205,219 @@ var ModernCardContent = ({ children, sx = {}, ...props }) => {
3187
3205
  ModernCard.Content = ModernCardContent;
3188
3206
  var ModernCard_default = ModernCard;
3189
3207
 
3190
- // src/components/UI/button.jsx
3208
+ // src/components/UI/accordion.jsx
3191
3209
  import * as React13 from "react";
3192
- import { Slot } from "@radix-ui/react-slot";
3210
+ import * as AccordionPrimitive from "@radix-ui/react-accordion";
3211
+ import { ChevronDown } from "lucide-react";
3212
+ var Accordion = AccordionPrimitive.Root;
3213
+ var AccordionItem = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React13.createElement(
3214
+ AccordionPrimitive.Item,
3215
+ {
3216
+ ref,
3217
+ className: cn("border-b", className),
3218
+ ...props
3219
+ }
3220
+ ));
3221
+ AccordionItem.displayName = "AccordionItem";
3222
+ var AccordionTrigger = React13.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React13.createElement(AccordionPrimitive.Header, { className: "flex" }, /* @__PURE__ */ React13.createElement(
3223
+ AccordionPrimitive.Trigger,
3224
+ {
3225
+ ref,
3226
+ className: cn(
3227
+ "flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180",
3228
+ className
3229
+ ),
3230
+ ...props
3231
+ },
3232
+ children,
3233
+ /* @__PURE__ */ React13.createElement(ChevronDown, { className: "h-4 w-4 shrink-0 transition-transform duration-200" })
3234
+ )));
3235
+ AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
3236
+ var AccordionContent = React13.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React13.createElement(
3237
+ AccordionPrimitive.Content,
3238
+ {
3239
+ ref,
3240
+ className: "overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
3241
+ ...props
3242
+ },
3243
+ /* @__PURE__ */ React13.createElement("div", { className: cn("pb-4 pt-0", className) }, children)
3244
+ ));
3245
+ AccordionContent.displayName = AccordionPrimitive.Content.displayName;
3246
+
3247
+ // src/components/UI/alert.jsx
3248
+ import * as React14 from "react";
3193
3249
  import { cva } from "class-variance-authority";
3194
- var buttonVariants = cva(
3250
+ var alertVariants = cva(
3251
+ "relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",
3252
+ {
3253
+ variants: {
3254
+ variant: {
3255
+ default: "bg-background text-foreground",
3256
+ destructive: "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive"
3257
+ }
3258
+ },
3259
+ defaultVariants: {
3260
+ variant: "default"
3261
+ }
3262
+ }
3263
+ );
3264
+ var Alert = React14.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ React14.createElement(
3265
+ "div",
3266
+ {
3267
+ ref,
3268
+ role: "alert",
3269
+ className: cn(alertVariants({ variant }), className),
3270
+ ...props
3271
+ }
3272
+ ));
3273
+ Alert.displayName = "Alert";
3274
+ var AlertTitle = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React14.createElement(
3275
+ "h5",
3276
+ {
3277
+ ref,
3278
+ className: cn("mb-1 font-medium leading-none tracking-tight", className),
3279
+ ...props
3280
+ }
3281
+ ));
3282
+ AlertTitle.displayName = "AlertTitle";
3283
+ var AlertDescription = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React14.createElement(
3284
+ "div",
3285
+ {
3286
+ ref,
3287
+ className: cn("text-sm [&_p]:leading-relaxed", className),
3288
+ ...props
3289
+ }
3290
+ ));
3291
+ AlertDescription.displayName = "AlertDescription";
3292
+
3293
+ // src/components/UI/avatar.jsx
3294
+ import * as React15 from "react";
3295
+ import * as AvatarPrimitive from "@radix-ui/react-avatar";
3296
+ var Avatar2 = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React15.createElement(
3297
+ AvatarPrimitive.Root,
3298
+ {
3299
+ ref,
3300
+ className: cn(
3301
+ "relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",
3302
+ className
3303
+ ),
3304
+ ...props
3305
+ }
3306
+ ));
3307
+ Avatar2.displayName = AvatarPrimitive.Root.displayName;
3308
+ var AvatarImage = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React15.createElement(
3309
+ AvatarPrimitive.Image,
3310
+ {
3311
+ ref,
3312
+ className: cn("aspect-square h-full w-full", className),
3313
+ ...props
3314
+ }
3315
+ ));
3316
+ AvatarImage.displayName = AvatarPrimitive.Image.displayName;
3317
+ var AvatarFallback = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React15.createElement(
3318
+ AvatarPrimitive.Fallback,
3319
+ {
3320
+ ref,
3321
+ className: cn(
3322
+ "flex h-full w-full items-center justify-center rounded-full bg-muted",
3323
+ className
3324
+ ),
3325
+ ...props
3326
+ }
3327
+ ));
3328
+ AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
3329
+
3330
+ // src/components/UI/badge.jsx
3331
+ import * as React16 from "react";
3332
+ import { cva as cva2 } from "class-variance-authority";
3333
+ var badgeVariants = cva2(
3334
+ "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
3335
+ {
3336
+ variants: {
3337
+ variant: {
3338
+ default: "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
3339
+ secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
3340
+ destructive: "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",
3341
+ outline: "text-foreground"
3342
+ }
3343
+ },
3344
+ defaultVariants: {
3345
+ variant: "default"
3346
+ }
3347
+ }
3348
+ );
3349
+ function Badge2({ className, variant, ...props }) {
3350
+ return /* @__PURE__ */ React16.createElement("div", { className: cn(badgeVariants({ variant }), className), ...props });
3351
+ }
3352
+
3353
+ // src/components/UI/breadcrumbs.jsx
3354
+ import * as React17 from "react";
3355
+ import { ChevronRight } from "lucide-react";
3356
+ var Breadcrumbs2 = React17.forwardRef(({
3357
+ className,
3358
+ separator,
3359
+ children,
3360
+ ...props
3361
+ }, ref) => {
3362
+ const Separator3 = separator || /* @__PURE__ */ React17.createElement(ChevronRight, { className: "h-4 w-4" });
3363
+ const items = React17.Children.toArray(children);
3364
+ return /* @__PURE__ */ React17.createElement(
3365
+ "nav",
3366
+ {
3367
+ ref,
3368
+ "aria-label": "Breadcrumb",
3369
+ className: cn("flex items-center space-x-1 text-sm text-muted-foreground", className),
3370
+ ...props
3371
+ },
3372
+ /* @__PURE__ */ React17.createElement("ol", { className: "flex items-center space-x-1" }, items.map((child, index) => /* @__PURE__ */ React17.createElement("li", { key: index, className: "flex items-center space-x-1" }, child, index < items.length - 1 && /* @__PURE__ */ React17.createElement("span", { className: "mx-1", "aria-hidden": "true" }, Separator3))))
3373
+ );
3374
+ });
3375
+ Breadcrumbs2.displayName = "Breadcrumbs";
3376
+ var BreadcrumbItem = React17.forwardRef(({
3377
+ className,
3378
+ isCurrentPage,
3379
+ children,
3380
+ ...props
3381
+ }, ref) => /* @__PURE__ */ React17.createElement(
3382
+ "span",
3383
+ {
3384
+ ref,
3385
+ className: cn(
3386
+ "inline-flex items-center",
3387
+ isCurrentPage ? "font-medium text-foreground" : "hover:text-foreground transition-colors",
3388
+ className
3389
+ ),
3390
+ "aria-current": isCurrentPage ? "page" : void 0,
3391
+ ...props
3392
+ },
3393
+ children
3394
+ ));
3395
+ BreadcrumbItem.displayName = "BreadcrumbItem";
3396
+ var BreadcrumbLink = React17.forwardRef(({
3397
+ className,
3398
+ href,
3399
+ children,
3400
+ ...props
3401
+ }, ref) => /* @__PURE__ */ React17.createElement(
3402
+ "a",
3403
+ {
3404
+ ref,
3405
+ href,
3406
+ className: cn(
3407
+ "hover:text-foreground transition-colors hover:underline",
3408
+ className
3409
+ ),
3410
+ ...props
3411
+ },
3412
+ children
3413
+ ));
3414
+ BreadcrumbLink.displayName = "BreadcrumbLink";
3415
+
3416
+ // src/components/UI/button.jsx
3417
+ import * as React18 from "react";
3418
+ import { Slot } from "@radix-ui/react-slot";
3419
+ import { cva as cva3 } from "class-variance-authority";
3420
+ var buttonVariants = cva3(
3195
3421
  "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
3196
3422
  {
3197
3423
  variants: {
@@ -3216,12 +3442,12 @@ var buttonVariants = cva(
3216
3442
  }
3217
3443
  }
3218
3444
  );
3219
- var Button2 = React13.forwardRef(({ className, variant, size, asChild = false, ...props }, ref) => {
3445
+ var Button2 = React18.forwardRef(({ className, variant, size, asChild = false, ...props }, ref) => {
3220
3446
  const Comp = asChild ? Slot : "button";
3221
- return /* @__PURE__ */ React13.createElement(
3447
+ return /* @__PURE__ */ React18.createElement(
3222
3448
  Comp,
3223
3449
  {
3224
- className: cn(buttonVariants({ variant, size, className })),
3450
+ className: cn(buttonVariants({ variant, size }), className),
3225
3451
  ref,
3226
3452
  ...props
3227
3453
  }
@@ -3230,8 +3456,8 @@ var Button2 = React13.forwardRef(({ className, variant, size, asChild = false, .
3230
3456
  Button2.displayName = "Button";
3231
3457
 
3232
3458
  // src/components/UI/card.jsx
3233
- import * as React14 from "react";
3234
- var Card2 = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React14.createElement(
3459
+ import * as React19 from "react";
3460
+ var Card2 = React19.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React19.createElement(
3235
3461
  "div",
3236
3462
  {
3237
3463
  ref,
@@ -3243,7 +3469,7 @@ var Card2 = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
3243
3469
  }
3244
3470
  ));
3245
3471
  Card2.displayName = "Card";
3246
- var CardHeader = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React14.createElement(
3472
+ var CardHeader = React19.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React19.createElement(
3247
3473
  "div",
3248
3474
  {
3249
3475
  ref,
@@ -3252,7 +3478,7 @@ var CardHeader = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE
3252
3478
  }
3253
3479
  ));
3254
3480
  CardHeader.displayName = "CardHeader";
3255
- var CardTitle = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React14.createElement(
3481
+ var CardTitle = React19.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React19.createElement(
3256
3482
  "h3",
3257
3483
  {
3258
3484
  ref,
@@ -3264,7 +3490,7 @@ var CardTitle = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE_
3264
3490
  }
3265
3491
  ));
3266
3492
  CardTitle.displayName = "CardTitle";
3267
- var CardDescription = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React14.createElement(
3493
+ var CardDescription = React19.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React19.createElement(
3268
3494
  "p",
3269
3495
  {
3270
3496
  ref,
@@ -3273,9 +3499,9 @@ var CardDescription = React14.forwardRef(({ className, ...props }, ref) => /* @_
3273
3499
  }
3274
3500
  ));
3275
3501
  CardDescription.displayName = "CardDescription";
3276
- var CardContent2 = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React14.createElement("div", { ref, className: cn("p-6 pt-0", className), ...props }));
3502
+ var CardContent2 = React19.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React19.createElement("div", { ref, className: cn("p-6 pt-0", className), ...props }));
3277
3503
  CardContent2.displayName = "CardContent";
3278
- var CardFooter = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React14.createElement(
3504
+ var CardFooter = React19.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React19.createElement(
3279
3505
  "div",
3280
3506
  {
3281
3507
  ref,
@@ -3285,100 +3511,1010 @@ var CardFooter = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE
3285
3511
  ));
3286
3512
  CardFooter.displayName = "CardFooter";
3287
3513
 
3288
- // src/components/UI/input.jsx
3289
- import * as React15 from "react";
3290
- var Input = React15.forwardRef(({ className, type, ...props }, ref) => {
3291
- return /* @__PURE__ */ React15.createElement(
3292
- "input",
3514
+ // src/components/UI/checkbox.jsx
3515
+ import * as React20 from "react";
3516
+ import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
3517
+ import { Check } from "lucide-react";
3518
+ var Checkbox = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React20.createElement(
3519
+ CheckboxPrimitive.Root,
3520
+ {
3521
+ ref,
3522
+ className: cn(
3523
+ "peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",
3524
+ className
3525
+ ),
3526
+ ...props
3527
+ },
3528
+ /* @__PURE__ */ React20.createElement(
3529
+ CheckboxPrimitive.Indicator,
3293
3530
  {
3294
- type,
3531
+ className: cn("flex items-center justify-center text-current")
3532
+ },
3533
+ /* @__PURE__ */ React20.createElement(Check, { className: "h-4 w-4" })
3534
+ )
3535
+ ));
3536
+ Checkbox.displayName = CheckboxPrimitive.Root.displayName;
3537
+
3538
+ // src/components/UI/container.jsx
3539
+ import * as React21 from "react";
3540
+ var Container2 = React21.forwardRef(({ className, maxWidth = "7xl", centered = true, ...props }, ref) => {
3541
+ const maxWidthClasses = {
3542
+ sm: "max-w-screen-sm",
3543
+ md: "max-w-screen-md",
3544
+ lg: "max-w-screen-lg",
3545
+ xl: "max-w-screen-xl",
3546
+ "2xl": "max-w-screen-2xl",
3547
+ "7xl": "max-w-7xl",
3548
+ full: "max-w-full"
3549
+ };
3550
+ return /* @__PURE__ */ React21.createElement(
3551
+ "div",
3552
+ {
3553
+ ref,
3295
3554
  className: cn(
3296
- "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
3555
+ "w-full px-4 sm:px-6 lg:px-8",
3556
+ centered && "mx-auto",
3557
+ maxWidthClasses[maxWidth] || maxWidthClasses["7xl"],
3297
3558
  className
3298
3559
  ),
3299
- ref,
3300
3560
  ...props
3301
3561
  }
3302
3562
  );
3303
3563
  });
3304
- Input.displayName = "Input";
3564
+ Container2.displayName = "Container";
3305
3565
 
3306
- // src/components/UI/label.jsx
3307
- import * as React16 from "react";
3308
- import * as LabelPrimitive from "@radix-ui/react-label";
3309
- import { cva as cva2 } from "class-variance-authority";
3310
- var labelVariants = cva2(
3311
- "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
3566
+ // src/components/UI/dialog.jsx
3567
+ import * as React22 from "react";
3568
+ import * as DialogPrimitive from "@radix-ui/react-dialog";
3569
+ import { X } from "lucide-react";
3570
+ var Dialog = DialogPrimitive.Root;
3571
+ var DialogTrigger = DialogPrimitive.Trigger;
3572
+ var DialogPortal = DialogPrimitive.Portal;
3573
+ var DialogClose = DialogPrimitive.Close;
3574
+ var DialogOverlay = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React22.createElement(
3575
+ DialogPrimitive.Overlay,
3576
+ {
3577
+ ref,
3578
+ className: cn(
3579
+ "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
3580
+ className
3581
+ ),
3582
+ ...props
3583
+ }
3584
+ ));
3585
+ DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
3586
+ var DialogContent = React22.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React22.createElement(DialogPortal, null, /* @__PURE__ */ React22.createElement(DialogOverlay, null), /* @__PURE__ */ React22.createElement(
3587
+ DialogPrimitive.Content,
3588
+ {
3589
+ ref,
3590
+ className: cn(
3591
+ "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
3592
+ className
3593
+ ),
3594
+ ...props
3595
+ },
3596
+ children,
3597
+ /* @__PURE__ */ React22.createElement(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground" }, /* @__PURE__ */ React22.createElement(X, { className: "h-4 w-4" }), /* @__PURE__ */ React22.createElement("span", { className: "sr-only" }, "Close"))
3598
+ )));
3599
+ DialogContent.displayName = DialogPrimitive.Content.displayName;
3600
+ var DialogHeader = ({
3601
+ className,
3602
+ ...props
3603
+ }) => /* @__PURE__ */ React22.createElement(
3604
+ "div",
3605
+ {
3606
+ className: cn(
3607
+ "flex flex-col space-y-1.5 text-center sm:text-left",
3608
+ className
3609
+ ),
3610
+ ...props
3611
+ }
3312
3612
  );
3313
- var Label = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React16.createElement(
3314
- LabelPrimitive.Root,
3613
+ DialogHeader.displayName = "DialogHeader";
3614
+ var DialogFooter = ({
3615
+ className,
3616
+ ...props
3617
+ }) => /* @__PURE__ */ React22.createElement(
3618
+ "div",
3619
+ {
3620
+ className: cn(
3621
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
3622
+ className
3623
+ ),
3624
+ ...props
3625
+ }
3626
+ );
3627
+ DialogFooter.displayName = "DialogFooter";
3628
+ var DialogTitle = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React22.createElement(
3629
+ DialogPrimitive.Title,
3315
3630
  {
3316
3631
  ref,
3317
- className: cn(labelVariants(), className),
3632
+ className: cn(
3633
+ "text-lg font-semibold leading-none tracking-tight",
3634
+ className
3635
+ ),
3318
3636
  ...props
3319
3637
  }
3320
3638
  ));
3321
- Label.displayName = LabelPrimitive.Root.displayName;
3639
+ DialogTitle.displayName = DialogPrimitive.Title.displayName;
3640
+ var DialogDescription = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React22.createElement(
3641
+ DialogPrimitive.Description,
3642
+ {
3643
+ ref,
3644
+ className: cn("text-sm text-muted-foreground", className),
3645
+ ...props
3646
+ }
3647
+ ));
3648
+ DialogDescription.displayName = DialogPrimitive.Description.displayName;
3322
3649
 
3323
- // src/components/UI/typography.jsx
3324
- import * as React17 from "react";
3325
- import { cva as cva3 } from "class-variance-authority";
3326
- var headingVariants = cva3("scroll-m-20 tracking-tight", {
3327
- variants: {
3328
- level: {
3329
- h1: "text-4xl font-extrabold lg:text-5xl",
3330
- h2: "text-3xl font-semibold",
3331
- h3: "text-2xl font-semibold",
3332
- h4: "text-xl font-semibold",
3333
- h5: "text-lg font-semibold",
3334
- h6: "text-base font-semibold"
3650
+ // src/components/UI/grid.jsx
3651
+ import * as React23 from "react";
3652
+ var Grid = React23.forwardRef(({
3653
+ className,
3654
+ cols = 1,
3655
+ sm,
3656
+ md,
3657
+ lg,
3658
+ xl,
3659
+ gap = 4,
3660
+ ...props
3661
+ }, ref) => {
3662
+ const colsClasses = {
3663
+ 1: "grid-cols-1",
3664
+ 2: "grid-cols-2",
3665
+ 3: "grid-cols-3",
3666
+ 4: "grid-cols-4",
3667
+ 5: "grid-cols-5",
3668
+ 6: "grid-cols-6",
3669
+ 12: "grid-cols-12"
3670
+ };
3671
+ const responsiveClasses = {
3672
+ sm: sm ? `sm:grid-cols-${sm}` : null,
3673
+ md: md ? `md:grid-cols-${md}` : null,
3674
+ lg: lg ? `lg:grid-cols-${lg}` : null,
3675
+ xl: xl ? `xl:grid-cols-${xl}` : null
3676
+ };
3677
+ const gapClass = `gap-${gap}`;
3678
+ return /* @__PURE__ */ React23.createElement(
3679
+ "div",
3680
+ {
3681
+ ref,
3682
+ className: cn(
3683
+ "grid",
3684
+ colsClasses[cols] || "grid-cols-1",
3685
+ responsiveClasses.sm,
3686
+ responsiveClasses.md,
3687
+ responsiveClasses.lg,
3688
+ responsiveClasses.xl,
3689
+ gapClass,
3690
+ className
3691
+ ),
3692
+ ...props
3335
3693
  }
3336
- },
3337
- defaultVariants: {
3338
- level: "h2"
3339
- }
3694
+ );
3340
3695
  });
3341
- var Heading = React17.forwardRef(({ className, level = "h2", ...props }, ref) => {
3342
- const Comp = level;
3343
- return /* @__PURE__ */ React17.createElement(
3344
- Comp,
3696
+ Grid.displayName = "Grid";
3697
+ var GridItem = React23.forwardRef(({
3698
+ className,
3699
+ colSpan = 1,
3700
+ colStart,
3701
+ colEnd,
3702
+ rowSpan = 1,
3703
+ rowStart,
3704
+ rowEnd,
3705
+ ...props
3706
+ }, ref) => {
3707
+ const spanClasses = {
3708
+ 1: "col-span-1",
3709
+ 2: "col-span-2",
3710
+ 3: "col-span-3",
3711
+ 4: "col-span-4",
3712
+ 5: "col-span-5",
3713
+ 6: "col-span-6",
3714
+ 12: "col-span-12",
3715
+ full: "col-span-full"
3716
+ };
3717
+ const rowSpanClasses = {
3718
+ 1: "row-span-1",
3719
+ 2: "row-span-2",
3720
+ 3: "row-span-3",
3721
+ 4: "row-span-4",
3722
+ 5: "row-span-5",
3723
+ 6: "row-span-6"
3724
+ };
3725
+ return /* @__PURE__ */ React23.createElement(
3726
+ "div",
3345
3727
  {
3346
3728
  ref,
3347
- className: cn(headingVariants({ level, className })),
3729
+ className: cn(
3730
+ spanClasses[colSpan],
3731
+ rowSpanClasses[rowSpan],
3732
+ colStart && `col-start-${colStart}`,
3733
+ colEnd && `col-end-${colEnd}`,
3734
+ rowStart && `row-start-${rowStart}`,
3735
+ rowEnd && `row-end-${rowEnd}`,
3736
+ className
3737
+ ),
3348
3738
  ...props
3349
3739
  }
3350
3740
  );
3351
3741
  });
3352
- Heading.displayName = "Heading";
3353
- var H1 = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React17.createElement(
3354
- "h1",
3742
+ GridItem.displayName = "GridItem";
3743
+ Grid.Item = GridItem;
3744
+
3745
+ // src/components/UI/header.jsx
3746
+ import * as React24 from "react";
3747
+ var Header2 = React24.forwardRef(({
3748
+ className,
3749
+ sticky = false,
3750
+ ...props
3751
+ }, ref) => /* @__PURE__ */ React24.createElement(
3752
+ "header",
3355
3753
  {
3356
3754
  ref,
3357
- className: cn("scroll-m-20 text-4xl font-extrabold tracking-tight lg:text-5xl", className),
3755
+ className: cn(
3756
+ "w-full border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",
3757
+ sticky && "sticky top-0 z-50",
3758
+ className
3759
+ ),
3358
3760
  ...props
3359
3761
  }
3360
3762
  ));
3361
- H1.displayName = "H1";
3362
- var H2 = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React17.createElement(
3363
- "h2",
3763
+ Header2.displayName = "Header";
3764
+ var HeaderContainer = React24.forwardRef(({
3765
+ className,
3766
+ ...props
3767
+ }, ref) => /* @__PURE__ */ React24.createElement(
3768
+ "div",
3364
3769
  {
3365
3770
  ref,
3366
- className: cn("scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight first:mt-0", className),
3771
+ className: cn(
3772
+ "container flex h-14 items-center",
3773
+ className
3774
+ ),
3367
3775
  ...props
3368
3776
  }
3369
3777
  ));
3370
- H2.displayName = "H2";
3371
- var H3 = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React17.createElement(
3372
- "h3",
3778
+ HeaderContainer.displayName = "HeaderContainer";
3779
+ var HeaderNav = React24.forwardRef(({
3780
+ className,
3781
+ ...props
3782
+ }, ref) => /* @__PURE__ */ React24.createElement(
3783
+ "nav",
3373
3784
  {
3374
3785
  ref,
3375
- className: cn("scroll-m-20 text-2xl font-semibold tracking-tight", className),
3786
+ className: cn("flex items-center space-x-4 lg:space-x-6", className),
3376
3787
  ...props
3377
3788
  }
3378
3789
  ));
3379
- H3.displayName = "H3";
3380
- var H4 = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React17.createElement(
3381
- "h4",
3790
+ HeaderNav.displayName = "HeaderNav";
3791
+ var HeaderActions = React24.forwardRef(({
3792
+ className,
3793
+ ...props
3794
+ }, ref) => /* @__PURE__ */ React24.createElement(
3795
+ "div",
3796
+ {
3797
+ ref,
3798
+ className: cn("ml-auto flex items-center space-x-4", className),
3799
+ ...props
3800
+ }
3801
+ ));
3802
+ HeaderActions.displayName = "HeaderActions";
3803
+ var HeaderBrand = React24.forwardRef(({
3804
+ className,
3805
+ ...props
3806
+ }, ref) => /* @__PURE__ */ React24.createElement(
3807
+ "div",
3808
+ {
3809
+ ref,
3810
+ className: cn("mr-4 flex items-center space-x-2", className),
3811
+ ...props
3812
+ }
3813
+ ));
3814
+ HeaderBrand.displayName = "HeaderBrand";
3815
+ var HeaderLink = React24.forwardRef(({
3816
+ className,
3817
+ active = false,
3818
+ ...props
3819
+ }, ref) => /* @__PURE__ */ React24.createElement(
3820
+ "a",
3821
+ {
3822
+ ref,
3823
+ className: cn(
3824
+ "text-sm font-medium transition-colors hover:text-primary",
3825
+ active ? "text-foreground" : "text-muted-foreground",
3826
+ className
3827
+ ),
3828
+ ...props
3829
+ }
3830
+ ));
3831
+ HeaderLink.displayName = "HeaderLink";
3832
+
3833
+ // src/components/UI/input.jsx
3834
+ import * as React25 from "react";
3835
+ var Input = React25.forwardRef(({ className, type, ...props }, ref) => {
3836
+ return /* @__PURE__ */ React25.createElement(
3837
+ "input",
3838
+ {
3839
+ type,
3840
+ className: cn(
3841
+ "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
3842
+ className
3843
+ ),
3844
+ ref,
3845
+ ...props
3846
+ }
3847
+ );
3848
+ });
3849
+ Input.displayName = "Input";
3850
+
3851
+ // src/components/UI/label.jsx
3852
+ import * as React26 from "react";
3853
+ import * as LabelPrimitive from "@radix-ui/react-label";
3854
+ import { cva as cva4 } from "class-variance-authority";
3855
+ var labelVariants = cva4(
3856
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
3857
+ );
3858
+ var Label = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React26.createElement(
3859
+ LabelPrimitive.Root,
3860
+ {
3861
+ ref,
3862
+ className: cn(labelVariants(), className),
3863
+ ...props
3864
+ }
3865
+ ));
3866
+ Label.displayName = LabelPrimitive.Root.displayName;
3867
+
3868
+ // src/components/UI/list.jsx
3869
+ import * as React27 from "react";
3870
+ var List2 = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
3871
+ "ul",
3872
+ {
3873
+ ref,
3874
+ className: cn("space-y-1", className),
3875
+ ...props
3876
+ }
3877
+ ));
3878
+ List2.displayName = "List";
3879
+ var ListItem2 = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
3880
+ "li",
3881
+ {
3882
+ ref,
3883
+ className: cn(
3884
+ "flex items-center gap-3 rounded-lg px-3 py-2",
3885
+ className
3886
+ ),
3887
+ ...props
3888
+ }
3889
+ ));
3890
+ ListItem2.displayName = "ListItem";
3891
+ var ListItemText2 = React27.forwardRef(({ primary, secondary, className, ...props }, ref) => /* @__PURE__ */ React27.createElement("div", { ref, className: cn("flex flex-col gap-1", className), ...props }, primary && /* @__PURE__ */ React27.createElement("p", { className: "text-sm font-medium leading-none" }, primary), secondary && /* @__PURE__ */ React27.createElement("p", { className: "text-sm text-muted-foreground" }, secondary)));
3892
+ ListItemText2.displayName = "ListItemText";
3893
+ var ListItemIcon2 = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
3894
+ "div",
3895
+ {
3896
+ ref,
3897
+ className: cn("flex h-5 w-5 shrink-0 items-center justify-center", className),
3898
+ ...props
3899
+ }
3900
+ ));
3901
+ ListItemIcon2.displayName = "ListItemIcon";
3902
+
3903
+ // src/components/UI/popover.jsx
3904
+ import * as React28 from "react";
3905
+ import * as PopoverPrimitive from "@radix-ui/react-popover";
3906
+ var Popover = PopoverPrimitive.Root;
3907
+ var PopoverTrigger = PopoverPrimitive.Trigger;
3908
+ var PopoverAnchor = PopoverPrimitive.Anchor;
3909
+ var PopoverContent = React28.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ React28.createElement(PopoverPrimitive.Portal, null, /* @__PURE__ */ React28.createElement(
3910
+ PopoverPrimitive.Content,
3911
+ {
3912
+ ref,
3913
+ align,
3914
+ sideOffset,
3915
+ className: cn(
3916
+ "z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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",
3917
+ className
3918
+ ),
3919
+ ...props
3920
+ }
3921
+ )));
3922
+ PopoverContent.displayName = PopoverPrimitive.Content.displayName;
3923
+
3924
+ // src/components/UI/progress.jsx
3925
+ import * as React29 from "react";
3926
+ import * as ProgressPrimitive from "@radix-ui/react-progress";
3927
+ var Progress = React29.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ React29.createElement(
3928
+ ProgressPrimitive.Root,
3929
+ {
3930
+ ref,
3931
+ className: cn(
3932
+ "relative h-4 w-full overflow-hidden rounded-full bg-secondary",
3933
+ className
3934
+ ),
3935
+ ...props
3936
+ },
3937
+ /* @__PURE__ */ React29.createElement(
3938
+ ProgressPrimitive.Indicator,
3939
+ {
3940
+ className: "h-full w-full flex-1 bg-primary transition-all",
3941
+ style: { transform: `translateX(-${100 - (value || 0)}%)` }
3942
+ }
3943
+ )
3944
+ ));
3945
+ Progress.displayName = ProgressPrimitive.Root.displayName;
3946
+
3947
+ // src/components/UI/select.jsx
3948
+ import * as React30 from "react";
3949
+ import * as SelectPrimitive from "@radix-ui/react-select";
3950
+ import { Check as Check2, ChevronDown as ChevronDown2, ChevronUp } from "lucide-react";
3951
+ var Select = SelectPrimitive.Root;
3952
+ var SelectGroup = SelectPrimitive.Group;
3953
+ var SelectValue = SelectPrimitive.Value;
3954
+ var SelectTrigger = React30.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React30.createElement(
3955
+ SelectPrimitive.Trigger,
3956
+ {
3957
+ ref,
3958
+ className: cn(
3959
+ "flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
3960
+ className
3961
+ ),
3962
+ ...props
3963
+ },
3964
+ children,
3965
+ /* @__PURE__ */ React30.createElement(SelectPrimitive.Icon, { asChild: true }, /* @__PURE__ */ React30.createElement(ChevronDown2, { className: "h-4 w-4 opacity-50" }))
3966
+ ));
3967
+ SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
3968
+ var SelectScrollUpButton = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React30.createElement(
3969
+ SelectPrimitive.ScrollUpButton,
3970
+ {
3971
+ ref,
3972
+ className: cn(
3973
+ "flex cursor-default items-center justify-center py-1",
3974
+ className
3975
+ ),
3976
+ ...props
3977
+ },
3978
+ /* @__PURE__ */ React30.createElement(ChevronUp, { className: "h-4 w-4" })
3979
+ ));
3980
+ SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
3981
+ var SelectScrollDownButton = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React30.createElement(
3982
+ SelectPrimitive.ScrollDownButton,
3983
+ {
3984
+ ref,
3985
+ className: cn(
3986
+ "flex cursor-default items-center justify-center py-1",
3987
+ className
3988
+ ),
3989
+ ...props
3990
+ },
3991
+ /* @__PURE__ */ React30.createElement(ChevronDown2, { className: "h-4 w-4" })
3992
+ ));
3993
+ SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
3994
+ var SelectContent = React30.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ React30.createElement(SelectPrimitive.Portal, null, /* @__PURE__ */ React30.createElement(
3995
+ SelectPrimitive.Content,
3996
+ {
3997
+ ref,
3998
+ className: cn(
3999
+ "relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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",
4000
+ position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
4001
+ className
4002
+ ),
4003
+ position,
4004
+ ...props
4005
+ },
4006
+ /* @__PURE__ */ React30.createElement(SelectScrollUpButton, null),
4007
+ /* @__PURE__ */ React30.createElement(
4008
+ SelectPrimitive.Viewport,
4009
+ {
4010
+ className: cn(
4011
+ "p-1",
4012
+ position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
4013
+ )
4014
+ },
4015
+ children
4016
+ ),
4017
+ /* @__PURE__ */ React30.createElement(SelectScrollDownButton, null)
4018
+ )));
4019
+ SelectContent.displayName = SelectPrimitive.Content.displayName;
4020
+ var SelectLabel = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React30.createElement(
4021
+ SelectPrimitive.Label,
4022
+ {
4023
+ ref,
4024
+ className: cn("py-1.5 pl-8 pr-2 text-sm font-semibold", className),
4025
+ ...props
4026
+ }
4027
+ ));
4028
+ SelectLabel.displayName = SelectPrimitive.Label.displayName;
4029
+ var SelectItem = React30.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React30.createElement(
4030
+ SelectPrimitive.Item,
4031
+ {
4032
+ ref,
4033
+ className: cn(
4034
+ "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
4035
+ className
4036
+ ),
4037
+ ...props
4038
+ },
4039
+ /* @__PURE__ */ React30.createElement("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center" }, /* @__PURE__ */ React30.createElement(SelectPrimitive.ItemIndicator, null, /* @__PURE__ */ React30.createElement(Check2, { className: "h-4 w-4" }))),
4040
+ /* @__PURE__ */ React30.createElement(SelectPrimitive.ItemText, null, children)
4041
+ ));
4042
+ SelectItem.displayName = SelectPrimitive.Item.displayName;
4043
+ var SelectSeparator = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React30.createElement(
4044
+ SelectPrimitive.Separator,
4045
+ {
4046
+ ref,
4047
+ className: cn("-mx-1 my-1 h-px bg-muted", className),
4048
+ ...props
4049
+ }
4050
+ ));
4051
+ SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
4052
+
4053
+ // src/components/UI/separator.jsx
4054
+ import * as React31 from "react";
4055
+ import * as SeparatorPrimitive from "@radix-ui/react-separator";
4056
+ var Separator2 = React31.forwardRef(
4057
+ ({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ React31.createElement(
4058
+ SeparatorPrimitive.Root,
4059
+ {
4060
+ ref,
4061
+ decorative,
4062
+ orientation,
4063
+ className: cn(
4064
+ "shrink-0 bg-border",
4065
+ orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
4066
+ className
4067
+ ),
4068
+ ...props
4069
+ }
4070
+ )
4071
+ );
4072
+ Separator2.displayName = SeparatorPrimitive.Root.displayName;
4073
+
4074
+ // src/components/UI/sheet.jsx
4075
+ import * as React32 from "react";
4076
+ import * as DialogPrimitive2 from "@radix-ui/react-dialog";
4077
+ import { cva as cva5 } from "class-variance-authority";
4078
+ import { X as X2 } from "lucide-react";
4079
+ var Sheet = DialogPrimitive2.Root;
4080
+ var SheetTrigger = DialogPrimitive2.Trigger;
4081
+ var SheetClose = DialogPrimitive2.Close;
4082
+ var SheetPortal = DialogPrimitive2.Portal;
4083
+ var SheetOverlay = React32.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React32.createElement(
4084
+ DialogPrimitive2.Overlay,
4085
+ {
4086
+ className: cn(
4087
+ "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
4088
+ className
4089
+ ),
4090
+ ...props,
4091
+ ref
4092
+ }
4093
+ ));
4094
+ SheetOverlay.displayName = DialogPrimitive2.Overlay.displayName;
4095
+ var sheetVariants = cva5(
4096
+ "fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
4097
+ {
4098
+ variants: {
4099
+ side: {
4100
+ top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
4101
+ bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
4102
+ left: "inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
4103
+ right: "inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"
4104
+ }
4105
+ },
4106
+ defaultVariants: {
4107
+ side: "right"
4108
+ }
4109
+ }
4110
+ );
4111
+ var SheetContent = React32.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ React32.createElement(SheetPortal, null, /* @__PURE__ */ React32.createElement(SheetOverlay, null), /* @__PURE__ */ React32.createElement(
4112
+ DialogPrimitive2.Content,
4113
+ {
4114
+ ref,
4115
+ className: cn(sheetVariants({ side }), className),
4116
+ ...props
4117
+ },
4118
+ children,
4119
+ /* @__PURE__ */ React32.createElement(DialogPrimitive2.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary" }, /* @__PURE__ */ React32.createElement(X2, { className: "h-4 w-4" }), /* @__PURE__ */ React32.createElement("span", { className: "sr-only" }, "Close"))
4120
+ )));
4121
+ SheetContent.displayName = DialogPrimitive2.Content.displayName;
4122
+ var SheetHeader = ({
4123
+ className,
4124
+ ...props
4125
+ }) => /* @__PURE__ */ React32.createElement(
4126
+ "div",
4127
+ {
4128
+ className: cn(
4129
+ "flex flex-col space-y-2 text-center sm:text-left",
4130
+ className
4131
+ ),
4132
+ ...props
4133
+ }
4134
+ );
4135
+ SheetHeader.displayName = "SheetHeader";
4136
+ var SheetFooter = ({
4137
+ className,
4138
+ ...props
4139
+ }) => /* @__PURE__ */ React32.createElement(
4140
+ "div",
4141
+ {
4142
+ className: cn(
4143
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
4144
+ className
4145
+ ),
4146
+ ...props
4147
+ }
4148
+ );
4149
+ SheetFooter.displayName = "SheetFooter";
4150
+ var SheetTitle = React32.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React32.createElement(
4151
+ DialogPrimitive2.Title,
4152
+ {
4153
+ ref,
4154
+ className: cn("text-lg font-semibold text-foreground", className),
4155
+ ...props
4156
+ }
4157
+ ));
4158
+ SheetTitle.displayName = DialogPrimitive2.Title.displayName;
4159
+ var SheetDescription = React32.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React32.createElement(
4160
+ DialogPrimitive2.Description,
4161
+ {
4162
+ ref,
4163
+ className: cn("text-sm text-muted-foreground", className),
4164
+ ...props
4165
+ }
4166
+ ));
4167
+ SheetDescription.displayName = DialogPrimitive2.Description.displayName;
4168
+
4169
+ // src/components/UI/skeleton.jsx
4170
+ import * as React33 from "react";
4171
+ function Skeleton({
4172
+ className,
4173
+ ...props
4174
+ }) {
4175
+ return /* @__PURE__ */ React33.createElement(
4176
+ "div",
4177
+ {
4178
+ className: cn("animate-pulse rounded-md bg-muted", className),
4179
+ ...props
4180
+ }
4181
+ );
4182
+ }
4183
+
4184
+ // src/components/UI/stack.jsx
4185
+ import * as React34 from "react";
4186
+ var Stack5 = React34.forwardRef(({
4187
+ className,
4188
+ direction = "vertical",
4189
+ spacing = 4,
4190
+ align = "stretch",
4191
+ justify = "start",
4192
+ wrap = false,
4193
+ ...props
4194
+ }, ref) => {
4195
+ const directionClasses = {
4196
+ vertical: "flex-col",
4197
+ horizontal: "flex-row"
4198
+ };
4199
+ const spacingClasses = {
4200
+ vertical: {
4201
+ 0: "space-y-0",
4202
+ 1: "space-y-1",
4203
+ 2: "space-y-2",
4204
+ 3: "space-y-3",
4205
+ 4: "space-y-4",
4206
+ 5: "space-y-5",
4207
+ 6: "space-y-6",
4208
+ 8: "space-y-8"
4209
+ },
4210
+ horizontal: {
4211
+ 0: "space-x-0",
4212
+ 1: "space-x-1",
4213
+ 2: "space-x-2",
4214
+ 3: "space-x-3",
4215
+ 4: "space-x-4",
4216
+ 5: "space-x-5",
4217
+ 6: "space-x-6",
4218
+ 8: "space-x-8"
4219
+ }
4220
+ };
4221
+ const alignClasses = {
4222
+ start: "items-start",
4223
+ center: "items-center",
4224
+ end: "items-end",
4225
+ stretch: "items-stretch",
4226
+ baseline: "items-baseline"
4227
+ };
4228
+ const justifyClasses = {
4229
+ start: "justify-start",
4230
+ center: "justify-center",
4231
+ end: "justify-end",
4232
+ between: "justify-between",
4233
+ around: "justify-around",
4234
+ evenly: "justify-evenly"
4235
+ };
4236
+ return /* @__PURE__ */ React34.createElement(
4237
+ "div",
4238
+ {
4239
+ ref,
4240
+ className: cn(
4241
+ "flex",
4242
+ directionClasses[direction] || directionClasses.vertical,
4243
+ spacingClasses[direction][spacing] || spacingClasses.vertical[4],
4244
+ alignClasses[align] || alignClasses.stretch,
4245
+ justifyClasses[justify] || justifyClasses.start,
4246
+ wrap && "flex-wrap",
4247
+ className
4248
+ ),
4249
+ ...props
4250
+ }
4251
+ );
4252
+ });
4253
+ Stack5.displayName = "Stack";
4254
+ var HStack = React34.forwardRef(({ ...props }, ref) => /* @__PURE__ */ React34.createElement(Stack5, { ref, direction: "horizontal", ...props }));
4255
+ HStack.displayName = "HStack";
4256
+ var VStack = React34.forwardRef(({ ...props }, ref) => /* @__PURE__ */ React34.createElement(Stack5, { ref, direction: "vertical", ...props }));
4257
+ VStack.displayName = "VStack";
4258
+
4259
+ // src/components/UI/switch.jsx
4260
+ import * as React35 from "react";
4261
+ import * as SwitchPrimitives from "@radix-ui/react-switch";
4262
+ var Switch = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React35.createElement(
4263
+ SwitchPrimitives.Root,
4264
+ {
4265
+ className: cn(
4266
+ "peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",
4267
+ className
4268
+ ),
4269
+ ...props,
4270
+ ref
4271
+ },
4272
+ /* @__PURE__ */ React35.createElement(
4273
+ SwitchPrimitives.Thumb,
4274
+ {
4275
+ className: cn(
4276
+ "pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0"
4277
+ )
4278
+ }
4279
+ )
4280
+ ));
4281
+ Switch.displayName = SwitchPrimitives.Root.displayName;
4282
+
4283
+ // src/components/UI/table.jsx
4284
+ import * as React36 from "react";
4285
+ var Table = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React36.createElement("div", { className: "relative w-full overflow-auto" }, /* @__PURE__ */ React36.createElement(
4286
+ "table",
4287
+ {
4288
+ ref,
4289
+ className: cn("w-full caption-bottom text-sm", className),
4290
+ ...props
4291
+ }
4292
+ )));
4293
+ Table.displayName = "Table";
4294
+ var TableHeader = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React36.createElement("thead", { ref, className: cn("[&_tr]:border-b", className), ...props }));
4295
+ TableHeader.displayName = "TableHeader";
4296
+ var TableBody = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React36.createElement(
4297
+ "tbody",
4298
+ {
4299
+ ref,
4300
+ className: cn("[&_tr:last-child]:border-0", className),
4301
+ ...props
4302
+ }
4303
+ ));
4304
+ TableBody.displayName = "TableBody";
4305
+ var TableFooter = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React36.createElement(
4306
+ "tfoot",
4307
+ {
4308
+ ref,
4309
+ className: cn(
4310
+ "border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",
4311
+ className
4312
+ ),
4313
+ ...props
4314
+ }
4315
+ ));
4316
+ TableFooter.displayName = "TableFooter";
4317
+ var TableRow = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React36.createElement(
4318
+ "tr",
4319
+ {
4320
+ ref,
4321
+ className: cn(
4322
+ "border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",
4323
+ className
4324
+ ),
4325
+ ...props
4326
+ }
4327
+ ));
4328
+ TableRow.displayName = "TableRow";
4329
+ var TableHead = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React36.createElement(
4330
+ "th",
4331
+ {
4332
+ ref,
4333
+ className: cn(
4334
+ "h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",
4335
+ className
4336
+ ),
4337
+ ...props
4338
+ }
4339
+ ));
4340
+ TableHead.displayName = "TableHead";
4341
+ var TableCell = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React36.createElement(
4342
+ "td",
4343
+ {
4344
+ ref,
4345
+ className: cn("p-4 align-middle [&:has([role=checkbox])]:pr-0", className),
4346
+ ...props
4347
+ }
4348
+ ));
4349
+ TableCell.displayName = "TableCell";
4350
+ var TableCaption = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React36.createElement(
4351
+ "caption",
4352
+ {
4353
+ ref,
4354
+ className: cn("mt-4 text-sm text-muted-foreground", className),
4355
+ ...props
4356
+ }
4357
+ ));
4358
+ TableCaption.displayName = "TableCaption";
4359
+
4360
+ // src/components/UI/tabs.jsx
4361
+ import * as React37 from "react";
4362
+ import * as TabsPrimitive from "@radix-ui/react-tabs";
4363
+ var Tabs = TabsPrimitive.Root;
4364
+ var TabsList = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37.createElement(
4365
+ TabsPrimitive.List,
4366
+ {
4367
+ ref,
4368
+ className: cn(
4369
+ "inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",
4370
+ className
4371
+ ),
4372
+ ...props
4373
+ }
4374
+ ));
4375
+ TabsList.displayName = TabsPrimitive.List.displayName;
4376
+ var TabsTrigger = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37.createElement(
4377
+ TabsPrimitive.Trigger,
4378
+ {
4379
+ ref,
4380
+ className: cn(
4381
+ "inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",
4382
+ className
4383
+ ),
4384
+ ...props
4385
+ }
4386
+ ));
4387
+ TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
4388
+ var TabsContent = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React37.createElement(
4389
+ TabsPrimitive.Content,
4390
+ {
4391
+ ref,
4392
+ className: cn(
4393
+ "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
4394
+ className
4395
+ ),
4396
+ ...props
4397
+ }
4398
+ ));
4399
+ TabsContent.displayName = TabsPrimitive.Content.displayName;
4400
+
4401
+ // src/components/UI/textarea.jsx
4402
+ import * as React38 from "react";
4403
+ var Textarea = React38.forwardRef(({ className, ...props }, ref) => {
4404
+ return /* @__PURE__ */ React38.createElement(
4405
+ "textarea",
4406
+ {
4407
+ className: cn(
4408
+ "flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
4409
+ className
4410
+ ),
4411
+ ref,
4412
+ ...props
4413
+ }
4414
+ );
4415
+ });
4416
+ Textarea.displayName = "Textarea";
4417
+
4418
+ // src/components/UI/toast.jsx
4419
+ import * as React39 from "react";
4420
+ import { Toaster as Sonner } from "sonner";
4421
+ var Toaster = ({ ...props }) => {
4422
+ return /* @__PURE__ */ React39.createElement(
4423
+ Sonner,
4424
+ {
4425
+ className: "toaster group",
4426
+ toastOptions: {
4427
+ classNames: {
4428
+ toast: "group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",
4429
+ description: "group-[.toast]:text-muted-foreground",
4430
+ actionButton: "group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",
4431
+ cancelButton: "group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"
4432
+ }
4433
+ },
4434
+ ...props
4435
+ }
4436
+ );
4437
+ };
4438
+
4439
+ // src/components/UI/tooltip.jsx
4440
+ import * as React40 from "react";
4441
+ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
4442
+ var TooltipProvider = TooltipPrimitive.Provider;
4443
+ var Tooltip = TooltipPrimitive.Root;
4444
+ var TooltipTrigger = TooltipPrimitive.Trigger;
4445
+ var TooltipContent = React40.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ React40.createElement(
4446
+ TooltipPrimitive.Content,
4447
+ {
4448
+ ref,
4449
+ sideOffset,
4450
+ className: cn(
4451
+ "z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md 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",
4452
+ className
4453
+ ),
4454
+ ...props
4455
+ }
4456
+ ));
4457
+ TooltipContent.displayName = TooltipPrimitive.Content.displayName;
4458
+
4459
+ // src/components/UI/typography.jsx
4460
+ import * as React41 from "react";
4461
+ import { cva as cva6 } from "class-variance-authority";
4462
+ var headingVariants = cva6("scroll-m-20 tracking-tight", {
4463
+ variants: {
4464
+ level: {
4465
+ h1: "text-4xl font-extrabold lg:text-5xl",
4466
+ h2: "text-3xl font-semibold",
4467
+ h3: "text-2xl font-semibold",
4468
+ h4: "text-xl font-semibold",
4469
+ h5: "text-lg font-semibold",
4470
+ h6: "text-base font-semibold"
4471
+ }
4472
+ },
4473
+ defaultVariants: {
4474
+ level: "h2"
4475
+ }
4476
+ });
4477
+ var Heading = React41.forwardRef(({ className, level = "h2", ...props }, ref) => {
4478
+ const Comp = level;
4479
+ return /* @__PURE__ */ React41.createElement(
4480
+ Comp,
4481
+ {
4482
+ ref,
4483
+ className: cn(headingVariants({ level, className })),
4484
+ ...props
4485
+ }
4486
+ );
4487
+ });
4488
+ Heading.displayName = "Heading";
4489
+ var H1 = React41.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React41.createElement(
4490
+ "h1",
4491
+ {
4492
+ ref,
4493
+ className: cn("scroll-m-20 text-4xl font-extrabold tracking-tight lg:text-5xl", className),
4494
+ ...props
4495
+ }
4496
+ ));
4497
+ H1.displayName = "H1";
4498
+ var H2 = React41.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React41.createElement(
4499
+ "h2",
4500
+ {
4501
+ ref,
4502
+ className: cn("scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight first:mt-0", className),
4503
+ ...props
4504
+ }
4505
+ ));
4506
+ H2.displayName = "H2";
4507
+ var H3 = React41.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React41.createElement(
4508
+ "h3",
4509
+ {
4510
+ ref,
4511
+ className: cn("scroll-m-20 text-2xl font-semibold tracking-tight", className),
4512
+ ...props
4513
+ }
4514
+ ));
4515
+ H3.displayName = "H3";
4516
+ var H4 = React41.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React41.createElement(
4517
+ "h4",
3382
4518
  {
3383
4519
  ref,
3384
4520
  className: cn("scroll-m-20 text-xl font-semibold tracking-tight", className),
@@ -3386,7 +4522,7 @@ var H4 = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ Re
3386
4522
  }
3387
4523
  ));
3388
4524
  H4.displayName = "H4";
3389
- var P = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React17.createElement(
4525
+ var P = React41.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React41.createElement(
3390
4526
  "p",
3391
4527
  {
3392
4528
  ref,
@@ -3395,7 +4531,7 @@ var P = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ Rea
3395
4531
  }
3396
4532
  ));
3397
4533
  P.displayName = "P";
3398
- var Blockquote = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React17.createElement(
4534
+ var Blockquote = React41.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React41.createElement(
3399
4535
  "blockquote",
3400
4536
  {
3401
4537
  ref,
@@ -3404,7 +4540,7 @@ var Blockquote = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE
3404
4540
  }
3405
4541
  ));
3406
4542
  Blockquote.displayName = "Blockquote";
3407
- var List2 = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React17.createElement(
4543
+ var List4 = React41.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React41.createElement(
3408
4544
  "ul",
3409
4545
  {
3410
4546
  ref,
@@ -3412,8 +4548,8 @@ var List2 = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
3412
4548
  ...props
3413
4549
  }
3414
4550
  ));
3415
- List2.displayName = "List";
3416
- var InlineCode = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React17.createElement(
4551
+ List4.displayName = "List";
4552
+ var InlineCode = React41.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React41.createElement(
3417
4553
  "code",
3418
4554
  {
3419
4555
  ref,
@@ -3425,7 +4561,7 @@ var InlineCode = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE
3425
4561
  }
3426
4562
  ));
3427
4563
  InlineCode.displayName = "InlineCode";
3428
- var Lead = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React17.createElement(
4564
+ var Lead = React41.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React41.createElement(
3429
4565
  "p",
3430
4566
  {
3431
4567
  ref,
@@ -3434,7 +4570,7 @@ var Lead = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
3434
4570
  }
3435
4571
  ));
3436
4572
  Lead.displayName = "Lead";
3437
- var Large = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React17.createElement(
4573
+ var Large = React41.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React41.createElement(
3438
4574
  "div",
3439
4575
  {
3440
4576
  ref,
@@ -3443,7 +4579,7 @@ var Large = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
3443
4579
  }
3444
4580
  ));
3445
4581
  Large.displayName = "Large";
3446
- var Small = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React17.createElement(
4582
+ var Small = React41.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React41.createElement(
3447
4583
  "small",
3448
4584
  {
3449
4585
  ref,
@@ -3452,7 +4588,7 @@ var Small = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
3452
4588
  }
3453
4589
  ));
3454
4590
  Small.displayName = "Small";
3455
- var Muted = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React17.createElement(
4591
+ var Muted = React41.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React41.createElement(
3456
4592
  "p",
3457
4593
  {
3458
4594
  ref,
@@ -3463,24 +4599,24 @@ var Muted = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
3463
4599
  Muted.displayName = "Muted";
3464
4600
 
3465
4601
  // src/components/Notifications/NotificationManager.js
3466
- import React18 from "react";
4602
+ import React42 from "react";
3467
4603
  import {
3468
4604
  Box as Box8,
3469
4605
  Snackbar,
3470
- Alert,
3471
- AlertTitle,
4606
+ Alert as Alert2,
4607
+ AlertTitle as AlertTitle2,
3472
4608
  IconButton as IconButton2,
3473
4609
  Button as Button3,
3474
4610
  LinearProgress,
3475
4611
  Typography as Typography6,
3476
4612
  Slide,
3477
4613
  Fade,
3478
- Stack as Stack5,
4614
+ Stack as Stack6,
3479
4615
  Paper as Paper2,
3480
4616
  Chip
3481
4617
  } from "@mui/material";
3482
4618
  import {
3483
- Close,
4619
+ Close as Close3,
3484
4620
  CheckCircle,
3485
4621
  Error as Error2,
3486
4622
  Warning,
@@ -3496,12 +4632,12 @@ var NotificationItem = ({ notification, onClose, onAction }) => {
3496
4632
  }
3497
4633
  const getSeverityIcon = (type) => {
3498
4634
  const icons = {
3499
- success: /* @__PURE__ */ React18.createElement(CheckCircle, null),
3500
- error: /* @__PURE__ */ React18.createElement(Error2, null),
3501
- warning: /* @__PURE__ */ React18.createElement(Warning, null),
3502
- info: /* @__PURE__ */ React18.createElement(Info, null)
4635
+ success: /* @__PURE__ */ React42.createElement(CheckCircle, null),
4636
+ error: /* @__PURE__ */ React42.createElement(Error2, null),
4637
+ warning: /* @__PURE__ */ React42.createElement(Warning, null),
4638
+ info: /* @__PURE__ */ React42.createElement(Info, null)
3503
4639
  };
3504
- return icons[type] || /* @__PURE__ */ React18.createElement(Info, null);
4640
+ return icons[type] || /* @__PURE__ */ React42.createElement(Info, null);
3505
4641
  };
3506
4642
  const handleActionClick = (action) => {
3507
4643
  if (action && action.onClick) {
@@ -3516,12 +4652,12 @@ var NotificationItem = ({ notification, onClose, onAction }) => {
3516
4652
  onClose();
3517
4653
  }
3518
4654
  };
3519
- return /* @__PURE__ */ React18.createElement(
3520
- Alert,
4655
+ return /* @__PURE__ */ React42.createElement(
4656
+ Alert2,
3521
4657
  {
3522
4658
  severity: notification.type,
3523
4659
  icon: getSeverityIcon(notification.type),
3524
- action: /* @__PURE__ */ React18.createElement(Box8, { display: "flex", alignItems: "center", gap: 1 }, (_a = notification.actions) == null ? void 0 : _a.map((action, index) => /* @__PURE__ */ React18.createElement(
4660
+ action: /* @__PURE__ */ React42.createElement(Box8, { display: "flex", alignItems: "center", gap: 1 }, (_a = notification.actions) == null ? void 0 : _a.map((action, index) => /* @__PURE__ */ React42.createElement(
3525
4661
  Button3,
3526
4662
  {
3527
4663
  key: index,
@@ -3537,14 +4673,14 @@ var NotificationItem = ({ notification, onClose, onAction }) => {
3537
4673
  }
3538
4674
  },
3539
4675
  action.label
3540
- )), typeof notification.progress === "number" && /* @__PURE__ */ React18.createElement(Box8, { sx: { minWidth: 120 } }, /* @__PURE__ */ React18.createElement(
4676
+ )), typeof notification.progress === "number" && /* @__PURE__ */ React42.createElement(Box8, { sx: { minWidth: 120 } }, /* @__PURE__ */ React42.createElement(
3541
4677
  LinearProgress,
3542
4678
  {
3543
4679
  variant: "determinate",
3544
4680
  value: notification.progress,
3545
4681
  sx: { height: 6, borderRadius: 3 }
3546
4682
  }
3547
- ), /* @__PURE__ */ React18.createElement(Typography6, { variant: "caption", sx: { fontSize: "0.7rem" } }, Math.round(notification.progress), "%")), notification.timestamp && /* @__PURE__ */ React18.createElement(
4683
+ ), /* @__PURE__ */ React42.createElement(Typography6, { variant: "caption", sx: { fontSize: "0.7rem" } }, Math.round(notification.progress), "%")), notification.timestamp && /* @__PURE__ */ React42.createElement(
3548
4684
  Chip,
3549
4685
  {
3550
4686
  label: (() => {
@@ -3562,14 +4698,14 @@ var NotificationItem = ({ notification, onClose, onAction }) => {
3562
4698
  opacity: 0.7
3563
4699
  }
3564
4700
  }
3565
- ), notification.dismissible && /* @__PURE__ */ React18.createElement(
4701
+ ), notification.dismissible && /* @__PURE__ */ React42.createElement(
3566
4702
  IconButton2,
3567
4703
  {
3568
4704
  size: "small",
3569
4705
  onClick: safeOnClose,
3570
4706
  sx: { ml: 1 }
3571
4707
  },
3572
- /* @__PURE__ */ React18.createElement(Close, { fontSize: "small" })
4708
+ /* @__PURE__ */ React42.createElement(Close3, { fontSize: "small" })
3573
4709
  )),
3574
4710
  sx: {
3575
4711
  mb: 1,
@@ -3579,8 +4715,8 @@ var NotificationItem = ({ notification, onClose, onAction }) => {
3579
4715
  }
3580
4716
  }
3581
4717
  },
3582
- notification.title && /* @__PURE__ */ React18.createElement(AlertTitle, { sx: { fontSize: "0.875rem", mb: 0.5 } }, notification.title),
3583
- /* @__PURE__ */ React18.createElement(Typography6, { variant: "body2", sx: { fontSize: "0.8rem" } }, notification.message)
4718
+ notification.title && /* @__PURE__ */ React42.createElement(AlertTitle2, { sx: { fontSize: "0.875rem", mb: 0.5 } }, notification.title),
4719
+ /* @__PURE__ */ React42.createElement(Typography6, { variant: "body2", sx: { fontSize: "0.8rem" } }, notification.message)
3584
4720
  );
3585
4721
  };
3586
4722
  var NotificationManager = () => {
@@ -3591,7 +4727,7 @@ var NotificationManager = () => {
3591
4727
  if (notifications.length === 0) {
3592
4728
  return null;
3593
4729
  }
3594
- return /* @__PURE__ */ React18.createElement(React18.Fragment, null, persistentNotifications.length > 0 && /* @__PURE__ */ React18.createElement(
4730
+ return /* @__PURE__ */ React42.createElement(React42.Fragment, null, persistentNotifications.length > 0 && /* @__PURE__ */ React42.createElement(
3595
4731
  Box8,
3596
4732
  {
3597
4733
  sx: {
@@ -3605,7 +4741,7 @@ var NotificationManager = () => {
3605
4741
  overflow: "auto"
3606
4742
  }
3607
4743
  },
3608
- /* @__PURE__ */ React18.createElement(Stack5, { spacing: 1 }, persistentNotifications.length > 1 && /* @__PURE__ */ React18.createElement(Box8, { display: "flex", justifyContent: "flex-end", mb: 1 }, /* @__PURE__ */ React18.createElement(
4744
+ /* @__PURE__ */ React42.createElement(Stack6, { spacing: 1 }, persistentNotifications.length > 1 && /* @__PURE__ */ React42.createElement(Box8, { display: "flex", justifyContent: "flex-end", mb: 1 }, /* @__PURE__ */ React42.createElement(
3609
4745
  Button3,
3610
4746
  {
3611
4747
  size: "small",
@@ -3618,7 +4754,7 @@ var NotificationManager = () => {
3618
4754
  ")"
3619
4755
  )), persistentNotifications.map((notification) => {
3620
4756
  if (!notification || !notification.id) return null;
3621
- return /* @__PURE__ */ React18.createElement(Fade, { key: `notification-${notification.id}`, in: true, timeout: 300 }, /* @__PURE__ */ React18.createElement(Box8, null, /* @__PURE__ */ React18.createElement(
4757
+ return /* @__PURE__ */ React42.createElement(Fade, { key: `notification-${notification.id}`, in: true, timeout: 300 }, /* @__PURE__ */ React42.createElement(Box8, null, /* @__PURE__ */ React42.createElement(
3622
4758
  NotificationItem,
3623
4759
  {
3624
4760
  notification,
@@ -3626,7 +4762,7 @@ var NotificationManager = () => {
3626
4762
  }
3627
4763
  )));
3628
4764
  }))
3629
- ), latestTemporary && /* @__PURE__ */ React18.createElement(
4765
+ ), latestTemporary && /* @__PURE__ */ React42.createElement(
3630
4766
  Snackbar,
3631
4767
  {
3632
4768
  key: `temp-notification-${latestTemporary.id}`,
@@ -3642,7 +4778,7 @@ var NotificationManager = () => {
3642
4778
  }
3643
4779
  }
3644
4780
  },
3645
- /* @__PURE__ */ React18.createElement(Box8, null, /* @__PURE__ */ React18.createElement(
4781
+ /* @__PURE__ */ React42.createElement(Box8, null, /* @__PURE__ */ React42.createElement(
3646
4782
  NotificationItem,
3647
4783
  {
3648
4784
  notification: latestTemporary,
@@ -3654,24 +4790,24 @@ var NotificationManager = () => {
3654
4790
  var NotificationManager_default = NotificationManager;
3655
4791
 
3656
4792
  // src/components/Notifications/NotificationBell.js
3657
- import React19, { useState as useState6, useEffect as useEffect5, useCallback as useCallback2 } from "react";
4793
+ import React43, { useState as useState6, useEffect as useEffect5, useCallback as useCallback2 } from "react";
3658
4794
  import {
3659
4795
  IconButton as IconButton3,
3660
- Badge as Badge2,
4796
+ Badge as Badge3,
3661
4797
  Menu as Menu2,
3662
4798
  MenuItem as MenuItem2,
3663
4799
  Box as Box9,
3664
4800
  Typography as Typography7,
3665
4801
  Divider as Divider2,
3666
- Avatar as Avatar2,
3667
- ListItemText as ListItemText2,
4802
+ Avatar as Avatar3,
4803
+ ListItemText as ListItemText3,
3668
4804
  ListItemAvatar,
3669
- List as List3,
3670
- ListItem as ListItem2,
4805
+ List as List5,
4806
+ ListItem as ListItem3,
3671
4807
  Button as Button4,
3672
4808
  Chip as Chip2,
3673
4809
  CircularProgress as CircularProgress3,
3674
- Alert as Alert2
4810
+ Alert as Alert3
3675
4811
  } from "@mui/material";
3676
4812
  import {
3677
4813
  Notifications as NotificationsIcon,
@@ -3685,7 +4821,7 @@ import {
3685
4821
  Payment,
3686
4822
  Home,
3687
4823
  Build,
3688
- Close as Close2,
4824
+ Close as Close4,
3689
4825
  DoneAll,
3690
4826
  Settings as SettingsIcon
3691
4827
  } from "@mui/icons-material";
@@ -3819,30 +4955,30 @@ var NotificationBell = ({ api: api2, useSocket: useSocket2, useAuth: useAuth2 })
3819
4955
  case "TICKET_RESOLVED":
3820
4956
  case "TICKET_COMMENTED":
3821
4957
  case "TICKET_STATUS_CHANGED":
3822
- return /* @__PURE__ */ React19.createElement(Assignment, { ...iconProps });
4958
+ return /* @__PURE__ */ React43.createElement(Assignment, { ...iconProps });
3823
4959
  case "MESSAGE_RECEIVED":
3824
4960
  case "MENTION_RECEIVED":
3825
- return /* @__PURE__ */ React19.createElement(Message, { ...iconProps });
4961
+ return /* @__PURE__ */ React43.createElement(Message, { ...iconProps });
3826
4962
  case "PAYMENT_DUE":
3827
4963
  case "PAYMENT_OVERDUE":
3828
- return /* @__PURE__ */ React19.createElement(Payment, { ...iconProps });
4964
+ return /* @__PURE__ */ React43.createElement(Payment, { ...iconProps });
3829
4965
  case "PROPERTY_UPDATED":
3830
4966
  case "LEASE_EXPIRING":
3831
- return /* @__PURE__ */ React19.createElement(Home, { ...iconProps });
4967
+ return /* @__PURE__ */ React43.createElement(Home, { ...iconProps });
3832
4968
  case "APPLIANCE_MAINTENANCE_DUE":
3833
4969
  case "MAINTENANCE_SCHEDULED":
3834
- return /* @__PURE__ */ React19.createElement(Build, { ...iconProps });
4970
+ return /* @__PURE__ */ React43.createElement(Build, { ...iconProps });
3835
4971
  case "SYSTEM_ALERT":
3836
- return /* @__PURE__ */ React19.createElement(Warning2, { ...iconProps });
4972
+ return /* @__PURE__ */ React43.createElement(Warning2, { ...iconProps });
3837
4973
  case "SUCCESS":
3838
- return /* @__PURE__ */ React19.createElement(CheckCircle2, { ...iconProps });
4974
+ return /* @__PURE__ */ React43.createElement(CheckCircle2, { ...iconProps });
3839
4975
  case "ERROR":
3840
- return /* @__PURE__ */ React19.createElement(ErrorIcon, { ...iconProps });
4976
+ return /* @__PURE__ */ React43.createElement(ErrorIcon, { ...iconProps });
3841
4977
  case "WARNING":
3842
- return /* @__PURE__ */ React19.createElement(Warning2, { ...iconProps });
4978
+ return /* @__PURE__ */ React43.createElement(Warning2, { ...iconProps });
3843
4979
  case "INFO":
3844
4980
  default:
3845
- return /* @__PURE__ */ React19.createElement(Info2, { ...iconProps });
4981
+ return /* @__PURE__ */ React43.createElement(Info2, { ...iconProps });
3846
4982
  }
3847
4983
  };
3848
4984
  const getNotificationColor = (type) => {
@@ -3857,7 +4993,7 @@ var NotificationBell = ({ api: api2, useSocket: useSocket2, useAuth: useAuth2 })
3857
4993
  HIGH: "warning",
3858
4994
  URGENT: "error"
3859
4995
  };
3860
- return /* @__PURE__ */ React19.createElement(
4996
+ return /* @__PURE__ */ React43.createElement(
3861
4997
  Chip2,
3862
4998
  {
3863
4999
  label: priority,
@@ -3867,7 +5003,7 @@ var NotificationBell = ({ api: api2, useSocket: useSocket2, useAuth: useAuth2 })
3867
5003
  }
3868
5004
  );
3869
5005
  };
3870
- return /* @__PURE__ */ React19.createElement(React19.Fragment, null, /* @__PURE__ */ React19.createElement(
5006
+ return /* @__PURE__ */ React43.createElement(React43.Fragment, null, /* @__PURE__ */ React43.createElement(
3871
5007
  IconButton3,
3872
5008
  {
3873
5009
  color: "inherit",
@@ -3879,16 +5015,16 @@ var NotificationBell = ({ api: api2, useSocket: useSocket2, useAuth: useAuth2 })
3879
5015
  }
3880
5016
  }
3881
5017
  },
3882
- /* @__PURE__ */ React19.createElement(
3883
- Badge2,
5018
+ /* @__PURE__ */ React43.createElement(
5019
+ Badge3,
3884
5020
  {
3885
5021
  badgeContent: unreadCount,
3886
5022
  color: "error",
3887
5023
  max: 99
3888
5024
  },
3889
- unreadCount > 0 ? /* @__PURE__ */ React19.createElement(NotificationsIcon, null) : /* @__PURE__ */ React19.createElement(NotificationsNone, null)
5025
+ unreadCount > 0 ? /* @__PURE__ */ React43.createElement(NotificationsIcon, null) : /* @__PURE__ */ React43.createElement(NotificationsNone, null)
3890
5026
  )
3891
- ), /* @__PURE__ */ React19.createElement(
5027
+ ), /* @__PURE__ */ React43.createElement(
3892
5028
  Menu2,
3893
5029
  {
3894
5030
  anchorEl,
@@ -3906,7 +5042,7 @@ var NotificationBell = ({ api: api2, useSocket: useSocket2, useAuth: useAuth2 })
3906
5042
  transformOrigin: { horizontal: "right", vertical: "top" },
3907
5043
  anchorOrigin: { horizontal: "right", vertical: "bottom" }
3908
5044
  },
3909
- /* @__PURE__ */ React19.createElement(
5045
+ /* @__PURE__ */ React43.createElement(
3910
5046
  Box9,
3911
5047
  {
3912
5048
  sx: {
@@ -3919,7 +5055,7 @@ var NotificationBell = ({ api: api2, useSocket: useSocket2, useAuth: useAuth2 })
3919
5055
  borderColor: "divider"
3920
5056
  }
3921
5057
  },
3922
- /* @__PURE__ */ React19.createElement(Box9, { sx: { display: "flex", alignItems: "center", gap: 1 } }, /* @__PURE__ */ React19.createElement(NotificationsIcon, { color: "primary" }), /* @__PURE__ */ React19.createElement(Typography7, { variant: "h6", sx: { fontWeight: 600 } }, "Notifications"), unreadCount > 0 && /* @__PURE__ */ React19.createElement(
5058
+ /* @__PURE__ */ React43.createElement(Box9, { sx: { display: "flex", alignItems: "center", gap: 1 } }, /* @__PURE__ */ React43.createElement(NotificationsIcon, { color: "primary" }), /* @__PURE__ */ React43.createElement(Typography7, { variant: "h6", sx: { fontWeight: 600 } }, "Notifications"), unreadCount > 0 && /* @__PURE__ */ React43.createElement(
3923
5059
  Chip2,
3924
5060
  {
3925
5061
  label: unreadCount,
@@ -3928,19 +5064,19 @@ var NotificationBell = ({ api: api2, useSocket: useSocket2, useAuth: useAuth2 })
3928
5064
  sx: { height: 22, fontSize: "0.75rem" }
3929
5065
  }
3930
5066
  )),
3931
- /* @__PURE__ */ React19.createElement(Box9, null, unreadCount > 0 && /* @__PURE__ */ React19.createElement(
5067
+ /* @__PURE__ */ React43.createElement(Box9, null, unreadCount > 0 && /* @__PURE__ */ React43.createElement(
3932
5068
  Button4,
3933
5069
  {
3934
5070
  size: "small",
3935
- startIcon: /* @__PURE__ */ React19.createElement(DoneAll, null),
5071
+ startIcon: /* @__PURE__ */ React43.createElement(DoneAll, null),
3936
5072
  onClick: handleMarkAllAsRead,
3937
5073
  sx: { textTransform: "none", fontSize: "0.75rem" }
3938
5074
  },
3939
5075
  "Mark all read"
3940
- ), /* @__PURE__ */ React19.createElement(IconButton3, { size: "small", onClick: handleClose }, /* @__PURE__ */ React19.createElement(Close2, { fontSize: "small" })))
5076
+ ), /* @__PURE__ */ React43.createElement(IconButton3, { size: "small", onClick: handleClose }, /* @__PURE__ */ React43.createElement(Close4, { fontSize: "small" })))
3941
5077
  ),
3942
- error && /* @__PURE__ */ React19.createElement(Alert2, { severity: "error", sx: { m: 2 } }, error),
3943
- /* @__PURE__ */ React19.createElement(
5078
+ error && /* @__PURE__ */ React43.createElement(Alert3, { severity: "error", sx: { m: 2 } }, error),
5079
+ /* @__PURE__ */ React43.createElement(
3944
5080
  Box9,
3945
5081
  {
3946
5082
  sx: {
@@ -3949,7 +5085,7 @@ var NotificationBell = ({ api: api2, useSocket: useSocket2, useAuth: useAuth2 })
3949
5085
  maxHeight: 450
3950
5086
  }
3951
5087
  },
3952
- loading && notifications.length === 0 ? /* @__PURE__ */ React19.createElement(Box9, { sx: { display: "flex", justifyContent: "center", p: 4 } }, /* @__PURE__ */ React19.createElement(CircularProgress3, { size: 32 })) : notifications.length === 0 ? /* @__PURE__ */ React19.createElement(
5088
+ loading && notifications.length === 0 ? /* @__PURE__ */ React43.createElement(Box9, { sx: { display: "flex", justifyContent: "center", p: 4 } }, /* @__PURE__ */ React43.createElement(CircularProgress3, { size: 32 })) : notifications.length === 0 ? /* @__PURE__ */ React43.createElement(
3953
5089
  Box9,
3954
5090
  {
3955
5091
  sx: {
@@ -3961,15 +5097,15 @@ var NotificationBell = ({ api: api2, useSocket: useSocket2, useAuth: useAuth2 })
3961
5097
  textAlign: "center"
3962
5098
  }
3963
5099
  },
3964
- /* @__PURE__ */ React19.createElement(NotificationsNone, { sx: { fontSize: 64, color: "text.secondary", mb: 2 } }),
3965
- /* @__PURE__ */ React19.createElement(Typography7, { variant: "body1", color: "text.secondary", sx: { fontWeight: 500 } }, "No notifications yet"),
3966
- /* @__PURE__ */ React19.createElement(Typography7, { variant: "body2", color: "text.secondary" }, "You're all caught up!")
3967
- ) : /* @__PURE__ */ React19.createElement(List3, { sx: { p: 0 } }, notifications.map((notification, index) => {
5100
+ /* @__PURE__ */ React43.createElement(NotificationsNone, { sx: { fontSize: 64, color: "text.secondary", mb: 2 } }),
5101
+ /* @__PURE__ */ React43.createElement(Typography7, { variant: "body1", color: "text.secondary", sx: { fontWeight: 500 } }, "No notifications yet"),
5102
+ /* @__PURE__ */ React43.createElement(Typography7, { variant: "body2", color: "text.secondary" }, "You're all caught up!")
5103
+ ) : /* @__PURE__ */ React43.createElement(List5, { sx: { p: 0 } }, notifications.map((notification, index) => {
3968
5104
  const isRead = notification.is_read || notification.read;
3969
5105
  const notifId = notification.id || notification._id;
3970
5106
  const createdAt = notification.created_at || notification.createdAt;
3971
- return /* @__PURE__ */ React19.createElement(React19.Fragment, { key: notifId }, /* @__PURE__ */ React19.createElement(
3972
- ListItem2,
5107
+ return /* @__PURE__ */ React43.createElement(React43.Fragment, { key: notifId }, /* @__PURE__ */ React43.createElement(
5108
+ ListItem3,
3973
5109
  {
3974
5110
  button: true,
3975
5111
  onClick: () => handleNotificationClick(notification),
@@ -3985,8 +5121,8 @@ var NotificationBell = ({ api: api2, useSocket: useSocket2, useAuth: useAuth2 })
3985
5121
  transition: "all 0.2s"
3986
5122
  }
3987
5123
  },
3988
- /* @__PURE__ */ React19.createElement(ListItemAvatar, null, /* @__PURE__ */ React19.createElement(
3989
- Avatar2,
5124
+ /* @__PURE__ */ React43.createElement(ListItemAvatar, null, /* @__PURE__ */ React43.createElement(
5125
+ Avatar3,
3990
5126
  {
3991
5127
  sx: {
3992
5128
  bgcolor: isRead ? "grey.300" : getNotificationColor(notification.type),
@@ -3996,10 +5132,10 @@ var NotificationBell = ({ api: api2, useSocket: useSocket2, useAuth: useAuth2 })
3996
5132
  },
3997
5133
  getNotificationIcon(notification.type)
3998
5134
  )),
3999
- /* @__PURE__ */ React19.createElement(
4000
- ListItemText2,
5135
+ /* @__PURE__ */ React43.createElement(
5136
+ ListItemText3,
4001
5137
  {
4002
- primary: /* @__PURE__ */ React19.createElement(Box9, { sx: { display: "flex", alignItems: "center", mb: 0.5 } }, /* @__PURE__ */ React19.createElement(
5138
+ primary: /* @__PURE__ */ React43.createElement(Box9, { sx: { display: "flex", alignItems: "center", mb: 0.5 } }, /* @__PURE__ */ React43.createElement(
4003
5139
  Typography7,
4004
5140
  {
4005
5141
  variant: "body2",
@@ -4010,7 +5146,7 @@ var NotificationBell = ({ api: api2, useSocket: useSocket2, useAuth: useAuth2 })
4010
5146
  },
4011
5147
  notification.title
4012
5148
  ), getPriorityChip(notification.priority)),
4013
- secondary: /* @__PURE__ */ React19.createElement(React19.Fragment, null, /* @__PURE__ */ React19.createElement(
5149
+ secondary: /* @__PURE__ */ React43.createElement(React43.Fragment, null, /* @__PURE__ */ React43.createElement(
4014
5150
  Typography7,
4015
5151
  {
4016
5152
  variant: "body2",
@@ -4024,12 +5160,12 @@ var NotificationBell = ({ api: api2, useSocket: useSocket2, useAuth: useAuth2 })
4024
5160
  }
4025
5161
  },
4026
5162
  notification.message
4027
- ), /* @__PURE__ */ React19.createElement(Typography7, { variant: "caption", color: "text.secondary" }, formatDistanceToNow(new Date(createdAt), { addSuffix: true })))
5163
+ ), /* @__PURE__ */ React43.createElement(Typography7, { variant: "caption", color: "text.secondary" }, formatDistanceToNow(new Date(createdAt), { addSuffix: true })))
4028
5164
  }
4029
5165
  )
4030
- ), index < notifications.length - 1 && /* @__PURE__ */ React19.createElement(Divider2, null));
5166
+ ), index < notifications.length - 1 && /* @__PURE__ */ React43.createElement(Divider2, null));
4031
5167
  })),
4032
- hasMore && notifications.length > 0 && /* @__PURE__ */ React19.createElement(Box9, { sx: { p: 2, textAlign: "center", borderTop: "1px solid", borderColor: "divider" } }, /* @__PURE__ */ React19.createElement(
5168
+ hasMore && notifications.length > 0 && /* @__PURE__ */ React43.createElement(Box9, { sx: { p: 2, textAlign: "center", borderTop: "1px solid", borderColor: "divider" } }, /* @__PURE__ */ React43.createElement(
4033
5169
  Button4,
4034
5170
  {
4035
5171
  onClick: handleLoadMore,
@@ -4040,7 +5176,7 @@ var NotificationBell = ({ api: api2, useSocket: useSocket2, useAuth: useAuth2 })
4040
5176
  loading ? "Loading..." : "Load more"
4041
5177
  ))
4042
5178
  ),
4043
- /* @__PURE__ */ React19.createElement(
5179
+ /* @__PURE__ */ React43.createElement(
4044
5180
  Box9,
4045
5181
  {
4046
5182
  sx: {
@@ -4050,11 +5186,11 @@ var NotificationBell = ({ api: api2, useSocket: useSocket2, useAuth: useAuth2 })
4050
5186
  textAlign: "center"
4051
5187
  }
4052
5188
  },
4053
- /* @__PURE__ */ React19.createElement(
5189
+ /* @__PURE__ */ React43.createElement(
4054
5190
  Button4,
4055
5191
  {
4056
5192
  size: "small",
4057
- startIcon: /* @__PURE__ */ React19.createElement(SettingsIcon, null),
5193
+ startIcon: /* @__PURE__ */ React43.createElement(SettingsIcon, null),
4058
5194
  onClick: () => {
4059
5195
  window.location.href = "/settings?tab=general";
4060
5196
  handleClose();
@@ -4069,22 +5205,22 @@ var NotificationBell = ({ api: api2, useSocket: useSocket2, useAuth: useAuth2 })
4069
5205
  var NotificationBell_default = NotificationBell;
4070
5206
 
4071
5207
  // src/components/ErrorBoundary/ErrorBoundary.js
4072
- import React20 from "react";
5208
+ import React44 from "react";
4073
5209
  import {
4074
5210
  Box as Box10,
4075
5211
  Typography as Typography8,
4076
5212
  Button as Button5,
4077
5213
  Card as Card3,
4078
5214
  CardContent as CardContent3,
4079
- Alert as Alert3,
4080
- Stack as Stack6
5215
+ Alert as Alert4,
5216
+ Stack as Stack7
4081
5217
  } from "@mui/material";
4082
5218
  import {
4083
5219
  Refresh as Refresh2,
4084
5220
  BugReport,
4085
5221
  Home as Home2
4086
5222
  } from "@mui/icons-material";
4087
- var ErrorBoundary = class extends React20.Component {
5223
+ var ErrorBoundary = class extends React44.Component {
4088
5224
  constructor(props) {
4089
5225
  super(props);
4090
5226
  this.state = {
@@ -4125,7 +5261,7 @@ var ErrorBoundary = class extends React20.Component {
4125
5261
  if (this.state.hasError) {
4126
5262
  const isNavigationError = (_b = (_a = this.state.error) == null ? void 0 : _a.message) == null ? void 0 : _b.includes("getBoundingClientRect");
4127
5263
  const isDOMError = ((_d = (_c = this.state.error) == null ? void 0 : _c.message) == null ? void 0 : _d.includes("null")) || ((_f = (_e = this.state.error) == null ? void 0 : _e.message) == null ? void 0 : _f.includes("undefined"));
4128
- return /* @__PURE__ */ React20.createElement(
5264
+ return /* @__PURE__ */ React44.createElement(
4129
5265
  Box10,
4130
5266
  {
4131
5267
  sx: {
@@ -4137,32 +5273,32 @@ var ErrorBoundary = class extends React20.Component {
4137
5273
  p: 3
4138
5274
  }
4139
5275
  },
4140
- /* @__PURE__ */ React20.createElement(Card3, { sx: { maxWidth: 600, width: "100%" } }, /* @__PURE__ */ React20.createElement(CardContent3, null, /* @__PURE__ */ React20.createElement(Stack6, { spacing: 3, alignItems: "center" }, /* @__PURE__ */ React20.createElement(BugReport, { sx: { fontSize: 64, color: "error.main" } }), /* @__PURE__ */ React20.createElement(Typography8, { variant: "h5", component: "h2", textAlign: "center" }, "Oops! Something went wrong"), /* @__PURE__ */ React20.createElement(Alert3, { severity: "error", sx: { width: "100%" } }, /* @__PURE__ */ React20.createElement(Typography8, { variant: "body2" }, isNavigationError && /* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement("strong", null, "UI Component Error:"), " A component tried to access an element before it was ready. This is usually temporary."), isDOMError && !isNavigationError && /* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement("strong", null, "DOM Error:"), " A component couldn't find an expected element. This might be due to rapid state changes."), !isNavigationError && !isDOMError && /* @__PURE__ */ React20.createElement(React20.Fragment, null, /* @__PURE__ */ React20.createElement("strong", null, "Application Error:"), " An unexpected error occurred while rendering the component."))), process.env.NODE_ENV === "development" && this.state.error && /* @__PURE__ */ React20.createElement(Alert3, { severity: "warning", sx: { width: "100%" } }, /* @__PURE__ */ React20.createElement(Typography8, { variant: "body2", component: "div" }, /* @__PURE__ */ React20.createElement("strong", null, "Debug Info:"), /* @__PURE__ */ React20.createElement("br", null), /* @__PURE__ */ React20.createElement("code", { style: { fontSize: "0.75rem", wordBreak: "break-word" } }, this.state.error.toString()))), /* @__PURE__ */ React20.createElement(Stack6, { direction: "row", spacing: 2 }, /* @__PURE__ */ React20.createElement(
5276
+ /* @__PURE__ */ React44.createElement(Card3, { sx: { maxWidth: 600, width: "100%" } }, /* @__PURE__ */ React44.createElement(CardContent3, null, /* @__PURE__ */ React44.createElement(Stack7, { spacing: 3, alignItems: "center" }, /* @__PURE__ */ React44.createElement(BugReport, { sx: { fontSize: 64, color: "error.main" } }), /* @__PURE__ */ React44.createElement(Typography8, { variant: "h5", component: "h2", textAlign: "center" }, "Oops! Something went wrong"), /* @__PURE__ */ React44.createElement(Alert4, { severity: "error", sx: { width: "100%" } }, /* @__PURE__ */ React44.createElement(Typography8, { variant: "body2" }, isNavigationError && /* @__PURE__ */ React44.createElement(React44.Fragment, null, /* @__PURE__ */ React44.createElement("strong", null, "UI Component Error:"), " A component tried to access an element before it was ready. This is usually temporary."), isDOMError && !isNavigationError && /* @__PURE__ */ React44.createElement(React44.Fragment, null, /* @__PURE__ */ React44.createElement("strong", null, "DOM Error:"), " A component couldn't find an expected element. This might be due to rapid state changes."), !isNavigationError && !isDOMError && /* @__PURE__ */ React44.createElement(React44.Fragment, null, /* @__PURE__ */ React44.createElement("strong", null, "Application Error:"), " An unexpected error occurred while rendering the component."))), process.env.NODE_ENV === "development" && this.state.error && /* @__PURE__ */ React44.createElement(Alert4, { severity: "warning", sx: { width: "100%" } }, /* @__PURE__ */ React44.createElement(Typography8, { variant: "body2", component: "div" }, /* @__PURE__ */ React44.createElement("strong", null, "Debug Info:"), /* @__PURE__ */ React44.createElement("br", null), /* @__PURE__ */ React44.createElement("code", { style: { fontSize: "0.75rem", wordBreak: "break-word" } }, this.state.error.toString()))), /* @__PURE__ */ React44.createElement(Stack7, { direction: "row", spacing: 2 }, /* @__PURE__ */ React44.createElement(
4141
5277
  Button5,
4142
5278
  {
4143
5279
  variant: "contained",
4144
- startIcon: /* @__PURE__ */ React20.createElement(Refresh2, null),
5280
+ startIcon: /* @__PURE__ */ React44.createElement(Refresh2, null),
4145
5281
  onClick: this.handleRetry,
4146
5282
  color: "primary"
4147
5283
  },
4148
5284
  "Try Again"
4149
- ), /* @__PURE__ */ React20.createElement(
5285
+ ), /* @__PURE__ */ React44.createElement(
4150
5286
  Button5,
4151
5287
  {
4152
5288
  variant: "outlined",
4153
- startIcon: /* @__PURE__ */ React20.createElement(Refresh2, null),
5289
+ startIcon: /* @__PURE__ */ React44.createElement(Refresh2, null),
4154
5290
  onClick: this.handleReload
4155
5291
  },
4156
5292
  "Reload Page"
4157
- ), this.props.onNavigateHome && /* @__PURE__ */ React20.createElement(
5293
+ ), this.props.onNavigateHome && /* @__PURE__ */ React44.createElement(
4158
5294
  Button5,
4159
5295
  {
4160
5296
  variant: "outlined",
4161
- startIcon: /* @__PURE__ */ React20.createElement(Home2, null),
5297
+ startIcon: /* @__PURE__ */ React44.createElement(Home2, null),
4162
5298
  onClick: this.props.onNavigateHome
4163
5299
  },
4164
5300
  "Go Home"
4165
- )), /* @__PURE__ */ React20.createElement(Typography8, { variant: "body2", color: "text.secondary", textAlign: "center" }, "If this problem persists, try refreshing the page or clearing your browser cache. The error has been logged for debugging."))))
5301
+ )), /* @__PURE__ */ React44.createElement(Typography8, { variant: "body2", color: "text.secondary", textAlign: "center" }, "If this problem persists, try refreshing the page or clearing your browser cache. The error has been logged for debugging."))))
4166
5302
  );
4167
5303
  }
4168
5304
  return this.props.children;
@@ -4171,7 +5307,7 @@ var ErrorBoundary = class extends React20.Component {
4171
5307
  var ErrorBoundary_default = ErrorBoundary;
4172
5308
 
4173
5309
  // src/contexts/SocketContext.js
4174
- import React21, { createContext as createContext5, useContext as useContext5, useEffect as useEffect6, useState as useState7 } from "react";
5310
+ import React45, { createContext as createContext5, useContext as useContext5, useEffect as useEffect6, useState as useState7 } from "react";
4175
5311
  import { io } from "socket.io-client";
4176
5312
  var SocketContext = createContext5();
4177
5313
  var useSocket = () => {
@@ -4217,7 +5353,7 @@ var SocketProvider = ({ children }) => {
4217
5353
  socket,
4218
5354
  isConnected
4219
5355
  };
4220
- return /* @__PURE__ */ React21.createElement(SocketContext.Provider, { value }, children);
5356
+ return /* @__PURE__ */ React45.createElement(SocketContext.Provider, { value }, children);
4221
5357
  };
4222
5358
 
4223
5359
  // src/hooks/useNotifications.js
@@ -5685,9 +6821,23 @@ var isTenantAuthenticated = () => {
5685
6821
  return !!(tenantToken && tenantData);
5686
6822
  };
5687
6823
  export {
6824
+ Accordion,
6825
+ AccordionContent,
6826
+ AccordionItem,
6827
+ AccordionTrigger,
6828
+ Alert,
6829
+ AlertDescription,
6830
+ AlertTitle,
5688
6831
  AuthLayout_default as AuthLayout,
5689
6832
  AuthProvider,
6833
+ Avatar2 as Avatar,
6834
+ AvatarFallback,
6835
+ AvatarImage,
6836
+ Badge2 as Badge,
5690
6837
  Blockquote,
6838
+ BreadcrumbItem,
6839
+ BreadcrumbLink,
6840
+ Breadcrumbs2 as Breadcrumbs,
5691
6841
  Button2 as Button,
5692
6842
  Card2 as Card,
5693
6843
  CardContent2 as CardContent,
@@ -5695,12 +6845,33 @@ export {
5695
6845
  CardFooter,
5696
6846
  CardHeader,
5697
6847
  CardTitle,
6848
+ Checkbox,
6849
+ Container2 as Container,
5698
6850
  CustomThemeProvider,
6851
+ Dialog,
6852
+ DialogClose,
6853
+ DialogContent,
6854
+ DialogDescription,
6855
+ DialogFooter,
6856
+ DialogHeader,
6857
+ DialogOverlay,
6858
+ DialogPortal,
6859
+ DialogTitle,
6860
+ DialogTrigger,
5699
6861
  ErrorBoundary_default as ErrorBoundary,
6862
+ Grid,
6863
+ GridItem,
5700
6864
  H1,
5701
6865
  H2,
5702
6866
  H3,
5703
6867
  H4,
6868
+ HStack,
6869
+ Header2 as Header,
6870
+ HeaderActions,
6871
+ HeaderBrand,
6872
+ HeaderContainer,
6873
+ HeaderLink,
6874
+ HeaderNav,
5704
6875
  Heading,
5705
6876
  InlineCode,
5706
6877
  Input,
@@ -5708,6 +6879,9 @@ export {
5708
6879
  Large,
5709
6880
  Lead,
5710
6881
  List2 as List,
6882
+ ListItem2 as ListItem,
6883
+ ListItemIcon2 as ListItemIcon,
6884
+ ListItemText2 as ListItemText,
5711
6885
  LoadingSpinner_default as LoadingSpinner,
5712
6886
  ModernCard_default as ModernCard,
5713
6887
  Muted,
@@ -5721,12 +6895,61 @@ export {
5721
6895
  P,
5722
6896
  PageHeader_default as PageHeader,
5723
6897
  PageLayout_default as PageLayout,
6898
+ Popover,
6899
+ PopoverAnchor,
6900
+ PopoverContent,
6901
+ PopoverTrigger,
6902
+ Progress,
6903
+ Select,
6904
+ SelectContent,
6905
+ SelectGroup,
6906
+ SelectItem,
6907
+ SelectLabel,
6908
+ SelectScrollDownButton,
6909
+ SelectScrollUpButton,
6910
+ SelectSeparator,
6911
+ SelectTrigger,
6912
+ SelectValue,
6913
+ Separator2 as Separator,
6914
+ Sheet,
6915
+ SheetClose,
6916
+ SheetContent,
6917
+ SheetDescription,
6918
+ SheetFooter,
6919
+ SheetHeader,
6920
+ SheetOverlay,
6921
+ SheetPortal,
6922
+ SheetTitle,
6923
+ SheetTrigger,
6924
+ Skeleton,
5724
6925
  Small,
5725
6926
  SocketProvider,
6927
+ Stack5 as Stack,
6928
+ Switch,
6929
+ Table,
6930
+ TableBody,
6931
+ TableCaption,
6932
+ TableCell,
6933
+ TableFooter,
6934
+ TableHead,
6935
+ TableHeader,
6936
+ TableRow,
6937
+ Tabs,
6938
+ TabsContent,
6939
+ TabsList,
6940
+ TabsTrigger,
5726
6941
  TenantLayout_default as TenantLayout,
5727
6942
  TenantThemeProvider,
6943
+ Textarea,
6944
+ Toaster,
6945
+ Tooltip,
6946
+ TooltipContent,
6947
+ TooltipProvider,
6948
+ TooltipTrigger,
6949
+ VStack,
5728
6950
  api,
5729
6951
  auditNotifications,
6952
+ badgeVariants,
5730
6953
  buttonVariants,
5731
6954
  cn,
5732
6955
  createContrastEnhancedComponents,