@cocso-ui/react 0.2.12 → 0.2.14

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.
@@ -0,0 +1,14 @@
1
+ import * as react from 'react';
2
+ import { ComponentPropsWithoutRef } from 'react';
3
+
4
+ interface DayPickerProps extends ComponentPropsWithoutRef<'div'> {
5
+ value?: Date;
6
+ onValueChange?: (value: Date | null) => void;
7
+ minDate?: Date;
8
+ maxDate?: Date;
9
+ disabled?: boolean;
10
+ }
11
+ declare const DayPicker: react.ForwardRefExoticComponent<DayPickerProps & react.RefAttributes<HTMLDivElement>>;
12
+
13
+ export { DayPicker };
14
+ export type { DayPickerProps };
@@ -0,0 +1,99 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var reactIcons = require('@cocso-ui/react-icons');
5
+ var clsx = require('clsx');
6
+ var locale = require('date-fns/locale');
7
+ var react = require('react');
8
+ var DatePicker = require('react-datepicker');
9
+ var DayPicker_module = require('./DayPicker.module.css.js');
10
+ var jsxRuntime = require('react/jsx-runtime');
11
+ var Dropdown = require('../dropdown/Dropdown.js');
12
+ var Button = require('../button/Button.js');
13
+ var Typography = require('../typography/Typography.js');
14
+
15
+ const DayPicker = /*#__PURE__*/react.forwardRef(({
16
+ className,
17
+ value,
18
+ onValueChange,
19
+ disabled,
20
+ children,
21
+ minDate,
22
+ maxDate,
23
+ ...props
24
+ }, ref) => {
25
+ const [open, setOpen] = react.useState(false);
26
+ const handleChange = date => {
27
+ onValueChange?.(date);
28
+ setOpen(false);
29
+ };
30
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
31
+ ref: ref,
32
+ className: clsx.clsx(DayPicker_module.root, className),
33
+ ...props,
34
+ children: /*#__PURE__*/jsxRuntime.jsxs(Dropdown.Dropdown, {
35
+ open: open,
36
+ onOpenChange: setOpen,
37
+ children: [/*#__PURE__*/jsxRuntime.jsx(Dropdown.Dropdown.Trigger, {
38
+ asChild: true,
39
+ children: children
40
+ }), /*#__PURE__*/jsxRuntime.jsx(Dropdown.Dropdown.Portal, {
41
+ children: /*#__PURE__*/jsxRuntime.jsx(Dropdown.Dropdown.Content, {
42
+ className: DayPicker_module.content,
43
+ "aria-label": "\uB0A0\uC9DC \uC120\uD0DD",
44
+ children: /*#__PURE__*/jsxRuntime.jsx(DatePicker, {
45
+ selected: value,
46
+ onChange: handleChange,
47
+ disabled: disabled,
48
+ locale: locale.ko,
49
+ minDate: minDate,
50
+ maxDate: maxDate,
51
+ dateFormat: "yyyy\uB144 MM\uC6D4 dd\uC77C",
52
+ showPopperArrow: false,
53
+ dayClassName: date => {
54
+ const day = date.getDay();
55
+ if (day === 0) return DayPicker_module.sunday;
56
+ if (day === 6) return DayPicker_module.saturday;
57
+ return '';
58
+ },
59
+ renderCustomHeader: ({
60
+ date,
61
+ decreaseMonth,
62
+ increaseMonth,
63
+ prevMonthButtonDisabled,
64
+ nextMonthButtonDisabled
65
+ }) => /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
66
+ children: [/*#__PURE__*/jsxRuntime.jsx(Button.Button, {
67
+ type: "button",
68
+ variant: "secondary",
69
+ size: "xs",
70
+ onClick: decreaseMonth,
71
+ disabled: prevMonthButtonDisabled,
72
+ className: DayPicker_module.backButton,
73
+ children: /*#__PURE__*/jsxRuntime.jsx(reactIcons.ArrowIOSForwardIcon, {})
74
+ }), /*#__PURE__*/jsxRuntime.jsx(Typography.Typography, {
75
+ type: "body",
76
+ weight: "semibold",
77
+ children: date.toLocaleDateString('ko-KR', {
78
+ year: 'numeric',
79
+ month: 'long'
80
+ })
81
+ }), /*#__PURE__*/jsxRuntime.jsx(Button.Button, {
82
+ type: "button",
83
+ variant: "secondary",
84
+ size: "xs",
85
+ onClick: increaseMonth,
86
+ disabled: nextMonthButtonDisabled,
87
+ children: /*#__PURE__*/jsxRuntime.jsx(reactIcons.ArrowIOSForwardIcon, {})
88
+ })]
89
+ }),
90
+ inline: true
91
+ })
92
+ })
93
+ })]
94
+ })
95
+ });
96
+ });
97
+ DayPicker.displayName = 'DayPicker';
98
+
99
+ exports.DayPicker = DayPicker;
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ var styleInject_es = require('../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js');
4
+
5
+ var css_248z = ".DayPicker-module_root__lDrAw{display:inline-block;transform:translateZ(0)}.DayPicker-module_content__VVh4Y{min-width:260px;overflow:hidden}.DayPicker-module_backButton__jYW7L{transform:rotate(180deg)}.DayPicker-module_sunday__RaZuV{color:var(--ds-color-danger-600)!important}.DayPicker-module_saturday__e-AQO{color:var(--ds-color-primary-600)!important}.react-datepicker{background-color:var(--ds-color-white);color:var(--ds-color-text-primary);display:inline-block;font-size:.8rem;position:relative}.react-datepicker__aria-live{height:1px;left:-10000px;overflow:hidden;position:absolute;top:auto;width:1px}.react-datepicker__sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.react-datepicker__month-container{padding-block:var(--ds-spacing-8);width:100%}.react-datepicker__header--custom{align-items:center;display:flex;justify-content:space-between;padding-bottom:var(--ds-spacing-5);width:100%}.react-datepicker__day-names,.react-datepicker__week{text-align:center;white-space:nowrap}.react-datepicker__day,.react-datepicker__day-name{color:var(--ds-color-text-primary);display:inline-block;line-height:1.7rem;margin:.166rem;text-align:center;width:1.7rem}.react-datepicker__day{border-radius:8px;cursor:pointer;font-weight:500}.react-datepicker__day:hover{background-color:var(--ds-color-neutral-50)}.react-datepicker__day--selected{background-color:var(--ds-color-primary-500);color:var(--ds-color-white)!important}.react-datepicker__day--selected:hover{background-color:var(--ds-color-primary-600)!important}.react-datepicker__day-name:first-child{color:var(--ds-color-danger-600)}.react-datepicker__day-name:nth-child(7){color:var(--ds-color-primary-600)}.react-datepicker__day--disabled{cursor:not-allowed;opacity:.3}";
6
+ var styles = {"root":"DayPicker-module_root__lDrAw","content":"DayPicker-module_content__VVh4Y","backButton":"DayPicker-module_backButton__jYW7L","sunday":"DayPicker-module_sunday__RaZuV","saturday":"DayPicker-module_saturday__e-AQO"};
7
+ styleInject_es(css_248z);
8
+
9
+ module.exports = styles;
@@ -2,6 +2,7 @@ export { Accordion } from './accordion/Accordion.js';
2
2
  export { Badge, BadgeProps } from './badge/Badge.js';
3
3
  export { Button, ButtonProps, ButtonShape, ButtonSize, ButtonVariant } from './button/Button.js';
4
4
  export { Checkbox, CheckboxProps, CheckboxSize, CheckboxStatus } from './checkbox/Checkbox.js';
5
+ export { DayPicker, DayPickerProps } from './day-picker/DayPicker.js';
5
6
  export { Dropdown } from './dropdown/Dropdown.js';
6
7
  export { Link, LinkProps, LinkSize } from './link/Link.js';
7
8
  export { Modal } from './modal/Modal.js';
package/dist/cjs/index.js CHANGED
@@ -4,6 +4,7 @@ var Accordion = require('./accordion/Accordion.js');
4
4
  var Badge = require('./badge/Badge.js');
5
5
  var Button = require('./button/Button.js');
6
6
  var Checkbox = require('./checkbox/Checkbox.js');
7
+ var DayPicker = require('./day-picker/DayPicker.js');
7
8
  var Dropdown = require('./dropdown/Dropdown.js');
8
9
  var Link = require('./link/Link.js');
9
10
  var Modal = require('./modal/Modal.js');
@@ -28,6 +29,7 @@ exports.Accordion = Accordion.Accordion;
28
29
  exports.Badge = Badge.Badge;
29
30
  exports.Button = Button.Button;
30
31
  exports.Checkbox = Checkbox.Checkbox;
32
+ exports.DayPicker = DayPicker.DayPicker;
31
33
  exports.Dropdown = Dropdown.Dropdown;
32
34
  exports.Link = Link.Link;
33
35
  exports.Modal = Modal.Modal;
@@ -3,9 +3,10 @@ import { ComponentPropsWithoutRef } from 'react';
3
3
 
