@payglocal_ui/flux-ui 0.2.3 → 0.2.5

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
@@ -2896,7 +2896,10 @@ var DropdownMenuItem = React27.forwardRef(({ className, inset, ...props }, ref)
2896
2896
  {
2897
2897
  ref,
2898
2898
  className: cn(
2899
- "relative flex cursor-default select-none items-center gap-2 rounded-lg px-3 py-2.5 text-[15px] outline-none transition-colors",
2899
+ // 13px / tighter padding: a menu drops out of a toolbar button or a
2900
+ // compact table control, and at 15px with 10px vertical padding it read
2901
+ // as a larger, separate UI than the control that opened it.
2902
+ "relative flex cursor-default select-none items-center gap-2 rounded-lg px-2.5 py-1.5 text-[13px] outline-none transition-colors",
2900
2903
  "focus:bg-muted focus:text-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
2901
2904
  inset && "pl-8",
2902
2905
  className
@@ -2963,12 +2966,17 @@ import { jsx as jsx38, jsxs as jsxs21 } from "react/jsx-runtime";
2963
2966
  var Select = SelectPrimitive.Root;
2964
2967
  var SelectGroup = SelectPrimitive.Group;
2965
2968
  var SelectValue = SelectPrimitive.Value;
2966
- var SelectTrigger = React28.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs21(
2969
+ var selectTriggerSizes = {
2970
+ md: "h-11 min-h-11 gap-2.5 px-4 py-2 text-[15px]",
2971
+ sm: "h-7 min-h-7 w-auto gap-1 px-2 py-0 text-[12px]"
2972
+ };
2973
+ var SelectTrigger = React28.forwardRef(({ className, children, size = "md", ...props }, ref) => /* @__PURE__ */ jsxs21(
2967
2974
  SelectPrimitive.Trigger,
2968
2975
  {
2969
2976
  ref,
2970
2977
  className: cn(
2971
- "flex h-11 min-h-11 w-full items-center justify-between gap-2.5 rounded-lg border border-border bg-card px-4 py-2 text-[15px] text-foreground shadow-sm outline-none",
2978
+ "flex w-full items-center justify-between rounded-lg border border-border bg-card text-foreground shadow-sm outline-none",
2979
+ selectTriggerSizes[size],
2972
2980
  "ring-ring/50 focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-50",
2973
2981
  "[&>span]:line-clamp-1",
2974
2982
  className
@@ -3579,7 +3587,7 @@ function EmptyState({
3579
3587
  }
3580
3588
 
3581
3589
  // src/data-table.tsx
3582
- import { ChevronLeft as ChevronLeft3, ChevronRight as ChevronRight5 } from "lucide-react";
3590
+ import { ChevronDown as ChevronDown6, ChevronLeft as ChevronLeft3, ChevronRight as ChevronRight5 } from "lucide-react";
3583
3591
  import { useState as useState6 } from "react";
3584
3592
  import { jsx as jsx49, jsxs as jsxs30 } from "react/jsx-runtime";
3585
3593
  function getPageRange(current, total) {
@@ -3608,13 +3616,16 @@ function DataTable({
3608
3616
  rowKey,
3609
3617
  rowCta,
3610
3618
  rowAction,
3619
+ onRowClick,
3611
3620
  density = "default",
3612
3621
  tableLayout = "fixed",
3613
3622
  theadClassName,
3614
3623
  headerStyle = "surface",
3615
3624
  footerSummary = "range",
3616
3625
  footerCountLabels = { singular: "item", plural: "items" },
3617
- snug = false
3626
+ snug = false,
3627
+ expandable,
3628
+ footerLeading
3618
3629
  }) {
3619
3630
  const isControlled = controlledPage !== void 0;
3620
3631
  const [internalPage, setInternalPage] = useState6(1);
@@ -3622,6 +3633,19 @@ function DataTable({
3622
3633
  const setPage = isControlled ? (p) => onPageChange?.(p) : (p) => setInternalPage(p);
3623
3634
  const hasAction = rowAction != null || rowCta != null;
3624
3635
  const hasSpacer = tableLayout === "content";
3636
+ const [internalExpanded, setInternalExpanded] = useState6([]);
3637
+ const isExpandControlled = expandable?.expandedKeys !== void 0;
3638
+ const expandedKeys = isExpandControlled ? expandable.expandedKeys : internalExpanded;
3639
+ const hasExpand = expandable != null;
3640
+ const totalColSpan = columns.length + (hasExpand ? 1 : 0) + (hasSpacer ? 1 : 0) + (hasAction ? 1 : 0);
3641
+ const rowExpanded = (row, index) => hasExpand && (expandable.isExpandable?.(row, index) ?? true) && expandedKeys.includes(rowKeys[index]);
3642
+ const toggleExpanded = (key, row, index) => {
3643
+ const isOpen = expandedKeys.includes(key);
3644
+ const next = isOpen ? expandedKeys.filter((k) => k !== key) : [...expandedKeys, key];
3645
+ if (isExpandControlled) expandable.onExpandedChange?.(next);
3646
+ else setInternalExpanded(next);
3647
+ if (!isOpen) expandable.onExpand?.(row, index);
3648
+ };
3625
3649
  const total = totalRows ?? data.length;
3626
3650
  const totalPages = Math.ceil(total / pageSize);
3627
3651
  const paginated = isControlled ? data : data.slice((page - 1) * pageSize, page * pageSize);
@@ -3639,7 +3663,16 @@ function DataTable({
3639
3663
  const headPad = comfortable ? "px-5 py-4" : compactCellPad;
3640
3664
  const footerPad = comfortable ? "px-5 py-4" : compact ? "px-4 py-2.5" : "px-4 py-3.5";
3641
3665
  const headText = comfortable ? "text-[12px] font-medium text-muted-foreground tracking-normal" : compact ? "text-[11px] font-semibold text-muted-foreground" : "text-[11px] font-semibold text-foreground/75 dark:text-foreground/85";
3666
+ const cellPadLeft = comfortable ? 20 : compact ? snug ? 6 : 12 : 16;
3667
+ const expandIndent = 40 + cellPadLeft;
3668
+ const expandGuideLeft = cellPadLeft + 10;
3642
3669
  const actionGutter = comfortable ? 20 : compact ? 12 : 16;
3670
+ const ROW_CLICK_IGNORE = 'button, a, input, select, textarea, label, [role="button"], [role="link"], [role="checkbox"], [role="menuitem"], [role="menu"], [role="dialog"], [data-row-click-ignore]';
3671
+ const isRowClickTarget = (target, rowEl) => {
3672
+ if (!(target instanceof Element)) return false;
3673
+ const interactive = target.closest(ROW_CLICK_IGNORE);
3674
+ return !(interactive && rowEl.contains(interactive));
3675
+ };
3643
3676
  return /* @__PURE__ */ jsxs30(
3644
3677
  "div",
3645
3678
  {
@@ -3671,6 +3704,7 @@ function DataTable({
3671
3704
  },
3672
3705
  children: [
3673
3706
  tableLayout === "fixed" && /* @__PURE__ */ jsxs30("colgroup", { children: [
3707
+ hasExpand ? /* @__PURE__ */ jsx49("col", { style: { width: 40 } }) : null,
3674
3708
  columns.map((col) => /* @__PURE__ */ jsx49(
3675
3709
  "col",
3676
3710
  {
@@ -3700,6 +3734,7 @@ function DataTable({
3700
3734
  headerStyle === "surface" ? "border-border" : "border-border/70"
3701
3735
  ),
3702
3736
  children: [
3737
+ hasExpand ? /* @__PURE__ */ jsx49("th", { className: cn(headPad, "w-10 p-0"), "aria-hidden": true }) : null,
3703
3738
  columns.map((col) => /* @__PURE__ */ jsx49(
3704
3739
  "th",
3705
3740
  {
@@ -3724,74 +3759,144 @@ function DataTable({
3724
3759
  /* @__PURE__ */ jsx49("tbody", { children: isLoading ? Array.from({ length: skeletonRows }).map((_, i) => /* @__PURE__ */ jsx49(
3725
3760
  TableRowSkeleton,
3726
3761
  {
3727
- cols: columns.length,
3762
+ cols: columns.length + (hasExpand ? 1 : 0),
3728
3763
  density,
3729
3764
  snug
3730
3765
  },
3731
3766
  i
3732
- )) : paginated.length === 0 ? /* @__PURE__ */ jsx49("tr", { children: /* @__PURE__ */ jsx49("td", { colSpan: columns.length + (hasSpacer ? 1 : 0) + (hasAction ? 1 : 0), children: /* @__PURE__ */ jsx49(EmptyState, { title: emptyTitle, description: emptyDescription }) }) }) : paginated.map((row, i) => /* @__PURE__ */ jsxs30(
3733
- "tr",
3734
- {
3735
- className: cn(
3736
- "group transition-colors duration-150 border-b border-border/60 last:border-b-0",
3737
- comfortable && "min-h-[56px]",
3738
- compact && "min-h-[44px]",
3739
- "hover:bg-muted/40 dark:hover:bg-muted/25",
3740
- hasAction && "hover:shadow-[0_1px_0_rgba(0,0,0,0.04)] dark:hover:shadow-none"
3741
- ),
3742
- children: [
3743
- columns.map((col) => /* @__PURE__ */ jsx49(
3744
- "td",
3745
- {
3746
- className: cn(
3747
- cellPad,
3748
- "align-middle",
3749
- comfortable ? cn(
3750
- "text-[13px] leading-snug",
3751
- !col.wrap && "whitespace-nowrap"
3752
- ) : compact ? cn(
3753
- "text-[13px] leading-tight",
3754
- !col.wrap && "whitespace-nowrap",
3755
- "overflow-hidden"
3756
- ) : "whitespace-nowrap overflow-hidden",
3757
- col.align === "right" ? "text-right" : col.align === "center" ? "text-center" : "text-left",
3758
- col.cellClassName
3759
- ),
3760
- children: col.render(row, i)
3761
- },
3762
- col.key
3763
- )),
3764
- hasSpacer ? /* @__PURE__ */ jsx49("td", { className: "p-0", "aria-hidden": true }) : null,
3765
- hasAction ? (
3766
- // Zero-width sticky cell pinned to the right edge of the
3767
- // viewport. Its children are positioned absolutely so they
3768
- // float over the row (out of the 0-width cell) — the action
3769
- // stays in view while scrolling and nothing trails the last
3770
- // data column. Everything is revealed on hover only.
3771
- /* @__PURE__ */ jsx49("td", { className: "sticky right-0 z-[1] w-0 p-0 align-middle", children: /* @__PURE__ */ jsx49(
3772
- "span",
3767
+ )) : paginated.length === 0 ? /* @__PURE__ */ jsx49("tr", { children: /* @__PURE__ */ jsx49("td", { colSpan: totalColSpan, children: /* @__PURE__ */ jsx49(EmptyState, { title: emptyTitle, description: emptyDescription }) }) }) : paginated.flatMap((row, i) => [
3768
+ /* @__PURE__ */ jsxs30(
3769
+ "tr",
3770
+ {
3771
+ className: cn(
3772
+ "group transition-colors duration-150 border-b border-border/60 last:border-b-0",
3773
+ comfortable && "min-h-[56px]",
3774
+ compact && "min-h-[44px]",
3775
+ "hover:bg-muted/40 dark:hover:bg-muted/25",
3776
+ hasAction && "hover:shadow-[0_1px_0_rgba(0,0,0,0.04)] dark:hover:shadow-none",
3777
+ // Clickable rows read as clickable, and show a focus ring
3778
+ // when reached by keyboard. `focus-visible` only, so a
3779
+ // mouse click does not leave a ring behind on the row.
3780
+ onRowClick && "cursor-pointer focus-visible:outline-none focus-visible:bg-muted/40 dark:focus-visible:bg-muted/25",
3781
+ // An open row takes its panel's background and drops the
3782
+ // divider beneath it, so the row and its detail read as one
3783
+ // block. Hover is pinned to the same value, or moving the
3784
+ // mouse over an open row would make it flicker away from
3785
+ // the panel it belongs to.
3786
+ rowExpanded(row, i) && "border-b-0 bg-muted/40 hover:bg-muted/40 dark:bg-muted/25 dark:hover:bg-muted/25"
3787
+ ),
3788
+ tabIndex: onRowClick ? 0 : void 0,
3789
+ onClick: onRowClick ? (e) => {
3790
+ if (!isRowClickTarget(e.target, e.currentTarget)) return;
3791
+ onRowClick(row, i);
3792
+ } : void 0,
3793
+ onKeyDown: onRowClick ? (e) => {
3794
+ if (e.key !== "Enter" && e.key !== " ") return;
3795
+ if (e.target !== e.currentTarget) return;
3796
+ e.preventDefault();
3797
+ onRowClick(row, i);
3798
+ } : void 0,
3799
+ children: [
3800
+ hasExpand ? /* @__PURE__ */ jsx49("td", { className: cn(cellPad, "w-10 align-middle"), children: expandable.isExpandable?.(row, i) ?? true ? /* @__PURE__ */ jsx49(
3801
+ "button",
3773
3802
  {
3774
- className: "absolute top-1/2 -translate-y-1/2 z-[1] inline-flex items-center opacity-0 transition-opacity duration-150 group-hover:opacity-100 group-focus-within:opacity-100",
3775
- style: { right: actionGutter },
3776
- children: rowAction != null ? typeof rowAction === "function" ? rowAction(row, i) : rowAction : /* @__PURE__ */ jsx49(
3777
- "button",
3803
+ type: "button",
3804
+ "aria-expanded": rowExpanded(row, i),
3805
+ "aria-label": expandable.toggleLabel ?? "Toggle row details",
3806
+ onClick: () => toggleExpanded(rowKeys[i], row, i),
3807
+ className: "inline-flex h-5 w-5 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
3808
+ children: /* @__PURE__ */ jsx49(
3809
+ ChevronDown6,
3778
3810
  {
3779
- type: "button",
3780
- onClick: () => rowCta?.onClick?.(row),
3781
3811
  className: cn(
3782
- "inline-flex items-center font-medium text-foreground bg-card rounded-lg border border-border hover:border-muted-foreground/50 whitespace-nowrap shadow-sm",
3783
- compact ? "px-2.5 py-1 text-[11px]" : "px-3 py-1.5 text-[12px]"
3784
- ),
3785
- children: rowCta?.label
3812
+ "h-3.5 w-3.5 transition-transform duration-150",
3813
+ rowExpanded(row, i) && "rotate-180"
3814
+ )
3786
3815
  }
3787
3816
  )
3788
3817
  }
3789
- ) })
3790
- ) : null
3791
- ]
3792
- },
3793
- rowKeys[i]
3794
- )) })
3818
+ ) : null }) : null,
3819
+ columns.map((col) => /* @__PURE__ */ jsx49(
3820
+ "td",
3821
+ {
3822
+ className: cn(
3823
+ cellPad,
3824
+ "align-middle",
3825
+ comfortable ? cn(
3826
+ "text-[13px] leading-snug",
3827
+ !col.wrap && "whitespace-nowrap"
3828
+ ) : compact ? cn(
3829
+ "text-[13px] leading-tight",
3830
+ !col.wrap && "whitespace-nowrap",
3831
+ "overflow-hidden"
3832
+ ) : "whitespace-nowrap overflow-hidden",
3833
+ col.align === "right" ? "text-right" : col.align === "center" ? "text-center" : "text-left",
3834
+ col.cellClassName
3835
+ ),
3836
+ children: col.render(row, i)
3837
+ },
3838
+ col.key
3839
+ )),
3840
+ hasSpacer ? /* @__PURE__ */ jsx49("td", { className: "p-0", "aria-hidden": true }) : null,
3841
+ hasAction ? (
3842
+ // Zero-width sticky cell pinned to the right edge of the
3843
+ // viewport. Its children are positioned absolutely so they
3844
+ // float over the row (out of the 0-width cell) — the action
3845
+ // stays in view while scrolling and nothing trails the last
3846
+ // data column. Everything is revealed on hover only.
3847
+ /* @__PURE__ */ jsx49("td", { className: "sticky right-0 z-[1] w-0 p-0 align-middle", children: /* @__PURE__ */ jsx49(
3848
+ "span",
3849
+ {
3850
+ className: "absolute top-1/2 -translate-y-1/2 z-[1] inline-flex items-center opacity-0 transition-opacity duration-150 group-hover:opacity-100 group-focus-within:opacity-100",
3851
+ style: { right: actionGutter },
3852
+ children: rowAction != null ? typeof rowAction === "function" ? rowAction(row, i) : rowAction : /* @__PURE__ */ jsx49(
3853
+ "button",
3854
+ {
3855
+ type: "button",
3856
+ onClick: () => rowCta?.onClick?.(row),
3857
+ className: cn(
3858
+ "inline-flex items-center font-medium text-foreground bg-card rounded-lg border border-border hover:border-muted-foreground/50 whitespace-nowrap shadow-sm",
3859
+ compact ? "px-2.5 py-1 text-[11px]" : "px-3 py-1.5 text-[12px]"
3860
+ ),
3861
+ children: rowCta?.label
3862
+ }
3863
+ )
3864
+ }
3865
+ ) })
3866
+ ) : null
3867
+ ]
3868
+ },
3869
+ rowKeys[i]
3870
+ ),
3871
+ // The panel spans every column, including the toggle, spacer and
3872
+ // action cells, so it reads as one band under its row rather
3873
+ // than as a cell inside the grid.
3874
+ rowExpanded(row, i) ? /* @__PURE__ */ jsx49(
3875
+ "tr",
3876
+ {
3877
+ className: "border-b border-border/60 bg-muted/40 last:border-b-0 dark:bg-muted/25",
3878
+ children: /* @__PURE__ */ jsx49("td", { colSpan: totalColSpan, className: "p-0 align-top", children: /* @__PURE__ */ jsxs30(
3879
+ "div",
3880
+ {
3881
+ className: "relative",
3882
+ style: { paddingLeft: expandIndent, paddingRight: cellPadLeft },
3883
+ children: [
3884
+ /* @__PURE__ */ jsx49(
3885
+ "span",
3886
+ {
3887
+ "aria-hidden": true,
3888
+ className: "absolute top-0 bottom-4 w-px bg-border",
3889
+ style: { left: expandGuideLeft }
3890
+ }
3891
+ ),
3892
+ expandable.render(row, i)
3893
+ ]
3894
+ }
3895
+ ) })
3896
+ },
3897
+ `${rowKeys[i]}__panel`
3898
+ ) : null
3899
+ ]) })
3795
3900
  ]
3796
3901
  }
3797
3902
  )
@@ -3803,27 +3908,30 @@ function DataTable({
3803
3908
  className: cn(
3804
3909
  "flex items-center gap-4 flex-wrap border-t border-border",
3805
3910
  footerPad,
3806
- footerSummary === "count" && totalPages <= 1 ? "justify-start" : "justify-between"
3911
+ footerSummary === "count" && totalPages <= 1 && !footerLeading ? "justify-start" : "justify-between"
3807
3912
  ),
3808
3913
  children: [
3809
- footerSummary === "count" ? /* @__PURE__ */ jsxs30("span", { className: "text-[12px] text-muted-foreground tabular-nums", children: [
3810
- /* @__PURE__ */ jsx49("span", { className: "font-medium text-foreground", children: total }),
3811
- " ",
3812
- total === 1 ? footerCountLabels.singular : footerCountLabels.plural
3813
- ] }) : /* @__PURE__ */ jsxs30("span", { className: "text-[12px] text-muted-foreground tabular-nums", children: [
3814
- "Showing",
3815
- " ",
3816
- /* @__PURE__ */ jsxs30("span", { className: "text-foreground font-medium", children: [
3817
- Math.min((page - 1) * pageSize + 1, total),
3818
- "\u2013",
3819
- Math.min(page * pageSize, total)
3820
- ] }),
3821
- " ",
3822
- "of",
3823
- " ",
3824
- /* @__PURE__ */ jsx49("span", { className: "text-foreground font-medium", children: total.toLocaleString() }),
3825
- " ",
3826
- total !== 1 ? "results" : "result"
3914
+ /* @__PURE__ */ jsxs30("div", { className: "flex items-center gap-3", children: [
3915
+ footerLeading,
3916
+ footerSummary === "count" ? /* @__PURE__ */ jsxs30("span", { className: "text-[12px] text-muted-foreground tabular-nums", children: [
3917
+ /* @__PURE__ */ jsx49("span", { className: "font-medium text-foreground", children: total }),
3918
+ " ",
3919
+ total === 1 ? footerCountLabels.singular : footerCountLabels.plural
3920
+ ] }) : /* @__PURE__ */ jsxs30("span", { className: "text-[12px] text-muted-foreground tabular-nums", children: [
3921
+ "Showing",
3922
+ " ",
3923
+ /* @__PURE__ */ jsxs30("span", { className: "text-foreground font-medium", children: [
3924
+ Math.min((page - 1) * pageSize + 1, total),
3925
+ "\u2013",
3926
+ Math.min(page * pageSize, total)
3927
+ ] }),
3928
+ " ",
3929
+ "of",
3930
+ " ",
3931
+ /* @__PURE__ */ jsx49("span", { className: "text-foreground font-medium", children: total.toLocaleString() }),
3932
+ " ",
3933
+ total !== 1 ? "results" : "result"
3934
+ ] })
3827
3935
  ] }),
3828
3936
  (footerSummary === "range" || footerSummary === "count") && totalPages > 1 && /* @__PURE__ */ jsxs30("div", { className: "flex items-center gap-1", children: [
3829
3937
  /* @__PURE__ */ jsx49(
@@ -4199,7 +4307,7 @@ AvatarTag.displayName = "AvatarTag";
4199
4307
 
4200
4308
  // src/calendar.tsx
4201
4309
  import * as React40 from "react";
4202
- import { ChevronDown as ChevronDown6, ChevronLeft as ChevronLeft4, ChevronRight as ChevronRight6 } from "lucide-react";
4310
+ import { ChevronDown as ChevronDown7, ChevronLeft as ChevronLeft4, ChevronRight as ChevronRight6 } from "lucide-react";
4203
4311
  import {
4204
4312
  DayPicker,
4205
4313
  getDefaultClassNames
@@ -4349,7 +4457,7 @@ function Calendar({
4349
4457
  if (orientation === "right") {
4350
4458
  return /* @__PURE__ */ jsx55(ChevronRight6, { className: cn("size-4", chClass), ...chProps });
4351
4459
  }
4352
- return /* @__PURE__ */ jsx55(ChevronDown6, { className: cn("size-4", chClass), ...chProps });
4460
+ return /* @__PURE__ */ jsx55(ChevronDown7, { className: cn("size-4", chClass), ...chProps });
4353
4461
  },
4354
4462
  DayButton: CalendarDayButton,
4355
4463
  WeekNumber: ({ children, ...weekProps }) => /* @__PURE__ */ jsx55("th", { ...weekProps, children: /* @__PURE__ */ jsx55("div", { className: "flex h-[var(--cell-size)] w-[var(--cell-size)] min-h-[var(--cell-size)] min-w-[var(--cell-size)] items-center justify-center text-center text-xs tabular-nums", children }) }),
@@ -4396,7 +4504,7 @@ function CalendarDayButton({
4396
4504
  // src/date-picker.tsx
4397
4505
  import { useState as useState8, useRef as useRef4, useEffect as useEffect3 } from "react";
4398
4506
  import { createPortal } from "react-dom";
4399
- import { ChevronLeft as ChevronLeft5, ChevronRight as ChevronRight7, ChevronDown as ChevronDown7, CalendarDays } from "lucide-react";
4507
+ import { ChevronLeft as ChevronLeft5, ChevronRight as ChevronRight7, ChevronDown as ChevronDown8, CalendarDays } from "lucide-react";
4400
4508
  import { AnimatePresence, motion } from "framer-motion";
4401
4509
  import { jsx as jsx56, jsxs as jsxs35 } from "react/jsx-runtime";
4402
4510
  var MONTHS = [
@@ -4575,7 +4683,7 @@ function DatePicker({ value, onChange, placeholder = "Select date", className, m
4575
4683
  className: "flex items-center gap-1 px-2 py-1 rounded-lg text-[14px] font-semibold text-gray-900 hover:bg-gray-100 transition-colors",
4576
4684
  children: [
4577
4685
  MONTHS[viewMonth].slice(0, 3),
4578
- /* @__PURE__ */ jsx56(ChevronDown7, { className: "w-3 h-3 text-gray-400" })
4686
+ /* @__PURE__ */ jsx56(ChevronDown8, { className: "w-3 h-3 text-gray-400" })
4579
4687
  ]
4580
4688
  }
4581
4689
  ),
@@ -4614,7 +4722,7 @@ function DatePicker({ value, onChange, placeholder = "Select date", className, m
4614
4722
  className: "flex items-center gap-1 px-2 py-1 rounded-lg text-[14px] font-semibold text-gray-900 hover:bg-gray-100 transition-colors",
4615
4723
  children: [
4616
4724
  viewYear,
4617
- /* @__PURE__ */ jsx56(ChevronDown7, { className: "w-3 h-3 text-gray-400" })
4725
+ /* @__PURE__ */ jsx56(ChevronDown8, { className: "w-3 h-3 text-gray-400" })
4618
4726
  ]
4619
4727
  }
4620
4728
  ),
@@ -4708,7 +4816,7 @@ function DatePicker({ value, onChange, placeholder = "Select date", className, m
4708
4816
  children: [
4709
4817
  /* @__PURE__ */ jsx56(CalendarDays, { className: "size-[1.125rem] shrink-0 text-muted-foreground" }),
4710
4818
  /* @__PURE__ */ jsx56("span", { className: cn("flex-1", value ? "text-foreground" : "text-muted-foreground"), children: value ? displayDate(value) : placeholder }),
4711
- /* @__PURE__ */ jsx56(ChevronDown7, { className: cn("size-[1.125rem] shrink-0 text-muted-foreground transition-transform", open && "rotate-180") })
4819
+ /* @__PURE__ */ jsx56(ChevronDown8, { className: cn("size-[1.125rem] shrink-0 text-muted-foreground transition-transform", open && "rotate-180") })
4712
4820
  ]
4713
4821
  }
4714
4822
  ),
@@ -6015,7 +6123,7 @@ function useBreakpoint() {
6015
6123
  // src/country-select.tsx
6016
6124
  import * as React47 from "react";
6017
6125
  import * as PopoverPrimitive4 from "@radix-ui/react-popover";
6018
- import { Check as Check10, ChevronDown as ChevronDown8, Search as Search3 } from "lucide-react";
6126
+ import { Check as Check10, ChevronDown as ChevronDown9, Search as Search3 } from "lucide-react";
6019
6127
  import { Fragment as Fragment9, jsx as jsx64, jsxs as jsxs41 } from "react/jsx-runtime";
6020
6128
  var COUNTRIES = [
6021
6129
  { code: "US", name: "United States", flag: "\u{1F1FA}\u{1F1F8}", dialCode: "+1" },
@@ -6104,7 +6212,7 @@ var CountrySelect = React47.forwardRef(
6104
6212
  showDialCode && /* @__PURE__ */ jsx64("span", { className: "shrink-0 text-muted-foreground", children: selected.dialCode })
6105
6213
  ] }) : /* @__PURE__ */ jsx64("span", { children: placeholder }) }),
6106
6214
  /* @__PURE__ */ jsx64(
6107
- ChevronDown8,
6215
+ ChevronDown9,
6108
6216
  {
6109
6217
  className: cn(
6110
6218
  "h-4 w-4 shrink-0 text-muted-foreground opacity-70 transition-transform duration-pg-fast ease-pg-standard",
@@ -6277,7 +6385,7 @@ IconButton.displayName = "IconButton";
6277
6385
  // src/time-picker.tsx
6278
6386
  import * as React48 from "react";
6279
6387
  import { createPortal as createPortal2 } from "react-dom";
6280
- import { Clock as Clock2, ChevronDown as ChevronDown9, X as X11 } from "lucide-react";
6388
+ import { Clock as Clock2, ChevronDown as ChevronDown10, X as X11 } from "lucide-react";
6281
6389
  import { Fragment as Fragment10, jsx as jsx66, jsxs as jsxs42 } from "react/jsx-runtime";
6282
6390
  function pad(n) {
6283
6391
  return String(n).padStart(2, "0");
@@ -6613,7 +6721,7 @@ var TimePicker = React48.forwardRef(
6613
6721
  onClick: handleClear
6614
6722
  }
6615
6723
  ) : /* @__PURE__ */ jsx66(
6616
- ChevronDown9,
6724
+ ChevronDown10,
6617
6725
  {
6618
6726
  className: cn(
6619
6727
  "size-[1.0625rem] shrink-0 text-muted-foreground transition-transform duration-150",