@underverse-ui/underverse 0.2.60 → 0.2.62

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.js CHANGED
@@ -267,7 +267,7 @@ var Badge = ({
267
267
  }
268
268
  );
269
269
  }
270
- return /* @__PURE__ */ jsxs2("span", { className: cn(baseClasses, "rounded-lg gap-1", sizeStyles[size], className), onClick: handleClick, role: "status", children: [
270
+ return /* @__PURE__ */ jsxs2("span", { className: cn(baseClasses, "rounded-full gap-1", sizeStyles[size], className), onClick: handleClick, role: "status", children: [
271
271
  Icon && /* @__PURE__ */ jsx2(
272
272
  Icon,
273
273
  {
@@ -1957,7 +1957,7 @@ function SmartImage({
1957
1957
  alt,
1958
1958
  className,
1959
1959
  ratioClass,
1960
- roundedClass = "rounded-xl",
1960
+ roundedClass = "rounded-2xl md:rounded-3xl",
1961
1961
  fill = true,
1962
1962
  width,
1963
1963
  height,
@@ -2147,10 +2147,10 @@ var Avatar_default = Avatar;
2147
2147
  import { jsx as jsx13, jsxs as jsxs10 } from "react/jsx-runtime";
2148
2148
  var Skeleton = ({ className, width, height, variant = "rectangular", animation = "pulse", lines = 1 }) => {
2149
2149
  const variantClasses2 = {
2150
- rectangular: "rounded-md",
2150
+ rectangular: "rounded-2xl md:rounded-3xl",
2151
2151
  circular: "rounded-full",
2152
- rounded: "rounded-lg",
2153
- text: "rounded"
2152
+ rounded: "rounded-2xl md:rounded-3xl",
2153
+ text: "rounded-xl"
2154
2154
  };
2155
2155
  const animationClasses = {
2156
2156
  pulse: "animate-pulse",
@@ -2199,9 +2199,9 @@ var SkeletonText = ({ lines = 3, className, width = "100%" }) => {
2199
2199
  };
2200
2200
  var SkeletonCard = ({ showAvatar = true, showImage = false, textLines = 3, className, children }) => {
2201
2201
  if (children) {
2202
- return /* @__PURE__ */ jsx13("div", { className: cn("p-4 space-y-4 rounded-lg bg-card outline-none focus:outline-none", className), children });
2202
+ return /* @__PURE__ */ jsx13("div", { className: cn("p-4 space-y-4 rounded-2xl md:rounded-3xl bg-card outline-none focus:outline-none", className), children });
2203
2203
  }
2204
- return /* @__PURE__ */ jsxs10("div", { className: cn("p-4 space-y-4 rounded-2xl bg-card outline-none focus:outline-none", className), children: [
2204
+ return /* @__PURE__ */ jsxs10("div", { className: cn("p-4 space-y-4 rounded-2xl md:rounded-3xl bg-card outline-none focus:outline-none", className), children: [
2205
2205
  showAvatar && /* @__PURE__ */ jsxs10("div", { className: "flex items-center space-x-3", children: [
2206
2206
  /* @__PURE__ */ jsx13(SkeletonAvatar, {}),
2207
2207
  /* @__PURE__ */ jsxs10("div", { className: "space-y-2", children: [
@@ -2209,7 +2209,7 @@ var SkeletonCard = ({ showAvatar = true, showImage = false, textLines = 3, class
2209
2209
  /* @__PURE__ */ jsx13(Skeleton, { className: "h-3 w-16" })
2210
2210
  ] })
2211
2211
  ] }),
2212
- showImage && /* @__PURE__ */ jsx13(Skeleton, { className: "h-48 w-full rounded-xl" }),
2212
+ showImage && /* @__PURE__ */ jsx13(Skeleton, { className: "h-48 w-full rounded-2xl md:rounded-3xl" }),
2213
2213
  /* @__PURE__ */ jsx13(SkeletonText, { lines: textLines }),
2214
2214
  /* @__PURE__ */ jsxs10("div", { className: "flex space-x-2", children: [
2215
2215
  /* @__PURE__ */ jsx13(SkeletonButton, { size: "sm" }),
@@ -2218,7 +2218,7 @@ var SkeletonCard = ({ showAvatar = true, showImage = false, textLines = 3, class
2218
2218
  ] });
2219
2219
  };
2220
2220
  var SkeletonPost = ({ className }) => {
2221
- return /* @__PURE__ */ jsxs10("div", { className: cn("p-6 space-y-4 rounded-3xl bg-card outline-none focus:outline-none", className), children: [
2221
+ return /* @__PURE__ */ jsxs10("div", { className: cn("p-6 space-y-4 rounded-2xl md:rounded-3xl bg-card outline-none focus:outline-none", className), children: [
2222
2222
  /* @__PURE__ */ jsxs10("div", { className: "flex items-center space-x-3", children: [
2223
2223
  /* @__PURE__ */ jsx13(SkeletonAvatar, { size: "lg" }),
2224
2224
  /* @__PURE__ */ jsxs10("div", { className: "space-y-2", children: [
@@ -2250,7 +2250,7 @@ var SkeletonMessage = ({ own = false, showAvatar = true, className }) => {
2250
2250
  ] });
2251
2251
  };
2252
2252
  var SkeletonList = ({ items = 5, itemHeight = 60, showAvatar = true, className }) => {
2253
- return /* @__PURE__ */ jsx13("div", { className: cn("space-y-3", className), children: Array.from({ length: items }).map((_, index) => /* @__PURE__ */ jsxs10("div", { className: "flex items-center space-x-3 p-3 rounded-xl", children: [
2253
+ return /* @__PURE__ */ jsx13("div", { className: cn("space-y-3", className), children: Array.from({ length: items }).map((_, index) => /* @__PURE__ */ jsxs10("div", { className: "flex items-center space-x-3 p-3 rounded-2xl md:rounded-3xl", children: [
2254
2254
  showAvatar && /* @__PURE__ */ jsx13(SkeletonAvatar, {}),
2255
2255
  /* @__PURE__ */ jsxs10("div", { className: "flex-1 space-y-2", children: [
2256
2256
  /* @__PURE__ */ jsx13(Skeleton, { className: "h-4 w-3/4" }),
@@ -4338,7 +4338,7 @@ var sizeStyles6 = {
4338
4338
  content: "mt-3 p-3"
4339
4339
  },
4340
4340
  md: {
4341
- tab: "py-2 px-4 text-sm",
4341
+ tab: "py-2.5 px-4 text-sm",
4342
4342
  content: "mt-4 p-4"
4343
4343
  },
4344
4344
  lg: {
@@ -4348,33 +4348,33 @@ var sizeStyles6 = {
4348
4348
  };
4349
4349
  var variantStyles5 = {
4350
4350
  default: {
4351
- container: "border-b border-border",
4352
- tab: "border-b-2 border-transparent hover:border-border/60",
4353
- activeTab: "border-primary text-primary",
4351
+ container: "border-b border-border/60 bg-muted/30 p-1 rounded-t-2xl",
4352
+ tab: "rounded-full border-b-2 border-transparent hover:bg-accent/40",
4353
+ activeTab: "border-primary bg-background text-primary shadow-sm",
4354
4354
  inactiveTab: "text-muted-foreground hover:text-foreground"
4355
4355
  },
4356
4356
  pills: {
4357
- container: "bg-muted p-1 rounded-lg",
4358
- tab: "rounded-md transition-all duration-200",
4359
- activeTab: "bg-background text-foreground shadow-sm",
4357
+ container: "bg-muted/50 backdrop-blur-sm p-1.5 rounded-2xl border border-border/40",
4358
+ tab: "rounded-full transition-all duration-200",
4359
+ activeTab: "bg-background text-foreground shadow-md border border-border/50",
4360
4360
  inactiveTab: "text-muted-foreground hover:text-foreground hover:bg-background/50"
4361
4361
  },
4362
4362
  underline: {
4363
- container: "relative border-b border-border",
4364
- tab: "relative transition-colors duration-200 pb-3 border-b-2 border-transparent hover:border-border/60",
4365
- activeTab: "text-primary border-primary font-medium",
4363
+ container: "relative border-b border-border/60",
4364
+ tab: "relative transition-colors duration-200 pb-3 border-b-2 border-transparent hover:border-primary/30",
4365
+ activeTab: "text-primary border-primary font-semibold",
4366
4366
  inactiveTab: "text-muted-foreground hover:text-foreground"
4367
4367
  },
4368
4368
  card: {
4369
- container: "space-y-1",
4369
+ container: "space-y-1.5 bg-muted/20 p-2 rounded-2xl border border-border/30",
4370
4370
  tab: "rounded-xl border border-transparent transition-all duration-200",
4371
- activeTab: "bg-primary text-primary-foreground border-primary",
4372
- inactiveTab: "text-muted-foreground hover:text-foreground hover:bg-accent/50 hover:border-border hover:shadow-sm"
4371
+ activeTab: "bg-primary text-primary-foreground border-primary shadow-md",
4372
+ inactiveTab: "text-muted-foreground hover:text-foreground hover:bg-accent/50 hover:border-border/50"
4373
4373
  },
4374
4374
  "underline-card": {
4375
- container: "border-b border-border bg-card rounded-t-2xl",
4376
- tab: "relative transition-all duration-200 pb-3 px-4 border-b-2 border-transparent hover:border-primary/50 hover:bg-accent/30",
4377
- activeTab: "text-primary border-primary font-medium bg-accent/20",
4375
+ container: "border-b border-border/60 bg-card/80 backdrop-blur-sm rounded-t-2xl p-1",
4376
+ tab: "relative transition-all duration-200 pb-3 px-4 rounded-t-xl border-b-2 border-transparent hover:border-primary/30 hover:bg-accent/30",
4377
+ activeTab: "text-primary border-primary font-semibold bg-accent/30",
4378
4378
  inactiveTab: "text-muted-foreground hover:text-foreground"
4379
4379
  }
4380
4380
  };
@@ -4494,7 +4494,8 @@ var Tabs = ({
4494
4494
  id: `${baseId}-panel-${tabs.findIndex((t) => t.value === active)}`,
4495
4495
  "aria-labelledby": `${baseId}-tab-${tabs.findIndex((t) => t.value === active)}`,
4496
4496
  className: cn(
4497
- "bg-card rounded-xl border border-border shadow-sm text-card-foreground transition-all duration-200",
4497
+ "bg-card rounded-2xl md:rounded-3xl border border-border/60 shadow-sm text-card-foreground transition-all duration-200",
4498
+ "backdrop-blur-sm",
4498
4499
  sizeStyles6[size].content,
4499
4500
  orientation === "vertical" && "flex-1"
4500
4501
  ),
@@ -4835,6 +4836,7 @@ var Combobox = ({
4835
4836
  const itemDescription = getOptionDescription(item);
4836
4837
  const itemDisabled = getOptionDisabled(item);
4837
4838
  const isSelected = itemValue === value;
4839
+ const isEven = index % 2 === 0;
4838
4840
  return /* @__PURE__ */ jsxs22(
4839
4841
  "li",
4840
4842
  {
@@ -4851,11 +4853,12 @@ var Combobox = ({
4851
4853
  animationDelay: open ? `${Math.min(index * 15, 150)}ms` : "0ms"
4852
4854
  },
4853
4855
  className: cn(
4854
- "dropdown-item group flex cursor-pointer items-center gap-3 rounded-xl px-3 py-2.5 text-sm",
4856
+ "dropdown-item group flex cursor-pointer items-center gap-3 rounded-lg px-3 py-2.5 text-sm",
4855
4857
  "outline-none focus:outline-none focus-visible:outline-none",
4856
4858
  "transition-all duration-150",
4857
- !itemDisabled && "hover:bg-accent/80 hover:shadow-sm",
4858
- !itemDisabled && "focus:bg-accent focus:text-accent-foreground",
4859
+ isEven && "bg-muted/40",
4860
+ !itemDisabled && "hover:bg-accent/70 hover:shadow-sm",
4861
+ !itemDisabled && "focus:bg-accent/80 focus:text-accent-foreground",
4859
4862
  index === activeIndex && !itemDisabled && "bg-accent/60",
4860
4863
  isSelected && "bg-primary/10 text-primary font-medium",
4861
4864
  itemDisabled && "opacity-50 cursor-not-allowed"
@@ -4933,11 +4936,17 @@ var Combobox = ({
4933
4936
  /* @__PURE__ */ jsx25("div", { className: "relative", children: /* @__PURE__ */ jsx25("div", { className: "w-10 h-10 rounded-full border-2 border-primary/20 border-t-primary animate-spin" }) }),
4934
4937
  /* @__PURE__ */ jsx25("span", { className: "text-sm text-muted-foreground", children: loadingText })
4935
4938
  ] }) }) : filteredOptions.length > 0 ? groupedOptions ? (
4936
- // Render grouped options
4937
- Object.entries(groupedOptions).map(([group, items], groupIndex) => /* @__PURE__ */ jsxs22("div", { className: cn(groupIndex > 0 && "mt-2 pt-2 border-t border-border/30"), children: [
4938
- /* @__PURE__ */ jsx25("div", { className: "px-3 py-1.5 text-xs font-semibold text-muted-foreground uppercase tracking-wider", children: group }),
4939
- /* @__PURE__ */ jsx25("ul", { className: "space-y-0.5", children: items.map((item, index) => renderOptionItem(item, groupIndex * 100 + index)) })
4940
- ] }, group))
4939
+ // Render grouped options with global index tracking
4940
+ (() => {
4941
+ let globalIndex = 0;
4942
+ return Object.entries(groupedOptions).map(([group, items]) => /* @__PURE__ */ jsxs22("div", { className: cn(globalIndex > 0 && "mt-2 pt-2 border-t border-border/30"), children: [
4943
+ /* @__PURE__ */ jsx25("div", { className: "px-3 py-1.5 text-xs font-semibold text-muted-foreground uppercase tracking-wider", children: group }),
4944
+ /* @__PURE__ */ jsx25("ul", { className: "space-y-0.5", children: items.map((item) => {
4945
+ const index = globalIndex++;
4946
+ return renderOptionItem(item, index);
4947
+ }) })
4948
+ ] }, group));
4949
+ })()
4941
4950
  ) : (
4942
4951
  // Render flat options
4943
4952
  /* @__PURE__ */ jsx25("ul", { className: "space-y-0.5", children: filteredOptions.map((item, index) => renderOptionItem(item, index)) })
@@ -5264,17 +5273,23 @@ var Pagination = ({
5264
5273
  }
5265
5274
  )
5266
5275
  ] }),
5267
- pageSizeOptions && onPageSizeChange ? /* @__PURE__ */ jsx26(
5268
- Combobox,
5269
- {
5270
- options: pageSizeOptionsStrings,
5271
- value: pageSize?.toString() || "10",
5272
- onChange: handlePageSizeChange,
5273
- size: "sm",
5274
- className: "w-14",
5275
- disabled
5276
- }
5277
- ) : /* @__PURE__ */ jsx26("div", {})
5276
+ pageSizeOptions && onPageSizeChange ? /* @__PURE__ */ jsxs23("div", { className: "flex items-center gap-2", children: [
5277
+ /* @__PURE__ */ jsxs23("span", { className: "text-xs text-muted-foreground/70 hidden sm:inline", children: [
5278
+ t("itemsPerPage"),
5279
+ ":"
5280
+ ] }),
5281
+ /* @__PURE__ */ jsx26(
5282
+ Combobox,
5283
+ {
5284
+ options: pageSizeOptionsStrings,
5285
+ value: pageSize?.toString() || "10",
5286
+ onChange: handlePageSizeChange,
5287
+ size: "sm",
5288
+ className: "w-20 sm:w-24",
5289
+ disabled
5290
+ }
5291
+ )
5292
+ ] }) : /* @__PURE__ */ jsx26("div", {})
5278
5293
  ]
5279
5294
  }
5280
5295
  );
@@ -5500,7 +5515,12 @@ var ScrollArea = forwardRef7(
5500
5515
  "div",
5501
5516
  {
5502
5517
  ref,
5503
- className: cn("relative overflow-hidden", variantClasses[variant], outlined && "rounded-xl border border-border/60", className),
5518
+ className: cn(
5519
+ "relative overflow-hidden rounded-2xl md:rounded-3xl",
5520
+ variantClasses[variant],
5521
+ outlined && "border border-border/60",
5522
+ className
5523
+ ),
5504
5524
  ...props,
5505
5525
  children: /* @__PURE__ */ jsx28("div", { className: cn("h-full w-full overflow-y-auto scroll-area-viewport", contentClassName), children })
5506
5526
  }
@@ -5527,7 +5547,7 @@ function formatDateShort(date) {
5527
5547
  }
5528
5548
 
5529
5549
  // ../../components/ui/DatePicker.tsx
5530
- import { jsx as jsx29, jsxs as jsxs24 } from "react/jsx-runtime";
5550
+ import { Fragment as Fragment6, jsx as jsx29, jsxs as jsxs24 } from "react/jsx-runtime";
5531
5551
  var DatePicker = ({
5532
5552
  id,
5533
5553
  value,
@@ -5547,6 +5567,7 @@ var DatePicker = ({
5547
5567
  const locale = useLocale();
5548
5568
  const [isOpen, setIsOpen] = React23.useState(false);
5549
5569
  const [viewDate, setViewDate] = React23.useState(value || /* @__PURE__ */ new Date());
5570
+ const [viewMode, setViewMode] = React23.useState("calendar");
5550
5571
  const triggerRef = React23.useRef(null);
5551
5572
  const wheelContainerRef = React23.useRef(null);
5552
5573
  const wheelDeltaRef = React23.useRef(0);
@@ -5558,6 +5579,11 @@ var DatePicker = ({
5558
5579
  setViewDate(/* @__PURE__ */ new Date());
5559
5580
  }
5560
5581
  }, [value]);
5582
+ React23.useEffect(() => {
5583
+ if (!isOpen) {
5584
+ setViewMode("calendar");
5585
+ }
5586
+ }, [isOpen]);
5561
5587
  const handleDateSelect = (date) => {
5562
5588
  let selectedDate;
5563
5589
  if (value && (value.getHours() !== 0 || value.getMinutes() !== 0 || value.getSeconds() !== 0)) {
@@ -5666,13 +5692,64 @@ var DatePicker = ({
5666
5692
  }
5667
5693
  return days;
5668
5694
  };
5695
+ const renderMonthSelector = () => {
5696
+ const months = locale === "vi" ? ["Th1", "Th2", "Th3", "Th4", "Th5", "Th6", "Th7", "Th8", "Th9", "Th10", "Th11", "Th12"] : ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
5697
+ return /* @__PURE__ */ jsx29("div", { className: "grid grid-cols-3 gap-2 p-2", children: months.map((month, idx) => {
5698
+ const isSelected = viewDate.getMonth() === idx;
5699
+ return /* @__PURE__ */ jsx29(
5700
+ "button",
5701
+ {
5702
+ type: "button",
5703
+ onClick: () => {
5704
+ setViewDate(new Date(viewDate.getFullYear(), idx, 1));
5705
+ setViewMode("calendar");
5706
+ },
5707
+ className: cn(
5708
+ "py-2 px-3 rounded-lg text-sm font-medium transition-all duration-200",
5709
+ isSelected ? "bg-primary text-primary-foreground shadow-md" : "hover:bg-accent/80 text-foreground hover:scale-105"
5710
+ ),
5711
+ children: month
5712
+ },
5713
+ month
5714
+ );
5715
+ }) });
5716
+ };
5717
+ const renderYearSelector = () => {
5718
+ const currentYear = viewDate.getFullYear();
5719
+ const startYear = Math.floor(currentYear / 12) * 12;
5720
+ const years = Array.from({ length: 12 }, (_, i) => startYear + i);
5721
+ return /* @__PURE__ */ jsx29("div", { className: "grid grid-cols-3 gap-2 p-2", children: years.map((year) => {
5722
+ const isSelected = viewDate.getFullYear() === year;
5723
+ return /* @__PURE__ */ jsx29(
5724
+ "button",
5725
+ {
5726
+ type: "button",
5727
+ onClick: () => {
5728
+ setViewDate(new Date(year, viewDate.getMonth(), 1));
5729
+ setViewMode("month");
5730
+ },
5731
+ className: cn(
5732
+ "py-2 px-3 rounded-lg text-sm font-medium transition-all duration-200",
5733
+ isSelected ? "bg-primary text-primary-foreground shadow-md" : "hover:bg-accent/80 text-foreground hover:scale-105"
5734
+ ),
5735
+ children: year
5736
+ },
5737
+ year
5738
+ );
5739
+ }) });
5740
+ };
5741
+ const navigateYearRange = (direction) => {
5742
+ const currentYear = viewDate.getFullYear();
5743
+ const offset = direction === "next" ? 12 : -12;
5744
+ setViewDate(new Date(currentYear + offset, viewDate.getMonth(), 1));
5745
+ };
5669
5746
  const datePickerContent = /* @__PURE__ */ jsxs24("div", { ref: wheelContainerRef, "data-datepicker": true, className: "w-full", children: [
5670
5747
  /* @__PURE__ */ jsxs24("div", { className: "flex items-center justify-between mb-4 px-1", children: [
5671
5748
  /* @__PURE__ */ jsx29(
5672
5749
  "button",
5673
5750
  {
5674
5751
  type: "button",
5675
- onClick: () => navigateMonth("prev"),
5752
+ onClick: () => viewMode === "year" ? navigateYearRange("prev") : navigateMonth("prev"),
5676
5753
  className: cn(
5677
5754
  "p-2 rounded-xl transition-all duration-200",
5678
5755
  "bg-muted/50 hover:bg-muted text-muted-foreground hover:text-foreground",
@@ -5682,15 +5759,37 @@ var DatePicker = ({
5682
5759
  children: /* @__PURE__ */ jsx29(ChevronLeft2, { className: "h-4 w-4" })
5683
5760
  }
5684
5761
  ),
5685
- /* @__PURE__ */ jsxs24("div", { className: "flex flex-col items-center", children: [
5686
- /* @__PURE__ */ jsx29("span", { className: "text-sm font-bold text-foreground", children: viewDate.toLocaleDateString(locale === "vi" ? "vi-VN" : "en-US", { month: "long" }) }),
5687
- /* @__PURE__ */ jsx29("span", { className: "text-xs text-muted-foreground font-medium", children: viewDate.getFullYear() })
5762
+ /* @__PURE__ */ jsxs24("div", { className: "flex items-center gap-1", children: [
5763
+ /* @__PURE__ */ jsx29(
5764
+ "button",
5765
+ {
5766
+ type: "button",
5767
+ onClick: () => setViewMode(viewMode === "month" ? "calendar" : "month"),
5768
+ className: cn(
5769
+ "text-sm font-bold transition-all duration-200 px-2 py-1 rounded-lg",
5770
+ viewMode === "month" ? "bg-primary/15 text-primary" : "text-foreground hover:bg-accent/50"
5771
+ ),
5772
+ children: viewDate.toLocaleDateString(locale === "vi" ? "vi-VN" : "en-US", { month: "long" })
5773
+ }
5774
+ ),
5775
+ /* @__PURE__ */ jsx29(
5776
+ "button",
5777
+ {
5778
+ type: "button",
5779
+ onClick: () => setViewMode(viewMode === "year" ? "calendar" : "year"),
5780
+ className: cn(
5781
+ "text-sm font-bold transition-all duration-200 px-2 py-1 rounded-lg",
5782
+ viewMode === "year" ? "bg-primary/15 text-primary" : "text-foreground hover:bg-accent/50"
5783
+ ),
5784
+ children: viewDate.getFullYear()
5785
+ }
5786
+ )
5688
5787
  ] }),
5689
5788
  /* @__PURE__ */ jsx29(
5690
5789
  "button",
5691
5790
  {
5692
5791
  type: "button",
5693
- onClick: () => navigateMonth("next"),
5792
+ onClick: () => viewMode === "year" ? navigateYearRange("next") : navigateMonth("next"),
5694
5793
  className: cn(
5695
5794
  "p-2 rounded-xl transition-all duration-200",
5696
5795
  "bg-muted/50 hover:bg-muted text-muted-foreground hover:text-foreground",
@@ -5701,22 +5800,26 @@ var DatePicker = ({
5701
5800
  }
5702
5801
  )
5703
5802
  ] }),
5704
- /* @__PURE__ */ jsx29("div", { className: cn("grid grid-cols-7 gap-1 mb-2 px-0.5"), children: (weekdayLabels || (locale === "vi" ? ["CN", "T2", "T3", "T4", "T5", "T6", "T7"] : ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"])).map(
5705
- (day, idx) => /* @__PURE__ */ jsx29(
5706
- "div",
5707
- {
5708
- className: cn(
5709
- "text-center font-bold uppercase tracking-wide",
5710
- size === "sm" ? "text-[9px] py-1" : "text-[10px] py-1.5",
5711
- idx === 0 || idx === 6 ? "text-primary/70" : "text-muted-foreground/60"
5712
- ),
5713
- children: day
5714
- },
5715
- day
5716
- )
5717
- ) }),
5718
- /* @__PURE__ */ jsx29("div", { className: "grid grid-cols-7 gap-1 p-1 rounded-xl bg-muted/20", children: renderCalendar() }),
5719
- /* @__PURE__ */ jsxs24("div", { className: "flex items-center gap-2 mt-4 pt-3 border-t border-border/50", children: [
5803
+ viewMode === "calendar" && /* @__PURE__ */ jsxs24(Fragment6, { children: [
5804
+ /* @__PURE__ */ jsx29("div", { className: cn("grid grid-cols-7 gap-1 mb-2 px-0.5"), children: (weekdayLabels || (locale === "vi" ? ["CN", "T2", "T3", "T4", "T5", "T6", "T7"] : ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"])).map(
5805
+ (day, idx) => /* @__PURE__ */ jsx29(
5806
+ "div",
5807
+ {
5808
+ className: cn(
5809
+ "text-center font-bold uppercase tracking-wide",
5810
+ size === "sm" ? "text-[9px] py-1" : "text-[10px] py-1.5",
5811
+ idx === 0 || idx === 6 ? "text-primary/70" : "text-muted-foreground/60"
5812
+ ),
5813
+ children: day
5814
+ },
5815
+ day
5816
+ )
5817
+ ) }),
5818
+ /* @__PURE__ */ jsx29("div", { className: "grid grid-cols-7 gap-1 p-1 rounded-xl bg-muted/20", children: renderCalendar() })
5819
+ ] }),
5820
+ viewMode === "month" && renderMonthSelector(),
5821
+ viewMode === "year" && renderYearSelector(),
5822
+ /* @__PURE__ */ jsxs24("div", { className: cn("flex items-center gap-2 mt-4 pt-3 border-t border-border/50", size === "sm" && "mt-3 pt-2 gap-1.5"), children: [
5720
5823
  /* @__PURE__ */ jsxs24(
5721
5824
  "button",
5722
5825
  {
@@ -5726,14 +5829,15 @@ var DatePicker = ({
5726
5829
  handleDateSelect(today);
5727
5830
  },
5728
5831
  className: cn(
5729
- "flex-1 px-3 py-2 text-xs font-semibold rounded-xl",
5832
+ "flex-1 font-semibold rounded-xl",
5730
5833
  "bg-linear-to-r from-primary/10 to-primary/5 border border-primary/30",
5731
5834
  "text-primary hover:from-primary/20 hover:to-primary/10 hover:border-primary/50",
5732
- "transition-all duration-300 flex items-center justify-center gap-2",
5733
- "hover:scale-[1.02] active:scale-[0.98] hover:shadow-md hover:shadow-primary/10"
5835
+ "transition-all duration-300 flex items-center justify-center",
5836
+ "hover:scale-[1.02] active:scale-[0.98] hover:shadow-md hover:shadow-primary/10",
5837
+ size === "sm" ? "px-2 py-1 text-[10px] gap-1" : "px-3 py-2 text-xs gap-2"
5734
5838
  ),
5735
5839
  children: [
5736
- /* @__PURE__ */ jsx29(Sparkles2, { className: "w-3.5 h-3.5" }),
5840
+ /* @__PURE__ */ jsx29(Sparkles2, { className: size === "sm" ? "w-2.5 h-2.5" : "w-3.5 h-3.5" }),
5737
5841
  todayLabel || t("today")
5738
5842
  ]
5739
5843
  }
@@ -5748,14 +5852,15 @@ var DatePicker = ({
5748
5852
  setViewDate(/* @__PURE__ */ new Date());
5749
5853
  },
5750
5854
  className: cn(
5751
- "flex-1 px-3 py-2 text-xs font-semibold rounded-xl",
5855
+ "flex-1 font-semibold rounded-xl",
5752
5856
  "bg-linear-to-r from-destructive/10 to-destructive/5 border border-destructive/30",
5753
5857
  "text-destructive hover:from-destructive/20 hover:to-destructive/10 hover:border-destructive/50",
5754
- "transition-all duration-300 flex items-center justify-center gap-2",
5755
- "hover:scale-[1.02] active:scale-[0.98] hover:shadow-md hover:shadow-destructive/10"
5858
+ "transition-all duration-300 flex items-center justify-center",
5859
+ "hover:scale-[1.02] active:scale-[0.98] hover:shadow-md hover:shadow-destructive/10",
5860
+ size === "sm" ? "px-2 py-1 text-[10px] gap-1" : "px-3 py-2 text-xs gap-2"
5756
5861
  ),
5757
5862
  children: [
5758
- /* @__PURE__ */ jsx29(XIcon, { className: "w-3.5 h-3.5" }),
5863
+ /* @__PURE__ */ jsx29(XIcon, { className: size === "sm" ? "w-2.5 h-2.5" : "w-3.5 h-3.5" }),
5759
5864
  clearLabel || t("clear")
5760
5865
  ]
5761
5866
  }
@@ -5888,20 +5993,25 @@ var DatePicker = ({
5888
5993
  )
5889
5994
  ] });
5890
5995
  };
5891
- var DateRangePicker = ({ startDate, endDate, onChange, placeholder = "Select date range...", className, disablePastDates = false }) => {
5996
+ var DateRangePicker = ({ startDate, endDate, onChange, placeholder = "Select date range...", className, disablePastDates = false, size = "md" }) => {
5892
5997
  const locale = useLocale();
5998
+ const t = useTranslations("DatePicker");
5893
5999
  const [isOpen, setIsOpen] = React23.useState(false);
5894
6000
  const wheelContainerRef = React23.useRef(null);
5895
6001
  const wheelDeltaRef = React23.useRef(0);
6002
+ const normalizeToLocal = (date) => {
6003
+ if (!date) return null;
6004
+ return new Date(date.getFullYear(), date.getMonth(), date.getDate());
6005
+ };
5896
6006
  const [viewDate, setViewDate] = React23.useState(startDate || /* @__PURE__ */ new Date());
5897
- const [tempStart, setTempStart] = React23.useState(startDate || null);
5898
- const [tempEnd, setTempEnd] = React23.useState(endDate || null);
6007
+ const [tempStart, setTempStart] = React23.useState(normalizeToLocal(startDate));
6008
+ const [tempEnd, setTempEnd] = React23.useState(normalizeToLocal(endDate));
5899
6009
  const [hoveredDate, setHoveredDate] = React23.useState(null);
5900
6010
  React23.useEffect(() => {
5901
- setTempStart(startDate || null);
6011
+ setTempStart(normalizeToLocal(startDate));
5902
6012
  }, [startDate]);
5903
6013
  React23.useEffect(() => {
5904
- setTempEnd(endDate || null);
6014
+ setTempEnd(normalizeToLocal(endDate));
5905
6015
  }, [endDate]);
5906
6016
  const isSameDay2 = (a, b) => {
5907
6017
  if (!a || !b) return false;
@@ -6002,7 +6112,8 @@ var DateRangePicker = ({ startDate, endDate, onChange, placeholder = "Select dat
6002
6112
  onMouseEnter: () => !isPastDate && tempStart && !tempEnd && setHoveredDate(date),
6003
6113
  onMouseLeave: () => tempStart && !tempEnd && setHoveredDate(null),
6004
6114
  className: cn(
6005
- "w-8 h-8 text-sm transition-all duration-200 focus:outline-none relative font-medium",
6115
+ "transition-all duration-200 focus:outline-none relative font-medium",
6116
+ size === "sm" ? "w-6 h-6 text-xs" : "w-8 h-8 text-sm",
6006
6117
  // Disabled/past date state
6007
6118
  isPastDate && "opacity-30 cursor-not-allowed text-muted-foreground",
6008
6119
  // Default state
@@ -6028,24 +6139,25 @@ var DateRangePicker = ({ startDate, endDate, onChange, placeholder = "Select dat
6028
6139
  return nodes;
6029
6140
  };
6030
6141
  const panel = /* @__PURE__ */ jsxs24("div", { ref: wheelContainerRef, className: "w-full", children: [
6031
- /* @__PURE__ */ jsxs24("div", { className: "flex items-center justify-between mb-4 px-1", children: [
6142
+ /* @__PURE__ */ jsxs24("div", { className: cn("flex items-center justify-between px-1", size === "sm" ? "mb-2" : "mb-4"), children: [
6032
6143
  /* @__PURE__ */ jsx29(
6033
6144
  "button",
6034
6145
  {
6035
6146
  type: "button",
6036
6147
  onClick: () => navigateMonth("prev"),
6037
6148
  className: cn(
6038
- "p-2 rounded-xl transition-all duration-200",
6149
+ "rounded-xl transition-all duration-200",
6150
+ size === "sm" ? "p-1.5" : "p-2",
6039
6151
  "bg-muted/50 hover:bg-muted text-muted-foreground hover:text-foreground",
6040
6152
  "hover:scale-110 active:scale-95 hover:shadow-md",
6041
6153
  "focus:outline-none focus-visible:ring-2 focus-visible:ring-primary/50"
6042
6154
  ),
6043
- children: /* @__PURE__ */ jsx29(ChevronLeft2, { className: "h-4 w-4" })
6155
+ children: /* @__PURE__ */ jsx29(ChevronLeft2, { className: cn(size === "sm" ? "h-3 w-3" : "h-4 w-4") })
6044
6156
  }
6045
6157
  ),
6046
6158
  /* @__PURE__ */ jsxs24("div", { className: "flex flex-col items-center", children: [
6047
- /* @__PURE__ */ jsx29("span", { className: "text-sm font-bold text-foreground", children: viewDate.toLocaleDateString(locale === "vi" ? "vi-VN" : "en-US", { month: "long" }) }),
6048
- /* @__PURE__ */ jsx29("span", { className: "text-xs text-muted-foreground font-medium", children: viewDate.getFullYear() })
6159
+ /* @__PURE__ */ jsx29("span", { className: cn("font-bold text-foreground", size === "sm" ? "text-xs" : "text-sm"), children: viewDate.toLocaleDateString(locale === "vi" ? "vi-VN" : "en-US", { month: "long" }) }),
6160
+ /* @__PURE__ */ jsx29("span", { className: cn("text-muted-foreground font-medium", size === "sm" ? "text-[10px]" : "text-xs"), children: viewDate.getFullYear() })
6049
6161
  ] }),
6050
6162
  /* @__PURE__ */ jsx29(
6051
6163
  "button",
@@ -6053,20 +6165,22 @@ var DateRangePicker = ({ startDate, endDate, onChange, placeholder = "Select dat
6053
6165
  type: "button",
6054
6166
  onClick: () => navigateMonth("next"),
6055
6167
  className: cn(
6056
- "p-2 rounded-xl transition-all duration-200",
6168
+ "rounded-xl transition-all duration-200",
6169
+ size === "sm" ? "p-1.5" : "p-2",
6057
6170
  "bg-muted/50 hover:bg-muted text-muted-foreground hover:text-foreground",
6058
6171
  "hover:scale-110 active:scale-95 hover:shadow-md",
6059
6172
  "focus:outline-none focus-visible:ring-2 focus-visible:ring-primary/50"
6060
6173
  ),
6061
- children: /* @__PURE__ */ jsx29(ChevronRight3, { className: "h-4 w-4" })
6174
+ children: /* @__PURE__ */ jsx29(ChevronRight3, { className: cn(size === "sm" ? "h-3 w-3" : "h-4 w-4") })
6062
6175
  }
6063
6176
  )
6064
6177
  ] }),
6065
- /* @__PURE__ */ jsx29("div", { className: "grid grid-cols-7 gap-1 mb-2 px-0.5", children: (locale === "vi" ? ["CN", "T2", "T3", "T4", "T5", "T6", "T7"] : ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]).map((d, idx) => /* @__PURE__ */ jsx29(
6178
+ /* @__PURE__ */ jsx29("div", { className: cn("grid grid-cols-7 gap-1 px-0.5", size === "sm" ? "mb-1" : "mb-2"), children: (locale === "vi" ? ["CN", "T2", "T3", "T4", "T5", "T6", "T7"] : ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]).map((d, idx) => /* @__PURE__ */ jsx29(
6066
6179
  "div",
6067
6180
  {
6068
6181
  className: cn(
6069
- "text-[10px] text-center py-1.5 font-bold uppercase tracking-wide",
6182
+ "text-center font-bold uppercase tracking-wide",
6183
+ size === "sm" ? "text-[8px] py-1" : "text-[10px] py-1.5",
6070
6184
  idx === 0 || idx === 6 ? "text-primary/70" : "text-muted-foreground/60"
6071
6185
  ),
6072
6186
  children: d
@@ -6083,13 +6197,13 @@ var DateRangePicker = ({ startDate, endDate, onChange, placeholder = "Select dat
6083
6197
  open: isOpen,
6084
6198
  onOpenChange: setIsOpen,
6085
6199
  placement: "bottom-start",
6086
- contentWidth: 280,
6200
+ contentWidth: size === "sm" ? 240 : 280,
6087
6201
  contentClassName: cn(
6088
6202
  "p-0",
6089
6203
  "backdrop-blur-xl bg-popover/95 border-border/40 shadow-2xl",
6090
6204
  "rounded-2xl",
6091
6205
  "max-w-[calc(100vw-1rem)] max-h-[calc(100vh-6rem)] overflow-auto overscroll-contain",
6092
- "p-5",
6206
+ size === "sm" ? "p-3" : "p-5",
6093
6207
  "animate-in fade-in-0 zoom-in-95 slide-in-from-top-2 duration-300"
6094
6208
  ),
6095
6209
  trigger: /* @__PURE__ */ jsxs24(
@@ -6097,7 +6211,8 @@ var DateRangePicker = ({ startDate, endDate, onChange, placeholder = "Select dat
6097
6211
  {
6098
6212
  type: "button",
6099
6213
  className: cn(
6100
- "group flex w-full items-center justify-between rounded-full border bg-background/80 backdrop-blur-sm px-3 py-2.5 text-sm",
6214
+ "group flex w-full items-center justify-between rounded-full border bg-background/80 backdrop-blur-sm",
6215
+ size === "sm" ? "px-2 py-1.5 text-xs" : "px-3 py-2.5 text-sm",
6101
6216
  "border-border/60 hover:border-primary/40",
6102
6217
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50 focus-visible:ring-offset-2 focus-visible:ring-offset-background",
6103
6218
  "hover:bg-accent/10 hover:shadow-lg hover:shadow-primary/5 hover:-translate-y-0.5",
@@ -6106,15 +6221,16 @@ var DateRangePicker = ({ startDate, endDate, onChange, placeholder = "Select dat
6106
6221
  className
6107
6222
  ),
6108
6223
  children: [
6109
- /* @__PURE__ */ jsxs24("div", { className: "flex items-center gap-2.5", children: [
6224
+ /* @__PURE__ */ jsxs24("div", { className: cn("flex items-center", size === "sm" ? "gap-1.5" : "gap-2.5"), children: [
6110
6225
  /* @__PURE__ */ jsx29(
6111
6226
  "div",
6112
6227
  {
6113
6228
  className: cn(
6114
- "flex items-center justify-center rounded-lg p-1.5 transition-all duration-300",
6229
+ "flex items-center justify-center rounded-lg transition-all duration-300",
6230
+ size === "sm" ? "p-1" : "p-1.5",
6115
6231
  isOpen ? "bg-primary/15 text-primary" : "bg-muted/50 text-muted-foreground group-hover:bg-primary/10 group-hover:text-primary"
6116
6232
  ),
6117
- children: /* @__PURE__ */ jsx29(Calendar, { className: cn("h-4 w-4 transition-transform duration-300", isOpen && "scale-110") })
6233
+ children: /* @__PURE__ */ jsx29(Calendar, { className: cn("transition-transform duration-300", size === "sm" ? "h-3 w-3" : "h-4 w-4", isOpen && "scale-110") })
6118
6234
  }
6119
6235
  ),
6120
6236
  /* @__PURE__ */ jsx29(
@@ -6129,7 +6245,7 @@ var DateRangePicker = ({ startDate, endDate, onChange, placeholder = "Select dat
6129
6245
  }
6130
6246
  )
6131
6247
  ] }),
6132
- /* @__PURE__ */ jsx29("span", { className: cn("transition-all duration-300 text-muted-foreground group-hover:text-foreground", isOpen && "rotate-180 text-primary"), children: /* @__PURE__ */ jsx29("svg", { className: "h-4 w-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2.5, children: /* @__PURE__ */ jsx29("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19 9l-7 7-7-7" }) }) })
6248
+ /* @__PURE__ */ jsx29("span", { className: cn("transition-all duration-300 text-muted-foreground group-hover:text-foreground", isOpen && "rotate-180 text-primary"), children: /* @__PURE__ */ jsx29("svg", { className: cn(size === "sm" ? "h-3 w-3" : "h-4 w-4"), fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2.5, children: /* @__PURE__ */ jsx29("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19 9l-7 7-7-7" }) }) })
6133
6249
  ]
6134
6250
  }
6135
6251
  ),
@@ -6145,7 +6261,7 @@ import { Calendar as CalendarIcon2, X as X10 } from "lucide-react";
6145
6261
  // ../../components/ui/Calendar.tsx
6146
6262
  import * as React24 from "react";
6147
6263
  import { ChevronLeft as ChevronLeft3, ChevronRight as ChevronRight4 } from "lucide-react";
6148
- import { Fragment as Fragment7, jsx as jsx30, jsxs as jsxs25 } from "react/jsx-runtime";
6264
+ import { Fragment as Fragment8, jsx as jsx30, jsxs as jsxs25 } from "react/jsx-runtime";
6149
6265
  function startOfMonth(d) {
6150
6266
  return new Date(d.getFullYear(), d.getMonth(), 1);
6151
6267
  }
@@ -6410,7 +6526,7 @@ function Calendar2({
6410
6526
  }
6411
6527
  )
6412
6528
  ] }),
6413
- display === "week" ? /* @__PURE__ */ jsxs25(Fragment7, { children: [
6529
+ display === "week" ? /* @__PURE__ */ jsxs25(Fragment8, { children: [
6414
6530
  showWeekdays && /* @__PURE__ */ jsx30("div", { className: cn("grid grid-cols-7", sz.grid, "mb-1 text-center text-muted-foreground font-medium"), children: weekdays.map((w) => /* @__PURE__ */ jsx30("div", { className: cn(sz.head), children: w }, `w-${w}`)) }),
6415
6531
  /* @__PURE__ */ jsx30("div", { className: cn("grid grid-cols-7", sz.grid), children: weekDays.map((d, idx) => {
6416
6532
  const inMonth = true;
@@ -6448,7 +6564,7 @@ function Calendar2({
6448
6564
  // ../../components/ui/TimePicker.tsx
6449
6565
  import * as React25 from "react";
6450
6566
  import { Clock as Clock2, X as X9, Check as Check4, Sun, Moon, Sunset, Coffee } from "lucide-react";
6451
- import { Fragment as Fragment8, jsx as jsx31, jsxs as jsxs26 } from "react/jsx-runtime";
6567
+ import { Fragment as Fragment9, jsx as jsx31, jsxs as jsxs26 } from "react/jsx-runtime";
6452
6568
  var pad = (n) => n.toString().padStart(2, "0");
6453
6569
  var WHEEL_ITEM_HEIGHT = {
6454
6570
  sm: 30,
@@ -7024,7 +7140,7 @@ function TimePicker({
7024
7140
  }
7025
7141
  );
7026
7142
  })(),
7027
- includeSeconds && /* @__PURE__ */ jsxs26(Fragment8, { children: [
7143
+ includeSeconds && /* @__PURE__ */ jsxs26(Fragment9, { children: [
7028
7144
  /* @__PURE__ */ jsx31("div", { className: "flex flex-col items-center justify-center pt-8", children: /* @__PURE__ */ jsxs26("div", { className: "flex flex-col gap-2", children: [
7029
7145
  /* @__PURE__ */ jsx31("div", { className: "w-1.5 h-1.5 rounded-full bg-primary/60" }),
7030
7146
  /* @__PURE__ */ jsx31("div", { className: "w-1.5 h-1.5 rounded-full bg-primary/60" })
@@ -7421,7 +7537,7 @@ var DateTimePicker = ({
7421
7537
  import * as React27 from "react";
7422
7538
  import { useId as useId5 } from "react";
7423
7539
  import { ChevronDown as ChevronDown2, Search as Search4, Check as Check5, SearchX as SearchX2, Loader2 as Loader24, X as X11, Sparkles as Sparkles3 } from "lucide-react";
7424
- import { Fragment as Fragment10, jsx as jsx33, jsxs as jsxs28 } from "react/jsx-runtime";
7540
+ import { Fragment as Fragment11, jsx as jsx33, jsxs as jsxs28 } from "react/jsx-runtime";
7425
7541
  var MultiCombobox = ({
7426
7542
  id,
7427
7543
  options,
@@ -7554,6 +7670,7 @@ var MultiCombobox = ({
7554
7670
  const isDisabled = item.disabled || disabledOptions.includes(item.value);
7555
7671
  const optionIcon = item.icon;
7556
7672
  const optionDesc = item.description;
7673
+ const isEven = index % 2 === 0;
7557
7674
  if (renderOption) {
7558
7675
  return /* @__PURE__ */ jsx33(
7559
7676
  "li",
@@ -7568,7 +7685,7 @@ var MultiCombobox = ({
7568
7685
  inputRef.current?.focus();
7569
7686
  },
7570
7687
  style: { animationDelay: open ? `${Math.min(index * 20, 200)}ms` : "0ms" },
7571
- className: cn("dropdown-item", isDisabled && "opacity-50 cursor-not-allowed pointer-events-none"),
7688
+ className: cn("dropdown-item", isEven && "bg-muted/25", isDisabled && "opacity-50 cursor-not-allowed pointer-events-none"),
7572
7689
  children: renderOption(item, isSelected)
7573
7690
  },
7574
7691
  item.value
@@ -7588,11 +7705,12 @@ var MultiCombobox = ({
7588
7705
  },
7589
7706
  style: { animationDelay: open ? `${Math.min(index * 20, 200)}ms` : "0ms" },
7590
7707
  className: cn(
7591
- "dropdown-item flex cursor-pointer items-center gap-3 rounded-xl transition-all duration-200",
7708
+ "dropdown-item flex cursor-pointer items-center gap-3 rounded-lg transition-all duration-200",
7592
7709
  sizeStyles8[size].item,
7593
- "hover:bg-linear-to-r hover:from-primary/5 hover:to-transparent",
7594
- index === activeIndex && "bg-primary/5",
7595
- isSelected && "bg-primary/5",
7710
+ isEven && "bg-muted/25",
7711
+ "hover:bg-accent/70 hover:shadow-sm",
7712
+ index === activeIndex && "bg-accent/60",
7713
+ isSelected && "bg-primary/10 text-primary font-medium",
7596
7714
  isDisabled && "opacity-40 cursor-not-allowed pointer-events-none"
7597
7715
  ),
7598
7716
  children: [
@@ -7729,7 +7847,7 @@ var MultiCombobox = ({
7729
7847
  !!error && "border-destructive focus-visible:ring-destructive/30"
7730
7848
  ),
7731
7849
  children: [
7732
- /* @__PURE__ */ jsx33("div", { className: "flex items-center gap-1.5 flex-wrap min-h-6 flex-1", children: value.length > 0 ? showTags ? /* @__PURE__ */ jsxs28(Fragment10, { children: [
7850
+ /* @__PURE__ */ jsx33("div", { className: "flex items-center gap-1.5 flex-wrap min-h-6 flex-1", children: value.length > 0 ? showTags ? /* @__PURE__ */ jsxs28(Fragment11, { children: [
7733
7851
  visibleTags.map((option) => {
7734
7852
  if (renderTag) {
7735
7853
  return /* @__PURE__ */ jsx33(React27.Fragment, { children: renderTag(option, () => handleRemove(option.value)) }, option.value);
@@ -8279,7 +8397,7 @@ Slider.displayName = "Slider";
8279
8397
  // ../../components/ui/OverlayControls.tsx
8280
8398
  import { Dot, Maximize2, Pause, Play, RotateCcw, RotateCw, Volume2, VolumeX } from "lucide-react";
8281
8399
  import React30 from "react";
8282
- import { Fragment as Fragment11, jsx as jsx36, jsxs as jsxs31 } from "react/jsx-runtime";
8400
+ import { Fragment as Fragment12, jsx as jsx36, jsxs as jsxs31 } from "react/jsx-runtime";
8283
8401
  function OverlayControls({
8284
8402
  mode,
8285
8403
  value,
@@ -8502,7 +8620,7 @@ function OverlayControls({
8502
8620
  const handleSliderMouseLeave = () => {
8503
8621
  setPreviewData(null);
8504
8622
  };
8505
- return /* @__PURE__ */ jsxs31(Fragment11, { children: [
8623
+ return /* @__PURE__ */ jsxs31(Fragment12, { children: [
8506
8624
  keyboardFeedback && /* @__PURE__ */ jsx36(
8507
8625
  "div",
8508
8626
  {
@@ -8712,7 +8830,7 @@ function OverlayControls({
8712
8830
  // ../../components/ui/CategoryTreeSelect.tsx
8713
8831
  import { useState as useState26, useEffect as useEffect16 } from "react";
8714
8832
  import { ChevronRight as ChevronRight5, ChevronDown as ChevronDown3, Check as Check6, FolderTree, Layers } from "lucide-react";
8715
- import { Fragment as Fragment12, jsx as jsx37, jsxs as jsxs32 } from "react/jsx-runtime";
8833
+ import { Fragment as Fragment13, jsx as jsx37, jsxs as jsxs32 } from "react/jsx-runtime";
8716
8834
  var defaultLabels = {
8717
8835
  emptyText: "No categories",
8718
8836
  selectedText: (count) => `${count} selected`
@@ -8795,26 +8913,23 @@ function CategoryTreeSelect(props) {
8795
8913
  const hasChildren = children.length > 0;
8796
8914
  const isExpanded = expandedNodes.has(category.id);
8797
8915
  const isSelected = valueArray.includes(category.id);
8916
+ const isParent = level === 0;
8798
8917
  return /* @__PURE__ */ jsxs32("div", { className: "animate-in fade-in-50 duration-200", style: { animationDelay: `${level * 30}ms` }, children: [
8799
8918
  /* @__PURE__ */ jsxs32(
8800
8919
  "div",
8801
8920
  {
8802
8921
  className: cn(
8803
- "relative flex items-center gap-2.5 px-3 py-2.5 rounded-xl transition-all duration-200",
8922
+ "relative flex items-center gap-2.5 px-3 py-2.5 transition-all duration-200",
8923
+ "border-l-4 border-l-transparent",
8924
+ // Parent level styling
8925
+ isParent && "bg-muted/25 font-medium",
8804
8926
  !viewOnly && "cursor-pointer",
8805
8927
  !viewOnly && !isSelected && "hover:bg-accent/60 hover:shadow-sm",
8806
8928
  // Selected state
8807
- !viewOnly && isSelected && "bg-linear-to-r from-primary/15 via-primary/10 to-primary/5 shadow-sm"
8929
+ !viewOnly && isSelected && "bg-accent/30 border-l-primary shadow-sm"
8808
8930
  ),
8809
8931
  style: { paddingLeft: `${level * 1.25 + 0.75}rem` },
8810
8932
  children: [
8811
- !viewOnly && isSelected && /* @__PURE__ */ jsx37(
8812
- "span",
8813
- {
8814
- "aria-hidden": true,
8815
- className: "absolute left-0 top-2 bottom-2 w-1 rounded-full bg-linear-to-b from-primary to-primary/70 shadow-sm shadow-primary/30"
8816
- }
8817
- ),
8818
8933
  hasChildren ? /* @__PURE__ */ jsx37(
8819
8934
  "button",
8820
8935
  {
@@ -8954,7 +9069,7 @@ function CategoryTreeSelect(props) {
8954
9069
  ]
8955
9070
  }
8956
9071
  ),
8957
- isOpen && !disabled && /* @__PURE__ */ jsxs32(Fragment12, { children: [
9072
+ isOpen && !disabled && /* @__PURE__ */ jsxs32(Fragment13, { children: [
8958
9073
  /* @__PURE__ */ jsx37("div", { className: "fixed inset-0 z-10", onClick: () => setIsOpen(false) }),
8959
9074
  /* @__PURE__ */ jsx37(
8960
9075
  "div",
@@ -9115,7 +9230,7 @@ function ImageUpload({
9115
9230
  "div",
9116
9231
  {
9117
9232
  className: cn(
9118
- "relative border-2 border-dashed rounded-xl p-8 text-center transition-all duration-200",
9233
+ "relative border-2 border-dashed rounded-2xl md:rounded-3xl p-8 text-center transition-all duration-200",
9119
9234
  isDragging && !disabled ? "border-primary bg-primary/5 scale-[1.02]" : "border-border hover:border-primary/50",
9120
9235
  disabled && "opacity-50 cursor-not-allowed",
9121
9236
  uploading && "pointer-events-none"
@@ -9124,7 +9239,7 @@ function ImageUpload({
9124
9239
  onDragLeave: handleDragLeave,
9125
9240
  onDrop: handleDrop,
9126
9241
  children: [
9127
- uploading && /* @__PURE__ */ jsx38("div", { className: "absolute inset-0 bg-background/80 flex items-center justify-center rounded-xl", children: /* @__PURE__ */ jsxs33("div", { className: "flex items-center gap-3", children: [
9242
+ uploading && /* @__PURE__ */ jsx38("div", { className: "absolute inset-0 bg-background/80 flex items-center justify-center rounded-2xl md:rounded-3xl", children: /* @__PURE__ */ jsxs33("div", { className: "flex items-center gap-3", children: [
9128
9243
  /* @__PURE__ */ jsx38(Loader25, { className: "w-6 h-6 animate-spin text-primary" }),
9129
9244
  /* @__PURE__ */ jsx38("span", { className: "text-sm font-medium", children: "Uploading..." })
9130
9245
  ] }) }),
@@ -9153,7 +9268,7 @@ function ImageUpload({
9153
9268
  ),
9154
9269
  showPreview && uploadedImages.length > 0 && /* @__PURE__ */ jsxs33("div", { className: "space-y-3", children: [
9155
9270
  /* @__PURE__ */ jsx38("h4", { className: "text-sm font-medium", children: "Uploaded Images" }),
9156
- /* @__PURE__ */ jsx38("div", { className: "grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-4", children: uploadedImages.map((image) => /* @__PURE__ */ jsxs33("div", { className: "relative group bg-card border border-border rounded-xl p-3", children: [
9271
+ /* @__PURE__ */ jsx38("div", { className: "grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-4", children: uploadedImages.map((image) => /* @__PURE__ */ jsxs33("div", { className: "relative group bg-card border border-border rounded-2xl md:rounded-3xl p-3", children: [
9157
9272
  /* @__PURE__ */ jsx38(
9158
9273
  Button_default,
9159
9274
  {
@@ -9198,7 +9313,7 @@ function ImageUpload({
9198
9313
  // ../../components/ui/Carousel.tsx
9199
9314
  import * as React32 from "react";
9200
9315
  import { ChevronLeft as ChevronLeft4, ChevronRight as ChevronRight6 } from "lucide-react";
9201
- import { Fragment as Fragment13, jsx as jsx39, jsxs as jsxs34 } from "react/jsx-runtime";
9316
+ import { Fragment as Fragment14, jsx as jsx39, jsxs as jsxs34 } from "react/jsx-runtime";
9202
9317
  function Carousel({
9203
9318
  children,
9204
9319
  autoScroll = true,
@@ -9360,7 +9475,10 @@ function Carousel({
9360
9475
  "div",
9361
9476
  {
9362
9477
  ref: carouselRef,
9363
- className: cn("relative w-full overflow-hidden focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2 rounded-2xl", className),
9478
+ className: cn(
9479
+ "relative w-full overflow-hidden focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2 rounded-2xl md:rounded-3xl",
9480
+ className
9481
+ ),
9364
9482
  onMouseEnter: () => setIsPaused(true),
9365
9483
  onMouseLeave: () => setIsPaused(false),
9366
9484
  role: "region",
@@ -9407,7 +9525,7 @@ function Carousel({
9407
9525
  ))
9408
9526
  }
9409
9527
  ),
9410
- showArrows && totalSlides > slidesToShow && /* @__PURE__ */ jsxs34(Fragment13, { children: [
9528
+ showArrows && totalSlides > slidesToShow && /* @__PURE__ */ jsxs34(Fragment14, { children: [
9411
9529
  /* @__PURE__ */ jsx39(
9412
9530
  Button_default,
9413
9531
  {
@@ -9769,7 +9887,7 @@ function FallingIcons({
9769
9887
  // ../../components/ui/List.tsx
9770
9888
  import * as React34 from "react";
9771
9889
  import { ChevronRight as ChevronRight7 } from "lucide-react";
9772
- import { Fragment as Fragment14, jsx as jsx41, jsxs as jsxs36 } from "react/jsx-runtime";
9890
+ import { Fragment as Fragment15, jsx as jsx41, jsxs as jsxs36 } from "react/jsx-runtime";
9773
9891
  var SIZE_STYLES2 = {
9774
9892
  xs: { label: "text-xs", desc: "text-[11px]", icon: "h-3.5 w-3.5", avatar: "h-6 w-6" },
9775
9893
  sm: { label: "text-[13px]", desc: "text-[12px]", icon: "h-4 w-4", avatar: "h-8 w-8" },
@@ -9817,12 +9935,12 @@ var ListRoot = React34.forwardRef(
9817
9935
  const hasChildren = childCount > 0;
9818
9936
  const variantClasses2 = {
9819
9937
  plain: "",
9820
- outlined: "rounded-xl md:rounded-2xl bg-card text-card-foreground border border-border shadow-sm",
9821
- soft: "rounded-xl bg-muted/40 border border-border/60",
9822
- bordered: "border border-border rounded-xl",
9823
- card: "rounded-xl bg-card shadow-md border border-border",
9938
+ outlined: "rounded-2xl md:rounded-3xl bg-card text-card-foreground border border-border shadow-sm",
9939
+ soft: "rounded-2xl md:rounded-3xl bg-muted/40 border border-border/60",
9940
+ bordered: "border border-border rounded-2xl md:rounded-3xl",
9941
+ card: "rounded-2xl md:rounded-3xl bg-card shadow-md border border-border",
9824
9942
  flush: "",
9825
- striped: "rounded-xl border border-border overflow-hidden"
9943
+ striped: "rounded-2xl md:rounded-3xl border border-border overflow-hidden"
9826
9944
  };
9827
9945
  if (loading2) {
9828
9946
  return /* @__PURE__ */ jsx41(
@@ -9921,7 +10039,7 @@ var ListItem = React34.forwardRef(
9921
10039
  }
9922
10040
  }
9923
10041
  } : {};
9924
- const inner = /* @__PURE__ */ jsxs36(Fragment14, { children: [
10042
+ const inner = /* @__PURE__ */ jsxs36(Fragment15, { children: [
9925
10043
  /* @__PURE__ */ jsxs36("div", { className: cn("flex items-center gap-3", contentClassName, "group/item relative"), ...headerProps, children: [
9926
10044
  avatar && /* @__PURE__ */ jsx41("div", { className: cn("shrink-0", sz.avatar), children: typeof avatar === "string" ? /* @__PURE__ */ jsx41("img", { src: avatar, alt: "", className: cn("rounded-full object-cover", sz.avatar) }) : avatar }),
9927
10045
  Left && !avatar && /* @__PURE__ */ jsx41("span", { className: cn("text-muted-foreground shrink-0", sz.icon), children: /* @__PURE__ */ jsx41(Left, { className: cn(sz.icon) }) }),
@@ -9966,7 +10084,7 @@ var List_default = List;
9966
10084
  // ../../components/ui/Watermark.tsx
9967
10085
  import * as React35 from "react";
9968
10086
  import { createPortal as createPortal5 } from "react-dom";
9969
- import { Fragment as Fragment15, jsx as jsx42, jsxs as jsxs37 } from "react/jsx-runtime";
10087
+ import { Fragment as Fragment16, jsx as jsx42, jsxs as jsxs37 } from "react/jsx-runtime";
9970
10088
  var PRESETS2 = {
9971
10089
  confidential: { text: "CONFIDENTIAL", color: "rgba(220, 38, 38, 0.15)", rotate: -22, fontSize: 16, fontWeight: "bold" },
9972
10090
  draft: { text: "DRAFT", color: "rgba(59, 130, 246, 0.15)", rotate: -22, fontSize: 18, fontWeight: "bold" },
@@ -10245,7 +10363,7 @@ var Watermark = ({
10245
10363
  }
10246
10364
  );
10247
10365
  if (fullPage) {
10248
- return /* @__PURE__ */ jsxs37(Fragment15, { children: [
10366
+ return /* @__PURE__ */ jsxs37(Fragment16, { children: [
10249
10367
  children,
10250
10368
  typeof window !== "undefined" ? createPortal5(overlay, document.body) : null
10251
10369
  ] });
@@ -11057,7 +11175,7 @@ function ColorPicker({
11057
11175
 
11058
11176
  // ../../components/ui/Grid.tsx
11059
11177
  import React38, { useId as useId7 } from "react";
11060
- import { Fragment as Fragment16, jsx as jsx45, jsxs as jsxs40 } from "react/jsx-runtime";
11178
+ import { Fragment as Fragment17, jsx as jsx45, jsxs as jsxs40 } from "react/jsx-runtime";
11061
11179
  var BP_MIN = {
11062
11180
  sm: 640,
11063
11181
  md: 768,
@@ -11085,14 +11203,14 @@ function joinAreas(areas) {
11085
11203
  }
11086
11204
  function getVariantClasses(variant = "default", outlined) {
11087
11205
  if (outlined) {
11088
- return "rounded-xl md:rounded-2xl bg-card text-card-foreground border border-border shadow-sm";
11206
+ return "rounded-2xl md:rounded-3xl bg-card text-card-foreground border border-border shadow-sm";
11089
11207
  }
11090
11208
  const variants = {
11091
11209
  default: "",
11092
- bordered: "border border-border rounded-xl",
11093
- card: "rounded-xl md:rounded-2xl bg-card text-card-foreground border border-border shadow-sm",
11094
- flat: "bg-muted/30 rounded-xl",
11095
- glass: "bg-background/80 backdrop-blur-sm border border-border/50 rounded-xl shadow-lg"
11210
+ bordered: "border border-border rounded-2xl md:rounded-3xl",
11211
+ card: "rounded-2xl md:rounded-3xl bg-card text-card-foreground border border-border shadow-sm",
11212
+ flat: "bg-muted/30 rounded-2xl md:rounded-3xl",
11213
+ glass: "bg-background/80 backdrop-blur-sm border border-border/50 rounded-2xl md:rounded-3xl shadow-lg"
11096
11214
  };
11097
11215
  return variants[variant] || "";
11098
11216
  }
@@ -11214,7 +11332,7 @@ var GridItem = React38.forwardRef(
11214
11332
  st.opacity = 0;
11215
11333
  st.animation = `uvGridItemFadeIn 0.5s ease-out forwards`;
11216
11334
  }
11217
- return /* @__PURE__ */ jsxs40(Fragment16, { children: [
11335
+ return /* @__PURE__ */ jsxs40(Fragment17, { children: [
11218
11336
  animationDelay != null && /* @__PURE__ */ jsx45(
11219
11337
  "style",
11220
11338
  {
@@ -11227,7 +11345,11 @@ var GridItem = React38.forwardRef(
11227
11345
  "div",
11228
11346
  {
11229
11347
  ref,
11230
- className: cn(hoverable && "transition-all duration-200 hover:scale-[1.02] hover:shadow-md cursor-pointer", className),
11348
+ className: cn(
11349
+ "rounded-2xl md:rounded-3xl",
11350
+ hoverable && "transition-all duration-200 hover:scale-[1.02] hover:shadow-md cursor-pointer",
11351
+ className
11352
+ ),
11231
11353
  style: st,
11232
11354
  ...rest
11233
11355
  }
@@ -11245,7 +11367,7 @@ import { useMemo as useMemo7, useState as useState34, useRef as useRef14 } from
11245
11367
  // ../../components/ui/ChartTooltip.tsx
11246
11368
  import { useEffect as useEffect20, useState as useState33 } from "react";
11247
11369
  import { createPortal as createPortal6 } from "react-dom";
11248
- import { Fragment as Fragment17, jsx as jsx46, jsxs as jsxs41 } from "react/jsx-runtime";
11370
+ import { Fragment as Fragment18, jsx as jsx46, jsxs as jsxs41 } from "react/jsx-runtime";
11249
11371
  function ChartTooltip({ x, y, visible, label, value, color, secondaryLabel, secondaryValue, items, containerRef }) {
11250
11372
  const [isMounted, setIsMounted] = useState33(false);
11251
11373
  const [position, setPosition] = useState33(null);
@@ -11292,7 +11414,7 @@ function ChartTooltip({ x, y, visible, label, value, color, secondaryLabel, seco
11292
11414
  ":"
11293
11415
  ] }),
11294
11416
  /* @__PURE__ */ jsx46("span", { className: "font-semibold ml-auto", children: item.value })
11295
- ] }, i)) }) : /* @__PURE__ */ jsxs41(Fragment17, { children: [
11417
+ ] }, i)) }) : /* @__PURE__ */ jsxs41(Fragment18, { children: [
11296
11418
  /* @__PURE__ */ jsxs41("div", { className: "flex items-center gap-2", children: [
11297
11419
  color && /* @__PURE__ */ jsx46("div", { className: "w-2 h-2 rounded-full shrink-0", style: { backgroundColor: color } }),
11298
11420
  /* @__PURE__ */ jsx46("span", { className: "font-semibold", children: value })
@@ -11319,7 +11441,7 @@ function ChartTooltip({ x, y, visible, label, value, color, secondaryLabel, seco
11319
11441
  }
11320
11442
 
11321
11443
  // ../../components/ui/LineChart.tsx
11322
- import { Fragment as Fragment18, jsx as jsx47, jsxs as jsxs42 } from "react/jsx-runtime";
11444
+ import { Fragment as Fragment19, jsx as jsx47, jsxs as jsxs42 } from "react/jsx-runtime";
11323
11445
  function LineChart({
11324
11446
  data,
11325
11447
  width = 400,
@@ -11384,7 +11506,7 @@ function LineChart({
11384
11506
  }
11385
11507
  return lines;
11386
11508
  }, [minValue, maxValue, chartHeight, padding.top]);
11387
- return /* @__PURE__ */ jsxs42(Fragment18, { children: [
11509
+ return /* @__PURE__ */ jsxs42(Fragment19, { children: [
11388
11510
  /* @__PURE__ */ jsxs42("svg", { ref: svgRef, width, height, className: `overflow-visible ${className}`, style: { fontFamily: "inherit" }, children: [
11389
11511
  showGrid && /* @__PURE__ */ jsx47("g", { className: "text-muted-foreground/20", children: gridLines.map((line, i) => /* @__PURE__ */ jsxs42("g", { children: [
11390
11512
  /* @__PURE__ */ jsx47("line", { x1: padding.left, y1: line.y, x2: width - padding.right, y2: line.y, stroke: "currentColor", strokeDasharray: "4 4" }),
@@ -11493,7 +11615,7 @@ function LineChart({
11493
11615
 
11494
11616
  // ../../components/ui/BarChart.tsx
11495
11617
  import { useMemo as useMemo8, useState as useState35, useRef as useRef15 } from "react";
11496
- import { Fragment as Fragment19, jsx as jsx48, jsxs as jsxs43 } from "react/jsx-runtime";
11618
+ import { Fragment as Fragment20, jsx as jsx48, jsxs as jsxs43 } from "react/jsx-runtime";
11497
11619
  function BarChart({
11498
11620
  data,
11499
11621
  width = 400,
@@ -11562,12 +11684,12 @@ function BarChart({
11562
11684
  }
11563
11685
  return { maxValue: max, bars: barsData, gridLines: lines };
11564
11686
  }, [data, chartWidth, chartHeight, horizontal, barGap, padding, width, height]);
11565
- return /* @__PURE__ */ jsxs43(Fragment19, { children: [
11687
+ return /* @__PURE__ */ jsxs43(Fragment20, { children: [
11566
11688
  /* @__PURE__ */ jsxs43("svg", { ref: svgRef, width, height, className: `overflow-visible ${className}`, style: { fontFamily: "inherit" }, children: [
11567
- showGrid && /* @__PURE__ */ jsx48("g", { className: "text-muted-foreground/20", children: gridLines.map((line, i) => /* @__PURE__ */ jsx48("g", { children: horizontal ? /* @__PURE__ */ jsxs43(Fragment19, { children: [
11689
+ showGrid && /* @__PURE__ */ jsx48("g", { className: "text-muted-foreground/20", children: gridLines.map((line, i) => /* @__PURE__ */ jsx48("g", { children: horizontal ? /* @__PURE__ */ jsxs43(Fragment20, { children: [
11568
11690
  /* @__PURE__ */ jsx48("line", { x1: line.x, y1: line.y1, x2: line.x, y2: line.y2, stroke: "currentColor", strokeDasharray: "4 4" }),
11569
11691
  /* @__PURE__ */ jsx48("text", { x: line.x, y: height - 8, textAnchor: "middle", fontSize: "10", className: "text-muted-foreground", fill: "currentColor", children: line.value.toFixed(0) })
11570
- ] }) : /* @__PURE__ */ jsxs43(Fragment19, { children: [
11692
+ ] }) : /* @__PURE__ */ jsxs43(Fragment20, { children: [
11571
11693
  /* @__PURE__ */ jsx48("line", { x1: line.x1, y1: line.y, x2: line.x2, y2: line.y, stroke: "currentColor", strokeDasharray: "4 4" }),
11572
11694
  /* @__PURE__ */ jsx48("text", { x: padding.left - 8, y: line.y + 4, textAnchor: "end", fontSize: "10", className: "text-muted-foreground", fill: "currentColor", children: line.value.toFixed(0) })
11573
11695
  ] }) }, i)) }),
@@ -12605,16 +12727,16 @@ function GaugeChart({
12605
12727
 
12606
12728
  // ../../components/ui/ClientOnly.tsx
12607
12729
  import { useEffect as useEffect21, useState as useState39 } from "react";
12608
- import { Fragment as Fragment20, jsx as jsx54 } from "react/jsx-runtime";
12730
+ import { Fragment as Fragment21, jsx as jsx54 } from "react/jsx-runtime";
12609
12731
  function ClientOnly({ children, fallback = null }) {
12610
12732
  const [hasMounted, setHasMounted] = useState39(false);
12611
12733
  useEffect21(() => {
12612
12734
  setHasMounted(true);
12613
12735
  }, []);
12614
12736
  if (!hasMounted) {
12615
- return /* @__PURE__ */ jsx54(Fragment20, { children: fallback });
12737
+ return /* @__PURE__ */ jsx54(Fragment21, { children: fallback });
12616
12738
  }
12617
- return /* @__PURE__ */ jsx54(Fragment20, { children });
12739
+ return /* @__PURE__ */ jsx54(Fragment21, { children });
12618
12740
  }
12619
12741
 
12620
12742
  // ../../components/ui/Loading.tsx
@@ -12760,7 +12882,7 @@ TableCaption.displayName = "TableCaption";
12760
12882
  // ../../components/ui/DataTable.tsx
12761
12883
  import { Filter as FilterIcon } from "lucide-react";
12762
12884
  import React48 from "react";
12763
- import { Fragment as Fragment21, jsx as jsx57, jsxs as jsxs51 } from "react/jsx-runtime";
12885
+ import { Fragment as Fragment22, jsx as jsx57, jsxs as jsxs51 } from "react/jsx-runtime";
12764
12886
  function useDebounced(value, delay = 300) {
12765
12887
  const [debounced, setDebounced] = React48.useState(value);
12766
12888
  React48.useEffect(() => {
@@ -13018,10 +13140,10 @@ function DataTable({
13018
13140
  isCenterAlign && "justify-center",
13019
13141
  !isRightAlign && !isCenterAlign && "justify-between"
13020
13142
  ),
13021
- children: isRightAlign ? /* @__PURE__ */ jsxs51(Fragment21, { children: [
13143
+ children: isRightAlign ? /* @__PURE__ */ jsxs51(Fragment22, { children: [
13022
13144
  filterContent,
13023
13145
  titleContent
13024
- ] }) : /* @__PURE__ */ jsxs51(Fragment21, { children: [
13146
+ ] }) : /* @__PURE__ */ jsxs51(Fragment22, { children: [
13025
13147
  titleContent,
13026
13148
  filterContent
13027
13149
  ] })
@@ -13203,7 +13325,17 @@ function DataTable({
13203
13325
  totalItems
13204
13326
  ] }),
13205
13327
  /* @__PURE__ */ jsxs51("div", { className: "flex items-center gap-0.5", children: [
13206
- /* @__PURE__ */ jsx57(Button_default, { variant: "ghost", size: "sm", className: "h-7 w-7 p-0", onClick: () => setCurPage(Math.max(1, curPage - 1)), disabled: curPage === 1, children: /* @__PURE__ */ jsx57("svg", { className: "h-4 w-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx57("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 19l-7-7 7-7" }) }) }),
13328
+ /* @__PURE__ */ jsx57(
13329
+ Button_default,
13330
+ {
13331
+ variant: "ghost",
13332
+ size: "sm",
13333
+ className: "h-7 w-7 p-0 rounded-full",
13334
+ onClick: () => setCurPage(Math.max(1, curPage - 1)),
13335
+ disabled: curPage === 1,
13336
+ children: /* @__PURE__ */ jsx57("svg", { className: "h-4 w-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx57("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 19l-7-7 7-7" }) })
13337
+ }
13338
+ ),
13207
13339
  (() => {
13208
13340
  const totalPages = Math.ceil(totalItems / curPageSize);
13209
13341
  const pages = [];
@@ -13224,7 +13356,7 @@ function DataTable({
13224
13356
  {
13225
13357
  onClick: () => setCurPage(p),
13226
13358
  className: cn(
13227
- "h-7 min-w-7 px-1.5 rounded-lg text-xs font-medium transition-colors",
13359
+ "h-7 min-w-7 px-2 rounded-full text-xs font-medium transition-colors",
13228
13360
  curPage === p ? "bg-primary text-primary-foreground" : "hover:bg-accent hover:text-accent-foreground"
13229
13361
  ),
13230
13362
  children: p
@@ -13238,7 +13370,7 @@ function DataTable({
13238
13370
  {
13239
13371
  variant: "ghost",
13240
13372
  size: "sm",
13241
- className: "h-7 w-7 p-0",
13373
+ className: "h-7 w-7 p-0 rounded-full",
13242
13374
  onClick: () => setCurPage(Math.min(Math.ceil(totalItems / curPageSize), curPage + 1)),
13243
13375
  disabled: curPage === Math.ceil(totalItems / curPageSize),
13244
13376
  children: /* @__PURE__ */ jsx57("svg", { className: "h-4 w-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx57("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }) })
@@ -13255,7 +13387,7 @@ function DataTable({
13255
13387
  setCurPageSize(Number(v));
13256
13388
  },
13257
13389
  size: "sm",
13258
- className: "w-14 h-7"
13390
+ className: "w-20"
13259
13391
  }
13260
13392
  )
13261
13393
  ] })
@@ -13578,7 +13710,7 @@ function AccessDenied({
13578
13710
  import { Moon as Moon2, Sun as Sun2, Monitor } from "lucide-react";
13579
13711
  import { useEffect as useEffect23, useRef as useRef19, useState as useState40 } from "react";
13580
13712
  import { createPortal as createPortal7 } from "react-dom";
13581
- import { Fragment as Fragment22, jsx as jsx62, jsxs as jsxs56 } from "react/jsx-runtime";
13713
+ import { Fragment as Fragment23, jsx as jsx62, jsxs as jsxs56 } from "react/jsx-runtime";
13582
13714
  function ThemeToggleHeadless({
13583
13715
  theme,
13584
13716
  onChange,
@@ -13629,7 +13761,7 @@ function ThemeToggleHeadless({
13629
13761
  children: /* @__PURE__ */ jsx62(CurrentIcon, { className: "h-5 w-5" })
13630
13762
  }
13631
13763
  ),
13632
- isOpen && /* @__PURE__ */ jsxs56(Fragment22, { children: [
13764
+ isOpen && /* @__PURE__ */ jsxs56(Fragment23, { children: [
13633
13765
  typeof window !== "undefined" && createPortal7(/* @__PURE__ */ jsx62("div", { className: "fixed inset-0 z-9998", onClick: () => setIsOpen(false) }), document.body),
13634
13766
  typeof window !== "undefined" && dropdownPosition && createPortal7(
13635
13767
  /* @__PURE__ */ jsx62(
@@ -13681,7 +13813,7 @@ function ThemeToggleHeadless({
13681
13813
  import { useRef as useRef20, useState as useState41 } from "react";
13682
13814
  import { createPortal as createPortal8 } from "react-dom";
13683
13815
  import { Globe } from "lucide-react";
13684
- import { Fragment as Fragment23, jsx as jsx63, jsxs as jsxs57 } from "react/jsx-runtime";
13816
+ import { Fragment as Fragment24, jsx as jsx63, jsxs as jsxs57 } from "react/jsx-runtime";
13685
13817
  function LanguageSwitcherHeadless({
13686
13818
  locales,
13687
13819
  currentLocale,
@@ -13726,7 +13858,7 @@ function LanguageSwitcherHeadless({
13726
13858
  children: /* @__PURE__ */ jsx63(Globe, { className: "h-5 w-5" })
13727
13859
  }
13728
13860
  ),
13729
- isOpen && /* @__PURE__ */ jsxs57(Fragment23, { children: [
13861
+ isOpen && /* @__PURE__ */ jsxs57(Fragment24, { children: [
13730
13862
  typeof window !== "undefined" && createPortal8(/* @__PURE__ */ jsx63("div", { className: "fixed inset-0 z-9998", onClick: () => setIsOpen(false) }), document.body),
13731
13863
  typeof window !== "undefined" && dropdownPosition && createPortal8(
13732
13864
  /* @__PURE__ */ jsx63(