@mdigital_ui/ui 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -16,47 +16,19 @@ Modern React component library built with Tailwind CSS v4, designed for multi-br
16
16
  ## Installation
17
17
 
18
18
  ```bash
19
- npm install @mdigital/ui
19
+ npm install @mdigital_ui/ui
20
20
  ```
21
21
 
22
+ **That's it!** All dependencies are included. Tree-shaking ensures only the components you import end up in your production bundle.
23
+
22
24
  ### Peer Dependencies
23
25
 
24
- Required dependencies:
26
+ You need to have these in your project:
25
27
 
26
28
  ```bash
27
29
  npm install react react-dom tailwindcss
28
30
  ```
29
31
 
30
- Optional dependencies (install only what you need based on components you use):
31
-
32
- ```bash
33
- # For advanced components (Modal, Tooltip, Dropdown, Popover)
34
- npm install @radix-ui/react-dialog @radix-ui/react-popover @radix-ui/react-tooltip
35
-
36
- # For icons
37
- npm install lucide-react
38
-
39
- # For DatePicker
40
- npm install react-datepicker dayjs
41
-
42
- # For Table
43
- npm install @tanstack/react-table @tanstack/react-virtual
44
-
45
- # For Carousel
46
- npm install swiper
47
-
48
- # For Command
49
- npm install cmdk
50
-
51
- # For Charts
52
- npm install recharts
53
-
54
- # For Drawer
55
- npm install vaul
56
- ```
57
-
58
- See [TREE_SHAKING_GUIDE.md](./TREE_SHAKING_GUIDE.md) for detailed information on optimizing your bundle.
59
-
60
32
  ## Quick Start
61
33
 
62
34
  ### 1. Configure Tailwind
