@payglocal_ui/flux-ui 0.2.4 → 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) {
@@ -3615,7 +3623,9 @@ function DataTable({
3615
3623
  headerStyle = "surface",
3616
3624
  footerSummary = "range",
3617
3625
  footerCountLabels = { singular: "item", plural: "items" },
3618
- snug = false
3626
+ snug = false,
3627
+ expandable,
3628
+ footerLeading
3619
3629
  }) {
3620
3630
  const isControlled = controlledPage !== void 0;
3621
3631
  const [internalPage, setInternalPage] = useState6(1);
@@ -3623,6 +3633,19 @@ function DataTable({
3623
3633
  const setPage = isControlled ? (p) => onPageChange?.(p) : (p) => setInternalPage(p);
3624
3634
  const hasAction = rowAction != null || rowCta != null;
3625
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
+ };
3626
3649
  const total = totalRows ?? data.length;
3627
3650
  const totalPages = Math.ceil(total / pageSize);
3628
3651
  const paginated = isControlled ? data : data.slice((page - 1) * pageSize, page * pageSize);
@@ -3640,6 +3663,9 @@ function DataTable({
3640
3663
  const headPad = comfortable ? "px-5 py-4" : compactCellPad;
3641
3664
  const footerPad = comfortable ? "px-5 py-4" : compact ? "px-4 py-2.5" : "px-4 py-3.5";
3642
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;
3643
3669
  const actionGutter = comfortable ? 20 : compact ? 12 : 16;
3644
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]';
3645
3671
  const isRowClickTarget = (target, rowEl) => {
@@ -3678,6 +3704,7 @@ function DataTable({
3678
3704
  },
3679
3705
  children: [
3680
3706
  tableLayout === "fixed" && /* @__PURE__ */ jsxs30("colgroup", { children: [
3707
+ hasExpand ? /* @__PURE__ */ jsx49("col", { style: { width: 40 } }) : null,
3681
3708
  columns.map((col) => /* @__PURE__ */ jsx49(
3682
3709
  "col",
3683
3710
  {
@@ -3707,6 +3734,7 @@ function DataTable({
3707
3734
  headerStyle === "surface" ? "border-border" : "border-border/70"
3708
3735
  ),
3709
3736
  children: [
3737
+ hasExpand ? /* @__PURE__ */ jsx49("th", { className: cn(headPad, "w-10 p-0"), "aria-hidden": true }) : null,
3710
3738
  columns.map((col) => /* @__PURE__ */ jsx49(
3711
3739
  "th",
3712
3740
  {
@@ -3731,89 +3759,144 @@ function DataTable({
3731
3759
  /* @__PURE__ */ jsx49("tbody", { children: isLoading ? Array.from({ length: skeletonRows }).map((_, i) => /* @__PURE__ */ jsx49(
3732
3760
  TableRowSkeleton,
3733
3761
  {
3734
- cols: columns.length,
3762
+ cols: columns.length + (hasExpand ? 1 : 0),
3735
3763
  density,
3736
3764
  snug
3737
3765
  },
3738
3766
  i
3739
- )) : 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(
3740
- "tr",
3741
- {
3742
- className: cn(
3743
- "group transition-colors duration-150 border-b border-border/60 last:border-b-0",
3744
- comfortable && "min-h-[56px]",
3745
- compact && "min-h-[44px]",
3746
- "hover:bg-muted/40 dark:hover:bg-muted/25",
3747
- hasAction && "hover:shadow-[0_1px_0_rgba(0,0,0,0.04)] dark:hover:shadow-none",
3748
- // Clickable rows read as clickable, and show a focus ring
3749
- // when reached by keyboard. `focus-visible` only, so a
3750
- // mouse click does not leave a ring behind on the row.
3751
- onRowClick && "cursor-pointer focus-visible:outline-none focus-visible:bg-muted/40 dark:focus-visible:bg-muted/25"
3752
- ),
3753
- tabIndex: onRowClick ? 0 : void 0,
3754
- onClick: onRowClick ? (e) => {
3755
- if (!isRowClickTarget(e.target, e.currentTarget)) return;
3756
- onRowClick(row, i);
3757
- } : void 0,
3758
- onKeyDown: onRowClick ? (e) => {
3759
- if (e.key !== "Enter" && e.key !== " ") return;
3760
- if (e.target !== e.currentTarget) return;
3761
- e.preventDefault();
3762
- onRowClick(row, i);
3763
- } : void 0,
3764
- children: [
3765
- columns.map((col) => /* @__PURE__ */ jsx49(
3766
- "td",
3767
- {
3768
- className: cn(
3769
- cellPad,
3770
- "align-middle",
3771
- comfortable ? cn(
3772
- "text-[13px] leading-snug",
3773
- !col.wrap && "whitespace-nowrap"
3774
- ) : compact ? cn(
3775
- "text-[13px] leading-tight",
3776
- !col.wrap && "whitespace-nowrap",
3777
- "overflow-hidden"
3778
- ) : "whitespace-nowrap overflow-hidden",
3779
- col.align === "right" ? "text-right" : col.align === "center" ? "text-center" : "text-left",
3780
- col.cellClassName
3781
- ),
3782
- children: col.render(row, i)
3783
- },
3784
- col.key
3785
- )),
3786
- hasSpacer ? /* @__PURE__ */ jsx49("td", { className: "p-0", "aria-hidden": true }) : null,
3787
- hasAction ? (
3788
- // Zero-width sticky cell pinned to the right edge of the
3789
- // viewport. Its children are positioned absolutely so they
3790
- // float over the row (out of the 0-width cell) — the action
3791
- // stays in view while scrolling and nothing trails the last
3792
- // data column. Everything is revealed on hover only.
3793
- /* @__PURE__ */ jsx49("td", { className: "sticky right-0 z-[1] w-0 p-0 align-middle", children: /* @__PURE__ */ jsx49(
3794
- "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",
3795
3802
  {
3796
- 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",
3797
- style: { right: actionGutter },
3798
- children: rowAction != null ? typeof rowAction === "function" ? rowAction(row, i) : rowAction : /* @__PURE__ */ jsx49(
3799
- "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,
3800
3810
  {
3801
- type: "button",
3802
- onClick: () => rowCta?.onClick?.(row),
3803
3811
  className: cn(
3804
- "inline-flex items-center font-medium text-foreground bg-card rounded-lg border border-border hover:border-muted-foreground/50 whitespace-nowrap shadow-sm",
3805
- compact ? "px-2.5 py-1 text-[11px]" : "px-3 py-1.5 text-[12px]"
3806
- ),
3807
- children: rowCta?.label
3812
+ "h-3.5 w-3.5 transition-transform duration-150",
3813
+ rowExpanded(row, i) && "rotate-180"
3814
+ )
3808
3815
  }
3809
3816
  )
3810
3817
  }
3811
- ) })
3812
- ) : null
3813
- ]
3814
- },
3815
- rowKeys[i]
3816
- )) })
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
+ ]) })
3817
3900
  ]
3818
3901
  }
3819
3902
  )
@@ -3825,27 +3908,30 @@ function DataTable({
3825
3908
  className: cn(
3826
3909
  "flex items-center gap-4 flex-wrap border-t border-border",
3827
3910
  footerPad,
3828
- footerSummary === "count" && totalPages <= 1 ? "justify-start" : "justify-between"
3911
+ footerSummary === "count" && totalPages <= 1 && !footerLeading ? "justify-start" : "justify-between"
3829
3912
  ),
3830
3913
  children: [
3831
- footerSummary === "count" ? /* @__PURE__ */ jsxs30("span", { className: "text-[12px] text-muted-foreground tabular-nums", children: [
3832
- /* @__PURE__ */ jsx49("span", { className: "font-medium text-foreground", children: total }),
3833
- " ",
3834
- total === 1 ? footerCountLabels.singular : footerCountLabels.plural
3835
- ] }) : /* @__PURE__ */ jsxs30("span", { className: "text-[12px] text-muted-foreground tabular-nums", children: [
3836
- "Showing",
3837
- " ",
3838
- /* @__PURE__ */ jsxs30("span", { className: "text-foreground font-medium", children: [
3839
- Math.min((page - 1) * pageSize + 1, total),
3840
- "\u2013",
3841
- Math.min(page * pageSize, total)
3842
- ] }),
3843
- " ",
3844
- "of",
3845
- " ",
3846
- /* @__PURE__ */ jsx49("span", { className: "text-foreground font-medium", children: total.toLocaleString() }),
3847
- " ",
3848
- 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
+ ] })
3849
3935
  ] }),
3850
3936
  (footerSummary === "range" || footerSummary === "count") && totalPages > 1 && /* @__PURE__ */ jsxs30("div", { className: "flex items-center gap-1", children: [
3851
3937
  /* @__PURE__ */ jsx49(
@@ -4221,7 +4307,7 @@ AvatarTag.displayName = "AvatarTag";
4221
4307
 
4222
4308
  // src/calendar.tsx
4223
4309
  import * as React40 from "react";
4224
- 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";
4225
4311
  import {
4226
4312
  DayPicker,
4227
4313
  getDefaultClassNames
@@ -4371,7 +4457,7 @@ function Calendar({
4371
4457
  if (orientation === "right") {
4372
4458
  return /* @__PURE__ */ jsx55(ChevronRight6, { className: cn("size-4", chClass), ...chProps });
4373
4459
  }
4374
- return /* @__PURE__ */ jsx55(ChevronDown6, { className: cn("size-4", chClass), ...chProps });
4460
+ return /* @__PURE__ */ jsx55(ChevronDown7, { className: cn("size-4", chClass), ...chProps });
4375
4461
  },
4376
4462
  DayButton: CalendarDayButton,
4377
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 }) }),
@@ -4418,7 +4504,7 @@ function CalendarDayButton({
4418
4504
  // src/date-picker.tsx
4419
4505
  import { useState as useState8, useRef as useRef4, useEffect as useEffect3 } from "react";
4420
4506
  import { createPortal } from "react-dom";
4421
- 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";
4422
4508
  import { AnimatePresence, motion } from "framer-motion";
4423
4509
  import { jsx as jsx56, jsxs as jsxs35 } from "react/jsx-runtime";
4424
4510
  var MONTHS = [
@@ -4597,7 +4683,7 @@ function DatePicker({ value, onChange, placeholder = "Select date", className, m
4597
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",
4598
4684
  children: [
4599
4685
  MONTHS[viewMonth].slice(0, 3),
4600
- /* @__PURE__ */ jsx56(ChevronDown7, { className: "w-3 h-3 text-gray-400" })
4686
+ /* @__PURE__ */ jsx56(ChevronDown8, { className: "w-3 h-3 text-gray-400" })
4601
4687
  ]
4602
4688
  }
4603
4689
  ),
@@ -4636,7 +4722,7 @@ function DatePicker({ value, onChange, placeholder = "Select date", className, m
4636
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",
4637
4723
  children: [
4638
4724
  viewYear,
4639
- /* @__PURE__ */ jsx56(ChevronDown7, { className: "w-3 h-3 text-gray-400" })
4725
+ /* @__PURE__ */ jsx56(ChevronDown8, { className: "w-3 h-3 text-gray-400" })
4640
4726
  ]
4641
4727
  }
4642
4728
  ),
@@ -4730,7 +4816,7 @@ function DatePicker({ value, onChange, placeholder = "Select date", className, m
4730
4816
  children: [
4731
4817
  /* @__PURE__ */ jsx56(CalendarDays, { className: "size-[1.125rem] shrink-0 text-muted-foreground" }),
4732
4818
  /* @__PURE__ */ jsx56("span", { className: cn("flex-1", value ? "text-foreground" : "text-muted-foreground"), children: value ? displayDate(value) : placeholder }),
4733
- /* @__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") })
4734
4820
  ]
4735
4821
  }
4736
4822
  ),
@@ -6037,7 +6123,7 @@ function useBreakpoint() {
6037
6123
  // src/country-select.tsx
6038
6124
  import * as React47 from "react";
6039
6125
  import * as PopoverPrimitive4 from "@radix-ui/react-popover";
6040
- 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";
6041
6127
  import { Fragment as Fragment9, jsx as jsx64, jsxs as jsxs41 } from "react/jsx-runtime";
6042
6128
  var COUNTRIES = [
6043
6129
  { code: "US", name: "United States", flag: "\u{1F1FA}\u{1F1F8}", dialCode: "+1" },
@@ -6126,7 +6212,7 @@ var CountrySelect = React47.forwardRef(
6126
6212
  showDialCode && /* @__PURE__ */ jsx64("span", { className: "shrink-0 text-muted-foreground", children: selected.dialCode })
6127
6213
  ] }) : /* @__PURE__ */ jsx64("span", { children: placeholder }) }),
6128
6214
  /* @__PURE__ */ jsx64(
6129
- ChevronDown8,
6215
+ ChevronDown9,
6130
6216
  {
6131
6217
  className: cn(
6132
6218
  "h-4 w-4 shrink-0 text-muted-foreground opacity-70 transition-transform duration-pg-fast ease-pg-standard",
@@ -6299,7 +6385,7 @@ IconButton.displayName = "IconButton";
6299
6385
  // src/time-picker.tsx
6300
6386
  import * as React48 from "react";
6301
6387
  import { createPortal as createPortal2 } from "react-dom";
6302
- 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";
6303
6389
  import { Fragment as Fragment10, jsx as jsx66, jsxs as jsxs42 } from "react/jsx-runtime";
6304
6390
  function pad(n) {
6305
6391
  return String(n).padStart(2, "0");
@@ -6635,7 +6721,7 @@ var TimePicker = React48.forwardRef(
6635
6721
  onClick: handleClear
6636
6722
  }
6637
6723
  ) : /* @__PURE__ */ jsx66(
6638
- ChevronDown9,
6724
+ ChevronDown10,
6639
6725
  {
6640
6726
  className: cn(
6641
6727
  "size-[1.0625rem] shrink-0 text-muted-foreground transition-transform duration-150",