@7onic-ui/react 0.1.1 → 0.2.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
@@ -2945,517 +2945,8 @@ var Avatar = Object.assign(AvatarRoot, {
2945
2945
  Group: AvatarGroup
2946
2946
  });
2947
2947
 
2948
- // src/components/ui/chart.tsx
2949
- import * as React20 from "react";
2950
- import * as RechartsPrimitive from "recharts";
2951
- var THEMES = { light: "", dark: ".dark" };
2952
- var ChartContext = React20.createContext(null);
2953
- function useChart() {
2954
- const context = React20.useContext(ChartContext);
2955
- if (!context) {
2956
- throw new Error("useChart must be used within a <ChartContainer />");
2957
- }
2958
- return context;
2959
- }
2960
- function ChartContainer({
2961
- id,
2962
- className,
2963
- children,
2964
- config,
2965
- hoverFade = false,
2966
- ...props
2967
- }) {
2968
- const uniqueId = React20.useId();
2969
- const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
2970
- const [activeIndex, setActiveIndex] = React20.useState(null);
2971
- const [activeDataKey, setActiveDataKey] = React20.useState(null);
2972
- return /* @__PURE__ */ React20.createElement(ChartContext.Provider, { value: { config, hoverFade, activeIndex, setActiveIndex, activeDataKey, setActiveDataKey } }, /* @__PURE__ */ React20.createElement(
2973
- "div",
2974
- {
2975
- "data-slot": "chart",
2976
- "data-chart": chartId,
2977
- onMouseLeave: hoverFade ? () => {
2978
- setActiveIndex(null);
2979
- setActiveDataKey(null);
2980
- } : void 0,
2981
- className: cn(
2982
- "flex aspect-video w-full justify-center text-xs outline-none [&_*]:outline-none",
2983
- // Responsive axis tick font-size — consumed by ChartXAxis / ChartYAxis via var()
2984
- "[--chart-axis-fs:var(--font-size-2xs)] sm:[--chart-axis-fs:var(--font-size-xs)]",
2985
- // Recharts element overrides — use arbitrary properties for v3/v4 compat
2986
- "[&_.recharts-cartesian-axis-tick_text]:[fill:var(--color-text-muted)]",
2987
- "[&_.recharts-cartesian-grid_line[stroke='#ccc']]:[stroke:var(--color-border)]",
2988
- "[&_.recharts-cartesian-grid_line]:[stroke-dasharray:3_3]",
2989
- "[&_.recharts-curve.recharts-tooltip-cursor]:[stroke:var(--color-border)]",
2990
- "[&_.recharts-dot[stroke='#fff']]:stroke-transparent",
2991
- "[&_.recharts-layer]:outline-none",
2992
- "[&_.recharts-polar-grid_[stroke='#ccc']]:[stroke:var(--color-border)]",
2993
- "[&_.recharts-radial-bar-background-sector]:[fill:var(--color-background-muted)]",
2994
- "[&_.recharts-rectangle.recharts-tooltip-cursor]:[fill:transparent]",
2995
- "[&_.recharts-reference-line_[stroke='#ccc']]:[stroke:var(--color-border)]",
2996
- "[&_.recharts-sector]:outline-none",
2997
- "[&_.recharts-sector[stroke='#fff']]:stroke-transparent",
2998
- "[&_.recharts-surface]:outline-none",
2999
- className
3000
- ),
3001
- ...props
3002
- },
3003
- /* @__PURE__ */ React20.createElement(ChartStyle, { id: chartId, config }),
3004
- /* @__PURE__ */ React20.createElement(RechartsPrimitive.ResponsiveContainer, null, children)
3005
- ));
3006
- }
3007
- var CHART_TOOLTIP_KEYFRAME = "@keyframes chart-tooltip-in{from{opacity:0}to{opacity:1}}";
3008
- var ChartStyle = ({ id, config }) => {
3009
- const colorConfig = Object.entries(config).filter(
3010
- ([, config2]) => config2.theme || config2.color
3011
- );
3012
- const colorCss = colorConfig.length ? Object.entries(THEMES).map(
3013
- ([theme, prefix]) => `
3014
- ${prefix} [data-chart=${id}] {
3015
- ${colorConfig.map(([key, itemConfig]) => {
3016
- const color = itemConfig.theme?.[theme] || itemConfig.color;
3017
- return color ? ` --color-${key}: ${color};` : null;
3018
- }).join("\n")}
3019
- }
3020
- `
3021
- ).join("\n") : "";
3022
- return /* @__PURE__ */ React20.createElement(
3023
- "style",
3024
- {
3025
- dangerouslySetInnerHTML: {
3026
- __html: CHART_TOOLTIP_KEYFRAME + colorCss
3027
- }
3028
- }
3029
- );
3030
- };
3031
- var CHART_HOVER_FADE_OPACITY = 0.35;
3032
- var CHART_FADE_TRANSITION = { transition: "fill-opacity var(--duration-fast) ease-out, stroke-opacity var(--duration-fast) ease-out" };
3033
- var CHART_BAR_RADIUS_MAP = {
3034
- none: 0,
3035
- // --radius-none: 0px
3036
- sm: 2,
3037
- // --radius-sm: 2px
3038
- base: 4,
3039
- // --radius-base: 4px
3040
- md: 6,
3041
- // --radius-md: 6px
3042
- lg: 8
3043
- // --radius-lg: 8px
3044
- };
3045
- function ChartBar({
3046
- radius = "none",
3047
- layout = "vertical",
3048
- stackPosition = "top",
3049
- variant = "solid",
3050
- fill,
3051
- stackId,
3052
- ...props
3053
- }) {
3054
- const { hoverFade, activeIndex, setActiveIndex } = useChart();
3055
- const r = CHART_BAR_RADIUS_MAP[radius];
3056
- const isStacked = !!stackId || stackPosition === "bottom";
3057
- const appliedRadius = r === 0 ? 0 : variant === "outline" && !isStacked ? r : layout === "horizontal" && stackPosition === "bottom" ? 0 : layout === "horizontal" ? [0, r, r, 0] : stackPosition === "bottom" ? 0 : [r, r, 0, 0];
3058
- const outlineShape = React20.useCallback((shapeProps) => {
3059
- const x = shapeProps.x ?? 0;
3060
- const y = shapeProps.y ?? 0;
3061
- const width = shapeProps.width ?? 0;
3062
- const height = shapeProps.height ?? 0;
3063
- if (!width || !height || width <= 0 || height <= 0) return /* @__PURE__ */ React20.createElement("g", null);
3064
- const sw = 2;
3065
- const inset = sw / 2;
3066
- const rx = typeof appliedRadius === "number" ? Math.max(0, appliedRadius - inset) : 0;
3067
- const fadeMultiplier = hoverFade && activeIndex !== null && shapeProps.index !== activeIndex ? CHART_HOVER_FADE_OPACITY : 1;
3068
- return /* @__PURE__ */ React20.createElement(
3069
- "rect",
3070
- {
3071
- x: x + inset,
3072
- y: y + inset,
3073
- width: Math.max(0, width - sw),
3074
- height: Math.max(0, height - sw),
3075
- rx,
3076
- fill,
3077
- fillOpacity: 0.4 * fadeMultiplier,
3078
- stroke: fill,
3079
- strokeOpacity: fadeMultiplier,
3080
- strokeWidth: sw,
3081
- style: hoverFade ? CHART_FADE_TRANSITION : void 0
3082
- }
3083
- );
3084
- }, [appliedRadius, fill, hoverFade, activeIndex]);
3085
- const solidHoverShape = React20.useCallback((shapeProps) => {
3086
- const opacity = activeIndex === null ? 1 : shapeProps.index === activeIndex ? 1 : CHART_HOVER_FADE_OPACITY;
3087
- return /* @__PURE__ */ React20.createElement(
3088
- RechartsPrimitive.Rectangle,
3089
- {
3090
- ...shapeProps,
3091
- fillOpacity: opacity,
3092
- style: CHART_FADE_TRANSITION
3093
- }
3094
- );
3095
- }, [activeIndex]);
3096
- const useOutline = variant === "outline" && !isStacked;
3097
- const needsHoverShape = hoverFade && variant === "solid" && !useOutline;
3098
- return /* @__PURE__ */ React20.createElement(
3099
- RechartsPrimitive.Bar,
3100
- {
3101
- radius: appliedRadius,
3102
- fill,
3103
- stackId,
3104
- ...hoverFade && { isAnimationActive: false },
3105
- ...useOutline && { shape: outlineShape },
3106
- ...needsHoverShape && { shape: solidHoverShape },
3107
- ...hoverFade && { onMouseEnter: (_, index) => setActiveIndex(index) },
3108
- ...props
3109
- }
3110
- );
3111
- }
3112
- function ChartTooltip(props) {
3113
- return /* @__PURE__ */ React20.createElement(RechartsPrimitive.Tooltip, { animationDuration: 0, ...props });
3114
- }
3115
- function ChartTooltipContent({
3116
- active,
3117
- payload,
3118
- className,
3119
- indicator = "dot",
3120
- hideLabel = false,
3121
- hideIndicator = false,
3122
- label,
3123
- labelFormatter,
3124
- labelClassName,
3125
- formatter,
3126
- color,
3127
- nameKey,
3128
- labelKey
3129
- }) {
3130
- const { config } = useChart();
3131
- const tooltipLabel = React20.useMemo(() => {
3132
- if (hideLabel || !payload?.length) {
3133
- return null;
3134
- }
3135
- const [item] = payload;
3136
- const key = `${labelKey || item?.dataKey || item?.name || "value"}`;
3137
- const itemConfig = getPayloadConfigFromPayload(config, item, key);
3138
- const value = !labelKey && typeof label === "string" ? config[label]?.label || label : itemConfig?.label;
3139
- if (labelFormatter) {
3140
- return /* @__PURE__ */ React20.createElement("div", { className: cn("font-semibold", labelClassName) }, labelFormatter(value, payload));
3141
- }
3142
- if (!value) {
3143
- return null;
3144
- }
3145
- return /* @__PURE__ */ React20.createElement("div", { className: cn("font-semibold", labelClassName) }, value);
3146
- }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);
3147
- if (!active || !payload?.length) {
3148
- return null;
3149
- }
3150
- const nestLabel = payload.length === 1 && indicator !== "dot";
3151
- return /* @__PURE__ */ React20.createElement(
3152
- "div",
3153
- {
3154
- className: cn(
3155
- "grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border bg-background px-2.5 py-1.5 text-xs shadow-xl",
3156
- className
3157
- ),
3158
- style: { animation: "chart-tooltip-in var(--duration-slow) ease-out" }
3159
- },
3160
- !nestLabel ? tooltipLabel : null,
3161
- /* @__PURE__ */ React20.createElement("div", { className: "grid gap-1.5" }, payload.filter((item) => item.type !== "none").map((item, index) => {
3162
- const key = `${nameKey || item.name || item.dataKey || "value"}`;
3163
- const itemConfig = getPayloadConfigFromPayload(config, item, key);
3164
- const indicatorColor = color || item.payload?.fill || item.color;
3165
- return /* @__PURE__ */ React20.createElement(
3166
- "div",
3167
- {
3168
- key: item.dataKey,
3169
- className: cn(
3170
- "flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-text-muted",
3171
- indicator === "dot" && "items-center"
3172
- )
3173
- },
3174
- formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ React20.createElement(React20.Fragment, null, itemConfig?.icon ? /* @__PURE__ */ React20.createElement(itemConfig.icon, null) : !hideIndicator && /* @__PURE__ */ React20.createElement(
3175
- "div",
3176
- {
3177
- className: cn(
3178
- "shrink-0 rounded-sm",
3179
- {
3180
- "h-2.5 w-2.5": indicator === "dot",
3181
- "w-1": indicator === "line",
3182
- "w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
3183
- "my-0.5": nestLabel && indicator === "dashed"
3184
- }
3185
- ),
3186
- style: {
3187
- backgroundColor: indicator === "dashed" ? "transparent" : indicatorColor,
3188
- borderColor: indicatorColor
3189
- }
3190
- }
3191
- ), /* @__PURE__ */ React20.createElement(
3192
- "div",
3193
- {
3194
- className: cn(
3195
- "flex flex-1 justify-between leading-none",
3196
- nestLabel ? "items-end" : "items-center"
3197
- )
3198
- },
3199
- /* @__PURE__ */ React20.createElement("div", { className: "grid gap-1.5" }, nestLabel ? tooltipLabel : null, /* @__PURE__ */ React20.createElement("span", { className: "text-text-muted" }, itemConfig?.label || item.name)),
3200
- item.value && /* @__PURE__ */ React20.createElement("span", { className: "font-mono font-semibold text-foreground tabular-nums" }, item.value.toLocaleString())
3201
- ))
3202
- );
3203
- }))
3204
- );
3205
- }
3206
- var ChartLegend = RechartsPrimitive.Legend;
3207
- function ChartLegendContent({
3208
- className,
3209
- hideIcon = false,
3210
- payload,
3211
- verticalAlign = "bottom",
3212
- align = "center",
3213
- layout = "horizontal",
3214
- nameKey
3215
- }) {
3216
- const { config } = useChart();
3217
- if (!payload?.length) {
3218
- return null;
3219
- }
3220
- const isVertical = layout === "vertical";
3221
- return /* @__PURE__ */ React20.createElement(
3222
- "div",
3223
- {
3224
- className: cn(
3225
- "flex gap-4",
3226
- isVertical ? "flex-col items-start gap-1.5" : [
3227
- "items-center",
3228
- align === "left" ? "justify-start" : align === "right" ? "justify-end" : "justify-center",
3229
- verticalAlign === "top" ? "pb-3" : "pt-3"
3230
- ],
3231
- className
3232
- )
3233
- },
3234
- payload.filter((item) => item.type !== "none").map((item) => {
3235
- const key = `${nameKey || item.dataKey || "value"}`;
3236
- const itemConfig = getPayloadConfigFromPayload(config, item, key);
3237
- return /* @__PURE__ */ React20.createElement(
3238
- "div",
3239
- {
3240
- key: item.value,
3241
- className: "flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-text-muted"
3242
- },
3243
- itemConfig?.icon && !hideIcon ? /* @__PURE__ */ React20.createElement(itemConfig.icon, null) : /* @__PURE__ */ React20.createElement(
3244
- "div",
3245
- {
3246
- className: "h-2 w-2 shrink-0 rounded-sm",
3247
- style: {
3248
- backgroundColor: item.color
3249
- }
3250
- }
3251
- ),
3252
- /* @__PURE__ */ React20.createElement("span", { className: "text-foreground" }, itemConfig?.label)
3253
- );
3254
- })
3255
- );
3256
- }
3257
- function getPayloadConfigFromPayload(config, payload, key) {
3258
- if (typeof payload !== "object" || payload === null) {
3259
- return void 0;
3260
- }
3261
- const payloadPayload = "payload" in payload && typeof payload.payload === "object" && payload.payload !== null ? payload.payload : void 0;
3262
- let configLabelKey = key;
3263
- if (key in payload && typeof payload[key] === "string") {
3264
- configLabelKey = payload[key];
3265
- } else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === "string") {
3266
- configLabelKey = payloadPayload[key];
3267
- }
3268
- return configLabelKey in config ? config[configLabelKey] : config[key];
3269
- }
3270
- var CHART_AXIS_TICK_STYLE = { style: { fontSize: "var(--chart-axis-fs)", fill: "var(--color-text-subtle)" } };
3271
- var CHART_XAXIS_PADDING = { left: 16, right: 16 };
3272
- function ChartXAxis({ tick, padding, ...props }) {
3273
- return /* @__PURE__ */ React20.createElement(RechartsPrimitive.XAxis, { tick: tick ?? CHART_AXIS_TICK_STYLE, padding: padding ?? CHART_XAXIS_PADDING, ...props });
3274
- }
3275
- function ChartYAxis({ tick, width = "auto", ...props }) {
3276
- return /* @__PURE__ */ React20.createElement(RechartsPrimitive.YAxis, { tick: tick ?? CHART_AXIS_TICK_STYLE, width, ...props });
3277
- }
3278
- var CHART_LINE_DASH = "5 5";
3279
- var CHART_DOT_PROPS = { r: 3, strokeWidth: 2 };
3280
- var CHART_ACTIVE_DOT_PROPS = { r: 5, strokeWidth: 2 };
3281
- function ChartLine({
3282
- type = "monotone",
3283
- variant = "solid",
3284
- dot: showDot = true,
3285
- activeDot: showActiveDot = true,
3286
- stroke,
3287
- dataKey,
3288
- ...props
3289
- }) {
3290
- const { hoverFade, activeDataKey, setActiveDataKey } = useChart();
3291
- const isFaded = hoverFade && activeDataKey !== null && activeDataKey !== dataKey;
3292
- const opacity = isFaded ? CHART_HOVER_FADE_OPACITY : 1;
3293
- const dotProps = showDot ? variant === "dashed" ? { ...CHART_DOT_PROPS, strokeDasharray: "0" } : CHART_DOT_PROPS : false;
3294
- const activeDotProps = showActiveDot ? variant === "dashed" ? { ...CHART_ACTIVE_DOT_PROPS, strokeDasharray: "0" } : CHART_ACTIVE_DOT_PROPS : false;
3295
- return /* @__PURE__ */ React20.createElement(
3296
- RechartsPrimitive.Line,
3297
- {
3298
- type,
3299
- dataKey,
3300
- stroke,
3301
- strokeWidth: 2,
3302
- strokeDasharray: variant === "dashed" ? CHART_LINE_DASH : void 0,
3303
- dot: dotProps,
3304
- activeDot: activeDotProps,
3305
- strokeOpacity: opacity,
3306
- ...hoverFade && { isAnimationActive: false },
3307
- ...hoverFade && { onMouseEnter: () => setActiveDataKey(dataKey) },
3308
- style: hoverFade ? { transition: "stroke-opacity var(--duration-fast) ease-out" } : void 0,
3309
- ...props
3310
- }
3311
- );
3312
- }
3313
- var CHART_AREA_DEFAULT_OPACITY = 0.4;
3314
- function ChartArea({
3315
- type = "monotone",
3316
- variant = "solid",
3317
- dot: showDot = true,
3318
- activeDot: showActiveDot = true,
3319
- fillOpacity = CHART_AREA_DEFAULT_OPACITY,
3320
- stroke,
3321
- fill,
3322
- dataKey,
3323
- ...props
3324
- }) {
3325
- const { hoverFade, activeDataKey, setActiveDataKey } = useChart();
3326
- const isFaded = hoverFade && activeDataKey !== null && activeDataKey !== dataKey;
3327
- const opacity = isFaded ? CHART_HOVER_FADE_OPACITY : 1;
3328
- const dotProps = showDot ? CHART_DOT_PROPS : false;
3329
- const activeDotProps = showActiveDot ? CHART_ACTIVE_DOT_PROPS : false;
3330
- const gradientId = `area-gradient-${String(dataKey)}`;
3331
- const effectiveFill = variant === "gradient" ? `url(#${gradientId})` : fill || stroke;
3332
- const effectiveFillOpacity = variant === "gradient" ? 1 : fillOpacity;
3333
- return /* @__PURE__ */ React20.createElement(React20.Fragment, null, variant === "gradient" && /* @__PURE__ */ React20.createElement("defs", null, /* @__PURE__ */ React20.createElement("linearGradient", { id: gradientId, x1: "0", y1: "0", x2: "0", y2: "1" }, /* @__PURE__ */ React20.createElement("stop", { offset: "5%", stopColor: fill || stroke, stopOpacity: 0.8 }), /* @__PURE__ */ React20.createElement("stop", { offset: "95%", stopColor: fill || stroke, stopOpacity: 0 }))), /* @__PURE__ */ React20.createElement(
3334
- RechartsPrimitive.Area,
3335
- {
3336
- type,
3337
- dataKey,
3338
- stroke,
3339
- fill: effectiveFill,
3340
- fillOpacity: effectiveFillOpacity * opacity,
3341
- strokeWidth: 2,
3342
- dot: dotProps,
3343
- activeDot: activeDotProps,
3344
- strokeOpacity: opacity,
3345
- ...hoverFade && { isAnimationActive: false },
3346
- ...hoverFade && { onMouseEnter: () => setActiveDataKey(dataKey) },
3347
- style: hoverFade ? { transition: "fill-opacity var(--duration-fast) ease-out, stroke-opacity var(--duration-fast) ease-out" } : void 0,
3348
- ...props
3349
- }
3350
- ));
3351
- }
3352
- var CHART_PIE_ACTIVE_OFFSET = 8;
3353
- var CHART_PIE_DONUT_INNER_RADIUS = 60;
3354
- var CHART_PIE_LABEL_RADIAL = 16;
3355
- var CHART_PIE_LABEL_HORIZ = 20;
3356
- var CHART_PIE_SKIP_ANGLE = 15;
3357
- function ChartPie({
3358
- variant = "pie",
3359
- label: labelMode = "none",
3360
- labelContent = "value",
3361
- activeShape: showActiveShape = true,
3362
- innerRadius,
3363
- paddingAngle = 0,
3364
- cornerRadius = 0,
3365
- startAngle = 90,
3366
- endAngle = -270,
3367
- ...props
3368
- }) {
3369
- const resolvedInnerRadius = innerRadius ?? (variant === "donut" ? CHART_PIE_DONUT_INNER_RADIUS : 0);
3370
- const activeShapeConfig = showActiveShape ? (props2) => /* @__PURE__ */ React20.createElement(
3371
- RechartsPrimitive.Sector,
3372
- {
3373
- ...props2,
3374
- outerRadius: props2.outerRadius + CHART_PIE_ACTIVE_OFFSET
3375
- }
3376
- ) : void 0;
3377
- const getDisplayText = (entry) => labelContent === "percent" ? `${(entry.percent * 100).toFixed(0)}%` : entry.value;
3378
- const labelConfig = labelMode === "outside" ? (entry) => {
3379
- const RADIAN = Math.PI / 180;
3380
- const { cx, cy, midAngle, outerRadius, fill } = entry;
3381
- const sx = cx + outerRadius * Math.cos(-midAngle * RADIAN);
3382
- const sy = cy + outerRadius * Math.sin(-midAngle * RADIAN);
3383
- const mx = cx + (outerRadius + CHART_PIE_LABEL_RADIAL) * Math.cos(-midAngle * RADIAN);
3384
- const my = cy + (outerRadius + CHART_PIE_LABEL_RADIAL) * Math.sin(-midAngle * RADIAN);
3385
- const isRight = mx > cx;
3386
- const ex = mx + (isRight ? CHART_PIE_LABEL_HORIZ : -CHART_PIE_LABEL_HORIZ);
3387
- return /* @__PURE__ */ React20.createElement("g", null, /* @__PURE__ */ React20.createElement(
3388
- "polyline",
3389
- {
3390
- points: `${sx},${sy} ${mx},${my} ${ex},${my}`,
3391
- fill: "none",
3392
- stroke: fill,
3393
- strokeWidth: 1,
3394
- strokeOpacity: 0.5
3395
- }
3396
- ), /* @__PURE__ */ React20.createElement(
3397
- "text",
3398
- {
3399
- x: ex + (isRight ? 4 : -4),
3400
- y: my,
3401
- textAnchor: isRight ? "start" : "end",
3402
- dominantBaseline: "central",
3403
- style: { fontSize: "var(--font-size-xs)", fill: "var(--color-text-muted)" }
3404
- },
3405
- getDisplayText(entry)
3406
- ));
3407
- } : labelMode === "inside" ? (entry) => {
3408
- const angle = Math.abs(entry.endAngle - entry.startAngle);
3409
- if (angle < CHART_PIE_SKIP_ANGLE) return null;
3410
- const RADIAN = Math.PI / 180;
3411
- const { cx, cy, innerRadius: ir, outerRadius: or, midAngle } = entry;
3412
- const ratio = ir > 0 ? 0.5 : 0.65;
3413
- const radius = ir + (or - ir) * ratio;
3414
- const x = cx + radius * Math.cos(-midAngle * RADIAN);
3415
- const y = cy + radius * Math.sin(-midAngle * RADIAN);
3416
- return /* @__PURE__ */ React20.createElement(
3417
- "text",
3418
- {
3419
- x,
3420
- y,
3421
- textAnchor: "middle",
3422
- dominantBaseline: "central",
3423
- style: { fontSize: "var(--font-size-xs)", fill: "white", fontWeight: 600 }
3424
- },
3425
- getDisplayText(entry)
3426
- );
3427
- } : false;
3428
- return /* @__PURE__ */ React20.createElement(
3429
- RechartsPrimitive.Pie,
3430
- {
3431
- innerRadius: resolvedInnerRadius,
3432
- paddingAngle,
3433
- cornerRadius,
3434
- startAngle,
3435
- endAngle,
3436
- label: labelConfig,
3437
- labelLine: false,
3438
- activeShape: activeShapeConfig,
3439
- ...props
3440
- }
3441
- );
3442
- }
3443
- var Chart = Object.assign(ChartContainer, {
3444
- Bar: ChartBar,
3445
- Line: ChartLine,
3446
- Area: ChartArea,
3447
- Pie: ChartPie,
3448
- Tooltip: ChartTooltip,
3449
- TooltipContent: ChartTooltipContent,
3450
- Legend: ChartLegend,
3451
- LegendContent: ChartLegendContent,
3452
- XAxis: ChartXAxis,
3453
- YAxis: ChartYAxis,
3454
- Style: ChartStyle
3455
- });
3456
-
3457
2948
  // src/components/ui/metric-card.tsx
