diff --git a/apps/web/next.config.mjs b/apps/web/next.config.mjs index 8850209..cb70327 100644 --- a/apps/web/next.config.mjs +++ b/apps/web/next.config.mjs @@ -1,7 +1,8 @@ import { createVanillaExtractPlugin } from '@vanilla-extract/next-plugin'; const withVanillaExtract = createVanillaExtractPlugin(); -/** @type {import('next').NextConfig} */ -const nextConfig = {}; +const nextConfig = { + transpilePackages: ['@repo/ui', '@repo/theme'], +}; export default withVanillaExtract(nextConfig); diff --git a/apps/web/package.json b/apps/web/package.json index c1f83c7..cf59cfc 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -2,6 +2,7 @@ "name": "web", "version": "0.1.0", "private": true, + "type": "module", "scripts": { "dev": "next dev", "build": "next build", @@ -19,6 +20,7 @@ "devDependencies": { "@repo/eslint-config": "workspace:*", "@repo/typescript-config": "workspace:*", + "@repo/theme": "workspace:*", "@repo/ui": "workspace:*", "@types/node": "^20.11.24", "@types/react": "18.3.0", diff --git a/apps/web/src/app/layout.tsx b/apps/web/src/app/layout.tsx index f5608b6..488ca85 100644 --- a/apps/web/src/app/layout.tsx +++ b/apps/web/src/app/layout.tsx @@ -2,7 +2,7 @@ import type { Metadata } from 'next'; import localFont from 'next/font/local'; import './globals.css'; import '@repo/theme/styles'; -//import '@repo/ui/styles'; +import '@repo/ui/styles'; import { ThemeProvider } from '@repo/theme'; const geistSans = localFont({ diff --git a/apps/web/src/app/page.tsx b/apps/web/src/app/page.tsx index 291f18e..b0ce64a 100644 --- a/apps/web/src/app/page.tsx +++ b/apps/web/src/app/page.tsx @@ -1,3 +1,10 @@ +import { Icon } from '@repo/ui'; + export default function Home() { - return
웹 1팀 파이팅!
; + return ( +
+ 웹 1팀 파이팅! + +
+ ); } diff --git a/packages/theme/package.json b/packages/theme/package.json index 64752c3..59a9b72 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -2,6 +2,9 @@ "name": "@repo/theme", "version": "0.0.0", "private": true, + "main": "./dist/index.js", + "type": "module", + "module": "./dist/index.mjs", "types": "./dist/index.d.ts", "exports": { ".": { diff --git a/packages/theme/src/themes/dark.ts b/packages/theme/src/themes/dark.ts index 17444f2..0941c43 100644 --- a/packages/theme/src/themes/dark.ts +++ b/packages/theme/src/themes/dark.ts @@ -3,38 +3,38 @@ import type { ThemeContract } from './contract'; export const darkTheme: ThemeContract = { colors: { - primary: tokens.colors.primary.green200, - primary400to200: tokens.colors.primary.green200, - primaryHover: tokens.colors.primary.green100, + primary: tokens.colors.green200, + primary400to200: tokens.colors.green200, + primaryHover: tokens.colors.green100, - warning: tokens.colors.semantic.warning300, + warning: tokens.colors.warning300, - grey: tokens.colors.grey[1000], - grey25: tokens.colors.grey[950], - grey50: tokens.colors.grey[900], - grey50B: tokens.colors.grey[900], - grey100: tokens.colors.grey[800], - grey200: tokens.colors.grey[700], - grey300: tokens.colors.grey[600], - grey400: tokens.colors.grey[500], - grey500: tokens.colors.grey[400], - grey600: tokens.colors.grey[300], - grey700: tokens.colors.grey[200], - grey800: tokens.colors.grey[100], - grey900: tokens.colors.grey[50], - grey950: tokens.colors.grey[25], - grey1000: tokens.colors.grey[0], + grey: tokens.colors.grey1000, + grey25: tokens.colors.grey950, + grey50: tokens.colors.grey900, + grey50B: tokens.colors.grey900, + grey100: tokens.colors.grey800, + grey200: tokens.colors.grey700, + grey300: tokens.colors.grey600, + grey400: tokens.colors.grey500, + grey500: tokens.colors.grey400, + grey600: tokens.colors.grey300, + grey700: tokens.colors.grey200, + grey800: tokens.colors.grey100, + grey900: tokens.colors.grey50, + grey950: tokens.colors.grey25, + grey1000: tokens.colors.grey0, - grey0to950: tokens.colors.grey[950], - grey0to800: tokens.colors.grey[800], - grey0to700: tokens.colors.grey[700], - grey25to900: tokens.colors.grey[900], - grey25to800: tokens.colors.grey[800], - grey50Bto800: tokens.colors.grey[800], - grey100to700: tokens.colors.grey[700], - grey100to700Hover: tokens.colors.grey[600], - grey950toPrimary: tokens.colors.primary.green200, - grey1000to1000: tokens.colors.grey[1000], + grey0to950: tokens.colors.grey950, + grey0to800: tokens.colors.grey800, + grey0to700: tokens.colors.grey700, + grey25to900: tokens.colors.grey900, + grey25to800: tokens.colors.grey800, + grey50Bto800: tokens.colors.grey800, + grey100to700: tokens.colors.grey700, + grey100to700Hover: tokens.colors.grey600, + grey950toPrimary: tokens.colors.green200, + grey1000to1000: tokens.colors.grey1000, }, space: tokens.spacing, borderRadius: tokens.radius, diff --git a/packages/theme/src/themes/light.ts b/packages/theme/src/themes/light.ts index 1eae37c..1b23c00 100644 --- a/packages/theme/src/themes/light.ts +++ b/packages/theme/src/themes/light.ts @@ -3,38 +3,38 @@ import type { ThemeContract } from './contract'; export const lightTheme: ThemeContract = { colors: { - primary: tokens.colors.primary.green200, - primary400to200: tokens.colors.primary.green400, - primaryHover: tokens.colors.primary.green300, + primary: tokens.colors.green200, + primary400to200: tokens.colors.green400, + primaryHover: tokens.colors.green300, - warning: tokens.colors.semantic.warning500, + warning: tokens.colors.warning500, - grey: tokens.colors.grey[0], - grey25: tokens.colors.grey[25], - grey50: tokens.colors.grey[50], - grey50B: tokens.colors.grey['50B'], - grey100: tokens.colors.grey[100], - grey200: tokens.colors.grey[200], - grey300: tokens.colors.grey[300], - grey400: tokens.colors.grey[400], - grey500: tokens.colors.grey[500], - grey600: tokens.colors.grey[600], - grey700: tokens.colors.grey[700], - grey800: tokens.colors.grey[800], - grey900: tokens.colors.grey[900], - grey950: tokens.colors.grey[950], - grey1000: tokens.colors.grey[1000], + grey: tokens.colors.grey0, + grey25: tokens.colors.grey25, + grey50: tokens.colors.grey50, + grey50B: tokens.colors.grey50B, + grey100: tokens.colors.grey100, + grey200: tokens.colors.grey200, + grey300: tokens.colors.grey300, + grey400: tokens.colors.grey400, + grey500: tokens.colors.grey500, + grey600: tokens.colors.grey600, + grey700: tokens.colors.grey700, + grey800: tokens.colors.grey800, + grey900: tokens.colors.grey900, + grey950: tokens.colors.grey950, + grey1000: tokens.colors.grey1000, - grey0to950: tokens.colors.grey[0], - grey0to800: tokens.colors.grey[0], - grey0to700: tokens.colors.grey[0], - grey25to900: tokens.colors.grey[25], - grey25to800: tokens.colors.grey[25], - grey50Bto800: tokens.colors.grey['50B'], - grey100to700: tokens.colors.grey[100], - grey100to700Hover: tokens.colors.grey[200], - grey950toPrimary: tokens.colors.grey[950], - grey1000to1000: tokens.colors.grey[1000], + grey0to950: tokens.colors.grey0, + grey0to800: tokens.colors.grey0, + grey0to700: tokens.colors.grey0, + grey25to900: tokens.colors.grey25, + grey25to800: tokens.colors.grey25, + grey50Bto800: tokens.colors.grey50B, + grey100to700: tokens.colors.grey100, + grey100to700Hover: tokens.colors.grey200, + grey950toPrimary: tokens.colors.grey950, + grey1000to1000: tokens.colors.grey1000, }, space: tokens.spacing, borderRadius: tokens.radius, diff --git a/packages/theme/src/tokens/colors.ts b/packages/theme/src/tokens/colors.ts index 70a05d2..94bd6e5 100644 --- a/packages/theme/src/tokens/colors.ts +++ b/packages/theme/src/tokens/colors.ts @@ -1,30 +1,26 @@ export const colors = { - primary: { - green100: '#F1FFB5', - green200: '#E6FF79', - green300: '#D0F141', - green400: '#D2F634', - }, - semantic: { - warning300: '#FF724E', - warning500: '#FF3300', - blue: '#1662E3', - }, - grey: { - 0: '#FFFFFF', - 25: '#F7F9FB', - 50: '#EAEFF4', - '50B': '#E5EEF7', - 100: '#D8E3ED', - 200: '#C2CDDE', - 300: '#A3ADBD', - 400: '#788391', - 500: '#5A6471', - 600: '#3F4750', - 700: '#293342', - 800: '#1D222C', - 900: '#14181F', - 950: '#0E0F15', - 1000: '#000000', - }, + green100: '#F1FFB5', + green200: '#E6FF79', + green300: '#D0F141', + green400: '#D2F634', + + warning300: '#FF724E', + warning500: '#FF3300', + blue: '#1662E3', + + grey0: '#FFFFFF', + grey25: '#F7F9FB', + grey50: '#EAEFF4', + grey50B: '#E5EEF7', + grey100: '#D8E3ED', + grey200: '#C2CDDE', + grey300: '#A3ADBD', + grey400: '#788391', + grey500: '#5A6471', + grey600: '#3F4750', + grey700: '#293342', + grey800: '#1D222C', + grey900: '#14181F', + grey950: '#0E0F15', + grey1000: '#000000', } as const; diff --git a/packages/ui/esbuild.config.mjs b/packages/ui/esbuild.config.mjs index 2259765..31e5e03 100644 --- a/packages/ui/esbuild.config.mjs +++ b/packages/ui/esbuild.config.mjs @@ -1,24 +1,40 @@ -import { vanillaExtractPlugin } from '@vanilla-extract/esbuild-plugin'; import esbuild from 'esbuild'; +import { vanillaExtractPlugin } from '@vanilla-extract/esbuild-plugin'; +import svgr from 'esbuild-plugin-svgr'; import { preserveDirectivesPlugin } from 'esbuild-plugin-preserve-directives'; import path from 'path'; const outdir = path.join(process.cwd(), 'dist'); + +const buildOptions = { + entryPoints: ['src/index.ts'], + bundle: true, + platform: 'node', + plugins: [ + svgr(), + vanillaExtractPlugin(), + preserveDirectivesPlugin({ + directives: ['use client', 'use strict'], + include: /\.(js|ts|jsx|tsx)$/, + exclude: /node_modules/, + }), + ], + loader: { '.css': 'file' }, + outdir, + external: ['react'], +}; + esbuild .build({ - entryPoints: ['./src/index.ts'], - bundle: true, - plugins: [ - vanillaExtractPlugin(), - preserveDirectivesPlugin({ - directives: ['use client', 'use strict'], - include: /\.(js|ts|jsx|tsx)$/, - exclude: /node_modules/, - }), - ], + ...buildOptions, format: 'esm', - loader: { '.css': 'file' }, - outdir, - external: ['react', 'react-dom'], }) .catch(() => process.exit(1)); + +// TODO commonjs에서 빌드 오류 나는 현상 +// esbuild +// .build({ +// ...buildOptions, +// format: 'cjs', +// }) +// .catch(() => process.exit(1)); diff --git a/packages/ui/global.d.ts b/packages/ui/global.d.ts new file mode 100644 index 0000000..006534e --- /dev/null +++ b/packages/ui/global.d.ts @@ -0,0 +1,4 @@ +declare module '*.svg' { + const content: React.FunctionComponent>; + export default content; +} diff --git a/packages/ui/package.json b/packages/ui/package.json index 72e08d0..492b468 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -2,6 +2,9 @@ "name": "@repo/ui", "version": "0.0.0", "private": true, + "type": "module", + "main": "./dist/index.js", + "module": "./dist/index.mjs", "types": "./dist/index.d.ts", "exports": { ".": { @@ -12,7 +15,9 @@ "scripts": { "build": "tsc && node esbuild.config.mjs", "dev": "esbuild src/index.ts --bundle --platform=node --format=esm --outfile=dist/index.mjs --watch", - "lint": "eslint . --max-warnings 0" + "lint": "eslint . --max-warnings 0", + "build:icons": "esbuild src/scripts/generate-icon-map.ts --bundle --platform=node --outdir=dist/scripts", + "generate:icons": "pnpm run build:icons && node dist/scripts/generate-icon-map.js" }, "dependencies": { "@repo/theme": "workspace:^", @@ -21,12 +26,17 @@ "react": "^18" }, "devDependencies": { + "@repo/theme": "workspace:*", + "@types/node": "^20.11.24", "@types/react": "^18.2.0", "@vanilla-extract/esbuild-plugin": "^2.3.5", "esbuild": "^0.21.0", - "esbuild-plugin-preserve-directives": "^0.0.11" + "esbuild-plugin-preserve-directives": "^0.0.11", + "esbuild-plugin-svgr": "^3.1.0", + "ts-node": "^10.9.2" }, "peerDependencies": { - "react": "^18.2.0" + "react": "^18", + "react-dom": "^18" } } diff --git a/packages/ui/src/assets/icons/IconArrowBottom.svg b/packages/ui/src/assets/icons/IconArrowBottom.svg new file mode 100644 index 0000000..2fc07fc --- /dev/null +++ b/packages/ui/src/assets/icons/IconArrowBottom.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/assets/icons/IconArrowLeft.svg b/packages/ui/src/assets/icons/IconArrowLeft.svg new file mode 100644 index 0000000..2a1b9ce --- /dev/null +++ b/packages/ui/src/assets/icons/IconArrowLeft.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/assets/icons/IconArrowRight.svg b/packages/ui/src/assets/icons/IconArrowRight.svg new file mode 100644 index 0000000..85b0881 --- /dev/null +++ b/packages/ui/src/assets/icons/IconArrowRight.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/assets/icons/IconArrowTop.svg b/packages/ui/src/assets/icons/IconArrowTop.svg new file mode 100644 index 0000000..d79d444 --- /dev/null +++ b/packages/ui/src/assets/icons/IconArrowTop.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/assets/icons/IconCalendar.svg b/packages/ui/src/assets/icons/IconCalendar.svg new file mode 100644 index 0000000..0aed8bc --- /dev/null +++ b/packages/ui/src/assets/icons/IconCalendar.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/assets/icons/IconChat.svg b/packages/ui/src/assets/icons/IconChat.svg new file mode 100644 index 0000000..28301d4 --- /dev/null +++ b/packages/ui/src/assets/icons/IconChat.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/assets/icons/IconCheck.svg b/packages/ui/src/assets/icons/IconCheck.svg new file mode 100644 index 0000000..3fe79db --- /dev/null +++ b/packages/ui/src/assets/icons/IconCheck.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/assets/icons/IconCheckCalendar.svg b/packages/ui/src/assets/icons/IconCheckCalendar.svg new file mode 100644 index 0000000..3cb1f6f --- /dev/null +++ b/packages/ui/src/assets/icons/IconCheckCalendar.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/assets/icons/IconDocument.svg b/packages/ui/src/assets/icons/IconDocument.svg new file mode 100644 index 0000000..384e216 --- /dev/null +++ b/packages/ui/src/assets/icons/IconDocument.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/ui/src/assets/icons/IconLineThree.svg b/packages/ui/src/assets/icons/IconLineThree.svg new file mode 100644 index 0000000..509c519 --- /dev/null +++ b/packages/ui/src/assets/icons/IconLineThree.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/assets/icons/IconNotice.svg b/packages/ui/src/assets/icons/IconNotice.svg new file mode 100644 index 0000000..4166dd5 --- /dev/null +++ b/packages/ui/src/assets/icons/IconNotice.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/assets/icons/IconPencil.svg b/packages/ui/src/assets/icons/IconPencil.svg new file mode 100644 index 0000000..84562c0 --- /dev/null +++ b/packages/ui/src/assets/icons/IconPencil.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/assets/icons/IconPicture.svg b/packages/ui/src/assets/icons/IconPicture.svg new file mode 100644 index 0000000..0e36957 --- /dev/null +++ b/packages/ui/src/assets/icons/IconPicture.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/assets/icons/IconPlus.svg b/packages/ui/src/assets/icons/IconPlus.svg new file mode 100644 index 0000000..026dfb2 --- /dev/null +++ b/packages/ui/src/assets/icons/IconPlus.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/assets/icons/IconPlusPicture.svg b/packages/ui/src/assets/icons/IconPlusPicture.svg new file mode 100644 index 0000000..7d6fc37 --- /dev/null +++ b/packages/ui/src/assets/icons/IconPlusPicture.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/ui/src/assets/icons/IconSend.svg b/packages/ui/src/assets/icons/IconSend.svg new file mode 100644 index 0000000..702c6b3 --- /dev/null +++ b/packages/ui/src/assets/icons/IconSend.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/assets/icons/IconShopping.svg b/packages/ui/src/assets/icons/IconShopping.svg new file mode 100644 index 0000000..f753cd2 --- /dev/null +++ b/packages/ui/src/assets/icons/IconShopping.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/assets/icons/IconSmile.svg b/packages/ui/src/assets/icons/IconSmile.svg new file mode 100644 index 0000000..3c1eafc --- /dev/null +++ b/packages/ui/src/assets/icons/IconSmile.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/assets/icons/IconStack.svg b/packages/ui/src/assets/icons/IconStack.svg new file mode 100644 index 0000000..48ce813 --- /dev/null +++ b/packages/ui/src/assets/icons/IconStack.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/ui/src/assets/icons/IconStar.svg b/packages/ui/src/assets/icons/IconStar.svg new file mode 100644 index 0000000..679a926 --- /dev/null +++ b/packages/ui/src/assets/icons/IconStar.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/ui/src/assets/icons/IconX.svg b/packages/ui/src/assets/icons/IconX.svg new file mode 100644 index 0000000..6252faa --- /dev/null +++ b/packages/ui/src/assets/icons/IconX.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/ui/src/assets/icons/IconXCircle.svg b/packages/ui/src/assets/icons/IconXCircle.svg new file mode 100644 index 0000000..5d98653 --- /dev/null +++ b/packages/ui/src/assets/icons/IconXCircle.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/ui/src/components/Icon/Icon.css.ts b/packages/ui/src/components/Icon/Icon.css.ts new file mode 100644 index 0000000..a873e13 --- /dev/null +++ b/packages/ui/src/components/Icon/Icon.css.ts @@ -0,0 +1,11 @@ +import { style, createVar, globalStyle } from '@vanilla-extract/css'; + +export const strokeColor = createVar(); +export const fillColor = createVar(); + +export const parent = style({}); + +globalStyle(`.${parent} path`, { + stroke: strokeColor, + fill: fillColor, +}); diff --git a/packages/ui/src/components/Icon/Icon.tsx b/packages/ui/src/components/Icon/Icon.tsx new file mode 100644 index 0000000..6e7f234 --- /dev/null +++ b/packages/ui/src/components/Icon/Icon.tsx @@ -0,0 +1,40 @@ +import { FC, SVGProps } from 'react'; +import { icons } from './assets'; +import { tokens } from '@repo/theme'; +import * as styles from './Icon.css'; +import { assignInlineVars } from '@vanilla-extract/dynamic'; + +type IconName = keyof typeof icons; + +interface IconProps extends SVGProps { + name: IconName; + fill?: keyof typeof tokens.colors; + stroke?: keyof typeof tokens.colors; +} + +export const Icon: FC = ({ + name, + stroke, + fill, + ...rest +}: IconProps) => { + const SVG = icons[name] as FC>; + + const resolvedFill = fill ? tokens.colors[fill] : 'transparent'; + const resolvedStroke = stroke ? tokens.colors[stroke] : 'transparent'; + + return ( + + ); +}; diff --git a/packages/ui/src/components/Icon/assets.ts b/packages/ui/src/components/Icon/assets.ts new file mode 100644 index 0000000..00d908a --- /dev/null +++ b/packages/ui/src/components/Icon/assets.ts @@ -0,0 +1,47 @@ +import IconArrowBottom from '@/assets/icons/IconArrowBottom.svg'; +import IconArrowLeft from '@/assets/icons/IconArrowLeft.svg'; +import IconArrowRight from '@/assets/icons/IconArrowRight.svg'; +import IconArrowTop from '@/assets/icons/IconArrowTop.svg'; +import IconCalendar from '@/assets/icons/IconCalendar.svg'; +import IconChat from '@/assets/icons/IconChat.svg'; +import IconCheck from '@/assets/icons/IconCheck.svg'; +import IconCheckCalendar from '@/assets/icons/IconCheckCalendar.svg'; +import IconDocument from '@/assets/icons/IconDocument.svg'; +import IconLineThree from '@/assets/icons/IconLineThree.svg'; +import IconNotice from '@/assets/icons/IconNotice.svg'; +import IconPencil from '@/assets/icons/IconPencil.svg'; +import IconPicture from '@/assets/icons/IconPicture.svg'; +import IconPlus from '@/assets/icons/IconPlus.svg'; +import IconPlusPicture from '@/assets/icons/IconPlusPicture.svg'; +import IconSend from '@/assets/icons/IconSend.svg'; +import IconShopping from '@/assets/icons/IconShopping.svg'; +import IconSmile from '@/assets/icons/IconSmile.svg'; +import IconStack from '@/assets/icons/IconStack.svg'; +import IconStar from '@/assets/icons/IconStar.svg'; +import IconX from '@/assets/icons/IconX.svg'; +import IconXCircle from '@/assets/icons/IconXCircle.svg'; + +export const icons = { + arrowBottom: IconArrowBottom, + arrowLeft: IconArrowLeft, + arrowRight: IconArrowRight, + arrowTop: IconArrowTop, + calendar: IconCalendar, + chat: IconChat, + check: IconCheck, + checkCalendar: IconCheckCalendar, + document: IconDocument, + lineThree: IconLineThree, + notice: IconNotice, + pencil: IconPencil, + picture: IconPicture, + plus: IconPlus, + plusPicture: IconPlusPicture, + send: IconSend, + shopping: IconShopping, + smile: IconSmile, + stack: IconStack, + star: IconStar, + x: IconX, + xCircle: IconXCircle, +}; diff --git a/packages/ui/src/components/index.ts b/packages/ui/src/components/index.ts index 601f7db..cb595bd 100644 --- a/packages/ui/src/components/index.ts +++ b/packages/ui/src/components/index.ts @@ -1 +1,2 @@ export * from './Spacing/Spacing'; +export * from './Icon/Icon'; diff --git a/packages/ui/src/scripts/generate-icon-map.ts b/packages/ui/src/scripts/generate-icon-map.ts new file mode 100644 index 0000000..58a209d --- /dev/null +++ b/packages/ui/src/scripts/generate-icon-map.ts @@ -0,0 +1,82 @@ +import fs from 'fs'; +import path from 'path'; + +// (선택) 파일명을 import할 때 사용할 변수명으로 변환하는 유틸 함수 +// 예) "IconArrowBottom.svg" → "arrowBottom" +// 예) "icon_check.svg" → "iconCheck" +function toCamelCase(str: string): string { + // 우선 ".svg" 제거, 그리고 "Icon" 접두어, 언더바, 대시 등을 제거 + const trimmed = str.replace(/^Icon/i, ''); // Icon 접두어 제거 (대소문자 무시) + + // 이어서 kebab-case, snake_case 등을 camelCase로 변환 + return trimmed + .replace(/[-_]+(.)?/g, (_, c: string) => (c ? c.toUpperCase() : '')) + .replace(/^\w/, (c: string) => c.toLowerCase()); // 첫 글자를 소문자로 +} + +// 아이콘 폴더 경로 +const ICONS_DIR: string = path.resolve(__dirname, '../../src/assets/icons'); + +// 결과물을 저장할 파일 경로 +const OUTPUT_PATH: string = path.resolve( + __dirname, + '../../src/components/Icon/icons.ts' +); + +// .svg 파일 목록 가져오기 +const svgFiles: string[] = fs + .readdirSync(ICONS_DIR) + .filter((file) => file.endsWith('.svg')); + +if (svgFiles.length === 0) { + console.log('No SVG files found in:', ICONS_DIR); + process.exit(0); +} + +// import 구문과 icon 매핑을 구성할 문자열 배열 +const importStatements: string[] = []; +const iconMapping: string[] = []; + +/** + * 예시 결과 형태 + * + * import IconArrowBottom from '@/assets/icons/IconArrowBottom.svg'; + * import IconClose from '@/assets/icons/IconClose.svg'; + * + * export const icons = { + * arrowBottom: IconArrowBottom, + * close: IconClose, + * }; + */ + +svgFiles.forEach((file) => { + // 확장자(.svg) 없이 basename만 추출 + const baseName = path.basename(file, '.svg'); // 예: "IconArrowBottom" + + // import할 때 사용할 변수명 (원하면 toCamelCase/baseName 등 조합 가능) + // 여기서는 원본 그대로 쓰지만, 필요하면 아래처럼 수정: + // const importName = toCamelCase(baseName); + const importName: string = baseName; + + // icons 객체의 key로 쓸 이름 + const iconKey: string = toCamelCase(baseName); + + // import 구문 생성 + importStatements.push(`import ${importName} from '@/assets/icons/${file}';`); + + // iconKey: importName 형태로 매핑 + iconMapping.push(` ${iconKey}: ${importName}`); +}); + +// 최종 파일 콘텐츠 조합 +const fileContent = `${importStatements.join('\n')} + +export const icons = { +${iconMapping.join(',\n')} +}; +`; + +// 파일 생성/덮어쓰기 +fs.writeFileSync(OUTPUT_PATH, fileContent, 'utf-8'); + +console.log(`아이콘 생성: ${OUTPUT_PATH}`); diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json index a1d2554..604f5ce 100644 --- a/packages/ui/tsconfig.json +++ b/packages/ui/tsconfig.json @@ -9,6 +9,6 @@ "outDir": "./dist", "declaration": true }, - "include": ["src/**/*"], + "include": ["src/**/*", "global.d.ts"], "exclude": ["node_modules", "dist"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5fc83bb..4020780 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -138,7 +138,7 @@ importers: version: 1.17.0 '@vanilla-extract/next-plugin': specifier: ^2.4.8 - version: 2.4.8(@types/node@20.17.6)(next@14.2.21(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.37.0)(webpack@5.97.1(esbuild@0.21.5)) + version: 2.4.8(@types/node@20.17.12)(next@14.2.21(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.37.0)(webpack@5.97.1(esbuild@0.21.5)) '@vanilla-extract/recipes': specifier: ^0.5.5 version: 0.5.5(@vanilla-extract/css@1.17.0) @@ -154,7 +154,7 @@ importers: version: 18.3.0 '@vanilla-extract/esbuild-plugin': specifier: ^2.3.5 - version: 2.3.13(@types/node@20.17.6)(esbuild@0.21.5)(terser@5.37.0) + version: 2.3.13(@types/node@20.17.12)(esbuild@0.21.5)(terser@5.37.0) esbuild: specifier: ^0.21.0 version: 0.21.5 @@ -178,7 +178,13 @@ importers: react: specifier: ^18 version: 18.3.1 + react-dom: + specifier: ^18 + version: 18.3.1(react@18.3.1) devDependencies: + '@types/node': + specifier: ^20.11.24 + version: 20.17.6 '@types/react': specifier: ^18.2.0 version: 18.3.0 @@ -191,6 +197,12 @@ importers: esbuild-plugin-preserve-directives: specifier: ^0.0.11 version: 0.0.11(esbuild@0.21.5) + esbuild-plugin-svgr: + specifier: ^3.1.0 + version: 3.1.0(esbuild@0.21.5)(typescript@5.5.4) + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@types/node@20.17.6)(typescript@5.5.4) packages: @@ -275,6 +287,10 @@ packages: resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} engines: {node: '>=6.9.0'} + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + '@emotion/hash@0.9.2': resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} @@ -495,6 +511,9 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@next/env@14.2.21': resolution: {integrity: sha512-lXcwcJd5oR01tggjWJ6SrNNYFGuOOMB9c251wUNkjCpkoXOPkDeF/15c3mnVlBqrW4JJXb2kVxDFhC4GduJt2A==} @@ -679,12 +698,92 @@ packages: '@rushstack/eslint-patch@1.10.4': resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==} + '@svgr/babel-plugin-add-jsx-attribute@8.0.0': + resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-remove-jsx-attribute@8.0.0': + resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0': + resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0': + resolution: {integrity: sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-svg-dynamic-title@8.0.0': + resolution: {integrity: sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-svg-em-dimensions@8.0.0': + resolution: {integrity: sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-transform-react-native-svg@8.1.0': + resolution: {integrity: sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-transform-svg-component@8.0.0': + resolution: {integrity: sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==} + engines: {node: '>=12'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-preset@8.1.0': + resolution: {integrity: sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/core@8.1.0': + resolution: {integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==} + engines: {node: '>=14'} + + '@svgr/hast-util-to-babel-ast@8.0.0': + resolution: {integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==} + engines: {node: '>=14'} + + '@svgr/plugin-jsx@8.1.0': + resolution: {integrity: sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==} + engines: {node: '>=14'} + peerDependencies: + '@svgr/core': '*' + '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} '@swc/helpers@0.5.5': resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + '@types/eslint-scope@3.7.7': resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} @@ -700,6 +799,9 @@ packages: '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + '@types/node@20.17.12': + resolution: {integrity: sha512-vo/wmBgMIiEA23A/knMfn/cf37VnuF52nZh5ZoW0GWt4e4sxNquibrMRJ7UQsA06+MBx9r/H1jsI9grYjQCQlw==} + '@types/node@20.17.6': resolution: {integrity: sha512-VEI7OdvK2wP7XHnsuXbAJnEpEkF6NjSN45QJlL4VGqZSXsnicpesdTWsg9RISeSdYd3yeRj/y3k5KGjUXYnFwQ==} @@ -873,6 +975,10 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + acorn@8.14.0: resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} engines: {node: '>=0.4.0'} @@ -921,6 +1027,9 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -1015,6 +1124,10 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + caniuse-lite@1.0.30001683: resolution: {integrity: sha512-iqmNnThZ0n70mNwvxpEC2nBJ037ZHZUoBI5Gorh1Mw6IlEAZujEoU1tXA628iZfzm7R9FvFzxbfdgml82a3k8Q==} @@ -1070,6 +1183,18 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + cosmiconfig@8.3.6: + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -1153,10 +1278,17 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dotenv@16.0.3: resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} engines: {node: '>=12'} @@ -1184,10 +1316,17 @@ packages: resolution: {integrity: sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==} engines: {node: '>=10.13.0'} + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + environment@1.1.0: resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} engines: {node: '>=18'} + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + es-abstract@1.23.5: resolution: {integrity: sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==} engines: {node: '>= 0.4'} @@ -1228,6 +1367,11 @@ packages: peerDependencies: esbuild: ^0.21.0 + esbuild-plugin-svgr@3.1.0: + resolution: {integrity: sha512-SOfjehS9effRn8W/+T05GiXAbT6QHivr2uAUwzbXnqLnezKA4QIjvEt3VCzpzZU9J6oP21GZBB8tbDsJWYXPlw==} + peerDependencies: + esbuild: ^0.23.0 + esbuild@0.21.5: resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} @@ -1418,8 +1562,8 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-uri@3.0.3: - resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} + fast-uri@3.0.5: + resolution: {integrity: sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==} fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} @@ -1584,6 +1728,9 @@ packages: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} engines: {node: '>= 0.4'} + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-async-function@2.0.0: resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} engines: {node: '>= 0.4'} @@ -1722,7 +1869,6 @@ packages: js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} @@ -1775,6 +1921,9 @@ packages: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + lint-staged@15.3.0: resolution: {integrity: sha512-vHFahytLoF2enJklgtOtCtIjZrKD/LoxlaUusd5nh7dWv/dkKQJY74ndFSzxCdv7g0ueGg1ORgTSt4Y9LPZn9A==} engines: {node: '>=18.12.0'} @@ -1805,7 +1954,9 @@ packages: loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true + + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -1813,6 +1964,9 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + media-query-parser@2.0.2: resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} @@ -1895,6 +2049,9 @@ packages: sass: optional: true + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} @@ -1958,6 +2115,10 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -1977,6 +2138,10 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} @@ -2154,6 +2319,9 @@ packages: resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} engines: {node: '>=18'} + snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -2255,6 +2423,9 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + svg-parser@2.0.4: + resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} + tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -2290,6 +2461,20 @@ packages: peerDependencies: typescript: '>=4.2.0' + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} @@ -2383,6 +2568,9 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + vite-node@1.6.0: resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} engines: {node: ^18.0.0 || >=20.0.0} @@ -2480,6 +2668,10 @@ packages: engines: {node: '>= 14'} hasBin: true + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -2600,6 +2792,10 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + '@emotion/hash@0.9.2': {} '@esbuild/aix-ppc64@0.21.5': @@ -2754,6 +2950,11 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + '@next/env@14.2.21': {} '@next/eslint-plugin-next@14.2.21': @@ -2869,6 +3070,76 @@ snapshots: '@rushstack/eslint-patch@1.10.4': {} + '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + + '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + + '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + + '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + + '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + + '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + + '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + + '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + + '@svgr/babel-preset@8.1.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.26.0) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.26.0) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.26.0) + '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.26.0) + '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.26.0) + '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.26.0) + '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.26.0) + '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.26.0) + + '@svgr/core@8.1.0(typescript@5.5.4)': + dependencies: + '@babel/core': 7.26.0 + '@svgr/babel-preset': 8.1.0(@babel/core@7.26.0) + camelcase: 6.3.0 + cosmiconfig: 8.3.6(typescript@5.5.4) + snake-case: 3.0.4 + transitivePeerDependencies: + - supports-color + - typescript + + '@svgr/hast-util-to-babel-ast@8.0.0': + dependencies: + '@babel/types': 7.26.3 + entities: 4.5.0 + + '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.5.4))': + dependencies: + '@babel/core': 7.26.0 + '@svgr/babel-preset': 8.1.0(@babel/core@7.26.0) + '@svgr/core': 8.1.0(typescript@5.5.4) + '@svgr/hast-util-to-babel-ast': 8.0.0 + svg-parser: 2.0.4 + transitivePeerDependencies: + - supports-color + '@swc/counter@0.1.3': {} '@swc/helpers@0.5.5': @@ -2876,6 +3147,14 @@ snapshots: '@swc/counter': 0.1.3 tslib: 2.8.1 + '@tsconfig/node10@1.0.11': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} + '@types/eslint-scope@3.7.7': dependencies: '@types/eslint': 9.6.1 @@ -2892,6 +3171,10 @@ snapshots: '@types/json5@0.0.29': {} + '@types/node@20.17.12': + dependencies: + undici-types: 6.19.8 + '@types/node@20.17.6': dependencies: undici-types: 6.19.8 @@ -2931,7 +3214,7 @@ snapshots: '@typescript-eslint/types': 8.15.0 '@typescript-eslint/typescript-estree': 8.15.0(typescript@5.5.4) '@typescript-eslint/visitor-keys': 8.15.0 - debug: 4.4.0 + debug: 4.3.7 eslint: 9.17.0 optionalDependencies: typescript: 5.5.4 @@ -3016,6 +3299,23 @@ snapshots: dependencies: '@vanilla-extract/private': 1.0.6 + '@vanilla-extract/esbuild-plugin@2.3.13(@types/node@20.17.12)(esbuild@0.21.5)(terser@5.37.0)': + dependencies: + '@vanilla-extract/integration': 7.1.12(@types/node@20.17.12)(terser@5.37.0) + optionalDependencies: + esbuild: 0.21.5 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + '@vanilla-extract/esbuild-plugin@2.3.13(@types/node@20.17.6)(esbuild@0.21.5)(terser@5.37.0)': dependencies: '@vanilla-extract/integration': 7.1.12(@types/node@20.17.6)(terser@5.37.0) @@ -3033,6 +3333,32 @@ snapshots: - supports-color - terser + '@vanilla-extract/integration@7.1.12(@types/node@20.17.12)(terser@5.37.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) + '@vanilla-extract/babel-plugin-debug-ids': 1.2.0 + '@vanilla-extract/css': 1.17.0 + dedent: 1.5.3 + esbuild: 0.21.5 + eval: 0.1.8 + find-up: 5.0.0 + javascript-stringify: 2.1.0 + mlly: 1.7.3 + vite: 5.4.11(@types/node@20.17.12)(terser@5.37.0) + vite-node: 1.6.0(@types/node@20.17.12)(terser@5.37.0) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + '@vanilla-extract/integration@7.1.12(@types/node@20.17.6)(terser@5.37.0)': dependencies: '@babel/core': 7.26.0 @@ -3059,9 +3385,9 @@ snapshots: - supports-color - terser - '@vanilla-extract/next-plugin@2.4.8(@types/node@20.17.6)(next@14.2.21(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.37.0)(webpack@5.97.1(esbuild@0.21.5))': + '@vanilla-extract/next-plugin@2.4.8(@types/node@20.17.12)(next@14.2.21(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.37.0)(webpack@5.97.1(esbuild@0.21.5))': dependencies: - '@vanilla-extract/webpack-plugin': 2.3.16(@types/node@20.17.6)(terser@5.37.0)(webpack@5.97.1(esbuild@0.21.5)) + '@vanilla-extract/webpack-plugin': 2.3.16(@types/node@20.17.12)(terser@5.37.0)(webpack@5.97.1(esbuild@0.21.5)) next: 14.2.21(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - '@types/node' @@ -3103,9 +3429,9 @@ snapshots: dependencies: '@vanilla-extract/css': 1.17.0 - '@vanilla-extract/webpack-plugin@2.3.16(@types/node@20.17.6)(terser@5.37.0)(webpack@5.97.1(esbuild@0.21.5))': + '@vanilla-extract/webpack-plugin@2.3.16(@types/node@20.17.12)(terser@5.37.0)(webpack@5.97.1(esbuild@0.21.5))': dependencies: - '@vanilla-extract/integration': 7.1.12(@types/node@20.17.6)(terser@5.37.0) + '@vanilla-extract/integration': 7.1.12(@types/node@20.17.12)(terser@5.37.0) debug: 4.4.0 loader-utils: 2.0.4 picocolors: 1.1.1 @@ -3225,6 +3551,10 @@ snapshots: dependencies: acorn: 8.14.0 + acorn-walk@8.3.4: + dependencies: + acorn: 8.14.0 + acorn@8.14.0: {} ajv-formats@2.1.1(ajv@8.17.1): @@ -3250,7 +3580,7 @@ snapshots: ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.0.3 + fast-uri: 3.0.5 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -3268,6 +3598,8 @@ snapshots: ansi-styles@6.2.1: {} + arg@4.1.3: {} + argparse@2.0.1: {} aria-query@5.3.2: {} @@ -3389,6 +3721,8 @@ snapshots: callsites@3.1.0: {} + camelcase@6.3.0: {} + caniuse-lite@1.0.30001683: {} caniuse-lite@1.0.30001690: {} @@ -3431,6 +3765,17 @@ snapshots: convert-source-map@2.0.0: {} + cosmiconfig@8.3.6(typescript@5.5.4): + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + optionalDependencies: + typescript: 5.5.4 + + create-require@1.1.1: {} + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -3495,10 +3840,17 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + diff@4.0.2: {} + doctrine@2.1.0: dependencies: esutils: 2.0.3 + dot-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + dotenv@16.0.3: {} eastasianwidth@0.2.0: {} @@ -3518,8 +3870,14 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.2.1 + entities@4.5.0: {} + environment@1.1.0: {} + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + es-abstract@1.23.5: dependencies: array-buffer-byte-length: 1.0.1 @@ -3619,6 +3977,15 @@ snapshots: dependencies: esbuild: 0.21.5 + esbuild-plugin-svgr@3.1.0(esbuild@0.21.5)(typescript@5.5.4): + dependencies: + '@svgr/core': 8.1.0(typescript@5.5.4) + '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.5.4)) + esbuild: 0.21.5 + transitivePeerDependencies: + - supports-color + - typescript + esbuild@0.21.5: optionalDependencies: '@esbuild/aix-ppc64': 0.21.5 @@ -3909,7 +4276,7 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-uri@3.0.3: {} + fast-uri@3.0.5: {} fastq@1.17.1: dependencies: @@ -4063,6 +4430,8 @@ snapshots: call-bind: 1.0.7 get-intrinsic: 1.2.4 + is-arrayish@0.2.1: {} + is-async-function@2.0.0: dependencies: has-tostringtag: 1.0.2 @@ -4184,7 +4553,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 20.17.6 + '@types/node': 20.17.12 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -4236,6 +4605,8 @@ snapshots: lilconfig@3.1.3: {} + lines-and-columns@1.2.4: {} + lint-staged@15.3.0: dependencies: chalk: 5.4.1 @@ -4286,12 +4657,18 @@ snapshots: dependencies: js-tokens: 4.0.0 + lower-case@2.0.2: + dependencies: + tslib: 2.8.1 + lru-cache@10.4.3: {} lru-cache@5.1.1: dependencies: yallist: 3.1.1 + make-error@1.3.6: {} + media-query-parser@2.0.2: dependencies: '@babel/runtime': 7.26.0 @@ -4369,6 +4746,11 @@ snapshots: - '@babel/core' - babel-plugin-macros + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.8.1 + node-releases@2.0.19: {} npm-run-path@5.3.0: @@ -4442,6 +4824,13 @@ snapshots: dependencies: callsites: 3.1.0 + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.26.2 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + path-exists@4.0.0: {} path-key@3.1.1: {} @@ -4455,6 +4844,8 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 + path-type@4.0.0: {} + pathe@1.1.2: {} picocolors@1.1.1: {} @@ -4671,6 +5062,11 @@ snapshots: ansi-styles: 6.2.1 is-fullwidth-code-point: 5.0.0 + snake-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + source-map-js@1.2.1: {} source-map-support@0.5.21: @@ -4780,6 +5176,8 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + svg-parser@2.0.4: {} + tapable@2.2.1: {} terser-webpack-plugin@5.3.11(esbuild@0.21.5)(webpack@5.97.1(esbuild@0.21.5)): @@ -4817,6 +5215,24 @@ snapshots: dependencies: typescript: 5.5.4 + ts-node@10.9.2(@types/node@20.17.6)(typescript@5.5.4): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.17.6 + acorn: 8.14.0 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.5.4 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 @@ -4924,6 +5340,26 @@ snapshots: dependencies: punycode: 2.3.1 + v8-compile-cache-lib@3.0.1: {} + + vite-node@1.6.0(@types/node@20.17.12)(terser@5.37.0): + dependencies: + cac: 6.7.14 + debug: 4.4.0 + pathe: 1.1.2 + picocolors: 1.1.1 + vite: 5.4.11(@types/node@20.17.12)(terser@5.37.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + vite-node@1.6.0(@types/node@20.17.6)(terser@5.37.0): dependencies: cac: 6.7.14 @@ -4942,6 +5378,16 @@ snapshots: - supports-color - terser + vite@5.4.11(@types/node@20.17.12)(terser@5.37.0): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.49 + rollup: 4.29.1 + optionalDependencies: + '@types/node': 20.17.12 + fsevents: 2.3.3 + terser: 5.37.0 + vite@5.4.11(@types/node@20.17.6)(terser@5.37.0): dependencies: esbuild: 0.21.5 @@ -5085,4 +5531,6 @@ snapshots: yaml@2.6.1: {} + yn@3.1.1: {} + yocto-queue@0.1.0: {}