atomsystem 0.4.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/README.md +112 -52
  2. package/atom.design.md +17 -0
  3. package/components/blocks/BlockDetailPageContent.tsx +337 -0
  4. package/components/blocks/BlockViewerCard.tsx +229 -0
  5. package/components/blocks/BlocksSidebar.tsx +93 -0
  6. package/components/blocks/CardListBlock.tsx +214 -0
  7. package/components/blocks/FileExplorerBlock.tsx +203 -0
  8. package/components/blocks/InteractiveChatBlock.tsx +217 -0
  9. package/components/blocks/MetricStatsBlock.tsx +150 -0
  10. package/components/blocks/PricingPlanBlock.tsx +175 -0
  11. package/components/blocks/RealtimeChartBlock.tsx +242 -0
  12. package/components/blocks/SliderShowcaseBlock.tsx +136 -0
  13. package/components/blocks/index.ts +8 -0
  14. package/components/ui/Container.tsx +45 -0
  15. package/components/ui/Layout.tsx +220 -0
  16. package/components/ui/Switch.tsx +39 -0
  17. package/components/ui/Table.tsx +88 -0
  18. package/components/ui/Tabs.tsx +58 -0
  19. package/components/ui/Tree.tsx +121 -0
  20. package/components/ui/index.ts +6 -0
  21. package/css/atom-ui.css +41 -716
  22. package/dist/cli.cjs +633 -41
  23. package/dist/cli.cjs.map +1 -1
  24. package/dist/cli.js +630 -39
  25. package/dist/cli.js.map +1 -1
  26. package/dist/index.cjs +265 -2
  27. package/dist/index.cjs.map +1 -1
  28. package/dist/index.d.cts +13 -4
  29. package/dist/index.d.ts +13 -4
  30. package/dist/index.js +265 -3
  31. package/dist/index.js.map +1 -1
  32. package/package.json +7 -1
  33. package/presets/agents.guide.md +49 -0
  34. package/presets/blocks.md +101 -0
  35. package/presets/components.md +142 -0
  36. package/presets/default.design.md +17 -0
  37. package/tokens/token.json +63 -1
  38. package/tokens/tokens.json +63 -1
package/dist/index.d.cts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { ClassValue } from 'clsx';
2
2
 
