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: {}