3458
- import * as React21 from "react";
2949
+ import * as React20 from "react";
3459
2950
  import { cva as cva16 } from "class-variance-authority";
3460
2951
  var metricCardVariants = cva16(
3461
2952
  "transition-colors",
@@ -3515,11 +3006,11 @@ var trendConfig = {
3515
3006
  down: { color: "text-text-error", srLabel: "Decreased" },
3516
3007
  neutral: { color: "text-text-muted", srLabel: "No change" }
3517
3008
  };
3518
- var MetricCardContext = React21.createContext({ size: "default", animated: false });
3519
- var MetricCardRoot = React21.forwardRef(
3009
+ var MetricCardContext = React20.createContext({ size: "default", animated: false });
3010
+ var MetricCardRoot = React20.forwardRef(
3520
3011
  ({ className, variant, size, radius, animated = false, children, ...props }, ref) => {
3521
3012
  const resolvedSize = size || "default";
3522
- return /* @__PURE__ */ React21.createElement(MetricCardContext.Provider, { value: { size: resolvedSize, animated } }, /* @__PURE__ */ React21.createElement(
3013
+ return /* @__PURE__ */ React20.createElement(MetricCardContext.Provider, { value: { size: resolvedSize, animated } }, /* @__PURE__ */ React20.createElement(
3523
3014
  "div",
3524
3015
  {
3525
3016
  ref,
@@ -3531,8 +3022,8 @@ var MetricCardRoot = React21.forwardRef(
3531
3022
  }
3532
3023
  );
3533
3024
  MetricCardRoot.displayName = "MetricCard";
3534
- var MetricCardHeader = React21.forwardRef(
3535
- ({ className, ...props }, ref) => /* @__PURE__ */ React21.createElement(
3025
+ var MetricCardHeader = React20.forwardRef(
3026
+ ({ className, ...props }, ref) => /* @__PURE__ */ React20.createElement(
3536
3027
  "div",
3537
3028
  {
3538
3029
  ref,
@@ -3542,10 +3033,10 @@ var MetricCardHeader = React21.forwardRef(
3542
3033
  )
3543
3034
  );
3544
3035
  MetricCardHeader.displayName = "MetricCardHeader";
3545
- var MetricCardTitle = React21.forwardRef(
3036
+ var MetricCardTitle = React20.forwardRef(
3546
3037
  ({ className, ...props }, ref) => {
3547
- const { size } = React21.useContext(MetricCardContext);
3548
- return /* @__PURE__ */ React21.createElement(
3038
+ const { size } = React20.useContext(MetricCardContext);
3039
+ return /* @__PURE__ */ React20.createElement(
3549
3040
  "p",
3550
3041
  {
3551
3042
  ref,
@@ -3556,11 +3047,11 @@ var MetricCardTitle = React21.forwardRef(
3556
3047
  }
3557
3048
  );
3558
3049
  MetricCardTitle.displayName = "MetricCardTitle";
3559
- var MetricCardValue = React21.forwardRef(
3050
+ var MetricCardValue = React20.forwardRef(
3560
3051
  ({ className, children, ...props }, ref) => {
3561
- const { size, animated } = React21.useContext(MetricCardContext);
3562
- const [display, setDisplay] = React21.useState(children);
3563
- React21.useEffect(() => {
3052
+ const { size, animated } = React20.useContext(MetricCardContext);
3053
+ const [display, setDisplay] = React20.useState(children);
3054
+ React20.useEffect(() => {
3564
3055
  if (!animated || typeof children !== "string") {
3565
3056
  setDisplay(children);
3566
3057
  return;
@@ -3595,7 +3086,7 @@ var MetricCardValue = React21.forwardRef(
3595
3086
  }, duration / steps);
3596
3087
  return () => clearInterval(timer);
3597
3088
  }, [children, animated]);
3598
- return /* @__PURE__ */ React21.createElement(
3089
+ return /* @__PURE__ */ React20.createElement(
3599
3090
  "p",
3600
3091
  {
3601
3092
  ref,
@@ -3607,27 +3098,27 @@ var MetricCardValue = React21.forwardRef(
3607
3098
  }
3608
3099
  );
3609
3100
  MetricCardValue.displayName = "MetricCardValue";
3610
- var MetricCardTrend = React21.forwardRef(
3101
+ var MetricCardTrend = React20.forwardRef(
3611
3102
  ({ className, direction, children, ...props }, ref) => {
3612
3103
  const config = trendConfig[direction];
3613
- return /* @__PURE__ */ React21.createElement(
3104
+ return /* @__PURE__ */ React20.createElement(
3614
3105
  "p",
3615
3106
  {
3616
3107
  ref,
3617
3108
  className: cn("flex items-center gap-1 text-sm mt-2", config.color, className),
3618
3109
  ...props
3619
3110
  },
3620
- direction === "up" && /* @__PURE__ */ React21.createElement("svg", { className: "icon-xs", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2.5, "aria-hidden": "true" }, /* @__PURE__ */ React21.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M4.5 15.75l7.5-7.5 7.5 7.5" })),
3621
- direction === "down" && /* @__PURE__ */ React21.createElement("svg", { className: "icon-xs", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2.5, "aria-hidden": "true" }, /* @__PURE__ */ React21.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19.5 8.25l-7.5 7.5-7.5-7.5" })),
3622
- direction === "neutral" && /* @__PURE__ */ React21.createElement("svg", { className: "icon-xs", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2.5, "aria-hidden": "true" }, /* @__PURE__ */ React21.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M5 12h14" })),
3623
- /* @__PURE__ */ React21.createElement("span", { className: "sr-only" }, config.srLabel),
3111
+ direction === "up" && /* @__PURE__ */ React20.createElement("svg", { className: "icon-xs", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2.5, "aria-hidden": "true" }, /* @__PURE__ */ React20.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M4.5 15.75l7.5-7.5 7.5 7.5" })),
3112
+ direction === "down" && /* @__PURE__ */ React20.createElement("svg", { className: "icon-xs", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2.5, "aria-hidden": "true" }, /* @__PURE__ */ React20.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19.5 8.25l-7.5 7.5-7.5-7.5" })),
3113
+ direction === "neutral" && /* @__PURE__ */ React20.createElement("svg", { className: "icon-xs", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2.5, "aria-hidden": "true" }, /* @__PURE__ */ React20.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M5 12h14" })),
3114
+ /* @__PURE__ */ React20.createElement("span", { className: "sr-only" }, config.srLabel),
3624
3115
  children
3625
3116
  );
3626
3117
  }
3627
3118
  );
3628
3119
  MetricCardTrend.displayName = "MetricCardTrend";
3629
- var MetricCardDescription = React21.forwardRef(
3630
- ({ className, ...props }, ref) => /* @__PURE__ */ React21.createElement(
3120
+ var MetricCardDescription = React20.forwardRef(
3121
+ ({ className, ...props }, ref) => /* @__PURE__ */ React20.createElement(
3631
3122
  "p",
3632
3123
  {
3633
3124
  ref,
@@ -3637,10 +3128,10 @@ var MetricCardDescription = React21.forwardRef(
3637
3128
  )
3638
3129
  );
3639
3130
  MetricCardDescription.displayName = "MetricCardDescription";
3640
- var MetricCardSymbol = React21.forwardRef(
3131
+ var MetricCardSymbol = React20.forwardRef(
3641
3132
  ({ className, ...props }, ref) => {
3642
- const { size } = React21.useContext(MetricCardContext);
3643
- return /* @__PURE__ */ React21.createElement(
3133
+ const { size } = React20.useContext(MetricCardContext);
3134
+ return /* @__PURE__ */ React20.createElement(
3644
3135
  "div",
3645
3136
  {
3646
3137
  ref,
@@ -3661,7 +3152,7 @@ var MetricCard = Object.assign(MetricCardRoot, {
3661
3152
  });
3662
3153
 
3663
3154
  // src/components/ui/badge.tsx
3664
- import * as React22 from "react";
3155
+ import * as React21 from "react";
3665
3156
  import { Slot as Slot4 } from "@radix-ui/react-slot";
3666
3157
  import { cva as cva17 } from "class-variance-authority";
3667
3158
  var colorMap = {
@@ -3748,7 +3239,7 @@ var dotColorMap = {
3748
3239
  error: "bg-error",
3749
3240
  info: "bg-info"
3750
3241
  };
3751
- var Badge = React22.forwardRef(
3242
+ var Badge = React21.forwardRef(
3752
3243
  ({
3753
3244
  className,
3754
3245
  variant = "subtle",
@@ -3768,7 +3259,7 @@ var Badge = React22.forwardRef(
3768
3259
  const colorClasses = colorMap[color][variant];
3769
3260
  const outlineClasses = variant === "outline" ? "border bg-transparent" : "";
3770
3261
  const dotColor = variant === "solid" ? "bg-current" : dotColorMap[color];
3771
- return /* @__PURE__ */ React22.createElement(
3262
+ return /* @__PURE__ */ React21.createElement(
3772
3263
  Comp,
3773
3264
  {
3774
3265
  ref,
@@ -3780,14 +3271,14 @@ var Badge = React22.forwardRef(
3780
3271
  ),
3781
3272
  ...props
3782
3273
  },
3783
- dot && /* @__PURE__ */ React22.createElement(
3274
+ dot && /* @__PURE__ */ React21.createElement(
3784
3275
  "span",
3785
3276
  {
3786
3277
  className: cn("shrink-0 rounded-full", badgeDotSizes[resolvedSize], dotColor),
3787
3278
  "aria-hidden": "true"
3788
3279
  }
3789
3280
  ),
3790
- icon && /* @__PURE__ */ React22.createElement(
3281
+ icon && /* @__PURE__ */ React21.createElement(
3791
3282
  "span",
3792
3283
  {
3793
3284
  className: cn("shrink-0 [&>svg]:w-full [&>svg]:h-full", badgeIconSizes[resolvedSize]),
@@ -3796,7 +3287,7 @@ var Badge = React22.forwardRef(
3796
3287
  icon
3797
3288
  ),
3798
3289
  children,
3799
- removable && /* @__PURE__ */ React22.createElement(
3290
+ removable && /* @__PURE__ */ React21.createElement(
3800
3291
  "button",
3801
3292
  {
3802
3293
  type: "button",
@@ -3807,7 +3298,7 @@ var Badge = React22.forwardRef(
3807
3298
  },
3808
3299
  "aria-label": "Remove"
3809
3300
  },
3810
- /* @__PURE__ */ React22.createElement(
3301
+ /* @__PURE__ */ React21.createElement(
3811
3302
  "svg",
3812
3303
  {
3813
3304
  className: "w-3 h-3",
@@ -3817,7 +3308,7 @@ var Badge = React22.forwardRef(
3817
3308
  strokeWidth: 2,
3818
3309
  "aria-hidden": "true"
3819
3310
  },
3820
- /* @__PURE__ */ React22.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" })
3311
+ /* @__PURE__ */ React21.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" })
3821
3312
  )
3822
3313
  )
3823
3314
  );
@@ -3826,15 +3317,15 @@ var Badge = React22.forwardRef(
3826
3317
  Badge.displayName = "Badge";
3827
3318
 
3828
3319
  // src/components/ui/card.tsx
3829
- import * as React23 from "react";
3320
+ import * as React22 from "react";
3830
3321
  import { Slot as Slot5 } from "@radix-ui/react-slot";
3831
3322
  import { cva as cva18 } from "class-variance-authority";
3832
- var CardContext = React23.createContext({
3323
+ var CardContext = React22.createContext({
3833
3324
  size: "default",
3834
3325
  direction: "vertical"
3835
3326
  });
3836
3327
  function useCard() {
3837
- return React23.useContext(CardContext);
3328
+ return React22.useContext(CardContext);
3838
3329
  }
3839
3330
  var cardVariants = cva18(
3840
3331
  "flex overflow-hidden transition-all duration-normal",
@@ -3877,7 +3368,7 @@ var cardVariants = cva18(
3877
3368
  }
3878
3369
  }
3879
3370
  );
3880
- var CardRoot = React23.forwardRef(
3371
+ var CardRoot = React22.forwardRef(
3881
3372
  ({
3882
3373
  className,
3883
3374
  variant = "default",
@@ -3892,19 +3383,19 @@ var CardRoot = React23.forwardRef(
3892
3383
  const Comp = asChild ? Slot5 : "div";
3893
3384
  let content = children;
3894
3385
  if (direction === "horizontal") {
3895
- const childArray = React23.Children.toArray(children);
3386
+ const childArray = React22.Children.toArray(children);
3896
3387
  const imageChildren = [];
3897
3388
  const otherChildren = [];
3898
3389
  childArray.forEach((child) => {
3899
- if (React23.isValidElement(child) && child.type === CardImage) {
3390
+ if (React22.isValidElement(child) && child.type === CardImage) {
3900
3391
  imageChildren.push(child);
3901
3392
  } else {
3902
3393
  otherChildren.push(child);
3903
3394
  }
3904
3395
  });
3905
- content = /* @__PURE__ */ React23.createElement(React23.Fragment, null, imageChildren, /* @__PURE__ */ React23.createElement("div", { className: "flex-1 flex flex-col min-w-0" }, otherChildren));
3396
+ content = /* @__PURE__ */ React22.createElement(React22.Fragment, null, imageChildren, /* @__PURE__ */ React22.createElement("div", { className: "flex-1 flex flex-col min-w-0" }, otherChildren));
3906
3397
  }
3907
- return /* @__PURE__ */ React23.createElement(CardContext.Provider, { value: { size, direction } }, /* @__PURE__ */ React23.createElement(
3398
+ return /* @__PURE__ */ React22.createElement(CardContext.Provider, { value: { size, direction } }, /* @__PURE__ */ React22.createElement(
3908
3399
  Comp,
3909
3400
  {
3910
3401
  ref,
@@ -3971,13 +3462,13 @@ var overlayOpacityMap = {
3971
3462
  80: "from-black/80",
3972
3463
  90: "from-black/90"
3973
3464
  };
3974
- var CardImage = React23.forwardRef(
3465
+ var CardImage = React22.forwardRef(
3975
3466
  ({ className, overlay = false, overlayOpacity = 60, overlayClassName, alt = "", ...props }, ref) => {
3976
3467
  const { direction } = useCard();
3977
3468
  const isHorizontal = direction === "horizontal";
3978
3469
  if (isHorizontal) {
3979
3470
  const opacityClass = overlay ? overlayOpacityMap[overlayOpacity] || "from-black/60" : null;
3980
- return /* @__PURE__ */ React23.createElement("div", { className: cn("relative shrink-0 w-48 overflow-hidden", className) }, /* @__PURE__ */ React23.createElement(
3471
+ return /* @__PURE__ */ React22.createElement("div", { className: cn("relative shrink-0 w-48 overflow-hidden", className) }, /* @__PURE__ */ React22.createElement(
3981
3472
  "img",
3982
3473
  {
3983
3474
  ref,
@@ -3985,11 +3476,11 @@ var CardImage = React23.forwardRef(
3985
3476
  className: "absolute inset-0 w-full h-full object-cover",
3986
3477
  ...props
3987
3478
  }
3988
- ), overlay && /* @__PURE__ */ React23.createElement("div", { className: cn("absolute inset-0 bg-gradient-to-t to-transparent", overlayClassName || opacityClass) }));
3479
+ ), overlay && /* @__PURE__ */ React22.createElement("div", { className: cn("absolute inset-0 bg-gradient-to-t to-transparent", overlayClassName || opacityClass) }));
3989
3480
  }
3990
3481
  if (overlay) {
3991
3482
  const opacityClass = overlayOpacityMap[overlayOpacity] || "from-black/60";
3992
- return /* @__PURE__ */ React23.createElement("div", { className: "relative w-full shrink-0 overflow-hidden" }, /* @__PURE__ */ React23.createElement(
3483
+ return /* @__PURE__ */ React22.createElement("div", { className: "relative w-full shrink-0 overflow-hidden" }, /* @__PURE__ */ React22.createElement(
3993
3484
  "img",
3994
3485
  {
3995
3486
  ref,
@@ -3997,9 +3488,9 @@ var CardImage = React23.forwardRef(
3997
3488
  className: cn("w-full object-cover", className),
3998
3489
  ...props
3999
3490
  }
4000
- ), /* @__PURE__ */ React23.createElement("div", { className: cn("absolute inset-0 bg-gradient-to-t to-transparent", overlayClassName || opacityClass) }));
3491
+ ), /* @__PURE__ */ React22.createElement("div", { className: cn("absolute inset-0 bg-gradient-to-t to-transparent", overlayClassName || opacityClass) }));
4001
3492
  }
4002
- return /* @__PURE__ */ React23.createElement(
3493
+ return /* @__PURE__ */ React22.createElement(
4003
3494
  "img",
4004
3495
  {
4005
3496
  ref,
@@ -4011,20 +3502,20 @@ var CardImage = React23.forwardRef(
4011
3502
  }
4012
3503
  );
4013
3504
  CardImage.displayName = "CardImage";
4014
- var CardHeader = React23.forwardRef(
3505
+ var CardHeader = React22.forwardRef(
4015
3506
  ({ className, children, ...props }, ref) => {
4016
3507
  const { size } = useCard();
4017
- const childArray = React23.Children.toArray(children);
3508
+ const childArray = React22.Children.toArray(children);
4018
3509
  const actionChildren = [];
4019
3510
  const otherChildren = [];
4020
3511
  childArray.forEach((child) => {
4021
- if (React23.isValidElement(child) && child.type === CardAction) {
3512
+ if (React22.isValidElement(child) && child.type === CardAction) {
4022
3513
  actionChildren.push(child);
4023
3514
  } else {
4024
3515
  otherChildren.push(child);
4025
3516
  }
4026
3517
  });
4027
- return /* @__PURE__ */ React23.createElement(
3518
+ return /* @__PURE__ */ React22.createElement(
4028
3519
  "div",
4029
3520
  {
4030
3521
  ref,
@@ -4038,15 +3529,15 @@ var CardHeader = React23.forwardRef(
4038
3529
  ),
4039
3530
  ...props
4040
3531
  },
4041
- /* @__PURE__ */ React23.createElement("div", { className: "flex-1 min-w-0 space-y-3" }, otherChildren),
3532
+ /* @__PURE__ */ React22.createElement("div", { className: "flex-1 min-w-0 space-y-3" }, otherChildren),
4042
3533
  actionChildren
4043
3534
  );
4044
3535
  }
4045
3536
  );
4046
3537
  CardHeader.displayName = "CardHeader";
4047
- var CardTitle = React23.forwardRef(
3538
+ var CardTitle = React22.forwardRef(
4048
3539
  ({ className, icon, children, ...props }, ref) => {
4049
- return /* @__PURE__ */ React23.createElement(
3540
+ return /* @__PURE__ */ React22.createElement(
4050
3541
  "h3",
4051
3542
  {
4052
3543
  ref,
@@ -4057,15 +3548,15 @@ var CardTitle = React23.forwardRef(
4057
3548
  ),
4058
3549
  ...props
4059
3550
  },
4060
- icon && /* @__PURE__ */ React23.createElement("span", { className: "shrink-0 icon-sm [&>svg]:w-full [&>svg]:h-full", "aria-hidden": "true" }, icon),
3551
+ icon && /* @__PURE__ */ React22.createElement("span", { className: "shrink-0 icon-sm [&>svg]:w-full [&>svg]:h-full", "aria-hidden": "true" }, icon),
4061
3552
  children
4062
3553
  );
4063
3554
  }
4064
3555
  );
4065
3556
  CardTitle.displayName = "CardTitle";
4066
- var CardDescription = React23.forwardRef(
3557
+ var CardDescription = React22.forwardRef(
4067
3558
  ({ className, ...props }, ref) => {
4068
- return /* @__PURE__ */ React23.createElement(
3559
+ return /* @__PURE__ */ React22.createElement(
4069
3560
  "p",
4070
3561
  {
4071
3562
  ref,
@@ -4076,9 +3567,9 @@ var CardDescription = React23.forwardRef(
4076
3567
  }
4077
3568
  );
4078
3569
  CardDescription.displayName = "CardDescription";
4079
- var CardAction = React23.forwardRef(
3570
+ var CardAction = React22.forwardRef(
4080
3571
  ({ className, ...props }, ref) => {
4081
- return /* @__PURE__ */ React23.createElement(
3572
+ return /* @__PURE__ */ React22.createElement(
4082
3573
  "div",
4083
3574
  {
4084
3575
  ref,
@@ -4089,10 +3580,10 @@ var CardAction = React23.forwardRef(
4089
3580
  }
4090
3581
  );
4091
3582
  CardAction.displayName = "CardAction";
4092
- var CardContent = React23.forwardRef(
3583
+ var CardContent = React22.forwardRef(
4093
3584
  ({ className, ...props }, ref) => {
4094
3585
  const { size } = useCard();
4095
- return /* @__PURE__ */ React23.createElement(
3586
+ return /* @__PURE__ */ React22.createElement(
4096
3587
  "div",
4097
3588
  {
4098
3589
  ref,
@@ -4103,10 +3594,10 @@ var CardContent = React23.forwardRef(
4103
3594
  }
4104
3595
  );
4105
3596
  CardContent.displayName = "CardContent";
4106
- var CardFooter = React23.forwardRef(
3597
+ var CardFooter = React22.forwardRef(
4107
3598
  ({ className, ...props }, ref) => {
4108
3599
  const { size } = useCard();
4109
- return /* @__PURE__ */ React23.createElement(
3600
+ return /* @__PURE__ */ React22.createElement(
4110
3601
  "div",
4111
3602
  {
4112
3603
  ref,
@@ -4134,9 +3625,9 @@ var Card = Object.assign(CardRoot, {
4134
3625
  });
4135
3626
 
4136
3627
  // src/components/ui/table.tsx
4137
- import * as React24 from "react";
3628
+ import * as React23 from "react";
4138
3629
  import { cva as cva19 } from "class-variance-authority";
4139
- var TableContext = React24.createContext({ size: "default", variant: "default", stickyHeader: false });
3630
+ var TableContext = React23.createContext({ size: "default", variant: "default", stickyHeader: false });
4140
3631
  var cellPaddingMap = {
4141
3632
  sm: "px-3 py-2 text-sm",
4142
3633
  default: "px-4 py-3 text-sm",
@@ -4167,8 +3658,8 @@ var tableVariants = cva19(
4167
3658
  }
4168
3659
  }
4169
3660
  );
4170
- var TableRoot = React24.forwardRef(
4171
- ({ className, size = "default", variant = "default", stickyHeader = false, wrapperClassName, ...props }, ref) => /* @__PURE__ */ React24.createElement(TableContext.Provider, { value: { size, variant, stickyHeader } }, /* @__PURE__ */ React24.createElement("div", { className: cn("relative w-full overflow-auto", wrapperClassName) }, /* @__PURE__ */ React24.createElement(
3661
+ var TableRoot = React23.forwardRef(
3662
+ ({ className, size = "default", variant = "default", stickyHeader = false, wrapperClassName, ...props }, ref) => /* @__PURE__ */ React23.createElement(TableContext.Provider, { value: { size, variant, stickyHeader } }, /* @__PURE__ */ React23.createElement("div", { className: cn("relative w-full overflow-auto", wrapperClassName) }, /* @__PURE__ */ React23.createElement(
4172
3663
  "table",
4173
3664
  {
4174
3665
  ref,
@@ -4178,9 +3669,9 @@ var TableRoot = React24.forwardRef(
4178
3669
  )))
4179
3670
  );
4180
3671
  TableRoot.displayName = "Table";
4181
- var TableHeader = React24.forwardRef(({ className, ...props }, ref) => {
4182
- const { stickyHeader } = React24.useContext(TableContext);
4183
- return /* @__PURE__ */ React24.createElement(
3672
+ var TableHeader = React23.forwardRef(({ className, ...props }, ref) => {
3673
+ const { stickyHeader } = React23.useContext(TableContext);
3674
+ return /* @__PURE__ */ React23.createElement(
4184
3675
  "thead",
4185
3676
  {
4186
3677
  ref,
@@ -4194,9 +3685,9 @@ var TableHeader = React24.forwardRef(({ className, ...props }, ref) => {
4194
3685
  );
4195
3686
  });
4196
3687
  TableHeader.displayName = "TableHeader";
4197
- var TableBody = React24.forwardRef(({ className, ...props }, ref) => {
4198
- const { variant } = React24.useContext(TableContext);
4199
- return /* @__PURE__ */ React24.createElement(
3688
+ var TableBody = React23.forwardRef(({ className, ...props }, ref) => {
3689
+ const { variant } = React23.useContext(TableContext);
3690
+ return /* @__PURE__ */ React23.createElement(
4200
3691
  "tbody",
4201
3692
  {
4202
3693
  ref,
@@ -4210,7 +3701,7 @@ var TableBody = React24.forwardRef(({ className, ...props }, ref) => {
4210
3701
  );
4211
3702
  });
4212
3703
  TableBody.displayName = "TableBody";
4213
- var TableFooter = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React24.createElement(
3704
+ var TableFooter = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23.createElement(
4214
3705
  "tfoot",
4215
3706
  {
4216
3707
  ref,
@@ -4222,8 +3713,8 @@ var TableFooter = React24.forwardRef(({ className, ...props }, ref) => /* @__PUR
4222
3713
  }
4223
3714
  ));
4224
3715
  TableFooter.displayName = "TableFooter";
4225
- var TableRow = React24.forwardRef(
4226
- ({ className, interactive = false, selected = false, ...props }, ref) => /* @__PURE__ */ React24.createElement(
3716
+ var TableRow = React23.forwardRef(
3717
+ ({ className, interactive = false, selected = false, ...props }, ref) => /* @__PURE__ */ React23.createElement(
4227
3718
  "tr",
4228
3719
  {
4229
3720
  ref,
@@ -4239,15 +3730,15 @@ var TableRow = React24.forwardRef(
4239
3730
  );
4240
3731
  TableRow.displayName = "TableRow";
4241
3732
  var defaultSortIcons = {
4242
- asc: /* @__PURE__ */ React24.createElement("svg", { className: "icon-xs", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, "aria-hidden": "true" }, /* @__PURE__ */ React24.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M5 15l7-7 7 7" })),
4243
- desc: /* @__PURE__ */ React24.createElement("svg", { className: "icon-xs", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, "aria-hidden": "true" }, /* @__PURE__ */ React24.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19 9l-7 7-7-7" })),
4244
- default: /* @__PURE__ */ React24.createElement("svg", { className: "icon-xs", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, "aria-hidden": "true" }, /* @__PURE__ */ React24.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M7 16V4m0 0L3 8m4-4l4 4m6 0v12m0 0l4-4m-4 4l-4-4" }))
3733
+ asc: /* @__PURE__ */ React23.createElement("svg", { className: "icon-xs", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, "aria-hidden": "true" }, /* @__PURE__ */ React23.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M5 15l7-7 7 7" })),
3734
+ desc: /* @__PURE__ */ React23.createElement("svg", { className: "icon-xs", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, "aria-hidden": "true" }, /* @__PURE__ */ React23.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19 9l-7 7-7-7" })),
3735
+ default: /* @__PURE__ */ React23.createElement("svg", { className: "icon-xs", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, "aria-hidden": "true" }, /* @__PURE__ */ React23.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M7 16V4m0 0L3 8m4-4l4 4m6 0v12m0 0l4-4m-4 4l-4-4" }))
4245
3736
  };
4246
- var TableHead = React24.forwardRef(
3737
+ var TableHead = React23.forwardRef(
4247
3738
  ({ className, align = "left", sortable = false, sortDirection = null, onSort, sortIcon, children, ...props }, ref) => {
4248
- const { size } = React24.useContext(TableContext);
3739
+ const { size } = React23.useContext(TableContext);
4249
3740
  const icons = { ...defaultSortIcons, ...sortIcon };
4250
- const content = sortable ? /* @__PURE__ */ React24.createElement(
3741
+ const content = sortable ? /* @__PURE__ */ React23.createElement(
4251
3742
  "button",
4252
3743
  {
4253
3744
  type: "button",
@@ -4255,12 +3746,12 @@ var TableHead = React24.forwardRef(
4255
3746
  onClick: onSort
4256
3747
  },
4257
3748
  children,
4258
- /* @__PURE__ */ React24.createElement("span", { className: cn(
3749
+ /* @__PURE__ */ React23.createElement("span", { className: cn(
4259
3750
  "shrink-0 transition-colors duration-fast",
4260
3751
  sortDirection ? "text-foreground" : "text-text-muted"
4261
3752
  ) }, sortDirection === "asc" ? icons.asc : sortDirection === "desc" ? icons.desc : icons.default)
4262
3753
  ) : children;
4263
- return /* @__PURE__ */ React24.createElement(
3754
+ return /* @__PURE__ */ React23.createElement(
4264
3755
  "th",
4265
3756
  {
4266
3757
  ref,
@@ -4281,10 +3772,10 @@ var TableHead = React24.forwardRef(
4281
3772
  }
4282
3773
  );
4283
3774
  TableHead.displayName = "TableHead";
4284
- var TableCell = React24.forwardRef(
3775
+ var TableCell = React23.forwardRef(
4285
3776
  ({ className, align = "left", ...props }, ref) => {
4286
- const { size } = React24.useContext(TableContext);
4287
- return /* @__PURE__ */ React24.createElement(
3777
+ const { size } = React23.useContext(TableContext);
3778
+ return /* @__PURE__ */ React23.createElement(
4288
3779
  "td",
4289
3780
  {
4290
3781
  ref,
@@ -4302,7 +3793,7 @@ var TableCell = React24.forwardRef(
4302
3793
  }
4303
3794
  );
4304
3795
  TableCell.displayName = "TableCell";
4305
- var TableCaption = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React24.createElement(
3796
+ var TableCaption = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23.createElement(
4306
3797
  "caption",
4307
3798
  {
4308
3799
  ref,
@@ -4322,11 +3813,11 @@ var Table = Object.assign(TableRoot, {
4322
3813
  });
4323
3814
 
4324
3815
  // src/components/ui/tabs.tsx
4325
- import * as React25 from "react";
3816
+ import * as React24 from "react";
4326
3817
  import * as TabsPrimitive from "@radix-ui/react-tabs";
4327
3818
  import { cva as cva20 } from "class-variance-authority";
4328
- var TabsStyleContext = React25.createContext({});
4329
- var useTabsStyleContext = () => React25.useContext(TabsStyleContext);
3819
+ var TabsStyleContext = React24.createContext({});
3820
+ var useTabsStyleContext = () => React24.useContext(TabsStyleContext);
4330
3821
  var tabsListVariants = cva20(
4331
3822
  "inline-flex items-center text-text-subtle",
4332
3823
  {
@@ -4347,9 +3838,9 @@ var tabsListVariants = cva20(
4347
3838
  }
4348
3839
  }
4349
3840
  );
4350
- var TabsList = React25.forwardRef(({ className, variant, size, fitted, color, radius, ...props }, ref) => {
3841
+ var TabsList = React24.forwardRef(({ className, variant, size, fitted, color, radius, ...props }, ref) => {
4351
3842
  const resolvedVariant = variant || "line";
4352
- return /* @__PURE__ */ React25.createElement(TabsStyleContext.Provider, { value: { variant: resolvedVariant, size: size || "default", fitted: fitted ?? false, color: color || "default", radius: radius || "md" } }, /* @__PURE__ */ React25.createElement(
3843
+ return /* @__PURE__ */ React24.createElement(TabsStyleContext.Provider, { value: { variant: resolvedVariant, size: size || "default", fitted: fitted ?? false, color: color || "default", radius: radius || "md" } }, /* @__PURE__ */ React24.createElement(
4353
3844
  TabsPrimitive.List,
4354
3845
  {
4355
3846
  ref,
@@ -4471,10 +3962,10 @@ var pillItemRadiusClasses = {
4471
3962
  "3xl": "rounded-2xl",
4472
3963
  full: "rounded-full"
4473
3964
  };
4474
- var TabsTrigger = React25.forwardRef(({ className, children, ...props }, ref) => {
3965
+ var TabsTrigger = React24.forwardRef(({ className, children, ...props }, ref) => {
4475
3966
  const { variant, size, fitted, color, radius } = useTabsStyleContext();
4476
3967
  const resolvedSize = size || "default";
4477
- return /* @__PURE__ */ React25.createElement(
3968
+ return /* @__PURE__ */ React24.createElement(
4478
3969
  TabsPrimitive.Trigger,
4479
3970
  {
4480
3971
  ref,
@@ -4492,7 +3983,7 @@ var TabsTrigger = React25.forwardRef(({ className, children, ...props }, ref) =>
4492
3983
  );
4493
3984
  });
4494
3985
  TabsTrigger.displayName = "TabsTrigger";
4495
- var TabsContent = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React25.createElement(
3986
+ var TabsContent = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React24.createElement(
4496
3987
  TabsPrimitive.Content,
4497
3988
  {
4498
3989
  ref,
@@ -4512,15 +4003,15 @@ var Tabs = Object.assign(TabsRoot, {
4512
4003
  });
4513
4004
 
4514
4005
  // src/components/ui/navigation-menu.tsx
4515
- import * as React26 from "react";
4006
+ import * as React25 from "react";
4516
4007
  import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
4517
4008
  import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
4518
4009
  import { Slot as Slot6 } from "@radix-ui/react-slot";
4519
4010
  function ChevronDownIcon({ className }) {
4520
- return /* @__PURE__ */ React26.createElement("svg", { className, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, "aria-hidden": "true" }, /* @__PURE__ */ React26.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19 9l-7 7-7-7" }));
4011
+ return /* @__PURE__ */ React25.createElement("svg", { className, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, "aria-hidden": "true" }, /* @__PURE__ */ React25.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19 9l-7 7-7-7" }));
4521
4012
  }
4522
4013
  function ChevronRightIcon2({ className }) {
4523
- return /* @__PURE__ */ React26.createElement("svg", { className, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, "aria-hidden": "true" }, /* @__PURE__ */ React26.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }));
4014
+ return /* @__PURE__ */ React25.createElement("svg", { className, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, "aria-hidden": "true" }, /* @__PURE__ */ React25.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }));
4524
4015
  }
4525
4016
  var contentRadiusMap3 = {
4526
4017
  sm: "rounded",
@@ -4542,15 +4033,15 @@ var itemRadiusMap3 = {
4542
4033
  xl: "rounded-lg"
4543
4034
  // 8px
4544
4035
  };
4545
- var NavigationMenuContext = React26.createContext({
4036
+ var NavigationMenuContext = React25.createContext({
4546
4037
  orientation: "horizontal",
4547
4038
  size: "default",
4548
4039
  collapsed: false,
4549
4040
  radius: "lg",
4550
4041
  fontWeight: "normal"
4551
4042
  });
4552
- var useNavigationMenuContext = () => React26.useContext(NavigationMenuContext);
4553
- var ContentLevelContext = React26.createContext(false);
4043
+ var useNavigationMenuContext = () => React25.useContext(NavigationMenuContext);
4044
+ var ContentLevelContext = React25.createContext(false);
4554
4045
  var navigationMenuSizeMap = {
4555
4046
  sm: {
4556
4047
  trigger: "h-8 text-sm px-3 gap-2",
@@ -4597,7 +4088,7 @@ var navigationMenuSizeMap = {
4597
4088
  groupMargin: "mt-6 first:mt-0"
4598
4089
  }
4599
4090
  };
4600
- var NavigationMenuRoot = React26.forwardRef(
4091
+ var NavigationMenuRoot = React25.forwardRef(
4601
4092
  ({
4602
4093
  className,
4603
4094
  orientation = "horizontal",
@@ -4616,12 +4107,12 @@ var NavigationMenuRoot = React26.forwardRef(
4616
4107
  style,
4617
4108
  ...props
4618
4109
  }, ref) => {
4619
- const contextValue = React26.useMemo(
4110
+ const contextValue = React25.useMemo(
4620
4111
  () => ({ orientation, size, collapsed: orientation === "vertical" ? collapsed : false, radius, fontWeight }),
4621
4112
  [orientation, size, collapsed, radius, fontWeight]
4622
4113
  );
4623
4114
  if (orientation === "horizontal") {
4624
- return /* @__PURE__ */ React26.createElement(NavigationMenuContext.Provider, { value: contextValue }, /* @__PURE__ */ React26.createElement(
4115
+ return /* @__PURE__ */ React25.createElement(NavigationMenuContext.Provider, { value: contextValue }, /* @__PURE__ */ React25.createElement(
4625
4116
  NavigationMenuPrimitive.Root,
4626
4117
  {
4627
4118
  ref,
@@ -4637,7 +4128,7 @@ var NavigationMenuRoot = React26.forwardRef(
4637
4128
  }
4638
4129
  const resolvedWidth = collapsed ? collapsedWidth ?? navigationMenuSizeMap[size].collapsedWidth : width ?? 256;
4639
4130
  const widthValue = typeof resolvedWidth === "number" ? `${resolvedWidth}px` : resolvedWidth;
4640
- return /* @__PURE__ */ React26.createElement(NavigationMenuContext.Provider, { value: contextValue }, /* @__PURE__ */ React26.createElement(
4131
+ return /* @__PURE__ */ React25.createElement(NavigationMenuContext.Provider, { value: contextValue }, /* @__PURE__ */ React25.createElement(
4641
4132
  "nav",
4642
4133
  {
4643
4134
  ref,
@@ -4655,11 +4146,11 @@ var NavigationMenuRoot = React26.forwardRef(
4655
4146
  }
4656
4147
  );
4657
4148
  NavigationMenuRoot.displayName = "NavigationMenu";
4658
- var NavigationMenuList = React26.forwardRef(
4149
+ var NavigationMenuList = React25.forwardRef(
4659
4150
  ({ className, children, ...props }, ref) => {
4660
4151
  const { orientation } = useNavigationMenuContext();
4661
4152
  if (orientation === "horizontal") {
4662
- return /* @__PURE__ */ React26.createElement(
4153
+ return /* @__PURE__ */ React25.createElement(
4663
4154
  NavigationMenuPrimitive.List,
4664
4155
  {
4665
4156
  ref,
@@ -4669,7 +4160,7 @@ var NavigationMenuList = React26.forwardRef(
4669
4160
  children
4670
4161
  );
4671
4162
  }
4672
- return /* @__PURE__ */ React26.createElement(
4163
+ return /* @__PURE__ */ React25.createElement(
4673
4164
  "ul",
4674
4165
  {
4675
4166
  ref,
@@ -4681,15 +4172,15 @@ var NavigationMenuList = React26.forwardRef(
4681
4172
  }
4682
4173
  );
4683
4174
  NavigationMenuList.displayName = "NavigationMenuList";
4684
- var NavigationMenuItem = React26.forwardRef(
4175
+ var NavigationMenuItem = React25.forwardRef(
4685
4176
  ({ className, value, defaultOpen = false, children, ...props }, ref) => {
4686
4177
  const { orientation, collapsed } = useNavigationMenuContext();
4687
- const [open, setOpen] = React26.useState(defaultOpen);
4688
- React26.useEffect(() => {
4178
+ const [open, setOpen] = React25.useState(defaultOpen);
4179
+ React25.useEffect(() => {
4689
4180
  if (collapsed) setOpen(false);
4690
4181
  }, [collapsed]);
4691
4182
  if (orientation === "horizontal") {
4692
- return /* @__PURE__ */ React26.createElement(
4183
+ return /* @__PURE__ */ React25.createElement(
4693
4184
  NavigationMenuPrimitive.Item,
4694
4185
  {
4695
4186
  ref,
@@ -4700,25 +4191,25 @@ var NavigationMenuItem = React26.forwardRef(
4700
4191
  children
4701
4192
  );
4702
4193
  }
4703
- return /* @__PURE__ */ React26.createElement(
4194
+ return /* @__PURE__ */ React25.createElement(
4704
4195
  CollapsiblePrimitive.Root,
4705
4196
  {
4706
4197
  open: collapsed ? false : open,
4707
4198
  onOpenChange: collapsed ? void 0 : setOpen,
4708
4199
  asChild: true
4709
4200
  },
4710
- /* @__PURE__ */ React26.createElement("li", { ref, className: cn("", className), ...props }, children)
4201
+ /* @__PURE__ */ React25.createElement("li", { ref, className: cn("", className), ...props }, children)
4711
4202
  );
4712
4203
  }
4713
4204
  );
4714
4205
  NavigationMenuItem.displayName = "NavigationMenuItem";
4715
- var NavigationMenuTrigger = React26.forwardRef(
4206
+ var NavigationMenuTrigger = React25.forwardRef(
4716
4207
  ({ className, children, icon, chevronIcon, ...props }, ref) => {
4717
4208
  const { orientation, size, collapsed, radius, fontWeight: fw } = useNavigationMenuContext();
4718
4209
  const s = navigationMenuSizeMap[size];
4719
4210
  const fwClass = fw === "semibold" ? "font-semibold" : "font-normal";
4720
4211
  if (orientation === "horizontal") {
4721
- return /* @__PURE__ */ React26.createElement(
4212
+ return /* @__PURE__ */ React25.createElement(
4722
4213
  NavigationMenuPrimitive.Trigger,
4723
4214
  {
4724
4215
  ref,
@@ -4737,12 +4228,12 @@ var NavigationMenuTrigger = React26.forwardRef(
4737
4228
  ),
4738
4229
  ...props
4739
4230
  },
4740
- icon && /* @__PURE__ */ React26.createElement("span", { className: cn("shrink-0 mr-2", s.icon) }, icon),
4231
+ icon && /* @__PURE__ */ React25.createElement("span", { className: cn("shrink-0 mr-2", s.icon) }, icon),
4741
4232
  children,
4742
- /* @__PURE__ */ React26.createElement("span", { className: cn("shrink-0 ml-1 text-text-subtle transition-transform duration-fast group-data-[state=open]:rotate-180", s.icon) }, chevronIcon ?? /* @__PURE__ */ React26.createElement(ChevronDownIcon, { className: "size-full" }))
4233
+ /* @__PURE__ */ React25.createElement("span", { className: cn("shrink-0 ml-1 text-text-subtle transition-transform duration-fast group-data-[state=open]:rotate-180", s.icon) }, chevronIcon ?? /* @__PURE__ */ React25.createElement(ChevronDownIcon, { className: "size-full" }))
4743
4234
  );
4744
4235
  }
4745
- return /* @__PURE__ */ React26.createElement(
4236
+ return /* @__PURE__ */ React25.createElement(
4746
4237
  CollapsiblePrimitive.Trigger,
4747
4238
  {
4748
4239
  ref,
@@ -4761,8 +4252,8 @@ var NavigationMenuTrigger = React26.forwardRef(
4761
4252
  ...collapsed && typeof children === "string" ? { title: children } : {},
4762
4253
  ...props
4763
4254
  },
4764
- icon && /* @__PURE__ */ React26.createElement("span", { className: cn("shrink-0", s.icon) }, icon),
4765
- !collapsed && /* @__PURE__ */ React26.createElement(React26.Fragment, null, /* @__PURE__ */ React26.createElement("span", { className: "flex-1 text-left truncate" }, children), /* @__PURE__ */ React26.createElement(
4255
+ icon && /* @__PURE__ */ React25.createElement("span", { className: cn("shrink-0", s.icon) }, icon),
4256
+ !collapsed && /* @__PURE__ */ React25.createElement(React25.Fragment, null, /* @__PURE__ */ React25.createElement("span", { className: "flex-1 text-left truncate" }, children), /* @__PURE__ */ React25.createElement(
4766
4257
  "span",
4767
4258
  {
4768
4259
  className: cn(
@@ -4771,17 +4262,17 @@ var NavigationMenuTrigger = React26.forwardRef(
4771
4262
  "group-data-[state=open]:rotate-90"
4772
4263
  )
4773
4264
  },
4774
- chevronIcon ?? /* @__PURE__ */ React26.createElement(ChevronRightIcon2, { className: "size-full" })
4265
+ chevronIcon ?? /* @__PURE__ */ React25.createElement(ChevronRightIcon2, { className: "size-full" })
4775
4266
  ))
4776
4267
  );
4777
4268
  }
4778
4269
  );
4779
4270
  NavigationMenuTrigger.displayName = "NavigationMenuTrigger";
4780
- var NavigationMenuContent = React26.forwardRef(
4271
+ var NavigationMenuContent = React25.forwardRef(
4781
4272
  ({ className, children, ...props }, ref) => {
4782
4273
  const { orientation, collapsed, radius } = useNavigationMenuContext();
4783
4274
  if (orientation === "horizontal") {
4784
- return /* @__PURE__ */ React26.createElement(ContentLevelContext.Provider, { value: true }, /* @__PURE__ */ React26.createElement(
4275
+ return /* @__PURE__ */ React25.createElement(ContentLevelContext.Provider, { value: true }, /* @__PURE__ */ React25.createElement(
4785
4276
  NavigationMenuPrimitive.Content,
4786
4277
  {
4787
4278
  ref,
@@ -4792,11 +4283,11 @@ var NavigationMenuContent = React26.forwardRef(
4792
4283
  ),
4793
4284
  ...props
4794
4285
  },
4795
- /* @__PURE__ */ React26.createElement("div", { className: cn("min-w-[180px] border border-border bg-background shadow-lg p-1.5 grid gap-0.5", contentRadiusMap3[radius]) }, children)
4286
+ /* @__PURE__ */ React25.createElement("div", { className: cn("min-w-[180px] border border-border bg-background shadow-lg p-1.5 grid gap-0.5", contentRadiusMap3[radius]) }, children)
4796
4287
  ));
4797
4288
  }
4798
4289
  if (collapsed) return null;
4799
- return /* @__PURE__ */ React26.createElement(ContentLevelContext.Provider, { value: true }, /* @__PURE__ */ React26.createElement(
4290
+ return /* @__PURE__ */ React25.createElement(ContentLevelContext.Provider, { value: true }, /* @__PURE__ */ React25.createElement(
4800
4291
  CollapsiblePrimitive.Content,
4801
4292
  {
4802
4293
  ref,
@@ -4806,7 +4297,7 @@ var NavigationMenuContent = React26.forwardRef(
4806
4297
  ),
4807
4298
  ...props
4808
4299
  },
4809
- /* @__PURE__ */ React26.createElement("div", { className: cn(
4300
+ /* @__PURE__ */ React25.createElement("div", { className: cn(
4810
4301
  "flex flex-col gap-0.5 py-1",
4811
4302
  className
4812
4303
  ) }, children)
@@ -4814,16 +4305,16 @@ var NavigationMenuContent = React26.forwardRef(
4814
4305
  }
4815
4306
  );
4816
4307
  NavigationMenuContent.displayName = "NavigationMenuContent";
4817
- var NavigationMenuLink = React26.forwardRef(
4308
+ var NavigationMenuLink = React25.forwardRef(
4818
4309
  ({ className, active, asChild, icon, children, ...props }, ref) => {
4819
4310
  const { orientation, size, collapsed, radius, fontWeight: fw } = useNavigationMenuContext();
4820
4311
  const s = navigationMenuSizeMap[size];
4821
4312
  const fwClass = fw === "semibold" ? "font-semibold" : "font-normal";
4822
- const inContent = React26.useContext(ContentLevelContext);
4313
+ const inContent = React25.useContext(ContentLevelContext);
4823
4314
  if (orientation === "horizontal") {
4824
4315
  const { onSelect, ...radixSafeProps } = props;
4825
4316
  if (inContent) {
4826
- return /* @__PURE__ */ React26.createElement(
4317
+ return /* @__PURE__ */ React25.createElement(
4827
4318
  NavigationMenuPrimitive.Link,
4828
4319
  {
4829
4320
  ref,
@@ -4842,10 +4333,10 @@ var NavigationMenuLink = React26.forwardRef(
4842
4333
  onSelect,
4843
4334
  ...radixSafeProps
4844
4335
  },
4845
- asChild ? children : /* @__PURE__ */ React26.createElement(React26.Fragment, null, icon && /* @__PURE__ */ React26.createElement("span", { className: cn("shrink-0", s.icon) }, icon), children)
4336
+ asChild ? children : /* @__PURE__ */ React25.createElement(React25.Fragment, null, icon && /* @__PURE__ */ React25.createElement("span", { className: cn("shrink-0", s.icon) }, icon), children)
4846
4337
  );
4847
4338
  }
4848
- return /* @__PURE__ */ React26.createElement(
4339
+ return /* @__PURE__ */ React25.createElement(
4849
4340
  NavigationMenuPrimitive.Link,
4850
4341
  {
4851
4342
  ref,
@@ -4865,12 +4356,12 @@ var NavigationMenuLink = React26.forwardRef(
4865
4356
  onSelect,
4866
4357
  ...radixSafeProps
4867
4358
  },
4868
- asChild ? children : /* @__PURE__ */ React26.createElement(React26.Fragment, null, icon && /* @__PURE__ */ React26.createElement("span", { className: cn("shrink-0", s.icon) }, icon), children)
4359
+ asChild ? children : /* @__PURE__ */ React25.createElement(React25.Fragment, null, icon && /* @__PURE__ */ React25.createElement("span", { className: cn("shrink-0", s.icon) }, icon), children)
4869
4360
  );
4870
4361
  }
4871
4362
  const Comp = asChild ? Slot6 : "a";
4872
4363
  if (inContent) {
4873
- return /* @__PURE__ */ React26.createElement(
4364
+ return /* @__PURE__ */ React25.createElement(
4874
4365
  Comp,
4875
4366
  {
4876
4367
  ref,
@@ -4887,11 +4378,11 @@ var NavigationMenuLink = React26.forwardRef(
4887
4378
  ...active ? { "aria-current": "page" } : {},
4888
4379
  ...props
4889
4380
  },
4890
- icon && /* @__PURE__ */ React26.createElement("span", { className: cn("shrink-0", s.icon) }, icon),
4381
+ icon && /* @__PURE__ */ React25.createElement("span", { className: cn("shrink-0", s.icon) }, icon),
4891
4382
  !collapsed && children
4892
4383
  );
4893
4384
  }
4894
- return /* @__PURE__ */ React26.createElement(
4385
+ return /* @__PURE__ */ React25.createElement(
4895
4386
  Comp,
4896
4387
  {
4897
4388
  ref,
@@ -4909,28 +4400,28 @@ var NavigationMenuLink = React26.forwardRef(
4909
4400
  ...collapsed && typeof children === "string" ? { title: children } : {},
4910
4401
  ...props
4911
4402
  },
4912
- icon && /* @__PURE__ */ React26.createElement("span", { className: cn("shrink-0", s.icon) }, icon),
4913
- !collapsed && /* @__PURE__ */ React26.createElement("span", { className: "truncate" }, children)
4403
+ icon && /* @__PURE__ */ React25.createElement("span", { className: cn("shrink-0", s.icon) }, icon),
4404
+ !collapsed && /* @__PURE__ */ React25.createElement("span", { className: "truncate" }, children)
4914
4405
  );
4915
4406
  }
4916
4407
  );
4917
4408
  NavigationMenuLink.displayName = "NavigationMenuLink";
4918
- var NavigationMenuGroup = React26.forwardRef(
4409
+ var NavigationMenuGroup = React25.forwardRef(
4919
4410
  ({ className, label, children, ...props }, ref) => {
4920
4411
  const { size, collapsed } = useNavigationMenuContext();
4921
4412
  const s = navigationMenuSizeMap[size];
4922
- return /* @__PURE__ */ React26.createElement("div", { ref, role: "group", className: cn(label && !collapsed && s.groupMargin, className), ...props }, label && !collapsed && /* @__PURE__ */ React26.createElement("div", { className: cn(
4413
+ return /* @__PURE__ */ React25.createElement("div", { ref, role: "group", className: cn(label && !collapsed && s.groupMargin, className), ...props }, label && !collapsed && /* @__PURE__ */ React25.createElement("div", { className: cn(
4923
4414
  "font-semibold text-text-subtle uppercase tracking-wider select-none",
4924
4415
  s.groupLabel
4925
- ) }, label), /* @__PURE__ */ React26.createElement("ul", { className: "flex flex-col gap-0.5" }, children));
4416
+ ) }, label), /* @__PURE__ */ React25.createElement("ul", { className: "flex flex-col gap-0.5" }, children));
4926
4417
  }
4927
4418
  );
4928
4419
  NavigationMenuGroup.displayName = "NavigationMenuGroup";
4929
- var NavigationMenuIndicator = React26.forwardRef(
4420
+ var NavigationMenuIndicator = React25.forwardRef(
4930
4421
  ({ className, color = "default", ...props }, ref) => {
4931
4422
  const { orientation } = useNavigationMenuContext();
4932
4423
  if (orientation === "vertical") return null;
4933
- return /* @__PURE__ */ React26.createElement(
4424
+ return /* @__PURE__ */ React25.createElement(
4934
4425
  NavigationMenuPrimitive.Indicator,
4935
4426
  {
4936
4427
  ref,
@@ -4942,7 +4433,7 @@ var NavigationMenuIndicator = React26.forwardRef(
4942
4433
  ),
4943
4434
  ...props
4944
4435
  },
4945
- /* @__PURE__ */ React26.createElement("div", { className: cn(
4436
+ /* @__PURE__ */ React25.createElement("div", { className: cn(
4946
4437
  "relative h-full w-full rounded-full",
4947
4438
  color === "default" ? "bg-foreground" : "bg-primary"
4948
4439
  ) })
@@ -4950,11 +4441,11 @@ var NavigationMenuIndicator = React26.forwardRef(
4950
4441
  }
4951
4442
  );
4952
4443
  NavigationMenuIndicator.displayName = "NavigationMenuIndicator";
4953
- var NavigationMenuViewport = React26.forwardRef(
4444
+ var NavigationMenuViewport = React25.forwardRef(
4954
4445
  ({ className, ...props }, ref) => {
4955
4446
  const { orientation } = useNavigationMenuContext();
4956
4447
  if (orientation === "vertical") return null;
4957
- return /* @__PURE__ */ React26.createElement("div", { className: "absolute left-0 top-full z-dropdown w-auto pt-1" }, /* @__PURE__ */ React26.createElement(
4448
+ return /* @__PURE__ */ React25.createElement("div", { className: "absolute left-0 top-full z-dropdown w-auto pt-1" }, /* @__PURE__ */ React25.createElement(
4958
4449
  NavigationMenuPrimitive.Viewport,
4959
4450
  {
4960
4451
  ref,
@@ -4986,10 +4477,10 @@ var NavigationMenu = Object.assign(NavigationMenuRoot, {
4986
4477
  });
4987
4478
 
4988
4479
  // src/components/ui/pagination.tsx
4989
- import * as React27 from "react";
4480
+ import * as React26 from "react";
4990
4481
  import { cva as cva21 } from "class-variance-authority";
4991
4482
  function ChevronLeftIcon({ className }) {
4992
- return /* @__PURE__ */ React27.createElement(
4483
+ return /* @__PURE__ */ React26.createElement(
4993
4484
  "svg",
4994
4485
  {
4995
4486
  className,
@@ -4998,11 +4489,11 @@ function ChevronLeftIcon({ className }) {
4998
4489
  stroke: "currentColor",
4999
4490
  strokeWidth: 2
5000
4491
  },
5001
- /* @__PURE__ */ React27.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M15 19l-7-7 7-7" })
4492
+ /* @__PURE__ */ React26.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M15 19l-7-7 7-7" })
5002
4493
  );
5003
4494
  }
5004
4495
  function ChevronRightIcon3({ className }) {
5005
- return /* @__PURE__ */ React27.createElement(
4496
+ return /* @__PURE__ */ React26.createElement(
5006
4497
  "svg",
5007
4498
  {
5008
4499
  className,
@@ -5011,11 +4502,11 @@ function ChevronRightIcon3({ className }) {
5011
4502
  stroke: "currentColor",
5012
4503
  strokeWidth: 2
5013
4504
  },
5014
- /* @__PURE__ */ React27.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" })
4505
+ /* @__PURE__ */ React26.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" })
5015
4506
  );
5016
4507
  }
5017
4508
  function ChevronsLeftIcon({ className }) {
5018
- return /* @__PURE__ */ React27.createElement(
4509
+ return /* @__PURE__ */ React26.createElement(
5019
4510
  "svg",
5020
4511
  {
5021
4512
  className,
@@ -5024,11 +4515,11 @@ function ChevronsLeftIcon({ className }) {
5024
4515
  stroke: "currentColor",
5025
4516
  strokeWidth: 2
5026
4517
  },
5027
- /* @__PURE__ */ React27.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M11 17l-5-5 5-5M18 17l-5-5 5-5" })
4518
+ /* @__PURE__ */ React26.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M11 17l-5-5 5-5M18 17l-5-5 5-5" })
5028
4519
  );
5029
4520
  }
5030
4521
  function ChevronsRightIcon({ className }) {
5031
- return /* @__PURE__ */ React27.createElement(
4522
+ return /* @__PURE__ */ React26.createElement(
5032
4523
  "svg",
5033
4524
  {
5034
4525
  className,
@@ -5037,20 +4528,20 @@ function ChevronsRightIcon({ className }) {
5037
4528
  stroke: "currentColor",
5038
4529
  strokeWidth: 2
5039
4530
  },
5040
- /* @__PURE__ */ React27.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M13 7l5 5-5 5M6 7l5 5-5 5" })
4531
+ /* @__PURE__ */ React26.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M13 7l5 5-5 5M6 7l5 5-5 5" })
5041
4532
  );
5042
4533
  }
5043
4534
  function EllipsisIcon2({ className }) {
5044
- return /* @__PURE__ */ React27.createElement(
4535
+ return /* @__PURE__ */ React26.createElement(
5045
4536
  "svg",
5046
4537
  {
5047
4538
  className,
5048
4539
  fill: "currentColor",
5049
4540
  viewBox: "0 0 24 24"
5050
4541
  },
5051
- /* @__PURE__ */ React27.createElement("circle", { cx: "6", cy: "12", r: "1.5" }),
5052
- /* @__PURE__ */ React27.createElement("circle", { cx: "12", cy: "12", r: "1.5" }),
5053
- /* @__PURE__ */ React27.createElement("circle", { cx: "18", cy: "12", r: "1.5" })
4542
+ /* @__PURE__ */ React26.createElement("circle", { cx: "6", cy: "12", r: "1.5" }),
4543
+ /* @__PURE__ */ React26.createElement("circle", { cx: "12", cy: "12", r: "1.5" }),
4544
+ /* @__PURE__ */ React26.createElement("circle", { cx: "18", cy: "12", r: "1.5" })
5054
4545
  );
5055
4546
  }
5056
4547
  function range(start, end) {
@@ -5091,9 +4582,9 @@ function usePagination({
5091
4582
  ...range(total - boundaries + 1, total)
5092
4583
  ];
5093
4584
  }
5094
- var PaginationContext = React27.createContext(null);
4585
+ var PaginationContext = React26.createContext(null);
5095
4586
  function usePaginationContext() {
5096
- const ctx = React27.useContext(PaginationContext);
4587
+ const ctx = React26.useContext(PaginationContext);
5097
4588
  if (!ctx) throw new Error("Pagination components must be used within <Pagination>");
5098
4589
  return ctx;
5099
4590
  }
@@ -5155,7 +4646,7 @@ function getItemClasses(variant, color, isActive, disabled) {
5155
4646
  return "border border-transparent text-text-muted hover:bg-background-muted hover:text-foreground";
5156
4647
  }
5157
4648
  }
5158
- var PaginationRoot = React27.forwardRef(
4649
+ var PaginationRoot = React26.forwardRef(
5159
4650
  ({
5160
4651
  className,
5161
4652
  total = 1,
@@ -5177,17 +4668,17 @@ var PaginationRoot = React27.forwardRef(
5177
4668
  children,
5178
4669
  ...props
5179
4670
  }, ref) => {
5180
- const [internalPage, setInternalPage] = React27.useState(defaultValue);
4671
+ const [internalPage, setInternalPage] = React26.useState(defaultValue);
5181
4672
  const isControlled = value !== void 0;
5182
4673
  const page = isControlled ? value : internalPage;
5183
- const handlePageChange = React27.useCallback((newPage) => {
4674
+ const handlePageChange = React26.useCallback((newPage) => {
5184
4675
  if (disabled) return;
5185
4676
  const clamped = Math.max(1, Math.min(total, newPage));
5186
4677
  if (!isControlled) setInternalPage(clamped);
5187
4678
  onChange?.(clamped);
5188
4679
  }, [disabled, total, isControlled, onChange]);
5189
4680
  const paginationRange = usePagination({ total, siblings, boundaries, page });
5190
- const contextValue = React27.useMemo(() => ({
4681
+ const contextValue = React26.useMemo(() => ({
5191
4682
  page,
5192
4683
  total,
5193
4684
  siblings,
@@ -5201,7 +4692,7 @@ var PaginationRoot = React27.forwardRef(
5201
4692
  onPageChange: handlePageChange,
5202
4693
  paginationRange
5203
4694
  }), [page, total, siblings, boundaries, size, variant, color, radius, disabled, loop, handlePageChange, paginationRange]);
5204
- return /* @__PURE__ */ React27.createElement(PaginationContext.Provider, { value: contextValue }, /* @__PURE__ */ React27.createElement(
4695
+ return /* @__PURE__ */ React26.createElement(PaginationContext.Provider, { value: contextValue }, /* @__PURE__ */ React26.createElement(
5205
4696
  "nav",
5206
4697
  {
5207
4698
  ref,
@@ -5215,11 +4706,11 @@ var PaginationRoot = React27.forwardRef(
5215
4706
  }
5216
4707
  );
5217
4708
  PaginationRoot.displayName = "Pagination";
5218
- var PaginationContent = React27.forwardRef(
4709
+ var PaginationContent = React26.forwardRef(
5219
4710
  ({ className, ...props }, ref) => {
5220
4711
  const { size } = usePaginationContext();
5221
4712
  const sizeClass = paginationSizeMap[size];
5222
- return /* @__PURE__ */ React27.createElement(
4713
+ return /* @__PURE__ */ React26.createElement(
5223
4714
  "ul",
5224
4715
  {
5225
4716
  ref,
@@ -5230,16 +4721,16 @@ var PaginationContent = React27.forwardRef(
5230
4721
  }
5231
4722
  );
5232
4723
  PaginationContent.displayName = "PaginationContent";
5233
- var PaginationItem = React27.forwardRef(
5234
- ({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement("li", { ref, className: cn("", className), ...props })
4724
+ var PaginationItem = React26.forwardRef(
4725
+ ({ className, ...props }, ref) => /* @__PURE__ */ React26.createElement("li", { ref, className: cn("", className), ...props })
5235
4726
  );
5236
4727
  PaginationItem.displayName = "PaginationItem";
5237
- var PaginationLink = React27.forwardRef(
4728
+ var PaginationLink = React26.forwardRef(
5238
4729
  ({ className, page: targetPage, isActive: isActiveProp, ...props }, ref) => {
5239
4730
  const ctx = usePaginationContext();
5240
4731
  const isActive = isActiveProp ?? ctx.page === targetPage;
5241
4732
  const sizeClass = paginationSizeMap[ctx.size];
5242
- return /* @__PURE__ */ React27.createElement(
4733
+ return /* @__PURE__ */ React26.createElement(
5243
4734
  "button",
5244
4735
  {
5245
4736
  ref,
@@ -5261,7 +4752,7 @@ var PaginationLink = React27.forwardRef(
5261
4752
  }
5262
4753
  );
5263
4754
  PaginationLink.displayName = "PaginationLink";
5264
- var PaginationPrevious = React27.forwardRef(
4755
+ var PaginationPrevious = React26.forwardRef(
5265
4756
  ({ className, icon, ...props }, ref) => {
5266
4757
  const ctx = usePaginationContext();
5267
4758
  const sizeClass = paginationSizeMap[ctx.size];
@@ -5273,7 +4764,7 @@ var PaginationPrevious = React27.forwardRef(
5273
4764
  ctx.onPageChange(ctx.page - 1);
5274
4765
  }
5275
4766
  };
5276
- return /* @__PURE__ */ React27.createElement(
4767
+ return /* @__PURE__ */ React26.createElement(
5277
4768
  "button",
5278
4769
  {
5279
4770
  ref,
@@ -5289,12 +4780,12 @@ var PaginationPrevious = React27.forwardRef(
5289
4780
  ),
5290
4781
  ...props
5291
4782
  },
5292
- icon ?? /* @__PURE__ */ React27.createElement(ChevronLeftIcon, { className: sizeClass.icon })
4783
+ icon ?? /* @__PURE__ */ React26.createElement(ChevronLeftIcon, { className: sizeClass.icon })
5293
4784
  );
5294
4785
  }
5295
4786
  );
5296
4787
  PaginationPrevious.displayName = "PaginationPrevious";
5297
- var PaginationNext = React27.forwardRef(
4788
+ var PaginationNext = React26.forwardRef(
5298
4789
  ({ className, icon, ...props }, ref) => {
5299
4790
  const ctx = usePaginationContext();
5300
4791
  const sizeClass = paginationSizeMap[ctx.size];
@@ -5306,7 +4797,7 @@ var PaginationNext = React27.forwardRef(
5306
4797
  ctx.onPageChange(ctx.page + 1);
5307
4798
  }
5308
4799
  };
5309
- return /* @__PURE__ */ React27.createElement(
4800
+ return /* @__PURE__ */ React26.createElement(
5310
4801
  "button",
5311
4802
  {
5312
4803
  ref,
@@ -5322,17 +4813,17 @@ var PaginationNext = React27.forwardRef(
5322
4813
  ),
5323
4814
  ...props
5324
4815
  },
5325
- icon ?? /* @__PURE__ */ React27.createElement(ChevronRightIcon3, { className: sizeClass.icon })
4816
+ icon ?? /* @__PURE__ */ React26.createElement(ChevronRightIcon3, { className: sizeClass.icon })
5326
4817
  );
5327
4818
  }
5328
4819
  );
5329
4820
  PaginationNext.displayName = "PaginationNext";
5330
- var PaginationFirst = React27.forwardRef(
4821
+ var PaginationFirst = React26.forwardRef(
5331
4822
  ({ className, icon, ...props }, ref) => {
5332
4823
  const ctx = usePaginationContext();
5333
4824
  const sizeClass = paginationSizeMap[ctx.size];
5334
4825
  const isDisabled = ctx.disabled || ctx.page <= 1;
5335
- return /* @__PURE__ */ React27.createElement(
4826
+ return /* @__PURE__ */ React26.createElement(
5336
4827
  "button",
5337
4828
  {
5338
4829
  ref,
@@ -5348,17 +4839,17 @@ var PaginationFirst = React27.forwardRef(
5348
4839
  ),
5349
4840
  ...props
5350
4841
  },
5351
- icon ?? /* @__PURE__ */ React27.createElement(ChevronsLeftIcon, { className: sizeClass.icon })
4842
+ icon ?? /* @__PURE__ */ React26.createElement(ChevronsLeftIcon, { className: sizeClass.icon })
5352
4843
  );
5353
4844
  }
5354
4845
  );
5355
4846
  PaginationFirst.displayName = "PaginationFirst";
5356
- var PaginationLast = React27.forwardRef(
4847
+ var PaginationLast = React26.forwardRef(
5357
4848
  ({ className, icon, ...props }, ref) => {
5358
4849
  const ctx = usePaginationContext();
5359
4850
  const sizeClass = paginationSizeMap[ctx.size];
5360
4851
  const isDisabled = ctx.disabled || ctx.page >= ctx.total;
5361
- return /* @__PURE__ */ React27.createElement(
4852
+ return /* @__PURE__ */ React26.createElement(
5362
4853
  "button",
5363
4854
  {
5364
4855
  ref,
@@ -5374,16 +4865,16 @@ var PaginationLast = React27.forwardRef(
5374
4865
  ),
5375
4866
  ...props
5376
4867
  },
5377
- icon ?? /* @__PURE__ */ React27.createElement(ChevronsRightIcon, { className: sizeClass.icon })
4868
+ icon ?? /* @__PURE__ */ React26.createElement(ChevronsRightIcon, { className: sizeClass.icon })
5378
4869
  );
5379
4870
  }
5380
4871
  );
5381
4872
  PaginationLast.displayName = "PaginationLast";
5382
- var PaginationEllipsis = React27.forwardRef(
4873
+ var PaginationEllipsis = React26.forwardRef(
5383
4874
  ({ className, ...props }, ref) => {
5384
4875
  const ctx = usePaginationContext();
5385
4876
  const sizeClass = paginationSizeMap[ctx.size];
5386
- return /* @__PURE__ */ React27.createElement(
4877
+ return /* @__PURE__ */ React26.createElement(
5387
4878
  "span",
5388
4879
  {
5389
4880
  ref,
@@ -5395,16 +4886,16 @@ var PaginationEllipsis = React27.forwardRef(
5395
4886
  ),
5396
4887
  ...props
5397
4888
  },
5398
- /* @__PURE__ */ React27.createElement(EllipsisIcon2, { className: sizeClass.icon }),
5399
- /* @__PURE__ */ React27.createElement("span", { className: "sr-only" }, "More pages")
4889
+ /* @__PURE__ */ React26.createElement(EllipsisIcon2, { className: sizeClass.icon }),
4890
+ /* @__PURE__ */ React26.createElement("span", { className: "sr-only" }, "More pages")
5400
4891
  );
5401
4892
  }
5402
4893
  );
5403
4894
  PaginationEllipsis.displayName = "PaginationEllipsis";
5404
- var PaginationItems = React27.forwardRef(
4895
+ var PaginationItems = React26.forwardRef(
5405
4896
  ({ className, ...props }, ref) => {
5406
4897
  const ctx = usePaginationContext();
5407
- return /* @__PURE__ */ React27.createElement("div", { ref, className: cn("contents", className), ...props }, ctx.paginationRange.map((item, index) => /* @__PURE__ */ React27.createElement(PaginationItem, { key: `${item}-${index}` }, item === "dots" ? /* @__PURE__ */ React27.createElement(PaginationEllipsis, null) : /* @__PURE__ */ React27.createElement(PaginationLink, { page: item }))));
4898
+ return /* @__PURE__ */ React26.createElement("div", { ref, className: cn("contents", className), ...props }, ctx.paginationRange.map((item, index) => /* @__PURE__ */ React26.createElement(PaginationItem, { key: `${item}-${index}` }, item === "dots" ? /* @__PURE__ */ React26.createElement(PaginationEllipsis, null) : /* @__PURE__ */ React26.createElement(PaginationLink, { page: item }))));
5408
4899
  }
5409
4900
  );
5410
4901
  PaginationItems.displayName = "PaginationItems";
@@ -5421,11 +4912,11 @@ var Pagination = Object.assign(PaginationRoot, {
5421
4912
  });
5422
4913
 
5423
4914
  // src/components/ui/modal.tsx
5424
- import * as React28 from "react";
4915
+ import * as React27 from "react";
5425
4916
  import * as DialogPrimitive from "@radix-ui/react-dialog";
5426
4917
  import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
5427
4918
  import { cva as cva22 } from "class-variance-authority";
5428
- var DefaultCloseIcon = ({ className }) => /* @__PURE__ */ React28.createElement(
4919
+ var DefaultCloseIcon = ({ className }) => /* @__PURE__ */ React27.createElement(
5429
4920
  "svg",
5430
4921
  {
5431
4922
  className,
@@ -5435,18 +4926,18 @@ var DefaultCloseIcon = ({ className }) => /* @__PURE__ */ React28.createElement(
5435
4926
  strokeWidth: 2,
5436
4927
  "aria-hidden": "true"
5437
4928
  },
5438
- /* @__PURE__ */ React28.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" })
4929
+ /* @__PURE__ */ React27.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" })
5439
4930
  );
5440
- var ModalStyleContext = React28.createContext({
4931
+ var ModalStyleContext = React27.createContext({
5441
4932
  scrollBehavior: "outside"
5442
4933
  });
5443
4934
  function ModalRoot(props) {
5444
- return /* @__PURE__ */ React28.createElement(DialogPrimitive.Root, { ...props });
4935
+ return /* @__PURE__ */ React27.createElement(DialogPrimitive.Root, { ...props });
5445
4936
  }
5446
4937
  var ModalTrigger = DialogPrimitive.Trigger;
5447
4938
  var ModalPortal = DialogPrimitive.Portal;
5448
4939
  var ModalClose = DialogPrimitive.Close;
5449
- var ModalOverlay = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
4940
+ var ModalOverlay = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
5450
4941
  DialogPrimitive.Overlay,
5451
4942
  {
5452
4943
  ref,
@@ -5480,19 +4971,19 @@ var modalContentVariants = cva22("", {
5480
4971
  size: "sm"
5481
4972
  }
5482
4973
  });
5483
- var ModalContent = React28.forwardRef(({ className, children, size = "sm", scrollBehavior = "outside", showCloseButton = true, closeIcon, ...props }, ref) => {
4974
+ var ModalContent = React27.forwardRef(({ className, children, size = "sm", scrollBehavior = "outside", showCloseButton = true, closeIcon, ...props }, ref) => {
5484
4975
  const isInside = scrollBehavior === "inside";
5485
4976
  const isFull = size === "full";
5486
4977
  const useInsideScroll = isInside || isFull;
5487
- const closeButton = showCloseButton && /* @__PURE__ */ React28.createElement(DialogPrimitive.Close, { className: cn(
4978
+ const closeButton = showCloseButton && /* @__PURE__ */ React27.createElement(DialogPrimitive.Close, { className: cn(
5488
4979
  "absolute right-4 top-4 rounded-md p-1",
5489
4980
  "text-text-muted hover:text-foreground",
5490
4981
  "transition-colors duration-fast",
5491
4982
  "focus-visible:focus-ring focus-visible:outline-none",
5492
4983
  "disabled:pointer-events-none"
5493
- ) }, closeIcon || /* @__PURE__ */ React28.createElement(DefaultCloseIcon, { className: "icon-sm" }), /* @__PURE__ */ React28.createElement("span", { className: "sr-only" }, "Close"));
4984
+ ) }, closeIcon || /* @__PURE__ */ React27.createElement(DefaultCloseIcon, { className: "icon-sm" }), /* @__PURE__ */ React27.createElement("span", { className: "sr-only" }, "Close"));
5494
4985
  if (!useInsideScroll) {
5495
- return /* @__PURE__ */ React28.createElement(ModalPortal, null, /* @__PURE__ */ React28.createElement(ModalOverlay, null), /* @__PURE__ */ React28.createElement(ModalStyleContext.Provider, { value: { scrollBehavior: "outside" } }, /* @__PURE__ */ React28.createElement(
4986
+ return /* @__PURE__ */ React27.createElement(ModalPortal, null, /* @__PURE__ */ React27.createElement(ModalOverlay, null), /* @__PURE__ */ React27.createElement(ModalStyleContext.Provider, { value: { scrollBehavior: "outside" } }, /* @__PURE__ */ React27.createElement(
5496
4987
  DialogPrimitive.Content,
5497
4988
  {
5498
4989
  ref,
@@ -5503,7 +4994,7 @@ var ModalContent = React28.forwardRef(({ className, children, size = "sm", scrol
5503
4994
  ),
5504
4995
  ...props
5505
4996
  },
5506
- /* @__PURE__ */ React28.createElement(DialogPrimitive.Close, { asChild: true }, /* @__PURE__ */ React28.createElement("div", { className: "flex min-h-full items-center justify-center p-4" }, /* @__PURE__ */ React28.createElement(
4997
+ /* @__PURE__ */ React27.createElement(DialogPrimitive.Close, { asChild: true }, /* @__PURE__ */ React27.createElement("div", { className: "flex min-h-full items-center justify-center p-4" }, /* @__PURE__ */ React27.createElement(
5507
4998
  "div",
5508
4999
  {
5509
5000
  className: cn(
@@ -5518,7 +5009,7 @@ var ModalContent = React28.forwardRef(({ className, children, size = "sm", scrol
5518
5009
  )))
5519
5010
  )));
5520
5011
  }
5521
- return /* @__PURE__ */ React28.createElement(ModalPortal, null, /* @__PURE__ */ React28.createElement(ModalOverlay, null), /* @__PURE__ */ React28.createElement(ModalStyleContext.Provider, { value: { scrollBehavior: "inside" } }, /* @__PURE__ */ React28.createElement("div", { className: "fixed inset-0 z-modal flex items-center justify-center p-4" }, /* @__PURE__ */ React28.createElement(
5012
+ return /* @__PURE__ */ React27.createElement(ModalPortal, null, /* @__PURE__ */ React27.createElement(ModalOverlay, null), /* @__PURE__ */ React27.createElement(ModalStyleContext.Provider, { value: { scrollBehavior: "inside" } }, /* @__PURE__ */ React27.createElement("div", { className: "fixed inset-0 z-modal flex items-center justify-center p-4" }, /* @__PURE__ */ React27.createElement(
5522
5013
  DialogPrimitive.Content,
5523
5014
  {
5524
5015
  ref,
@@ -5538,7 +5029,7 @@ var ModalContent = React28.forwardRef(({ className, children, size = "sm", scrol
5538
5029
  ))));
5539
5030
  });
5540
5031
  ModalContent.displayName = "ModalContent";
5541
- var ModalHeader = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5032
+ var ModalHeader = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
5542
5033
  "div",
5543
5034
  {
5544
5035
  ref,
@@ -5547,7 +5038,7 @@ var ModalHeader = React28.forwardRef(({ className, ...props }, ref) => /* @__PUR
5547
5038
  }
5548
5039
  ));
5549
5040
  ModalHeader.displayName = "ModalHeader";
5550
- var ModalTitle = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5041
+ var ModalTitle = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
5551
5042
  DialogPrimitive.Title,
5552
5043
  {
5553
5044
  ref,
@@ -5556,7 +5047,7 @@ var ModalTitle = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE
5556
5047
  }
5557
5048
  ));
5558
5049
  ModalTitle.displayName = "ModalTitle";
5559
- var ModalDescription = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5050
+ var ModalDescription = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
5560
5051
  DialogPrimitive.Description,
5561
5052
  {
5562
5053
  ref,
@@ -5565,9 +5056,9 @@ var ModalDescription = React28.forwardRef(({ className, ...props }, ref) => /* @
5565
5056
  }
5566
5057
  ));
5567
5058
  ModalDescription.displayName = "ModalDescription";
5568
- var ModalBody = React28.forwardRef(({ className, ...props }, ref) => {
5569
- const { scrollBehavior } = React28.useContext(ModalStyleContext);
5570
- return /* @__PURE__ */ React28.createElement(
5059
+ var ModalBody = React27.forwardRef(({ className, ...props }, ref) => {
5060
+ const { scrollBehavior } = React27.useContext(ModalStyleContext);
5061
+ return /* @__PURE__ */ React27.createElement(
5571
5062
  "div",
5572
5063
  {
5573
5064
  ref,
@@ -5581,7 +5072,7 @@ var ModalBody = React28.forwardRef(({ className, ...props }, ref) => {
5581
5072
  );
5582
5073
  });
5583
5074
  ModalBody.displayName = "ModalBody";
5584
- var ModalFooter = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5075
+ var ModalFooter = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
5585
5076
  "div",
5586
5077
  {
5587
5078
  ref,
@@ -5596,7 +5087,7 @@ ModalFooter.displayName = "ModalFooter";
5596
5087
  var AlertModalRoot = AlertDialogPrimitive.Root;
5597
5088
  var AlertModalTrigger = AlertDialogPrimitive.Trigger;
5598
5089
  var AlertModalPortal = AlertDialogPrimitive.Portal;
5599
- var AlertModalOverlay = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5090
+ var AlertModalOverlay = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
5600
5091
  AlertDialogPrimitive.Overlay,
5601
5092
  {
5602
5093
  ref,
@@ -5622,7 +5113,7 @@ var alertModalContentVariants = cva22("", {
5622
5113
  size: "sm"
5623
5114
  }
5624
5115
  });
5625
- var AlertModalContent = React28.forwardRef(({ className, children, size = "sm", ...props }, ref) => /* @__PURE__ */ React28.createElement(AlertModalPortal, null, /* @__PURE__ */ React28.createElement(AlertModalOverlay, null), /* @__PURE__ */ React28.createElement("div", { className: "fixed inset-0 z-modal flex items-center justify-center p-4" }, /* @__PURE__ */ React28.createElement(
5116
+ var AlertModalContent = React27.forwardRef(({ className, children, size = "sm", ...props }, ref) => /* @__PURE__ */ React27.createElement(AlertModalPortal, null, /* @__PURE__ */ React27.createElement(AlertModalOverlay, null), /* @__PURE__ */ React27.createElement("div", { className: "fixed inset-0 z-modal flex items-center justify-center p-4" }, /* @__PURE__ */ React27.createElement(
5626
5117
  AlertDialogPrimitive.Content,
5627
5118
  {
5628
5119
  ref,
@@ -5638,7 +5129,7 @@ var AlertModalContent = React28.forwardRef(({ className, children, size = "sm",
5638
5129
  children
5639
5130
  ))));
5640
5131
  AlertModalContent.displayName = "AlertModalContent";
5641
- var AlertModalHeader = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5132
+ var AlertModalHeader = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
5642
5133
  "div",
5643
5134
  {
5644
5135
  ref,
@@ -5647,7 +5138,7 @@ var AlertModalHeader = React28.forwardRef(({ className, ...props }, ref) => /* @
5647
5138
  }
5648
5139
  ));
5649
5140
  AlertModalHeader.displayName = "AlertModalHeader";
5650
- var AlertModalTitle = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5141
+ var AlertModalTitle = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
5651
5142
  AlertDialogPrimitive.Title,
5652
5143
  {
5653
5144
  ref,
@@ -5656,7 +5147,7 @@ var AlertModalTitle = React28.forwardRef(({ className, ...props }, ref) => /* @_
5656
5147
  }
5657
5148
  ));
5658
5149
  AlertModalTitle.displayName = "AlertModalTitle";
5659
- var AlertModalDescription = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5150
+ var AlertModalDescription = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
5660
5151
  AlertDialogPrimitive.Description,
5661
5152
  {
5662
5153
  ref,
@@ -5665,7 +5156,7 @@ var AlertModalDescription = React28.forwardRef(({ className, ...props }, ref) =>
5665
5156
  }
5666
5157
  ));
5667
5158
  AlertModalDescription.displayName = "AlertModalDescription";
5668
- var AlertModalBody = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5159
+ var AlertModalBody = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
5669
5160
  "div",
5670
5161
  {
5671
5162
  ref,
@@ -5674,7 +5165,7 @@ var AlertModalBody = React28.forwardRef(({ className, ...props }, ref) => /* @__
5674
5165
  }
5675
5166
  ));
5676
5167
  AlertModalBody.displayName = "AlertModalBody";
5677
- var AlertModalFooter = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5168
+ var AlertModalFooter = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
5678
5169
  "div",
5679
5170
  {
5680
5171
  ref,
@@ -5686,7 +5177,7 @@ var AlertModalFooter = React28.forwardRef(({ className, ...props }, ref) => /* @
5686
5177
  }
5687
5178
  ));
5688
5179
  AlertModalFooter.displayName = "AlertModalFooter";
5689
- var AlertModalAction = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5180
+ var AlertModalAction = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
5690
5181
  AlertDialogPrimitive.Action,
5691
5182
  {
5692
5183
  ref,
@@ -5695,7 +5186,7 @@ var AlertModalAction = React28.forwardRef(({ className, ...props }, ref) => /* @
5695
5186
  }
5696
5187
  ));
5697
5188
  AlertModalAction.displayName = "AlertModalAction";
5698
- var AlertModalCancel = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5189
+ var AlertModalCancel = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
5699
5190
  AlertDialogPrimitive.Cancel,
5700
5191
  {
5701
5192
  ref,
@@ -5731,10 +5222,10 @@ var AlertModal = Object.assign(AlertModalRoot, {
5731
5222
  });
5732
5223
 
5733
5224
  // src/components/ui/drawer.tsx
5734
- import * as React29 from "react";
5225
+ import * as React28 from "react";
5735
5226
  import * as DialogPrimitive2 from "@radix-ui/react-dialog";
5736
5227
  import { cva as cva23 } from "class-variance-authority";
5737
- var DefaultCloseIcon2 = ({ className }) => /* @__PURE__ */ React29.createElement(
5228
+ var DefaultCloseIcon2 = ({ className }) => /* @__PURE__ */ React28.createElement(
5738
5229
  "svg",
5739
5230
  {
5740
5231
  className,
@@ -5744,7 +5235,7 @@ var DefaultCloseIcon2 = ({ className }) => /* @__PURE__ */ React29.createElement
5744
5235
  strokeWidth: 2,
5745
5236
  "aria-hidden": "true"
5746
5237
  },
5747
- /* @__PURE__ */ React29.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" })
5238
+ /* @__PURE__ */ React28.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" })
5748
5239
  );
5749
5240
  var ANIMATION_CLASSES = {
5750
5241
  right: "data-[state=open]:animate-drawer-right-enter data-[state=closed]:animate-drawer-right-exit",
@@ -5777,12 +5268,12 @@ var drawerSizeVertical = cva23("", {
5777
5268
  defaultVariants: { size: "md" }
5778
5269
  });
5779
5270
  function DrawerRoot(props) {
5780
- return /* @__PURE__ */ React29.createElement(DialogPrimitive2.Root, { ...props });
5271
+ return /* @__PURE__ */ React28.createElement(DialogPrimitive2.Root, { ...props });
5781
5272
  }
5782
5273
  var DrawerTrigger = DialogPrimitive2.Trigger;
5783
5274
  var DrawerPortal = DialogPrimitive2.Portal;
5784
5275
  var DrawerClose = DialogPrimitive2.Close;
5785
- var DrawerOverlay = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React29.createElement(
5276
+ var DrawerOverlay = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5786
5277
  DialogPrimitive2.Overlay,
5787
5278
  {
5788
5279
  ref,
@@ -5801,10 +5292,10 @@ var SIDE_POSITION = {
5801
5292
  top: "inset-x-0 top-0",
5802
5293
  bottom: "inset-x-0 bottom-0"
5803
5294
  };
5804
- var DrawerContent = React29.forwardRef(({ className, children, side = "right", size = "md", showCloseButton = true, closeIcon, ...props }, ref) => {
5295
+ var DrawerContent = React28.forwardRef(({ className, children, side = "right", size = "md", showCloseButton = true, closeIcon, ...props }, ref) => {
5805
5296
  const isHorizontal = side === "left" || side === "right";
5806
5297
  const sizeClass = isHorizontal ? drawerSizeHorizontal({ size }) : drawerSizeVertical({ size });
5807
- return /* @__PURE__ */ React29.createElement(DrawerPortal, null, /* @__PURE__ */ React29.createElement(DrawerOverlay, null), /* @__PURE__ */ React29.createElement(
5298
+ return /* @__PURE__ */ React28.createElement(DrawerPortal, null, /* @__PURE__ */ React28.createElement(DrawerOverlay, null), /* @__PURE__ */ React28.createElement(
5808
5299
  DialogPrimitive2.Content,
5809
5300
  {
5810
5301
  ref,
@@ -5820,17 +5311,17 @@ var DrawerContent = React29.forwardRef(({ className, children, side = "right", s
5820
5311
  ...props
5821
5312
  },
5822
5313
  children,
5823
- showCloseButton && /* @__PURE__ */ React29.createElement(DialogPrimitive2.Close, { className: cn(
5314
+ showCloseButton && /* @__PURE__ */ React28.createElement(DialogPrimitive2.Close, { className: cn(
5824
5315
  "absolute right-4 top-4 rounded-md p-1",
5825
5316
  "text-text-muted hover:text-foreground",
5826
5317
  "transition-colors duration-fast",
5827
5318
  "focus-visible:focus-ring focus-visible:outline-none",
5828
5319
  "disabled:pointer-events-none"
5829
- ) }, closeIcon || /* @__PURE__ */ React29.createElement(DefaultCloseIcon2, { className: "icon-sm" }), /* @__PURE__ */ React29.createElement("span", { className: "sr-only" }, "Close"))
5320
+ ) }, closeIcon || /* @__PURE__ */ React28.createElement(DefaultCloseIcon2, { className: "icon-sm" }), /* @__PURE__ */ React28.createElement("span", { className: "sr-only" }, "Close"))
5830
5321
  ));
5831
5322
  });
5832
5323
  DrawerContent.displayName = "DrawerContent";
5833
- var DrawerHeader = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React29.createElement(
5324
+ var DrawerHeader = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5834
5325
  "div",
5835
5326
  {
5836
5327
  ref,
@@ -5839,7 +5330,7 @@ var DrawerHeader = React29.forwardRef(({ className, ...props }, ref) => /* @__PU
5839
5330
  }
5840
5331
  ));
5841
5332
  DrawerHeader.displayName = "DrawerHeader";
5842
- var DrawerTitle = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React29.createElement(
5333
+ var DrawerTitle = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5843
5334
  DialogPrimitive2.Title,
5844
5335
  {
5845
5336
  ref,
@@ -5848,7 +5339,7 @@ var DrawerTitle = React29.forwardRef(({ className, ...props }, ref) => /* @__PUR
5848
5339
  }
5849
5340
  ));
5850
5341
  DrawerTitle.displayName = "DrawerTitle";
5851
- var DrawerDescription = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React29.createElement(
5342
+ var DrawerDescription = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5852
5343
  DialogPrimitive2.Description,
5853
5344
  {
5854
5345
  ref,
@@ -5857,7 +5348,7 @@ var DrawerDescription = React29.forwardRef(({ className, ...props }, ref) => /*
5857
5348
  }
5858
5349
  ));
5859
5350
  DrawerDescription.displayName = "DrawerDescription";
5860
- var DrawerBody = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React29.createElement(
5351
+ var DrawerBody = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5861
5352
  "div",
5862
5353
  {
5863
5354
  ref,
@@ -5866,7 +5357,7 @@ var DrawerBody = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE
5866
5357
  }
5867
5358
  ));
5868
5359
  DrawerBody.displayName = "DrawerBody";
5869
- var DrawerFooter = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React29.createElement(
5360
+ var DrawerFooter = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5870
5361
  "div",
5871
5362
  {
5872
5363
  ref,
@@ -5892,7 +5383,7 @@ var Drawer = Object.assign(DrawerRoot, {
5892
5383
  });
5893
5384
 
5894
5385
  // src/components/ui/tooltip.tsx
5895
- import * as React30 from "react";
5386
+ import * as React29 from "react";
5896
5387
  import * as TooltipPrimitive from "@radix-ui/react-tooltip";
5897
5388
  import { cva as cva24 } from "class-variance-authority";
5898
5389
  var ANIMATION_CLASSES2 = {
@@ -5926,13 +5417,13 @@ var ARROW_FILL = {
5926
5417
  };
5927
5418
  var TooltipProvider = TooltipPrimitive.Provider;
5928
5419
  function TooltipRoot({ delayDuration = 200, ...props }) {
5929
- return /* @__PURE__ */ React30.createElement(TooltipPrimitive.Root, { delayDuration, ...props });
5420
+ return /* @__PURE__ */ React29.createElement(TooltipPrimitive.Root, { delayDuration, ...props });
5930
5421
  }
5931
5422
  var TooltipTrigger = TooltipPrimitive.Trigger;
5932
5423
  var TooltipPortal = TooltipPrimitive.Portal;
5933
- var TooltipContent = React30.forwardRef(({ className, variant = "default", size, side = "top", sideOffset = 6, showArrow = true, children, ...props }, ref) => {
5424
+ var TooltipContent = React29.forwardRef(({ className, variant = "default", size, side = "top", sideOffset = 6, showArrow = true, children, ...props }, ref) => {
5934
5425
  const resolvedSide = side;
5935
- return /* @__PURE__ */ React30.createElement(TooltipPrimitive.Portal, null, /* @__PURE__ */ React30.createElement(
5426
+ return /* @__PURE__ */ React29.createElement(TooltipPrimitive.Portal, null, /* @__PURE__ */ React29.createElement(
5936
5427
  TooltipPrimitive.Content,
5937
5428
  {
5938
5429
  ref,
@@ -5946,7 +5437,7 @@ var TooltipContent = React30.forwardRef(({ className, variant = "default", size,
5946
5437
  ...props
5947
5438
  },
5948
5439
  children,
5949
- showArrow && /* @__PURE__ */ React30.createElement(
5440
+ showArrow && /* @__PURE__ */ React29.createElement(
5950
5441
  TooltipPrimitive.Arrow,
5951
5442
  {
5952
5443
  className: ARROW_FILL[variant || "default"],
@@ -5957,7 +5448,7 @@ var TooltipContent = React30.forwardRef(({ className, variant = "default", size,
5957
5448
  ));
5958
5449
  });
5959
5450
  TooltipContent.displayName = "TooltipContent";
5960
- var TooltipArrow = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React30.createElement(
5451
+ var TooltipArrow = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React29.createElement(
5961
5452
  TooltipPrimitive.Arrow,
5962
5453
  {
5963
5454
  ref,
@@ -5968,7 +5459,7 @@ var TooltipArrow = React30.forwardRef(({ className, ...props }, ref) => /* @__PU
5968
5459
  }
5969
5460
  ));
5970
5461
  TooltipArrow.displayName = "TooltipArrow";
5971
- var Tooltip2 = Object.assign(TooltipRoot, {
5462
+ var Tooltip = Object.assign(TooltipRoot, {
5972
5463
  Trigger: TooltipTrigger,
5973
5464
  Content: TooltipContent,
5974
5465
  Arrow: TooltipArrow,
@@ -5977,10 +5468,10 @@ var Tooltip2 = Object.assign(TooltipRoot, {
5977
5468
  });
5978
5469
 
5979
5470
  // src/components/ui/popover.tsx
5980
- import * as React31 from "react";
5471
+ import * as React30 from "react";
5981
5472
  import * as PopoverPrimitive from "@radix-ui/react-popover";
5982
5473
  import { cva as cva25 } from "class-variance-authority";
5983
- var DefaultCloseIcon3 = ({ className }) => /* @__PURE__ */ React31.createElement(
5474
+ var DefaultCloseIcon3 = ({ className }) => /* @__PURE__ */ React30.createElement(
5984
5475
  "svg",
5985
5476
  {
5986
5477
  className,
@@ -5990,7 +5481,7 @@ var DefaultCloseIcon3 = ({ className }) => /* @__PURE__ */ React31.createElement
5990
5481
  strokeWidth: 2,
5991
5482
  "aria-hidden": "true"
5992
5483
  },
5993
- /* @__PURE__ */ React31.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" })
5484
+ /* @__PURE__ */ React30.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" })
5994
5485
  );
5995
5486
  var ANIMATION_CLASSES3 = {
5996
5487
  top: "data-[state=open]:animate-popover-top-enter data-[state=closed]:animate-popover-top-exit",
@@ -6026,16 +5517,16 @@ var CSS_ARROW_CLASSES = {
6026
5517
  };
6027
5518
  var ARROW_ELEVATED = "fill-background-paper drop-shadow-sm";
6028
5519
  function PopoverRoot(props) {
6029
- return /* @__PURE__ */ React31.createElement(PopoverPrimitive.Root, { ...props });
5520
+ return /* @__PURE__ */ React30.createElement(PopoverPrimitive.Root, { ...props });
6030
5521
  }
6031
5522
  var PopoverTrigger = PopoverPrimitive.Trigger;
6032
5523
  var PopoverPortal = PopoverPrimitive.Portal;
6033
5524
  var PopoverAnchor = PopoverPrimitive.Anchor;
6034
5525
  var PopoverClose = PopoverPrimitive.Close;
6035
- var PopoverContent = React31.forwardRef(({ className, variant = "default", size, side = "bottom", sideOffset, showArrow = true, showClose = false, closeIcon, children, ...props }, ref) => {
5526
+ var PopoverContent = React30.forwardRef(({ className, variant = "default", size, side = "bottom", sideOffset, showArrow = true, showClose = false, closeIcon, children, ...props }, ref) => {
6036
5527
  const resolvedSide = side;
6037
5528
  const resolvedOffset = sideOffset ?? (variant === "default" && showArrow ? 12 : 6);
6038
- return /* @__PURE__ */ React31.createElement(PopoverPrimitive.Portal, null, /* @__PURE__ */ React31.createElement(
5529
+ return /* @__PURE__ */ React30.createElement(PopoverPrimitive.Portal, null, /* @__PURE__ */ React30.createElement(
6039
5530
  PopoverPrimitive.Content,
6040
5531
  {
6041
5532
  ref,
@@ -6048,16 +5539,16 @@ var PopoverContent = React31.forwardRef(({ className, variant = "default", size,
6048
5539
  ),
6049
5540
  ...props
6050
5541
  },
6051
- showClose && /* @__PURE__ */ React31.createElement(
5542
+ showClose && /* @__PURE__ */ React30.createElement(
6052
5543
  PopoverPrimitive.Close,
6053
5544
  {
6054
5545
  className: "absolute top-3 right-3 rounded-md p-1 text-text-muted hover:text-foreground hover:bg-background-muted transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-focus-ring",
6055
5546
  "aria-label": "Close"
6056
5547
  },
6057
- closeIcon || /* @__PURE__ */ React31.createElement(DefaultCloseIcon3, { className: "icon-sm" })
5548
+ closeIcon || /* @__PURE__ */ React30.createElement(DefaultCloseIcon3, { className: "icon-sm" })
6058
5549
  ),
6059
5550
  children,
6060
- showArrow && variant === "default" && /* @__PURE__ */ React31.createElement(
5551
+ showArrow && variant === "default" && /* @__PURE__ */ React30.createElement(
6061
5552
  "div",
6062
5553
  {
6063
5554
  className: cn(
@@ -6066,7 +5557,7 @@ var PopoverContent = React31.forwardRef(({ className, variant = "default", size,
6066
5557
  )
6067
5558
  }
6068
5559
  ),
6069
- showArrow && variant === "elevated" && /* @__PURE__ */ React31.createElement(
5560
+ showArrow && variant === "elevated" && /* @__PURE__ */ React30.createElement(
6070
5561
  PopoverPrimitive.Arrow,
6071
5562
  {
6072
5563
  className: ARROW_ELEVATED,
@@ -6077,7 +5568,7 @@ var PopoverContent = React31.forwardRef(({ className, variant = "default", size,
6077
5568
  ));
6078
5569
  });
6079
5570
  PopoverContent.displayName = "PopoverContent";
6080
- var PopoverArrow = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React31.createElement(
5571
+ var PopoverArrow = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React30.createElement(
6081
5572
  PopoverPrimitive.Arrow,
6082
5573
  {
6083
5574
  ref,
@@ -6098,13 +5589,13 @@ var Popover = Object.assign(PopoverRoot, {
6098
5589
  });
6099
5590
 
6100
5591
  // src/components/ui/alert.tsx
6101
- import * as React32 from "react";
5592
+ import * as React31 from "react";
6102
5593
  import { cva as cva26 } from "class-variance-authority";
6103
- var InfoIcon = ({ className }) => /* @__PURE__ */ React32.createElement("svg", { className, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ React32.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ React32.createElement("path", { d: "M12 16v-4" }), /* @__PURE__ */ React32.createElement("path", { d: "M12 8h.01" }));
6104
- var SuccessIcon = ({ className }) => /* @__PURE__ */ React32.createElement("svg", { className, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ React32.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ React32.createElement("path", { d: "m9 12 2 2 4-4" }));
6105
- var WarningIcon = ({ className }) => /* @__PURE__ */ React32.createElement("svg", { className, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ React32.createElement("path", { d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3" }), /* @__PURE__ */ React32.createElement("path", { d: "M12 9v4" }), /* @__PURE__ */ React32.createElement("path", { d: "M12 17h.01" }));
6106
- var ErrorIcon = ({ className }) => /* @__PURE__ */ React32.createElement("svg", { className, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ React32.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ React32.createElement("path", { d: "M12 8v5" }), /* @__PURE__ */ React32.createElement("path", { d: "M12 16h.01" }));
6107
- var DefaultCloseIcon4 = ({ className }) => /* @__PURE__ */ React32.createElement("svg", { className, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, "aria-hidden": "true" }, /* @__PURE__ */ React32.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" }));
5594
+ var InfoIcon = ({ className }) => /* @__PURE__ */ React31.createElement("svg", { className, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ React31.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ React31.createElement("path", { d: "M12 16v-4" }), /* @__PURE__ */ React31.createElement("path", { d: "M12 8h.01" }));
5595
+ var SuccessIcon = ({ className }) => /* @__PURE__ */ React31.createElement("svg", { className, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ React31.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ React31.createElement("path", { d: "m9 12 2 2 4-4" }));
5596
+ var WarningIcon = ({ className }) => /* @__PURE__ */ React31.createElement("svg", { className, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ React31.createElement("path", { d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3" }), /* @__PURE__ */ React31.createElement("path", { d: "M12 9v4" }), /* @__PURE__ */ React31.createElement("path", { d: "M12 17h.01" }));
5597
+ var ErrorIcon = ({ className }) => /* @__PURE__ */ React31.createElement("svg", { className, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ React31.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ React31.createElement("path", { d: "M12 8v5" }), /* @__PURE__ */ React31.createElement("path", { d: "M12 16h.01" }));
5598
+ var DefaultCloseIcon4 = ({ className }) => /* @__PURE__ */ React31.createElement("svg", { className, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, "aria-hidden": "true" }, /* @__PURE__ */ React31.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" }));
6108
5599
  var STATUS_ICONS = {
6109
5600
  info: InfoIcon,
6110
5601
  success: SuccessIcon,
@@ -6178,15 +5669,15 @@ var DESC_SIZE_MAP = {
6178
5669
  default: "text-sm mt-1",
6179
5670
  lg: "text-md mt-1.5"
6180
5671
  };
6181
- var AlertContext = React32.createContext({
5672
+ var AlertContext = React31.createContext({
6182
5673
  variant: "default",
6183
5674
  color: "info",
6184
5675
  size: "default"
6185
5676
  });
6186
5677
  function useAlertContext() {
6187
- return React32.useContext(AlertContext);
5678
+ return React31.useContext(AlertContext);
6188
5679
  }
6189
- var AlertRoot = React32.forwardRef(
5680
+ var AlertRoot = React31.forwardRef(
6190
5681
  ({
6191
5682
  className,
6192
5683
  variant = "default",
@@ -6204,7 +5695,7 @@ var AlertRoot = React32.forwardRef(
6204
5695
  const role = color === "error" ? "alert" : "status";
6205
5696
  const colorClasses = colorMap2[color][variant];
6206
5697
  const StatusIcon = STATUS_ICONS[color];
6207
- return /* @__PURE__ */ React32.createElement(AlertContext.Provider, { value: { variant, color, size } }, /* @__PURE__ */ React32.createElement(
5698
+ return /* @__PURE__ */ React31.createElement(AlertContext.Provider, { value: { variant, color, size } }, /* @__PURE__ */ React31.createElement(
6208
5699
  "div",
6209
5700
  {
6210
5701
  ref,
@@ -6216,9 +5707,9 @@ var AlertRoot = React32.forwardRef(
6216
5707
  ),
6217
5708
  ...props
6218
5709
  },
6219
- !hideIcon && /* @__PURE__ */ React32.createElement("span", { className: "shrink-0" }, icon || /* @__PURE__ */ React32.createElement(StatusIcon, { className: ICON_SIZE_MAP[size] })),
6220
- /* @__PURE__ */ React32.createElement("div", { className: "flex-1 min-w-0" }, children),
6221
- closable && /* @__PURE__ */ React32.createElement(
5710
+ !hideIcon && /* @__PURE__ */ React31.createElement("span", { className: "shrink-0" }, icon || /* @__PURE__ */ React31.createElement(StatusIcon, { className: ICON_SIZE_MAP[size] })),
5711
+ /* @__PURE__ */ React31.createElement("div", { className: "flex-1 min-w-0" }, children),
5712
+ closable && /* @__PURE__ */ React31.createElement(
6222
5713
  "button",
6223
5714
  {
6224
5715
  type: "button",
@@ -6230,16 +5721,16 @@ var AlertRoot = React32.forwardRef(
6230
5721
  onClick: onClose,
6231
5722
  "aria-label": "Close"
6232
5723
  },
6233
- closeIcon || /* @__PURE__ */ React32.createElement(DefaultCloseIcon4, { className: "icon-sm" })
5724
+ closeIcon || /* @__PURE__ */ React31.createElement(DefaultCloseIcon4, { className: "icon-sm" })
6234
5725
  )
6235
5726
  ));
6236
5727
  }
6237
5728
  );
6238
5729
  AlertRoot.displayName = "AlertRoot";
6239
- var AlertTitle = React32.forwardRef(
5730
+ var AlertTitle = React31.forwardRef(
6240
5731
  ({ className, ...props }, ref) => {
6241
5732
  const { size } = useAlertContext();
6242
- return /* @__PURE__ */ React32.createElement(
5733
+ return /* @__PURE__ */ React31.createElement(
6243
5734
  "h5",
6244
5735
  {
6245
5736
  ref,
@@ -6250,10 +5741,10 @@ var AlertTitle = React32.forwardRef(
6250
5741
  }
6251
5742
  );
6252
5743
  AlertTitle.displayName = "AlertTitle";
6253
- var AlertDescription = React32.forwardRef(
5744
+ var AlertDescription = React31.forwardRef(
6254
5745
  ({ className, ...props }, ref) => {
6255
5746
  const { variant, size } = useAlertContext();
6256
- return /* @__PURE__ */ React32.createElement(
5747
+ return /* @__PURE__ */ React31.createElement(
6257
5748
  "p",
6258
5749
  {
6259
5750
  ref,
@@ -6275,14 +5766,14 @@ var Alert = Object.assign(AlertRoot, {
6275
5766
  });
6276
5767
 
6277
5768
  // src/components/ui/toast.tsx
6278
- import * as React33 from "react";
5769
+ import * as React32 from "react";
6279
5770
  import { cva as cva27 } from "class-variance-authority";
6280
- var InfoIcon2 = ({ className }) => /* @__PURE__ */ React33.createElement("svg", { className, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ React33.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ React33.createElement("path", { d: "M12 16v-4" }), /* @__PURE__ */ React33.createElement("path", { d: "M12 8h.01" }));
6281
- var SuccessIcon2 = ({ className }) => /* @__PURE__ */ React33.createElement("svg", { className, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ React33.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ React33.createElement("path", { d: "m9 12 2 2 4-4" }));
6282
- var WarningIcon2 = ({ className }) => /* @__PURE__ */ React33.createElement("svg", { className, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ React33.createElement("path", { d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3" }), /* @__PURE__ */ React33.createElement("path", { d: "M12 9v4" }), /* @__PURE__ */ React33.createElement("path", { d: "M12 17h.01" }));
6283
- var ErrorIcon2 = ({ className }) => /* @__PURE__ */ React33.createElement("svg", { className, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ React33.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ React33.createElement("path", { d: "M12 8v5" }), /* @__PURE__ */ React33.createElement("path", { d: "M12 16h.01" }));
6284
- var DefaultCloseIcon5 = ({ className }) => /* @__PURE__ */ React33.createElement("svg", { className, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, "aria-hidden": "true" }, /* @__PURE__ */ React33.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" }));
6285
- var LoadingIcon = ({ className }) => /* @__PURE__ */ React33.createElement("svg", { className: cn("animate-spin", className), viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, "aria-hidden": "true" }, /* @__PURE__ */ React33.createElement("path", { d: "M21 12a9 9 0 1 1-6.219-8.56", strokeLinecap: "round" }));
5771
+ var InfoIcon2 = ({ className }) => /* @__PURE__ */ React32.createElement("svg", { className, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ React32.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ React32.createElement("path", { d: "M12 16v-4" }), /* @__PURE__ */ React32.createElement("path", { d: "M12 8h.01" }));
5772
+ var SuccessIcon2 = ({ className }) => /* @__PURE__ */ React32.createElement("svg", { className, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ React32.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ React32.createElement("path", { d: "m9 12 2 2 4-4" }));
5773
+ var WarningIcon2 = ({ className }) => /* @__PURE__ */ React32.createElement("svg", { className, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ React32.createElement("path", { d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3" }), /* @__PURE__ */ React32.createElement("path", { d: "M12 9v4" }), /* @__PURE__ */ React32.createElement("path", { d: "M12 17h.01" }));
5774
+ var ErrorIcon2 = ({ className }) => /* @__PURE__ */ React32.createElement("svg", { className, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ React32.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ React32.createElement("path", { d: "M12 8v5" }), /* @__PURE__ */ React32.createElement("path", { d: "M12 16h.01" }));
5775
+ var DefaultCloseIcon5 = ({ className }) => /* @__PURE__ */ React32.createElement("svg", { className, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, "aria-hidden": "true" }, /* @__PURE__ */ React32.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" }));
5776
+ var LoadingIcon = ({ className }) => /* @__PURE__ */ React32.createElement("svg", { className: cn("animate-spin", className), viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, "aria-hidden": "true" }, /* @__PURE__ */ React32.createElement("path", { d: "M21 12a9 9 0 1 1-6.219-8.56", strokeLinecap: "round" }));
6286
5777
  var STATUS_ICONS2 = {
6287
5778
  default: InfoIcon2,
6288
5779
  success: SuccessIcon2,
@@ -6361,8 +5852,8 @@ function createToastStore() {
6361
5852
  }
6362
5853
  var globalStore = createToastStore();
6363
5854
  function useToastStore() {
6364
- const [, forceUpdate] = React33.useState(0);
6365
- React33.useEffect(() => {
5855
+ const [, forceUpdate] = React32.useState(0);
5856
+ React32.useEffect(() => {
6366
5857
  return globalStore.subscribe(() => forceUpdate((n) => n + 1));
6367
5858
  }, []);
6368
5859
  return globalStore.toasts;
@@ -6456,7 +5947,7 @@ toast.custom = (render, opts) => {
6456
5947
  });
6457
5948
  return id;
6458
5949
  };
6459
- var ToastItem = React33.memo(function ToastItem2({
5950
+ var ToastItem = React32.memo(function ToastItem2({
6460
5951
  data,
6461
5952
  position,
6462
5953
  size,
@@ -6465,13 +5956,13 @@ var ToastItem = React33.memo(function ToastItem2({
6465
5956
  defaultDuration,
6466
5957
  onRemove
6467
5958
  }) {
6468
- const [isExiting, setIsExiting] = React33.useState(false);
6469
- const [isEntered, setIsEntered] = React33.useState(false);
6470
- const [isPaused, setIsPaused] = React33.useState(false);
6471
- const timerRef = React33.useRef(null);
6472
- const remainingRef = React33.useRef(0);
6473
- const startTimeRef = React33.useRef(0);
6474
- React33.useEffect(() => {
5959
+ const [isExiting, setIsExiting] = React32.useState(false);
5960
+ const [isEntered, setIsEntered] = React32.useState(false);
5961
+ const [isPaused, setIsPaused] = React32.useState(false);
5962
+ const timerRef = React32.useRef(null);
5963
+ const remainingRef = React32.useRef(0);
5964
+ const startTimeRef = React32.useRef(0);
5965
+ React32.useEffect(() => {
6475
5966
  const timer = setTimeout(() => setIsEntered(true), TOAST_EXIT_DURATION);
6476
5967
  return () => clearTimeout(timer);
6477
5968
  }, []);
@@ -6484,18 +5975,18 @@ var ToastItem = React33.memo(function ToastItem2({
6484
5975
  const StatusIcon = STATUS_ICONS2[data.type];
6485
5976
  const enterAnim = position.includes("right") ? "animate-toast-slide-in-right" : position.includes("left") ? "animate-toast-slide-in-left" : position.includes("top") ? "animate-toast-slide-in-top" : "animate-toast-slide-in-bottom";
6486
5977
  const exitAnim = position.includes("right") ? "animate-toast-slide-out-right" : position.includes("left") ? "animate-toast-slide-out-left" : position.includes("top") ? "animate-toast-slide-out-top" : "animate-toast-slide-out-bottom";
6487
- const handleDismiss = React33.useCallback(() => {
5978
+ const handleDismiss = React32.useCallback(() => {
6488
5979
  if (!dismissible) return;
6489
5980
  setIsExiting(true);
6490
5981
  data.onDismiss?.(data);
6491
5982
  setTimeout(() => onRemove(data.id), TOAST_EXIT_DURATION);
6492
5983
  }, [data, dismissible, onRemove]);
6493
- const handleAutoClose = React33.useCallback(() => {
5984
+ const handleAutoClose = React32.useCallback(() => {
6494
5985
  setIsExiting(true);
6495
5986
  data.onAutoClose?.(data);
6496
5987
  setTimeout(() => onRemove(data.id), TOAST_EXIT_DURATION);
6497
5988
  }, [data, onRemove]);
6498
- React33.useEffect(() => {
5989
+ React32.useEffect(() => {
6499
5990
  if (duration <= 0) return;
6500
5991
  remainingRef.current = duration;
6501
5992
  startTimeRef.current = Date.now();
@@ -6504,7 +5995,7 @@ var ToastItem = React33.memo(function ToastItem2({
6504
5995
  if (timerRef.current) clearTimeout(timerRef.current);
6505
5996
  };
6506
5997
  }, [duration, handleAutoClose]);
6507
- const handleMouseEnter = React33.useCallback(() => {
5998
+ const handleMouseEnter = React32.useCallback(() => {
6508
5999
  if (duration <= 0) return;
6509
6000
  setIsPaused(true);
6510
6001
  if (timerRef.current) {
@@ -6512,13 +6003,13 @@ var ToastItem = React33.memo(function ToastItem2({
6512
6003
  remainingRef.current -= Date.now() - startTimeRef.current;
6513
6004
  }
6514
6005
  }, [duration]);
6515
- const handleMouseLeave = React33.useCallback(() => {
6006
+ const handleMouseLeave = React32.useCallback(() => {
6516
6007
  if (duration <= 0) return;
6517
6008
  setIsPaused(false);
6518
6009
  startTimeRef.current = Date.now();
6519
6010
  timerRef.current = setTimeout(handleAutoClose, Math.max(remainingRef.current, TOAST_MIN_RESUME_MS));
6520
6011
  }, [duration, handleAutoClose]);
6521
- React33.useEffect(() => {
6012
+ React32.useEffect(() => {
6522
6013
  if (data._promiseState === "success" || data._promiseState === "error") {
6523
6014
  const newDuration = data.duration ?? defaultDuration;
6524
6015
  if (newDuration > 0) {
@@ -6529,7 +6020,7 @@ var ToastItem = React33.memo(function ToastItem2({
6529
6020
  }
6530
6021
  }
6531
6022
  }, [data._promiseState, data.duration, defaultDuration, handleAutoClose]);
6532
- return /* @__PURE__ */ React33.createElement(
6023
+ return /* @__PURE__ */ React32.createElement(
6533
6024
  "div",
6534
6025
  {
6535
6026
  role,
@@ -6545,9 +6036,9 @@ var ToastItem = React33.memo(function ToastItem2({
6545
6036
  onMouseEnter: handleMouseEnter,
6546
6037
  onMouseLeave: handleMouseLeave
6547
6038
  },
6548
- data.icon !== void 0 ? data.icon && /* @__PURE__ */ React33.createElement("span", { className: "shrink-0" }, data.icon) : data.type !== "default" && /* @__PURE__ */ React33.createElement("span", { className: "shrink-0" }, /* @__PURE__ */ React33.createElement(StatusIcon, { className: "icon-sm" })),
6549
- /* @__PURE__ */ React33.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React33.createElement("div", { className: "font-semibold" }, data.message), data.description && /* @__PURE__ */ React33.createElement("div", { className: cn("mt-1 opacity-80", size === "sm" ? "text-xs" : "text-sm") }, data.description)),
6550
- (data.action || data.cancel) && /* @__PURE__ */ React33.createElement("div", { className: "flex items-center gap-1.5 shrink-0" }, data.cancel && /* @__PURE__ */ React33.createElement(
6039
+ data.icon !== void 0 ? data.icon && /* @__PURE__ */ React32.createElement("span", { className: "shrink-0" }, data.icon) : data.type !== "default" && /* @__PURE__ */ React32.createElement("span", { className: "shrink-0" }, /* @__PURE__ */ React32.createElement(StatusIcon, { className: "icon-sm" })),
6040
+ /* @__PURE__ */ React32.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React32.createElement("div", { className: "font-semibold" }, data.message), data.description && /* @__PURE__ */ React32.createElement("div", { className: cn("mt-1 opacity-80", size === "sm" ? "text-xs" : "text-sm") }, data.description)),
6041
+ (data.action || data.cancel) && /* @__PURE__ */ React32.createElement("div", { className: "flex items-center gap-1.5 shrink-0" }, data.cancel && /* @__PURE__ */ React32.createElement(
6551
6042
  "button",
6552
6043
  {
6553
6044
  type: "button",
@@ -6558,7 +6049,7 @@ var ToastItem = React33.memo(function ToastItem2({
6558
6049
  }
6559
6050
  },
6560
6051
  data.cancel.label
6561
- ), data.action && /* @__PURE__ */ React33.createElement(
6052
+ ), data.action && /* @__PURE__ */ React32.createElement(
6562
6053
  "button",
6563
6054
  {
6564
6055
  type: "button",
@@ -6570,7 +6061,7 @@ var ToastItem = React33.memo(function ToastItem2({
6570
6061
  },
6571
6062
  data.action.label
6572
6063
  )),
6573
- showClose && dismissible && /* @__PURE__ */ React33.createElement(
6064
+ showClose && dismissible && /* @__PURE__ */ React32.createElement(
6574
6065
  "button",
6575
6066
  {
6576
6067
  type: "button",
@@ -6578,7 +6069,7 @@ var ToastItem = React33.memo(function ToastItem2({
6578
6069
  onClick: handleDismiss,
6579
6070
  "aria-label": "Close"
6580
6071
  },
6581
- /* @__PURE__ */ React33.createElement(DefaultCloseIcon5, { className: "icon-sm" })
6072
+ /* @__PURE__ */ React32.createElement(DefaultCloseIcon5, { className: "icon-sm" })
6582
6073
  )
6583
6074
  );
6584
6075
  });
@@ -6595,8 +6086,8 @@ function Toaster({
6595
6086
  className
6596
6087
  }) {
6597
6088
  const toasts = useToastStore();
6598
- const [expanded, setExpanded] = React33.useState(false);
6599
- const handleRemove = React33.useCallback((id) => {
6089
+ const [expanded, setExpanded] = React32.useState(false);
6090
+ const handleRemove = React32.useCallback((id) => {
6600
6091
  globalStore.removeToast(id);
6601
6092
  }, []);
6602
6093
  const visible = toasts.slice(0, visibleToasts);
@@ -6608,7 +6099,7 @@ function Toaster({
6608
6099
  isTop ? "top-0" : "bottom-0",
6609
6100
  isCenter ? "left-1/2 -translate-x-1/2" : isRight ? "right-0" : "left-0"
6610
6101
  );
6611
- return /* @__PURE__ */ React33.createElement(
6102
+ return /* @__PURE__ */ React32.createElement(
6612
6103
  "section",
6613
6104
  {
6614
6105
  "aria-label": "Notifications",
@@ -6624,7 +6115,7 @@ function Toaster({
6624
6115
  },
6625
6116
  visible.map((t, index) => {
6626
6117
  const isStacked = !expand && !expanded && index > 0;
6627
- return /* @__PURE__ */ React33.createElement(
6118
+ return /* @__PURE__ */ React32.createElement(
6628
6119
  "div",
6629
6120
  {
6630
6121
  key: t.id,
@@ -6642,7 +6133,7 @@ function Toaster({
6642
6133
  } : { zIndex: visibleToasts - index }
6643
6134
  }
6644
6135
  },
6645
- /* @__PURE__ */ React33.createElement(
6136
+ /* @__PURE__ */ React32.createElement(
6646
6137
  ToastItem,
6647
6138
  {
6648
6139
  data: t,
@@ -6661,7 +6152,7 @@ function Toaster({
6661
6152
  Toaster.displayName = "Toaster";
6662
6153
 
6663
6154
  // src/components/ui/progress.tsx
6664
- import * as React34 from "react";
6155
+ import * as React33 from "react";
6665
6156
  import * as ProgressPrimitive from "@radix-ui/react-progress";
6666
6157
  import { cva as cva28 } from "class-variance-authority";
6667
6158
  var CIRCULAR_VIEWBOX = 100;
@@ -6709,7 +6200,7 @@ var valueFontSizes = {
6709
6200
  default: "text-sm",
6710
6201
  lg: "text-base"
6711
6202
  };
6712
- var Progress = React34.forwardRef(({
6203
+ var Progress = React33.forwardRef(({
6713
6204
  className,
6714
6205
  type = "linear",
6715
6206
  value = 0,
@@ -6735,7 +6226,7 @@ var Progress = React34.forwardRef(({
6735
6226
  const r = (CIRCULAR_VIEWBOX - strokeWidth) / 2;
6736
6227
  const circumference = 2 * Math.PI * r;
6737
6228
  const offset = circumference * (1 - percentage / 100);
6738
- return /* @__PURE__ */ React34.createElement(
6229
+ return /* @__PURE__ */ React33.createElement(
6739
6230
  "div",
6740
6231
  {
6741
6232
  className: cn("inline-flex items-center gap-2", className),
@@ -6745,7 +6236,7 @@ var Progress = React34.forwardRef(({
6745
6236
  "aria-valuemax": max,
6746
6237
  "aria-label": label
6747
6238
  },
6748
- /* @__PURE__ */ React34.createElement("div", { className: "relative", style: { width: diameter, height: diameter } }, /* @__PURE__ */ React34.createElement(
6239
+ /* @__PURE__ */ React33.createElement("div", { className: "relative", style: { width: diameter, height: diameter } }, /* @__PURE__ */ React33.createElement(
6749
6240
  "svg",
6750
6241
  {
6751
6242
  viewBox: `0 0 ${CIRCULAR_VIEWBOX} ${CIRCULAR_VIEWBOX}`,
@@ -6753,7 +6244,7 @@ var Progress = React34.forwardRef(({
6753
6244
  width: diameter,
6754
6245
  height: diameter
6755
6246
  },
6756
- /* @__PURE__ */ React34.createElement(
6247
+ /* @__PURE__ */ React33.createElement(
6757
6248
  "circle",
6758
6249
  {
6759
6250
  cx: CIRCULAR_CENTER,
@@ -6764,7 +6255,7 @@ var Progress = React34.forwardRef(({
6764
6255
  strokeWidth
6765
6256
  }
6766
6257
  ),
6767
- /* @__PURE__ */ React34.createElement(
6258
+ /* @__PURE__ */ React33.createElement(
6768
6259
  "circle",
6769
6260
  {
6770
6261
  cx: CIRCULAR_CENTER,
@@ -6778,14 +6269,14 @@ var Progress = React34.forwardRef(({
6778
6269
  strokeLinecap: "round"
6779
6270
  }
6780
6271
  )
6781
- ), showValue && resolvedSize !== "sm" && /* @__PURE__ */ React34.createElement("div", { className: cn(
6272
+ ), showValue && resolvedSize !== "sm" && /* @__PURE__ */ React33.createElement("div", { className: cn(
6782
6273
  "absolute inset-0 flex items-center justify-center font-semibold font-mono tabular-nums text-foreground",
6783
6274
  CIRCULAR_FONT_SIZES[resolvedSize]
6784
6275
  ) }, valueLabel))
6785
6276
  );
6786
6277
  }
6787
6278
  const stripedBg = variant === "striped" ? "bg-[length:1rem_1rem] bg-[linear-gradient(45deg,rgba(255,255,255,0.15)_25%,transparent_25%,transparent_50%,rgba(255,255,255,0.15)_50%,rgba(255,255,255,0.15)_75%,transparent_75%,transparent)]" : "";
6788
- return /* @__PURE__ */ React34.createElement("div", { className: cn("flex items-center gap-3", showValue && "w-full", className) }, /* @__PURE__ */ React34.createElement(
6279
+ return /* @__PURE__ */ React33.createElement("div", { className: cn("flex items-center gap-3", showValue && "w-full", className) }, /* @__PURE__ */ React33.createElement(
6789
6280
  ProgressPrimitive.Root,
6790
6281
  {
6791
6282
  ref,
@@ -6795,7 +6286,7 @@ var Progress = React34.forwardRef(({
6795
6286
  "aria-label": label,
6796
6287
  ...props
6797
6288
  },
6798
- /* @__PURE__ */ React34.createElement(
6289
+ /* @__PURE__ */ React33.createElement(
6799
6290
  ProgressPrimitive.Indicator,
6800
6291
  {
6801
6292
  className: cn(
@@ -6807,7 +6298,7 @@ var Progress = React34.forwardRef(({
6807
6298
  style: { width: `${percentage}%` }
6808
6299
  }
6809
6300
  )
6810
- ), showValue && /* @__PURE__ */ React34.createElement("span", { className: cn(
6301
+ ), showValue && /* @__PURE__ */ React33.createElement("span", { className: cn(
6811
6302
  "shrink-0 font-semibold font-mono tabular-nums text-foreground",
6812
6303
  valueFontSizes[resolvedSize]
6813
6304
  ) }, valueLabel));
@@ -6815,7 +6306,7 @@ var Progress = React34.forwardRef(({
6815
6306
  Progress.displayName = "Progress";
6816
6307
 
6817
6308
  // src/components/ui/spinner.tsx
6818
- import * as React35 from "react";
6309
+ import * as React34 from "react";
6819
6310
  import { cva as cva29 } from "class-variance-authority";
6820
6311
  var RING_SIZES = {
6821
6312
  sm: 16,
@@ -6893,7 +6384,7 @@ var spinnerVariants = cva29(
6893
6384
  }
6894
6385
  }
6895
6386
  );
6896
- var Spinner = React35.forwardRef(
6387
+ var Spinner = React34.forwardRef(
6897
6388
  ({
6898
6389
  className,
6899
6390
  variant = "ring",
@@ -6912,7 +6403,7 @@ var Spinner = React35.forwardRef(
6912
6403
  flip: OrbitFlipSpinner,
6913
6404
  morph: OrbitMorphSpinner
6914
6405
  };
6915
- return /* @__PURE__ */ React35.createElement(
6406
+ return /* @__PURE__ */ React34.createElement(
6916
6407
  "div",
6917
6408
  {
6918
6409
  ref,
@@ -6921,12 +6412,12 @@ var Spinner = React35.forwardRef(
6921
6412
  className: cn(spinnerVariants({ size }), className),
6922
6413
  ...props
6923
6414
  },
6924
- variant === "ring" && /* @__PURE__ */ React35.createElement(RingSpinner, { size: resolvedSize, color, speed }),
6925
- variant === "dots" && /* @__PURE__ */ React35.createElement(DotsSpinner, { size: resolvedSize, color, speed }),
6926
- variant === "bars" && /* @__PURE__ */ React35.createElement(BarsSpinner, { size: resolvedSize, color, speed }),
6415
+ variant === "ring" && /* @__PURE__ */ React34.createElement(RingSpinner, { size: resolvedSize, color, speed }),
6416
+ variant === "dots" && /* @__PURE__ */ React34.createElement(DotsSpinner, { size: resolvedSize, color, speed }),
6417
+ variant === "bars" && /* @__PURE__ */ React34.createElement(BarsSpinner, { size: resolvedSize, color, speed }),
6927
6418
  variant === "orbit" && (() => {
6928
6419
  const OrbitComponent = orbitMap[orbitStyle];
6929
- return /* @__PURE__ */ React35.createElement(OrbitComponent, { size: resolvedSize, color, speed });
6420
+ return /* @__PURE__ */ React34.createElement(OrbitComponent, { size: resolvedSize, color, speed });
6930
6421
  })()
6931
6422
  );
6932
6423
  }
@@ -6937,7 +6428,7 @@ function RingSpinner({ size, color, speed }) {
6937
6428
  const stroke = RING_STROKE[size];
6938
6429
  const r = (RING_VIEWBOX - stroke) / 2;
6939
6430
  const circumference = 2 * Math.PI * r;
6940
- return /* @__PURE__ */ React35.createElement(
6431
+ return /* @__PURE__ */ React34.createElement(
6941
6432
  "svg",
6942
6433
  {
6943
6434
  viewBox: `0 0 ${RING_VIEWBOX} ${RING_VIEWBOX}`,
@@ -6947,7 +6438,7 @@ function RingSpinner({ size, color, speed }) {
6947
6438
  className: "animate-spin",
6948
6439
  style: { animationDuration: `${SPEED_MS[speed]}ms` }
6949
6440
  },
6950
- /* @__PURE__ */ React35.createElement(
6441
+ /* @__PURE__ */ React34.createElement(
6951
6442
  "circle",
6952
6443
  {
6953
6444
  cx: RING_CENTER,
@@ -6957,7 +6448,7 @@ function RingSpinner({ size, color, speed }) {
6957
6448
  strokeWidth: stroke
6958
6449
  }
6959
6450
  ),
6960
- /* @__PURE__ */ React35.createElement(
6451
+ /* @__PURE__ */ React34.createElement(
6961
6452
  "circle",
6962
6453
  {
6963
6454
  cx: RING_CENTER,
@@ -6975,7 +6466,7 @@ function RingSpinner({ size, color, speed }) {
6975
6466
  function DotsSpinner({ size, color, speed }) {
6976
6467
  const dotSize = DOT_SIZES[size];
6977
6468
  const gap = DOT_GAP[size];
6978
- return /* @__PURE__ */ React35.createElement("div", { className: "inline-flex items-center", style: { gap } }, Array.from({ length: DOT_COUNT }, (_, i) => /* @__PURE__ */ React35.createElement(
6469
+ return /* @__PURE__ */ React34.createElement("div", { className: "inline-flex items-center", style: { gap } }, Array.from({ length: DOT_COUNT }, (_, i) => /* @__PURE__ */ React34.createElement(
6979
6470
  "div",
6980
6471
  {
6981
6472
  key: i,
@@ -6996,7 +6487,7 @@ function BarsSpinner({ size, color, speed }) {
6996
6487
  const barWidth = BAR_WIDTHS[size];
6997
6488
  const barHeight = BAR_HEIGHTS[size];
6998
6489
  const gap = BAR_GAP[size];
6999
- return /* @__PURE__ */ React35.createElement("div", { className: "inline-flex items-center", style: { gap, height: barHeight } }, Array.from({ length: BAR_COUNT }, (_, i) => /* @__PURE__ */ React35.createElement(
6490
+ return /* @__PURE__ */ React34.createElement("div", { className: "inline-flex items-center", style: { gap, height: barHeight } }, Array.from({ length: BAR_COUNT }, (_, i) => /* @__PURE__ */ React34.createElement(
7000
6491
  "div",
7001
6492
  {
7002
6493
  key: i,
@@ -7022,7 +6513,7 @@ function OrbitSpinner({ size, color, speed }) {
7022
6513
  const diameter = ORBIT_SIZES[size];
7023
6514
  const stroke = ORBIT_STROKE[size];
7024
6515
  const r = (RING_VIEWBOX - stroke * 2) / 2;
7025
- return /* @__PURE__ */ React35.createElement(
6516
+ return /* @__PURE__ */ React34.createElement(
7026
6517
  "div",
7027
6518
  {
7028
6519
  className: cn(orbitTextColorMap[color]),
@@ -7033,7 +6524,7 @@ function OrbitSpinner({ size, color, speed }) {
7033
6524
  position: "relative"
7034
6525
  }
7035
6526
  },
7036
- /* @__PURE__ */ React35.createElement(
6527
+ /* @__PURE__ */ React34.createElement(
7037
6528
  "svg",
7038
6529
  {
7039
6530
  viewBox: `0 0 ${RING_VIEWBOX} ${RING_VIEWBOX}`,
@@ -7043,7 +6534,7 @@ function OrbitSpinner({ size, color, speed }) {
7043
6534
  className: "absolute inset-0 animate-spinner-orbit",
7044
6535
  style: { animationDuration: `${ORBIT_SPEED_MS[speed]}ms` }
7045
6536
  },
7046
- /* @__PURE__ */ React35.createElement(
6537
+ /* @__PURE__ */ React34.createElement(
7047
6538
  "circle",
7048
6539
  {
7049
6540
  cx: RING_CENTER,
@@ -7054,7 +6545,7 @@ function OrbitSpinner({ size, color, speed }) {
7054
6545
  }
7055
6546
  )
7056
6547
  ),
7057
- /* @__PURE__ */ React35.createElement(
6548
+ /* @__PURE__ */ React34.createElement(
7058
6549
  "svg",
7059
6550
  {
7060
6551
  viewBox: `0 0 ${RING_VIEWBOX} ${RING_VIEWBOX}`,
@@ -7070,7 +6561,7 @@ function OrbitSpinner({ size, color, speed }) {
7070
6561
  opacity: 0.35
7071
6562
  }
7072
6563
  },
7073
- /* @__PURE__ */ React35.createElement(
6564
+ /* @__PURE__ */ React34.createElement(
7074
6565
  "circle",
7075
6566
  {
7076
6567
  cx: RING_CENTER,
@@ -7088,7 +6579,7 @@ function OrbitDotsSpinner({ size, color, speed }) {
7088
6579
  const diameter = ORBIT_SIZES[size];
7089
6580
  const dotSize = ORBIT_DOT_SIZE[size];
7090
6581
  const orbitRadius = (diameter - dotSize) / 2;
7091
- return /* @__PURE__ */ React35.createElement(
6582
+ return /* @__PURE__ */ React34.createElement(
7092
6583
  "div",
7093
6584
  {
7094
6585
  className: cn(orbitTextColorMap[color]),
@@ -7099,7 +6590,7 @@ function OrbitDotsSpinner({ size, color, speed }) {
7099
6590
  position: "relative"
7100
6591
  }
7101
6592
  },
7102
- /* @__PURE__ */ React35.createElement(
6593
+ /* @__PURE__ */ React34.createElement(
7103
6594
  "div",
7104
6595
  {
7105
6596
  className: "animate-spinner-orbit",
@@ -7111,7 +6602,7 @@ function OrbitDotsSpinner({ size, color, speed }) {
7111
6602
  transformStyle: "preserve-3d"
7112
6603
  }
7113
6604
  },
7114
- [0, 120, 240].map((angle) => /* @__PURE__ */ React35.createElement(
6605
+ [0, 120, 240].map((angle) => /* @__PURE__ */ React34.createElement(
7115
6606
  "div",
7116
6607
  {
7117
6608
  key: angle,
@@ -7144,7 +6635,7 @@ function OrbitCubeSpinner({ size, color, speed }) {
7144
6635
  top: -overlap,
7145
6636
  left: -overlap
7146
6637
  };
7147
- return /* @__PURE__ */ React35.createElement(
6638
+ return /* @__PURE__ */ React34.createElement(
7148
6639
  "div",
7149
6640
  {
7150
6641
  className: cn(orbitTextColorMap[color]),
@@ -7154,7 +6645,7 @@ function OrbitCubeSpinner({ size, color, speed }) {
7154
6645
  perspective: cubeSize * 6
7155
6646
  }
7156
6647
  },
7157
- /* @__PURE__ */ React35.createElement(
6648
+ /* @__PURE__ */ React34.createElement(
7158
6649
  "div",
7159
6650
  {
7160
6651
  style: {
@@ -7164,7 +6655,7 @@ function OrbitCubeSpinner({ size, color, speed }) {
7164
6655
  transformStyle: "preserve-3d"
7165
6656
  }
7166
6657
  },
7167
- /* @__PURE__ */ React35.createElement(
6658
+ /* @__PURE__ */ React34.createElement(
7168
6659
  "div",
7169
6660
  {
7170
6661
  className: "animate-spinner-orbit",
@@ -7176,12 +6667,12 @@ function OrbitCubeSpinner({ size, color, speed }) {
7176
6667
  transformStyle: "preserve-3d"
7177
6668
  }
7178
6669
  },
7179
- /* @__PURE__ */ React35.createElement("div", { style: { ...faceBase, transform: `translateZ(${half}px)`, opacity: 0.25 } }),
7180
- /* @__PURE__ */ React35.createElement("div", { style: { ...faceBase, transform: `translateZ(${-half}px)`, opacity: 0.1 } }),
7181
- /* @__PURE__ */ React35.createElement("div", { style: { ...faceBase, transform: `rotateY(-90deg) translateZ(${half}px)`, opacity: 0.2 } }),
7182
- /* @__PURE__ */ React35.createElement("div", { style: { ...faceBase, transform: `rotateY(90deg) translateZ(${half}px)`, opacity: 0.2 } }),
7183
- /* @__PURE__ */ React35.createElement("div", { style: { ...faceBase, transform: `rotateX(90deg) translateZ(${half}px)`, opacity: 0.15 } }),
7184
- /* @__PURE__ */ React35.createElement("div", { style: { ...faceBase, transform: `rotateX(-90deg) translateZ(${half}px)`, opacity: 0.08 } })
6670
+ /* @__PURE__ */ React34.createElement("div", { style: { ...faceBase, transform: `translateZ(${half}px)`, opacity: 0.25 } }),
6671
+ /* @__PURE__ */ React34.createElement("div", { style: { ...faceBase, transform: `translateZ(${-half}px)`, opacity: 0.1 } }),
6672
+ /* @__PURE__ */ React34.createElement("div", { style: { ...faceBase, transform: `rotateY(-90deg) translateZ(${half}px)`, opacity: 0.2 } }),
6673
+ /* @__PURE__ */ React34.createElement("div", { style: { ...faceBase, transform: `rotateY(90deg) translateZ(${half}px)`, opacity: 0.2 } }),
6674
+ /* @__PURE__ */ React34.createElement("div", { style: { ...faceBase, transform: `rotateX(90deg) translateZ(${half}px)`, opacity: 0.15 } }),
6675
+ /* @__PURE__ */ React34.createElement("div", { style: { ...faceBase, transform: `rotateX(-90deg) translateZ(${half}px)`, opacity: 0.08 } })
7185
6676
  )
7186
6677
  )
7187
6678
  );
@@ -7189,7 +6680,7 @@ function OrbitCubeSpinner({ size, color, speed }) {
7189
6680
  var FLIP_SIZES = { sm: 14, default: 20, lg: 28 };
7190
6681
  function OrbitFlipSpinner({ size, color, speed }) {
7191
6682
  const sqSize = FLIP_SIZES[size];
7192
- return /* @__PURE__ */ React35.createElement(
6683
+ return /* @__PURE__ */ React34.createElement(
7193
6684
  "div",
7194
6685
  {
7195
6686
  className: cn(orbitTextColorMap[color]),
@@ -7199,7 +6690,7 @@ function OrbitFlipSpinner({ size, color, speed }) {
7199
6690
  perspective: sqSize * 4
7200
6691
  }
7201
6692
  },
7202
- /* @__PURE__ */ React35.createElement("div", { style: { transform: "rotateX(25deg)", transformStyle: "preserve-3d", width: "100%", height: "100%" } }, /* @__PURE__ */ React35.createElement(
6693
+ /* @__PURE__ */ React34.createElement("div", { style: { transform: "rotateX(25deg)", transformStyle: "preserve-3d", width: "100%", height: "100%" } }, /* @__PURE__ */ React34.createElement(
7203
6694
  "div",
7204
6695
  {
7205
6696
  className: "animate-spinner-orbit",
@@ -7218,7 +6709,7 @@ function OrbitFlipSpinner({ size, color, speed }) {
7218
6709
  var MORPH_SIZES = { sm: 16, default: 24, lg: 34 };
7219
6710
  function OrbitMorphSpinner({ size, color, speed }) {
7220
6711
  const morphSize = MORPH_SIZES[size];
7221
- return /* @__PURE__ */ React35.createElement(
6712
+ return /* @__PURE__ */ React34.createElement(
7222
6713
  "div",
7223
6714
  {
7224
6715
  className: cn(orbitTextColorMap[color]),
@@ -7228,7 +6719,7 @@ function OrbitMorphSpinner({ size, color, speed }) {
7228
6719
  perspective: morphSize * 3
7229
6720
  }
7230
6721
  },
7231
- /* @__PURE__ */ React35.createElement(
6722
+ /* @__PURE__ */ React34.createElement(
7232
6723
  "div",
7233
6724
  {
7234
6725
  className: "animate-spinner-morph",
@@ -7245,7 +6736,7 @@ function OrbitMorphSpinner({ size, color, speed }) {
7245
6736
  }
7246
6737
 
7247
6738
  // src/components/ui/skeleton.tsx
7248
- import * as React36 from "react";
6739
+ import * as React35 from "react";
7249
6740
  import { cva as cva30 } from "class-variance-authority";
7250
6741
  var PULSE_DURATION_MS = 2e3;
7251
6742
  var WAVE_DURATION_MS = 1800;
@@ -7272,7 +6763,7 @@ var skeletonVariants = cva30(
7272
6763
  }
7273
6764
  }
7274
6765
  );
7275
- var SkeletonBlock = React36.forwardRef(
6766
+ var SkeletonBlock = React35.forwardRef(
7276
6767
  ({
7277
6768
  className,
7278
6769
  variant = "text",
@@ -7283,7 +6774,7 @@ var SkeletonBlock = React36.forwardRef(
7283
6774
  style,
7284
6775
  ...props
7285
6776
  }, ref) => {
7286
- return /* @__PURE__ */ React36.createElement(
6777
+ return /* @__PURE__ */ React35.createElement(
7287
6778
  "div",
7288
6779
  {
7289
6780
  ref,
@@ -7303,7 +6794,7 @@ var SkeletonBlock = React36.forwardRef(
7303
6794
  },
7304
6795
  ...props
7305
6796
  },
7306
- animation === "wave" && /* @__PURE__ */ React36.createElement(
6797
+ animation === "wave" && /* @__PURE__ */ React35.createElement(
7307
6798
  "div",
7308
6799
  {
7309
6800
  className: "absolute inset-0 animate-skeleton-wave",
@@ -7317,7 +6808,7 @@ var SkeletonBlock = React36.forwardRef(
7317
6808
  }
7318
6809
  );
7319
6810
  SkeletonBlock.displayName = "SkeletonBlock";
7320
- var Skeleton = React36.forwardRef(
6811
+ var Skeleton = React35.forwardRef(
7321
6812
  ({
7322
6813
  count,
7323
6814
  loading,
@@ -7326,13 +6817,13 @@ var Skeleton = React36.forwardRef(
7326
6817
  ...rest
7327
6818
  }, ref) => {
7328
6819
  if (loading !== void 0) {
7329
- if (!loading) return /* @__PURE__ */ React36.createElement(React36.Fragment, null, children);
6820
+ if (!loading) return /* @__PURE__ */ React35.createElement(React35.Fragment, null, children);
7330
6821
  }
7331
6822
  if (count != null && count > 1 && variant === "text") {
7332
- return /* @__PURE__ */ React36.createElement("div", { ref, className: "space-y-2.5", "aria-hidden": "true" }, Array.from({ length: count }, (_, i) => {
6823
+ return /* @__PURE__ */ React35.createElement("div", { ref, className: "space-y-2.5", "aria-hidden": "true" }, Array.from({ length: count }, (_, i) => {
7333
6824
  const widthPattern = MULTI_LINE_WIDTHS[i % MULTI_LINE_WIDTHS.length];
7334
6825
  const isLast = i === count - 1;
7335
- return /* @__PURE__ */ React36.createElement(
6826
+ return /* @__PURE__ */ React35.createElement(
7336
6827
  SkeletonBlock,
7337
6828
  {
7338
6829
  key: i,
@@ -7343,7 +6834,7 @@ var Skeleton = React36.forwardRef(
7343
6834
  );
7344
6835
  }));
7345
6836
  }
7346
- return /* @__PURE__ */ React36.createElement(SkeletonBlock, { ref, variant, ...rest });
6837
+ return /* @__PURE__ */ React35.createElement(SkeletonBlock, { ref, variant, ...rest });
7347
6838
  }
7348
6839
  );
7349
6840
  Skeleton.displayName = "Skeleton";
@@ -7390,19 +6881,6 @@ export {
7390
6881
  CardHeader,
7391
6882
  CardImage,
7392
6883
  CardTitle,
7393
- Chart,
7394
- ChartArea,
7395
- ChartBar,
7396
- ChartContainer,
7397
- ChartLegend,
7398
- ChartLegendContent,
7399
- ChartLine,
7400
- ChartPie,
7401
- ChartStyle,
7402
- ChartTooltip,
7403
- ChartTooltipContent,
7404
- ChartXAxis,
7405
- ChartYAxis,
7406
6884
  Checkbox,
7407
6885
  Divider,
7408
6886
  Drawer,
@@ -7516,7 +6994,7 @@ export {
7516
6994
  Toggle,
7517
6995
  ToggleGroup,
7518
6996
  ToggleGroupItem,
7519
- Tooltip2 as Tooltip,
6997
+ Tooltip,
7520
6998
  TooltipArrow,
7521
6999
  TooltipContent,
7522
7000
  TooltipPortal,
@@ -7566,7 +7044,6 @@ export {
7566
7044
  toggleVariants,
7567
7045
  tooltipContentVariants,
7568
7046
  useButtonGroup,
7569
- useChart,
7570
7047
  useFieldContext,
7571
7048
  usePagination
7572
7049
  };