3
- type TokenCategory = 'color' | 'typography' | 'radius' | 'spacing' | 'shadow';
3
+ type TokenCategory = 'color' | 'typography' | 'radius' | 'spacing' | 'shadow' | 'layout';
4
4
  interface BrandPreset {
5
5
  id: string;
6
6
  name: string;
@@ -41,14 +41,22 @@ interface ShadowToken {
41
41
  value: string;
42
42
  description: string;
43
43
  }
44
+ interface LayoutToken {
45
+ name: string;
46
+ variable: string;
47
+ value: string;
48
+ description: string;
49
+ type: 'container' | 'gutter' | 'gap';
50
+ }
44
51
  declare const BRAND_PRESETS: BrandPreset[];
45
52
  declare const BASE_COLOR_TOKENS: ColorToken[];
46
53
  declare const TYPOGRAPHY_TOKENS: TypographyToken[];
47
54
  declare const RADIUS_TOKENS: RadiusToken[];
48
55
  declare const SPACING_TOKENS: SpacingToken[];
49
56
  declare const SHADOW_TOKENS: ShadowToken[];
57
+ declare const LAYOUT_TOKENS: LayoutToken[];
50
58
 
51
- type ComponentCategory = 'all' | 'form' | 'feedback' | 'navigation' | 'data';
59
+ type ComponentCategory = 'all' | 'form' | 'feedback' | 'navigation' | 'data' | 'layout';
52
60
  interface PropItem {
53
61
  name: string;
54
62
  type: string;
@@ -143,6 +151,7 @@ interface ThemeConfig {
143
151
  color: ColorConfig;
144
152
  typography: TypographyConfig;
145
153
  borderRadius: string;
154
+ selectedIcon?: string;
146
155
  }
147
156
  interface ColorPreset {
148
157
  id: string;
@@ -212,7 +221,7 @@ declare const ATOM_UI_CSS_PATH = "atomsystem/css/atom-ui.css";
212
221
  /**
213
222
  * CLI Banner & Metadata
214
223
  */
215
- declare const ATOM_VERSION = "0.4.1";
224
+ declare const ATOM_VERSION = "0.5.0";
216
225
  declare const ATOM_LIB_NAME = "atomsystem";
217
226
 
218
- export { ATOM_LIB_NAME, ATOM_UI_CSS_PATH, ATOM_VERSION, AWESOME_CATEGORIES, AWESOME_DESIGN_MD_THEMES, type AwesomeDesignMdTheme, BASE_COLOR_TOKENS, BRAND_PRESETS, type BrandPreset, COLOR_PRESETS, type ColorConfig, type ColorPreset, type ColorToken, type ComponentCategory, DEFAULT_THEME_CONFIG, type DosAndDont, FONT_FAMILY_PRESETS, GALLERY_COMPONENTS, type GalleryComponent, PATTERNS_COLLECTION, type PatternItem, type PatternPlatform, type PatternVariant, type PropItem, RADIUS_TOKENS, type RadiusToken, SHADOW_TOKENS, SPACING_TOKENS, type ShadowToken, type SpacingToken, TYPOGRAPHY_TOKENS, type ThemeConfig, type TokenCategory, type TypographyConfig, type TypographyLevelConfig, type TypographyToken, applyThemeToDOM, cn, exportToCSS, exportToTailwind, exportToTokensJson, generateThemeCSS, isDarkColor };
227
+ export { ATOM_LIB_NAME, ATOM_UI_CSS_PATH, ATOM_VERSION, AWESOME_CATEGORIES, AWESOME_DESIGN_MD_THEMES, type AwesomeDesignMdTheme, BASE_COLOR_TOKENS, BRAND_PRESETS, type BrandPreset, COLOR_PRESETS, type ColorConfig, type ColorPreset, type ColorToken, type ComponentCategory, DEFAULT_THEME_CONFIG, type DosAndDont, FONT_FAMILY_PRESETS, GALLERY_COMPONENTS, type GalleryComponent, LAYOUT_TOKENS, type LayoutToken, PATTERNS_COLLECTION, type PatternItem, type PatternPlatform, type PatternVariant, type PropItem, RADIUS_TOKENS, type RadiusToken, SHADOW_TOKENS, SPACING_TOKENS, type ShadowToken, type SpacingToken, TYPOGRAPHY_TOKENS, type ThemeConfig, type TokenCategory, type TypographyConfig, type TypographyLevelConfig, type TypographyToken, applyThemeToDOM, cn, exportToCSS, exportToTailwind, exportToTokensJson, generateThemeCSS, isDarkColor };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { ClassValue } from 'clsx';
2
2
 
3
- type TokenCategory = 'color' | 'typography' | 'radius' | 'spacing' | 'shadow';
3
+ type TokenCategory = 'color' | 'typography' | 'radius' | 'spacing' | 'shadow' | 'layout';
4
4
  interface BrandPreset {
5
5
  id: string;
6
6
  name: string;
@@ -41,14 +41,22 @@ interface ShadowToken {
41
41
  value: string;
42
42
  description: string;
43
43
  }
44
+ interface LayoutToken {
45
+ name: string;
46
+ variable: string;
47
+ value: string;
48
+ description: string;
49
+ type: 'container' | 'gutter' | 'gap';
50
+ }
44
51
  declare const BRAND_PRESETS: BrandPreset[];
45
52
  declare const BASE_COLOR_TOKENS: ColorToken[];
46
53
  declare const TYPOGRAPHY_TOKENS: TypographyToken[];
47
54
  declare const RADIUS_TOKENS: RadiusToken[];
48
55
  declare const SPACING_TOKENS: SpacingToken[];
49
56
  declare const SHADOW_TOKENS: ShadowToken[];
57
+ declare const LAYOUT_TOKENS: LayoutToken[];
50
58
 
51
- type ComponentCategory = 'all' | 'form' | 'feedback' | 'navigation' | 'data';
59
+ type ComponentCategory = 'all' | 'form' | 'feedback' | 'navigation' | 'data' | 'layout';
52
60
  interface PropItem {
53
61
  name: string;
54
62
  type: string;
@@ -143,6 +151,7 @@ interface ThemeConfig {
143
151
  color: ColorConfig;
144
152
  typography: TypographyConfig;
145
153
  borderRadius: string;
154
+ selectedIcon?: string;
146
155
  }
147
156
  interface ColorPreset {
148
157
  id: string;
@@ -212,7 +221,7 @@ declare const ATOM_UI_CSS_PATH = "atomsystem/css/atom-ui.css";
212
221
  /**
213
222
  * CLI Banner & Metadata
214
223
  */
215
- declare const ATOM_VERSION = "0.4.1";
224
+ declare const ATOM_VERSION = "0.5.0";
216
225
  declare const ATOM_LIB_NAME = "atomsystem";
217
226
 
218
- export { ATOM_LIB_NAME, ATOM_UI_CSS_PATH, ATOM_VERSION, AWESOME_CATEGORIES, AWESOME_DESIGN_MD_THEMES, type AwesomeDesignMdTheme, BASE_COLOR_TOKENS, BRAND_PRESETS, type BrandPreset, COLOR_PRESETS, type ColorConfig, type ColorPreset, type ColorToken, type ComponentCategory, DEFAULT_THEME_CONFIG, type DosAndDont, FONT_FAMILY_PRESETS, GALLERY_COMPONENTS, type GalleryComponent, PATTERNS_COLLECTION, type PatternItem, type PatternPlatform, type PatternVariant, type PropItem, RADIUS_TOKENS, type RadiusToken, SHADOW_TOKENS, SPACING_TOKENS, type ShadowToken, type SpacingToken, TYPOGRAPHY_TOKENS, type ThemeConfig, type TokenCategory, type TypographyConfig, type TypographyLevelConfig, type TypographyToken, applyThemeToDOM, cn, exportToCSS, exportToTailwind, exportToTokensJson, generateThemeCSS, isDarkColor };
227
+ export { ATOM_LIB_NAME, ATOM_UI_CSS_PATH, ATOM_VERSION, AWESOME_CATEGORIES, AWESOME_DESIGN_MD_THEMES, type AwesomeDesignMdTheme, BASE_COLOR_TOKENS, BRAND_PRESETS, type BrandPreset, COLOR_PRESETS, type ColorConfig, type ColorPreset, type ColorToken, type ComponentCategory, DEFAULT_THEME_CONFIG, type DosAndDont, FONT_FAMILY_PRESETS, GALLERY_COMPONENTS, type GalleryComponent, LAYOUT_TOKENS, type LayoutToken, PATTERNS_COLLECTION, type PatternItem, type PatternPlatform, type PatternVariant, type PropItem, RADIUS_TOKENS, type RadiusToken, SHADOW_TOKENS, SPACING_TOKENS, type ShadowToken, type SpacingToken, TYPOGRAPHY_TOKENS, type ThemeConfig, type TokenCategory, type TypographyConfig, type TypographyLevelConfig, type TypographyToken, applyThemeToDOM, cn, exportToCSS, exportToTailwind, exportToTokensJson, generateThemeCSS, isDarkColor };
package/dist/index.js CHANGED
@@ -270,6 +270,71 @@ var SHADOW_TOKENS = [
270
270
  description: "\uD654\uBA74 \uCD5C\uC0C1\uB2E8 \uB808\uC774\uC5B4\uC758 \uBAA8\uB2EC \uB2E4\uC774\uC5BC\uB85C\uADF8, \uBC14\uD140\uC2DC\uD2B8"
271
271
  }
272
272
  ];
273
+ var LAYOUT_TOKENS = [
274
+ {
275
+ name: "Container Small (Narrow / Form)",
276
+ variable: "--atom-container-sm",
277
+ value: "640px",
278
+ description: "\uC778\uC99D \uD3FC, \uACB0\uC81C \uBAA8\uB2EC, \uB2E8\uC77C \uCEEC\uB7FC \uCF58\uD150\uCE20",
279
+ type: "container"
280
+ },
281
+ {
282
+ name: "Container Medium (Article / Content)",
283
+ variable: "--atom-container-md",
284
+ value: "768px",
285
+ description: "\uBE14\uB85C\uADF8 \uC544\uD2F0\uD074, \uD504\uB85C\uD544 \uBDF0\uC5B4, \uC124\uC815 \uD3FC",
286
+ type: "container"
287
+ },
288
+ {
289
+ name: "Container Large (Standard Catalog)",
290
+ variable: "--atom-container-lg",
291
+ value: "1024px",
292
+ description: "\uD45C\uC900 \uB7A9\uD0D1 \uBDF0, \uCE74\uD0C8\uB85C\uADF8 \uCE74\uB4DC \uADF8\uB9AC\uB4DC",
293
+ type: "container"
294
+ },
295
+ {
296
+ name: "Container Extra Large (Default Dashboard)",
297
+ variable: "--atom-container-xl",
298
+ value: "1280px",
299
+ description: "\uAE30\uBCF8 \uB370\uC2A4\uD06C\uD1B1 \uC640\uC774\uB4DC \uB808\uC774\uC544\uC6C3 \uBC0F \uB300\uC2DC\uBCF4\uB4DC \uD5C8\uBE0C",
300
+ type: "container"
301
+ },
302
+ {
303
+ name: "Container 2X Large (Ultra Wide Grid)",
304
+ variable: "--atom-container-2xl",
305
+ value: "1536px",
306
+ description: "\uCD08\uAD11\uD3ED \uACE0\uBC00\uB3C4 \uB370\uC774\uD130 \uADF8\uB9AC\uB4DC, \uD540\uD14C\uD06C \uCC28\uD2B8 \uC6CC\uD06C\uC2A4\uD398\uC774\uC2A4",
307
+ type: "container"
308
+ },
309
+ {
310
+ name: "Container Full (Fluid Fluid 100%)",
311
+ variable: "--atom-container-full",
312
+ value: "100%",
313
+ description: "\uC804\uCCB4 \uD654\uBA74 \uD50C\uB8E8\uC774\uB4DC \uC720\uC5F0 \uBDF0\uC5B4",
314
+ type: "container"
315
+ },
316
+ {
317
+ name: "Layout Gutter (Mobile / Base)",
318
+ variable: "--atom-layout-gutter",
319
+ value: "16px",
320
+ description: "\uD654\uBA74 \uC88C\uC6B0 \uAE30\uBCF8 \uC548\uC804 \uC5EC\uBC31 (Safe Padding)",
321
+ type: "gutter"
322
+ },
323
+ {
324
+ name: "Layout Gutter Large (Desktop)",
325
+ variable: "--atom-layout-gutter-lg",
326
+ value: "24px",
327
+ description: "\uB370\uC2A4\uD06C\uD1B1 \uD654\uBA74 \uC88C\uC6B0 \uC548\uC804 \uC5EC\uBC31",
328
+ type: "gutter"
329
+ },
330
+ {
331
+ name: "Layout Section Gap",
332
+ variable: "--atom-layout-gap",
333
+ value: "32px",
334
+ description: "\uC139\uC158\uACFC \uC139\uC158 \uAC04\uC758 \uAE30\uBCF8 \uB808\uC774\uC544\uC6C3 \uAC04\uACA9",
335
+ type: "gap"
336
+ }
337
+ ];
273
338
 
274
339
  // lib/data/components.ts
275
340
  var GALLERY_COMPONENTS = [
@@ -1629,6 +1694,159 @@ export function TextareaDemo() {
1629
1694
  vueSnippet: `<template>
1630
1695
  <AtomTextarea v-model="comment" :max-length="300" />
1631
1696
  </template>`
1697
+ },
1698
+ {
1699
+ id: "tree",
1700
+ name: "\uD2B8\uB9AC \uBDF0 (Tree View)",
1701
+ category: "data",
1702
+ source: "shadcn + vs-code",
1703
+ description: "\uD3F4\uB354/\uD30C\uC77C \uD0D0\uC0C9\uAE30, \uC870\uC9C1\uB3C4, \uAD8C\uD55C \uACC4\uCE35 \uB4F1 \uC911\uCCA9\uB41C \uD2B8\uB9AC \uB370\uC774\uD130\uB97C \uC2DC\uAC01\uD654\uD558\uACE0 \uD3BC\uCE68/\uC811\uAE30/\uC120\uD0DD\uC744 \uC9C0\uC6D0\uD558\uB294 \uACE0\uC811\uADFC\uC131 \uD2B8\uB9AC \uCEF4\uD3EC\uB10C\uD2B8",
1704
+ callout: {
1705
+ type: "tip",
1706
+ title: "\uC811\uADFC\uC131(A11y) \uD45C\uC900 \uC900\uC218",
1707
+ text: 'WAI-ARIA Treeview \uD328\uD134\uC744 \uC900\uC218\uD558\uC5EC \uCEE8\uD14C\uC774\uB108\uC5D0 role="tree", \uAC01 \uD589\uC5D0 role="treeitem", \uC790\uC2DD \uBCF4\uC720 \uC2DC aria-expanded\uC640 \uD0A4\uBCF4\uB4DC \uD0D0\uC0C9(Enter/Space)\uC744 \uC9C0\uC6D0\uD569\uB2C8\uB2E4.'
1708
+ },
1709
+ propsSpec: [
1710
+ { name: "data", type: "TreeNode[]", defaultValue: "[]", description: "\uD2B8\uB9AC \uB178\uB4DC \uACC4\uCE35 \uB370\uC774\uD130 \uBC30\uC5F4 ({ id, label, icon, children, disabled })" },
1711
+ { name: "selectedId", type: "string", defaultValue: "undefined", description: "\uD604\uC7AC \uC120\uD0DD\uB41C \uB178\uB4DC\uC758 \uACE0\uC720 ID" },
1712
+ { name: "onSelect", type: "(node: TreeNode) => void", defaultValue: "undefined", description: "\uB178\uB4DC \uC120\uD0DD \uC2DC \uD638\uCD9C\uB418\uB294 \uCF5C\uBC31 \uD568\uC218" },
1713
+ { name: "defaultExpandedIds", type: "string[]", defaultValue: "[]", description: "\uCD08\uAE30\uC5D0 \uAE30\uBCF8\uC73C\uB85C \uD3BC\uCCD0\uB458 \uB178\uB4DC ID \uBAA9\uB85D" },
1714
+ { name: "className", type: "string", defaultValue: "''", description: "\uB8E8\uD2B8 \uCEE8\uD14C\uC774\uB108\uC5D0 \uC804\uB2EC\uD560 \uCD94\uAC00 CSS \uD074\uB798\uC2A4" }
1715
+ ],
1716
+ useCases: [
1717
+ "IDE \uBC0F \uCF54\uB4DC \uC5D0\uB514\uD130\uC758 \uC18C\uC2A4\uCF54\uB4DC \uD30C\uC77C/\uB514\uB809\uD1A0\uB9AC \uACC4\uCE35 \uD0D0\uC0C9\uAE30",
1718
+ "\uBD80\uC11C \uBC0F \uD300\uC6D0 \uC870\uC9C1\uB3C4, \uC0AC\uB0B4 \uAD8C\uD55C/\uC5ED\uD560(RBAC) \uBD80\uC5EC \uD2B8\uB9AC \uBDF0",
1719
+ "\uB300\uADDC\uBAA8 \uC804\uC790\uC0C1\uAC70\uB798 \uC0C1\uD488 \uCE74\uD14C\uACE0\uB9AC \uB2E4\uB2E8\uACC4 \uBD84\uB958 \uD0D0\uC0C9",
1720
+ "\uBB38\uC11C \uBC0F \uC9C0\uC2DD\uBCA0\uC774\uC2A4(Knowledge Base) \uCC55\uD130/\uC139\uC158 \uBAA9\uCC28 \uB0B4\uBE44\uAC8C\uC774\uC158"
1721
+ ],
1722
+ usagePatterns: [
1723
+ "\uC790\uC2DD \uB178\uB4DC\uAC00 \uC788\uB294 \uBD80\uBAA8 \uB178\uB4DC\uB294 \uC811\uAE30/\uD3BC\uCE58\uAE30 \uD1A0\uAE00(\u25B6)\uC744 \uBA85\uD655\uD788 \uC81C\uACF5\uD558\uACE0, \uD68C\uC804 \uC560\uB2C8\uBA54\uC774\uC158\uC73C\uB85C \uC0C1\uD0DC\uB97C \uC778\uC9C0\uC2DC\uD0B5\uB2C8\uB2E4.",
1724
+ "\uC120\uD0DD\uB41C \uB178\uB4DC\uB294 \uCD0C\uC2A4\uB7EC\uC6B4 \uAD75\uC740 \uB2E8\uBA74 \uBCF4\uB354(side-tab) \uB300\uC2E0 \uC740\uC740\uD55C \uBE0C\uB79C\uB4DC \uD2F4\uD2B8 \uBC30\uACBD\uACFC \uD3F0\uD2B8 \uAD75\uAE30(font-semibold)\uB85C \uC138\uB828\uB418\uAC8C \uD45C\uD604\uD569\uB2C8\uB2E4.",
1725
+ "\uAE4A\uC740 \uC911\uCCA9 \uC2DC\uC5D0\uB294 \uAC00\uC774\uB4DC \uB77C\uC778(dashed border)\uC744 \uAC00\uBCCD\uAC8C \uB450\uC5B4 \uC2DC\uAC01\uC801 \uC704\uACC4\uB97C \uD55C\uB208\uC5D0 \uD30C\uC545\uD560 \uC218 \uC788\uB3C4\uB85D \uB3D5\uC2B5\uB2C8\uB2E4."
1726
+ ],
1727
+ dosAndDonts: [
1728
+ {
1729
+ do: "\uB178\uB4DC\uAC00 \uB9CE\uC744 \uACBD\uC6B0 \uAE30\uBCF8\uC801\uC73C\uB85C 1~2\uB2E8\uACC4\uAE4C\uC9C0\uB9CC \uD3BC\uCE58\uACE0 \uD544\uC694 \uC2DC \uC0AC\uC6A9\uC790\uAC00 \uB4DC\uB9B4\uB2E4\uC6B4\uD558\uB3C4\uB85D \uC124\uACC4\uD569\uB2C8\uB2E4.",
1730
+ dont: "\uC218\uBC31 \uAC1C\uC758 \uB178\uB4DC\uB97C \uD55C \uBC88\uC5D0 \uC804\uBD80 \uD3BC\uCCD0\uC11C \uC138\uB85C \uC2A4\uD06C\uB864\uC744 \uBB34\uD55C\uD788 \uAE38\uC5B4\uC9C0\uAC8C \uBC29\uCE58\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."
1731
+ },
1732
+ {
1733
+ do: "\uD0A4\uBCF4\uB4DC \uC0AC\uC6A9\uC790\uB3C4 \uC811\uADFC\uD560 \uC218 \uC788\uB3C4\uB85D Space\uB098 Enter \uD0A4\uB85C \uD3BC\uCE68/\uC811\uAE30 \uBC0F \uC120\uD0DD\uC744 \uC9C0\uC6D0\uD569\uB2C8\uB2E4.",
1734
+ dont: "\uB9C8\uC6B0\uC2A4 \uB354\uBE14\uD074\uB9AD\uC5D0\uB9CC \uC758\uC874\uD558\uAC70\uB098 \uD3EC\uCEE4\uC2A4 \uC544\uC6C3\uB77C\uC778\uC744 \uC81C\uAC70(outline: none)\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."
1735
+ }
1736
+ ],
1737
+ relatedPatternIds: ["dashboard-overview", "filter-search"],
1738
+ htmlSnippet: '<div class="atom-tree" role="tree">\n <ul class="atom-tree-list">\n <li class="atom-tree-item" role="treeitem" aria-expanded="true">\n <div class="atom-tree-node is-selected">\n <button class="atom-tree-toggle is-expanded">\u25B6</button>\n <span class="atom-tree-label">src</span>\n </div>\n </li>\n </ul>\n</div>',
1739
+ reactSnippet: "import { Tree, TreeNode } from 'atomsystem/components/Tree';\nimport { useState } from 'react';\n\nconst treeData: TreeNode[] = [\n {\n id: 'src',\n label: 'src',\n children: [\n { id: 'components', label: 'components', children: [{ id: 'Button.tsx', label: 'Button.tsx' }] },\n { id: 'index.ts', label: 'index.ts' },\n ],\n },\n { id: 'package.json', label: 'package.json' },\n];\n\nexport function TreeDemo() {\n const [selectedId, setSelectedId] = useState('index.ts');\n return <Tree data={treeData} selectedId={selectedId} onSelect={(node) => setSelectedId(node.id)} defaultExpandedIds={['src']} />;\n}",
1740
+ vueSnippet: `<template>
1741
+ <AtomTree :data="treeData" v-model:selected="selectedId" :default-expanded="['src']" />
1742
+ </template>`
1743
+ },
1744
+ {
1745
+ id: "container",
1746
+ name: "\uCEE8\uD14C\uC774\uB108 (Container)",
1747
+ category: "layout",
1748
+ source: "AtomSystem Universal",
1749
+ description: "\uB514\uC790\uC778 \uD1A0\uD070(--atom-container-*)\uACFC \uC5F0\uB3D9\uB418\uC5B4 \uD654\uBA74 \uD3ED\uC5D0 \uB9DE\uCD98 \uCD5C\uC801 \uB108\uBE44 \uBC0F \uBC18\uC751\uD615 \uC548\uC804 \uC5EC\uBC31(Gutter)\uC744 \uC81C\uACF5\uD558\uB294 \uB798\uD37C \uCEF4\uD3EC\uB10C\uD2B8",
1750
+ callout: {
1751
+ type: "tip",
1752
+ title: "\uD1A0\uD070 \uAE30\uBC18 \uB108\uBE44 \uC81C\uC5B4",
1753
+ text: '\uD558\uB4DC\uCF54\uB529\uB41C max-w-[1200px] \uB300\uC2E0 size="sm"|"md"|"lg"|"xl"|"2xl"|"full"\uC744 \uC0AC\uC6A9\uD558\uC5EC DTCG \uD45C\uC900 \uD1A0\uD070\uACFC 100% \uC5F0\uB3D9\uB429\uB2C8\uB2E4.'
1754
+ },
1755
+ propsSpec: [
1756
+ { name: "size", type: "'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full'", defaultValue: "'xl'", description: "\uCEE8\uD14C\uC774\uB108 \uCD5C\uB300 \uB108\uBE44 \uADDC\uACA9 \uD1A0\uD070 (--atom-container-*)" },
1757
+ { name: "gutters", type: "boolean", defaultValue: "true", description: "\uD654\uBA74 \uC88C\uC6B0 \uBC18\uC751\uD615 \uC548\uC804 \uD328\uB529 \uC801\uC6A9 \uC5EC\uBD80 (--atom-layout-gutter)" },
1758
+ { name: "center", type: "boolean", defaultValue: "true", description: "\uC911\uC559 \uC815\uB82C(mx-auto) \uC801\uC6A9 \uC5EC\uBD80" },
1759
+ { name: "as", type: "ElementType", defaultValue: "'div'", description: "\uB80C\uB354\uB9C1\uD560 \uC2DC\uB9E8\uD2F1 HTML \uD0DC\uADF8 (div, section, main \uB4F1)" },
1760
+ { name: "className", type: "string", defaultValue: "''", description: "\uCD94\uAC00 \uCEE4\uC2A4\uD140 \uD074\uB798\uC2A4" }
1761
+ ],
1762
+ useCases: [
1763
+ "\uB300\uC2DC\uBCF4\uB4DC \uBA54\uC778 \uBDF0\uC5B4 \uBC0F \uCE74\uD0C8\uB85C\uADF8\uC758 \uCD5C\uB300 \uAC00\uB85C\uD3ED \uD1B5\uC77C",
1764
+ '\uB2E8\uC77C \uD3FC, \uACB0\uC81C \uD398\uC774\uC9C0, \uC778\uC99D \uD654\uBA74\uC758 \uC881\uC740 \uC911\uC559 \uC815\uB82C (size="sm")',
1765
+ '\uBE14\uB85C\uADF8, \uC544\uD2F0\uD074, \uC9C0\uC2DD \uBCA0\uC774\uC2A4\uC758 \uAC00\uB3C5\uC131 \uC911\uC2EC \uCEE8\uD14C\uC774\uB108 (size="md")',
1766
+ '\uCD08\uAD11\uD3ED \uB370\uC774\uD130 \uADF8\uB9AC\uB4DC \uBC0F \uD2B8\uB808\uC774\uB529 \uCC28\uD2B8\uC758 \uC640\uC774\uB4DC \uCEE8\uD14C\uC774\uB108 (size="2xl")'
1767
+ ],
1768
+ usagePatterns: [
1769
+ "\uBAA8\uB4E0 \uD398\uC774\uC9C0 \uBDF0\uC5B4\uC758 \uCD5C\uC0C1\uC704 \uBCF8\uBB38 \uB798\uD37C\uB85C Container\uB97C \uC0AC\uC6A9\uD558\uC5EC \uBAA8\uBC14\uC77C/\uB370\uC2A4\uD06C\uD1B1 \uAC70\uD130\uB97C \uC77C\uAD00\uB418\uAC8C \uC720\uC9C0\uD569\uB2C8\uB2E4.",
1770
+ "\uC911\uCCA9 \uCEE8\uD14C\uC774\uB108\uB97C \uD53C\uD558\uACE0, \uC139\uC158 \uB0B4\uBD80\uC5D0\uC11C\uB294 Grid \uB610\uB294 Stack\uC744 \uC0AC\uC6A9\uD558\uC5EC \uAD6C\uC870\uD654\uD569\uB2C8\uB2E4."
1771
+ ],
1772
+ dosAndDonts: [
1773
+ {
1774
+ do: "\uD398\uC774\uC9C0 \uC131\uACA9\uC5D0 \uB9DE\uB294 size \uD1A0\uD070(sm, md, lg, xl, 2xl)\uC744 \uC9C0\uC815\uD558\uC5EC \uC77C\uAD00\uB41C \uBDF0\uD3EC\uD2B8 \uACC4\uCE35\uC744 \uD615\uC131\uD569\uB2C8\uB2E4.",
1775
+ dont: "\uD398\uC774\uC9C0\uB9C8\uB2E4 \uC784\uC758\uC758 max-w-[1140px], max-w-[1250px] \uB4F1 \uBE44\uD45C\uC900 \uD558\uB4DC\uCF54\uB529 \uAC12\uC744 \uB09C\uB9BD\uC2DC\uD0A4\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."
1776
+ }
1777
+ ],
1778
+ relatedPatternIds: ["dashboard-overview", "checkout-flow"],
1779
+ htmlSnippet: '<div class="atom-container atom-container-xl">\n <h1>\uCEE8\uD14C\uC774\uB108 \uBCF8\uBB38</h1>\n</div>',
1780
+ reactSnippet: `import { Container } from 'atomsystem/components/Container';
1781
+
1782
+ export function ContainerDemo() {
1783
+ return (
1784
+ <Container size="xl">
1785
+ <h1 className="text-xl font-bold">\uB300\uC2DC\uBCF4\uB4DC \uBDF0\uC5B4</h1>
1786
+ <p>\uD1A0\uD070 \uC2DC\uC2A4\uD15C\uACFC \uC5F0\uB3D9\uB41C \uC548\uC804 \uD328\uB529\uACFC \uB108\uBE44\uAC00 \uC790\uB3D9 \uC801\uC6A9\uB429\uB2C8\uB2E4.</p>
1787
+ </Container>
1788
+ );
1789
+ }`,
1790
+ vueSnippet: '<template>\n <div class="atom-container atom-container-xl">\n <slot />\n </div>\n</template>'
1791
+ },
1792
+ {
1793
+ id: "layout",
1794
+ name: "\uB808\uC774\uC544\uC6C3 & \uC2A4\uD0DD (Layout & Stack)",
1795
+ category: "layout",
1796
+ source: "AtomSystem Universal",
1797
+ description: "\uC804\uCCB4 \uD398\uC774\uC9C0 \uC258(Header, Sidebar, Content, Footer) \uBC0F \uC2A4\uD398\uC774\uC2F1 \uD1A0\uD070 \uAE30\uBC18\uC758 \uC120\uD615/\uACA9\uC790 \uC870\uB9BD \uB3C4\uAD6C(Stack, Grid, Section)",
1798
+ callout: {
1799
+ type: "tip",
1800
+ title: "\uB808\uACE0 \uC870\uB9BD\uC758 \uBF08\uB300",
1801
+ text: "Layout.Header, Layout.Sidebar, Layout.Content, Layout.Stack, Layout.Grid\uB97C \uD65C\uC6A9\uD558\uC5EC 100% \uD1A0\uD070\uD654\uB41C \uB808\uC774\uC544\uC6C3\uC744 \uAD6C\uCD95\uD569\uB2C8\uB2E4."
1802
+ },
1803
+ propsSpec: [
1804
+ { name: "direction", type: "'vertical' | 'horizontal'", defaultValue: "'vertical'", description: "Stack \uBC30\uCE58 \uBC29\uD5A5" },
1805
+ { name: "gap", type: "'1' | '2' | '3' | '4' | '6' | '8' | '12'", defaultValue: "'4'", description: "\uC2A4\uD398\uC774\uC2F1 \uD1A0\uD070 \uB2E8\uC704 \uAC04\uACA9 (--atom-space-*)" },
1806
+ { name: "align", type: "'start' | 'center' | 'end' | 'stretch'", defaultValue: "'stretch'", description: "\uAD50\uCC28\uCD95 \uC815\uB82C" },
1807
+ { name: "justify", type: "'start' | 'center' | 'end' | 'between' | 'around'", defaultValue: "'start'", description: "\uC8FC\uCD95 \uC815\uB82C" },
1808
+ { name: "cols", type: "1 | 2 | 3 | 4 | 6 | 12", defaultValue: "3", description: "Grid \uCEEC\uB7FC \uC218" }
1809
+ ],
1810
+ useCases: [
1811
+ "\uB300\uC2DC\uBCF4\uB4DC \uAE00\uB85C\uBC8C \uC258 (\uC0C1\uB2E8 \uB124\uBE44\uBC14 + \uC88C\uCE21 \uC0AC\uC774\uB4DC\uBC14 + \uBA54\uC778 \uBCF8\uBB38)",
1812
+ '\uD3FC \uD544\uB4DC \uAC04\uC758 \uC218\uC9C1 \uC2A4\uD0DD \uC815\uB82C (gap="4")',
1813
+ '\uBC84\uD2BC \uADF8\uB8F9 \uBC0F \uC561\uC158 \uD234\uBC14\uC758 \uC218\uD3C9 \uC2A4\uD0DD \uC815\uB82C (direction="horizontal", gap="2")',
1814
+ '\uBC18\uC751\uD615 \uCE74\uB4DC \uB9AC\uC2A4\uD2B8\uC758 3\uC5F4 \uADF8\uB9AC\uB4DC \uBC30\uCE58 (Grid cols={3} gap="4")'
1815
+ ],
1816
+ usagePatterns: [
1817
+ "\uC784\uC758\uC758 margin-bottom, padding-top \uB300\uC2E0 Stack\uC758 gap \uC18D\uC131\uC744 \uD1B5\uD574 \uD1A0\uD070 \uAE30\uBC18 \uC77C\uAD00\uB41C \uB9AC\uB4EC\uC744 \uC720\uC9C0\uD569\uB2C8\uB2E4.",
1818
+ "\uCE74\uB4DC \uBAA9\uB85D\uC5D0\uB294 Grid \uCEF4\uD3EC\uB10C\uD2B8\uB97C \uC0AC\uC6A9\uD558\uC5EC \uBAA8\uBC14\uC77C(1\uC5F4) -> \uD0DC\uBE14\uB9BF(2\uC5F4) -> \uB370\uC2A4\uD06C\uD1B1(3\uC5F4) \uBC18\uC751\uD615 \uC804\uD658\uC744 \uBCF4\uC7A5\uD569\uB2C8\uB2E4."
1819
+ ],
1820
+ dosAndDonts: [
1821
+ {
1822
+ do: 'Stack\uACFC Grid\uC5D0 \uC815\uC758\uB41C \uD1A0\uD070 gap("2", "4", "6", "8")\uC744 \uC0AC\uC6A9\uD558\uC5EC \uC5EC\uBC31\uC744 \uCCB4\uACC4\uD654\uD569\uB2C8\uB2E4.',
1823
+ dont: "\uC790\uC2DD \uC5D8\uB9AC\uBA3C\uD2B8\uB9C8\uB2E4 \uC81C\uAC01\uAC01 mb-[17px], mt-[23px] \uB4F1 \uBD88\uADDC\uCE59\uD55C \uC778\uB77C\uC778 \uB9C8\uC9C4\uC744 \uBD80\uC5EC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."
1824
+ }
1825
+ ],
1826
+ relatedPatternIds: ["dashboard-overview", "filter-search"],
1827
+ htmlSnippet: '<div class="atom-layout-shell">\n <header class="atom-layout-header">\uD5E4\uB354</header>\n <main class="atom-layout-content">\n <div class="atom-stack-v atom-gap-4">\uC2A4\uD0DD \uBCF8\uBB38</div>\n </main>\n</div>',
1828
+ reactSnippet: `import { Layout, Container, Stack, Grid } from 'atomsystem/components/Layout';
1829
+
1830
+ export function LayoutDemo() {
1831
+ return (
1832
+ <Layout>
1833
+ <Layout.Header>\uD5E4\uB354</Layout.Header>
1834
+ <Layout.Content>
1835
+ <Container size="xl">
1836
+ <Stack gap="6">
1837
+ <h1 className="text-2xl font-bold">\uB300\uC2DC\uBCF4\uB4DC</h1>
1838
+ <Grid cols={3} gap="4">
1839
+ <div>\uCE74\uB4DC 1</div>
1840
+ <div>\uCE74\uB4DC 2</div>
1841
+ <div>\uCE74\uB4DC 3</div>
1842
+ </Grid>
1843
+ </Stack>
1844
+ </Container>
1845
+ </Layout.Content>
1846
+ </Layout>
1847
+ );
1848
+ }`,
1849
+ vueSnippet: '<template>\n <div class="atom-layout-shell">\n <slot />\n </div>\n</template>'
1632
1850
  }
1633
1851
  ];
1634
1852
 
@@ -8133,7 +8351,8 @@ var DEFAULT_THEME_CONFIG = {
8133
8351
  letterSpacing: "0.01em"
8134
8352
  }
8135
8353
  },
8136
- borderRadius: "14px"
8354
+ borderRadius: "14px",
8355
+ selectedIcon: "Sparkles"
8137
8356
  };
8138
8357
  var COLOR_PRESETS = [
8139
8358
  {
@@ -8327,11 +8546,27 @@ ${fontImportCSS}/* [AtomDesignToken] Live Injected Theme Variables */
8327
8546
  --atom-color-primary: ${color.primary};
8328
8547
  --atom-color-primary-hover: ${color.primaryHover};
8329
8548
  --atom-color-primary-subtle: ${color.primaryLight};
8549
+ --atom-color-bg: ${color.bgPrimary};
8550
+ --atom-color-surface: ${color.bgSecondary};
8551
+ --atom-color-text: ${color.textPrimary};
8552
+ --atom-color-text-secondary: ${color.textSecondary};
8553
+ --atom-color-border: ${color.borderSubtle};
8330
8554
  --atom-status-success: ${color.statusSuccess};
8331
8555
  --atom-status-danger: ${color.statusDanger};
8332
8556
  --atom-status-warning: ${color.statusWarning};
8333
8557
  --atom-radius: ${borderRadius};
8334
8558
 
8559
+ /* All Atom UI Component CSS Variable Mappings */
8560
+ --atom-btn-radius: ${borderRadius};
8561
+ --atom-input-radius: ${borderRadius};
8562
+ --atom-card-radius: ${borderRadius};
8563
+ --atom-card-bg: ${color.bgSecondary};
8564
+ --atom-card-border: ${color.borderSubtle};
8565
+ --atom-tree-bg: ${color.bgSecondary};
8566
+ --atom-tree-border: ${color.borderSubtle};
8567
+ --atom-tree-selected-bg: ${color.primaryLight};
8568
+ --atom-tree-selected-text: ${color.primary};
8569
+
8335
8570
  /* Typography Variables */
8336
8571
  --atom-font-h1-size: ${typography.h1.fontSize}px;
8337
8572
  --atom-font-h1-lh: ${typography.h1.lineHeight};
@@ -8460,6 +8695,33 @@ html.dark {
8460
8695
  --color-neutral-850: ${color.bgSecondary};
8461
8696
  }
8462
8697
 
8698
+ /* Global Component Surface Overrides */
8699
+ .atom-card, .atom-modal, .atom-sheet, .atom-tree, .atom-table, .atom-input, .atom-button {
8700
+ transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease, border-radius 0.2s ease;
8701
+ }
8702
+
8703
+ .atom-button-primary {
8704
+ background-color: ${color.primary} !important;
8705
+ color: #ffffff !important;
8706
+ border-radius: ${borderRadius} !important;
8707
+ }
8708
+
8709
+ .atom-button-primary:hover {
8710
+ background-color: ${color.primaryHover} !important;
8711
+ }
8712
+
8713
+ .atom-card {
8714
+ background-color: ${color.bgSecondary} !important;
8715
+ border-color: ${color.borderSubtle} !important;
8716
+ border-radius: ${borderRadius} !important;
8717
+ }
8718
+
8719
+ .atom-tree-node.is-selected {
8720
+ background-color: ${color.primaryLight} !important;
8721
+ color: ${color.primary} !important;
8722
+ border-radius: ${borderRadius} !important;
8723
+ }
8724
+
8463
8725
  html.dark .bg-white:not([data-keep-white]):not([role="switch"]):not([aria-hidden="true"]) {
8464
8726
  background-color: ${color.bgSecondary} !important;
8465
8727
  }
@@ -8643,9 +8905,9 @@ function cn(...inputs) {
8643
8905
 
8644
8906
  // src/index.ts
8645
8907
  var ATOM_UI_CSS_PATH = "atomsystem/css/atom-ui.css";
8646
- var ATOM_VERSION = "0.4.1";
8908
+ var ATOM_VERSION = "0.5.0";
8647
8909
  var ATOM_LIB_NAME = "atomsystem";
8648
8910
 
8649
- export { ATOM_LIB_NAME, ATOM_UI_CSS_PATH, ATOM_VERSION, AWESOME_CATEGORIES, AWESOME_DESIGN_MD_THEMES, BASE_COLOR_TOKENS, BRAND_PRESETS, COLOR_PRESETS, DEFAULT_THEME_CONFIG, FONT_FAMILY_PRESETS, GALLERY_COMPONENTS, PATTERNS_COLLECTION, RADIUS_TOKENS, SHADOW_TOKENS, SPACING_TOKENS, TYPOGRAPHY_TOKENS, applyThemeToDOM, cn, exportToCSS, exportToTailwind, exportToTokensJson, generateThemeCSS, isDarkColor };
8911
+ export { ATOM_LIB_NAME, ATOM_UI_CSS_PATH, ATOM_VERSION, AWESOME_CATEGORIES, AWESOME_DESIGN_MD_THEMES, BASE_COLOR_TOKENS, BRAND_PRESETS, COLOR_PRESETS, DEFAULT_THEME_CONFIG, FONT_FAMILY_PRESETS, GALLERY_COMPONENTS, LAYOUT_TOKENS, PATTERNS_COLLECTION, RADIUS_TOKENS, SHADOW_TOKENS, SPACING_TOKENS, TYPOGRAPHY_TOKENS, applyThemeToDOM, cn, exportToCSS, exportToTailwind, exportToTokensJson, generateThemeCSS, isDarkColor };
8650
8912
  //# sourceMappingURL=index.js.map
8651
8913
  //# sourceMappingURL=index.js.map