@karakuri-ui/react 0.1.2 → 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
@@ -2942,517 +2942,8 @@ var Avatar = Object.assign(AvatarRoot, {
2942
2942
  Group: AvatarGroup
2943
2943
  });
2944
2944
 
2945
- // src/components/ui/chart.tsx
2946
- import * as React20 from "react";
2947
- import * as RechartsPrimitive from "recharts";
2948
- var THEMES = { light: "", dark: ".dark" };
2949
- var ChartContext = React20.createContext(null);
2950
- function useChart() {
2951
- const context = React20.useContext(ChartContext);
2952
- if (!context) {
2953
- throw new Error("useChart must be used within a <ChartContainer />");
2954
- }
2955
- return context;
2956
- }
2957
- function ChartContainer({
2958
- id,
2959
- className,
2960
- children,
2961
- config,
2962
- hoverFade = false,
2963
- ...props
2964
- }) {
2965
- const uniqueId = React20.useId();
2966
- const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
2967
- const [activeIndex, setActiveIndex] = React20.useState(null);
2968
- const [activeDataKey, setActiveDataKey] = React20.useState(null);
2969
- return /* @__PURE__ */ React20.createElement(ChartContext.Provider, { value: { config, hoverFade, activeIndex, setActiveIndex, activeDataKey, setActiveDataKey } }, /* @__PURE__ */ React20.createElement(
2970
- "div",
2971
- {
2972
- "data-slot": "chart",
2973
- "data-chart": chartId,
2974
- onMouseLeave: hoverFade ? () => {
2975
- setActiveIndex(null);
2976
- setActiveDataKey(null);
2977
- } : void 0,
2978
- className: cn(
2979
- "flex aspect-video w-full justify-center text-xs outline-none [&_*]:outline-none",
2980
- // Responsive axis tick font-size — consumed by ChartXAxis / ChartYAxis via var()
2981
- "[--chart-axis-fs:var(--font-size-2xs)] sm:[--chart-axis-fs:var(--font-size-xs)]",
2982
- // Recharts element overrides — use arbitrary properties for v3/v4 compat
2983
- "[&_.recharts-cartesian-axis-tick_text]:[fill:var(--color-text-muted)]",
2984
- "[&_.recharts-cartesian-grid_line[stroke='#ccc']]:[stroke:var(--color-border)]",
2985
- "[&_.recharts-cartesian-grid_line]:[stroke-dasharray:3_3]",
2986
- "[&_.recharts-curve.recharts-tooltip-cursor]:[stroke:var(--color-border)]",
2987
- "[&_.recharts-dot[stroke='#fff']]:stroke-transparent",
2988
- "[&_.recharts-layer]:outline-none",
2989
- "[&_.recharts-polar-grid_[stroke='#ccc']]:[stroke:var(--color-border)]",
2990
- "[&_.recharts-radial-bar-background-sector]:[fill:var(--color-background-muted)]",
2991
- "[&_.recharts-rectangle.recharts-tooltip-cursor]:[fill:transparent]",
2992
- "[&_.recharts-reference-line_[stroke='#ccc']]:[stroke:var(--color-border)]",
2993
- "[&_.recharts-sector]:outline-none",
2994
- "[&_.recharts-sector[stroke='#fff']]:stroke-transparent",
2995
- "[&_.recharts-surface]:outline-none",
2996
- className
2997
- ),
2998
- ...props
2999
- },
3000
- /* @__PURE__ */ React20.createElement(ChartStyle, { id: chartId, config }),
3001
- /* @__PURE__ */ React20.createElement(RechartsPrimitive.ResponsiveContainer, null, children)
3002
- ));
3003
- }
3004
- var CHART_TOOLTIP_KEYFRAME = "@keyframes chart-tooltip-in{from{opacity:0}to{opacity:1}}";
3005
- var ChartStyle = ({ id, config }) => {
3006
- const colorConfig = Object.entries(config).filter(
3007
- ([, config2]) => config2.theme || config2.color
3008
- );
3009
- const colorCss = colorConfig.length ? Object.entries(THEMES).map(
3010
- ([theme, prefix]) => `
3011
- ${prefix} [data-chart=${id}] {
3012
- ${colorConfig.map(([key, itemConfig]) => {
3013
- const color = itemConfig.theme?.[theme] || itemConfig.color;
3014
- return color ? ` --color-${key}: ${color};` : null;
3015
- }).join("\n")}
3016
- }
3017
- `
3018
- ).join("\n") : "";
3019
- return /* @__PURE__ */ React20.createElement(
3020
- "style",
3021
- {
3022
- dangerouslySetInnerHTML: {
3023
- __html: CHART_TOOLTIP_KEYFRAME + colorCss
3024
- }
3025
- }
3026
- );
3027
- };
3028
- var CHART_HOVER_FADE_OPACITY = 0.35;
3029
- var CHART_FADE_TRANSITION = { transition: "fill-opacity var(--duration-fast) ease-out, stroke-opacity var(--duration-fast) ease-out" };
3030
- var CHART_BAR_RADIUS_MAP = {
3031
- none: 0,
3032
- // --radius-none: 0px
3033
- sm: 2,
3034
- // --radius-sm: 2px
3035
- base: 4,
3036
- // --radius-base: 4px
3037
- md: 6,
3038
- // --radius-md: 6px
3039
- lg: 8
3040
- // --radius-lg: 8px
3041
- };
3042
- function ChartBar({
3043
- radius = "none",
3044
- layout = "vertical",
3045
- stackPosition = "top",
3046
- variant = "solid",
3047
- fill,
3048
- stackId,
3049
- ...props
3050
- }) {
3051
- const { hoverFade, activeIndex, setActiveIndex } = useChart();
3052
- const r = CHART_BAR_RADIUS_MAP[radius];
3053
- const isStacked = !!stackId || stackPosition === "bottom";
3054
- 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];
3055
- const outlineShape = React20.useCallback((shapeProps) => {
3056
- const x = shapeProps.x ?? 0;
3057
- const y = shapeProps.y ?? 0;
3058
- const width = shapeProps.width ?? 0;
3059
- const height = shapeProps.height ?? 0;
3060
- if (!width || !height || width <= 0 || height <= 0) return /* @__PURE__ */ React20.createElement("g", null);
3061
- const sw = 2;
3062
- const inset = sw / 2;
3063
- const rx = typeof appliedRadius === "number" ? Math.max(0, appliedRadius - inset) : 0;
3064
- const fadeMultiplier = hoverFade && activeIndex !== null && shapeProps.index !== activeIndex ? CHART_HOVER_FADE_OPACITY : 1;
3065
- return /* @__PURE__ */ React20.createElement(
3066
- "rect",
3067
- {
3068
- x: x + inset,
3069
- y: y + inset,
3070
- width: Math.max(0, width - sw),
3071
- height: Math.max(0, height - sw),
3072
- rx,
3073
- fill,
3074
- fillOpacity: 0.4 * fadeMultiplier,
3075
- stroke: fill,
3076
- strokeOpacity: fadeMultiplier,
3077
- strokeWidth: sw,
3078
- style: hoverFade ? CHART_FADE_TRANSITION : void 0
3079
- }
3080
- );
3081
- }, [appliedRadius, fill, hoverFade, activeIndex]);
3082
- const solidHoverShape = React20.useCallback((shapeProps) => {
3083
- const opacity = activeIndex === null ? 1 : shapeProps.index === activeIndex ? 1 : CHART_HOVER_FADE_OPACITY;
3084
- return /* @__PURE__ */ React20.createElement(
3085
- RechartsPrimitive.Rectangle,
3086
- {
3087
- ...shapeProps,
3088
- fillOpacity: opacity,
3089
- style: CHART_FADE_TRANSITION
3090
- }
3091
- );
3092
- }, [activeIndex]);
3093
- const useOutline = variant === "outline" && !isStacked;
3094
- const needsHoverShape = hoverFade && variant === "solid" && !useOutline;
3095
- return /* @__PURE__ */ React20.createElement(
3096
- RechartsPrimitive.Bar,
3097
- {
3098
- radius: appliedRadius,
3099
- fill,
3100
- stackId,
3101
- ...hoverFade && { isAnimationActive: false },
3102
- ...useOutline && { shape: outlineShape },
3103
- ...needsHoverShape && { shape: solidHoverShape },
3104
- ...hoverFade && { onMouseEnter: (_, index) => setActiveIndex(index) },
3105
- ...props
3106
- }
3107
- );
3108
- }
3109
- function ChartTooltip(props) {
3110
- return /* @__PURE__ */ React20.createElement(RechartsPrimitive.Tooltip, { animationDuration: 0, ...props });
3111
- }
3112
- function ChartTooltipContent({
3113
- active,
3114
- payload,
3115
- className,
3116
- indicator = "dot",
3117
- hideLabel = false,
3118
- hideIndicator = false,
3119
- label,
3120
- labelFormatter,
3121
- labelClassName,
3122
- formatter,
3123
- color,
3124
- nameKey,
3125
- labelKey
3126
- }) {
3127
- const { config } = useChart();
3128
- const tooltipLabel = React20.useMemo(() => {
3129
- if (hideLabel || !payload?.length) {
3130
- return null;
3131
- }
3132
- const [item] = payload;
3133
- const key = `${labelKey || item?.dataKey || item?.name || "value"}`;
3134
- const itemConfig = getPayloadConfigFromPayload(config, item, key);
3135
- const value = !labelKey && typeof label === "string" ? config[label]?.label || label : itemConfig?.label;
3136
- if (labelFormatter) {
3137
- return /* @__PURE__ */ React20.createElement("div", { className: cn("font-semibold", labelClassName) }, labelFormatter(value, payload));
3138
- }
3139
- if (!value) {
3140
- return null;
3141
- }
3142
- return /* @__PURE__ */ React20.createElement("div", { className: cn("font-semibold", labelClassName) }, value);
3143
- }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);
3144
- if (!active || !payload?.length) {
3145
- return null;
3146
- }
3147
- const nestLabel = payload.length === 1 && indicator !== "dot";
3148
- return /* @__PURE__ */ React20.createElement(
3149
- "div",
3150
- {
3151
- className: cn(
3152
- "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",
3153
- className
3154
- ),
3155
- style: { animation: "chart-tooltip-in var(--duration-slow) ease-out" }
3156
- },
3157
- !nestLabel ? tooltipLabel : null,
3158
- /* @__PURE__ */ React20.createElement("div", { className: "grid gap-1.5" }, payload.filter((item) => item.type !== "none").map((item, index) => {
3159
- const key = `${nameKey || item.name || item.dataKey || "value"}`;
3160
- const itemConfig = getPayloadConfigFromPayload(config, item, key);
3161
- const indicatorColor = color || item.payload?.fill || item.color;
3162
- return /* @__PURE__ */ React20.createElement(
3163
- "div",
3164
- {
3165
- key: item.dataKey,
3166
- className: cn(
3167
- "flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-text-muted",
3168
- indicator === "dot" && "items-center"
3169
- )
3170
- },
3171
- 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(
3172
- "div",
3173
- {
3174
- className: cn(
3175
- "shrink-0 rounded-sm",
3176
- {
3177
- "h-2.5 w-2.5": indicator === "dot",
3178
- "w-1": indicator === "line",
3179
- "w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
3180
- "my-0.5": nestLabel && indicator === "dashed"
3181
- }
3182
- ),
3183
- style: {
3184
- backgroundColor: indicator === "dashed" ? "transparent" : indicatorColor,
3185
- borderColor: indicatorColor
3186
- }
3187
- }
3188
- ), /* @__PURE__ */ React20.createElement(
3189
- "div",
3190
- {
3191
- className: cn(
3192
- "flex flex-1 justify-between leading-none",
3193
- nestLabel ? "items-end" : "items-center"
3194
- )
3195
- },
3196
- /* @__PURE__ */ React20.createElement("div", { className: "grid gap-1.5" }, nestLabel ? tooltipLabel : null, /* @__PURE__ */ React20.createElement("span", { className: "text-text-muted" }, itemConfig?.label || item.name)),
3197
- item.value && /* @__PURE__ */ React20.createElement("span", { className: "font-mono font-semibold text-foreground tabular-nums" }, item.value.toLocaleString())
3198
- ))
3199
- );
3200
- }))
3201
- );
3202
- }
3203
- var ChartLegend = RechartsPrimitive.Legend;
3204
- function ChartLegendContent({
3205
- className,
3206
- hideIcon = false,
3207
- payload,
3208
- verticalAlign = "bottom",
3209
- align = "center",
3210
- layout = "horizontal",
3211
- nameKey
3212
- }) {
3213
- const { config } = useChart();
3214
- if (!payload?.length) {
3215
- return null;
3216
- }
3217
- const isVertical = layout === "vertical";
3218
- return /* @__PURE__ */ React20.createElement(
3219
- "div",
3220
- {
3221
- className: cn(
3222
- "flex gap-4",
3223
- isVertical ? "flex-col items-start gap-1.5" : [
3224
- "items-center",
3225
- align === "left" ? "justify-start" : align === "right" ? "justify-end" : "justify-center",
3226
- verticalAlign === "top" ? "pb-3" : "pt-3"
3227
- ],
3228
- className
3229
- )
3230
- },
3231
- payload.filter((item) => item.type !== "none").map((item) => {
3232
- const key = `${nameKey || item.dataKey || "value"}`;
3233
- const itemConfig = getPayloadConfigFromPayload(config, item, key);
3234
- return /* @__PURE__ */ React20.createElement(
3235
- "div",
3236
- {
3237
- key: item.value,
3238
- className: "flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-text-muted"
3239
- },
3240
- itemConfig?.icon && !hideIcon ? /* @__PURE__ */ React20.createElement(itemConfig.icon, null) : /* @__PURE__ */ React20.createElement(
3241
- "div",
3242
- {
3243
- className: "h-2 w-2 shrink-0 rounded-sm",
3244
- style: {
3245
- backgroundColor: item.color
3246
- }
3247
- }
3248
- ),
3249
- /* @__PURE__ */ React20.createElement("span", { className: "text-foreground" }, itemConfig?.label)
3250
- );
3251
- })
3252
- );
3253
- }
3254
- function getPayloadConfigFromPayload(config, payload, key) {
3255
- if (typeof payload !== "object" || payload === null) {
3256
- return void 0;
3257
- }
3258
- const payloadPayload = "payload" in payload && typeof payload.payload === "object" && payload.payload !== null ? payload.payload : void 0;
3259
- let configLabelKey = key;
3260
- if (key in payload && typeof payload[key] === "string") {
3261
- configLabelKey = payload[key];
3262
- } else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === "string") {
3263
- configLabelKey = payloadPayload[key];
3264
- }
3265
- return configLabelKey in config ? config[configLabelKey] : config[key];
3266
- }
3267
- var CHART_AXIS_TICK_STYLE = { style: { fontSize: "var(--chart-axis-fs)", fill: "var(--color-text-subtle)" } };
3268
- var CHART_XAXIS_PADDING = { left: 16, right: 16 };
3269
- function ChartXAxis({ tick, padding, ...props }) {
3270
- return /* @__PURE__ */ React20.createElement(RechartsPrimitive.XAxis, { tick: tick ?? CHART_AXIS_TICK_STYLE, padding: padding ?? CHART_XAXIS_PADDING, ...props });
3271
- }
3272
- function ChartYAxis({ tick, width = "auto", ...props }) {
3273
- return /* @__PURE__ */ React20.createElement(RechartsPrimitive.YAxis, { tick: tick ?? CHART_AXIS_TICK_STYLE, width, ...props });
3274
- }
3275
- var CHART_LINE_DASH = "5 5";
3276
- var CHART_DOT_PROPS = { r: 3, strokeWidth: 2 };
3277
- var CHART_ACTIVE_DOT_PROPS = { r: 5, strokeWidth: 2 };
3278
- function ChartLine({
3279
- type = "monotone",
3280
- variant = "solid",
3281
- dot: showDot = true,
3282
- activeDot: showActiveDot = true,
3283
- stroke,
3284
- dataKey,
3285
- ...props
3286
- }) {
3287
- const { hoverFade, activeDataKey, setActiveDataKey } = useChart();
3288
- const isFaded = hoverFade && activeDataKey !== null && activeDataKey !== dataKey;
3289
- const opacity = isFaded ? CHART_HOVER_FADE_OPACITY : 1;
3290
- const dotProps = showDot ? variant === "dashed" ? { ...CHART_DOT_PROPS, strokeDasharray: "0" } : CHART_DOT_PROPS : false;
3291
- const activeDotProps = showActiveDot ? variant === "dashed" ? { ...CHART_ACTIVE_DOT_PROPS, strokeDasharray: "0" } : CHART_ACTIVE_DOT_PROPS : false;
3292
- return /* @__PURE__ */ React20.createElement(
3293
- RechartsPrimitive.Line,
3294
- {
3295
- type,
3296
- dataKey,
3297
- stroke,
3298
- strokeWidth: 2,
3299
- strokeDasharray: variant === "dashed" ? CHART_LINE_DASH : void 0,
3300
- dot: dotProps,
3301
- activeDot: activeDotProps,
3302
- strokeOpacity: opacity,
3303
- ...hoverFade && { isAnimationActive: false },
3304
- ...hoverFade && { onMouseEnter: () => setActiveDataKey(dataKey) },
3305
- style: hoverFade ? { transition: "stroke-opacity var(--duration-fast) ease-out" } : void 0,
3306
- ...props
3307
- }
3308
- );
3309
- }
3310
- var CHART_AREA_DEFAULT_OPACITY = 0.4;
3311
- function ChartArea({
3312
- type = "monotone",
3313
- variant = "solid",
3314
- dot: showDot = true,
3315
- activeDot: showActiveDot = true,
3316
- fillOpacity = CHART_AREA_DEFAULT_OPACITY,
3317
- stroke,
3318
- fill,
3319
- dataKey,
3320
- ...props
3321
- }) {
3322
- const { hoverFade, activeDataKey, setActiveDataKey } = useChart();
3323
- const isFaded = hoverFade && activeDataKey !== null && activeDataKey !== dataKey;
3324
- const opacity = isFaded ? CHART_HOVER_FADE_OPACITY : 1;
3325
- const dotProps = showDot ? CHART_DOT_PROPS : false;
3326
- const activeDotProps = showActiveDot ? CHART_ACTIVE_DOT_PROPS : false;
3327
- const gradientId = `area-gradient-${String(dataKey)}`;
3328
- const effectiveFill = variant === "gradient" ? `url(#${gradientId})` : fill || stroke;
3329
- const effectiveFillOpacity = variant === "gradient" ? 1 : fillOpacity;
3330
- 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(
3331
- RechartsPrimitive.Area,
3332
- {
3333
- type,
3334
- dataKey,
3335
- stroke,
3336
- fill: effectiveFill,
3337
- fillOpacity: effectiveFillOpacity * opacity,
3338
- strokeWidth: 2,
3339
- dot: dotProps,
3340
- activeDot: activeDotProps,
3341
- strokeOpacity: opacity,
3342
- ...hoverFade && { isAnimationActive: false },
3343
- ...hoverFade && { onMouseEnter: () => setActiveDataKey(dataKey) },
3344
- style: hoverFade ? { transition: "fill-opacity var(--duration-fast) ease-out, stroke-opacity var(--duration-fast) ease-out" } : void 0,
3345
- ...props
3346
- }
3347
- ));
3348
- }
3349
- var CHART_PIE_ACTIVE_OFFSET = 8;
3350
- var CHART_PIE_DONUT_INNER_RADIUS = 60;
3351
- var CHART_PIE_LABEL_RADIAL = 16;
3352
- var CHART_PIE_LABEL_HORIZ = 20;
3353
- var CHART_PIE_SKIP_ANGLE = 15;
3354
- function ChartPie({
3355
- variant = "pie",
3356
- label: labelMode = "none",
3357
- labelContent = "value",
3358
- activeShape: showActiveShape = true,
3359
- innerRadius,
3360
- paddingAngle = 0,
3361
- cornerRadius = 0,
3362
- startAngle = 90,
3363
- endAngle = -270,
3364
- ...props
3365
- }) {
3366
- const resolvedInnerRadius = innerRadius ?? (variant === "donut" ? CHART_PIE_DONUT_INNER_RADIUS : 0);
3367
- const activeShapeConfig = showActiveShape ? (props2) => /* @__PURE__ */ React20.createElement(
3368
- RechartsPrimitive.Sector,
3369
- {
3370
- ...props2,
3371
- outerRadius: props2.outerRadius + CHART_PIE_ACTIVE_OFFSET
3372
- }
3373
- ) : void 0;
3374
- const getDisplayText = (entry) => labelContent === "percent" ? `${(entry.percent * 100).toFixed(0)}%` : entry.value;
3375
- const labelConfig = labelMode === "outside" ? (entry) => {
3376
- const RADIAN = Math.PI / 180;
3377
- const { cx, cy, midAngle, outerRadius, fill } = entry;
3378
- const sx = cx + outerRadius * Math.cos(-midAngle * RADIAN);
3379
- const sy = cy + outerRadius * Math.sin(-midAngle * RADIAN);
3380
- const mx = cx + (outerRadius + CHART_PIE_LABEL_RADIAL) * Math.cos(-midAngle * RADIAN);
3381
- const my = cy + (outerRadius + CHART_PIE_LABEL_RADIAL) * Math.sin(-midAngle * RADIAN);
3382
- const isRight = mx > cx;
3383
- const ex = mx + (isRight ? CHART_PIE_LABEL_HORIZ : -CHART_PIE_LABEL_HORIZ);
3384
- return /* @__PURE__ */ React20.createElement("g", null, /* @__PURE__ */ React20.createElement(
3385
- "polyline",
3386
- {
3387
- points: `${sx},${sy} ${mx},${my} ${ex},${my}`,
3388
- fill: "none",
3389
- stroke: fill,
3390
- strokeWidth: 1,
3391
- strokeOpacity: 0.5
3392
- }
3393
- ), /* @__PURE__ */ React20.createElement(
3394
- "text",
3395
- {
3396
- x: ex + (isRight ? 4 : -4),
3397
- y: my,
3398
- textAnchor: isRight ? "start" : "end",
3399
- dominantBaseline: "central",
3400
- style: { fontSize: "var(--font-size-xs)", fill: "var(--color-text-muted)" }
3401
- },
3402
- getDisplayText(entry)
3403
- ));
3404
- } : labelMode === "inside" ? (entry) => {
3405
- const angle = Math.abs(entry.endAngle - entry.startAngle);
3406
- if (angle < CHART_PIE_SKIP_ANGLE) return null;
3407
- const RADIAN = Math.PI / 180;
3408
- const { cx, cy, innerRadius: ir, outerRadius: or, midAngle } = entry;
3409
- const ratio = ir > 0 ? 0.5 : 0.65;
3410
- const radius = ir + (or - ir) * ratio;
3411
- const x = cx + radius * Math.cos(-midAngle * RADIAN);
3412
- const y = cy + radius * Math.sin(-midAngle * RADIAN);
3413
- return /* @__PURE__ */ React20.createElement(
3414
- "text",
3415
- {
3416
- x,
3417
- y,
3418
- textAnchor: "middle",
3419
- dominantBaseline: "central",
3420
- style: { fontSize: "var(--font-size-xs)", fill: "white", fontWeight: 600 }
3421
- },
3422
- getDisplayText(entry)
3423
- );
3424
- } : false;
3425
- return /* @__PURE__ */ React20.createElement(
3426
- RechartsPrimitive.Pie,
3427
- {
3428
- innerRadius: resolvedInnerRadius,
3429
- paddingAngle,
3430
- cornerRadius,
3431
- startAngle,
3432
- endAngle,
3433
- label: labelConfig,
3434
- labelLine: false,
3435
- activeShape: activeShapeConfig,
3436
- ...props
3437
- }
3438
- );
3439
- }
3440
- var Chart = Object.assign(ChartContainer, {
3441
- Bar: ChartBar,
3442
- Line: ChartLine,
3443
- Area: ChartArea,
3444
- Pie: ChartPie,
3445
- Tooltip: ChartTooltip,
3446
- TooltipContent: ChartTooltipContent,
3447
- Legend: ChartLegend,
3448
- LegendContent: ChartLegendContent,
3449
- XAxis: ChartXAxis,
3450
- YAxis: ChartYAxis,
3451
- Style: ChartStyle
3452
- });
3453
-
3454
2945
  // src/components/ui/metric-card.tsx
