adminium 1.0.1-patch.3 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -46,67 +46,79 @@ var SeparatorPrimitive__namespace = /*#__PURE__*/_interopNamespace(SeparatorPrim
46
46
  function cn(...inputs) {
47
47
  return tailwindMerge.twMerge(clsx.clsx(inputs));
48
48
  }
49
- var buttonVariants = classVarianceAuthority.cva(
50
- "cursor-pointer group whitespace-nowrap focus-visible:outline-hidden inline-flex items-center justify-center has-data-[arrow=true]:justify-between whitespace-nowrap text-sm font-medium ring-offset-background transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-60 [&_svg]:shrink-0",
51
- {
52
- variants: {
53
- variant: {
54
- primary: "bg-primary text-primary-foreground hover:bg-primary/90 data-[state=open]:bg-primary/90",
55
- mono: "bg-zinc-950 text-white dark:bg-zinc-300 dark:text-black hover:bg-zinc-950/90 dark:hover:bg-zinc-300/90 data-[state=open]:bg-zinc-950/90 dark:data-[state=open]:bg-zinc-300/90",
56
- destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90 data-[state=open]:bg-destructive/90",
57
- success: "bg-emerald-500 text-white hover:bg-emerald-600 data-[state=open]:bg-emerald-600",
58
- secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/90 data-[state=open]:bg-secondary/90",
59
- outline: "bg-background text-accent-foreground border border-input hover:bg-accent data-[state=open]:bg-accent",
60
- dashed: "text-accent-foreground border border-input border-dashed bg-background hover:bg-accent hover:text-accent-foreground data-[state=open]:text-accent-foreground",
61
- ghost: "text-accent-foreground hover:bg-accent hover:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
62
- dim: "text-muted-foreground hover:text-foreground data-[state=open]:text-foreground",
63
- foreground: "",
64
- inverse: ""
65
- },
66
- appearance: {
67
- default: "",
68
- ghost: ""
69
- },
70
- underline: {
71
- solid: "",
72
- dashed: ""
73
- },
74
- underlined: {
75
- solid: "",
76
- dashed: ""
77
- },
78
- size: {
79
- lg: "h-10 rounded-md px-4 text-sm gap-1.5 [&_svg:not([class*=size-])]:size-4",
80
- md: "h-8.5 rounded-md px-3 gap-1.5 text-[0.8125rem] leading-[var(--text-sm--line-height)] [&_svg:not([class*=size-])]:size-4",
81
- sm: "h-7 rounded-md px-2.5 gap-1.25 text-xs [&_svg:not([class*=size-])]:size-3.5",
82
- icon: "size-8.5 rounded-md [&_svg:not([class*=size-])]:size-4 shrink-0"
83
- },
84
- autoHeight: {
85
- true: "",
86
- false: ""
87
- },
88
- shape: {
89
- default: "",
90
- circle: "rounded-full"
91
- },
92
- mode: {
93
- default: "focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
94
- icon: "focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 shrink-0",
95
- link: "text-primary h-auto p-0 bg-transparent rounded-none hover:bg-transparent data-[state=open]:bg-transparent",
96
- input: `
97
- justify-start font-normal hover:bg-background [&_svg]:transition-colors [&_svg]:hover:text-foreground data-[state=open]:bg-background
98
- focus-visible:border-ring focus-visible:outline-hidden focus-visible:ring-[3px] focus-visible:ring-ring/30
99
- [[data-state=open]>&]:border-ring [[data-state=open]>&]:outline-hidden [[data-state=open]>&]:ring-[3px]
100
- [[data-state=open]>&]:ring-ring/30
49
+ function Spinner({ className, ...props }) {
50
+ return /* @__PURE__ */ jsxRuntime.jsx(
51
+ lucideReact.Loader2Icon,
52
+ {
53
+ role: "status",
54
+ "aria-label": "Loading",
55
+ className: cn("size-4 animate-spin", className),
56
+ ...props
57
+ }
58
+ );
59
+ }
60
+ var buttonVariantConfig = {
61
+ variant: {
62
+ primary: "bg-primary text-primary-foreground hover:bg-primary/90 data-[state=open]:bg-primary/90",
63
+ mono: "bg-zinc-950 text-white dark:bg-zinc-300 dark:text-black hover:bg-zinc-950/90 dark:hover:bg-zinc-300/90 data-[state=open]:bg-zinc-950/90 dark:data-[state=open]:bg-zinc-300/90",
64
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90 data-[state=open]:bg-destructive/90",
65
+ success: "bg-emerald-500 text-white hover:bg-emerald-600 data-[state=open]:bg-emerald-600",
66
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/90 data-[state=open]:bg-secondary/90",
67
+ outline: "bg-background text-accent-foreground border border-input hover:bg-accent data-[state=open]:bg-accent",
68
+ dashed: "text-accent-foreground border border-input border-dashed bg-background hover:bg-accent hover:text-accent-foreground data-[state=open]:text-accent-foreground",
69
+ ghost: "text-accent-foreground hover:bg-accent hover:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
70
+ dim: "text-muted-foreground hover:text-foreground data-[state=open]:text-foreground",
71
+ foreground: "",
72
+ inverse: ""
73
+ },
74
+ appearance: {
75
+ default: "",
76
+ ghost: ""
77
+ },
78
+ underline: {
79
+ solid: "",
80
+ dashed: ""
81
+ },
82
+ underlined: {
83
+ solid: "",
84
+ dashed: ""
85
+ },
86
+ size: {
87
+ lg: "h-10 rounded-md px-4 text-sm gap-1.5 [&_svg:not([class*=size-])]:size-4",
88
+ md: "h-8.5 rounded-md px-3 gap-1.5 text-[0.8125rem] leading-[var(--text-sm--line-height)] [&_svg:not([class*=size-])]:size-4",
89
+ sm: "h-7 rounded-md px-2.5 gap-1.25 text-xs [&_svg:not([class*=size-])]:size-3.5",
90
+ icon: "size-8.5 rounded-md [&_svg:not([class*=size-])]:size-4 shrink-0"
91
+ },
92
+ autoHeight: {
93
+ true: "",
94
+ false: ""
95
+ },
96
+ shape: {
97
+ default: "",
98
+ circle: "rounded-full"
99
+ },
100
+ mode: {
101
+ default: "focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
102
+ icon: "focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 shrink-0",
103
+ link: "text-primary h-auto p-0 bg-transparent rounded-none hover:bg-transparent data-[state=open]:bg-transparent",
104
+ input: `
105
+ justify-start font-normal hover:bg-background [&_svg]:transition-colors [&_svg]:hover:text-foreground data-[state=open]:bg-background
106
+ focus-visible:border-ring focus-visible:outline-hidden focus-visible:ring-[3px] focus-visible:ring-ring/30
107
+ [[data-state=open]>&]:border-ring [[data-state=open]>&]:outline-hidden [[data-state=open]>&]:ring-[3px]
108
+ [[data-state=open]>&]:ring-ring/30
101
109
  aria-invalid:border-destructive/60 aria-invalid:ring-destructive/10 dark:aria-invalid:border-destructive dark:aria-invalid:ring-destructive/20
102
110
  in-data-[invalid=true]:border-destructive/60 in-data-[invalid=true]:ring-destructive/10 dark:in-data-[invalid=true]:border-destructive dark:in-data-[invalid=true]:ring-destructive/20
103
111
  `
104
- },
105
- placeholder: {
106
- true: "text-muted-foreground",
107
- false: ""
108
- }
109
- },
112
+ },
113
+ placeholder: {
114
+ true: "text-muted-foreground",
115
+ false: ""
116
+ }
117
+ };
118
+ var buttonVariants = classVarianceAuthority.cva(
119
+ "cursor-pointer group whitespace-nowrap focus-visible:outline-hidden inline-flex items-center justify-center has-data-[arrow=true]:justify-between whitespace-nowrap text-sm font-medium ring-offset-background transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-60 [&_svg]:shrink-0",
120
+ {
121
+ variants: buttonVariantConfig,
110
122
  compoundVariants: [
111
123
  // Icons opacity for default mode
112
124
  {
@@ -392,6 +404,10 @@ function Button({
392
404
  underline,
393
405
  asChild = false,
394
406
  placeholder = false,
407
+ loading = false,
408
+ children,
409
+ disabled,
410
+ onClick,
395
411
  ...props
396
412
  }) {
397
413
  const Comp = asChild ? SlotPrimitive2__namespace.Slot : "button";
@@ -412,10 +428,19 @@ function Button({
412
428
  underline,
413
429
  className
414
430
  }),
415
- asChild && props.disabled && "pointer-events-none opacity-50"
431
+ asChild && (disabled || loading) && "pointer-events-none opacity-50",
432
+ loading && !asChild && !disabled && "pointer-events-none"
416
433
  ),
434
+ disabled: asChild ? void 0 : disabled,
435
+ "aria-busy": loading || void 0,
436
+ "aria-disabled": loading || void 0,
417
437
  ...selected && { "data-state": "open" },
418
- ...props
438
+ onClick: loading ? void 0 : onClick,
439
+ ...props,
440
+ children: asChild ? children : loading ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
441
+ /* @__PURE__ */ jsxRuntime.jsx(Spinner, {}),
442
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "contents [&>svg]:hidden", children })
443
+ ] }) : children
419
444
  }
420
445
  );
421
446
  }
@@ -3105,6 +3130,271 @@ function BadgeDot({ className, ...props }) {
3105
3130
  }
3106
3131
  );
3107
3132
  }
3133
+ function Breadcrumb({
3134
+ ...props
3135
+ }) {
3136
+ return /* @__PURE__ */ jsxRuntime.jsx("nav", { "data-slot": "breadcrumb", "aria-label": "breadcrumb", ...props });
3137
+ }
3138
+ function BreadcrumbList({ className, ...props }) {
3139
+ return /* @__PURE__ */ jsxRuntime.jsx(
3140
+ "ol",
3141
+ {
3142
+ "data-slot": "breadcrumb-list",
3143
+ className: cn(
3144
+ "flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground",
3145
+ className
3146
+ ),
3147
+ ...props
3148
+ }
3149
+ );
3150
+ }
3151
+ function BreadcrumbItem({ className, ...props }) {
3152
+ return /* @__PURE__ */ jsxRuntime.jsx(
3153
+ "li",
3154
+ {
3155
+ "data-slot": "breadcrumb-item",
3156
+ className: cn("inline-flex items-center gap-1.5", className),
3157
+ ...props
3158
+ }
3159
+ );
3160
+ }
3161
+ function BreadcrumbLink({
3162
+ asChild,
3163
+ className,
3164
+ ...props
3165
+ }) {
3166
+ const Comp = asChild ? radixUi.Slot.Slot : "a";
3167
+ return /* @__PURE__ */ jsxRuntime.jsx(
3168
+ Comp,
3169
+ {
3170
+ "data-slot": "breadcrumb-link",
3171
+ className: cn("transition-colors hover:text-foreground", className),
3172
+ ...props
3173
+ }
3174
+ );
3175
+ }
3176
+ function BreadcrumbPage({ className, ...props }) {
3177
+ return /* @__PURE__ */ jsxRuntime.jsx(
3178
+ "span",
3179
+ {
3180
+ "data-slot": "breadcrumb-page",
3181
+ role: "link",
3182
+ "aria-disabled": "true",
3183
+ "aria-current": "page",
3184
+ className: cn("font-normal text-foreground", className),
3185
+ ...props
3186
+ }
3187
+ );
3188
+ }
3189
+ var BreadcrumbSeparator = ({
3190
+ children,
3191
+ className,
3192
+ ...props
3193
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
3194
+ "li",
3195
+ {
3196
+ "data-slot": "breadcrumb-separator",
3197
+ role: "presentation",
3198
+ "aria-hidden": "true",
3199
+ className: cn("[&>svg]:w-3.5 [&>svg]:h-3.5", className),
3200
+ ...props,
3201
+ children: children ?? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "rtl:rotate-180" })
3202
+ }
3203
+ );
3204
+ var BreadcrumbEllipsis = ({
3205
+ className,
3206
+ ...props
3207
+ }) => /* @__PURE__ */ jsxRuntime.jsxs(
3208
+ "span",
3209
+ {
3210
+ "data-slot": "breadcrumb-ellipsis",
3211
+ role: "presentation",
3212
+ "aria-hidden": "true",
3213
+ className: cn("flex h-9 w-9 items-center justify-center", className),
3214
+ ...props,
3215
+ children: [
3216
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MoreHorizontal, { className: "h-4 w-4" }),
3217
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "More" })
3218
+ ]
3219
+ }
3220
+ );
3221
+ var tabsListVariantConfig = {
3222
+ variant: {
3223
+ default: "bg-accent p-1",
3224
+ button: "",
3225
+ line: "border-b border-border"
3226
+ },
3227
+ shape: {
3228
+ default: "",
3229
+ pill: ""
3230
+ },
3231
+ size: {
3232
+ lg: "gap-2.5",
3233
+ md: "gap-2",
3234
+ sm: "gap-1.5",
3235
+ xs: "gap-1"
3236
+ }
3237
+ };
3238
+ var tabsListVariants = classVarianceAuthority.cva("flex items-center shrink-0", {
3239
+ variants: tabsListVariantConfig,
3240
+ compoundVariants: [
3241
+ { variant: "default", size: "lg", className: "p-1.5 gap-2.5" },
3242
+ { variant: "default", size: "md", className: "p-1 gap-2" },
3243
+ { variant: "default", size: "sm", className: "p-1 gap-1.5" },
3244
+ { variant: "default", size: "xs", className: "p-1 gap-1" },
3245
+ {
3246
+ variant: "default",
3247
+ shape: "default",
3248
+ size: "lg",
3249
+ className: "rounded-lg"
3250
+ },
3251
+ {
3252
+ variant: "default",
3253
+ shape: "default",
3254
+ size: "md",
3255
+ className: "rounded-lg"
3256
+ },
3257
+ {
3258
+ variant: "default",
3259
+ shape: "default",
3260
+ size: "sm",
3261
+ className: "rounded-md"
3262
+ },
3263
+ {
3264
+ variant: "default",
3265
+ shape: "default",
3266
+ size: "xs",
3267
+ className: "rounded-md"
3268
+ },
3269
+ { variant: "line", size: "lg", className: "gap-9" },
3270
+ { variant: "line", size: "md", className: "gap-8" },
3271
+ { variant: "line", size: "sm", className: "gap-4" },
3272
+ { variant: "line", size: "xs", className: "gap-4" },
3273
+ {
3274
+ variant: "default",
3275
+ shape: "pill",
3276
+ className: "rounded-full [&_[role=tab]]:rounded-full"
3277
+ },
3278
+ {
3279
+ variant: "button",
3280
+ shape: "pill",
3281
+ className: "rounded-full [&_[role=tab]]:rounded-full"
3282
+ }
3283
+ ],
3284
+ defaultVariants: {
3285
+ variant: "default",
3286
+ size: "md"
3287
+ }
3288
+ });
3289
+ var tabsTriggerVariants = classVarianceAuthority.cva(
3290
+ "shrink-0 cursor-pointer whitespace-nowrap inline-flex justify-center items-center font-medium ring-offset-background transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:shrink-0 [&_svg]:text-muted-foreground [&:hover_svg]:text-primary [&[data-state=active]_svg]:text-primary",
3291
+ {
3292
+ variants: {
3293
+ variant: {
3294
+ default: "text-muted-foreground data-[state=active]:bg-background hover:text-foreground data-[state=active]:text-foreground data-[state=active]:shadow-xs data-[state=active]:shadow-black/5",
3295
+ button: "rounded-lg text-accent-foreground hover:text-foreground data-[state=active]:bg-accent data-[state=active]:text-foreground",
3296
+ line: "border-b-2 text-muted-foreground border-transparent data-[state=active]:border-primary hover:text-primary data-[state=active]:text-primary"
3297
+ },
3298
+ size: {
3299
+ lg: "gap-2.5 [&_svg]:size-5 text-sm",
3300
+ md: "gap-2 [&_svg]:size-4 text-sm",
3301
+ sm: "gap-1.5 [&_svg]:size-3.5 text-xs",
3302
+ xs: "gap-1 [&_svg]:size-3.5 text-xs"
3303
+ }
3304
+ },
3305
+ compoundVariants: [
3306
+ { variant: "default", size: "lg", className: "py-2.5 px-4 rounded-md" },
3307
+ { variant: "default", size: "md", className: "py-1.5 px-3 rounded-md" },
3308
+ { variant: "default", size: "sm", className: "py-1.5 px-2.5 rounded-sm" },
3309
+ { variant: "default", size: "xs", className: "py-1 px-2 rounded-sm" },
3310
+ { variant: "button", size: "lg", className: "py-3 px-4 rounded-lg" },
3311
+ { variant: "button", size: "md", className: "py-2.5 px-3 rounded-lg" },
3312
+ { variant: "button", size: "sm", className: "py-2 px-2.5 rounded-md" },
3313
+ { variant: "button", size: "xs", className: "py-1.5 px-2 rounded-md" },
3314
+ { variant: "line", size: "lg", className: "py-3" },
3315
+ { variant: "line", size: "md", className: "py-2.5" },
3316
+ { variant: "line", size: "sm", className: "py-2" },
3317
+ { variant: "line", size: "xs", className: "py-1.5" }
3318
+ ],
3319
+ defaultVariants: {
3320
+ variant: "default",
3321
+ size: "md"
3322
+ }
3323
+ }
3324
+ );
3325
+ var tabsContentVariants = classVarianceAuthority.cva(
3326
+ "mt-2.5 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
3327
+ {
3328
+ variants: {
3329
+ variant: {
3330
+ default: ""
3331
+ }
3332
+ },
3333
+ defaultVariants: {
3334
+ variant: "default"
3335
+ }
3336
+ }
3337
+ );
3338
+ var TabsContext = React__namespace.createContext({
3339
+ variant: "default",
3340
+ size: "md"
3341
+ });
3342
+ function Tabs({
3343
+ className,
3344
+ ...props
3345
+ }) {
3346
+ return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Tabs.Root, { "data-slot": "tabs", className, ...props });
3347
+ }
3348
+ function TabsList({
3349
+ className,
3350
+ variant = "default",
3351
+ shape = "default",
3352
+ size = "md",
3353
+ ...props
3354
+ }) {
3355
+ return /* @__PURE__ */ jsxRuntime.jsx(
3356
+ TabsContext.Provider,
3357
+ {
3358
+ value: { variant: variant || "default", size: size || "md" },
3359
+ children: /* @__PURE__ */ jsxRuntime.jsx(
3360
+ radixUi.Tabs.List,
3361
+ {
3362
+ "data-slot": "tabs-list",
3363
+ className: cn(tabsListVariants({ variant, shape, size }), className),
3364
+ ...props
3365
+ }
3366
+ )
3367
+ }
3368
+ );
3369
+ }
3370
+ function TabsTrigger({
3371
+ className,
3372
+ ...props
3373
+ }) {
3374
+ const { variant, size } = React__namespace.useContext(TabsContext);
3375
+ return /* @__PURE__ */ jsxRuntime.jsx(
3376
+ radixUi.Tabs.Trigger,
3377
+ {
3378
+ "data-slot": "tabs-trigger",
3379
+ className: cn(tabsTriggerVariants({ variant, size }), className),
3380
+ ...props
3381
+ }
3382
+ );
3383
+ }
3384
+ function TabsContent({
3385
+ className,
3386
+ variant,
3387
+ ...props
3388
+ }) {
3389
+ return /* @__PURE__ */ jsxRuntime.jsx(
3390
+ radixUi.Tabs.Content,
3391
+ {
3392
+ "data-slot": "tabs-content",
3393
+ className: cn(tabsContentVariants({ variant }), className),
3394
+ ...props
3395
+ }
3396
+ );
3397
+ }
3108
3398
  var CardContext = React__namespace.createContext({
3109
3399
  variant: "default"
3110
3400
  // Default value
@@ -3864,9 +4154,11 @@ function FieldContent({ className, ...props }) {
3864
4154
  }
3865
4155
  function FieldLabel({
3866
4156
  className,
4157
+ required = false,
4158
+ children,
3867
4159
  ...props
3868
4160
  }) {
3869
- return /* @__PURE__ */ jsxRuntime.jsx(
4161
+ return /* @__PURE__ */ jsxRuntime.jsxs(
3870
4162
  Label2,
3871
4163
  {
3872
4164
  "data-slot": "field-label",
@@ -3876,7 +4168,11 @@ function FieldLabel({
3876
4168
  "has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10",
3877
4169
  className
3878
4170
  ),
3879
- ...props
4171
+ ...props,
4172
+ children: [
4173
+ children,
4174
+ required && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-destructive", children: "*" })
4175
+ ]
3880
4176
  }
3881
4177
  );
3882
4178
  }
@@ -3971,6 +4267,177 @@ function FieldError({
3971
4267
  }
3972
4268
  );
3973
4269
  }
4270
+ var SwitchContext = React__namespace.createContext({
4271
+ permanent: false
4272
+ });
4273
+ var useSwitchContext = () => {
4274
+ const context = React__namespace.useContext(SwitchContext);
4275
+ if (!context) {
4276
+ throw new Error("SwitchIndicator must be used within a Switch component");
4277
+ }
4278
+ return context;
4279
+ };
4280
+ var switchShapes = {
4281
+ pill: "rounded-full",
4282
+ square: "rounded-md"
4283
+ };
4284
+ var switchSizes = {
4285
+ xs: "h-4 w-7",
4286
+ sm: "h-5 w-8",
4287
+ md: "h-6 w-10",
4288
+ lg: "h-8 w-14",
4289
+ xl: "h-9 w-16"
4290
+ };
4291
+ var switchVariants = classVarianceAuthority.cva(
4292
+ `
4293
+ relative peer inline-flex shrink-0 cursor-pointer items-center rounded-full transition-colors
4294
+ focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background
4295
+ disabled:cursor-not-allowed disabled:opacity-50 data-[state=unchecked]:bg-input
4296
+ aria-invalid:border aria-invalid:border-destructive/60 aria-invalid:ring-destructive/10 dark:aria-invalid:border-destructive dark:aria-invalid:ring-destructive/20
4297
+ [[data-invalid=true]_&]:border [[data-invalid=true]_&]:border-destructive/60 [[data-invalid=true]_&]:ring-destructive/10 dark:[[data-invalid=true]_&]:border-destructive dark:[[data-invalid=true]_&]:ring-destructive/20
4298
+ `,
4299
+ {
4300
+ variants: {
4301
+ shape: switchShapes,
4302
+ size: switchSizes,
4303
+ permanent: {
4304
+ true: "bg-input",
4305
+ false: "data-[state=checked]:bg-primary"
4306
+ }
4307
+ },
4308
+ defaultVariants: {
4309
+ shape: "pill",
4310
+ permanent: false,
4311
+ size: "md"
4312
+ }
4313
+ }
4314
+ );
4315
+ var switchThumbVariants = classVarianceAuthority.cva(
4316
+ "pointer-events-none block bg-white w-1/2 h-[calc(100%-4px)] shadow-lg ring-0 transition-transform start-0 data-[state=unchecked]:translate-x-[2px] data-[state=checked]:translate-x-[calc(100%-2px)] rtl:data-[state=unchecked]:-translate-x-[2px] rtl:data-[state=checked]:-translate-x-[calc(100%-2px)]",
4317
+ {
4318
+ variants: {
4319
+ shape: {
4320
+ pill: "rounded-full",
4321
+ square: "rounded-md"
4322
+ },
4323
+ size: {
4324
+ xs: "",
4325
+ sm: "",
4326
+ md: "",
4327
+ lg: "",
4328
+ xl: ""
4329
+ }
4330
+ },
4331
+ compoundVariants: [
4332
+ {
4333
+ shape: "square",
4334
+ size: "xs",
4335
+ className: "rounded-sm"
4336
+ }
4337
+ ],
4338
+ defaultVariants: {
4339
+ shape: "pill",
4340
+ size: "md"
4341
+ }
4342
+ }
4343
+ );
4344
+ var switchIndicatorVariants = classVarianceAuthority.cva(
4345
+ "text-sm font-medium absolute mx-[2px] top-1/2 w-1/2 -translate-y-1/2 flex pointer-events-none items-center justify-center text-center transition-transform duration-300 [transition-timing-function:cubic-bezier(0.16,1,0.3,1)]",
4346
+ {
4347
+ variants: {
4348
+ state: {
4349
+ on: "start-0",
4350
+ off: "end-0"
4351
+ },
4352
+ permanent: {
4353
+ true: "",
4354
+ false: ""
4355
+ }
4356
+ },
4357
+ compoundVariants: [
4358
+ {
4359
+ state: "on",
4360
+ permanent: false,
4361
+ className: "text-primary-foreground peer-data-[state=unchecked]:invisible peer-data-[state=unchecked]:translate-x-full rtl:peer-data-[state=unchecked]:-translate-x-full"
4362
+ },
4363
+ {
4364
+ state: "off",
4365
+ permanent: false,
4366
+ className: "peer-data-[state=checked]:invisible -translate-x-full rtl:translate-x-full peer-data-[state=unchecked]:translate-x-0"
4367
+ },
4368
+ {
4369
+ state: "on",
4370
+ permanent: true,
4371
+ className: "start-0"
4372
+ },
4373
+ {
4374
+ state: "off",
4375
+ permanent: true,
4376
+ className: "end-0"
4377
+ }
4378
+ ],
4379
+ defaultVariants: {
4380
+ state: "off",
4381
+ permanent: false
4382
+ }
4383
+ }
4384
+ );
4385
+ function SwitchWrapper({
4386
+ className,
4387
+ children,
4388
+ permanent = false,
4389
+ ...props
4390
+ }) {
4391
+ return /* @__PURE__ */ jsxRuntime.jsx(SwitchContext.Provider, { value: { permanent }, children: /* @__PURE__ */ jsxRuntime.jsx(
4392
+ "div",
4393
+ {
4394
+ "data-slot": "switch-wrapper",
4395
+ className: cn("relative inline-flex items-center", className),
4396
+ ...props,
4397
+ children
4398
+ }
4399
+ ) });
4400
+ }
4401
+ function Switch({
4402
+ className,
4403
+ thumbClassName = "",
4404
+ shape,
4405
+ size,
4406
+ ...props
4407
+ }) {
4408
+ const context = useSwitchContext();
4409
+ const permanent = context?.permanent ?? false;
4410
+ return /* @__PURE__ */ jsxRuntime.jsx(
4411
+ radixUi.Switch.Root,
4412
+ {
4413
+ "data-slot": "switch",
4414
+ className: cn(switchVariants({ shape, size, permanent }), className),
4415
+ ...props,
4416
+ children: /* @__PURE__ */ jsxRuntime.jsx(
4417
+ radixUi.Switch.Thumb,
4418
+ {
4419
+ className: cn(switchThumbVariants({ shape, size }), thumbClassName)
4420
+ }
4421
+ )
4422
+ }
4423
+ );
4424
+ }
4425
+ function SwitchIndicator({
4426
+ className,
4427
+ state,
4428
+ ...props
4429
+ }) {
4430
+ const context = useSwitchContext();
4431
+ const permanent = context?.permanent ?? false;
4432
+ return /* @__PURE__ */ jsxRuntime.jsx(
4433
+ "span",
4434
+ {
4435
+ "data-slot": "switch-indicator",
4436
+ className: cn(switchIndicatorVariants({ state, permanent }), className),
4437
+ ...props
4438
+ }
4439
+ );
4440
+ }
3974
4441
  function ScrollArea({
3975
4442
  className,
3976
4443
  viewportClassName,
@@ -4161,6 +4628,92 @@ function Scrollspy({
4161
4628
  ]);
4162
4629
  return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-slot": "scrollspy", className, ref: selfRef, children });
4163
4630
  }
4631
+ function AspectRatio(props) {
4632
+ return /* @__PURE__ */ jsxRuntime.jsx(radixUi.AspectRatio.Root, { "data-slot": "aspect-ratio", ...props });
4633
+ }
4634
+ var headings = {
4635
+ h1: "h1",
4636
+ h2: "h2",
4637
+ h3: "h3",
4638
+ h4: "h4",
4639
+ h5: "h5",
4640
+ h6: "h6"
4641
+ };
4642
+ function Toolbar({
4643
+ className,
4644
+ ...props
4645
+ }) {
4646
+ return /* @__PURE__ */ jsxRuntime.jsx(
4647
+ "div",
4648
+ {
4649
+ "data-slot": "toolbar",
4650
+ className: cn(
4651
+ "flex items-center justify-between grow gap-2.5 pb-5",
4652
+ className
4653
+ ),
4654
+ ...props
4655
+ }
4656
+ );
4657
+ }
4658
+ function ToolbarHeading({
4659
+ className,
4660
+ ...props
4661
+ }) {
4662
+ return /* @__PURE__ */ jsxRuntime.jsx(
4663
+ "div",
4664
+ {
4665
+ "data-slot": "toolbar-heading",
4666
+ className: cn("flex flex-col flex-wrap gap-px", className),
4667
+ ...props
4668
+ }
4669
+ );
4670
+ }
4671
+ function ToolbarTitle({
4672
+ className,
4673
+ as: Component = "h1",
4674
+ ...props
4675
+ }) {
4676
+ return /* @__PURE__ */ jsxRuntime.jsx(
4677
+ Component,
4678
+ {
4679
+ "data-slot": "toolbar-title",
4680
+ className: cn("font-semibold text-foreground text-lg", className),
4681
+ ...props
4682
+ }
4683
+ );
4684
+ }
4685
+ function ToolbarDescription({
4686
+ className,
4687
+ ...props
4688
+ }) {
4689
+ return /* @__PURE__ */ jsxRuntime.jsx(
4690
+ "div",
4691
+ {
4692
+ "data-slot": "toolbar-description",
4693
+ className: cn(
4694
+ "flex items-center gap-2 text-sm font-normal text-secondary-foreground",
4695
+ className
4696
+ ),
4697
+ ...props
4698
+ }
4699
+ );
4700
+ }
4701
+ function ToolbarActions({
4702
+ className,
4703
+ ...props
4704
+ }) {
4705
+ return /* @__PURE__ */ jsxRuntime.jsx(
4706
+ "div",
4707
+ {
4708
+ "data-slot": "toolbar-actions",
4709
+ className: cn(
4710
+ "flex items-center flex-wrap gap-1.5 lg:gap-3.5",
4711
+ className
4712
+ ),
4713
+ ...props
4714
+ }
4715
+ );
4716
+ }
4164
4717
  var MOBILE_BREAKPOINT = 992;
4165
4718
  function useIsMobile() {
4166
4719
  const [isMobile, setIsMobile] = React__namespace.useState(
@@ -4224,6 +4777,7 @@ exports.AlertDialogTrigger = AlertDialogTrigger;
4224
4777
  exports.AlertIcon = AlertIcon;
4225
4778
  exports.AlertTitle = AlertTitle;
4226
4779
  exports.AlertToolbar = AlertToolbar;
4780
+ exports.AspectRatio = AspectRatio;
4227
4781
  exports.Avatar = Avatar;
4228
4782
  exports.AvatarFallback = AvatarFallback;
4229
4783
  exports.AvatarGroup = AvatarGroup;
@@ -4235,6 +4789,13 @@ exports.AvatarStatus = AvatarStatus;
4235
4789
  exports.Badge = Badge;
4236
4790
  exports.BadgeButton = BadgeButton;
4237
4791
  exports.BadgeDot = BadgeDot;
4792
+ exports.Breadcrumb = Breadcrumb;
4793
+ exports.BreadcrumbEllipsis = BreadcrumbEllipsis;
4794
+ exports.BreadcrumbItem = BreadcrumbItem;
4795
+ exports.BreadcrumbLink = BreadcrumbLink;
4796
+ exports.BreadcrumbList = BreadcrumbList;
4797
+ exports.BreadcrumbPage = BreadcrumbPage;
4798
+ exports.BreadcrumbSeparator = BreadcrumbSeparator;
4238
4799
  exports.Button = Button;
4239
4800
  exports.ButtonArrow = ButtonArrow;
4240
4801
  exports.Card = Card;
@@ -4355,14 +4916,32 @@ exports.SheetPortal = SheetPortal;
4355
4916
  exports.SheetTitle = SheetTitle;
4356
4917
  exports.SheetTrigger = SheetTrigger;
4357
4918
  exports.Skeleton = Skeleton;
4919
+ exports.Spinner = Spinner;
4920
+ exports.Switch = Switch;
4921
+ exports.SwitchIndicator = SwitchIndicator;
4922
+ exports.SwitchWrapper = SwitchWrapper;
4923
+ exports.Tabs = Tabs;
4924
+ exports.TabsContent = TabsContent;
4925
+ exports.TabsList = TabsList;
4926
+ exports.TabsTrigger = TabsTrigger;
4927
+ exports.Toolbar = Toolbar;
4928
+ exports.ToolbarActions = ToolbarActions;
4929
+ exports.ToolbarDescription = ToolbarDescription;
4930
+ exports.ToolbarHeading = ToolbarHeading;
4931
+ exports.ToolbarTitle = ToolbarTitle;
4358
4932
  exports.avatarStatusVariants = avatarStatusVariants;
4359
4933
  exports.badgeVariants = badgeVariants;
4934
+ exports.buttonVariantConfig = buttonVariantConfig;
4360
4935
  exports.buttonVariants = buttonVariants;
4361
4936
  exports.cn = cn;
4937
+ exports.headings = headings;
4362
4938
  exports.inputAddonVariants = inputAddonVariants;
4363
4939
  exports.inputVariants = inputVariants;
4364
4940
  exports.labelVariants = labelVariants;
4365
4941
  exports.selectTriggerVariants = selectTriggerVariants;
4942
+ exports.switchShapes = switchShapes;
4943
+ exports.switchSizes = switchSizes;
4944
+ exports.tabsListVariantConfig = tabsListVariantConfig;
4366
4945
  exports.useCopyToClipboard = useCopyToClipboard;
4367
4946
  exports.useDataGrid = useDataGrid;
4368
4947
  exports.useIsMobile = useIsMobile;