@voyantjs/ui 0.52.0 → 0.52.2

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.
@@ -32,7 +32,7 @@ type DateRangePickerProps = SharedProps & {
32
32
  onChange?: (value: DateRangeValue | null) => void;
33
33
  presets?: RangePreset[];
34
34
  };
35
- export declare function DatePicker({ value, defaultValue, onChange, presets, placeholder, displayFormat, className, contentClassName, clearable, ...calendarProps }: DatePickerProps): import("react/jsx-runtime").JSX.Element;
36
- export declare function DateRangePicker({ value, defaultValue, onChange, presets, placeholder, displayFormat, className, contentClassName, clearable, numberOfMonths, ...calendarProps }: DateRangePickerProps): import("react/jsx-runtime").JSX.Element;
35
+ export declare function DatePicker({ value, defaultValue, onChange, presets, placeholder, displayFormat, className, contentClassName, clearable, captionLayout, startMonth, endMonth, ...calendarProps }: DatePickerProps): import("react/jsx-runtime").JSX.Element;
36
+ export declare function DateRangePicker({ value, defaultValue, onChange, presets, placeholder, displayFormat, className, contentClassName, clearable, numberOfMonths, captionLayout, startMonth, endMonth, ...calendarProps }: DateRangePickerProps): import("react/jsx-runtime").JSX.Element;
37
37
  export type { DatePickerProps, DateRangePickerProps, DateRangeValue };
38
38
  //# sourceMappingURL=date-picker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"date-picker.d.ts","sourceRoot":"","sources":["../../src/components/date-picker.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAIxC,KAAK,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,QAAQ,CAAC,CAAA;AAE1D,KAAK,YAAY,GAAG;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB,CAAA;AAED,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;CAClB,CAAA;AAED,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,cAAc,GAAG,IAAI,CAAA;CAC7B,CAAA;AAED,KAAK,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC,GAAG;IACzE,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,KAAK,eAAe,GAAG,WAAW,GAAG;IACnC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IACzC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAA;CACzB,CAAA;AAED,KAAK,oBAAoB,GAAG,WAAW,GAAG;IACxC,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;IAC7B,YAAY,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;IACpC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAA;IACjD,OAAO,CAAC,EAAE,WAAW,EAAE,CAAA;CACxB,CAAA;AAqJD,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,OAAY,EACZ,WAA2B,EAC3B,aAAqB,EACrB,SAAS,EACT,gBAAgB,EAChB,SAAgB,EAChB,GAAG,aAAa,EACjB,EAAE,eAAe,2CA2DjB;AAED,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,OAAY,EACZ,WAAiC,EACjC,aAA0B,EAC1B,SAAS,EACT,gBAAgB,EAChB,SAAgB,EAChB,cAAkB,EAClB,GAAG,aAAa,EACjB,EAAE,oBAAoB,2CA6EtB;AAED,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,cAAc,EAAE,CAAA"}