4
4
  interface MonthPickerProps extends ComponentPropsWithoutRef<'div'> {
5
5
  value?: Date;
6
- onValueChange?: (value: Date | undefined) => void;
7
- minYear?: number;
8
- maxYear?: number;
6
+ onValueChange?: (value: Date | null) => void;
7
+ minDate?: Date;
8
+ maxDate?: Date;
9
+ disabled?: boolean;
9
10
  }
10
11
  declare const MonthPicker: react.ForwardRefExoticComponent<MonthPickerProps & react.RefAttributes<HTMLDivElement>>;
11
12
 
@@ -3,97 +3,85 @@
3
3
 
4
4
  var reactIcons = require('@cocso-ui/react-icons');
5
5
  var clsx = require('clsx');
6
+ var locale = require('date-fns/locale');
6
7
  var react = require('react');
8
+ var DatePicker = require('react-datepicker');
7
9
  var MonthPicker_module = require('./MonthPicker.module.css.js');
8
10
  var jsxRuntime = require('react/jsx-runtime');
9
11
  var Dropdown = require('../dropdown/Dropdown.js');
10
12
  var Button = require('../button/Button.js');
11
13
  var Typography = require('../typography/Typography.js');
12
14
 
13
- const MONTHS = ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'];
14
15
  const MonthPicker = /*#__PURE__*/react.forwardRef(({
15
16
  className,
16
17
  value,
17
18
  onValueChange,
18
- minYear = 1900,
19
- maxYear = 2100,
20
19
  children,
20
+ minDate,
21
+ maxDate,
22
+ disabled,
21
23
  ...props
22
24
  }, ref) => {
23
25
  const [open, setOpen] = react.useState(false);
24
- const [displayYear, setDisplayYear] = react.useState(value?.getFullYear() ?? new Date().getFullYear());
25
- const handleMonthSelect = month => {
26
- const newValue = new Date(displayYear, month - 1, 1);
27
- onValueChange?.(newValue);
26
+ const handleChange = date => {
27
+ onValueChange?.(date);
28
28
  setOpen(false);
29
29
  };
30
- const handleYearChange = year => {
31
- const clampedYear = Math.max(minYear, Math.min(maxYear, year));
32
- setDisplayYear(clampedYear);
33
- };
34
- const handleOpenChange = isOpen => {
35
- if (isOpen) {
36
- setDisplayYear(value?.getFullYear() ?? new Date().getFullYear());
37
- }
38
- setOpen(isOpen);
39
- };
40
30
  return /*#__PURE__*/jsxRuntime.jsx("div", {
41
31
  ref: ref,
42
32
  className: clsx.clsx(MonthPicker_module.root, className),
43
33
  ...props,
44
34
  children: /*#__PURE__*/jsxRuntime.jsxs(Dropdown.Dropdown, {
45
35
  open: open,
46
- onOpenChange: handleOpenChange,
36
+ onOpenChange: setOpen,
47
37
  children: [/*#__PURE__*/jsxRuntime.jsx(Dropdown.Dropdown.Trigger, {
48
38
  asChild: true,
49
39
  children: children
50
40
  }), /*#__PURE__*/jsxRuntime.jsx(Dropdown.Dropdown.Portal, {
51
- children: /*#__PURE__*/jsxRuntime.jsxs(Dropdown.Dropdown.Content, {
41
+ children: /*#__PURE__*/jsxRuntime.jsx(Dropdown.Dropdown.Content, {
52
42
  className: MonthPicker_module.content,
53
- role: "listbox",
54
- "aria-label": "\uC6D4 \uC120\uD0DD",
55
- children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
56
- className: MonthPicker_module.header,
57
- children: [/*#__PURE__*/jsxRuntime.jsx(Button.Button, {
58
- type: "button",
59
- size: "xs",
60
- variant: "secondary",
61
- onClick: () => handleYearChange(displayYear - 1),
62
- disabled: displayYear <= minYear,
63
- svgOnly: true,
64
- "aria-label": "\uC774\uC804 \uB144\uB3C4",
65
- children: /*#__PURE__*/jsxRuntime.jsx(reactIcons.ArrowIOSForwardIcon, {
66
- className: MonthPicker_module.rotate
67
- })
68
- }), /*#__PURE__*/jsxRuntime.jsxs(Typography.Typography, {
69
- type: "body",
70
- weight: "semibold",
71
- children: [displayYear, "\uB144"]
72
- }), /*#__PURE__*/jsxRuntime.jsx(Button.Button, {
73
- type: "button",
74
- size: "xs",
75
- variant: "secondary",
76
- onClick: () => handleYearChange(displayYear + 1),
77
- disabled: displayYear >= maxYear,
78
- "aria-label": "\uB2E4\uC74C \uB144\uB3C4",
79
- children: /*#__PURE__*/jsxRuntime.jsx(reactIcons.ArrowIOSForwardIcon, {})
80
- })]
81
- }), /*#__PURE__*/jsxRuntime.jsx("div", {
82
- className: MonthPicker_module.grid,
83
- children: MONTHS.map((month, index) => {
84
- const monthNumber = index + 1;
85
- const isSelected = value?.getFullYear() === displayYear && value?.getMonth() === monthNumber - 1;
86
- return /*#__PURE__*/jsxRuntime.jsx(Button.Button, {
43
+ children: /*#__PURE__*/jsxRuntime.jsx(DatePicker, {
44
+ selected: value,
45
+ onChange: handleChange,
46
+ disabled: disabled,
47
+ locale: locale.ko,
48
+ minDate: minDate,
49
+ maxDate: maxDate,
50
+ dateFormat: "yyyy\uB144 MM\uC6D4 dd\uC77C",
51
+ showPopperArrow: false,
52
+ renderCustomHeader: ({
53
+ date,
54
+ decreaseYear,
55
+ increaseYear,
56
+ prevYearButtonDisabled,
57
+ nextYearButtonDisabled
58
+ }) => /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
59
+ children: [/*#__PURE__*/jsxRuntime.jsx(Button.Button, {
60
+ type: "button",
61
+ variant: "secondary",
62
+ size: "xs",
63
+ onClick: decreaseYear,
64
+ disabled: prevYearButtonDisabled,
65
+ className: MonthPicker_module.backButton,
66
+ children: /*#__PURE__*/jsxRuntime.jsx(reactIcons.ArrowIOSForwardIcon, {})
67
+ }), /*#__PURE__*/jsxRuntime.jsx(Typography.Typography, {
68
+ type: "body",
69
+ weight: "semibold",
70
+ children: date.toLocaleDateString('ko-KR', {
71
+ year: 'numeric'
72
+ })
73
+ }), /*#__PURE__*/jsxRuntime.jsx(Button.Button, {
87
74
  type: "button",
88
- variant: isSelected ? 'tertiary' : 'secondary',
89
- onClick: () => handleMonthSelect(monthNumber),
90
- role: "option",
91
- "aria-selected": isSelected,
92
- "aria-label": `${month} 선택`,
93
- children: month
94
- }, month);
95
- })
96
- })]
75
+ variant: "secondary",
76
+ size: "xs",
77
+ onClick: increaseYear,
78
+ disabled: nextYearButtonDisabled,
79
+ children: /*#__PURE__*/jsxRuntime.jsx(reactIcons.ArrowIOSForwardIcon, {})
80
+ })]
81
+ }),
82
+ inline: true,
83
+ showMonthYearPicker: true
84
+ })
97
85
  })
98
86
  })]
99
87
  })
@@ -2,8 +2,8 @@
2
2
 
3
3
  var styleInject_es = require('../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js');
4
4
 
5
- var css_248z = ".MonthPicker-module_root__my2Kl{display:inline-block;transform:translateZ(0)}.MonthPicker-module_content__6glhz{gap:var(--ds-spacing-8);min-width:280px;padding:var(--ds-spacing-8)}.MonthPicker-module_header__7QguI{align-items:center;display:flex;justify-content:space-between}.MonthPicker-module_rotate__Y0yed{transform:rotate(180deg)}.MonthPicker-module_grid__kkn0v{border:none;display:grid;gap:var(--ds-spacing-5);grid-template-columns:repeat(3,1fr)}";
6
- var styles = {"root":"MonthPicker-module_root__my2Kl","content":"MonthPicker-module_content__6glhz","header":"MonthPicker-module_header__7QguI","rotate":"MonthPicker-module_rotate__Y0yed","grid":"MonthPicker-module_grid__kkn0v"};
5
+ var css_248z = ".MonthPicker-module_root__my2Kl{display:inline-block;transform:translateZ(0)}.MonthPicker-module_content__6glhz{min-width:260px;overflow:hidden}.MonthPicker-module_backButton__Mplxj{transform:rotate(180deg)}.react-datepicker{background-color:var(--ds-color-white);color:var(--ds-color-text-primary);display:inline-block;font-size:.8rem;padding-inline:var(--ds-spacing-8);position:relative}.react-datepicker__aria-live{height:1px;left:-10000px;overflow:hidden;position:absolute;top:auto;width:1px}.react-datepicker__sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.react-datepicker__header--custom{align-items:center;display:flex;justify-content:space-between;padding-bottom:var(--ds-spacing-5);width:100%}.react-datepicker__week{text-align:center;white-space:nowrap}.react-datepicker__month{display:flex;flex-direction:column;gap:var(--ds-spacing-5)}.react-datepicker__month-wrapper{align-items:center;display:flex;gap:var(--ds-spacing-5);justify-content:space-between}.react-datepicker__month-text{align-items:center;border-radius:8px;color:var(--ds-color-text-primary);cursor:pointer;display:flex;flex:1;font-size:14px;font-weight:500;height:40px;justify-content:center}.react-datepicker__month-text:hover{background-color:var(--ds-color-neutral-50)}.react-datepicker__month-text--selected{background-color:var(--ds-color-primary-500);color:var(--ds-color-white);font-weight:600}";
6
+ var styles = {"root":"MonthPicker-module_root__my2Kl","content":"MonthPicker-module_content__6glhz","backButton":"MonthPicker-module_backButton__Mplxj"};
7
7
  styleInject_es(css_248z);
8
8
 
9
9
  module.exports = styles;
@@ -0,0 +1,14 @@
1
+ import * as react from 'react';
2
+ import { ComponentPropsWithoutRef } from 'react';
3
+
4
+ interface DayPickerProps extends ComponentPropsWithoutRef<'div'> {
5
+ value?: Date;
6
+ onValueChange?: (value: Date | null) => void;
7
+ minDate?: Date;
8
+ maxDate?: Date;
9
+ disabled?: boolean;
10
+ }
11
+ declare const DayPicker: react.ForwardRefExoticComponent<DayPickerProps & react.RefAttributes<HTMLDivElement>>;
12
+
13
+ export { DayPicker };
14
+ export type { DayPickerProps };
@@ -0,0 +1,97 @@
1
+ "use client";
2
+ import { ArrowIOSForwardIcon } from '@cocso-ui/react-icons';
3
+ import { clsx } from 'clsx';
4
+ import { ko } from 'date-fns/locale';
5
+ import { forwardRef, useState } from 'react';
6
+ import DatePicker from 'react-datepicker';
7
+ import styles from './DayPicker.module.css.mjs';
8
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
9
+ import { Dropdown } from '../dropdown/Dropdown.mjs';
10
+ import { Button } from '../button/Button.mjs';
11
+ import { Typography } from '../typography/Typography.mjs';
12
+
13
+ const DayPicker = /*#__PURE__*/forwardRef(({
14
+ className,
15
+ value,
16
+ onValueChange,
17
+ disabled,
18
+ children,
19
+ minDate,
20
+ maxDate,
21
+ ...props
22
+ }, ref) => {
23
+ const [open, setOpen] = useState(false);
24
+ const handleChange = date => {
25
+ onValueChange?.(date);
26
+ setOpen(false);
27
+ };
28
+ return /*#__PURE__*/jsx("div", {
29
+ ref: ref,
30
+ className: clsx(styles.root, className),
31
+ ...props,
32
+ children: /*#__PURE__*/jsxs(Dropdown, {
33
+ open: open,
34
+ onOpenChange: setOpen,
35
+ children: [/*#__PURE__*/jsx(Dropdown.Trigger, {
36
+ asChild: true,
37
+ children: children
38
+ }), /*#__PURE__*/jsx(Dropdown.Portal, {
39
+ children: /*#__PURE__*/jsx(Dropdown.Content, {
40
+ className: styles.content,
41
+ "aria-label": "\uB0A0\uC9DC \uC120\uD0DD",
42
+ children: /*#__PURE__*/jsx(DatePicker, {
43
+ selected: value,
44
+ onChange: handleChange,
45
+ disabled: disabled,
46
+ locale: ko,
47
+ minDate: minDate,
48
+ maxDate: maxDate,
49
+ dateFormat: "yyyy\uB144 MM\uC6D4 dd\uC77C",
50
+ showPopperArrow: false,
51
+ dayClassName: date => {
52
+ const day = date.getDay();
53
+ if (day === 0) return styles.sunday;
54
+ if (day === 6) return styles.saturday;
55
+ return '';
56
+ },
57
+ renderCustomHeader: ({
58
+ date,
59
+ decreaseMonth,
60
+ increaseMonth,
61
+ prevMonthButtonDisabled,
62
+ nextMonthButtonDisabled
63
+ }) => /*#__PURE__*/jsxs(Fragment, {
64
+ children: [/*#__PURE__*/jsx(Button, {
65
+ type: "button",
66
+ variant: "secondary",
67
+ size: "xs",
68
+ onClick: decreaseMonth,
69
+ disabled: prevMonthButtonDisabled,
70
+ className: styles.backButton,
71
+ children: /*#__PURE__*/jsx(ArrowIOSForwardIcon, {})
72
+ }), /*#__PURE__*/jsx(Typography, {
73
+ type: "body",
74
+ weight: "semibold",
75
+ children: date.toLocaleDateString('ko-KR', {
76
+ year: 'numeric',
77
+ month: 'long'
78
+ })
79
+ }), /*#__PURE__*/jsx(Button, {
80
+ type: "button",
81
+ variant: "secondary",
82
+ size: "xs",
83
+ onClick: increaseMonth,
84
+ disabled: nextMonthButtonDisabled,
85
+ children: /*#__PURE__*/jsx(ArrowIOSForwardIcon, {})
86
+ })]
87
+ }),
88
+ inline: true
89
+ })
90
+ })
91
+ })]
92
+ })
93
+ });
94
+ });
95
+ DayPicker.displayName = 'DayPicker';
96
+
97
+ export { DayPicker };
@@ -0,0 +1,3 @@
1
+ var styles = {"root":"DayPicker-module_root__lDrAw","content":"DayPicker-module_content__VVh4Y","backButton":"DayPicker-module_backButton__jYW7L","sunday":"DayPicker-module_sunday__RaZuV","saturday":"DayPicker-module_saturday__e-AQO"};
2
+
3
+ export { styles as default };
@@ -1 +1 @@
1
- .Accordion-module_content__V9Ftc,.Accordion-module_item__iE3dq{overflow:hidden}.Accordion-module_content__V9Ftc[data-state=open]{animation:Accordion-module_slide-down__88c3a .3s cubic-bezier(.87,0,.13,1)}.Accordion-module_content__V9Ftc[data-state=closed]{animation:Accordion-module_slide-up__hbYw7 .3s cubic-bezier(.87,0,.13,1)}.Accordion-module_trigger__6nu7o{cursor:pointer;display:flex;justify-content:space-between;width:100%}.Accordion-module_chevron__oFGVg{display:inline-block;height:var(--ds-spacing-10);transition:transform .2s ease-in-out;width:var(--ds-spacing-10)}.Accordion-module_trigger__6nu7o[data-state=closed]>.Accordion-module_chevron__oFGVg{transform:rotate(0deg)}.Accordion-module_trigger__6nu7o[data-state=open]>.Accordion-module_chevron__oFGVg{transform:rotate(180deg)}@keyframes Accordion-module_slide-up__hbYw7{0%{height:var(--radix-accordion-content-height)}to{height:0}}@keyframes Accordion-module_slide-down__88c3a{0%{height:0}to{height:var(--radix-accordion-content-height)}}.Typography-module_typography__45lnt{--cocso-typography-font-color:inherit;--cocso-typography-font-size:inherit;--cocso-typography-font-weight:inherit;--cocso-typography-line-height:inherit;color:var(--cocso-typography-font-color);font-size:var(--cocso-typography-font-size);font-weight:var(--cocso-typography-font-weight);line-height:var(--cocso-typography-line-height)}.Typography-module_typography__45lnt[aria-disabled=true]{cursor:not-allowed;opacity:.4}@media (min-width:768px){.Typography-module_typography__45lnt{font-size:var(--cocso-tablet-typography-font-size,var(--cocso-typography-font-size))}}@media (min-width:1024px){.Typography-module_typography__45lnt{font-size:var(--cocso-desktop-typography-font-size,var(--cocso-tablet-typography-font-size,var(--cocso-typography-font-size)))}}.Badge-module_badge__ikDSa{--cocso-badge-padding:inherit;--cocso-badge-border-radius:inherit;--cocso-badge-bg-color:inherit;background-color:var(--cocso-badge-bg-color);border-radius:var(--cocso-badge-border-radius);display:inline-flex;padding:var(--cocso-badge-padding);user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}@keyframes Spinner-module_donut-spin__cBa-F{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.Spinner-module_spinner__iIx6p{--cocso-spinner-size:inherit;--cocso-spinner-border-width:inherit;--cocso-spinner-border-color:inherit;--cocso-spinner-bg-color:inherit;animation:Spinner-module_donut-spin__cBa-F .5s linear infinite;border:var(--cocso-spinner-border-width) solid var(--cocso-spinner-bg-color);border-radius:50%;border-top-color:var(--cocso-spinner-border-color);display:inline-block;height:var(--cocso-spinner-size);position:relative;transform-origin:center center;width:var(--cocso-spinner-size)}.Button-module_button__eiKKZ{--cocso-button-height:inherit;--cocso-button-padding-inline:inherit;--cocso-button-content-padding:inherit;--cocso-button-font-color:inherit;--cocso-button-font-size:inherit;--cocso-button-font-weight:inherit;--cocso-button-border:inherit;--cocso-button-border-radius:inherit;--cocso-button-bg-color:inherit;align-items:center;background-color:var(--cocso-button-bg-color);border:var(--cocso-button-border);border-radius:var(--cocso-button-border-radius);color:var(--cocso-button-font-color);cursor:pointer;display:inline-flex;font-size:var(--cocso-button-font-size);font-weight:var(--cocso-button-font-weight);height:var(--cocso-button-height);justify-content:center;opacity:1;padding-inline:var(--cocso-button-padding-inline);position:relative;transform:translateZ(0);transition:background-color .15s ease-in-out}.Button-module_button__eiKKZ:not(.Button-module_disabled__M6r1w):hover{--cocso-button-bg-color-hover:inherit;background-color:var(--cocso-button-bg-color-hover)}.Button-module_button__eiKKZ:not(.Button-module_disabled__M6r1w):active{--cocso-button-bg-color-active:inherit;background-color:var(--cocso-button-bg-color-active)}.Button-module_content__SVjwi{padding:var(--cocso-button-content-padding)}.Button-module_prefix__d7ljt{margin-right:2px}.Button-module_prefix__d7ljt,.Button-module_suffix__9oysT{align-items:center;display:inline-flex;flex-shrink:0;justify-content:center}.Button-module_suffix__9oysT{margin-left:2px}.Button-module_disabled__M6r1w{cursor:not-allowed;opacity:.4}.Button-module_svgOnly__8RcZ7{aspect-ratio:1/1;padding:0}.Checkbox-module_wrapper__5uqJp{align-items:center;display:flex;gap:var(--ds-spacing-5)}.Checkbox-module_checkbox__05Z5t{--cocso-checkbox-size:inherit;--cocso-checkbox-color:inherit;--cocso-checkbox-border-color:inherit;--cocso-checkbox-bg-color:inherit;align-items:center;background-color:var(--cocso-checkbox-bg-color);border:1px solid var(--cocso-checkbox-border-color);border-radius:4px;color:var(--cocso-checkbox-color);cursor:pointer;display:inline-flex;height:var(--cocso-checkbox-size);justify-content:center;opacity:1;position:relative;transition:color .15s ease-in-out,border-color .15s ease-in-out,background-color .15s ease-in-out;width:var(--cocso-checkbox-size)}.Checkbox-module_checkbox__05Z5t>svg{stroke:var(--cocso-checkbox-color);display:block;height:auto;max-width:100%;transition:stroke .15s ease-in-out}.Checkbox-module_checkbox__05Z5t input[type=checkbox]{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.Checkbox-module_indicator__MLpNt{bottom:var(--number-1);left:var(--number-1);position:absolute;right:var(--number-1);top:var(--number-1);transition:opacity .15s ease-in-out}.Checkbox-module_label__ubb5U{cursor:pointer;opacity:1}.Checkbox-module_checkbox__05Z5t[disabled],.Checkbox-module_label__ubb5U[aria-disabled=true]{cursor:not-allowed;opacity:.5}@keyframes Dropdown-module_dropdown-slide-up__2uVH3{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}@keyframes Dropdown-module_dropdown-slide-down__T5LLc{0%{opacity:0;transform:translateY(-2px)}to{opacity:1;transform:translateY(0)}}.Dropdown-module_content__S3TRi{background-color:var(--ds-color-white);border-radius:var(--ds-spacing-3);box-shadow:var(--ds-shadow-2);display:flex;flex-direction:column;will-change:transform,opacity;z-index:var(--ds-z-index-overlay)}.Dropdown-module_content__S3TRi[data-side=top]{animation:Dropdown-module_dropdown-slide-up__2uVH3 .4s cubic-bezier(.16,1,.3,1)}.Dropdown-module_content__S3TRi[data-side=bottom]{animation:Dropdown-module_dropdown-slide-down__T5LLc .4s cubic-bezier(.16,1,.3,1)}.Dropdown-module_item__MIltz{display:flex;flex-direction:column}.Link-module_link__J9CFb{align-items:center;cursor:pointer;display:inline-flex;gap:var(--ds-spacing-2);justify-content:center;text-decoration:none;transition:color .15s ease-in-out;width:fit-content}.Link-module_link__J9CFb>svg{flex-shrink:0;height:var(--ds-spacing-8);width:var(--ds-spacing-8)}.Link-module_indicator__DIUaW{text-decoration:underline}@keyframes Modal-module_overlay-show__zyvAx{0%{opacity:0}to{opacity:1}}.Modal-module_overlay__7ZBDB{animation:Modal-module_overlay-show__zyvAx .15s cubic-bezier(.16,1,.3,1);background-color:var(--ds-color-black-alpha-30);inset:0;position:fixed;z-index:var(--ds-z-index-overlay)}@keyframes Modal-module_content-show__anq3d{0%{opacity:0;transform:translate(-50%,-48%) scale(.997)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.Modal-module_content__M1b6Q{animation:Modal-module_content-show__anq3d .15s cubic-bezier(.16,1,.3,1);background-color:var(--ds-color-white);border-radius:8px;display:flex;flex-direction:column;left:50%;max-height:85vh;max-width:380px;padding:var(--ds-spacing-9);position:fixed;top:50%;transform:translate(-50%,-50%);width:90vw;z-index:var(--ds-z-index-modal)}.Modal-module_close__UbAF7{align-items:center;align-self:flex-end;cursor:pointer;display:flex;height:var(--ds-spacing-10);justify-content:center;width:var(--ds-spacing-10)}.Modal-module_title__oTluo{word-break:keep-all}.Modal-module_description__RgMC5{margin-top:var(--ds-spacing-5)}.MonthPicker-module_root__my2Kl{display:inline-block;transform:translateZ(0)}.MonthPicker-module_content__6glhz{gap:var(--ds-spacing-8);min-width:280px;padding:var(--ds-spacing-8)}.MonthPicker-module_header__7QguI{align-items:center;display:flex;justify-content:space-between}.MonthPicker-module_rotate__Y0yed{transform:rotate(180deg)}.MonthPicker-module_grid__kkn0v{border:none;display:grid;gap:var(--ds-spacing-5);grid-template-columns:repeat(3,1fr)}.OneTimePasswordField-module_otp__zoWO7{align-items:center;display:flex;gap:var(--ds-spacing-5)}.OneTimePasswordField-module_input__owV9H{align-items:center;background-color:var(--ds-color-neutral-50);border:none;border-radius:var(--ds-spacing-2);box-shadow:0 0 0 var(--ds-spacing-1,1px) var(--ds-color-neutral-50);color:var(--ds-color-neutral-950);display:inline-flex;flex:1;font-size:16px;font-weight:500;height:100%;justify-content:center;line-height:1;outline:none;text-align:center;text-transform:uppercase;transition:background-color .15s ease-in-out,box-shadow .15s ease-in-out;width:100%}.OneTimePasswordField-module_input__owV9H:focus,.OneTimePasswordField-module_input__owV9H:hover{box-shadow:0 0 0 var(--ds-spacing-1,1px) var(--ds-color-neutral-200)}.OneTimePasswordField-module_input__owV9H::selection{background-color:var(--ds-color-neutral-400)}.Pagination-module_pagination__viYLy{align-items:center;display:flex;gap:var(--ds-spacing-2);justify-content:center;margin-inline:auto}.Pagination-module_arrow__YYkob,.Pagination-module_item__uVIra{--cocso-pagination-font-color:var(--ds-color-text-primary);--cocso-pagination-font-weight:inherit;--cocso-pagination-bg-color:inherit;align-items:center;background-color:var(--cocso-pagination-bg-color);border-radius:var(--ds-spacing-5);color:var(--cocso-pagination-font-color);cursor:pointer;display:inline-flex;font-size:14px;font-weight:var(--cocso-pagination-font-weight);height:var(--ds-spacing-12);justify-content:center;transition:background-color .15s ease-in-out;width:var(--ds-spacing-12)}.Pagination-module_arrow__YYkob:disabled{cursor:not-allowed;opacity:.4}.Pagination-module_arrow__YYkob:not([disabled]):hover{--cocso-pagination-bg-color:var(--ds-color-neutral-50)}.Pagination-module_arrow__YYkob:not([disabled]):active{--cocso-pagination-bg-color:var(--ds-color-neutral-100)}.Pagination-module_arrow__YYkob>svg{flex-shrink:0;height:var(--ds-spacing-8);width:var(--ds-spacing-8)}.Pagination-module_item__uVIra[data-active=true]{--cocso-pagination-font-color:var(--ds-color-white);--cocso-pagination-bg-color:var(--ds-color-primary-500);--cocso-pagination-font-weight:600}.Pagination-module_item__uVIra[data-active=false]:hover{--cocso-pagination-bg-color:var(--ds-color-neutral-50)}.Pagination-module_item__uVIra[data-active=false]:active{--cocso-pagination-bg-color:var(--ds-color-neutral-100)}.Pagination-module_trunc__-ZgYQ{align-items:center;color:var(--ds-color-text-primary);display:inline-flex;font-size:16px;height:var(--ds-spacing-13);justify-content:center;width:var(--ds-spacing-13)}@keyframes Popover-module_slide-up-and-fade__adQar{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}@keyframes Popover-module_slide-right-and-fade__br3DV{0%{opacity:0;transform:translateX(-2px)}to{opacity:1;transform:translateX(0)}}@keyframes Popover-module_slide-down-and-fade__Lkl4N{0%{opacity:0;transform:translateY(-2px)}to{opacity:1;transform:translateY(0)}}@keyframes Popover-module_slide-left-and-fade__yHinG{0%{opacity:0;transform:translateX(2px)}to{opacity:1;transform:translateX(0)}}.Popover-module_content__ry9PF{animation-duration:.4s;animation-timing-function:cubic-bezier(.16,1,.3,1);background-color:var(--ds-color-white);border:1px solid var(--ds-color-neutral-100);border-radius:var(--ds-spacing-4);box-shadow:var(--ds-shadow-2);padding-block:var(--ds-spacing-6);padding-inline:var(--ds-spacing-8);will-change:transform,opacity}.Popover-module_content__ry9PF[data-state=open][data-side=top]{animation-name:Popover-module_slide-down-and-fade__Lkl4N}.Popover-module_content__ry9PF[data-state=open][data-side=right]{animation-name:Popover-module_slide-left-and-fade__yHinG}.Popover-module_content__ry9PF[data-state=open][data-side=bottom]{animation-name:Popover-module_slide-up-and-fade__adQar}.Popover-module_content__ry9PF[data-state=open][data-side=left]{animation-name:Popover-module_slide-right-and-fade__br3DV}.Select-module_wrapper__4k8By{cursor:pointer;position:relative;width:fit-content}.Select-module_wrapper__4k8By.Select-module_stretch__2KlaW,.Select-module_wrapper__4k8By.Select-module_stretch__2KlaW .Select-module_select__MUUdH{width:100%}.Select-module_select__MUUdH{--cocso-select-min-width:inherit;--cocso-select-height:inherit;--cocso-select-padding-left:inherit;--cocso-select-padding-right:inherit;--cocso-select-font-size:inherit;--cocso-select-border-radius:inherit;--cocso-select-bg-color:var(--ds-color-white);appearance:none;-o-appearance:none;-moz-appearance:none;-webkit-appearance:none;background-color:var(--cocso-select-bg-color);border:1px solid var(--ds-color-neutral-100);border-radius:var(--cocso-select-border-radius);color:var(--ds-color-neutral-950);font-size:var(--cocso-select-font-size);height:var(--cocso-select-height);min-width:var(--cocso-select-min-width);padding-left:var(--cocso-select-padding-left);padding-right:var(--cocso-select-padding-right)}.Select-module_wrapper__4k8By.Select-module_disabled__JO7OG{cursor:not-allowed}.Select-module_wrapper__4k8By.Select-module_disabled__JO7OG .Select-module_select__MUUdH{cursor:not-allowed;opacity:.4}.Select-module_icon__EuBJI{color:var(--ds-color-neutral-500);pointer-events:none;position:absolute;right:var(--ds-spacing-5);top:50%;transform:translateY(-50%)}.Select-module_wrapper__4k8By.Select-module_disabled__JO7OG .Select-module_icon__EuBJI{cursor:not-allowed;opacity:.4}.StockQuantityStatus-module_stock__mWbqI{--cocso-stock-quantity-status-color:inherit;align-items:center;color:var(--cocso-stock-quantity-status-color);display:inline-flex;gap:var(--ds-spacing-2)}.StockQuantityStatus-module_indicator__inaKv{--cocso-stock-quantity-status-indicator-width:inherit;flex-shrink:0;height:auto;width:var(--cocso-stock-quantity-status-indicator-width)}.StockQuantityStatus-module_indicator__inaKv>svg{height:100%;width:100%}.Switch-module_wrapper__qcI9-{align-items:center;display:flex;gap:var(--ds-spacing-5)}.Switch-module_wrapper__qcI9-[aria-disabled=true]{cursor:not-allowed;opacity:.4}.Switch-module_switch__pwmft{--cocso-switch-width:inherit;--cocso-switch-height:inherit;--cocso-switch-bg-color:inherit;background-color:var(--cocso-switch-bg-color);border-radius:var(--ds-spacing-max);cursor:pointer;height:var(--cocso-switch-height);opacity:1;position:relative;width:var(--cocso-switch-width)}.Switch-module_switch__pwmft[data-disabled=true],.Switch-module_switch__pwmft[disabled]{cursor:not-allowed;opacity:.4}.Switch-module_switch__pwmft[data-state=checked]{--cocso-switch-bg-color:var(--ds-color-primary-500)}.Switch-module_thumb__pQGDy{--cocso-switch-thumb-width:inherit;--cocso-switch-thumb-height:inherit;background-color:var(--ds-color-white);border-radius:var(--ds-spacing-max);display:block;height:var(--cocso-switch-thumb-width);transform:translateX(var(--ds-spacing-2));transition:transform .15s ease;width:var(--cocso-switch-thumb-width);will-change:transform}.Switch-module_thumb__pQGDy[data-state=checked]{transform:translateX(calc(var(--cocso-switch-width) - var(--cocso-switch-thumb-width) - var(--ds-spacing-2)))}
1
+ .Accordion-module_content__V9Ftc,.Accordion-module_item__iE3dq{overflow:hidden}.Accordion-module_content__V9Ftc[data-state=open]{animation:Accordion-module_slide-down__88c3a .3s cubic-bezier(.87,0,.13,1)}.Accordion-module_content__V9Ftc[data-state=closed]{animation:Accordion-module_slide-up__hbYw7 .3s cubic-bezier(.87,0,.13,1)}.Accordion-module_trigger__6nu7o{cursor:pointer;display:flex;justify-content:space-between;width:100%}.Accordion-module_chevron__oFGVg{display:inline-block;height:var(--ds-spacing-10);transition:transform .2s ease-in-out;width:var(--ds-spacing-10)}.Accordion-module_trigger__6nu7o[data-state=closed]>.Accordion-module_chevron__oFGVg{transform:rotate(0deg)}.Accordion-module_trigger__6nu7o[data-state=open]>.Accordion-module_chevron__oFGVg{transform:rotate(180deg)}@keyframes Accordion-module_slide-up__hbYw7{0%{height:var(--radix-accordion-content-height)}to{height:0}}@keyframes Accordion-module_slide-down__88c3a{0%{height:0}to{height:var(--radix-accordion-content-height)}}.Typography-module_typography__45lnt{--cocso-typography-font-color:inherit;--cocso-typography-font-size:inherit;--cocso-typography-font-weight:inherit;--cocso-typography-line-height:inherit;color:var(--cocso-typography-font-color);font-size:var(--cocso-typography-font-size);font-weight:var(--cocso-typography-font-weight);line-height:var(--cocso-typography-line-height)}.Typography-module_typography__45lnt[aria-disabled=true]{cursor:not-allowed;opacity:.4}@media (min-width:768px){.Typography-module_typography__45lnt{font-size:var(--cocso-tablet-typography-font-size,var(--cocso-typography-font-size))}}@media (min-width:1024px){.Typography-module_typography__45lnt{font-size:var(--cocso-desktop-typography-font-size,var(--cocso-tablet-typography-font-size,var(--cocso-typography-font-size)))}}.Badge-module_badge__ikDSa{--cocso-badge-padding:inherit;--cocso-badge-border-radius:inherit;--cocso-badge-bg-color:inherit;background-color:var(--cocso-badge-bg-color);border-radius:var(--cocso-badge-border-radius);display:inline-flex;padding:var(--cocso-badge-padding);user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}@keyframes Spinner-module_donut-spin__cBa-F{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.Spinner-module_spinner__iIx6p{--cocso-spinner-size:inherit;--cocso-spinner-border-width:inherit;--cocso-spinner-border-color:inherit;--cocso-spinner-bg-color:inherit;animation:Spinner-module_donut-spin__cBa-F .5s linear infinite;border:var(--cocso-spinner-border-width) solid var(--cocso-spinner-bg-color);border-radius:50%;border-top-color:var(--cocso-spinner-border-color);display:inline-block;height:var(--cocso-spinner-size);position:relative;transform-origin:center center;width:var(--cocso-spinner-size)}.Button-module_button__eiKKZ{--cocso-button-height:inherit;--cocso-button-padding-inline:inherit;--cocso-button-content-padding:inherit;--cocso-button-font-color:inherit;--cocso-button-font-size:inherit;--cocso-button-font-weight:inherit;--cocso-button-border:inherit;--cocso-button-border-radius:inherit;--cocso-button-bg-color:inherit;align-items:center;background-color:var(--cocso-button-bg-color);border:var(--cocso-button-border);border-radius:var(--cocso-button-border-radius);color:var(--cocso-button-font-color);cursor:pointer;display:inline-flex;font-size:var(--cocso-button-font-size);font-weight:var(--cocso-button-font-weight);height:var(--cocso-button-height);justify-content:center;opacity:1;padding-inline:var(--cocso-button-padding-inline);position:relative;transform:translateZ(0);transition:background-color .15s ease-in-out}.Button-module_button__eiKKZ:not(.Button-module_disabled__M6r1w):hover{--cocso-button-bg-color-hover:inherit;background-color:var(--cocso-button-bg-color-hover)}.Button-module_button__eiKKZ:not(.Button-module_disabled__M6r1w):active{--cocso-button-bg-color-active:inherit;background-color:var(--cocso-button-bg-color-active)}.Button-module_content__SVjwi{padding:var(--cocso-button-content-padding)}.Button-module_prefix__d7ljt{margin-right:2px}.Button-module_prefix__d7ljt,.Button-module_suffix__9oysT{align-items:center;display:inline-flex;flex-shrink:0;justify-content:center}.Button-module_suffix__9oysT{margin-left:2px}.Button-module_disabled__M6r1w{cursor:not-allowed;opacity:.4}.Button-module_svgOnly__8RcZ7{aspect-ratio:1/1;padding:0}.Checkbox-module_wrapper__5uqJp{align-items:center;display:flex;gap:var(--ds-spacing-5)}.Checkbox-module_checkbox__05Z5t{--cocso-checkbox-size:inherit;--cocso-checkbox-color:inherit;--cocso-checkbox-border-color:inherit;--cocso-checkbox-bg-color:inherit;align-items:center;background-color:var(--cocso-checkbox-bg-color);border:1px solid var(--cocso-checkbox-border-color);border-radius:4px;color:var(--cocso-checkbox-color);cursor:pointer;display:inline-flex;height:var(--cocso-checkbox-size);justify-content:center;opacity:1;position:relative;transition:color .15s ease-in-out,border-color .15s ease-in-out,background-color .15s ease-in-out;width:var(--cocso-checkbox-size)}.Checkbox-module_checkbox__05Z5t>svg{stroke:var(--cocso-checkbox-color);display:block;height:auto;max-width:100%;transition:stroke .15s ease-in-out}.Checkbox-module_checkbox__05Z5t input[type=checkbox]{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.Checkbox-module_indicator__MLpNt{bottom:var(--number-1);left:var(--number-1);position:absolute;right:var(--number-1);top:var(--number-1);transition:opacity .15s ease-in-out}.Checkbox-module_label__ubb5U{cursor:pointer;opacity:1}.Checkbox-module_checkbox__05Z5t[disabled],.Checkbox-module_label__ubb5U[aria-disabled=true]{cursor:not-allowed;opacity:.5}@keyframes Dropdown-module_dropdown-slide-up__2uVH3{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}@keyframes Dropdown-module_dropdown-slide-down__T5LLc{0%{opacity:0;transform:translateY(-2px)}to{opacity:1;transform:translateY(0)}}.Dropdown-module_content__S3TRi{background-color:var(--ds-color-white);border-radius:var(--ds-spacing-3);box-shadow:var(--ds-shadow-2);display:flex;flex-direction:column;will-change:transform,opacity;z-index:var(--ds-z-index-overlay)}.Dropdown-module_content__S3TRi[data-side=top]{animation:Dropdown-module_dropdown-slide-up__2uVH3 .4s cubic-bezier(.16,1,.3,1)}.Dropdown-module_content__S3TRi[data-side=bottom]{animation:Dropdown-module_dropdown-slide-down__T5LLc .4s cubic-bezier(.16,1,.3,1)}.Dropdown-module_item__MIltz{display:flex;flex-direction:column}.DayPicker-module_root__lDrAw{display:inline-block;transform:translateZ(0)}.DayPicker-module_content__VVh4Y{min-width:260px;overflow:hidden}.DayPicker-module_backButton__jYW7L{transform:rotate(180deg)}.DayPicker-module_sunday__RaZuV{color:var(--ds-color-danger-600)!important}.DayPicker-module_saturday__e-AQO{color:var(--ds-color-primary-600)!important}.react-datepicker__month-container{padding-block:var(--ds-spacing-8);width:100%}.react-datepicker__day-names{text-align:center;white-space:nowrap}.react-datepicker__day,.react-datepicker__day-name{color:var(--ds-color-text-primary);display:inline-block;line-height:1.7rem;margin:.166rem;text-align:center;width:1.7rem}.react-datepicker__day{border-radius:8px;cursor:pointer;font-weight:500}.react-datepicker__day:hover{background-color:var(--ds-color-neutral-50)}.react-datepicker__day--selected{background-color:var(--ds-color-primary-500);color:var(--ds-color-white)!important}.react-datepicker__day--selected:hover{background-color:var(--ds-color-primary-600)!important}.react-datepicker__day-name:first-child{color:var(--ds-color-danger-600)}.react-datepicker__day-name:nth-child(7){color:var(--ds-color-primary-600)}.react-datepicker__day--disabled{cursor:not-allowed;opacity:.3}.Link-module_link__J9CFb{align-items:center;cursor:pointer;display:inline-flex;gap:var(--ds-spacing-2);justify-content:center;text-decoration:none;transition:color .15s ease-in-out;width:fit-content}.Link-module_link__J9CFb>svg{flex-shrink:0;height:var(--ds-spacing-8);width:var(--ds-spacing-8)}.Link-module_indicator__DIUaW{text-decoration:underline}@keyframes Modal-module_overlay-show__zyvAx{0%{opacity:0}to{opacity:1}}.Modal-module_overlay__7ZBDB{animation:Modal-module_overlay-show__zyvAx .15s cubic-bezier(.16,1,.3,1);background-color:var(--ds-color-black-alpha-30);inset:0;position:fixed;z-index:var(--ds-z-index-overlay)}@keyframes Modal-module_content-show__anq3d{0%{opacity:0;transform:translate(-50%,-48%) scale(.997)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.Modal-module_content__M1b6Q{animation:Modal-module_content-show__anq3d .15s cubic-bezier(.16,1,.3,1);background-color:var(--ds-color-white);border-radius:8px;display:flex;flex-direction:column;left:50%;max-height:85vh;max-width:380px;padding:var(--ds-spacing-9);position:fixed;top:50%;transform:translate(-50%,-50%);width:90vw;z-index:var(--ds-z-index-modal)}.Modal-module_close__UbAF7{align-items:center;align-self:flex-end;cursor:pointer;display:flex;height:var(--ds-spacing-10);justify-content:center;width:var(--ds-spacing-10)}.Modal-module_title__oTluo{word-break:keep-all}.Modal-module_description__RgMC5{margin-top:var(--ds-spacing-5)}.MonthPicker-module_root__my2Kl{display:inline-block;transform:translateZ(0)}.MonthPicker-module_content__6glhz{min-width:260px;overflow:hidden}.MonthPicker-module_backButton__Mplxj{transform:rotate(180deg)}.react-datepicker{background-color:var(--ds-color-white);color:var(--ds-color-text-primary);display:inline-block;font-size:.8rem;padding-inline:var(--ds-spacing-8);position:relative}.react-datepicker__aria-live{height:1px;left:-10000px;overflow:hidden;position:absolute;top:auto;width:1px}.react-datepicker__sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.react-datepicker__header--custom{align-items:center;display:flex;justify-content:space-between;padding-bottom:var(--ds-spacing-5);width:100%}.react-datepicker__week{text-align:center;white-space:nowrap}.react-datepicker__month{display:flex;flex-direction:column;gap:var(--ds-spacing-5)}.react-datepicker__month-wrapper{align-items:center;display:flex;gap:var(--ds-spacing-5);justify-content:space-between}.react-datepicker__month-text{align-items:center;border-radius:8px;color:var(--ds-color-text-primary);cursor:pointer;display:flex;flex:1;font-size:14px;font-weight:500;height:40px;justify-content:center}.react-datepicker__month-text:hover{background-color:var(--ds-color-neutral-50)}.react-datepicker__month-text--selected{background-color:var(--ds-color-primary-500);color:var(--ds-color-white);font-weight:600}.OneTimePasswordField-module_otp__zoWO7{align-items:center;display:flex;gap:var(--ds-spacing-5)}.OneTimePasswordField-module_input__owV9H{align-items:center;background-color:var(--ds-color-neutral-50);border:none;border-radius:var(--ds-spacing-2);box-shadow:0 0 0 var(--ds-spacing-1,1px) var(--ds-color-neutral-50);color:var(--ds-color-neutral-950);display:inline-flex;flex:1;font-size:16px;font-weight:500;height:100%;justify-content:center;line-height:1;outline:none;text-align:center;text-transform:uppercase;transition:background-color .15s ease-in-out,box-shadow .15s ease-in-out;width:100%}.OneTimePasswordField-module_input__owV9H:focus,.OneTimePasswordField-module_input__owV9H:hover{box-shadow:0 0 0 var(--ds-spacing-1,1px) var(--ds-color-neutral-200)}.OneTimePasswordField-module_input__owV9H::selection{background-color:var(--ds-color-neutral-400)}.Pagination-module_pagination__viYLy{align-items:center;display:flex;gap:var(--ds-spacing-2);justify-content:center;margin-inline:auto}.Pagination-module_arrow__YYkob,.Pagination-module_item__uVIra{--cocso-pagination-font-color:var(--ds-color-text-primary);--cocso-pagination-font-weight:inherit;--cocso-pagination-bg-color:inherit;align-items:center;background-color:var(--cocso-pagination-bg-color);border-radius:var(--ds-spacing-5);color:var(--cocso-pagination-font-color);cursor:pointer;display:inline-flex;font-size:14px;font-weight:var(--cocso-pagination-font-weight);height:var(--ds-spacing-12);justify-content:center;transition:background-color .15s ease-in-out;width:var(--ds-spacing-12)}.Pagination-module_arrow__YYkob:disabled{cursor:not-allowed;opacity:.4}.Pagination-module_arrow__YYkob:not([disabled]):hover{--cocso-pagination-bg-color:var(--ds-color-neutral-50)}.Pagination-module_arrow__YYkob:not([disabled]):active{--cocso-pagination-bg-color:var(--ds-color-neutral-100)}.Pagination-module_arrow__YYkob>svg{flex-shrink:0;height:var(--ds-spacing-8);width:var(--ds-spacing-8)}.Pagination-module_item__uVIra[data-active=true]{--cocso-pagination-font-color:var(--ds-color-white);--cocso-pagination-bg-color:var(--ds-color-primary-500);--cocso-pagination-font-weight:600}.Pagination-module_item__uVIra[data-active=false]:hover{--cocso-pagination-bg-color:var(--ds-color-neutral-50)}.Pagination-module_item__uVIra[data-active=false]:active{--cocso-pagination-bg-color:var(--ds-color-neutral-100)}.Pagination-module_trunc__-ZgYQ{align-items:center;color:var(--ds-color-text-primary);display:inline-flex;font-size:16px;height:var(--ds-spacing-13);justify-content:center;width:var(--ds-spacing-13)}@keyframes Popover-module_slide-up-and-fade__adQar{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}@keyframes Popover-module_slide-right-and-fade__br3DV{0%{opacity:0;transform:translateX(-2px)}to{opacity:1;transform:translateX(0)}}@keyframes Popover-module_slide-down-and-fade__Lkl4N{0%{opacity:0;transform:translateY(-2px)}to{opacity:1;transform:translateY(0)}}@keyframes Popover-module_slide-left-and-fade__yHinG{0%{opacity:0;transform:translateX(2px)}to{opacity:1;transform:translateX(0)}}.Popover-module_content__ry9PF{animation-duration:.4s;animation-timing-function:cubic-bezier(.16,1,.3,1);background-color:var(--ds-color-white);border:1px solid var(--ds-color-neutral-100);border-radius:var(--ds-spacing-4);box-shadow:var(--ds-shadow-2);padding-block:var(--ds-spacing-6);padding-inline:var(--ds-spacing-8);will-change:transform,opacity}.Popover-module_content__ry9PF[data-state=open][data-side=top]{animation-name:Popover-module_slide-down-and-fade__Lkl4N}.Popover-module_content__ry9PF[data-state=open][data-side=right]{animation-name:Popover-module_slide-left-and-fade__yHinG}.Popover-module_content__ry9PF[data-state=open][data-side=bottom]{animation-name:Popover-module_slide-up-and-fade__adQar}.Popover-module_content__ry9PF[data-state=open][data-side=left]{animation-name:Popover-module_slide-right-and-fade__br3DV}.Select-module_wrapper__4k8By{cursor:pointer;position:relative;width:fit-content}.Select-module_wrapper__4k8By.Select-module_stretch__2KlaW,.Select-module_wrapper__4k8By.Select-module_stretch__2KlaW .Select-module_select__MUUdH{width:100%}.Select-module_select__MUUdH{--cocso-select-min-width:inherit;--cocso-select-height:inherit;--cocso-select-padding-left:inherit;--cocso-select-padding-right:inherit;--cocso-select-font-size:inherit;--cocso-select-border-radius:inherit;--cocso-select-bg-color:var(--ds-color-white);appearance:none;-o-appearance:none;-moz-appearance:none;-webkit-appearance:none;background-color:var(--cocso-select-bg-color);border:1px solid var(--ds-color-neutral-100);border-radius:var(--cocso-select-border-radius);color:var(--ds-color-neutral-950);font-size:var(--cocso-select-font-size);height:var(--cocso-select-height);min-width:var(--cocso-select-min-width);padding-left:var(--cocso-select-padding-left);padding-right:var(--cocso-select-padding-right)}.Select-module_wrapper__4k8By.Select-module_disabled__JO7OG{cursor:not-allowed}.Select-module_wrapper__4k8By.Select-module_disabled__JO7OG .Select-module_select__MUUdH{cursor:not-allowed;opacity:.4}.Select-module_icon__EuBJI{color:var(--ds-color-neutral-500);pointer-events:none;position:absolute;right:var(--ds-spacing-5);top:50%;transform:translateY(-50%)}.Select-module_wrapper__4k8By.Select-module_disabled__JO7OG .Select-module_icon__EuBJI{cursor:not-allowed;opacity:.4}.StockQuantityStatus-module_stock__mWbqI{--cocso-stock-quantity-status-color:inherit;align-items:center;color:var(--cocso-stock-quantity-status-color);display:inline-flex;gap:var(--ds-spacing-2)}.StockQuantityStatus-module_indicator__inaKv{--cocso-stock-quantity-status-indicator-width:inherit;flex-shrink:0;height:auto;width:var(--cocso-stock-quantity-status-indicator-width)}.StockQuantityStatus-module_indicator__inaKv>svg{height:100%;width:100%}.Switch-module_wrapper__qcI9-{align-items:center;display:flex;gap:var(--ds-spacing-5)}.Switch-module_wrapper__qcI9-[aria-disabled=true]{cursor:not-allowed;opacity:.4}.Switch-module_switch__pwmft{--cocso-switch-width:inherit;--cocso-switch-height:inherit;--cocso-switch-bg-color:inherit;background-color:var(--cocso-switch-bg-color);border-radius:var(--ds-spacing-max);cursor:pointer;height:var(--cocso-switch-height);opacity:1;position:relative;width:var(--cocso-switch-width)}.Switch-module_switch__pwmft[data-disabled=true],.Switch-module_switch__pwmft[disabled]{cursor:not-allowed;opacity:.4}.Switch-module_switch__pwmft[data-state=checked]{--cocso-switch-bg-color:var(--ds-color-primary-500)}.Switch-module_thumb__pQGDy{--cocso-switch-thumb-width:inherit;--cocso-switch-thumb-height:inherit;background-color:var(--ds-color-white);border-radius:var(--ds-spacing-max);display:block;height:var(--cocso-switch-thumb-width);transform:translateX(var(--ds-spacing-2));transition:transform .15s ease;width:var(--cocso-switch-thumb-width);will-change:transform}.Switch-module_thumb__pQGDy[data-state=checked]{transform:translateX(calc(var(--cocso-switch-width) - var(--cocso-switch-thumb-width) - var(--ds-spacing-2)))}
@@ -2,6 +2,7 @@ export { Accordion } from './accordion/Accordion.mjs';
2
2
  export { Badge, BadgeProps } from './badge/Badge.mjs';
3
3
  export { Button, ButtonProps, ButtonShape, ButtonSize, ButtonVariant } from './button/Button.mjs';
4
4
  export { Checkbox, CheckboxProps, CheckboxSize, CheckboxStatus } from './checkbox/Checkbox.mjs';
5
+ export { DayPicker, DayPickerProps } from './day-picker/DayPicker.mjs';
5
6
  export { Dropdown } from './dropdown/Dropdown.mjs';
6
7
  export { Link, LinkProps, LinkSize } from './link/Link.mjs';
7
8
  export { Modal } from './modal/Modal.mjs';
@@ -2,6 +2,7 @@ export { Accordion } from './accordion/Accordion.mjs';
2
2
  export { Badge } from './badge/Badge.mjs';
3
3
  export { Button } from './button/Button.mjs';
4
4
  export { Checkbox } from './checkbox/Checkbox.mjs';
5
+ export { DayPicker } from './day-picker/DayPicker.mjs';
5
6
  export { Dropdown } from './dropdown/Dropdown.mjs';
6
7
  export { Link } from './link/Link.mjs';
7
8
  export { Modal } from './modal/Modal.mjs';
@@ -3,9 +3,10 @@ import { ComponentPropsWithoutRef } from 'react';
3
3
 
4
4
  interface MonthPickerProps extends ComponentPropsWithoutRef<'div'> {
5
5
  value?: Date;
6
- onValueChange?: (value: Date | undefined) => void;
7
- minYear?: number;
8
- maxYear?: number;
6
+ onValueChange?: (value: Date | null) => void;
7
+ minDate?: Date;
8
+ maxDate?: Date;
9
+ disabled?: boolean;
9
10
  }
10
11
  declare const MonthPicker: react.ForwardRefExoticComponent<MonthPickerProps & react.RefAttributes<HTMLDivElement>>;
11
12
 
@@ -1,97 +1,85 @@
1
1
  "use client";
2
2
  import { ArrowIOSForwardIcon } from '@cocso-ui/react-icons';
3
3
  import { clsx } from 'clsx';
4
+ import { ko } from 'date-fns/locale';
4
5
  import { forwardRef, useState } from 'react';
6
+ import DatePicker from 'react-datepicker';
5
7
  import styles from './MonthPicker.module.css.mjs';
6
- import { jsx, jsxs } from 'react/jsx-runtime';
8
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
7
9
  import { Dropdown } from '../dropdown/Dropdown.mjs';
8
10
  import { Button } from '../button/Button.mjs';
9
11
  import { Typography } from '../typography/Typography.mjs';
10
12
 
11
- const MONTHS = ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'];
12
13
  const MonthPicker = /*#__PURE__*/forwardRef(({
13
14
  className,
14
15
  value,
15
16
  onValueChange,
16
- minYear = 1900,
17
- maxYear = 2100,
18
17
  children,
18
+ minDate,
19
+ maxDate,
20
+ disabled,
19
21
  ...props
20
22
  }, ref) => {
21
23
  const [open, setOpen] = useState(false);
22
- const [displayYear, setDisplayYear] = useState(value?.getFullYear() ?? new Date().getFullYear());
23
- const handleMonthSelect = month => {
24
- const newValue = new Date(displayYear, month - 1, 1);
25
- onValueChange?.(newValue);
24
+ const handleChange = date => {
25
+ onValueChange?.(date);
26
26
  setOpen(false);
27
27
  };
28
- const handleYearChange = year => {
29
- const clampedYear = Math.max(minYear, Math.min(maxYear, year));
30
- setDisplayYear(clampedYear);
31
- };
32
- const handleOpenChange = isOpen => {
33
- if (isOpen) {
34
- setDisplayYear(value?.getFullYear() ?? new Date().getFullYear());
35
- }
36
- setOpen(isOpen);
37
- };
38
28
  return /*#__PURE__*/jsx("div", {
39
29
  ref: ref,
40
30
  className: clsx(styles.root, className),
41
31
  ...props,
42
32
  children: /*#__PURE__*/jsxs(Dropdown, {
43
33
  open: open,
44
- onOpenChange: handleOpenChange,
34
+ onOpenChange: setOpen,
45
35
  children: [/*#__PURE__*/jsx(Dropdown.Trigger, {
46
36
  asChild: true,
47
37
  children: children
48
38
  }), /*#__PURE__*/jsx(Dropdown.Portal, {
49
- children: /*#__PURE__*/jsxs(Dropdown.Content, {
39
+ children: /*#__PURE__*/jsx(Dropdown.Content, {
50
40
  className: styles.content,
51
- role: "listbox",
52
- "aria-label": "\uC6D4 \uC120\uD0DD",
53
- children: [/*#__PURE__*/jsxs("div", {
54
- className: styles.header,
55
- children: [/*#__PURE__*/jsx(Button, {
56
- type: "button",
57
- size: "xs",
58
- variant: "secondary",
59
- onClick: () => handleYearChange(displayYear - 1),
60
- disabled: displayYear <= minYear,
61
- svgOnly: true,
62
- "aria-label": "\uC774\uC804 \uB144\uB3C4",
63
- children: /*#__PURE__*/jsx(ArrowIOSForwardIcon, {
64
- className: styles.rotate
65
- })
66
- }), /*#__PURE__*/jsxs(Typography, {
67
- type: "body",
68
- weight: "semibold",
69
- children: [displayYear, "\uB144"]
70
- }), /*#__PURE__*/jsx(Button, {
71
- type: "button",
72
- size: "xs",
73
- variant: "secondary",
74
- onClick: () => handleYearChange(displayYear + 1),
75
- disabled: displayYear >= maxYear,
76
- "aria-label": "\uB2E4\uC74C \uB144\uB3C4",
77
- children: /*#__PURE__*/jsx(ArrowIOSForwardIcon, {})
78
- })]
79
- }), /*#__PURE__*/jsx("div", {
80
- className: styles.grid,
81
- children: MONTHS.map((month, index) => {
82
- const monthNumber = index + 1;
83
- const isSelected = value?.getFullYear() === displayYear && value?.getMonth() === monthNumber - 1;
84
- return /*#__PURE__*/jsx(Button, {
41
+ children: /*#__PURE__*/jsx(DatePicker, {
42
+ selected: value,
43
+ onChange: handleChange,
44
+ disabled: disabled,
45
+ locale: ko,
46
+ minDate: minDate,
47
+ maxDate: maxDate,
48
+ dateFormat: "yyyy\uB144 MM\uC6D4 dd\uC77C",
49
+ showPopperArrow: false,
50
+ renderCustomHeader: ({
51
+ date,
52
+ decreaseYear,
53
+ increaseYear,
54
+ prevYearButtonDisabled,
55
+ nextYearButtonDisabled
56
+ }) => /*#__PURE__*/jsxs(Fragment, {
57
+ children: [/*#__PURE__*/jsx(Button, {
58
+ type: "button",
59
+ variant: "secondary",
60
+ size: "xs",
61
+ onClick: decreaseYear,
62
+ disabled: prevYearButtonDisabled,
63
+ className: styles.backButton,
64
+ children: /*#__PURE__*/jsx(ArrowIOSForwardIcon, {})
65
+ }), /*#__PURE__*/jsx(Typography, {
66
+ type: "body",
67
+ weight: "semibold",
68
+ children: date.toLocaleDateString('ko-KR', {
69
+ year: 'numeric'
70
+ })
71
+ }), /*#__PURE__*/jsx(Button, {
85
72
  type: "button",
86
- variant: isSelected ? 'tertiary' : 'secondary',
87
- onClick: () => handleMonthSelect(monthNumber),
88
- role: "option",
89
- "aria-selected": isSelected,
90
- "aria-label": `${month} 선택`,
91
- children: month
92
- }, month);
93
- })
94
- })]
73
+ variant: "secondary",
74
+ size: "xs",
75
+ onClick: increaseYear,
76
+ disabled: nextYearButtonDisabled,
77
+ children: /*#__PURE__*/jsx(ArrowIOSForwardIcon, {})
78
+ })]
79
+ }),
80
+ inline: true,
81
+ showMonthYearPicker: true
82
+ })
95
83
  })
96
84
  })]
97
85
  })
@@ -1,3 +1,3 @@
1
- var styles = {"root":"MonthPicker-module_root__my2Kl","content":"MonthPicker-module_content__6glhz","header":"MonthPicker-module_header__7QguI","rotate":"MonthPicker-module_rotate__Y0yed","grid":"MonthPicker-module_grid__kkn0v"};
1
+ var styles = {"root":"MonthPicker-module_root__my2Kl","content":"MonthPicker-module_content__6glhz","backButton":"MonthPicker-module_backButton__Mplxj"};
2
2
 
3
3
  export { styles as default };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cocso-ui/react",
3
- "version": "0.2.12",
3
+ "version": "0.2.14",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/cocso/cocso-ui.git",
@@ -37,10 +37,11 @@
37
37
  "@radix-ui/react-switch": "^1.2.6",
38
38
  "@radix-ui/react-tabs": "^1.1.13",
39
39
  "clsx": "^2.1.1",
40
- "rollup-plugin-preserve-directives": "^0.4.0",
40
+ "date-fns": "^4.1.0",
41
+ "react-datepicker": "^8.7.0",
41
42
  "sonner": "^2.0.7",
42
43
  "ts-pattern": "^5.8.0",
43
- "@cocso-ui/react-icons": "^0.1.2"
44
+ "@cocso-ui/react-icons": "^0.1.3"
44
45
  },
45
46
  "devDependencies": {
46
47
  "@babel/preset-react": "^7.27.1",
@@ -48,18 +49,18 @@
48
49
  "@rollup/plugin-babel": "^6.0.4",
49
50
  "@rollup/plugin-commonjs": "^28.0.6",
50
51
  "@rollup/plugin-node-resolve": "^16.0.1",
51
- "@storybook/react": "^9.1.5",
52
- "@types/react": "^19.1.12",
52
+ "@storybook/react": "^9.1.6",
53
+ "@types/react": "^19.1.13",
53
54
  "@types/react-dom": "^19.1.9",
54
55
  "react": "^19.1.1",
55
- "rollup": "^4.50.1",
56
+ "rollup": "^4.50.2",
56
57
  "rollup-plugin-dts": "^6.2.3",
57
58
  "rollup-plugin-postcss": "^4.0.2",
59
+ "rollup-plugin-preserve-directives": "^0.4.0",
58
60
  "typescript": "^5.9.2"
59
61
  },
60
62
  "peerDependencies": {
61
- "react": "^19.1.1",
62
- "react-dom": "^19.1.1"
63
+ "react": "^19.1.1"
63
64
  },
64
65
  "publishConfig": {
65
66
  "access": "public"