3455
- import * as React21 from "react";
2946
+ import * as React20 from "react";
3456
2947
  import { cva as cva16 } from "class-variance-authority";
3457
2948
  var metricCardVariants = cva16(
3458
2949
  "transition-colors",
@@ -3512,11 +3003,11 @@ var trendConfig = {
3512
3003
  down: { color: "text-text-error", srLabel: "Decreased" },
3513
3004
  neutral: { color: "text-text-muted", srLabel: "No change" }
3514
3005
  };
3515
- var MetricCardContext = React21.createContext({ size: "default", animated: false });
3516
- var MetricCardRoot = React21.forwardRef(
3006
+ var MetricCardContext = React20.createContext({ size: "default", animated: false });
3007
+ var MetricCardRoot = React20.forwardRef(
3517
3008
  ({ className, variant, size, radius, animated = false, children, ...props }, ref) => {
3518
3009
  const resolvedSize = size || "default";
3519
- return /* @__PURE__ */ React21.createElement(MetricCardContext.Provider, { value: { size: resolvedSize, animated } }, /* @__PURE__ */ React21.createElement(
3010
+ return /* @__PURE__ */ React20.createElement(MetricCardContext.Provider, { value: { size: resolvedSize, animated } }, /* @__PURE__ */ React20.createElement(
3520
3011
  "div",
3521
3012
  {
3522
3013
  ref,
@@ -3528,8 +3019,8 @@ var MetricCardRoot = React21.forwardRef(
3528
3019
  }
3529
3020
  );
3530
3021
  MetricCardRoot.displayName = "MetricCard";
3531
- var MetricCardHeader = React21.forwardRef(
3532
- ({ className, ...props }, ref) => /* @__PURE__ */ React21.createElement(
3022
+ var MetricCardHeader = React20.forwardRef(
3023
+ ({ className, ...props }, ref) => /* @__PURE__ */ React20.createElement(
3533
3024
  "div",
3534
3025
  {
3535
3026
  ref,
@@ -3539,10 +3030,10 @@ var MetricCardHeader = React21.forwardRef(
3539
3030
  )
3540
3031
  );
3541
3032
  MetricCardHeader.displayName = "MetricCardHeader";
3542
- var MetricCardTitle = React21.forwardRef(
3033
+ var MetricCardTitle = React20.forwardRef(
3543
3034
  ({ className, ...props }, ref) => {
3544
- const { size } = React21.useContext(MetricCardContext);
3545
- return /* @__PURE__ */ React21.createElement(
3035
+ const { size } = React20.useContext(MetricCardContext);
3036
+ return /* @__PURE__ */ React20.createElement(
3546
3037
  "p",
3547
3038
  {
3548
3039
  ref,
@@ -3553,11 +3044,11 @@ var MetricCardTitle = React21.forwardRef(
3553
3044
  }
3554
3045
  );
3555
3046
  MetricCardTitle.displayName = "MetricCardTitle";
3556
- var MetricCardValue = React21.forwardRef(
3047
+ var MetricCardValue = React20.forwardRef(
3557
3048
  ({ className, children, ...props }, ref) => {
3558
- const { size, animated } = React21.useContext(MetricCardContext);
3559
- const [display, setDisplay] = React21.useState(children);
3560
- React21.useEffect(() => {
3049
+ const { size, animated } = React20.useContext(MetricCardContext);
3050
+ const [display, setDisplay] = React20.useState(children);
3051
+ React20.useEffect(() => {
3561
3052
  if (!animated || typeof children !== "string") {
3562
3053
  setDisplay(children);
3563
3054
  return;
@@ -3592,7 +3083,7 @@ var MetricCardValue = React21.forwardRef(
3592
3083
  }, duration / steps);
3593
3084
  return () => clearInterval(timer);
3594
3085
  }, [children, animated]);
3595
- return /* @__PURE__ */ React21.createElement(
3086
+ return /* @__PURE__ */ React20.createElement(
3596
3087
  "p",
3597
3088
  {
3598
3089
  ref,
@@ -3604,27 +3095,27 @@ var MetricCardValue = React21.forwardRef(
3604
3095
  }
3605
3096
  );
3606
3097
  MetricCardValue.displayName = "MetricCardValue";
3607
- var MetricCardTrend = React21.forwardRef(
3098
+ var MetricCardTrend = React20.forwardRef(
3608
3099
  ({ className, direction, children, ...props }, ref) => {
3609
3100
  const config = trendConfig[direction];
3610
- return /* @__PURE__ */ React21.createElement(
3101
+ return /* @__PURE__ */ React20.createElement(
3611
3102
  "p",
3612
3103
  {
3613
3104
  ref,
3614
3105
  className: cn("flex items-center gap-1 text-sm mt-2", config.color, className),
3615
3106
  ...props
3616
3107
  },
3617
- 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" })),
3618
- 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" })),
3619
- 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" })),
3620
- /* @__PURE__ */ React21.createElement("span", { className: "sr-only" }, config.srLabel),
3108
+ 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" })),
3109
+ 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" })),
3110
+ 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" })),
3111
+ /* @__PURE__ */ React20.createElement("span", { className: "sr-only" }, config.srLabel),
3621
3112
  children
3622
3113
  );
3623
3114
  }
3624
3115
  );
3625
3116
  MetricCardTrend.displayName = "MetricCardTrend";
3626
- var MetricCardDescription = React21.forwardRef(
3627
- ({ className, ...props }, ref) => /* @__PURE__ */ React21.createElement(
3117
+ var MetricCardDescription = React20.forwardRef(
3118
+ ({ className, ...props }, ref) => /* @__PURE__ */ React20.createElement(
3628
3119
  "p",
3629
3120
  {
3630
3121
  ref,
@@ -3634,10 +3125,10 @@ var MetricCardDescription = React21.forwardRef(
3634
3125
  )
3635
3126
  );
3636
3127
  MetricCardDescription.displayName = "MetricCardDescription";
3637
- var MetricCardSymbol = React21.forwardRef(
3128
+ var MetricCardSymbol = React20.forwardRef(
3638
3129
  ({ className, ...props }, ref) => {
3639
- const { size } = React21.useContext(MetricCardContext);
3640
- return /* @__PURE__ */ React21.createElement(
3130
+ const { size } = React20.useContext(MetricCardContext);
3131
+ return /* @__PURE__ */ React20.createElement(
3641
3132
  "div",
3642
3133
  {
3643
3134
  ref,
@@ -3658,7 +3149,7 @@ var MetricCard = Object.assign(MetricCardRoot, {
3658
3149
  });
3659
3150
 
3660
3151
  // src/components/ui/badge.tsx
3661
- import * as React22 from "react";
3152
+ import * as React21 from "react";
3662
3153
  import { Slot as Slot4 } from "@radix-ui/react-slot";
3663
3154
  import { cva as cva17 } from "class-variance-authority";
3664
3155
  var colorMap = {
@@ -3745,7 +3236,7 @@ var dotColorMap = {
3745
3236
  error: "bg-error",
3746
3237
  info: "bg-info"
3747
3238
  };
3748
- var Badge = React22.forwardRef(
3239
+ var Badge = React21.forwardRef(
3749
3240
  ({
3750
3241
  className,
3751
3242
  variant = "subtle",
@@ -3765,7 +3256,7 @@ var Badge = React22.forwardRef(
3765
3256
  const colorClasses = colorMap[color][variant];
3766
3257
  const outlineClasses = variant === "outline" ? "border bg-transparent" : "";
3767
3258
  const dotColor = variant === "solid" ? "bg-current" : dotColorMap[color];
3768
- return /* @__PURE__ */ React22.createElement(
3259
+ return /* @__PURE__ */ React21.createElement(
3769
3260
  Comp,
3770
3261
  {
3771
3262
  ref,
@@ -3777,14 +3268,14 @@ var Badge = React22.forwardRef(
3777
3268
  ),
3778
3269
  ...props
3779
3270
  },
3780
- dot && /* @__PURE__ */ React22.createElement(
3271
+ dot && /* @__PURE__ */ React21.createElement(
3781
3272
  "span",
3782
3273
  {
3783
3274
  className: cn("shrink-0 rounded-full", badgeDotSizes[resolvedSize], dotColor),
3784
3275
  "aria-hidden": "true"
3785
3276
  }
3786
3277
  ),
3787
- icon && /* @__PURE__ */ React22.createElement(
3278
+ icon && /* @__PURE__ */ React21.createElement(
3788
3279
  "span",
3789
3280
  {
3790
3281
  className: cn("shrink-0 [&>svg]:w-full [&>svg]:h-full", badgeIconSizes[resolvedSize]),
@@ -3793,7 +3284,7 @@ var Badge = React22.forwardRef(
3793
3284
  icon
3794
3285
  ),
3795
3286
  children,
3796
- removable && /* @__PURE__ */ React22.createElement(
3287
+ removable && /* @__PURE__ */ React21.createElement(
3797
3288
  "button",
3798
3289
  {
3799
3290
  type: "button",
@@ -3804,7 +3295,7 @@ var Badge = React22.forwardRef(
3804
3295
  },
3805
3296
  "aria-label": "Remove"
3806
3297
  },
3807
- /* @__PURE__ */ React22.createElement(
3298
+ /* @__PURE__ */ React21.createElement(
3808
3299
  "svg",
3809
3300
  {
3810
3301
  className: "w-3 h-3",
@@ -3814,7 +3305,7 @@ var Badge = React22.forwardRef(
3814
3305
  strokeWidth: 2,
3815
3306
  "aria-hidden": "true"
3816
3307
  },
3817
- /* @__PURE__ */ React22.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" })
3308
+ /* @__PURE__ */ React21.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" })
3818
3309
  )
3819
3310
  )
3820
3311
  );
@@ -3823,15 +3314,15 @@ var Badge = React22.forwardRef(
3823
3314
  Badge.displayName = "Badge";
3824
3315
 
3825
3316
  // src/components/ui/card.tsx
3826
- import * as React23 from "react";
3317
+ import * as React22 from "react";
3827
3318
  import { Slot as Slot5 } from "@radix-ui/react-slot";
3828
3319
  import { cva as cva18 } from "class-variance-authority";
3829
- var CardContext = React23.createContext({
3320
+ var CardContext = React22.createContext({
3830
3321
  size: "default",
3831
3322
  direction: "vertical"
3832
3323
  });
3833
3324
  function useCard() {
3834
- return React23.useContext(CardContext);
3325
+ return React22.useContext(CardContext);
3835
3326
  }
3836
3327
  var cardVariants = cva18(
3837
3328
  "flex overflow-hidden transition-all duration-normal",
@@ -3874,7 +3365,7 @@ var cardVariants = cva18(
3874
3365
  }
3875
3366
  }
3876
3367
  );
3877
- var CardRoot = React23.forwardRef(
3368
+ var CardRoot = React22.forwardRef(
3878
3369
  ({
3879
3370
  className,
3880
3371
  variant = "default",
@@ -3889,19 +3380,19 @@ var CardRoot = React23.forwardRef(
3889
3380
  const Comp = asChild ? Slot5 : "div";
3890
3381
  let content = children;
3891
3382
  if (direction === "horizontal") {
3892
- const childArray = React23.Children.toArray(children);
3383
+ const childArray = React22.Children.toArray(children);
3893
3384
  const imageChildren = [];
3894
3385
  const otherChildren = [];
3895
3386
  childArray.forEach((child) => {
3896
- if (React23.isValidElement(child) && child.type === CardImage) {
3387
+ if (React22.isValidElement(child) && child.type === CardImage) {
3897
3388
  imageChildren.push(child);
3898
3389
  } else {
3899
3390
  otherChildren.push(child);
3900
3391
  }
3901
3392
  });
3902
- content = /* @__PURE__ */ React23.createElement(React23.Fragment, null, imageChildren, /* @__PURE__ */ React23.createElement("div", { className: "flex-1 flex flex-col min-w-0" }, otherChildren));
3393
+ content = /* @__PURE__ */ React22.createElement(React22.Fragment, null, imageChildren, /* @__PURE__ */ React22.createElement("div", { className: "flex-1 flex flex-col min-w-0" }, otherChildren));
3903
3394
  }
3904
- return /* @__PURE__ */ React23.createElement(CardContext.Provider, { value: { size, direction } }, /* @__PURE__ */ React23.createElement(
3395
+ return /* @__PURE__ */ React22.createElement(CardContext.Provider, { value: { size, direction } }, /* @__PURE__ */ React22.createElement(
3905
3396
  Comp,
3906
3397
  {
3907
3398
  ref,
@@ -3968,13 +3459,13 @@ var overlayOpacityMap = {
3968
3459
  80: "from-black/80",
3969
3460
  90: "from-black/90"
3970
3461
  };
3971
- var CardImage = React23.forwardRef(
3462
+ var CardImage = React22.forwardRef(
3972
3463
  ({ className, overlay = false, overlayOpacity = 60, overlayClassName, alt = "", ...props }, ref) => {
3973
3464
  const { direction } = useCard();
3974
3465
  const isHorizontal = direction === "horizontal";
3975
3466
  if (isHorizontal) {
3976
3467
  const opacityClass = overlay ? overlayOpacityMap[overlayOpacity] || "from-black/60" : null;
3977
- return /* @__PURE__ */ React23.createElement("div", { className: cn("relative shrink-0 w-48 overflow-hidden", className) }, /* @__PURE__ */ React23.createElement(
3468
+ return /* @__PURE__ */ React22.createElement("div", { className: cn("relative shrink-0 w-48 overflow-hidden", className) }, /* @__PURE__ */ React22.createElement(
3978
3469
  "img",
3979
3470
  {
3980
3471
  ref,
@@ -3982,11 +3473,11 @@ var CardImage = React23.forwardRef(
3982
3473
  className: "absolute inset-0 w-full h-full object-cover",
3983
3474
  ...props
3984
3475
  }
3985
- ), overlay && /* @__PURE__ */ React23.createElement("div", { className: cn("absolute inset-0 bg-gradient-to-t to-transparent", overlayClassName || opacityClass) }));
3476
+ ), overlay && /* @__PURE__ */ React22.createElement("div", { className: cn("absolute inset-0 bg-gradient-to-t to-transparent", overlayClassName || opacityClass) }));
3986
3477
  }
3987
3478
  if (overlay) {
3988
3479
  const opacityClass = overlayOpacityMap[overlayOpacity] || "from-black/60";
3989
- return /* @__PURE__ */ React23.createElement("div", { className: "relative w-full shrink-0 overflow-hidden" }, /* @__PURE__ */ React23.createElement(
3480
+ return /* @__PURE__ */ React22.createElement("div", { className: "relative w-full shrink-0 overflow-hidden" }, /* @__PURE__ */ React22.createElement(
3990
3481
  "img",
3991
3482
  {
3992
3483
  ref,
@@ -3994,9 +3485,9 @@ var CardImage = React23.forwardRef(
3994
3485
  className: cn("w-full object-cover", className),
3995
3486
  ...props
3996
3487
  }
3997
- ), /* @__PURE__ */ React23.createElement("div", { className: cn("absolute inset-0 bg-gradient-to-t to-transparent", overlayClassName || opacityClass) }));
3488
+ ), /* @__PURE__ */ React22.createElement("div", { className: cn("absolute inset-0 bg-gradient-to-t to-transparent", overlayClassName || opacityClass) }));
3998
3489
  }
3999
- return /* @__PURE__ */ React23.createElement(
3490
+ return /* @__PURE__ */ React22.createElement(
4000
3491
  "img",
4001
3492
  {
4002
3493
  ref,
@@ -4008,20 +3499,20 @@ var CardImage = React23.forwardRef(
4008
3499
  }
4009
3500
  );
4010
3501
  CardImage.displayName = "CardImage";
4011
- var CardHeader = React23.forwardRef(
3502
+ var CardHeader = React22.forwardRef(
4012
3503
  ({ className, children, ...props }, ref) => {
4013
3504
  const { size } = useCard();
4014
- const childArray = React23.Children.toArray(children);
3505
+ const childArray = React22.Children.toArray(children);
4015
3506
  const actionChildren = [];
4016
3507
  const otherChildren = [];
4017
3508
  childArray.forEach((child) => {
4018
- if (React23.isValidElement(child) && child.type === CardAction) {
3509
+ if (React22.isValidElement(child) && child.type === CardAction) {
4019
3510
  actionChildren.push(child);
4020
3511
  } else {
4021
3512
  otherChildren.push(child);
4022
3513
  }
4023
3514
  });
4024
- return /* @__PURE__ */ React23.createElement(
3515
+ return /* @__PURE__ */ React22.createElement(
4025
3516
  "div",
4026
3517
  {
4027
3518
  ref,
@@ -4035,15 +3526,15 @@ var CardHeader = React23.forwardRef(
4035
3526
  ),
4036
3527
  ...props
4037
3528
  },
4038
- /* @__PURE__ */ React23.createElement("div", { className: "flex-1 min-w-0 space-y-3" }, otherChildren),
3529
+ /* @__PURE__ */ React22.createElement("div", { className: "flex-1 min-w-0 space-y-3" }, otherChildren),
4039
3530
  actionChildren
4040
3531
  );
4041
3532
  }
4042
3533
  );
4043
3534
  CardHeader.displayName = "CardHeader";
4044
- var CardTitle = React23.forwardRef(
3535
+ var CardTitle = React22.forwardRef(
4045
3536
  ({ className, icon, children, ...props }, ref) => {
4046
- return /* @__PURE__ */ React23.createElement(
3537
+ return /* @__PURE__ */ React22.createElement(
4047
3538
  "h3",
4048
3539
  {
4049
3540
  ref,
@@ -4054,15 +3545,15 @@ var CardTitle = React23.forwardRef(
4054
3545
  ),
4055
3546
  ...props
4056
3547
  },
4057
- icon && /* @__PURE__ */ React23.createElement("span", { className: "shrink-0 icon-sm [&>svg]:w-full [&>svg]:h-full", "aria-hidden": "true" }, icon),
3548
+ icon && /* @__PURE__ */ React22.createElement("span", { className: "shrink-0 icon-sm [&>svg]:w-full [&>svg]:h-full", "aria-hidden": "true" }, icon),
4058
3549
  children
4059
3550
  );
4060
3551
  }
4061
3552
  );
4062
3553
  CardTitle.displayName = "CardTitle";
4063
- var CardDescription = React23.forwardRef(
3554
+ var CardDescription = React22.forwardRef(
4064
3555
  ({ className, ...props }, ref) => {
4065
- return /* @__PURE__ */ React23.createElement(
3556
+ return /* @__PURE__ */ React22.createElement(
4066
3557
  "p",
4067
3558
  {
4068
3559
  ref,
@@ -4073,9 +3564,9 @@ var CardDescription = React23.forwardRef(
4073
3564
  }
4074
3565
  );
4075
3566
  CardDescription.displayName = "CardDescription";
4076
- var CardAction = React23.forwardRef(
3567
+ var CardAction = React22.forwardRef(
4077
3568
  ({ className, ...props }, ref) => {
4078
- return /* @__PURE__ */ React23.createElement(
3569
+ return /* @__PURE__ */ React22.createElement(
4079
3570
  "div",
4080
3571
  {
4081
3572
  ref,
@@ -4086,10 +3577,10 @@ var CardAction = React23.forwardRef(
4086
3577
  }
4087
3578
  );
4088
3579
  CardAction.displayName = "CardAction";
4089
- var CardContent = React23.forwardRef(
3580
+ var CardContent = React22.forwardRef(
4090
3581
  ({ className, ...props }, ref) => {
4091
3582
  const { size } = useCard();
4092
- return /* @__PURE__ */ React23.createElement(
3583
+ return /* @__PURE__ */ React22.createElement(
4093
3584
  "div",
4094
3585
  {
4095
3586
  ref,
@@ -4100,10 +3591,10 @@ var CardContent = React23.forwardRef(
4100
3591
  }
4101
3592
  );
4102
3593
  CardContent.displayName = "CardContent";
4103
- var CardFooter = React23.forwardRef(
3594
+ var CardFooter = React22.forwardRef(
4104
3595
  ({ className, ...props }, ref) => {
4105
3596
  const { size } = useCard();
4106
- return /* @__PURE__ */ React23.createElement(
3597
+ return /* @__PURE__ */ React22.createElement(
4107
3598
  "div",
4108
3599
  {
4109
3600
  ref,
@@ -4131,9 +3622,9 @@ var Card = Object.assign(CardRoot, {
4131
3622
  });
4132
3623
 
4133
3624
  // src/components/ui/table.tsx
4134
- import * as React24 from "react";
3625
+ import * as React23 from "react";
4135
3626
  import { cva as cva19 } from "class-variance-authority";
4136
- var TableContext = React24.createContext({ size: "default", variant: "default", stickyHeader: false });
3627
+ var TableContext = React23.createContext({ size: "default", variant: "default", stickyHeader: false });
4137
3628
  var cellPaddingMap = {
4138
3629
  sm: "px-3 py-2 text-sm",
4139
3630
  default: "px-4 py-3 text-sm",
@@ -4164,8 +3655,8 @@ var tableVariants = cva19(
4164
3655
  }
4165
3656
  }
4166
3657
  );
4167
- var TableRoot = React24.forwardRef(
4168
- ({ 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(
3658
+ var TableRoot = React23.forwardRef(
3659
+ ({ 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(
4169
3660
  "table",
4170
3661
  {
4171
3662
  ref,
@@ -4175,9 +3666,9 @@ var TableRoot = React24.forwardRef(
4175
3666
  )))
4176
3667
  );
4177
3668
  TableRoot.displayName = "Table";
4178
- var TableHeader = React24.forwardRef(({ className, ...props }, ref) => {
4179
- const { stickyHeader } = React24.useContext(TableContext);
4180
- return /* @__PURE__ */ React24.createElement(
3669
+ var TableHeader = React23.forwardRef(({ className, ...props }, ref) => {
3670
+ const { stickyHeader } = React23.useContext(TableContext);
3671
+ return /* @__PURE__ */ React23.createElement(
4181
3672
  "thead",
4182
3673
  {
4183
3674
  ref,
@@ -4191,9 +3682,9 @@ var TableHeader = React24.forwardRef(({ className, ...props }, ref) => {
4191
3682
  );
4192
3683
  });
4193
3684
  TableHeader.displayName = "TableHeader";
4194
- var TableBody = React24.forwardRef(({ className, ...props }, ref) => {
4195
- const { variant } = React24.useContext(TableContext);
4196
- return /* @__PURE__ */ React24.createElement(
3685
+ var TableBody = React23.forwardRef(({ className, ...props }, ref) => {
3686
+ const { variant } = React23.useContext(TableContext);
3687
+ return /* @__PURE__ */ React23.createElement(
4197
3688
  "tbody",
4198
3689
  {
4199
3690
  ref,
@@ -4207,7 +3698,7 @@ var TableBody = React24.forwardRef(({ className, ...props }, ref) => {
4207
3698
  );
4208
3699
  });
4209
3700
  TableBody.displayName = "TableBody";
4210
- var TableFooter = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React24.createElement(
3701
+ var TableFooter = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23.createElement(
4211
3702
  "tfoot",
4212
3703
  {
4213
3704
  ref,
@@ -4219,8 +3710,8 @@ var TableFooter = React24.forwardRef(({ className, ...props }, ref) => /* @__PUR
4219
3710
  }
4220
3711
  ));
4221
3712
  TableFooter.displayName = "TableFooter";
4222
- var TableRow = React24.forwardRef(
4223
- ({ className, interactive = false, selected = false, ...props }, ref) => /* @__PURE__ */ React24.createElement(
3713
+ var TableRow = React23.forwardRef(
3714
+ ({ className, interactive = false, selected = false, ...props }, ref) => /* @__PURE__ */ React23.createElement(
4224
3715
  "tr",
4225
3716
  {
4226
3717
  ref,
@@ -4236,15 +3727,15 @@ var TableRow = React24.forwardRef(
4236
3727
  );
4237
3728
  TableRow.displayName = "TableRow";
4238
3729
  var defaultSortIcons = {
4239
- 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" })),
4240
- 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" })),
4241
- 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" }))
3730
+ 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" })),
3731
+ 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" })),
3732
+ 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" }))
4242
3733
  };
4243
- var TableHead = React24.forwardRef(
3734
+ var TableHead = React23.forwardRef(
4244
3735
  ({ className, align = "left", sortable = false, sortDirection = null, onSort, sortIcon, children, ...props }, ref) => {
4245
- const { size } = React24.useContext(TableContext);
3736
+ const { size } = React23.useContext(TableContext);
4246
3737
  const icons = { ...defaultSortIcons, ...sortIcon };
4247
- const content = sortable ? /* @__PURE__ */ React24.createElement(
3738
+ const content = sortable ? /* @__PURE__ */ React23.createElement(
4248
3739
  "button",
4249
3740
  {
4250
3741
  type: "button",
@@ -4252,12 +3743,12 @@ var TableHead = React24.forwardRef(
4252
3743
  onClick: onSort
4253
3744
  },
4254
3745
  children,
4255
- /* @__PURE__ */ React24.createElement("span", { className: cn(
3746
+ /* @__PURE__ */ React23.createElement("span", { className: cn(
4256
3747
  "shrink-0 transition-colors duration-fast",
4257
3748
  sortDirection ? "text-foreground" : "text-text-muted"
4258
3749
  ) }, sortDirection === "asc" ? icons.asc : sortDirection === "desc" ? icons.desc : icons.default)
4259
3750
  ) : children;
4260
- return /* @__PURE__ */ React24.createElement(
3751
+ return /* @__PURE__ */ React23.createElement(
4261
3752
  "th",
4262
3753
  {
4263
3754
  ref,
@@ -4278,10 +3769,10 @@ var TableHead = React24.forwardRef(
4278
3769
  }
4279
3770
  );
4280
3771
  TableHead.displayName = "TableHead";
4281
- var TableCell = React24.forwardRef(
3772
+ var TableCell = React23.forwardRef(
4282
3773
  ({ className, align = "left", ...props }, ref) => {
4283
- const { size } = React24.useContext(TableContext);
4284
- return /* @__PURE__ */ React24.createElement(
3774
+ const { size } = React23.useContext(TableContext);
3775
+ return /* @__PURE__ */ React23.createElement(
4285
3776
  "td",
4286
3777
  {
4287
3778
  ref,
@@ -4299,7 +3790,7 @@ var TableCell = React24.forwardRef(
4299
3790
  }
4300
3791
  );
4301
3792
  TableCell.displayName = "TableCell";
4302
- var TableCaption = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React24.createElement(
3793
+ var TableCaption = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23.createElement(
4303
3794
  "caption",
4304
3795
  {
4305
3796
  ref,
@@ -4319,11 +3810,11 @@ var Table = Object.assign(TableRoot, {
4319
3810
  });
4320
3811
 
4321
3812
  // src/components/ui/tabs.tsx
4322
- import * as React25 from "react";
3813
+ import * as React24 from "react";
4323
3814
  import * as TabsPrimitive from "@radix-ui/react-tabs";
4324
3815
  import { cva as cva20 } from "class-variance-authority";
4325
- var TabsStyleContext = React25.createContext({});
4326
- var useTabsStyleContext = () => React25.useContext(TabsStyleContext);
3816
+ var TabsStyleContext = React24.createContext({});
3817
+ var useTabsStyleContext = () => React24.useContext(TabsStyleContext);
4327
3818
  var tabsListVariants = cva20(
4328
3819
  "inline-flex items-center text-text-subtle",
4329
3820
  {
@@ -4344,9 +3835,9 @@ var tabsListVariants = cva20(
4344
3835
  }
4345
3836
  }
4346
3837
  );
4347
- var TabsList = React25.forwardRef(({ className, variant, size, fitted, color, radius, ...props }, ref) => {
3838
+ var TabsList = React24.forwardRef(({ className, variant, size, fitted, color, radius, ...props }, ref) => {
4348
3839
  const resolvedVariant = variant || "line";
4349
- return /* @__PURE__ */ React25.createElement(TabsStyleContext.Provider, { value: { variant: resolvedVariant, size: size || "default", fitted: fitted ?? false, color: color || "default", radius: radius || "md" } }, /* @__PURE__ */ React25.createElement(
3840
+ return /* @__PURE__ */ React24.createElement(TabsStyleContext.Provider, { value: { variant: resolvedVariant, size: size || "default", fitted: fitted ?? false, color: color || "default", radius: radius || "md" } }, /* @__PURE__ */ React24.createElement(
4350
3841
  TabsPrimitive.List,
4351
3842
  {
4352
3843
  ref,
@@ -4468,10 +3959,10 @@ var pillItemRadiusClasses = {
4468
3959
  "3xl": "rounded-2xl",
4469
3960
  full: "rounded-full"
4470
3961
  };
4471
- var TabsTrigger = React25.forwardRef(({ className, children, ...props }, ref) => {
3962
+ var TabsTrigger = React24.forwardRef(({ className, children, ...props }, ref) => {
4472
3963
  const { variant, size, fitted, color, radius } = useTabsStyleContext();
4473
3964
  const resolvedSize = size || "default";
4474
- return /* @__PURE__ */ React25.createElement(
3965
+ return /* @__PURE__ */ React24.createElement(
4475
3966
  TabsPrimitive.Trigger,
4476
3967
  {
4477
3968
  ref,
@@ -4489,7 +3980,7 @@ var TabsTrigger = React25.forwardRef(({ className, children, ...props }, ref) =>
4489
3980
  );
4490
3981
  });
4491
3982
  TabsTrigger.displayName = "TabsTrigger";
4492
- var TabsContent = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React25.createElement(
3983
+ var TabsContent = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React24.createElement(
4493
3984
  TabsPrimitive.Content,
4494
3985
  {
4495
3986
  ref,
@@ -4509,15 +4000,15 @@ var Tabs = Object.assign(TabsRoot, {
4509
4000
  });
4510
4001
 
4511
4002
  // src/components/ui/navigation-menu.tsx
4512
- import * as React26 from "react";
4003
+ import * as React25 from "react";
4513
4004
  import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
4514
4005
  import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
4515
4006
  import { Slot as Slot6 } from "@radix-ui/react-slot";
4516
4007
  function ChevronDownIcon({ className }) {
4517
- 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" }));
4008
+ 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" }));
4518
4009
  }
4519
4010
  function ChevronRightIcon2({ 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: "M9 5l7 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: "M9 5l7 7-7 7" }));
4521
4012
  }
4522
4013
  var contentRadiusMap3 = {
4523
4014
  sm: "rounded",
@@ -4539,15 +4030,15 @@ var itemRadiusMap3 = {
4539
4030
  xl: "rounded-lg"
4540
4031
  // 8px
4541
4032
  };
4542
- var NavigationMenuContext = React26.createContext({
4033
+ var NavigationMenuContext = React25.createContext({
4543
4034
  orientation: "horizontal",
4544
4035
  size: "default",
4545
4036
  collapsed: false,
4546
4037
  radius: "lg",
4547
4038
  fontWeight: "normal"
4548
4039
  });
4549
- var useNavigationMenuContext = () => React26.useContext(NavigationMenuContext);
4550
- var ContentLevelContext = React26.createContext(false);
4040
+ var useNavigationMenuContext = () => React25.useContext(NavigationMenuContext);
4041
+ var ContentLevelContext = React25.createContext(false);
4551
4042
  var navigationMenuSizeMap = {
4552
4043
  sm: {
4553
4044
  trigger: "h-8 text-sm px-3 gap-2",
@@ -4594,7 +4085,7 @@ var navigationMenuSizeMap = {
4594
4085
  groupMargin: "mt-6 first:mt-0"
4595
4086
  }
4596
4087
  };
4597
- var NavigationMenuRoot = React26.forwardRef(
4088
+ var NavigationMenuRoot = React25.forwardRef(
4598
4089
  ({
4599
4090
  className,
4600
4091
  orientation = "horizontal",
@@ -4613,12 +4104,12 @@ var NavigationMenuRoot = React26.forwardRef(
4613
4104
  style,
4614
4105
  ...props
4615
4106
  }, ref) => {
4616
- const contextValue = React26.useMemo(
4107
+ const contextValue = React25.useMemo(
4617
4108
  () => ({ orientation, size, collapsed: orientation === "vertical" ? collapsed : false, radius, fontWeight }),
4618
4109
  [orientation, size, collapsed, radius, fontWeight]
4619
4110
  );
4620
4111
  if (orientation === "horizontal") {
4621
- return /* @__PURE__ */ React26.createElement(NavigationMenuContext.Provider, { value: contextValue }, /* @__PURE__ */ React26.createElement(
4112
+ return /* @__PURE__ */ React25.createElement(NavigationMenuContext.Provider, { value: contextValue }, /* @__PURE__ */ React25.createElement(
4622
4113
  NavigationMenuPrimitive.Root,
4623
4114
  {
4624
4115
  ref,
@@ -4634,7 +4125,7 @@ var NavigationMenuRoot = React26.forwardRef(
4634
4125
  }
4635
4126
  const resolvedWidth = collapsed ? collapsedWidth ?? navigationMenuSizeMap[size].collapsedWidth : width ?? 256;
4636
4127
  const widthValue = typeof resolvedWidth === "number" ? `${resolvedWidth}px` : resolvedWidth;
4637
- return /* @__PURE__ */ React26.createElement(NavigationMenuContext.Provider, { value: contextValue }, /* @__PURE__ */ React26.createElement(
4128
+ return /* @__PURE__ */ React25.createElement(NavigationMenuContext.Provider, { value: contextValue }, /* @__PURE__ */ React25.createElement(
4638
4129
  "nav",
4639
4130
  {
4640
4131
  ref,
@@ -4652,11 +4143,11 @@ var NavigationMenuRoot = React26.forwardRef(
4652
4143
  }
4653
4144
  );
4654
4145
  NavigationMenuRoot.displayName = "NavigationMenu";
4655
- var NavigationMenuList = React26.forwardRef(
4146
+ var NavigationMenuList = React25.forwardRef(
4656
4147
  ({ className, children, ...props }, ref) => {
4657
4148
  const { orientation } = useNavigationMenuContext();
4658
4149
  if (orientation === "horizontal") {
4659
- return /* @__PURE__ */ React26.createElement(
4150
+ return /* @__PURE__ */ React25.createElement(
4660
4151
  NavigationMenuPrimitive.List,
4661
4152
  {
4662
4153
  ref,
@@ -4666,7 +4157,7 @@ var NavigationMenuList = React26.forwardRef(
4666
4157
  children
4667
4158
  );
4668
4159
  }
4669
- return /* @__PURE__ */ React26.createElement(
4160
+ return /* @__PURE__ */ React25.createElement(
4670
4161
  "ul",
4671
4162
  {
4672
4163
  ref,
@@ -4678,15 +4169,15 @@ var NavigationMenuList = React26.forwardRef(
4678
4169
  }
4679
4170
  );
4680
4171
  NavigationMenuList.displayName = "NavigationMenuList";
4681
- var NavigationMenuItem = React26.forwardRef(
4172
+ var NavigationMenuItem = React25.forwardRef(
4682
4173
  ({ className, value, defaultOpen = false, children, ...props }, ref) => {
4683
4174
  const { orientation, collapsed } = useNavigationMenuContext();
4684
- const [open, setOpen] = React26.useState(defaultOpen);
4685
- React26.useEffect(() => {
4175
+ const [open, setOpen] = React25.useState(defaultOpen);
4176
+ React25.useEffect(() => {
4686
4177
  if (collapsed) setOpen(false);
4687
4178
  }, [collapsed]);
4688
4179
  if (orientation === "horizontal") {
4689
- return /* @__PURE__ */ React26.createElement(
4180
+ return /* @__PURE__ */ React25.createElement(
4690
4181
  NavigationMenuPrimitive.Item,
4691
4182
  {
4692
4183
  ref,
@@ -4697,25 +4188,25 @@ var NavigationMenuItem = React26.forwardRef(
4697
4188
  children
4698
4189
  );
4699
4190
  }
4700
- return /* @__PURE__ */ React26.createElement(
4191
+ return /* @__PURE__ */ React25.createElement(
4701
4192
  CollapsiblePrimitive.Root,
4702
4193
  {
4703
4194
  open: collapsed ? false : open,
4704
4195
  onOpenChange: collapsed ? void 0 : setOpen,
4705
4196
  asChild: true
4706
4197
  },
4707
- /* @__PURE__ */ React26.createElement("li", { ref, className: cn("", className), ...props }, children)
4198
+ /* @__PURE__ */ React25.createElement("li", { ref, className: cn("", className), ...props }, children)
4708
4199
  );
4709
4200
  }
4710
4201
  );
4711
4202
  NavigationMenuItem.displayName = "NavigationMenuItem";
4712
- var NavigationMenuTrigger = React26.forwardRef(
4203
+ var NavigationMenuTrigger = React25.forwardRef(
4713
4204
  ({ className, children, icon, chevronIcon, ...props }, ref) => {
4714
4205
  const { orientation, size, collapsed, radius, fontWeight: fw } = useNavigationMenuContext();
4715
4206
  const s = navigationMenuSizeMap[size];
4716
4207
  const fwClass = fw === "semibold" ? "font-semibold" : "font-normal";
4717
4208
  if (orientation === "horizontal") {
4718
- return /* @__PURE__ */ React26.createElement(
4209
+ return /* @__PURE__ */ React25.createElement(
4719
4210
  NavigationMenuPrimitive.Trigger,
4720
4211
  {
4721
4212
  ref,
@@ -4734,12 +4225,12 @@ var NavigationMenuTrigger = React26.forwardRef(
4734
4225
  ),
4735
4226
  ...props
4736
4227
  },
4737
- icon && /* @__PURE__ */ React26.createElement("span", { className: cn("shrink-0 mr-2", s.icon) }, icon),
4228
+ icon && /* @__PURE__ */ React25.createElement("span", { className: cn("shrink-0 mr-2", s.icon) }, icon),
4738
4229
  children,
4739
- /* @__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" }))
4230
+ /* @__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" }))
4740
4231
  );
4741
4232
  }
4742
- return /* @__PURE__ */ React26.createElement(
4233
+ return /* @__PURE__ */ React25.createElement(
4743
4234
  CollapsiblePrimitive.Trigger,
4744
4235
  {
4745
4236
  ref,
@@ -4758,8 +4249,8 @@ var NavigationMenuTrigger = React26.forwardRef(
4758
4249
  ...collapsed && typeof children === "string" ? { title: children } : {},
4759
4250
  ...props
4760
4251
  },
4761
- icon && /* @__PURE__ */ React26.createElement("span", { className: cn("shrink-0", s.icon) }, icon),
4762
- !collapsed && /* @__PURE__ */ React26.createElement(React26.Fragment, null, /* @__PURE__ */ React26.createElement("span", { className: "flex-1 text-left truncate" }, children), /* @__PURE__ */ React26.createElement(
4252
+ icon && /* @__PURE__ */ React25.createElement("span", { className: cn("shrink-0", s.icon) }, icon),
4253
+ !collapsed && /* @__PURE__ */ React25.createElement(React25.Fragment, null, /* @__PURE__ */ React25.createElement("span", { className: "flex-1 text-left truncate" }, children), /* @__PURE__ */ React25.createElement(
4763
4254
  "span",
4764
4255
  {
4765
4256
  className: cn(
@@ -4768,18 +4259,18 @@ var NavigationMenuTrigger = React26.forwardRef(
4768
4259
  "group-data-[state=open]:rotate-90"
4769
4260
  )
4770
4261
  },
4771
- chevronIcon ?? /* @__PURE__ */ React26.createElement(ChevronRightIcon2, { className: "size-full" })
4262
+ chevronIcon ?? /* @__PURE__ */ React25.createElement(ChevronRightIcon2, { className: "size-full" })
4772
4263
  ))
4773
4264
  );
4774
4265
  }
4775
4266
  );
4776
4267
  NavigationMenuTrigger.displayName = "NavigationMenuTrigger";
4777
- var NavigationMenuContent = React26.forwardRef(
4268
+ var NavigationMenuContent = React25.forwardRef(
4778
4269
  ({ className, children, ...props }, ref) => {
4779
4270
  const { orientation, size, collapsed, radius } = useNavigationMenuContext();
4780
4271
  const s = navigationMenuSizeMap[size];
4781
4272
  if (orientation === "horizontal") {
4782
- return /* @__PURE__ */ React26.createElement(ContentLevelContext.Provider, { value: true }, /* @__PURE__ */ React26.createElement(
4273
+ return /* @__PURE__ */ React25.createElement(ContentLevelContext.Provider, { value: true }, /* @__PURE__ */ React25.createElement(
4783
4274
  NavigationMenuPrimitive.Content,
4784
4275
  {
4785
4276
  ref,
@@ -4790,11 +4281,11 @@ var NavigationMenuContent = React26.forwardRef(
4790
4281
  ),
4791
4282
  ...props
4792
4283
  },
4793
- /* @__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)
4284
+ /* @__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)
4794
4285
  ));
4795
4286
  }
4796
4287
  if (collapsed) return null;
4797
- return /* @__PURE__ */ React26.createElement(ContentLevelContext.Provider, { value: true }, /* @__PURE__ */ React26.createElement(
4288
+ return /* @__PURE__ */ React25.createElement(ContentLevelContext.Provider, { value: true }, /* @__PURE__ */ React25.createElement(
4798
4289
  CollapsiblePrimitive.Content,
4799
4290
  {
4800
4291
  ref,
@@ -4804,7 +4295,7 @@ var NavigationMenuContent = React26.forwardRef(
4804
4295
  ),
4805
4296
  ...props
4806
4297
  },
4807
- /* @__PURE__ */ React26.createElement("div", { className: cn(
4298
+ /* @__PURE__ */ React25.createElement("div", { className: cn(
4808
4299
  "flex flex-col gap-0.5 py-1",
4809
4300
  className
4810
4301
  ) }, children)
@@ -4812,16 +4303,16 @@ var NavigationMenuContent = React26.forwardRef(
4812
4303
  }
4813
4304
  );
4814
4305
  NavigationMenuContent.displayName = "NavigationMenuContent";
4815
- var NavigationMenuLink = React26.forwardRef(
4306
+ var NavigationMenuLink = React25.forwardRef(
4816
4307
  ({ className, active, asChild, icon, children, ...props }, ref) => {
4817
4308
  const { orientation, size, collapsed, radius, fontWeight: fw } = useNavigationMenuContext();
4818
4309
  const s = navigationMenuSizeMap[size];
4819
4310
  const fwClass = fw === "semibold" ? "font-semibold" : "font-normal";
4820
- const inContent = React26.useContext(ContentLevelContext);
4311
+ const inContent = React25.useContext(ContentLevelContext);
4821
4312
  if (orientation === "horizontal") {
4822
4313
  const { onSelect, ...radixSafeProps } = props;
4823
4314
  if (inContent) {
4824
- return /* @__PURE__ */ React26.createElement(
4315
+ return /* @__PURE__ */ React25.createElement(
4825
4316
  NavigationMenuPrimitive.Link,
4826
4317
  {
4827
4318
  ref,
@@ -4840,10 +4331,10 @@ var NavigationMenuLink = React26.forwardRef(
4840
4331
  onSelect,
4841
4332
  ...radixSafeProps
4842
4333
  },
4843
- asChild ? children : /* @__PURE__ */ React26.createElement(React26.Fragment, null, icon && /* @__PURE__ */ React26.createElement("span", { className: cn("shrink-0", s.icon) }, icon), children)
4334
+ asChild ? children : /* @__PURE__ */ React25.createElement(React25.Fragment, null, icon && /* @__PURE__ */ React25.createElement("span", { className: cn("shrink-0", s.icon) }, icon), children)
4844
4335
  );
4845
4336
  }
4846
- return /* @__PURE__ */ React26.createElement(
4337
+ return /* @__PURE__ */ React25.createElement(
4847
4338
  NavigationMenuPrimitive.Link,
4848
4339
  {
4849
4340
  ref,
@@ -4863,12 +4354,12 @@ var NavigationMenuLink = React26.forwardRef(
4863
4354
  onSelect,
4864
4355
  ...radixSafeProps
4865
4356
  },
4866
- asChild ? children : /* @__PURE__ */ React26.createElement(React26.Fragment, null, icon && /* @__PURE__ */ React26.createElement("span", { className: cn("shrink-0", s.icon) }, icon), children)
4357
+ asChild ? children : /* @__PURE__ */ React25.createElement(React25.Fragment, null, icon && /* @__PURE__ */ React25.createElement("span", { className: cn("shrink-0", s.icon) }, icon), children)
4867
4358
  );
4868
4359
  }
4869
4360
  const Comp = asChild ? Slot6 : "a";
4870
4361
  if (inContent) {
4871
- return /* @__PURE__ */ React26.createElement(
4362
+ return /* @__PURE__ */ React25.createElement(
4872
4363
  Comp,
4873
4364
  {
4874
4365
  ref,
@@ -4885,11 +4376,11 @@ var NavigationMenuLink = React26.forwardRef(
4885
4376
  ...active ? { "aria-current": "page" } : {},
4886
4377
  ...props
4887
4378
  },
4888
- icon && /* @__PURE__ */ React26.createElement("span", { className: cn("shrink-0", s.icon) }, icon),
4379
+ icon && /* @__PURE__ */ React25.createElement("span", { className: cn("shrink-0", s.icon) }, icon),
4889
4380
  !collapsed && children
4890
4381
  );
4891
4382
  }
4892
- return /* @__PURE__ */ React26.createElement(
4383
+ return /* @__PURE__ */ React25.createElement(
4893
4384
  Comp,
4894
4385
  {
4895
4386
  ref,
@@ -4907,28 +4398,28 @@ var NavigationMenuLink = React26.forwardRef(
4907
4398
  ...collapsed && typeof children === "string" ? { title: children } : {},
4908
4399
  ...props
4909
4400
  },
4910
- icon && /* @__PURE__ */ React26.createElement("span", { className: cn("shrink-0", s.icon) }, icon),
4911
- !collapsed && /* @__PURE__ */ React26.createElement("span", { className: "truncate" }, children)
4401
+ icon && /* @__PURE__ */ React25.createElement("span", { className: cn("shrink-0", s.icon) }, icon),
4402
+ !collapsed && /* @__PURE__ */ React25.createElement("span", { className: "truncate" }, children)
4912
4403
  );
4913
4404
  }
4914
4405
  );
4915
4406
  NavigationMenuLink.displayName = "NavigationMenuLink";
4916
- var NavigationMenuGroup = React26.forwardRef(
4407
+ var NavigationMenuGroup = React25.forwardRef(
4917
4408
  ({ className, label, children, ...props }, ref) => {
4918
4409
  const { size, collapsed } = useNavigationMenuContext();
4919
4410
  const s = navigationMenuSizeMap[size];
4920
- return /* @__PURE__ */ React26.createElement("div", { ref, role: "group", className: cn(label && !collapsed && s.groupMargin, className), ...props }, label && !collapsed && /* @__PURE__ */ React26.createElement("div", { className: cn(
4411
+ return /* @__PURE__ */ React25.createElement("div", { ref, role: "group", className: cn(label && !collapsed && s.groupMargin, className), ...props }, label && !collapsed && /* @__PURE__ */ React25.createElement("div", { className: cn(
4921
4412
  "font-semibold text-text-subtle uppercase tracking-wider select-none",
4922
4413
  s.groupLabel
4923
- ) }, label), /* @__PURE__ */ React26.createElement("ul", { className: "flex flex-col gap-0.5" }, children));
4414
+ ) }, label), /* @__PURE__ */ React25.createElement("ul", { className: "flex flex-col gap-0.5" }, children));
4924
4415
  }
4925
4416
  );
4926
4417
  NavigationMenuGroup.displayName = "NavigationMenuGroup";
4927
- var NavigationMenuIndicator = React26.forwardRef(
4418
+ var NavigationMenuIndicator = React25.forwardRef(
4928
4419
  ({ className, color = "default", ...props }, ref) => {
4929
4420
  const { orientation } = useNavigationMenuContext();
4930
4421
  if (orientation === "vertical") return null;
4931
- return /* @__PURE__ */ React26.createElement(
4422
+ return /* @__PURE__ */ React25.createElement(
4932
4423
  NavigationMenuPrimitive.Indicator,
4933
4424
  {
4934
4425
  ref,
@@ -4940,7 +4431,7 @@ var NavigationMenuIndicator = React26.forwardRef(
4940
4431
  ),
4941
4432
  ...props
4942
4433
  },
4943
- /* @__PURE__ */ React26.createElement("div", { className: cn(
4434
+ /* @__PURE__ */ React25.createElement("div", { className: cn(
4944
4435
  "relative h-full w-full rounded-full",
4945
4436
  color === "default" ? "bg-foreground" : "bg-primary"
4946
4437
  ) })
@@ -4948,11 +4439,11 @@ var NavigationMenuIndicator = React26.forwardRef(
4948
4439
  }
4949
4440
  );
4950
4441
  NavigationMenuIndicator.displayName = "NavigationMenuIndicator";
4951
- var NavigationMenuViewport = React26.forwardRef(
4442
+ var NavigationMenuViewport = React25.forwardRef(
4952
4443
  ({ className, ...props }, ref) => {
4953
4444
  const { orientation } = useNavigationMenuContext();
4954
4445
  if (orientation === "vertical") return null;
4955
- return /* @__PURE__ */ React26.createElement("div", { className: "absolute left-0 top-full z-dropdown w-auto pt-1" }, /* @__PURE__ */ React26.createElement(
4446
+ return /* @__PURE__ */ React25.createElement("div", { className: "absolute left-0 top-full z-dropdown w-auto pt-1" }, /* @__PURE__ */ React25.createElement(
4956
4447
  NavigationMenuPrimitive.Viewport,
4957
4448
  {
4958
4449
  ref,
@@ -4984,10 +4475,10 @@ var NavigationMenu = Object.assign(NavigationMenuRoot, {
4984
4475
  });
4985
4476
 
4986
4477
  // src/components/ui/pagination.tsx
4987
- import * as React27 from "react";
4478
+ import * as React26 from "react";
4988
4479
  import { cva as cva21 } from "class-variance-authority";
4989
4480
  function ChevronLeftIcon({ className }) {
4990
- return /* @__PURE__ */ React27.createElement(
4481
+ return /* @__PURE__ */ React26.createElement(
4991
4482
  "svg",
4992
4483
  {
4993
4484
  className,
@@ -4996,11 +4487,11 @@ function ChevronLeftIcon({ className }) {
4996
4487
  stroke: "currentColor",
4997
4488
  strokeWidth: 2
4998
4489
  },
4999
- /* @__PURE__ */ React27.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M15 19l-7-7 7-7" })
4490
+ /* @__PURE__ */ React26.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M15 19l-7-7 7-7" })
5000
4491
  );
5001
4492
  }
5002
4493
  function ChevronRightIcon3({ className }) {
5003
- return /* @__PURE__ */ React27.createElement(
4494
+ return /* @__PURE__ */ React26.createElement(
5004
4495
  "svg",
5005
4496
  {
5006
4497
  className,
@@ -5009,11 +4500,11 @@ function ChevronRightIcon3({ className }) {
5009
4500
  stroke: "currentColor",
5010
4501
  strokeWidth: 2
5011
4502
  },
5012
- /* @__PURE__ */ React27.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" })
4503
+ /* @__PURE__ */ React26.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" })
5013
4504
  );
5014
4505
  }
5015
4506
  function ChevronsLeftIcon({ className }) {
5016
- return /* @__PURE__ */ React27.createElement(
4507
+ return /* @__PURE__ */ React26.createElement(
5017
4508
  "svg",
5018
4509
  {
5019
4510
  className,
@@ -5022,11 +4513,11 @@ function ChevronsLeftIcon({ className }) {
5022
4513
  stroke: "currentColor",
5023
4514
  strokeWidth: 2
5024
4515
  },
5025
- /* @__PURE__ */ React27.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M11 17l-5-5 5-5M18 17l-5-5 5-5" })
4516
+ /* @__PURE__ */ React26.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M11 17l-5-5 5-5M18 17l-5-5 5-5" })
5026
4517
  );
5027
4518
  }
5028
4519
  function ChevronsRightIcon({ className }) {
5029
- return /* @__PURE__ */ React27.createElement(
4520
+ return /* @__PURE__ */ React26.createElement(
5030
4521
  "svg",
5031
4522
  {
5032
4523
  className,
@@ -5035,20 +4526,20 @@ function ChevronsRightIcon({ className }) {
5035
4526
  stroke: "currentColor",
5036
4527
  strokeWidth: 2
5037
4528
  },
5038
- /* @__PURE__ */ React27.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M13 7l5 5-5 5M6 7l5 5-5 5" })
4529
+ /* @__PURE__ */ React26.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M13 7l5 5-5 5M6 7l5 5-5 5" })
5039
4530
  );
5040
4531
  }
5041
4532
  function EllipsisIcon2({ className }) {
5042
- return /* @__PURE__ */ React27.createElement(
4533
+ return /* @__PURE__ */ React26.createElement(
5043
4534
  "svg",
5044
4535
  {
5045
4536
  className,
5046
4537
  fill: "currentColor",
5047
4538
  viewBox: "0 0 24 24"
5048
4539
  },
5049
- /* @__PURE__ */ React27.createElement("circle", { cx: "6", cy: "12", r: "1.5" }),
5050
- /* @__PURE__ */ React27.createElement("circle", { cx: "12", cy: "12", r: "1.5" }),
5051
- /* @__PURE__ */ React27.createElement("circle", { cx: "18", cy: "12", r: "1.5" })
4540
+ /* @__PURE__ */ React26.createElement("circle", { cx: "6", cy: "12", r: "1.5" }),
4541
+ /* @__PURE__ */ React26.createElement("circle", { cx: "12", cy: "12", r: "1.5" }),
4542
+ /* @__PURE__ */ React26.createElement("circle", { cx: "18", cy: "12", r: "1.5" })
5052
4543
  );
5053
4544
  }
5054
4545
  function range(start, end) {
@@ -5089,9 +4580,9 @@ function usePagination({
5089
4580
  ...range(total - boundaries + 1, total)
5090
4581
  ];
5091
4582
  }
5092
- var PaginationContext = React27.createContext(null);
4583
+ var PaginationContext = React26.createContext(null);
5093
4584
  function usePaginationContext() {
5094
- const ctx = React27.useContext(PaginationContext);
4585
+ const ctx = React26.useContext(PaginationContext);
5095
4586
  if (!ctx) throw new Error("Pagination components must be used within <Pagination>");
5096
4587
  return ctx;
5097
4588
  }
@@ -5153,7 +4644,7 @@ function getItemClasses(variant, color, isActive, disabled) {
5153
4644
  return "border border-transparent text-text-muted hover:bg-background-muted hover:text-foreground";
5154
4645
  }
5155
4646
  }
5156
- var PaginationRoot = React27.forwardRef(
4647
+ var PaginationRoot = React26.forwardRef(
5157
4648
  ({
5158
4649
  className,
5159
4650
  total = 1,
@@ -5173,17 +4664,17 @@ var PaginationRoot = React27.forwardRef(
5173
4664
  children,
5174
4665
  ...props
5175
4666
  }, ref) => {
5176
- const [internalPage, setInternalPage] = React27.useState(defaultValue);
4667
+ const [internalPage, setInternalPage] = React26.useState(defaultValue);
5177
4668
  const isControlled = value !== void 0;
5178
4669
  const page = isControlled ? value : internalPage;
5179
- const handlePageChange = React27.useCallback((newPage) => {
4670
+ const handlePageChange = React26.useCallback((newPage) => {
5180
4671
  if (disabled) return;
5181
4672
  const clamped = Math.max(1, Math.min(total, newPage));
5182
4673
  if (!isControlled) setInternalPage(clamped);
5183
4674
  onChange?.(clamped);
5184
4675
  }, [disabled, total, isControlled, onChange]);
5185
4676
  const paginationRange = usePagination({ total, siblings, boundaries, page });
5186
- const contextValue = React27.useMemo(() => ({
4677
+ const contextValue = React26.useMemo(() => ({
5187
4678
  page,
5188
4679
  total,
5189
4680
  siblings,
@@ -5197,7 +4688,7 @@ var PaginationRoot = React27.forwardRef(
5197
4688
  onPageChange: handlePageChange,
5198
4689
  paginationRange
5199
4690
  }), [page, total, siblings, boundaries, size, variant, color, radius, disabled, loop, handlePageChange, paginationRange]);
5200
- return /* @__PURE__ */ React27.createElement(PaginationContext.Provider, { value: contextValue }, /* @__PURE__ */ React27.createElement(
4691
+ return /* @__PURE__ */ React26.createElement(PaginationContext.Provider, { value: contextValue }, /* @__PURE__ */ React26.createElement(
5201
4692
  "nav",
5202
4693
  {
5203
4694
  ref,
@@ -5211,11 +4702,11 @@ var PaginationRoot = React27.forwardRef(
5211
4702
  }
5212
4703
  );
5213
4704
  PaginationRoot.displayName = "Pagination";
5214
- var PaginationContent = React27.forwardRef(
4705
+ var PaginationContent = React26.forwardRef(
5215
4706
  ({ className, ...props }, ref) => {
5216
4707
  const { size } = usePaginationContext();
5217
4708
  const sizeClass = paginationSizeMap[size];
5218
- return /* @__PURE__ */ React27.createElement(
4709
+ return /* @__PURE__ */ React26.createElement(
5219
4710
  "ul",
5220
4711
  {
5221
4712
  ref,
@@ -5226,16 +4717,16 @@ var PaginationContent = React27.forwardRef(
5226
4717
  }
5227
4718
  );
5228
4719
  PaginationContent.displayName = "PaginationContent";
5229
- var PaginationItem = React27.forwardRef(
5230
- ({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement("li", { ref, className: cn("", className), ...props })
4720
+ var PaginationItem = React26.forwardRef(
4721
+ ({ className, ...props }, ref) => /* @__PURE__ */ React26.createElement("li", { ref, className: cn("", className), ...props })
5231
4722
  );
5232
4723
  PaginationItem.displayName = "PaginationItem";
5233
- var PaginationLink = React27.forwardRef(
4724
+ var PaginationLink = React26.forwardRef(
5234
4725
  ({ className, page: targetPage, isActive: isActiveProp, ...props }, ref) => {
5235
4726
  const ctx = usePaginationContext();
5236
4727
  const isActive = isActiveProp ?? ctx.page === targetPage;
5237
4728
  const sizeClass = paginationSizeMap[ctx.size];
5238
- return /* @__PURE__ */ React27.createElement(
4729
+ return /* @__PURE__ */ React26.createElement(
5239
4730
  "button",
5240
4731
  {
5241
4732
  ref,
@@ -5257,7 +4748,7 @@ var PaginationLink = React27.forwardRef(
5257
4748
  }
5258
4749
  );
5259
4750
  PaginationLink.displayName = "PaginationLink";
5260
- var PaginationPrevious = React27.forwardRef(
4751
+ var PaginationPrevious = React26.forwardRef(
5261
4752
  ({ className, icon, ...props }, ref) => {
5262
4753
  const ctx = usePaginationContext();
5263
4754
  const sizeClass = paginationSizeMap[ctx.size];
@@ -5269,7 +4760,7 @@ var PaginationPrevious = React27.forwardRef(
5269
4760
  ctx.onPageChange(ctx.page - 1);
5270
4761
  }
5271
4762
  };
5272
- return /* @__PURE__ */ React27.createElement(
4763
+ return /* @__PURE__ */ React26.createElement(
5273
4764
  "button",
5274
4765
  {
5275
4766
  ref,
@@ -5285,12 +4776,12 @@ var PaginationPrevious = React27.forwardRef(
5285
4776
  ),
5286
4777
  ...props
5287
4778
  },
5288
- icon ?? /* @__PURE__ */ React27.createElement(ChevronLeftIcon, { className: sizeClass.icon })
4779
+ icon ?? /* @__PURE__ */ React26.createElement(ChevronLeftIcon, { className: sizeClass.icon })
5289
4780
  );
5290
4781
  }
5291
4782
  );
5292
4783
  PaginationPrevious.displayName = "PaginationPrevious";
5293
- var PaginationNext = React27.forwardRef(
4784
+ var PaginationNext = React26.forwardRef(
5294
4785
  ({ className, icon, ...props }, ref) => {
5295
4786
  const ctx = usePaginationContext();
5296
4787
  const sizeClass = paginationSizeMap[ctx.size];
@@ -5302,7 +4793,7 @@ var PaginationNext = React27.forwardRef(
5302
4793
  ctx.onPageChange(ctx.page + 1);
5303
4794
  }
5304
4795
  };
5305
- return /* @__PURE__ */ React27.createElement(
4796
+ return /* @__PURE__ */ React26.createElement(
5306
4797
  "button",
5307
4798
  {
5308
4799
  ref,
@@ -5318,17 +4809,17 @@ var PaginationNext = React27.forwardRef(
5318
4809
  ),
5319
4810
  ...props
5320
4811
  },
5321
- icon ?? /* @__PURE__ */ React27.createElement(ChevronRightIcon3, { className: sizeClass.icon })
4812
+ icon ?? /* @__PURE__ */ React26.createElement(ChevronRightIcon3, { className: sizeClass.icon })
5322
4813
  );
5323
4814
  }
5324
4815
  );
5325
4816
  PaginationNext.displayName = "PaginationNext";
5326
- var PaginationFirst = React27.forwardRef(
4817
+ var PaginationFirst = React26.forwardRef(
5327
4818
  ({ className, icon, ...props }, ref) => {
5328
4819
  const ctx = usePaginationContext();
5329
4820
  const sizeClass = paginationSizeMap[ctx.size];
5330
4821
  const isDisabled = ctx.disabled || ctx.page <= 1;
5331
- return /* @__PURE__ */ React27.createElement(
4822
+ return /* @__PURE__ */ React26.createElement(
5332
4823
  "button",
5333
4824
  {
5334
4825
  ref,
@@ -5344,17 +4835,17 @@ var PaginationFirst = React27.forwardRef(
5344
4835
  ),
5345
4836
  ...props
5346
4837
  },
5347
- icon ?? /* @__PURE__ */ React27.createElement(ChevronsLeftIcon, { className: sizeClass.icon })
4838
+ icon ?? /* @__PURE__ */ React26.createElement(ChevronsLeftIcon, { className: sizeClass.icon })
5348
4839
  );
5349
4840
  }
5350
4841
  );
5351
4842
  PaginationFirst.displayName = "PaginationFirst";
5352
- var PaginationLast = React27.forwardRef(
4843
+ var PaginationLast = React26.forwardRef(
5353
4844
  ({ className, icon, ...props }, ref) => {
5354
4845
  const ctx = usePaginationContext();
5355
4846
  const sizeClass = paginationSizeMap[ctx.size];
5356
4847
  const isDisabled = ctx.disabled || ctx.page >= ctx.total;
5357
- return /* @__PURE__ */ React27.createElement(
4848
+ return /* @__PURE__ */ React26.createElement(
5358
4849
  "button",
5359
4850
  {
5360
4851
  ref,
@@ -5370,16 +4861,16 @@ var PaginationLast = React27.forwardRef(
5370
4861
  ),
5371
4862
  ...props
5372
4863
  },
5373
- icon ?? /* @__PURE__ */ React27.createElement(ChevronsRightIcon, { className: sizeClass.icon })
4864
+ icon ?? /* @__PURE__ */ React26.createElement(ChevronsRightIcon, { className: sizeClass.icon })
5374
4865
  );
5375
4866
  }
5376
4867
  );
5377
4868
  PaginationLast.displayName = "PaginationLast";
5378
- var PaginationEllipsis = React27.forwardRef(
4869
+ var PaginationEllipsis = React26.forwardRef(
5379
4870
  ({ className, ...props }, ref) => {
5380
4871
  const ctx = usePaginationContext();
5381
4872
  const sizeClass = paginationSizeMap[ctx.size];
5382
- return /* @__PURE__ */ React27.createElement(
4873
+ return /* @__PURE__ */ React26.createElement(
5383
4874
  "span",
5384
4875
  {
5385
4876
  ref,
@@ -5391,16 +4882,16 @@ var PaginationEllipsis = React27.forwardRef(
5391
4882
  ),
5392
4883
  ...props
5393
4884
  },
5394
- /* @__PURE__ */ React27.createElement(EllipsisIcon2, { className: sizeClass.icon }),
5395
- /* @__PURE__ */ React27.createElement("span", { className: "sr-only" }, "More pages")
4885
+ /* @__PURE__ */ React26.createElement(EllipsisIcon2, { className: sizeClass.icon }),
4886
+ /* @__PURE__ */ React26.createElement("span", { className: "sr-only" }, "More pages")
5396
4887
  );
5397
4888
  }
5398
4889
  );
5399
4890
  PaginationEllipsis.displayName = "PaginationEllipsis";
5400
- var PaginationItems = React27.forwardRef(
4891
+ var PaginationItems = React26.forwardRef(
5401
4892
  ({ className, ...props }, ref) => {
5402
4893
  const ctx = usePaginationContext();
5403
- 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 }))));
4894
+ 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 }))));
5404
4895
  }
5405
4896
  );
5406
4897
  PaginationItems.displayName = "PaginationItems";
@@ -5417,11 +4908,11 @@ var Pagination = Object.assign(PaginationRoot, {
5417
4908
  });
5418
4909
 
5419
4910
  // src/components/ui/modal.tsx
5420
- import * as React28 from "react";
4911
+ import * as React27 from "react";
5421
4912
  import * as DialogPrimitive from "@radix-ui/react-dialog";
5422
4913
  import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
5423
4914
  import { cva as cva22 } from "class-variance-authority";
5424
- var DefaultCloseIcon = ({ className }) => /* @__PURE__ */ React28.createElement(
4915
+ var DefaultCloseIcon = ({ className }) => /* @__PURE__ */ React27.createElement(
5425
4916
  "svg",
5426
4917
  {
5427
4918
  className,
@@ -5431,18 +4922,18 @@ var DefaultCloseIcon = ({ className }) => /* @__PURE__ */ React28.createElement(
5431
4922
  strokeWidth: 2,
5432
4923
  "aria-hidden": "true"
5433
4924
  },
5434
- /* @__PURE__ */ React28.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" })
4925
+ /* @__PURE__ */ React27.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" })
5435
4926
  );
5436
- var ModalStyleContext = React28.createContext({
4927
+ var ModalStyleContext = React27.createContext({
5437
4928
  scrollBehavior: "outside"
5438
4929
  });
5439
4930
  function ModalRoot(props) {
5440
- return /* @__PURE__ */ React28.createElement(DialogPrimitive.Root, { ...props });
4931
+ return /* @__PURE__ */ React27.createElement(DialogPrimitive.Root, { ...props });
5441
4932
  }
5442
4933
  var ModalTrigger = DialogPrimitive.Trigger;
5443
4934
  var ModalPortal = DialogPrimitive.Portal;
5444
4935
  var ModalClose = DialogPrimitive.Close;
5445
- var ModalOverlay = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
4936
+ var ModalOverlay = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
5446
4937
  DialogPrimitive.Overlay,
5447
4938
  {
5448
4939
  ref,
@@ -5476,19 +4967,19 @@ var modalContentVariants = cva22("", {
5476
4967
  size: "sm"
5477
4968
  }
5478
4969
  });
5479
- var ModalContent = React28.forwardRef(({ className, children, size = "sm", scrollBehavior = "outside", showCloseButton = true, closeIcon, ...props }, ref) => {
4970
+ var ModalContent = React27.forwardRef(({ className, children, size = "sm", scrollBehavior = "outside", showCloseButton = true, closeIcon, ...props }, ref) => {
5480
4971
  const isInside = scrollBehavior === "inside";
5481
4972
  const isFull = size === "full";
5482
4973
  const useInsideScroll = isInside || isFull;
5483
- const closeButton = showCloseButton && /* @__PURE__ */ React28.createElement(DialogPrimitive.Close, { className: cn(
4974
+ const closeButton = showCloseButton && /* @__PURE__ */ React27.createElement(DialogPrimitive.Close, { className: cn(
5484
4975
  "absolute right-4 top-4 rounded-md p-1",
5485
4976
  "text-text-muted hover:text-foreground",
5486
4977
  "transition-colors duration-fast",
5487
4978
  "focus-visible:focus-ring focus-visible:outline-none",
5488
4979
  "disabled:pointer-events-none"
5489
- ) }, closeIcon || /* @__PURE__ */ React28.createElement(DefaultCloseIcon, { className: "icon-sm" }), /* @__PURE__ */ React28.createElement("span", { className: "sr-only" }, "Close"));
4980
+ ) }, closeIcon || /* @__PURE__ */ React27.createElement(DefaultCloseIcon, { className: "icon-sm" }), /* @__PURE__ */ React27.createElement("span", { className: "sr-only" }, "Close"));
5490
4981
  if (!useInsideScroll) {
5491
- return /* @__PURE__ */ React28.createElement(ModalPortal, null, /* @__PURE__ */ React28.createElement(ModalOverlay, null), /* @__PURE__ */ React28.createElement(ModalStyleContext.Provider, { value: { scrollBehavior: "outside" } }, /* @__PURE__ */ React28.createElement(
4982
+ return /* @__PURE__ */ React27.createElement(ModalPortal, null, /* @__PURE__ */ React27.createElement(ModalOverlay, null), /* @__PURE__ */ React27.createElement(ModalStyleContext.Provider, { value: { scrollBehavior: "outside" } }, /* @__PURE__ */ React27.createElement(
5492
4983
  DialogPrimitive.Content,
5493
4984
  {
5494
4985
  ref,
@@ -5499,7 +4990,7 @@ var ModalContent = React28.forwardRef(({ className, children, size = "sm", scrol
5499
4990
  ),
5500
4991
  ...props
5501
4992
  },
5502
- /* @__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(
4993
+ /* @__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(
5503
4994
  "div",
5504
4995
  {
5505
4996
  className: cn(
@@ -5514,7 +5005,7 @@ var ModalContent = React28.forwardRef(({ className, children, size = "sm", scrol
5514
5005
  )))
5515
5006
  )));
5516
5007
  }
5517
- 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(
5008
+ 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(
5518
5009
  DialogPrimitive.Content,
5519
5010
  {
5520
5011
  ref,
@@ -5534,7 +5025,7 @@ var ModalContent = React28.forwardRef(({ className, children, size = "sm", scrol
5534
5025
  ))));
5535
5026
  });
5536
5027
  ModalContent.displayName = "ModalContent";
5537
- var ModalHeader = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5028
+ var ModalHeader = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
5538
5029
  "div",
5539
5030
  {
5540
5031
  ref,
@@ -5543,7 +5034,7 @@ var ModalHeader = React28.forwardRef(({ className, ...props }, ref) => /* @__PUR
5543
5034
  }
5544
5035
  ));
5545
5036
  ModalHeader.displayName = "ModalHeader";
5546
- var ModalTitle = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5037
+ var ModalTitle = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
5547
5038
  DialogPrimitive.Title,
5548
5039
  {
5549
5040
  ref,
@@ -5552,7 +5043,7 @@ var ModalTitle = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE
5552
5043
  }
5553
5044
  ));
5554
5045
  ModalTitle.displayName = "ModalTitle";
5555
- var ModalDescription = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5046
+ var ModalDescription = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
5556
5047
  DialogPrimitive.Description,
5557
5048
  {
5558
5049
  ref,
@@ -5561,9 +5052,9 @@ var ModalDescription = React28.forwardRef(({ className, ...props }, ref) => /* @
5561
5052
  }
5562
5053
  ));
5563
5054
  ModalDescription.displayName = "ModalDescription";
5564
- var ModalBody = React28.forwardRef(({ className, ...props }, ref) => {
5565
- const { scrollBehavior } = React28.useContext(ModalStyleContext);
5566
- return /* @__PURE__ */ React28.createElement(
5055
+ var ModalBody = React27.forwardRef(({ className, ...props }, ref) => {
5056
+ const { scrollBehavior } = React27.useContext(ModalStyleContext);
5057
+ return /* @__PURE__ */ React27.createElement(
5567
5058
  "div",
5568
5059
  {
5569
5060
  ref,
@@ -5577,7 +5068,7 @@ var ModalBody = React28.forwardRef(({ className, ...props }, ref) => {
5577
5068
  );
5578
5069
  });
5579
5070
  ModalBody.displayName = "ModalBody";
5580
- var ModalFooter = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5071
+ var ModalFooter = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
5581
5072
  "div",
5582
5073
  {
5583
5074
  ref,
@@ -5592,7 +5083,7 @@ ModalFooter.displayName = "ModalFooter";
5592
5083
  var AlertModalRoot = AlertDialogPrimitive.Root;
5593
5084
  var AlertModalTrigger = AlertDialogPrimitive.Trigger;
5594
5085
  var AlertModalPortal = AlertDialogPrimitive.Portal;
5595
- var AlertModalOverlay = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5086
+ var AlertModalOverlay = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
5596
5087
  AlertDialogPrimitive.Overlay,
5597
5088
  {
5598
5089
  ref,
@@ -5618,7 +5109,7 @@ var alertModalContentVariants = cva22("", {
5618
5109
  size: "sm"
5619
5110
  }
5620
5111
  });
5621
- 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(
5112
+ 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(
5622
5113
  AlertDialogPrimitive.Content,
5623
5114
  {
5624
5115
  ref,
@@ -5634,7 +5125,7 @@ var AlertModalContent = React28.forwardRef(({ className, children, size = "sm",
5634
5125
  children
5635
5126
  ))));
5636
5127
  AlertModalContent.displayName = "AlertModalContent";
5637
- var AlertModalHeader = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5128
+ var AlertModalHeader = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
5638
5129
  "div",
5639
5130
  {
5640
5131
  ref,
@@ -5643,7 +5134,7 @@ var AlertModalHeader = React28.forwardRef(({ className, ...props }, ref) => /* @
5643
5134
  }
5644
5135
  ));
5645
5136
  AlertModalHeader.displayName = "AlertModalHeader";
5646
- var AlertModalTitle = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5137
+ var AlertModalTitle = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
5647
5138
  AlertDialogPrimitive.Title,
5648
5139
  {
5649
5140
  ref,
@@ -5652,7 +5143,7 @@ var AlertModalTitle = React28.forwardRef(({ className, ...props }, ref) => /* @_
5652
5143
  }
5653
5144
  ));
5654
5145
  AlertModalTitle.displayName = "AlertModalTitle";
5655
- var AlertModalDescription = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5146
+ var AlertModalDescription = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
5656
5147
  AlertDialogPrimitive.Description,
5657
5148
  {
5658
5149
  ref,
@@ -5661,7 +5152,7 @@ var AlertModalDescription = React28.forwardRef(({ className, ...props }, ref) =>
5661
5152
  }
5662
5153
  ));
5663
5154
  AlertModalDescription.displayName = "AlertModalDescription";
5664
- var AlertModalBody = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5155
+ var AlertModalBody = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
5665
5156
  "div",
5666
5157
  {
5667
5158
  ref,
@@ -5670,7 +5161,7 @@ var AlertModalBody = React28.forwardRef(({ className, ...props }, ref) => /* @__
5670
5161
  }
5671
5162
  ));
5672
5163
  AlertModalBody.displayName = "AlertModalBody";
5673
- var AlertModalFooter = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5164
+ var AlertModalFooter = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
5674
5165
  "div",
5675
5166
  {
5676
5167
  ref,
@@ -5682,7 +5173,7 @@ var AlertModalFooter = React28.forwardRef(({ className, ...props }, ref) => /* @
5682
5173
  }
5683
5174
  ));
5684
5175
  AlertModalFooter.displayName = "AlertModalFooter";
5685
- var AlertModalAction = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5176
+ var AlertModalAction = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
5686
5177
  AlertDialogPrimitive.Action,
5687
5178
  {
5688
5179
  ref,
@@ -5691,7 +5182,7 @@ var AlertModalAction = React28.forwardRef(({ className, ...props }, ref) => /* @
5691
5182
  }
5692
5183
  ));
5693
5184
  AlertModalAction.displayName = "AlertModalAction";
5694
- var AlertModalCancel = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5185
+ var AlertModalCancel = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React27.createElement(
5695
5186
  AlertDialogPrimitive.Cancel,
5696
5187
  {
5697
5188
  ref,
@@ -5727,10 +5218,10 @@ var AlertModal = Object.assign(AlertModalRoot, {
5727
5218
  });
5728
5219
 
5729
5220
  // src/components/ui/drawer.tsx
5730
- import * as React29 from "react";
5221
+ import * as React28 from "react";
5731
5222
  import * as DialogPrimitive2 from "@radix-ui/react-dialog";
5732
5223
  import { cva as cva23 } from "class-variance-authority";
5733
- var DefaultCloseIcon2 = ({ className }) => /* @__PURE__ */ React29.createElement(
5224
+ var DefaultCloseIcon2 = ({ className }) => /* @__PURE__ */ React28.createElement(
5734
5225
  "svg",
5735
5226
  {
5736
5227
  className,
@@ -5740,7 +5231,7 @@ var DefaultCloseIcon2 = ({ className }) => /* @__PURE__ */ React29.createElement
5740
5231
  strokeWidth: 2,
5741
5232
  "aria-hidden": "true"
5742
5233
  },
5743
- /* @__PURE__ */ React29.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" })
5234
+ /* @__PURE__ */ React28.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" })
5744
5235
  );
5745
5236
  var ANIMATION_CLASSES = {
5746
5237
  right: "data-[state=open]:animate-drawer-right-enter data-[state=closed]:animate-drawer-right-exit",
@@ -5773,12 +5264,12 @@ var drawerSizeVertical = cva23("", {
5773
5264
  defaultVariants: { size: "md" }
5774
5265
  });
5775
5266
  function DrawerRoot(props) {
5776
- return /* @__PURE__ */ React29.createElement(DialogPrimitive2.Root, { ...props });
5267
+ return /* @__PURE__ */ React28.createElement(DialogPrimitive2.Root, { ...props });
5777
5268
  }
5778
5269
  var DrawerTrigger = DialogPrimitive2.Trigger;
5779
5270
  var DrawerPortal = DialogPrimitive2.Portal;
5780
5271
  var DrawerClose = DialogPrimitive2.Close;
5781
- var DrawerOverlay = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React29.createElement(
5272
+ var DrawerOverlay = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5782
5273
  DialogPrimitive2.Overlay,
5783
5274
  {
5784
5275
  ref,
@@ -5797,10 +5288,10 @@ var SIDE_POSITION = {
5797
5288
  top: "inset-x-0 top-0",
5798
5289
  bottom: "inset-x-0 bottom-0"
5799
5290
  };
5800
- var DrawerContent = React29.forwardRef(({ className, children, side = "right", size = "md", showCloseButton = true, closeIcon, ...props }, ref) => {
5291
+ var DrawerContent = React28.forwardRef(({ className, children, side = "right", size = "md", showCloseButton = true, closeIcon, ...props }, ref) => {
5801
5292
  const isHorizontal = side === "left" || side === "right";
5802
5293
  const sizeClass = isHorizontal ? drawerSizeHorizontal({ size }) : drawerSizeVertical({ size });
5803
- return /* @__PURE__ */ React29.createElement(DrawerPortal, null, /* @__PURE__ */ React29.createElement(DrawerOverlay, null), /* @__PURE__ */ React29.createElement(
5294
+ return /* @__PURE__ */ React28.createElement(DrawerPortal, null, /* @__PURE__ */ React28.createElement(DrawerOverlay, null), /* @__PURE__ */ React28.createElement(
5804
5295
  DialogPrimitive2.Content,
5805
5296
  {
5806
5297
  ref,
@@ -5816,17 +5307,17 @@ var DrawerContent = React29.forwardRef(({ className, children, side = "right", s
5816
5307
  ...props
5817
5308
  },
5818
5309
  children,
5819
- showCloseButton && /* @__PURE__ */ React29.createElement(DialogPrimitive2.Close, { className: cn(
5310
+ showCloseButton && /* @__PURE__ */ React28.createElement(DialogPrimitive2.Close, { className: cn(
5820
5311
  "absolute right-4 top-4 rounded-md p-1",
5821
5312
  "text-text-muted hover:text-foreground",
5822
5313
  "transition-colors duration-fast",
5823
5314
  "focus-visible:focus-ring focus-visible:outline-none",
5824
5315
  "disabled:pointer-events-none"
5825
- ) }, closeIcon || /* @__PURE__ */ React29.createElement(DefaultCloseIcon2, { className: "icon-sm" }), /* @__PURE__ */ React29.createElement("span", { className: "sr-only" }, "Close"))
5316
+ ) }, closeIcon || /* @__PURE__ */ React28.createElement(DefaultCloseIcon2, { className: "icon-sm" }), /* @__PURE__ */ React28.createElement("span", { className: "sr-only" }, "Close"))
5826
5317
  ));
5827
5318
  });
5828
5319
  DrawerContent.displayName = "DrawerContent";
5829
- var DrawerHeader = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React29.createElement(
5320
+ var DrawerHeader = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5830
5321
  "div",
5831
5322
  {
5832
5323
  ref,
@@ -5835,7 +5326,7 @@ var DrawerHeader = React29.forwardRef(({ className, ...props }, ref) => /* @__PU
5835
5326
  }
5836
5327
  ));
5837
5328
  DrawerHeader.displayName = "DrawerHeader";
5838
- var DrawerTitle = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React29.createElement(
5329
+ var DrawerTitle = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5839
5330
  DialogPrimitive2.Title,
5840
5331
  {
5841
5332
  ref,
@@ -5844,7 +5335,7 @@ var DrawerTitle = React29.forwardRef(({ className, ...props }, ref) => /* @__PUR
5844
5335
  }
5845
5336
  ));
5846
5337
  DrawerTitle.displayName = "DrawerTitle";
5847
- var DrawerDescription = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React29.createElement(
5338
+ var DrawerDescription = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5848
5339
  DialogPrimitive2.Description,
5849
5340
  {
5850
5341
  ref,
@@ -5853,7 +5344,7 @@ var DrawerDescription = React29.forwardRef(({ className, ...props }, ref) => /*
5853
5344
  }
5854
5345
  ));
5855
5346
  DrawerDescription.displayName = "DrawerDescription";
5856
- var DrawerBody = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React29.createElement(
5347
+ var DrawerBody = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5857
5348
  "div",
5858
5349
  {
5859
5350
  ref,
@@ -5862,7 +5353,7 @@ var DrawerBody = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE
5862
5353
  }
5863
5354
  ));
5864
5355
  DrawerBody.displayName = "DrawerBody";
5865
- var DrawerFooter = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React29.createElement(
5356
+ var DrawerFooter = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React28.createElement(
5866
5357
  "div",
5867
5358
  {
5868
5359
  ref,
@@ -5888,7 +5379,7 @@ var Drawer = Object.assign(DrawerRoot, {
5888
5379
  });
5889
5380
 
5890
5381
  // src/components/ui/tooltip.tsx
5891
- import * as React30 from "react";
5382
+ import * as React29 from "react";
5892
5383
  import * as TooltipPrimitive from "@radix-ui/react-tooltip";
5893
5384
  import { cva as cva24 } from "class-variance-authority";
5894
5385
  var ANIMATION_CLASSES2 = {
@@ -5922,13 +5413,13 @@ var ARROW_FILL = {
5922
5413
  };
5923
5414
  var TooltipProvider = TooltipPrimitive.Provider;
5924
5415
  function TooltipRoot({ delayDuration = 200, ...props }) {
5925
- return /* @__PURE__ */ React30.createElement(TooltipPrimitive.Root, { delayDuration, ...props });
5416
+ return /* @__PURE__ */ React29.createElement(TooltipPrimitive.Root, { delayDuration, ...props });
5926
5417
  }
5927
5418
  var TooltipTrigger = TooltipPrimitive.Trigger;
5928
5419
  var TooltipPortal = TooltipPrimitive.Portal;
5929
- var TooltipContent = React30.forwardRef(({ className, variant = "default", size, side = "top", sideOffset = 6, showArrow = true, children, ...props }, ref) => {
5420
+ var TooltipContent = React29.forwardRef(({ className, variant = "default", size, side = "top", sideOffset = 6, showArrow = true, children, ...props }, ref) => {
5930
5421
  const resolvedSide = side;
5931
- return /* @__PURE__ */ React30.createElement(TooltipPrimitive.Portal, null, /* @__PURE__ */ React30.createElement(
5422
+ return /* @__PURE__ */ React29.createElement(TooltipPrimitive.Portal, null, /* @__PURE__ */ React29.createElement(
5932
5423
  TooltipPrimitive.Content,
5933
5424
  {
5934
5425
  ref,
@@ -5942,7 +5433,7 @@ var TooltipContent = React30.forwardRef(({ className, variant = "default", size,
5942
5433
  ...props
5943
5434
  },
5944
5435
  children,
5945
- showArrow && /* @__PURE__ */ React30.createElement(
5436
+ showArrow && /* @__PURE__ */ React29.createElement(
5946
5437
  TooltipPrimitive.Arrow,
5947
5438
  {
5948
5439
  className: ARROW_FILL[variant || "default"],
@@ -5953,7 +5444,7 @@ var TooltipContent = React30.forwardRef(({ className, variant = "default", size,
5953
5444
  ));
5954
5445
  });
5955
5446
  TooltipContent.displayName = "TooltipContent";
5956
- var TooltipArrow = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React30.createElement(
5447
+ var TooltipArrow = React29.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React29.createElement(
5957
5448
  TooltipPrimitive.Arrow,
5958
5449
  {
5959
5450
  ref,
@@ -5964,7 +5455,7 @@ var TooltipArrow = React30.forwardRef(({ className, ...props }, ref) => /* @__PU
5964
5455
  }
5965
5456
  ));
5966
5457
  TooltipArrow.displayName = "TooltipArrow";
5967
- var Tooltip2 = Object.assign(TooltipRoot, {
5458
+ var Tooltip = Object.assign(TooltipRoot, {
5968
5459
  Trigger: TooltipTrigger,
5969
5460
  Content: TooltipContent,
5970
5461
  Arrow: TooltipArrow,
@@ -5973,10 +5464,10 @@ var Tooltip2 = Object.assign(TooltipRoot, {
5973
5464
  });
5974
5465
 
5975
5466
  // src/components/ui/popover.tsx
5976
- import * as React31 from "react";
5467
+ import * as React30 from "react";
5977
5468
  import * as PopoverPrimitive from "@radix-ui/react-popover";
5978
5469
  import { cva as cva25 } from "class-variance-authority";
5979
- var DefaultCloseIcon3 = ({ className }) => /* @__PURE__ */ React31.createElement(
5470
+ var DefaultCloseIcon3 = ({ className }) => /* @__PURE__ */ React30.createElement(
5980
5471
  "svg",
5981
5472
  {
5982
5473
  className,
@@ -5986,7 +5477,7 @@ var DefaultCloseIcon3 = ({ className }) => /* @__PURE__ */ React31.createElement
5986
5477
  strokeWidth: 2,
5987
5478
  "aria-hidden": "true"
5988
5479
  },
5989
- /* @__PURE__ */ React31.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" })
5480
+ /* @__PURE__ */ React30.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" })
5990
5481
  );
5991
5482
  var ANIMATION_CLASSES3 = {
5992
5483
  top: "data-[state=open]:animate-popover-top-enter data-[state=closed]:animate-popover-top-exit",
@@ -6022,16 +5513,16 @@ var CSS_ARROW_CLASSES = {
6022
5513
  };
6023
5514
  var ARROW_ELEVATED = "fill-background-paper drop-shadow-sm";
6024
5515
  function PopoverRoot(props) {
6025
- return /* @__PURE__ */ React31.createElement(PopoverPrimitive.Root, { ...props });
5516
+ return /* @__PURE__ */ React30.createElement(PopoverPrimitive.Root, { ...props });
6026
5517
  }
6027
5518
  var PopoverTrigger = PopoverPrimitive.Trigger;
6028
5519
  var PopoverPortal = PopoverPrimitive.Portal;
6029
5520
  var PopoverAnchor = PopoverPrimitive.Anchor;
6030
5521
  var PopoverClose = PopoverPrimitive.Close;
6031
- var PopoverContent = React31.forwardRef(({ className, variant = "default", size, side = "bottom", sideOffset, showArrow = true, showClose = false, closeIcon, children, ...props }, ref) => {
5522
+ var PopoverContent = React30.forwardRef(({ className, variant = "default", size, side = "bottom", sideOffset, showArrow = true, showClose = false, closeIcon, children, ...props }, ref) => {
6032
5523
  const resolvedSide = side;
6033
5524
  const resolvedOffset = sideOffset ?? (variant === "default" && showArrow ? 12 : 6);
6034
- return /* @__PURE__ */ React31.createElement(PopoverPrimitive.Portal, null, /* @__PURE__ */ React31.createElement(
5525
+ return /* @__PURE__ */ React30.createElement(PopoverPrimitive.Portal, null, /* @__PURE__ */ React30.createElement(
6035
5526
  PopoverPrimitive.Content,
6036
5527
  {
6037
5528
  ref,
@@ -6044,16 +5535,16 @@ var PopoverContent = React31.forwardRef(({ className, variant = "default", size,
6044
5535
  ),
6045
5536
  ...props
6046
5537
  },
6047
- showClose && /* @__PURE__ */ React31.createElement(
5538
+ showClose && /* @__PURE__ */ React30.createElement(
6048
5539
  PopoverPrimitive.Close,
6049
5540
  {
6050
5541
  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",
6051
5542
  "aria-label": "Close"
6052
5543
  },
6053
- closeIcon || /* @__PURE__ */ React31.createElement(DefaultCloseIcon3, { className: "icon-sm" })
5544
+ closeIcon || /* @__PURE__ */ React30.createElement(DefaultCloseIcon3, { className: "icon-sm" })
6054
5545
  ),
6055
5546
  children,
6056
- showArrow && variant === "default" && /* @__PURE__ */ React31.createElement(
5547
+ showArrow && variant === "default" && /* @__PURE__ */ React30.createElement(
6057
5548
  "div",
6058
5549
  {
6059
5550
  className: cn(
@@ -6062,7 +5553,7 @@ var PopoverContent = React31.forwardRef(({ className, variant = "default", size,
6062
5553
  )
6063
5554
  }
6064
5555
  ),
6065
- showArrow && variant === "elevated" && /* @__PURE__ */ React31.createElement(
5556
+ showArrow && variant === "elevated" && /* @__PURE__ */ React30.createElement(
6066
5557
  PopoverPrimitive.Arrow,
6067
5558
  {
6068
5559
  className: ARROW_ELEVATED,
@@ -6073,7 +5564,7 @@ var PopoverContent = React31.forwardRef(({ className, variant = "default", size,
6073
5564
  ));
6074
5565
  });
6075
5566
  PopoverContent.displayName = "PopoverContent";
6076
- var PopoverArrow = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React31.createElement(
5567
+ var PopoverArrow = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React30.createElement(
6077
5568
  PopoverPrimitive.Arrow,
6078
5569
  {
6079
5570
  ref,
@@ -6094,13 +5585,13 @@ var Popover = Object.assign(PopoverRoot, {
6094
5585
  });
6095
5586
 
6096
5587
  // src/components/ui/alert.tsx
6097
- import * as React32 from "react";
5588
+ import * as React31 from "react";
6098
5589
  import { cva as cva26 } from "class-variance-authority";
6099
- 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" }));
6100
- 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" }));
6101
- 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" }));
6102
- 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" }));
6103
- 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" }));
5590
+ 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" }));
5591
+ 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" }));
5592
+ 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" }));
5593
+ 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" }));
5594
+ 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" }));
6104
5595
  var STATUS_ICONS = {
6105
5596
  info: InfoIcon,
6106
5597
  success: SuccessIcon,
@@ -6174,15 +5665,15 @@ var DESC_SIZE_MAP = {
6174
5665
  default: "text-sm mt-1",
6175
5666
  lg: "text-md mt-1.5"
6176
5667
  };
6177
- var AlertContext = React32.createContext({
5668
+ var AlertContext = React31.createContext({
6178
5669
  variant: "default",
6179
5670
  color: "info",
6180
5671
  size: "default"
6181
5672
  });
6182
5673
  function useAlertContext() {
6183
- return React32.useContext(AlertContext);
5674
+ return React31.useContext(AlertContext);
6184
5675
  }
6185
- var AlertRoot = React32.forwardRef(
5676
+ var AlertRoot = React31.forwardRef(
6186
5677
  ({
6187
5678
  className,
6188
5679
  variant = "default",
@@ -6200,7 +5691,7 @@ var AlertRoot = React32.forwardRef(
6200
5691
  const role = color === "error" ? "alert" : "status";
6201
5692
  const colorClasses = colorMap2[color][variant];
6202
5693
  const StatusIcon = STATUS_ICONS[color];
6203
- return /* @__PURE__ */ React32.createElement(AlertContext.Provider, { value: { variant, color, size } }, /* @__PURE__ */ React32.createElement(
5694
+ return /* @__PURE__ */ React31.createElement(AlertContext.Provider, { value: { variant, color, size } }, /* @__PURE__ */ React31.createElement(
6204
5695
  "div",
6205
5696
  {
6206
5697
  ref,
@@ -6212,9 +5703,9 @@ var AlertRoot = React32.forwardRef(
6212
5703
  ),
6213
5704
  ...props
6214
5705
  },
6215
- !hideIcon && /* @__PURE__ */ React32.createElement("span", { className: "shrink-0" }, icon || /* @__PURE__ */ React32.createElement(StatusIcon, { className: ICON_SIZE_MAP[size] })),
6216
- /* @__PURE__ */ React32.createElement("div", { className: "flex-1 min-w-0" }, children),
6217
- closable && /* @__PURE__ */ React32.createElement(
5706
+ !hideIcon && /* @__PURE__ */ React31.createElement("span", { className: "shrink-0" }, icon || /* @__PURE__ */ React31.createElement(StatusIcon, { className: ICON_SIZE_MAP[size] })),
5707
+ /* @__PURE__ */ React31.createElement("div", { className: "flex-1 min-w-0" }, children),
5708
+ closable && /* @__PURE__ */ React31.createElement(
6218
5709
  "button",
6219
5710
  {
6220
5711
  type: "button",
@@ -6226,16 +5717,16 @@ var AlertRoot = React32.forwardRef(
6226
5717
  onClick: onClose,
6227
5718
  "aria-label": "Close"
6228
5719
  },
6229
- closeIcon || /* @__PURE__ */ React32.createElement(DefaultCloseIcon4, { className: "icon-sm" })
5720
+ closeIcon || /* @__PURE__ */ React31.createElement(DefaultCloseIcon4, { className: "icon-sm" })
6230
5721
  )
6231
5722
  ));
6232
5723
  }
6233
5724
  );
6234
5725
  AlertRoot.displayName = "AlertRoot";
6235
- var AlertTitle = React32.forwardRef(
5726
+ var AlertTitle = React31.forwardRef(
6236
5727
  ({ className, ...props }, ref) => {
6237
5728
  const { size } = useAlertContext();
6238
- return /* @__PURE__ */ React32.createElement(
5729
+ return /* @__PURE__ */ React31.createElement(
6239
5730
  "h5",
6240
5731
  {
6241
5732
  ref,
@@ -6246,10 +5737,10 @@ var AlertTitle = React32.forwardRef(
6246
5737
  }
6247
5738
  );
6248
5739
  AlertTitle.displayName = "AlertTitle";
6249
- var AlertDescription = React32.forwardRef(
5740
+ var AlertDescription = React31.forwardRef(
6250
5741
  ({ className, ...props }, ref) => {
6251
5742
  const { variant, size } = useAlertContext();
6252
- return /* @__PURE__ */ React32.createElement(
5743
+ return /* @__PURE__ */ React31.createElement(
6253
5744
  "p",
6254
5745
  {
6255
5746
  ref,
@@ -6271,14 +5762,14 @@ var Alert = Object.assign(AlertRoot, {
6271
5762
  });
6272
5763
 
6273
5764
  // src/components/ui/toast.tsx
6274
- import * as React33 from "react";
5765
+ import * as React32 from "react";
6275
5766
  import { cva as cva27 } from "class-variance-authority";
6276
- 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" }));
6277
- 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" }));
6278
- 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" }));
6279
- 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" }));
6280
- 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" }));
6281
- 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" }));
5767
+ 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" }));
5768
+ 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" }));
5769
+ 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" }));
5770
+ 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" }));
5771
+ 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" }));
5772
+ 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" }));
6282
5773
  var STATUS_ICONS2 = {
6283
5774
  default: InfoIcon2,
6284
5775
  success: SuccessIcon2,
@@ -6357,8 +5848,8 @@ function createToastStore() {
6357
5848
  }
6358
5849
  var globalStore = createToastStore();
6359
5850
  function useToastStore() {
6360
- const [, forceUpdate] = React33.useState(0);
6361
- React33.useEffect(() => {
5851
+ const [, forceUpdate] = React32.useState(0);
5852
+ React32.useEffect(() => {
6362
5853
  return globalStore.subscribe(() => forceUpdate((n) => n + 1));
6363
5854
  }, []);
6364
5855
  return globalStore.toasts;
@@ -6452,7 +5943,7 @@ toast.custom = (render, opts) => {
6452
5943
  });
6453
5944
  return id;
6454
5945
  };
6455
- var ToastItem = React33.memo(function ToastItem2({
5946
+ var ToastItem = React32.memo(function ToastItem2({
6456
5947
  data,
6457
5948
  position,
6458
5949
  size,
@@ -6461,13 +5952,13 @@ var ToastItem = React33.memo(function ToastItem2({
6461
5952
  defaultDuration,
6462
5953
  onRemove
6463
5954
  }) {
6464
- const [isExiting, setIsExiting] = React33.useState(false);
6465
- const [isEntered, setIsEntered] = React33.useState(false);
6466
- const [isPaused, setIsPaused] = React33.useState(false);
6467
- const timerRef = React33.useRef(null);
6468
- const remainingRef = React33.useRef(0);
6469
- const startTimeRef = React33.useRef(0);
6470
- React33.useEffect(() => {
5955
+ const [isExiting, setIsExiting] = React32.useState(false);
5956
+ const [isEntered, setIsEntered] = React32.useState(false);
5957
+ const [isPaused, setIsPaused] = React32.useState(false);
5958
+ const timerRef = React32.useRef(null);
5959
+ const remainingRef = React32.useRef(0);
5960
+ const startTimeRef = React32.useRef(0);
5961
+ React32.useEffect(() => {
6471
5962
  const timer = setTimeout(() => setIsEntered(true), TOAST_EXIT_DURATION);
6472
5963
  return () => clearTimeout(timer);
6473
5964
  }, []);
@@ -6480,18 +5971,18 @@ var ToastItem = React33.memo(function ToastItem2({
6480
5971
  const StatusIcon = STATUS_ICONS2[data.type];
6481
5972
  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";
6482
5973
  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";
6483
- const handleDismiss = React33.useCallback(() => {
5974
+ const handleDismiss = React32.useCallback(() => {
6484
5975
  if (!dismissible) return;
6485
5976
  setIsExiting(true);
6486
5977
  data.onDismiss?.(data);
6487
5978
  setTimeout(() => onRemove(data.id), TOAST_EXIT_DURATION);
6488
5979
  }, [data, dismissible, onRemove]);
6489
- const handleAutoClose = React33.useCallback(() => {
5980
+ const handleAutoClose = React32.useCallback(() => {
6490
5981
  setIsExiting(true);
6491
5982
  data.onAutoClose?.(data);
6492
5983
  setTimeout(() => onRemove(data.id), TOAST_EXIT_DURATION);
6493
5984
  }, [data, onRemove]);
6494
- React33.useEffect(() => {
5985
+ React32.useEffect(() => {
6495
5986
  if (duration <= 0) return;
6496
5987
  remainingRef.current = duration;
6497
5988
  startTimeRef.current = Date.now();
@@ -6500,7 +5991,7 @@ var ToastItem = React33.memo(function ToastItem2({
6500
5991
  if (timerRef.current) clearTimeout(timerRef.current);
6501
5992
  };
6502
5993
  }, [duration, handleAutoClose]);
6503
- const handleMouseEnter = React33.useCallback(() => {
5994
+ const handleMouseEnter = React32.useCallback(() => {
6504
5995
  if (duration <= 0) return;
6505
5996
  setIsPaused(true);
6506
5997
  if (timerRef.current) {
@@ -6508,13 +5999,13 @@ var ToastItem = React33.memo(function ToastItem2({
6508
5999
  remainingRef.current -= Date.now() - startTimeRef.current;
6509
6000
  }
6510
6001
  }, [duration]);
6511
- const handleMouseLeave = React33.useCallback(() => {
6002
+ const handleMouseLeave = React32.useCallback(() => {
6512
6003
  if (duration <= 0) return;
6513
6004
  setIsPaused(false);
6514
6005
  startTimeRef.current = Date.now();
6515
6006
  timerRef.current = setTimeout(handleAutoClose, Math.max(remainingRef.current, TOAST_MIN_RESUME_MS));
6516
6007
  }, [duration, handleAutoClose]);
6517
- React33.useEffect(() => {
6008
+ React32.useEffect(() => {
6518
6009
  if (data._promiseState === "success" || data._promiseState === "error") {
6519
6010
  const newDuration = data.duration ?? defaultDuration;
6520
6011
  if (newDuration > 0) {
@@ -6525,7 +6016,7 @@ var ToastItem = React33.memo(function ToastItem2({
6525
6016
  }
6526
6017
  }
6527
6018
  }, [data._promiseState, data.duration, defaultDuration, handleAutoClose]);
6528
- return /* @__PURE__ */ React33.createElement(
6019
+ return /* @__PURE__ */ React32.createElement(
6529
6020
  "div",
6530
6021
  {
6531
6022
  role,
@@ -6541,9 +6032,9 @@ var ToastItem = React33.memo(function ToastItem2({
6541
6032
  onMouseEnter: handleMouseEnter,
6542
6033
  onMouseLeave: handleMouseLeave
6543
6034
  },
6544
- 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" })),
6545
- /* @__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)),
6546
- (data.action || data.cancel) && /* @__PURE__ */ React33.createElement("div", { className: "flex items-center gap-1.5 shrink-0" }, data.cancel && /* @__PURE__ */ React33.createElement(
6035
+ 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" })),
6036
+ /* @__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)),
6037
+ (data.action || data.cancel) && /* @__PURE__ */ React32.createElement("div", { className: "flex items-center gap-1.5 shrink-0" }, data.cancel && /* @__PURE__ */ React32.createElement(
6547
6038
  "button",
6548
6039
  {
6549
6040
  type: "button",
@@ -6554,7 +6045,7 @@ var ToastItem = React33.memo(function ToastItem2({
6554
6045
  }
6555
6046
  },
6556
6047
  data.cancel.label
6557
- ), data.action && /* @__PURE__ */ React33.createElement(
6048
+ ), data.action && /* @__PURE__ */ React32.createElement(
6558
6049
  "button",
6559
6050
  {
6560
6051
  type: "button",
@@ -6566,7 +6057,7 @@ var ToastItem = React33.memo(function ToastItem2({
6566
6057
  },
6567
6058
  data.action.label
6568
6059
  )),
6569
- showClose && dismissible && /* @__PURE__ */ React33.createElement(
6060
+ showClose && dismissible && /* @__PURE__ */ React32.createElement(
6570
6061
  "button",
6571
6062
  {
6572
6063
  type: "button",
@@ -6574,7 +6065,7 @@ var ToastItem = React33.memo(function ToastItem2({
6574
6065
  onClick: handleDismiss,
6575
6066
  "aria-label": "Close"
6576
6067
  },
6577
- /* @__PURE__ */ React33.createElement(DefaultCloseIcon5, { className: "icon-sm" })
6068
+ /* @__PURE__ */ React32.createElement(DefaultCloseIcon5, { className: "icon-sm" })
6578
6069
  )
6579
6070
  );
6580
6071
  });
@@ -6591,8 +6082,8 @@ function Toaster({
6591
6082
  className
6592
6083
  }) {
6593
6084
  const toasts = useToastStore();
6594
- const [expanded, setExpanded] = React33.useState(false);
6595
- const handleRemove = React33.useCallback((id) => {
6085
+ const [expanded, setExpanded] = React32.useState(false);
6086
+ const handleRemove = React32.useCallback((id) => {
6596
6087
  globalStore.removeToast(id);
6597
6088
  }, []);
6598
6089
  const visible = toasts.slice(0, visibleToasts);
@@ -6605,7 +6096,7 @@ function Toaster({
6605
6096
  isTop ? "top-0" : "bottom-0",
6606
6097
  isCenter ? "left-1/2 -translate-x-1/2" : isRight ? "right-0" : "left-0"
6607
6098
  );
6608
- return /* @__PURE__ */ React33.createElement(
6099
+ return /* @__PURE__ */ React32.createElement(
6609
6100
  "section",
6610
6101
  {
6611
6102
  "aria-label": "Notifications",
@@ -6621,7 +6112,7 @@ function Toaster({
6621
6112
  },
6622
6113
  visible.map((t, index) => {
6623
6114
  const isStacked = !expand && !expanded && index > 0;
6624
- return /* @__PURE__ */ React33.createElement(
6115
+ return /* @__PURE__ */ React32.createElement(
6625
6116
  "div",
6626
6117
  {
6627
6118
  key: t.id,
@@ -6639,7 +6130,7 @@ function Toaster({
6639
6130
  } : { zIndex: visibleToasts - index }
6640
6131
  }
6641
6132
  },
6642
- /* @__PURE__ */ React33.createElement(
6133
+ /* @__PURE__ */ React32.createElement(
6643
6134
  ToastItem,
6644
6135
  {
6645
6136
  data: t,
@@ -6658,7 +6149,7 @@ function Toaster({
6658
6149
  Toaster.displayName = "Toaster";
6659
6150
 
6660
6151
  // src/components/ui/progress.tsx
6661
- import * as React34 from "react";
6152
+ import * as React33 from "react";
6662
6153
  import * as ProgressPrimitive from "@radix-ui/react-progress";
6663
6154
  import { cva as cva28 } from "class-variance-authority";
6664
6155
  var CIRCULAR_VIEWBOX = 100;
@@ -6706,7 +6197,7 @@ var valueFontSizes = {
6706
6197
  default: "text-sm",
6707
6198
  lg: "text-base"
6708
6199
  };
6709
- var Progress = React34.forwardRef(({
6200
+ var Progress = React33.forwardRef(({
6710
6201
  className,
6711
6202
  type = "linear",
6712
6203
  value = 0,
@@ -6732,7 +6223,7 @@ var Progress = React34.forwardRef(({
6732
6223
  const r = (CIRCULAR_VIEWBOX - strokeWidth) / 2;
6733
6224
  const circumference = 2 * Math.PI * r;
6734
6225
  const offset = circumference * (1 - percentage / 100);
6735
- return /* @__PURE__ */ React34.createElement(
6226
+ return /* @__PURE__ */ React33.createElement(
6736
6227
  "div",
6737
6228
  {
6738
6229
  className: cn("inline-flex items-center gap-2", className),
@@ -6742,7 +6233,7 @@ var Progress = React34.forwardRef(({
6742
6233
  "aria-valuemax": max,
6743
6234
  "aria-label": label
6744
6235
  },
6745
- /* @__PURE__ */ React34.createElement("div", { className: "relative", style: { width: diameter, height: diameter } }, /* @__PURE__ */ React34.createElement(
6236
+ /* @__PURE__ */ React33.createElement("div", { className: "relative", style: { width: diameter, height: diameter } }, /* @__PURE__ */ React33.createElement(
6746
6237
  "svg",
6747
6238
  {
6748
6239
  viewBox: `0 0 ${CIRCULAR_VIEWBOX} ${CIRCULAR_VIEWBOX}`,
@@ -6750,7 +6241,7 @@ var Progress = React34.forwardRef(({
6750
6241
  width: diameter,
6751
6242
  height: diameter
6752
6243
  },
6753
- /* @__PURE__ */ React34.createElement(
6244
+ /* @__PURE__ */ React33.createElement(
6754
6245
  "circle",
6755
6246
  {
6756
6247
  cx: CIRCULAR_CENTER,
@@ -6761,7 +6252,7 @@ var Progress = React34.forwardRef(({
6761
6252
  strokeWidth
6762
6253
  }
6763
6254
  ),
6764
- /* @__PURE__ */ React34.createElement(
6255
+ /* @__PURE__ */ React33.createElement(
6765
6256
  "circle",
6766
6257
  {
6767
6258
  cx: CIRCULAR_CENTER,
@@ -6775,14 +6266,14 @@ var Progress = React34.forwardRef(({
6775
6266
  strokeLinecap: "round"
6776
6267
  }
6777
6268
  )
6778
- ), showValue && resolvedSize !== "sm" && /* @__PURE__ */ React34.createElement("div", { className: cn(
6269
+ ), showValue && resolvedSize !== "sm" && /* @__PURE__ */ React33.createElement("div", { className: cn(
6779
6270
  "absolute inset-0 flex items-center justify-center font-semibold font-mono tabular-nums text-foreground",
6780
6271
  CIRCULAR_FONT_SIZES[resolvedSize]
6781
6272
  ) }, valueLabel))
6782
6273
  );
6783
6274
  }
6784
6275
  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)]" : "";
6785
- return /* @__PURE__ */ React34.createElement("div", { className: cn("flex items-center gap-3", showValue && "w-full", className) }, /* @__PURE__ */ React34.createElement(
6276
+ return /* @__PURE__ */ React33.createElement("div", { className: cn("flex items-center gap-3", showValue && "w-full", className) }, /* @__PURE__ */ React33.createElement(
6786
6277
  ProgressPrimitive.Root,
6787
6278
  {
6788
6279
  ref,
@@ -6792,7 +6283,7 @@ var Progress = React34.forwardRef(({
6792
6283
  "aria-label": label,
6793
6284
  ...props
6794
6285
  },
6795
- /* @__PURE__ */ React34.createElement(
6286
+ /* @__PURE__ */ React33.createElement(
6796
6287
  ProgressPrimitive.Indicator,
6797
6288
  {
6798
6289
  className: cn(
@@ -6804,7 +6295,7 @@ var Progress = React34.forwardRef(({
6804
6295
  style: { width: `${percentage}%` }
6805
6296
  }
6806
6297
  )
6807
- ), showValue && /* @__PURE__ */ React34.createElement("span", { className: cn(
6298
+ ), showValue && /* @__PURE__ */ React33.createElement("span", { className: cn(
6808
6299
  "shrink-0 font-semibold font-mono tabular-nums text-foreground",
6809
6300
  valueFontSizes[resolvedSize]
6810
6301
  ) }, valueLabel));
@@ -6812,7 +6303,7 @@ var Progress = React34.forwardRef(({
6812
6303
  Progress.displayName = "Progress";
6813
6304
 
6814
6305
  // src/components/ui/spinner.tsx
6815
- import * as React35 from "react";
6306
+ import * as React34 from "react";
6816
6307
  import { cva as cva29 } from "class-variance-authority";
6817
6308
  var RING_SIZES = {
6818
6309
  sm: 16,
@@ -6890,7 +6381,7 @@ var spinnerVariants = cva29(
6890
6381
  }
6891
6382
  }
6892
6383
  );
6893
- var Spinner = React35.forwardRef(
6384
+ var Spinner = React34.forwardRef(
6894
6385
  ({
6895
6386
  className,
6896
6387
  variant = "ring",
@@ -6909,7 +6400,7 @@ var Spinner = React35.forwardRef(
6909
6400
  flip: OrbitFlipSpinner,
6910
6401
  morph: OrbitMorphSpinner
6911
6402
  };
6912
- return /* @__PURE__ */ React35.createElement(
6403
+ return /* @__PURE__ */ React34.createElement(
6913
6404
  "div",
6914
6405
  {
6915
6406
  ref,
@@ -6918,12 +6409,12 @@ var Spinner = React35.forwardRef(
6918
6409
  className: cn(spinnerVariants({ size }), className),
6919
6410
  ...props
6920
6411
  },
6921
- variant === "ring" && /* @__PURE__ */ React35.createElement(RingSpinner, { size: resolvedSize, color, speed }),
6922
- variant === "dots" && /* @__PURE__ */ React35.createElement(DotsSpinner, { size: resolvedSize, color, speed }),
6923
- variant === "bars" && /* @__PURE__ */ React35.createElement(BarsSpinner, { size: resolvedSize, color, speed }),
6412
+ variant === "ring" && /* @__PURE__ */ React34.createElement(RingSpinner, { size: resolvedSize, color, speed }),
6413
+ variant === "dots" && /* @__PURE__ */ React34.createElement(DotsSpinner, { size: resolvedSize, color, speed }),
6414
+ variant === "bars" && /* @__PURE__ */ React34.createElement(BarsSpinner, { size: resolvedSize, color, speed }),
6924
6415
  variant === "orbit" && (() => {
6925
6416
  const OrbitComponent = orbitMap[orbitStyle];
6926
- return /* @__PURE__ */ React35.createElement(OrbitComponent, { size: resolvedSize, color, speed });
6417
+ return /* @__PURE__ */ React34.createElement(OrbitComponent, { size: resolvedSize, color, speed });
6927
6418
  })()
6928
6419
  );
6929
6420
  }
@@ -6934,7 +6425,7 @@ function RingSpinner({ size, color, speed }) {
6934
6425
  const stroke = RING_STROKE[size];
6935
6426
  const r = (RING_VIEWBOX - stroke) / 2;
6936
6427
  const circumference = 2 * Math.PI * r;
6937
- return /* @__PURE__ */ React35.createElement(
6428
+ return /* @__PURE__ */ React34.createElement(
6938
6429
  "svg",
6939
6430
  {
6940
6431
  viewBox: `0 0 ${RING_VIEWBOX} ${RING_VIEWBOX}`,
@@ -6944,7 +6435,7 @@ function RingSpinner({ size, color, speed }) {
6944
6435
  className: "animate-spin",
6945
6436
  style: { animationDuration: `${SPEED_MS[speed]}ms` }
6946
6437
  },
6947
- /* @__PURE__ */ React35.createElement(
6438
+ /* @__PURE__ */ React34.createElement(
6948
6439
  "circle",
6949
6440
  {
6950
6441
  cx: RING_CENTER,
@@ -6954,7 +6445,7 @@ function RingSpinner({ size, color, speed }) {
6954
6445
  strokeWidth: stroke
6955
6446
  }
6956
6447
  ),
6957
- /* @__PURE__ */ React35.createElement(
6448
+ /* @__PURE__ */ React34.createElement(
6958
6449
  "circle",
6959
6450
  {
6960
6451
  cx: RING_CENTER,
@@ -6972,7 +6463,7 @@ function RingSpinner({ size, color, speed }) {
6972
6463
  function DotsSpinner({ size, color, speed }) {
6973
6464
  const dotSize = DOT_SIZES[size];
6974
6465
  const gap = DOT_GAP[size];
6975
- return /* @__PURE__ */ React35.createElement("div", { className: "inline-flex items-center", style: { gap } }, Array.from({ length: DOT_COUNT }, (_, i) => /* @__PURE__ */ React35.createElement(
6466
+ return /* @__PURE__ */ React34.createElement("div", { className: "inline-flex items-center", style: { gap } }, Array.from({ length: DOT_COUNT }, (_, i) => /* @__PURE__ */ React34.createElement(
6976
6467
  "div",
6977
6468
  {
6978
6469
  key: i,
@@ -6993,7 +6484,7 @@ function BarsSpinner({ size, color, speed }) {
6993
6484
  const barWidth = BAR_WIDTHS[size];
6994
6485
  const barHeight = BAR_HEIGHTS[size];
6995
6486
  const gap = BAR_GAP[size];
6996
- return /* @__PURE__ */ React35.createElement("div", { className: "inline-flex items-center", style: { gap, height: barHeight } }, Array.from({ length: BAR_COUNT }, (_, i) => /* @__PURE__ */ React35.createElement(
6487
+ return /* @__PURE__ */ React34.createElement("div", { className: "inline-flex items-center", style: { gap, height: barHeight } }, Array.from({ length: BAR_COUNT }, (_, i) => /* @__PURE__ */ React34.createElement(
6997
6488
  "div",
6998
6489
  {
6999
6490
  key: i,
@@ -7020,7 +6511,7 @@ function OrbitSpinner({ size, color, speed }) {
7020
6511
  const stroke = ORBIT_STROKE[size];
7021
6512
  const r = (RING_VIEWBOX - stroke * 2) / 2;
7022
6513
  const circumference = 2 * Math.PI * r;
7023
- return /* @__PURE__ */ React35.createElement(
6514
+ return /* @__PURE__ */ React34.createElement(
7024
6515
  "div",
7025
6516
  {
7026
6517
  className: cn(orbitTextColorMap[color]),
@@ -7031,7 +6522,7 @@ function OrbitSpinner({ size, color, speed }) {
7031
6522
  position: "relative"
7032
6523
  }
7033
6524
  },
7034
- /* @__PURE__ */ React35.createElement(
6525
+ /* @__PURE__ */ React34.createElement(
7035
6526
  "svg",
7036
6527
  {
7037
6528
  viewBox: `0 0 ${RING_VIEWBOX} ${RING_VIEWBOX}`,
@@ -7041,7 +6532,7 @@ function OrbitSpinner({ size, color, speed }) {
7041
6532
  className: "absolute inset-0 animate-spinner-orbit",
7042
6533
  style: { animationDuration: `${ORBIT_SPEED_MS[speed]}ms` }
7043
6534
  },
7044
- /* @__PURE__ */ React35.createElement(
6535
+ /* @__PURE__ */ React34.createElement(
7045
6536
  "circle",
7046
6537
  {
7047
6538
  cx: RING_CENTER,
@@ -7052,7 +6543,7 @@ function OrbitSpinner({ size, color, speed }) {
7052
6543
  }
7053
6544
  )
7054
6545
  ),
7055
- /* @__PURE__ */ React35.createElement(
6546
+ /* @__PURE__ */ React34.createElement(
7056
6547
  "svg",
7057
6548
  {
7058
6549
  viewBox: `0 0 ${RING_VIEWBOX} ${RING_VIEWBOX}`,
@@ -7068,7 +6559,7 @@ function OrbitSpinner({ size, color, speed }) {
7068
6559
  opacity: 0.35
7069
6560
  }
7070
6561
  },
7071
- /* @__PURE__ */ React35.createElement(
6562
+ /* @__PURE__ */ React34.createElement(
7072
6563
  "circle",
7073
6564
  {
7074
6565
  cx: RING_CENTER,
@@ -7086,7 +6577,7 @@ function OrbitDotsSpinner({ size, color, speed }) {
7086
6577
  const diameter = ORBIT_SIZES[size];
7087
6578
  const dotSize = ORBIT_DOT_SIZE[size];
7088
6579
  const orbitRadius = (diameter - dotSize) / 2;
7089
- return /* @__PURE__ */ React35.createElement(
6580
+ return /* @__PURE__ */ React34.createElement(
7090
6581
  "div",
7091
6582
  {
7092
6583
  className: cn(orbitTextColorMap[color]),
@@ -7097,7 +6588,7 @@ function OrbitDotsSpinner({ size, color, speed }) {
7097
6588
  position: "relative"
7098
6589
  }
7099
6590
  },
7100
- /* @__PURE__ */ React35.createElement(
6591
+ /* @__PURE__ */ React34.createElement(
7101
6592
  "div",
7102
6593
  {
7103
6594
  className: "animate-spinner-orbit",
@@ -7109,7 +6600,7 @@ function OrbitDotsSpinner({ size, color, speed }) {
7109
6600
  transformStyle: "preserve-3d"
7110
6601
  }
7111
6602
  },
7112
- [0, 120, 240].map((angle) => /* @__PURE__ */ React35.createElement(
6603
+ [0, 120, 240].map((angle) => /* @__PURE__ */ React34.createElement(
7113
6604
  "div",
7114
6605
  {
7115
6606
  key: angle,
@@ -7142,7 +6633,7 @@ function OrbitCubeSpinner({ size, color, speed }) {
7142
6633
  top: -overlap,
7143
6634
  left: -overlap
7144
6635
  };
7145
- return /* @__PURE__ */ React35.createElement(
6636
+ return /* @__PURE__ */ React34.createElement(
7146
6637
  "div",
7147
6638
  {
7148
6639
  className: cn(orbitTextColorMap[color]),
@@ -7152,7 +6643,7 @@ function OrbitCubeSpinner({ size, color, speed }) {
7152
6643
  perspective: cubeSize * 6
7153
6644
  }
7154
6645
  },
7155
- /* @__PURE__ */ React35.createElement(
6646
+ /* @__PURE__ */ React34.createElement(
7156
6647
  "div",
7157
6648
  {
7158
6649
  style: {
@@ -7162,7 +6653,7 @@ function OrbitCubeSpinner({ size, color, speed }) {
7162
6653
  transformStyle: "preserve-3d"
7163
6654
  }
7164
6655
  },
7165
- /* @__PURE__ */ React35.createElement(
6656
+ /* @__PURE__ */ React34.createElement(
7166
6657
  "div",
7167
6658
  {
7168
6659
  className: "animate-spinner-orbit",
@@ -7174,12 +6665,12 @@ function OrbitCubeSpinner({ size, color, speed }) {
7174
6665
  transformStyle: "preserve-3d"
7175
6666
  }
7176
6667
  },
7177
- /* @__PURE__ */ React35.createElement("div", { style: { ...faceBase, transform: `translateZ(${half}px)`, opacity: 0.25 } }),
7178
- /* @__PURE__ */ React35.createElement("div", { style: { ...faceBase, transform: `translateZ(${-half}px)`, opacity: 0.1 } }),
7179
- /* @__PURE__ */ React35.createElement("div", { style: { ...faceBase, transform: `rotateY(-90deg) translateZ(${half}px)`, opacity: 0.2 } }),
7180
- /* @__PURE__ */ React35.createElement("div", { style: { ...faceBase, transform: `rotateY(90deg) translateZ(${half}px)`, opacity: 0.2 } }),
7181
- /* @__PURE__ */ React35.createElement("div", { style: { ...faceBase, transform: `rotateX(90deg) translateZ(${half}px)`, opacity: 0.15 } }),
7182
- /* @__PURE__ */ React35.createElement("div", { style: { ...faceBase, transform: `rotateX(-90deg) translateZ(${half}px)`, opacity: 0.08 } })
6668
+ /* @__PURE__ */ React34.createElement("div", { style: { ...faceBase, transform: `translateZ(${half}px)`, opacity: 0.25 } }),
6669
+ /* @__PURE__ */ React34.createElement("div", { style: { ...faceBase, transform: `translateZ(${-half}px)`, opacity: 0.1 } }),
6670
+ /* @__PURE__ */ React34.createElement("div", { style: { ...faceBase, transform: `rotateY(-90deg) translateZ(${half}px)`, opacity: 0.2 } }),
6671
+ /* @__PURE__ */ React34.createElement("div", { style: { ...faceBase, transform: `rotateY(90deg) translateZ(${half}px)`, opacity: 0.2 } }),
6672
+ /* @__PURE__ */ React34.createElement("div", { style: { ...faceBase, transform: `rotateX(90deg) translateZ(${half}px)`, opacity: 0.15 } }),
6673
+ /* @__PURE__ */ React34.createElement("div", { style: { ...faceBase, transform: `rotateX(-90deg) translateZ(${half}px)`, opacity: 0.08 } })
7183
6674
  )
7184
6675
  )
7185
6676
  );
@@ -7187,7 +6678,7 @@ function OrbitCubeSpinner({ size, color, speed }) {
7187
6678
  var FLIP_SIZES = { sm: 14, default: 20, lg: 28 };
7188
6679
  function OrbitFlipSpinner({ size, color, speed }) {
7189
6680
  const sqSize = FLIP_SIZES[size];
7190
- return /* @__PURE__ */ React35.createElement(
6681
+ return /* @__PURE__ */ React34.createElement(
7191
6682
  "div",
7192
6683
  {
7193
6684
  className: cn(orbitTextColorMap[color]),
@@ -7197,7 +6688,7 @@ function OrbitFlipSpinner({ size, color, speed }) {
7197
6688
  perspective: sqSize * 4
7198
6689
  }
7199
6690
  },
7200
- /* @__PURE__ */ React35.createElement("div", { style: { transform: "rotateX(25deg)", transformStyle: "preserve-3d", width: "100%", height: "100%" } }, /* @__PURE__ */ React35.createElement(
6691
+ /* @__PURE__ */ React34.createElement("div", { style: { transform: "rotateX(25deg)", transformStyle: "preserve-3d", width: "100%", height: "100%" } }, /* @__PURE__ */ React34.createElement(
7201
6692
  "div",
7202
6693
  {
7203
6694
  className: "animate-spinner-orbit",
@@ -7216,7 +6707,7 @@ function OrbitFlipSpinner({ size, color, speed }) {
7216
6707
  var MORPH_SIZES = { sm: 16, default: 24, lg: 34 };
7217
6708
  function OrbitMorphSpinner({ size, color, speed }) {
7218
6709
  const morphSize = MORPH_SIZES[size];
7219
- return /* @__PURE__ */ React35.createElement(
6710
+ return /* @__PURE__ */ React34.createElement(
7220
6711
  "div",
7221
6712
  {
7222
6713
  className: cn(orbitTextColorMap[color]),
@@ -7226,7 +6717,7 @@ function OrbitMorphSpinner({ size, color, speed }) {
7226
6717
  perspective: morphSize * 3
7227
6718
  }
7228
6719
  },
7229
- /* @__PURE__ */ React35.createElement(
6720
+ /* @__PURE__ */ React34.createElement(
7230
6721
  "div",
7231
6722
  {
7232
6723
  className: "animate-spinner-morph",
@@ -7243,7 +6734,7 @@ function OrbitMorphSpinner({ size, color, speed }) {
7243
6734
  }
7244
6735
 
7245
6736
  // src/components/ui/skeleton.tsx
7246
- import * as React36 from "react";
6737
+ import * as React35 from "react";
7247
6738
  import { cva as cva30 } from "class-variance-authority";
7248
6739
  var PULSE_DURATION_MS = 2e3;
7249
6740
  var WAVE_DURATION_MS = 1800;
@@ -7270,7 +6761,7 @@ var skeletonVariants = cva30(
7270
6761
  }
7271
6762
  }
7272
6763
  );
7273
- var SkeletonBlock = React36.forwardRef(
6764
+ var SkeletonBlock = React35.forwardRef(
7274
6765
  ({
7275
6766
  className,
7276
6767
  variant = "text",
@@ -7281,7 +6772,7 @@ var SkeletonBlock = React36.forwardRef(
7281
6772
  style,
7282
6773
  ...props
7283
6774
  }, ref) => {
7284
- return /* @__PURE__ */ React36.createElement(
6775
+ return /* @__PURE__ */ React35.createElement(
7285
6776
  "div",
7286
6777
  {
7287
6778
  ref,
@@ -7301,7 +6792,7 @@ var SkeletonBlock = React36.forwardRef(
7301
6792
  },
7302
6793
  ...props
7303
6794
  },
7304
- animation === "wave" && /* @__PURE__ */ React36.createElement(
6795
+ animation === "wave" && /* @__PURE__ */ React35.createElement(
7305
6796
  "div",
7306
6797
  {
7307
6798
  className: "absolute inset-0 animate-skeleton-wave",
@@ -7315,7 +6806,7 @@ var SkeletonBlock = React36.forwardRef(
7315
6806
  }
7316
6807
  );
7317
6808
  SkeletonBlock.displayName = "SkeletonBlock";
7318
- var Skeleton = React36.forwardRef(
6809
+ var Skeleton = React35.forwardRef(
7319
6810
  ({
7320
6811
  count,
7321
6812
  loading,
@@ -7324,13 +6815,13 @@ var Skeleton = React36.forwardRef(
7324
6815
  ...rest
7325
6816
  }, ref) => {
7326
6817
  if (loading !== void 0) {
7327
- if (!loading) return /* @__PURE__ */ React36.createElement(React36.Fragment, null, children);
6818
+ if (!loading) return /* @__PURE__ */ React35.createElement(React35.Fragment, null, children);
7328
6819
  }
7329
6820
  if (count != null && count > 1 && variant === "text") {
7330
- return /* @__PURE__ */ React36.createElement("div", { ref, className: "space-y-2.5", "aria-hidden": "true" }, Array.from({ length: count }, (_, i) => {
6821
+ return /* @__PURE__ */ React35.createElement("div", { ref, className: "space-y-2.5", "aria-hidden": "true" }, Array.from({ length: count }, (_, i) => {
7331
6822
  const widthPattern = MULTI_LINE_WIDTHS[i % MULTI_LINE_WIDTHS.length];
7332
6823
  const isLast = i === count - 1;
7333
- return /* @__PURE__ */ React36.createElement(
6824
+ return /* @__PURE__ */ React35.createElement(
7334
6825
  SkeletonBlock,
7335
6826
  {
7336
6827
  key: i,
@@ -7341,7 +6832,7 @@ var Skeleton = React36.forwardRef(
7341
6832
  );
7342
6833
  }));
7343
6834
  }
7344
- return /* @__PURE__ */ React36.createElement(SkeletonBlock, { ref, variant, ...rest });
6835
+ return /* @__PURE__ */ React35.createElement(SkeletonBlock, { ref, variant, ...rest });
7345
6836
  }
7346
6837
  );
7347
6838
  Skeleton.displayName = "Skeleton";
@@ -7388,19 +6879,6 @@ export {
7388
6879
  CardHeader,
7389
6880
  CardImage,
7390
6881
  CardTitle,
7391
- Chart,
7392
- ChartArea,
7393
- ChartBar,
7394
- ChartContainer,
7395
- ChartLegend,
7396
- ChartLegendContent,
7397
- ChartLine,
7398
- ChartPie,
7399
- ChartStyle,
7400
- ChartTooltip,
7401
- ChartTooltipContent,
7402
- ChartXAxis,
7403
- ChartYAxis,
7404
6882
  Checkbox,
7405
6883
  Divider,
7406
6884
  Drawer,
@@ -7514,7 +6992,7 @@ export {
7514
6992
  Toggle,
7515
6993
  ToggleGroup,
7516
6994
  ToggleGroupItem,
7517
- Tooltip2 as Tooltip,
6995
+ Tooltip,
7518
6996
  TooltipArrow,
7519
6997
  TooltipContent,
7520
6998
  TooltipPortal,
@@ -7564,7 +7042,6 @@ export {
7564
7042
  toggleVariants,
7565
7043
  tooltipContentVariants,
7566
7044
  useButtonGroup,
7567
- useChart,
7568
7045
  useFieldContext,
7569
7046
  usePagination
7570
7047
  };