1
+ {"version":3,"file":"date-picker.d.ts","sourceRoot":"","sources":["../../src/components/date-picker.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAIxC,KAAK,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,QAAQ,CAAC,CAAA;AAE1D,KAAK,YAAY,GAAG;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB,CAAA;AAED,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;CAClB,CAAA;AAED,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,cAAc,GAAG,IAAI,CAAA;CAC7B,CAAA;AAED,KAAK,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC,GAAG;IACzE,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,KAAK,eAAe,GAAG,WAAW,GAAG;IACnC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IACzC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAA;CACzB,CAAA;AAED,KAAK,oBAAoB,GAAG,WAAW,GAAG;IACxC,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;IAC7B,YAAY,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;IACpC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAA;IACjD,OAAO,CAAC,EAAE,WAAW,EAAE,CAAA;CACxB,CAAA;AA+JD,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,OAAY,EACZ,WAA2B,EAC3B,aAAqB,EACrB,SAAS,EACT,gBAAgB,EAChB,SAAgB,EAChB,aAA0B,EAC1B,UAAU,EACV,QAAQ,EACR,GAAG,aAAa,EACjB,EAAE,eAAe,2CAkEjB;AAED,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,OAAY,EACZ,WAAiC,EACjC,aAA0B,EAC1B,SAAS,EACT,gBAAgB,EAChB,SAAgB,EAChB,cAAkB,EAClB,aAA0B,EAC1B,UAAU,EACV,QAAQ,EACR,GAAG,aAAa,EACjB,EAAE,oBAAoB,2CAoFtB;AAED,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,cAAc,EAAE,CAAA"}
@@ -58,7 +58,16 @@ function RangePresets({ presets, onSelect }) {
58
58
  return null;
59
59
  return (_jsxs(_Fragment, { children: [_jsx("div", { className: "flex flex-wrap gap-2 p-3 pb-0", children: presets.map((preset) => (_jsx(Button, { type: "button", variant: "outline", size: "sm", onClick: () => onSelect(preset.value), children: preset.label }, preset.label))) }), _jsx("div", { className: "px-3 pt-3", children: _jsx(Separator, {}) })] }));
60
60
  }
61
- export function DatePicker({ value, defaultValue, onChange, presets = [], placeholder = "Pick a date", displayFormat = "PPP", className, contentClassName, clearable = true, ...calendarProps }) {
61
+ /**
62
+ * Default visible range when `captionLayout` is a dropdown variant.
63
+ * react-day-picker requires `startMonth`/`endMonth` for the year dropdown
64
+ * to enumerate options — without them only the current year is shown. We
65
+ * default to a 100-year window (-90 → +10) so DOB pickers and forward-looking
66
+ * pickers both work without needing per-callsite configuration.
67
+ */
68
+ const DEFAULT_DROPDOWN_START_MONTH = new Date(new Date().getFullYear() - 90, 0, 1);
69
+ const DEFAULT_DROPDOWN_END_MONTH = new Date(new Date().getFullYear() + 10, 11, 31);
70
+ export function DatePicker({ value, defaultValue, onChange, presets = [], placeholder = "Pick a date", displayFormat = "PPP", className, contentClassName, clearable = true, captionLayout = "dropdown", startMonth, endMonth, ...calendarProps }) {
62
71
  const [open, setOpen] = React.useState(false);
63
72
  const [internalValue, setInternalValue] = React.useState(defaultValue ?? null);
64
73
  const isControlled = value !== undefined;
@@ -80,12 +89,12 @@ export function DatePicker({ value, defaultValue, onChange, presets = [], placeh
80
89
  return (_jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsx(PopoverTrigger, { render: _jsx(DatePickerTrigger, { className: className, empty: !selectedDate }), children: label }), _jsxs(PopoverContent, { align: "start", className: cn("w-auto p-0", contentClassName), children: [_jsx(SinglePresets, { presets: presets, onSelect: (presetValue) => {
81
90
  handleChange(presetValue);
82
91
  setOpen(false);
83
- } }), _jsx(Calendar, { mode: "single", selected: selectedDate, onSelect: handleSelect, defaultMonth: selectedDate, ...calendarProps }), _jsx(DatePickerFooter, { clearable: clearable, hasValue: Boolean(selectedDate), onClear: () => {
92
+ } }), _jsx(Calendar, { mode: "single", selected: selectedDate, onSelect: handleSelect, defaultMonth: selectedDate, captionLayout: captionLayout, startMonth: startMonth ?? (captionLayout !== "label" ? DEFAULT_DROPDOWN_START_MONTH : undefined), endMonth: endMonth ?? (captionLayout !== "label" ? DEFAULT_DROPDOWN_END_MONTH : undefined), ...calendarProps }), _jsx(DatePickerFooter, { clearable: clearable, hasValue: Boolean(selectedDate), onClear: () => {
84
93
  handleChange(null);
85
94
  setOpen(false);
86
95
  } })] })] }));
87
96
  }
88
- export function DateRangePicker({ value, defaultValue, onChange, presets = [], placeholder = "Pick a date range", displayFormat = "LLL d, y", className, contentClassName, clearable = true, numberOfMonths = 2, ...calendarProps }) {
97
+ export function DateRangePicker({ value, defaultValue, onChange, presets = [], placeholder = "Pick a date range", displayFormat = "LLL d, y", className, contentClassName, clearable = true, numberOfMonths = 2, captionLayout = "dropdown", startMonth, endMonth, ...calendarProps }) {
89
98
  const [open, setOpen] = React.useState(false);
90
99
  const [internalValue, setInternalValue] = React.useState(defaultValue ?? null);
91
100
  const isControlled = value !== undefined;
@@ -117,7 +126,7 @@ export function DateRangePicker({ value, defaultValue, onChange, presets = [], p
117
126
  return (_jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsx(PopoverTrigger, { render: _jsx(DatePickerTrigger, { className: className, empty: !hasRangeValue(selectedValue) }), children: formatRangeLabel(selectedValue, displayFormat, placeholder) }), _jsxs(PopoverContent, { align: "start", className: cn("w-auto p-0", contentClassName), children: [_jsx(RangePresets, { presets: presets, onSelect: (presetValue) => {
118
127
  handleChange(presetValue);
119
128
  setOpen(false);
120
- } }), _jsx(Calendar, { mode: "range", selected: selectedRange, onSelect: handleSelect, defaultMonth: selectedRange?.from, numberOfMonths: numberOfMonths, ...calendarProps }), _jsx(DatePickerFooter, { clearable: clearable, hasValue: hasRangeValue(selectedValue), onClear: () => {
129
+ } }), _jsx(Calendar, { mode: "range", selected: selectedRange, onSelect: handleSelect, defaultMonth: selectedRange?.from, numberOfMonths: numberOfMonths, captionLayout: captionLayout, startMonth: startMonth ?? (captionLayout !== "label" ? DEFAULT_DROPDOWN_START_MONTH : undefined), endMonth: endMonth ?? (captionLayout !== "label" ? DEFAULT_DROPDOWN_END_MONTH : undefined), ...calendarProps }), _jsx(DatePickerFooter, { clearable: clearable, hasValue: hasRangeValue(selectedValue), onClear: () => {
121
130
  handleChange(null);
122
131
  setOpen(false);
123
132
  } })] })] }));
@@ -1 +1 @@
1
- {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/components/select.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEjE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AA0B9B,iBAAS,MAAM,CAAC,KAAK,EAAE,QAAQ,SAAS,OAAO,GAAG,SAAS,GAAG,KAAK,EAAE,EACnE,QAAQ,EACR,KAAK,EACL,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,2CAY7C;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,2CAQxE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,2CAQxE;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,IAAgB,EAChB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,GAAG;IACjC,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAA;CACxB,2CAiBA;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,QAAQ,EACR,IAAe,EACf,UAAc,EACd,KAAgB,EAChB,WAAe,EACf,oBAA2B,EAC3B,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,GAC5B,IAAI,CACF,eAAe,CAAC,UAAU,CAAC,KAAK,EAChC,OAAO,GAAG,aAAa,GAAG,MAAM,GAAG,YAAY,GAAG,sBAAsB,CACzE,2CA2BF;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,UAAU,CAAC,KAAK,2CAQ7E;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,2CAsBhF;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,SAAS,CAAC,KAAK,2CAQhF;AAED,iBAAS,oBAAoB,CAAC,EAC5B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,aAAa,CAAC,2CAa5D;AAED,iBAAS,sBAAsB,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,eAAe,CAAC,2CAa9D;AAED,OAAO,EACL,MAAM,EACN,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,WAAW,GACZ,CAAA"}
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/components/select.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEjE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AA6B9B,iBAAS,MAAM,CAAC,KAAK,EAAE,QAAQ,SAAS,OAAO,GAAG,SAAS,GAAG,KAAK,EAAE,EACnE,QAAQ,EACR,KAAK,EACL,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,2CAY7C;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,2CAQxE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,2CAQxE;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,IAAgB,EAChB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,GAAG;IACjC,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAA;CACxB,2CAiBA;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,QAAQ,EACR,IAAe,EACf,UAAc,EACd,KAAgB,EAChB,WAAe,EACf,oBAA2B,EAC3B,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,GAC5B,IAAI,CACF,eAAe,CAAC,UAAU,CAAC,KAAK,EAChC,OAAO,GAAG,aAAa,GAAG,MAAM,GAAG,YAAY,GAAG,sBAAsB,CACzE,2CA2BF;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,UAAU,CAAC,KAAK,2CAQ7E;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,2CAsBhF;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,SAAS,CAAC,KAAK,2CAQhF;AAED,iBAAS,oBAAoB,CAAC,EAC5B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,aAAa,CAAC,2CAa5D;AAED,iBAAS,sBAAsB,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,eAAe,CAAC,2CAa9D;AAED,OAAO,EACL,MAAM,EACN,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,WAAW,GACZ,CAAA"}
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
3
  import { Select as SelectPrimitive } from "@base-ui/react/select";
3
4
  import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react";
@@ -5,7 +6,9 @@ import * as React from "react";
5
6
  import { cn } from "../lib/utils.js";
6
7
  // Walks `SelectContent` children to harvest `<SelectItem value="..."> label </SelectItem>`
7
8
  // pairs. Feeds the resulting map to base-ui's `items` prop so `<Select.Value />` renders
8
- // the label instead of the raw value — matches the shadcn/Radix Select expectation.
9
+ // the label instead of the raw value — matches the shadcn/Radix Select expectation, and
10
+ // keeps the localized labels working for callsites that pass children only (no explicit
11
+ // `items` prop).
9
12
  function collectSelectItems(children, out = {}) {
10
13
  React.Children.forEach(children, (child) => {
11
14
  if (!React.isValidElement(child))
@@ -37,16 +40,16 @@ function SelectValue({ className, ...props }) {
37
40
  return (_jsx(SelectPrimitive.Value, { "data-slot": "select-value", className: cn("flex flex-1 text-left", className), ...props }));
38
41
  }
39
42
  function SelectTrigger({ className, size = "default", children, ...props }) {
40
- return (_jsxs(SelectPrimitive.Trigger, { "data-slot": "select-trigger", "data-size": size, className: cn("flex w-fit items-center justify-between gap-1.5 rounded-md border border-input bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className), ...props, children: [children, _jsx(SelectPrimitive.Icon, { render: _jsx(ChevronDownIcon, { className: "pointer-events-none size-4 text-muted-foreground" }) })] }));
43
+ return (_jsxs(SelectPrimitive.Trigger, { "data-slot": "select-trigger", "data-size": size, className: cn("flex w-fit items-center justify-between gap-1.5 rounded-lg border border-input bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className), ...props, children: [children, _jsx(SelectPrimitive.Icon, { render: _jsx(ChevronDownIcon, { className: "pointer-events-none size-4 text-muted-foreground" }) })] }));
41
44
  }
42
45
  function SelectContent({ className, children, side = "bottom", sideOffset = 4, align = "center", alignOffset = 0, alignItemWithTrigger = true, ...props }) {
43
- return (_jsx(SelectPrimitive.Portal, { children: _jsx(SelectPrimitive.Positioner, { side: side, sideOffset: sideOffset, align: align, alignOffset: alignOffset, alignItemWithTrigger: alignItemWithTrigger, className: "isolate z-50", children: _jsxs(SelectPrimitive.Popup, { "data-slot": "select-content", "data-align-trigger": alignItemWithTrigger, className: cn("relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className), ...props, children: [_jsx(SelectScrollUpButton, {}), _jsx(SelectPrimitive.List, { children: children }), _jsx(SelectScrollDownButton, {})] }) }) }));
46
+ return (_jsx(SelectPrimitive.Portal, { children: _jsx(SelectPrimitive.Positioner, { side: side, sideOffset: sideOffset, align: align, alignOffset: alignOffset, alignItemWithTrigger: alignItemWithTrigger, className: "isolate z-50", children: _jsxs(SelectPrimitive.Popup, { "data-slot": "select-content", "data-align-trigger": alignItemWithTrigger, className: cn("relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className), ...props, children: [_jsx(SelectScrollUpButton, {}), _jsx(SelectPrimitive.List, { children: children }), _jsx(SelectScrollDownButton, {})] }) }) }));
44
47
  }
45
48
  function SelectLabel({ className, ...props }) {
46
- return (_jsx(SelectPrimitive.GroupLabel, { "data-slot": "select-label", className: cn("px-2 py-1.5 text-xs text-muted-foreground", className), ...props }));
49
+ return (_jsx(SelectPrimitive.GroupLabel, { "data-slot": "select-label", className: cn("px-1.5 py-1 text-xs text-muted-foreground", className), ...props }));
47
50
  }
48
51
  function SelectItem({ className, children, ...props }) {
49
- return (_jsxs(SelectPrimitive.Item, { "data-slot": "select-item", className: cn("relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2", className), ...props, children: [_jsx(SelectPrimitive.ItemText, { className: "flex flex-1 shrink-0 gap-2 whitespace-nowrap", children: children }), _jsx(SelectPrimitive.ItemIndicator, { render: _jsx("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center" }), children: _jsx(CheckIcon, { className: "pointer-events-none" }) })] }));
52
+ return (_jsxs(SelectPrimitive.Item, { "data-slot": "select-item", className: cn("relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2", className), ...props, children: [_jsx(SelectPrimitive.ItemText, { className: "flex flex-1 shrink-0 gap-2 whitespace-nowrap", children: children }), _jsx(SelectPrimitive.ItemIndicator, { render: _jsx("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center", children: _jsx(CheckIcon, { className: "pointer-events-none" }) }) })] }));
50
53
  }
51
54
  function SelectSeparator({ className, ...props }) {
52
55
  return (_jsx(SelectPrimitive.Separator, { "data-slot": "select-separator", className: cn("pointer-events-none -mx-1 my-1 h-px bg-border", className), ...props }));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voyantjs/ui",
3
- "version": "0.52.0",
3
+ "version": "0.52.2",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -34,10 +34,10 @@
34
34
  "tw-animate-css": "^1.3.5",
35
35
  "vaul": "^1.1.2",
36
36
  "zod": "^4.3.6",
37
- "@voyantjs/i18n": "0.52.0",
38
- "@voyantjs/notifications": "0.52.0",
39
- "@voyantjs/notifications-react": "0.52.0",
40
- "@voyantjs/utils": "0.52.0"
37
+ "@voyantjs/i18n": "0.52.2",
38
+ "@voyantjs/notifications": "0.52.2",
39
+ "@voyantjs/notifications-react": "0.52.2",
40
+ "@voyantjs/utils": "0.52.2"
41
41
  },
42
42
  "peerDependencies": {
43
43
  "recharts": "^3.0.0"