@sth87/shadcn-design-system 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/Checkbox/Checkbox.cjs +1 -1
- package/dist/cjs/components/Checkbox/Checkbox.cjs.map +1 -1
- package/dist/cjs/components/Input/Input.cjs +1 -1
- package/dist/cjs/components/Input/Input.cjs.map +1 -1
- package/dist/cjs/components/Rate/Rate.cjs +1 -1
- package/dist/cjs/components/Rate/Rate.cjs.map +1 -1
- package/dist/cjs/components/Sheet/Sheet.cjs +1 -1
- package/dist/cjs/components/Sheet/Sheet.cjs.map +1 -1
- package/dist/cjs/components/Slider/Slider.cjs +1 -1
- package/dist/cjs/components/Slider/Slider.cjs.map +1 -1
- package/dist/cjs/components/Stepper/Stepper.cjs +1 -1
- package/dist/cjs/components/Stepper/Stepper.cjs.map +1 -1
- package/dist/cjs/components/Stepper/StepperWrapper.cjs +1 -1
- package/dist/cjs/components/Stepper/StepperWrapper.cjs.map +1 -1
- package/dist/cjs/components/Switch/Switch.cjs +1 -1
- package/dist/cjs/components/Switch/Switch.cjs.map +1 -1
- package/dist/cjs/components/Table/data-table-column-header.cjs +1 -1
- package/dist/cjs/components/Table/data-table-column-header.cjs.map +1 -1
- package/dist/cjs/components/Tabs/classes.cjs +1 -1
- package/dist/cjs/components/Tabs/classes.cjs.map +1 -1
- package/dist/cjs/components/TimeGridView.cjs +1 -1
- package/dist/cjs/components/TimeGridView.cjs.map +1 -1
- package/dist/cjs/components/Toast/Toast.cjs +1 -1
- package/dist/cjs/components/Toast/Toast.cjs.map +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.cjs +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.cjs.map +1 -1
- package/dist/cjs/components/WheelColumn.cjs +1 -1
- package/dist/cjs/components/WheelColumn.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/calendar.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/calendar.cjs.map +1 -1
- package/dist/cjs/styles/index.css +1 -1
- package/dist/esm/components/Checkbox/Checkbox.js +20 -20
- package/dist/esm/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/esm/components/Input/Input.js +43 -43
- package/dist/esm/components/Input/Input.js.map +1 -1
- package/dist/esm/components/Rate/Rate.js +15 -15
- package/dist/esm/components/Rate/Rate.js.map +1 -1
- package/dist/esm/components/Sheet/Sheet.js +25 -25
- package/dist/esm/components/Sheet/Sheet.js.map +1 -1
- package/dist/esm/components/Slider/Slider.js +139 -139
- package/dist/esm/components/Slider/Slider.js.map +1 -1
- package/dist/esm/components/Stepper/Stepper.js +52 -52
- package/dist/esm/components/Stepper/Stepper.js.map +1 -1
- package/dist/esm/components/Stepper/StepperWrapper.js +25 -25
- package/dist/esm/components/Stepper/StepperWrapper.js.map +1 -1
- package/dist/esm/components/Switch/Switch.js +19 -19
- package/dist/esm/components/Switch/Switch.js.map +1 -1
- package/dist/esm/components/Table/data-table-column-header.js +22 -22
- package/dist/esm/components/Table/data-table-column-header.js.map +1 -1
- package/dist/esm/components/Tabs/classes.js +128 -128
- package/dist/esm/components/Tabs/classes.js.map +1 -1
- package/dist/esm/components/TimeGridView.js +27 -27
- package/dist/esm/components/TimeGridView.js.map +1 -1
- package/dist/esm/components/Toast/Toast.js +26 -26
- package/dist/esm/components/Toast/Toast.js.map +1 -1
- package/dist/esm/components/Tooltip/Tooltip.js +42 -42
- package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/esm/components/WheelColumn.js +9 -9
- package/dist/esm/components/WheelColumn.js.map +1 -1
- package/dist/esm/packages/ui/src/components/calendar.js +73 -73
- package/dist/esm/packages/ui/src/components/calendar.js.map +1 -1
- package/dist/esm/styles/index.css +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),k=require("react"),p=require("lucide-react"),x=require("react-day-picker"),d=require("../lib/utils.cjs"),_=require("./button.cjs");function z(r){const a=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const e in r)if(e!=="default"){const o=Object.getOwnPropertyDescriptor(r,e);Object.defineProperty(a,e,o.get?o:{enumerable:!0,get:()=>r[e]})}}return a.default=r,Object.freeze(a)}const v=z(k);function j({className:r,classNames:a,showOutsideDays:e=!0,captionLayout:o="label",buttonVariant:i="ghost",variant:u="default",color:f="primary",formatters:c,components:b,...y}){const s=x.getDefaultClassNames(),m=h(f);return n.jsx(x.DayPicker,{showOutsideDays:e,className:d.cn("ds:bg-background ds:group/calendar ds:p-3 ds:[--cell-size:--spacing(8)] ds:[[data-slot=card-content]_&]:bg-transparent ds:[[data-slot=popover-content]_&]:bg-transparent",String.raw`ds:rtl:**:[.rdp-button\_next>svg]:rotate-180`,String.raw`ds:rtl:**:[.rdp-button\_previous>svg]:rotate-180`,r),captionLayout:o,formatters:{formatMonthDropdown:t=>t.toLocaleString("default",{month:"short"}),...c},classNames:{root:d.cn("ds:w-fit",s.root),months:d.cn("ds:flex ds:gap-4 ds:flex-col ds:md:flex-row ds:relative",s.months),month:d.cn("ds:flex ds:flex-col ds:w-full ds:gap-4",s.month),nav:d.cn("ds:flex ds:items-center ds:gap-1 ds:w-full ds:absolute ds:top-0 ds:inset-x-0 ds:justify-between",s.nav),button_previous:d.cn(_.buttonVariants({variant:i}),"ds:size-(--cell-size) ds:aria-disabled:opacity-50 ds:p-0 ds:select-none",s.button_previous),button_next:d.cn(_.buttonVariants({variant:i}),"ds:size-(--cell-size) ds:aria-disabled:opacity-50 ds:p-0 ds:select-none",s.button_next),month_caption:d.cn("ds:flex ds:items-center ds:justify-center ds:h-(--cell-size) ds:w-full ds:px-(--cell-size)",s.month_caption),dropdowns:d.cn("ds:w-full ds:flex ds:items-center ds:text-sm ds:font-medium ds:justify-center ds:h-(--cell-size) ds:gap-1.5",s.dropdowns),dropdown_root:d.cn("ds:relative ds:has-focus:border-ring ds:border ds:border-input ds:shadow-xs ds:has-focus:ring-ring/50 ds:has-focus:ring-[3px] ds:rounded-md",s.dropdown_root),dropdown:d.cn("ds:absolute ds:bg-popover ds:inset-0 ds:opacity-0",s.dropdown),caption_label:d.cn("ds:select-none ds:font-medium",o==="label"?"ds:text-sm":"ds:rounded-md ds:pl-2 ds:pr-1 ds:flex ds:items-center ds:gap-1 ds:text-sm ds:h-8 ds:[&>svg]:text-muted-foreground ds:[&>svg]:size-3.5",s.caption_label),table:"ds:w-full ds:border-collapse",weekdays:d.cn("ds:flex",s.weekdays),weekday:d.cn("ds:text-muted-foreground ds:rounded-md ds:flex-1 ds:font-normal ds:text-[0.8rem] ds:select-none",s.weekday),week:d.cn("ds:flex ds:w-full ds:mt-2",s.week),week_number_header:d.cn("ds:select-none ds:w-(--cell-size)",s.week_number_header),week_number:d.cn("ds:text-[0.8rem] ds:select-none ds:text-muted-foreground",s.week_number),day:d.cn("ds:relative ds:w-full ds:h-full ds:p-0 ds:text-center ds:[&:last-child[data-selected=true]_button]:rounded-r-md ds:group/day ds:aspect-square ds:select-none",y.showWeekNumber?"ds:[&:nth-child(2)[data-selected=true]_button]:rounded-l-md":"ds:[&:first-child[data-selected=true]_button]:rounded-l-md",s.day),range_start:d.cn(u==="rounded"?`${m.rangeBg} ds:rounded-l-full`:"ds:rounded-l-md ds:bg-accent",s.range_start),range_middle:d.cn("ds:rounded-none",s.range_middle),range_end:d.cn(u==="rounded"?`${m.rangeBg} ds:rounded-r-full`:"ds:rounded-r-md ds:bg-accent",s.range_end),today:d.cn(u==="rounded"?`ds:rounded-full ds:bg-accent ds:data-[selected=true]:rounded-l-none ds:data-[selected=true]:${m.rangeBg} ds:[&_button[data-range-middle=true]]:bg-transparent`:"ds:bg-accent ds:text-accent-foreground ds:rounded-md ds:data-[selected=true]:rounded-none",s.today),outside:d.cn("ds:text-muted-foreground ds:aria-selected:text-muted-foreground",s.outside),disabled:d.cn("ds:text-muted-foreground ds:opacity-50",s.disabled),hidden:d.cn("ds:invisible",s.hidden),...a},components:{Root:({className:t,rootRef:g,...l})=>n.jsx("div",{"data-slot":"calendar",ref:g,className:d.cn(t),...l}),Chevron:({className:t,orientation:g,...l})=>g==="left"?n.jsx(p.ChevronLeftIcon,{className:d.cn("ds:size-4",t),...l}):g==="right"?n.jsx(p.ChevronRightIcon,{className:d.cn("ds:size-4",t),...l}):n.jsx(p.ChevronDownIcon,{className:d.cn("ds:size-4",t),...l}),DayButton:t=>n.jsx(w,{...t,variant:u,color:f}),WeekNumber:({children:t,...g})=>n.jsx("td",{...g,children:n.jsx("div",{className:"ds:flex ds:size-(--cell-size) ds:items-center ds:justify-center ds:text-center",children:t})}),...b},...y})}const h=(r="foreground")=>({primary:{selected:"ds:bg-primary ds:text-primary-foreground",selectedHover:"ds:hover:bg-primary/90",rangeBg:"ds:bg-primary/20 dark:ds:bg-primary/10",focusRing:"ds:ring-primary/20 dark:ds:ring-primary/40"},secondary:{selected:"ds:bg-secondary ds:text-secondary-foreground",selectedHover:"ds:hover:bg-secondary/90",rangeBg:"ds:bg-secondary/20 dark:ds:bg-secondary/10",focusRing:"ds:ring-secondary/20 dark:ds:ring-secondary/40"},accent:{selected:"ds:bg-accent ds:text-accent-foreground",selectedHover:"ds:hover:bg-accent/90",rangeBg:"ds:bg-accent/20 dark:ds:bg-accent/10",focusRing:"ds:ring-accent/20 dark:ds:ring-accent/40"},destructive:{selected:"ds:bg-destructive ds:text-destructive-foreground",selectedHover:"ds:hover:bg-destructive/90",rangeBg:"ds:bg-destructive/20 dark:ds:bg-destructive/10",focusRing:"ds:ring-destructive/20 dark:ds:ring-destructive/40"},muted:{selected:"ds:bg-muted ds:text-muted-foreground",selectedHover:"ds:hover:bg-muted/90",rangeBg:"ds:bg-muted/30 dark:ds:bg-muted/20",focusRing:"ds:ring-muted/20 dark:ds:ring-muted/40"},success:{selected:"ds:bg-success ds:text-success-foreground",selectedHover:"ds:hover:bg-success/90",rangeBg:"ds:bg-success/20 dark:ds:bg-success/10",focusRing:"ds:ring-success/20 dark:ds:ring-success/40"},error:{selected:"ds:bg-error ds:text-error-foreground",selectedHover:"ds:hover:bg-error/90",rangeBg:"ds:bg-error/20 dark:ds:bg-error/10",focusRing:"ds:ring-error/20 dark:ds:ring-error/40"},warning:{selected:"ds:bg-warning ds:text-warning-foreground",selectedHover:"ds:hover:bg-warning/90",rangeBg:"ds:bg-warning/20 dark:ds:bg-warning/10",focusRing:"ds:ring-warning/20 dark:ds:ring-warning/40"},foreground:{selected:"ds:bg-foreground ds:text-background",selectedHover:"ds:hover:bg-foreground/90",rangeBg:"ds:bg-foreground/10 dark:ds:bg-foreground/5",focusRing:"ds:ring-foreground/20 dark:ds:ring-foreground/40"}})[r];function w({className:r,day:a,modifiers:e,variant:o="default",color:i="foreground",...u}){const f=x.getDefaultClassNames(),c=h(i),b=v.useRef(null);return v.useEffect(()=>{e.focused&&b.current?.focus()},[e.focused]),n.jsx(_.Button,{ref:b,variant:"ghost",size:"icon","data-day":a.date.toLocaleDateString(),"data-selected-single":e.selected&&!e.range_start&&!e.range_end&&!e.range_middle,"data-range-start":e.range_start,"data-range-end":e.range_end,"data-range-middle":e.range_middle,className:d.cn("ds:flex ds:aspect-square ds:size-auto ds:w-full ds:min-w-(--cell-size) ds:flex-col ds:gap-1 ds:leading-none ds:font-normal","ds:group-data-[focused=true]/day:relative ds:group-data-[focused=true]/day:z-10 ds:group-data-[focused=true]/day:ring-[3px]","ds:group-data-[focused=true]/day:border-ring ds:group-data-[focused=true]/day:ring-ring/50","ds:[&>span]:text-xs ds:[&>span]:opacity-70",!e.selected&&!e.range_start&&!e.range_end&&!e.range_middle&&"ds:hover:bg-accent ds:hover:text-accent-foreground ds:dark:hover:text-accent-foreground",e.selected&&!e.range_start&&!e.range_end&&!e.range_middle&&c.selected,e.range_start&&c.selected,e.range_end&&c.selected,e.range_middle&&`${c.rangeBg} ds:text-accent-foreground`,o==="default"&&["ds:data-[range-end=true]:rounded-md ds:data-[range-end=true]:rounded-r-md","ds:data-[range-middle=true]:rounded-none","ds:data-[range-start=true]:rounded-md ds:data-[range-start=true]:rounded-l-md"],o==="rounded"&&["ds:data-[selected-single=true]:rounded-full","ds:data-[range-end=true]:rounded-full","ds:data-[range-start=true]:rounded-full",e.range_start&&`ds:group-data-[focused=true]/day:${c.focusRing}`,e.range_end&&`ds:group-data-[focused=true]/day:${c.focusRing}`,e.range_middle&&"ds:rounded-none",!e.selected&&!e.range_start&&!e.range_end&&!e.range_middle&&"ds:hover:rounded-full"],f.day,r),...u})}exports.Calendar=j;exports.CalendarDayButton=w;
|
|
2
2
|
//# sourceMappingURL=calendar.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.cjs","sources":["../../../../../../../../packages/ui/src/components/calendar.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"lucide-react\";\nimport { DayButton, DayPicker, getDefaultClassNames } from \"react-day-picker\";\n\nimport { cn } from \"@dsui/ui/lib/utils\";\nimport { Button, buttonVariants } from \"@dsui/ui/components/button\";\n\ntype CalendarColor =\n | \"primary\"\n | \"secondary\"\n | \"accent\"\n | \"destructive\"\n | \"muted\"\n | \"success\"\n | \"error\"\n | \"warning\"\n | \"foreground\";\n\ntype CalendarProps = React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"];\n variant?: \"default\" | \"rounded\";\n color?: CalendarColor;\n};\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n variant = \"default\",\n color = \"primary\",\n formatters,\n components,\n ...props\n}: CalendarProps) {\n const defaultClassNames = getDefaultClassNames();\n const colorClasses = getColorClasses(color);\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"ds:bg-background ds:group/calendar ds:p-3 ds:[--cell-size:--spacing(8)] ds:[[data-slot=card-content]_&]:bg-transparent ds:[[data-slot=popover-content]_&]:bg-transparent\",\n String.raw`ds:rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`ds:rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"ds:w-fit\", defaultClassNames.root),\n months: cn(\n \"ds:flex ds:gap-4 ds:flex-col ds:md:flex-row ds:relative\",\n defaultClassNames.months\n ),\n month: cn(\"ds:flex ds:flex-col ds:w-full ds:gap-4\", defaultClassNames.month),\n nav: cn(\n \"ds:flex ds:items-center ds:gap-1 ds:w-full ds:absolute ds:top-0 ds:inset-x-0 ds:justify-between\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"ds:size-(--cell-size) ds:aria-disabled:opacity-50 ds:p-0 ds:select-none\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"ds:size-(--cell-size) ds:aria-disabled:opacity-50 ds:p-0 ds:select-none\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"ds:flex ds:items-center ds:justify-center ds:h-(--cell-size) ds:w-full ds:px-(--cell-size)\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"ds:w-full ds:flex ds:items-center ds:text-sm ds:font-medium ds:justify-center ds:h-(--cell-size) ds:gap-1.5\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"ds:relative ds:has-focus:border-ring ds:border ds:border-input ds:shadow-xs ds:has-focus:ring-ring/50 ds:has-focus:ring-[3px] ds:rounded-md\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\n \"ds:absolute ds:bg-popover ds:inset-0 ds:opacity-0\",\n defaultClassNames.dropdown\n ),\n caption_label: cn(\n \"ds:select-none ds:font-medium\",\n captionLayout === \"label\"\n ? \"ds:text-sm\"\n : \"ds:rounded-md ds:pl-2 ds:pr-1 ds:flex ds:items-center ds:gap-1 ds:text-sm ds:h-8 ds:[&>svg]:text-muted-foreground ds:[&>svg]:size-3.5\",\n defaultClassNames.caption_label\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"ds:flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"ds:text-muted-foreground ds:rounded-md ds:flex-1 ds:font-normal ds:text-[0.8rem] ds:select-none\",\n defaultClassNames.weekday\n ),\n week: cn(\"ds:flex ds:w-full ds:mt-2\", defaultClassNames.week),\n week_number_header: cn(\n \"ds:select-none ds:w-(--cell-size)\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"ds:text-[0.8rem] ds:select-none ds:text-muted-foreground\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"ds:relative ds:w-full ds:h-full ds:p-0 ds:text-center ds:[&:last-child[data-selected=true]_button]:rounded-r-md ds:group/day ds:aspect-square ds:select-none\",\n props.showWeekNumber\n ? \"ds:[&:nth-child(2)[data-selected=true]_button]:rounded-l-md\"\n : \"ds:[&:first-child[data-selected=true]_button]:rounded-l-md\",\n defaultClassNames.day\n ),\n range_start: cn(\n variant === \"rounded\"\n ? `${colorClasses.rangeBg} ds:rounded-l-full`\n : \"ds:rounded-l-md ds:bg-accent\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\n variant === \"rounded\" ? \"ds:rounded-none\" : \"ds:rounded-none\",\n defaultClassNames.range_middle\n ),\n range_end: cn(\n variant === \"rounded\"\n ? `${colorClasses.rangeBg} ds:rounded-r-full`\n : \"ds:rounded-r-md ds:bg-accent\",\n defaultClassNames.range_end\n ),\n today: cn(\n variant === \"rounded\"\n ? `ds:rounded-full ds:bg-accent ds:data-[selected=true]:rounded-l-none ds:data-[selected=true]:${colorClasses.rangeBg} ds:[&_button[data-range-middle=true]]:bg-transparent`\n : \"ds:bg-accent ds:text-accent-foreground ds:rounded-md ds:data-[selected=true]:rounded-none\",\n defaultClassNames.today\n ),\n outside: cn(\n \"ds:text-muted-foreground ds:aria-selected:text-muted-foreground\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"ds:text-muted-foreground ds:opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"ds:invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n );\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n <ChevronLeftIcon className={cn(\"ds:size-4\", className)} {...props} />\n );\n }\n\n if (orientation === \"right\") {\n return (\n <ChevronRightIcon\n className={cn(\"ds:size-4\", className)}\n {...props}\n />\n );\n }\n\n return (\n <ChevronDownIcon className={cn(\"ds:size-4\", className)} {...props} />\n );\n },\n DayButton: (props) => (\n <CalendarDayButton {...props} variant={variant} color={color} />\n ),\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"ds:flex ds:size-(--cell-size) ds:items-center ds:justify-center ds:text-center\">\n {children}\n </div>\n </td>\n );\n },\n ...components,\n }}\n {...props}\n />\n );\n}\n\ntype CalendarDayButtonProps = Omit<\n React.ComponentProps<typeof DayButton>,\n \"color\"\n> & {\n variant?: \"default\" | \"rounded\";\n color?: CalendarColor;\n};\n\n// Color variants for calendar day buttons\nconst getColorClasses = (color: CalendarColor = \"foreground\") => {\n const colorMap = {\n primary: {\n selected: \"bg-primary text-primary-foreground\",\n selectedHover: \"hover:bg-primary/90\",\n rangeBg: \"bg-primary/20 dark:bg-primary/10\",\n focusRing: \"ring-primary/20 dark:ring-primary/40\",\n },\n secondary: {\n selected: \"bg-secondary text-secondary-foreground\",\n selectedHover: \"hover:bg-secondary/90\",\n rangeBg: \"bg-secondary/20 dark:bg-secondary/10\",\n focusRing: \"ring-secondary/20 dark:ring-secondary/40\",\n },\n accent: {\n selected: \"bg-accent text-accent-foreground\",\n selectedHover: \"hover:bg-accent/90\",\n rangeBg: \"bg-accent/20 dark:bg-accent/10\",\n focusRing: \"ring-accent/20 dark:ring-accent/40\",\n },\n destructive: {\n selected: \"bg-destructive text-destructive-foreground\",\n selectedHover: \"hover:bg-destructive/90\",\n rangeBg: \"bg-destructive/20 dark:bg-destructive/10\",\n focusRing: \"ring-destructive/20 dark:ring-destructive/40\",\n },\n muted: {\n selected: \"bg-muted text-muted-foreground\",\n selectedHover: \"hover:bg-muted/90\",\n rangeBg: \"bg-muted/30 dark:bg-muted/20\",\n focusRing: \"ring-muted/20 dark:ring-muted/40\",\n },\n success: {\n selected: \"bg-success text-success-foreground\",\n selectedHover: \"hover:bg-success/90\",\n rangeBg: \"bg-success/20 dark:bg-success/10\",\n focusRing: \"ring-success/20 dark:ring-success/40\",\n },\n error: {\n selected: \"bg-error text-error-foreground\",\n selectedHover: \"hover:bg-error/90\",\n rangeBg: \"bg-error/20 dark:bg-error/10\",\n focusRing: \"ring-error/20 dark:ring-error/40\",\n },\n warning: {\n selected: \"bg-warning text-warning-foreground\",\n selectedHover: \"hover:bg-warning/90\",\n rangeBg: \"bg-warning/20 dark:bg-warning/10\",\n focusRing: \"ring-warning/20 dark:ring-warning/40\",\n },\n foreground: {\n selected: \"bg-foreground text-background\",\n selectedHover: \"hover:bg-foreground/90\",\n rangeBg: \"bg-foreground/10 dark:bg-foreground/5\",\n focusRing: \"ring-foreground/20 dark:ring-foreground/40\",\n },\n };\n\n return colorMap[color];\n};\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n variant = \"default\",\n color = \"foreground\",\n ...props\n}: CalendarDayButtonProps) {\n const defaultClassNames = getDefaultClassNames();\n const colorClasses = getColorClasses(color);\n\n const ref = React.useRef<HTMLButtonElement>(null);\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus();\n }, [modifiers.focused]);\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n \"ds:flex ds:aspect-square ds:size-auto ds:w-full ds:min-w-(--cell-size) ds:flex-col ds:gap-1 ds:leading-none ds:font-normal\",\n \"ds:group-data-[focused=true]/day:relative ds:group-data-[focused=true]/day:z-10 ds:group-data-[focused=true]/day:ring-[3px]\",\n \"ds:group-data-[focused=true]/day:border-ring ds:group-data-[focused=true]/day:ring-ring/50\",\n \"ds:[&>span]:text-xs ds:[&>span]:opacity-70\",\n // Hover effect chỉ khi chưa selected\n !modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle &&\n \"ds:hover:bg-accent ds:hover:text-accent-foreground ds:dark:hover:text-accent-foreground\",\n // Selected single day - chỉ apply color khi selected\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle &&\n colorClasses.selected,\n // Range start/end - chỉ apply color khi là range start/end\n modifiers.range_start && colorClasses.selected,\n modifiers.range_end && colorClasses.selected,\n // Range middle - apply rangeBg nhưng giữ text color mặc định\n modifiers.range_middle &&\n `${colorClasses.rangeBg} ds:text-accent-foreground`,\n variant === \"default\" && [\n \"ds:data-[range-end=true]:rounded-md ds:data-[range-end=true]:rounded-r-md\",\n \"ds:data-[range-middle=true]:rounded-none\",\n \"ds:data-[range-start=true]:rounded-md ds:data-[range-start=true]:rounded-l-md\",\n ],\n variant === \"rounded\" && [\n \"ds:data-[selected-single=true]:rounded-full\",\n \"ds:data-[range-end=true]:rounded-full\",\n \"ds:data-[range-start=true]:rounded-full\",\n modifiers.range_start &&\n `ds:group-data-[focused=true]/day:${colorClasses.focusRing}`,\n modifiers.range_end &&\n `ds:group-data-[focused=true]/day:${colorClasses.focusRing}`,\n modifiers.range_middle && \"ds:rounded-none\",\n // Chỉ hover:rounded-full khi chưa selected\n !modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle &&\n \"ds:hover:rounded-full\",\n ],\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n Calendar,\n CalendarDayButton,\n type CalendarProps,\n type CalendarDayButtonProps,\n type CalendarColor,\n};\n"],"names":["Calendar","className","classNames","showOutsideDays","captionLayout","buttonVariant","variant","color","formatters","components","props","defaultClassNames","getDefaultClassNames","colorClasses","getColorClasses","jsx","DayPicker","cn","date","buttonVariants","rootRef","orientation","ChevronLeftIcon","ChevronRightIcon","ChevronDownIcon","CalendarDayButton","children","day","modifiers","ref","React","Button"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"calendar.cjs","sources":["../../../../../../../../packages/ui/src/components/calendar.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"lucide-react\";\nimport { DayButton, DayPicker, getDefaultClassNames } from \"react-day-picker\";\n\nimport { cn } from \"@dsui/ui/lib/utils\";\nimport { Button, buttonVariants } from \"@dsui/ui/components/button\";\n\ntype CalendarColor =\n | \"primary\"\n | \"secondary\"\n | \"accent\"\n | \"destructive\"\n | \"muted\"\n | \"success\"\n | \"error\"\n | \"warning\"\n | \"foreground\";\n\ntype CalendarProps = React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"];\n variant?: \"default\" | \"rounded\";\n color?: CalendarColor;\n};\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n variant = \"default\",\n color = \"primary\",\n formatters,\n components,\n ...props\n}: CalendarProps) {\n const defaultClassNames = getDefaultClassNames();\n const colorClasses = getColorClasses(color);\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"ds:bg-background ds:group/calendar ds:p-3 ds:[--cell-size:--spacing(8)] ds:[[data-slot=card-content]_&]:bg-transparent ds:[[data-slot=popover-content]_&]:bg-transparent\",\n String.raw`ds:rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`ds:rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"ds:w-fit\", defaultClassNames.root),\n months: cn(\n \"ds:flex ds:gap-4 ds:flex-col ds:md:flex-row ds:relative\",\n defaultClassNames.months\n ),\n month: cn(\"ds:flex ds:flex-col ds:w-full ds:gap-4\", defaultClassNames.month),\n nav: cn(\n \"ds:flex ds:items-center ds:gap-1 ds:w-full ds:absolute ds:top-0 ds:inset-x-0 ds:justify-between\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"ds:size-(--cell-size) ds:aria-disabled:opacity-50 ds:p-0 ds:select-none\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"ds:size-(--cell-size) ds:aria-disabled:opacity-50 ds:p-0 ds:select-none\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"ds:flex ds:items-center ds:justify-center ds:h-(--cell-size) ds:w-full ds:px-(--cell-size)\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"ds:w-full ds:flex ds:items-center ds:text-sm ds:font-medium ds:justify-center ds:h-(--cell-size) ds:gap-1.5\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"ds:relative ds:has-focus:border-ring ds:border ds:border-input ds:shadow-xs ds:has-focus:ring-ring/50 ds:has-focus:ring-[3px] ds:rounded-md\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\n \"ds:absolute ds:bg-popover ds:inset-0 ds:opacity-0\",\n defaultClassNames.dropdown\n ),\n caption_label: cn(\n \"ds:select-none ds:font-medium\",\n captionLayout === \"label\"\n ? \"ds:text-sm\"\n : \"ds:rounded-md ds:pl-2 ds:pr-1 ds:flex ds:items-center ds:gap-1 ds:text-sm ds:h-8 ds:[&>svg]:text-muted-foreground ds:[&>svg]:size-3.5\",\n defaultClassNames.caption_label\n ),\n table: \"ds:w-full ds:border-collapse\",\n weekdays: cn(\"ds:flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"ds:text-muted-foreground ds:rounded-md ds:flex-1 ds:font-normal ds:text-[0.8rem] ds:select-none\",\n defaultClassNames.weekday\n ),\n week: cn(\"ds:flex ds:w-full ds:mt-2\", defaultClassNames.week),\n week_number_header: cn(\n \"ds:select-none ds:w-(--cell-size)\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"ds:text-[0.8rem] ds:select-none ds:text-muted-foreground\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"ds:relative ds:w-full ds:h-full ds:p-0 ds:text-center ds:[&:last-child[data-selected=true]_button]:rounded-r-md ds:group/day ds:aspect-square ds:select-none\",\n props.showWeekNumber\n ? \"ds:[&:nth-child(2)[data-selected=true]_button]:rounded-l-md\"\n : \"ds:[&:first-child[data-selected=true]_button]:rounded-l-md\",\n defaultClassNames.day\n ),\n range_start: cn(\n variant === \"rounded\"\n ? `${colorClasses.rangeBg} ds:rounded-l-full`\n : \"ds:rounded-l-md ds:bg-accent\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\n variant === \"rounded\" ? \"ds:rounded-none\" : \"ds:rounded-none\",\n defaultClassNames.range_middle\n ),\n range_end: cn(\n variant === \"rounded\"\n ? `${colorClasses.rangeBg} ds:rounded-r-full`\n : \"ds:rounded-r-md ds:bg-accent\",\n defaultClassNames.range_end\n ),\n today: cn(\n variant === \"rounded\"\n ? `ds:rounded-full ds:bg-accent ds:data-[selected=true]:rounded-l-none ds:data-[selected=true]:${colorClasses.rangeBg} ds:[&_button[data-range-middle=true]]:bg-transparent`\n : \"ds:bg-accent ds:text-accent-foreground ds:rounded-md ds:data-[selected=true]:rounded-none\",\n defaultClassNames.today\n ),\n outside: cn(\n \"ds:text-muted-foreground ds:aria-selected:text-muted-foreground\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"ds:text-muted-foreground ds:opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"ds:invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n );\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n <ChevronLeftIcon className={cn(\"ds:size-4\", className)} {...props} />\n );\n }\n\n if (orientation === \"right\") {\n return (\n <ChevronRightIcon\n className={cn(\"ds:size-4\", className)}\n {...props}\n />\n );\n }\n\n return (\n <ChevronDownIcon className={cn(\"ds:size-4\", className)} {...props} />\n );\n },\n DayButton: (props) => (\n <CalendarDayButton {...props} variant={variant} color={color} />\n ),\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"ds:flex ds:size-(--cell-size) ds:items-center ds:justify-center ds:text-center\">\n {children}\n </div>\n </td>\n );\n },\n ...components,\n }}\n {...props}\n />\n );\n}\n\ntype CalendarDayButtonProps = Omit<\n React.ComponentProps<typeof DayButton>,\n \"color\"\n> & {\n variant?: \"default\" | \"rounded\";\n color?: CalendarColor;\n};\n\n// Color variants for calendar day buttons\nconst getColorClasses = (color: CalendarColor = \"foreground\") => {\n const colorMap = {\n primary: {\n selected: \"ds:bg-primary ds:text-primary-foreground\",\n selectedHover: \"ds:hover:bg-primary/90\",\n rangeBg: \"ds:bg-primary/20 dark:ds:bg-primary/10\",\n focusRing: \"ds:ring-primary/20 dark:ds:ring-primary/40\",\n },\n secondary: {\n selected: \"ds:bg-secondary ds:text-secondary-foreground\",\n selectedHover: \"ds:hover:bg-secondary/90\",\n rangeBg: \"ds:bg-secondary/20 dark:ds:bg-secondary/10\",\n focusRing: \"ds:ring-secondary/20 dark:ds:ring-secondary/40\",\n },\n accent: {\n selected: \"ds:bg-accent ds:text-accent-foreground\",\n selectedHover: \"ds:hover:bg-accent/90\",\n rangeBg: \"ds:bg-accent/20 dark:ds:bg-accent/10\",\n focusRing: \"ds:ring-accent/20 dark:ds:ring-accent/40\",\n },\n destructive: {\n selected: \"ds:bg-destructive ds:text-destructive-foreground\",\n selectedHover: \"ds:hover:bg-destructive/90\",\n rangeBg: \"ds:bg-destructive/20 dark:ds:bg-destructive/10\",\n focusRing: \"ds:ring-destructive/20 dark:ds:ring-destructive/40\",\n },\n muted: {\n selected: \"ds:bg-muted ds:text-muted-foreground\",\n selectedHover: \"ds:hover:bg-muted/90\",\n rangeBg: \"ds:bg-muted/30 dark:ds:bg-muted/20\",\n focusRing: \"ds:ring-muted/20 dark:ds:ring-muted/40\",\n },\n success: {\n selected: \"ds:bg-success ds:text-success-foreground\",\n selectedHover: \"ds:hover:bg-success/90\",\n rangeBg: \"ds:bg-success/20 dark:ds:bg-success/10\",\n focusRing: \"ds:ring-success/20 dark:ds:ring-success/40\",\n },\n error: {\n selected: \"ds:bg-error ds:text-error-foreground\",\n selectedHover: \"ds:hover:bg-error/90\",\n rangeBg: \"ds:bg-error/20 dark:ds:bg-error/10\",\n focusRing: \"ds:ring-error/20 dark:ds:ring-error/40\",\n },\n warning: {\n selected: \"ds:bg-warning ds:text-warning-foreground\",\n selectedHover: \"ds:hover:bg-warning/90\",\n rangeBg: \"ds:bg-warning/20 dark:ds:bg-warning/10\",\n focusRing: \"ds:ring-warning/20 dark:ds:ring-warning/40\",\n },\n foreground: {\n selected: \"ds:bg-foreground ds:text-background\",\n selectedHover: \"ds:hover:bg-foreground/90\",\n rangeBg: \"ds:bg-foreground/10 dark:ds:bg-foreground/5\",\n focusRing: \"ds:ring-foreground/20 dark:ds:ring-foreground/40\",\n },\n };\n\n return colorMap[color];\n};\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n variant = \"default\",\n color = \"foreground\",\n ...props\n}: CalendarDayButtonProps) {\n const defaultClassNames = getDefaultClassNames();\n const colorClasses = getColorClasses(color);\n\n const ref = React.useRef<HTMLButtonElement>(null);\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus();\n }, [modifiers.focused]);\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n \"ds:flex ds:aspect-square ds:size-auto ds:w-full ds:min-w-(--cell-size) ds:flex-col ds:gap-1 ds:leading-none ds:font-normal\",\n \"ds:group-data-[focused=true]/day:relative ds:group-data-[focused=true]/day:z-10 ds:group-data-[focused=true]/day:ring-[3px]\",\n \"ds:group-data-[focused=true]/day:border-ring ds:group-data-[focused=true]/day:ring-ring/50\",\n \"ds:[&>span]:text-xs ds:[&>span]:opacity-70\",\n // Hover effect chỉ khi chưa selected\n !modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle &&\n \"ds:hover:bg-accent ds:hover:text-accent-foreground ds:dark:hover:text-accent-foreground\",\n // Selected single day - chỉ apply color khi selected\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle &&\n colorClasses.selected,\n // Range start/end - chỉ apply color khi là range start/end\n modifiers.range_start && colorClasses.selected,\n modifiers.range_end && colorClasses.selected,\n // Range middle - apply rangeBg nhưng giữ text color mặc định\n modifiers.range_middle &&\n `${colorClasses.rangeBg} ds:text-accent-foreground`,\n variant === \"default\" && [\n \"ds:data-[range-end=true]:rounded-md ds:data-[range-end=true]:rounded-r-md\",\n \"ds:data-[range-middle=true]:rounded-none\",\n \"ds:data-[range-start=true]:rounded-md ds:data-[range-start=true]:rounded-l-md\",\n ],\n variant === \"rounded\" && [\n \"ds:data-[selected-single=true]:rounded-full\",\n \"ds:data-[range-end=true]:rounded-full\",\n \"ds:data-[range-start=true]:rounded-full\",\n modifiers.range_start &&\n `ds:group-data-[focused=true]/day:${colorClasses.focusRing}`,\n modifiers.range_end &&\n `ds:group-data-[focused=true]/day:${colorClasses.focusRing}`,\n modifiers.range_middle && \"ds:rounded-none\",\n // Chỉ hover:rounded-full khi chưa selected\n !modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle &&\n \"ds:hover:rounded-full\",\n ],\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n Calendar,\n CalendarDayButton,\n type CalendarProps,\n type CalendarDayButtonProps,\n type CalendarColor,\n};\n"],"names":["Calendar","className","classNames","showOutsideDays","captionLayout","buttonVariant","variant","color","formatters","components","props","defaultClassNames","getDefaultClassNames","colorClasses","getColorClasses","jsx","DayPicker","cn","date","buttonVariants","rootRef","orientation","ChevronLeftIcon","ChevronRightIcon","ChevronDownIcon","CalendarDayButton","children","day","modifiers","ref","React","Button"],"mappings":"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"}
|