ml-uikit 1.1.6 → 1.1.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.es29.js","sources":["../src/components/ui/date-range-picker.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport {\n addMonths,\n format,\n isAfter,\n isBefore,\n setMonth,\n setYear,\n startOfMonth,\n} from \"date-fns\"\nimport { CalendarDays, ChevronDown, ChevronLeft, ChevronRight } from \"lucide-react\"\nimport { DayPicker, type Matcher } from \"react-day-picker\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\"\n\nexport type DateRangePickerValue = {\n from?: Date\n to?: Date\n}\n\nexport interface DateRangePickerProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"value\" | \"defaultValue\" | \"onChange\"> {\n value?: DateRangePickerValue\n defaultValue?: DateRangePickerValue\n onValueChange?: (value: DateRangePickerValue | undefined) => void\n wrapperClassName?: string\n popoverClassName?: string\n placeholder?: string\n dateFormat?: string\n minYear?: number\n maxYear?: number\n}\n\nconst DEFAULT_FORMAT = \"dd/MM/yyyy\"\nconst DEFAULT_PLACEHOLDER = \"DD/MM/YYYY - DD/MM/YYYY\"\nconst MONTH_LABELS = Array.from({ length: 12 }, (_, monthIndex) =>\n new Date(2020, monthIndex, 1).toLocaleString(\"default\", { month: \"long\" })\n)\n\nconst clampMonth = (month: Date, minMonth: Date, maxMonth: Date) => {\n if (isBefore(month, minMonth)) {\n return minMonth\n }\n\n if (isAfter(month, maxMonth)) {\n return maxMonth\n }\n\n return month\n}\n\nconst normalizeRange = (\n value?: DateRangePickerValue\n): DateRangePickerValue | undefined => {\n if (!value?.from && !value?.to) {\n return undefined\n }\n\n if (value.from && value.to && isAfter(value.from, value.to)) {\n return {\n from: value.to,\n to: value.from,\n }\n }\n\n return {\n from: value.from,\n to: value.to,\n }\n}\n\nconst formatDate = (date: Date | undefined, dateFormat: string) => {\n if (!date) {\n return undefined\n }\n\n return format(date, dateFormat)\n}\n\nconst formatCommittedValue = (\n value: DateRangePickerValue | undefined,\n dateFormat: string\n) => {\n const fromText = formatDate(value?.from, dateFormat)\n const toText = formatDate(value?.to, dateFormat)\n\n if (!fromText || !toText) {\n return \"\"\n }\n\n return `${fromText} - ${toText}`\n}\n\nconst formatDraftValue = (\n value: DateRangePickerValue | undefined,\n dateFormat: string\n) => {\n const fromText = formatDate(value?.from, dateFormat) ?? \"DD/MM/YYYY\"\n const toText = formatDate(value?.to, dateFormat) ?? \"DD/MM/YYYY\"\n\n return `${fromText} - ${toText}`\n}\n\ntype CalendarPanelProps = {\n label: string\n month: Date\n minMonth: Date\n maxMonth: Date\n minDate: Date\n maxDate: Date\n selectedDate?: Date\n disabledMatcher?: Matcher\n disabled?: boolean\n years: number[]\n onMonthChange: (month: Date) => void\n onSelectDate: (date: Date | undefined) => void\n}\n\nfunction CalendarPanel({\n label,\n month,\n minMonth,\n maxMonth,\n minDate,\n maxDate,\n selectedDate,\n disabledMatcher,\n disabled,\n years,\n onMonthChange,\n onSelectDate,\n}: CalendarPanelProps) {\n const handlePrevMonth = () => {\n onMonthChange(addMonths(month, -1))\n }\n\n const handleNextMonth = () => {\n onMonthChange(addMonths(month, 1))\n }\n\n const isPrevDisabled = disabled || !isAfter(month, minMonth)\n const isNextDisabled = disabled || !isBefore(month, maxMonth)\n\n return (\n <div className=\"w-full min-w-0\">\n <div className=\"flex items-center gap-2 md:gap-3\">\n <button\n type=\"button\"\n onClick={handlePrevMonth}\n disabled={isPrevDisabled}\n className={cn(\n \"inline-flex h-10 w-10 items-center justify-center rounded-[8px] text-[#6e6d71] transition-colors\",\n \"hover:bg-[#f5f5f5] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#1d1c20]/20\",\n \"disabled:cursor-not-allowed disabled:opacity-40\"\n )}\n aria-label={`Previous month for ${label.toLowerCase()}`}\n >\n <ChevronLeft className=\"h-6 w-6\" />\n </button>\n\n <div className=\"relative min-w-0 flex-1\">\n <select\n value={month.getMonth()}\n onChange={(event) => {\n const monthValue = Number(event.target.value)\n onMonthChange(setMonth(month, monthValue))\n }}\n disabled={disabled}\n className={cn(\n \"h-14 w-full appearance-none rounded-[14px] border border-[#b7b7b9] bg-white px-5 pr-11 text-left text-[16px] font-medium leading-[22px] text-[#111111]\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#1d1c20]/20\",\n \"disabled:cursor-not-allowed disabled:bg-[#f2f2f2] disabled:text-[#b3b3b3]\"\n )}\n aria-label={`Month for ${label.toLowerCase()}`}\n >\n {MONTH_LABELS.map((monthLabel, monthIndex) => (\n <option key={monthLabel} value={monthIndex}>\n {monthLabel}\n </option>\n ))}\n </select>\n <ChevronDown className=\"pointer-events-none absolute right-4 top-1/2 h-5 w-5 -translate-y-1/2 text-[#7f7d83]\" />\n </div>\n\n <div className=\"relative w-[132px] shrink-0\">\n <select\n value={month.getFullYear()}\n onChange={(event) => {\n const yearValue = Number(event.target.value)\n onMonthChange(setYear(month, yearValue))\n }}\n disabled={disabled}\n className={cn(\n \"h-14 w-full appearance-none rounded-[14px] border border-[#b7b7b9] bg-white px-5 pr-10 text-left text-[16px] font-medium leading-[22px] text-[#111111]\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#1d1c20]/20\",\n \"disabled:cursor-not-allowed disabled:bg-[#f2f2f2] disabled:text-[#b3b3b3]\"\n )}\n aria-label={`Year for ${label.toLowerCase()}`}\n >\n {years.map((year) => (\n <option key={year} value={year}>\n {year}\n </option>\n ))}\n </select>\n <ChevronDown className=\"pointer-events-none absolute right-4 top-1/2 h-5 w-5 -translate-y-1/2 text-[#7f7d83]\" />\n </div>\n\n <button\n type=\"button\"\n onClick={handleNextMonth}\n disabled={isNextDisabled}\n className={cn(\n \"inline-flex h-10 w-10 items-center justify-center rounded-[8px] text-[#6e6d71] transition-colors\",\n \"hover:bg-[#f5f5f5] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#1d1c20]/20\",\n \"disabled:cursor-not-allowed disabled:opacity-40\"\n )}\n aria-label={`Next month for ${label.toLowerCase()}`}\n >\n <ChevronRight className=\"h-6 w-6\" />\n </button>\n </div>\n\n <p className=\"mt-4 text-center text-[16px] font-medium leading-[22px] text-[#666666]\">\n {label}\n </p>\n\n <DayPicker\n mode=\"single\"\n month={month}\n onMonthChange={onMonthChange}\n selected={selectedDate}\n onSelect={onSelectDate}\n showOutsideDays\n fixedWeeks\n hideNavigation\n disabled={[\n { before: minDate },\n { after: maxDate },\n ...(disabledMatcher ? [disabledMatcher] : []),\n ]}\n className=\"mt-2 p-0\"\n classNames={{\n root: \"w-full\",\n months: \"w-full\",\n month: \"w-full\",\n month_caption: \"hidden\",\n month_grid: \"w-full border-collapse\",\n weekdays: \"grid grid-cols-7\",\n weekday:\n \"h-10 text-center text-[16px] font-medium leading-[22px] text-[#666666]\",\n weeks: \"grid gap-1\",\n week: \"grid grid-cols-7\",\n day: \"flex h-12 w-full items-center justify-center p-0\",\n day_button:\n \"h-10 w-10 rounded-[12px] border border-transparent bg-transparent p-0 text-[18px] font-normal leading-none text-[#444444] transition-colors hover:border-[#cccccc] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#2bbd8f]/25 aria-selected:border-[#2bbd8f] aria-selected:text-[#111111]\",\n selected: \"\",\n today: \"font-medium\",\n outside: \"text-[#a4a4a8]\",\n disabled: \"pointer-events-none text-[#d3d3d6]\",\n hidden: \"invisible\",\n }}\n />\n </div>\n )\n}\n\nconst DateRangePicker = React.forwardRef<HTMLButtonElement, DateRangePickerProps>(\n (\n {\n value,\n defaultValue,\n onValueChange,\n wrapperClassName,\n popoverClassName,\n className,\n placeholder = DEFAULT_PLACEHOLDER,\n dateFormat = DEFAULT_FORMAT,\n minYear = 2000,\n maxYear = 2100,\n disabled,\n ...triggerProps\n },\n ref\n ) => {\n const safeMinYear = Math.min(minYear, maxYear)\n const safeMaxYear = Math.max(minYear, maxYear)\n\n const minMonth = React.useMemo(\n () => startOfMonth(new Date(safeMinYear, 0, 1)),\n [safeMinYear]\n )\n const maxMonth = React.useMemo(\n () => startOfMonth(new Date(safeMaxYear, 11, 1)),\n [safeMaxYear]\n )\n const minDate = React.useMemo(() => new Date(safeMinYear, 0, 1), [safeMinYear])\n const maxDate = React.useMemo(\n () => new Date(safeMaxYear, 11, 31),\n [safeMaxYear]\n )\n\n const years = React.useMemo(\n () =>\n Array.from(\n { length: safeMaxYear - safeMinYear + 1 },\n (_, yearIndex) => safeMinYear + yearIndex\n ),\n [safeMinYear, safeMaxYear]\n )\n\n const isControlled = value !== undefined\n const [internalValue, setInternalValue] = React.useState<DateRangePickerValue | undefined>(\n normalizeRange(defaultValue)\n )\n\n const committedValue = normalizeRange(isControlled ? value : internalValue)\n\n const buildPanelMonths = React.useCallback(\n (range: DateRangePickerValue | undefined) => {\n const now = startOfMonth(new Date())\n const initialStart = clampMonth(\n startOfMonth(range?.from ?? now),\n minMonth,\n maxMonth\n )\n\n const initialEndRaw = range?.to\n ? startOfMonth(range.to)\n : addMonths(initialStart, 1)\n const initialEnd = clampMonth(initialEndRaw, minMonth, maxMonth)\n\n return {\n start: initialStart,\n end: initialEnd,\n }\n },\n [minMonth, maxMonth]\n )\n\n const [open, setOpen] = React.useState(false)\n const [draftValue, setDraftValue] = React.useState<DateRangePickerValue | undefined>(\n committedValue\n )\n const initialMonths = buildPanelMonths(committedValue)\n const [startMonth, setStartMonth] = React.useState<Date>(initialMonths.start)\n const [endMonth, setEndMonth] = React.useState<Date>(initialMonths.end)\n\n const syncDraftState = React.useCallback(\n (nextValue: DateRangePickerValue | undefined) => {\n const normalized = normalizeRange(nextValue)\n setDraftValue(normalized)\n const nextMonths = buildPanelMonths(normalized)\n setStartMonth(nextMonths.start)\n setEndMonth(nextMonths.end)\n },\n [buildPanelMonths]\n )\n\n React.useEffect(() => {\n if (!open) {\n syncDraftState(committedValue)\n }\n }, [committedValue, open, syncDraftState])\n\n const handleStartMonthChange = (nextMonth: Date) => {\n setStartMonth(clampMonth(startOfMonth(nextMonth), minMonth, maxMonth))\n }\n\n const handleEndMonthChange = (nextMonth: Date) => {\n setEndMonth(clampMonth(startOfMonth(nextMonth), minMonth, maxMonth))\n }\n\n const handleStartDateSelect = (date: Date | undefined) => {\n if (!date) {\n return\n }\n\n setDraftValue((previousValue) => {\n const nextValue: DateRangePickerValue = {\n from: date,\n to: previousValue?.to,\n }\n\n if (nextValue.to && isAfter(date, nextValue.to)) {\n nextValue.to = date\n }\n\n return nextValue\n })\n }\n\n const handleEndDateSelect = (date: Date | undefined) => {\n if (!date) {\n return\n }\n\n setDraftValue((previousValue) => {\n const nextValue: DateRangePickerValue = {\n from: previousValue?.from,\n to: date,\n }\n\n if (nextValue.from && isAfter(nextValue.from, date)) {\n nextValue.from = date\n }\n\n return nextValue\n })\n }\n\n const handleCancel = () => {\n syncDraftState(committedValue)\n setOpen(false)\n }\n\n const handleApply = () => {\n const normalized = normalizeRange(draftValue)\n\n if (!isControlled) {\n setInternalValue(normalized)\n }\n\n onValueChange?.(normalized)\n setOpen(false)\n }\n\n const canApply = Boolean(draftValue?.from && draftValue?.to)\n const committedText = formatCommittedValue(committedValue, dateFormat)\n const draftText = formatDraftValue(draftValue, dateFormat)\n\n return (\n <div className={cn(\"w-full\", wrapperClassName)}>\n <Popover\n open={open}\n onOpenChange={(nextOpen) => {\n if (disabled) {\n return\n }\n\n if (nextOpen) {\n syncDraftState(committedValue)\n }\n\n setOpen(nextOpen)\n }}\n >\n <PopoverTrigger asChild>\n <button\n ref={ref}\n type=\"button\"\n disabled={disabled}\n className={cn(\n \"flex h-10 w-full items-center justify-between rounded-[8px] border border-[#e6e6e6] bg-white px-3 py-2 text-left text-[14px] leading-[20px] transition-colors\",\n \"focus-visible:outline-none focus-visible:border-[#1D1C20] focus-visible:ring-0\",\n \"disabled:cursor-not-allowed disabled:bg-[#f2f2f2] disabled:text-[#9ca3af] disabled:opacity-100\",\n className\n )}\n {...triggerProps}\n >\n <span\n className={cn(\n \"truncate text-[14px] font-normal leading-[20px]\",\n committedText ? \"text-[#111111]\" : \"text-[#b3b3b3]\"\n )}\n >\n {committedText || placeholder}\n </span>\n <CalendarDays className=\"ml-3 h-4 w-4 shrink-0 text-[#111111]\" />\n </button>\n </PopoverTrigger>\n\n <PopoverContent\n align=\"start\"\n sideOffset={10}\n className={cn(\n \"w-[min(96vw,980px)] rounded-[16px] border border-[#d8d8da] bg-[#f7f7f8] p-4 shadow-[0px_12px_24px_rgba(0,0,0,0.08)] md:p-6\",\n popoverClassName\n )}\n >\n <div className=\"grid gap-8 md:grid-cols-2 md:gap-10\">\n <CalendarPanel\n label=\"Start date\"\n month={startMonth}\n minMonth={minMonth}\n maxMonth={maxMonth}\n minDate={minDate}\n maxDate={maxDate}\n selectedDate={draftValue?.from}\n disabledMatcher={draftValue?.to ? { after: draftValue.to } : undefined}\n disabled={disabled}\n years={years}\n onMonthChange={handleStartMonthChange}\n onSelectDate={handleStartDateSelect}\n />\n\n <CalendarPanel\n label=\"End date\"\n month={endMonth}\n minMonth={minMonth}\n maxMonth={maxMonth}\n minDate={minDate}\n maxDate={maxDate}\n selectedDate={draftValue?.to}\n disabledMatcher={draftValue?.from ? { before: draftValue.from } : undefined}\n disabled={disabled}\n years={years}\n onMonthChange={handleEndMonthChange}\n onSelectDate={handleEndDateSelect}\n />\n </div>\n\n <div className=\"mt-5 border-t border-[#d8d8da] pt-4\">\n <input\n readOnly\n value={draftText}\n className=\"h-10 w-full rounded-[8px] border border-[#e6e6e6] bg-white px-3 py-2 text-[14px] leading-[20px] text-[#111111] outline-none transition-colors placeholder:text-[#b3b3b3] focus-visible:border-[#1D1C20]\"\n aria-label=\"Selected date range\"\n />\n\n <div className=\"mt-4 flex justify-end gap-3\">\n <Button\n type=\"button\"\n variant=\"outline\"\n className=\"h-12 rounded-[14px] px-7 text-[14px]\"\n onClick={handleCancel}\n >\n Cancel\n </Button>\n <Button\n type=\"button\"\n className=\"h-12 rounded-[14px] px-7 text-[14px]\"\n disabled={!canApply}\n onClick={handleApply}\n >\n Apply\n </Button>\n </div>\n </div>\n </PopoverContent>\n </Popover>\n </div>\n )\n }\n)\n\nDateRangePicker.displayName = \"DateRangePicker\"\n\nexport { DateRangePicker }\n"],"names":["DEFAULT_FORMAT","DEFAULT_PLACEHOLDER","MONTH_LABELS","_","monthIndex","clampMonth","month","minMonth","maxMonth","isBefore","isAfter","normalizeRange","value","formatDate","date","dateFormat","format","formatCommittedValue","fromText","toText","formatDraftValue","CalendarPanel","label","minDate","maxDate","selectedDate","disabledMatcher","disabled","years","onMonthChange","onSelectDate","handlePrevMonth","addMonths","handleNextMonth","isPrevDisabled","isNextDisabled","React","cn","ChevronLeft","event","monthValue","setMonth","monthLabel","ChevronDown","yearValue","setYear","year","ChevronRight","DayPicker","DateRangePicker","defaultValue","onValueChange","wrapperClassName","popoverClassName","className","placeholder","minYear","maxYear","triggerProps","ref","safeMinYear","safeMaxYear","startOfMonth","yearIndex","isControlled","internalValue","setInternalValue","committedValue","buildPanelMonths","range","now","initialStart","initialEndRaw","initialEnd","open","setOpen","draftValue","setDraftValue","initialMonths","startMonth","setStartMonth","endMonth","setEndMonth","syncDraftState","nextValue","normalized","nextMonths","handleStartMonthChange","nextMonth","handleEndMonthChange","handleStartDateSelect","previousValue","handleEndDateSelect","handleCancel","handleApply","canApply","committedText","draftText","Popover","nextOpen","PopoverTrigger","CalendarDays","PopoverContent","Button"],"mappings":"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"}
1
+ {"version":3,"file":"index.es29.js","sources":["../src/components/ui/date-range-picker.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport {\n addMonths,\n format,\n isAfter,\n isBefore,\n setMonth,\n setYear,\n startOfMonth,\n} from \"date-fns\"\nimport { CalendarDays, ChevronDown, ChevronLeft, ChevronRight } from \"lucide-react\"\nimport { DayPicker, type Matcher } from \"react-day-picker\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\"\n\nexport type DateRangePickerValue = {\n from?: Date\n to?: Date\n}\n\nexport interface DateRangePickerProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"value\" | \"defaultValue\" | \"onChange\"> {\n value?: DateRangePickerValue\n defaultValue?: DateRangePickerValue\n onValueChange?: (value: DateRangePickerValue | undefined) => void\n wrapperClassName?: string\n popoverClassName?: string\n popoverSide?: React.ComponentPropsWithoutRef<typeof PopoverContent>[\"side\"]\n popoverAvoidCollisions?: boolean\n placeholder?: string\n dateFormat?: string\n minYear?: number\n maxYear?: number\n}\n\nconst DEFAULT_FORMAT = \"dd/MM/yyyy\"\nconst DEFAULT_PLACEHOLDER = \"DD/MM/YYYY - DD/MM/YYYY\"\nconst MONTH_LABELS = Array.from({ length: 12 }, (_, monthIndex) =>\n new Date(2020, monthIndex, 1).toLocaleString(\"default\", { month: \"long\" })\n)\n\nconst clampMonth = (month: Date, minMonth: Date, maxMonth: Date) => {\n if (isBefore(month, minMonth)) {\n return minMonth\n }\n\n if (isAfter(month, maxMonth)) {\n return maxMonth\n }\n\n return month\n}\n\nconst normalizeRange = (\n value?: DateRangePickerValue\n): DateRangePickerValue | undefined => {\n if (!value?.from && !value?.to) {\n return undefined\n }\n\n if (value.from && value.to && isAfter(value.from, value.to)) {\n return {\n from: value.to,\n to: value.from,\n }\n }\n\n return {\n from: value.from,\n to: value.to,\n }\n}\n\nconst formatDate = (date: Date | undefined, dateFormat: string) => {\n if (!date) {\n return undefined\n }\n\n return format(date, dateFormat)\n}\n\nconst formatCommittedValue = (\n value: DateRangePickerValue | undefined,\n dateFormat: string\n) => {\n const fromText = formatDate(value?.from, dateFormat)\n const toText = formatDate(value?.to, dateFormat)\n\n if (!fromText || !toText) {\n return \"\"\n }\n\n return `${fromText} - ${toText}`\n}\n\nconst formatDraftValue = (\n value: DateRangePickerValue | undefined,\n dateFormat: string\n) => {\n const fromText = formatDate(value?.from, dateFormat) ?? \"DD/MM/YYYY\"\n const toText = formatDate(value?.to, dateFormat) ?? \"DD/MM/YYYY\"\n\n return `${fromText} - ${toText}`\n}\n\ntype CalendarPanelProps = {\n label: string\n month: Date\n minMonth: Date\n maxMonth: Date\n minDate: Date\n maxDate: Date\n selectedDate?: Date\n disabledMatcher?: Matcher\n disabled?: boolean\n years: number[]\n onMonthChange: (month: Date) => void\n onSelectDate: (date: Date | undefined) => void\n}\n\nfunction CalendarPanel({\n label,\n month,\n minMonth,\n maxMonth,\n minDate,\n maxDate,\n selectedDate,\n disabledMatcher,\n disabled,\n years,\n onMonthChange,\n onSelectDate,\n}: CalendarPanelProps) {\n const handlePrevMonth = () => {\n onMonthChange(addMonths(month, -1))\n }\n\n const handleNextMonth = () => {\n onMonthChange(addMonths(month, 1))\n }\n\n const isPrevDisabled = disabled || !isAfter(month, minMonth)\n const isNextDisabled = disabled || !isBefore(month, maxMonth)\n\n return (\n <div className=\"w-full min-w-0\">\n <div className=\"flex flex-wrap items-center gap-2 sm:flex-nowrap\">\n <button\n type=\"button\"\n onClick={handlePrevMonth}\n disabled={isPrevDisabled}\n className={cn(\n \"inline-flex h-8 w-8 items-center justify-center rounded-md text-[#6e6d71] transition-colors lg:h-9 lg:w-9\",\n \"hover:bg-[#f5f5f5] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#1d1c20]/20\",\n \"disabled:cursor-not-allowed disabled:opacity-40\"\n )}\n aria-label={`Previous month for ${label.toLowerCase()}`}\n >\n <ChevronLeft className=\"h-4 w-4 lg:h-5 lg:w-5\" />\n </button>\n\n <div className=\"relative min-w-0 flex-1\">\n <select\n value={month.getMonth()}\n onChange={(event) => {\n const monthValue = Number(event.target.value)\n onMonthChange(setMonth(month, monthValue))\n }}\n disabled={disabled}\n className={cn(\n \"h-9 w-full appearance-none rounded-md border border-[#b7b7b9] bg-white px-3 pr-8 text-left text-sm font-medium leading-5 text-[#111111] lg:h-10 lg:px-4 lg:pr-10\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#1d1c20]/20\",\n \"disabled:cursor-not-allowed disabled:bg-[#f2f2f2] disabled:text-[#b3b3b3]\"\n )}\n aria-label={`Month for ${label.toLowerCase()}`}\n >\n {MONTH_LABELS.map((monthLabel, monthIndex) => (\n <option key={monthLabel} value={monthIndex}>\n {monthLabel}\n </option>\n ))}\n </select>\n <ChevronDown className=\"pointer-events-none absolute right-2.5 top-1/2 h-4 w-4 -translate-y-1/2 text-[#7f7d83] lg:right-3\" />\n </div>\n\n <div className=\"relative w-[104px] shrink-0 sm:w-[120px]\">\n <select\n value={month.getFullYear()}\n onChange={(event) => {\n const yearValue = Number(event.target.value)\n onMonthChange(setYear(month, yearValue))\n }}\n disabled={disabled}\n className={cn(\n \"h-9 w-full appearance-none rounded-md border border-[#b7b7b9] bg-white px-3 pr-8 text-left text-sm font-medium leading-5 text-[#111111] lg:h-10 lg:px-4 lg:pr-9\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#1d1c20]/20\",\n \"disabled:cursor-not-allowed disabled:bg-[#f2f2f2] disabled:text-[#b3b3b3]\"\n )}\n aria-label={`Year for ${label.toLowerCase()}`}\n >\n {years.map((year) => (\n <option key={year} value={year}>\n {year}\n </option>\n ))}\n </select>\n <ChevronDown className=\"pointer-events-none absolute right-2.5 top-1/2 h-4 w-4 -translate-y-1/2 text-[#7f7d83] lg:right-3\" />\n </div>\n\n <button\n type=\"button\"\n onClick={handleNextMonth}\n disabled={isNextDisabled}\n className={cn(\n \"inline-flex h-8 w-8 items-center justify-center rounded-md text-[#6e6d71] transition-colors lg:h-9 lg:w-9\",\n \"hover:bg-[#f5f5f5] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#1d1c20]/20\",\n \"disabled:cursor-not-allowed disabled:opacity-40\"\n )}\n aria-label={`Next month for ${label.toLowerCase()}`}\n >\n <ChevronRight className=\"h-4 w-4 lg:h-5 lg:w-5\" />\n </button>\n </div>\n\n <p className=\"mt-1.5 text-center text-sm font-medium leading-5 text-[#666666] lg:mt-2\">\n {label}\n </p>\n\n <DayPicker\n mode=\"single\"\n month={month}\n onMonthChange={onMonthChange}\n selected={selectedDate}\n onSelect={onSelectDate}\n showOutsideDays\n fixedWeeks\n hideNavigation\n disabled={[\n { before: minDate },\n { after: maxDate },\n ...(disabledMatcher ? [disabledMatcher] : []),\n ]}\n className=\"mt-1 p-0 [--drp-cell-size:1.625rem] md:[--drp-cell-size:1.875rem] xl:[--drp-cell-size:2.125rem]\"\n classNames={{\n root: \"w-full\",\n months: \"w-full\",\n month: \"w-full\",\n month_caption: \"hidden\",\n month_grid: \"w-full border-collapse\",\n weekdays: \"grid grid-cols-7\",\n weekday:\n \"h-[calc(var(--drp-cell-size)-0.25rem)] text-center text-[11px] font-medium leading-4 text-[#666666] lg:text-xs\",\n weeks: \"grid gap-0\",\n week: \"grid grid-cols-7\",\n day: \"flex h-[var(--drp-cell-size)] w-full items-center justify-center p-0\",\n day_button:\n \"h-[--drp-cell-size] w-[--drp-cell-size] rounded-md border border-transparent bg-transparent p-0 text-[13px] font-normal leading-none text-[#444444] transition-colors hover:border-[#cccccc] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#2bbd8f]/25 lg:text-sm\",\n selected:\n \"[&>button]:border-[#2bbd8f] [&>button]:bg-[#2bbd8f] [&>button]:text-[#111111]\",\n today: \"font-medium\",\n outside: \"text-[#a4a4a8]\",\n disabled: \"pointer-events-none text-[#d3d3d6]\",\n hidden: \"invisible\",\n }}\n />\n </div>\n )\n}\n\nconst DateRangePicker = React.forwardRef<HTMLButtonElement, DateRangePickerProps>(\n (\n {\n value,\n defaultValue,\n onValueChange,\n wrapperClassName,\n popoverClassName,\n popoverSide = \"bottom\",\n popoverAvoidCollisions = true,\n className,\n placeholder = DEFAULT_PLACEHOLDER,\n dateFormat = DEFAULT_FORMAT,\n minYear = 2000,\n maxYear = 2100,\n disabled,\n ...triggerProps\n },\n ref\n ) => {\n const safeMinYear = Math.min(minYear, maxYear)\n const safeMaxYear = Math.max(minYear, maxYear)\n\n const minMonth = React.useMemo(\n () => startOfMonth(new Date(safeMinYear, 0, 1)),\n [safeMinYear]\n )\n const maxMonth = React.useMemo(\n () => startOfMonth(new Date(safeMaxYear, 11, 1)),\n [safeMaxYear]\n )\n const minDate = React.useMemo(() => new Date(safeMinYear, 0, 1), [safeMinYear])\n const maxDate = React.useMemo(\n () => new Date(safeMaxYear, 11, 31),\n [safeMaxYear]\n )\n\n const years = React.useMemo(\n () =>\n Array.from(\n { length: safeMaxYear - safeMinYear + 1 },\n (_, yearIndex) => safeMinYear + yearIndex\n ),\n [safeMinYear, safeMaxYear]\n )\n\n const isControlled = value !== undefined\n const [internalValue, setInternalValue] = React.useState<DateRangePickerValue | undefined>(\n normalizeRange(defaultValue)\n )\n\n const committedValue = normalizeRange(isControlled ? value : internalValue)\n\n const buildPanelMonths = React.useCallback(\n (range: DateRangePickerValue | undefined) => {\n const now = startOfMonth(new Date())\n const initialStart = clampMonth(\n startOfMonth(range?.from ?? now),\n minMonth,\n maxMonth\n )\n\n const initialEndRaw = range?.to\n ? startOfMonth(range.to)\n : addMonths(initialStart, 1)\n const initialEnd = clampMonth(initialEndRaw, minMonth, maxMonth)\n\n return {\n start: initialStart,\n end: initialEnd,\n }\n },\n [minMonth, maxMonth]\n )\n\n const [open, setOpen] = React.useState(false)\n const [draftValue, setDraftValue] = React.useState<DateRangePickerValue | undefined>(\n committedValue\n )\n const initialMonths = buildPanelMonths(committedValue)\n const [startMonth, setStartMonth] = React.useState<Date>(initialMonths.start)\n const [endMonth, setEndMonth] = React.useState<Date>(initialMonths.end)\n\n const syncDraftState = React.useCallback(\n (nextValue: DateRangePickerValue | undefined) => {\n const normalized = normalizeRange(nextValue)\n setDraftValue(normalized)\n const nextMonths = buildPanelMonths(normalized)\n setStartMonth(nextMonths.start)\n setEndMonth(nextMonths.end)\n },\n [buildPanelMonths]\n )\n\n React.useEffect(() => {\n if (!open) {\n syncDraftState(committedValue)\n }\n }, [committedValue, open, syncDraftState])\n\n const handleStartMonthChange = (nextMonth: Date) => {\n setStartMonth(clampMonth(startOfMonth(nextMonth), minMonth, maxMonth))\n }\n\n const handleEndMonthChange = (nextMonth: Date) => {\n setEndMonth(clampMonth(startOfMonth(nextMonth), minMonth, maxMonth))\n }\n\n const handleStartDateSelect = (date: Date | undefined) => {\n if (!date) {\n return\n }\n\n setDraftValue((previousValue) => {\n const nextValue: DateRangePickerValue = {\n from: date,\n to: previousValue?.to,\n }\n\n if (nextValue.to && isAfter(date, nextValue.to)) {\n nextValue.to = date\n }\n\n return nextValue\n })\n }\n\n const handleEndDateSelect = (date: Date | undefined) => {\n if (!date) {\n return\n }\n\n setDraftValue((previousValue) => {\n const nextValue: DateRangePickerValue = {\n from: previousValue?.from,\n to: date,\n }\n\n if (nextValue.from && isAfter(nextValue.from, date)) {\n nextValue.from = date\n }\n\n return nextValue\n })\n }\n\n const handleCancel = () => {\n syncDraftState(committedValue)\n setOpen(false)\n }\n\n const handleApply = () => {\n const normalized = normalizeRange(draftValue)\n\n if (!isControlled) {\n setInternalValue(normalized)\n }\n\n onValueChange?.(normalized)\n setOpen(false)\n }\n\n const canApply = Boolean(draftValue?.from && draftValue?.to)\n const committedText = formatCommittedValue(committedValue, dateFormat)\n const draftText = formatDraftValue(draftValue, dateFormat)\n\n return (\n <div className={cn(\"w-full\", wrapperClassName)}>\n <Popover\n open={open}\n onOpenChange={(nextOpen) => {\n if (disabled) {\n return\n }\n\n if (nextOpen) {\n syncDraftState(committedValue)\n }\n\n setOpen(nextOpen)\n }}\n >\n <PopoverTrigger asChild>\n <button\n ref={ref}\n type=\"button\"\n disabled={disabled}\n className={cn(\n \"flex h-10 w-full items-center justify-between rounded-[8px] border border-[#e6e6e6] bg-white px-3 py-2 text-left text-[14px] leading-[20px] transition-colors\",\n \"focus-visible:outline-none focus-visible:border-[#1D1C20] focus-visible:ring-0\",\n \"disabled:cursor-not-allowed disabled:bg-[#f2f2f2] disabled:text-[#9ca3af] disabled:opacity-100\",\n className\n )}\n {...triggerProps}\n >\n <span\n className={cn(\n \"truncate text-[14px] font-normal leading-[20px]\",\n committedText ? \"text-[#111111]\" : \"text-[#b3b3b3]\"\n )}\n >\n {committedText || placeholder}\n </span>\n <CalendarDays className=\"ml-3 h-4 w-4 shrink-0 text-[#111111]\" />\n </button>\n </PopoverTrigger>\n\n <PopoverContent\n side={popoverSide}\n avoidCollisions={popoverAvoidCollisions}\n align=\"start\"\n sideOffset={10}\n className={cn(\n \"w-[min(95vw,760px)] max-h-[var(--radix-popover-content-available-height)] overflow-y-auto overscroll-contain rounded-xl border border-[#d8d8da] bg-[#f7f7f8] p-3 shadow-[0px_12px_24px_rgba(0,0,0,0.08)] sm:p-4\",\n popoverClassName\n )}\n >\n <div className=\"grid gap-3 md:grid-cols-2 md:gap-4\">\n <CalendarPanel\n label=\"Start date\"\n month={startMonth}\n minMonth={minMonth}\n maxMonth={maxMonth}\n minDate={minDate}\n maxDate={maxDate}\n selectedDate={draftValue?.from}\n disabledMatcher={draftValue?.to ? { after: draftValue.to } : undefined}\n disabled={disabled}\n years={years}\n onMonthChange={handleStartMonthChange}\n onSelectDate={handleStartDateSelect}\n />\n\n <CalendarPanel\n label=\"End date\"\n month={endMonth}\n minMonth={minMonth}\n maxMonth={maxMonth}\n minDate={minDate}\n maxDate={maxDate}\n selectedDate={draftValue?.to}\n disabledMatcher={draftValue?.from ? { before: draftValue.from } : undefined}\n disabled={disabled}\n years={years}\n onMonthChange={handleEndMonthChange}\n onSelectDate={handleEndDateSelect}\n />\n </div>\n\n <div className=\"mt-2.5 border-t border-[#d8d8da] pt-2.5\">\n <input\n readOnly\n value={draftText}\n className=\"h-9 w-full rounded-md border border-[#e6e6e6] bg-white px-3 py-2 text-sm leading-5 text-[#111111] outline-none transition-colors placeholder:text-[#b3b3b3] focus-visible:border-[#1D1C20]\"\n aria-label=\"Selected date range\"\n />\n\n <div className=\"mt-2.5 flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\">\n <Button\n type=\"button\"\n variant=\"outline\"\n className=\"h-9 rounded-md px-4 text-sm\"\n onClick={handleCancel}\n >\n Cancel\n </Button>\n <Button\n type=\"button\"\n className=\"h-9 rounded-md px-4 text-sm\"\n disabled={!canApply}\n onClick={handleApply}\n >\n Apply\n </Button>\n </div>\n </div>\n </PopoverContent>\n </Popover>\n </div>\n )\n }\n)\n\nDateRangePicker.displayName = \"DateRangePicker\"\n\nexport { DateRangePicker }\n"],"names":["DEFAULT_FORMAT","DEFAULT_PLACEHOLDER","MONTH_LABELS","_","monthIndex","clampMonth","month","minMonth","maxMonth","isBefore","isAfter","normalizeRange","value","formatDate","date","dateFormat","format","formatCommittedValue","fromText","toText","formatDraftValue","CalendarPanel","label","minDate","maxDate","selectedDate","disabledMatcher","disabled","years","onMonthChange","onSelectDate","handlePrevMonth","addMonths","handleNextMonth","isPrevDisabled","isNextDisabled","React","cn","ChevronLeft","event","monthValue","setMonth","monthLabel","ChevronDown","yearValue","setYear","year","ChevronRight","DayPicker","DateRangePicker","defaultValue","onValueChange","wrapperClassName","popoverClassName","popoverSide","popoverAvoidCollisions","className","placeholder","minYear","maxYear","triggerProps","ref","safeMinYear","safeMaxYear","startOfMonth","yearIndex","isControlled","internalValue","setInternalValue","committedValue","buildPanelMonths","range","now","initialStart","initialEndRaw","initialEnd","open","setOpen","draftValue","setDraftValue","initialMonths","startMonth","setStartMonth","endMonth","setEndMonth","syncDraftState","nextValue","normalized","nextMonths","handleStartMonthChange","nextMonth","handleEndMonthChange","handleStartDateSelect","previousValue","handleEndDateSelect","handleCancel","handleApply","canApply","committedText","draftText","Popover","nextOpen","PopoverTrigger","CalendarDays","PopoverContent","Button"],"mappings":"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"}
package/dist/style.css CHANGED
@@ -656,6 +656,9 @@ video {
656
656
  .right-2 {
657
657
  right: 0.5rem;
658
658
  }
659
+ .right-2\.5 {
660
+ right: 0.625rem;
661
+ }
659
662
  .right-3 {
660
663
  right: 0.75rem;
661
664
  }
@@ -785,21 +788,24 @@ video {
785
788
  .mr-2 {
786
789
  margin-right: 0.5rem;
787
790
  }
791
+ .mt-1 {
792
+ margin-top: 0.25rem;
793
+ }
788
794
  .mt-1\.5 {
789
795
  margin-top: 0.375rem;
790
796
  }
791
797
  .mt-2 {
792
798
  margin-top: 0.5rem;
793
799
  }
800
+ .mt-2\.5 {
801
+ margin-top: 0.625rem;
802
+ }
794
803
  .mt-24 {
795
804
  margin-top: 6rem;
796
805
  }
797
806
  .mt-4 {
798
807
  margin-top: 1rem;
799
808
  }
800
- .mt-5 {
801
- margin-top: 1.25rem;
802
- }
803
809
  .mt-auto {
804
810
  margin-top: auto;
805
811
  }
@@ -890,9 +896,6 @@ video {
890
896
  .h-12 {
891
897
  height: 3rem;
892
898
  }
893
- .h-14 {
894
- height: 3.5rem;
895
- }
896
899
  .h-2 {
897
900
  height: 0.5rem;
898
901
  }
@@ -944,6 +947,9 @@ video {
944
947
  .h-\[--cell-size\] {
945
948
  height: var(--cell-size);
946
949
  }
950
+ .h-\[--drp-cell-size\] {
951
+ height: var(--drp-cell-size);
952
+ }
947
953
  .h-\[1px\] {
948
954
  height: 1px;
949
955
  }
@@ -953,6 +959,12 @@ video {
953
959
  .h-\[320px\] {
954
960
  height: 320px;
955
961
  }
962
+ .h-\[calc\(var\(--drp-cell-size\)-0\.25rem\)\] {
963
+ height: calc(var(--drp-cell-size) - 0.25rem);
964
+ }
965
+ .h-\[var\(--drp-cell-size\)\] {
966
+ height: var(--drp-cell-size);
967
+ }
956
968
  .h-\[var\(--radix-navigation-menu-viewport-height\)\] {
957
969
  height: var(--radix-navigation-menu-viewport-height);
958
970
  }
@@ -983,6 +995,9 @@ video {
983
995
  .max-h-\[var\(--radix-dropdown-menu-content-available-height\)\] {
984
996
  max-height: var(--radix-dropdown-menu-content-available-height);
985
997
  }
998
+ .max-h-\[var\(--radix-popover-content-available-height\)\] {
999
+ max-height: var(--radix-popover-content-available-height);
1000
+ }
986
1001
  .min-h-0 {
987
1002
  min-height: 0px;
988
1003
  }
@@ -1004,6 +1019,9 @@ video {
1004
1019
  .min-h-\[420px\] {
1005
1020
  min-height: 420px;
1006
1021
  }
1022
+ .min-h-\[65vh\] {
1023
+ min-height: 65vh;
1024
+ }
1007
1025
  .min-h-\[82px\] {
1008
1026
  min-height: 82px;
1009
1027
  }
@@ -1085,18 +1103,21 @@ video {
1085
1103
  .w-\[--cell-size\] {
1086
1104
  width: var(--cell-size);
1087
1105
  }
1106
+ .w-\[--drp-cell-size\] {
1107
+ width: var(--drp-cell-size);
1108
+ }
1088
1109
  .w-\[--sidebar-width\] {
1089
1110
  width: var(--sidebar-width);
1090
1111
  }
1091
1112
  .w-\[100px\] {
1092
1113
  width: 100px;
1093
1114
  }
1115
+ .w-\[104px\] {
1116
+ width: 104px;
1117
+ }
1094
1118
  .w-\[120px\] {
1095
1119
  width: 120px;
1096
1120
  }
1097
- .w-\[132px\] {
1098
- width: 132px;
1099
- }
1100
1121
  .w-\[140px\] {
1101
1122
  width: 140px;
1102
1123
  }
@@ -1118,11 +1139,14 @@ video {
1118
1139
  .w-\[280px\] {
1119
1140
  width: 280px;
1120
1141
  }
1142
+ .w-\[560px\] {
1143
+ width: 560px;
1144
+ }
1121
1145
  .w-\[60\%\] {
1122
1146
  width: 60%;
1123
1147
  }
1124
- .w-\[min\(96vw\2c 980px\)\] {
1125
- width: min(96vw, 980px);
1148
+ .w-\[min\(95vw\2c 760px\)\] {
1149
+ width: min(95vw, 760px);
1126
1150
  }
1127
1151
  .w-fit {
1128
1152
  width: -moz-fit-content;
@@ -1186,6 +1210,9 @@ video {
1186
1210
  .max-w-\[760px\] {
1187
1211
  max-width: 760px;
1188
1212
  }
1213
+ .max-w-full {
1214
+ max-width: 100%;
1215
+ }
1189
1216
  .max-w-lg {
1190
1217
  max-width: 32rem;
1191
1218
  }
@@ -1264,6 +1291,10 @@ video {
1264
1291
  --tw-translate-x: 1px;
1265
1292
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1266
1293
  }
1294
+ .translate-y-8 {
1295
+ --tw-translate-y: 2rem;
1296
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1297
+ }
1267
1298
  .translate-y-\[-50\%\] {
1268
1299
  --tw-translate-y: -50%;
1269
1300
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
@@ -1415,9 +1446,6 @@ video {
1415
1446
  .gap-7 {
1416
1447
  gap: 1.75rem;
1417
1448
  }
1418
- .gap-8 {
1419
- gap: 2rem;
1420
- }
1421
1449
  .gap-\[13px\] {
1422
1450
  gap: 13px;
1423
1451
  }
@@ -1496,6 +1524,9 @@ video {
1496
1524
  .overflow-x-hidden {
1497
1525
  overflow-x: hidden;
1498
1526
  }
1527
+ .overscroll-contain {
1528
+ overscroll-behavior: contain;
1529
+ }
1499
1530
  .truncate {
1500
1531
  overflow: hidden;
1501
1532
  text-overflow: ellipsis;
@@ -1516,12 +1547,6 @@ video {
1516
1547
  .rounded-\[12px\] {
1517
1548
  border-radius: 12px;
1518
1549
  }
1519
- .rounded-\[14px\] {
1520
- border-radius: 14px;
1521
- }
1522
- .rounded-\[16px\] {
1523
- border-radius: 16px;
1524
- }
1525
1550
  .rounded-\[2px\] {
1526
1551
  border-radius: 2px;
1527
1552
  }
@@ -1850,10 +1875,6 @@ video {
1850
1875
  padding-left: 1.5rem;
1851
1876
  padding-right: 1.5rem;
1852
1877
  }
1853
- .px-7 {
1854
- padding-left: 1.75rem;
1855
- padding-right: 1.75rem;
1856
- }
1857
1878
  .px-\[--cell-size\] {
1858
1879
  padding-left: var(--cell-size);
1859
1880
  padding-right: var(--cell-size);
@@ -1928,12 +1949,6 @@ video {
1928
1949
  .pr-1 {
1929
1950
  padding-right: 0.25rem;
1930
1951
  }
1931
- .pr-10 {
1932
- padding-right: 2.5rem;
1933
- }
1934
- .pr-11 {
1935
- padding-right: 2.75rem;
1936
- }
1937
1952
  .pr-2 {
1938
1953
  padding-right: 0.5rem;
1939
1954
  }
@@ -1949,6 +1964,9 @@ video {
1949
1964
  .pt-0 {
1950
1965
  padding-top: 0px;
1951
1966
  }
1967
+ .pt-2\.5 {
1968
+ padding-top: 0.625rem;
1969
+ }
1952
1970
  .pt-3 {
1953
1971
  padding-top: 0.75rem;
1954
1972
  }
@@ -1989,18 +2007,21 @@ video {
1989
2007
  .text-\[10px\] {
1990
2008
  font-size: 10px;
1991
2009
  }
2010
+ .text-\[11px\] {
2011
+ font-size: 11px;
2012
+ }
1992
2013
  .text-\[12px\] {
1993
2014
  font-size: 12px;
1994
2015
  }
2016
+ .text-\[13px\] {
2017
+ font-size: 13px;
2018
+ }
1995
2019
  .text-\[14px\] {
1996
2020
  font-size: 14px;
1997
2021
  }
1998
2022
  .text-\[16px\] {
1999
2023
  font-size: 16px;
2000
2024
  }
2001
- .text-\[18px\] {
2002
- font-size: 18px;
2003
- }
2004
2025
  .text-\[20px\] {
2005
2026
  font-size: 20px;
2006
2027
  }
@@ -2067,6 +2088,9 @@ video {
2067
2088
  .leading-10 {
2068
2089
  line-height: 2.5rem;
2069
2090
  }
2091
+ .leading-4 {
2092
+ line-height: 1rem;
2093
+ }
2070
2094
  .leading-5 {
2071
2095
  line-height: 1.25rem;
2072
2096
  }
@@ -2079,9 +2103,6 @@ video {
2079
2103
  .leading-\[20px\] {
2080
2104
  line-height: 20px;
2081
2105
  }
2082
- .leading-\[22px\] {
2083
- line-height: 22px;
2084
- }
2085
2106
  .leading-\[24px\] {
2086
2107
  line-height: 24px;
2087
2108
  }
@@ -2484,6 +2505,9 @@ video {
2484
2505
  .\[--cell-size\:2rem\] {
2485
2506
  --cell-size: 2rem;
2486
2507
  }
2508
+ .\[--drp-cell-size\:1\.625rem\] {
2509
+ --drp-cell-size: 1.625rem;
2510
+ }
2487
2511
  .\[color\:var\(--raw-black\2c \#000\)\] {
2488
2512
  color: var(--raw-black,#000);
2489
2513
  }
@@ -2953,14 +2977,6 @@ video {
2953
2977
  .aria-disabled\:opacity-50[aria-disabled="true"] {
2954
2978
  opacity: 0.5;
2955
2979
  }
2956
- .aria-selected\:border-\[\#2bbd8f\][aria-selected="true"] {
2957
- --tw-border-opacity: 1;
2958
- border-color: rgb(43 189 143 / var(--tw-border-opacity, 1));
2959
- }
2960
- .aria-selected\:text-\[\#111111\][aria-selected="true"] {
2961
- --tw-text-opacity: 1;
2962
- color: rgb(17 17 17 / var(--tw-text-opacity, 1));
2963
- }
2964
2980
  .aria-selected\:text-muted-foreground[aria-selected="true"] {
2965
2981
  color: hsl(var(--muted-foreground));
2966
2982
  }
@@ -3577,6 +3593,10 @@ video {
3577
3593
  display: flex;
3578
3594
  }
3579
3595
 
3596
+ .sm\:w-\[120px\] {
3597
+ width: 120px;
3598
+ }
3599
+
3580
3600
  .sm\:max-w-sm {
3581
3601
  max-width: 24rem;
3582
3602
  }
@@ -3589,6 +3609,10 @@ video {
3589
3609
  flex-direction: row;
3590
3610
  }
3591
3611
 
3612
+ .sm\:flex-nowrap {
3613
+ flex-wrap: nowrap;
3614
+ }
3615
+
3592
3616
  .sm\:justify-end {
3593
3617
  justify-content: flex-end;
3594
3618
  }
@@ -3607,6 +3631,10 @@ video {
3607
3631
  border-radius: var(--radius);
3608
3632
  }
3609
3633
 
3634
+ .sm\:p-4 {
3635
+ padding: 1rem;
3636
+ }
3637
+
3610
3638
  .sm\:text-left {
3611
3639
  text-align: left;
3612
3640
  }
@@ -3633,24 +3661,28 @@ video {
3633
3661
  flex-direction: row;
3634
3662
  }
3635
3663
 
3636
- .md\:gap-10 {
3637
- gap: 2.5rem;
3638
- }
3639
-
3640
- .md\:gap-3 {
3641
- gap: 0.75rem;
3664
+ .md\:gap-4 {
3665
+ gap: 1rem;
3642
3666
  }
3643
3667
 
3644
3668
  .md\:p-12 {
3645
3669
  padding: 3rem;
3646
3670
  }
3647
3671
 
3648
- .md\:p-6 {
3649
- padding: 1.5rem;
3672
+ .md\:\[--drp-cell-size\:1\.875rem\] {
3673
+ --drp-cell-size: 1.875rem;
3650
3674
  }
3651
3675
  }
3652
3676
  @media (min-width: 1024px) {
3653
3677
 
3678
+ .lg\:right-3 {
3679
+ right: 0.75rem;
3680
+ }
3681
+
3682
+ .lg\:mt-2 {
3683
+ margin-top: 0.5rem;
3684
+ }
3685
+
3654
3686
  .lg\:block {
3655
3687
  display: block;
3656
3688
  }
@@ -3659,6 +3691,49 @@ video {
3659
3691
  display: flex;
3660
3692
  }
3661
3693
 
3694
+ .lg\:h-10 {
3695
+ height: 2.5rem;
3696
+ }
3697
+
3698
+ .lg\:h-5 {
3699
+ height: 1.25rem;
3700
+ }
3701
+
3702
+ .lg\:h-9 {
3703
+ height: 2.25rem;
3704
+ }
3705
+
3706
+ .lg\:w-5 {
3707
+ width: 1.25rem;
3708
+ }
3709
+
3710
+ .lg\:w-9 {
3711
+ width: 2.25rem;
3712
+ }
3713
+
3714
+ .lg\:px-4 {
3715
+ padding-left: 1rem;
3716
+ padding-right: 1rem;
3717
+ }
3718
+
3719
+ .lg\:pr-10 {
3720
+ padding-right: 2.5rem;
3721
+ }
3722
+
3723
+ .lg\:pr-9 {
3724
+ padding-right: 2.25rem;
3725
+ }
3726
+
3727
+ .lg\:text-sm {
3728
+ font-size: 0.875rem;
3729
+ line-height: 1.25rem;
3730
+ }
3731
+
3732
+ .lg\:text-xs {
3733
+ font-size: 0.75rem;
3734
+ line-height: 1rem;
3735
+ }
3736
+
3662
3737
  .lg\:opacity-0 {
3663
3738
  opacity: 0;
3664
3739
  }
@@ -3691,6 +3766,10 @@ video {
3691
3766
  .xl\:grid-cols-4 {
3692
3767
  grid-template-columns: repeat(4, minmax(0, 1fr));
3693
3768
  }
3769
+
3770
+ .xl\:\[--drp-cell-size\:2\.125rem\] {
3771
+ --drp-cell-size: 2.125rem;
3772
+ }
3694
3773
  }
3695
3774
  .\[\&\+\[data-slot\=item-content\]\]\:flex-none+[data-slot=item-content] {
3696
3775
  flex: none;
@@ -3773,6 +3852,18 @@ video {
3773
3852
  .\[\&\>button\]\:hidden>button {
3774
3853
  display: none;
3775
3854
  }
3855
+ .\[\&\>button\]\:border-\[\#2bbd8f\]>button {
3856
+ --tw-border-opacity: 1;
3857
+ border-color: rgb(43 189 143 / var(--tw-border-opacity, 1));
3858
+ }
3859
+ .\[\&\>button\]\:bg-\[\#2bbd8f\]>button {
3860
+ --tw-bg-opacity: 1;
3861
+ background-color: rgb(43 189 143 / var(--tw-bg-opacity, 1));
3862
+ }
3863
+ .\[\&\>button\]\:text-\[\#111111\]>button {
3864
+ --tw-text-opacity: 1;
3865
+ color: rgb(17 17 17 / var(--tw-text-opacity, 1));
3866
+ }
3776
3867
  .\[\&\>input\]\:flex-1>input {
3777
3868
  flex: 1 1 0%;
3778
3869
  }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "ml-uikit",
3
3
  "description": "A Metis Labs UI kit library starter for React with Tailwind CSS, Vite, TypeScript and Shadcn-ui components.",
4
4
  "private": false,
5
- "version": "1.1.6",
5
+ "version": "1.1.7",
6
6
  "type": "module",
7
7
  "main": "dist/index.cjs.js",
8
8
  "module": "dist/index.es.js",