@@ -104,39 +76,33 @@ function App() {
104
76
 
105
77
  ## Import Patterns
106
78
 
107
- ### Subpath Imports (Recommended for Tree-Shaking)
108
-
109
- For optimal bundle size and to avoid installing unnecessary dependencies:
79
+ ### Subpath Imports (Recommended)
110
80
 
111
81
  ```tsx
112
- import Button from '@mdigital/ui/button'
113
- import Input from '@mdigital/ui/input'
114
- import Select from '@mdigital/ui/select'
82
+ import Button from '@mdigital_ui/ui/button'
83
+ import Input from '@mdigital_ui/ui/input'
84
+ import Table from '@mdigital_ui/ui/table'
115
85
  ```
116
86
 
117
- **Benefits:**
118
- - Only bundles the components you use
119
- - Avoids peer dependency warnings for unused components
120
- - Fastest build times
87
+ **Tree-shaking works automatically:**
88
+ - Import only `Button`? Only Button code ends up in your bundle
89
+ - Import `Table`? Table + @tanstack/react-table are bundled
90
+ - Don't import `Carousel`? Swiper never touches your bundle
121
91
 
122
- ### Named Imports (Requires All Peer Dependencies)
123
-
124
- If you've installed all optional peer dependencies, you can use named imports:
92
+ ### Named Imports
125
93
 
126
94
  ```tsx
127
- import { Button, Input, Select, Table, DatePicker } from '@mdigital/ui'
95
+ import { Button, Input, Select } from '@mdigital_ui/ui'
128
96
  ```
129
97
 
130
- **Note:** This requires installing all optional peer dependencies, even for components you don't use. Your bundler may fail if dependencies for unused components aren't installed.
98
+ Both import styles work identically. Use whichever you prefer.
131
99
 
132
100
  ### Type Imports
133
101
 
134
102
  ```tsx
135
- import type { ButtonProps, InputProps } from '@mdigital/ui'
103
+ import type { ButtonProps, InputProps } from '@mdigital_ui/ui'
136
104
  ```
137
105
 
138
- **See [TREE_SHAKING_GUIDE.md](./TREE_SHAKING_GUIDE.md) for detailed import strategies.**
139
-
140
106
  ## Theming
141
107
 
142
108
  ### CSS Variable Overrides
@@ -1,3 +1,3 @@
1
- export { carousel_default as default } from '../chunk-4OMLQCUV.js';
1
+ export { carousel_default as default } from '../chunk-C3MX5EXL.js';
2
2
  //# sourceMappingURL=index.js.map
3
3
  //# sourceMappingURL=index.js.map
@@ -2,7 +2,6 @@ import { Popover, PopoverTrigger, PopoverContent } from './chunk-3PFA3YG6.js';
2
2
  import { cn, iconSizes } from './chunk-YNNAOXU5.js';
3
3
  import React from 'react';
4
4
  import ReactDatePicker from 'react-datepicker';
5
- import 'react-datepicker/dist/react-datepicker.css';
6
5
  import { Calendar, X, Clock, ChevronsLeft, ChevronsRight, ChevronLeft, ChevronRight } from 'lucide-react';
7
6
  import { cva } from 'class-variance-authority';
8
7
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -1098,5 +1097,5 @@ var DatePicker = Object.assign(DatePickerComponent, {
1098
1097
  });
1099
1098
 
1100
1099
  export { DatePicker, RangePickerComponent, TimePickerComponent };
1101
- //# sourceMappingURL=chunk-7AEGBABZ.js.map
1102
- //# sourceMappingURL=chunk-7AEGBABZ.js.map
1100
+ //# sourceMappingURL=chunk-52M2PO3O.js.map
1101
+ //# sourceMappingURL=chunk-52M2PO3O.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/date-picker/utils.ts","../src/date-picker/index.tsx"],"names":["start"],"mappings":"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","file":"chunk-52M2PO3O.js","sourcesContent":["import { cva } from 'class-variance-authority'\n\nexport const pickerInputVariants = cva(\n 'w-full focus:border-primary placeholder:text-text-muted disabled:opacity-50 disabled:cursor-not-allowed outline-none text-text-primary transition-colors',\n {\n variants: {\n variant: {\n outline: 'bg-background border rounded-md',\n filled: 'bg-surface border border-transparent rounded-md',\n },\n status: {\n default: 'border-border hover:border-primary/50',\n error: 'border-error',\n warning: 'border-warning',\n info: 'border-info',\n success: 'border-success',\n },\n size: {\n xs: 'h-8 px-2.5 text-xs',\n sm: 'h-[var(--input-height-sm)] px-3 text-sm',\n md: 'h-[var(--input-height-md)] px-4 text-base',\n lg: 'h-[var(--input-height-lg)] px-5 text-lg',\n },\n fullWidth: {\n true: 'w-full',\n false: 'max-w-full',\n },\n },\n defaultVariants: {\n variant: 'outline',\n status: 'default',\n size: 'md',\n fullWidth: true,\n },\n },\n)\n\n// Shared date-picker styles for react-datepicker\nexport const datePickerStyles = `\n [&_.react-datepicker]:!bg-background\n [&_.react-datepicker]:!border-border\n [&_.react-datepicker]:!text-text-primary\n [&_.react-datepicker]:!flex\n [&_.react-datepicker]:!gap-0\n [&_.react-datepicker__header]:!bg-transparent\n [&_.react-datepicker__header]:!border-none\n [&_.react-datepicker__header]:!p-0\n [&_.react-datepicker__month-container]:!flex\n [&_.react-datepicker__month-container]:!flex-col\n [&_.react-datepicker__day--selected]:!bg-primary\n [&_.react-datepicker__day--keyboard-selected]:!bg-primary/50\n [&_.react-datepicker__day]:hover:!bg-surface\n [&_.react-datepicker__day-name]:!text-text-muted\n [&_.react-datepicker__current-month]:!hidden\n [&_.react-datepicker__navigation]:!hidden\n [&_.react-datepicker__time-container]:!border-border\n [&_.react-datepicker__time-list-item--selected]:!bg-primary\n [&_.react-datepicker__time-list-item--selected]:!text-white\n [&_.react-datepicker__time-list-item]:hover:!bg-surface\n [&_.react-datepicker__time-list]:!bg-background\n [&_.react-datepicker__day--in-selecting-range]:!bg-primary/30\n [&_.react-datepicker__day--in-range]:!bg-primary/10\n`\n","import React from 'react'\nimport ReactDatePicker from 'react-datepicker'\n\n/**\n * IMPORTANT: Import the DatePicker CSS in your app's main CSS file:\n * @import 'react-datepicker/dist/react-datepicker.css';\n */\n\nimport {\n Calendar,\n ChevronLeft,\n ChevronRight,\n ChevronsLeft,\n ChevronsRight,\n Clock,\n X,\n} from 'lucide-react'\n\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover'\nimport { cn, iconSizes } from '../utils'\nimport type {\n DatePickerProps,\n RangePickerProps,\n TimePickerProps,\n} from './types'\nimport { datePickerStyles, pickerInputVariants } from './utils'\n\n// Year Selector Component\ninterface YearSelectorProps {\n date: Date\n onYearSelect: (year: number) => void\n onDecadeChange: (year: number) => void\n}\n\nconst YearSelector: React.FC<YearSelectorProps> = ({\n date,\n onYearSelect,\n onDecadeChange,\n}) => {\n const currentYear = date.getFullYear()\n const startYear = Math.floor(currentYear / 10) * 10\n const years = Array.from({ length: 12 }, (_, i) => startYear - 1 + i)\n\n return (\n <div className=\"p-4 bg-background\">\n <div className=\"flex items-center justify-between mb-4\">\n <button\n type=\"button\"\n onClick={() => onDecadeChange(currentYear - 10)}\n className=\"p-1 rounded hover:bg-muted text-text-primary transition-colors\"\n aria-label=\"Previous decade\"\n >\n <ChevronsLeft className={iconSizes.sm} />\n </button>\n <div className=\"text-sm font-medium text-text-primary\">\n {startYear}-{startYear + 9}\n </div>\n <button\n type=\"button\"\n onClick={() => onDecadeChange(currentYear + 10)}\n className=\"p-1 rounded hover:bg-muted text-text-primary transition-colors\"\n aria-label=\"Next decade\"\n >\n <ChevronsRight className={iconSizes.sm} />\n </button>\n </div>\n <div className=\"grid grid-cols-3 gap-2\">\n {years.map((year) => (\n <button\n key={year}\n type=\"button\"\n onClick={() => onYearSelect(year)}\n className={cn(\n 'px-4 py-2 rounded text-sm font-medium transition-colors',\n year === currentYear\n ? 'bg-primary text-white'\n : year < startYear || year > startYear + 9\n ? 'text-text-muted opacity-50'\n : 'text-text-primary hover:bg-surface',\n )}\n >\n {year}\n </button>\n ))}\n </div>\n </div>\n )\n}\n\n// Month Selector Component\ninterface MonthSelectorProps {\n date: Date\n onMonthSelect: (month: number) => void\n onYearClick: () => void\n onYearChange: (year: number) => void\n}\n\nconst MonthSelector: React.FC<MonthSelectorProps> = ({\n date,\n onMonthSelect,\n onYearClick,\n onYearChange,\n}) => {\n const months = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec',\n ]\n const currentMonth = date.getMonth()\n const currentYear = date.getFullYear()\n\n return (\n <div className=\"p-4 bg-background\">\n <div className=\"flex items-center justify-between mb-4\">\n <button\n type=\"button\"\n onClick={() => onYearChange(currentYear - 1)}\n className=\"p-1 rounded hover:bg-muted text-text-primary transition-colors\"\n aria-label=\"Previous year\"\n >\n <ChevronsLeft className={iconSizes.sm} />\n </button>\n <button\n type=\"button\"\n onClick={onYearClick}\n className=\"text-sm font-medium text-text-primary hover:text-primary transition-colors\"\n >\n {currentYear}\n </button>\n <button\n type=\"button\"\n onClick={() => onYearChange(currentYear + 1)}\n className=\"p-1 rounded hover:bg-muted text-text-primary transition-colors\"\n aria-label=\"Next year\"\n >\n <ChevronsRight className={iconSizes.sm} />\n </button>\n </div>\n <div className=\"grid grid-cols-3 gap-2\">\n {months.map((month, index) => (\n <button\n key={month}\n type=\"button\"\n onClick={() => onMonthSelect(index)}\n className={cn(\n 'px-4 py-2 rounded text-sm font-medium transition-colors',\n index === currentMonth\n ? 'bg-primary text-white'\n : 'text-text-primary hover:bg-surface',\n )}\n >\n {month}\n </button>\n ))}\n </div>\n </div>\n )\n}\n\n// Custom Calendar Header Component\ninterface CustomHeaderProps {\n date: Date\n decreaseMonth: () => void\n increaseMonth: () => void\n decreaseYear: () => void\n increaseYear: () => void\n prevMonthButtonDisabled: boolean\n nextMonthButtonDisabled: boolean\n prevYearButtonDisabled: boolean\n nextYearButtonDisabled: boolean\n showMonthSelector?: boolean\n onMonthClick?: () => void\n onYearClick?: () => void\n}\n\nconst CustomCalendarHeader: React.FC<CustomHeaderProps> = ({\n date,\n decreaseMonth,\n increaseMonth,\n decreaseYear,\n increaseYear,\n prevMonthButtonDisabled,\n nextMonthButtonDisabled,\n prevYearButtonDisabled,\n nextYearButtonDisabled,\n showMonthSelector = false,\n onMonthClick,\n onYearClick,\n}) => {\n const monthName = date.toLocaleDateString('en-US', { month: 'long' })\n const year = date.getFullYear()\n\n return (\n <div className=\"flex items-center justify-between px-4 py-3 bg-surface border-b border-border\">\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={decreaseYear}\n disabled={prevYearButtonDisabled || showMonthSelector}\n className=\"p-1 rounded hover:bg-muted text-text-primary disabled:opacity-30 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Previous year\"\n >\n <ChevronsLeft className={iconSizes.sm} />\n </button>\n <button\n type=\"button\"\n onClick={decreaseMonth}\n disabled={prevMonthButtonDisabled || showMonthSelector}\n className=\"p-1 rounded hover:bg-muted text-text-primary disabled:opacity-30 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Previous month\"\n >\n <ChevronLeft className={iconSizes.sm} />\n </button>\n </div>\n\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={onMonthClick}\n className=\"text-sm font-medium text-text-primary hover:text-primary transition-colors\"\n >\n {monthName}\n </button>\n <button\n type=\"button\"\n onClick={onYearClick}\n className=\"text-sm font-medium text-text-primary hover:text-primary transition-colors\"\n >\n {year}\n </button>\n </div>\n\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={increaseMonth}\n disabled={nextMonthButtonDisabled || showMonthSelector}\n className=\"p-1 rounded hover:bg-muted text-text-primary disabled:opacity-30 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Next month\"\n >\n <ChevronRight className={iconSizes.sm} />\n </button>\n <button\n type=\"button\"\n onClick={increaseYear}\n disabled={nextYearButtonDisabled || showMonthSelector}\n className=\"p-1 rounded hover:bg-muted text-text-primary disabled:opacity-30 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Next year\"\n >\n <ChevronsRight className={iconSizes.sm} />\n </button>\n </div>\n </div>\n )\n}\n\n// Base Picker Wrapper Component\ninterface BasePickerWrapperProps {\n label?: string\n error?: string\n warning?: string\n info?: string\n success?: string\n helperText?: string\n messagePosition?: 'top' | 'bottom'\n required?: boolean\n fullWidth?: boolean\n children: React.ReactNode\n}\n\nconst PickerWrapper: React.FC<BasePickerWrapperProps> = ({\n label,\n error,\n warning,\n info,\n success,\n helperText,\n messagePosition = 'bottom',\n required = false,\n fullWidth = true,\n children,\n}) => {\n let status: 'default' | 'error' | 'warning' | 'info' | 'success' = 'default'\n const helperMessage = error || warning || info || success || helperText\n\n if (error) {\n status = 'error'\n } else if (warning) {\n status = 'warning'\n } else if (success) {\n status = 'success'\n } else if (info) {\n status = 'info'\n }\n\n if (!label && !helperMessage) return <>{children}</>\n\n return (\n <div\n className={cn(\n 'w-full flex flex-col relative',\n !fullWidth && 'inline-block',\n )}\n >\n <div className=\"flex gap-2 items-center relative mb-0.5\">\n {label && (\n <p className=\"text-sm font-medium text-text-muted\">\n {label}\n {required && <span className=\"text-error ml-1\">*</span>}\n </p>\n )}\n {helperMessage && messagePosition === 'top' && (\n <p\n id={`picker-helper-${status}`}\n className={cn(\n 'text-xs',\n status === 'error' && 'text-error',\n status === 'warning' && 'text-warning',\n status === 'info' && 'text-info',\n status === 'success' && 'text-success',\n status === 'default' && 'text-text-muted',\n )}\n >\n {helperMessage}\n </p>\n )}\n </div>\n {children}\n {helperMessage && messagePosition === 'bottom' && (\n <p\n id={`picker-helper-${status}`}\n className={cn(\n 'text-xs mt-0.5',\n status === 'error' && 'text-error',\n status === 'warning' && 'text-warning',\n status === 'info' && 'text-info',\n status === 'success' && 'text-success',\n status === 'default' && 'text-text-muted',\n )}\n >\n {helperMessage}\n </p>\n )}\n </div>\n )\n}\n\n// DatePicker Component\nconst DatePickerComponent = React.memo<DatePickerProps>(\n ({\n variant = 'outline',\n size = 'md',\n label,\n error,\n warning,\n info,\n success,\n helperText,\n messagePosition = 'bottom',\n placeholder = 'Select date...',\n disabled = false,\n required = false,\n clearable = false,\n fullWidth = true,\n className,\n value,\n defaultValue,\n onChange,\n minDate,\n maxDate,\n dateFormat = 'MM/dd/yyyy',\n }) => {\n const [internalValue, setInternalValue] = React.useState<Date | null>(\n defaultValue || null,\n )\n const currentValue = value !== undefined ? value : internalValue\n\n const [isOpen, setIsOpen] = React.useState(false)\n const [showMonthSelector, setShowMonthSelector] = React.useState(false)\n const [showYearSelector, setShowYearSelector] = React.useState(false)\n const [viewDate, setViewDate] = React.useState(currentValue || new Date())\n const [hoverDate, setHoverDate] = React.useState<Date | null>(null)\n const datePickerRef = React.useRef<ReactDatePicker>(null)\n\n let status: 'default' | 'error' | 'warning' | 'info' | 'success' = 'default'\n if (error) status = 'error'\n else if (warning) status = 'warning'\n else if (success) status = 'success'\n else if (info) status = 'info'\n\n const handleDateChange = (date: Date | null) => {\n if (value === undefined) {\n setInternalValue(date)\n }\n onChange?.(date)\n setHoverDate(null)\n setIsOpen(false)\n setShowMonthSelector(false)\n setShowYearSelector(false)\n }\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation()\n if (value === undefined) {\n setInternalValue(null)\n }\n onChange?.(null)\n }\n\n const handleMonthSelect = (month: number) => {\n const newDate = new Date(viewDate)\n newDate.setMonth(month)\n setViewDate(newDate)\n setShowMonthSelector(false)\n }\n\n const handleYearSelect = (year: number) => {\n const newDate = new Date(viewDate)\n newDate.setFullYear(year)\n setViewDate(newDate)\n setShowYearSelector(false)\n setShowMonthSelector(true)\n }\n\n const handleYearChange = (year: number) => {\n const newDate = new Date(viewDate)\n newDate.setFullYear(year)\n setViewDate(newDate)\n }\n\n const handleDecadeChange = (year: number) => {\n const newDate = new Date(viewDate)\n newDate.setFullYear(year)\n setViewDate(newDate)\n }\n\n const showClear = clearable && currentValue && !disabled\n\n const formatDate = (date: Date) => {\n return new Date(date).toLocaleDateString('en-US', {\n month: '2-digit',\n day: '2-digit',\n year: 'numeric',\n })\n }\n\n const getDisplayValue = () => {\n if (hoverDate) {\n return { confirmed: '', preview: formatDate(hoverDate) }\n }\n if (currentValue) {\n return { confirmed: formatDate(currentValue), preview: '' }\n }\n return { confirmed: '', preview: '' }\n }\n\n const { confirmed, preview } = getDisplayValue()\n\n const customHeader = (props: any) => (\n <CustomCalendarHeader\n {...props}\n showMonthSelector={showMonthSelector}\n onMonthClick={() => setShowMonthSelector(!showMonthSelector)}\n onYearClick={() => setShowYearSelector(true)}\n />\n )\n\n const triggerButton = (\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => setIsOpen(!isOpen)}\n className={cn(\n pickerInputVariants({ variant, status, size, fullWidth }),\n 'pl-10 flex items-center justify-start cursor-pointer',\n showClear && 'pr-10',\n className,\n )}\n >\n {confirmed || preview ? (\n <>\n {confirmed && <span>{confirmed}</span>}\n {preview && <span className=\"text-text-muted\">{preview}</span>}\n </>\n ) : (\n <span className=\"text-text-muted\">{placeholder}</span>\n )}\n </button>\n )\n\n return (\n <PickerWrapper\n label={label}\n error={error}\n warning={warning}\n info={info}\n success={success}\n helperText={helperText}\n messagePosition={messagePosition}\n required={required}\n fullWidth={fullWidth}\n >\n <div className=\"relative w-full\">\n <div className=\"absolute left-3 flex items-center h-full top-0 text-text-muted pointer-events-none z-10\">\n <Calendar className={iconSizes[size]} />\n </div>\n\n <Popover\n open={isOpen}\n onOpenChange={(open) => {\n setIsOpen(open)\n if (!open) {\n setShowMonthSelector(false)\n setShowYearSelector(false)\n setHoverDate(null)\n }\n }}\n >\n <PopoverTrigger asChild>{triggerButton}</PopoverTrigger>\n\n <PopoverContent\n className=\"p-0 w-auto\"\n align=\"start\"\n sideOffset={4}\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <>\n {showYearSelector ? (\n <YearSelector\n date={viewDate}\n onYearSelect={handleYearSelect}\n onDecadeChange={handleDecadeChange}\n />\n ) : showMonthSelector ? (\n <MonthSelector\n date={viewDate}\n onMonthSelect={handleMonthSelect}\n onYearClick={() => setShowYearSelector(true)}\n onYearChange={handleYearChange}\n />\n ) : (\n <div className={datePickerStyles}>\n <ReactDatePicker\n ref={datePickerRef}\n selected={currentValue}\n onChange={handleDateChange}\n disabled={disabled}\n minDate={minDate}\n maxDate={maxDate}\n dateFormat={dateFormat}\n renderCustomHeader={customHeader}\n openToDate={viewDate}\n onMonthChange={setViewDate}\n onDayMouseEnter={setHoverDate}\n inline\n />\n </div>\n )}\n </>\n </PopoverContent>\n </Popover>\n\n {showClear && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"absolute right-3 flex items-center h-full top-0 text-text-muted hover:text-text-primary z-10\"\n aria-label=\"Clear date\"\n >\n <X className={iconSizes[size]} />\n </button>\n )}\n </div>\n </PickerWrapper>\n )\n },\n)\n\nDatePickerComponent.displayName = 'DatePicker'\n\n// RangePicker Component\nconst RangePickerComponent = React.memo<RangePickerProps>(\n ({\n variant = 'outline',\n size = 'md',\n label,\n error,\n warning,\n info,\n success,\n helperText,\n messagePosition = 'bottom',\n placeholder = 'Select date range...',\n disabled = false,\n required = false,\n clearable = false,\n fullWidth = true,\n className,\n startDate,\n endDate,\n defaultStartDate,\n defaultEndDate,\n onChange,\n minDate,\n maxDate,\n dateFormat = 'MM/dd/yyyy',\n }) => {\n const [internalStartDate, setInternalStartDate] =\n React.useState<Date | null>(defaultStartDate || null)\n const [internalEndDate, setInternalEndDate] = React.useState<Date | null>(\n defaultEndDate || null,\n )\n const currentStartDate =\n startDate !== undefined ? startDate : internalStartDate\n const currentEndDate = endDate !== undefined ? endDate : internalEndDate\n\n const [isOpen, setIsOpen] = React.useState(false)\n const [showMonthSelector, setShowMonthSelector] = React.useState(false)\n const [showYearSelector, setShowYearSelector] = React.useState(false)\n const [viewDate, setViewDate] = React.useState(\n currentStartDate || new Date(),\n )\n const [hoverDate, setHoverDate] = React.useState<Date | null>(null)\n const datePickerRef = React.useRef<ReactDatePicker>(null)\n\n let status: 'default' | 'error' | 'warning' | 'info' | 'success' = 'default'\n if (error) status = 'error'\n else if (warning) status = 'warning'\n else if (success) status = 'success'\n else if (info) status = 'info'\n\n const handleChange = (dates: [Date | null, Date | null]) => {\n if (startDate === undefined && endDate === undefined) {\n setInternalStartDate(dates[0])\n setInternalEndDate(dates[1])\n }\n onChange?.(dates)\n setHoverDate(null)\n if (dates[0] && dates[1]) {\n setIsOpen(false)\n setShowMonthSelector(false)\n setShowYearSelector(false)\n }\n }\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation()\n if (startDate === undefined && endDate === undefined) {\n setInternalStartDate(null)\n setInternalEndDate(null)\n }\n onChange?.([null, null])\n }\n\n const handleMonthSelect = (month: number) => {\n const newDate = new Date(viewDate)\n newDate.setMonth(month)\n setViewDate(newDate)\n setShowMonthSelector(false)\n }\n\n const handleYearSelect = (year: number) => {\n const newDate = new Date(viewDate)\n newDate.setFullYear(year)\n setViewDate(newDate)\n setShowYearSelector(false)\n setShowMonthSelector(true)\n }\n\n const handleYearChange = (year: number) => {\n const newDate = new Date(viewDate)\n newDate.setFullYear(year)\n setViewDate(newDate)\n }\n\n const handleDecadeChange = (year: number) => {\n const newDate = new Date(viewDate)\n newDate.setFullYear(year)\n setViewDate(newDate)\n }\n\n const showClear =\n clearable && (currentStartDate || currentEndDate) && !disabled\n\n const formatDate = (date: Date) => {\n return new Date(date).toLocaleDateString('en-US', {\n month: '2-digit',\n day: '2-digit',\n year: 'numeric',\n })\n }\n\n const getDisplayValue = () => {\n // Show hover preview when hovering over dates (with start date selected)\n if (hoverDate && currentStartDate && !currentEndDate) {\n const start = formatDate(currentStartDate)\n const hover = formatDate(hoverDate)\n return { confirmed: `${start} - `, preview: hover }\n }\n\n // Show hover preview when hovering over dates (no start date yet)\n if (hoverDate && !currentStartDate && !currentEndDate) {\n const hover = formatDate(hoverDate)\n return { confirmed: '', preview: hover }\n }\n\n if (!currentStartDate && !currentEndDate) {\n return { confirmed: '', preview: '' }\n }\n\n const start = currentStartDate ? formatDate(currentStartDate) : ''\n const end = currentEndDate ? formatDate(currentEndDate) : ''\n\n if (start && end) {\n return { confirmed: `${start} - ${end}`, preview: '' }\n }\n if (start) {\n return { confirmed: `${start}`, preview: ' - ...' }\n }\n return { confirmed: '', preview: '' }\n }\n\n const { confirmed: rangeConfirmed, preview: rangePreview } =\n getDisplayValue()\n\n const customHeader = (props: any) => (\n <CustomCalendarHeader\n {...props}\n showMonthSelector={showMonthSelector}\n onMonthClick={() => setShowMonthSelector(!showMonthSelector)}\n onYearClick={() => setShowYearSelector(true)}\n />\n )\n\n const rangeTriggerButton = (\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => setIsOpen(!isOpen)}\n className={cn(\n pickerInputVariants({ variant, status, size, fullWidth }),\n 'pl-10 flex items-center justify-start cursor-pointer',\n showClear && 'pr-10',\n className,\n )}\n >\n {rangeConfirmed || rangePreview ? (\n <>\n {rangeConfirmed && <span>{rangeConfirmed}</span>}\n {rangePreview && (\n <span className=\"text-text-muted\">{rangePreview}</span>\n )}\n </>\n ) : (\n <span className=\"text-text-muted\">{placeholder}</span>\n )}\n </button>\n )\n\n return (\n <PickerWrapper\n label={label}\n error={error}\n warning={warning}\n info={info}\n success={success}\n helperText={helperText}\n messagePosition={messagePosition}\n required={required}\n fullWidth={fullWidth}\n >\n <div className=\"relative w-full\">\n <div className=\"absolute left-3 flex items-center h-full top-0 text-text-muted pointer-events-none z-10\">\n <Calendar className={iconSizes[size]} />\n </div>\n\n <Popover\n open={isOpen}\n onOpenChange={(open) => {\n setIsOpen(open)\n if (!open) {\n setShowMonthSelector(false)\n setShowYearSelector(false)\n setHoverDate(null)\n }\n }}\n >\n <PopoverTrigger asChild>{rangeTriggerButton}</PopoverTrigger>\n\n <PopoverContent\n className=\"p-0 w-auto\"\n align=\"start\"\n sideOffset={4}\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <>\n {showYearSelector ? (\n <YearSelector\n date={viewDate}\n onYearSelect={handleYearSelect}\n onDecadeChange={handleDecadeChange}\n />\n ) : showMonthSelector ? (\n <MonthSelector\n date={viewDate}\n onMonthSelect={handleMonthSelect}\n onYearClick={() => setShowYearSelector(true)}\n onYearChange={handleYearChange}\n />\n ) : (\n <div className={datePickerStyles}>\n <ReactDatePicker\n ref={datePickerRef}\n selectsRange\n startDate={currentStartDate}\n endDate={currentEndDate}\n onChange={handleChange}\n disabled={disabled}\n minDate={minDate}\n maxDate={maxDate}\n dateFormat={dateFormat}\n renderCustomHeader={customHeader}\n openToDate={viewDate}\n onMonthChange={setViewDate}\n monthsShown={2}\n onDayMouseEnter={setHoverDate}\n inline\n />\n </div>\n )}\n </>\n </PopoverContent>\n </Popover>\n\n {showClear && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"absolute right-3 flex items-center h-full top-0 text-text-muted hover:text-text-primary z-10\"\n aria-label=\"Clear date range\"\n >\n <X className={iconSizes[size]} />\n </button>\n )}\n </div>\n </PickerWrapper>\n )\n },\n)\n\nRangePickerComponent.displayName = 'RangePicker'\n\n// Time Column Component\nconst TimeColumn: React.FC<{\n items: (string | number)[]\n selected: string | number\n onSelect: (item: any) => void\n onHover?: (item: any) => void\n onLeave?: () => void\n}> = React.memo(({ items, selected, onSelect, onHover, onLeave }) => (\n <div\n className=\"flex flex-col h-[240px] overflow-y-auto scrollbar-thin scrollbar-thumb-border scrollbar-track-background\"\n onMouseLeave={onLeave}\n >\n {items.map((item) => (\n <button\n key={item}\n type=\"button\"\n onClick={() => onSelect(item)}\n onMouseEnter={() => onHover?.(item)}\n className={cn(\n 'px-4 py-2 text-sm font-medium transition-colors text-center min-h-[40px] flex items-center justify-center',\n item === selected\n ? 'bg-surface text-text-primary font-semibold'\n : 'text-text-muted hover:bg-surface/50',\n )}\n >\n {typeof item === 'number' ? String(item).padStart(2, '0') : item}\n </button>\n ))}\n </div>\n))\n\nTimeColumn.displayName = 'TimeColumn'\n\n// Time Column Picker Component\ninterface TimeColumnPickerProps {\n value: Date | null\n onChange: (date: Date) => void\n onPreview?: (preview: string) => void\n timeFormat?: string\n}\n\nconst TimeColumnPicker: React.FC<TimeColumnPickerProps> = ({\n value,\n onChange,\n onPreview,\n timeFormat = 'h:mm aa',\n}) => {\n const is12Hour = timeFormat.includes('aa')\n const currentDate = value || new Date()\n const currentHour = currentDate.getHours()\n const currentMinute = currentDate.getMinutes()\n\n const [selectedHour, setSelectedHour] = React.useState(\n is12Hour ? currentHour % 12 || 12 : currentHour,\n )\n const [selectedMinute, setSelectedMinute] = React.useState(currentMinute)\n const [selectedPeriod, setSelectedPeriod] = React.useState(\n currentHour >= 12 ? 'PM' : 'AM',\n )\n const [hoverHour, setHoverHour] = React.useState<number | null>(null)\n const [hoverMinute, setHoverMinute] = React.useState<number | null>(null)\n const [hoverPeriod, setHoverPeriod] = React.useState<string | null>(null)\n\n const hours = is12Hour\n ? Array.from({ length: 12 }, (_, i) => i + 1)\n : Array.from({ length: 24 }, (_, i) => i)\n const minutes = Array.from({ length: 60 }, (_, i) => i)\n const periods = ['AM', 'PM']\n\n // Update preview when hover changes\n React.useEffect(() => {\n if (hoverHour !== null || hoverMinute !== null || hoverPeriod !== null) {\n const previewHour = hoverHour ?? selectedHour\n const previewMinute = hoverMinute ?? selectedMinute\n const previewPeriod = hoverPeriod ?? selectedPeriod\n\n const formattedHour = String(previewHour).padStart(2, '0')\n const formattedMinute = String(previewMinute).padStart(2, '0')\n const previewString = is12Hour\n ? `${previewHour}:${formattedMinute} ${previewPeriod}`\n : `${formattedHour}:${formattedMinute}`\n\n onPreview?.(previewString)\n } else {\n onPreview?.('')\n }\n }, [\n hoverHour,\n hoverMinute,\n hoverPeriod,\n selectedHour,\n selectedMinute,\n selectedPeriod,\n is12Hour,\n onPreview,\n ])\n\n const handleOkClick = () => {\n const newDate = new Date(currentDate)\n let finalHour = selectedHour\n\n if (is12Hour) {\n if (selectedPeriod === 'PM' && selectedHour !== 12) {\n finalHour = selectedHour + 12\n } else if (selectedPeriod === 'AM' && selectedHour === 12) {\n finalHour = 0\n }\n }\n\n newDate.setHours(finalHour)\n newDate.setMinutes(selectedMinute)\n newDate.setSeconds(0)\n onPreview?.('')\n onChange(newDate)\n }\n\n const handleNowClick = () => {\n const now = new Date()\n const nowHour = now.getHours()\n const nowMinute = now.getMinutes()\n\n setSelectedHour(is12Hour ? nowHour % 12 || 12 : nowHour)\n setSelectedMinute(nowMinute)\n setSelectedPeriod(nowHour >= 12 ? 'PM' : 'AM')\n\n onPreview?.('')\n onChange(now)\n }\n\n return (\n <div className=\"flex flex-col bg-background\">\n <div className=\"flex gap-0\">\n <TimeColumn\n items={hours}\n selected={selectedHour}\n onSelect={setSelectedHour}\n onHover={setHoverHour}\n onLeave={() => setHoverHour(null)}\n />\n <TimeColumn\n items={minutes}\n selected={selectedMinute}\n onSelect={setSelectedMinute}\n onHover={setHoverMinute}\n onLeave={() => setHoverMinute(null)}\n />\n {is12Hour && (\n <TimeColumn\n items={periods}\n selected={selectedPeriod}\n onSelect={setSelectedPeriod}\n onHover={setHoverPeriod}\n onLeave={() => setHoverPeriod(null)}\n />\n )}\n </div>\n <div className=\"p-3 border-t border-border flex gap-2\">\n <button\n type=\"button\"\n onClick={handleNowClick}\n className=\"flex-1 px-4 py-2 bg-surface text-text-primary rounded-md hover:bg-surface/80 transition-colors font-medium text-sm border border-border\"\n >\n Now\n </button>\n <button\n type=\"button\"\n onClick={handleOkClick}\n className=\"flex-1 px-4 py-2 bg-primary text-white rounded-md hover:bg-primary/90 transition-colors font-medium text-sm\"\n >\n OK\n </button>\n </div>\n </div>\n )\n}\n\n// TimePicker Component\nconst TimePickerComponent = React.memo<TimePickerProps>(\n ({\n variant = 'outline',\n size = 'md',\n label,\n error,\n warning,\n info,\n success,\n helperText,\n messagePosition = 'bottom',\n placeholder = 'Select time...',\n disabled = false,\n required = false,\n clearable = false,\n fullWidth = true,\n className,\n value,\n defaultValue,\n onChange,\n timeFormat = 'h:mm aa',\n }) => {\n const [internalValue, setInternalValue] = React.useState<Date | null>(\n defaultValue || null,\n )\n const currentValue = value !== undefined ? value : internalValue\n\n const [isOpen, setIsOpen] = React.useState(false)\n const [previewTime, setPreviewTime] = React.useState('')\n\n let status: 'default' | 'error' | 'warning' | 'info' | 'success' = 'default'\n if (error) status = 'error'\n else if (warning) status = 'warning'\n else if (success) status = 'success'\n else if (info) status = 'info'\n\n const handleTimeChange = (date: Date | null) => {\n if (value === undefined) {\n setInternalValue(date)\n }\n onChange?.(date)\n setPreviewTime('')\n setIsOpen(false)\n }\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation()\n if (value === undefined) {\n setInternalValue(null)\n }\n onChange?.(null)\n }\n\n const showClear = clearable && currentValue && !disabled\n\n const formatTime = (date: Date) => {\n return new Date(date).toLocaleTimeString('en-US', {\n hour: 'numeric',\n minute: '2-digit',\n hour12: timeFormat.includes('aa'),\n })\n }\n\n const getDisplayValue = () => {\n if (previewTime) {\n return { confirmed: '', preview: previewTime }\n }\n if (currentValue) {\n return { confirmed: formatTime(currentValue), preview: '' }\n }\n return { confirmed: '', preview: '' }\n }\n\n const { confirmed: timeConfirmed, preview: timePreview } = getDisplayValue()\n\n const timeTriggerButton = (\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => setIsOpen(!isOpen)}\n className={cn(\n pickerInputVariants({ variant, status, size, fullWidth }),\n 'pl-10 flex items-center justify-start cursor-pointer',\n showClear && 'pr-10',\n className,\n )}\n >\n {timeConfirmed || timePreview ? (\n <>\n {timeConfirmed && <span>{timeConfirmed}</span>}\n {timePreview && (\n <span className=\"text-text-muted\">{timePreview}</span>\n )}\n </>\n ) : (\n <span className=\"text-text-muted\">{placeholder}</span>\n )}\n </button>\n )\n\n return (\n <PickerWrapper\n label={label}\n error={error}\n warning={warning}\n info={info}\n success={success}\n helperText={helperText}\n messagePosition={messagePosition}\n required={required}\n fullWidth={fullWidth}\n >\n <div className=\"relative w-full\">\n <div className=\"absolute left-3 flex items-center h-full top-0 text-text-muted pointer-events-none z-10\">\n <Clock className={iconSizes[size]} />\n </div>\n\n <Popover\n open={isOpen}\n onOpenChange={(open) => {\n setIsOpen(open)\n if (!open) {\n setPreviewTime('')\n }\n }}\n >\n <PopoverTrigger asChild>{timeTriggerButton}</PopoverTrigger>\n\n <PopoverContent\n className=\"p-0 w-auto\"\n align=\"start\"\n sideOffset={4}\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <TimeColumnPicker\n value={currentValue}\n onChange={handleTimeChange}\n onPreview={setPreviewTime}\n timeFormat={timeFormat}\n />\n </PopoverContent>\n </Popover>\n\n {showClear && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"absolute right-3 flex items-center h-full top-0 text-text-muted hover:text-text-primary z-10\"\n aria-label=\"Clear time\"\n >\n <X className={iconSizes[size]} />\n </button>\n )}\n </div>\n </PickerWrapper>\n )\n },\n)\n\nTimePickerComponent.displayName = 'TimePicker'\n\nexport type * from './types'\nexport const DatePicker = Object.assign(DatePickerComponent, {\n RangePicker: RangePickerComponent,\n TimePicker: TimePickerComponent,\n})\n\nexport {\n RangePickerComponent as RangePicker,\n TimePickerComponent as TimePicker,\n}\n"]}
@@ -1,7 +1,6 @@
1
1
  import { Pagination } from 'swiper/modules';
2
2
  import { Swiper } from 'swiper/react';
3
3
  import { useRef, useState, useEffect } from 'react';
4
- import 'swiper/css';
5
4
  import { ChevronRight, ChevronLeft } from 'lucide-react';
6
5
  import { jsxs, jsx } from 'react/jsx-runtime';
7
6
 
@@ -92,5 +91,5 @@ function Carousel({
92
91
  var carousel_default = Carousel;
93
92
 
94
93
  export { carousel_default };
95
- //# sourceMappingURL=chunk-4OMLQCUV.js.map
96
- //# sourceMappingURL=chunk-4OMLQCUV.js.map
94
+ //# sourceMappingURL=chunk-C3MX5EXL.js.map
95
+ //# sourceMappingURL=chunk-C3MX5EXL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/carousel/carousel-navigation.tsx","../src/carousel/index.tsx"],"names":["useState","jsx"],"mappings":"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","file":"chunk-C3MX5EXL.js","sourcesContent":["'use client'\n\nimport { ChevronLeft, ChevronRight } from 'lucide-react'\nimport { Swiper as SwiperType } from 'swiper/types'\nimport { useEffect, useState } from 'react'\n\ninterface CarouselNavigationProps {\n type: 'next' | 'prev'\n swiper: SwiperType | null\n}\n\nexport function CarouselNavigation({ type, swiper }: CarouselNavigationProps) {\n const [slideConfig, setSlideConfig] = useState({\n isBeginning: true,\n isEnd: false,\n })\n\n useEffect(() => {\n if (!swiper) return\n\n const updateSlideState = () => {\n setSlideConfig({ isBeginning: swiper.isBeginning, isEnd: swiper.isEnd })\n }\n\n swiper.on('slideChange', updateSlideState)\n\n return () => {\n swiper.off('slideChange', updateSlideState)\n }\n }, [swiper])\n\n if (!swiper) return null\n if (slideConfig.isBeginning && type === 'prev') return null\n if (slideConfig.isEnd && type === 'next') return null\n\n return (\n <button\n onClick={(e) => {\n e.stopPropagation()\n if (type === 'next') {\n swiper?.slideNext()\n } else {\n swiper?.slidePrev()\n }\n }}\n className=\"flex items-center justify-center w-9 h-9 rounded-full border border-gray-300 bg-white shadow-sm hover:bg-gray-100 transition cursor-pointer\"\n >\n {type === 'next' ? <ChevronRight size={18} /> : <ChevronLeft size={18} />}\n </button>\n )\n}\n","'use client'\n\nimport { Pagination } from 'swiper/modules'\nimport { Swiper, SwiperProps } from 'swiper/react'\nimport { PaginationOptions, Swiper as SwiperType } from 'swiper/types'\nimport { useRef, useState } from 'react'\n\n/**\n * IMPORTANT: Import Swiper CSS in your app's main CSS file:\n * @import 'swiper/css';\n */\n\nimport { CarouselNavigation } from './carousel-navigation'\n\ninterface CarouselProps extends SwiperProps {\n withArrows?: boolean\n withPagination?: boolean\n children: React.ReactNode\n}\n\nconst pagination: PaginationOptions = {\n clickable: true,\n horizontalClass: 'pagination',\n bulletActiveClass: 'bg-gray-800',\n bulletClass:\n 'inline-flex w-2.5 h-2.5 mx-1 rounded-full bg-gray-300 opacity-70 transition-all duration-300 cursor-pointer hover:opacity-100',\n}\n\nfunction Carousel({\n withArrows = false,\n withPagination = false,\n children,\n loop = false,\n className,\n modules,\n ...props\n}: CarouselProps) {\n const swiperRef = useRef<SwiperType | null>(null)\n const [, setRenderTrigger] = useState(0) // 👈 добавляем \"сигнал\"\n\n return (\n <div className=\"relative h-full group\">\n {withArrows && (\n <div className=\"absolute -translate-y-1/2 top-1/2 left-0 flex px-1 z-10 opacity-0 group-hover:opacity-100 transition-opacity duration-200\">\n <CarouselNavigation\n type=\"prev\"\n swiper={swiperRef.current}\n />\n </div>\n )}\n\n <Swiper\n loop={loop}\n {...props}\n modules={[Pagination, ...(modules || [])]}\n pagination={withPagination ? pagination : false}\n className={`relative ${className || ''}`}\n onBeforeInit={(swiper) => {\n swiperRef.current = swiper\n setRenderTrigger((x) => x + 1) // 👈 триггерим обновление\n }}\n >\n {children}\n </Swiper>\n\n {withArrows && (\n <div className=\"absolute -translate-y-1/2 top-1/2 right-0 flex px-1 z-10 opacity-0 group-hover:opacity-100 transition-opacity duration-200\">\n <CarouselNavigation\n type=\"next\"\n swiper={swiperRef.current}\n />\n </div>\n )}\n </div>\n )\n}\n\nexport default Carousel\n"]}
@@ -1,4 +1,4 @@
1
- export { DatePicker, RangePickerComponent as RangePicker, TimePickerComponent as TimePicker } from '../chunk-7AEGBABZ.js';
1
+ export { DatePicker, RangePickerComponent as RangePicker, TimePickerComponent as TimePicker } from '../chunk-52M2PO3O.js';
2
2
  import '../chunk-3PFA3YG6.js';
3
3
  import '../chunk-YNNAOXU5.js';
4
4
  //# sourceMappingURL=index.js.map
package/dist/index.js CHANGED
@@ -40,7 +40,7 @@ export { clipboard_default as Clipboard } from './chunk-RMGIO27V.js';
40
40
  export { collapse_default as Collapse } from './chunk-SOV4PE3P.js';
41
41
  export { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandModal, CommandSeparator, CommandShortcut } from './chunk-4P5EMRFI.js';
42
42
  export { modal_default as Modal } from './chunk-5VCGW53O.js';
43
- export { DatePicker, RangePickerComponent as RangePicker, TimePickerComponent as TimePicker } from './chunk-7AEGBABZ.js';
43
+ export { DatePicker, RangePickerComponent as RangePicker, TimePickerComponent as TimePicker } from './chunk-52M2PO3O.js';
44
44
  export { accordion_default as Accordion } from './chunk-CWHFK7ZC.js';
45
45
  export { badge_default as Badge } from './chunk-FTJOSVTY.js';
46
46
  export { breadcrumbs_default as Breadcrumbs } from './chunk-HUVXKOJC.js';
@@ -49,9 +49,9 @@ export { Popover, PopoverAnchor, PopoverContent, PopoverTrigger } from './chunk-
49
49
  export { button_default as Button } from './chunk-LBJG2UWT.js';
50
50
  export { spinner_default as Spinner } from './chunk-J3G5WWGR.js';
51
51
  export { buttonColors, commonSpacing, componentColors, componentSizeVariants, createAllColorVariants, createDashedColorVariants, createDefaultColorVariants, createGhostColorVariants, createLinkColorVariants, createOutlineColorVariants, createSoftColorVariants, createSolidColorVariants, extendedComponentSizeVariants, getAccordionColorClass, getCheckboxColorClass, getIconColorClass, iconColorClasses, textColorVariants } from './chunk-5UEWVFF6.js';
52
- export { card_default as Card } from './chunk-XOBGEMQY.js';
53
- export { carousel_default as Carousel } from './chunk-4OMLQCUV.js';
54
52
  export { button_group_default as ButtonGroup } from './chunk-56IXGP5C.js';
53
+ export { card_default as Card } from './chunk-XOBGEMQY.js';
55
54
  export { cn, getValidationStatus, iconSizes } from './chunk-YNNAOXU5.js';
55
+ export { carousel_default as Carousel } from './chunk-C3MX5EXL.js';
56
56
  //# sourceMappingURL=index.js.map
57
57
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mdigital_ui/ui",
3
- "version": "0.1.3",
3
+ "version": "0.2.0",
4
4
  "description": "Modern React component library built with Tailwind CSS v4",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -86,89 +86,41 @@
86
86
  "dependencies": {
87
87
  "class-variance-authority": "^0.7.0",
88
88
  "clsx": "^2.1.0",
89
- "tailwind-merge": "^2.2.0"
89
+ "tailwind-merge": "^2.2.0",
90
+ "@radix-ui/react-dialog": "^1.1.15",
91
+ "@radix-ui/react-popover": "^1.1.15",
92
+ "@radix-ui/react-tooltip": "^1.2.8",
93
+ "@tanstack/react-table": "^8.21.3",
94
+ "@tanstack/react-virtual": "^3.13.12",
95
+ "cmdk": "^1.1.1",
96
+ "dayjs": "^1.11.19",
97
+ "lucide-react": "^0.552.0",
98
+ "react-datepicker": "^8.8.0",
99
+ "recharts": "^3.3.0",
100
+ "swiper": "^12.0.3",
101
+ "vaul": "^1.1.2"
90
102
  },
91
103
  "peerDependencies": {
92
104
  "react": "^18.0.0 || ^19.0.0",
93
105
  "react-dom": "^18.0.0 || ^19.0.0",
94
- "tailwindcss": "^4.0.0",
95
- "@radix-ui/react-dialog": "^1.0.0",
96
- "@radix-ui/react-popover": "^1.0.0",
97
- "@radix-ui/react-tooltip": "^1.0.0",
98
- "@tanstack/react-table": "^8.0.0",
99
- "@tanstack/react-virtual": "^3.0.0",
100
- "cmdk": "^1.0.0",
101
- "dayjs": "^1.11.0",
102
- "lucide-react": "^0.400.0",
103
- "react-datepicker": "^6.0.0 || ^7.0.0 || ^8.0.0",
104
- "recharts": "^2.0.0 || ^3.0.0",
105
- "swiper": "^11.0.0 || ^12.0.0",
106
- "vaul": "^0.9.0 || ^1.0.0"
107
- },
108
- "peerDependenciesMeta": {
109
- "@radix-ui/react-dialog": {
110
- "optional": true
111
- },
112
- "@radix-ui/react-popover": {
113
- "optional": true
114
- },
115
- "@radix-ui/react-tooltip": {
116
- "optional": true
117
- },
118
- "@tanstack/react-table": {
119
- "optional": true
120
- },
121
- "@tanstack/react-virtual": {
122
- "optional": true
123
- },
124
- "cmdk": {
125
- "optional": true
126
- },
127
- "dayjs": {
128
- "optional": true
129
- },
130
- "lucide-react": {
131
- "optional": true
132
- },
133
- "react-datepicker": {
134
- "optional": true
135
- },
136
- "recharts": {
137
- "optional": true
138
- },
139
- "swiper": {
140
- "optional": true
141
- },
142
- "vaul": {
143
- "optional": true
144
- }
106
+ "tailwindcss": "^4.0.0"
145
107
  },
146
108
  "devDependencies": {
147
- "@radix-ui/react-dialog": "^1.1.15",
148
- "@radix-ui/react-popover": "^1.1.15",
149
- "@radix-ui/react-tooltip": "^1.2.8",
150
109
  "@storybook/addon-a11y": "^8.0.0",
151
110
  "@storybook/addon-essentials": "^8.0.0",
152
111
  "@storybook/addon-themes": "^8.0.0",
153
112
  "@storybook/react": "^8.0.0",
154
113
  "@storybook/react-vite": "^8.0.0",
155
114
  "@tailwindcss/postcss": "^4.1.13",
156
- "@tanstack/react-table": "^8.21.3",
157
- "@tanstack/react-virtual": "^3.13.12",
158
115
  "@types/react": "^19.0.0",
159
116
  "@types/react-datepicker": "^6.2.0",
160
117
  "@types/react-dom": "^19.0.0",
161
- "cmdk": "^1.1.1",
162
- "dayjs": "^1.11.19",
163
- "lucide-react": "^0.552.0",
164
- "react-datepicker": "^8.8.0",
165
- "recharts": "^3.3.0",
118
+ "react": "^19.0.0",
119
+ "react-dom": "^19.0.0",
166
120
  "storybook": "^8.0.0",
167
- "swiper": "^12.0.3",
168
121
  "tailwindcss": "^4.0.0",
169
122
  "tsup": "^8.0.0",
170
- "typescript": "^5.0.0",
171
- "vaul": "^1.1.2"
123
+ "typescript": "^5.0.0"
172
124
  },
173
125
  "keywords": [
174
126
  "react",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/carousel/carousel-navigation.tsx","../src/carousel/index.tsx"],"names":["useState","jsx"],"mappings":"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","file":"chunk-4OMLQCUV.js","sourcesContent":["'use client'\n\nimport { ChevronLeft, ChevronRight } from 'lucide-react'\nimport { Swiper as SwiperType } from 'swiper/types'\nimport { useEffect, useState } from 'react'\n\ninterface CarouselNavigationProps {\n type: 'next' | 'prev'\n swiper: SwiperType | null\n}\n\nexport function CarouselNavigation({ type, swiper }: CarouselNavigationProps) {\n const [slideConfig, setSlideConfig] = useState({\n isBeginning: true,\n isEnd: false,\n })\n\n useEffect(() => {\n if (!swiper) return\n\n const updateSlideState = () => {\n setSlideConfig({ isBeginning: swiper.isBeginning, isEnd: swiper.isEnd })\n }\n\n swiper.on('slideChange', updateSlideState)\n\n return () => {\n swiper.off('slideChange', updateSlideState)\n }\n }, [swiper])\n\n if (!swiper) return null\n if (slideConfig.isBeginning && type === 'prev') return null\n if (slideConfig.isEnd && type === 'next') return null\n\n return (\n <button\n onClick={(e) => {\n e.stopPropagation()\n if (type === 'next') {\n swiper?.slideNext()\n } else {\n swiper?.slidePrev()\n }\n }}\n className=\"flex items-center justify-center w-9 h-9 rounded-full border border-gray-300 bg-white shadow-sm hover:bg-gray-100 transition cursor-pointer\"\n >\n {type === 'next' ? <ChevronRight size={18} /> : <ChevronLeft size={18} />}\n </button>\n )\n}\n","'use client'\n\nimport { Pagination } from 'swiper/modules'\nimport { Swiper, SwiperProps } from 'swiper/react'\nimport { PaginationOptions, Swiper as SwiperType } from 'swiper/types'\nimport { useRef, useState } from 'react'\n\nimport 'swiper/css'\n\nimport { CarouselNavigation } from './carousel-navigation'\n\ninterface CarouselProps extends SwiperProps {\n withArrows?: boolean\n withPagination?: boolean\n children: React.ReactNode\n}\n\nconst pagination: PaginationOptions = {\n clickable: true,\n horizontalClass: 'pagination',\n bulletActiveClass: 'bg-gray-800',\n bulletClass:\n 'inline-flex w-2.5 h-2.5 mx-1 rounded-full bg-gray-300 opacity-70 transition-all duration-300 cursor-pointer hover:opacity-100',\n}\n\nfunction Carousel({\n withArrows = false,\n withPagination = false,\n children,\n loop = false,\n className,\n modules,\n ...props\n}: CarouselProps) {\n const swiperRef = useRef<SwiperType | null>(null)\n const [, setRenderTrigger] = useState(0) // 👈 добавляем \"сигнал\"\n\n return (\n <div className=\"relative h-full group\">\n {withArrows && (\n <div className=\"absolute -translate-y-1/2 top-1/2 left-0 flex px-1 z-10 opacity-0 group-hover:opacity-100 transition-opacity duration-200\">\n <CarouselNavigation\n type=\"prev\"\n swiper={swiperRef.current}\n />\n </div>\n )}\n\n <Swiper\n loop={loop}\n {...props}\n modules={[Pagination, ...(modules || [])]}\n pagination={withPagination ? pagination : false}\n className={`relative ${className || ''}`}\n onBeforeInit={(swiper) => {\n swiperRef.current = swiper\n setRenderTrigger((x) => x + 1) // 👈 триггерим обновление\n }}\n >\n {children}\n </Swiper>\n\n {withArrows && (\n <div className=\"absolute -translate-y-1/2 top-1/2 right-0 flex px-1 z-10 opacity-0 group-hover:opacity-100 transition-opacity duration-200\">\n <CarouselNavigation\n type=\"next\"\n swiper={swiperRef.current}\n />\n </div>\n )}\n </div>\n )\n}\n\nexport default Carousel\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/date-picker/utils.ts","../src/date-picker/index.tsx"],"names":["start"],"mappings":"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","file":"chunk-7AEGBABZ.js","sourcesContent":["import { cva } from 'class-variance-authority'\n\nexport const pickerInputVariants = cva(\n 'w-full focus:border-primary placeholder:text-text-muted disabled:opacity-50 disabled:cursor-not-allowed outline-none text-text-primary transition-colors',\n {\n variants: {\n variant: {\n outline: 'bg-background border rounded-md',\n filled: 'bg-surface border border-transparent rounded-md',\n },\n status: {\n default: 'border-border hover:border-primary/50',\n error: 'border-error',\n warning: 'border-warning',\n info: 'border-info',\n success: 'border-success',\n },\n size: {\n xs: 'h-8 px-2.5 text-xs',\n sm: 'h-[var(--input-height-sm)] px-3 text-sm',\n md: 'h-[var(--input-height-md)] px-4 text-base',\n lg: 'h-[var(--input-height-lg)] px-5 text-lg',\n },\n fullWidth: {\n true: 'w-full',\n false: 'max-w-full',\n },\n },\n defaultVariants: {\n variant: 'outline',\n status: 'default',\n size: 'md',\n fullWidth: true,\n },\n },\n)\n\n// Shared date-picker styles for react-datepicker\nexport const datePickerStyles = `\n [&_.react-datepicker]:!bg-background\n [&_.react-datepicker]:!border-border\n [&_.react-datepicker]:!text-text-primary\n [&_.react-datepicker]:!flex\n [&_.react-datepicker]:!gap-0\n [&_.react-datepicker__header]:!bg-transparent\n [&_.react-datepicker__header]:!border-none\n [&_.react-datepicker__header]:!p-0\n [&_.react-datepicker__month-container]:!flex\n [&_.react-datepicker__month-container]:!flex-col\n [&_.react-datepicker__day--selected]:!bg-primary\n [&_.react-datepicker__day--keyboard-selected]:!bg-primary/50\n [&_.react-datepicker__day]:hover:!bg-surface\n [&_.react-datepicker__day-name]:!text-text-muted\n [&_.react-datepicker__current-month]:!hidden\n [&_.react-datepicker__navigation]:!hidden\n [&_.react-datepicker__time-container]:!border-border\n [&_.react-datepicker__time-list-item--selected]:!bg-primary\n [&_.react-datepicker__time-list-item--selected]:!text-white\n [&_.react-datepicker__time-list-item]:hover:!bg-surface\n [&_.react-datepicker__time-list]:!bg-background\n [&_.react-datepicker__day--in-selecting-range]:!bg-primary/30\n [&_.react-datepicker__day--in-range]:!bg-primary/10\n`\n","import React from 'react'\nimport ReactDatePicker from 'react-datepicker'\n\nimport 'react-datepicker/dist/react-datepicker.css'\n\nimport {\n Calendar,\n ChevronLeft,\n ChevronRight,\n ChevronsLeft,\n ChevronsRight,\n Clock,\n X,\n} from 'lucide-react'\n\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover'\nimport { cn, iconSizes } from '../utils'\nimport type {\n DatePickerProps,\n RangePickerProps,\n TimePickerProps,\n} from './types'\nimport { datePickerStyles, pickerInputVariants } from './utils'\n\n// Year Selector Component\ninterface YearSelectorProps {\n date: Date\n onYearSelect: (year: number) => void\n onDecadeChange: (year: number) => void\n}\n\nconst YearSelector: React.FC<YearSelectorProps> = ({\n date,\n onYearSelect,\n onDecadeChange,\n}) => {\n const currentYear = date.getFullYear()\n const startYear = Math.floor(currentYear / 10) * 10\n const years = Array.from({ length: 12 }, (_, i) => startYear - 1 + i)\n\n return (\n <div className=\"p-4 bg-background\">\n <div className=\"flex items-center justify-between mb-4\">\n <button\n type=\"button\"\n onClick={() => onDecadeChange(currentYear - 10)}\n className=\"p-1 rounded hover:bg-muted text-text-primary transition-colors\"\n aria-label=\"Previous decade\"\n >\n <ChevronsLeft className={iconSizes.sm} />\n </button>\n <div className=\"text-sm font-medium text-text-primary\">\n {startYear}-{startYear + 9}\n </div>\n <button\n type=\"button\"\n onClick={() => onDecadeChange(currentYear + 10)}\n className=\"p-1 rounded hover:bg-muted text-text-primary transition-colors\"\n aria-label=\"Next decade\"\n >\n <ChevronsRight className={iconSizes.sm} />\n </button>\n </div>\n <div className=\"grid grid-cols-3 gap-2\">\n {years.map((year) => (\n <button\n key={year}\n type=\"button\"\n onClick={() => onYearSelect(year)}\n className={cn(\n 'px-4 py-2 rounded text-sm font-medium transition-colors',\n year === currentYear\n ? 'bg-primary text-white'\n : year < startYear || year > startYear + 9\n ? 'text-text-muted opacity-50'\n : 'text-text-primary hover:bg-surface',\n )}\n >\n {year}\n </button>\n ))}\n </div>\n </div>\n )\n}\n\n// Month Selector Component\ninterface MonthSelectorProps {\n date: Date\n onMonthSelect: (month: number) => void\n onYearClick: () => void\n onYearChange: (year: number) => void\n}\n\nconst MonthSelector: React.FC<MonthSelectorProps> = ({\n date,\n onMonthSelect,\n onYearClick,\n onYearChange,\n}) => {\n const months = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec',\n ]\n const currentMonth = date.getMonth()\n const currentYear = date.getFullYear()\n\n return (\n <div className=\"p-4 bg-background\">\n <div className=\"flex items-center justify-between mb-4\">\n <button\n type=\"button\"\n onClick={() => onYearChange(currentYear - 1)}\n className=\"p-1 rounded hover:bg-muted text-text-primary transition-colors\"\n aria-label=\"Previous year\"\n >\n <ChevronsLeft className={iconSizes.sm} />\n </button>\n <button\n type=\"button\"\n onClick={onYearClick}\n className=\"text-sm font-medium text-text-primary hover:text-primary transition-colors\"\n >\n {currentYear}\n </button>\n <button\n type=\"button\"\n onClick={() => onYearChange(currentYear + 1)}\n className=\"p-1 rounded hover:bg-muted text-text-primary transition-colors\"\n aria-label=\"Next year\"\n >\n <ChevronsRight className={iconSizes.sm} />\n </button>\n </div>\n <div className=\"grid grid-cols-3 gap-2\">\n {months.map((month, index) => (\n <button\n key={month}\n type=\"button\"\n onClick={() => onMonthSelect(index)}\n className={cn(\n 'px-4 py-2 rounded text-sm font-medium transition-colors',\n index === currentMonth\n ? 'bg-primary text-white'\n : 'text-text-primary hover:bg-surface',\n )}\n >\n {month}\n </button>\n ))}\n </div>\n </div>\n )\n}\n\n// Custom Calendar Header Component\ninterface CustomHeaderProps {\n date: Date\n decreaseMonth: () => void\n increaseMonth: () => void\n decreaseYear: () => void\n increaseYear: () => void\n prevMonthButtonDisabled: boolean\n nextMonthButtonDisabled: boolean\n prevYearButtonDisabled: boolean\n nextYearButtonDisabled: boolean\n showMonthSelector?: boolean\n onMonthClick?: () => void\n onYearClick?: () => void\n}\n\nconst CustomCalendarHeader: React.FC<CustomHeaderProps> = ({\n date,\n decreaseMonth,\n increaseMonth,\n decreaseYear,\n increaseYear,\n prevMonthButtonDisabled,\n nextMonthButtonDisabled,\n prevYearButtonDisabled,\n nextYearButtonDisabled,\n showMonthSelector = false,\n onMonthClick,\n onYearClick,\n}) => {\n const monthName = date.toLocaleDateString('en-US', { month: 'long' })\n const year = date.getFullYear()\n\n return (\n <div className=\"flex items-center justify-between px-4 py-3 bg-surface border-b border-border\">\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={decreaseYear}\n disabled={prevYearButtonDisabled || showMonthSelector}\n className=\"p-1 rounded hover:bg-muted text-text-primary disabled:opacity-30 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Previous year\"\n >\n <ChevronsLeft className={iconSizes.sm} />\n </button>\n <button\n type=\"button\"\n onClick={decreaseMonth}\n disabled={prevMonthButtonDisabled || showMonthSelector}\n className=\"p-1 rounded hover:bg-muted text-text-primary disabled:opacity-30 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Previous month\"\n >\n <ChevronLeft className={iconSizes.sm} />\n </button>\n </div>\n\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={onMonthClick}\n className=\"text-sm font-medium text-text-primary hover:text-primary transition-colors\"\n >\n {monthName}\n </button>\n <button\n type=\"button\"\n onClick={onYearClick}\n className=\"text-sm font-medium text-text-primary hover:text-primary transition-colors\"\n >\n {year}\n </button>\n </div>\n\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={increaseMonth}\n disabled={nextMonthButtonDisabled || showMonthSelector}\n className=\"p-1 rounded hover:bg-muted text-text-primary disabled:opacity-30 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Next month\"\n >\n <ChevronRight className={iconSizes.sm} />\n </button>\n <button\n type=\"button\"\n onClick={increaseYear}\n disabled={nextYearButtonDisabled || showMonthSelector}\n className=\"p-1 rounded hover:bg-muted text-text-primary disabled:opacity-30 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Next year\"\n >\n <ChevronsRight className={iconSizes.sm} />\n </button>\n </div>\n </div>\n )\n}\n\n// Base Picker Wrapper Component\ninterface BasePickerWrapperProps {\n label?: string\n error?: string\n warning?: string\n info?: string\n success?: string\n helperText?: string\n messagePosition?: 'top' | 'bottom'\n required?: boolean\n fullWidth?: boolean\n children: React.ReactNode\n}\n\nconst PickerWrapper: React.FC<BasePickerWrapperProps> = ({\n label,\n error,\n warning,\n info,\n success,\n helperText,\n messagePosition = 'bottom',\n required = false,\n fullWidth = true,\n children,\n}) => {\n let status: 'default' | 'error' | 'warning' | 'info' | 'success' = 'default'\n const helperMessage = error || warning || info || success || helperText\n\n if (error) {\n status = 'error'\n } else if (warning) {\n status = 'warning'\n } else if (success) {\n status = 'success'\n } else if (info) {\n status = 'info'\n }\n\n if (!label && !helperMessage) return <>{children}</>\n\n return (\n <div\n className={cn(\n 'w-full flex flex-col relative',\n !fullWidth && 'inline-block',\n )}\n >\n <div className=\"flex gap-2 items-center relative mb-0.5\">\n {label && (\n <p className=\"text-sm font-medium text-text-muted\">\n {label}\n {required && <span className=\"text-error ml-1\">*</span>}\n </p>\n )}\n {helperMessage && messagePosition === 'top' && (\n <p\n id={`picker-helper-${status}`}\n className={cn(\n 'text-xs',\n status === 'error' && 'text-error',\n status === 'warning' && 'text-warning',\n status === 'info' && 'text-info',\n status === 'success' && 'text-success',\n status === 'default' && 'text-text-muted',\n )}\n >\n {helperMessage}\n </p>\n )}\n </div>\n {children}\n {helperMessage && messagePosition === 'bottom' && (\n <p\n id={`picker-helper-${status}`}\n className={cn(\n 'text-xs mt-0.5',\n status === 'error' && 'text-error',\n status === 'warning' && 'text-warning',\n status === 'info' && 'text-info',\n status === 'success' && 'text-success',\n status === 'default' && 'text-text-muted',\n )}\n >\n {helperMessage}\n </p>\n )}\n </div>\n )\n}\n\n// DatePicker Component\nconst DatePickerComponent = React.memo<DatePickerProps>(\n ({\n variant = 'outline',\n size = 'md',\n label,\n error,\n warning,\n info,\n success,\n helperText,\n messagePosition = 'bottom',\n placeholder = 'Select date...',\n disabled = false,\n required = false,\n clearable = false,\n fullWidth = true,\n className,\n value,\n defaultValue,\n onChange,\n minDate,\n maxDate,\n dateFormat = 'MM/dd/yyyy',\n }) => {\n const [internalValue, setInternalValue] = React.useState<Date | null>(\n defaultValue || null,\n )\n const currentValue = value !== undefined ? value : internalValue\n\n const [isOpen, setIsOpen] = React.useState(false)\n const [showMonthSelector, setShowMonthSelector] = React.useState(false)\n const [showYearSelector, setShowYearSelector] = React.useState(false)\n const [viewDate, setViewDate] = React.useState(currentValue || new Date())\n const [hoverDate, setHoverDate] = React.useState<Date | null>(null)\n const datePickerRef = React.useRef<ReactDatePicker>(null)\n\n let status: 'default' | 'error' | 'warning' | 'info' | 'success' = 'default'\n if (error) status = 'error'\n else if (warning) status = 'warning'\n else if (success) status = 'success'\n else if (info) status = 'info'\n\n const handleDateChange = (date: Date | null) => {\n if (value === undefined) {\n setInternalValue(date)\n }\n onChange?.(date)\n setHoverDate(null)\n setIsOpen(false)\n setShowMonthSelector(false)\n setShowYearSelector(false)\n }\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation()\n if (value === undefined) {\n setInternalValue(null)\n }\n onChange?.(null)\n }\n\n const handleMonthSelect = (month: number) => {\n const newDate = new Date(viewDate)\n newDate.setMonth(month)\n setViewDate(newDate)\n setShowMonthSelector(false)\n }\n\n const handleYearSelect = (year: number) => {\n const newDate = new Date(viewDate)\n newDate.setFullYear(year)\n setViewDate(newDate)\n setShowYearSelector(false)\n setShowMonthSelector(true)\n }\n\n const handleYearChange = (year: number) => {\n const newDate = new Date(viewDate)\n newDate.setFullYear(year)\n setViewDate(newDate)\n }\n\n const handleDecadeChange = (year: number) => {\n const newDate = new Date(viewDate)\n newDate.setFullYear(year)\n setViewDate(newDate)\n }\n\n const showClear = clearable && currentValue && !disabled\n\n const formatDate = (date: Date) => {\n return new Date(date).toLocaleDateString('en-US', {\n month: '2-digit',\n day: '2-digit',\n year: 'numeric',\n })\n }\n\n const getDisplayValue = () => {\n if (hoverDate) {\n return { confirmed: '', preview: formatDate(hoverDate) }\n }\n if (currentValue) {\n return { confirmed: formatDate(currentValue), preview: '' }\n }\n return { confirmed: '', preview: '' }\n }\n\n const { confirmed, preview } = getDisplayValue()\n\n const customHeader = (props: any) => (\n <CustomCalendarHeader\n {...props}\n showMonthSelector={showMonthSelector}\n onMonthClick={() => setShowMonthSelector(!showMonthSelector)}\n onYearClick={() => setShowYearSelector(true)}\n />\n )\n\n const triggerButton = (\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => setIsOpen(!isOpen)}\n className={cn(\n pickerInputVariants({ variant, status, size, fullWidth }),\n 'pl-10 flex items-center justify-start cursor-pointer',\n showClear && 'pr-10',\n className,\n )}\n >\n {confirmed || preview ? (\n <>\n {confirmed && <span>{confirmed}</span>}\n {preview && <span className=\"text-text-muted\">{preview}</span>}\n </>\n ) : (\n <span className=\"text-text-muted\">{placeholder}</span>\n )}\n </button>\n )\n\n return (\n <PickerWrapper\n label={label}\n error={error}\n warning={warning}\n info={info}\n success={success}\n helperText={helperText}\n messagePosition={messagePosition}\n required={required}\n fullWidth={fullWidth}\n >\n <div className=\"relative w-full\">\n <div className=\"absolute left-3 flex items-center h-full top-0 text-text-muted pointer-events-none z-10\">\n <Calendar className={iconSizes[size]} />\n </div>\n\n <Popover\n open={isOpen}\n onOpenChange={(open) => {\n setIsOpen(open)\n if (!open) {\n setShowMonthSelector(false)\n setShowYearSelector(false)\n setHoverDate(null)\n }\n }}\n >\n <PopoverTrigger asChild>{triggerButton}</PopoverTrigger>\n\n <PopoverContent\n className=\"p-0 w-auto\"\n align=\"start\"\n sideOffset={4}\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <>\n {showYearSelector ? (\n <YearSelector\n date={viewDate}\n onYearSelect={handleYearSelect}\n onDecadeChange={handleDecadeChange}\n />\n ) : showMonthSelector ? (\n <MonthSelector\n date={viewDate}\n onMonthSelect={handleMonthSelect}\n onYearClick={() => setShowYearSelector(true)}\n onYearChange={handleYearChange}\n />\n ) : (\n <div className={datePickerStyles}>\n <ReactDatePicker\n ref={datePickerRef}\n selected={currentValue}\n onChange={handleDateChange}\n disabled={disabled}\n minDate={minDate}\n maxDate={maxDate}\n dateFormat={dateFormat}\n renderCustomHeader={customHeader}\n openToDate={viewDate}\n onMonthChange={setViewDate}\n onDayMouseEnter={setHoverDate}\n inline\n />\n </div>\n )}\n </>\n </PopoverContent>\n </Popover>\n\n {showClear && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"absolute right-3 flex items-center h-full top-0 text-text-muted hover:text-text-primary z-10\"\n aria-label=\"Clear date\"\n >\n <X className={iconSizes[size]} />\n </button>\n )}\n </div>\n </PickerWrapper>\n )\n },\n)\n\nDatePickerComponent.displayName = 'DatePicker'\n\n// RangePicker Component\nconst RangePickerComponent = React.memo<RangePickerProps>(\n ({\n variant = 'outline',\n size = 'md',\n label,\n error,\n warning,\n info,\n success,\n helperText,\n messagePosition = 'bottom',\n placeholder = 'Select date range...',\n disabled = false,\n required = false,\n clearable = false,\n fullWidth = true,\n className,\n startDate,\n endDate,\n defaultStartDate,\n defaultEndDate,\n onChange,\n minDate,\n maxDate,\n dateFormat = 'MM/dd/yyyy',\n }) => {\n const [internalStartDate, setInternalStartDate] =\n React.useState<Date | null>(defaultStartDate || null)\n const [internalEndDate, setInternalEndDate] = React.useState<Date | null>(\n defaultEndDate || null,\n )\n const currentStartDate =\n startDate !== undefined ? startDate : internalStartDate\n const currentEndDate = endDate !== undefined ? endDate : internalEndDate\n\n const [isOpen, setIsOpen] = React.useState(false)\n const [showMonthSelector, setShowMonthSelector] = React.useState(false)\n const [showYearSelector, setShowYearSelector] = React.useState(false)\n const [viewDate, setViewDate] = React.useState(\n currentStartDate || new Date(),\n )\n const [hoverDate, setHoverDate] = React.useState<Date | null>(null)\n const datePickerRef = React.useRef<ReactDatePicker>(null)\n\n let status: 'default' | 'error' | 'warning' | 'info' | 'success' = 'default'\n if (error) status = 'error'\n else if (warning) status = 'warning'\n else if (success) status = 'success'\n else if (info) status = 'info'\n\n const handleChange = (dates: [Date | null, Date | null]) => {\n if (startDate === undefined && endDate === undefined) {\n setInternalStartDate(dates[0])\n setInternalEndDate(dates[1])\n }\n onChange?.(dates)\n setHoverDate(null)\n if (dates[0] && dates[1]) {\n setIsOpen(false)\n setShowMonthSelector(false)\n setShowYearSelector(false)\n }\n }\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation()\n if (startDate === undefined && endDate === undefined) {\n setInternalStartDate(null)\n setInternalEndDate(null)\n }\n onChange?.([null, null])\n }\n\n const handleMonthSelect = (month: number) => {\n const newDate = new Date(viewDate)\n newDate.setMonth(month)\n setViewDate(newDate)\n setShowMonthSelector(false)\n }\n\n const handleYearSelect = (year: number) => {\n const newDate = new Date(viewDate)\n newDate.setFullYear(year)\n setViewDate(newDate)\n setShowYearSelector(false)\n setShowMonthSelector(true)\n }\n\n const handleYearChange = (year: number) => {\n const newDate = new Date(viewDate)\n newDate.setFullYear(year)\n setViewDate(newDate)\n }\n\n const handleDecadeChange = (year: number) => {\n const newDate = new Date(viewDate)\n newDate.setFullYear(year)\n setViewDate(newDate)\n }\n\n const showClear =\n clearable && (currentStartDate || currentEndDate) && !disabled\n\n const formatDate = (date: Date) => {\n return new Date(date).toLocaleDateString('en-US', {\n month: '2-digit',\n day: '2-digit',\n year: 'numeric',\n })\n }\n\n const getDisplayValue = () => {\n // Show hover preview when hovering over dates (with start date selected)\n if (hoverDate && currentStartDate && !currentEndDate) {\n const start = formatDate(currentStartDate)\n const hover = formatDate(hoverDate)\n return { confirmed: `${start} - `, preview: hover }\n }\n\n // Show hover preview when hovering over dates (no start date yet)\n if (hoverDate && !currentStartDate && !currentEndDate) {\n const hover = formatDate(hoverDate)\n return { confirmed: '', preview: hover }\n }\n\n if (!currentStartDate && !currentEndDate) {\n return { confirmed: '', preview: '' }\n }\n\n const start = currentStartDate ? formatDate(currentStartDate) : ''\n const end = currentEndDate ? formatDate(currentEndDate) : ''\n\n if (start && end) {\n return { confirmed: `${start} - ${end}`, preview: '' }\n }\n if (start) {\n return { confirmed: `${start}`, preview: ' - ...' }\n }\n return { confirmed: '', preview: '' }\n }\n\n const { confirmed: rangeConfirmed, preview: rangePreview } =\n getDisplayValue()\n\n const customHeader = (props: any) => (\n <CustomCalendarHeader\n {...props}\n showMonthSelector={showMonthSelector}\n onMonthClick={() => setShowMonthSelector(!showMonthSelector)}\n onYearClick={() => setShowYearSelector(true)}\n />\n )\n\n const rangeTriggerButton = (\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => setIsOpen(!isOpen)}\n className={cn(\n pickerInputVariants({ variant, status, size, fullWidth }),\n 'pl-10 flex items-center justify-start cursor-pointer',\n showClear && 'pr-10',\n className,\n )}\n >\n {rangeConfirmed || rangePreview ? (\n <>\n {rangeConfirmed && <span>{rangeConfirmed}</span>}\n {rangePreview && (\n <span className=\"text-text-muted\">{rangePreview}</span>\n )}\n </>\n ) : (\n <span className=\"text-text-muted\">{placeholder}</span>\n )}\n </button>\n )\n\n return (\n <PickerWrapper\n label={label}\n error={error}\n warning={warning}\n info={info}\n success={success}\n helperText={helperText}\n messagePosition={messagePosition}\n required={required}\n fullWidth={fullWidth}\n >\n <div className=\"relative w-full\">\n <div className=\"absolute left-3 flex items-center h-full top-0 text-text-muted pointer-events-none z-10\">\n <Calendar className={iconSizes[size]} />\n </div>\n\n <Popover\n open={isOpen}\n onOpenChange={(open) => {\n setIsOpen(open)\n if (!open) {\n setShowMonthSelector(false)\n setShowYearSelector(false)\n setHoverDate(null)\n }\n }}\n >\n <PopoverTrigger asChild>{rangeTriggerButton}</PopoverTrigger>\n\n <PopoverContent\n className=\"p-0 w-auto\"\n align=\"start\"\n sideOffset={4}\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <>\n {showYearSelector ? (\n <YearSelector\n date={viewDate}\n onYearSelect={handleYearSelect}\n onDecadeChange={handleDecadeChange}\n />\n ) : showMonthSelector ? (\n <MonthSelector\n date={viewDate}\n onMonthSelect={handleMonthSelect}\n onYearClick={() => setShowYearSelector(true)}\n onYearChange={handleYearChange}\n />\n ) : (\n <div className={datePickerStyles}>\n <ReactDatePicker\n ref={datePickerRef}\n selectsRange\n startDate={currentStartDate}\n endDate={currentEndDate}\n onChange={handleChange}\n disabled={disabled}\n minDate={minDate}\n maxDate={maxDate}\n dateFormat={dateFormat}\n renderCustomHeader={customHeader}\n openToDate={viewDate}\n onMonthChange={setViewDate}\n monthsShown={2}\n onDayMouseEnter={setHoverDate}\n inline\n />\n </div>\n )}\n </>\n </PopoverContent>\n </Popover>\n\n {showClear && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"absolute right-3 flex items-center h-full top-0 text-text-muted hover:text-text-primary z-10\"\n aria-label=\"Clear date range\"\n >\n <X className={iconSizes[size]} />\n </button>\n )}\n </div>\n </PickerWrapper>\n )\n },\n)\n\nRangePickerComponent.displayName = 'RangePicker'\n\n// Time Column Component\nconst TimeColumn: React.FC<{\n items: (string | number)[]\n selected: string | number\n onSelect: (item: any) => void\n onHover?: (item: any) => void\n onLeave?: () => void\n}> = React.memo(({ items, selected, onSelect, onHover, onLeave }) => (\n <div\n className=\"flex flex-col h-[240px] overflow-y-auto scrollbar-thin scrollbar-thumb-border scrollbar-track-background\"\n onMouseLeave={onLeave}\n >\n {items.map((item) => (\n <button\n key={item}\n type=\"button\"\n onClick={() => onSelect(item)}\n onMouseEnter={() => onHover?.(item)}\n className={cn(\n 'px-4 py-2 text-sm font-medium transition-colors text-center min-h-[40px] flex items-center justify-center',\n item === selected\n ? 'bg-surface text-text-primary font-semibold'\n : 'text-text-muted hover:bg-surface/50',\n )}\n >\n {typeof item === 'number' ? String(item).padStart(2, '0') : item}\n </button>\n ))}\n </div>\n))\n\nTimeColumn.displayName = 'TimeColumn'\n\n// Time Column Picker Component\ninterface TimeColumnPickerProps {\n value: Date | null\n onChange: (date: Date) => void\n onPreview?: (preview: string) => void\n timeFormat?: string\n}\n\nconst TimeColumnPicker: React.FC<TimeColumnPickerProps> = ({\n value,\n onChange,\n onPreview,\n timeFormat = 'h:mm aa',\n}) => {\n const is12Hour = timeFormat.includes('aa')\n const currentDate = value || new Date()\n const currentHour = currentDate.getHours()\n const currentMinute = currentDate.getMinutes()\n\n const [selectedHour, setSelectedHour] = React.useState(\n is12Hour ? currentHour % 12 || 12 : currentHour,\n )\n const [selectedMinute, setSelectedMinute] = React.useState(currentMinute)\n const [selectedPeriod, setSelectedPeriod] = React.useState(\n currentHour >= 12 ? 'PM' : 'AM',\n )\n const [hoverHour, setHoverHour] = React.useState<number | null>(null)\n const [hoverMinute, setHoverMinute] = React.useState<number | null>(null)\n const [hoverPeriod, setHoverPeriod] = React.useState<string | null>(null)\n\n const hours = is12Hour\n ? Array.from({ length: 12 }, (_, i) => i + 1)\n : Array.from({ length: 24 }, (_, i) => i)\n const minutes = Array.from({ length: 60 }, (_, i) => i)\n const periods = ['AM', 'PM']\n\n // Update preview when hover changes\n React.useEffect(() => {\n if (hoverHour !== null || hoverMinute !== null || hoverPeriod !== null) {\n const previewHour = hoverHour ?? selectedHour\n const previewMinute = hoverMinute ?? selectedMinute\n const previewPeriod = hoverPeriod ?? selectedPeriod\n\n const formattedHour = String(previewHour).padStart(2, '0')\n const formattedMinute = String(previewMinute).padStart(2, '0')\n const previewString = is12Hour\n ? `${previewHour}:${formattedMinute} ${previewPeriod}`\n : `${formattedHour}:${formattedMinute}`\n\n onPreview?.(previewString)\n } else {\n onPreview?.('')\n }\n }, [\n hoverHour,\n hoverMinute,\n hoverPeriod,\n selectedHour,\n selectedMinute,\n selectedPeriod,\n is12Hour,\n onPreview,\n ])\n\n const handleOkClick = () => {\n const newDate = new Date(currentDate)\n let finalHour = selectedHour\n\n if (is12Hour) {\n if (selectedPeriod === 'PM' && selectedHour !== 12) {\n finalHour = selectedHour + 12\n } else if (selectedPeriod === 'AM' && selectedHour === 12) {\n finalHour = 0\n }\n }\n\n newDate.setHours(finalHour)\n newDate.setMinutes(selectedMinute)\n newDate.setSeconds(0)\n onPreview?.('')\n onChange(newDate)\n }\n\n const handleNowClick = () => {\n const now = new Date()\n const nowHour = now.getHours()\n const nowMinute = now.getMinutes()\n\n setSelectedHour(is12Hour ? nowHour % 12 || 12 : nowHour)\n setSelectedMinute(nowMinute)\n setSelectedPeriod(nowHour >= 12 ? 'PM' : 'AM')\n\n onPreview?.('')\n onChange(now)\n }\n\n return (\n <div className=\"flex flex-col bg-background\">\n <div className=\"flex gap-0\">\n <TimeColumn\n items={hours}\n selected={selectedHour}\n onSelect={setSelectedHour}\n onHover={setHoverHour}\n onLeave={() => setHoverHour(null)}\n />\n <TimeColumn\n items={minutes}\n selected={selectedMinute}\n onSelect={setSelectedMinute}\n onHover={setHoverMinute}\n onLeave={() => setHoverMinute(null)}\n />\n {is12Hour && (\n <TimeColumn\n items={periods}\n selected={selectedPeriod}\n onSelect={setSelectedPeriod}\n onHover={setHoverPeriod}\n onLeave={() => setHoverPeriod(null)}\n />\n )}\n </div>\n <div className=\"p-3 border-t border-border flex gap-2\">\n <button\n type=\"button\"\n onClick={handleNowClick}\n className=\"flex-1 px-4 py-2 bg-surface text-text-primary rounded-md hover:bg-surface/80 transition-colors font-medium text-sm border border-border\"\n >\n Now\n </button>\n <button\n type=\"button\"\n onClick={handleOkClick}\n className=\"flex-1 px-4 py-2 bg-primary text-white rounded-md hover:bg-primary/90 transition-colors font-medium text-sm\"\n >\n OK\n </button>\n </div>\n </div>\n )\n}\n\n// TimePicker Component\nconst TimePickerComponent = React.memo<TimePickerProps>(\n ({\n variant = 'outline',\n size = 'md',\n label,\n error,\n warning,\n info,\n success,\n helperText,\n messagePosition = 'bottom',\n placeholder = 'Select time...',\n disabled = false,\n required = false,\n clearable = false,\n fullWidth = true,\n className,\n value,\n defaultValue,\n onChange,\n timeFormat = 'h:mm aa',\n }) => {\n const [internalValue, setInternalValue] = React.useState<Date | null>(\n defaultValue || null,\n )\n const currentValue = value !== undefined ? value : internalValue\n\n const [isOpen, setIsOpen] = React.useState(false)\n const [previewTime, setPreviewTime] = React.useState('')\n\n let status: 'default' | 'error' | 'warning' | 'info' | 'success' = 'default'\n if (error) status = 'error'\n else if (warning) status = 'warning'\n else if (success) status = 'success'\n else if (info) status = 'info'\n\n const handleTimeChange = (date: Date | null) => {\n if (value === undefined) {\n setInternalValue(date)\n }\n onChange?.(date)\n setPreviewTime('')\n setIsOpen(false)\n }\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation()\n if (value === undefined) {\n setInternalValue(null)\n }\n onChange?.(null)\n }\n\n const showClear = clearable && currentValue && !disabled\n\n const formatTime = (date: Date) => {\n return new Date(date).toLocaleTimeString('en-US', {\n hour: 'numeric',\n minute: '2-digit',\n hour12: timeFormat.includes('aa'),\n })\n }\n\n const getDisplayValue = () => {\n if (previewTime) {\n return { confirmed: '', preview: previewTime }\n }\n if (currentValue) {\n return { confirmed: formatTime(currentValue), preview: '' }\n }\n return { confirmed: '', preview: '' }\n }\n\n const { confirmed: timeConfirmed, preview: timePreview } = getDisplayValue()\n\n const timeTriggerButton = (\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => setIsOpen(!isOpen)}\n className={cn(\n pickerInputVariants({ variant, status, size, fullWidth }),\n 'pl-10 flex items-center justify-start cursor-pointer',\n showClear && 'pr-10',\n className,\n )}\n >\n {timeConfirmed || timePreview ? (\n <>\n {timeConfirmed && <span>{timeConfirmed}</span>}\n {timePreview && (\n <span className=\"text-text-muted\">{timePreview}</span>\n )}\n </>\n ) : (\n <span className=\"text-text-muted\">{placeholder}</span>\n )}\n </button>\n )\n\n return (\n <PickerWrapper\n label={label}\n error={error}\n warning={warning}\n info={info}\n success={success}\n helperText={helperText}\n messagePosition={messagePosition}\n required={required}\n fullWidth={fullWidth}\n >\n <div className=\"relative w-full\">\n <div className=\"absolute left-3 flex items-center h-full top-0 text-text-muted pointer-events-none z-10\">\n <Clock className={iconSizes[size]} />\n </div>\n\n <Popover\n open={isOpen}\n onOpenChange={(open) => {\n setIsOpen(open)\n if (!open) {\n setPreviewTime('')\n }\n }}\n >\n <PopoverTrigger asChild>{timeTriggerButton}</PopoverTrigger>\n\n <PopoverContent\n className=\"p-0 w-auto\"\n align=\"start\"\n sideOffset={4}\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <TimeColumnPicker\n value={currentValue}\n onChange={handleTimeChange}\n onPreview={setPreviewTime}\n timeFormat={timeFormat}\n />\n </PopoverContent>\n </Popover>\n\n {showClear && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"absolute right-3 flex items-center h-full top-0 text-text-muted hover:text-text-primary z-10\"\n aria-label=\"Clear time\"\n >\n <X className={iconSizes[size]} />\n </button>\n )}\n </div>\n </PickerWrapper>\n )\n },\n)\n\nTimePickerComponent.displayName = 'TimePicker'\n\nexport type * from './types'\nexport const DatePicker = Object.assign(DatePickerComponent, {\n RangePicker: RangePickerComponent,\n TimePicker: TimePickerComponent,\n})\n\nexport {\n RangePickerComponent as RangePicker,\n TimePickerComponent as TimePicker,\n}\n"]}