jongsultest 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/dist/index.d.mts +339 -0
  2. package/dist/index.d.ts +339 -0
  3. package/dist/index.js +1280 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/index.mjs +1234 -0
  6. package/dist/index.mjs.map +1 -0
  7. package/package.json +59 -0
  8. package/src/atoms/Badge.stories.tsx +136 -0
  9. package/src/atoms/Badge.tsx +46 -0
  10. package/src/atoms/Button.stories.tsx +142 -0
  11. package/src/atoms/Button.tsx +50 -0
  12. package/src/atoms/ComboboxAutocomplete.stories.tsx +43 -0
  13. package/src/atoms/ComboboxAutocomplete.tsx +6 -0
  14. package/src/atoms/ComboboxSelect.stories.tsx +56 -0
  15. package/src/atoms/ComboboxSelect.tsx +6 -0
  16. package/src/atoms/DateTimePicker.stories.tsx +42 -0
  17. package/src/atoms/DateTimePicker.tsx +6 -0
  18. package/src/atoms/Icon.stories.tsx +86 -0
  19. package/src/atoms/Icon.tsx +81 -0
  20. package/src/atoms/IconButton.stories.tsx +59 -0
  21. package/src/atoms/IconButton.tsx +19 -0
  22. package/src/atoms/InputColor.stories.tsx +42 -0
  23. package/src/atoms/InputColor.tsx +6 -0
  24. package/src/atoms/InputDatePicker.stories.tsx +55 -0
  25. package/src/atoms/InputDatePicker.tsx +6 -0
  26. package/src/atoms/InputFile.stories.tsx +57 -0
  27. package/src/atoms/InputFile.tsx +15 -0
  28. package/src/atoms/InputNumber.stories.tsx +58 -0
  29. package/src/atoms/InputNumber.tsx +15 -0
  30. package/src/atoms/InputPassword.stories.tsx +42 -0
  31. package/src/atoms/InputPassword.tsx +24 -0
  32. package/src/atoms/InputRadio.stories.tsx +65 -0
  33. package/src/atoms/InputRadio.tsx +19 -0
  34. package/src/atoms/InputSegmentedControl.stories.tsx +44 -0
  35. package/src/atoms/InputSegmentedControl.tsx +15 -0
  36. package/src/atoms/InputSwitch.stories.tsx +45 -0
  37. package/src/atoms/InputSwitch.tsx +23 -0
  38. package/src/atoms/InputSwitchInTable.stories.tsx +43 -0
  39. package/src/atoms/InputSwitchInTable.tsx +35 -0
  40. package/src/atoms/InputText.stories.tsx +42 -0
  41. package/src/atoms/InputText.tsx +7 -0
  42. package/src/atoms/InputTextarea.stories.tsx +50 -0
  43. package/src/atoms/InputTextarea.tsx +6 -0
  44. package/src/atoms/index.ts +20 -0
  45. package/src/atoms/inputClassNames.ts +20 -0
  46. package/src/blocks/Accordion.stories.tsx +102 -0
  47. package/src/blocks/Accordion.tsx +124 -0
  48. package/src/blocks/AccordionDraggable.stories.tsx +169 -0
  49. package/src/blocks/AccordionDraggable.tsx +200 -0
  50. package/src/blocks/BoxContainer.stories.tsx +34 -0
  51. package/src/blocks/BoxContainer.tsx +16 -0
  52. package/src/blocks/DataTable.tsx +127 -0
  53. package/src/blocks/DescriptionRow.stories.tsx +34 -0
  54. package/src/blocks/DescriptionRow.tsx +22 -0
  55. package/src/blocks/EditorLayout.stories.tsx +79 -0
  56. package/src/blocks/EditorLayout.tsx +43 -0
  57. package/src/blocks/ImageUpload.tsx +292 -0
  58. package/src/blocks/LabeledField.stories.tsx +34 -0
  59. package/src/blocks/LabeledField.tsx +31 -0
  60. package/src/blocks/MediDrawer.stories.tsx +58 -0
  61. package/src/blocks/MediDrawer.tsx +34 -0
  62. package/src/blocks/Modal.stories.tsx +42 -0
  63. package/src/blocks/Modal.tsx +31 -0
  64. package/src/blocks/ModalDeleteConfirm.stories.tsx +31 -0
  65. package/src/blocks/ModalDeleteConfirm.tsx +56 -0
  66. package/src/blocks/ModalTokenExpired.tsx +52 -0
  67. package/src/blocks/NavigationBanner.tsx +100 -0
  68. package/src/blocks/PageHeader.tsx +24 -0
  69. package/src/blocks/PageLoading.stories.tsx +22 -0
  70. package/src/blocks/PageLoading.tsx +19 -0
  71. package/src/blocks/PageTitle.stories.tsx +39 -0
  72. package/src/blocks/PageTitle.tsx +25 -0
  73. package/src/blocks/Pagination.tsx +49 -0
  74. package/src/blocks/Panel.stories.tsx +84 -0
  75. package/src/blocks/Panel.tsx +97 -0
  76. package/src/blocks/SectionGroupWithTitle.stories.tsx +24 -0
  77. package/src/blocks/SectionGroupWithTitle.tsx +21 -0
  78. package/src/blocks/Table.tsx +114 -0
  79. package/src/blocks/TagInput.stories.tsx +74 -0
  80. package/src/blocks/TagInput.tsx +93 -0
  81. package/src/blocks/index.ts +25 -0
  82. package/src/index.ts +51 -0
  83. package/src/utils/file.ts +7 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/atoms/Button.tsx","../src/atoms/inputClassNames.ts","../src/atoms/InputText.tsx","../src/atoms/InputPassword.tsx","../src/atoms/InputNumber.tsx","../src/atoms/InputColor.tsx","../src/atoms/InputFile.tsx","../src/atoms/InputDatePicker.tsx","../src/atoms/InputTextarea.tsx","../src/atoms/InputRadio.tsx","../src/atoms/InputSwitch.tsx","../src/atoms/InputSwitchInTable.tsx","../src/atoms/InputSegmentedControl.tsx","../src/atoms/ComboboxSelect.tsx","../src/atoms/ComboboxAutocomplete.tsx","../src/atoms/DateTimePicker.tsx","../src/atoms/Badge.tsx","../src/atoms/IconButton.tsx","../src/atoms/Icon.tsx","../src/blocks/Table.tsx","../src/blocks/Pagination.tsx","../src/blocks/Accordion.tsx","../src/blocks/NavigationBanner.tsx","../src/utils/file.ts","../src/blocks/ImageUpload.tsx","../src/blocks/PageTitle.tsx","../src/blocks/PageLoading.tsx","../src/blocks/Panel.tsx","../src/blocks/BoxContainer.tsx","../src/blocks/EditorLayout.tsx","../src/blocks/Modal.tsx","../src/blocks/ModalDeleteConfirm.tsx","../src/blocks/ModalTokenExpired.tsx","../src/blocks/DataTable.tsx","../src/blocks/PageHeader.tsx","../src/blocks/SectionGroupWithTitle.tsx","../src/blocks/TagInput.tsx","../src/blocks/AccordionDraggable.tsx"],"names":["_a","jsx","MantineButton","MantineTextInput","MantinePasswordInput","jsxs","IconAlertCircle","MantineNumberInput","MantineColorInput","MantineFileInput","MantineDatePicker","MantineTextarea","MantineRadio","MantineSwitch","IconCheck","Box","MantineSegmentedControl","MantineSelect","MantineAutocomplete","MantineDateTimePicker","MantineBadge","clsx","ActionIcon","IconX","Text","MantineTable","Group","MantinePagination","MantineAccordion","Stack","useState","useEffect","IconChevronLeft","IconChevronRight","notifications","Image","FileButton","IconPlus","IconUpload","Title","LoadingOverlay","MantinePaper","Grid","_b","MantineModal","useMemo","Paper","Table","Pagination","useRouter","IconArrowLeft","Divider","Droppable","DragDropContext","Draggable","provided","Checkbox"],"mappings":"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","file":"index.js","sourcesContent":["import { Button as MantineButton, ButtonProps } from \"@mantine/core\";\nimport { ComponentPropsWithoutRef } from \"react\";\n\ntype Props = ButtonProps & ComponentPropsWithoutRef<\"button\">;\n\nconst COMMON_STYLES: Record<string, string> = {\n \"--button-fz\": \"14px\",\n \"--button-radius\": \"6px\",\n};\n\nconst SIZE_STYLES: Record<string, Record<string, string>> = {\n xs: {\n \"--button-height\": \"24px\",\n \"--button-padding-x\": \"6px\",\n },\n sm: {\n \"--button-height\": \"38px\",\n \"--button-padding-x\": \"16px\",\n },\n md: {\n \"--button-height\": \"40px\",\n \"--button-padding-x\": \"24px\",\n },\n};\n\nconst getVariantStyles = (variant?: string, color?: string) => {\n if (variant === \"outline\" && color === \"gray\") {\n return { color: \"var(--color-body)\", borderColor: \"var(--color-gray-3)\" };\n }\n if (variant === \"default\") {\n return { backgroundColor: \"var(--mantine-color-blue-6)\", color: \"#FFFFFF\", border: \"none\" };\n }\n if (variant === \"light\" && !color) {\n return { backgroundColor: \"var(--color-button-light)\", color: \"var(--color-body)\", border: \"none\" };\n }\n return {};\n};\n\nexport const Button = ({ style, ...props }: Props) => {\n const sizeVars = SIZE_STYLES[props.size as string] ?? SIZE_STYLES.md;\n const variantStyles = getVariantStyles(props.variant, props.color);\n\n return (\n <MantineButton\n {...props}\n classNames={{ label: \"!font-bold\" }}\n style={{ ...COMMON_STYLES, ...sizeVars, ...variantStyles, ...style }}\n />\n );\n};\n","export const inputClassNames = {\n input: `!rounded-[8px] !border-input\n !text-sm !h-12\n\n data-[error=true]:!border-error-line\n data-[error=true]:!border-2\n data-[error=true]:!bg-error-fill\n data-[error=true]:!text-body\n\n data-[disabled=true]:!text-body\n data-[disabled=true]:!bg-disabled-input\n data-[disabled=true]:!opacity-100\n data-[disabled=true]:!border-default\n `,\n label: \"!text-sm !text-[#999] !font-bold !tracking-tight !mb-2\",\n placeholder: \"!text-sm !tracking-normal\",\n error: \"!mt-2 !ml-2\",\n description: \"!-mt-[.5px] !mb-2\",\n root: \"!leading-0\",\n};\n","import { TextInput as MantineTextInput, TextInputProps } from \"@mantine/core\";\n\nimport { inputClassNames } from \"./inputClassNames\";\n\nexport const InputText = (props: TextInputProps) => {\n return <MantineTextInput classNames={inputClassNames} {...props} />;\n};\n","import { PasswordInput as MantinePasswordInput, PasswordInputProps } from \"@mantine/core\";\nimport { IconAlertCircle } from \"@tabler/icons-react\";\nimport { inputClassNames } from \"./inputClassNames\";\n\nexport const InputPassword = (props: PasswordInputProps) => {\n const { error } = props;\n\n return (\n <MantinePasswordInput\n classNames={inputClassNames}\n error={\n typeof error === \"string\" ? (\n <span className=\"flex items-start gap-2\">\n <IconAlertCircle size={16} className=\"mt-[2px] shrink-0\" />\n <span>{error}</span>\n </span>\n ) : (\n error\n )\n }\n {...props}\n />\n );\n};\n","import { NumberInput as MantineNumberInput, NumberInputProps } from \"@mantine/core\";\nimport { inputClassNames } from \"./inputClassNames\";\n\nexport const InputNumber = (props: NumberInputProps) => {\n return (\n <MantineNumberInput\n classNames={{\n ...inputClassNames,\n controls: \"!h-8 !border-input\",\n control: \"!border-input\",\n }}\n {...props}\n />\n );\n};\n","import { ColorInput as MantineColorInput, ColorInputProps } from \"@mantine/core\";\nimport { inputClassNames } from \"./inputClassNames\";\n\nexport const InputColor = (props: ColorInputProps) => {\n return <MantineColorInput classNames={inputClassNames} {...props} />;\n};\n","import { FileInput as MantineFileInput, type FileInputProps } from \"@mantine/core\";\nimport { inputClassNames } from \"./inputClassNames\";\nimport React from \"react\";\n\ntype FileInputComponentProps<Multiple extends boolean = false> = Omit<FileInputProps<Multiple>, \"translate\"> & {\n translate?: string;\n};\n\ntype FileInputComponent = (<Multiple extends boolean = false>(\n props: FileInputComponentProps<Multiple>,\n) => React.JSX.Element) & { extend: typeof MantineFileInput.extend };\n\nexport const InputFile = ((props: FileInputComponentProps) => {\n return <MantineFileInput classNames={inputClassNames} {...(props as FileInputProps)} />;\n}) as FileInputComponent;\n","import { DatePickerInput as MantineDatePicker, DatePickerInputProps } from \"@mantine/dates\";\nimport { inputClassNames } from \"./inputClassNames\";\n\nexport const InputDatePicker = (props: DatePickerInputProps) => {\n return <MantineDatePicker classNames={inputClassNames} {...props} valueFormat=\"YYYY-MM-DD\" />;\n};\n","import { Textarea as MantineTextarea, TextareaProps } from \"@mantine/core\";\nimport { inputClassNames } from \"./inputClassNames\";\n\nexport const InputTextarea = (props: TextareaProps) => {\n return <MantineTextarea classNames={{ ...inputClassNames, input: `${inputClassNames.input} !py-3` }} {...props} />;\n};\n","import {\n Radio as MantineRadio,\n RadioProps as MantineRadioProps,\n RadioGroupProps as MantineRadioGroupProps,\n} from \"@mantine/core\";\n\nimport { inputClassNames } from \"./inputClassNames\";\n\nconst RadioBase = (props: MantineRadioProps) => {\n return <MantineRadio {...props} />;\n};\n\nconst RadioGroup = (props: MantineRadioGroupProps) => {\n return <MantineRadio.Group classNames={{ label: inputClassNames.label }} {...props} />;\n};\n\nexport const InputRadio = Object.assign(RadioBase, {\n Group: RadioGroup,\n});\n","import { Switch as MantineSwitch, SwitchProps as MantineSwitchProps } from \"@mantine/core\";\nimport { IconCheck } from \"@tabler/icons-react\";\n\ntype SwitchProps = MantineSwitchProps;\n\nexport const InputSwitch = ({ checked, style, classNames, ...props }: SwitchProps) => {\n return (\n <MantineSwitch\n checked={checked}\n thumbIcon={<IconCheck size={10} color=\"white\" stroke={3} />}\n {...props}\n style={{\n ...((typeof style === \"object\" && style) || {}),\n ...(!checked && { \"--switch-thumb-start\": \"6px\" }),\n }}\n classNames={{\n thumb: \"!w-[10px] !h-[10px] text-white\",\n label: \"!text-gray-6 !font-medium\",\n ...classNames,\n }}\n />\n );\n};\n","import { Box } from \"@mantine/core\";\nimport { InputSwitch } from \"./InputSwitch\";\n\ninterface SwitchInTableProps<T extends string> {\n status: T;\n onStatusChange: (id: number, status: T) => void;\n id: number;\n activeValue?: T;\n inactiveValue?: T;\n activeLabel?: string;\n inactiveLabel?: string;\n}\n\nexport const InputSwitchInTable = <T extends string>({\n status,\n onStatusChange,\n id,\n activeValue = \"ACTIVE\" as T,\n inactiveValue = \"HIDDEN\" as T,\n activeLabel = \"활성\",\n inactiveLabel = \"숨김\",\n}: SwitchInTableProps<T>) => {\n const isActive = status === activeValue;\n return (\n <Box onClick={(e) => e.stopPropagation()}>\n <InputSwitch\n checked={isActive}\n // label={isActive ? activeLabel : inactiveLabel}\n onChange={() => onStatusChange(id, isActive ? inactiveValue : activeValue)}\n size=\"sm\"\n classNames={{ label: \"!font-semibold\" }}\n />\n </Box>\n );\n};\n","import { SegmentedControl as MantineSegmentedControl, type SegmentedControlProps } from \"@mantine/core\";\n\nexport const InputSegmentedControl = (props: SegmentedControlProps) => {\n return (\n <MantineSegmentedControl\n classNames={{\n root: \"p-2! rounded-md!\", // 루트\n control: \"\", // 버튼\n label: \"h-10 px-4 text-sm\", // 텍스트 패딩/타이포\n innerLabel: \"leading-9 color-white\", // 선택 인디케이터 높이도 같이\n }}\n {...props}\n />\n );\n};\n","import { Select as MantineSelect, SelectProps } from \"@mantine/core\";\nimport { inputClassNames } from \"./inputClassNames\";\n\nexport const ComboboxSelect = (props: SelectProps) => {\n return <MantineSelect classNames={inputClassNames} {...props} />;\n};\n","import { Autocomplete as MantineAutocomplete, AutocompleteProps } from \"@mantine/core\";\nimport { inputClassNames } from \"./inputClassNames\";\n\nexport const ComboboxAutocomplete = (props: AutocompleteProps) => {\n return <MantineAutocomplete classNames={inputClassNames} {...props} />;\n};\n","import { DateTimePicker as MantineDateTimePicker, DateTimePickerProps } from \"@mantine/dates\";\nimport { inputClassNames } from \"./inputClassNames\";\n\nexport const DateTimePicker = (props: DateTimePickerProps) => {\n return <MantineDateTimePicker classNames={inputClassNames} {...props} />;\n};\n","import { Badge as MantineBadge, BadgeProps, ActionIcon } from \"@mantine/core\";\nimport { IconX } from \"@tabler/icons-react\";\nimport clsx from \"clsx\";\n\n// 상황 생긴 경우 컬러 정의\nconst REMOVE_ABLE_BADGE_STYLES: Record<string, string> = {\n light: \"gray\",\n blue: \"gray\", // blue 임시 작업 blue 인 경우 생기면 컬러 변경 하셔도 됩니다.\n};\nexport const Badge = ({\n className,\n classNames,\n isRemoveAble = false,\n onRemove,\n ...props\n}: BadgeProps & { isRemoveAble?: boolean; onRemove?: () => void }) => {\n return (\n <MantineBadge\n {...props}\n className={className}\n classNames={{\n ...classNames,\n label: clsx(\"!text-xs !font-semibold\", (classNames as Record<string, string>)?.label),\n }}\n rightSection={\n props.rightSection ||\n (isRemoveAble ? (\n <ActionIcon\n size=\"xs\"\n variant=\"transparent\"\n color={REMOVE_ABLE_BADGE_STYLES[props.variant ?? \"blue\"]}\n onClick={onRemove}\n >\n <IconX size={12} />\n </ActionIcon>\n ) : undefined)\n }\n styles={{\n root: {\n \"--mantine-color-gray-light-color\": \"var(--color-body)\",\n \"--mantine-color-green-light-color\": \"#166534\",\n },\n }}\n />\n );\n};\n","import { ActionIcon, ActionIconProps } from \"@mantine/core\";\nimport { ComponentPropsWithoutRef, ComponentType, ReactNode } from \"react\";\nimport { IconSvgProps } from \"./Icon\";\n\ntype Props = ActionIconProps &\n ComponentPropsWithoutRef<\"button\"> & {\n icon?: ComponentType<IconSvgProps>;\n iconSize?: number;\n iconColor?: string;\n children?: ReactNode;\n };\n\nexport const IconButton = ({ icon: Icon, iconSize, iconColor, disabled, children, ...props }: Props) => {\n return (\n <ActionIcon variant=\"subtle\" color=\"gray\" disabled={disabled} {...props}>\n {Icon ? <Icon size={iconSize} color={iconColor} disabled={disabled} /> : children}\n </ActionIcon>\n );\n};\n","const colorPreset: Record<string, string> = {\n red: \"#FF4242\",\n white: \"#FFFFFF\",\n gray: \"#666666\",\n disabled: \"#DDDDDD\",\n};\n\nconst resolveColor = (color: string) => colorPreset[color] ?? color;\n\nexport interface IconSvgProps {\n size?: number;\n /** 프리셋(\"red\", \"white\", \"gray\", \"disabled\") 또는 hex 값 */\n color?: string;\n disabled?: boolean;\n}\n\n/** 원형 배경 + 십자 아이콘 (활성: #666666 / 비활성: #DDDDDD) */\nexport const PlusIcon = ({ size = 20, color = \"gray\", disabled }: IconSvgProps) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <circle cx=\"10\" cy=\"10\" r=\"10\" fill={disabled ? resolveColor(\"disabled\") : resolveColor(color)} />\n <path d=\"M10 5.5V14.5M14.5 10L5.5 10\" stroke=\"white\" strokeWidth=\"1.2\" strokeLinecap=\"round\" />\n </svg>\n);\n\n/** 휴지통 아이콘 (기본: \"gray\" / 삭제: \"red\" / 흰색: \"white\") */\nexport const TrashIcon = ({ size = 20, color = \"gray\" }: IconSvgProps) => {\n const c = resolveColor(color);\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M14 4.5V2C14 1.72386 13.7761 1.5 13.5 1.5H6.5C6.22386 1.5 6 1.72386 6 2V4.5\"\n stroke={c}\n strokeWidth=\"1.2\"\n />\n <path d=\"M2 4H18\" stroke={c} strokeWidth=\"1.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path\n d=\"M4 7.00028V17C4 17.5523 4.44772 18 5 18H15C15.5523 18 16 17.5523 16 17V7\"\n stroke={c}\n strokeWidth=\"1.2\"\n strokeLinecap=\"round\"\n />\n <path d=\"M8 7V13\" stroke={c} strokeWidth=\"1.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M12 7V13\" stroke={c} strokeWidth=\"1.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n};\n\n/** 드래그 핸들 아이콘 (6점 그리드) */\nexport const GripVerticalIcon = ({ size = 20, color = \"gray\" }: IconSvgProps) => {\n const c = resolveColor(color);\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n className=\"cursor-grab\"\n >\n <rect x=\"6.5\" y=\"3.5\" width=\"1.2\" height=\"1.2\" rx=\"0.6\" stroke={c} />\n <rect x=\"6.5\" y=\"9.39844\" width=\"1.2\" height=\"1.2\" rx=\"0.6\" stroke={c} />\n <rect x=\"6.5\" y=\"15.3008\" width=\"1.2\" height=\"1.2\" rx=\"0.6\" stroke={c} />\n <rect x=\"12.3008\" y=\"3.5\" width=\"1.2\" height=\"1.2\" rx=\"0.6\" stroke={c} />\n <rect x=\"12.3008\" y=\"9.39844\" width=\"1.2\" height=\"1.2\" rx=\"0.6\" stroke={c} />\n <rect x=\"12.3008\" y=\"15.3008\" width=\"1.2\" height=\"1.2\" rx=\"0.6\" stroke={c} />\n </svg>\n );\n};\n\n/** 하단 화살표 아이콘 */\nexport const ChevronDownIcon = ({ size = 20, color = \"#191919\" }: IconSvgProps) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={size} height={size} viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M16 7L10.0007 13L4 7\"\n stroke={resolveColor(color)}\n strokeWidth=\"1.2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","\"use client\";\n\nimport { ReactNode } from \"react\";\nimport { Table as MantineTable, Text, Box } from \"@mantine/core\";\n\n// ============================================\n// Types\n// ============================================\n\nexport interface TableColumn<T> {\n id: string;\n header: string;\n accessor?: keyof T;\n render?: (row: T, index: number) => ReactNode;\n align?: \"left\" | \"center\" | \"right\";\n width?: number | string;\n}\n\nexport interface TableProps<T> {\n columns: TableColumn<T>[];\n data: T[];\n rowKey?: keyof T | ((row: T, index: number) => string);\n emptyMessage?: string;\n striped?: boolean;\n highlightOnHover?: boolean;\n onRowClick?: (row: T, index: number) => void;\n}\n\n// ============================================\n// Component\n// ============================================\n\nexport function Table<T>({\n columns,\n data,\n rowKey,\n emptyMessage = \"데이터가 없습니다\",\n highlightOnHover = false,\n onRowClick,\n}: TableProps<T>) {\n const getRowKey = (row: T, index: number): string => {\n if (!rowKey) return String(index);\n if (typeof rowKey === \"function\") return rowKey(row, index);\n return String(row[rowKey]);\n };\n\n const getCellValue = (row: T, column: TableColumn<T>, index: number): ReactNode => {\n if (column.render) {\n return column.render(row, index);\n }\n if (column.accessor) {\n return row[column.accessor] as ReactNode;\n }\n return null;\n };\n\n if (data.length === 0) {\n return (\n <Box py=\"xl\" style={{ textAlign: \"center\" }}>\n <Text c=\"dimmed\">{emptyMessage}</Text>\n </Box>\n );\n }\n\n return (\n <MantineTable\n highlightOnHover={highlightOnHover}\n verticalSpacing=\"md\"\n classNames={{\n table: \"!border-default !overflow-hidden !border-separate\",\n thead: \"!bg-gray-0\",\n th: \"!text-center !border-b !border-default\",\n td: \"!text-center !border-b !border-default\",\n }}\n >\n <MantineTable.Thead>\n <MantineTable.Tr>\n {columns.map((column) => (\n <MantineTable.Th\n key={column.id}\n style={{\n textAlign: column.align || \"left\",\n width: column.width,\n }}\n >\n {column.header}\n </MantineTable.Th>\n ))}\n </MantineTable.Tr>\n </MantineTable.Thead>\n <MantineTable.Tbody>\n {data.map((row, index) => (\n <MantineTable.Tr\n key={getRowKey(row, index)}\n onClick={() => onRowClick?.(row, index)}\n style={{ cursor: onRowClick ? \"pointer\" : undefined }}\n >\n {columns.map((column) => (\n <MantineTable.Td\n key={column.id}\n style={{\n textAlign: column.align || \"left\",\n width: column.width,\n }}\n >\n {getCellValue(row, column, index)}\n </MantineTable.Td>\n ))}\n </MantineTable.Tr>\n ))}\n </MantineTable.Tbody>\n </MantineTable>\n );\n}\n","\"use client\";\n\nimport { Pagination as MantinePagination, Group } from \"@mantine/core\";\n\n// ============================================\n// Types\n// ============================================\n\nexport interface PaginationProps {\n total: number;\n page: number;\n onChange: (page: number) => void;\n siblings?: number;\n boundaries?: number;\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n withEdges?: boolean;\n position?: \"left\" | \"center\" | \"right\";\n}\n\n// ============================================\n// Component\n// ============================================\n\nexport function Pagination({\n total,\n page,\n onChange,\n siblings = 1,\n boundaries = 1,\n size = \"sm\",\n withEdges = true,\n position = \"center\",\n}: PaginationProps) {\n if (total <= 0) return null;\n\n return (\n <Group justify={position} mt=\"xl\">\n <MantinePagination\n total={total}\n value={page}\n onChange={onChange}\n siblings={siblings}\n boundaries={boundaries}\n size={size}\n withEdges={withEdges}\n />\n </Group>\n );\n}\n","\"use client\";\n\nimport { ReactNode } from \"react\";\nimport {\n Accordion as MantineAccordion,\n AccordionProps as MantineAccordionProps,\n Text,\n Group,\n Stack,\n} from \"@mantine/core\";\nimport { ChevronDownIcon } from \"../atoms\";\n\n// ============================================\n// Types\n// ============================================\n\nexport interface AccordionItemData {\n id: string;\n title: string;\n description?: string;\n icon?: ReactNode;\n rightSection?: ReactNode;\n content: ReactNode;\n disabled?: boolean;\n}\n\nexport interface AccordionProps {\n items: AccordionItemData[];\n defaultOpen?: string[];\n multiple?: boolean;\n variant?: MantineAccordionProps[\"variant\"];\n onChange?: (value: string | string[] | null) => void;\n}\n\n// ============================================\n// Component\n// ============================================\n\nexport function Accordion({\n items,\n defaultOpen = [],\n multiple = true,\n variant = \"separated\",\n onChange,\n}: AccordionProps) {\n if (multiple) {\n return (\n <MantineAccordion\n variant={variant}\n multiple\n defaultValue={defaultOpen}\n chevron={<ChevronDownIcon />}\n styles={accordionStyles}\n onChange={onChange as (value: string[]) => void}\n classNames={{ label: \"!py-4\" }}\n >\n {items.map((item) => (\n <AccordionItem key={item.id} item={item} />\n ))}\n </MantineAccordion>\n );\n }\n\n return (\n <MantineAccordion\n variant={variant}\n defaultValue={defaultOpen[0]}\n chevron={<ChevronDownIcon />}\n styles={accordionStyles}\n onChange={onChange as (value: string | null) => void}\n >\n {items.map((item) => (\n <AccordionItem key={item.id} item={item} />\n ))}\n </MantineAccordion>\n );\n}\n\n// ============================================\n// Sub Components\n// ============================================\n\nfunction AccordionItem({ item }: { item: AccordionItemData }) {\n return (\n <MantineAccordion.Item value={item.id}>\n <MantineAccordion.Control disabled={item.disabled} icon={item.icon}>\n <Group justify=\"space-between\" wrap=\"nowrap\" style={{ flex: 1 }}>\n <Text fw={500}>{item.title}</Text>\n {item.rightSection && <div onClick={(e) => e.stopPropagation()}>{item.rightSection}</div>}\n </Group>\n </MantineAccordion.Control>\n <MantineAccordion.Panel>\n <Stack gap=\"md\">\n {item.description && (\n <Text size=\"sm\" c=\"dimmed\">\n {item.description}\n </Text>\n )}\n {item.content}\n </Stack>\n </MantineAccordion.Panel>\n </MantineAccordion.Item>\n );\n}\n\n// ============================================\n// Shared Styles\n// ============================================\n\nconst accordionStyles = {\n control: { padding: \"17px 24px\" },\n item: { \"--item-filled-color\": \"#F3F9FF\" },\n};\n\n// ============================================\n// Compound Component (유연한 사용을 위한 대안)\n// ============================================\n\nAccordion.Root = ((props: MantineAccordionProps) => (\n <MantineAccordion chevron={<ChevronDownIcon />} styles={accordionStyles} {...props} />\n)) as typeof MantineAccordion;\nAccordion.Item = MantineAccordion.Item;\nAccordion.Control = MantineAccordion.Control;\nAccordion.Panel = MantineAccordion.Panel;\n","\"use client\";\n\nimport { useState, useEffect } from \"react\";\nimport { Box, Text, ActionIcon, Group } from \"@mantine/core\";\nimport { IconChevronLeft, IconChevronRight } from \"@tabler/icons-react\";\n\n// ============================================\n// Types\n// ============================================\n\nexport interface NavigationBannerItem {\n id: string;\n image: string;\n title: string;\n}\n\nexport interface NavigationBannerProps {\n items: NavigationBannerItem[];\n currentIndex?: number;\n onIndexChange?: (index: number) => void;\n imageSize?: number;\n emptyText?: string;\n showNavigation?: boolean;\n className?: string;\n}\n\n// ============================================\n// Component\n// ============================================\n\nexport function NavigationBanner({\n items,\n currentIndex: controlledIndex,\n onIndexChange,\n imageSize = 275,\n emptyText = \"이미지를 추가하세요\",\n showNavigation = true,\n className,\n}: NavigationBannerProps) {\n const [internalIndex, setInternalIndex] = useState(0);\n\n // Controlled or uncontrolled mode\n const currentIndex = controlledIndex ?? internalIndex;\n const setCurrentIndex = onIndexChange ?? setInternalIndex;\n\n // Reset index when items change\n useEffect(() => {\n if (currentIndex >= items.length && items.length > 0) {\n setCurrentIndex(items.length - 1);\n }\n }, [items.length, currentIndex, setCurrentIndex]);\n\n const isItems = items.length > 0;\n const currentItem = items[currentIndex];\n const isMultiple = items.length > 1;\n\n const handlePrev = () => {\n const newIndex = currentIndex > 0 ? currentIndex - 1 : items.length - 1;\n setCurrentIndex(newIndex);\n };\n\n const handleNext = () => {\n const newIndex = currentIndex < items.length - 1 ? currentIndex + 1 : 0;\n setCurrentIndex(newIndex);\n };\n\n return (\n <Box className={className}>\n {/* 배너 이미지 영역 */}\n <Box className=\"overflow-hidden rounded-sm bg-gray-100\" style={{ width: imageSize, height: imageSize }}>\n {isItems && currentItem ? (\n <img src={currentItem.image} alt={currentItem.title} className=\"h-full w-full object-cover\" />\n ) : (\n <Box className=\"flex h-full w-full items-center justify-center\">\n <Text size=\"xs\" c=\"dimmed\">\n {emptyText}\n </Text>\n </Box>\n )}\n </Box>\n\n {/* 네비게이션 영역 */}\n {showNavigation && (\n <Group justify=\"center\" gap=\"md\" mt=\"sm\" style={{ width: imageSize }}>\n <ActionIcon variant=\"subtle\" color=\"gray\" size=\"sm\" onClick={handlePrev} disabled={!isMultiple}>\n <IconChevronLeft size={18} />\n </ActionIcon>\n\n <Text size=\"xs\" fw={600} className=\"flex-1 text-center tracking-wider uppercase\" lineClamp={1}>\n {currentItem?.title || \"제목 없음\"}\n </Text>\n\n <ActionIcon variant=\"subtle\" color=\"gray\" size=\"sm\" onClick={handleNext} disabled={!isMultiple}>\n <IconChevronRight size={18} />\n </ActionIcon>\n </Group>\n )}\n </Box>\n );\n}\n","export function readFileAsDataURL(file: File): Promise<string> {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result as string);\n reader.readAsDataURL(file);\n });\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { Box, Text, Image, FileButton, ActionIcon } from \"@mantine/core\";\nimport { IconX, IconPlus, IconUpload } from \"@tabler/icons-react\";\nimport { readFileAsDataURL } from \"../utils/file\";\nimport { InputFile, Button } from \"../atoms\";\nimport { notifications } from \"@mantine/notifications\";\n\ninterface ImageUploadProps {\n value: string[];\n onChange: (images: string[]) => void;\n maxCount?: number;\n variant?: \"gallery\" | \"area\" | \"input\";\n previewWidth?: number;\n previewHeight?: number;\n previewFit?: \"cover\" | \"contain\";\n label?: string;\n buttonText?: string;\n placeholder?: string;\n description?: string;\n accept?: string;\n showCount?: boolean;\n /** 업로드 허용 최대 가로 크기(px) */\n maxWidth?: number;\n /** 업로드 허용 최대 세로 크기(px) */\n maxHeight?: number;\n}\n\nfunction DeleteIndicator({ onClick }: { onClick: () => void }) {\n return (\n <ActionIcon\n size={18}\n radius=\"xl\"\n color=\"red\"\n variant=\"filled\"\n style={{ position: \"absolute\", top: -6, right: -6, zIndex: 10 }}\n className=\"shadow-sm\"\n onClick={(e) => {\n e.stopPropagation();\n onClick();\n }}\n >\n <IconX size={10} stroke={3} />\n </ActionIcon>\n );\n}\n\nfunction validateImageDimensions(file: File, maxW?: number, maxH?: number): Promise<boolean> {\n if (!maxW && !maxH) return Promise.resolve(true);\n return new Promise((resolve) => {\n const img = new window.Image();\n img.onload = () => {\n URL.revokeObjectURL(img.src);\n const isWidthOk = !maxW || img.naturalWidth <= maxW;\n const isHeightOk = !maxH || img.naturalHeight <= maxH;\n resolve(isWidthOk && isHeightOk);\n };\n img.onerror = () => {\n URL.revokeObjectURL(img.src);\n resolve(false);\n };\n img.src = URL.createObjectURL(file);\n });\n}\n\nexport function ImageUpload({\n value,\n onChange,\n maxCount,\n variant = \"gallery\",\n previewWidth = 80,\n previewHeight,\n previewFit = \"cover\",\n label,\n buttonText = \"이미지 업로드\",\n placeholder = \"No Image\",\n description,\n accept = \"image/png,image/jpeg,image/gif\",\n showCount = false,\n maxWidth,\n maxHeight,\n}: ImageUploadProps) {\n const effectiveHeight = previewHeight ?? previewWidth;\n const [dimensionError, setDimensionError] = useState<string | null>(null);\n\n const buildDimensionErrorMessage = () => {\n if (maxWidth && maxHeight) return `이미지 크기는 최대 ${maxWidth}x${maxHeight}px 이하여야 합니다.`;\n if (maxWidth) return `이미지 가로 크기는 최대 ${maxWidth}px 이하여야 합니다.`;\n return `이미지 세로 크기는 최대 ${maxHeight}px 이하여야 합니다.`;\n };\n\n const MAX_FILE_SIZE = 20 * 1024 * 1024; // 20MB\n\n const handleFileSelect = async (file: File | null) => {\n if (!file) return;\n if (file.size > MAX_FILE_SIZE) {\n notifications.show({ title: \"업로드 실패\", message: \"파일 크기는 20MB 이하여야 합니다.\", color: \"red\" });\n return;\n }\n setDimensionError(null);\n const isValid = await validateImageDimensions(file, maxWidth, maxHeight);\n if (!isValid) {\n const msg = buildDimensionErrorMessage();\n setDimensionError(msg);\n notifications.show({ title: \"업로드 실패\", message: msg, color: \"red\" });\n return;\n }\n const src = await readFileAsDataURL(file);\n if (maxCount === 1) {\n onChange([src]);\n } else {\n onChange([...value, src]);\n }\n };\n\n const handleMultipleFileSelect = async (files: File[]) => {\n if (!files || files.length === 0) return;\n setDimensionError(null);\n const sizeOverCount = files.filter((f) => f.size > MAX_FILE_SIZE).length;\n const sizeValidFiles = files.filter((f) => f.size <= MAX_FILE_SIZE);\n if (sizeOverCount > 0) {\n notifications.show({\n title: \"업로드 실패\",\n message: `${sizeOverCount}개의 파일이 20MB를 초과하여 제외되었습니다.`,\n color: \"red\",\n });\n }\n if (sizeValidFiles.length === 0) return;\n const validFiles: File[] = [];\n for (const file of sizeValidFiles) {\n const isValid = await validateImageDimensions(file, maxWidth, maxHeight);\n if (isValid) {\n validFiles.push(file);\n }\n }\n if (validFiles.length < sizeValidFiles.length) {\n const msg = buildDimensionErrorMessage();\n setDimensionError(msg);\n notifications.show({\n title: \"업로드 실패\",\n message: `${sizeValidFiles.length - validFiles.length}개의 이미지가 크기 제한을 초과하여 제외되었습니다. ${msg}`,\n color: \"red\",\n });\n }\n if (validFiles.length === 0) return;\n const results = await Promise.all(validFiles.map(readFileAsDataURL));\n onChange([...value, ...results]);\n };\n\n const handleRemove = (index: number) => {\n onChange(value.filter((_, i) => i !== index));\n };\n\n const isAdd = maxCount === undefined || value.length < maxCount;\n\n if (variant === \"gallery\") {\n return (\n <Box>\n <Box style={{ display: \"flex\", flexWrap: \"wrap\", gap: 12, paddingTop: 6, paddingRight: 6 }}>\n {value.map((src, index) => (\n <Box key={index} style={{ position: \"relative\", width: previewWidth, height: effectiveHeight }}>\n <Image src={src} alt=\"\" w={previewWidth} h={effectiveHeight} fit={previewFit} radius=\"sm\" />\n <DeleteIndicator onClick={() => handleRemove(index)} />\n </Box>\n ))}\n {isAdd && (\n <FileButton onChange={handleFileSelect} accept={accept}>\n {(props) => (\n <Box\n {...props}\n className=\"flex cursor-pointer items-center justify-center rounded border-2 border-dashed border-gray-300 hover:border-blue-400\"\n style={{ width: previewWidth, height: effectiveHeight }}\n >\n <IconPlus size={24} className=\"text-gray-400\" />\n </Box>\n )}\n </FileButton>\n )}\n </Box>\n {showCount && (\n <Text size=\"xs\" c=\"dimmed\" mt=\"xs\">\n 등록된 사진: {value.length}장\n </Text>\n )}\n {description && (\n <Text size=\"xs\" c=\"dimmed\" mt=\"xs\">\n {description}\n </Text>\n )}\n {dimensionError && (\n <Text size=\"xs\" c=\"red\" mt=\"xs\">\n {dimensionError}\n </Text>\n )}\n </Box>\n );\n }\n\n if (variant === \"area\") {\n return (\n <Box className=\"flex flex-col items-center\">\n <FileButton onChange={handleFileSelect} accept={accept}>\n {(props) => (\n <Box\n style={{ position: \"relative\", width: previewWidth, height: effectiveHeight }}\n {...props}\n >\n <Box\n className=\"flex h-full w-full cursor-pointer items-center justify-center overflow-hidden rounded-md border border-gray-200 bg-gray-50 transition-colors hover:border-blue-400 hover:bg-gray-100\"\n >\n {value[0] ? (\n <Image src={value[0]} alt=\"\" fit={previewFit} className=\"p-4\" />\n ) : (\n <Box className=\"flex flex-col items-center gap-1\">\n <IconUpload size={20} className=\"text-gray-400\" />\n <Text size=\"xs\" c=\"dimmed\" className=\"font-medium\">\n {placeholder}\n </Text>\n </Box>\n )}\n </Box>\n {value[0] && <DeleteIndicator onClick={() => onChange([])} />}\n </Box>\n )}\n </FileButton>\n {description && (\n <Text size=\"xs\" c=\"dimmed\" mt=\"xs\">\n {description}\n </Text>\n )}\n {dimensionError && (\n <Text size=\"xs\" c=\"red\" mt=\"xs\">\n {dimensionError}\n </Text>\n )}\n </Box>\n );\n }\n\n // variant === \"input\"\n const isMultiple = maxCount === undefined || maxCount > 1;\n\n return (\n <Box>\n {isMultiple ? (\n <InputFile\n label={label}\n placeholder=\"이미지를 선택하세요\"\n accept={accept}\n leftSection={<IconUpload size={16} />}\n onChange={handleMultipleFileSelect}\n multiple\n value={[]}\n />\n ) : (\n <InputFile\n label={label}\n placeholder=\"이미지를 선택하세요\"\n accept={accept}\n leftSection={<IconUpload size={16} />}\n onChange={handleFileSelect}\n />\n )}\n {value.length > 0 && (\n <Box style={{ display: \"flex\", flexWrap: \"wrap\", gap: 12, paddingTop: 6, paddingRight: 6, marginTop: 8 }}>\n {value.map((src, index) => (\n <Box key={index} style={{ position: \"relative\", width: previewWidth, height: effectiveHeight }}>\n <Image src={src} alt=\"\" w={previewWidth} h={effectiveHeight} fit={previewFit} radius=\"sm\" />\n <DeleteIndicator onClick={() => handleRemove(index)} />\n </Box>\n ))}\n </Box>\n )}\n {showCount && (\n <Text size=\"xs\" c=\"dimmed\" mt=\"xs\">\n {value.length}개의 이미지가 등록되었습니다.\n </Text>\n )}\n {description && (\n <Text size=\"xs\" c=\"dimmed\" mt=\"xs\">\n {description}\n </Text>\n )}\n {dimensionError && (\n <Text size=\"xs\" c=\"red\" mt=\"xs\">\n {dimensionError}\n </Text>\n )}\n </Box>\n );\n}\n","import { Group, Text, Title, TitleProps } from \"@mantine/core\";\nimport React from \"react\";\n\nexport function PageTitle({\n title,\n subText,\n rightContent,\n leftContent,\n ...props\n}: TitleProps & { subText?: string; rightContent?: React.ReactNode; leftContent?: React.ReactNode }) {\n return (\n <Group justify=\"space-between\" align=\"end\" mb=\"xl\">\n {leftContent}\n <Title order={2} c=\"var(--color-brand-dark)\" {...props}>\n {title}\n {subText && (\n <Text size=\"md\" c=\"var(--color-subtitle)\" mt=\"5\">\n {subText}\n </Text>\n )}\n </Title>\n {rightContent}\n </Group>\n );\n}\n","import { Box, LoadingOverlay } from \"@mantine/core\";\n\ninterface PageLoadingProps {\n bg?: string;\n}\n\nexport function PageLoading({ bg = \"transparent\" }: PageLoadingProps) {\n return (\n <Box pos=\"fixed\" top={0} left=\"var(--sidebar-width)\" right={0} bottom={0} style={{ zIndex: 400 }}>\n <LoadingOverlay\n visible\n overlayProps={{\n backgroundOpacity: bg === \"transparent\" ? 0 : 1,\n color: bg,\n }}\n />\n </Box>\n );\n}\n","import { Group, Paper as MantinePaper, PaperProps, Text, Title } from \"@mantine/core\";\nimport React, { ReactNode } from \"react\";\n\n/**\n *\n * @param title - 패널 제목\n * @param totalCount - 내부 데이터 총 개수\n * @param description - 패널 설명\n * @param children - 패널 컨텐츠\n * @param headerRightContent - 패널 헤더 오른쪽 컨텐츠\n * @param contentBottomPadding - 패널 컨텐츠 하단 패딩 (기본값: 40px)\n * @param footer - 패널 푸터\n * @returns 패널 컴포넌트\n */\nexport const Panel = ({\n title,\n totalCount,\n description,\n children,\n headerRightContent,\n contentBottomPadding = 40,\n footer,\n ...props\n}: PaperProps & {\n title?: string | React.ReactNode;\n totalCount?: number;\n description?: string;\n children?: React.ReactNode;\n headerRightContent?: React.ReactNode;\n contentBottomPadding?: number;\n footer?: React.ReactNode;\n}) => {\n return (\n <MantinePaper bg=\"white\" radius=\"lg\" shadow=\"xs\" className=\"border-default border-1\" {...props}>\n {/* 헤더 영역 */}\n {title && (\n <div className=\"px-[30px]\">\n <Group justify=\"space-between\" align=\"center\" gap=\"xs\" py=\"24\">\n {/* title */}\n <Group align=\"baseline\" gap=\"10\">\n <Title c=\"blue\" order={2} fz={20} fw={700} lh=\"2\">\n {title}\n </Title>\n {totalCount && (\n <Text c=\"blue\" size=\"20\" lh=\"1\">\n {totalCount}\n </Text>\n )}\n </Group>\n\n {/* headerRightContent */}\n {headerRightContent}\n </Group>\n\n {/* description */}\n {description && (\n <Text c=\"#666\" fz={14} fw={400} lh=\"160%\" mb=\"24\">\n {description}\n </Text>\n )}\n </div>\n )}\n\n {/* 컨텐츠 영역 */}\n <div className=\"px-[30px]\" style={{ paddingBottom: `${contentBottomPadding}px` }}>\n {children}\n </div>\n\n {/* 푸터 영역 */}\n {footer && <div className=\"border-gray-2 border-t px-[30px] py-5\">{footer}</div>}\n </MantinePaper>\n );\n};\n\n// ============================================\n// Sub Component\n// ============================================\n/**\n *\n * @param title - 섹션 제목 (스타일은 패널 제목과 동일)\n * @param children - 섹션 컨텐츠\n * @returns\n */\nfunction Section({ title, children }: { title?: string; children: ReactNode }) {\n return (\n <div className=\"mb-6 last:mb-0\">\n {title && (\n <Text c=\"blue\" fz={20} fw={700} lh=\"2\" py=\"24\">\n {title}\n </Text>\n )}\n {children}\n </div>\n );\n}\n\nPanel.Section = Section;\n","import { Box } from \"@mantine/core\";\nimport { PropsWithChildren } from \"react\";\n\nexport default function BoxContainer({ children }: PropsWithChildren) {\n return (\n <Box\n component=\"main\"\n style={{\n flexGrow: 1,\n padding: 24,\n }}\n >\n {children}\n </Box>\n );\n}\n","\"use client\";\n\nimport { ReactNode } from \"react\";\nimport { Grid } from \"@mantine/core\";\n\n// ============================================\n// Types\n// ============================================\n\ninterface EditorLayoutProps {\n leftPanel: ReactNode;\n centerPanel: ReactNode;\n rightPanel: ReactNode;\n leftSpan?: number;\n centerSpan?: number;\n rightSpan?: number;\n}\n\n// ============================================\n// Component\n// ============================================\n\nexport function EditorLayout({\n leftPanel,\n centerPanel,\n rightPanel,\n leftSpan = 2,\n centerSpan = 5,\n rightSpan = 5,\n}: EditorLayoutProps) {\n return (\n <Grid gutter=\"md\">\n {/* 왼쪽: 컴포넌트 선택 영역 */}\n <Grid.Col span={leftSpan}>{leftPanel}</Grid.Col>\n\n {/* 중앙: 프리뷰 영역 */}\n <Grid.Col span={centerSpan}>{centerPanel}</Grid.Col>\n\n {/* 오른쪽: 설정/등록 영역 */}\n <Grid.Col span={rightSpan}>{rightPanel}</Grid.Col>\n </Grid>\n );\n}","import { Modal as MantineModal, ModalProps } from \"@mantine/core\";\nimport React from \"react\";\n\nexport default function Modal({\n opened,\n onClose,\n title,\n size,\n styles,\n children,\n ...props\n}: ModalProps & { children: React.ReactNode }) {\n return (\n <MantineModal\n opened={opened}\n onClose={onClose}\n title={title}\n size={size}\n styles={styles}\n {...props}\n classNames={{\n ...props.classNames,\n header: \"!-mt-8 !p-6\",\n title: `text-center !font-bold ${props.classNames?.title ?? \"\"}`,\n body: `!p-6 ${props.classNames?.body ?? \"\"}`,\n }}\n >\n {children}\n </MantineModal>\n );\n}\n","import React from \"react\";\nimport { Button } from \"../atoms\";\nimport Modal from \"./Modal\";\nimport { Box, Group } from \"@mantine/core\";\n\ninterface ModalProps {\n opened: boolean;\n onClose: () => void;\n onConfirm: () => void;\n message?: string | React.ReactNode;\n}\n\nexport default function ModalDeleteConfirm({ opened, onClose, onConfirm, message }: ModalProps) {\n return (\n <Modal\n opened={opened}\n onClose={onClose}\n size=\"md\"\n centered\n withCloseButton={false}\n classNames={{ body: \"text-center\" }}\n >\n <Box className=\"flex flex-col items-center gap-5\">\n <div className=\"mx-auto flex h-14 w-14 items-center justify-center rounded-full bg-red-50\">\n <i className=\"text-error text-2xl\" data-fa-i2svg=\"\">\n <svg\n width=\"24\"\n height=\"24\"\n aria-hidden=\"true\"\n focusable=\"false\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 448 512\"\n >\n <path\n fill=\"currentColor\"\n d=\"M135.2 17.7C140.6 6.8 151.7 0 163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zm96 64c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16z\"\n ></path>\n </svg>\n </i>\n </div>\n <h3 className=\"text-xl leading-tight font-bold text-gray-900\">정말 삭제하시겠습니까?</h3>\n\n {message && <p className=\"-mt-2 text-sm leading-relaxed text-gray-600\">{message}</p>}\n\n <Group justify=\"center\" gap=\"xs\">\n <Button variant=\"outline\" color=\"gray\" size=\"md\" onClick={onClose}>\n 취소\n </Button>\n <Button variant=\"filled\" color=\"red\" size=\"md\" onClick={onConfirm}>\n 삭제\n </Button>\n </Group>\n </Box>\n </Modal>\n );\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport Modal from \"./Modal\";\nimport { Box, Text } from \"@mantine/core\";\n\nexport function ModalTokenExpired() {\n const [isOpened, setIsOpened] = useState(false);\n\n useEffect(() => {\n const handleTokenExpired = () => {\n setIsOpened(true);\n\n setTimeout(() => {\n localStorage.removeItem(\"accessToken\");\n localStorage.removeItem(\"tokenExpiresAt\");\n localStorage.removeItem(\"featureVersion\");\n localStorage.removeItem(\"units\");\n window.location.href = \"/login\";\n }, 3000);\n };\n\n window.addEventListener(\"token-expired\", handleTokenExpired);\n return () => window.removeEventListener(\"token-expired\", handleTokenExpired);\n }, []);\n\n return (\n <Modal opened={isOpened} onClose={() => {}} withCloseButton={false} centered size=\"sm\" zIndex={1000}>\n <Box className=\"flex flex-col items-center gap-5\">\n <div className=\"mx-auto flex h-14 w-14 items-center justify-center rounded-full bg-red-50\">\n <i className=\"text-error text-2xl\" data-fa-i2svg=\"\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className=\"icon icon-tabler icons-tabler-filled icon-tabler-exclamation-circle\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M17 3.34a10 10 0 1 1 -15 8.66l.005 -.324a10 10 0 0 1 14.995 -8.336m-5 11.66a1 1 0 0 0 -1 1v.01a1 1 0 0 0 2 0v-.01a1 1 0 0 0 -1 -1m0 -7a1 1 0 0 0 -1 1v4a1 1 0 0 0 2 0v-4a1 1 0 0 0 -1 -1\" />\n </svg>\n </i>\n </div>\n <Text ta=\"center\" fw={600} size=\"lg\" mb=\"xs\">\n 토큰이 만료되었습니다 <br />\n 잠시 후 로그인 페이지로 이동합니다.\n </Text>\n </Box>\n </Modal>\n );\n}\n","\"use client\";\n\nimport React, { useState, useMemo, useEffect } from \"react\";\nimport { Paper, Table, Pagination, Box, CSSProperties } from \"@mantine/core\";\n\nexport interface Column<T> {\n id: string;\n label: string;\n minWidth?: number;\n align?: \"left\" | \"right\" | \"center\";\n format?: (value: any, row: T) => React.ReactNode;\n style?: CSSProperties;\n headerStyle?: CSSProperties;\n}\n\ninterface DataTableProps<T> {\n columns: Column<T>[];\n data: T[];\n getRowId: (row: T) => string | number;\n onRowClick?: (row: T) => void;\n rowsPerPageOptions?: number[];\n defaultRowsPerPage?: number;\n style?: CSSProperties;\n containerStyle?: CSSProperties;\n rowStyle?: CSSProperties;\n emptyMessage?: string;\n}\n\nexport default function DataTable<T extends Record<string, any>>({\n columns,\n data,\n getRowId,\n onRowClick,\n rowsPerPageOptions = [5, 10, 25, 50],\n defaultRowsPerPage = 10,\n style,\n containerStyle,\n rowStyle,\n emptyMessage = \"데이터가 없습니다.\",\n}: DataTableProps<T>) {\n const [page, setPage] = useState(1);\n const [rowsPerPage, setRowsPerPage] = useState(defaultRowsPerPage);\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n // 페이지네이션된 데이터\n const paginatedData = useMemo(() => {\n const startIndex = (page - 1) * rowsPerPage;\n const endIndex = startIndex + rowsPerPage;\n return data.slice(startIndex, endIndex);\n }, [data, page, rowsPerPage]);\n\n const totalPages = Math.ceil(data.length / rowsPerPage);\n\n const handleRowClick = (row: T) => {\n if (onRowClick) {\n onRowClick(row);\n }\n };\n\n return (\n <Paper shadow=\"xs\" p=\"md\" mt=\"md\" style={containerStyle}>\n <Table style={style} highlightOnHover={!!onRowClick}>\n <Table.Thead>\n <Table.Tr>\n {columns.map((column) => (\n <Table.Th\n key={column.id}\n style={{\n minWidth: column.minWidth,\n fontWeight: \"bold\",\n textAlign: column.align || \"left\",\n ...column.headerStyle,\n }}\n >\n {column.label}\n </Table.Th>\n ))}\n </Table.Tr>\n </Table.Thead>\n <Table.Tbody>\n {paginatedData.length === 0 ? (\n <Table.Tr>\n <Table.Td colSpan={columns.length} style={{ textAlign: \"center\", padding: \"32px\" }}>\n {emptyMessage}\n </Table.Td>\n </Table.Tr>\n ) : (\n paginatedData.map((row, index) => (\n <Table.Tr\n key={getRowId(row)}\n onClick={() => handleRowClick(row)}\n style={{\n cursor: onRowClick ? \"pointer\" : \"default\",\n ...rowStyle,\n }}\n >\n {columns.map((column) => {\n const value = row[column.id];\n return (\n <Table.Td\n suppressHydrationWarning\n key={column.id}\n style={{\n textAlign: column.align || \"left\",\n ...column.style,\n }}\n >\n {column.id === \"no\" ? (mounted ? (page - 1) * rowsPerPage + index + 1 : null) : null}\n {column.id !== \"no\" && (column.format ? column.format(value, row) : value)}\n </Table.Td>\n );\n })}\n </Table.Tr>\n ))\n )}\n </Table.Tbody>\n </Table>\n <Box mt=\"md\" className=\"flex justify-end\">\n <Pagination value={page} onChange={setPage} total={totalPages} />\n </Box>\n </Paper>\n );\n}\n","\"use client\";\n\nimport { ActionIcon, Title, Box } from \"@mantine/core\";\nimport { IconArrowLeft } from \"@tabler/icons-react\";\nimport { useRouter } from \"next/navigation\";\n\nexport default function PageHeader({ headerText, back }: { headerText: string; back?: boolean }) {\n const router = useRouter();\n\n const handleBack = () => {\n router.back();\n };\n\n return (\n <Box style={{ display: \"flex\", alignItems: \"center\", gap: 8 }}>\n {back && (\n <ActionIcon variant=\"subtle\" size=\"lg\" onClick={handleBack}>\n <IconArrowLeft size={20} />\n </ActionIcon>\n )}\n <Title order={2}>{headerText}</Title>\n </Box>\n );\n}\n","import React from \"react\";\nimport { Box, Text } from \"@mantine/core\";\nimport { Divider } from \"@mantine/core\";\n\ninterface Props {\n title: string;\n children: React.ReactNode;\n}\nconst SectionGroupWithTitle = ({ title, children }: Props) => {\n return (\n <Box>\n <Text fw={600} mb=\"sm\">\n {title}\n </Text>\n <Divider mb=\"xs\" />\n {children}\n </Box>\n );\n};\n\nexport default SectionGroupWithTitle;\n","\"use client\";\n\nimport { Badge, Button, InputText } from \"../atoms\";\nimport { ActionIcon, Box, Group } from \"@mantine/core\";\nimport { IconPlus, IconX } from \"@tabler/icons-react\";\nimport { useState } from \"react\";\n\nexport interface TagInputItem {\n id: string;\n label: string;\n}\n\nexport interface TagInputProps {\n label?: string;\n placeholder?: string;\n items: TagInputItem[];\n onAdd: (values: string[]) => void;\n onRemove: (id: string) => void;\n badgeVariant?: \"filled\" | \"light\";\n badgeColor?: string;\n}\n\nexport function TagInput({\n label,\n placeholder,\n items,\n onAdd,\n onRemove,\n badgeVariant = \"filled\",\n badgeColor = \"blue\",\n}: TagInputProps) {\n const [inputValue, setInputValue] = useState(\"\");\n\n const handleAdd = () => {\n if (!inputValue.trim()) return;\n const values = inputValue\n .split(\",\")\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n onAdd(values);\n setInputValue(\"\");\n };\n\n return (\n <Box>\n <InputText\n size=\"xs\"\n label={label}\n placeholder={placeholder}\n value={inputValue}\n onChange={(e) => setInputValue(e.currentTarget.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && !e.nativeEvent.isComposing) {\n e.preventDefault();\n handleAdd();\n }\n }}\n rightSection={\n <Button size=\"xs\" variant=\"light\" onClick={handleAdd}>\n <IconPlus size={10} />\n </Button>\n }\n rightSectionWidth={27}\n mb=\"xs\"\n />\n {items.length > 0 && (\n <Group gap={4}>\n {items.map((item) => (\n <Badge\n key={item.id}\n size=\"sm\"\n variant={badgeVariant}\n color={badgeColor}\n h=\"24\"\n rightSection={\n <ActionIcon\n size={14}\n variant=\"transparent\"\n c={badgeVariant === \"light\" ? \"gray\" : \"white\"}\n onClick={() => onRemove(item.id)}\n >\n <IconX size={10} />\n </ActionIcon>\n }\n >\n {item.label}\n </Badge>\n ))}\n </Group>\n )}\n </Box>\n );\n}\n","\"use client\";\n\nimport { GripVerticalIcon, TrashIcon } from \"../atoms\";\nimport { Accordion } from \".\";\nimport { DragDropContext, Draggable, Droppable, DropResult } from \"@hello-pangea/dnd\";\nimport { Box, Checkbox, Group, Stack, Text } from \"@mantine/core\";\nimport React, { ReactNode, useEffect, useState } from \"react\";\n\n// ============================================\n// Types\n// ============================================\n\nexport interface AccordionDraggableItem {\n id: string;\n title: string;\n content: ReactNode;\n icon?: ReactNode;\n rightSection?: ReactNode;\n isRequired?: boolean;\n isUsed?: boolean;\n}\n\nexport interface AccordionDraggableProps {\n items: AccordionDraggableItem[];\n droppableId?: string;\n activeId?: string | null;\n onActiveChange?: (id: string | null) => void;\n onReorder: (result: DropResult) => void;\n onDelete?: (id: string) => void;\n onRequiredChange?: (id: string, value: boolean) => void;\n onUsedChange?: (id: string, value: boolean) => void;\n emptyMessage?: string;\n showDeleteButton?: boolean;\n showRequiredToggle?: boolean;\n showUsedToggle?: boolean;\n draggingBgColor?: string;\n}\n\n// ============================================\n// Droppable wrapper — 마운트 후 활성화하여 hydration 불일치 방지\n// ============================================\n\nfunction StrictModeDroppable({ children, ...props }: React.ComponentProps<typeof Droppable>) {\n const [isEnabled, setIsEnabled] = useState(false);\n\n useEffect(() => {\n const animation = requestAnimationFrame(() => setIsEnabled(true));\n return () => {\n cancelAnimationFrame(animation);\n setIsEnabled(false);\n };\n }, []);\n\n if (!isEnabled) return null;\n\n return <Droppable {...props}>{children}</Droppable>;\n}\n\n// ============================================\n// Component\n// ============================================\n\nexport function AccordionDraggable({\n items,\n droppableId = \"draggable-accordion\",\n activeId = null,\n onActiveChange,\n onReorder,\n onDelete,\n onRequiredChange,\n onUsedChange,\n emptyMessage = \"항목이 없습니다\",\n showDeleteButton = true,\n showRequiredToggle = false,\n showUsedToggle = false,\n draggingBgColor = \"var(--color-dragging)\",\n}: AccordionDraggableProps) {\n if (items.length === 0) {\n return (\n <Box style={{ padding: 40, textAlign: \"center\" }}>\n <Text c=\"dimmed\">{emptyMessage}</Text>\n </Box>\n );\n }\n\n return (\n <DragDropContext onDragEnd={onReorder}>\n <StrictModeDroppable droppableId={droppableId}>\n {(provided) => (\n <Box ref={provided.innerRef} {...provided.droppableProps}>\n <Accordion.Root\n variant=\"separated\"\n value={activeId}\n onChange={onActiveChange}\n classNames={{ label: \"!py-0\", content: \"!p-6 !pb-10\" }}\n >\n {items.map((item, index) => (\n <Draggable key={item.id} draggableId={item.id} index={index}>\n {(provided) => (\n <Box\n ref={provided.innerRef}\n {...provided.draggableProps}\n style={{\n ...provided.draggableProps.style,\n marginBottom: 8,\n }}\n >\n <Accordion.Item\n value={item.id}\n data-active={activeId === item.id || undefined}\n style={{ backgroundColor: draggingBgColor }}\n className=\"group data-[active]:!bg-[var(--color-active,transparent)]\"\n >\n <Accordion.Control\n icon={item.icon}\n className=\"group-data-[active]:!border-b group-data-[active]:!border-gray-200\"\n >\n <Group gap=\"xs\" wrap=\"nowrap\" style={{ width: \"100%\" }}>\n {/* 드래그 핸들 */}\n <span {...provided.dragHandleProps} onClick={(e) => e.stopPropagation()}>\n <GripVerticalIcon />\n </span>\n\n {/* 제목 */}\n <Text fw={500} className=\"flex-1 !text-[15px]\">\n {item.title}\n </Text>\n\n {/* 오른쪽 섹션 */}\n {item.rightSection && (\n <Box\n onClick={(e) => e.stopPropagation()}\n style={{\n marginRight: 16,\n padding: \"4px 8px\",\n borderRadius: 4,\n backgroundColor: \"var(--color-right-section)\",\n }}\n >\n {item.rightSection}\n </Box>\n )}\n\n {/* 사용/필수 토글 */}\n {(showRequiredToggle || showUsedToggle) && !item.rightSection && (\n <Group\n gap=\"sm\"\n wrap=\"nowrap\"\n className=\"mr-6 h-5 border-r border-[#E1E4E8] pr-6\"\n onClick={(e) => e.stopPropagation()}\n >\n {/* 사용 토글 */}\n {showUsedToggle && onUsedChange && (\n <Checkbox\n checked={item.isUsed ?? false}\n onChange={(e) => onUsedChange(item.id, e.currentTarget.checked)}\n label=\"사용\"\n />\n )}\n {/* 필수 토글 */}\n {showRequiredToggle && onRequiredChange && (\n <Checkbox\n checked={item.isRequired ?? false}\n onChange={(e) => onRequiredChange(item.id, e.currentTarget.checked)}\n label=\"필수\"\n />\n )}\n </Group>\n )}\n\n {/* 삭제 버튼 */}\n {showDeleteButton && onDelete && !item.rightSection && (\n <span\n className=\"mr-6 h-5 border-r border-[#E1E4E8] pr-6\"\n onClick={(e) => {\n e.stopPropagation();\n onDelete(item.id);\n }}\n >\n <TrashIcon color=\"red\" />\n </span>\n )}\n </Group>\n </Accordion.Control>\n <Accordion.Panel>\n <Stack gap=\"24\">{item.content}</Stack>\n </Accordion.Panel>\n </Accordion.Item>\n </Box>\n )}\n </Draggable>\n ))}\n {provided.placeholder}\n </Accordion.Root>\n </Box>\n )}\n </StrictModeDroppable>\n </DragDropContext>\n );\n}\n"]}