@t3q-ui/design-system 1.57.0 → 1.58.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.
- package/CHANGELOG.md +8 -0
- package/dist/{chunk-Z2SHCDPP.cjs → chunk-IYDQLTRF.cjs} +6 -5
- package/dist/chunk-IYDQLTRF.cjs.map +1 -0
- package/dist/{chunk-LEHEPAQO.js → chunk-UNNNNYKG.js} +6 -5
- package/dist/chunk-UNNNNYKG.js.map +1 -0
- package/dist/{index-ZIfOVixA.d.cts → index-3laRfJM7.d.cts} +2 -1
- package/dist/{index-ZIfOVixA.d.ts → index-3laRfJM7.d.ts} +2 -1
- package/dist/index.cjs +457 -457
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/patterns/index.cjs +69 -69
- package/dist/patterns/index.d.cts +1 -1
- package/dist/patterns/index.d.ts +1 -1
- package/dist/patterns/index.js +1 -1
- package/package.json +1 -1
- package/skills/tds/SKILL.md +6 -5
- package/skills/tds/examples/detail-page.tsx +13 -13
- package/skills/tds/examples/list-page.tsx +3 -2
- package/skills/tds/reference/components.md +2 -1
- package/dist/chunk-LEHEPAQO.js.map +0 -1
- package/dist/chunk-Z2SHCDPP.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/cn.ts","../src/utils/sanitizeUserText.ts","../src/components/alert.tsx","../src/components/spinner/spinner.json","../src/components/spinner/index.tsx","../src/components/button.tsx","../src/components/stack/index.tsx","../src/components/badge.tsx","../src/components/tooltip.tsx","../src/components/toggleGroup.tsx","../src/components/iconButton.tsx","../src/components/card.tsx","../src/components/checkbox.tsx","../src/components/_internal/useRestoreFocusToOpener.ts","../src/components/dialog.tsx","../src/components/separator.tsx","../src/components/drawer.tsx","../src/components/dropdownMenu.tsx","../src/components/form.tsx","../src/components/lucideIcon.tsx","../src/components/emptyBoxIllustration.tsx","../src/components/tabs.tsx","../src/components/pageHeader.tsx","../src/components/pagination.tsx","../src/components/panel.tsx","../src/components/table.tsx","../src/components/skeleton/index.tsx","../src/components/skeleton/table.tsx","../src/components/agGridTable/context.tsx","../src/components/agGridTable/localeText.ts","../src/components/agGridTable/helpers.ts/getSortedColumnState.ts","../src/components/agGridTable/index.tsx"],"names":["cva","jsx","React","forwardRef","React3","React4","React5","jsxs","React6","Slot","React7","useRef","React8","React9","React10","SheetPrimitive","X","React11","Info","TriangleAlert","React13","React14","createContext","useCallback","useMemo","useContext","React15","Fragment","React16","Root","React17","AgGridTable","useState","useEffect"],"mappings":"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","file":"chunk-UNNNNYKG.js","sourcesContent":["import { type ClassValue, clsx } from 'clsx'\nimport { extendTailwindMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs))\n}\n\nconst fontSize = [\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'base-semibold',\n 'base-medium',\n 'base-regular',\n 'large-medium',\n 'large-semibold',\n 'small-bold-h',\n 'small-medium-h',\n 'small-regular-h',\n 'small-bold',\n 'small-medium',\n 'small-regular',\n 'xsmall-bold',\n 'xsmall-medium',\n 'xsmall-regular',\n]\nconst borderRadius = ['none', 'xsmall', 'small', 'medium', 'large', 'xlarge', 'full']\n\n// Tailwind merge 커스텀 설정\n\nconst twMerge = extendTailwindMerge<'border-radius'>({\n extend: {\n classGroups: {\n 'font-size': fontSize.map((item) => 'text-' + item),\n 'border-radius': borderRadius.map((item) => 'rounded-' + item),\n },\n },\n})\n","import type * as React from 'react'\n\n/**\n * 사용자가 입력한 텍스트를 표시용으로 정규화한다.\n * - 연속 공백은 보존(이 함수는 공백을 건드리지 않음 — `whitespace-pre*` 클래스가 담당)\n * - 줄바꿈 문자(`\\n`, `\\r`)는 단일 공백으로 대체하여 단어 경계를 보존하면서 줄바꿈을 제거.\n * HTML 의 inline whitespace 처리(`<p>foo↵bar</p>` 가 `\"foo bar\"` 로 렌더)와 동일한 의미.\n * 예: `\"구\\n름\"` → `\"구 름\"`. 식별자 컬럼은 app 측 `normalizeWhitespace` 가 \\s+ 를\n * 다시 단일 공백으로 축소하므로 이중 공백 걱정 없음.\n *\n * string / string 을 포함한 배열에만 적용되며, React 엘리먼트는 그대로 통과한다.\n */\nexport function sanitizeUserText(node: React.ReactNode): React.ReactNode {\n if (typeof node === 'string') return node.replace(/[\\r\\n]+/g, ' ')\n if (Array.isArray(node)) return node.map(sanitizeUserText)\n return node\n}\n","import * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '../utils/cn'\nimport { sanitizeUserText } from '../utils/sanitizeUserText'\n\nconst alertVariants = cva(\n 'relative w-full rounded-medium p-[16px] grid has-[>svg]:grid-cols-[24px_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-[8px] gap-y-[8px] items-start [&>svg]:size-[20px] [&>svg]:text-current [&>svg]:m-[2px]',\n {\n variants: {\n variant: {\n primary:\n '[&>svg]:text-sys-alert-primary-icon text-sys-alert-primary-text bg-sys-alert-primary-background',\n info: '[&>svg]:text-sys-alert-info-icon text-sys-alert-info-text bg-sys-alert-info-background',\n success:\n '[&>svg]:text-sys-alert-success-icon text-sys-alert-success-text bg-sys-alert-success-background',\n warning:\n '[&>svg]:text-sys-alert-warning-icon text-sys-alert-warning-text bg-sys-alert-warning-background',\n danger:\n '[&>svg]:text-sys-alert-danger-icon text-sys-alert-danger-text bg-sys-alert-danger-background',\n },\n },\n defaultVariants: {\n variant: 'primary',\n },\n },\n)\n\n/**\n * 화면 안에 남아 있는 상태·안내 박스. 섹션 상단의 경고·오류·정보 안내에 쓴다.\n *\n * 언제 쓰나: 폼 전체 오류(서버 거부), 권한·만료 같은 지속 상태, 주의가 필요한 설명, **폼 섹션 안의 부분 실패**(선택지 목록을 못 불러옴 — `variant='danger'` 한 줄 제목 + 설명 + `AlertActions` 의 \"다시 시도\" 링크, 2026-10-13). `variant` 로 의미를 주고 `AlertTitle`·`AlertDescription` 으로 구성한다.\n * 언제 안 쓰나: 잠깐 보이면 되는 결과(→ Toast), 필드 하나의 오류(→ FormMessage), 상태 한 단어(→ Badge), 화면·패널 본문을 통째로 못 불러온 것(→ ErrorState 상자).\n * 대신/함께: 아이콘을 첫 자식으로 넣으면 자동으로 왼쪽 열에 놓인다. 행동 버튼은 `AlertActions` 에(링크형 `Button variant='secondaryLink'` 기본, 버튼 사이 8px).\n */\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<'div'> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot='alert'\n role='alert'\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction AlertTitle({ className, children, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot='alert-title'\n className={cn('text-h5 col-start-2 line-clamp-1 whitespace-pre', className)}\n {...props}\n >\n {sanitizeUserText(children)}\n </div>\n )\n}\n\nfunction AlertDescription({ className, children, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot='alert-description'\n className={cn('text-base-medium col-start-2 whitespace-pre-wrap', className)}\n {...props}\n >\n {sanitizeUserText(children)}\n </div>\n )\n}\n\n/** 설명 아래 행동 버튼 줄. 링크형 버튼(`secondaryLink`)이 기본이고 버튼 사이는 8px.\n * 링크 버튼은 Alert 의 글자색을 물려받고(variant 마다 대비가 맞는 색 — 회색 링크는 danger 바탕에서 대비 미달) 밑줄로 눌림을 알린다. 왼쪽 패딩을 없애 설명과 왼쪽 끝을 맞춘다 */\nfunction AlertActions({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot='alert-actions'\n className={cn(\n 'col-start-2 mt-[4px] flex flex-wrap items-center gap-[8px]',\n '[&>button]:px-0 [&>button]:text-current [&>button]:underline [&>button:hover]:text-current [&>button:active]:text-current',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport { Alert, AlertActions, AlertDescription, AlertTitle }\n","{\n \"v\": \"5.9.0\",\n \"fr\": 30,\n \"ip\": 0,\n \"op\": 31,\n \"w\": 500,\n \"h\": 500,\n \"nm\": \"컴포지션 1\",\n \"ddd\": 0,\n \"assets\": [],\n \"layers\": [\n {\n \"ddd\": 0,\n \"ind\": 1,\n \"ty\": 4,\n \"nm\": \"모양 레이어 9\",\n \"sr\": 1,\n \"ks\": {\n \"o\": {\n \"a\": 1,\n \"k\": [\n {\n \"i\": { \"x\": [0.667], \"y\": [1] },\n \"o\": { \"x\": [0.333], \"y\": [0] },\n \"t\": 15,\n \"s\": [100]\n },\n { \"i\": { \"x\": [0.667], \"y\": [1] }, \"o\": { \"x\": [0.333], \"y\": [0] }, \"t\": 18, \"s\": [0] },\n {\n \"i\": { \"x\": [0.667], \"y\": [1] },\n \"o\": { \"x\": [0.333], \"y\": [0] },\n \"t\": 26.5,\n \"s\": [0]\n },\n { \"t\": 30, \"s\": [100] }\n ],\n \"ix\": 11\n },\n \"r\": { \"a\": 0, \"k\": 0, \"ix\": 10 },\n \"p\": { \"a\": 0, \"k\": [335.637, 338.637, 0], \"ix\": 2, \"l\": 2 },\n \"a\": { \"a\": 0, \"k\": [-137.363, -106.363, 0], \"ix\": 1, \"l\": 2 },\n \"s\": {\n \"a\": 1,\n \"k\": [\n {\n \"i\": { \"x\": [0.667, 0.667, 0.667], \"y\": [1, 1, 1] },\n \"o\": { \"x\": [0.333, 0.333, 0.333], \"y\": [0, 0, 0] },\n \"t\": 15,\n \"s\": [100, 100, 100]\n },\n {\n \"i\": { \"x\": [0.667, 0.667, 0.667], \"y\": [1, 1, 1] },\n \"o\": { \"x\": [0.333, 0.333, 0.333], \"y\": [0, 0, 0] },\n \"t\": 18,\n \"s\": [0, 0, 100]\n },\n {\n \"i\": { \"x\": [0.667, 0.667, 0.667], \"y\": [1, 1, 1] },\n \"o\": { \"x\": [0.333, 0.333, 0.333], \"y\": [0, 0, 0] },\n \"t\": 26.5,\n \"s\": [0, 0, 100]\n },\n { \"t\": 30, \"s\": [100, 100, 100] }\n ],\n \"ix\": 6,\n \"l\": 2\n }\n },\n \"ao\": 0,\n \"shapes\": [\n {\n \"ty\": \"gr\",\n \"it\": [\n {\n \"ty\": \"rc\",\n \"d\": 1,\n \"s\": { \"a\": 0, \"k\": [71.273, 71.273], \"ix\": 2 },\n \"p\": { \"a\": 0, \"k\": [0, 0], \"ix\": 3 },\n \"r\": { \"a\": 0, \"k\": 12, \"ix\": 4 },\n \"nm\": \"사각형 패스 1\",\n \"mn\": \"ADBE Vector Shape - Rect\",\n \"hd\": false\n },\n {\n \"ty\": \"fl\",\n \"c\": { \"a\": 0, \"k\": [1, 1, 1, 1], \"ix\": 4 },\n \"o\": { \"a\": 0, \"k\": 100, \"ix\": 5 },\n \"r\": 1,\n \"bm\": 0,\n \"nm\": \"칠 1\",\n \"mn\": \"ADBE Vector Graphic - Fill\",\n \"hd\": false\n },\n {\n \"ty\": \"tr\",\n \"p\": { \"a\": 0, \"k\": [-137.363, -106.363], \"ix\": 2 },\n \"a\": { \"a\": 0, \"k\": [0, 0], \"ix\": 1 },\n \"s\": { \"a\": 0, \"k\": [100, 100], \"ix\": 3 },\n \"r\": { \"a\": 0, \"k\": 0, \"ix\": 6 },\n \"o\": { \"a\": 0, \"k\": 100, \"ix\": 7 },\n \"sk\": { \"a\": 0, \"k\": 0, \"ix\": 4 },\n \"sa\": { \"a\": 0, \"k\": 0, \"ix\": 5 },\n \"nm\": \"변형\"\n }\n ],\n \"nm\": \"사각형 1\",\n \"np\": 3,\n \"cix\": 2,\n \"bm\": 0,\n \"ix\": 1,\n \"mn\": \"ADBE Vector Group\",\n \"hd\": false\n }\n ],\n \"ip\": 0,\n \"op\": 900,\n \"st\": 0,\n \"bm\": 0\n },\n {\n \"ddd\": 0,\n \"ind\": 2,\n \"ty\": 4,\n \"nm\": \"모양 레이어 8\",\n \"sr\": 1,\n \"ks\": {\n \"o\": {\n \"a\": 1,\n \"k\": [\n {\n \"i\": { \"x\": [0.667], \"y\": [1] },\n \"o\": { \"x\": [0.333], \"y\": [0] },\n \"t\": 16.5,\n \"s\": [100]\n },\n { \"t\": 19.5, \"s\": [0] }\n ],\n \"ix\": 11\n },\n \"r\": { \"a\": 0, \"k\": 0, \"ix\": 10 },\n \"p\": { \"a\": 0, \"k\": [246.637, 338.637, 0], \"ix\": 2, \"l\": 2 },\n \"a\": { \"a\": 0, \"k\": [-137.363, -106.363, 0], \"ix\": 1, \"l\": 2 },\n \"s\": {\n \"a\": 1,\n \"k\": [\n {\n \"i\": { \"x\": [0.667, 0.667, 0.667], \"y\": [1, 1, 1] },\n \"o\": { \"x\": [0.333, 0.333, 0.333], \"y\": [0, 0, 0] },\n \"t\": 3,\n \"s\": [0, 0, 100]\n },\n {\n \"i\": { \"x\": [0.667, 0.667, 0.667], \"y\": [1, 1, 1] },\n \"o\": { \"x\": [0.333, 0.333, 0.333], \"y\": [0, 0, 0] },\n \"t\": 6,\n \"s\": [100, 100, 100]\n },\n {\n \"i\": { \"x\": [0.667, 0.667, 0.667], \"y\": [1, 1, 1] },\n \"o\": { \"x\": [0.333, 0.333, 0.333], \"y\": [0, 0, 0] },\n \"t\": 16.5,\n \"s\": [100, 100, 100]\n },\n { \"t\": 19.5, \"s\": [0, 0, 100] }\n ],\n \"ix\": 6,\n \"l\": 2\n }\n },\n \"ao\": 0,\n \"shapes\": [\n {\n \"ty\": \"gr\",\n \"it\": [\n {\n \"ty\": \"rc\",\n \"d\": 1,\n \"s\": { \"a\": 0, \"k\": [71.273, 71.273], \"ix\": 2 },\n \"p\": { \"a\": 0, \"k\": [0, 0], \"ix\": 3 },\n \"r\": { \"a\": 0, \"k\": 12, \"ix\": 4 },\n \"nm\": \"사각형 패스 1\",\n \"mn\": \"ADBE Vector Shape - Rect\",\n \"hd\": false\n },\n {\n \"ty\": \"fl\",\n \"c\": { \"a\": 0, \"k\": [1, 1, 1, 1], \"ix\": 4 },\n \"o\": { \"a\": 0, \"k\": 100, \"ix\": 5 },\n \"r\": 1,\n \"bm\": 0,\n \"nm\": \"칠 1\",\n \"mn\": \"ADBE Vector Graphic - Fill\",\n \"hd\": false\n },\n {\n \"ty\": \"tr\",\n \"p\": { \"a\": 0, \"k\": [-137.363, -106.363], \"ix\": 2 },\n \"a\": { \"a\": 0, \"k\": [0, 0], \"ix\": 1 },\n \"s\": { \"a\": 0, \"k\": [100, 100], \"ix\": 3 },\n \"r\": { \"a\": 0, \"k\": 0, \"ix\": 6 },\n \"o\": { \"a\": 0, \"k\": 100, \"ix\": 7 },\n \"sk\": { \"a\": 0, \"k\": 0, \"ix\": 4 },\n \"sa\": { \"a\": 0, \"k\": 0, \"ix\": 5 },\n \"nm\": \"변형\"\n }\n ],\n \"nm\": \"사각형 1\",\n \"np\": 3,\n \"cix\": 2,\n \"bm\": 0,\n \"ix\": 1,\n \"mn\": \"ADBE Vector Group\",\n \"hd\": false\n }\n ],\n \"ip\": 0,\n \"op\": 900,\n \"st\": 0,\n \"bm\": 0\n },\n {\n \"ddd\": 0,\n \"ind\": 3,\n \"ty\": 4,\n \"nm\": \"모양 레이어 7\",\n \"sr\": 1,\n \"ks\": {\n \"o\": { \"a\": 0, \"k\": 100, \"ix\": 11 },\n \"r\": { \"a\": 0, \"k\": 0, \"ix\": 10 },\n \"p\": { \"a\": 0, \"k\": [157.637, 338.637, 0], \"ix\": 2, \"l\": 2 },\n \"a\": { \"a\": 0, \"k\": [-137.363, -106.363, 0], \"ix\": 1, \"l\": 2 },\n \"s\": {\n \"a\": 1,\n \"k\": [\n {\n \"i\": { \"x\": [0.667, 0.667, 0.667], \"y\": [1, 1, 1] },\n \"o\": { \"x\": [0.333, 0.333, 0.333], \"y\": [0, 0, 0] },\n \"t\": 4.5,\n \"s\": [0, 0, 100]\n },\n {\n \"i\": { \"x\": [0.667, 0.667, 0.667], \"y\": [1, 1, 1] },\n \"o\": { \"x\": [0.333, 0.333, 0.333], \"y\": [0, 0, 0] },\n \"t\": 7.5,\n \"s\": [100, 100, 100]\n },\n {\n \"i\": { \"x\": [0.667, 0.667, 0.667], \"y\": [1, 1, 1] },\n \"o\": { \"x\": [0.333, 0.333, 0.333], \"y\": [0, 0, 0] },\n \"t\": 22.5,\n \"s\": [100, 100, 100]\n },\n { \"t\": 25.5, \"s\": [0, 0, 100] }\n ],\n \"ix\": 6,\n \"l\": 2\n }\n },\n \"ao\": 0,\n \"shapes\": [\n {\n \"ty\": \"gr\",\n \"it\": [\n {\n \"ty\": \"rc\",\n \"d\": 1,\n \"s\": { \"a\": 0, \"k\": [71.273, 71.273], \"ix\": 2 },\n \"p\": { \"a\": 0, \"k\": [0, 0], \"ix\": 3 },\n \"r\": { \"a\": 0, \"k\": 12, \"ix\": 4 },\n \"nm\": \"사각형 패스 1\",\n \"mn\": \"ADBE Vector Shape - Rect\",\n \"hd\": false\n },\n {\n \"ty\": \"fl\",\n \"c\": { \"a\": 0, \"k\": [1, 1, 1, 1], \"ix\": 4 },\n \"o\": { \"a\": 0, \"k\": 100, \"ix\": 5 },\n \"r\": 1,\n \"bm\": 0,\n \"nm\": \"칠 1\",\n \"mn\": \"ADBE Vector Graphic - Fill\",\n \"hd\": false\n },\n {\n \"ty\": \"tr\",\n \"p\": { \"a\": 0, \"k\": [-137.363, -106.363], \"ix\": 2 },\n \"a\": { \"a\": 0, \"k\": [0, 0], \"ix\": 1 },\n \"s\": { \"a\": 0, \"k\": [100, 100], \"ix\": 3 },\n \"r\": { \"a\": 0, \"k\": 0, \"ix\": 6 },\n \"o\": { \"a\": 0, \"k\": 100, \"ix\": 7 },\n \"sk\": { \"a\": 0, \"k\": 0, \"ix\": 4 },\n \"sa\": { \"a\": 0, \"k\": 0, \"ix\": 5 },\n \"nm\": \"변형\"\n }\n ],\n \"nm\": \"사각형 1\",\n \"np\": 3,\n \"cix\": 2,\n \"bm\": 0,\n \"ix\": 1,\n \"mn\": \"ADBE Vector Group\",\n \"hd\": false\n }\n ],\n \"ip\": 0,\n \"op\": 900,\n \"st\": 0,\n \"bm\": 0\n },\n {\n \"ddd\": 0,\n \"ind\": 4,\n \"ty\": 4,\n \"nm\": \"모양 레이어 6\",\n \"sr\": 1,\n \"ks\": {\n \"o\": { \"a\": 0, \"k\": 100, \"ix\": 11 },\n \"r\": { \"a\": 0, \"k\": 0, \"ix\": 10 },\n \"p\": { \"a\": 0, \"k\": [335.637, 252.637, 0], \"ix\": 2, \"l\": 2 },\n \"a\": { \"a\": 0, \"k\": [-137.363, -106.363, 0], \"ix\": 1, \"l\": 2 },\n \"s\": {\n \"a\": 1,\n \"k\": [\n {\n \"i\": { \"x\": [0.667, 0.667, 0.667], \"y\": [1, 1, 1] },\n \"o\": { \"x\": [0.333, 0.333, 0.333], \"y\": [0, 0, 0] },\n \"t\": 9,\n \"s\": [100, 100, 100]\n },\n {\n \"i\": { \"x\": [0.667, 0.667, 0.667], \"y\": [1, 1, 1] },\n \"o\": { \"x\": [0.333, 0.333, 0.333], \"y\": [0, 0, 0] },\n \"t\": 12,\n \"s\": [0, 0, 100]\n },\n {\n \"i\": { \"x\": [0.667, 0.667, 0.667], \"y\": [1, 1, 1] },\n \"o\": { \"x\": [0.333, 0.333, 0.333], \"y\": [0, 0, 0] },\n \"t\": 25,\n \"s\": [0, 0, 100]\n },\n { \"t\": 28, \"s\": [100, 100, 100] }\n ],\n \"ix\": 6,\n \"l\": 2\n }\n },\n \"ao\": 0,\n \"shapes\": [\n {\n \"ty\": \"gr\",\n \"it\": [\n {\n \"ty\": \"rc\",\n \"d\": 1,\n \"s\": { \"a\": 0, \"k\": [71.273, 71.273], \"ix\": 2 },\n \"p\": { \"a\": 0, \"k\": [0, 0], \"ix\": 3 },\n \"r\": { \"a\": 0, \"k\": 12, \"ix\": 4 },\n \"nm\": \"사각형 패스 1\",\n \"mn\": \"ADBE Vector Shape - Rect\",\n \"hd\": false\n },\n {\n \"ty\": \"fl\",\n \"c\": { \"a\": 0, \"k\": [1, 1, 1, 1], \"ix\": 4 },\n \"o\": { \"a\": 0, \"k\": 100, \"ix\": 5 },\n \"r\": 1,\n \"bm\": 0,\n \"nm\": \"칠 1\",\n \"mn\": \"ADBE Vector Graphic - Fill\",\n \"hd\": false\n },\n {\n \"ty\": \"tr\",\n \"p\": { \"a\": 0, \"k\": [-137.363, -106.363], \"ix\": 2 },\n \"a\": { \"a\": 0, \"k\": [0, 0], \"ix\": 1 },\n \"s\": { \"a\": 0, \"k\": [100, 100], \"ix\": 3 },\n \"r\": { \"a\": 0, \"k\": 0, \"ix\": 6 },\n \"o\": { \"a\": 0, \"k\": 100, \"ix\": 7 },\n \"sk\": { \"a\": 0, \"k\": 0, \"ix\": 4 },\n \"sa\": { \"a\": 0, \"k\": 0, \"ix\": 5 },\n \"nm\": \"변형\"\n }\n ],\n \"nm\": \"사각형 1\",\n \"np\": 3,\n \"cix\": 2,\n \"bm\": 0,\n \"ix\": 1,\n \"mn\": \"ADBE Vector Group\",\n \"hd\": false\n }\n ],\n \"ip\": 0,\n \"op\": 900,\n \"st\": 0,\n \"bm\": 0\n },\n {\n \"ddd\": 0,\n \"ind\": 5,\n \"ty\": 4,\n \"nm\": \"모양 레이어 5\",\n \"sr\": 1,\n \"ks\": {\n \"o\": {\n \"a\": 1,\n \"k\": [\n {\n \"i\": { \"x\": [0.833], \"y\": [0.833] },\n \"o\": { \"x\": [0.167], \"y\": [0.167] },\n \"t\": 0,\n \"s\": [100]\n },\n {\n \"i\": { \"x\": [0.833], \"y\": [0.833] },\n \"o\": { \"x\": [0.167], \"y\": [0.167] },\n \"t\": 15,\n \"s\": [0]\n },\n { \"t\": 30, \"s\": [100] }\n ],\n \"ix\": 11\n },\n \"r\": { \"a\": 0, \"k\": 0, \"ix\": 10 },\n \"p\": { \"a\": 0, \"k\": [246.637, 252.637, 0], \"ix\": 2, \"l\": 2 },\n \"a\": { \"a\": 0, \"k\": [-137.363, -106.363, 0], \"ix\": 1, \"l\": 2 },\n \"s\": { \"a\": 0, \"k\": [100, 100, 100], \"ix\": 6, \"l\": 2 }\n },\n \"ao\": 0,\n \"shapes\": [\n {\n \"ty\": \"gr\",\n \"it\": [\n {\n \"ty\": \"rc\",\n \"d\": 1,\n \"s\": { \"a\": 0, \"k\": [71.273, 71.273], \"ix\": 2 },\n \"p\": { \"a\": 0, \"k\": [0, 0], \"ix\": 3 },\n \"r\": { \"a\": 0, \"k\": 12, \"ix\": 4 },\n \"nm\": \"사각형 패스 1\",\n \"mn\": \"ADBE Vector Shape - Rect\",\n \"hd\": false\n },\n {\n \"ty\": \"fl\",\n \"c\": { \"a\": 0, \"k\": [1, 1, 1, 1], \"ix\": 4 },\n \"o\": { \"a\": 0, \"k\": 100, \"ix\": 5 },\n \"r\": 1,\n \"bm\": 0,\n \"nm\": \"칠 1\",\n \"mn\": \"ADBE Vector Graphic - Fill\",\n \"hd\": false\n },\n {\n \"ty\": \"tr\",\n \"p\": { \"a\": 0, \"k\": [-137.363, -106.363], \"ix\": 2 },\n \"a\": { \"a\": 0, \"k\": [0, 0], \"ix\": 1 },\n \"s\": { \"a\": 0, \"k\": [100, 100], \"ix\": 3 },\n \"r\": { \"a\": 0, \"k\": 0, \"ix\": 6 },\n \"o\": { \"a\": 0, \"k\": 100, \"ix\": 7 },\n \"sk\": { \"a\": 0, \"k\": 0, \"ix\": 4 },\n \"sa\": { \"a\": 0, \"k\": 0, \"ix\": 5 },\n \"nm\": \"변형\"\n }\n ],\n \"nm\": \"사각형 1\",\n \"np\": 3,\n \"cix\": 2,\n \"bm\": 0,\n \"ix\": 1,\n \"mn\": \"ADBE Vector Group\",\n \"hd\": false\n }\n ],\n \"ip\": 0,\n \"op\": 900,\n \"st\": 0,\n \"bm\": 0\n },\n {\n \"ddd\": 0,\n \"ind\": 6,\n \"ty\": 4,\n \"nm\": \"모양 레이어 4\",\n \"sr\": 1,\n \"ks\": {\n \"o\": {\n \"a\": 1,\n \"k\": [\n {\n \"i\": { \"x\": [0.667], \"y\": [1] },\n \"o\": { \"x\": [0.333], \"y\": [0] },\n \"t\": 7.5,\n \"s\": [0]\n },\n { \"t\": 15, \"s\": [100] }\n ],\n \"ix\": 11\n },\n \"r\": { \"a\": 0, \"k\": 0, \"ix\": 10 },\n \"p\": { \"a\": 0, \"k\": [157.637, 252.637, 0], \"ix\": 2, \"l\": 2 },\n \"a\": { \"a\": 0, \"k\": [-137.363, -106.363, 0], \"ix\": 1, \"l\": 2 },\n \"s\": {\n \"a\": 1,\n \"k\": [\n {\n \"i\": { \"x\": [0.667, 0.667, 0.667], \"y\": [1, 1, 1] },\n \"o\": { \"x\": [0.333, 0.333, 0.333], \"y\": [0, 0, 0] },\n \"t\": 10.5,\n \"s\": [0, 0, 100]\n },\n {\n \"i\": { \"x\": [0.667, 0.667, 0.667], \"y\": [1, 1, 1] },\n \"o\": { \"x\": [0.333, 0.333, 0.333], \"y\": [0, 0, 0] },\n \"t\": 13.5,\n \"s\": [100, 100, 100]\n },\n {\n \"i\": { \"x\": [0.667, 0.667, 0.667], \"y\": [1, 1, 1] },\n \"o\": { \"x\": [0.333, 0.333, 0.333], \"y\": [0, 0, 0] },\n \"t\": 24,\n \"s\": [100, 100, 100]\n },\n { \"t\": 27, \"s\": [0, 0, 100] }\n ],\n \"ix\": 6,\n \"l\": 2\n }\n },\n \"ao\": 0,\n \"shapes\": [\n {\n \"ty\": \"gr\",\n \"it\": [\n {\n \"ty\": \"rc\",\n \"d\": 1,\n \"s\": { \"a\": 0, \"k\": [71.273, 71.273], \"ix\": 2 },\n \"p\": { \"a\": 0, \"k\": [0, 0], \"ix\": 3 },\n \"r\": { \"a\": 0, \"k\": 12, \"ix\": 4 },\n \"nm\": \"사각형 패스 1\",\n \"mn\": \"ADBE Vector Shape - Rect\",\n \"hd\": false\n },\n {\n \"ty\": \"fl\",\n \"c\": { \"a\": 0, \"k\": [1, 1, 1, 1], \"ix\": 4 },\n \"o\": { \"a\": 0, \"k\": 100, \"ix\": 5 },\n \"r\": 1,\n \"bm\": 0,\n \"nm\": \"칠 1\",\n \"mn\": \"ADBE Vector Graphic - Fill\",\n \"hd\": false\n },\n {\n \"ty\": \"tr\",\n \"p\": { \"a\": 0, \"k\": [-137.363, -106.363], \"ix\": 2 },\n \"a\": { \"a\": 0, \"k\": [0, 0], \"ix\": 1 },\n \"s\": { \"a\": 0, \"k\": [100, 100], \"ix\": 3 },\n \"r\": { \"a\": 0, \"k\": 0, \"ix\": 6 },\n \"o\": { \"a\": 0, \"k\": 100, \"ix\": 7 },\n \"sk\": { \"a\": 0, \"k\": 0, \"ix\": 4 },\n \"sa\": { \"a\": 0, \"k\": 0, \"ix\": 5 },\n \"nm\": \"변형\"\n }\n ],\n \"nm\": \"사각형 1\",\n \"np\": 3,\n \"cix\": 2,\n \"bm\": 0,\n \"ix\": 1,\n \"mn\": \"ADBE Vector Group\",\n \"hd\": false\n }\n ],\n \"ip\": 0,\n \"op\": 900,\n \"st\": 0,\n \"bm\": 0\n },\n {\n \"ddd\": 0,\n \"ind\": 7,\n \"ty\": 4,\n \"nm\": \"모양 레이어 3\",\n \"sr\": 1,\n \"ks\": {\n \"o\": { \"a\": 0, \"k\": 100, \"ix\": 11 },\n \"r\": { \"a\": 0, \"k\": 0, \"ix\": 10 },\n \"p\": { \"a\": 0, \"k\": [335.637, 165.637, 0], \"ix\": 2, \"l\": 2 },\n \"a\": { \"a\": 0, \"k\": [-137.363, -106.363, 0], \"ix\": 1, \"l\": 2 },\n \"s\": {\n \"a\": 1,\n \"k\": [\n {\n \"i\": { \"x\": [0.667, 0.667, 0.667], \"y\": [1, 1, 1] },\n \"o\": { \"x\": [0.333, 0.333, 0.333], \"y\": [0, 0, 0] },\n \"t\": 7.5,\n \"s\": [100, 100, 100]\n },\n {\n \"i\": { \"x\": [0.667, 0.667, 0.667], \"y\": [1, 1, 1] },\n \"o\": { \"x\": [0.333, 0.333, 0.333], \"y\": [0, 0, 0] },\n \"t\": 10.5,\n \"s\": [0, 0, 100]\n },\n {\n \"i\": { \"x\": [0.667, 0.667, 0.667], \"y\": [1, 1, 1] },\n \"o\": { \"x\": [0.333, 0.333, 0.333], \"y\": [0, 0, 0] },\n \"t\": 19,\n \"s\": [0, 0, 100]\n },\n { \"t\": 22, \"s\": [100, 100, 100] }\n ],\n \"ix\": 6,\n \"l\": 2\n }\n },\n \"ao\": 0,\n \"shapes\": [\n {\n \"ty\": \"gr\",\n \"it\": [\n {\n \"ty\": \"rc\",\n \"d\": 1,\n \"s\": { \"a\": 0, \"k\": [71.273, 71.273], \"ix\": 2 },\n \"p\": { \"a\": 0, \"k\": [0, 0], \"ix\": 3 },\n \"r\": { \"a\": 0, \"k\": 12, \"ix\": 4 },\n \"nm\": \"사각형 패스 1\",\n \"mn\": \"ADBE Vector Shape - Rect\",\n \"hd\": false\n },\n {\n \"ty\": \"fl\",\n \"c\": { \"a\": 0, \"k\": [1, 1, 1, 1], \"ix\": 4 },\n \"o\": { \"a\": 0, \"k\": 100, \"ix\": 5 },\n \"r\": 1,\n \"bm\": 0,\n \"nm\": \"칠 1\",\n \"mn\": \"ADBE Vector Graphic - Fill\",\n \"hd\": false\n },\n {\n \"ty\": \"tr\",\n \"p\": { \"a\": 0, \"k\": [-137.363, -106.363], \"ix\": 2 },\n \"a\": { \"a\": 0, \"k\": [0, 0], \"ix\": 1 },\n \"s\": { \"a\": 0, \"k\": [100, 100], \"ix\": 3 },\n \"r\": { \"a\": 0, \"k\": 0, \"ix\": 6 },\n \"o\": { \"a\": 0, \"k\": 100, \"ix\": 7 },\n \"sk\": { \"a\": 0, \"k\": 0, \"ix\": 4 },\n \"sa\": { \"a\": 0, \"k\": 0, \"ix\": 5 },\n \"nm\": \"변형\"\n }\n ],\n \"nm\": \"사각형 1\",\n \"np\": 3,\n \"cix\": 2,\n \"bm\": 0,\n \"ix\": 1,\n \"mn\": \"ADBE Vector Group\",\n \"hd\": false\n }\n ],\n \"ip\": 0,\n \"op\": 900,\n \"st\": 0,\n \"bm\": 0\n },\n {\n \"ddd\": 0,\n \"ind\": 8,\n \"ty\": 4,\n \"nm\": \"모양 레이어 2\",\n \"sr\": 1,\n \"ks\": {\n \"o\": { \"a\": 0, \"k\": 100, \"ix\": 11 },\n \"r\": { \"a\": 0, \"k\": 0, \"ix\": 10 },\n \"p\": { \"a\": 0, \"k\": [246.637, 165.637, 0], \"ix\": 2, \"l\": 2 },\n \"a\": { \"a\": 0, \"k\": [-137.363, -106.363, 0], \"ix\": 1, \"l\": 2 },\n \"s\": {\n \"a\": 1,\n \"k\": [\n {\n \"i\": { \"x\": [0.667, 0.667, 0.667], \"y\": [1, 1, 1] },\n \"o\": { \"x\": [0.333, 0.333, 0.333], \"y\": [0, 0, 0] },\n \"t\": 2,\n \"s\": [100, 100, 100]\n },\n {\n \"i\": { \"x\": [0.667, 0.667, 0.667], \"y\": [1, 1, 1] },\n \"o\": { \"x\": [0.333, 0.333, 0.333], \"y\": [0, 0, 0] },\n \"t\": 5,\n \"s\": [0, 0, 100]\n },\n {\n \"i\": { \"x\": [0.667, 0.667, 0.667], \"y\": [1, 1, 1] },\n \"o\": { \"x\": [0.333, 0.333, 0.333], \"y\": [0, 0, 0] },\n \"t\": 17.5,\n \"s\": [0, 0, 100]\n },\n { \"t\": 20.5, \"s\": [100, 100, 100] }\n ],\n \"ix\": 6,\n \"l\": 2\n }\n },\n \"ao\": 0,\n \"shapes\": [\n {\n \"ty\": \"gr\",\n \"it\": [\n {\n \"ty\": \"rc\",\n \"d\": 1,\n \"s\": { \"a\": 0, \"k\": [71.273, 71.273], \"ix\": 2 },\n \"p\": { \"a\": 0, \"k\": [0, 0], \"ix\": 3 },\n \"r\": { \"a\": 0, \"k\": 12, \"ix\": 4 },\n \"nm\": \"사각형 패스 1\",\n \"mn\": \"ADBE Vector Shape - Rect\",\n \"hd\": false\n },\n {\n \"ty\": \"fl\",\n \"c\": { \"a\": 0, \"k\": [1, 1, 1, 1], \"ix\": 4 },\n \"o\": { \"a\": 0, \"k\": 100, \"ix\": 5 },\n \"r\": 1,\n \"bm\": 0,\n \"nm\": \"칠 1\",\n \"mn\": \"ADBE Vector Graphic - Fill\",\n \"hd\": false\n },\n {\n \"ty\": \"tr\",\n \"p\": { \"a\": 0, \"k\": [-137.363, -106.363], \"ix\": 2 },\n \"a\": { \"a\": 0, \"k\": [0, 0], \"ix\": 1 },\n \"s\": { \"a\": 0, \"k\": [100, 100], \"ix\": 3 },\n \"r\": { \"a\": 0, \"k\": 0, \"ix\": 6 },\n \"o\": { \"a\": 0, \"k\": 100, \"ix\": 7 },\n \"sk\": { \"a\": 0, \"k\": 0, \"ix\": 4 },\n \"sa\": { \"a\": 0, \"k\": 0, \"ix\": 5 },\n \"nm\": \"변형\"\n }\n ],\n \"nm\": \"사각형 1\",\n \"np\": 3,\n \"cix\": 2,\n \"bm\": 0,\n \"ix\": 1,\n \"mn\": \"ADBE Vector Group\",\n \"hd\": false\n }\n ],\n \"ip\": 0,\n \"op\": 900,\n \"st\": 0,\n \"bm\": 0\n },\n {\n \"ddd\": 0,\n \"ind\": 9,\n \"ty\": 4,\n \"nm\": \"모양 레이어 1\",\n \"sr\": 1,\n \"ks\": {\n \"o\": {\n \"a\": 1,\n \"k\": [\n {\n \"i\": { \"x\": [0.667], \"y\": [1] },\n \"o\": { \"x\": [0.333], \"y\": [0] },\n \"t\": 0,\n \"s\": [100]\n },\n {\n \"i\": { \"x\": [0.667], \"y\": [1] },\n \"o\": { \"x\": [0.333], \"y\": [0] },\n \"t\": 7.5,\n \"s\": [0]\n },\n { \"t\": 15, \"s\": [100] }\n ],\n \"ix\": 11\n },\n \"r\": { \"a\": 0, \"k\": 0, \"ix\": 10 },\n \"p\": { \"a\": 0, \"k\": [157.637, 165.637, 0], \"ix\": 2, \"l\": 2 },\n \"a\": { \"a\": 0, \"k\": [-137.363, -106.363, 0], \"ix\": 1, \"l\": 2 },\n \"s\": {\n \"a\": 1,\n \"k\": [\n {\n \"i\": { \"x\": [0.667, 0.667, 0.667], \"y\": [1, 1, 1] },\n \"o\": { \"x\": [0.333, 0.333, 0.333], \"y\": [0, 0, 0] },\n \"t\": 0,\n \"s\": [100, 100, 100]\n },\n {\n \"i\": { \"x\": [0.667, 0.667, 0.667], \"y\": [1, 1, 1] },\n \"o\": { \"x\": [0.333, 0.333, 0.333], \"y\": [0, 0, 0] },\n \"t\": 3,\n \"s\": [0, 0, 100]\n },\n {\n \"i\": { \"x\": [0.667, 0.667, 0.667], \"y\": [1, 1, 1] },\n \"o\": { \"x\": [0.333, 0.333, 0.333], \"y\": [0, 0, 0] },\n \"t\": 11.5,\n \"s\": [0, 0, 100]\n },\n { \"t\": 15, \"s\": [100, 100, 100] }\n ],\n \"ix\": 6,\n \"l\": 2\n }\n },\n \"ao\": 0,\n \"shapes\": [\n {\n \"ty\": \"gr\",\n \"it\": [\n {\n \"ty\": \"rc\",\n \"d\": 1,\n \"s\": { \"a\": 0, \"k\": [71.273, 71.273], \"ix\": 2 },\n \"p\": { \"a\": 0, \"k\": [0, 0], \"ix\": 3 },\n \"r\": { \"a\": 0, \"k\": 12, \"ix\": 4 },\n \"nm\": \"사각형 패스 1\",\n \"mn\": \"ADBE Vector Shape - Rect\",\n \"hd\": false\n },\n {\n \"ty\": \"fl\",\n \"c\": { \"a\": 0, \"k\": [1, 1, 1, 1], \"ix\": 4 },\n \"o\": { \"a\": 0, \"k\": 100, \"ix\": 5 },\n \"r\": 1,\n \"bm\": 0,\n \"nm\": \"칠 1\",\n \"mn\": \"ADBE Vector Graphic - Fill\",\n \"hd\": false\n },\n {\n \"ty\": \"tr\",\n \"p\": { \"a\": 0, \"k\": [-137.363, -106.363], \"ix\": 2 },\n \"a\": { \"a\": 0, \"k\": [0, 0], \"ix\": 1 },\n \"s\": { \"a\": 0, \"k\": [100, 100], \"ix\": 3 },\n \"r\": { \"a\": 0, \"k\": 0, \"ix\": 6 },\n \"o\": { \"a\": 0, \"k\": 100, \"ix\": 7 },\n \"sk\": { \"a\": 0, \"k\": 0, \"ix\": 4 },\n \"sa\": { \"a\": 0, \"k\": 0, \"ix\": 5 },\n \"nm\": \"변형\"\n }\n ],\n \"nm\": \"사각형 1\",\n \"np\": 3,\n \"cix\": 2,\n \"bm\": 0,\n \"ix\": 1,\n \"mn\": \"ADBE Vector Group\",\n \"hd\": false\n }\n ],\n \"ip\": 0,\n \"op\": 900,\n \"st\": 0,\n \"bm\": 0\n }\n ],\n \"markers\": []\n}\n","'use client'\n\nimport { HTMLAttributes, useEffect, useRef } from 'react'\nimport LottieImport from 'react-lottie'\nimport { cva, VariantProps } from 'class-variance-authority'\n\nimport { cn } from '../../utils/cn'\nimport SpinnerJson from './spinner.json'\n\n// react-lottie 는 CJS(`exports.default = Lottie`). 이 DS 는 ESM 으로 배포되므로, 소비처가 패키지를\n// 트랜스파일하지 않으면 네이티브 ESM↔CJS interop 이 __esModule 을 무시하고 default 로 module.exports\n// 전체(객체)를 넘겨 <Lottie/> 가 \"element type is invalid: got object\" 로 크래시한다.\n// 런타임에 .default 를 풀어, 트랜스파일 유무와 무관하게 컴포넌트를 얻는다.\nconst Lottie = ((LottieImport as any).default ?? LottieImport) as typeof LottieImport\n\nconst sizeVariants = {\n small: 16,\n medium: 24,\n large: 48,\n xlarge: 96,\n}\n\nconst dotSizeVariants: Record<keyof typeof sizeVariants, string> = {\n small: 'w-[8px] h-[8px]',\n medium: 'w-[12px] h-[12px]',\n large: 'w-[24px] h-[24px]',\n xlarge: 'w-[48px] h-[48px]',\n}\n\nconst spinnerVariants = cva('tds-spinner [&_path]:fill-current', {\n variants: {\n variant: {\n auto: 'text-sys-background',\n primary: 'text-primary30',\n primaryBold: 'text-primary40',\n secondary: 'text-secondary60',\n secondaryBold: 'text-sys-text-main',\n danger: 'text-danger30',\n dangerBold: 'text-danger40',\n warning: 'text-warning30',\n warningBold: 'text-warning40',\n info: 'text-info30',\n infoBold: 'text-info40',\n successBadgeText: 'text-sys-badge-success-text',\n /** 부모의 글자색을 그대로 — Badge 처럼 색이 이미 정해진 곳 안에서 */\n current: 'text-current',\n },\n },\n defaultVariants: {\n variant: 'primary',\n },\n})\n\nexport interface SpinnerProps\n extends HTMLAttributes<HTMLDivElement>, VariantProps<typeof spinnerVariants> {\n size?: keyof typeof sizeVariants\n shape?: 'spinner' | 'dot'\n}\n\nfunction Spinner({\n size = 'medium',\n variant,\n shape = 'spinner',\n ...props\n}: SpinnerProps): JSX.Element {\n const lottieWrapperRef = useRef<HTMLDivElement>(null)\n\n // ponytail: react-lottie 가 컨테이너 div 에 tabIndex=\"0\" 을 하드코딩해(dist/index.js:240)\n // prop 으로 끌 수 없다. 장식용 애니메이션이 탭 순서에 끼는 것을 막으려면 렌더된 DOM 을\n // 직접 되돌리는 수밖에 없다. 상위 경로는 react-lottie → lottie-react 교체.\n //\n // deps 를 두지 않아 매 렌더 재적용한다 — 지금은 <Lottie> 에 key 가 없어 [] 로도 충분하지만\n // (내부만 리마운트될 일이 없다), 나중에 key 가 붙어도 조용히 깨지지 않도록 여유를 둔다.\n useEffect(() => {\n lottieWrapperRef.current?.querySelector('[tabindex]')?.setAttribute('tabindex', '-1')\n })\n\n if (shape === 'dot') {\n const px = sizeVariants[size]\n return (\n <div\n {...props}\n className={cn(\n spinnerVariants({ variant }),\n 'inline-flex items-center justify-center',\n props.className,\n )}\n style={{ width: px, height: px, ...props.style }}\n >\n <span\n aria-hidden\n className={cn('rounded-full bg-current animate-pulse', dotSizeVariants[size])}\n />\n </div>\n )\n }\n\n return (\n <div\n {...props}\n ref={lottieWrapperRef}\n className={cn(spinnerVariants({ variant }), props.className)}\n >\n <Lottie\n height={sizeVariants[size]}\n width={sizeVariants[size]}\n // 장식용 애니메이션 — 기본값 role=\"button\" / aria-label=\"animation\" 을 걷어낸다.\n // 이 둘이 접근성 이름·role 을, 위 effect 의 tabIndex 보정이 탭 스톱을 담당한다(역할 분담).\n ariaRole='presentation'\n ariaLabel=''\n isClickToPauseDisabled\n isPaused={false}\n options={{\n loop: true,\n autoplay: true,\n animationData: SpinnerJson,\n rendererSettings: {\n preserveAspectRatio: 'xMidYMid slice', // 여백 없이 꽉 차게 설정\n },\n }}\n />\n </div>\n )\n}\n\nexport { Spinner }\n","'use client'\n\nimport * as React from 'react'\nimport { Slot, Slottable } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '../utils/cn'\nimport { Spinner } from './spinner'\n\nconst buttonLoadingVariants = {\n primaryBold: 'auto',\n primary: 'primary',\n primaryLink: 'primaryBold',\n dangerBold: 'auto',\n danger: 'danger',\n dangerLink: 'dangerBold',\n secondaryBold: 'auto',\n secondary: 'secondary',\n secondaryLink: 'secondaryBold',\n warningBold: 'secondaryBold',\n warning: 'warningBold',\n warningLink: 'warningBold',\n primaryOutline: 'primary',\n secondaryOutline: 'secondaryBold',\n dangerOutline: 'danger',\n warningOutline: 'warningBold',\n} as Record<string, VariantProps<typeof Spinner>['variant']>\n\nconst defaultButtonVariants = {\n variant: 'primary',\n shape: 'normal',\n spacing: 'normal',\n weight: 'bold',\n loading: false,\n} as const\n\n// weight prop과 안쪽 텍스트 span이 공유하는 단일 출처 (DRY)\nconst buttonWeightVariants = {\n regular: 'font-normal', // 400 (Tailwind 표준 유틸, DS 토큰값과 동일)\n medium: 'font-medium', // 500\n semibold: 'font-semibold', // 600\n bold: 'font-bold', // 700\n} as const\n\nconst buttonVariants = cva(\n 'flex flex-row items-center justify-center whitespace-nowrap leading-[0] transition-colors hover:cursor-pointer disabled:pointer-events-none text-[14px]',\n {\n variants: {\n variant: {\n primary:\n 'bg-sys-button-primary-subtle-background text-sys-button-primary-subtle-text hover:bg-sys-button-primary-subtle-background-hover active:bg-sys-button-primary-subtle-background-press',\n primaryBold:\n 'bg-sys-button-primary-background text-sys-button-primary-text hover:bg-sys-button-primary-background-hover active:bg-sys-button-primary-background-press',\n primaryLink:\n 'text-sys-button-primary-link-text hover:text-sys-button-primary-link-text-hover hover:underline active:text-sys-button-primary-link-text-press',\n danger:\n 'bg-sys-button-danger-subtle-background text-sys-button-danger-subtle-text hover:bg-sys-button-danger-subtle-background-hover active:bg-sys-button-danger-subtle-background-press',\n dangerBold:\n 'bg-sys-button-danger-background text-sys-button-danger-text hover:bg-sys-button-danger-background-hover active:bg-sys-button-danger-background-press',\n dangerLink:\n 'text-sys-button-danger-link-text hover:text-sys-button-danger-link-text-hover hover:underline active:text-sys-button-danger-link-text-press',\n secondary:\n 'bg-sys-button-secondary-subtle-background text-sys-button-secondary-subtle-text hover:bg-sys-button-secondary-subtle-background-hover active:bg-sys-button-secondary-subtle-background-press',\n secondaryBold:\n 'bg-sys-button-secondary-background text-sys-button-secondary-text hover:bg-sys-button-secondary-background-hover active:bg-sys-button-secondary-background-press',\n secondaryLink:\n 'text-sys-button-secondary-link-text hover:text-sys-button-secondary-link-text-hover hover:underline active:text-sys-button-secondary-link-text-press',\n warning:\n 'bg-sys-button-warning-subtle-background text-sys-button-warning-subtle-text hover:bg-sys-button-warning-subtle-background-hover active:bg-sys-button-warning-subtle-background-press',\n warningBold:\n 'bg-sys-button-warning-background text-sys-button-warning-text hover:bg-sys-button-warning-background-hover active:bg-sys-button-warning-background-press',\n warningLink:\n 'text-sys-button-warning-link-text hover:text-sys-button-warning-link-text-hover hover:underline active:text-sys-button-warning-link-text-press',\n primaryOutline:\n 'border border-sys-button-primary-outline-border text-sys-button-primary-outline-text hover:bg-sys-button-primary-outline-background-hover active:bg-sys-button-primary-outline-background-press',\n secondaryOutline:\n 'border border-sys-button-secondary-outline-border text-sys-button-secondary-outline-text hover:bg-sys-button-secondary-outline-background-hover active:bg-sys-button-secondary-outline-background-press',\n dangerOutline:\n 'border border-sys-button-danger-outline-border text-sys-button-danger-outline-text hover:bg-sys-button-danger-outline-background-hover active:bg-sys-button-danger-outline-background-press',\n warningOutline:\n 'border border-sys-button-warning-outline-border text-sys-button-warning-outline-text hover:bg-sys-button-warning-outline-background-hover active:bg-sys-button-warning-outline-background-press',\n },\n spacing: {\n normal: 'p-[6px] max-h-[36px]',\n compact: 'p-[2px] max-h-[28px]',\n },\n shape: {\n normal: 'rounded-small',\n rounded: 'rounded-full',\n },\n weight: buttonWeightVariants,\n loading: {\n true: 'relative pointer-events-none text-transparent',\n false: 'disabled:text-sys-button-disabled-text disabled:bg-sys-button-disabled-background',\n },\n },\n compoundVariants: [\n {\n variant: 'primaryOutline',\n loading: false,\n className: 'disabled:border-sys-button-disabled-outline',\n },\n {\n variant: 'secondaryOutline',\n loading: false,\n className: 'disabled:border-sys-button-disabled-outline',\n },\n {\n variant: 'dangerOutline',\n loading: false,\n className: 'disabled:border-sys-button-disabled-outline',\n },\n {\n variant: 'warningOutline',\n loading: false,\n className: 'disabled:border-sys-button-disabled-outline',\n },\n ],\n defaultVariants: defaultButtonVariants,\n },\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {\n asChild?: boolean\n}\n\n/**\n * 클릭으로 동작을 실행하는 기본 버튼. 텍스트가 있는 모든 행동(생성·저장·취소·링크형 보조 행동)에 쓴다.\n *\n * 언제 쓰나: 화면의 주요 행동은 `primaryBold` 1개, 보조 행동은 `secondaryOutline`·`secondaryLink`, 파괴적 행동은 `danger*`. 비동기 처리 중에는 `loading` 으로 잠근다.\n * 언제 안 쓰나: 아이콘만 있는 버튼(→ IconButton), 페이지 이동(→ 링크. 버튼 모양이 꼭 필요하면 `asChild` 로 `<a>` 를 감싼다), 표 안의 상태 표시(→ Badge).\n * 대신/함께: 같은 줄에 주요 버튼을 두 개 두지 않는다. 폼 푸터에서는 취소(secondaryOutline) 왼쪽, 저장(primaryBold) 오른쪽.\n */\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n shape,\n spacing,\n weight,\n asChild = false,\n loading,\n type,\n children,\n ...props\n },\n ref,\n ) => {\n const Comp = asChild ? Slot : 'button'\n\n const resolvedWeightClass = buttonWeightVariants[weight ?? defaultButtonVariants.weight]\n\n // Figma 디자인에 맞춰 텍스트를 Label 컨테이너로 감싸기\n // 연속된 텍스트 노드는 하나로 병합하여 불필요한 padding 누적 방지\n const processedChildren = React.useMemo(() => {\n // <>아이콘 텍스트</> 처럼 Fragment 로 묶여 와도 텍스트가 Label 컨테이너로 감싸이도록 Fragment 를 펼친다\n const flatten = (nodes: React.ReactNode): React.ReactNode[] =>\n React.Children.toArray(nodes).flatMap((child) =>\n React.isValidElement<{ children?: React.ReactNode }>(child) &&\n child.type === React.Fragment\n ? flatten(child.props.children)\n : [child],\n )\n const childrenArray = flatten(children)\n\n const result: React.ReactNode[] = []\n let textBuffer: string[] = []\n\n const flushTextBuffer = () => {\n if (textBuffer.length > 0) {\n const combinedText = textBuffer.join('')\n result.push(\n <span\n key={`text-${result.length}`}\n className='box-border flex items-center justify-center px-[4px] h-[24px] shrink-0'\n >\n <span className='flex flex-col justify-center leading-[0] shrink-0 text-[14px]'>\n <span className={cn('text-[14px] leading-[24px]', resolvedWeightClass)}>\n {combinedText}\n </span>\n </span>\n </span>,\n )\n textBuffer = []\n }\n }\n\n childrenArray.forEach((child) => {\n // 텍스트 노드(string, number)면 버퍼에 추가\n if (typeof child === 'string' || typeof child === 'number') {\n textBuffer.push(String(child))\n } else {\n // React element 만나면 먼저 버퍼의 텍스트를 처리\n flushTextBuffer()\n result.push(child)\n }\n })\n\n // 마지막 남은 텍스트 처리\n flushTextBuffer()\n\n // Container로 감싸기 (Figma 구조와 일치)\n return <span className='flex items-center justify-center shrink-0'>{result}</span>\n }, [children, resolvedWeightClass])\n\n return (\n <Comp\n type={asChild ? type : (type ?? 'button')}\n className={cn(buttonVariants({ variant, shape, spacing, weight, loading }), className)}\n ref={ref}\n {...props}\n >\n {loading && (\n <span className='absolute left-1/2 top-1/2 aspect-square -translate-x-1/2 -translate-y-1/2'>\n <Spinner\n variant={buttonLoadingVariants[variant ?? defaultButtonVariants['variant']]}\n size='medium'\n />\n </span>\n )}\n <Slottable>{asChild ? children : processedChildren}</Slottable>\n </Comp>\n )\n },\n)\nButton.displayName = 'Button'\n\nexport { Button, buttonVariants }\n","import React, { forwardRef, HTMLAttributes, PropsWithChildren } from 'react'\nimport { cva } from 'class-variance-authority'\n\nimport { cn } from '../../utils/cn'\n\nconst stackVariant = cva('flex', {\n variants: {\n direction: {\n row: 'flex-row',\n 'row-reverse': 'flex-row-reverse',\n column: 'flex-col',\n 'column-reverse': 'flex-col-reverse',\n },\n justifyContent: {\n center: 'justify-center',\n end: 'justify-end',\n start: 'justify-start',\n 'flex-start': 'justify-start',\n 'flex-end': 'justify-end',\n 'space-around': 'justify-around',\n 'space-between': 'justify-between',\n 'space-evenly': 'justify-evenly',\n stretch: 'justify-stretch',\n normal: '', // Basic keywords\n },\n alignItems: {\n center: 'items-center',\n end: 'items-end',\n start: 'items-start',\n 'flex-start': 'items-start',\n 'flex-end': 'items-end',\n stretch: 'items-stretch',\n normal: '', // Basic keywords\n },\n },\n defaultVariants: {\n direction: 'row',\n justifyContent: 'normal',\n alignItems: 'normal',\n },\n})\n\ntype StackPropsType = PropsWithChildren &\n HTMLAttributes<HTMLDivElement> & {\n direction?: 'column-reverse' | 'column' | 'row-reverse' | 'row'\n spacing?: number | string\n justifyContent?:\n | 'center'\n | 'end'\n | 'start'\n | 'flex-start'\n | 'flex-end'\n | 'space-around'\n | 'space-between'\n | 'space-evenly'\n | 'stretch'\n | 'normal'\n alignItems?: 'center' | 'end' | 'start' | 'flex-end' | 'flex-start' | 'stretch'\n as?: keyof JSX.IntrinsicElements\n }\n\nconst Stack = forwardRef<HTMLDivElement, StackPropsType>(\n ({ direction = 'row', spacing, justifyContent, alignItems, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n {...props}\n className={cn(stackVariant({ direction, justifyContent, alignItems }), props.className)}\n style={{\n gap: Number(spacing) ? `${spacing}px` : `${spacing}`,\n ...props.style,\n }}\n >\n {children}\n </div>\n )\n },\n)\n\nStack.displayName = 'Stack'\n\nexport { Stack }\n","'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '../utils/cn'\n\nexport type BadgeTone = 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'etc'\n\n/**\n * outline 뱃지의 accent(테두리) 색. 기본은 {hue}30 — 흰 바탕 대비 primary 4.7 · danger 5.9 · success 4.6 · etc 5.8.\n * yellow30(1.75:1)·cyan30(1.59:1)은 흰 바탕에서 선이 안 보여 warning·info 는 40(5.4·5.5), grayscale30 도 연해 secondary 는 50(3.7)\n * — bold 변형이 warning·info 글자만 예외로 두는 것과 같은 \"밝은 색 예외\" 규칙 (2026-10-17 이슈 47 6차)\n */\nexport const BADGE_OUTLINE_ACCENT: Record<BadgeTone, { border: string; icon: string }> = {\n primary: { border: 'border-primary30', icon: 'text-primary30' },\n secondary: { border: 'border-secondary50', icon: 'text-secondary50' },\n success: { border: 'border-success30', icon: 'text-success30' },\n danger: { border: 'border-danger30', icon: 'text-danger30' },\n warning: { border: 'border-warning40', icon: 'text-warning40' },\n info: { border: 'border-info40', icon: 'text-info40' },\n etc: { border: 'border-etc30', icon: 'text-etc30' },\n}\n\nconst badgeVariants = cva(\n // whitespace-nowrap: 좁은 표 칸에서 \"최고 성능\" 뱃지가 세로로 한 글자씩 쪼개져 심판 \"vertical badge\" 감점 (2026-10-19 15차 D1)\n // [&>svg]: 상태 뱃지의 아이콘은 자식으로 바로 넣는다(`<Badge variant='success'><CheckCircle />완료</Badge>`) — lucide 기본 24px 가 20px 뱃지를 넘지 않게 16px 로(2026-10-30)\n 'inline-flex items-center justify-center whitespace-nowrap px-[2px] py-[2px] leading-none transition-colors overflow-clip [&>svg]:size-[16px] [&>svg]:shrink-0',\n {\n variants: {\n /** small(기본): 20px·12px — 상태·건수·탭·개수 뱃지 모두 이 크기. medium: 24px·14px — 특별히 크게 보여야 할 때만 */\n size: {\n small: 'min-h-[20px] min-w-[20px] text-small-bold',\n medium: 'min-h-[24px] min-w-[24px] text-h6',\n },\n variant: {\n primary: 'bg-sys-badge-primary-background text-sys-badge-primary-text',\n primaryBold: 'bg-primary30 text-secondary10',\n secondary: 'bg-sys-badge-secondary-background text-sys-badge-secondary-text',\n secondaryBold: 'bg-secondary60 text-secondary10',\n danger: 'bg-sys-badge-danger-background text-sys-badge-danger-text',\n dangerBold: 'bg-danger30 text-secondary10',\n warning: 'bg-sys-badge-warning-background text-sys-badge-warning-text',\n warningBold: 'bg-warning30 text-grayscale80',\n success: 'bg-sys-badge-success-background text-sys-badge-success-text',\n successBold: 'bg-success30 text-secondary10',\n info: 'bg-sys-badge-info-background text-sys-badge-info-text',\n infoBold: 'bg-info30 text-grayscale80',\n etc: 'bg-sys-badge-etc-background text-sys-badge-etc-text',\n etcBold: 'bg-etc30 text-secondary10',\n },\n rounded: {\n square: 'rounded-xsmall',\n full: 'rounded-full',\n },\n /** tint(기본): 연한 채움. outline: 흰 바탕 + 1px accent 테두리(subtle 변형에만 — 2026-10-17 이슈 47 6차, 상태 뱃지용) */\n appearance: {\n tint: '',\n outline: '',\n },\n },\n // outline × subtle 7색: 테두리는 {hue}30, 밝은 색(warning·info)은 40, secondary 는 50 — 흰 바탕에서 선이 보이는 가장 연한 단계.\n // 1px 테두리만큼 py 를 1px 줄여 높이 20px 유지. bold 변형은 appearance 를 무시한다(채움 그대로)\n compoundVariants: (Object.keys(BADGE_OUTLINE_ACCENT) as BadgeTone[]).map((tone) => ({\n appearance: 'outline' as const,\n variant: tone,\n class: `bg-sys-background border py-[1px] ${BADGE_OUTLINE_ACCENT[tone].border}`,\n })),\n defaultVariants: {\n variant: 'primary',\n // 기본 pill — 상태·건수 뱃지가 빠른 필터 칩(pill)과 한 계열(2026-11-06 사용자 결정 1-B, 홀드아웃 20 \"각진 상태 뱃지 vs 둥근 필터 칩\").\n // 태그 4 · 칩·버튼·입력 6 · 표 8 은 그대로. 4px 가 필요하면 rounded='square' (2026-10-18 10차 의 4px 기본을 바꿈)\n rounded: 'full',\n appearance: 'tint',\n size: 'small',\n },\n },\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {}\n\n/**\n * 상태·분류를 색으로 보여 주는 읽기 전용 표시. 표의 상태 열, 제목 옆 상태에 쓴다.\n *\n * 언제 쓰나: 실행 중/중지/오류 같은 상태(`success`·`danger`·`warning`·`info`), 개수·등급 표시. 의미 variant 를 쓰고 색을 직접 바꾸지 않는다. `appearance='outline'` 은 흰 바탕 + 1px accent 테두리.\n * 언제 안 쓰나: 사용자가 붙이고 뗄 수 있는 라벨(→ Tag), 클릭해 동작하는 것(→ Button), 지나가는 알림(→ Toast).\n * 모양은 기본 pill — 상태·건수 뱃지와 빠른 필터 칩이 한 계열(2026-11-06). 4px 는 `rounded='square'`.\n * 대신/함께: **상태 표시는 Badge 에 아이콘 + 글자** — `<Badge variant='success'><LucideIcon iconComponentName='circle-check' />완료</Badge>`(아이콘은 자식으로 바로, 16px·글자색). 별도 상태 컴포넌트는 없다(2026-10-30). 크기는 기본(`size` 를 주지 않는다). 상태값 → variant·아이콘 매핑은 소비 앱의 상수 한 곳에 둔다.\n */\nfunction Badge({ className, variant, rounded, appearance, size, children, ...props }: BadgeProps) {\n const wrappedChildren = React.Children.map(children, (child) => {\n // 문자열이나 숫자면 span으로 감싸서 패딩 추가\n if (typeof child === 'string' || typeof child === 'number') {\n return <span className='px-[3px]'>{child}</span>\n }\n // 그 외(아이콘, React element 등)는 그대로\n return child\n })\n\n return (\n <div\n className={cn(badgeVariants({ variant, rounded, appearance, size }), className)}\n {...props}\n >\n {wrappedChildren}\n </div>\n )\n}\n\nexport { Badge, badgeVariants }\n","'use client'\n\nimport * as React from 'react'\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip'\n\nimport { cn } from '../utils/cn'\nimport { sanitizeUserText } from '../utils/sanitizeUserText'\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst Tooltip = TooltipPrimitive.Root\n\nconst TooltipTrigger = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TooltipPrimitive.Trigger type='button' ref={ref} className={cn(className)} {...props} />\n))\nTooltipTrigger.displayName = TooltipPrimitive.Trigger.displayName\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, children, ...props }, ref) => (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'z-[var(--root-z-index)] overflow-hidden rounded-small bg-secondary70 px-[6px] py-[4px] text-small-regular text-sys-background whitespace-pre-wrap break-keep wrap-break-word animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]',\n className,\n )}\n {...props}\n >\n {sanitizeUserText(children)}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","'use client'\n\nimport * as React from 'react'\nimport * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group'\n\nimport { cn } from '../utils/cn'\nimport { Badge, type BadgeProps } from './badge'\n\ntype ToggleGroupContextType = {\n variant: 'default' | 'outline'\n spacing: boolean\n}\n\nconst ToggleGroupContext = React.createContext<ToggleGroupContextType>({\n variant: 'default',\n spacing: false,\n})\n\ninterface ToggleGroupBaseProps extends Omit<\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root>,\n 'type' | 'value' | 'defaultValue' | 'onValueChange'\n> {\n /** 아이템 스타일. default: 테두리 없음 / outline: 테두리 있음 */\n variant?: 'default' | 'outline'\n /** true일 때 아이템 간 gap-1 간격 추가 (outline variant와 조합 가능) */\n spacing?: boolean\n}\n\n/** 단일 선택 그룹. 한 번에 하나의 아이템만 선택된다 */\nexport interface ToggleGroupSingleProps extends ToggleGroupBaseProps {\n /** 미지정 시 'single' — 기존 호출부 무수정 호환 (radix와 달리 optional인 이유) */\n type?: 'single'\n value?: string\n defaultValue?: string\n /** 선택 해제 시 빈 문자열이 전달된다 */\n onValueChange?: (value: string) => void\n}\n\n/** 다중 선택 그룹. 여러 아이템을 동시에 선택할 수 있다 */\nexport interface ToggleGroupMultipleProps extends ToggleGroupBaseProps {\n type: 'multiple'\n value?: string[]\n defaultValue?: string[]\n /** 전체 해제 시 빈 배열이 전달된다 */\n onValueChange?: (value: string[]) => void\n}\n\nexport type ToggleGroupProps = ToggleGroupSingleProps | ToggleGroupMultipleProps\n\n/**\n * 선택지가 모두 보이는 버튼 묶음(세그먼트). 단일 선택(`type='single'`, 기본) 또는 다중 선택(`type='multiple'`).\n *\n * 언제 쓰나: 선택지가 2~6개이고 항상 보여야 할 때 — 상태·심각도 같은 빠른 필터, 보기 전환(목록/카드), 기간(일/주/월). `count` 로 항목별 건수를 보일 수 있다.\n * 언제 안 쓰나: 선택지가 많거나(7개 이상) 검색이 필요할 때 → `TableFilterSingleSelect`/`TableFilterMultiSelect`·`Select`. 화면(내용 영역)을 전환할 때 → `Tabs`. 폼의 단일 선택 입력 → `RadioGroup`.\n * 대신/함께: 목록 화면의 상태 필터는 `ListPage quickFilter` 가 이 컴포넌트로 표 왼쪽 위에 그린다. 그룹 이름은 `aria-label` 로 준다(기본 이름 없음). 붙어있는 모양은 `variant='outline' spacing={false}`.\n */\nfunction ToggleGroup({\n type = 'single',\n variant = 'default',\n spacing = false,\n className,\n ...props\n}: ToggleGroupProps) {\n // outline + attached (spacing=false): 외곽 border + 아이템 간 divide\n // outline + spaced (spacing=true) : gap-1, 아이템별 개별 border\n // default (항상 spaced) : gap-1, border 없음\n const rootClass =\n variant === 'outline' && !spacing\n ? 'inline-flex rounded-small border border-secondary30 divide-x divide-secondary30'\n : 'flex flex-wrap gap-1'\n\n return (\n <ToggleGroupContext.Provider value={{ variant, spacing }}>\n <ToggleGroupPrimitive.Root\n // 공개 ToggleGroupProps가 type과 value의 상관을 보장하므로 radix 유니온으로의 캐스트는 안전\n {...({ type, ...props } as React.ComponentPropsWithoutRef<\n typeof ToggleGroupPrimitive.Root\n >)}\n data-slot='toggle-group'\n className={cn(rootClass, className)}\n />\n </ToggleGroupContext.Provider>\n )\n}\n\nexport interface ToggleGroupItemProps extends React.ComponentPropsWithoutRef<\n typeof ToggleGroupPrimitive.Item\n> {\n /** 항목 오른쪽의 건수 — 작은 pill 뱃지(`Badge size='small' rounded='full'`, 20px). 색은 `countVariant`. 4차(2026-10-17)에 \"colored count pills look loud\" 로 흐린 숫자로 바꿨던 것을 2026-10-18 13차에 사용자 결정(D)으로 되돌림 — 표의 상태 뱃지와 같은 색이면 칩과 표가 한 언어가 된다 */\n count?: number\n /** 건수 뱃지의 색. 기본 `secondary`. 상태 필터면 그 상태의 tone(`success`·`danger`·`warning`·`info`·`secondary`), \"전체\" 는 `primary`(ListPage quickFilter 가 그렇게 준다) */\n countVariant?: NonNullable<BadgeProps['variant']>\n}\n\nfunction ToggleGroupItem({\n value,\n count,\n countVariant = 'secondary',\n children,\n className,\n ...props\n}: ToggleGroupItemProps) {\n const { variant, spacing } = React.useContext(ToggleGroupContext)\n\n // outline + attached: 첫/마지막 아이템이 컨테이너 모서리 담당 (overflow-hidden 제거로 포커스 링 클리핑 방지), 개별 border 없음\n // outline + spaced : rounded-small(6px, 버튼·입력과 같은 토큰) + 개별 border — 라운드는 한 계열(뱃지·태그 4 · 칩·버튼·입력 6 · 표 8).\n // 7차에 pill 로 바꿨더니 \"각진 입력·버튼 옆의 pill 칩\" 으로 12쌍 감점 → 뱃지도 각지게 바꾸며 칩도 각지게 (2026-10-18 10차 ②)\n // default : rounded-small, border 없음\n const shapeClass =\n variant === 'outline' && !spacing\n ? 'rounded-none first:rounded-l-small last:rounded-r-small'\n : variant === 'outline' && spacing\n ? 'rounded-small border border-secondary30'\n : 'rounded-small'\n\n // outline + attached: relative z-10으로 포커스 링이 인접 아이템/divider 위에 렌더\n // 그 외: 외부 포커스 링\n const focusClass =\n variant === 'outline' && !spacing\n ? 'focus-visible:relative focus-visible:z-10 focus-visible:outline-[2px] focus-visible:outline-sys-focus-ring-main focus-visible:outline-offset-[2px]'\n : 'focus-visible:outline-[2px] focus-visible:outline-sys-focus-ring-main focus-visible:outline-offset-[1px]'\n\n return (\n <ToggleGroupPrimitive.Item\n value={value}\n data-slot='toggle-group-item'\n className={cn(\n // whitespace-nowrap: 좁은 자리에서 항목 라벨이 한 글자씩 줄바꿈되지 않게 (2026-10-16 홀드아웃 6 schedule-list 지적)\n 'inline-flex items-center justify-center gap-[4px] px-[12px] h-[32px] whitespace-nowrap',\n 'text-base-medium leading-none transition-colors',\n 'text-sys-text-subtler hover:bg-secondary-o10 hover:text-sys-text-main',\n 'data-[state=on]:bg-primary-o10 data-[state=on]:hover:bg-primary-o20 data-[state=on]:text-sys-text-main',\n 'disabled:pointer-events-none disabled:opacity-50',\n focusClass,\n shapeClass,\n className,\n )}\n {...props}\n >\n {children}\n {count !== undefined && (\n <Badge data-slot='toggle-group-count' size='small' rounded='full' variant={countVariant}>\n {count}\n </Badge>\n )}\n </ToggleGroupPrimitive.Item>\n )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n","'use client'\n\nimport * as React from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '../utils/cn'\n\nconst iconButtonVariants = cva(\n 'inline-flex items-center justify-center h-fit whitespace-nowrap text-h6 transition-colors hover:cursor-pointer disabled:pointer-events-none disabled:text-sys-button-disabled-text disabled:bg-sys-button-disabled-background',\n {\n variants: {\n variant: {\n primary:\n 'bg-sys-button-primary-subtle-background text-sys-button-primary-subtle-text hover:bg-sys-button-primary-subtle-background-hover active:bg-sys-button-primary-subtle-background-press',\n primaryBold:\n 'bg-sys-button-primary-background text-sys-button-primary-text hover:bg-sys-button-primary-background-hover active:bg-sys-button-primary-background-press',\n primaryLink:\n 'text-sys-button-primary-link-text hover:text-sys-button-primary-link-text-hover active:text-sys-button-primary-link-text-press',\n danger:\n 'bg-sys-button-danger-subtle-background text-sys-button-danger-subtle-text hover:bg-sys-button-danger-subtle-background-hover active:bg-sys-button-danger-subtle-background-press',\n dangerBold:\n 'bg-sys-button-danger-background text-sys-button-danger-text hover:bg-sys-button-danger-background-hover active:bg-sys-button-danger-background-press',\n dangerLink:\n 'text-sys-button-danger-link-text hover:text-sys-button-danger-link-text-hover active:text-sys-button-danger-link-text-press',\n secondary:\n 'bg-sys-button-secondary-subtle-background text-sys-button-secondary-subtle-text hover:bg-sys-button-secondary-subtle-background-hover active:bg-sys-button-secondary-subtle-background-press',\n secondaryBold:\n 'bg-sys-button-secondary-background text-sys-button-secondary-text hover:bg-sys-button-secondary-background-hover active:bg-sys-button-secondary-background-press',\n secondaryLink:\n 'text-sys-button-secondary-link-text hover:text-sys-button-secondary-link-text-hover active:text-sys-button-secondary-link-text-press',\n warning:\n 'bg-sys-button-warning-subtle-background text-sys-button-warning-subtle-text hover:bg-sys-button-warning-subtle-background-hover active:bg-sys-button-warning-subtle-background-press',\n warningBold:\n 'bg-sys-button-warning-background text-sys-button-warning-text hover:bg-sys-button-warning-background-hover active:bg-sys-button-warning-background-press',\n warningLink:\n 'text-sys-button-warning-link-text hover:text-sys-button-warning-link-text-hover active:text-sys-button-warning-link-text-press',\n outline: 'border border-secondary30 text-sys-text-subtler text-base-medium',\n },\n spacing: {\n normal: 'p-[6px]',\n compact: 'p-[2px] max-h-[28px] max-w-[28px]',\n },\n shape: {\n normal: 'rounded-small',\n rounded: 'rounded-full',\n },\n },\n defaultVariants: {\n variant: 'primary',\n shape: 'normal',\n spacing: 'normal',\n },\n },\n)\n\nexport interface IconButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof iconButtonVariants> {\n asChild?: boolean\n}\n\n/**\n * 아이콘만 있는 버튼. 좁은 자리(툴바·표 행·카드 모서리)의 보조 행동에 쓴다.\n *\n * 언제 쓰나: 새로고침·편집·삭제·닫기처럼 아이콘만으로 뜻이 통하는 행동. 항상 `aria-label` 로 이름을 주고, 필요하면 Tooltip 을 함께 쓴다.\n * 언제 안 쓰나: 화면의 주요 행동(→ Button 텍스트), 아이콘 뜻이 모호한 행동(→ Button 에 아이콘+텍스트).\n * 대신/함께: Dialog·Drawer 의 닫기 버튼은 각 컴포넌트가 내장하므로 따로 두지 않는다.\n */\nconst IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(\n ({ className, variant, shape, spacing, asChild = false, type, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button'\n return (\n <Comp\n className={cn(iconButtonVariants({ variant, shape, spacing }), className)}\n ref={ref}\n // Button과 동일하게 기본 type을 'button'으로 지정해 <form> 내부에서 의도치 않은 submit 방지\n type={asChild ? type : (type ?? 'button')}\n {...props}\n />\n )\n },\n)\nIconButton.displayName = 'IconButton'\n\nexport { IconButton }\n","import * as React from 'react'\n\nimport { cn } from '../utils/cn'\nimport { sanitizeUserText } from '../utils/sanitizeUserText'\n\nfunction Card({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot='card'\n className={cn(\n 'rounded-medium shadow-gray-small bg-sys-background flex flex-col border border-sys-divider-subtle',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot='card-header'\n className={cn('flex flex-col px-[16px] gap-[8px]', className)}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, children, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot='card-title'\n className={cn('text-sys-text-main text-h5 whitespace-pre-wrap', className)}\n {...props}\n >\n {sanitizeUserText(children)}\n </div>\n )\n}\n\nfunction CardDescription({ className, children, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot='card-description'\n className={cn('text-sys-text-subtler text-small-regular-h whitespace-pre-wrap', className)}\n {...props}\n >\n {sanitizeUserText(children)}\n </div>\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot='card-content'\n className={cn('px-[16px] text-sys-text-subtler text-small-regular-h', className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot='card-footer'\n className={cn(\n 'flex items-center px-[16px] text-sys-text-subtle text-small-medium',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction CardThumbnail({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot='card-thumbnail'\n className={cn('rounded-t-medium overflow-hidden', className)}\n {...props}\n />\n )\n}\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent, CardThumbnail }\n","'use client'\n\nimport * as React from 'react'\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox'\nimport { cva, VariantProps } from 'class-variance-authority'\n\nimport { cn } from '../utils/cn'\n\nconst defaultVariants = {\n size: 'medium',\n} as const\n\nconst checkboxVariants = cva(\n 'peer shrink-0 rounded-xsmall bg-sys-background border-[2px] border-sys-divider-main hover:bg-secondary-o10 focus-visible:outline-[2px] focus-visible:outline-sys-focus-ring-main focus-visible:outline-offset-[1px] disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary30 data-[state=checked]:border-primary30 data-[state=checked]:hover:bg-primary40 data-[state=checked]:hover:border-primary40',\n {\n variants: {\n size: {\n small: 'w-[12px] h-[12px]',\n medium: 'w-[16px] h-[16px]',\n large: 'w-[24px] h-[24px]',\n },\n },\n defaultVariants,\n },\n)\n\nexport interface CheckboxProps\n extends\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>,\n VariantProps<typeof checkboxVariants> {\n indeterminate?: boolean\n}\n\n/**\n * 켜기/끄기 또는 여러 항목 중 복수 선택. 폼의 동의·옵션 플래그와 표의 행 선택에 쓴다.\n *\n * 언제 쓰나: 서로 독립인 옵션을 여러 개 고를 때. 표의 행 선택은 AgGridTable 이 rowSelection 을 켜면 이 Checkbox 를 쓴 HeaderCheckboxRenderer·RowCheckboxRenderer 를 자동으로 넣으므로 셀에 직접 넣지 않는다(바꾸려면 그 렌더러를 감싼다).\n * 언제 안 쓰나: 하나만 골라야 할 때(→ Radio·RadioGroup), 켜기/끄기 하나의 설정(→ SwitchSection·Switch — 폼 제출값이어도), 선택지마다 제목·설명이 붙는 복수 선택(→ CheckboxSectionGroup), 선택지가 많을 때(→ MultiSelect).\n * 대신/함께: 라벨은 `Label` 또는 `FormLabel` 로 연결해 클릭 영역을 넓힌다.\n */\nconst Checkbox = React.forwardRef<React.ElementRef<typeof CheckboxPrimitive.Root>, CheckboxProps>(\n ({ className, size = defaultVariants.size, indeterminate = false, ...props }, ref) => {\n return (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(checkboxVariants({ size }), className)}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn('flex items-center justify-center text-current')}\n >\n {indeterminate ? <IndeterminateIcon size={size} /> : <CheckIcon size={size} />}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n },\n)\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n\nfunction CheckIcon({ size }: VariantProps<typeof checkboxVariants>) {\n if (!size) return null\n switch (size) {\n case 'small':\n return (\n <svg width='8' height='6' viewBox='0 0 8 6' fill='none' xmlns='http://www.w3.org/2000/svg'>\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M7.22148 0.621289C7.51437 0.914182 7.51437 1.38906 7.22148 1.68195L3.43693 5.4665C3.43528 5.46817 3.43363 5.46984 3.43197 5.47151C3.28494 5.61853 3.09206 5.69175 2.89936 5.69117C2.70817 5.69061 2.51714 5.61739 2.37126 5.47151C2.3696 5.46984 2.36794 5.46817 2.3663 5.4665L0.780317 3.88052C0.487423 3.58762 0.487423 3.11275 0.780317 2.81986C1.07321 2.52696 1.54808 2.52696 1.84098 2.81986L2.90161 3.88049L6.16082 0.621289C6.45371 0.328396 6.92858 0.328396 7.22148 0.621289Z'\n fill='var(--color-sys-background)'\n />\n </svg>\n )\n case 'medium':\n return (\n <svg\n width='10'\n height='8'\n viewBox='0 0 10 8'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n >\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M9.2953 0.828385C9.68583 1.21891 9.68583 1.85207 9.2953 2.2426L4.24923 7.28867C4.24704 7.2909 4.24484 7.29313 4.24262 7.29534C4.04812 7.48985 3.79342 7.58748 3.53848 7.58823C3.28155 7.589 3.02438 7.49137 2.82835 7.29534C2.82614 7.29313 2.82394 7.29092 2.82176 7.28869L0.707088 5.17402C0.316564 4.7835 0.316564 4.15033 0.707088 3.75981C1.09761 3.36928 1.73078 3.36928 2.1213 3.75981L3.53549 5.17399L7.88109 0.828385C8.27161 0.437861 8.90478 0.437861 9.2953 0.828385Z'\n fill='var(--color-sys-background)'\n />\n </svg>\n )\n\n case 'large':\n return (\n <svg\n width='14'\n height='12'\n viewBox='0 0 14 12'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n >\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M13.4431 1.24258C14.0289 1.82836 14.0289 2.77811 13.4431 3.3639L5.87394 10.933C5.87066 10.9364 5.86737 10.9397 5.86406 10.943C5.57001 11.2371 5.18425 11.3835 4.79885 11.3823C4.41645 11.3812 4.03441 11.2348 3.74264 10.943C3.73934 10.9397 3.73606 10.9364 3.7328 10.9331L0.560755 7.76103C-0.025032 7.17525 -0.025032 6.2255 0.560755 5.63971C1.14654 5.05393 2.09629 5.05393 2.68207 5.63971L4.80335 7.76099L11.3218 1.24258C11.9075 0.656792 12.8573 0.656791 13.4431 1.24258Z'\n fill='var(--color-sys-background)'\n />\n </svg>\n )\n }\n}\n\nfunction IndeterminateIcon({ size }: VariantProps<typeof checkboxVariants>) {\n if (!size) return null\n switch (size) {\n case 'small':\n return (\n <svg width='8' height='2' viewBox='0 0 8 2' fill='none' xmlns='http://www.w3.org/2000/svg'>\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M0.25 1C0.25 0.585786 0.585787 0.25 1 0.25H7C7.41421 0.25 7.75 0.585786 7.75 1C7.75 1.41421 7.41421 1.75 7 1.75H1C0.585786 1.75 0.25 1.41421 0.25 1Z'\n fill='var(--color-sys-background)'\n />\n </svg>\n )\n\n case 'medium':\n return (\n <svg\n width='10'\n height='2'\n viewBox='0 0 10 2'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n >\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M0 1C0 0.447715 0.447715 0 1 0H9C9.55229 0 10 0.447715 10 1C10 1.55228 9.55228 2 9 2H1C0.447715 2 0 1.55228 0 1Z'\n fill='var(--color-sys-background)'\n />\n </svg>\n )\n\n case 'large':\n return (\n <svg\n width='16'\n height='4'\n viewBox='0 0 16 4'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n >\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M0.5 2C0.5 1.17157 1.17157 0.5 2 0.5H14C14.8284 0.5 15.5 1.17157 15.5 2C15.5 2.82843 14.8284 3.5 14 3.5H2C1.17157 3.5 0.5 2.82843 0.5 2Z'\n fill='var(--color-sys-background)'\n />\n </svg>\n )\n }\n}\n","import { useCallback, useRef } from 'react'\n\ntype AutoFocusHandler = (event: Event) => void\n\n/**\n * Radix Dialog·AlertDialog(그리고 그 위의 Drawer)는 닫힐 때 포커스를 **Trigger 로만** 돌린다.\n * Trigger 없이 연 경우(표 행에서 Enter·클릭, 메뉴 항목, 코드로 open=true)에는 Radix 가 기본 복원을 막은 채 아무 데도\n * 포커스를 주지 않아 body 로 떨어진다 — 키보드 사용자가 자리를 잃는다 (2026-10-09 실험 36/36 실측).\n *\n * 열릴 때 포커스가 있던 요소를 기억했다가, 닫힐 때 그 요소가 아직 문서에 있으면 그리로 돌린다.\n * 소비자가 넘긴 onOpenAutoFocus / onCloseAutoFocus 는 먼저 부르고, 거기서 preventDefault 했으면 건드리지 않는다.\n */\nexport function useRestoreFocusToOpener({\n onOpenAutoFocus,\n onCloseAutoFocus,\n}: {\n onOpenAutoFocus?: AutoFocusHandler\n onCloseAutoFocus?: AutoFocusHandler\n}) {\n const openerRef = useRef<HTMLElement | null>(null)\n\n const handleOpenAutoFocus = useCallback<AutoFocusHandler>(\n (event) => {\n // Radix 가 첫 포커스 가능 요소로 옮기기 전이라 아직 \"연 쪽\" 요소가 활성이다\n openerRef.current =\n document.activeElement instanceof HTMLElement ? document.activeElement : null\n onOpenAutoFocus?.(event)\n },\n [onOpenAutoFocus],\n )\n\n const handleCloseAutoFocus = useCallback<AutoFocusHandler>(\n (event) => {\n onCloseAutoFocus?.(event)\n if (event.defaultPrevented) return\n const opener = openerRef.current\n if (!opener || opener === document.body || !opener.isConnected) return\n // preventDefault: Radix 의 \"Trigger 로 복원\"(Trigger 가 없으면 아무 것도 안 함)을 대신한다\n event.preventDefault()\n opener.focus({ preventScroll: true })\n },\n [onCloseAutoFocus],\n )\n\n return { onOpenAutoFocus: handleOpenAutoFocus, onCloseAutoFocus: handleCloseAutoFocus }\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { cva, VariantProps } from 'class-variance-authority'\nimport { CircleCheck, CircleX, Info, TriangleAlert, X } from 'lucide-react'\n\nimport { useRestoreFocusToOpener } from './_internal/useRestoreFocusToOpener'\nimport { cn } from '../utils/cn'\nimport { sanitizeUserText } from '../utils/sanitizeUserText'\nimport { IconButton } from './iconButton'\nimport { Stack } from './stack'\n\nconst Dialog = DialogPrimitive.Root\nconst DialogTrigger = DialogPrimitive.Trigger\nconst DialogPortal = DialogPrimitive.Portal\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n {...props}\n ref={ref}\n className={cn(\n 'fixed inset-0 z-[var(--root-z-index)] bg-sys-blanket',\n 'data-[state=open]:animate-[fade-in_0ms_ease-out,zoom-in_0ms_ease-out]',\n 'data-[state=closed]:animate-[fade-out_0ms_ease-in,zoom-out_0ms_ease-in]',\n className,\n )}\n />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst dialogContentVariants = cva(null, {\n variants: {\n width: {\n small: 'w-[400px]',\n medium: 'w-[600px]',\n large: 'w-[800px]',\n xlarge: 'w-[1000px]',\n },\n },\n defaultVariants: {\n width: 'small',\n },\n})\n\n/**\n * 모달 대화상자 본체. 짧은 입력이나 복합 상호작용을 현재 화면 위에서 처리할 때 쓴다.\n *\n * 언제 쓰나: 이름 바꾸기·태그 추가처럼 필드 서너 개의 입력, 미리보기·선택기처럼 맥락을 잠시 가리는 작업. `DialogTitle` 은 항상 넣는다.\n * 언제 안 쓰나: 되돌릴 수 없는 행동의 최종 확인(→ AlertDialog), 섹션이 여럿인 긴 폼·상세 보기(→ Drawer), 지나가는 결과 알림(→ Toast).\n * 대신/함께: 폼이면 `@t3q-ui/design-system/patterns` 의 FormDialog 가 제출 중 닫힘 차단까지 포함한다.\n */\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> &\n VariantProps<typeof dialogContentVariants> & {\n overlayClassName?: string\n hideCloseButton?: boolean\n }\n>(\n (\n {\n children,\n className,\n width,\n overlayClassName,\n hideCloseButton,\n onOpenAutoFocus,\n onCloseAutoFocus,\n ...props\n },\n ref,\n ) => {\n // 닫힐 때 포커스를 연 요소로 돌린다 — Radix 는 Trigger 가 없으면 body 로 떨어뜨린다\n const focusHandlers = useRestoreFocusToOpener({ onOpenAutoFocus, onCloseAutoFocus })\n return (\n <DialogPortal>\n <DialogOverlay className={overlayClassName} />\n <DialogPrimitive.Content\n ref={ref}\n {...focusHandlers}\n className={cn(\n 'fixed left-[50%] top-[50%] z-[var(--root-z-index)] translate-x-[-50%] translate-y-[-50%] w-full max-w-[70vw]',\n 'flex flex-col gap-[16px] rounded-medium bg-sys-background p-[32px] shadow-gray-medium duration-200',\n 'data-[state=open]:animate-[fade-in_0ms_ease-out,zoom-in_0ms_ease-out]',\n 'data-[state=closed]:animate-[fade-out_0ms_ease-in,zoom-out_0ms_ease-in]',\n dialogContentVariants({ width }),\n className,\n )}\n {...props}\n >\n {children}\n {!hideCloseButton && (\n <IconButton\n asChild\n variant='secondaryLink'\n className={cn('absolute right-[32px] top-[32px]')}\n >\n <DialogPrimitive.Close>\n <X />\n <span className='sr-only a11y'>Close</span>\n </DialogPrimitive.Close>\n </IconButton>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n },\n)\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = (props: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n {...props}\n className={cn('flex flex-col gap-[16px] text-center sm:text-left', props.className)}\n />\n)\nDialogHeader.displayName = 'DialogHeader'\n\nconst DialogFooter = (props: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n {...props}\n className={cn('flex flex-col-reverse gap-[8px] sm:flex-row sm:justify-end', props.className)}\n />\n)\nDialogFooter.displayName = 'DialogFooter'\n\nconst variantToIcon = {\n normal: null,\n success: <CircleCheck className='text-success30' />,\n info: <Info className='text-sys-text-subtler' />,\n warning: <TriangleAlert className='text-critical30' />,\n danger: <CircleX className='text-danger30' />,\n} as const\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title> & {\n variant?: 'success' | 'info' | 'warning' | 'danger'\n }\n>(({ variant, children, ...props }, ref) => {\n if (variant) {\n return (\n <Stack spacing={8}>\n {variantToIcon[variant]}\n <DialogPrimitive.Title\n {...props}\n ref={ref}\n className={cn('text-h4 text-sys-text-main whitespace-pre-wrap', props.className)}\n >\n {sanitizeUserText(children)}\n </DialogPrimitive.Title>\n </Stack>\n )\n } else {\n return (\n <DialogPrimitive.Title\n {...props}\n ref={ref}\n className={cn('text-h4 text-sys-text-main whitespace-pre-wrap', props.className)}\n >\n {sanitizeUserText(children)}\n </DialogPrimitive.Title>\n )\n }\n})\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ children, ...props }, ref) => (\n <DialogPrimitive.Description\n {...props}\n ref={ref}\n className={cn('text-base-regular text-sys-text-main whitespace-pre-wrap', props.className)}\n >\n {sanitizeUserText(children)}\n </DialogPrimitive.Description>\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as SeparatorPrimitive from '@radix-ui/react-separator'\n\nimport { cn } from '../utils/cn'\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n 'shrink-0 bg-sys-divider-subtle',\n orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]',\n className,\n )}\n {...props}\n />\n))\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n","'use client'\n\nimport * as React from 'react'\nimport * as SheetPrimitive from '@radix-ui/react-dialog'\nimport { cva, VariantProps } from 'class-variance-authority'\nimport { X } from 'lucide-react'\n\nimport { useRestoreFocusToOpener } from './_internal/useRestoreFocusToOpener'\nimport { cn } from '../utils/cn'\n\n// modal={false} = 옆 패널: 배경을 덮지 않고(오버레이 없음) 포커스를 가두지 않으며 바깥 클릭으로 닫히지 않는다(ESC·닫기 버튼으로).\n// 목록 행을 눌러 보는 상세는 이것이 기본 — 2026-10-13 원인 분리 실험: 배경 dim 이 상세 열림 화면의 UIClip 열세 원인(docs/results/diagnostic-isolation-18a.md)\nconst DrawerModalContext = React.createContext(true)\n\n/**\n * Drawer 루트. `modal`(기본 true)이 false 면 옆 패널 — 배경 dim 없음, 포커스 가두지 않음, 바깥 클릭으로 닫히지 않음(ESC·닫기 버튼).\n *\n * 언제 쓰나: 목록 행을 눌러 보는 상세는 `modal={false}`, 목록 위에 띄우는 긴 폼은 기본(modal).\n * 언제 안 쓰나: 되돌릴 수 없는 확인(→ AlertDialog), 전용 URL 이 필요한 화면(→ 페이지).\n * 대신/함께: 본체는 `DrawerContent`, 폼이면 patterns 의 FormDrawer.\n */\nconst Drawer = ({ modal = true, ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) => (\n <DrawerModalContext.Provider value={modal}>\n <SheetPrimitive.Root modal={modal} {...props} />\n </DrawerModalContext.Provider>\n)\nDrawer.displayName = 'Drawer'\nconst DrawerTrigger = SheetPrimitive.Trigger\nconst DrawerClose = SheetPrimitive.Close\nconst DrawerPortal = SheetPrimitive.Portal\n\nconst DrawerOverlay = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ ...props }, ref) => (\n <SheetPrimitive.Overlay\n {...props}\n className={cn(\n 'fixed inset-0 z-[var(--root-z-index)] bg-sys-blanket',\n 'data-[state=open]:animate-fade-in',\n 'data-[state=closed]:animate-fade-out',\n props.className,\n )}\n ref={ref}\n />\n))\nDrawerOverlay.displayName = SheetPrimitive.Overlay.displayName\n\nconst sheetVariants = cva(\n 'fixed z-[var(--root-z-index)] flex flex-col overflow-hidden bg-sys-background shadow-gray-medium',\n {\n variants: {\n side: {\n top: [\n 'inset-x-0 top-0 bottom-auto',\n 'data-[state=open]:animate-slide-in-from-top',\n 'data-[state=closed]:animate-slide-out-to-top',\n ],\n bottom: [\n 'inset-x-0 bottom-0 top-auto',\n 'data-[state=open]:animate-slide-in-from-bottom',\n 'data-[state=closed]:animate-slide-out-to-bottom',\n ],\n left: [\n 'inset-y-0 left-0 right-auto h-full',\n 'data-[state=open]:animate-slide-in-from-left',\n 'data-[state=closed]:animate-slide-out-to-left',\n ],\n right: [\n 'inset-y-0 right-0 left-auto h-full',\n 'data-[state=open]:animate-slide-in-from-right',\n 'data-[state=closed]:animate-slide-out-to-right',\n ],\n },\n size: {\n small: 'w-[360px] max-w-[70vw]',\n medium: 'w-[480px] max-w-[70vw]',\n large: 'w-[720px] max-w-[70vw]',\n xLarge: 'w-[1080px] max-w-[70vw]',\n },\n },\n defaultVariants: {\n side: 'right',\n size: 'large',\n },\n },\n)\n\n/**\n * 화면 가장자리에서 미끄러져 나오는 패널 본체. 목록 맥락을 유지한 채 긴 폼·상세를 볼 때 쓴다.\n *\n * 언제 쓰나: 목록에서 \"생성\" 을 눌러 여는 섹션 여럿의 폼(side right, size large), 행을 눌러 보는 상세(루트 `Drawer` 에 `modal={false}` — 옆 패널). `DrawerTitle` 은 항상 넣는다.\n * 언제 안 쓰나: 필드 서너 개의 짧은 입력(→ Dialog), 되돌릴 수 없는 확인(→ AlertDialog), 전용 URL 이 필요한 화면(→ 페이지).\n * 대신/함께: 폼이면 `@t3q-ui/design-system/patterns` 의 FormDrawer 가 제출 중 닫힘 차단까지 포함한다. 본문은 `DrawerBody` 로 스크롤시킨다.\n */\nconst DrawerContent = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content> & VariantProps<typeof sheetVariants>\n>(\n (\n { side, size, children, onOpenAutoFocus, onCloseAutoFocus, onInteractOutside, ...props },\n ref,\n ) => {\n // 닫힐 때 포커스를 연 요소(표 행 등)로 돌린다 — Radix 는 Trigger 가 없으면 body 로 떨어뜨린다\n const focusHandlers = useRestoreFocusToOpener({ onOpenAutoFocus, onCloseAutoFocus })\n const modal = React.useContext(DrawerModalContext)\n return (\n <DrawerPortal>\n {modal ? <DrawerOverlay /> : null}\n <SheetPrimitive.Content\n {...props}\n {...focusHandlers}\n // 옆 패널은 바깥(목록)을 눌러도 닫히지 않는다 — 다른 행을 고르는 클릭이 패널을 닫아 버리면 안 된다. 소비자가 preventDefault 하지 않은 경우만\n onInteractOutside={(e) => {\n onInteractOutside?.(e)\n if (!modal && !e.defaultPrevented) e.preventDefault()\n }}\n ref={ref}\n className={cn(\n sheetVariants({ side, size }),\n !modal && 'border-l border-sys-border-subtle shadow-none',\n props.className,\n )}\n >\n <SheetPrimitive.Close\n className={cn('absolute right-[24px] top-[24px] disabled:pointer-events-none')}\n >\n <X size={24} />\n <span className='sr-only a11y'>Close</span>\n </SheetPrimitive.Close>\n {children}\n </SheetPrimitive.Content>\n </DrawerPortal>\n )\n },\n)\nDrawerContent.displayName = SheetPrimitive.Content.displayName\n\nconst DrawerHeader = ({ ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div {...props} className={cn('flex flex-col gap-[8px] text-left p-[24px]', props.className)} />\n)\nDrawerHeader.displayName = 'DrawerHeader'\n\nconst DrawerBody = ({ ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n // 포커스 가능한 자식이 없어도 키보드로 스크롤할 수 있게 (axe scrollable-region-focusable). 소비자가 tabIndex 로 덮어쓸 수 있다\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex -- 스크롤 영역은 포커스 가능해야 한다 (WCAG 2.1.1)\n tabIndex={0}\n {...props}\n className={cn(\n 'flex-1 min-h-0 overflow-y-auto scrollbar-gutter-stable',\n // DrawerContent 가 overflow-hidden 이라 바깥 outline 은 잘린다 → 안쪽 링\n 'outline-none focus-visible:ring-[2px] focus-visible:ring-inset focus-visible:ring-sys-focus-ring-main',\n props.className,\n )}\n />\n)\nDrawerBody.displayName = 'DrawerBody'\n\nconst DrawerFooter = ({ ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n {...props}\n className={cn('flex gap-[8px] justify-end mt-[16px] px-[24px] pb-[26px]', props.className)}\n />\n)\nDrawerFooter.displayName = 'DrawerFooter'\n\nconst DrawerTitle = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ ...props }, ref) => (\n <SheetPrimitive.Title\n ref={ref}\n {...props}\n className={cn('text-h4 text-sys-text-main', props.className)}\n />\n))\nDrawerTitle.displayName = SheetPrimitive.Title.displayName\n\nconst DrawerDescription = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ ...props }, ref) => (\n <SheetPrimitive.Description\n ref={ref}\n {...props}\n className={cn('text-base-regular text-sys-text-main', props.className)}\n />\n))\nDrawerDescription.displayName = SheetPrimitive.Description.displayName\n\nexport {\n Drawer,\n DrawerPortal,\n DrawerOverlay,\n DrawerTrigger,\n DrawerClose,\n DrawerContent,\n DrawerHeader,\n DrawerBody,\n DrawerFooter,\n DrawerTitle,\n DrawerDescription,\n}\n","'use client'\n\nimport * as React from 'react'\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu'\nimport { ChevronRightIcon } from 'lucide-react'\n\nimport { cn } from '../utils/cn'\n\nfunction DropdownMenu({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot='dropdown-menu' {...props} />\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return <DropdownMenuPrimitive.Portal data-slot='dropdown-menu-portal' {...props} />\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return <DropdownMenuPrimitive.Trigger data-slot='dropdown-menu-trigger' {...props} />\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot='dropdown-menu-content'\n sideOffset={sideOffset}\n className={cn(\n 'bg-sys-background text-base-regular',\n 'overflow-x-hidden overflow-y-auto shadow-gray-small rounded-xsmall p-[4px] border border-sys-divider-subtler',\n 'max-h-(--radix-dropdown-menu-content-available-height) ',\n 'min-w-[200px] origin-(--radix-dropdown-menu-content-transform-origin)',\n 'data-[state=open]:animate-[fade-in_150ms_ease-out,zoom-in_150ms_ease-out]',\n 'data-[state=closed]:animate-[fade-out_150ms_ease-in,zoom-out_150ms_ease-in]',\n 'data-[side=top]:animate-[slide-in-bottom_150ms_ease-out]',\n 'data-[side=bottom]:animate-[slide-in-top_150ms_ease-out]',\n 'data-[side=left]:animate-[slide-in-right_150ms_ease-out]',\n 'data-[side=right]:animate-[slide-in-left_150ms_ease-out]',\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return <DropdownMenuPrimitive.Group data-slot='dropdown-menu-group' {...props} />\n}\n\nfunction DropdownMenuItem({\n className,\n variant = 'default',\n keepOpen = false,\n onSelect,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n variant?: 'default' | 'danger'\n /**\n * true 이면 항목 선택 시 메뉴를 닫지 않고 열린 상태로 유지합니다.\n * 토글성 액션(체크/언체크, 다중 선택 등)에 유용합니다.\n * @default false\n */\n keepOpen?: boolean\n}) {\n const handleSelect = React.useCallback(\n (event: Event) => {\n onSelect?.(event)\n if (keepOpen) event.preventDefault()\n },\n [onSelect, keepOpen],\n )\n\n return (\n <DropdownMenuPrimitive.Item\n data-slot='dropdown-menu-item'\n data-variant={variant}\n onSelect={handleSelect}\n className={cn(\n 'relative flex cursor-default items-center gap-[12px] rounded-xsmall p-[6px] text-base-regular outline-hidden select-none',\n 'data-[variant=danger]:text-danger30',\n '[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:size-[20px]',\n 'focus:bg-secondary-o10',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot='dropdown-menu-separator'\n className={cn('bg-sys-divider-subtle -mx-[1px] my-[1px] h-[1px]', className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot='dropdown-menu-sub' {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger>) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot='dropdown-menu-sub-trigger'\n className={cn(\n 'relative flex cursor-default items-center gap-[12px] rounded-xsmall p-[6px] text-base-regular outline-hidden select-none',\n '[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:size-[20px]',\n 'focus:bg-secondary-o10',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className='ml-auto size-[20px]' />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot='dropdown-menu-sub-content'\n className={cn(\n 'bg-sys-background text-base-regular',\n 'overflow-x-hidden overflow-y-auto z-[var(--root-z-index)] shadow-gray-small rounded-xsmall p-[4px] border border-sys-divider-subtler',\n 'max-h-(--radix-dropdown-menu-content-available-height) ',\n 'min-w-[200px] origin-(--radix-dropdown-menu-content-transform-origin)',\n 'data-[state=open]:animate-[fade-in_150ms_ease-out,zoom-in_150ms_ease-out]',\n 'data-[state=closed]:animate-[fade-out_150ms_ease-in,zoom-out_150ms_ease-in]',\n 'data-[side=top]:animate-[slide-in-bottom_150ms_ease-out]',\n 'data-[side=bottom]:animate-[slide-in-top_150ms_ease-out]',\n 'data-[side=left]:animate-[slide-in-right_150ms_ease-out]',\n 'data-[side=right]:animate-[slide-in-left_150ms_ease-out]',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","'use client'\n\nimport * as React from 'react'\nimport {\n Controller,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n FormProvider,\n useFormContext,\n} from 'react-hook-form'\nimport * as LabelPrimitive from '@radix-ui/react-label'\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { Check, Info, TriangleAlert } from 'lucide-react'\n\nimport { cn } from '../utils/cn'\nimport { Stack } from './stack'\n\nconst Form = FormProvider\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName\n}\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>({} as FormFieldContextValue)\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n )\n}\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext)\n const itemContext = React.useContext(FormItemContext)\n const { getFieldState, formState } = useFormContext()\n\n const fieldState = getFieldState(fieldContext.name, formState)\n\n if (!fieldContext) {\n throw new Error('useFormField should be used within <FormField>')\n }\n\n const { id } = itemContext\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n }\n}\n\ntype FormItemContextValue = {\n id: string\n}\n\nconst FormItemContext = React.createContext<FormItemContextValue>({} as FormItemContextValue)\n\nconst FormItem = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => {\n const id = React.useId()\n\n // 라벨-입력-도움말 사이 4 (붙어 있는 요소) — 2026-10-17 8차 D2 간격 세 단계\n return (\n <FormItemContext.Provider value={{ id }}>\n <div ref={ref} className={cn('space-y-[4px]', className)} {...props} />\n </FormItemContext.Provider>\n )\n },\n)\nFormItem.displayName = 'FormItem'\n\nconst FormLabel = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> & { required?: boolean }\n>(({ className, required, ...props }, ref) => {\n const { error, formItemId } = useFormField()\n\n if (required) {\n return (\n <Stack direction='row' justifyContent='start'>\n <label\n ref={ref}\n className={cn(\n error && 'text-destructive',\n 'inline-block text-sys-text-subtle text-base-medium',\n className,\n )}\n htmlFor={formItemId}\n {...props}\n />\n <span className='text-base-medium text-danger30'>*</span>\n </Stack>\n )\n }\n return (\n <label\n ref={ref}\n className={cn(\n error && 'text-destructive',\n 'inline-block text-sys-text-subtle text-base-medium',\n className,\n )}\n htmlFor={formItemId}\n {...props}\n />\n )\n})\nFormLabel.displayName = 'FormLabel'\n\ntype FormControlContextValue = { isInvalid: boolean }\nconst FormControlContext = React.createContext<FormControlContextValue | null>(null)\n\nconst useFormControlContext = () => React.useContext(FormControlContext)\n\nconst formControlVariants = cva('', {\n variants: {\n maxWidth: {\n default: 'max-w-[var(--max-w-form-control)]',\n narrow: 'max-w-[var(--max-w-form-control-narrow)]',\n full: '',\n },\n },\n defaultVariants: {\n maxWidth: 'default',\n },\n})\n\n/**\n * Form field 의 input slot wrapper.\n *\n * 자식 input 컴포넌트 (TextField / TextArea / Select / MultiSelect / DatePicker / TimePicker / IconSelect 등)\n * 에 isInvalid context + ARIA 속성을 전파하고, 기본으로 max-width 720 cap 을 씌웁니다.\n *\n * `maxWidth` prop:\n * - `'default'` (기본) — 720px. Baymard 가독성 optimal upper bound\n * - `'narrow'` — 480px. 짧은 입력 (코드, 우편번호 등)\n * - `'full'` — cap 없음. 부모 폭 그대로 (예: 큰 검색바, full-page 에디터)\n *\n * **콘텐츠(파일트리/테이블/미리보기/차트 등) 는 FormControl 안에 두지 마세요.**\n * FormControl 은 input slot 전용입니다. 콘텐츠는 FormControl 밖에 배치하세요.\n *\n * 풀폭 override 는 `maxWidth='full'` 또는 `className='max-w-none'` 사용.\n */\nconst FormControl = React.forwardRef<\n React.ElementRef<typeof Slot>,\n React.ComponentPropsWithoutRef<typeof Slot> & VariantProps<typeof formControlVariants>\n>(({ className, maxWidth, ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\n const isInvalid = !!error\n\n return (\n <FormControlContext.Provider value={{ isInvalid }}>\n <Slot\n ref={ref}\n id={formItemId}\n className={cn(formControlVariants({ maxWidth }), className)}\n aria-describedby={!error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`}\n aria-invalid={isInvalid}\n {...props}\n />\n </FormControlContext.Provider>\n )\n})\nFormControl.displayName = 'FormControl'\n\nexport interface FormDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {\n /** 앞의 정보 아이콘. 글자 수(\"0 / 500자\") 같은 보조 표시는 `false` — 안내 문장에만 아이콘을 둔다(2026-10-28 홀드아웃 15: 글자 수에 붙은 아이콘을 Opus·Gemini 가 감점). @default true */\n icon?: boolean\n}\n\nconst FormDescription = React.forwardRef<HTMLParagraphElement, FormDescriptionProps>(\n ({ className, icon = true, ...props }, ref) => {\n const { formDescriptionId, error } = useFormField()\n\n if (error) return null\n\n return (\n <Stack spacing={5} className='pt-[2px]'>\n {icon ? <Info size={16} aria-hidden className='text-sys-text-subtle' /> : null}\n <p\n ref={ref}\n id={formDescriptionId}\n className={cn('text-small-regular text-sys-text-subtle', className)}\n {...props}\n />\n </Stack>\n )\n },\n)\nFormDescription.displayName = 'FormDescription'\n\nconst FormMessage = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n const { error, formMessageId } = useFormField()\n const body = error ? String(error?.message ?? '') : children\n\n if (!body) {\n return null\n }\n\n return (\n <Stack spacing={5} className='pt-[2px]'>\n <TriangleAlert size={16} className='text-danger30' />\n <p\n ref={ref}\n id={formMessageId}\n className={cn('text-small-regular text-danger30', className)}\n {...props}\n >\n {body}\n </p>\n </Stack>\n )\n})\nFormMessage.displayName = 'FormMessage'\n\nconst FormValidMessage = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n if (!children) {\n return null\n }\n\n return (\n <Stack spacing={5} className='pt-[2px]'>\n <Check size={16} className='text-success30' />\n <p ref={ref} className={cn('text-small-regular text-success30', className)} {...props}>\n {children}\n </p>\n </Stack>\n )\n})\nFormValidMessage.displayName = 'FormValidMessage'\n\ntype FormHeaderProps = React.HTMLAttributes<HTMLDivElement> & {\n title?: React.ReactNode\n description?: React.ReactNode\n}\n\nconst FormHeader = React.forwardRef<HTMLDivElement, FormHeaderProps>(\n ({ className, title, description, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn('flex flex-col gap-[2px] items-start w-full', className)}\n {...props}\n >\n {title && <h2 className='text-h4 text-sys-text-main w-full'>{title}</h2>}\n {description && <p className='text-base-regular text-sys-text-main'>{description}</p>}\n {children}\n </div>\n )\n },\n)\nFormHeader.displayName = 'FormHeader'\n\ntype FormSectionProps = React.HTMLAttributes<HTMLDivElement> & {\n title?: React.ReactNode\n /** 제목 태그 레벨. 기본은 문맥(FormPage 안 = 2, Drawer·Dialog 안 = 3) */\n level?: 2 | 3\n}\n\n/** FormSection 제목 레벨의 문맥 기본값. FormPage(제목이 PageHeader h1)는 2 를 제공한다 */\nexport const FormSectionLevelContext = React.createContext<2 | 3>(3)\n\nconst FormSection = React.forwardRef<HTMLDivElement, FormSectionProps>(\n ({ className, title, level, children, ...props }, ref) => {\n const contextLevel = React.useContext(FormSectionLevelContext)\n const Heading = (level ?? contextLevel) === 2 ? 'h2' : 'h3'\n return (\n <div\n ref={ref}\n className={cn(\n // 섹션 사이 간격 48px 를 구분선 위아래 24px 씩으로 나눈다 (2026-10-13: 앞 섹션의 설명 글줄이 선에 붙어 있었다)\n // 필드 사이 16(한 묶음 안) — 섹션 사이 48(pt-24+pb-24)과 구분되는 단계. 2026-10-17 8차 D2\n 'flex flex-col gap-[16px] w-full pt-[24px]',\n // 부모 컨테이너 안에서 자기가 첫 자식이면 (= FormHeader 같은 형제가 앞에 없으면)\n // 16px 의 상단 여백만 둔다 (컨테이너 상단 과공백 방지). FormHeader 가 앞에 있으면 :first-child 가 아니므로 pt-[24px] + 선.\n 'first:pt-[16px]',\n // 마지막 섹션 아래에는 여백이 없다 (푸터 버튼 줄이 자기 간격을 가진다)\n '[&:not(:last-child)]:pb-[24px]',\n // 섹션 사이에 연한 가로 구분선 (2026-10-12 블라인드 평가: 구획이 없으면 \"제목뿐\" 으로 읽혔다). 첫 섹션 위에는 없다\n '[&:not(:first-child)]:border-t [&:not(:first-child)]:border-sys-divider-subtle',\n className,\n )}\n {...props}\n >\n {/* 20px — 폼의 글자 크기 단계를 한 단계 더(2026-10-17 8차 A4). 이전 16px 은 표 제목·Panel 제목과 같아 섹션 제목이 묻혔다 */}\n {title && <Heading className='text-h4 text-sys-text-main w-full'>{title}</Heading>}\n {children}\n </div>\n )\n },\n)\nFormSection.displayName = 'FormSection'\n\nconst formFooterVariants = cva('flex flex-col justify-end overflow-clip pt-[48px] w-full', {\n variants: {\n align: {\n start: 'items-start',\n end: 'items-end',\n center: 'items-center',\n stretch: 'items-stretch',\n },\n },\n defaultVariants: {\n align: 'end',\n },\n})\n\ntype FormFooterProps = React.HTMLAttributes<HTMLDivElement> &\n VariantProps<typeof formFooterVariants>\n\nconst FormFooter = React.forwardRef<HTMLDivElement, FormFooterProps>(\n ({ className, align, children, ...props }, ref) => {\n return (\n <div ref={ref} className={cn(formFooterVariants({ align }), className)} {...props}>\n {children}\n </div>\n )\n },\n)\nFormFooter.displayName = 'FormFooter'\n\nexport {\n useFormField,\n useFormControlContext,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormValidMessage,\n FormField,\n FormHeader,\n FormSection,\n FormFooter,\n}\n","import * as lucide from 'lucide-react'\n\ntype IconComponentName = keyof typeof lucide.icons\ntype IconComponent = lucide.LucideIcon\n\nexport interface LucideIconProps extends lucide.LucideProps {\n /** lucide 아이콘 이름 — kebab(`circle-pause`) 또는 Pascal(`CirclePause`). 옛 이름(alias, `pause-circle`)도 받는다. 없는 이름이면 아무것도 그리지 않는다 */\n iconComponentName?: string | null\n}\n\nfunction isValidIconComponent(componentName: string): componentName is IconComponentName {\n return componentName in lucide.icons\n}\n\n/**\n * lucide 는 옛 이름(alias: `PauseCircle` → `CirclePause`)을 named export 로만 두고 `icons` 맵에는 넣지 않는다.\n * 2026-10-17 개발용 세트 2차에서 `pause-circle` 이 빈 아이콘으로 그려져 \"중지\" 뱃지만 아이콘이 빠졌다 — alias 는 export 에서 찾는다.\n * 아이콘 컴포넌트는 forwardRef 객체다. 범용 `Icon`·`createLucideIcon`·`icons` 같은 다른 export 는 거른다. 모듈 로드 때 한 번 만든다\n */\nconst isForwardRef = (v: unknown): v is IconComponent =>\n typeof v === 'object' &&\n v !== null &&\n (v as { $$typeof?: symbol }).$$typeof === Symbol.for('react.forward_ref')\nconst ALIASES: Record<string, IconComponent> = Object.fromEntries(\n Object.entries(lucide as Record<string, unknown>).filter(\n ([name, v]) => name !== 'Icon' && !(name in lucide.icons) && isForwardRef(v),\n ) as [string, IconComponent][],\n)\n\nconst kebabToPascal = (str: string) =>\n str\n .split('-')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join('')\n\n/**\n * 이름으로 그리는 lucide 아이콘. 버튼·뱃지·메뉴의 작은 아이콘에 쓴다.\n *\n * 언제 쓰나: 아이콘 이름이 데이터(메뉴 설정, 상태 상수)에서 올 때, 또는 lucide 를 직접 import 하지 않고 이름으로 쓰고 싶을 때. 기본 크기 16px(버튼 글자 옆·뱃지 안 크기).\n * 언제 안 쓰나: 이름이 코드에 고정돼 있고 lucide 를 직접 import 할 수 있으면 `import { Plus } from 'lucide-react'` 가 더 가볍다.\n * 대신/함께: 상태 뱃지 아이콘은 `Badge` 의 자식으로 넣는다(16px·글자색). 로딩은 `Spinner`.\n */\nexport function LucideIcon({ iconComponentName, size = 16, ...props }: LucideIconProps) {\n if (!iconComponentName) return null\n\n const componentName = kebabToPascal(iconComponentName)\n // https://github.com/lucide-icons/lucide/issues/1576\n const Icon = isValidIconComponent(componentName)\n ? lucide.icons[componentName]\n : ALIASES[componentName]\n if (!Icon) return null\n\n return <Icon size={size} {...props} />\n}\n","import * as React from 'react'\n\nimport { cn } from '../utils/cn'\n\n/**\n * 빈 상태 일러스트 — 열린 상자와 구겨진 종이. dl-ui-v3 의 `empty_box.svg`(사용자 정보 화면의 빈 패널)를 토큰 색으로 옮겨 라이트·다크 테마를 따른다.\n *\n * 언제 쓰나: EmptyState 의 기본 그림(목록·상세·대시보드의 \"없음\" 상자). 소비 앱의 빈 패널(dl-ui-v3 `CEmptyBox`)도 이것으로 대체한다.\n * 언제 안 쓰나: 오류 안내(→ ErrorState 의 경고 아이콘), 로딩(→ LoadingState), 표 안의 한 줄 빈 결과(ListPage 는 문장만 쓴다).\n * 대신/함께: 색은 `fill-primary10/20`·`fill-sys-background`·`fill-current`(종이 = `text-sys-text-subtler`, 원본의 grayscale60) 로 토큰을 따르므로 `className` 으로는 크기·여백만 바꾼다(기본 110×81). 장식이라 `aria-hidden`.\n */\nconst EmptyBoxIllustration = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(\n ({ className, ...props }, ref) => (\n <svg\n ref={ref}\n width='110'\n height='81'\n viewBox='0 0 110 81'\n fill='none'\n aria-hidden='true'\n focusable='false'\n className={cn('shrink-0 text-sys-text-subtler', className)}\n {...props}\n >\n {/* 왼쪽 덮개 — 연한 주조색 */}\n <path\n d='M1.55091 22.2887C0.694367 20.8214 1.37735 19.6318 3.0764 19.6318H39.8091C41.5081 19.6318 43.5799 20.8214 44.4364 22.2887L55 40.3852H12.1145L1.55091 22.2887Z'\n className='fill-primary10'\n />\n {/* 구겨진 종이 — 글자 보조색(currentColor) */}\n <path\n d='M39.4248 7.0527C29.698 8.46843 22.5682 14.7206 23.4998 21.0174C24.1651 25.5135 28.761 28.815 34.8759 29.8212C38.8785 35.0171 44.6939 37.349 42.0205 34.1458C40.8408 32.7322 40.7157 31.3203 41.1314 30.0456C41.6829 29.9991 42.2394 29.9376 42.7994 29.8561C52.5264 28.4404 59.6562 22.1873 58.7243 15.8905C57.7923 9.59377 49.1517 5.63697 39.4248 7.0527Z'\n className='fill-current'\n />\n {/* 종이의 점 3개 — 바탕색으로 뚫린 것처럼 */}\n <ellipse\n cx='1.60448'\n cy='1.58788'\n rx='1.60448'\n ry='1.58788'\n transform='matrix(-0.989573 0.144031 0.14639 0.989227 49.8203 15.77)'\n className='fill-sys-background'\n />\n <ellipse\n cx='1.60448'\n cy='1.58788'\n rx='1.60448'\n ry='1.58788'\n transform='matrix(-0.989573 0.144031 0.14639 0.989227 42.8682 16.769)'\n className='fill-sys-background'\n />\n <ellipse\n cx='1.60448'\n cy='1.58788'\n rx='1.60448'\n ry='1.58788'\n transform='matrix(-0.989573 0.144031 0.14639 0.989227 35.916 17.7686)'\n className='fill-sys-background'\n />\n {/* 상자 앞면 — 바탕색 위에 주조색 16% */}\n <path\n d='M12.1143 40.2407H54.9997V80.5002H18.2671C14.869 80.5002 12.1143 77.7455 12.1143 74.3474V40.2407Z'\n className='fill-sys-background'\n />\n <path\n d='M12.1143 40.2407H54.9997V80.5002H18.2671C14.869 80.5002 12.1143 77.7455 12.1143 74.3474V40.2407Z'\n className='fill-primary20 opacity-16'\n />\n {/* 오른쪽 덮개 — 주조색 */}\n <path\n d='M108.449 22.2882C109.306 20.8209 108.623 19.6313 106.924 19.6313H70.1909C68.4919 19.6313 66.4201 20.8209 65.5636 22.2882L55 40.3847H97.8855L108.449 22.2882Z'\n className='fill-primary20'\n />\n {/* 상자 오른쪽 면 — 주조색 50% */}\n <path\n d='M55 40.2407H97.8855V74.3474C97.8855 77.7455 95.1308 80.5002 91.7327 80.5002H55V40.2407Z'\n className='fill-primary20 opacity-50'\n />\n </svg>\n ),\n)\nEmptyBoxIllustration.displayName = 'EmptyBoxIllustration'\n\nexport { EmptyBoxIllustration }\n","'use client'\n\nimport * as React from 'react'\nimport * as TabsPrimitive from '@radix-ui/react-tabs'\nimport { cva, VariantProps } from 'class-variance-authority'\n\nimport { cn } from '../utils/cn'\n\ntype TabsContextType = {\n variant?: 'underline' | 'box'\n size?: 'medium' | 'large'\n}\nconst TabsContext = React.createContext<TabsContextType>({\n variant: 'box',\n size: 'medium',\n})\n\n/**\n * 같은 대상의 여러 뷰를 전환하는 탭. 상세 화면의 섹션 전환에 쓴다.\n *\n * 언제 쓰나: 한 리소스의 개요·설정·로그처럼 같은 대상을 다른 관점으로 보는 2~6개 뷰. `TabsList` > `TabsTrigger` 와 `TabsContent` 로 조립한다.\n * 언제 안 쓰나: URL 이 바뀌는 페이지 이동(→ PageHeader 의 `tabs` 또는 내비게이션), 단계가 있는 흐름(→ 스텝 UI), 선택 입력(→ RadioGroup).\n * 대신/함께: 페이지 상단 탭은 PageHeader 가 그리므로 둘을 겹쳐 쓰지 않는다.\n */\nfunction Tabs({\n className,\n variant = 'box',\n size = 'medium',\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root> & TabsContextType) {\n return (\n <TabsContext.Provider value={{ variant, size }}>\n <TabsPrimitive.Root data-slot='tabs' className={cn('flex flex-col', className)} {...props} />\n </TabsContext.Provider>\n )\n}\n\nconst tabListVariants = cva('text-sys-text-subtle inline-flex w-fit items-center justify-center', {\n variants: {\n variant: {\n underline: 'border-b-[1px] border-sys-divider-subtler w-full justify-start',\n box: 'bg-secondary-o20 p-[4px] rounded-medium',\n },\n size: {\n medium: 'text-base-medium',\n large: 'text-large-medium',\n },\n },\n defaultVariants: {\n variant: 'box',\n size: 'medium',\n },\n})\n\nfunction TabsList({\n className,\n variant: variantProp,\n size: sizeProp,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List> & VariantProps<typeof tabListVariants>) {\n const context = React.useContext(TabsContext)\n // TabsList 에 직접 넘긴 값이 Tabs 의 값보다 우선하고, 안쪽 TabsTrigger 도 같은 값을 따른다\n const variant = variantProp ?? context.variant\n const size = sizeProp ?? context.size\n const value = React.useMemo(() => ({ variant, size }), [variant, size])\n\n return (\n <TabsContext.Provider value={value}>\n <TabsPrimitive.List\n data-slot='tabs-list'\n className={cn(tabListVariants({ variant, size }), className)}\n {...props}\n />\n </TabsContext.Provider>\n )\n}\n\nconst tabTriggerVariants = cva('', {\n variants: {\n variant: {\n underline:\n 'flex-none relative data-[state=active]:font-semibold data-[state=active]:text-primary40 data-[state=active]:after:content-[\"\"] data-[state=active]:after:absolute data-[state=active]:after:bottom-[-1px] data-[state=active]:after:h-[2px] data-[state=active]:after:bg-primary30',\n box: 'text-small-bold data-[state=active]:bg-sys-background data-[state=active]:text-sys-text-main px-[16px] py-[6px]',\n },\n size: {\n medium: '',\n large: '',\n },\n },\n compoundVariants: [\n {\n variant: 'underline',\n size: 'medium',\n class:\n 'px-[12px] py-[6px] data-[state=active]:after:left-[10px] data-[state=active]:after:right-[10px]',\n },\n {\n variant: 'underline',\n size: 'large',\n class:\n 'px-[16px] py-[10px] data-[state=active]:after:left-[12px] data-[state=active]:after:right-[12px]',\n },\n ],\n defaultVariants: {\n variant: 'box',\n size: 'medium',\n },\n})\n\nfunction TabsTrigger({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n const { variant, size } = React.useContext(TabsContext)\n return (\n <TabsPrimitive.Trigger\n data-slot='tabs-trigger'\n className={cn(\n 'inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center rounded-xsmall whitespace-nowrap transition-[color,box-shadow]',\n 'focus-visible:outline-sys-focus-ring-main focus-visible:outline-[2px]',\n 'disabled:pointer-events-none disabled:opacity-50',\n tabTriggerVariants({ variant, size }),\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction TabsContent({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot='tabs-content'\n className={cn('flex-1 outline-none', className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n","'use client'\n\nimport { createContext, type ReactNode, useCallback, useContext, useMemo, useState } from 'react'\n\nimport { cn } from '../utils/cn'\nimport { Badge } from './badge'\nimport { Separator } from './separator'\nimport { Tabs, TabsList, TabsTrigger } from './tabs'\nimport { TooltipProvider } from './tooltip'\n\n/* --------------------------------- Types ---------------------------------- */\n\nexport type PageHeaderTabItem = {\n label: string\n value: string\n href?: string\n matchValues?: string[]\n disabled?: boolean\n badge?: number | string\n}\n\nexport type PageHeaderState = {\n title?: string\n /**\n * Optional override for the breadcrumb tail (last item).\n * - `undefined` (default): consuming apps may fall back to `title`.\n * - `null`: explicitly suppress the auto-appended breadcrumb tail.\n * - `string`: use the given text as the breadcrumb tail regardless of `title`.\n *\n * design-system itself does not render breadcrumbs (they are passed in as the\n * `breadcrumb` slot) — this field is a contract for the consuming app's\n * breadcrumb wrapper to read.\n */\n breadcrumbTitle?: string | null\n description?: ReactNode\n status?: ReactNode\n /** 제목 아래 메타. 상세 화면의 핵심 정보는 여기 한 곳 — 여러 개면 `MetaGroup` + `MetaItem` — 가로로 흘려 다음 줄로(2026-10-30 사용자 결정: 메타 자리를 두 개로 나누지 않는다, 2026-11-06 격자 대신 흘림) */\n meta?: ReactNode\n actions?: ReactNode\n /** Right-aligned slot next to the title (e.g. a secondary title action). */\n titleRight?: ReactNode\n bottomLeft?: ReactNode\n bottomRight?: ReactNode\n tabs?: PageHeaderTabItem[]\n activeTab?: string\n}\n\ntype PageHeaderUpdate = PageHeaderState | ((prev: PageHeaderState) => PageHeaderState)\n\ntype PageHeaderContextType = {\n pageHeader: PageHeaderState\n setPageHeader: (state: PageHeaderUpdate) => void\n resetPageHeader: () => void\n}\n\n/* -------------------------------- Context --------------------------------- */\n\nconst PageHeaderContext = createContext<PageHeaderContextType | undefined>(undefined)\n\nexport function PageHeaderProvider({ children }: { children: ReactNode }) {\n const [pageHeader, setPageHeaderState] = useState<PageHeaderState>({})\n\n const setPageHeader = useCallback((state: PageHeaderUpdate) => {\n setPageHeaderState((prev) => (typeof state === 'function' ? state(prev) : state))\n }, [])\n\n const resetPageHeader = useCallback(() => {\n setPageHeaderState({})\n }, [])\n\n const value = useMemo(\n () => ({ pageHeader, setPageHeader, resetPageHeader }),\n [pageHeader, resetPageHeader, setPageHeader],\n )\n\n return <PageHeaderContext.Provider value={value}>{children}</PageHeaderContext.Provider>\n}\n\nexport function usePageHeader() {\n const context = useContext(PageHeaderContext)\n\n if (context === undefined) {\n throw new Error('usePageHeader must be used within a PageHeaderProvider')\n }\n\n return context\n}\n\n/* ----------------------------- PageHeaderTabs ----------------------------- */\n\ntype PageHeaderTabsProps = {\n tabs: PageHeaderTabItem[]\n activeTab?: string\n onTabChange?: (value: string, tab: PageHeaderTabItem) => void\n}\n\nfunction PageHeaderTabs({ tabs, activeTab, onTabChange }: PageHeaderTabsProps) {\n const value = useMemo(() => {\n const selected = tabs.find((tab) => {\n const values = [tab.value, ...(tab.matchValues ?? [])]\n return values.includes(activeTab ?? '')\n })\n\n return selected?.value ?? tabs[0]?.value\n }, [activeTab, tabs])\n\n if (tabs.length === 0) return null\n\n return (\n <Tabs\n value={value}\n onValueChange={(nextValue) => {\n const nextTab = tabs.find((tab) => tab.value === nextValue)\n if (!nextTab) return\n\n onTabChange?.(nextValue, nextTab)\n }}\n variant='underline'\n size='large'\n // -mb-px: TabsList 의 1px 밑줄을 탭 줄 컨테이너의 구분선 위에 포개 한 줄로 — 밑줄이 탭 폭에서 끊기지 않고 actions 아래까지 이어진다 (2026-10-16 이슈 47)\n className='-mb-px flex-1 min-w-[360px] overflow-x-auto overflow-y-hidden'\n >\n <TabsList className='ml-0'>\n {tabs.map((tab) => (\n <TabsTrigger\n key={tab.value}\n value={tab.value}\n disabled={tab.disabled}\n // PageHeader 탭은 TabsContent 를 렌더하지 않는다 — 없는 패널을 가리키는 aria-controls 를 제거\n aria-controls={undefined}\n className={cn('gap-[4px]', 'disabled:text-sys-text-disabled disabled:opacity-100')}\n >\n <span>{tab.label}</span>\n {tab.badge ? <Badge variant='primary'>{tab.badge}</Badge> : null}\n </TabsTrigger>\n ))}\n </TabsList>\n </Tabs>\n )\n}\n\n/* ------------------------------ PageHeader -------------------------------- */\n\nexport type PageHeaderProps = PageHeaderState & {\n breadcrumb?: ReactNode\n onTabChange?: (value: string, tab: PageHeaderTabItem) => void\n fallbackTitle?: string\n compact?: boolean\n /** 내용(빵부스러기·제목·행동·설명·탭)의 최대 폭 — CSS 길이(예: `var(--max-w-page-content)`). 주면 그 폭 안에 가운데 두고 띠(배경·아래 선)는 전폭 그대로. FormPage 가 폼 폭에 맞춰 넘긴다(2026-10-26 22차). 기본 없음 = 전폭 */\n contentMaxWidth?: string\n}\n\n/**\n * 페이지 최상단 헤더. 제목·설명·상태·메타·주요 행동·필터 줄·탭을 한 곳에 둔다.\n *\n * 언제 쓰나: 모든 목록·상세 화면의 맨 위에 한 번. 주요 행동은 `actions`(제목 줄 오른쪽 — 탭이 있어도 같고, 제목이 길어 자리가 모자라면 버튼 묶음이 제목 아래 줄 오른쪽으로 내려간다), 검색·필터는 `bottomRight`, 새로고침은 `titleRight` 에 PageHeaderRefreshButton(actions 와 같은 묶음), 페이지 이동 탭은 `tabs`(제목 아래 별도 줄). 버튼이 나란히 놓이는 슬롯(`actions`·`titleRight`·`bottomLeft`)은 버튼 사이 8px 로 그린다 — 직접 Stack 으로 감싸지 않는다.\n * 언제 안 쓰나: 섹션 제목(→ `FormSection`·`CardHeader`), 모달·패널 제목(→ DialogHeader·DrawerHeader), 한 페이지에 두 번.\n * 대신/함께: 레이아웃이 헤더를 소유하는 앱은 `PageHeaderProvider` + `usePageHeader` 로 내용만 밀어 넣는다. 목록 화면 전체는 ListPage 패턴이 이를 포함한다.\n */\n// @container: 슬롯 내용이 헤더 폭(@3xl 등 컨테이너 쿼리)에 반응할 수 있게 한다 (DetailPage 가 행동 버튼을 접는 기준)\nexport function PageHeader({\n breadcrumb,\n title,\n fallbackTitle,\n description,\n status,\n meta,\n actions,\n titleRight,\n bottomLeft,\n bottomRight,\n tabs = [],\n activeTab,\n onTabChange,\n compact = false,\n contentMaxWidth,\n}: PageHeaderProps) {\n const hasTabs = tabs.length > 0\n // 내용만 가운데 폭에 가둔다(헤더 자체는 전폭이라 띠·아래 선은 화면 끝까지). 값은 토큰 var 문자열\n const contentStyle = contentMaxWidth ? { maxWidth: contentMaxWidth } : undefined\n // 주요 행동(actions)은 제목 줄 오른쪽 — 탭이 있어도 같다 (2026-10-19 14차, 사용자 결정 1-B·L-A: Polaris·Primer·Atlassian·Material 3 의\n // \"버튼은 제목 줄, 탭은 그 아래\" 관례이고 기준선 화면과 같은 자리. 원문 심판이 탭 줄의 버튼을 \"sit at tab level / float above the tab bar\" 로\n // 5·6·11·13차 감점). 2026-10-13 13-B(UIClip 근거 — 폐기된 자)로 탭 줄에 두었던 것을 되돌린다.\n // 긴 제목·많은 버튼 대책: 제목 묶음은 최소 폭 240 을 지키며 감싸고(말줄임 없음), 버튼 묶음은 자리가 모자라면 flex-wrap 으로\n // 다음 줄 오른쪽(ml-auto)으로 내려간다. 보이는 버튼 수 제한은 DetailPage 가 맡는다(보조 2개 + \"더보기\")\n const hasTabsRow = hasTabs\n const hasTitleControls = Boolean(titleRight) || Boolean(actions)\n const hasControlsRow = Boolean(bottomLeft) || Boolean(bottomRight)\n const hasBottomDivider = Boolean(bottomLeft) && Boolean(bottomRight)\n const displayTitle = title || fallbackTitle || ''\n\n return (\n <TooltipProvider>\n {compact ? (\n <header className='@container w-full shrink-0 border-b border-sys-divider-subtler bg-sys-background bg-[image:var(--color-page-header-bg)] px-[24px] pt-[16px] pb-[24px]'>\n <div\n className='mx-auto flex w-full items-center justify-between gap-[12px]'\n style={contentStyle}\n >\n <div className='flex min-w-0 items-center gap-[12px]'>\n <h1 className='whitespace-pre overflow-hidden text-ellipsis text-h3 text-sys-text-main'>\n {displayTitle}\n </h1>\n {status ? <div className='flex shrink-0 items-center'>{status}</div> : null}\n </div>\n {titleRight || actions ? (\n <div className='flex shrink-0 items-center gap-[8px]'>\n {titleRight}\n {actions}\n </div>\n ) : null}\n </div>\n </header>\n ) : (\n // 바탕은 시안 그라데이션(토큰 --color-page-header-bg, 배경 이미지), 경계는 아래 1px 구분선 하나 — 2026-10-30 사용자 결정으로 그라데이션 복원(구분선 유지)\n <header\n className={cn(\n // 양옆 24: 띠(배경)는 화면 끝까지인데 내용·표가 64 안쪽이라 심판이 \"header band is wider than the table\" — 2026-10-18 10차 ①\n // 띠 끝 선은 탭이 있어도 header 가 전체 폭으로 그린다(탭 줄에만 그리면 양끝에서 선이 끊겨 \"ends abruptly behind the tabs\")\n '@container w-full shrink-0 bg-sys-background bg-[image:var(--color-page-header-bg)] px-[24px] pt-[24px]',\n 'border-b border-sys-divider-subtler',\n )}\n >\n <div className='mx-auto flex w-full flex-col items-start gap-[16px]' style={contentStyle}>\n {breadcrumb ? <div className='w-full'>{breadcrumb}</div> : null}\n <div className='flex w-full flex-col items-start'>\n <div className='flex w-full flex-col items-start gap-[8px] pb-[24px]'>\n {/* items-center: titleRight 의 36px 컨트롤이 32px 제목 줄과 세로 가운데를 맞추도록.\n flex-wrap: 제목(최소 240)과 버튼 묶음이 한 줄에 못 들어가면 버튼 묶음이 다음 줄 오른쪽으로 내려간다 */}\n <div className='flex w-full flex-wrap items-center gap-x-[12px] gap-y-[8px]'>\n <div className='flex min-w-[240px] flex-1 items-center gap-[12px]'>\n <h1 className='whitespace-pre-wrap text-h3 text-sys-text-main'>\n {displayTitle}\n </h1>\n {status ? <div className='flex shrink-0 items-center'>{status}</div> : null}\n </div>\n {hasTitleControls ? (\n <div className='ml-auto flex shrink-0 items-center gap-[8px]'>\n {titleRight}\n {actions}\n </div>\n ) : null}\n </div>\n {meta ? <div className='w-full'>{meta}</div> : null}\n {description ? (\n <div className='flex w-full items-start pb-[8px] pt-[4px]'>\n {/* 부제 14px·subtle(#4d5365): 12px subtler 는 심판이 \"small gray text\" 로 읽었다(한 줄 판 27쌍·상세 판 21쌍, 2026-10-18 13차 — 사용자 결정 \"부제 14px + 나머지 라벨은 색만 진하게\") */}\n <p className='line-clamp-2 break-keep whitespace-pre-wrap text-base-regular text-sys-text-subtle wrap-break-word'>\n {description}\n </p>\n </div>\n ) : null}\n </div>\n {hasControlsRow ? (\n <div className='flex w-full flex-wrap items-start gap-[12px] pb-[24px]'>\n {bottomLeft ? (\n <div className='flex shrink-0 items-center gap-[8px]'>{bottomLeft}</div>\n ) : null}\n {hasBottomDivider ? (\n <Separator\n aria-hidden\n orientation='vertical'\n className='h-[24px] self-start mt-[6px]'\n />\n ) : null}\n {bottomRight ? (\n <div className='flex flex-auto items-center justify-end gap-[12px]'>\n {bottomRight}\n </div>\n ) : null}\n </div>\n ) : null}\n {hasTabsRow ? (\n <div className='flex w-full items-end justify-between gap-[12px] min-h-[52px]'>\n <PageHeaderTabs tabs={tabs} activeTab={activeTab} onTabChange={onTabChange} />\n </div>\n ) : null}\n </div>\n </div>\n </header>\n )}\n </TooltipProvider>\n )\n}\n","import * as React from 'react'\nimport { cva } from 'class-variance-authority'\nimport { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight } from 'lucide-react'\n\nimport { cn } from '../utils/cn'\n\nexport type PaginationPropsType = {\n /** 총 row(데이터)의 개수 */\n total: number\n /** 한 페이지에 보여줄 row(데이터)의 개수 */\n rowsPerPage: number\n /** 현재 페이지 번호 */\n page: number\n /** 페이지 번호 설정 함수 */\n onChange: React.Dispatch<number>\n /** 컴포넌트에서 보여줄 페이지 수 (기본값 : 5)*/\n count?: number\n /** disabled */\n disabled?: boolean\n /** 라벨 표시 여부 (전체 N개 중 X - Y번째) */\n showLabel?: boolean\n}\n\n/**\n * 페이지 번호 이동. 서버 페이징 목록의 표 아래에 쓴다.\n *\n * 언제 쓰나: `total`·`page`·`rowsPerPage` 를 알 수 있는 목록. `showLabel` 로 \"전체 N개 중 X-Y\" 를 보여 준다. 필터·검색이 바뀌면 1페이지로.\n * 언제 안 쓰나: 무한 스크롤·더 보기 방식, 커서 기반이라 전체 개수를 모르는 목록(→ 이전/다음 버튼만).\n * 대신/함께: `TablePagination` 으로 감싸 표 아래 가운데에 둔다. ListPage 패턴은 이를 내장한다.\n */\nfunction Pagination({\n total,\n rowsPerPage,\n page,\n onChange,\n count = 5,\n disabled = false,\n showLabel = false,\n ...rest\n}: PaginationPropsType) {\n const countOfAllPages: number = total > 0 && rowsPerPage > 0 ? Math.ceil(total / rowsPerPage) : 0\n\n const [pageStartIdx, setPageStartIdx] = React.useState<number>(1)\n const [pageEndIdx, setPageEndIdx] = React.useState<number>(count)\n\n // 맨 처음으로\n const handleGoToFirst = React.useCallback(() => {\n setPageStartIdx(1)\n setPageEndIdx(count)\n\n onChange(1)\n }, [onChange, count])\n\n // 이전\n const handleGoToPrev = React.useCallback(() => {\n if (page === 1) {\n return\n }\n\n if (page === pageStartIdx) {\n setPageStartIdx((prev) => prev - 1)\n setPageEndIdx((prev) => prev - 1)\n }\n\n onChange(page - 1)\n }, [onChange, page, pageStartIdx])\n\n // 다음\n const handleGoToNext = React.useCallback(() => {\n if (page === countOfAllPages) {\n return\n }\n\n if (page === pageEndIdx) {\n setPageStartIdx((prev) => prev + 1)\n setPageEndIdx((prev) => prev + 1)\n }\n\n onChange(page + 1)\n }, [countOfAllPages, onChange, page, pageEndIdx])\n\n // 맨 끝으로\n const handleGoToEnd = React.useCallback(() => {\n setPageStartIdx(countOfAllPages - (count - 1))\n setPageEndIdx(countOfAllPages)\n\n onChange(countOfAllPages)\n }, [countOfAllPages, onChange, count])\n\n React.useEffect(() => {\n // [Fix] 외부 page 변경 시 현재 구간(Start~End)을 벗어났다면 구간 자동 재설정\n if (page < pageStartIdx || page > pageEndIdx) {\n // 현재 페이지가 속한 블록 계산 (예: page=9, count=5 -> 2번째 블록)\n const currentBlock = Math.ceil(page / count)\n const newStart = (currentBlock - 1) * count + 1\n\n setPageStartIdx(newStart)\n setPageEndIdx(newStart + count - 1)\n }\n }, [count, page, pageStartIdx, pageEndIdx])\n\n // 전체 건수(N)만 16px 로 강조 — 숫자가 한 단계 큰 글자 크기(2026-10-17 8차 A3)\n const label = React.useMemo(() => {\n const n = total.toLocaleString()\n const start = total === 0 ? 0 : (page - 1) * rowsPerPage + 1\n const end = total === 0 ? 0 : Math.min(page * rowsPerPage, total)\n return (\n <>\n 전체 <span className='text-large-medium text-sys-text-main tabular-nums'>{n}</span>개 중{' '}\n {start} - {end}번째\n </>\n )\n }, [total, page, rowsPerPage])\n\n return (\n <PaginationWrapper className='relative justify-center' {...rest}>\n {showLabel && (\n <span className='absolute left-0 text-base-regular text-sys-text-subtle'>{label}</span>\n )}\n <PaginationContent>\n <PaginationItem>\n <PaginationFirst\n href='#'\n onClick={handleGoToFirst}\n disabled={page === 1 || total === 0 || disabled}\n />\n </PaginationItem>\n <PaginationItem>\n <PaginationPrevious\n href='#'\n onClick={handleGoToPrev}\n disabled={page === 1 || total === 0 || disabled}\n />\n </PaginationItem>\n\n {Array(countOfAllPages)\n .fill('')\n .map((_, idx): React.JSX.Element | undefined => {\n if (idx >= pageStartIdx - 1 && idx <= pageEndIdx - 1) {\n return (\n <PaginationItem key={idx + 1}>\n <PaginationLink\n href='#'\n isActive={page === idx + 1}\n disabled={disabled}\n onClick={() => {\n onChange(idx + 1)\n }}\n >\n {idx + 1}\n </PaginationLink>\n </PaginationItem>\n )\n }\n })}\n <PaginationItem>\n <PaginationNext\n href='#'\n onClick={handleGoToNext}\n disabled={page === countOfAllPages || total === 0 || disabled}\n />\n </PaginationItem>\n <PaginationItem>\n <PaginationLast\n href='#'\n onClick={handleGoToEnd}\n disabled={page === countOfAllPages || total === 0 || disabled}\n />\n </PaginationItem>\n </PaginationContent>\n </PaginationWrapper>\n )\n}\n\nfunction PaginationWrapper({ className, ...props }: React.ComponentProps<'nav'>) {\n return (\n <nav\n role='navigation'\n aria-label='pagination'\n data-slot='pagination'\n className={cn('mx-auto flex w-full items-center justify-center', className)}\n style={{ paddingTop: '16px' }}\n {...props}\n />\n )\n}\n\nfunction PaginationContent({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot='pagination-content'\n className={cn('flex flex-row items-center gap-[4px]', className)}\n {...props}\n />\n )\n}\n\nfunction PaginationItem({ className, ...props }: React.ComponentProps<'li'>) {\n return <li data-slot='pagination-item' className={cn('flex', className)} {...props} />\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean\n disabled?: boolean\n children?: React.ReactNode\n} & React.ComponentProps<'a'>\n\nconst paginationLinkVariants = cva(\n 'inline-flex min-w-[28px] h-[28px] p-[2px] flex-col justify-center items-center gap-[4px] text-base-semibold shrink-0 cursor-pointer transition-colors',\n {\n variants: {\n variant: {\n true: 'text-primary50 bg-primary10 rounded-xsmall',\n false:\n 'text-sys-text-subtle hover:bg-secondary-o10 active:bg-secondary-o20 hover:rounded-xsmall active:rounded-xsmall',\n },\n disabled: {\n true: 'text-sys-text-disabled pointer-events-none cursor-auto',\n false: '',\n },\n },\n defaultVariants: {\n variant: false,\n disabled: false,\n },\n },\n)\n\nfunction PaginationLink({\n className,\n isActive,\n disabled,\n children,\n onClick,\n href,\n ...props\n}: PaginationLinkProps) {\n const wrappedChildren = React.Children.map(children, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return <span className='inline-flex items-center justify-center'>{child}</span>\n }\n return child\n })\n\n const handleClick = React.useCallback(\n (e: React.MouseEvent<HTMLAnchorElement>) => {\n e.preventDefault()\n onClick?.(e)\n },\n [onClick],\n )\n\n // href 없는 <a> 는 generic 역할이라 aria-label 이 금지되고 키보드로 갈 수도 없다 → 버튼으로 동작시킨다\n const buttonLike = !href\n ? {\n role: 'button' as const,\n tabIndex: disabled ? -1 : 0,\n 'aria-disabled': disabled || undefined,\n onKeyDown: (e: React.KeyboardEvent<HTMLAnchorElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n onClick?.(e as unknown as React.MouseEvent<HTMLAnchorElement>)\n }\n },\n }\n : {}\n\n return (\n <a\n href={href}\n aria-current={isActive ? 'page' : undefined}\n data-slot='pagination-link'\n data-active={isActive}\n className={cn(paginationLinkVariants({ variant: isActive, disabled }), className)}\n {...buttonLike}\n {...props}\n onClick={handleClick}\n >\n {wrappedChildren}\n </a>\n )\n}\n\nfunction PaginationFirst({ className, ...props }: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink aria-label='첫 페이지' className={cn(className)} {...props}>\n <ChevronsLeft />\n </PaginationLink>\n )\n}\n\nfunction PaginationPrevious({ className, ...props }: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink aria-label='이전' className={cn(className)} {...props}>\n <ChevronLeft />\n </PaginationLink>\n )\n}\n\nfunction PaginationLast({ className, ...props }: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink aria-label='마지막 페이지' className={cn(className)} {...props}>\n <ChevronsRight />\n </PaginationLink>\n )\n}\n\nfunction PaginationNext({ className, ...props }: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink aria-label='다음' className={cn(className)} {...props}>\n <ChevronRight />\n </PaginationLink>\n )\n}\n\nexport {\n Pagination,\n PaginationWrapper,\n PaginationContent,\n PaginationLink,\n PaginationItem,\n PaginationFirst,\n PaginationPrevious,\n PaginationLast,\n PaginationNext,\n}\n\nexport const getPaginationRange = (total: number, page: number, limit: number) => {\n if (total === 0) return { start: 0, end: 0 }\n const start = (page - 1) * limit + 1\n const end = Math.min(page * limit, total)\n return { start, end }\n}\n","'use client'\n\nimport * as React from 'react'\n\nimport { cn } from '../utils/cn'\n\nexport interface PanelProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {\n /** 상자 제목. 주면 이름 있는 `section` landmark 가 되고(aria-labelledby), 없으면 `div` */\n title?: React.ReactNode\n /** 제목 아래 한 줄 설명 */\n description?: React.ReactNode\n /** 제목의 heading 레벨. 페이지 제목이 h1 이면 2(기본), 상자 안의 하위 구역이면 3 */\n level?: 2 | 3\n /** 제목 줄 오른쪽(닫기 버튼 등) */\n titleRight?: React.ReactNode\n /** 본문 아래 안내 한 줄(비활성 사유 등) */\n note?: React.ReactNode\n /** 맨 아래 버튼 줄(오른쪽 정렬, 8px 간격) */\n footer?: React.ReactNode\n /** 안쪽 여백. medium 16px(옆 패널·본문 구역, 기본) · large 24px(목록의 상세 패널) */\n padding?: 'medium' | 'large'\n}\n\n/**\n * 1px 테두리의 둥근 상자. 상세 화면의 본문 구역·옆 패널, 목록의 상세 패널, 폼의 검토 패널이 전부 이 상자다.\n *\n * 언제 쓰나: 제목 + 내용 묶음을 본문과 구분해 보일 때(상세 본문의 \"주요 정보\"·\"설명\", DetailPage `aside`, FormPage `aside`, ListPage `detail`). 그림자 없이 선 하나로 나눈다 — 화면의 다른 선(표·구분선)과 같은 토큰.\n * 언제 안 쓰나: 대시보드 요약 타일(→ Card), 알림(→ Alert), 겹쳐 뜨는 것(→ Dialog·Drawer·Popover).\n * 대신/함께: 안의 필드는 `MetaList` + `MetaRow align='start'`, 표는 `Table`·`AgGridTable`(자기 상자가 있으니 Panel 로 또 감싸지 않는다). 패턴 슬롯(`aside`·`detail`)은 패턴이 Panel 로 그리므로 소비 앱이 상자를 또 두르지 않는다.\n */\nfunction Panel({\n title,\n description,\n level = 2,\n titleRight,\n note,\n footer,\n padding = 'medium',\n className,\n children,\n ...props\n}: PanelProps) {\n const id = React.useId()\n const hasTitle = title != null\n const Heading = level === 3 ? 'h3' : 'h2'\n const Root = hasTitle ? 'section' : 'div'\n return (\n <Root\n aria-labelledby={hasTitle ? id : undefined}\n data-slot='panel'\n className={cn(\n 'flex min-w-0 flex-col rounded-medium border border-sys-divider-subtle bg-sys-background',\n padding === 'large' ? 'gap-[16px] p-[24px]' : 'gap-[12px] p-[16px]',\n className,\n )}\n {...props}\n >\n {hasTitle || titleRight ? (\n <div className='flex items-start justify-between gap-[8px]'>\n <div className='flex min-w-0 flex-col gap-[4px]'>\n {hasTitle ? (\n <Heading id={id} className='text-h5 text-sys-text-main'>\n {title}\n </Heading>\n ) : null}\n {description != null ? (\n <p className='break-keep text-small-regular text-sys-text-subtle wrap-break-word'>\n {description}\n </p>\n ) : null}\n </div>\n {hasTitle && titleRight != null ? (\n // 제목 첫 줄(text-h5 16px × 1.5 = 24px) 높이 안에서 세로 가운데 — 32px 버튼이 윗변에 붙어 글자가 제목보다 4~7px 아래로 처졌다\n // (2026-10-30 홀드아웃 17 세트 2, Opus \"'전체 보기' links sit slightly below their card titles\"). 더 큰 요소는 위아래로 고르게 넘친다\n <div className='flex h-[24px] shrink-0 items-center'>{titleRight}</div>\n ) : (\n titleRight\n )}\n </div>\n ) : null}\n {children}\n {note != null || footer != null ? (\n <div className='flex flex-col gap-[8px]'>\n {note != null ? (\n <p className='break-keep text-small-regular text-sys-text-subtle wrap-break-word'>\n {note}\n </p>\n ) : null}\n {footer != null ? <div className='flex justify-end gap-[8px]'>{footer}</div> : null}\n </div>\n ) : null}\n </Root>\n )\n}\n\nexport { Panel }\n","'use client'\n\nimport * as React from 'react'\nimport { cva, VariantProps } from 'class-variance-authority'\n\nimport { cn } from '../utils/cn'\n\n/* -------------------------------------------------------------------------- */\n/* Table */\n/* -------------------------------------------------------------------------- */\n/**\n * HTML table 기반의 가벼운 표. 정렬·컬럼 조작이 없는 소량 데이터 나열에 쓴다.\n *\n * 언제 쓰나: 상세 화면의 속성 표, 수십 행 이하의 고정 목록, 셀 안에 자유로운 마크업이 필요할 때. `TableHeader`·`TableRow`·`TableCell` 로 조립한다. 숫자 열(건수·비율·크기)은 `TableHead align='right'` — 폭 140 으로 고정되고 글자 열이 남는 폭을 가진다(표는 `table-fixed`, 다른 폭은 `className='w-…'`).\n * 언제 안 쓰나: 서버 페이징·정렬·컬럼 숨김·가상 스크롤이 필요한 목록(→ AgGridTable), 키-값 몇 줄(→ MetaItem).\n * 대신/함께: 페이지네이션은 `TablePagination` 안에 `Pagination`, 빈 상태는 행 하나로 직접 그린다.\n */\nconst Table = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(\n ({ className, ...props }, ref) => (\n // 둥근 테두리 상자(AgGridTable 과 같은 8px·같은 선). overflow-auto 라 내용이 라운드로 잘린다 (2026-10-17 이슈 47 4차)\n <div className='w-full overflow-auto rounded-medium border border-sys-divider-subtle'>\n <table\n ref={ref}\n className={cn('w-full table-fixed border-collapse border-spacing-0 border-0', className)}\n {...props}\n />\n </div>\n ),\n)\n\n/* -------------------------------------------------------------------------- */\n/* TableHeader */\n/* -------------------------------------------------------------------------- */\nconst tableHeaderVariant = cva(\n // 헤더: 아주 연한 바탕(sys-table-header-background = o10) + 아래 1px 선(행 선과 같은 토큰). 양끝 라운드는 바깥 상자가 맡는다.\n // 선은 th 에 — border-separate(ParameterTable)에서도 그려지도록 (2026-10-17 이슈 47 4차)\n '[&_tr]:border-none [&_tr:hover]:bg-transparent [&_tr:active]:bg-transparent [&_th]:bg-sys-table-header-background [&_th]:border-b [&_th]:border-sys-divider-subtle [&_th]:text-sys-text-subtle [&_th]:text-h6',\n {\n variants: {\n spacing: {\n compact: '[&_th]:px-[12px] [&_th]:py-[2px]',\n normal: '[&_th]:px-[12px] [&_th]:py-[8px]',\n },\n },\n defaultVariants: {\n spacing: 'normal',\n },\n },\n)\n\nexport interface TableHeaderProps\n extends React.HTMLAttributes<HTMLTableSectionElement>, VariantProps<typeof tableHeaderVariant> {}\n\nconst TableHeader = React.forwardRef<HTMLTableSectionElement, TableHeaderProps>(\n ({ className, spacing, ...props }, ref) => (\n <thead ref={ref} className={cn(tableHeaderVariant({ spacing }), className)} {...props} />\n ),\n)\n\n/* -------------------------------------------------------------------------- */\n/* TableBody */\n/* -------------------------------------------------------------------------- */\nconst tableBodyVariant = cva(null, {\n variants: {\n spacing: {\n normal: '[&_td]:h-[50px]',\n compact: '[&_td]:h-[36px]',\n },\n },\n defaultVariants: {\n spacing: 'normal',\n },\n})\n\nexport interface TableBodyProps\n extends React.HTMLAttributes<HTMLTableSectionElement>, VariantProps<typeof tableBodyVariant> {}\n\nconst TableBody = React.forwardRef<HTMLTableSectionElement, TableBodyProps>(\n ({ className, spacing, ...props }, ref) => (\n <tbody ref={ref} className={cn(tableBodyVariant({ spacing }), className)} {...props} />\n ),\n)\n\n/* -------------------------------------------------------------------------- */\n/* TablePagination */\n/* -------------------------------------------------------------------------- */\nconst TablePagination = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('mt-[38px] flex items-center justify-center', className)}\n {...props}\n />\n))\n\n/* -------------------------------------------------------------------------- */\n/* TableRow */\n/* -------------------------------------------------------------------------- */\nconst TableRow = React.forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(\n ({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n // 행 선은 헤더·바깥 테두리와 같은 토큰, 마지막 행은 바깥 테두리와 겹치지 않게 선 없음\n 'border-b border-sys-divider-subtle border-solid last:border-b-0 hover:bg-sys-table-hover active:bg-sys-table-press data-[state=selected]:bg-sys-table-select',\n className,\n )}\n {...props}\n />\n ),\n)\n\n/* -------------------------------------------------------------------------- */\n/* TableHead */\n/* -------------------------------------------------------------------------- */\n/** 숫자 열 폭. 표가 `table-fixed` 라 폭 없는 열은 모두 같은 폭을 받아 숫자 열이 비어 보였다(2026-10-27 홀드아웃 13 layout 지적 \"wide empty area\") —\n * 오른쪽 정렬 열은 숫자 열로 보고 이 폭으로 고정한다(AgGridTable 의 number 열 기본 폭과 같음). 다른 폭은 `className='w-…'`·`style` 이 이긴다 */\nexport const NUMBER_COLUMN_CLASS = 'w-[140px] whitespace-nowrap'\n\nconst tableHeadVariant = cva(null, {\n variants: {\n align: {\n left: 'text-left',\n center: 'text-center',\n right: `text-right ${NUMBER_COLUMN_CLASS}`,\n },\n },\n defaultVariants: {\n align: 'left',\n },\n})\n\nexport interface TableHeadProps\n extends\n Omit<React.ThHTMLAttributes<HTMLTableCellElement>, 'align'>,\n VariantProps<typeof tableHeadVariant> {}\n\n/** 표 머리글 칸. `align='right'`(또는 className `text-right`)인 열은 숫자 열로 보고 폭 140 으로 고정한다 — 글자 열이 남는 폭을 가진다.\n * 표 폭은 머리글 행이 정하므로(`table-fixed`) 숫자 열은 `align='right'` 를 머리글에 준다 */\nconst TableHead = React.forwardRef<HTMLTableCellElement, TableHeadProps>(\n ({ className, align, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(tableHeadVariant({ align: alignFromClassName(align, className) }), className)}\n {...props}\n />\n ),\n)\n\n/* -------------------------------------------------------------------------- */\n/* TableCell */\n/* -------------------------------------------------------------------------- */\nconst tableCellMasterVariant = cva('align-middle px-[12px]', {\n variants: {\n align: {\n left: '',\n center: '[&>_.c-wrap-main]:justify-center',\n // 머리글 없는 표는 첫 행이 열 폭을 정하므로 셀에도 숫자 열 폭을 준다\n right: `[&>_.c-wrap-main]:justify-end ${NUMBER_COLUMN_CLASS}`,\n },\n },\n defaultVariants: {\n align: 'left',\n },\n})\n\nexport interface TableCellProps\n extends\n Omit<React.ThHTMLAttributes<HTMLTableCellElement>, 'align'>,\n VariantProps<typeof tableCellMasterVariant> {\n desc?: string\n customElement?: string | JSX.Element\n}\n\n/** `className` 의 `text-right`/`text-center` 를 `align` 으로 읽는다 — 셀 안쪽이 flex 래퍼라 text-align 만으로는 글자가 안 움직이는데,\n * AI 가 TableHead 처럼 `text-right` 를 쓴다(2026-10-27 홀드아웃 11: 머리글은 오른쪽·값은 왼쪽, 심판 3건). `align` prop 이 있으면 prop 이 우선 */\nexport function alignFromClassName(\n align: TableCellProps['align'],\n className: string | undefined,\n): TableCellProps['align'] {\n if (align) return align\n if (/(^|\\s)text-right(\\s|$)/.test(className ?? '')) return 'right'\n if (/(^|\\s)text-center(\\s|$)/.test(className ?? '')) return 'center'\n return undefined\n}\n\nconst TableCell = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, children, desc, customElement, align, ...props }, ref) => {\n return (\n <td\n ref={ref}\n className={cn(\n tableCellMasterVariant({ align: alignFromClassName(align, className) }),\n className,\n )}\n {...props}\n >\n <div className='c-wrap-main flex gap-[12px] items-center w-full h-full text-base-regular text-sys-text-main'>\n {customElement && customElement}\n {React.isValidElement(children) ? (\n desc ? (\n // 엘리먼트 자식(Badge 등)도 desc 를 아래에 함께 보여준다\n <div className='min-w-0'>\n {children}\n <div className='c-text-overflow text-small-regular text-sys-text-subtler'>\n {desc}\n </div>\n </div>\n ) : (\n <>{children}</>\n )\n ) : (\n <div className='min-w-0'>\n <div className='c-text-overflow text-base-regular text-sys-text-main'>{children}</div>\n {desc && (\n <div className='c-text-overflow text-small-regular text-sys-text-subtler'>\n {desc}\n </div>\n )}\n </div>\n )}\n </div>\n </td>\n )\n },\n)\n\nfunction SortIcon({ direction = 'asc' }: { direction: false | 'asc' | 'desc' }): JSX.Element {\n // CSS 변수를 사용하여 다크모드 지원\n const activeColor = 'var(--color-secondary60)'\n const inactiveColor = 'var(--color-secondary30)'\n\n return (\n <svg width='22' height='24' viewBox='0 0 22 24' fill='none' xmlns='http://www.w3.org/2000/svg'>\n {direction ? (\n <>\n <path d='M11 5L6 10H16L11 5Z' fill={direction === 'asc' ? activeColor : inactiveColor} />\n <path\n d='M11 19L16 14L6 14L11 19Z'\n fill={direction === 'asc' ? inactiveColor : activeColor}\n />\n </>\n ) : (\n <>\n <path d='M11 5L6 10H16L11 5Z' fill={inactiveColor} />\n <path d='M11 19L16 14L6 14L11 19Z' fill={inactiveColor} />\n </>\n )}\n </svg>\n )\n}\n\nTable.displayName = 'Table'\nTableHeader.displayName = 'TableHeader'\nTableBody.displayName = 'TableBody'\nTablePagination.displayName = 'TablePagination'\nTableRow.displayName = 'TableRow'\nTableHead.displayName = 'TableHead'\nTableCell.displayName = 'TableCell'\n\nexport { Table, TableBody, TableCell, TableHead, TableHeader, TablePagination, TableRow, SortIcon }\n","import { cn } from '../../utils/cn'\n\nfunction Skeleton({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('animate-pulse rounded-md bg-secondary20', className)} {...props} />\n}\n\nexport { Skeleton }\nexport { default as TableSkeleton } from './table'\n","import { ColDef } from 'ag-grid-community'\n\nimport { cn } from '../../utils/cn'\nimport { Stack } from '../stack'\nimport { Skeleton } from '.'\n\n// seeded pseudo-random: 동일 row/col 조합에 대해 항상 같은 너비를 반환\nfunction seededWidth(row: number, col: number, min: number, max: number): number {\n const hash = ((row * 31 + col * 17 + 7) * 2654435761) >>> 0\n return min + (hash % (max - min + 1))\n}\n\ntype ColumnSizing = { width?: number; flex?: number; minWidth?: number }\n\nfunction buildColumns(columnDefs: ColDef[], selectionColumnWidth?: number): ColumnSizing[] {\n const cols: ColumnSizing[] = []\n\n if (selectionColumnWidth != null) {\n cols.push({ width: selectionColumnWidth })\n }\n\n for (const def of columnDefs) {\n cols.push({\n width: def.width as number | undefined,\n flex: def.flex as number | undefined,\n minWidth: def.minWidth as number | undefined,\n })\n }\n\n return cols\n}\n\nfunction getColStyle(col: ColumnSizing): React.CSSProperties {\n if (col.width != null) {\n return { width: col.width, flexShrink: 0 }\n }\n if (col.flex != null) {\n return { flex: col.flex, minWidth: col.minWidth }\n }\n return { flex: 1 }\n}\n\nexport default function TableSkeleton({\n columnDefs = [],\n rowLength = 3,\n rowHeight = 50,\n headerHeight = 40,\n selectionColumnWidth,\n}: {\n columnDefs?: ColDef[]\n rowLength?: number\n rowHeight?: number\n headerHeight?: number\n selectionColumnWidth?: number\n}) {\n const displayRowLength = rowLength && rowLength > 0 ? rowLength : 5\n const columns = buildColumns(columnDefs, selectionColumnWidth)\n\n return (\n <Stack direction='column' className='w-full'>\n {/* 헤더 행 */}\n <div\n className='flex items-center bg-sys-table-header-background border-b border-sys-divider-subtler rounded-[6px]'\n style={{ height: headerHeight + 1, paddingLeft: 10, paddingRight: 10 }}\n >\n {columns.map((col, colIndex) => (\n <div key={colIndex} className='flex items-center px-[6px]' style={getColStyle(col)}>\n <Skeleton\n className='h-[12px] rounded-[3px] !bg-grayscale-s20'\n style={{ width: `${seededWidth(0, colIndex, 40, 70)}%` }}\n />\n </div>\n ))}\n </div>\n\n {/* 데이터 행 */}\n {Array.from({ length: displayRowLength }).map((_, rowIndex) => (\n <div\n key={rowIndex}\n className={cn(\n 'flex items-center',\n rowIndex < displayRowLength - 1 && 'border-b border-sys-divider-subtler',\n )}\n style={{ height: rowHeight, paddingLeft: 10, paddingRight: 10 }}\n >\n {columns.map((col, colIndex) => (\n <div key={colIndex} className='flex items-center px-[6px]' style={getColStyle(col)}>\n <Skeleton\n className='h-[14px] rounded-[3px]'\n style={{ width: `${seededWidth(rowIndex + 1, colIndex, 40, 80)}%` }}\n />\n </div>\n ))}\n </div>\n ))}\n </Stack>\n )\n}\n","import { createContext, CSSProperties, ForwardedRef, PropsWithChildren } from 'react'\nimport { AgGridReact, AgGridReactProps } from 'ag-grid-react'\n\nexport type AgGridContextType = {\n containerHeight: number | string\n containerStyle?: CSSProperties\n isEmpty: boolean\n tableProps: AgGridReactProps\n ref: ForwardedRef<AgGridReact>\n}\n\nexport const AgGridContext = createContext<AgGridContextType>({\n containerHeight: 0,\n isEmpty: false,\n tableProps: {},\n ref: null,\n})\n\nexport function AgGridContextProvider({\n children,\n value,\n}: PropsWithChildren<{ value: AgGridContextType }>) {\n return <AgGridContext.Provider value={value}>{children}</AgGridContext.Provider>\n}\n","// 출처: https://github.com/ag-grid/ag-grid/blob/latest/community-modules/locale/src/ko-KR.ts\n\n/**\n * Please note:\n *\n * Translations are provided as an illustration only and are\n * not guaranteed to be accurate or error free.\n *\n * They are designed to show developers where to store their\n * chosen phrase or spelling variant in the target language.\n */\n\nexport const AG_GRID_LOCALE_KR = {\n // Set Filter\n selectAll: '(전체 선택)',\n selectAllSearchResults: '(검색 결과 모두 선택)',\n addCurrentSelectionToFilter: '현재 선택을 필터에 추가',\n searchOoo: '검색...',\n blanks: '(빈칸)',\n noMatches: '일치하는 항목이 없습니다',\n\n // Number Filter & Text Filter\n filterOoo: '필터...',\n equals: '같음',\n notEqual: '같지 않음',\n blank: '빈칸',\n notBlank: '비어 있지 않음',\n empty: '선택하세요',\n\n // Number Filter\n lessThan: '보다 작음',\n greaterThan: '보다 큼',\n lessThanOrEqual: '이하',\n greaterThanOrEqual: '이상',\n inRange: '사이',\n inRangeStart: '부터',\n inRangeEnd: '까지',\n\n // Text Filter\n contains: '포함',\n notContains: '포함하지 않음',\n startsWith: '시작',\n endsWith: '끝',\n\n // Date Filter\n dateFormatOoo: 'yyyy-mm-dd',\n before: '이전',\n after: '이후',\n\n // Filter Conditions\n andCondition: 'AND',\n orCondition: 'OR',\n\n // Filter Buttons\n applyFilter: '적용',\n resetFilter: '재설정',\n clearFilter: '지우기',\n cancelFilter: '취소',\n\n // Filter Titles\n textFilter: '텍스트 필터',\n numberFilter: '숫자 필터',\n dateFilter: '날짜 필터',\n setFilter: '세트 필터',\n\n // Group Column Filter\n groupFilterSelect: '필드를 선택하세요:',\n\n // Advanced Filter\n advancedFilterContains: '포함',\n advancedFilterNotContains: '포함하지 않음',\n advancedFilterTextEquals: '같음',\n advancedFilterTextNotEqual: '같지 않음',\n advancedFilterStartsWith: '시작이',\n advancedFilterEndsWith: '끝이',\n advancedFilterBlank: '비어 있음',\n advancedFilterNotBlank: '비어 있지 않음',\n advancedFilterEquals: '=',\n advancedFilterNotEqual: '!=',\n advancedFilterGreaterThan: '>',\n advancedFilterGreaterThanOrEqual: '>=',\n advancedFilterLessThan: '<',\n advancedFilterLessThanOrEqual: '<=',\n advancedFilterTrue: '참임',\n advancedFilterFalse: '거짓임',\n advancedFilterAnd: 'AND',\n advancedFilterOr: 'OR',\n advancedFilterApply: '적용',\n advancedFilterBuilder: '생성기',\n advancedFilterValidationMissingColumn: '열이 누락되었습니다',\n advancedFilterValidationMissingOption: '옵션이 누락되었습니다',\n advancedFilterValidationMissingValue: '값이 누락되었습니다',\n advancedFilterValidationInvalidColumn: '열을 찾을 수 없습니다',\n advancedFilterValidationInvalidOption: '옵션을 찾을 수 없습니다',\n advancedFilterValidationMissingQuote: '값에 끝나는 인용부호가 없습니다',\n advancedFilterValidationNotANumber: '값이 숫자가 아닙니다',\n advancedFilterValidationInvalidDate: '값이 유효한 날짜가 아닙니다',\n advancedFilterValidationMissingCondition: '조건이 누락되었습니다',\n advancedFilterValidationJoinOperatorMismatch: '조건 내의 연결 연산자는 동일해야 합니다',\n advancedFilterValidationInvalidJoinOperator: '연결 연산자를 찾을 수 없습니다',\n advancedFilterValidationMissingEndBracket: '끝 괄호가 누락되었습니다',\n advancedFilterValidationExtraEndBracket: '종결 괄호가 너무 많습니다',\n advancedFilterValidationMessage: '식에 오류가 있습니다. ${variable} - ${variable}.',\n advancedFilterValidationMessageAtEnd: '식에 오류가 있습니다. ${variable} 식의 끝에 있습니다.',\n advancedFilterBuilderTitle: '고급 필터',\n advancedFilterBuilderApply: '적용',\n advancedFilterBuilderCancel: '취소',\n advancedFilterBuilderAddButtonTooltip: '필터 또는 그룹 추가',\n advancedFilterBuilderRemoveButtonTooltip: '제거',\n advancedFilterBuilderMoveUpButtonTooltip: '위로 이동',\n advancedFilterBuilderMoveDownButtonTooltip: '아래로 이동',\n advancedFilterBuilderAddJoin: '그룹 추가',\n advancedFilterBuilderAddCondition: '필터 추가',\n advancedFilterBuilderSelectColumn: '열 선택',\n advancedFilterBuilderSelectOption: '옵션 선택',\n advancedFilterBuilderEnterValue: '값을 입력하세요...',\n advancedFilterBuilderValidationAlreadyApplied: '현재 필터가 이미 적용되었습니다.',\n advancedFilterBuilderValidationIncomplete: '모든 조건이 완료되지 않았습니다.',\n advancedFilterBuilderValidationSelectColumn: '열을 선택해야 합니다.',\n advancedFilterBuilderValidationSelectOption: '옵션을 선택해야 합니다.',\n advancedFilterBuilderValidationEnterValue: '값을 입력해야 합니다.',\n\n // Side Bar\n columns: '열',\n filters: '필터',\n\n // columns tool panel\n pivotMode: '피벗 모드',\n groups: '행 그룹',\n rowGroupColumnsEmptyMessage: '여기로 드래그하여 행 그룹 설정',\n values: '값',\n valueColumnsEmptyMessage: '여기로 드래그하여 집계',\n pivots: '열 레이블',\n pivotColumnsEmptyMessage: '여기로 드래그하여 열 레이블 설정',\n\n // Header of the Default Group Column\n group: '그룹',\n\n // Row Drag\n rowDragRow: '행',\n rowDragRows: '행들',\n\n // Other\n loadingOoo: '로딩 중...',\n loadingError: '오류',\n noRowsToShow: '표시할 행이 없습니다',\n enabled: '사용 중',\n\n // Menu\n pinColumn: '열 고정',\n pinLeft: '왼쪽에 고정',\n pinRight: '오른쪽에 고정',\n noPin: '고정 없음',\n valueAggregation: '값 집계',\n noAggregation: '없음',\n autosizeThisColumn: '이 열 자동 크기 조정',\n autosizeAllColumns: '모든 열 자동 크기 조정',\n groupBy: '그룹화 기준',\n ungroupBy: '그룹 해제 기준',\n ungroupAll: '모든 그룹 해제',\n addToValues: '${variable} 값을 추가',\n removeFromValues: '${variable} 값을 제거',\n addToLabels: '${variable} 레이블에 추가',\n removeFromLabels: '${variable} 레이블에서 제거',\n resetColumns: '열 재설정',\n expandAll: '모든 행 그룹 확장',\n collapseAll: '모든 행 그룹 닫기',\n copy: '복사',\n ctrlC: 'Ctrl+C',\n ctrlX: 'Ctrl+X',\n copyWithHeaders: '머리글과 함께 복사',\n copyWithGroupHeaders: '그룹 머리글과 함께 복사',\n cut: '잘라내기',\n paste: '붙여넣기',\n ctrlV: 'Ctrl+V',\n export: '내보내기',\n csvExport: 'CSV 내보내기',\n excelExport: 'Excel 내보내기',\n columnFilter: '열 필터',\n columnChooser: '열 선택',\n chooseColumns: '열 선택',\n sortAscending: '오름차순 정렬',\n sortDescending: '내림차순 정렬',\n sortUnSort: '정렬 해제',\n\n // Enterprise Menu Aggregation and Status Bar\n sum: '합계',\n first: '첫 번째',\n last: '마지막',\n min: '최소',\n max: '최대',\n none: '없음',\n count: '개수',\n avg: '평균',\n filteredRows: '필터된 행',\n selectedRows: '선택된 행',\n totalRows: '총 행 수',\n totalAndFilteredRows: '행',\n more: '더 보기',\n to: '에서',\n of: '의',\n page: '페이지',\n pageLastRowUnknown: '?',\n nextPage: '다음 페이지',\n lastPage: '마지막 페이지',\n firstPage: '첫 페이지',\n previousPage: '이전 페이지',\n pageSizeSelectorLabel: '페이지 크기:',\n footerTotal: '총계',\n statusBarLastRowUnknown: '?',\n\n // Pivoting\n pivotColumnGroupTotals: '총합계',\n\n // Enterprise Menu (Charts)\n pivotChartAndPivotMode: '피벗 차트 & 피벗 모드',\n pivotChart: '피벗 차트',\n chartRange: '차트 범위',\n columnChart: '컬럼',\n groupedColumn: '그룹화',\n stackedColumn: '스택',\n normalizedColumn: '100% 스택',\n barChart: '막대',\n groupedBar: '그룹화',\n stackedBar: '스택',\n normalizedBar: '100% 스택',\n pieChart: '파이',\n pie: '파이',\n donut: '도넛',\n lineChart: '‘꺾은선형’',\n stackedLine: '‘누적’',\n normalizedLine: '‘100% 누적’',\n xyChart: 'X Y (산점도)',\n scatter: '산점도',\n bubble: '버블',\n areaChart: '영역',\n area: '영역',\n stackedArea: '스택 영역',\n normalizedArea: '100% 스택 영역',\n histogramChart: '히스토그램',\n polarChart: '폴라',\n radarLine: '레이더 라인',\n radarArea: '레이더 영역',\n nightingale: '나이팅게일',\n radialColumn: '방사형 컬럼',\n radialBar: '방사형 막대',\n statisticalChart: '통계',\n boxPlot: '상자 그림',\n rangeBar: '범위 막대',\n rangeArea: '범위 영역',\n hierarchicalChart: '계층적',\n treemap: '트리맵',\n sunburst: '선버스트',\n specializedChart: '특수',\n waterfall: '폭포',\n heatmap: '히트맵',\n combinationChart: '복합',\n columnLineCombo: '컬럼 & 라인',\n AreaColumnCombo: '영역 & 컬럼',\n\n // Charts\n pivotChartTitle: '피벗 차트',\n rangeChartTitle: '범위 차트',\n settings: '차트',\n data: '설정',\n format: '맞춤 설정',\n categories: '카테고리',\n defaultCategory: '(없음)',\n series: '시리즈',\n switchCategorySeries: '카테고리 / 시리즈 전환',\n categoryValues: '카테고리 값',\n seriesLabels: '시리즈 라벨',\n aggregate: '합산',\n xyValues: 'X Y 값들',\n paired: '쌍 모드',\n axis: '축',\n xAxis: '수평 축',\n yAxis: '수직 축',\n polarAxis: '폴라 축',\n radiusAxis: '반경 축',\n navigator: '네비게이터',\n zoom: '줌',\n animation: '애니메이션',\n crosshair: '크로스헤어',\n color: '색상',\n thickness: '두께',\n preferredLength: '선호 길이',\n xType: 'X 유형',\n axisType: '축 유형',\n automatic: '자동',\n category: '카테고리',\n number: '숫자',\n time: '시간',\n timeFormat: '시간 형식',\n autoRotate: '자동 회전',\n labelRotation: '회전',\n circle: '원',\n polygon: '다각형',\n square: '사각형',\n cross: '십자',\n diamond: '다이아몬드',\n plus: '플러스',\n triangle: '삼각형',\n heart: '하트',\n orientation: '방향',\n fixed: '고정',\n parallel: '병렬',\n perpendicular: '수직',\n radiusAxisPosition: '위치',\n ticks: '틱',\n gridLines: '격자 라인',\n width: '너비',\n height: '높이',\n length: '길이',\n padding: '패딩',\n spacing: '간격',\n chartStyle: '차트 스타일',\n title: '제목',\n chartTitles: '제목들',\n chartTitle: '차트 제목',\n chartSubtitle: '부제목',\n horizontalAxisTitle: '수평 축 제목',\n verticalAxisTitle: '수직 축 제목',\n polarAxisTitle: '폴라 축 제목',\n titlePlaceholder: '차트 제목',\n background: '배경',\n font: '글꼴',\n weight: '굵기',\n top: '위',\n right: '오른쪽',\n bottom: '아래',\n left: '왼쪽',\n labels: '라벨',\n calloutLabels: '콜아웃 라벨',\n sectorLabels: '섹터 라벨',\n positionRatio: '위치 비율',\n size: '크기',\n shape: '형태',\n minSize: '최소 크기',\n maxSize: '최대 크기',\n legend: '범례',\n position: '위치',\n markerSize: '마커 크기',\n markerStroke: '마커 스트로크',\n markerPadding: '마커 패딩',\n itemSpacing: '아이템 간격',\n itemPaddingX: '아이템 패딩 X',\n itemPaddingY: '아이템 패딩 Y',\n layoutHorizontalSpacing: '수평 간격',\n layoutVerticalSpacing: '수직 간격',\n strokeWidth: '스트로크 두께',\n offset: '오프셋',\n offsets: '오프셋들',\n tooltips: '툴팁',\n callout: '콜아웃',\n markers: '마커',\n shadow: '그림자',\n blur: '블러',\n xOffset: 'X 오프셋',\n yOffset: 'Y 오프셋',\n lineWidth: '라인 너비',\n lineDash: '라인 대시',\n lineDashOffset: '대시 오프셋',\n scrollingZoom: '스크롤',\n scrollingStep: '스크롤 스텝',\n selectingZoom: '선택',\n durationMillis: '지속 시간 (ms)',\n crosshairLabel: '라벨',\n crosshairSnap: '노드에 스냅',\n normal: '보통',\n bold: '굵게',\n italic: '기울임꼴',\n boldItalic: '굵게 기울임꼴',\n predefined: '사전 정의된',\n fillOpacity: '채우기 불투명도',\n strokeColor: '라인 색상',\n strokeOpacity: '라인 불투명도',\n miniChart: '미니 차트',\n histogramBinCount: '빈 수',\n connectorLine: '연결 라인',\n seriesItems: '시리즈 항목',\n seriesItemType: '항목 유형',\n seriesItemPositive: '양수',\n seriesItemNegative: '음수',\n seriesItemLabels: '항목 라벨',\n columnGroup: '열',\n barGroup: '막대',\n pieGroup: '파이',\n lineGroup: '라인',\n scatterGroup: 'X Y (산점도)',\n areaGroup: '면적',\n polarGroup: '폴라',\n statisticalGroup: '통계',\n hierarchicalGroup: '계층',\n specializedGroup: '전문',\n combinationGroup: '결합',\n groupedColumnTooltip: '그룹화',\n stackedColumnTooltip: '스택',\n normalizedColumnTooltip: '100% 스택',\n groupedBarTooltip: '그룹화',\n stackedBarTooltip: '스택',\n normalizedBarTooltip: '100% 스택',\n pieTooltip: '파이',\n donutTooltip: '도넛',\n lineTooltip: '라인',\n stackedLineTooltip: '스택',\n normalizedLineTooltip: '100% 스택',\n groupedAreaTooltip: '면적',\n stackedAreaTooltip: '스택',\n normalizedAreaTooltip: '100% 스택',\n scatterTooltip: '산점도',\n bubbleTooltip: '버블',\n histogramTooltip: '히스토그램',\n radialColumnTooltip: '반경 열',\n radialBarTooltip: '반경 막대',\n radarLineTooltip: '레이더 라인',\n radarAreaTooltip: '레이더 면적',\n nightingaleTooltip: '나이팅게일',\n rangeBarTooltip: '범위 막대',\n rangeAreaTooltip: '범위 면적',\n boxPlotTooltip: '박스 플롯',\n treemapTooltip: '트리맵',\n sunburstTooltip: '선버스트',\n waterfallTooltip: '폭포',\n heatmapTooltip: '히트맵',\n columnLineComboTooltip: '열 & 라인',\n areaColumnComboTooltip: '면적 & 열',\n customComboTooltip: '사용자 정의 결합',\n innerRadius: '내부 반경',\n startAngle: '시작 각도',\n endAngle: '끝 각도',\n reverseDirection: '반대 방향',\n groupPadding: '그룹 패딩',\n seriesPadding: '시리즈 패딩',\n tile: '타일',\n whisker: '수염',\n cap: '모자',\n capLengthRatio: '길이 비율',\n labelPlacement: '라벨 배치',\n inside: '내부',\n outside: '외부',\n noDataToChart: '차트화 할 수 있는 데이터가 없습니다.',\n pivotChartRequiresPivotMode: '피벗 차트는 피벗 모드가 활성화 되어야 합니다.',\n chartSettingsToolbarTooltip: '메뉴',\n chartLinkToolbarTooltip: '그리드에 링크됨',\n chartUnlinkToolbarTooltip: '그리드에서 링크 해제됨',\n chartDownloadToolbarTooltip: '차트 다운로드',\n chartMenuToolbarTooltip: '메뉴',\n chartEdit: '차트 편집',\n chartAdvancedSettings: '고급 설정',\n chartLink: '그리드에 링크',\n chartUnlink: '그리드에서 링크 해제',\n chartDownload: '차트 다운로드',\n histogramFrequency: '빈도',\n seriesChartType: '시리즈 차트 유형',\n seriesType: '시리즈 유형',\n secondaryAxis: '보조 축',\n seriesAdd: '시리즈 추가',\n categoryAdd: '카테고리 추가',\n bar: '막대',\n column: '열',\n histogram: '히스토그램',\n advancedSettings: '고급 설정',\n direction: '방향',\n horizontal: '수평',\n vertical: '수직',\n seriesGroupType: '그룹 유형',\n groupedSeriesGroupType: '그룹화',\n stackedSeriesGroupType: '스택',\n normalizedSeriesGroupType: '100% 스택',\n legendEnabled: '활성화됨',\n invalidColor: '색상 값이 유효하지 않습니다',\n groupedColumnFull: '그룹화된 열',\n stackedColumnFull: '스택된 열',\n normalizedColumnFull: '100% 스택된 열',\n groupedBarFull: '그룹화된 막대',\n stackedBarFull: '스택된 막대',\n normalizedBarFull: '100% 스택된 막대',\n stackedAreaFull: '스택된 면적',\n normalizedAreaFull: '100% 스택된 면적',\n customCombo: '사용자 정의 결합',\n funnel: '깔때기',\n coneFunnel: '원뿔 깔때기',\n pyramid: '피라미드',\n funnelGroup: '깔때기',\n funnelTooltip: '깔때기',\n coneFunnelTooltip: '원뿔 깔때기',\n pyramidTooltip: '피라미드',\n dropOff: '이탈',\n stageLabels: '단계 레이블',\n reverse: '역방향',\n\n // ARIA\n ariaAdvancedFilterBuilderItem: '${variable}. 레벨 ${variable}. 편집하려면 ENTER를 누르세요',\n ariaAdvancedFilterBuilderItemValidation:\n '${variable}. 레벨 ${variable}. ${variable} 편집하려면 ENTER를 누르세요',\n ariaAdvancedFilterBuilderList: '고급 필터 빌더 목록',\n ariaAdvancedFilterBuilderFilterItem: '필터 조건',\n ariaAdvancedFilterBuilderGroupItem: '필터 그룹',\n ariaAdvancedFilterBuilderColumn: '열',\n ariaAdvancedFilterBuilderOption: '옵션',\n ariaAdvancedFilterBuilderValueP: '값',\n ariaAdvancedFilterBuilderJoinOperator: '조합 연산자',\n ariaAdvancedFilterInput: '고급 필터 입력',\n ariaChecked: '선택됨',\n ariaColumn: '열',\n ariaColumnGroup: '열 그룹',\n ariaColumnFiltered: '열 필터링됨',\n ariaColumnSelectAll: '모든 열 가시성 전환',\n ariaDateFilterInput: '날짜 필터 입력',\n ariaDefaultListName: '목록',\n ariaFilterColumnsInput: '열 필터 입력',\n ariaFilterFromValue: '값에서 필터',\n ariaFilterInput: '필터 입력',\n ariaFilterList: '필터 목록',\n ariaFilterToValue: '값까지 필터',\n ariaFilterValue: '필터 값',\n ariaFilterMenuOpen: '필터 메뉴 열기',\n ariaFilteringOperator: '필터링 연산자',\n ariaHidden: '숨김',\n ariaIndeterminate: '불확정',\n ariaInputEditor: '입력 에디터',\n ariaMenuColumn: '열 메뉴를 열려면 ALT 아래를 누르세요',\n ariaFilterColumn: '필터를 열려면 CTRL ENTER를 누르세요',\n ariaRowDeselect: '이 행을 선택 해제하려면 SPACE를 누르세요',\n ariaHeaderSelection: '헤더 선택이 있는 열',\n ariaSelectAllCells: '스페이스바를 눌러 모든 셀 선택',\n ariaRowSelectAll: '모든 행 선택 전환을 위해 SPACE를 누르세요',\n ariaRowToggleSelection: '행 선택을 전환하려면 SPACE를 누르세요',\n ariaRowSelect: '이 행을 선택하려면 SPACE를 누르세요',\n ariaRowSelectionDisabled: '이 행의 행 선택이 비활성화되었습니다',\n ariaSearch: '검색',\n ariaSortableColumn: '정렬하려면 ENTER를 누르세요',\n ariaToggleVisibility: '가시성을 전환하려면 SPACE를 누르세요',\n ariaToggleCellValue: '셀 값을 전환하려면 SPACE를 누르세요',\n ariaUnchecked: '선택 해제됨',\n ariaVisible: '보이는',\n ariaSearchFilterValues: '필터 값 검색',\n ariaPageSizeSelectorLabel: '페이지 크기',\n ariaChartMenuClose: '차트 편집 메뉴 닫기',\n ariaChartSelected: '선택됨',\n ariaSkeletonCellLoadingFailed: '행 로드 실패',\n ariaSkeletonCellLoading: '행 데이터 로드 중',\n\n // ARIA Labels for Drop Zones\n ariaRowGroupDropZonePanelLabel: '행 그룹',\n ariaValuesDropZonePanelLabel: '값',\n ariaPivotDropZonePanelLabel: '열 레이블',\n ariaDropZoneColumnComponentDescription: '제거하려면 DELETE를 누르세요',\n ariaDropZoneColumnValueItemDescription: '집계 유형을 변경하려면 ENTER를 누르세요',\n ariaDropZoneColumnGroupItemDescription: '정렬하려면 ENTER를 누르세요',\n\n // used for aggregate drop zone, format: {aggregation}{ariaDropZoneColumnComponentAggFuncSeparator}{column name}\n ariaDropZoneColumnComponentAggFuncSeparator: ' 의 ',\n ariaDropZoneColumnComponentSortAscending: '오름차순',\n ariaDropZoneColumnComponentSortDescending: '내림차순',\n ariaLabelDialog: '대화상자',\n ariaLabelColumnMenu: '컬럼 메뉴',\n ariaLabelColumnFilter: '컬럼 필터',\n ariaLabelCellEditor: '셀 편집기',\n ariaLabelSelectField: '필드 선택',\n ariaLabelLoadingContextMenu: '로드 중인 컨텍스트 메뉴',\n\n // aria labels for rich select\n ariaLabelRichSelectField: '리치 선택 필드',\n ariaLabelRichSelectToggleSelection: '선택을 토글하려면 SPACE를 누르세요',\n ariaLabelRichSelectDeselectAllItems: '모든 항목 선택 해제를 위해 DELETE를 누르세요',\n ariaLabelRichSelectDeleteSelection: '항목 선택 해제를 위해 DELETE를 누르세요',\n ariaLabelTooltip: '툴팁',\n ariaLabelContextMenu: '컨텍스트 메뉴',\n ariaLabelSubMenu: '하위 메뉴',\n ariaLabelAggregationFunction: '집계 함수',\n ariaLabelAdvancedFilterAutocomplete: '고급 필터 자동 완성',\n ariaLabelAdvancedFilterBuilderAddField: '고급 필터 빌더 필드 추가',\n ariaLabelAdvancedFilterBuilderColumnSelectField: '고급 필터 빌더 칼럼 선택 필드',\n ariaLabelAdvancedFilterBuilderOptionSelectField: '고급 필터 빌더 옵션 선택 필드',\n ariaLabelAdvancedFilterBuilderJoinSelectField: '고급 필터 빌더 조인 연산자 선택 필드',\n\n // ARIA Labels for the Side Bar\n ariaColumnPanelList: '열 목록',\n ariaFilterPanelList: '필터 목록',\n\n // Number Format (Status Bar, Pagination Panel)\n thousandSeparator: ',',\n decimalSeparator: '.',\n\n // Data types\n true: 'True',\n false: 'False',\n invalidDate: '유효하지 않은 날짜',\n invalidNumber: '유효하지 않은 숫자',\n january: '1월',\n february: '2월',\n march: '3월',\n april: '4월',\n may: '5월',\n june: '6월',\n july: '7월',\n august: '8월',\n september: '9월',\n october: '10월',\n november: '11월',\n december: '12월',\n\n // Time formats\n timeFormatSlashesDDMMYYYY: 'DD/MM/YYYY',\n timeFormatSlashesMMDDYYYY: 'MM/DD/YYYY',\n timeFormatSlashesDDMMYY: 'DD/MM/YY',\n timeFormatSlashesMMDDYY: 'MM/DD/YY',\n timeFormatDotsDDMYY: 'DD.MM.YY',\n timeFormatDotsMDDYY: 'M.DD.YY',\n timeFormatDashesYYYYMMDD: 'YYYY-MM-DD',\n timeFormatSpacesDDMMMMYYYY: 'DD MMMM YYYY',\n timeFormatHHMMSS: 'HH:MM:SS',\n timeFormatHHMMSSAmPm: 'HH:MM:SS 오전/오후',\n}\n","import { SortChangedEvent } from 'ag-grid-community'\n\n/** 정렬 컬럼 상태 반환\n * 사용 예시\n * onSortChanged={(e) => {\n * const value = getSortedColumnState(e)\n * console.log(value.value) // -name\n * }}\n *\n * 반환 값 예시\n * {\n * value: 'name' | '-name'\n * }\n */\nexport default function getSortedColumnState(\n event: SortChangedEvent<any, any>,\n defaultSort?: string,\n): { value: string } {\n const columnStateCol = event.api.getColumnState().find((s) => s.sort != null)\n\n // 정렬 이벤트가 없는 경우 기본 정렬 값 반환\n if (!columnStateCol) return { value: defaultSort || '' }\n\n return {\n ...columnStateCol,\n value: columnStateCol?.sort === 'asc' ? `-${columnStateCol.colId}` : columnStateCol?.colId,\n }\n}\n","import {\n CSSProperties,\n forwardRef,\n PropsWithChildren,\n type ReactNode,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react'\nimport {\n AllCommunityModule,\n CellKeyDownEvent,\n ClientSideRowModelModule,\n ColDef,\n FullWidthCellKeyDownEvent,\n ICellRendererParams,\n IHeaderParams,\n ModuleRegistry,\n RowClickedEvent,\n themeQuartz,\n} from 'ag-grid-community'\nimport { AgGridReact, AgGridReactProps } from 'ag-grid-react'\n\nimport { cn } from '../../utils/cn'\nimport { Checkbox } from '../checkbox'\nimport TableSkeleton from '../skeleton/table'\nimport { AgGridContext, AgGridContextProvider, AgGridContextType } from './context'\nimport { AG_GRID_LOCALE_KR } from './localeText'\n\n// import 'ag-grid-community/styles/ag-grid.css'\nimport './style.css'\n\nModuleRegistry.registerModules([AllCommunityModule, ClientSideRowModelModule])\n\nexport type AgGridTableType = AgGridReactProps & {\n containerStyle?: CSSProperties\n noRowsOverlayComponentContainerStyle?: CSSProperties\n}\n\nconst init = {\n containerStyle: {\n height: 300,\n },\n rowHeight: 50,\n headerHeight: 40,\n}\n\nconst defaultAgGridTheme = themeQuartz.withParams({\n fontFamily: 'var(--font-sans)',\n headerFontFamily: 'var(--font-sans)',\n cellFontFamily: 'var(--font-sans)',\n headerFontSize: 'var(--text-h6)',\n headerFontWeight: 'var(--text-h6--font-weight)',\n backgroundColor: 'var(--color-sys-background)',\n foregroundColor: 'var(--color-sys-foreground)',\n headerBackgroundColor: 'var(--color-sys-table-header-background)',\n headerTextColor: 'var(--color-sys-table-header-text)',\n borderColor: 'var(--color-sys-table-row-border)',\n rowHoverColor: 'var(--color-sys-table-hover)',\n selectedRowBackgroundColor: 'var(--color-sys-table-select)',\n rowBorder: 'solid 1px var(--color-sys-table-row-border)',\n columnBorder: false,\n headerColumnBorder: false,\n\n spacing: 8,\n})\n\nfunction sanitizeAgGridClassName(className?: string, theme?: any) {\n if (!className || theme === 'legacy') return className\n return className\n .split(/\\s+/)\n .filter((token) => token && !token.startsWith('ag-theme-'))\n .join(' ')\n}\n\n/**\n * ag-grid 기반 데이터 표. 목록 화면의 본 표에 쓴다.\n *\n * 언제 쓰나: 서버 페이징 목록, 정렬·컬럼 숨김·행 선택·셀 렌더러가 필요한 표. `loading` 이면 TableSkeleton, 0건이면 `noRowsOverlayComponent`. 주 식별자 열(보통 이름)에는 `type: 'primary'` 를 주면 굵게 강조되고 클릭 가능한 행에서 hover 시 밑줄이 생긴다. `sortable: true` 로 명시한 열은 정렬 전에도 정렬 아이콘이 보인다(그 열에 `unSortIcon: false` 를 주면 끔. 2026-10-16 다시 켬 — 원문 심판이 \"정렬 가능 표시 없음\" 을 반복 감점). 숫자 열(건수·크기·비율·시간)은 `type: 'number'` — 오른쪽 정렬·숫자 폭이고, width·flex 를 안 주면 폭 140(ag-grid 기본 200 은 비어 보인다). 숫자 열에 `flex` 를 주지 않는다.\n * 언제 안 쓰나: 수십 행 이하의 단순 나열(→ Table), 키-값 표(→ MetaItem), 편집 가능한 파라미터 표(→ ParameterTable).\n * 대신/함께: 목록 화면 전체 골격은 `@t3q-ui/design-system/patterns` 의 ListPage 가 이 표를 포함한다. 정렬 값은 `getSortedColumnState` 로 읽는다. `onRowClicked` 를 주면 포커스된 셀에서 Enter 로도 호출된다(키보드 상세 진입). 열 제목이 들어가는 최소 폭은 표가 보정하고(`width: 110` 같은 좁은 폭을 줘도 \"크기(M…\" 로 잘리지 않음) 넘치는 셀 글자는 말줄임표로 끝난다. 보조 정보(id·이미지·경로·설명)는 열을 늘리지 말고 `TwoLineCellRenderer`(`cellRendererParams.secondaryField`)로 이름 아래 줄에 — ListPage 는 `secondaryField` 한 줄로 된다. 이름 열만 `flex: 1, minWidth: 200`(남는 폭을 가진다 — maxWidth 를 주면 표 오른쪽이 빈다), 숫자·날짜 열은 `width` 로.\n */\nconst AgGridTable = forwardRef<AgGridReact, AgGridTableType>(function AgGridTable(\n { containerStyle, noRowsOverlayComponentContainerStyle, ...tableProps },\n ref,\n) {\n const isEmpty = useMemo(() => {\n return tableProps.rowData?.length === 0\n }, [tableProps.rowData])\n\n // domLayout: 'autoHeight' 일 때 높이 자동 조절\n const containerHeight = useMemo(() => {\n try {\n if (tableProps.noRowsOverlayComponent && isEmpty) {\n return noRowsOverlayComponentContainerStyle?.height || init.containerStyle.height\n } else if (tableProps.domLayout === 'autoHeight') {\n return 'auto'\n } else {\n return containerStyle?.height || init.containerStyle.height\n }\n } catch {\n return init.containerStyle.height\n }\n }, [containerStyle, isEmpty, noRowsOverlayComponentContainerStyle, tableProps])\n\n // ref 변경으로 인한 context 리렌더링 최소화를 위한 메모이제이션\n const contextValue = useMemo(\n () => ({\n containerHeight,\n containerStyle,\n isEmpty,\n tableProps,\n ref,\n }),\n [containerHeight, containerStyle, isEmpty, tableProps, ref],\n )\n\n if (tableProps.loading) {\n return (\n <TableSkeleton\n columnDefs={tableProps.columnDefs as ColDef[] | undefined}\n rowLength={tableProps.rowData?.length}\n rowHeight={tableProps.rowHeight ?? init.rowHeight}\n headerHeight={tableProps.headerHeight ?? init.headerHeight}\n selectionColumnWidth={\n tableProps.rowSelection\n ? ((tableProps.selectionColumnDef?.width as number | undefined) ?? 42)\n : undefined\n }\n />\n )\n }\n return (\n <AgGridContextProvider value={contextValue}>\n <AgGridContainer>\n <AgGridContent />\n </AgGridContainer>\n </AgGridContextProvider>\n )\n})\n\nfunction AgGridContent() {\n const { isEmpty, tableProps, ref } = useContext<AgGridContextType>(AgGridContext)\n\n const className = sanitizeAgGridClassName(tableProps.className, tableProps.theme)\n const theme = tableProps.theme ?? defaultAgGridTheme\n\n // tableProps.defaultColDef가 {…tableProps} 스프레드로 cellStyle을 덮어쓰는 버그 방지:\n // defaultColDef를 분리 추출 후 cellStyle을 딥 머지\n const {\n defaultColDef: userDefaultColDef,\n columnTypes: userColumnTypes,\n onCellKeyDown,\n onRowClicked,\n ...restTableProps\n } = tableProps\n // ag-grid 는 rowClicked 를 마우스에서만 발화한다. 포커스된 셀에서 Enter = 행 활성화(키보드로 상세 진입).\n // target 이 셀 자신일 때만 — 셀 안의 버튼·편집기 input 에서 누른 Enter 는 그쪽 동작만 (이중 실행 방지)\n const handleCellKeyDown = (e: CellKeyDownEvent | FullWidthCellKeyDownEvent) => {\n onCellKeyDown?.(e)\n const keyEvent = e.event as KeyboardEvent | null | undefined\n if (!onRowClicked || keyEvent?.key !== 'Enter') return\n const target = keyEvent.target as HTMLElement | null\n if (!target?.matches('.ag-cell, .ag-full-width-row')) return\n onRowClicked({ ...e, type: 'rowClicked' } as RowClickedEvent)\n }\n const mergedDefaultColDef = {\n ...userDefaultColDef,\n cellStyle: {\n display: 'flex',\n alignItems: 'center',\n ...userDefaultColDef?.cellStyle,\n },\n }\n // 정렬 가능하다고 **명시한** 열(sortable: true)은 정렬 전에도 아이콘을 보여 \"정렬할 수 있다\" 를 드러낸다 (1.25.0~1.31.1 과 같음).\n // 2026-10-13 UIClip 진단(12-A)으로 되돌렸던 것을 2026-10-16 다시 켠다 — UIClip 은 폐기했고, 원문 심판(명세 2.6)은 \"정렬 가능 표시 없음\" 을\n // 홀드아웃 3~6 에서 반복 감점했다(docs/decisions/ai-judge-scope.md, 이슈 45). 모든 열에 켜면 좁은 숫자 열 제목이 잘리므로(1.25.0 회귀)\n // 명시한 열만. 열이 직접 unSortIcon 을 정했으면 그대로\n // 열 제목이 들어가는 최소 폭 보정(2026-10-18 13차) — 한 줄 판 12차에서 E 가 준 좁은 width 로 숫자 열 제목이 잘렸다\n // 열 타입 'primary' = 주 식별자 열(보통 이름). 본문 색·굵게로 위계를 주고, 클릭 가능한 행에서 hover 시 밑줄\n // 열 타입 'number' = 숫자 열(크기·건수·비율·시간). 셀·제목을 오른쪽 정렬하고 숫자 폭을 고정(tabular-nums) — ag-grid 의 numericColumn 과\n // 같은 클래스를 쓰지만, 우리 defaultColDef.cellStyle(display:flex)이 text-align 을 무력화하므로 style.css 가 justify-content 로 정렬한다\n const mergedColumnTypes = useMemo(\n () => ({\n primary: { cellClass: 'ag-cell-primary' },\n number: { headerClass: 'ag-right-aligned-header', cellClass: 'ag-right-aligned-cell' },\n ...userColumnTypes,\n }),\n [userColumnTypes],\n )\n // 열 타입의 cellClass/headerClass 는 열이 같은 키를 주면 통째로 덮인다(ag-grid 규칙) → 열이 cellClass 를 더해도 타입 클래스를 잃지 않게 합친다\n // (2026-10-27 홀드아웃 11: 합계 열 type 'number' + cellClass 'font-semibold' 로 오른쪽 정렬이 빠짐, 심판 3건)\n const columnDefs = useMemo(\n () =>\n withTypeClasses(\n withHeaderMinWidth(\n withSortIconOffset(\n withExplicitSortIcons(withNumberColumnWidth(withFlexFill(restTableProps.columnDefs))),\n ),\n ),\n mergedColumnTypes,\n ),\n [restTableProps.columnDefs, mergedColumnTypes],\n )\n\n if (tableProps.noRowsOverlayComponent && isEmpty) {\n return (\n <AgGridReact\n headerHeight={init.headerHeight}\n defaultColDef={mergedDefaultColDef}\n columnTypes={mergedColumnTypes}\n ref={ref}\n {...restTableProps}\n columnDefs={columnDefs}\n onRowClicked={onRowClicked}\n onCellKeyDown={handleCellKeyDown}\n theme={theme}\n className={className}\n domLayout='normal'\n />\n )\n }\n\n return (\n <AgGridReact\n headerHeight={init.headerHeight}\n rowHeight={init.rowHeight}\n defaultColDef={mergedDefaultColDef}\n columnTypes={mergedColumnTypes}\n ref={ref}\n animateRows={false} // 정렬 시 적용되는 애니메이션 제거\n localeText={AG_GRID_LOCALE_KR}\n {...restTableProps}\n columnDefs={columnDefs}\n onRowClicked={onRowClicked}\n onCellKeyDown={handleCellKeyDown}\n theme={theme}\n className={className}\n rowClass={`${onRowClicked ? 'ag-row-clickable' : ''} ${tableProps.rowClass || ''}`}\n selectionColumnDef={{\n ...tableProps.selectionColumnDef,\n headerComponent: tableProps.selectionColumnDef?.headerComponent ?? HeaderCheckboxRenderer,\n cellRenderer: tableProps.selectionColumnDef?.cellRenderer ?? RowCheckboxRenderer,\n cellClass: cn(\n '[&_.ag-selection-checkbox]:!hidden',\n tableProps.selectionColumnDef?.cellClass,\n '!flex items-center',\n ),\n headerClass: cn('[&_.ag-checkbox]:!hidden', tableProps.selectionColumnDef?.headerClass),\n }}\n />\n )\n}\n\nfunction AgGridContainer({ children }: PropsWithChildren) {\n const { containerHeight, containerStyle, isEmpty } = useContext<AgGridContextType>(AgGridContext)\n\n return (\n <div\n className={cn(\n 'ag-grid-container',\n 'w-full h-[100px]',\n !isEmpty ? 'ag-grid-container-auto-height-nonEmpty' : '',\n )}\n data-is-empty={isEmpty ? 'true' : 'false'}\n style={\n {\n width: '100%',\n '--ag-font-family': 'var(--font-sans)',\n height: containerHeight,\n ...containerStyle,\n } as React.CSSProperties\n }\n >\n {children}\n </div>\n )\n}\n\n// 헤더 체크박스 렌더러\nfunction HeaderCheckboxRenderer(props: IHeaderParams) {\n const [selectedCount, setSelectedCount] = useState(props.api.getSelectedRows().length)\n const totalCount = props.api.getDisplayedRowCount()\n\n useEffect(() => {\n const handler = () => setSelectedCount(props.api.getSelectedRows().length)\n props.api.addEventListener('selectionChanged', handler)\n return () => props.api.removeEventListener('selectionChanged', handler)\n }, [props.api])\n\n const indeterminate = totalCount > 0 && selectedCount > 0 && selectedCount < totalCount\n\n const handleChange = (newChecked: boolean) => {\n if (indeterminate) {\n props.api.selectAll('filtered')\n return\n }\n if (newChecked) {\n props.api.selectAll()\n } else {\n props.api.deselectAll()\n }\n }\n\n return (\n <Checkbox\n checked={selectedCount > 0}\n onCheckedChange={handleChange}\n indeterminate={indeterminate}\n aria-label='전체 행 선택'\n />\n )\n}\n\n// 행 체크박스 렌더러\nfunction RowCheckboxRenderer(params: ICellRendererParams) {\n const [checked, setChecked] = useState(!!params.node.isSelected())\n\n useEffect(() => {\n const handler = () => setChecked(!!params.node.isSelected())\n params.api.addEventListener('selectionChanged', handler)\n return () => params.api.removeEventListener('selectionChanged', handler)\n }, [params.api, params.node])\n\n return (\n <Checkbox\n checked={checked}\n onCheckedChange={(v) => params.node.setSelected(!!v)}\n aria-label={`${(params.node.rowIndex ?? 0) + 1}행 선택`}\n />\n )\n}\n\nexport { AgGridTable, HeaderCheckboxRenderer, RowCheckboxRenderer }\nexport { AgGridContext } from './context'\nexport type { AgGridContextType } from './context'\nexport { default as getSortedColumnState } from './helpers.ts/getSortedColumnState'\nexport { AG_GRID_LOCALE_KR } from './localeText'\n\n/** `sortable: true` 로 명시한 열(그룹 안의 열 포함)에 `unSortIcon: true` 를 붙인다. 열이 직접 unSortIcon 을 정했으면 그대로 */\nexport function withExplicitSortIcons<T>(defs: T): T {\n if (!Array.isArray(defs)) return defs\n return defs.map((d) => {\n if (d && typeof d === 'object' && Array.isArray(d.children))\n return { ...d, children: withExplicitSortIcons(d.children) }\n if (d && typeof d === 'object' && d.sortable === true && d.unSortIcon === undefined)\n return { ...d, unSortIcon: true }\n return d\n }) as T\n}\n\n/** 정렬 아이콘이 늘 보이는 숫자 열의 값 셀에 붙는 클래스 — style.css 가 오른쪽 여백을 아이콘 폭(16 + 간격 8)만큼 늘린다 */\nexport const SORT_ICON_OFFSET_CLASS = 'ag-cell-sort-offset'\n\n/**\n * 정렬 아이콘이 늘 보이는 숫자 열(`type` 에 number + `sortable: true` + `unSortIcon: true` — `withExplicitSortIcons` 다음에 부른다)의 값 셀에\n * `SORT_ICON_OFFSET_CLASS` 를 합친다(그룹 children 재귀). 숫자 열 제목은 아이콘이 글자 뒤라 글자가 값보다 아이콘 폭만큼 왼쪽에서 끝났다 —\n * 값을 그만큼 안쪽으로 들여 글자 끝과 값 끝을 맞춘다(2026-10-30 홀드아웃 17 세트 2, Gemini \"right-aligned numeric values under left-aligned\n * column headers\" 2쌍). 아이콘 위치(글자 뒤, 2026-10-16 4차)는 그대로. 정렬 전엔 아이콘이 없는 열(`defaultColDef` 로만 정렬 가능)·함수형 cellClass 는 그대로\n */\nexport function withSortIconOffset<T>(defs: T): T {\n if (!Array.isArray(defs)) return defs\n return defs.map((d) => {\n if (!d || typeof d !== 'object') return d\n if (Array.isArray(d.children)) return { ...d, children: withSortIconOffset(d.children) }\n if (!columnTypesOf(d).includes('number') || d.sortable !== true || d.unSortIcon !== true)\n return d\n const cellClass =\n d.cellClass == null\n ? SORT_ICON_OFFSET_CLASS\n : mergeTypeClass(d.cellClass, [SORT_ICON_OFFSET_CLASS])\n return cellClass === d.cellClass ? d : { ...d, cellClass }\n }) as T\n}\n\n/** 열 제목 글자 폭 추정(px) — 헤더 14px/700 기준: 한글·한자·전각 14, 그 외(영문·숫자·기호) 8. \"제목이 잘리지 않을 만큼\" 이면 되고 정확할 필요는 없다 */\nexport function estimateHeaderTextWidth(label: string): number {\n let w = 0\n for (const ch of label)\n w += /[\\u1100-\\u11FF\\u3000-\\u303F\\u3130-\\u318F\\u4E00-\\u9FFF\\uAC00-\\uD7AF\\uFF00-\\uFFEF]/.test(ch)\n ? 14\n : 8\n return w\n}\n/** 헤더 셀 좌우 패딩(--ag-cell-horizontal-padding 16 × 2) */\nconst HEADER_CELL_PADDING = 32\n/** 정렬 아이콘 16 + 글자와의 간격 8 */\nconst HEADER_SORT_ICON = 24\n\n/**\n * `headerName` 이 들어가는 최소 폭을 `flex` 가 없는 열마다 보장한다 — `minWidth = max(열의 minWidth, 글자 폭 추정 + 패딩 32 + (sortable ? 아이콘 24 : 0))`,\n * `width` 가 그보다 작으면 `width` 도 끌어올린다(`maxWidth` 가 있으면 그 안에서). 그룹 열은 자식에 재귀. 한 줄 판 12차: E 가 `width: 110` 같은 좁은 폭을 주자\n * 정렬 아이콘까지 든 숫자 열 제목이 \"크기(M…\" 로 잘렸다(목록 9쌍 중 7쌍 — 2026-10-18 13차). flex 열·`wrapHeaderText` 열·headerName 이 없거나 빈 열은 건드리지 않는다\n */\ntype ClassValue = string | string[] | ((...args: unknown[]) => unknown) | undefined\nconst splitClasses = (v: string | string[]) =>\n (Array.isArray(v) ? v : v.split(/\\s+/)).filter(Boolean)\n/** 열의 cellClass/headerClass(문자열·배열)에 열 타입의 클래스를 중복 없이 합친다. 함수형은 ag-grid 가 그때그때 부르므로 그대로 둔다 */\nfunction mergeTypeClass(own: ClassValue, fromTypes: string[]): ClassValue {\n if (fromTypes.length === 0 || typeof own === 'function') return own\n if (own == null) return own\n const list = splitClasses(own)\n const merged = [...list, ...fromTypes.filter((c) => !list.includes(c))]\n if (merged.length === list.length) return own\n return Array.isArray(own) ? merged : merged.join(' ')\n}\n\n/** flex 열인가 (flex 가 0 보다 큰 수) */\nconst isFlex = (d: { flex?: unknown }) => typeof d.flex === 'number' && d.flex > 0\n\n/** 보이는 flex 열이 모두 `maxWidth` 를 가지면 그 `maxWidth` 를 뗀다(그룹 children 재귀) — 남는 폭을 받을 열이 없으면 행이 표 오른쪽 끝 전에\n * 끝나 빈 띠가 남는다(2026-10-28 홀드아웃 14: 이름 열 하나만 `flex: 2, maxWidth: 480` 이고 나머지가 고정 폭, \"row dividers stop around 1330px\",\n * Opus·Gemini). 상한 없는 flex 열이 하나라도 있거나 flex 열이 없으면 그대로(같은 배열). 런타임에 열을 숨겨 생기는 경우는 다루지 않는다 */\nexport function withFlexFill<T>(defs: T): T {\n if (!Array.isArray(defs)) return defs\n const visibleFlex: Array<{ maxWidth?: unknown }> = []\n const collect = (list: unknown[]) => {\n for (const d of list as Array<Record<string, unknown> | null>) {\n if (!d || typeof d !== 'object') continue\n if (Array.isArray(d.children)) collect(d.children)\n else if (!d.hide && isFlex(d)) visibleFlex.push(d)\n }\n }\n collect(defs)\n if (visibleFlex.length === 0 || visibleFlex.some((d) => d.maxWidth == null)) return defs\n const strip = (list: unknown[]): unknown[] =>\n list.map((d) => {\n if (!d || typeof d !== 'object') return d\n const c = d as Record<string, unknown>\n if (Array.isArray(c.children)) return { ...c, children: strip(c.children) }\n if (c.hide || !isFlex(c)) return d\n const rest = { ...c }\n delete rest.maxWidth\n return rest\n })\n return strip(defs) as T\n}\n\n/** 열의 `type` 을 배열로 (없으면 빈 배열) */\nconst columnTypesOf = (d: { type?: unknown }): string[] =>\n Array.isArray(d.type) ? d.type : typeof d.type === 'string' ? [d.type] : []\n\n/** 폭을 안 준 number 열의 기본 폭. ag-grid 기본 200 은 숫자 열을 비어 보이게 한다(2026-10-27 홀드아웃 13 layout 지적 \"wide empty area\") */\nexport const NUMBER_COLUMN_WIDTH = 140\n\n/** `type: 'number'` 열에 width·flex·minWidth·maxWidth 가 모두 없으면 `width: 140`(그룹 children 재귀). 폭을 하나라도 줬으면 그대로 */\nexport function withNumberColumnWidth<T>(defs: T): T {\n if (!Array.isArray(defs)) return defs\n return defs.map((d) => {\n if (!d || typeof d !== 'object') return d\n if (Array.isArray(d.children)) return { ...d, children: withNumberColumnWidth(d.children) }\n if (!columnTypesOf(d).includes('number')) return d\n if (d.width != null || d.flex != null || d.minWidth != null || d.maxWidth != null) return d\n return { ...d, width: NUMBER_COLUMN_WIDTH }\n }) as T\n}\n\n/** `type` 이 가리키는 columnTypes 의 cellClass/headerClass 를 열이 직접 준 값과 합친다(그룹 children 재귀). ag-grid 는 열의 값이\n * 타입의 값을 통째로 덮으므로, 열이 `cellClass: 'font-semibold'` 를 더하기만 해도 number 의 `ag-right-aligned-cell` 이 사라진다 — 그걸 막는다 */\nexport function withTypeClasses<T>(\n defs: T,\n columnTypes: Record<string, { cellClass?: unknown; headerClass?: unknown }>,\n): T {\n if (!Array.isArray(defs)) return defs\n return defs.map((d) => {\n if (!d || typeof d !== 'object') return d\n if (Array.isArray(d.children))\n return { ...d, children: withTypeClasses(d.children, columnTypes) }\n const types = columnTypesOf(d)\n if (types.length === 0) return d\n const collect = (key: 'cellClass' | 'headerClass') =>\n types.flatMap((t) => {\n const v = columnTypes[t]?.[key]\n return typeof v === 'string' || Array.isArray(v) ? splitClasses(v as string | string[]) : []\n })\n const cellClass = mergeTypeClass(d.cellClass, collect('cellClass'))\n const headerClass = mergeTypeClass(d.headerClass, collect('headerClass'))\n if (cellClass === d.cellClass && headerClass === d.headerClass) return d\n return {\n ...d,\n ...(cellClass !== d.cellClass ? { cellClass } : {}),\n ...(headerClass !== d.headerClass ? { headerClass } : {}),\n }\n }) as T\n}\n\nexport function withHeaderMinWidth<T>(defs: T): T {\n if (!Array.isArray(defs)) return defs\n return defs.map((d) => {\n if (!d || typeof d !== 'object') return d\n if (Array.isArray(d.children)) return { ...d, children: withHeaderMinWidth(d.children) }\n if (\n typeof d.headerName !== 'string' ||\n d.headerName === '' ||\n d.flex != null ||\n d.wrapHeaderText\n )\n return d\n let need =\n estimateHeaderTextWidth(d.headerName) +\n HEADER_CELL_PADDING +\n (d.sortable ? HEADER_SORT_ICON : 0)\n if (typeof d.maxWidth === 'number') need = Math.min(need, d.maxWidth)\n const minWidth = Math.max(typeof d.minWidth === 'number' ? d.minWidth : 0, need)\n const raiseWidth = typeof d.width === 'number' && d.width < minWidth\n if (minWidth === d.minWidth && !raiseWidth) return d\n return { ...d, minWidth, ...(raiseWidth ? { width: minWidth } : {}) }\n }) as T\n}\n\nexport interface TwoLineCellRendererParams<TRow = unknown> extends ICellRendererParams<TRow> {\n /** 보조 줄에 보일 행 필드(점 표기 가능: 'image.tag'). 값이 없거나 빈 문자열이면 한 줄만 그린다 */\n secondaryField?: string\n /** 보조 줄에 덧붙일 클래스 — id·경로·버전처럼 고정폭이 읽기 좋은 값은 'font-mono' */\n secondaryClassName?: string\n}\n\n/** 'a.b.c' 경로로 행 객체의 값을 읽는다 */\nfunction getByPath(data: unknown, path: string): unknown {\n return path\n .split('.')\n .reduce<unknown>((o, k) => (o == null ? undefined : (o as Record<string, unknown>)[k]), data)\n}\n\n/**\n * 두 줄 셀 — 첫 줄은 열의 값(이름), 둘째 줄은 `cellRendererParams.secondaryField` 의 값(id·이미지·경로·설명)을 12px 회색으로.\n * dl-ui-v3 목록의 이름 열(이름 / 설명, 행 56px)과 같은 모양.\n *\n * 언제 쓰나: 주 식별자 열 아래에 보조 정보를 둘 때 — 열을 하나 더 늘리는 대신(열이 많아지면 잘린다. 한 줄 판 12차, 2026-10-18 13차 ⑥). `ListPage secondaryField` 가 이 렌더러를 primary 열에 붙인다.\n * 쓰는 법: `{ field: 'name', cellRenderer: TwoLineCellRenderer, cellRendererParams: { secondaryField: 'image' } }` + 표에 `rowHeight={56}`(ListPage 는 자동).\n * 언제 안 쓰나: 보조 값이 정렬·필터 대상이면 제 열로 둔다. 상태는 Badge(아이콘 + 글자) 셀 렌더러.\n */\nexport function TwoLineCellRenderer<TRow = unknown>(params: TwoLineCellRendererParams<TRow>) {\n const primary = (params.valueFormatted ?? params.value) as ReactNode\n const secondary = params.secondaryField\n ? getByPath(params.data, params.secondaryField)\n : undefined\n const hasSecondary = secondary !== undefined && secondary !== null && secondary !== ''\n return (\n <div className='flex w-full min-w-0 flex-col'>\n <span data-slot='cell-primary' className='block truncate leading-[20px]'>\n {primary}\n </span>\n {hasSecondary ? (\n // 보조 줄은 subtle(#4d5365): 12px 회색이 subtler 면 \"small gray text\" 로 읽힌다(13차 라벨 색과 같은 결정). 굵기는 주 열(semibold)을 따라가지 않게 regular\n <span\n data-slot='cell-secondary'\n className={cn(\n 'mt-[2px] block truncate text-small-regular text-sys-text-subtle',\n params.secondaryClassName,\n )}\n >\n {String(secondary)}\n </span>\n ) : null}\n </div>\n )\n}\n"]}
|