diff --git a/eslint.config.mjs b/eslint.config.mjs
index 4c313dec..123b0c46 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -22,6 +22,7 @@ const eslintConfig = [
'out/**',
'build/**',
'next-env.d.ts',
+ 'scripts/**',
],
},
];
diff --git a/package.json b/package.json
index 85fe47bd..0d719df3 100644
--- a/package.json
+++ b/package.json
@@ -11,7 +11,8 @@
"build": "next build --turbopack",
"build:docker": "docker build -t cheese_frontend .",
"start": "next start",
- "lint": "eslint"
+ "lint": "eslint",
+ "token": "node scripts/generate-color-token.mjs"
},
"dependencies": {
"@tanstack/react-query": "^5.90.2",
diff --git a/public/fonts/PretendardVariable.woff2 b/public/fonts/PretendardVariable.woff2
new file mode 100644
index 00000000..49c54b51
Binary files /dev/null and b/public/fonts/PretendardVariable.woff2 differ
diff --git a/scripts/generate-color-token.mjs b/scripts/generate-color-token.mjs
new file mode 100644
index 00000000..a3745cec
--- /dev/null
+++ b/scripts/generate-color-token.mjs
@@ -0,0 +1,526 @@
+import { readFile, writeFile } from "node:fs/promises";
+import { resolve } from "node:path";
+
+function toKebabCase(input) {
+ return String(input)
+ .replaceAll(/[^a-zA-Z0-9]+/g, "-")
+ .replaceAll(/([a-z0-9])([A-Z])/g, "$1-$2")
+ .toLowerCase()
+ .replaceAll(/-{2,}/g, "-")
+ .replaceAll(/^-|-$/g, "");
+}
+
+function isColorToken(node) {
+ return (
+ node &&
+ typeof node === "object" &&
+ "value" in node &&
+ "type" in node &&
+ node.type === "color"
+ );
+}
+
+function isTypedToken(node) {
+ return node && typeof node === "object" && "value" in node && "type" in node;
+}
+
+function isPlainObject(value) {
+ return value && typeof value === "object" && !Array.isArray(value);
+}
+
+function flattenColorTokens(
+ root,
+ pathParts = [],
+ out = [],
+ pathToVarMap = new Map(),
+ refPrefixSegments = [],
+ refParts = []
+) {
+ if (!root || typeof root !== "object") return { tokens: out, pathToVarMap };
+
+ if (isColorToken(root)) {
+ const variableName = `--${toKebabCase(pathParts.join("-"))}`;
+ out.push({ name: variableName, value: root.value });
+ // Save mapping from dotted path (e.g. Color.Blue.500) to variable name (e.g. --color-blue-500)
+ const dottedKey = pathParts.join(".");
+ pathToVarMap.set(dottedKey, variableName);
+ return { tokens: out, pathToVarMap };
+ }
+
+ for (const [key, value] of Object.entries(root)) {
+ const nextPath = [...pathParts, toKebabCase(key)];
+ // Track JSON reference path using original keys only (no kebab-case)
+ const nextRefParts = [...refParts, key];
+ if (isColorToken(value)) {
+ const varName = `--${toKebabCase(nextPath.join("-"))}`;
+ out.push({ name: varName, value: value.value });
+ const refKey = [...refPrefixSegments, ...nextRefParts].join(".");
+ const canonicalRefKey = refKey
+ .split(".")
+ .map((part) => part.replaceAll(" ", ""))
+ .join(".");
+ pathToVarMap.set(refKey, varName);
+ pathToVarMap.set(canonicalRefKey, varName);
+ } else if (value && typeof value === "object") {
+ flattenColorTokens(
+ value,
+ nextPath,
+ out,
+ pathToVarMap,
+ refPrefixSegments,
+ nextRefParts
+ );
+ }
+ }
+ return { tokens: out, pathToVarMap };
+}
+
+function flattenSemanticTokens(root, pathParts = [], out = []) {
+ if (!root || typeof root !== "object") return out;
+ if (isTypedToken(root)) {
+ out.push({ path: pathParts, value: root.value, type: root.type });
+ return out;
+ }
+ for (const [key, value] of Object.entries(root)) {
+ flattenSemanticTokens(value, [...pathParts, toKebabCase(key)], out);
+ }
+ return out;
+}
+
+function resolveReferenceValue(value, pathToVarMap) {
+ if (typeof value !== "string") return null;
+ const match = value.match(/^\{([^}]+)\}$/);
+ if (!match) return null;
+ let ref = match[1]; // e.g., Color.Blue.500
+ // Try direct key first
+ if (pathToVarMap.has(ref)) return `var(${pathToVarMap.get(ref)})`;
+ // Try normalized key (remove spaces and normalize case of first segment)
+ const parts = ref.split(".");
+ if (parts.length > 0) parts[0] = parts[0].trim();
+ const canonical = parts.map((p) => p.replaceAll(" ", "")).join(".");
+ if (pathToVarMap.has(canonical)) return `var(${pathToVarMap.get(canonical)})`;
+ // Last attempt: lower-cased, kebab combined map
+ const lower = parts.map((p) => p.toLowerCase()).join(".");
+ if (pathToVarMap.has(lower)) return `var(${pathToVarMap.get(lower)})`;
+ return null;
+}
+
+// Map common weight names to numeric values
+
+function toPx(value) {
+ if (typeof value === "number") return `${value}px`;
+ if (typeof value === "string")
+ return /px$/.test(value) ? value : `${value}px`;
+ return String(value);
+}
+
+function collectTextPrimitives(primitiveRoot) {
+ const textRoot = {};
+ if (!isPlainObject(primitiveRoot)) return textRoot;
+
+ const fontRoot = primitiveRoot.font;
+ if (!isPlainObject(fontRoot)) return textRoot;
+
+ // Extract font family
+ const fontFamily = fontRoot.family?.pretendard?.value;
+ if (fontFamily) {
+ textRoot.font = { fontFamily };
+ }
+
+ // Extract font weights
+ const fontWeights = {};
+ if (isPlainObject(fontRoot.weight)) {
+ for (const [wKey, wVal] of Object.entries(fontRoot.weight)) {
+ if (isTypedToken(wVal)) {
+ fontWeights[wKey] = wVal.value;
+ }
+ }
+ }
+
+ // Extract sizes and line heights
+ const sizes = fontRoot.size || {};
+ const lineHeights = fontRoot["line height"] || {};
+ const letterSpacings = fontRoot["letter spacing"] || {};
+
+ // Create font tokens for each size
+ for (const [sizeKey, sizeObj] of Object.entries(sizes)) {
+ if (!isTypedToken(sizeObj)) continue;
+
+ const sizeValue = sizeObj.value;
+ const lineHeightObj = lineHeights[sizeKey];
+ const letterSpacingObj = letterSpacings[sizeKey];
+
+ const sizeName = `size-${sizeKey}`;
+ textRoot[sizeName] = {
+ fontSize: toPx(sizeValue),
+ };
+
+ if (isTypedToken(lineHeightObj)) {
+ textRoot[sizeName].lineHeight = toPx(lineHeightObj.value);
+ }
+
+ if (isTypedToken(letterSpacingObj)) {
+ textRoot[sizeName].letterSpacing = toPx(letterSpacingObj.value);
+ }
+ }
+
+ // Add font weights to textRoot
+ if (Object.keys(fontWeights).length > 0) {
+ textRoot.weight = { fontWeight: fontWeights };
+ }
+
+ return textRoot;
+}
+
+function buildTextRootCss(textRoot) {
+ const lines = [];
+ for (const [groupName, groupVal] of Object.entries(textRoot)) {
+ if (groupName === "font" && groupVal.fontFamily) {
+ lines.push(` --font-family-primary: ${groupVal.fontFamily};`);
+ }
+ if (groupName === "weight" && groupVal.fontWeight) {
+ for (const [wKey, wVal] of Object.entries(groupVal.fontWeight)) {
+ lines.push(` --font-weight-${wKey}: ${wVal};`);
+ }
+ }
+ if (groupName.startsWith("size-")) {
+ const sizeKey = groupName.replace("size-", "");
+ if (groupVal.fontSize) {
+ lines.push(` --font-size-${sizeKey}: ${groupVal.fontSize};`);
+ }
+ if (groupVal.lineHeight) {
+ lines.push(` --line-height-${sizeKey}: ${groupVal.lineHeight};`);
+ }
+ if (groupVal.letterSpacing) {
+ lines.push(` --letter-spacing-${sizeKey}: ${groupVal.letterSpacing};`);
+ }
+ }
+ }
+ return lines;
+}
+
+function buildTextThemeCss(textRoot) {
+ const lines = [];
+ for (const [groupName, groupVal] of Object.entries(textRoot)) {
+ if (groupName === "font" && groupVal.fontFamily) {
+ lines.push(` --font-primary: var(--font-family-primary);`);
+ }
+ if (groupName.startsWith("size-")) {
+ const sizeKey = groupName.replace("size-", "");
+ if (groupVal.fontSize) {
+ lines.push(` --text-${sizeKey}: var(--font-size-${sizeKey});`);
+ }
+ if (groupVal.lineHeight) {
+ lines.push(` --leading-${sizeKey}: var(--line-height-${sizeKey});`);
+ }
+ if (groupVal.letterSpacing) {
+ lines.push(
+ ` --tracking-${sizeKey}: var(--letter-spacing-${sizeKey});`
+ );
+ }
+ }
+ }
+ return lines;
+}
+
+function buildTypographyUtilitiesCss(textRoot) {
+ const lines = [];
+ const start = "/* generated-typography-utilities:start */";
+ const end = "/* generated-typography-utilities:end */";
+ lines.push(start);
+
+ const weights = textRoot.weight?.fontWeight || {};
+ const hasFamily = Boolean(textRoot.font?.fontFamily);
+
+ for (const [groupName, groupVal] of Object.entries(textRoot)) {
+ if (!groupName.startsWith("size-")) continue;
+
+ const sizeKey = groupName.replace("size-", "");
+ const classBase = `text-${sizeKey}`;
+ const props = [];
+
+ if (groupVal.fontSize) {
+ props.push(` font-size: var(--text-${sizeKey});`);
+ }
+ if (groupVal.lineHeight) {
+ props.push(` line-height: var(--leading-${sizeKey});`);
+ }
+ if (hasFamily) {
+ props.push(` font-family: var(--font-primary);`);
+ }
+ if (groupVal.letterSpacing) {
+ props.push(` letter-spacing: var(--tracking-${sizeKey});`);
+ }
+
+ // base utility without explicit weight
+ lines.push(`@utility ${classBase} {`);
+ lines.push(...props);
+ lines.push(`}`);
+
+ // utilities per weight
+ for (const [weightName] of Object.entries(weights)) {
+ const className = `${classBase}-${weightName}`;
+ lines.push(`@utility ${className} {`);
+ lines.push(...props);
+ lines.push(` font-weight: var(--font-weight-${weightName});`);
+ lines.push(`}`);
+ }
+ }
+
+ lines.push(end);
+ return lines;
+}
+
+async function main() {
+ const projectRoot = process.cwd();
+ const inputPath = resolve(projectRoot, "src/app/token.json");
+ const globalsPath = resolve(projectRoot, "src/app/globals.css");
+
+ const raw = await readFile(inputPath, "utf8");
+ const tokens = JSON.parse(raw);
+
+ const primitiveMode = tokens["primitive/Mode 1"] || {};
+ const primitive = primitiveMode?.color;
+ if (!primitive) {
+ console.error(
+ 'No primitive color tokens found at "primitive/Mode 1" → "color"'
+ );
+ }
+
+ const { tokens: colorVars, pathToVarMap } = flattenColorTokens(
+ primitive,
+ ["color"],
+ [],
+ new Map(),
+ ["color"],
+ []
+ );
+
+ // Use semantic/Mode 1 as the main semantic tokens
+ const semanticRoot = tokens["semantic/Mode 1"];
+ const semanticTokens = semanticRoot
+ ? flattenSemanticTokens(semanticRoot)
+ : [];
+
+ // Collect text primitives from primitive/Mode 1 (excluding Color)
+ const textPrimitives = collectTextPrimitives(primitiveMode);
+
+ // Read globals.css to inject tokens
+ let globalsCss = await readFile(globalsPath, "utf8");
+
+ // Remove any tokens.css import if exists
+ globalsCss = globalsCss.replace(
+ /\n?@import\s+["']\.\.\/styles\/tokens\.css["'];?\n?/g,
+ "\n"
+ );
+
+ // Helper to find block range by selector start index
+ function findBlockRange(source, startIndexOfBrace) {
+ let depth = 0;
+ for (let i = startIndexOfBrace; i < source.length; i++) {
+ const ch = source[i];
+ if (ch === "{") depth++;
+ else if (ch === "}") {
+ depth--;
+ if (depth === 0) {
+ return { start: startIndexOfBrace, end: i };
+ }
+ }
+ }
+ return null;
+ }
+
+ // Locate top-level :root block (first occurrence)
+ const rootSelRegex = /:root\s*\{/g;
+ const rootSelMatch = rootSelRegex.exec(globalsCss);
+ if (!rootSelMatch) {
+ throw new Error("Could not find :root block in src/app/globals.css");
+ }
+ const rootBlock = findBlockRange(
+ globalsCss,
+ rootSelMatch.index + rootSelMatch[0].length - 1
+ );
+ if (!rootBlock) throw new Error("Failed to parse :root block");
+
+ // Prepare primitive color tokens content
+ const primitiveStart = "/* generated-color-tokens:start */";
+ const primitiveEnd = "/* generated-color-tokens:end */";
+ const primitiveLines = [primitiveStart];
+ for (const { name, value } of colorVars) {
+ primitiveLines.push(` ${name}: ${value};`);
+ }
+ primitiveLines.push(primitiveEnd);
+ const primitiveBlock = "\n" + primitiveLines.join("\n") + "\n";
+
+ // Prepare primitive text tokens content
+ const textStart = "/* generated-text-tokens:start */";
+ const textEnd = "/* generated-text-tokens:end */";
+ const textLines = [textStart, ...buildTextRootCss(textPrimitives), textEnd];
+ const textBlock = "\n" + textLines.join("\n") + "\n";
+
+ // Replace or insert into :root block
+ const rootContent = globalsCss.slice(rootBlock.start + 1, rootBlock.end);
+ const existingPrimitiveRe = new RegExp(
+ primitiveStart.replace(/[/*]/g, (m) => `\\${m}`) +
+ "[\\s\\S]*?" +
+ primitiveEnd.replace(/[/*]/g, (m) => `\\${m}`),
+ "m"
+ );
+ let newRootContent;
+ if (existingPrimitiveRe.test(rootContent)) {
+ newRootContent = rootContent.replace(
+ existingPrimitiveRe,
+ primitiveBlock.trim()
+ );
+ } else {
+ newRootContent = rootContent.replace(/\n\s*\}$/, "") + primitiveBlock + "}";
+ // The '}' will be re-added when we reconstruct full content below; ensure no duplicate
+ newRootContent = newRootContent.replace(/\}\s*$/, "");
+ }
+
+ // Reconstruct globals with updated :root
+ globalsCss =
+ globalsCss.slice(0, rootBlock.start + 1) +
+ newRootContent +
+ globalsCss.slice(rootBlock.end);
+
+ // Inject or replace text tokens in :root
+ const rootSelMatch2 = /:root\s*\{/g.exec(globalsCss);
+ if (!rootSelMatch2) throw new Error(":root disappeared unexpectedly");
+ const rootBlock2 = findBlockRange(
+ globalsCss,
+ rootSelMatch2.index + rootSelMatch2[0].length - 1
+ );
+ const rootContent2 = globalsCss.slice(rootBlock2.start + 1, rootBlock2.end);
+ const existingTextRe = new RegExp(
+ textStart.replace(/[/*]/g, (m) => `\\${m}`) +
+ "[\\s\\S]*?" +
+ textEnd.replace(/[/*]/g, (m) => `\\${m}`),
+ "m"
+ );
+ let newRootContent2;
+ if (existingTextRe.test(rootContent2)) {
+ newRootContent2 = rootContent2.replace(existingTextRe, textBlock.trim());
+ } else {
+ newRootContent2 = rootContent2.replace(/\n\s*\}$/, "") + textBlock + "}";
+ newRootContent2 = newRootContent2.replace(/\}\s*$/, "");
+ }
+ globalsCss =
+ globalsCss.slice(0, rootBlock2.start + 1) +
+ newRootContent2 +
+ globalsCss.slice(rootBlock2.end);
+
+ // Locate @theme inline block
+ const themeRegex = /@theme\s+inline\s*\{/g;
+ const themeMatch = themeRegex.exec(globalsCss);
+ if (!themeMatch) {
+ throw new Error(
+ 'Could not find "@theme inline {" block in src/app/globals.css'
+ );
+ }
+ const themeBlock = findBlockRange(
+ globalsCss,
+ themeMatch.index + themeMatch[0].length - 1
+ );
+ if (!themeBlock) throw new Error("Failed to parse @theme inline block");
+
+ // Prepare semantic tokens (without 'semantic' prefix) to go into @theme inline
+ const semanticStart = "/* generated-semantic-tokens:start */";
+ const semanticEnd = "/* generated-semantic-tokens:end */";
+ const semanticLines = [semanticStart];
+ for (const { path, value, type } of semanticTokens) {
+ if (type !== "color") continue;
+ const varName = `--${toKebabCase(path.join("-"))}`; // e.g., --color-bg-interactive-primary
+ const refValue = resolveReferenceValue(value, pathToVarMap);
+ const finalValue = refValue ?? value;
+ semanticLines.push(` ${varName}: ${finalValue};`);
+ }
+ semanticLines.push(semanticEnd);
+ const semanticBlock = "\n" + semanticLines.join("\n") + "\n";
+
+ // Prepare typography theme tokens
+ const typoStart = "/* generated-typography-tokens:start */";
+ const typoEnd = "/* generated-typography-tokens:end */";
+ const typoLines = [typoStart, ...buildTextThemeCss(textPrimitives), typoEnd];
+ const typoBlock = "\n" + typoLines.join("\n") + "\n";
+
+ const themeContent = globalsCss.slice(themeBlock.start + 1, themeBlock.end);
+ const existingSemanticRe = new RegExp(
+ semanticStart.replace(/[/*]/g, (m) => `\\${m}`) +
+ "[\\s\\S]*?" +
+ semanticEnd.replace(/[/*]/g, (m) => `\\${m}`),
+ "m"
+ );
+ let newThemeContent;
+ if (existingSemanticRe.test(themeContent)) {
+ newThemeContent = themeContent.replace(
+ existingSemanticRe,
+ semanticBlock.trim()
+ );
+ } else {
+ newThemeContent =
+ themeContent.replace(/\n\s*\}$/, "") + semanticBlock + "}";
+ newThemeContent = newThemeContent.replace(/\}\s*$/, "");
+ }
+
+ globalsCss =
+ globalsCss.slice(0, themeBlock.start + 1) +
+ newThemeContent +
+ globalsCss.slice(themeBlock.end);
+
+ // Inject or replace typography theme tokens
+ const themeMatch2 = /@theme\s+inline\s*\{/g.exec(globalsCss);
+ if (!themeMatch2) throw new Error("@theme inline disappeared unexpectedly");
+ const themeBlock2 = findBlockRange(
+ globalsCss,
+ themeMatch2.index + themeMatch2[0].length - 1
+ );
+ const themeContent2 = globalsCss.slice(
+ themeBlock2.start + 1,
+ themeBlock2.end
+ );
+ const existingTypoRe = new RegExp(
+ typoStart.replace(/[/*]/g, (m) => `\\${m}`) +
+ "[\\s\\S]*?" +
+ typoEnd.replace(/[/*]/g, (m) => `\\${m}`),
+ "m"
+ );
+ let newThemeContent2;
+ if (existingTypoRe.test(themeContent2)) {
+ newThemeContent2 = themeContent2.replace(existingTypoRe, typoBlock.trim());
+ } else {
+ newThemeContent2 = themeContent2.replace(/\n\s*\}$/, "") + typoBlock + "}";
+ newThemeContent2 = newThemeContent2.replace(/\}\s*$/, "");
+ }
+
+ globalsCss =
+ globalsCss.slice(0, themeBlock2.start + 1) +
+ newThemeContent2 +
+ globalsCss.slice(themeBlock2.end);
+
+ // Inject or replace typography utilities at file root
+ const utilStart = "/* generated-typography-utilities:start */";
+ const utilEnd = "/* generated-typography-utilities:end */";
+ const utilLines = buildTypographyUtilitiesCss(textPrimitives);
+ const utilBlock = utilLines.join("\n") + "\n";
+ const utilRe = new RegExp(
+ utilStart.replace(/[/*]/g, (m) => `\\${m}`) +
+ "[\\s\\S]*?" +
+ utilEnd.replace(/[/*]/g, (m) => `\\${m}`),
+ "m"
+ );
+ if (utilRe.test(globalsCss)) {
+ globalsCss = globalsCss.replace(utilRe, utilBlock.trim());
+ } else {
+ // Append at end of file with a preceding newline
+ globalsCss = globalsCss.replace(/\s*$/, "\n" + utilBlock);
+ }
+
+ await writeFile(globalsPath, globalsCss, "utf8");
+ console.log(`Updated ${globalsPath}`);
+}
+
+main().catch((err) => {
+ console.error(err);
+ process.exit(1);
+});
diff --git a/src/app/globals.css b/src/app/globals.css
index a2dc41ec..146caaec 100644
--- a/src/app/globals.css
+++ b/src/app/globals.css
@@ -3,6 +3,97 @@
:root {
--background: #ffffff;
--foreground: #171717;
+
+/* generated-color-tokens:start */
+ --color-primary-25: #fffbeb;
+ --color-primary-50: #fff7d6;
+ --color-primary-100: #fff2c2;
+ --color-primary-200: #ffe894;
+ --color-primary-300: #ffdc5c;
+ --color-primary-400: #ffcd14;
+ --color-primary-500: #ffb700;
+ --color-primary-600: #e09900;
+ --color-primary-700: #996300;
+ --color-primary-800: #664200;
+ --color-primary-900: #332100;
+ --color-accent-25: #fff5f6;
+ --color-accent-50: #ffe5ea;
+ --color-accent-100: #ffccd4;
+ --color-accent-200: #ff99aa;
+ --color-accent-300: #ff6680;
+ --color-accent-400: #ff3355;
+ --color-accent-500: #ff002b;
+ --color-accent-600: #cc0022;
+ --color-accent-700: #99001a;
+ --color-accent-800: #660011;
+ --color-accent-900: #330009;
+ --color-success-25: #ebffeb;
+ --color-success-50: #c7ffc7;
+ --color-success-100: #a8ffa8;
+ --color-success-200: #7aff7a;
+ --color-success-300: #1aff1a;
+ --color-success-400: #00e500;
+ --color-success-500: #00c400;
+ --color-success-600: #009900;
+ --color-success-700: #006600;
+ --color-success-800: #004d00;
+ --color-success-900: #002900;
+ --color-neutral-0: #ffffff;
+ --color-neutral-25: #f7f7f8;
+ --color-neutral-50: #f1f2f3;
+ --color-neutral-100: #e5e5e7;
+ --color-neutral-200: #c9cacf;
+ --color-neutral-300: #afb0b7;
+ --color-neutral-400: #94969e;
+ --color-neutral-500: #747681;
+ --color-neutral-600: #56575f;
+ --color-neutral-700: #424349;
+ --color-neutral-800: #2c2c30;
+ --color-neutral-900: #18191b;
+ --color-alpha-white-white-100: #ffffff;
+ --color-alpha-white-white-80: #ffffffcc;
+ --color-alpha-white-white-50: #ffffff80;
+ --color-alpha-white-white-20: #ffffff33;
+ --color-alpha-white-white-0: #ffffff00;
+ --color-alpha-black-black-100: #18191b;
+ --color-alpha-black-black-75: #18191bcc;
+ --color-alpha-black-black-50: #18191b80;
+ --color-alpha-black-black-20: #18191b33;
+ --color-alpha-black-black-0: #18191b00;
+ --color-alpha-black-black-10: #18191b1a;
+ --color-alpha-primary-yellow-100: #ffcd14;
+ --color-alpha-primary-yellow-80: #ffcd14cc;
+ --color-alpha-primary-yellow-50: #ffcd1480;
+ --color-alpha-primary-yellow-20: #ffcd1433;
+ --color-alpha-primary-yellow-0: #ffcd1400;
+/* generated-color-tokens:end */
+
+/* generated-text-tokens:start */
+ --font-family-primary: pretendard;
+ --font-size-12: 12px;
+ --font-size-13: 13px;
+ --font-size-14: 14px;
+ --font-size-15: 15px;
+ --font-size-16: 16px;
+ --font-size-17: 17px;
+ --font-size-18: 18px;
+ --line-height-18: 18px;
+ --font-size-20: 20px;
+ --line-height-20: 20px;
+ --font-size-24: 24px;
+ --line-height-24: 24px;
+ --font-size-28: 28px;
+ --line-height-28: 28px;
+ --font-size-32: 32px;
+ --font-size-36: 36px;
+ --line-height-36: 36px;
+ --font-size-40: 40px;
+ --font-size-44: 44px;
+ --font-weight-400: 400;
+ --font-weight-500: 500;
+ --font-weight-600: 600;
+ --font-weight-700: 700;
+/* generated-text-tokens:end */
}
@theme inline {
@@ -10,6 +101,102 @@
--color-foreground: var(--foreground);
--font-sans: var(--font-geist-sans);
--font-mono: var(--font-geist-mono);
+
+/* generated-semantic-tokens:start */
+ --color-button-primary-fill: var(--color-primary-400);
+ --color-button-primary-fill-pressed: var(--color-primary-500);
+ --color-button-disabled-fill: var(--color-neutral-100);
+ --color-button-secondary-fill-pressed: var(--color-primary-100);
+ --color-button-secondary-fill: var(--color-primary-25);
+ --color-button-secodnary-border: var(--color-primary-400);
+ --color-button-disabled-border: var(--color-neutral-200);
+ --color-button-tertiary-border: var(--color-neutral-600);
+ --color-button-tertiary-fill-pressed: var(--color-neutral-50);
+ --color-button-tertiary-fill: var(--color-neutral-25);
+ --color-background-white: var(--color-neutral-0);
+ --color-background-dim: var(--color-alpha-black-black-75);
+ --color-background-dim-dark: var(--color-alpha-black-black-20);
+ --color-background-dim-darker: var(--color-alpha-black-black-50);
+ --color-surface-surface-default: var(--color-neutral-50);
+ --color-surface-surface-muted: var(--color-neutral-100);
+ --color-surface-surface-elevated: var(--color-neutral-25);
+ --color-surface-white: var(--color-neutral-0);
+ --color-surface-info: var(--color-alpha-black-black-75);
+ --color-surface-inverse: var(--color-neutral-900);
+ --color-text-basic: var(--color-neutral-900);
+ --color-text-subtle: var(--color-neutral-700);
+ --color-text-disabled: var(--color-neutral-400);
+ --color-text-basic-inverse: var(--color-neutral-0);
+ --color-text-subtle-inverse: var(--color-neutral-300);
+ --color-text-primary: var(--color-primary-900);
+ --color-text-accent: var(--color-accent-700);
+ --color-text-success: var(--color-success-700);
+ --color-text-secondary: var(--color-primary-700);
+ --color-text-subtler: var(--color-neutral-500);
+ --color-text-brand: var(--color-primary-400);
+ --color-text-error: var(--color-accent-500);
+ --color-icon-inverse: var(--color-neutral-0);
+ --color-icon-primary: var(--color-primary-400);
+ --color-icon-subtler: var(--color-neutral-500);
+ --color-icon-subtle: var(--color-neutral-500);
+ --color-icon-disabled: var(--color-neutral-400);
+ --color-icon-basic: var(--color-neutral-700);
+ --color-icon-gray: var(--color-neutral-200);
+ --color-icon-secondary: var(--color-primary-700);
+ --color-icon-tertiary: var(--color-primary-900);
+ --color-brand-primary: var(--color-primary-400);
+ --color-element-primary: var(--color-primary-400);
+ --color-element-primary-light: var(--color-primary-100);
+ --color-element-primary-lighter: var(--color-primary-25);
+ --color-element-primary-alpha: var(--color-alpha-primary-yellow-20);
+ --color-element-gray-subtler: var(--color-neutral-25);
+ --color-element-gray-subtle: var(--color-neutral-50);
+ --color-element-gray: var(--color-neutral-200);
+ --color-element-gray-lighter: var(--color-neutral-25);
+ --color-element-gray-light: var(--color-neutral-50);
+ --color-element-gray-dark: var(--color-neutral-500);
+ --color-element-alpha-light: var(--color-alpha-white-white-80);
+ --color-element-white: var(--color-neutral-0);
+ --color-element-alpha-dark: var(--color-alpha-black-black-50);
+ --color-border-primary: var(--color-primary-400);
+ --color-border-primary-light: var(--color-primary-100);
+ --color-border-error: var(--color-accent-500);
+ --color-border-gray: var(--color-neutral-300);
+ --color-border-gray-light: var(--color-neutral-200);
+ --color-border-gray-dark: var(--color-neutral-600);
+ --color-border-gray-darker: var(--color-neutral-800);
+ --color-divider-gray: var(--color-neutral-100);
+ --color-divider-gray-dark: var(--color-neutral-600);
+ --color-divider-gray-light: var(--color-neutral-25);
+ --color-divider-inverse: var(--color-neutral-0);
+ --color-action-secondary-pressed: var(--color-neutral-100);
+ --color-action-secondary: var(--color-neutral-0);
+ --color-action-primary-pressed: var(--color-primary-400);
+ --color-action-primary: var(--color-primary-25);
+/* generated-semantic-tokens:end */
+
+/* generated-typography-tokens:start */
+ --font-primary: var(--font-family-primary);
+ --text-12: var(--font-size-12);
+ --text-13: var(--font-size-13);
+ --text-14: var(--font-size-14);
+ --text-15: var(--font-size-15);
+ --text-16: var(--font-size-16);
+ --text-17: var(--font-size-17);
+ --text-18: var(--font-size-18);
+ --leading-18: var(--line-height-18);
+ --text-20: var(--font-size-20);
+ --leading-20: var(--line-height-20);
+ --text-24: var(--font-size-24);
+ --leading-24: var(--line-height-24);
+ --text-28: var(--font-size-28);
+ --leading-28: var(--line-height-28);
+ --text-32: var(--font-size-32);
+ --text-36: var(--font-size-36);
+ --leading-36: var(--line-height-36);
+ --text-40: var(--font-size-40);
+ --text-44: var(--font-size-44);
+/* generated-typography-tokens:end */
}
@media (prefers-color-scheme: dark) {
@@ -24,3 +211,366 @@ body {
color: var(--foreground);
font-family: Arial, Helvetica, sans-serif;
}
+/* generated-typography-utilities:start */
+@utility text-12 {
+ font-size: var(--text-12);
+ font-family: var(--font-primary);
+}
+@utility text-12-400 {
+ font-size: var(--text-12);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-400);
+}
+@utility text-12-500 {
+ font-size: var(--text-12);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-500);
+}
+@utility text-12-600 {
+ font-size: var(--text-12);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-600);
+}
+@utility text-12-700 {
+ font-size: var(--text-12);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-700);
+}
+@utility text-13 {
+ font-size: var(--text-13);
+ font-family: var(--font-primary);
+}
+@utility text-13-400 {
+ font-size: var(--text-13);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-400);
+}
+@utility text-13-500 {
+ font-size: var(--text-13);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-500);
+}
+@utility text-13-600 {
+ font-size: var(--text-13);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-600);
+}
+@utility text-13-700 {
+ font-size: var(--text-13);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-700);
+}
+@utility text-14 {
+ font-size: var(--text-14);
+ font-family: var(--font-primary);
+}
+@utility text-14-400 {
+ font-size: var(--text-14);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-400);
+}
+@utility text-14-500 {
+ font-size: var(--text-14);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-500);
+}
+@utility text-14-600 {
+ font-size: var(--text-14);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-600);
+}
+@utility text-14-700 {
+ font-size: var(--text-14);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-700);
+}
+@utility text-15 {
+ font-size: var(--text-15);
+ font-family: var(--font-primary);
+}
+@utility text-15-400 {
+ font-size: var(--text-15);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-400);
+}
+@utility text-15-500 {
+ font-size: var(--text-15);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-500);
+}
+@utility text-15-600 {
+ font-size: var(--text-15);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-600);
+}
+@utility text-15-700 {
+ font-size: var(--text-15);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-700);
+}
+@utility text-16 {
+ font-size: var(--text-16);
+ font-family: var(--font-primary);
+}
+@utility text-16-400 {
+ font-size: var(--text-16);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-400);
+}
+@utility text-16-500 {
+ font-size: var(--text-16);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-500);
+}
+@utility text-16-600 {
+ font-size: var(--text-16);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-600);
+}
+@utility text-16-700 {
+ font-size: var(--text-16);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-700);
+}
+@utility text-17 {
+ font-size: var(--text-17);
+ font-family: var(--font-primary);
+}
+@utility text-17-400 {
+ font-size: var(--text-17);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-400);
+}
+@utility text-17-500 {
+ font-size: var(--text-17);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-500);
+}
+@utility text-17-600 {
+ font-size: var(--text-17);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-600);
+}
+@utility text-17-700 {
+ font-size: var(--text-17);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-700);
+}
+@utility text-18 {
+ font-size: var(--text-18);
+ line-height: var(--leading-18);
+ font-family: var(--font-primary);
+}
+@utility text-18-400 {
+ font-size: var(--text-18);
+ line-height: var(--leading-18);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-400);
+}
+@utility text-18-500 {
+ font-size: var(--text-18);
+ line-height: var(--leading-18);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-500);
+}
+@utility text-18-600 {
+ font-size: var(--text-18);
+ line-height: var(--leading-18);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-600);
+}
+@utility text-18-700 {
+ font-size: var(--text-18);
+ line-height: var(--leading-18);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-700);
+}
+@utility text-20 {
+ font-size: var(--text-20);
+ line-height: var(--leading-20);
+ font-family: var(--font-primary);
+}
+@utility text-20-400 {
+ font-size: var(--text-20);
+ line-height: var(--leading-20);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-400);
+}
+@utility text-20-500 {
+ font-size: var(--text-20);
+ line-height: var(--leading-20);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-500);
+}
+@utility text-20-600 {
+ font-size: var(--text-20);
+ line-height: var(--leading-20);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-600);
+}
+@utility text-20-700 {
+ font-size: var(--text-20);
+ line-height: var(--leading-20);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-700);
+}
+@utility text-24 {
+ font-size: var(--text-24);
+ line-height: var(--leading-24);
+ font-family: var(--font-primary);
+}
+@utility text-24-400 {
+ font-size: var(--text-24);
+ line-height: var(--leading-24);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-400);
+}
+@utility text-24-500 {
+ font-size: var(--text-24);
+ line-height: var(--leading-24);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-500);
+}
+@utility text-24-600 {
+ font-size: var(--text-24);
+ line-height: var(--leading-24);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-600);
+}
+@utility text-24-700 {
+ font-size: var(--text-24);
+ line-height: var(--leading-24);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-700);
+}
+@utility text-28 {
+ font-size: var(--text-28);
+ line-height: var(--leading-28);
+ font-family: var(--font-primary);
+}
+@utility text-28-400 {
+ font-size: var(--text-28);
+ line-height: var(--leading-28);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-400);
+}
+@utility text-28-500 {
+ font-size: var(--text-28);
+ line-height: var(--leading-28);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-500);
+}
+@utility text-28-600 {
+ font-size: var(--text-28);
+ line-height: var(--leading-28);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-600);
+}
+@utility text-28-700 {
+ font-size: var(--text-28);
+ line-height: var(--leading-28);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-700);
+}
+@utility text-32 {
+ font-size: var(--text-32);
+ font-family: var(--font-primary);
+}
+@utility text-32-400 {
+ font-size: var(--text-32);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-400);
+}
+@utility text-32-500 {
+ font-size: var(--text-32);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-500);
+}
+@utility text-32-600 {
+ font-size: var(--text-32);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-600);
+}
+@utility text-32-700 {
+ font-size: var(--text-32);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-700);
+}
+@utility text-36 {
+ font-size: var(--text-36);
+ line-height: var(--leading-36);
+ font-family: var(--font-primary);
+}
+@utility text-36-400 {
+ font-size: var(--text-36);
+ line-height: var(--leading-36);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-400);
+}
+@utility text-36-500 {
+ font-size: var(--text-36);
+ line-height: var(--leading-36);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-500);
+}
+@utility text-36-600 {
+ font-size: var(--text-36);
+ line-height: var(--leading-36);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-600);
+}
+@utility text-36-700 {
+ font-size: var(--text-36);
+ line-height: var(--leading-36);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-700);
+}
+@utility text-40 {
+ font-size: var(--text-40);
+ font-family: var(--font-primary);
+}
+@utility text-40-400 {
+ font-size: var(--text-40);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-400);
+}
+@utility text-40-500 {
+ font-size: var(--text-40);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-500);
+}
+@utility text-40-600 {
+ font-size: var(--text-40);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-600);
+}
+@utility text-40-700 {
+ font-size: var(--text-40);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-700);
+}
+@utility text-44 {
+ font-size: var(--text-44);
+ font-family: var(--font-primary);
+}
+@utility text-44-400 {
+ font-size: var(--text-44);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-400);
+}
+@utility text-44-500 {
+ font-size: var(--text-44);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-500);
+}
+@utility text-44-600 {
+ font-size: var(--text-44);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-600);
+}
+@utility text-44-700 {
+ font-size: var(--text-44);
+ font-family: var(--font-primary);
+ font-weight: var(--font-weight-700);
+}
+/* generated-typography-utilities:end */
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index 49c16d87..5a18b94d 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -1,20 +1,17 @@
import type { Metadata } from 'next';
-import { Geist, Geist_Mono } from 'next/font/google';
+import localFont from 'next/font/local';
import './globals.css';
-const geistSans = Geist({
- variable: '--font-geist-sans',
- subsets: ['latin'],
-});
-
-const geistMono = Geist_Mono({
- variable: '--font-geist-mono',
- subsets: ['latin'],
+const pretendard = localFont({
+ src: '../../public/fonts/PretendardVariable.woff2',
+ display: 'swap',
+ weight: '100 900',
+ variable: '--font-pretendard',
});
export const metadata: Metadata = {
- title: 'Create Next App',
- description: 'Generated by create next app',
+ title: '치즈',
+ description: '치즈',
};
export default function RootLayout({
@@ -23,12 +20,8 @@ export default function RootLayout({
children: React.ReactNode;
}>) {
return (
-
-
- {children}
-
+
+ {children}
);
}
diff --git a/src/app/page.tsx b/src/app/page.tsx
index d9872498..df9a42b4 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -1,103 +1,7 @@
-import Image from 'next/image';
-
export default function Home() {
return (
-
-
-
-
- -
- Get started by editing{' '}
-
- src/app/page.tsx
-
- .
-
- -
- Save and see your changes instantly.
-
-
-
-
-
-
+
+ 안녕하세요
);
}
diff --git a/src/app/token.json b/src/app/token.json
new file mode 100644
index 00000000..088544a9
--- /dev/null
+++ b/src/app/token.json
@@ -0,0 +1,1880 @@
+{
+ "global": {
+ "primary": {
+ "25": {
+ "value": "#fffbeb",
+ "type": "color"
+ },
+ "50": {
+ "value": "#fff7d6",
+ "type": "color"
+ },
+ "100": {
+ "value": "#fff2c2",
+ "type": "color"
+ },
+ "200": {
+ "value": "#ffe894",
+ "type": "color"
+ },
+ "300": {
+ "value": "#ffdc5c",
+ "type": "color"
+ },
+ "400": {
+ "value": "#ffcd14",
+ "type": "color"
+ },
+ "500": {
+ "value": "#ffb700",
+ "type": "color"
+ },
+ "600": {
+ "value": "#d18800",
+ "type": "color"
+ },
+ "700": {
+ "value": "#996300",
+ "type": "color"
+ },
+ "800": {
+ "value": "#664200",
+ "type": "color"
+ },
+ "900": {
+ "value": "#332100",
+ "type": "color"
+ }
+ },
+ "gray": {
+ "25": {
+ "value": "#f8f8f7",
+ "type": "color"
+ },
+ "50": {
+ "value": "#f3f3f1",
+ "type": "color"
+ },
+ "100": {
+ "value": "#e7e6e4",
+ "type": "color"
+ },
+ "200": {
+ "value": "#cfcec9",
+ "type": "color"
+ },
+ "300": {
+ "value": "#b7b5ae",
+ "type": "color"
+ },
+ "400": {
+ "value": "#9f9d93",
+ "type": "color"
+ },
+ "500": {
+ "value": "#827f73",
+ "type": "color"
+ },
+ "600": {
+ "value": "#605d55",
+ "type": "color"
+ },
+ "700": {
+ "value": "#494741",
+ "type": "color"
+ },
+ "800": {
+ "value": "#31302b",
+ "type": "color"
+ },
+ "900": {
+ "value": "#1b1a18",
+ "type": "color"
+ }
+ },
+ "dropshadow-25-5": {
+ "value": {
+ "color": "#00000014",
+ "type": "dropShadow",
+ "x": 0,
+ "y": 0,
+ "blur": 25,
+ "spread": 5
+ },
+ "type": "boxShadow"
+ },
+ "dropshadow-10-5": {
+ "value": {
+ "color": "#0000000d",
+ "type": "dropShadow",
+ "x": 0,
+ "y": 0,
+ "blur": 10,
+ "spread": 5
+ },
+ "type": "boxShadow"
+ },
+ "fontWeights": {
+ "pretendard-0": {
+ "value": "Bold",
+ "type": "fontWeights"
+ },
+ "pretendard-1": {
+ "value": "SemiBold",
+ "type": "fontWeights"
+ },
+ "pretendard-2": {
+ "value": "Medium",
+ "type": "fontWeights"
+ },
+ "pretendard-3": {
+ "value": "Regular",
+ "type": "fontWeights"
+ }
+ },
+ "fontSize": {
+ "0": {
+ "value": 12,
+ "type": "fontSizes"
+ },
+ "1": {
+ "value": 13,
+ "type": "fontSizes"
+ },
+ "2": {
+ "value": 14,
+ "type": "fontSizes"
+ },
+ "3": {
+ "value": 15,
+ "type": "fontSizes"
+ },
+ "4": {
+ "value": 16,
+ "type": "fontSizes"
+ },
+ "5": {
+ "value": 17,
+ "type": "fontSizes"
+ },
+ "6": {
+ "value": 18,
+ "type": "fontSizes"
+ },
+ "7": {
+ "value": 20,
+ "type": "fontSizes"
+ },
+ "8": {
+ "value": 24,
+ "type": "fontSizes"
+ },
+ "9": {
+ "value": 28,
+ "type": "fontSizes"
+ },
+ "10": {
+ "value": 32,
+ "type": "fontSizes"
+ },
+ "11": {
+ "value": 36,
+ "type": "fontSizes"
+ },
+ "12": {
+ "value": 40,
+ "type": "fontSizes"
+ },
+ "13": {
+ "value": 44,
+ "type": "fontSizes"
+ }
+ },
+ "letterSpacing": {
+ "0": {
+ "value": 0,
+ "type": "letterSpacing"
+ }
+ },
+ "paragraphSpacing": {
+ "0": {
+ "value": 0,
+ "type": "paragraphSpacing"
+ }
+ },
+ "title": {
+ "lg": {
+ "bold": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-0}",
+ "lineHeight": "{font.line height.58}",
+ "fontSize": "{fontSize.13}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "semibold": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-1}",
+ "lineHeight": "{font.line height.58}",
+ "fontSize": "{fontSize.13}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ }
+ },
+ "md": {
+ "bold": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-0}",
+ "lineHeight": "{font.line height.52}",
+ "fontSize": "{fontSize.12}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "semibold": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-1}",
+ "lineHeight": "{font.line height.52}",
+ "fontSize": "{fontSize.12}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ }
+ },
+ "sm": {
+ "bold": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-0}",
+ "lineHeight": "{font.line height.50}",
+ "fontSize": "{fontSize.11}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "semibold": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-1}",
+ "lineHeight": "{font.line height.50}",
+ "fontSize": "{fontSize.11}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ }
+ }
+ },
+ "heading": {
+ "2xl": {
+ "bold": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-0}",
+ "lineHeight": "{font.line height.48}",
+ "fontSize": "{fontSize.10}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "semibold": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-1}",
+ "lineHeight": "{font.line height.48}",
+ "fontSize": "{fontSize.10}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "medium": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-2}",
+ "lineHeight": "{font.line height.48}",
+ "fontSize": "{fontSize.10}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "regular": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-3}",
+ "lineHeight": "{font.line height.48}",
+ "fontSize": "{fontSize.10}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ }
+ },
+ "1xl": {
+ "bold": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-0}",
+ "lineHeight": "{font.line height.42}",
+ "fontSize": "{fontSize.9}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "semibold": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-1}",
+ "lineHeight": "{font.line height.42}",
+ "fontSize": "{fontSize.9}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "medium": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-2}",
+ "lineHeight": "{font.line height.42}",
+ "fontSize": "{fontSize.9}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "regular": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-3}",
+ "lineHeight": "{font.line height.42}",
+ "fontSize": "{fontSize.9}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ }
+ },
+ "lg": {
+ "bold": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-0}",
+ "lineHeight": "{font.line height.36}",
+ "fontSize": "{fontSize.8}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "semibold": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-1}",
+ "lineHeight": "{font.line height.36}",
+ "fontSize": "{fontSize.8}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "medium": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-2}",
+ "lineHeight": "{font.line height.36}",
+ "fontSize": "{fontSize.8}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "regular": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-3}",
+ "lineHeight": "{font.line height.36}",
+ "fontSize": "{fontSize.8}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ }
+ },
+ "md": {
+ "bold": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-0}",
+ "lineHeight": "{font.line height.30}",
+ "fontSize": "{fontSize.7}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "semibold": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-1}",
+ "lineHeight": "{font.line height.30}",
+ "fontSize": "{fontSize.7}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "medium": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-2}",
+ "lineHeight": "{font.line height.30}",
+ "fontSize": "{fontSize.7}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "regular": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-3}",
+ "lineHeight": "{font.line height.30}",
+ "fontSize": "{fontSize.7}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ }
+ },
+ "sm": {
+ "bold": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-0}",
+ "lineHeight": "{font.line height.28}",
+ "fontSize": "{fontSize.6}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "semibold": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-1}",
+ "lineHeight": "{font.line height.28}",
+ "fontSize": "{fontSize.6}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "medium": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-2}",
+ "lineHeight": "{font.line height.28}",
+ "fontSize": "{fontSize.6}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "regular": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-3}",
+ "lineHeight": "{font.line height.28}",
+ "fontSize": "{fontSize.6}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ }
+ }
+ },
+ "body": {
+ "1xl": {
+ "bold": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-0}",
+ "lineHeight": "{font.line height.26}",
+ "fontSize": "{fontSize.5}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "semibold": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-1}",
+ "lineHeight": "{font.line height.26}",
+ "fontSize": "{fontSize.5}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "medium": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-2}",
+ "lineHeight": "{font.line height.26}",
+ "fontSize": "{fontSize.5}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "regular": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-3}",
+ "lineHeight": "{font.line height.26}",
+ "fontSize": "{fontSize.5}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ }
+ },
+ "lg": {
+ "bold": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-0}",
+ "lineHeight": "{font.line height.24}",
+ "fontSize": "{fontSize.4}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "semibold": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-1}",
+ "lineHeight": "{font.line height.24}",
+ "fontSize": "{fontSize.4}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "medium": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-2}",
+ "lineHeight": "{font.line height.24}",
+ "fontSize": "{fontSize.4}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "regular": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-3}",
+ "lineHeight": "{font.line height.24}",
+ "fontSize": "{fontSize.4}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ }
+ },
+ "md": {
+ "bold": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-0}",
+ "lineHeight": "{font.line height.24}",
+ "fontSize": "{fontSize.3}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "semibold": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-1}",
+ "lineHeight": "{font.line height.24}",
+ "fontSize": "{fontSize.3}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "medium": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-2}",
+ "lineHeight": "{font.line height.24}",
+ "fontSize": "{fontSize.3}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "regular": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-3}",
+ "lineHeight": "{font.line height.24}",
+ "fontSize": "{fontSize.3}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ }
+ },
+ "sm": {
+ "bold": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-0}",
+ "lineHeight": "{font.line height.20}",
+ "fontSize": "{fontSize.2}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "semibold": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-1}",
+ "lineHeight": "{font.line height.20}",
+ "fontSize": "{fontSize.2}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "medium": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-2}",
+ "lineHeight": "{font.line height.20}",
+ "fontSize": "{fontSize.2}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "regular": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-3}",
+ "lineHeight": "{font.line height.20}",
+ "fontSize": "{fontSize.2}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ }
+ }
+ },
+ "caption": {
+ "md": {
+ "medium": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-2}",
+ "lineHeight": "{font.line height.20}",
+ "fontSize": "{fontSize.1}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "regular": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-3}",
+ "lineHeight": "{font.line height.20}",
+ "fontSize": "{fontSize.1}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ }
+ },
+ "sm": {
+ "medium": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-2}",
+ "lineHeight": "{font.line height.18}",
+ "fontSize": "{fontSize.0}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ },
+ "regualr": {
+ "value": {
+ "fontFamily": "{font.family.pretendard}",
+ "fontWeight": "{fontWeights.pretendard-3}",
+ "lineHeight": "{font.line height.18}",
+ "fontSize": "{fontSize.0}",
+ "letterSpacing": "{letterSpacing.0}",
+ "paragraphSpacing": "{paragraphSpacing.0}",
+ "paragraphIndent": "{paragraphIndent.0}",
+ "textCase": "{textCase.none}",
+ "textDecoration": "{textDecoration.none}"
+ },
+ "type": "typography"
+ }
+ }
+ },
+ "textCase": {
+ "none": {
+ "value": "none",
+ "type": "textCase"
+ }
+ },
+ "textDecoration": {
+ "none": {
+ "value": "none",
+ "type": "textDecoration"
+ }
+ },
+ "paragraphIndent": {
+ "0": {
+ "value": "0px",
+ "type": "dimension"
+ }
+ }
+ },
+ "primitive/Mode 1": {
+ "color": {
+ "primary": {
+ "25": {
+ "value": "#fffbeb",
+ "type": "color"
+ },
+ "50": {
+ "value": "#fff7d6",
+ "type": "color"
+ },
+ "100": {
+ "value": "#fff2c2",
+ "type": "color"
+ },
+ "200": {
+ "value": "#ffe894",
+ "type": "color"
+ },
+ "300": {
+ "value": "#ffdc5c",
+ "type": "color"
+ },
+ "400": {
+ "value": "#ffcd14",
+ "type": "color"
+ },
+ "500": {
+ "value": "#ffb700",
+ "type": "color"
+ },
+ "600": {
+ "value": "#e09900",
+ "type": "color"
+ },
+ "700": {
+ "value": "#996300",
+ "type": "color"
+ },
+ "800": {
+ "value": "#664200",
+ "type": "color"
+ },
+ "900": {
+ "value": "#332100",
+ "type": "color"
+ }
+ },
+ "accent": {
+ "25": {
+ "value": "#fff5f6",
+ "type": "color"
+ },
+ "50": {
+ "value": "#ffe5ea",
+ "type": "color"
+ },
+ "100": {
+ "value": "#ffccd4",
+ "type": "color"
+ },
+ "200": {
+ "value": "#ff99aa",
+ "type": "color"
+ },
+ "300": {
+ "value": "#ff6680",
+ "type": "color"
+ },
+ "400": {
+ "value": "#ff3355",
+ "type": "color"
+ },
+ "500": {
+ "value": "#ff002b",
+ "type": "color"
+ },
+ "600": {
+ "value": "#cc0022",
+ "type": "color"
+ },
+ "700": {
+ "value": "#99001a",
+ "type": "color"
+ },
+ "800": {
+ "value": "#660011",
+ "type": "color"
+ },
+ "900": {
+ "value": "#330009",
+ "type": "color"
+ }
+ },
+ "success": {
+ "25": {
+ "value": "#ebffeb",
+ "type": "color"
+ },
+ "50": {
+ "value": "#c7ffc7",
+ "type": "color"
+ },
+ "100": {
+ "value": "#a8ffa8",
+ "type": "color"
+ },
+ "200": {
+ "value": "#7aff7a",
+ "type": "color"
+ },
+ "300": {
+ "value": "#1aff1a",
+ "type": "color"
+ },
+ "400": {
+ "value": "#00e500",
+ "type": "color"
+ },
+ "500": {
+ "value": "#00c400",
+ "type": "color"
+ },
+ "600": {
+ "value": "#009900",
+ "type": "color"
+ },
+ "700": {
+ "value": "#006600",
+ "type": "color"
+ },
+ "800": {
+ "value": "#004d00",
+ "type": "color"
+ },
+ "900": {
+ "value": "#002900",
+ "type": "color"
+ }
+ },
+ "neutral": {
+ "0": {
+ "value": "#ffffff",
+ "type": "color"
+ },
+ "25": {
+ "value": "#f7f7f8",
+ "type": "color"
+ },
+ "50": {
+ "value": "#f1f2f3",
+ "type": "color"
+ },
+ "100": {
+ "value": "#e5e5e7",
+ "type": "color"
+ },
+ "200": {
+ "value": "#c9cacf",
+ "type": "color"
+ },
+ "300": {
+ "value": "#afb0b7",
+ "type": "color"
+ },
+ "400": {
+ "value": "#94969e",
+ "type": "color"
+ },
+ "500": {
+ "value": "#747681",
+ "type": "color"
+ },
+ "600": {
+ "value": "#56575f",
+ "type": "color"
+ },
+ "700": {
+ "value": "#424349",
+ "type": "color"
+ },
+ "800": {
+ "value": "#2c2c30",
+ "type": "color"
+ },
+ "900": {
+ "value": "#18191b",
+ "type": "color"
+ }
+ },
+ "alpha": {
+ "white": {
+ "white 100%": {
+ "value": "#ffffff",
+ "type": "color"
+ },
+ "white 80%": {
+ "value": "#ffffffcc",
+ "type": "color"
+ },
+ "white 50%": {
+ "value": "#ffffff80",
+ "type": "color"
+ },
+ "white 20%": {
+ "value": "#ffffff33",
+ "type": "color"
+ },
+ "white 0%": {
+ "value": "#ffffff00",
+ "type": "color"
+ }
+ },
+ "black": {
+ "black 100%": {
+ "value": "#18191b",
+ "type": "color"
+ },
+ "black 75%": {
+ "value": "#18191bcc",
+ "type": "color"
+ },
+ "black 50%": {
+ "value": "#18191b80",
+ "type": "color"
+ },
+ "black 20%": {
+ "value": "#18191b33",
+ "type": "color"
+ },
+ "black 0%": {
+ "value": "#18191b00",
+ "type": "color"
+ },
+ "black 10%": {
+ "value": "#18191b1a",
+ "type": "color"
+ }
+ },
+ "primary": {
+ "yellow 100%": {
+ "value": "#ffcd14",
+ "type": "color"
+ },
+ "yellow 80%": {
+ "value": "#ffcd14cc",
+ "type": "color"
+ },
+ "yellow 50%": {
+ "value": "#ffcd1480",
+ "type": "color"
+ },
+ "yellow 20%": {
+ "value": "#ffcd1433",
+ "type": "color"
+ },
+ "yellow 0%": {
+ "value": "#ffcd1400",
+ "type": "color"
+ }
+ }
+ }
+ },
+ "font": {
+ "family": {
+ "pretendard": {
+ "value": "pretendard",
+ "type": "text"
+ }
+ },
+ "size": {
+ "12": {
+ "value": 12,
+ "type": "number"
+ },
+ "13": {
+ "value": 13,
+ "type": "number"
+ },
+ "14": {
+ "value": 14,
+ "type": "number"
+ },
+ "15": {
+ "value": 15,
+ "type": "number"
+ },
+ "16": {
+ "value": 16,
+ "type": "number"
+ },
+ "17": {
+ "value": 17,
+ "type": "number"
+ },
+ "18": {
+ "value": 18,
+ "type": "number"
+ },
+ "20": {
+ "value": 20,
+ "type": "number"
+ },
+ "24": {
+ "value": 24,
+ "type": "number"
+ },
+ "28": {
+ "value": 28,
+ "type": "number"
+ },
+ "32": {
+ "value": 32,
+ "type": "number"
+ },
+ "36": {
+ "value": 36,
+ "type": "number"
+ },
+ "40": {
+ "value": 40,
+ "type": "number"
+ },
+ "44": {
+ "value": 44,
+ "type": "number"
+ }
+ },
+ "line height": {
+ "18": {
+ "value": 18,
+ "type": "number"
+ },
+ "20": {
+ "value": 20,
+ "type": "number"
+ },
+ "24": {
+ "value": 24,
+ "type": "number"
+ },
+ "26": {
+ "value": 26,
+ "type": "number"
+ },
+ "28": {
+ "value": 28,
+ "type": "number"
+ },
+ "30": {
+ "value": 30,
+ "type": "number"
+ },
+ "36": {
+ "value": 36,
+ "type": "number"
+ },
+ "42": {
+ "value": 42,
+ "type": "number"
+ },
+ "48": {
+ "value": 48,
+ "type": "number"
+ },
+ "50": {
+ "value": 50,
+ "type": "number"
+ },
+ "52": {
+ "value": 52,
+ "type": "number"
+ },
+ "58": {
+ "value": 58,
+ "type": "number"
+ }
+ },
+ "weight": {
+ "400": {
+ "value": 400,
+ "type": "number"
+ },
+ "500": {
+ "value": 500,
+ "type": "number"
+ },
+ "600": {
+ "value": 600,
+ "type": "number"
+ },
+ "700": {
+ "value": 700,
+ "type": "number"
+ }
+ }
+ },
+ "number": {
+ "0": {
+ "value": 0,
+ "type": "number"
+ },
+ "1": {
+ "value": 1,
+ "type": "number"
+ },
+ "2": {
+ "value": 2,
+ "type": "number"
+ },
+ "3": {
+ "value": 4,
+ "type": "number"
+ },
+ "4": {
+ "value": 6,
+ "type": "number"
+ },
+ "5": {
+ "value": 8,
+ "type": "number"
+ },
+ "6": {
+ "value": 10,
+ "type": "number"
+ },
+ "7": {
+ "value": 12,
+ "type": "number"
+ },
+ "8": {
+ "value": 16,
+ "type": "number"
+ },
+ "9": {
+ "value": 20,
+ "type": "number"
+ },
+ "10": {
+ "value": 24,
+ "type": "number"
+ },
+ "11": {
+ "value": 28,
+ "type": "number"
+ },
+ "12": {
+ "value": 32,
+ "type": "number"
+ },
+ "13": {
+ "value": 36,
+ "type": "number"
+ },
+ "14": {
+ "value": 40,
+ "type": "number"
+ },
+ "15": {
+ "value": 44,
+ "type": "number"
+ },
+ "16": {
+ "value": 48,
+ "type": "number"
+ },
+ "17": {
+ "value": 56,
+ "type": "number"
+ },
+ "18": {
+ "value": 64,
+ "type": "number"
+ },
+ "19": {
+ "value": 72,
+ "type": "number"
+ },
+ "20": {
+ "value": 80,
+ "type": "number"
+ },
+ "21": {
+ "value": 96,
+ "type": "number"
+ },
+ "max": {
+ "value": 1000,
+ "type": "number"
+ }
+ }
+ },
+ "semantic/Mode 1": {
+ "color": {
+ "button": {
+ "primary-fill": {
+ "value": "{color.primary.400}",
+ "type": "color"
+ },
+ "primary-fill-pressed": {
+ "value": "{color.primary.500}",
+ "type": "color"
+ },
+ "disabled-fill": {
+ "value": "{color.neutral.100}",
+ "type": "color"
+ },
+ "secondary-fill-pressed": {
+ "value": "{color.primary.100}",
+ "type": "color"
+ },
+ "secondary-fill": {
+ "value": "{color.primary.25}",
+ "type": "color"
+ },
+ "secodnary-border": {
+ "value": "{color.primary.400}",
+ "type": "color"
+ },
+ "disabled-border": {
+ "value": "{color.neutral.200}",
+ "type": "color"
+ },
+ "tertiary-border": {
+ "value": "{color.neutral.600}",
+ "type": "color"
+ },
+ "tertiary-fill-pressed": {
+ "value": "{color.neutral.50}",
+ "type": "color"
+ },
+ "tertiary-fill": {
+ "value": "{color.neutral.25}",
+ "type": "color"
+ }
+ },
+ "background": {
+ "white": {
+ "value": "{color.neutral.0}",
+ "type": "color"
+ },
+ "dim": {
+ "value": "{color.alpha.black.black 75%}",
+ "type": "color"
+ },
+ "dim-dark": {
+ "value": "{color.alpha.black.black 20%}",
+ "type": "color"
+ },
+ "dim-darker": {
+ "value": "{color.alpha.black.black 50%}",
+ "type": "color"
+ }
+ },
+ "surface": {
+ "surface-default": {
+ "value": "{color.neutral.50}",
+ "type": "color"
+ },
+ "surface-muted": {
+ "value": "{color.neutral.100}",
+ "type": "color"
+ },
+ "surface-elevated": {
+ "value": "{color.neutral.25}",
+ "type": "color"
+ },
+ "white": {
+ "value": "{color.neutral.0}",
+ "type": "color"
+ },
+ "info": {
+ "value": "{color.alpha.black.black 75%}",
+ "type": "color"
+ },
+ "inverse": {
+ "value": "{color.neutral.900}",
+ "type": "color"
+ }
+ },
+ "text": {
+ "basic": {
+ "value": "{color.neutral.900}",
+ "type": "color"
+ },
+ "subtle": {
+ "value": "{color.neutral.700}",
+ "type": "color"
+ },
+ "disabled": {
+ "value": "{color.neutral.400}",
+ "type": "color"
+ },
+ "basic-inverse": {
+ "value": "{color.neutral.0}",
+ "type": "color"
+ },
+ "subtle-inverse": {
+ "value": "{color.neutral.300}",
+ "type": "color"
+ },
+ "primary": {
+ "value": "{color.primary.900}",
+ "type": "color"
+ },
+ "accent": {
+ "value": "{color.accent.700}",
+ "type": "color"
+ },
+ "success": {
+ "value": "{color.success.700}",
+ "type": "color"
+ },
+ "secondary": {
+ "value": "{color.primary.700}",
+ "type": "color"
+ },
+ "subtler": {
+ "value": "{color.neutral.500}",
+ "type": "color"
+ },
+ "brand": {
+ "value": "{color.primary.400}",
+ "type": "color"
+ },
+ "error": {
+ "value": "{color.accent.500}",
+ "type": "color"
+ }
+ },
+ "icon": {
+ "inverse": {
+ "value": "{color.neutral.0}",
+ "type": "color"
+ },
+ "primary": {
+ "value": "{color.primary.400}",
+ "type": "color"
+ },
+ "subtler": {
+ "value": "{color.neutral.500}",
+ "type": "color"
+ },
+ "subtle": {
+ "value": "{color.neutral.500}",
+ "type": "color"
+ },
+ "disabled": {
+ "value": "{color.neutral.400}",
+ "type": "color"
+ },
+ "basic": {
+ "value": "{color.neutral.700}",
+ "type": "color"
+ },
+ "gray": {
+ "value": "{color.neutral.200}",
+ "type": "color"
+ },
+ "secondary": {
+ "value": "{color.primary.700}",
+ "type": "color"
+ },
+ "tertiary": {
+ "value": "{color.primary.900}",
+ "type": "color"
+ }
+ },
+ "brand": {
+ "primary": {
+ "value": "{color.primary.400}",
+ "type": "color"
+ }
+ },
+ "element": {
+ "primary": {
+ "value": "{color.primary.400}",
+ "type": "color"
+ },
+ "primary-light": {
+ "value": "{color.primary.100}",
+ "type": "color"
+ },
+ "primary-lighter": {
+ "value": "{color.primary.25}",
+ "type": "color"
+ },
+ "primary-alpha": {
+ "value": "{color.alpha.primary.yellow 20%}",
+ "type": "color"
+ },
+ "gray-subtler": {
+ "value": "{color.neutral.25}",
+ "type": "color"
+ },
+ "gray-subtle": {
+ "value": "{color.neutral.50}",
+ "type": "color"
+ },
+ "gray": {
+ "value": "{color.neutral.200}",
+ "type": "color"
+ },
+ "gray-lighter": {
+ "value": "{color.neutral.25}",
+ "type": "color"
+ },
+ "gray-light": {
+ "value": "{color.neutral.50}",
+ "type": "color"
+ },
+ "gray-dark": {
+ "value": "{color.neutral.500}",
+ "type": "color"
+ },
+ "alpha-light": {
+ "value": "{color.alpha.white.white 80%}",
+ "type": "color"
+ },
+ "white": {
+ "value": "{color.neutral.0}",
+ "type": "color"
+ },
+ "alpha-dark": {
+ "value": "{color.alpha.black.black 50%}",
+ "type": "color"
+ }
+ },
+ "border": {
+ "primary": {
+ "value": "{color.primary.400}",
+ "type": "color"
+ },
+ "primary-light": {
+ "value": "{color.primary.100}",
+ "type": "color"
+ },
+ "error": {
+ "value": "{color.accent.500}",
+ "type": "color"
+ },
+ "gray": {
+ "value": "{color.neutral.300}",
+ "type": "color"
+ },
+ "gray-light": {
+ "value": "{color.neutral.200}",
+ "type": "color"
+ },
+ "gray-dark": {
+ "value": "{color.neutral.600}",
+ "type": "color"
+ },
+ "gray-darker": {
+ "value": "{color.neutral.800}",
+ "type": "color"
+ }
+ },
+ "divider": {
+ "gray": {
+ "value": "{color.neutral.100}",
+ "type": "color"
+ },
+ "gray-dark": {
+ "value": "{color.neutral.600}",
+ "type": "color"
+ },
+ "gray-light": {
+ "value": "{color.neutral.25}",
+ "type": "color"
+ },
+ "inverse": {
+ "value": "{color.neutral.0}",
+ "type": "color"
+ }
+ },
+ "action": {
+ "secondary-pressed": {
+ "value": "{color.neutral.100}",
+ "type": "color"
+ },
+ "secondary": {
+ "value": "{color.neutral.0}",
+ "type": "color"
+ },
+ "primary-pressed": {
+ "value": "{color.primary.400}",
+ "type": "color"
+ },
+ "primary": {
+ "value": "{color.primary.25}",
+ "type": "color"
+ }
+ }
+ },
+ "size-height": {
+ "1": {
+ "value": "{number.5}",
+ "type": "number"
+ },
+ "2": {
+ "value": "{number.8}",
+ "type": "number"
+ },
+ "3": {
+ "value": "{number.9}",
+ "type": "number"
+ },
+ "4": {
+ "value": "{number.10}",
+ "type": "number"
+ },
+ "5": {
+ "value": "{number.12}",
+ "type": "number"
+ },
+ "6": {
+ "value": "{number.14}",
+ "type": "number"
+ },
+ "7": {
+ "value": "{number.16}",
+ "type": "number"
+ },
+ "8": {
+ "value": "{number.17}",
+ "type": "number"
+ },
+ "9": {
+ "value": "{number.18}",
+ "type": "number"
+ },
+ "10": {
+ "value": "{number.19}",
+ "type": "number"
+ },
+ "11": {
+ "value": "{number.20}",
+ "type": "number"
+ }
+ },
+ "gap": {
+ "g1": {
+ "value": "{number.2}",
+ "type": "number"
+ },
+ "g2": {
+ "value": "{number.3}",
+ "type": "number"
+ },
+ "g3": {
+ "value": "{number.5}",
+ "type": "number"
+ },
+ "g4": {
+ "value": "{number.7}",
+ "type": "number"
+ },
+ "g5": {
+ "value": "{number.8}",
+ "type": "number"
+ },
+ "g6": {
+ "value": "{number.9}",
+ "type": "number"
+ },
+ "g7": {
+ "value": "{number.10}",
+ "type": "number"
+ },
+ "g8": {
+ "value": "{number.12}",
+ "type": "number"
+ },
+ "g9": {
+ "value": "{number.14}",
+ "type": "number"
+ },
+ "g10": {
+ "value": "{number.16}",
+ "type": "number"
+ },
+ "g11": {
+ "value": "{number.18}",
+ "type": "number"
+ },
+ "g12": {
+ "value": "{number.20}",
+ "type": "number"
+ }
+ },
+ "padding": {
+ "p1": {
+ "value": "{number.2}",
+ "type": "number"
+ },
+ "p2": {
+ "value": "{number.3}",
+ "type": "number"
+ },
+ "p3": {
+ "value": "{number.5}",
+ "type": "number"
+ },
+ "p4": {
+ "value": "{number.6}",
+ "type": "number"
+ },
+ "p5": {
+ "value": "{number.7}",
+ "type": "number"
+ },
+ "p6": {
+ "value": "{number.8}",
+ "type": "number"
+ },
+ "p7": {
+ "value": "{number.9}",
+ "type": "number"
+ },
+ "p8": {
+ "value": "{number.10}",
+ "type": "number"
+ },
+ "p9": {
+ "value": "{number.12}",
+ "type": "number"
+ },
+ "p10": {
+ "value": "{number.14}",
+ "type": "number"
+ }
+ },
+ "radius": {
+ "xsmall": {
+ "value": "{number.2}",
+ "type": "number"
+ },
+ "small": {
+ "value": "{number.3}",
+ "type": "number"
+ },
+ "medium": {
+ "value": "{number.4}",
+ "type": "number"
+ },
+ "large": {
+ "value": "{number.5}",
+ "type": "number"
+ },
+ "xlarge": {
+ "value": "{number.6}",
+ "type": "number"
+ },
+ "2xlarge": {
+ "value": "{number.7}",
+ "type": "number"
+ },
+ "max": {
+ "value": "{number.max}",
+ "type": "number"
+ },
+ "3xlarge": {
+ "value": "{number.9}",
+ "type": "number"
+ }
+ }
+ },
+ "$themes": [],
+ "$metadata": {
+ "tokenSetOrder": [
+ "global",
+ "primitive/Mode 1",
+ "semantic/Mode 1"
+ ]
+ }
+}
\ No newline at end of file