@loword/loword-design-system 0.0.4 → 0.0.6
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/index.css +9 -0
- package/package.json +6 -3
- package/src/styles/carousel.css +9 -0
- package/src/styles/color.css +185 -0
- package/src/styles/components/badge.css +41 -0
- package/src/styles/components/bread-crumb.css +23 -0
- package/src/styles/components/button.css +183 -0
- package/src/styles/components/editor.css +147 -0
- package/src/styles/components/icon.css +29 -0
- package/src/styles/components/index.css +9 -0
- package/src/styles/components/input.css +52 -0
- package/src/styles/components/modal.css +25 -0
- package/src/styles/components/shared.css +52 -0
- package/src/styles/components/spinner.css +38 -0
- package/src/styles/focus.css +12 -0
- package/src/styles/gradient.css +41 -0
- package/src/styles/layout.css +19 -0
- package/src/styles/motion.css +235 -0
- package/src/styles/radius.css +8 -0
- package/src/styles/responsive.css +42 -0
- package/src/styles/scrollbar.css +59 -0
- package/src/styles/slider.css +65 -0
- package/src/styles/spacing.css +592 -0
- package/src/styles/text-utils.css +7 -0
- package/src/styles/typography.css +171 -0
- package/src/theme.css +19 -0
- package/dist/components/Avatar/Avatar.d.ts +0 -11
- package/dist/components/Avatar/Avatar.d.ts.map +0 -1
- package/dist/components/Avatar/Avatar.js +0 -24
- package/dist/components/Avatar/AvatarBase.d.ts +0 -32
- package/dist/components/Avatar/AvatarBase.d.ts.map +0 -1
- package/dist/components/Avatar/AvatarBase.js +0 -49
- package/dist/components/Badge/Badge.d.ts +0 -25
- package/dist/components/Badge/Badge.d.ts.map +0 -1
- package/dist/components/Badge/Badge.js +0 -36
- package/dist/components/Badge/BadgeBase.d.ts +0 -10
- package/dist/components/Badge/BadgeBase.d.ts.map +0 -1
- package/dist/components/Badge/BadgeBase.js +0 -9
- package/dist/components/BreadCrumb/BreadCrumb.d.ts +0 -17
- package/dist/components/BreadCrumb/BreadCrumb.d.ts.map +0 -1
- package/dist/components/BreadCrumb/BreadCrumb.js +0 -37
- package/dist/components/BreadCrumb/BreadCrumbBase.d.ts +0 -9
- package/dist/components/BreadCrumb/BreadCrumbBase.d.ts.map +0 -1
- package/dist/components/BreadCrumb/BreadCrumbBase.js +0 -17
- package/dist/components/Button/Button.d.ts +0 -26
- package/dist/components/Button/Button.d.ts.map +0 -1
- package/dist/components/Button/Button.js +0 -102
- package/dist/components/Button/ButtonBase.d.ts +0 -5
- package/dist/components/Button/ButtonBase.d.ts.map +0 -1
- package/dist/components/Button/ButtonBase.js +0 -10
- package/dist/components/Button/ButtonSpinner.d.ts +0 -8
- package/dist/components/Button/ButtonSpinner.d.ts.map +0 -1
- package/dist/components/Button/ButtonSpinner.js +0 -15
- package/dist/components/Calendar/Calendar.d.ts +0 -16
- package/dist/components/Calendar/Calendar.d.ts.map +0 -1
- package/dist/components/Calendar/Calendar.js +0 -75
- package/dist/components/Callout/Callout.d.ts +0 -10
- package/dist/components/Callout/Callout.d.ts.map +0 -1
- package/dist/components/Callout/Callout.js +0 -6
- package/dist/components/Callout/CalloutBase.d.ts +0 -18
- package/dist/components/Callout/CalloutBase.d.ts.map +0 -1
- package/dist/components/Callout/CalloutBase.js +0 -21
- package/dist/components/Carousel/Carousel.d.ts +0 -50
- package/dist/components/Carousel/Carousel.d.ts.map +0 -1
- package/dist/components/Carousel/Carousel.js +0 -22
- package/dist/components/Carousel/CarouselBase.d.ts +0 -98
- package/dist/components/Carousel/CarouselBase.d.ts.map +0 -1
- package/dist/components/Carousel/CarouselBase.js +0 -144
- package/dist/components/Checkbox/Checkbox.d.ts +0 -27
- package/dist/components/Checkbox/Checkbox.d.ts.map +0 -1
- package/dist/components/Checkbox/Checkbox.js +0 -30
- package/dist/components/Checkbox/CheckboxBase.d.ts +0 -40
- package/dist/components/Checkbox/CheckboxBase.d.ts.map +0 -1
- package/dist/components/Checkbox/CheckboxBase.js +0 -57
- package/dist/components/Checkbox/CheckboxGroup.d.ts +0 -22
- package/dist/components/Checkbox/CheckboxGroup.d.ts.map +0 -1
- package/dist/components/Checkbox/CheckboxGroup.js +0 -13
- package/dist/components/Checkbox/FormCheckbox.d.ts +0 -14
- package/dist/components/Checkbox/FormCheckbox.d.ts.map +0 -1
- package/dist/components/Checkbox/FormCheckbox.js +0 -9
- package/dist/components/Checkbox/FormCheckboxGroup.d.ts +0 -13
- package/dist/components/Checkbox/FormCheckboxGroup.d.ts.map +0 -1
- package/dist/components/Checkbox/FormCheckboxGroup.js +0 -9
- package/dist/components/DataCalendar/DataCalendar.d.ts +0 -12
- package/dist/components/DataCalendar/DataCalendar.d.ts.map +0 -1
- package/dist/components/DataCalendar/DataCalendar.js +0 -13
- package/dist/components/DataCalendar/DataCalendarBase.d.ts +0 -45
- package/dist/components/DataCalendar/DataCalendarBase.d.ts.map +0 -1
- package/dist/components/DataCalendar/DataCalendarBase.js +0 -57
- package/dist/components/DatePicker/DatePicker.d.ts +0 -34
- package/dist/components/DatePicker/DatePicker.d.ts.map +0 -1
- package/dist/components/DatePicker/DatePicker.js +0 -44
- package/dist/components/DatePicker/FormDatePicker.d.ts +0 -12
- package/dist/components/DatePicker/FormDatePicker.d.ts.map +0 -1
- package/dist/components/DatePicker/FormDatePicker.js +0 -12
- package/dist/components/DateRangePicker/DateRangePicker.d.ts +0 -49
- package/dist/components/DateRangePicker/DateRangePicker.d.ts.map +0 -1
- package/dist/components/DateRangePicker/DateRangePicker.js +0 -197
- package/dist/components/DateRangePicker/FormDateRangePicker.d.ts +0 -12
- package/dist/components/DateRangePicker/FormDateRangePicker.d.ts.map +0 -1
- package/dist/components/DateRangePicker/FormDateRangePicker.js +0 -10
- package/dist/components/Divider/Divider.d.ts +0 -9
- package/dist/components/Divider/Divider.d.ts.map +0 -1
- package/dist/components/Divider/Divider.js +0 -11
- package/dist/components/Divider/DividerBase.d.ts +0 -9
- package/dist/components/Divider/DividerBase.d.ts.map +0 -1
- package/dist/components/Divider/DividerBase.js +0 -9
- package/dist/components/Drawer/Drawer.d.ts +0 -51
- package/dist/components/Drawer/Drawer.d.ts.map +0 -1
- package/dist/components/Drawer/Drawer.js +0 -30
- package/dist/components/Drawer/DrawerBase.d.ts +0 -52
- package/dist/components/Drawer/DrawerBase.d.ts.map +0 -1
- package/dist/components/Drawer/DrawerBase.js +0 -38
- package/dist/components/Editor/Editor.d.ts +0 -12
- package/dist/components/Editor/Editor.d.ts.map +0 -1
- package/dist/components/Editor/Editor.js +0 -162
- package/dist/components/Editor/EditorBase.d.ts +0 -52
- package/dist/components/Editor/EditorBase.d.ts.map +0 -1
- package/dist/components/Editor/EditorBase.js +0 -89
- package/dist/components/Editor/Viewer.d.ts +0 -7
- package/dist/components/Editor/Viewer.d.ts.map +0 -1
- package/dist/components/Editor/Viewer.js +0 -9
- package/dist/components/Editor/extensions.d.ts +0 -6
- package/dist/components/Editor/extensions.d.ts.map +0 -1
- package/dist/components/Editor/extensions.js +0 -38
- package/dist/components/FileUpload/FileUploadBase.d.ts +0 -50
- package/dist/components/FileUpload/FileUploadBase.d.ts.map +0 -1
- package/dist/components/FileUpload/FileUploadBase.js +0 -102
- package/dist/components/Input/FormInput.d.ts +0 -15
- package/dist/components/Input/FormInput.d.ts.map +0 -1
- package/dist/components/Input/FormInput.js +0 -19
- package/dist/components/Input/Input.d.ts +0 -24
- package/dist/components/Input/Input.d.ts.map +0 -1
- package/dist/components/Input/Input.js +0 -71
- package/dist/components/Input/InputBase.d.ts +0 -22
- package/dist/components/Input/InputBase.d.ts.map +0 -1
- package/dist/components/Input/InputBase.js +0 -17
- package/dist/components/LNB/LNBBase.d.ts +0 -82
- package/dist/components/LNB/LNBBase.d.ts.map +0 -1
- package/dist/components/LNB/LNBBase.js +0 -108
- package/dist/components/LoadingDots/LoadingDots.d.ts +0 -8
- package/dist/components/LoadingDots/LoadingDots.d.ts.map +0 -1
- package/dist/components/LoadingDots/LoadingDots.js +0 -29
- package/dist/components/MenuBar/MenuBar.d.ts +0 -21
- package/dist/components/MenuBar/MenuBar.d.ts.map +0 -1
- package/dist/components/MenuBar/MenuBar.js +0 -33
- package/dist/components/MenuBar/MenuBarBase.d.ts +0 -43
- package/dist/components/MenuBar/MenuBarBase.d.ts.map +0 -1
- package/dist/components/MenuBar/MenuBarBase.js +0 -69
- package/dist/components/Modal/Modal.d.ts +0 -51
- package/dist/components/Modal/Modal.d.ts.map +0 -1
- package/dist/components/Modal/Modal.js +0 -72
- package/dist/components/Modal/ModalBase.d.ts +0 -42
- package/dist/components/Modal/ModalBase.d.ts.map +0 -1
- package/dist/components/Modal/ModalBase.js +0 -30
- package/dist/components/Modal/openModal.d.ts +0 -24
- package/dist/components/Modal/openModal.d.ts.map +0 -1
- package/dist/components/Modal/openModal.js +0 -52
- package/dist/components/OTPInput/OTPInput.d.ts +0 -46
- package/dist/components/OTPInput/OTPInput.d.ts.map +0 -1
- package/dist/components/OTPInput/OTPInput.js +0 -87
- package/dist/components/Pagination/Pagination.d.ts +0 -12
- package/dist/components/Pagination/Pagination.d.ts.map +0 -1
- package/dist/components/Pagination/Pagination.js +0 -5
- package/dist/components/Pagination/PaginationBase.d.ts +0 -36
- package/dist/components/Pagination/PaginationBase.d.ts.map +0 -1
- package/dist/components/Pagination/PaginationBase.js +0 -44
- package/dist/components/Pagination/paginationUtils.d.ts +0 -2
- package/dist/components/Pagination/paginationUtils.d.ts.map +0 -1
- package/dist/components/Pagination/paginationUtils.js +0 -18
- package/dist/components/Popover/Popover.d.ts +0 -42
- package/dist/components/Popover/Popover.d.ts.map +0 -1
- package/dist/components/Popover/Popover.js +0 -31
- package/dist/components/Popover/PopoverBase.d.ts +0 -31
- package/dist/components/Popover/PopoverBase.d.ts.map +0 -1
- package/dist/components/Popover/PopoverBase.js +0 -18
- package/dist/components/Radio/FormRadioGroup.d.ts +0 -13
- package/dist/components/Radio/FormRadioGroup.d.ts.map +0 -1
- package/dist/components/Radio/FormRadioGroup.js +0 -9
- package/dist/components/Radio/Radio.d.ts +0 -24
- package/dist/components/Radio/Radio.d.ts.map +0 -1
- package/dist/components/Radio/Radio.js +0 -39
- package/dist/components/Radio/RadioBase.d.ts +0 -38
- package/dist/components/Radio/RadioBase.d.ts.map +0 -1
- package/dist/components/Radio/RadioBase.js +0 -46
- package/dist/components/Radio/RadioGroup.d.ts +0 -22
- package/dist/components/Radio/RadioGroup.d.ts.map +0 -1
- package/dist/components/Radio/RadioGroup.js +0 -7
- package/dist/components/ScrollArea/ScrollArea.d.ts +0 -15
- package/dist/components/ScrollArea/ScrollArea.d.ts.map +0 -1
- package/dist/components/ScrollArea/ScrollArea.js +0 -10
- package/dist/components/Select/FormMultiSelect.d.ts +0 -13
- package/dist/components/Select/FormMultiSelect.d.ts.map +0 -1
- package/dist/components/Select/FormMultiSelect.js +0 -14
- package/dist/components/Select/FormSelect.d.ts +0 -13
- package/dist/components/Select/FormSelect.d.ts.map +0 -1
- package/dist/components/Select/FormSelect.js +0 -10
- package/dist/components/Select/MultiSelect.d.ts +0 -31
- package/dist/components/Select/MultiSelect.d.ts.map +0 -1
- package/dist/components/Select/MultiSelect.js +0 -59
- package/dist/components/Select/Select.d.ts +0 -41
- package/dist/components/Select/Select.d.ts.map +0 -1
- package/dist/components/Select/Select.js +0 -55
- package/dist/components/Select/SelectBase.d.ts +0 -59
- package/dist/components/Select/SelectBase.d.ts.map +0 -1
- package/dist/components/Select/SelectBase.js +0 -211
- package/dist/components/Skeleton/Skeleton.d.ts +0 -10
- package/dist/components/Skeleton/Skeleton.d.ts.map +0 -1
- package/dist/components/Skeleton/Skeleton.js +0 -8
- package/dist/components/Slider/Slider.d.ts +0 -23
- package/dist/components/Slider/Slider.d.ts.map +0 -1
- package/dist/components/Slider/Slider.js +0 -195
- package/dist/components/Spinner/Spinner.d.ts +0 -25
- package/dist/components/Spinner/Spinner.d.ts.map +0 -1
- package/dist/components/Spinner/Spinner.js +0 -20
- package/dist/components/Table/Table.d.ts +0 -34
- package/dist/components/Table/Table.d.ts.map +0 -1
- package/dist/components/Table/Table.js +0 -29
- package/dist/components/Table/TableBase.d.ts +0 -37
- package/dist/components/Table/TableBase.d.ts.map +0 -1
- package/dist/components/Table/TableBase.js +0 -39
- package/dist/components/Table/TableField.d.ts +0 -64
- package/dist/components/Table/TableField.d.ts.map +0 -1
- package/dist/components/Table/TableField.js +0 -87
- package/dist/components/Table/TanstackTable.d.ts +0 -23
- package/dist/components/Table/TanstackTable.d.ts.map +0 -1
- package/dist/components/Table/TanstackTable.js +0 -35
- package/dist/components/TimePicker/FormTimePicker.d.ts +0 -12
- package/dist/components/TimePicker/FormTimePicker.d.ts.map +0 -1
- package/dist/components/TimePicker/FormTimePicker.js +0 -12
- package/dist/components/TimePicker/TimePicker.d.ts +0 -27
- package/dist/components/TimePicker/TimePicker.d.ts.map +0 -1
- package/dist/components/TimePicker/TimePicker.js +0 -120
- package/dist/components/Toast/Toast.d.ts +0 -18
- package/dist/components/Toast/Toast.d.ts.map +0 -1
- package/dist/components/Toast/Toast.js +0 -42
- package/dist/components/Toast/Toaster.d.ts +0 -7
- package/dist/components/Toast/Toaster.d.ts.map +0 -1
- package/dist/components/Toast/Toaster.js +0 -7
- package/dist/components/ToggleButton/FormToggleButton.d.ts +0 -12
- package/dist/components/ToggleButton/FormToggleButton.d.ts.map +0 -1
- package/dist/components/ToggleButton/FormToggleButton.js +0 -9
- package/dist/components/ToggleButton/ToggleButton.d.ts +0 -31
- package/dist/components/ToggleButton/ToggleButton.d.ts.map +0 -1
- package/dist/components/ToggleButton/ToggleButton.js +0 -42
- package/dist/components/ToggleButton/ToggleButtonBase.d.ts +0 -41
- package/dist/components/ToggleButton/ToggleButtonBase.d.ts.map +0 -1
- package/dist/components/ToggleButton/ToggleButtonBase.js +0 -59
- package/dist/components/Tooltip/Tooltip.d.ts +0 -18
- package/dist/components/Tooltip/Tooltip.d.ts.map +0 -1
- package/dist/components/Tooltip/Tooltip.js +0 -13
- package/dist/components/Tooltip/TooltipBase.d.ts +0 -39
- package/dist/components/Tooltip/TooltipBase.d.ts.map +0 -1
- package/dist/components/Tooltip/TooltipBase.js +0 -46
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { type ReactNode, type Ref } from 'react';
|
|
2
|
-
import { type IconName } from '../Icon/LucideIcon.js';
|
|
3
|
-
interface CheckboxContextType {
|
|
4
|
-
checked: boolean;
|
|
5
|
-
onCheckedChange: (checked: boolean) => void;
|
|
6
|
-
disabled: boolean;
|
|
7
|
-
isFocused: boolean;
|
|
8
|
-
setIsFocused: (focused: boolean) => void;
|
|
9
|
-
}
|
|
10
|
-
export declare const useCheckboxContext: () => CheckboxContextType;
|
|
11
|
-
interface RootProps {
|
|
12
|
-
checked?: boolean;
|
|
13
|
-
defaultChecked?: boolean;
|
|
14
|
-
onCheckedChange?: (checked: boolean) => void;
|
|
15
|
-
disabled?: boolean;
|
|
16
|
-
className?: string | ((checked: boolean) => string);
|
|
17
|
-
style?: React.CSSProperties;
|
|
18
|
-
children?: ReactNode;
|
|
19
|
-
}
|
|
20
|
-
interface HiddenInputProps extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
21
|
-
ref?: Ref<HTMLInputElement>;
|
|
22
|
-
}
|
|
23
|
-
interface IndicatorProps {
|
|
24
|
-
icon?: IconName;
|
|
25
|
-
iconSize?: number;
|
|
26
|
-
className?: string;
|
|
27
|
-
iconClassName?: string;
|
|
28
|
-
}
|
|
29
|
-
interface LabelProps {
|
|
30
|
-
className?: string;
|
|
31
|
-
children?: ReactNode;
|
|
32
|
-
}
|
|
33
|
-
export declare const CheckboxBase: {
|
|
34
|
-
Root: ({ checked, defaultChecked, onCheckedChange, disabled, className, style, children, }: RootProps) => import("react/jsx-runtime").JSX.Element;
|
|
35
|
-
HiddenInput: ({ ref, onFocus, onBlur, onChange, ...props }: HiddenInputProps) => import("react/jsx-runtime").JSX.Element;
|
|
36
|
-
Indicator: ({ icon, iconSize, className, iconClassName, }: IndicatorProps) => import("react/jsx-runtime").JSX.Element;
|
|
37
|
-
Label: ({ className, children }: LabelProps) => import("react/jsx-runtime").JSX.Element;
|
|
38
|
-
};
|
|
39
|
-
export default CheckboxBase;
|
|
40
|
-
//# sourceMappingURL=CheckboxBase.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CheckboxBase.d.ts","sourceRoot":"","sources":["../../../src/components/Checkbox/CheckboxBase.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,GAAG,EAIT,MAAM,OAAO,CAAC;AACf,OAAmB,EAAE,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAI/D,UAAU,mBAAmB;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C;AAID,eAAO,MAAM,kBAAkB,2BAO9B,CAAC;AAGF,UAAU,SAAS;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,CAAC;IACpD,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAiDD,UAAU,gBAAiB,SAAQ,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;IAC5E,GAAG,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;CAC7B;AAqCD,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAgBD,UAAU,UAAU;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAMD,eAAO,MAAM,YAAY;gGA5GtB,SAAS;gEAiDT,gBAAgB;+DAyChB,cAAc;qCAcuB,UAAU;CASjD,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { createContext, useContext, useState, } from 'react';
|
|
3
|
-
import LucideIcon from '../Icon/LucideIcon.js';
|
|
4
|
-
import cn from '../../utils/cn.js';
|
|
5
|
-
const CheckboxContext = createContext(null);
|
|
6
|
-
export const useCheckboxContext = () => {
|
|
7
|
-
const ctx = useContext(CheckboxContext);
|
|
8
|
-
if (!ctx)
|
|
9
|
-
throw new Error('CheckboxBase 하위 컴포넌트는 Root 내부에서 사용해야 합니다.');
|
|
10
|
-
return ctx;
|
|
11
|
-
};
|
|
12
|
-
const Root = ({ checked, defaultChecked = false, onCheckedChange, disabled = false, className, style, children, }) => {
|
|
13
|
-
const [internal, setInternal] = useState(defaultChecked);
|
|
14
|
-
const [isFocused, setIsFocused] = useState(false);
|
|
15
|
-
const isControlled = checked !== undefined;
|
|
16
|
-
const resolved = isControlled ? checked : internal;
|
|
17
|
-
const handleChange = (val) => {
|
|
18
|
-
if (!isControlled)
|
|
19
|
-
setInternal(val);
|
|
20
|
-
onCheckedChange?.(val);
|
|
21
|
-
};
|
|
22
|
-
const resolvedClassName = typeof className === 'function' ? className(resolved) : className;
|
|
23
|
-
return (_jsx(CheckboxContext, { value: {
|
|
24
|
-
checked: resolved,
|
|
25
|
-
onCheckedChange: handleChange,
|
|
26
|
-
disabled,
|
|
27
|
-
isFocused,
|
|
28
|
-
setIsFocused,
|
|
29
|
-
}, children: _jsx("label", { style: style, onClick: (e) => e.stopPropagation(), className: cn('flex flex-row w-fit gap-2.5 shrink-0', disabled ? 'cursor-not-allowed' : 'cursor-pointer', resolvedClassName), children: children }) }));
|
|
30
|
-
};
|
|
31
|
-
const HiddenInput = ({ ref, onFocus, onBlur, onChange, ...props }) => {
|
|
32
|
-
const { checked, onCheckedChange, disabled, setIsFocused } = useCheckboxContext();
|
|
33
|
-
return (_jsx("input", { type: "checkbox", ref: ref, className: "sr-only peer", checked: checked, disabled: disabled, onChange: (e) => {
|
|
34
|
-
e.stopPropagation(); // 이벤트 전파 중단
|
|
35
|
-
onCheckedChange(e.target.checked);
|
|
36
|
-
onChange?.(e);
|
|
37
|
-
}, onFocus: (e) => {
|
|
38
|
-
setIsFocused(true);
|
|
39
|
-
onFocus?.(e);
|
|
40
|
-
}, onBlur: (e) => {
|
|
41
|
-
setIsFocused(false);
|
|
42
|
-
onBlur?.(e);
|
|
43
|
-
}, ...props }));
|
|
44
|
-
};
|
|
45
|
-
const Indicator = ({ icon = 'check', iconSize = 24, className, iconClassName, }) => {
|
|
46
|
-
return (_jsx("div", { className: className, children: _jsx(LucideIcon, { name: icon, size: iconSize, className: iconClassName }) }));
|
|
47
|
-
};
|
|
48
|
-
const Label = ({ className, children }) => {
|
|
49
|
-
return _jsx("span", { className: className, children: children });
|
|
50
|
-
};
|
|
51
|
-
export const CheckboxBase = {
|
|
52
|
-
Root,
|
|
53
|
-
HiddenInput,
|
|
54
|
-
Indicator,
|
|
55
|
-
Label,
|
|
56
|
-
};
|
|
57
|
-
export default CheckboxBase;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type React from 'react';
|
|
2
|
-
export interface CheckboxGroupOption {
|
|
3
|
-
label: string;
|
|
4
|
-
value: string;
|
|
5
|
-
sub?: string;
|
|
6
|
-
disabled?: boolean;
|
|
7
|
-
}
|
|
8
|
-
export interface CheckboxGroupProps {
|
|
9
|
-
items: CheckboxGroupOption[];
|
|
10
|
-
value?: string[];
|
|
11
|
-
onChange?: (value: string[]) => void;
|
|
12
|
-
disabled?: boolean;
|
|
13
|
-
type?: 'default' | 'checkbox' | 'pill';
|
|
14
|
-
size?: 'small';
|
|
15
|
-
fontSize?: 'small' | 'regular';
|
|
16
|
-
orientation?: 'horizontal' | 'vertical';
|
|
17
|
-
className?: string;
|
|
18
|
-
style?: React.CSSProperties;
|
|
19
|
-
}
|
|
20
|
-
declare const CheckboxGroup: ({ items, value, onChange, disabled, type, size, fontSize, orientation, className, style, }: CheckboxGroupProps) => import("react/jsx-runtime").JSX.Element;
|
|
21
|
-
export default CheckboxGroup;
|
|
22
|
-
//# sourceMappingURL=CheckboxGroup.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CheckboxGroup.d.ts","sourceRoot":"","sources":["../../../src/components/Checkbox/CheckboxGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAGD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IACvC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,QAAA,MAAM,aAAa,GAAI,4FAWpB,kBAAkB,4CA+BpB,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import Checkbox from './Checkbox.js';
|
|
3
|
-
import cn from '../../utils/cn.js';
|
|
4
|
-
const CheckboxGroup = ({ items, value = [], onChange, disabled = false, type = 'pill', size = 'small', fontSize = 'small', orientation = 'horizontal', className, style, }) => {
|
|
5
|
-
const handleChange = (target) => {
|
|
6
|
-
const arr = value.includes(target)
|
|
7
|
-
? value.filter((v) => v !== target)
|
|
8
|
-
: [...value, target];
|
|
9
|
-
onChange?.(arr);
|
|
10
|
-
};
|
|
11
|
-
return (_jsx("div", { className: cn('flex gap-2.5', orientation === 'vertical' ? 'flex-col' : 'flex-row', className), style: style, children: items.map((option) => (_jsx(Checkbox, { type: type, size: size, fontSize: fontSize, checked: value.includes(option.value), onCheckedChange: () => handleChange(option.value), label: option.label, disabled: disabled || option.disabled }, option.value))) }));
|
|
12
|
-
};
|
|
13
|
-
export default CheckboxGroup;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { type Ref } from 'react';
|
|
2
|
-
import { type RegisterOptions } from 'react-hook-form';
|
|
3
|
-
import { type CheckboxProps } from './Checkbox.js';
|
|
4
|
-
interface FormCheckboxProps extends Omit<CheckboxProps, 'checked' | 'name' | 'onCheckedChange'> {
|
|
5
|
-
name: string;
|
|
6
|
-
options?: RegisterOptions;
|
|
7
|
-
ref?: Ref<HTMLInputElement>;
|
|
8
|
-
customErrorMessage?: string;
|
|
9
|
-
isHiddenErrorMessage?: boolean;
|
|
10
|
-
errorClassName?: string;
|
|
11
|
-
}
|
|
12
|
-
declare const FormCheckbox: ({ name, options, ref, customErrorMessage, isHiddenErrorMessage, errorClassName, disabled, ...props }: FormCheckboxProps) => import("react/jsx-runtime").JSX.Element;
|
|
13
|
-
export default FormCheckbox;
|
|
14
|
-
//# sourceMappingURL=FormCheckbox.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FormCheckbox.d.ts","sourceRoot":"","sources":["../../../src/components/Checkbox/FormCheckbox.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAI1D,UAAU,iBAAkB,SAAQ,IAAI,CACtC,aAAa,EACb,SAAS,GAAG,MAAM,GAAG,iBAAiB,CACvC;IACC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,GAAG,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,QAAA,MAAM,YAAY,GAAI,sGASnB,iBAAiB,4CA8BnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import Checkbox from './Checkbox.js';
|
|
4
|
-
import FormField from '../Form/FormField.js';
|
|
5
|
-
import FormErrorMessage from '../Form/FormErrorMessage.js';
|
|
6
|
-
const FormCheckbox = ({ name, options, ref, customErrorMessage = '', isHiddenErrorMessage = false, errorClassName, disabled = false, ...props }) => {
|
|
7
|
-
return (_jsx(FormField, { name: name, options: options, customErrorMessage: customErrorMessage, disabled: disabled, ref: ref, children: ({ field, fieldState }) => (_jsxs("div", { className: "relative", children: [_jsx(Checkbox, { ...props, checked: !!field.value, onCheckedChange: field.onChange, onBlur: field.onBlur, disabled: disabled, ref: field.ref }), !isHiddenErrorMessage && (_jsx(FormErrorMessage, { error: fieldState.error, disabled: disabled, className: errorClassName }))] })) }));
|
|
8
|
-
};
|
|
9
|
-
export default FormCheckbox;
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { type RegisterOptions } from 'react-hook-form';
|
|
2
|
-
import { type CheckboxGroupProps } from './CheckboxGroup.js';
|
|
3
|
-
interface FormCheckboxGroupProps extends Omit<CheckboxGroupProps, 'value' | 'onChange'> {
|
|
4
|
-
name: string;
|
|
5
|
-
options?: RegisterOptions;
|
|
6
|
-
customErrorMessage?: string;
|
|
7
|
-
isHiddenErrorMessage?: boolean;
|
|
8
|
-
errorClassName?: string;
|
|
9
|
-
disabled?: boolean;
|
|
10
|
-
}
|
|
11
|
-
declare const FormCheckboxGroup: ({ name, options, customErrorMessage, isHiddenErrorMessage, errorClassName, disabled, ...props }: FormCheckboxGroupProps) => import("react/jsx-runtime").JSX.Element;
|
|
12
|
-
export default FormCheckboxGroup;
|
|
13
|
-
//# sourceMappingURL=FormCheckboxGroup.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FormCheckboxGroup.d.ts","sourceRoot":"","sources":["../../../src/components/Checkbox/FormCheckboxGroup.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAsB,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAIzE,UAAU,sBAAuB,SAAQ,IAAI,CAC3C,kBAAkB,EAClB,OAAO,GAAG,UAAU,CACrB;IACC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,QAAA,MAAM,iBAAiB,GAAI,iGAQxB,sBAAsB,4CA2BxB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import CheckboxGroup from './CheckboxGroup.js';
|
|
4
|
-
import FormField from '../Form/FormField.js';
|
|
5
|
-
import FormErrorMessage from '../Form/FormErrorMessage.js';
|
|
6
|
-
const FormCheckboxGroup = ({ name, options, customErrorMessage = '', isHiddenErrorMessage = true, errorClassName, disabled = false, ...props }) => {
|
|
7
|
-
return (_jsx(FormField, { name: name, options: options, customErrorMessage: customErrorMessage, disabled: disabled, children: ({ field, fieldState }) => (_jsxs("div", { className: "relative", children: [_jsx(CheckboxGroup, { ...props, value: field.value ?? [], onChange: field.onChange, disabled: disabled }), !isHiddenErrorMessage && (_jsx(FormErrorMessage, { error: fieldState.error, disabled: disabled, className: errorClassName }))] })) }));
|
|
8
|
-
};
|
|
9
|
-
export default FormCheckboxGroup;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { ComponentProps } from 'react';
|
|
2
|
-
import DataCalendarBase from './DataCalendarBase.js';
|
|
3
|
-
declare const DataCalendar: {
|
|
4
|
-
Root: ({ className, ...props }: ComponentProps<typeof DataCalendarBase.Root>) => import("react/jsx-runtime").JSX.Element;
|
|
5
|
-
Title: ({ className, ...props }: ComponentProps<typeof DataCalendarBase.Title>) => import("react/jsx-runtime").JSX.Element;
|
|
6
|
-
Prev: ({ className, children, ...props }: ComponentProps<typeof DataCalendarBase.Prev>) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
-
Next: ({ className, children, ...props }: ComponentProps<typeof DataCalendarBase.Next>) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
-
Grid: ({ className, weekdayClassName, ...props }: ComponentProps<typeof DataCalendarBase.Grid>) => import("react/jsx-runtime").JSX.Element;
|
|
9
|
-
Cell: ({ className, dateClassName, ...props }: ComponentProps<typeof DataCalendarBase.Cell>) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
-
};
|
|
11
|
-
export default DataCalendar;
|
|
12
|
-
//# sourceMappingURL=DataCalendar.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DataCalendar.d.ts","sourceRoot":"","sources":["../../../src/components/DataCalendar/DataCalendar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAoFlD,QAAA,MAAM,YAAY;oCA/Ef,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC;qCAU5C,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC;8CAW7C,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC;8CAgB5C,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC;sDAgB5C,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC;mDAY5C,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC;CAca,CAAC;AAE7D,eAAe,YAAY,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import { ChevronLeft, ChevronRight } from 'lucide-react';
|
|
4
|
-
import cn from '../../utils/cn.js';
|
|
5
|
-
import DataCalendarBase from './DataCalendarBase.js';
|
|
6
|
-
const Root = ({ className, ...props }) => (_jsx(DataCalendarBase.Root, { className: cn('w-full select-none', className), ...props }));
|
|
7
|
-
const Title = ({ className, ...props }) => (_jsx(DataCalendarBase.Title, { className: cn('display32 bold flex justify-center', className), ...props }));
|
|
8
|
-
const Prev = ({ className, children, ...props }) => (_jsx(DataCalendarBase.Prev, { className: cn('flex items-center justify-center rounded-full size-[30px] bg-neutral100 hover:bg-mono400 text-neutral500 ld-transition cursor-pointer', className), ...props, children: children ?? _jsx(ChevronLeft, { size: 15 }) }));
|
|
9
|
-
const Next = ({ className, children, ...props }) => (_jsx(DataCalendarBase.Next, { className: cn('flex items-center justify-center rounded-full size-[30px] bg-neutral100 hover:bg-mono400 text-neutral500 ld-transition cursor-pointer', className), ...props, children: children ?? _jsx(ChevronRight, { size: 16 }) }));
|
|
10
|
-
const Grid = ({ className, weekdayClassName, ...props }) => (_jsx(DataCalendarBase.Grid, { className: className, weekdayClassName: cn('display14 text-mono500 py-[10px] ', weekdayClassName), ...props }));
|
|
11
|
-
const Cell = ({ className, dateClassName, ...props }) => (_jsx(DataCalendarBase.Cell, { className: cn('min-h-[100px] py-[10px] flex flex-col gap-[15px] data-outside:*:text-mono400', className), dateClassName: cn('display16 font-normal self-start leading-none data-[outside]:text-mono400 data-[outside]:font-normal data-[weekend]:text-danger600 data-[outside]:data-[weekend]:text-danger200', dateClassName), ...props }));
|
|
12
|
-
const DataCalendar = { Root, Title, Prev, Next, Grid, Cell };
|
|
13
|
-
export default DataCalendar;
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { type Dayjs } from 'dayjs';
|
|
2
|
-
import type { ReactNode } from 'react';
|
|
3
|
-
interface DataCalendarContextType {
|
|
4
|
-
month: Dayjs;
|
|
5
|
-
changeMonth: (delta: number) => void;
|
|
6
|
-
}
|
|
7
|
-
export declare const useDataCalendarContext: () => DataCalendarContextType;
|
|
8
|
-
interface RootProps {
|
|
9
|
-
children?: ReactNode;
|
|
10
|
-
className?: string;
|
|
11
|
-
defaultMonth?: Dayjs;
|
|
12
|
-
onMonthChange?: (month: Dayjs) => void;
|
|
13
|
-
}
|
|
14
|
-
interface TitleProps {
|
|
15
|
-
className?: string;
|
|
16
|
-
format?: string;
|
|
17
|
-
}
|
|
18
|
-
interface NavButtonProps {
|
|
19
|
-
children?: ReactNode;
|
|
20
|
-
className?: string;
|
|
21
|
-
}
|
|
22
|
-
interface GridProps {
|
|
23
|
-
renderCell: (date: Dayjs, index: number, isOutside: boolean) => ReactNode;
|
|
24
|
-
weekdays?: string[];
|
|
25
|
-
className?: string;
|
|
26
|
-
weekdayClassName?: string;
|
|
27
|
-
}
|
|
28
|
-
interface CellProps {
|
|
29
|
-
date: Dayjs;
|
|
30
|
-
/** 현재 표시 중인 월과 다른 달 날짜 여부 (이전/다음 달) */
|
|
31
|
-
isOutside?: boolean;
|
|
32
|
-
children?: ReactNode;
|
|
33
|
-
className?: string;
|
|
34
|
-
dateClassName?: string;
|
|
35
|
-
}
|
|
36
|
-
declare const DataCalendarBase: {
|
|
37
|
-
Root: ({ children, className, defaultMonth, onMonthChange, }: RootProps) => import("react/jsx-runtime").JSX.Element;
|
|
38
|
-
Title: ({ className, format }: TitleProps) => import("react/jsx-runtime").JSX.Element;
|
|
39
|
-
Prev: ({ children, className }: NavButtonProps) => import("react/jsx-runtime").JSX.Element;
|
|
40
|
-
Next: ({ children, className }: NavButtonProps) => import("react/jsx-runtime").JSX.Element;
|
|
41
|
-
Grid: ({ renderCell, weekdays, className, weekdayClassName, }: GridProps) => import("react/jsx-runtime").JSX.Element;
|
|
42
|
-
Cell: ({ date, isOutside, children, className, dateClassName, }: CellProps) => import("react/jsx-runtime").JSX.Element;
|
|
43
|
-
};
|
|
44
|
-
export default DataCalendarBase;
|
|
45
|
-
//# sourceMappingURL=DataCalendarBase.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DataCalendarBase.d.ts","sourceRoot":"","sources":["../../../src/components/DataCalendar/DataCalendarBase.tsx"],"names":[],"mappings":"AAEA,OAAc,EAAE,KAAK,KAAK,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,UAAU,uBAAuB;IAC/B,KAAK,EAAE,KAAK,CAAC;IACb,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAID,eAAO,MAAM,sBAAsB,+BAOlC,CAAC;AAIF,UAAU,SAAS;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACxC;AA2BD,UAAU,UAAU;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AASD,UAAU,cAAc;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAwBD,UAAU,SAAS;IACjB,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,SAAS,CAAC;IAC1E,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAgDD,UAAU,SAAS;IACjB,IAAI,EAAE,KAAK,CAAC;IACZ,uCAAuC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA6BD,QAAA,MAAM,gBAAgB;kEApJnB,SAAS;mCAyBuC,UAAU;oCAYtB,cAAc;oCASd,cAAc;mEAyBlD,SAAS;qEAwDT,SAAS;CAqBoD,CAAC;AAEjE,eAAe,gBAAgB,CAAC"}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import dayjs from 'dayjs';
|
|
4
|
-
import { createContext, useContext, useState } from 'react';
|
|
5
|
-
const DataCalendarContext = createContext(null);
|
|
6
|
-
export const useDataCalendarContext = () => {
|
|
7
|
-
const ctx = useContext(DataCalendarContext);
|
|
8
|
-
if (!ctx)
|
|
9
|
-
throw new Error('DataCalendarBase 서브컴포넌트는 DataCalendarBase.Root 내부에서 사용해야 합니다.');
|
|
10
|
-
return ctx;
|
|
11
|
-
};
|
|
12
|
-
const Root = ({ children, className, defaultMonth, onMonthChange, }) => {
|
|
13
|
-
const [month, setMonth] = useState((defaultMonth ?? dayjs()).startOf('month'));
|
|
14
|
-
const changeMonth = (delta) => {
|
|
15
|
-
const next = month.add(delta, 'month');
|
|
16
|
-
setMonth(next);
|
|
17
|
-
onMonthChange?.(next);
|
|
18
|
-
};
|
|
19
|
-
return (_jsx(DataCalendarContext, { value: { month, changeMonth }, children: _jsx("div", { className: className, children: children }) }));
|
|
20
|
-
};
|
|
21
|
-
const Title = ({ className, format = 'YYYY년 M월' }) => {
|
|
22
|
-
const { month } = useDataCalendarContext();
|
|
23
|
-
return _jsx("span", { className: className, children: month.format(format) });
|
|
24
|
-
};
|
|
25
|
-
const Prev = ({ children, className }) => {
|
|
26
|
-
const { changeMonth } = useDataCalendarContext();
|
|
27
|
-
return (_jsx("button", { type: "button", onClick: () => changeMonth(-1), className: className, children: children }));
|
|
28
|
-
};
|
|
29
|
-
const Next = ({ children, className }) => {
|
|
30
|
-
const { changeMonth } = useDataCalendarContext();
|
|
31
|
-
return (_jsx("button", { type: "button", onClick: () => changeMonth(1), className: className, children: children }));
|
|
32
|
-
};
|
|
33
|
-
// ── Grid ──
|
|
34
|
-
const DEFAULT_WEEKDAYS = ['일', '월', '화', '수', '목', '금', '토'];
|
|
35
|
-
const Grid = ({ renderCell, weekdays = DEFAULT_WEEKDAYS, className, weekdayClassName, }) => {
|
|
36
|
-
const { month } = useDataCalendarContext();
|
|
37
|
-
const startOffset = month.startOf('month').day();
|
|
38
|
-
const daysInMonth = month.daysInMonth();
|
|
39
|
-
const prevMonth = month.subtract(1, 'month');
|
|
40
|
-
const nextMonth = month.add(1, 'month');
|
|
41
|
-
const prevDays = prevMonth.daysInMonth();
|
|
42
|
-
const cells = Array.from({ length: startOffset + daysInMonth }, (_, i) => i < startOffset
|
|
43
|
-
? prevMonth.date(prevDays - startOffset + i + 1)
|
|
44
|
-
: month.date(i - startOffset + 1));
|
|
45
|
-
let nextDay = 1;
|
|
46
|
-
while (cells.length % 7 !== 0)
|
|
47
|
-
cells.push(nextMonth.date(nextDay++));
|
|
48
|
-
return (_jsxs("div", { className: className, children: [_jsx("div", { className: "grid grid-cols-7", children: weekdays.map((d) => (_jsx("span", { className: weekdayClassName, children: d }, d))) }), _jsx("div", { className: "grid grid-cols-7", children: cells.map((date, i) => renderCell(date, i, !date.isSame(month, 'month'))) })] }));
|
|
49
|
-
};
|
|
50
|
-
const Cell = ({ date, isOutside, children, className, dateClassName, }) => {
|
|
51
|
-
const isToday = date.isSame(dayjs(), 'day');
|
|
52
|
-
const isWeekend = date.day() === 0 || date.day() === 6;
|
|
53
|
-
return (_jsxs("div", { className: className, "data-outside": isOutside || undefined, children: [_jsx("span", { "data-today": isToday || undefined, "data-outside": isOutside || undefined, "data-weekend": isWeekend || undefined, className: dateClassName, children: date.date() }), children] }));
|
|
54
|
-
};
|
|
55
|
-
// ── Export ──
|
|
56
|
-
const DataCalendarBase = { Root, Title, Prev, Next, Grid, Cell };
|
|
57
|
-
export default DataCalendarBase;
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { type ReactNode } from 'react';
|
|
2
|
-
export interface DatePickerProps {
|
|
3
|
-
/** 선택된 날짜 (controlled) */
|
|
4
|
-
value?: Date;
|
|
5
|
-
/** 초기 선택 날짜 (uncontrolled) */
|
|
6
|
-
defaultValue?: Date;
|
|
7
|
-
/** 날짜 변경 시 호출되는 콜백 */
|
|
8
|
-
onChange?: (value: Date | undefined) => void;
|
|
9
|
-
/** 미선택 시 표시할 텍스트 */
|
|
10
|
-
placeholder?: string;
|
|
11
|
-
/** 비활성화 여부 */
|
|
12
|
-
disabled?: boolean;
|
|
13
|
-
/** true 시 너비 100% */
|
|
14
|
-
block?: boolean;
|
|
15
|
-
/** 색상 테마 (danger 시 에러 스타일) */
|
|
16
|
-
color?: 'neutral' | 'danger';
|
|
17
|
-
/** 현재 시점 이후 날짜 선택 비활성화 */
|
|
18
|
-
isDisableAfterNow?: boolean;
|
|
19
|
-
/** 최소 선택 가능 날짜 */
|
|
20
|
-
minDate?: Date;
|
|
21
|
-
/** 트리거 우측 아이콘 */
|
|
22
|
-
trailingIcon?: ReactNode;
|
|
23
|
-
/** 날짜 초기화 버튼 표시 여부 */
|
|
24
|
-
showReset?: boolean;
|
|
25
|
-
/** 추가 CSS 클래스 */
|
|
26
|
-
className?: string;
|
|
27
|
-
/** 인라인 스타일 (트리거 버튼에 적용) */
|
|
28
|
-
style?: React.CSSProperties;
|
|
29
|
-
/** 트리거 버튼 className */
|
|
30
|
-
triggerClassName?: string;
|
|
31
|
-
}
|
|
32
|
-
declare const DatePicker: ({ value, defaultValue, onChange, placeholder, disabled, block, color, isDisableAfterNow, minDate, trailingIcon, showReset, className, style, triggerClassName, }: DatePickerProps) => import("react/jsx-runtime").JSX.Element;
|
|
33
|
-
export default DatePicker;
|
|
34
|
-
//# sourceMappingURL=DatePicker.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../../src/components/DatePicker/DatePicker.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAY,MAAM,OAAO,CAAC;AASjD,MAAM,WAAW,eAAe;IAC9B,0BAA0B;IAC1B,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,8BAA8B;IAC9B,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC;IAC7C,oBAAoB;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,0BAA0B;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kBAAkB;IAClB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,iBAAiB;IACjB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,sBAAsB;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,uBAAuB;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,QAAA,MAAM,UAAU,GAAI,kKAiBjB,eAAe,4CA4FjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useState } from 'react';
|
|
4
|
-
import dayjs from 'dayjs';
|
|
5
|
-
import { ko } from 'react-day-picker/locale';
|
|
6
|
-
import PopoverBase from '../Popover/PopoverBase.js';
|
|
7
|
-
import Calendar from '../Calendar/Calendar.js';
|
|
8
|
-
import LucideIcon from '../Icon/LucideIcon.js';
|
|
9
|
-
import cn from '../../utils/cn.js';
|
|
10
|
-
const DatePicker = ({ value, defaultValue, onChange, placeholder = 'YYYY-MM-DD', disabled = false, block = false, color = 'neutral', isDisableAfterNow = false, minDate, trailingIcon = (_jsx(LucideIcon, { name: "calendar", size: 15, className: "text-mono400" })), showReset = true, className, style, triggerClassName, }) => {
|
|
11
|
-
const [open, setOpen] = useState(false);
|
|
12
|
-
const [internal, setInternal] = useState(defaultValue);
|
|
13
|
-
const isControlled = value !== undefined;
|
|
14
|
-
const resolved = isControlled ? value : internal;
|
|
15
|
-
const handleSelect = (date) => {
|
|
16
|
-
if (!isControlled)
|
|
17
|
-
setInternal(date);
|
|
18
|
-
onChange?.(date);
|
|
19
|
-
setOpen(false);
|
|
20
|
-
};
|
|
21
|
-
const handleReset = (e) => {
|
|
22
|
-
e.stopPropagation();
|
|
23
|
-
if (!isControlled)
|
|
24
|
-
setInternal(undefined);
|
|
25
|
-
onChange?.(undefined);
|
|
26
|
-
};
|
|
27
|
-
return (_jsx("div", { className: cn(block ? 'w-full' : 'w-auto', className), children: _jsxs(PopoverBase.Root, { open: open, onOpenChange: setOpen, children: [_jsxs(PopoverBase.Trigger, { disabled: disabled, style: style, className: cn('border border-neutral100 h-[38px] w-full display14 px-4 rounded-[5px]', 'flex flex-row items-center justify-between gap-4', 'outline-2 outline-transparent ld-transition', disabled && 'cursor-not-allowed opacity-50', color === 'danger'
|
|
28
|
-
? 'bg-tintRed outline-red500'
|
|
29
|
-
: 'focus:bg-tintBlue focus:outline-lb500', triggerClassName), children: [resolved ? (_jsx("span", { children: dayjs(resolved).format('YYYY-MM-DD') })) : (_jsx("span", { className: "text-mono400", children: placeholder })), _jsxs("div", { className: "flex gap-[6px]", children: [trailingIcon, showReset && resolved && (_jsx("span", { role: "button", tabIndex: 0, className: "text-mono400 cursor-pointer", onClick: handleReset, onKeyDown: (e) => {
|
|
30
|
-
if (e.key === 'Enter' || e.key === ' ') {
|
|
31
|
-
e.preventDefault();
|
|
32
|
-
handleReset(e);
|
|
33
|
-
}
|
|
34
|
-
}, children: _jsx(LucideIcon, { name: "rotateCw", size: 14 }) }))] })] }), _jsx(PopoverBase.Content, { className: "rounded-md border border-neutral-200 bg-white shadow-md p-0 min-w-[280px] w-[var(--radix-popover-trigger-width)]", children: _jsx(Calendar, { className: "w-full", captionLayout: "dropdown", mode: "single", locale: ko, selected: resolved, onSelect: handleSelect, disabled: isDisableAfterNow
|
|
35
|
-
? (date) => date > new Date()
|
|
36
|
-
: minDate
|
|
37
|
-
? (date) => {
|
|
38
|
-
const dateOnly = new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
|
39
|
-
const minDateOnly = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate());
|
|
40
|
-
return dateOnly < minDateOnly;
|
|
41
|
-
}
|
|
42
|
-
: false }) })] }) }));
|
|
43
|
-
};
|
|
44
|
-
export default DatePicker;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { type RegisterOptions } from 'react-hook-form';
|
|
2
|
-
import { type DatePickerProps } from './DatePicker.js';
|
|
3
|
-
interface FormDatePickerProps extends Omit<DatePickerProps, 'value' | 'onChange'> {
|
|
4
|
-
name: string;
|
|
5
|
-
options?: RegisterOptions;
|
|
6
|
-
customErrorMessage?: string;
|
|
7
|
-
isHiddenErrorMessage?: boolean;
|
|
8
|
-
errorClassName?: string;
|
|
9
|
-
}
|
|
10
|
-
declare const FormDatePicker: ({ name, options, customErrorMessage, isHiddenErrorMessage, errorClassName, disabled, block, ...props }: FormDatePickerProps) => import("react/jsx-runtime").JSX.Element;
|
|
11
|
-
export default FormDatePicker;
|
|
12
|
-
//# sourceMappingURL=FormDatePicker.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FormDatePicker.d.ts","sourceRoot":"","sources":["../../../src/components/DatePicker/FormDatePicker.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAmB,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAKhE,UAAU,mBAAoB,SAAQ,IAAI,CACxC,eAAe,EACf,OAAO,GAAG,UAAU,CACrB;IACC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,QAAA,MAAM,cAAc,GAAI,wGASrB,mBAAmB,4CAoCrB,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import DatePicker from './DatePicker.js';
|
|
4
|
-
import FormField from '../Form/FormField.js';
|
|
5
|
-
import FormErrorMessage from '../Form/FormErrorMessage.js';
|
|
6
|
-
import cn from '../../utils/cn.js';
|
|
7
|
-
const FormDatePicker = ({ name, options, customErrorMessage = '', isHiddenErrorMessage = false, errorClassName, disabled = false, block = false, ...props }) => {
|
|
8
|
-
return (_jsx(FormField, { name: name, options: options, customErrorMessage: customErrorMessage, disabled: disabled, children: ({ field, fieldState }) => (_jsxs("div", { className: cn('relative border-2 border-transparent', block ? 'w-full' : 'w-auto'), children: [_jsx(DatePicker, { ...props, block: block, value: field.value ?? undefined, onChange: (date) => {
|
|
9
|
-
field.onChange(date);
|
|
10
|
-
}, disabled: disabled, color: fieldState.hasError ? 'danger' : 'neutral' }), !isHiddenErrorMessage && (_jsx(FormErrorMessage, { error: fieldState.error, disabled: disabled, className: errorClassName }))] })) }));
|
|
11
|
-
};
|
|
12
|
-
export default FormDatePicker;
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { type ReactNode } from 'react';
|
|
2
|
-
type DateRange = {
|
|
3
|
-
from: Date;
|
|
4
|
-
to?: Date;
|
|
5
|
-
};
|
|
6
|
-
type ViewMode = 'daily' | 'monthly' | 'yearly';
|
|
7
|
-
export interface DateRangePickerProps {
|
|
8
|
-
/** 선택된 날짜 범위 ({ from, to? }) */
|
|
9
|
-
value?: DateRange;
|
|
10
|
-
/** 날짜 범위 변경 시 호출되는 콜백 */
|
|
11
|
-
onChange?: (value: DateRange | undefined) => void;
|
|
12
|
-
/** 비활성화 여부 */
|
|
13
|
-
disabled?: boolean;
|
|
14
|
-
/** true 시 너비 100% */
|
|
15
|
-
block?: boolean;
|
|
16
|
-
/** 색상 테마 (danger 시 에러 스타일) */
|
|
17
|
-
color?: 'neutral' | 'danger';
|
|
18
|
-
/** 현재 시점 이후 날짜 선택 비활성화 */
|
|
19
|
-
isDisableAfterNow?: boolean;
|
|
20
|
-
/** 날짜 범위 완성 시 팝오버 자동 닫힘 */
|
|
21
|
-
isAutoClose?: boolean;
|
|
22
|
-
/** 선택 모드 (daily: 일별, monthly: 월별, yearly: 연별) */
|
|
23
|
-
viewMode?: ViewMode;
|
|
24
|
-
/** 초기 선택 날짜 범위 (uncontrolled) */
|
|
25
|
-
defaultValue?: DateRange;
|
|
26
|
-
/** 초기값 (리셋 시 이 값으로 복원) */
|
|
27
|
-
initialValue?: {
|
|
28
|
-
from: string;
|
|
29
|
-
to: string;
|
|
30
|
-
};
|
|
31
|
-
/** 트리거 우측 아이콘 */
|
|
32
|
-
trailingIcon?: ReactNode;
|
|
33
|
-
/** 날짜 범위 선택 완료 시 호출되는 콜백 */
|
|
34
|
-
onRangeComplete?: (range: {
|
|
35
|
-
from: Date;
|
|
36
|
-
to: Date;
|
|
37
|
-
}) => void;
|
|
38
|
-
/** 날짜 초기화 완료 시 호출되는 콜백 */
|
|
39
|
-
onResetComplete?: () => void;
|
|
40
|
-
/** 추가 CSS 클래스 */
|
|
41
|
-
className?: string;
|
|
42
|
-
/** 인라인 스타일 (트리거 버튼에 적용) */
|
|
43
|
-
style?: React.CSSProperties;
|
|
44
|
-
/** 트리거 버튼 className */
|
|
45
|
-
triggerClassName?: string;
|
|
46
|
-
}
|
|
47
|
-
declare const DateRangePicker: ({ value, onChange, disabled, block, color, isDisableAfterNow, isAutoClose, viewMode, defaultValue, initialValue, trailingIcon, onRangeComplete, onResetComplete, className, style, triggerClassName, }: DateRangePickerProps) => import("react/jsx-runtime").JSX.Element;
|
|
48
|
-
export default DateRangePicker;
|
|
49
|
-
//# sourceMappingURL=DateRangePicker.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangePicker.d.ts","sourceRoot":"","sources":["../../../src/components/DateRangePicker/DateRangePicker.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAY,MAAM,OAAO,CAAC;AASjD,KAAK,SAAS,GAAG;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,EAAE,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAC3C,KAAK,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;AAe/C,MAAM,WAAW,oBAAoB;IACnC,gCAAgC;IAChC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;IAClD,cAAc;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,0BAA0B;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,2BAA2B;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,iCAAiC;IACjC,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,0BAA0B;IAC1B,YAAY,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,iBAAiB;IACjB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,4BAA4B;IAC5B,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,EAAE,EAAE,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;IAC5D,0BAA0B;IAC1B,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,uBAAuB;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,QAAA,MAAM,eAAe,GAAI,wMAmBtB,oBAAoB,4CAiLtB,CAAC;AA6LF,eAAe,eAAe,CAAC"}
|