@dmsej108/design-system 2.2.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 (104) hide show
  1. package/dist/components/Badge/Badge.d.ts +13 -0
  2. package/dist/components/Badge/Badge.d.ts.map +1 -0
  3. package/dist/components/Badge/index.d.ts +3 -0
  4. package/dist/components/Badge/index.d.ts.map +1 -0
  5. package/dist/components/BaseButton/BaseButton.d.ts +14 -0
  6. package/dist/components/BaseButton/BaseButton.d.ts.map +1 -0
  7. package/dist/components/BaseButton/index.d.ts +3 -0
  8. package/dist/components/BaseButton/index.d.ts.map +1 -0
  9. package/dist/components/Button/Button.d.ts +14 -0
  10. package/dist/components/Button/Button.d.ts.map +1 -0
  11. package/dist/components/Button/index.d.ts +3 -0
  12. package/dist/components/Button/index.d.ts.map +1 -0
  13. package/dist/components/Card/Card.d.ts +13 -0
  14. package/dist/components/Card/Card.d.ts.map +1 -0
  15. package/dist/components/Card/index.d.ts +3 -0
  16. package/dist/components/Card/index.d.ts.map +1 -0
  17. package/dist/components/Checkbox/Checkbox.d.ts +30 -0
  18. package/dist/components/Checkbox/Checkbox.d.ts.map +1 -0
  19. package/dist/components/Checkbox/index.d.ts +3 -0
  20. package/dist/components/Checkbox/index.d.ts.map +1 -0
  21. package/dist/components/Chip/Chip.d.ts +17 -0
  22. package/dist/components/Chip/Chip.d.ts.map +1 -0
  23. package/dist/components/Chip/index.d.ts +3 -0
  24. package/dist/components/Chip/index.d.ts.map +1 -0
  25. package/dist/components/DatePicker/DatePicker.d.ts +18 -0
  26. package/dist/components/DatePicker/DatePicker.d.ts.map +1 -0
  27. package/dist/components/DatePicker/index.d.ts +3 -0
  28. package/dist/components/DatePicker/index.d.ts.map +1 -0
  29. package/dist/components/FileInput/FileInput.d.ts +19 -0
  30. package/dist/components/FileInput/FileInput.d.ts.map +1 -0
  31. package/dist/components/FileInput/index.d.ts +3 -0
  32. package/dist/components/FileInput/index.d.ts.map +1 -0
  33. package/dist/components/Icon/Icon.d.ts +17 -0
  34. package/dist/components/Icon/Icon.d.ts.map +1 -0
  35. package/dist/components/Icon/index.d.ts +3 -0
  36. package/dist/components/Icon/index.d.ts.map +1 -0
  37. package/dist/components/Input/Input.d.ts +14 -0
  38. package/dist/components/Input/Input.d.ts.map +1 -0
  39. package/dist/components/Input/index.d.ts +3 -0
  40. package/dist/components/Input/index.d.ts.map +1 -0
  41. package/dist/components/Modal/Modal.d.ts +18 -0
  42. package/dist/components/Modal/Modal.d.ts.map +1 -0
  43. package/dist/components/Modal/index.d.ts +3 -0
  44. package/dist/components/Modal/index.d.ts.map +1 -0
  45. package/dist/components/Pagination/Pagination.d.ts +11 -0
  46. package/dist/components/Pagination/Pagination.d.ts.map +1 -0
  47. package/dist/components/Pagination/index.d.ts +3 -0
  48. package/dist/components/Pagination/index.d.ts.map +1 -0
  49. package/dist/components/Radio/Radio.d.ts +25 -0
  50. package/dist/components/Radio/Radio.d.ts.map +1 -0
  51. package/dist/components/Radio/index.d.ts +3 -0
  52. package/dist/components/Radio/index.d.ts.map +1 -0
  53. package/dist/components/Select/Select.d.ts +19 -0
  54. package/dist/components/Select/Select.d.ts.map +1 -0
  55. package/dist/components/Select/index.d.ts +3 -0
  56. package/dist/components/Select/index.d.ts.map +1 -0
  57. package/dist/components/Tab/Tab.d.ts +18 -0
  58. package/dist/components/Tab/Tab.d.ts.map +1 -0
  59. package/dist/components/Tab/index.d.ts +3 -0
  60. package/dist/components/Tab/index.d.ts.map +1 -0
  61. package/dist/components/Table/Table.d.ts +23 -0
  62. package/dist/components/Table/Table.d.ts.map +1 -0
  63. package/dist/components/Table/index.d.ts +3 -0
  64. package/dist/components/Table/index.d.ts.map +1 -0
  65. package/dist/components/Textarea/Textarea.d.ts +15 -0
  66. package/dist/components/Textarea/Textarea.d.ts.map +1 -0
  67. package/dist/components/Textarea/index.d.ts +3 -0
  68. package/dist/components/Textarea/index.d.ts.map +1 -0
  69. package/dist/components/Toast/Toast.d.ts +32 -0
  70. package/dist/components/Toast/Toast.d.ts.map +1 -0
  71. package/dist/components/Toast/index.d.ts +3 -0
  72. package/dist/components/Toast/index.d.ts.map +1 -0
  73. package/dist/components/Typography/Typography.d.ts +10 -0
  74. package/dist/components/Typography/Typography.d.ts.map +1 -0
  75. package/dist/components/Typography/index.d.ts +3 -0
  76. package/dist/components/Typography/index.d.ts.map +1 -0
  77. package/dist/index.css +1 -0
  78. package/dist/index.d.ts +39 -0
  79. package/dist/index.d.ts.map +1 -0
  80. package/dist/index.js +1407 -0
  81. package/dist/index.js.map +1 -0
  82. package/package.json +76 -0
  83. package/src/styles/base/common.css +2060 -0
  84. package/src/styles/base/ellipsis.xml +1 -0
  85. package/src/styles/base/fonts.css +39 -0
  86. package/src/styles/base/layout.css +864 -0
  87. package/src/styles/base/reset.css +241 -0
  88. package/src/styles/components/breadcrumb.css +39 -0
  89. package/src/styles/components/button.css +423 -0
  90. package/src/styles/components/dashboard.css +970 -0
  91. package/src/styles/components/ellipsis.xml +1 -0
  92. package/src/styles/components/form.css +744 -0
  93. package/src/styles/components/loading.css +93 -0
  94. package/src/styles/components/login.css +405 -0
  95. package/src/styles/components/modal.css +218 -0
  96. package/src/styles/components/operate.css +85 -0
  97. package/src/styles/components/tab.css +80 -0
  98. package/src/styles/components/table.css +1024 -0
  99. package/src/styles/components/tree.css +284 -0
  100. package/src/styles/img/kb_logo.png +0 -0
  101. package/src/styles/index.css +18 -0
  102. package/src/styles/swiper.min.css +658 -0
  103. package/src/tokens/Tokens.stories.tsx +185 -0
  104. package/src/tokens/index.css +295 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/components/Button/Button.tsx","../src/components/Input/Input.tsx","../src/components/Card/Card.tsx","../src/components/Badge/Badge.tsx","../src/components/Typography/Typography.tsx","../src/components/FileInput/FileInput.tsx","../src/components/Modal/Modal.tsx","../src/components/Toast/Toast.tsx","../src/components/Select/Select.tsx","../src/components/Icon/Icon.tsx","../src/components/DatePicker/DatePicker.tsx","../src/components/Pagination/Pagination.tsx","../src/components/BaseButton/BaseButton.tsx","../src/components/Radio/Radio.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Chip/Chip.tsx","../src/components/Textarea/Textarea.tsx","../src/components/Tab/Tab.tsx","../src/components/Table/Table.tsx"],"sourcesContent":["import React from 'react';\nimport styles from './Button.module.css';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger';\nexport type ButtonSize = 'small' | 'medium' | 'large';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n loading?: boolean;\n fullWidth?: boolean;\n iconOnly?: boolean;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = 'primary',\n size = 'medium',\n loading = false,\n fullWidth = false,\n iconOnly = false,\n leftIcon,\n rightIcon,\n disabled,\n children,\n className = '',\n ...rest\n },\n ref,\n ) => {\n const classes = [\n styles.btn,\n styles[variant],\n styles[size],\n fullWidth ? styles.fullWidth : '',\n iconOnly ? styles.iconOnly : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button ref={ref} className={classes} disabled={disabled || loading} {...rest}>\n {loading && <span className={styles.spinner} aria-hidden=\"true\" />}\n {!loading && leftIcon}\n {children}\n {!loading && rightIcon}\n </button>\n );\n },\n);\n\nButton.displayName = 'SButton';\n","import React from 'react';\nimport styles from './Input.module.css';\n\nexport type InputSize = 'small' | 'medium' | 'large';\n\nexport interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'prefix'> {\n label?: string;\n size?: InputSize;\n error?: boolean;\n helperText?: string;\n errorText?: string;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n required?: boolean;\n}\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n label,\n size = 'medium',\n error = false,\n helperText,\n errorText,\n prefix,\n suffix,\n required,\n id,\n className = '',\n ...rest\n },\n ref,\n ) => {\n const inputId = id ?? label?.toLowerCase().replace(/\\s+/g, '-');\n\n const wrapperClasses = [\n styles.inputWrapper,\n styles[size],\n error ? styles.error : '',\n prefix ? styles.hasPrefix : '',\n suffix ? styles.hasSuffix : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={styles.wrapper}>\n {label && (\n <label htmlFor={inputId} className={styles.label}>\n {label}\n {required && <span className={styles.required}>*</span>}\n </label>\n )}\n <div className={wrapperClasses}>\n {prefix && <span className={styles.prefix}>{prefix}</span>}\n <input ref={ref} id={inputId} className={styles.input} required={required} {...rest} />\n {suffix && <span className={styles.suffix}>{suffix}</span>}\n </div>\n {error && errorText && <p className={styles.errorText}>{errorText}</p>}\n {!error && helperText && <p className={styles.helperText}>{helperText}</p>}\n </div>\n );\n },\n);\n\nInput.displayName = 'SInput';\n","import React from 'react';\nimport styles from './Card.module.css';\n\nexport type CardVariant = 'flat' | 'raised' | 'sunken';\nexport type CardSize = 'small' | 'medium' | 'large';\n\nexport interface CardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n variant?: CardVariant;\n size?: CardSize;\n title?: React.ReactNode;\n description?: React.ReactNode;\n headerAction?: React.ReactNode;\n footer?: React.ReactNode;\n}\n\nexport const Card: React.FC<CardProps> = ({\n variant = 'raised',\n size = 'medium',\n title,\n description,\n headerAction,\n footer,\n children,\n className = '',\n ...rest\n}) => {\n const classes = [styles.card, styles[variant], styles[size], className]\n .filter(Boolean)\n .join(' ');\n\n const hasHeader = title || headerAction;\n\n return (\n <div className={classes} {...rest}>\n {hasHeader && (\n <div className={styles.header}>\n <div>\n {title && <h3 className={styles.title}>{title}</h3>}\n {description && <p className={styles.description}>{description}</p>}\n </div>\n {headerAction && <div>{headerAction}</div>}\n </div>\n )}\n {children}\n {footer && <div className={styles.footer}>{footer}</div>}\n </div>\n );\n};\n\nCard.displayName = 'SCard';\n","import React from 'react';\nimport styles from './Badge.module.css';\n\nexport type BadgeVariant =\n | 'primary'\n | 'secondary'\n | 'success'\n | 'warning'\n | 'error'\n | 'info'\n | 'neutral';\nexport type BadgeSize = 'small' | 'medium' | 'large';\nexport type BadgeType = 'a' | 'b' | 'c'\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n variant?: BadgeVariant;\n size?: BadgeSize;\n dot?: boolean;\n children?: React.ReactNode;\n contorl?: BadgeType;\n}\n\nexport const Badge: React.FC<BadgeProps> = ({\n variant = 'primary',\n size = 'medium',\n dot = false,\n children,\n contorl='b',\n className = '',\n ...rest\n}) => {\n const classes = [styles.badge, styles[variant], styles[size], className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <span className={classes} {...rest} data-type={contorl}>\n {dot && <span className={styles.dot} aria-hidden=\"true\" />}\n {children}\n </span>\n );\n};\n\nBadge.displayName = 'SBadge';\n","import React from 'react';\nimport styles from './Typography.module.css';\n\nexport type TypographyVariant =\n | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'\n | 'body1' | 'body2'\n | 'caption' | 'overline' | 'label';\n\nexport type TypographyColor =\n | 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'muted';\n\nconst variantTagMap: Record<TypographyVariant, keyof React.JSX.IntrinsicElements> = {\n h1: 'h1', h2: 'h2', h3: 'h3', h4: 'h4', h5: 'h5', h6: 'h6',\n body1: 'p', body2: 'p',\n caption: 'span', overline: 'span', label: 'span',\n};\n\nexport interface TypographyProps extends React.HTMLAttributes<HTMLElement> {\n variant?: TypographyVariant;\n color?: TypographyColor;\n as?: keyof React.JSX.IntrinsicElements;\n}\n\nconst colorClassMap: Record<TypographyColor, string> = {\n default: styles.colorDefault,\n primary: styles.colorPrimary,\n secondary: styles.colorSecondary,\n success: styles.colorSuccess,\n warning: styles.colorWarning,\n error: styles.colorError,\n muted: styles.colorMuted,\n};\n\nexport const Typography: React.FC<TypographyProps> = ({\n variant = 'body1',\n color = 'default',\n as,\n children,\n className = '',\n ...rest\n}) => {\n const Tag = (as ?? variantTagMap[variant]) as React.ElementType;\n const classes = [styles.base, styles[variant], colorClassMap[color], className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <Tag className={classes} {...rest}>\n {children}\n </Tag>\n );\n};\n\nTypography.displayName = 'STypography';\n","import React, { useRef, useState, useCallback } from 'react';\nimport styles from './FileInput.module.css';\n\nfunction formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}\n\nconst UploadIcon = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M10 13V7M7 10l3-3 3 3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n <path d=\"M3 14.5A3.5 3.5 0 0 0 6.5 18h7a3.5 3.5 0 0 0 0-7H13a5 5 0 1 0-9.9 1\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\"/>\n </svg>\n);\n\nconst FileIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M9 2H4a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V6L9 2Z\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinejoin=\"round\"/>\n <path d=\"M9 2v4h4\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n);\n\nconst CloseIcon = () => (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M3 3l8 8M11 3l-8 8\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\"/>\n </svg>\n);\n\nexport type FileInputSize = 'small' | 'medium' | 'large';\n\nexport interface FileInputProps {\n label?: string;\n placeholder?: string;\n variant?: 'dropzone' | 'inline';\n size?: FileInputSize;\n accept?: string;\n multiple?: boolean;\n maxSize?: number; // bytes\n disabled?: boolean;\n required?: boolean;\n error?: boolean;\n errorText?: string;\n helperText?: string;\n onChange?: (files: File[]) => void;\n}\n\nexport const FileInput: React.FC<FileInputProps> = ({\n label,\n placeholder = '파일을 선택하세요',\n variant = 'dropzone',\n size = 'medium',\n accept,\n multiple = false,\n maxSize,\n disabled = false,\n required = false,\n error = false,\n errorText,\n helperText,\n onChange,\n}) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const [files, setFiles] = useState<File[]>([]);\n const [dragging, setDragging] = useState(false);\n const [sizeError, setSizeError] = useState('');\n\n const addFiles = useCallback(\n (incoming: FileList | null) => {\n if (!incoming) return;\n const arr = Array.from(incoming);\n\n if (maxSize) {\n const oversized = arr.filter((f) => f.size > maxSize);\n if (oversized.length) {\n setSizeError(`파일 크기는 ${formatBytes(maxSize)} 이하여야 합니다.`);\n return;\n }\n }\n setSizeError('');\n\n const next = multiple ? [...files, ...arr] : arr.slice(0, 1);\n setFiles(next);\n onChange?.(next);\n },\n [files, maxSize, multiple, onChange],\n );\n\n const removeFile = (index: number) => {\n const next = files.filter((_, i) => i !== index);\n setFiles(next);\n onChange?.(next);\n if (inputRef.current) inputRef.current.value = '';\n };\n\n const onDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n if (!disabled) setDragging(true);\n };\n const onDragLeave = () => setDragging(false);\n const onDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setDragging(false);\n if (!disabled) addFiles(e.dataTransfer.files);\n };\n\n const displayError = sizeError || (error ? errorText : '');\n\n const hiddenInput = (\n <input\n ref={inputRef}\n type=\"file\"\n className={styles.hiddenInput}\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n onChange={(e) => addFiles(e.target.files)}\n aria-hidden=\"true\"\n tabIndex={-1}\n />\n );\n\n const fileList = files.length > 0 && (\n <ul className={styles.fileList} role=\"list\">\n {files.map((file, i) => (\n <li key={`${file.name}-${i}`} className={styles.fileItem}>\n <div className={styles.fileIcon}>\n <FileIcon />\n </div>\n <div className={styles.fileInfo}>\n <div className={styles.fileName}>{file.name}</div>\n <div className={styles.fileSize}>{formatBytes(file.size)}</div>\n </div>\n <button\n type=\"button\"\n className={styles.removeBtn}\n onClick={() => removeFile(i)}\n aria-label={`${file.name} 삭제`}\n >\n <CloseIcon />\n </button>\n </li>\n ))}\n </ul>\n );\n\n const footer = (\n <>\n {displayError && <p className={styles.errorText}>{displayError}</p>}\n {!displayError && helperText && <p className={styles.helperText}>{helperText}</p>}\n </>\n );\n\n if (variant === 'inline') {\n const hasFile = files.length > 0;\n const displayName = hasFile\n ? multiple && files.length > 1\n ? `${files[0].name} 외 ${files.length - 1}개`\n : files[0].name\n : '';\n\n const inlineFieldClass = [\n styles.inlineField,\n styles[`inlineField_${size}`],\n error || sizeError ? styles.inlineError : '',\n disabled ? styles.inlineDisabled : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={styles.wrapper}>\n {label && (\n <span className={styles.label}>\n {label}\n {required && <span className={styles.required}>*</span>}\n </span>\n )}\n\n <div className={styles.inlineRow}>\n <div className={inlineFieldClass}>\n {hiddenInput}\n <span className={hasFile ? styles.inlineFilename : styles.inlinePlaceholder}>\n {hasFile ? displayName : placeholder}\n </span>\n </div>\n <button\n type=\"button\"\n className={[styles.browseBtn, styles[`browseBtn_${size}`]].join(' ')}\n disabled={disabled}\n onClick={() => inputRef.current?.click()}\n >\n 찾아보기\n </button>\n </div>\n\n {fileList}\n {footer}\n </div>\n );\n }\n\n const zoneClass = [\n styles.dropzone,\n styles[`dropzone_${size}`],\n dragging ? styles.dragging : '',\n error || sizeError ? styles.error : '',\n disabled ? styles.disabled : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={styles.wrapper}>\n {label && (\n <span className={styles.label}>\n {label}\n {required && <span className={styles.required}>*</span>}\n </span>\n )}\n\n <div\n className={zoneClass}\n onDragOver={onDragOver}\n onDragLeave={onDragLeave}\n onDrop={onDrop}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-label=\"파일 업로드 영역\"\n onKeyDown={(e) => {\n if ((e.key === 'Enter' || e.key === ' ') && !disabled) inputRef.current?.click();\n }}\n >\n {hiddenInput}\n <div className={styles.icon}>\n <UploadIcon />\n </div>\n <p className={styles.primaryText}>\n <span>클릭</span>하거나 파일을 여기에 드래그하세요\n </p>\n <p className={styles.subText}>\n {accept ? `허용 형식: ${accept}` : '모든 파일 허용'}\n {maxSize ? ` · 최대 ${formatBytes(maxSize)}` : ''}\n {multiple ? ' · 여러 파일 선택 가능' : ''}\n </p>\n </div>\n\n {fileList}\n {footer}\n </div>\n );\n};\n\nFileInput.displayName = 'SFileInput';\n","import React, { useEffect, useRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport styles from './Modal.module.css';\n\nexport type ModalSize = 'small' | 'medium' | 'large' | 'xl' | 'full';\nexport type ModalFooterAlign = 'left' | 'center' | 'right' | 'spaceBetween';\n\nexport interface ModalProps {\n open: boolean;\n onClose: () => void;\n title?: React.ReactNode;\n description?: React.ReactNode;\n children?: React.ReactNode;\n footer?: React.ReactNode;\n footerAlign?: ModalFooterAlign;\n size?: ModalSize;\n closeOnBackdrop?: boolean;\n closeOnEsc?: boolean;\n hideCloseButton?: boolean;\n}\n\nconst CloseIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M3 3l10 10M13 3L3 13\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\"/>\n </svg>\n);\n\nconst footerAlignClass: Record<ModalFooterAlign, string> = {\n left: styles.footerLeft,\n center: styles.footerCenter,\n right: '',\n spaceBetween: styles.footerSpaceBetween,\n};\n\nexport const Modal: React.FC<ModalProps> = ({\n open,\n onClose,\n title,\n description,\n children,\n footer,\n footerAlign = 'right',\n size = 'medium',\n closeOnBackdrop = true,\n closeOnEsc = true,\n hideCloseButton = false,\n}) => {\n const panelRef = useRef<HTMLDivElement>(null);\n\n // Focus trap & ESC\n useEffect(() => {\n if (!open) return;\n\n const prev = document.activeElement as HTMLElement | null;\n panelRef.current?.focus();\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && closeOnEsc) onClose();\n if (e.key === 'Tab') {\n const focusable = panelRef.current?.querySelectorAll<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n );\n if (!focusable?.length) return;\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n if (e.shiftKey) {\n if (document.activeElement === first) { e.preventDefault(); last.focus(); }\n } else {\n if (document.activeElement === last) { e.preventDefault(); first.focus(); }\n }\n }\n };\n\n document.addEventListener('keydown', onKeyDown);\n document.body.style.overflow = 'hidden';\n\n return () => {\n document.removeEventListener('keydown', onKeyDown);\n document.body.style.overflow = '';\n prev?.focus();\n };\n }, [open, closeOnEsc, onClose]);\n\n if (!open) return null;\n\n const panelClass = [styles.panel, styles[size]].join(' ');\n const footerClass = [styles.footer, footerAlignClass[footerAlign]].filter(Boolean).join(' ');\n\n return createPortal(\n <div\n className={styles.backdrop}\n onClick={(e) => { if (closeOnBackdrop && e.target === e.currentTarget) onClose(); }}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={title ? 'modal-title' : undefined}\n >\n <div ref={panelRef} className={panelClass} tabIndex={-1}>\n {/* Header */}\n {(title || !hideCloseButton) && (\n <div className={styles.header}>\n <div className={styles.headerText}>\n {title && <h2 id=\"modal-title\" className={styles.title}>{title}</h2>}\n {description && <p className={styles.description}>{description}</p>}\n </div>\n {!hideCloseButton && (\n <button className={styles.closeBtn} onClick={onClose} aria-label=\"모달 닫기\">\n <CloseIcon />\n </button>\n )}\n </div>\n )}\n\n {/* Body */}\n <div className={styles.body}>{children}</div>\n\n {/* Footer */}\n {footer && <div className={footerClass}>{footer}</div>}\n </div>\n </div>,\n document.body,\n );\n};\n\nModal.displayName = 'SModal';\n","import React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport styles from './Toast.module.css';\n\n/* ────────────────────────────────────────────────────────── */\n/* Types */\n/* ────────────────────────────────────────────────────────── */\nexport type ToastVariant = 'success' | 'error' | 'warning' | 'info' | 'neutral';\nexport type ToastPosition =\n | 'topRight' | 'topLeft' | 'topCenter'\n | 'bottomRight' | 'bottomLeft' | 'bottomCenter';\n\nexport interface ToastItem {\n id: string;\n variant?: ToastVariant;\n title: string;\n message?: string;\n duration?: number; // ms, 0 = persistent\n exiting?: boolean;\n}\n\nexport interface ToastOptions {\n variant?: ToastVariant;\n message?: string;\n duration?: number;\n}\n\n/* ────────────────────────────────────────────────────────── */\n/* Icons */\n/* ────────────────────────────────────────────────────────── */\nconst icons: Record<ToastVariant, React.ReactNode> = {\n success: (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.3\"/>\n <path d=\"M5 8l2 2 4-4\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n ),\n error: (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.3\"/>\n <path d=\"M5.5 5.5l5 5M10.5 5.5l-5 5\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\"/>\n </svg>\n ),\n warning: (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M8 2L1.5 13.5h13L8 2Z\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinejoin=\"round\"/>\n <path d=\"M8 7v3M8 11.5v.5\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\"/>\n </svg>\n ),\n info: (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.3\"/>\n <path d=\"M8 7v4M8 5v.5\" stroke=\"currentColor\" strokeWidth=\"1.3\" strokeLinecap=\"round\"/>\n </svg>\n ),\n neutral: (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.3\"/>\n </svg>\n ),\n};\n\nconst CloseIcon = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M2 2l8 8M10 2l-8 8\" stroke=\"currentColor\" strokeWidth=\"1.4\" strokeLinecap=\"round\"/>\n </svg>\n);\n\n/* ────────────────────────────────────────────────────────── */\n/* Context */\n/* ────────────────────────────────────────────────────────── */\ninterface ToastContextValue {\n toast: (title: string, options?: ToastOptions) => void;\n success: (title: string, options?: Omit<ToastOptions, 'variant'>) => void;\n error: (title: string, options?: Omit<ToastOptions, 'variant'>) => void;\n warning: (title: string, options?: Omit<ToastOptions, 'variant'>) => void;\n info: (title: string, options?: Omit<ToastOptions, 'variant'>) => void;\n}\n\nconst ToastContext = createContext<ToastContextValue | null>(null);\n\n/* ────────────────────────────────────────────────────────── */\n/* Provider */\n/* ────────────────────────────────────────────────────────── */\nexport interface ToastProviderProps {\n children: React.ReactNode;\n position?: ToastPosition;\n defaultDuration?: number;\n}\n\nexport const ToastProvider: React.FC<ToastProviderProps> = ({\n children,\n position = 'topRight',\n defaultDuration = 4000,\n}) => {\n const [toasts, setToasts] = useState<ToastItem[]>([]);\n\n const dismiss = useCallback((id: string) => {\n setToasts((prev) =>\n prev.map((t) => (t.id === id ? { ...t, exiting: true } : t)),\n );\n setTimeout(() => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n }, 300);\n }, []);\n\n const add = useCallback(\n (title: string, options: ToastOptions = {}) => {\n const id = `toast-${Date.now()}-${Math.random().toString(36).slice(2)}`;\n const duration = options.duration ?? defaultDuration;\n setToasts((prev) => [...prev, { id, title, ...options, duration }]);\n if (duration > 0) setTimeout(() => dismiss(id), duration);\n },\n [defaultDuration, dismiss],\n );\n\n const ctx: ToastContextValue = {\n toast: add,\n success: (t, o) => add(t, { ...o, variant: 'success' }),\n error: (t, o) => add(t, { ...o, variant: 'error' }),\n warning: (t, o) => add(t, { ...o, variant: 'warning' }),\n info: (t, o) => add(t, { ...o, variant: 'info' }),\n };\n\n const containerClass = [styles.container, styles[position]].join(' ');\n\n return (\n <ToastContext.Provider value={ctx}>\n {children}\n {typeof document !== 'undefined' &&\n createPortal(\n <div className={containerClass} role=\"region\" aria-live=\"polite\" aria-label=\"알림\">\n {toasts.map((t) => (\n <ToastCard key={t.id} item={t} onDismiss={dismiss} />\n ))}\n </div>,\n document.body,\n )}\n </ToastContext.Provider>\n );\n};\n\n/* ────────────────────────────────────────────────────────── */\n/* Toast Card */\n/* ────────────────────────────────────────────────────────── */\ninterface ToastCardProps {\n item: ToastItem;\n onDismiss: (id: string) => void;\n}\n\nconst ToastCard: React.FC<ToastCardProps> = ({ item, onDismiss }) => {\n const { id, variant = 'neutral', title, message, duration, exiting } = item;\n const progressRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (progressRef.current && duration && duration > 0) {\n progressRef.current.style.animationDuration = `${duration}ms`;\n }\n }, [duration]);\n\n const cls = [styles.toast, styles[variant], exiting ? styles.exiting : '']\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={cls} role=\"alert\">\n <span className={styles.icon}>{icons[variant]}</span>\n <div className={styles.content}>\n <div className={styles.title}>{title}</div>\n {message && <div className={styles.message}>{message}</div>}\n </div>\n <button className={styles.closeBtn} onClick={() => onDismiss(id)} aria-label=\"알림 닫기\">\n <CloseIcon />\n </button>\n {duration && duration > 0 && <div ref={progressRef} className={styles.progress} />}\n </div>\n );\n};\n\n/* ────────────────────────────────────────────────────────── */\n/* Hook */\n/* ────────────────────────────────────────────────────────── */\nToastProvider.displayName = 'SToastProvider';\n\nexport function useToast(): ToastContextValue {\n const ctx = useContext(ToastContext);\n if (!ctx) throw new Error('useToast must be used within <SToastProvider>');\n return ctx;\n}\n","import React from 'react';\nimport styles from './Select.module.css';\n\nexport type SelectSize = 'small' | 'medium' | 'large';\n\nexport interface SelectOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface SelectProps extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'size'> {\n label?: string;\n size?: SelectSize;\n error?: boolean;\n helperText?: string;\n errorText?: string;\n required?: boolean;\n options: SelectOption[];\n placeholder?: string;\n}\n\nexport const Select = React.forwardRef<HTMLSelectElement, SelectProps>(\n (\n {\n label,\n size = 'medium',\n error = false,\n helperText,\n errorText,\n required,\n options,\n placeholder,\n id,\n className = '',\n ...rest\n },\n ref,\n ) => {\n const selectId = id ?? label?.toLowerCase().replace(/\\s+/g, '-');\n\n const wrapperClasses = [\n styles.selectWrapper,\n styles[size],\n error ? styles.error : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={styles.wrapper}>\n {label && (\n <label htmlFor={selectId} className={styles.label}>\n {label}\n {required && <span className={styles.required}>*</span>}\n </label>\n )}\n <div className={wrapperClasses}>\n <select ref={ref} id={selectId} className={styles.select} required={required} {...rest}>\n {placeholder && (\n <option value=\"\" disabled>\n {placeholder}\n </option>\n )}\n {options.map((opt) => (\n <option key={opt.value} value={opt.value} disabled={opt.disabled}>\n {opt.label}\n </option>\n ))}\n </select>\n <span className={styles.chevron} aria-hidden=\"true\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M4 6l4 4 4-4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n </div>\n {error && errorText && <p className={styles.errorText}>{errorText}</p>}\n {!error && helperText && <p className={styles.helperText}>{helperText}</p>}\n </div>\n );\n },\n);\n\nSelect.displayName = 'SSelect';\n","import React from 'react';\n\nexport type IconSize = 'xs' | 'small' | 'medium' | 'large' | 'xl';\nexport type IconName =\n | 'arrowUp' | 'arrowDown' | 'arrowLeft' | 'arrowRight'\n | 'chevronUp' | 'chevronDown' | 'chevronLeft' | 'chevronRight'\n | 'chevronLeftDouble' | 'chevronRightDouble'\n | 'search' | 'send' | 'plus' | 'minus' | 'close' | 'check'\n | 'download' | 'upload' | 'edit' | 'trash' | 'copy'\n | 'user' | 'users' | 'settings' | 'home' | 'menu'\n | 'bell' | 'eye' | 'eyeOff' | 'lock' | 'unlock'\n | 'info' | 'warning' | 'error' | 'success'\n | 'calendar' | 'clock' | 'filter' | 'sort' | 'refresh'\n | 'externalLink' | 'link' | 'attach' | 'image'\n | 'creditCard' | 'transfer' | 'wallet'\n /* Tech */\n | 'monitor' | 'laptop' | 'server' | 'database' | 'cpu'\n /* Cloud / Network */\n | 'cloud' | 'cloudUpload' | 'cloudDownload' | 'wifi' | 'globe'\n /* Dev Tools */\n | 'terminal' | 'code' | 'gitBranch' | 'layers' | 'package' | 'bug' | 'activity'\n /* Security */\n | 'shield' | 'shieldCheck'\n /* Deploy */\n | 'rocket';\n\nexport interface IconProps {\n name: IconName;\n size?: IconSize | number;\n color?: string;\n className?: string;\n style?: React.CSSProperties;\n 'aria-label'?: string;\n 'aria-hidden'?: boolean;\n}\n\nconst SIZE_MAP: Record<IconSize, number> = {\n xs: 12,\n small: 14,\n medium: 16,\n large: 20,\n xl: 24,\n};\n\n/* ── SVG path registry ── */\nconst PATHS: Record<IconName, React.ReactNode> = {\n /* Arrow */\n arrowUp: <path d=\"M8 12V4M4 8l4-4 4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />,\n arrowDown: <path d=\"M8 4v8M4 8l4 4 4-4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />,\n arrowLeft: <path d=\"M12 8H4M8 4l-4 4 4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />,\n arrowRight: <path d=\"M4 8h8M8 4l4 4-4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />,\n /* Chevron */\n chevronUp: <path d=\"M4 10l4-4 4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />,\n chevronDown: <path d=\"M4 6l4 4 4-4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />,\n chevronLeft: <path d=\"M10 4L6 8l4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />,\n chevronRight: <path d=\"M6 4l4 4-4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />,\n chevronLeftDouble: <><path d=\"M9 4L5 8l4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M13 4L9 8l4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></>,\n chevronRightDouble: <><path d=\"M7 4l4 4-4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M3 4l4 4-4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></>,\n /* Actions */\n search: <><circle cx=\"7\" cy=\"7\" r=\"4.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><path d=\"M10.5 10.5L13 13\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /></>,\n send: <path d=\"M13.5 2.5L7 9M13.5 2.5L9 13.5L7 9M13.5 2.5L2.5 6.5L7 9\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />,\n plus: <path d=\"M8 3v10M3 8h10\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />,\n minus: <path d=\"M3 8h10\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />,\n close: <path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />,\n check: <path d=\"M3 8l4 4 6-6\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />,\n download: <path d=\"M8 3v7M5 8l3 3 3-3M3 13h10\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />,\n upload: <path d=\"M8 13V6M5 8l3-3 3 3M3 13h10\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />,\n edit: <path d=\"M11 2.5l2.5 2.5-8 8H3v-2.5l8-8zM9.5 4l2 2\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />,\n trash: <><path d=\"M3 5h10M6 5V3h4v2M5 5l.8 8h4.4l.8-8\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></>,\n copy: <><rect x=\"6\" y=\"6\" width=\"7\" height=\"7\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><path d=\"M10 6V4a1 1 0 00-1-1H4a1 1 0 00-1 1v5a1 1 0 001 1h2\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /></>,\n /* People */\n user: <><circle cx=\"8\" cy=\"5.5\" r=\"2.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><path d=\"M3 13c0-2.76 2.24-5 5-5s5 2.24 5 5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /></>,\n users: <><circle cx=\"6\" cy=\"6\" r=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><path d=\"M2 13c0-2.21 1.79-4 4-4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /><circle cx=\"11\" cy=\"6\" r=\"2\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><path d=\"M14 13c0-2.21-1.79-4-4-4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /></>,\n /* System */\n settings: <><circle cx=\"8\" cy=\"8\" r=\"2.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><path d=\"M8 2v1.5M8 12.5V14M2 8h1.5M12.5 8H14M3.75 3.75l1.06 1.06M11.19 11.19l1.06 1.06M3.75 12.25l1.06-1.06M11.19 4.81l1.06-1.06\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /></>,\n home: <path d=\"M2 8l6-5 6 5v6a1 1 0 01-1 1H9v-4H7v4H3a1 1 0 01-1-1V8z\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />,\n menu: <path d=\"M3 4h10M3 8h10M3 12h10\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />,\n bell: <><path d=\"M8 2a4.5 4.5 0 014.5 4.5c0 4 1.5 5 1.5 5H2s1.5-1 1.5-5A4.5 4.5 0 018 2z\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinejoin=\"round\" /><path d=\"M6.5 13.5a1.5 1.5 0 003 0\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /></>,\n eye: <><path d=\"M2 8s2.5-5 6-5 6 5 6 5-2.5 5-6 5-6-5-6-5z\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinejoin=\"round\" /><circle cx=\"8\" cy=\"8\" r=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" /></>,\n eyeOff: <><path d=\"M3 3l10 10M6.3 6.3A3 3 0 0010.7 10.7M4 4.9C2.8 5.9 2 8 2 8s2.5 5 6 5c1 0 2-.3 2.8-.7M8 3c3.5 0 6 5 6 5a10 10 0 01-1 1.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /></>,\n lock: <><rect x=\"4\" y=\"7\" width=\"8\" height=\"7\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><path d=\"M5.5 7V5.5a2.5 2.5 0 015 0V7\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /></>,\n unlock: <><rect x=\"4\" y=\"7\" width=\"8\" height=\"7\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><path d=\"M5.5 7V5.5a2.5 2.5 0 015 0v0\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /></>,\n /* Status */\n info: <><circle cx=\"8\" cy=\"8\" r=\"6\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><path d=\"M8 7v4M8 5.5v.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /></>,\n warning: <><path d=\"M8 3L14 13H2L8 3z\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinejoin=\"round\" /><path d=\"M8 7v3M8 11.5v.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /></>,\n error: <><circle cx=\"8\" cy=\"8\" r=\"6\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><path d=\"M6 6l4 4M10 6l-4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /></>,\n success: <><circle cx=\"8\" cy=\"8\" r=\"6\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><path d=\"M5.5 8l2 2 3-3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></>,\n /* Utility */\n calendar: <><rect x=\"2\" y=\"3\" width=\"12\" height=\"12\" rx=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><path d=\"M2 7h12M6 2v2M10 2v2\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /></>,\n clock: <><circle cx=\"8\" cy=\"8\" r=\"6\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><path d=\"M8 5v3l2 2\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></>,\n filter: <path d=\"M2 4h12M5 8h6M7 12h2\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />,\n sort: <path d=\"M4 4v8M2 10l2 2 2-2M12 12V4M10 6l2-2 2 2\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />,\n refresh: <path d=\"M13 8A5 5 0 113 8M13 4v4h-4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />,\n externalLink:<><path d=\"M7 3H3a1 1 0 00-1 1v9a1 1 0 001 1h9a1 1 0 001-1V9\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /><path d=\"M10 2h4v4M14 2L8 8\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></>,\n link: <><path d=\"M7 9a3 3 0 004.24.12l2-2a3 3 0 00-4.24-4.24L7.5 4.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /><path d=\"M9 7a3 3 0 00-4.24-.12l-2 2a3 3 0 004.24 4.24L8.5 11.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /></>,\n attach: <path d=\"M13 7l-5 5a3 3 0 01-4.24-4.24l5-5A2 2 0 0111.59 5.6l-5 5a1 1 0 01-1.41-1.41l4-4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />,\n image: <><rect x=\"2\" y=\"3\" width=\"12\" height=\"10\" rx=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><circle cx=\"5.5\" cy=\"6.5\" r=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><path d=\"M2 11l3-3 2 2 2.5-3L14 11\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></>,\n /* Banking */\n creditCard: <><rect x=\"1.5\" y=\"4\" width=\"13\" height=\"8\" rx=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><path d=\"M1.5 7h13\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><path d=\"M4 10h2\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /></>,\n transfer: <><path d=\"M3 5h10M10 2l3 3-3 3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M13 11H3M6 8l-3 3 3 3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></>,\n wallet: <><rect x=\"1.5\" y=\"4\" width=\"13\" height=\"9\" rx=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><path d=\"M1.5 7.5h13\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><circle cx=\"11.5\" cy=\"10\" r=\"1\" fill=\"currentColor\" /></>,\n /* Tech */\n monitor: <><rect x=\"1\" y=\"2\" width=\"14\" height=\"10\" rx=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><path d=\"M5.5 15h5M8 12v3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /></>,\n laptop: <><rect x=\"2\" y=\"3\" width=\"12\" height=\"8\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><path d=\"M0 13h16\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /></>,\n server: <><rect x=\"2\" y=\"2\" width=\"12\" height=\"5\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><rect x=\"2\" y=\"9\" width=\"12\" height=\"5\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><circle cx=\"12\" cy=\"4.5\" r=\"1\" fill=\"currentColor\" /><circle cx=\"12\" cy=\"11.5\" r=\"1\" fill=\"currentColor\" /></>,\n database: <><ellipse cx=\"8\" cy=\"4.5\" rx=\"5\" ry=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><path d=\"M3 4.5v7c0 .83 2.24 1.5 5 1.5s5-.67 5-1.5v-7M3 8c0 .83 2.24 1.5 5 1.5S13 8.83 13 8\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /></>,\n cpu: <><rect x=\"4\" y=\"4\" width=\"8\" height=\"8\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><path d=\"M6 7h4M6 9h4\" stroke=\"currentColor\" strokeWidth=\"1.2\" strokeLinecap=\"round\" /><path d=\"M1 6h3M1 10h3M12 6h3M12 10h3M6 1v3M10 1v3M6 12v3M10 12v3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /></>,\n /* Cloud / Network */\n cloud: <path d=\"M3 12A2.5 2.5 0 0 0 3 7h.5Q4 4 8 4Q12 4 12.5 7A2.5 2.5 0 0 0 12.5 12H3z\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinejoin=\"round\" />,\n cloudUpload: <><path d=\"M3 10A2.5 2.5 0 0 0 3 5h.5Q4 2 8 2Q12 2 12.5 5A2.5 2.5 0 0 0 12.5 10H3z\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinejoin=\"round\" /><path d=\"M8 15v-4M6 13l2-2 2 2\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></>,\n cloudDownload: <><path d=\"M3 10A2.5 2.5 0 0 0 3 5h.5Q4 2 8 2Q12 2 12.5 5A2.5 2.5 0 0 0 12.5 10H3z\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinejoin=\"round\" /><path d=\"M8 11v4M6 13l2 2 2-2\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></>,\n wifi: <><path d=\"M1 6a10 10 0 0 1 14 0\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /><path d=\"M3.5 9a6 6 0 0 1 9 0\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /><path d=\"M6 12a3 3 0 0 1 4 0\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /><circle cx=\"8\" cy=\"14\" r=\"1\" fill=\"currentColor\" /></>,\n globe: <><circle cx=\"8\" cy=\"8\" r=\"6\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><path d=\"M8 2c-2 2-3 4-3 6s1 4 3 6M8 2c2 2 3 4 3 6s-1 4-3 6\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /><path d=\"M2 8h12\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /></>,\n /* Dev Tools */\n terminal: <><rect x=\"1\" y=\"2\" width=\"14\" height=\"12\" rx=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><path d=\"M4 6l3 3-3 3M9 12h3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></>,\n code: <path d=\"M5 4L1 8l4 4M11 4l4 4-4 4M9.5 2l-3 12\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />,\n gitBranch: <><circle cx=\"5\" cy=\"4\" r=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><circle cx=\"5\" cy=\"12\" r=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><circle cx=\"11\" cy=\"6\" r=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" /><path d=\"M5 5.5v5M5 5.5C5 8 11 8 11 7.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /></>,\n layers: <><path d=\"M8 1L1 5l7 3 7-3-7-4z\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinejoin=\"round\" /><path d=\"M1 8l7 3 7-3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M1 11l7 3 7-3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></>,\n package: <><path d=\"M2 5.5l6-3 6 3v7l-6 3-6-3v-7z\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinejoin=\"round\" /><path d=\"M8 2.5v13\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /><path d=\"M2 5.5l6 3 6-3M5.5 4L11 6.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /></>,\n bug: <><path d=\"M6 13a2 2 0 1 0 4 0V9a2 2 0 1 0-4 0v4z\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinejoin=\"round\" /><path d=\"M5.5 5.5A2.5 2.5 0 0 1 8 4a2.5 2.5 0 0 1 2.5 1.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /><path d=\"M4 9H1M15 9h-3M4 11l-2 2M12 11l2 2M4 7l-2-2M12 7l2-2\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /></>,\n activity: <path d=\"M1 8h3l2-4.5L8 12l2-4.5 1.5 3H15\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />,\n /* Security */\n shield: <path d=\"M8 2L3 4.5v4c0 3 2 4.5 5 5.5 3-1 5-2.5 5-5.5v-4L8 2z\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinejoin=\"round\" />,\n shieldCheck: <><path d=\"M8 2L3 4.5v4c0 3 2 4.5 5 5.5 3-1 5-2.5 5-5.5v-4L8 2z\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinejoin=\"round\" /><path d=\"M5.5 8l2 2 3-3\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></>,\n /* Deploy */\n rocket: <><path d=\"M8 1.5c-3 2-4.5 5-4.5 7 0 1.5.5 2.5 4.5 4.5 4-2 4.5-3 4.5-4.5 0-2-1.5-5-4.5-7z\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinejoin=\"round\" /><path d=\"M4.5 14l-2 1.5M11.5 14l2 1.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" /><circle cx=\"8\" cy=\"8\" r=\"1.5\" fill=\"currentColor\" /></>,\n};\n\n/* ── Generic Icon component ── */\nexport const Icon = function Icon({\n name,\n size = 'medium',\n color,\n className,\n style,\n 'aria-label': ariaLabel,\n 'aria-hidden': ariaHidden = true,\n}: IconProps) {\n const px = typeof size === 'number' ? size : SIZE_MAP[size];\n\n return (\n <svg\n width={px}\n height={px}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label={ariaLabel}\n aria-hidden={ariaHidden}\n className={className}\n style={{ color, display: 'inline-block', flexShrink: 0, verticalAlign: 'middle', ...style }}\n >\n {PATHS[name]}\n </svg>\n );\n}\n\nIcon.displayName = 'SIcon';\n","import React, { useState } from 'react';\nimport ReactDatePicker from 'react-datepicker';\nimport 'react-datepicker/dist/react-datepicker.css';\nimport styles from './DatePicker.module.css';\nimport { Input, type InputProps, type InputSize } from '../Input/Input';\nimport { Icon } from '../Icon/Icon';\n\nexport interface DatePickerProps {\n label?: string;\n placeholder?: string;\n size?: InputSize;\n dateFormat?: string;\n disabled?: boolean;\n minDate?: Date;\n maxDate?: Date;\n excludeDates?: Date[];\n filterDate?: (date: Date) => boolean;\n onDateChange?: (selectedDate: Date | null) => void;\n}\n\nconst DateInput = React.forwardRef<HTMLInputElement, InputProps>(\n (props, ref) => (\n <Input\n ref={ref}\n suffix={<Icon name=\"calendar\" size=\"small\" color=\"var(--ds-text-muted)\" />}\n {...props}\n />\n ),\n);\nDateInput.displayName = 'DateInput';\n\nexport const DatePicker = ({ label, placeholder = '날짜 선택', size = 'medium', dateFormat = 'yyyy.MM.dd', disabled = false, minDate, maxDate, excludeDates, filterDate, onDateChange }: DatePickerProps) => {\n const [selectedDate, setSelectedDate] = useState<Date | null>(new Date());\n\n const handleChange = (date: Date | null) => {\n setSelectedDate(date);\n onDateChange?.(date);\n };\n\n return (\n <div className={styles.datePicker}>\n <ReactDatePicker\n selected={selectedDate}\n onChange={handleChange}\n dateFormat={dateFormat}\n disabled={disabled}\n minDate={minDate}\n maxDate={maxDate}\n excludeDates={excludeDates}\n filterDate={filterDate}\n customInput={<DateInput label={label} placeholder={placeholder} size={size} disabled={disabled} readOnly />}\n />\n </div>\n );\n};\n\n\nDatePicker.displayName = 'SDatePicker';\n","import styles from './Pagination.module.css';\nimport { Button } from '../Button/Button';\nimport { Icon } from '../Icon/Icon';\n\nexport interface PaginationProps {\n itemCount?: number;\n cntPerPage?: number;\n currentPage?: number;\n onChangedPage?: (pageNo: number, eventFlag: boolean) => void;\n}\n\nexport const Pagination = ({ itemCount = 0, cntPerPage = 0, currentPage = 0, onChangedPage }: PaginationProps) => {\n const pageCount = parseInt('' + (itemCount - 1) / cntPerPage) + 1;\n\n const getCounterView = (): number[] => {\n let first = 1;\n let last = currentPage;\n let gap = 0;\n const viewCounter: number[] = [];\n\n if (pageCount < 11) {\n first = 1;\n last = pageCount;\n } else {\n gap = (currentPage < 5) ? 5 - currentPage :\n (currentPage + 5 > pageCount) ? currentPage + 5 - pageCount : 0;\n first = (currentPage < 5) ? 1 : currentPage - 4 - gap;\n last = (currentPage + 5 > pageCount) ? pageCount : currentPage + 5 + gap;\n }\n\n for (let i = first; i <= last; i++) {\n viewCounter.push(i);\n }\n\n return viewCounter;\n };\n\n const pageNumbers = getCounterView();\n\n const handleChangedPage = (pageNo: number) => {\n if (pageNo <= 0 || pageNo > pageCount) return;\n onChangedPage?.(pageNo, true);\n };\n\n return (\n <ul className={styles.pagination}>\n <li className={styles.pageItem}>\n <Button variant=\"ghost\" size=\"small\" aria-label=\"맨처음\" onClick={() => handleChangedPage(1)}>\n <Icon name=\"chevronLeftDouble\" size=\"small\" />\n </Button>\n </li>\n <li className={styles.pageItem}>\n <Button variant=\"ghost\" size=\"small\" aria-label=\"이전\" onClick={() => handleChangedPage(currentPage - 1)}>\n <Icon name=\"chevronLeft\" size=\"small\" />\n </Button>\n </li>\n\n {pageNumbers.map((pageNum) => (\n <li key={pageNum} className={styles.pageItem}>\n <Button\n variant={pageNum === currentPage ? 'primary' : 'outline'}\n size=\"small\"\n onClick={() => handleChangedPage(pageNum)}\n >\n {pageNum}\n </Button>\n </li>\n ))}\n\n <li className={styles.pageItem}>\n <Button variant=\"ghost\" size=\"small\" aria-label=\"다음\" onClick={() => handleChangedPage(currentPage + 1)}>\n <Icon name=\"chevronRight\" size=\"small\" />\n </Button>\n </li>\n <li className={styles.pageItem}>\n <Button variant=\"ghost\" size=\"small\" aria-label=\"맨끝\" onClick={() => handleChangedPage(pageCount)}>\n <Icon name=\"chevronRightDouble\" size=\"small\" />\n </Button>\n </li>\n </ul>\n );\n};\n\nPagination.displayName = 'SPagination';\n","import React from 'react';\nimport styles from './BaseButton.module.css';\n\nexport interface BaseButtonProps {\n label?: string;\n type?: string;\n iconClass?: string;\n btnsize?: 'small' | 'medium' | 'large';\n iconSize?: 'sg' | 'mg' | 'lg';\n offscreen?: boolean;\n changeValue?: (value: string) => void;\n}\n\nconst btnSizeMap: Record<NonNullable<BaseButtonProps['btnsize']>, string> = {\n small: styles.btnSm,\n medium: styles.btnSlm,\n large: styles.btnSl,\n};\n\nexport const BaseButton = ({ label, btnsize = 'small', iconClass, type, iconSize, offscreen, changeValue }: BaseButtonProps) => {\n const changeValueHandler = () => {\n console.log('버튼 클릭:', label);\n changeValue?.(label || '');\n }\n\n const sizeClass = btnSizeMap[btnsize] ?? btnSizeMap.small;\n\n return (\n <button type=\"button\" className={`${styles.btn} ${sizeClass}`} onClick={changeValueHandler}>\n {type === 'icon' && (\n <span className={`${iconClass ?? ''} ${iconSize ? `${iconSize}` : ''}`}></span>\n )}\n {offscreen && <span className={styles.offscreen}>{label}</span>}\n {!offscreen && label}\n </button>\n );\n};\n\nBaseButton.displayName = 'SBaseButton';\n","import React, { createContext, useContext } from 'react';\nimport styles from './Radio.module.css';\n\nexport type RadioSize = 'small' | 'medium' | 'large';\n\n/* ── Context ── */\ninterface RadioGroupContext {\n name: string;\n value?: string;\n size?: RadioSize;\n disabled?: boolean;\n onChange?: (value: string) => void;\n}\n\nconst Context = createContext<RadioGroupContext | null>(null);\n\n/* ── RadioGroup ── */\nexport interface RadioOption {\n value: string;\n label: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface RadioGroupProps {\n name: string;\n value?: string;\n options: RadioOption[];\n size?: RadioSize;\n direction?: 'vertical' | 'horizontal';\n disabled?: boolean;\n onChange?: (value: string) => void;\n}\n\nexport const RadioGroup: React.FC<RadioGroupProps> = ({\n name,\n value,\n options,\n size = 'medium',\n direction = 'horizontal',\n disabled = false,\n onChange,\n}) => (\n <Context.Provider value={{ name, value, size, disabled, onChange }}>\n <div\n className={[styles.group, direction === 'horizontal' ? styles.horizontal : ''].filter(Boolean).join(' ')}\n role=\"radiogroup\"\n >\n {options.map((opt) => (\n <Radio key={opt.value} value={opt.value} label={opt.label} disabled={opt.disabled} />\n ))}\n </div>\n </Context.Provider>\n);\n\nRadioGroup.displayName = 'SRadioGroup';\n\n/* ── Radio ── */\nexport interface RadioProps {\n value: string;\n label?: React.ReactNode;\n size?: RadioSize;\n disabled?: boolean;\n}\n\nexport const Radio: React.FC<RadioProps> = ({ value, label, size: ownSize, disabled: ownDisabled }) => {\n const ctx = useContext(Context);\n const name = ctx?.name ?? '';\n const checked = ctx?.value === value;\n const disabled = ownDisabled ?? ctx?.disabled ?? false;\n const size = ownSize ?? ctx?.size ?? 'medium';\n\n const classes = [\n styles.radio,\n styles[size],\n checked ? styles.checked : '',\n disabled ? styles.disabled : '',\n ].filter(Boolean).join(' ');\n\n const handleChange = () => {\n if (!disabled) ctx?.onChange?.(value);\n };\n\n return (\n <label className={classes}>\n <input\n type=\"radio\"\n className={styles.input}\n name={name}\n value={value}\n checked={checked}\n disabled={disabled}\n onChange={handleChange}\n />\n <span className={styles.circle} />\n {label && <span className={styles.label}>{label}</span>}\n </label>\n );\n};\n\nRadio.displayName = 'SRadio';\n","import React, { useEffect, useRef } from 'react';\nimport styles from './Checkbox.module.css';\n\nexport type CheckboxSize = 'small' | 'medium' | 'large';\n\n/* ── Checkbox ── */\nexport interface CheckboxProps {\n checked?: boolean;\n defaultChecked?: boolean;\n onChange?: (checked: boolean) => void;\n label?: React.ReactNode;\n size?: CheckboxSize;\n disabled?: boolean;\n indeterminate?: boolean;\n id?: string;\n name?: string;\n value?: string;\n}\n\nexport const Checkbox: React.FC<CheckboxProps> = ({\n checked,\n defaultChecked,\n onChange,\n label,\n size = 'medium',\n disabled = false,\n indeterminate = false,\n id,\n name,\n value,\n}) => {\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n const classes = [\n styles.checkbox,\n styles[size],\n checked || (indeterminate) ? (indeterminate ? styles.indeterminate : styles.checked) : '',\n disabled ? styles.disabled : '',\n ].filter(Boolean).join(' ');\n\n return (\n <label className={classes}>\n <input\n ref={inputRef}\n type=\"checkbox\"\n className={styles.input}\n id={id}\n name={name}\n value={value}\n checked={checked}\n defaultChecked={defaultChecked}\n disabled={disabled}\n onChange={(e) => onChange?.(e.target.checked)}\n />\n <span className={styles.box} />\n {label && <span className={styles.label}>{label}</span>}\n </label>\n );\n};\n\nCheckbox.displayName = 'SCheckbox';\n\n/* ── CheckboxGroup ── */\nexport interface CheckboxOption {\n value: string;\n label: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface CheckboxGroupProps {\n options: CheckboxOption[];\n value?: string[];\n onChange?: (value: string[]) => void;\n size?: CheckboxSize;\n direction?: 'vertical' | 'horizontal';\n disabled?: boolean;\n}\n\nexport const CheckboxGroup: React.FC<CheckboxGroupProps> = ({\n options,\n value = [],\n onChange,\n size = 'medium',\n direction = 'horizontal',\n disabled = false,\n}) => {\n const toggle = (optValue: string, checked: boolean) => {\n const next = checked\n ? [...value, optValue]\n : value.filter((v) => v !== optValue);\n onChange?.(next);\n };\n\n return (\n <div\n className={[styles.group, direction === 'horizontal' ? styles.horizontal : ''].filter(Boolean).join(' ')}\n role=\"group\"\n >\n {options.map((opt) => (\n <Checkbox\n key={opt.value}\n value={opt.value}\n label={opt.label}\n size={size}\n checked={value.includes(opt.value)}\n disabled={disabled || opt.disabled}\n onChange={(checked) => toggle(opt.value, checked)}\n />\n ))}\n </div>\n );\n};\n\nCheckboxGroup.displayName = 'SCheckboxGroup';\n","import React from 'react';\nimport styles from './Chip.module.css';\n\nexport type ChipVariant = 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info' | 'neutral';\nexport type ChipSize = 'small' | 'medium' | 'large';\n\nexport interface ChipProps {\n label: React.ReactNode;\n variant?: ChipVariant;\n size?: ChipSize;\n disabled?: boolean;\n /** 클릭 가능한 칩 */\n onClick?: () => void;\n /** X 버튼 표시 및 닫기 핸들러 */\n onClose?: () => void;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst CLOSE_SIZES: Record<ChipSize, number> = {\n small: 10,\n medium: 12,\n large: 14,\n};\n\nexport const Chip: React.FC<ChipProps> = ({\n label,\n variant = 'neutral',\n size = 'medium',\n disabled = false,\n onClick,\n onClose,\n className = '',\n style,\n}) => {\n const classes = [\n styles.chip,\n styles[variant],\n styles[size],\n onClick ? styles.clickable : '',\n disabled ? styles.disabled : '',\n className,\n ].filter(Boolean).join(' ');\n\n const handleClick = () => {\n if (!disabled) onClick?.();\n };\n\n const handleClose = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (!disabled) onClose?.();\n };\n\n const svgSize = CLOSE_SIZES[size];\n\n return (\n <span\n className={classes}\n style={style}\n onClick={onClick ? handleClick : undefined}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick && !disabled ? 0 : undefined}\n onKeyDown={onClick ? (e) => { if (e.key === 'Enter' || e.key === ' ') handleClick(); } : undefined}\n >\n {label}\n {onClose && (\n <button\n type=\"button\"\n className={styles.closeBtn}\n onClick={handleClose}\n disabled={disabled}\n aria-label=\"삭제\"\n tabIndex={disabled ? -1 : 0}\n >\n <svg width={svgSize} height={svgSize} viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n )}\n </span>\n );\n};\n\nChip.displayName = 'SChip';\n","import React, { useState } from 'react';\nimport styles from './Textarea.module.css';\n\nexport type TextareaSize = 'small' | 'medium' | 'large';\nexport type TextareaResize = 'none' | 'vertical' | 'both';\n\nexport interface TextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'> {\n label?: string;\n size?: TextareaSize;\n error?: boolean;\n helperText?: string;\n errorText?: string;\n required?: boolean;\n resize?: TextareaResize;\n showCount?: boolean;\n}\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n (\n {\n label,\n size = 'medium',\n error = false,\n helperText,\n errorText,\n required,\n resize = 'vertical',\n showCount = false,\n id,\n className = '',\n onChange,\n value,\n defaultValue,\n maxLength,\n rows = 3,\n ...rest\n },\n ref,\n ) => {\n const inputId = id ?? label?.toLowerCase().replace(/\\s+/g, '-');\n\n const [length, setLength] = useState(() => {\n if (typeof value === 'string') return value.length;\n if (typeof defaultValue === 'string') return defaultValue.length;\n return 0;\n });\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setLength(e.target.value.length);\n onChange?.(e);\n };\n\n const wrapperClasses = [\n styles.textareaWrapper,\n styles[size],\n error ? styles.error : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={styles.wrapper}>\n {label && (\n <label htmlFor={inputId} className={styles.label}>\n {label}\n {required && <span className={styles.required}>*</span>}\n </label>\n )}\n <div className={wrapperClasses}>\n <textarea\n ref={ref}\n id={inputId}\n className={styles.textarea}\n required={required}\n rows={rows}\n maxLength={maxLength}\n value={value}\n defaultValue={defaultValue}\n onChange={handleChange}\n style={{ resize }}\n {...rest}\n />\n </div>\n <div className={styles.footer}>\n <div>\n {error && errorText && <p className={styles.errorText}>{errorText}</p>}\n {!error && helperText && <p className={styles.helperText}>{helperText}</p>}\n </div>\n {showCount && (\n <span className={styles.count}>\n {length}\n {maxLength != null ? `/${maxLength}` : ''}\n </span>\n )}\n </div>\n </div>\n );\n },\n);\n\nTextarea.displayName = 'STextarea';\n","import React from 'react';\nimport styles from './Tab.module.css';\n\nexport interface TabItem {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\nexport type TabVariant = 'filled' | 'underline' | 'line';\n\nexport interface TabProps {\n tabs: TabItem[];\n value?: string;\n defaultValue?: string;\n variant?: TabVariant;\n fullWidth?: boolean;\n onChange?: (value: string) => void;\n className?: string;\n}\n\nexport const Tab = React.forwardRef<HTMLDivElement, TabProps>(\n (\n {\n tabs,\n value,\n defaultValue,\n variant = 'filled',\n fullWidth = false,\n onChange,\n className = '',\n },\n ref,\n ) => {\n const [internalValue, setInternalValue] = React.useState(\n defaultValue ?? tabs[0]?.value ?? '',\n );\n\n const activeValue = value !== undefined ? value : internalValue;\n\n const handleClick = (tabValue: string) => {\n if (value === undefined) {\n setInternalValue(tabValue);\n }\n onChange?.(tabValue);\n };\n\n const rootClass = [\n styles.tabList,\n styles[variant],\n fullWidth ? styles.fullWidth : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div ref={ref} role=\"tablist\" className={rootClass}>\n {tabs.map((tab) => (\n <button\n key={tab.value}\n role=\"tab\"\n type=\"button\"\n aria-selected={activeValue === tab.value}\n disabled={tab.disabled}\n className={[\n styles.tab,\n activeValue === tab.value ? styles.active : '',\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={() => !tab.disabled && handleClick(tab.value)}\n >\n {tab.label}\n </button>\n ))}\n </div>\n );\n },\n);\n\nTab.displayName = 'STab';\n","import React from 'react';\nimport styles from './Table.module.css';\n\n// ── Row 데이터 타입 ──────────────────────────────\n\nexport interface TableCell {\n label: string;\n value: React.ReactNode;\n labelSpan?: number;\n valueSpan?: number;\n /** value td가 나머지 열을 모두 채울지 여부 */\n fullValue?: boolean;\n}\n\nexport interface TableRow {\n cells: TableCell[];\n}\n\n// ── Props ────────────────────────────────────────\n\nexport type TableLayout = 'fixed' | 'auto';\n\nexport interface TableProps extends React.HTMLAttributes<HTMLTableElement> {\n rows: TableRow[];\n /** 열 수 (label+value 쌍 기준, 기본 2열 = label 1 + value 1) */\n columns?: number;\n layout?: TableLayout;\n bordered?: boolean;\n striped?: boolean;\n}\n\n// ── Component ────────────────────────────────────\n\nexport const Table = React.forwardRef<HTMLTableElement, TableProps>(\n (\n {\n rows,\n columns = 2,\n layout = 'fixed',\n bordered = true,\n striped = false,\n className = '',\n ...rest\n },\n ref,\n ) => {\n const rootClass = [\n styles.table,\n bordered ? styles.bordered : '',\n striped ? styles.striped : '',\n styles[layout],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={styles.wrapper}>\n <table ref={ref} className={rootClass} {...rest}>\n <tbody>\n {rows.map((row, rowIdx) => (\n <tr key={rowIdx}>\n {row.cells.map((cell, cellIdx) => {\n const labelColSpan = cell.labelSpan ?? 1;\n const valueColSpan = cell.fullValue\n ? columns * 2 - labelColSpan\n : cell.valueSpan ?? 1;\n\n return (\n <React.Fragment key={cellIdx}>\n <th\n className={styles.th}\n colSpan={labelColSpan}\n scope=\"row\"\n >\n {cell.label}\n </th>\n <td\n className={styles.td}\n colSpan={valueColSpan}\n >\n {cell.value}\n </td>\n </React.Fragment>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n },\n);\n\nTable.displayName = 'STable';\n"],"names":["Button","React","variant","size","loading","fullWidth","iconOnly","leftIcon","rightIcon","disabled","children","className","rest","ref","classes","styles","jsxs","Input","label","error","helperText","errorText","prefix","suffix","required","id","inputId","wrapperClasses","jsx","Card","title","description","headerAction","footer","Badge","dot","contorl","variantTagMap","colorClassMap","Typography","color","as","Tag","formatBytes","bytes","UploadIcon","FileIcon","CloseIcon","FileInput","placeholder","accept","multiple","maxSize","onChange","inputRef","useRef","files","setFiles","useState","dragging","setDragging","sizeError","setSizeError","addFiles","useCallback","incoming","arr","f","next","removeFile","index","_","i","onDragOver","e","onDragLeave","onDrop","displayError","hiddenInput","fileList","file","Fragment","hasFile","displayName","inlineFieldClass","_a","zoneClass","footerAlignClass","Modal","open","onClose","footerAlign","closeOnBackdrop","closeOnEsc","hideCloseButton","panelRef","useEffect","prev","onKeyDown","focusable","first","last","panelClass","footerClass","createPortal","icons","ToastContext","createContext","ToastProvider","position","defaultDuration","toasts","setToasts","dismiss","t","add","options","duration","ctx","o","containerClass","ToastCard","item","onDismiss","message","exiting","progressRef","cls","useToast","useContext","Select","selectId","opt","SIZE_MAP","PATHS","Icon","name","style","ariaLabel","ariaHidden","px","DateInput","props","DatePicker","dateFormat","minDate","maxDate","excludeDates","filterDate","onDateChange","selectedDate","setSelectedDate","handleChange","date","ReactDatePicker","Pagination","itemCount","cntPerPage","currentPage","onChangedPage","pageCount","pageNumbers","gap","viewCounter","handleChangedPage","pageNo","pageNum","btnSizeMap","BaseButton","btnsize","iconClass","type","iconSize","offscreen","changeValue","changeValueHandler","sizeClass","Context","RadioGroup","value","direction","Radio","ownSize","ownDisabled","checked","Checkbox","defaultChecked","indeterminate","CheckboxGroup","toggle","optValue","v","CLOSE_SIZES","Chip","onClick","handleClick","handleClose","svgSize","Textarea","resize","showCount","defaultValue","maxLength","rows","length","setLength","Tab","tabs","internalValue","setInternalValue","activeValue","tabValue","rootClass","tab","Table","columns","layout","bordered","striped","row","rowIdx","cell","cellIdx","labelColSpan","valueColSpan"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,76 @@
1
+ {
2
+ "name": "@dmsej108/design-system",
3
+ "version": "2.2.0",
4
+ "private": false,
5
+ "type": "module",
6
+ "description": "Reusable React design system for zzou.",
7
+ "license": "MIT",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/dmsej108/react-design-system.git"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/dmsej108/react-design-system/issues"
14
+ },
15
+ "homepage": "https://dmsej108.github.io/react-design-system/",
16
+ "exports": {
17
+ ".": {
18
+ "import": "./dist/index.js",
19
+ "types": "./dist/index.d.ts"
20
+ },
21
+ "./dist/index.css": "./dist/index.css",
22
+ "./styles": "./src/tokens/index.css",
23
+ "./legacy-styles": "./src/styles/index.css"
24
+ },
25
+ "main": "./dist/index.js",
26
+ "types": "./dist/index.d.ts",
27
+ "files": [
28
+ "dist",
29
+ "src/styles",
30
+ "src/tokens"
31
+ ],
32
+ "publishConfig": {
33
+ "access": "public"
34
+ },
35
+ "dependencies": {
36
+ "react-datepicker": "^9.1.0"
37
+ },
38
+ "peerDependencies": {
39
+ "react": "^18.0.0",
40
+ "react-dom": "^18.0.0"
41
+ },
42
+ "peerDependenciesMeta": {
43
+ "react": {
44
+ "optional": false
45
+ },
46
+ "react-dom": {
47
+ "optional": false
48
+ }
49
+ },
50
+ "devDependencies": {
51
+ "@storybook/addon-a11y": "^8.6.17",
52
+ "@storybook/addon-essentials": "^8.6.14",
53
+ "@storybook/addon-interactions": "^8.6.14",
54
+ "@storybook/blocks": "^8.6.14",
55
+ "@storybook/react": "^8.6.17",
56
+ "@storybook/react-vite": "^8.6.17",
57
+ "@types/react": "^18.3.3",
58
+ "@types/react-datepicker": "^7.0.0",
59
+ "@types/react-dom": "^18.3.0",
60
+ "@vitejs/plugin-react": "^4.7.0",
61
+ "react": "18.3.1",
62
+ "react-dom": "18.3.1",
63
+ "storybook": "^8.6.17",
64
+ "tsup": "^8.5.1",
65
+ "typescript": "^5.4.5",
66
+ "vite": "^5.3.4",
67
+ "vite-plugin-dts": "^5.0.0"
68
+ },
69
+ "scripts": {
70
+ "dev": "storybook dev --port 6006",
71
+ "storybook": "storybook dev --port 6006",
72
+ "typecheck": "tsc --noEmit",
73
+ "build": "vite build --config vite.lib.config.ts",
74
+ "build-storybook": "storybook build"
75
+ }
76
+ }