@seed-design/figma 0.1.6 → 0.1.8

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 (165) hide show
  1. package/lib/codegen/index.cjs +746 -646
  2. package/lib/codegen/index.d.ts +707 -627
  3. package/lib/codegen/index.d.ts.map +1 -1
  4. package/lib/codegen/index.js +746 -646
  5. package/lib/codegen/targets/react/index.cjs +1170 -1180
  6. package/lib/codegen/targets/react/index.d.ts +20 -9
  7. package/lib/codegen/targets/react/index.d.ts.map +1 -1
  8. package/lib/codegen/targets/react/index.js +1170 -1180
  9. package/lib/index.cjs +883 -668
  10. package/lib/index.d.ts +3 -1
  11. package/lib/index.d.ts.map +1 -1
  12. package/lib/index.js +883 -668
  13. package/package.json +3 -3
  14. package/src/codegen/component-properties.ts +283 -146
  15. package/src/codegen/core/component-handler.ts +9 -3
  16. package/src/codegen/core/jsx.ts +7 -2
  17. package/src/codegen/core/value-resolver.ts +35 -21
  18. package/src/codegen/targets/figma/pipeline.ts +4 -2
  19. package/src/codegen/targets/figma/value-resolver.ts +38 -2
  20. package/src/codegen/targets/react/component/handlers/action-button.ts +69 -5
  21. package/src/codegen/targets/react/component/handlers/alert-dialog.ts +81 -0
  22. package/src/codegen/targets/react/component/handlers/app-bar.ts +93 -128
  23. package/src/codegen/targets/react/component/handlers/avatar.ts +17 -8
  24. package/src/codegen/targets/react/component/handlers/badge.ts +0 -1
  25. package/src/codegen/targets/react/component/handlers/bottom-sheet.ts +71 -0
  26. package/src/codegen/targets/react/component/handlers/callout.ts +13 -17
  27. package/src/codegen/targets/react/component/handlers/chip.ts +66 -0
  28. package/src/codegen/targets/react/component/handlers/contextual-floating-button.ts +52 -0
  29. package/src/codegen/targets/react/component/handlers/divider.ts +19 -0
  30. package/src/codegen/targets/react/component/handlers/error-state.ts +26 -23
  31. package/src/codegen/targets/react/component/handlers/floating-action-button.ts +48 -0
  32. package/src/codegen/targets/react/component/handlers/help-bubble.ts +4 -5
  33. package/src/codegen/targets/react/component/handlers/identity-placeholder.ts +3 -2
  34. package/src/codegen/targets/react/component/handlers/inline-banner.ts +7 -14
  35. package/src/codegen/targets/react/component/handlers/manner-temp.ts +18 -0
  36. package/src/codegen/targets/react/component/handlers/menu-sheet.ts +106 -0
  37. package/src/codegen/targets/react/component/handlers/multiline-text-field.ts +1 -1
  38. package/src/codegen/targets/react/component/handlers/progress-circle.ts +3 -1
  39. package/src/codegen/targets/react/component/handlers/segmented-control.ts +4 -2
  40. package/src/codegen/targets/react/component/handlers/select-box.ts +7 -4
  41. package/src/codegen/targets/react/component/handlers/snackbar.ts +2 -2
  42. package/src/codegen/targets/react/component/handlers/tabs.ts +8 -125
  43. package/src/codegen/targets/react/component/index.ts +22 -19
  44. package/src/codegen/targets/react/instance.ts +1 -1
  45. package/src/codegen/targets/react/pipeline.ts +4 -2
  46. package/src/codegen/targets/react/props.ts +11 -4
  47. package/src/codegen/targets/react/value-resolver.ts +38 -3
  48. package/src/entities/data/__generated__/component-sets/action-button.d.ts +5 -5
  49. package/src/entities/data/__generated__/component-sets/action-button.mjs +5 -5
  50. package/src/entities/data/__generated__/component-sets/alert-dialog.d.ts +26 -0
  51. package/src/entities/data/__generated__/component-sets/alert-dialog.mjs +26 -0
  52. package/src/entities/data/__generated__/component-sets/avatar-stack.d.ts +5 -18
  53. package/src/entities/data/__generated__/component-sets/avatar-stack.mjs +5 -18
  54. package/src/entities/data/__generated__/component-sets/avatar.d.ts +11 -5
  55. package/src/entities/data/__generated__/component-sets/avatar.mjs +11 -5
  56. package/src/entities/data/__generated__/component-sets/badge.d.ts +0 -7
  57. package/src/entities/data/__generated__/component-sets/badge.mjs +0 -7
  58. package/src/entities/data/__generated__/component-sets/bottom-navigation-global.d.ts +3 -0
  59. package/src/entities/data/__generated__/component-sets/bottom-navigation-global.mjs +3 -0
  60. package/src/entities/data/__generated__/component-sets/bottom-navigation-kr.d.ts +3 -0
  61. package/src/entities/data/__generated__/component-sets/bottom-navigation-kr.mjs +3 -0
  62. package/src/entities/data/__generated__/component-sets/bottom-sheet.d.ts +53 -4
  63. package/src/entities/data/__generated__/component-sets/bottom-sheet.mjs +53 -4
  64. package/src/entities/data/__generated__/component-sets/callout.d.ts +13 -22
  65. package/src/entities/data/__generated__/component-sets/callout.mjs +13 -22
  66. package/src/entities/data/__generated__/component-sets/checkbox.d.ts +3 -3
  67. package/src/entities/data/__generated__/component-sets/checkbox.mjs +3 -3
  68. package/src/entities/data/__generated__/component-sets/checkmark.d.ts +34 -0
  69. package/src/entities/data/__generated__/component-sets/checkmark.mjs +34 -0
  70. package/src/entities/data/__generated__/component-sets/chip.d.ts +86 -0
  71. package/src/entities/data/__generated__/component-sets/chip.mjs +86 -0
  72. package/src/entities/data/__generated__/component-sets/chlid.d.ts +14 -0
  73. package/src/entities/data/__generated__/component-sets/chlid.mjs +14 -0
  74. package/src/entities/data/__generated__/component-sets/{extended-floating-action-button.d.ts → contextual-floating-button.d.ts} +12 -10
  75. package/src/entities/data/__generated__/component-sets/{extended-floating-action-button.mjs → contextual-floating-button.mjs} +12 -10
  76. package/src/entities/data/__generated__/component-sets/floating-action-button.d.ts +4 -8
  77. package/src/entities/data/__generated__/component-sets/floating-action-button.mjs +4 -8
  78. package/src/entities/data/__generated__/component-sets/help-bubble.d.ts +3 -10
  79. package/src/entities/data/__generated__/component-sets/help-bubble.mjs +3 -10
  80. package/src/entities/data/__generated__/component-sets/index.d.ts +13 -13
  81. package/src/entities/data/__generated__/component-sets/index.mjs +13 -13
  82. package/src/entities/data/__generated__/component-sets/inline-banner.d.ts +3 -3
  83. package/src/entities/data/__generated__/component-sets/inline-banner.mjs +3 -3
  84. package/src/entities/data/__generated__/component-sets/main-tab-navigation-global.d.ts +2 -2
  85. package/src/entities/data/__generated__/component-sets/main-tab-navigation-global.mjs +2 -2
  86. package/src/entities/data/__generated__/component-sets/manner-temp-badge.d.ts +2 -2
  87. package/src/entities/data/__generated__/component-sets/manner-temp-badge.mjs +2 -2
  88. package/src/entities/data/__generated__/component-sets/manner-temp.d.ts +2 -2
  89. package/src/entities/data/__generated__/component-sets/manner-temp.mjs +2 -2
  90. package/src/entities/data/__generated__/component-sets/{extended-action-sheet.d.ts → menu-sheet.d.ts} +17 -13
  91. package/src/entities/data/__generated__/component-sets/{extended-action-sheet.mjs → menu-sheet.mjs} +17 -13
  92. package/src/entities/data/__generated__/component-sets/multiline-text-field.d.ts +18 -18
  93. package/src/entities/data/__generated__/component-sets/multiline-text-field.mjs +18 -18
  94. package/src/entities/data/__generated__/component-sets/progress-circle.d.ts +2 -1
  95. package/src/entities/data/__generated__/component-sets/progress-circle.mjs +2 -1
  96. package/src/entities/data/__generated__/component-sets/radio-mark.d.ts +34 -0
  97. package/src/entities/data/__generated__/component-sets/radio-mark.mjs +34 -0
  98. package/src/entities/data/__generated__/component-sets/radio.d.ts +2 -2
  99. package/src/entities/data/__generated__/component-sets/radio.mjs +2 -2
  100. package/src/entities/data/__generated__/component-sets/reaction-button.d.ts +6 -6
  101. package/src/entities/data/__generated__/component-sets/reaction-button.mjs +6 -6
  102. package/src/entities/data/__generated__/component-sets/resizable-child.d.ts +18 -0
  103. package/src/entities/data/__generated__/component-sets/resizable-child.mjs +18 -0
  104. package/src/entities/data/__generated__/component-sets/resizable-icon.d.ts +18 -0
  105. package/src/entities/data/__generated__/component-sets/resizable-icon.mjs +18 -0
  106. package/src/entities/data/__generated__/component-sets/select-box.d.ts +4 -4
  107. package/src/entities/data/__generated__/component-sets/select-box.mjs +4 -4
  108. package/src/entities/data/__generated__/component-sets/skeleton.d.ts +7 -0
  109. package/src/entities/data/__generated__/component-sets/skeleton.mjs +7 -0
  110. package/src/entities/data/__generated__/component-sets/snackbar.d.ts +4 -4
  111. package/src/entities/data/__generated__/component-sets/snackbar.mjs +4 -4
  112. package/src/entities/data/__generated__/component-sets/switch.d.ts +1 -1
  113. package/src/entities/data/__generated__/component-sets/switch.mjs +1 -1
  114. package/src/entities/data/__generated__/component-sets/tabs.d.ts +13 -0
  115. package/src/entities/data/__generated__/component-sets/tabs.mjs +13 -0
  116. package/src/entities/data/__generated__/component-sets/template-button-group.d.ts +9 -33
  117. package/src/entities/data/__generated__/component-sets/template-button-group.mjs +9 -33
  118. package/src/entities/data/__generated__/component-sets/template-chip-group.d.ts +15 -12
  119. package/src/entities/data/__generated__/component-sets/template-chip-group.mjs +15 -12
  120. package/src/entities/data/__generated__/component-sets/template-completion.d.ts +28 -0
  121. package/src/entities/data/__generated__/component-sets/template-completion.mjs +28 -0
  122. package/src/entities/data/__generated__/component-sets/{error-state.d.ts → template-error-state.d.ts} +5 -5
  123. package/src/entities/data/__generated__/component-sets/{error-state.mjs → template-error-state.mjs} +5 -5
  124. package/src/entities/data/__generated__/component-sets/template-top-navigation.d.ts +9 -7
  125. package/src/entities/data/__generated__/component-sets/template-top-navigation.mjs +9 -7
  126. package/src/entities/data/__generated__/component-sets/text-field.d.ts +35 -36
  127. package/src/entities/data/__generated__/component-sets/text-field.mjs +35 -36
  128. package/src/entities/data/__generated__/component-sets/toggle-button.d.ts +7 -7
  129. package/src/entities/data/__generated__/component-sets/toggle-button.mjs +7 -7
  130. package/src/entities/data/__generated__/component-sets/top-navigation.d.ts +42 -0
  131. package/src/entities/data/__generated__/component-sets/top-navigation.mjs +42 -0
  132. package/src/entities/data/styles.ts +94 -0
  133. package/src/entities/index.ts +5 -2
  134. package/src/normalizer/from-plugin.ts +104 -44
  135. package/src/normalizer/types.ts +3 -1
  136. package/src/utils/figma-gradient.ts +72 -0
  137. package/src/utils/figma-node.ts +4 -3
  138. package/src/codegen/targets/react/component/handlers/action-chip.ts +0 -72
  139. package/src/codegen/targets/react/component/handlers/action-sheet.ts +0 -82
  140. package/src/codegen/targets/react/component/handlers/chip-tabs.ts +0 -57
  141. package/src/codegen/targets/react/component/handlers/control-chip.ts +0 -81
  142. package/src/codegen/targets/react/component/handlers/extended-action-sheet.ts +0 -98
  143. package/src/codegen/targets/react/component/handlers/extended-fab.ts +0 -25
  144. package/src/codegen/targets/react/component/handlers/fab.ts +0 -22
  145. package/src/codegen/targets/react/component/handlers/text-button.ts +0 -49
  146. package/src/entities/data/__generated__/component-sets/action-chip.d.ts +0 -57
  147. package/src/entities/data/__generated__/component-sets/action-chip.mjs +0 -57
  148. package/src/entities/data/__generated__/component-sets/action-sheet.d.ts +0 -40
  149. package/src/entities/data/__generated__/component-sets/action-sheet.mjs +0 -40
  150. package/src/entities/data/__generated__/component-sets/chip-tablist.d.ts +0 -24
  151. package/src/entities/data/__generated__/component-sets/chip-tablist.mjs +0 -24
  152. package/src/entities/data/__generated__/component-sets/control-chip.d.ts +0 -60
  153. package/src/entities/data/__generated__/component-sets/control-chip.mjs +0 -60
  154. package/src/entities/data/__generated__/component-sets/identity-placeholder.d.ts +0 -13
  155. package/src/entities/data/__generated__/component-sets/identity-placeholder.mjs +0 -13
  156. package/src/entities/data/__generated__/component-sets/manner-temp-bar.d.ts +0 -23
  157. package/src/entities/data/__generated__/component-sets/manner-temp-bar.mjs +0 -23
  158. package/src/entities/data/__generated__/component-sets/standard-navigation.d.ts +0 -23
  159. package/src/entities/data/__generated__/component-sets/standard-navigation.mjs +0 -23
  160. package/src/entities/data/__generated__/component-sets/tablist.d.ts +0 -29
  161. package/src/entities/data/__generated__/component-sets/tablist.mjs +0 -29
  162. package/src/entities/data/__generated__/component-sets/template-bottom-fixed-bar.d.ts +0 -42
  163. package/src/entities/data/__generated__/component-sets/template-bottom-fixed-bar.mjs +0 -42
  164. package/src/entities/data/__generated__/component-sets/text-button.d.ts +0 -45
  165. package/src/entities/data/__generated__/component-sets/text-button.mjs +0 -45
@@ -65,11 +65,12 @@ function stringifyElement(element, options = {}) {
65
65
  const { tag, props, children, meta: { comment, source, importPath } } = node;
66
66
  if (importPath) {
67
67
  const existing = importMap.get(importPath);
68
+ const [namespace] = tag.split(".");
68
69
  if (existing) {
69
- existing.add(tag);
70
+ existing.add(namespace);
70
71
  } else {
71
72
  importMap.set(importPath, new Set([
72
- tag
73
+ namespace
73
74
  ]));
74
75
  }
75
76
  }
@@ -88,6 +89,7 @@ function stringifyElement(element, options = {}) {
88
89
  return `${key}={${value}}`;
89
90
  }
90
91
  if (typeof value === "boolean") {
92
+ if (value === true) return key;
91
93
  return `${key}={${value}}`;
92
94
  }
93
95
  if (isElement(value)) {
@@ -514,10 +516,9 @@ function createPropsConverter({ handlers, shorthands, defaults }) {
514
516
  }
515
517
 
516
518
  function traverseNode(node, callback) {
519
+ callback(node);
517
520
  if ("children" in node) {
518
521
  node.children.forEach((child)=>traverseNode(child, callback));
519
- } else {
520
- callback(node);
521
522
  }
522
523
  }
523
524
  function findOne(node, callback) {
@@ -562,7 +563,7 @@ function getFirstStrokeVariable(node) {
562
563
  return node.boundVariables?.strokes?.[0];
563
564
  }
564
565
 
565
- function createValueResolver({ variableService, variableNameFormatter, styleService, styleNameFormatter, rawValueFormatters, shouldInferVariableName }) {
566
+ function createValueResolver({ variableService, variableNameFormatter, styleService, textStyleNameFormatter, fillStyleResolver, rawValueFormatters, shouldInferVariableName }) {
566
567
  function getVariableName(key) {
567
568
  const slug = variableService.getSlug(key);
568
569
  if (!slug) {
@@ -582,15 +583,6 @@ function createValueResolver({ variableService, variableNameFormatter, styleServ
582
583
  }
583
584
  return getVariableName(inferred.key);
584
585
  }
585
- function getStyleName(key) {
586
- const slug = styleService.getSlug(key);
587
- if (!slug) {
588
- return undefined;
589
- }
590
- return styleNameFormatter({
591
- slug
592
- });
593
- }
594
586
  function processColor(key, value, scope) {
595
587
  if (key) {
596
588
  return getVariableName(key);
@@ -600,6 +592,15 @@ function createValueResolver({ variableService, variableNameFormatter, styleServ
600
592
  }
601
593
  return undefined;
602
594
  }
595
+ function processFillStyle(key) {
596
+ const slug = styleService.getSlug(key);
597
+ if (!slug) {
598
+ return undefined;
599
+ }
600
+ return fillStyleResolver({
601
+ slug
602
+ });
603
+ }
603
604
  function processDimension(key, value, scope) {
604
605
  if (key) {
605
606
  return getVariableName(key);
@@ -650,7 +651,7 @@ function createValueResolver({ variableService, variableNameFormatter, styleServ
650
651
  paddingTop: (node)=>processDimension(node.boundVariables?.paddingTop?.id, node.paddingTop, "GAP"),
651
652
  paddingBottom: (node)=>processDimension(node.boundVariables?.paddingBottom?.id, node.paddingBottom, "GAP"),
652
653
  itemSpacing: (node)=>processDimension(node.boundVariables?.itemSpacing?.id, node.itemSpacing, "GAP"),
653
- frameFill: (node)=>processColor(getFirstFillVariable(node)?.id, getFirstSolidFill(node)?.color, "FRAME_FILL"),
654
+ frameFill: (node)=>node.fillStyleKey ? processFillStyle(node.fillStyleKey) : processColor(getFirstFillVariable(node)?.id, getFirstSolidFill(node)?.color, "FRAME_FILL"),
654
655
  shapeFill: (node)=>processColor(getFirstFillVariable(node)?.id, getFirstSolidFill(node)?.color, "SHAPE_FILL"),
655
656
  textFill: (node)=>processColor(getFirstFillVariable(node)?.id, getFirstSolidFill(node)?.color, "TEXT_FILL"),
656
657
  stroke: (node)=>processColor(getFirstStrokeVariable(node)?.id, getFirstStroke(node)?.color, "STROKE_COLOR"),
@@ -663,10 +664,14 @@ function createValueResolver({ variableService, variableNameFormatter, styleServ
663
664
  lineHeight: (node)=>processFontDimension(node.boundVariables?.lineHeight?.[0]?.id, node.style.lineHeightPx, "LINE_HEIGHT")
664
665
  };
665
666
  function getTextStyleValue(node) {
666
- if (node.textStyleKey) {
667
- return getStyleName(node.textStyleKey);
667
+ if (!node.textStyleKey) return undefined;
668
+ const slug = styleService.getSlug(node.textStyleKey);
669
+ if (!slug) {
670
+ return undefined;
668
671
  }
669
- return undefined;
672
+ return textStyleNameFormatter({
673
+ slug
674
+ });
670
675
  }
671
676
  return {
672
677
  getFormattedValue,
@@ -810,8 +815,16 @@ function createTypeStylePropsConverter({ valueResolver }) {
810
815
  function createFrameFillPropsConverter(valueResolver) {
811
816
  return definePropsConverter((node)=>{
812
817
  const bg = valueResolver.getFormattedValue.frameFill(node);
818
+ if (bg === undefined || typeof bg === "string") {
819
+ return {
820
+ bg
821
+ };
822
+ }
813
823
  return {
814
- bg
824
+ bgGradient: bg.value,
825
+ ...bg.direction && {
826
+ bgGradientDirection: bg.direction
827
+ }
815
828
  };
816
829
  });
817
830
  }
@@ -974,7 +987,7 @@ function createInstanceTransformer({ iconHandler, propsConverters, componentHand
974
987
  }
975
988
  const componentHandler = componentSetKey ? componentHandlers[componentSetKey] : componentHandlers[componentKey];
976
989
  if (componentHandler) {
977
- return componentHandler.transform(node);
990
+ return componentHandler.transform(node, traverse);
978
991
  }
979
992
  return frameTransformer(node, traverse);
980
993
  });
@@ -997,128 +1010,126 @@ function createTextTransformer({ propsConverters }) {
997
1010
  }
998
1011
 
999
1012
  const metadata$K = {
1000
- "name": "🔵 [Template] Bottom Fixed Bar",
1001
- "key": "bac8592d10ee12452d79d5db6353850c0f0c9c3f",
1013
+ "name": "🔵 [Template] Button Group",
1014
+ "key": "29109a34197f2eb5d390b1d9ebba270979a7b302",
1002
1015
  "componentPropertyDefinitions": {
1003
- "Text#30483:84": {
1004
- "type": "TEXT"
1005
- },
1006
- "Show Text Button#30483:80": {
1007
- "type": "BOOLEAN"
1008
- },
1009
- "Show Favorite#29056:0": {
1010
- "type": "BOOLEAN"
1011
- },
1012
- "Show Indicator#28768:0": {
1013
- "type": "BOOLEAN"
1014
- },
1015
- "Show Pay Logo#15354:5": {
1016
- "type": "BOOLEAN"
1017
- },
1018
- "Type": {
1016
+ "Size": {
1019
1017
  "type": "VARIANT",
1020
1018
  "variantOptions": [
1021
- "Information",
1022
- "Multi Actions"
1019
+ "Small",
1020
+ "Medium"
1023
1021
  ]
1024
1022
  },
1025
- "OS": {
1023
+ "Type": {
1026
1024
  "type": "VARIANT",
1027
1025
  "variantOptions": [
1028
- "iOS",
1029
- "Andorid"
1026
+ "horizontal Equal",
1027
+ "Horizontal Ratio"
1030
1028
  ]
1031
1029
  },
1032
- "Show Divider": {
1030
+ "Item Count": {
1033
1031
  "type": "VARIANT",
1034
1032
  "variantOptions": [
1035
- "True",
1036
- "False"
1033
+ "2",
1034
+ "3"
1037
1035
  ]
1038
1036
  }
1039
1037
  }
1040
1038
  };
1041
1039
 
1042
1040
  const metadata$J = {
1043
- "name": "🔵 [Template] Button Group",
1044
- "key": "de6c65d34cc4a01c18c9a7c0ded34635170ca11f",
1041
+ "name": "🔵 [Template] Chip Group",
1042
+ "key": "5b1155aae0f90d1bce6a7499f53a547e88ec3b86",
1045
1043
  "componentPropertyDefinitions": {
1046
- "Show Secondary Button#29056:29": {
1047
- "type": "BOOLEAN"
1048
- },
1049
- "Show Favorite Button#29056:0": {
1050
- "type": "BOOLEAN"
1051
- },
1052
- "Show Step Indicator#25896:0": {
1053
- "type": "BOOLEAN"
1054
- },
1055
- "Show Indicator#28768:0": {
1056
- "type": "BOOLEAN"
1057
- },
1058
- "Text#16839:0": {
1059
- "type": "TEXT"
1060
- },
1061
- "OS": {
1044
+ "Variant": {
1062
1045
  "type": "VARIANT",
1063
1046
  "variantOptions": [
1064
- "iOS",
1065
- "Andorid"
1047
+ "Solid",
1048
+ "Outline Strong",
1049
+ "Outline Weak"
1066
1050
  ]
1067
1051
  },
1068
- "Position": {
1052
+ "Size": {
1069
1053
  "type": "VARIANT",
1070
1054
  "variantOptions": [
1071
- "Bottom fixed",
1072
- "On keyboard"
1055
+ "Large",
1056
+ "Medium",
1057
+ "Small"
1073
1058
  ]
1074
1059
  },
1075
- "Type": {
1060
+ "Layout": {
1076
1061
  "type": "VARIANT",
1077
1062
  "variantOptions": [
1078
- "Single",
1079
- "Vertical",
1080
- "Horizontal",
1081
- "Horizontal ratio"
1063
+ "Scrollable",
1064
+ "Overflow"
1082
1065
  ]
1066
+ }
1067
+ }
1068
+ };
1069
+
1070
+ const metadata$I = {
1071
+ "name": "🔵 [Template] Completion",
1072
+ "key": "d91c789c66c2da665d820318f1a4d8671946eb79",
1073
+ "componentPropertyDefinitions": {
1074
+ "Description#28427:4": {
1075
+ "type": "TEXT"
1076
+ },
1077
+ "Title#28427:5": {
1078
+ "type": "TEXT"
1079
+ },
1080
+ "Show Description#28427:6": {
1081
+ "type": "BOOLEAN"
1083
1082
  },
1084
- "Show Divider": {
1083
+ "Show Button#28427:7": {
1084
+ "type": "BOOLEAN"
1085
+ },
1086
+ "Show Top Navigation#28427:8": {
1087
+ "type": "BOOLEAN"
1088
+ },
1089
+ "Variant": {
1085
1090
  "type": "VARIANT",
1086
1091
  "variantOptions": [
1087
- "True",
1088
- "False"
1092
+ "Screen",
1093
+ "Dialog"
1089
1094
  ]
1090
1095
  }
1091
1096
  }
1092
1097
  };
1093
1098
 
1094
- const metadata$I = {
1095
- "name": "🔵 [Template] Chip Group",
1096
- "key": "d46dc9059bf351928a2d403317ad7db34e70826e",
1099
+ const metadata$H = {
1100
+ "name": "🔵 [Template] Error State",
1101
+ "key": "39b4ecd0b5b4d35f4dc5791765ca04aa062a5172",
1097
1102
  "componentPropertyDefinitions": {
1098
- "Refresh Button#15888:2": {
1103
+ "Show Buttons#9080:5": {
1099
1104
  "type": "BOOLEAN"
1100
1105
  },
1101
- "Type": {
1106
+ "Title#16237:0": {
1107
+ "type": "TEXT"
1108
+ },
1109
+ "Description#16237:5": {
1110
+ "type": "TEXT"
1111
+ },
1112
+ "Secondary Action Label#17042:0": {
1113
+ "type": "TEXT"
1114
+ },
1115
+ "Variant": {
1102
1116
  "type": "VARIANT",
1103
1117
  "variantOptions": [
1104
- "Filter",
1105
- "Control",
1106
- "Action"
1118
+ "Default",
1119
+ "Basement"
1107
1120
  ]
1108
1121
  },
1109
- "Chip Count": {
1122
+ "Layout": {
1110
1123
  "type": "VARIANT",
1111
1124
  "variantOptions": [
1112
- "Full",
1113
- "3",
1114
- "2",
1115
- "4"
1125
+ "With Title",
1126
+ "Description Only"
1116
1127
  ]
1117
1128
  }
1118
1129
  }
1119
1130
  };
1120
1131
 
1121
- const metadata$H = {
1132
+ const metadata$G = {
1122
1133
  "name": "🔵 [Template] Select Box Group",
1123
1134
  "key": "a3d58bb8540600878742cdcf2608a4b3851667ec",
1124
1135
  "componentPropertyDefinitions": {
@@ -1143,13 +1154,22 @@ const metadata$H = {
1143
1154
  }
1144
1155
  };
1145
1156
 
1146
- const metadata$G = {
1157
+ const metadata$F = {
1147
1158
  "name": "🔵 [Template] Top Navigation",
1148
1159
  "key": "74f045c1972dc31d0fddd0a0027537b6779cd0e8",
1149
1160
  "componentPropertyDefinitions": {
1150
1161
  "Action Button#17406:0": {
1151
1162
  "type": "BOOLEAN"
1152
1163
  },
1164
+ "Sub Title#20497:0": {
1165
+ "type": "BOOLEAN"
1166
+ },
1167
+ "Large Title#20497:5": {
1168
+ "type": "TEXT"
1169
+ },
1170
+ "Sub Title #20497:10": {
1171
+ "type": "TEXT"
1172
+ },
1153
1173
  "Variants": {
1154
1174
  "type": "VARIANT",
1155
1175
  "variantOptions": [
@@ -1158,36 +1178,29 @@ const metadata$G = {
1158
1178
  "Standard Transparent",
1159
1179
  "Large Title"
1160
1180
  ]
1161
- },
1162
- "OS": {
1163
- "type": "VARIANT",
1164
- "variantOptions": [
1165
- "iOS",
1166
- "Android"
1167
- ]
1168
1181
  }
1169
1182
  }
1170
1183
  };
1171
1184
 
1172
- const metadata$F = {
1185
+ const metadata$E = {
1173
1186
  "name": "🟢 Action Button",
1174
1187
  "key": "450ede9d0bf42fc6ef14345c77e6e407d6d5ee89",
1175
1188
  "componentPropertyDefinitions": {
1189
+ "Label#5987:61": {
1190
+ "type": "TEXT"
1191
+ },
1176
1192
  "Suffix Icon#5987:244": {
1177
1193
  "type": "INSTANCE_SWAP",
1178
1194
  "preferredValues": []
1179
1195
  },
1180
- "Icon#7574:0": {
1196
+ "Prefix Icon#5987:305": {
1181
1197
  "type": "INSTANCE_SWAP",
1182
1198
  "preferredValues": []
1183
1199
  },
1184
- "Prefix Icon#5987:305": {
1200
+ "Icon#7574:0": {
1185
1201
  "type": "INSTANCE_SWAP",
1186
1202
  "preferredValues": []
1187
1203
  },
1188
- "Label#5987:61": {
1189
- "type": "TEXT"
1190
- },
1191
1204
  "Size": {
1192
1205
  "type": "VARIANT",
1193
1206
  "variantOptions": [
@@ -1229,100 +1242,28 @@ const metadata$F = {
1229
1242
  }
1230
1243
  };
1231
1244
 
1232
- const metadata$E = {
1233
- "name": "🟢 Action Chip",
1234
- "key": "3d21594ef116e94a9465d507447b858aea062575",
1235
- "componentPropertyDefinitions": {
1236
- "Icon#8714:0": {
1237
- "type": "INSTANCE_SWAP",
1238
- "preferredValues": []
1239
- },
1240
- "Prefix Icon#8711:0": {
1241
- "type": "INSTANCE_SWAP",
1242
- "preferredValues": [
1243
- {
1244
- "type": "COMPONENT_SET",
1245
- "key": "8ed05ef62a40f2dc034ee7eb6945bd0e63ad49aa"
1246
- }
1247
- ]
1248
- },
1249
- "Suffix Icon#8711:3": {
1250
- "type": "INSTANCE_SWAP",
1251
- "preferredValues": []
1252
- },
1253
- "Label#7185:0": {
1254
- "type": "TEXT"
1255
- },
1256
- "Show Count#7185:42": {
1257
- "type": "BOOLEAN"
1258
- },
1259
- "Count#7185:21": {
1260
- "type": "TEXT"
1261
- },
1262
- "Size": {
1263
- "type": "VARIANT",
1264
- "variantOptions": [
1265
- "Medium",
1266
- "Small"
1267
- ]
1268
- },
1269
- "Layout": {
1270
- "type": "VARIANT",
1271
- "variantOptions": [
1272
- "Text Only",
1273
- "Icon First",
1274
- "Icon Last",
1275
- "Icon Both",
1276
- "Icon Only"
1277
- ]
1278
- },
1279
- "State": {
1280
- "type": "VARIANT",
1281
- "variantOptions": [
1282
- "Enabled",
1283
- "Pressed",
1284
- "Disabled"
1285
- ]
1286
- }
1287
- }
1288
- };
1289
-
1290
1245
  const metadata$D = {
1291
- "name": "🟢 Action Sheet",
1292
- "key": "7c29b70b7e71618e1894c26f61f336de2730d76e",
1246
+ "name": "🟢 Alert Dialog",
1247
+ "key": "e0c89524a554ca1bf95c016b7255f29e257624aa",
1293
1248
  "componentPropertyDefinitions": {
1294
- "Description#15641:70": {
1249
+ "Title Text#20361:0": {
1295
1250
  "type": "TEXT"
1296
1251
  },
1297
- "Title#15641:37": {
1252
+ "Description Text#20361:7": {
1298
1253
  "type": "TEXT"
1299
1254
  },
1300
- "OS Indicator (Figma Only)#15641:20": {
1255
+ "Show Title#20361:14": {
1301
1256
  "type": "BOOLEAN"
1302
1257
  },
1303
- "Type": {
1304
- "type": "VARIANT",
1305
- "variantOptions": [
1306
- "Normal",
1307
- "Destructive"
1308
- ]
1309
- },
1310
- "Header": {
1311
- "type": "VARIANT",
1312
- "variantOptions": [
1313
- "Title Only",
1314
- "Description Only",
1315
- "Title With Description",
1316
- "None"
1317
- ]
1318
- },
1319
- "Action Count": {
1258
+ "Layout": {
1320
1259
  "type": "VARIANT",
1321
1260
  "variantOptions": [
1322
- "1",
1323
- "2",
1324
- "3",
1325
- "4"
1261
+ "Single",
1262
+ "Neutral",
1263
+ "Neutral (Overflow)",
1264
+ "Critical",
1265
+ "Critical (Overflow)",
1266
+ "Nonpreferred"
1326
1267
  ]
1327
1268
  }
1328
1269
  }
@@ -1330,12 +1271,9 @@ const metadata$D = {
1330
1271
 
1331
1272
  const metadata$C = {
1332
1273
  "name": "🟢 Avatar",
1333
- "key": "d71644aeba2e29deda366798fdfe35977166d120",
1274
+ "key": "4a8853c3068c08b69b13e71dd42ce186e968697e",
1334
1275
  "componentPropertyDefinitions": {
1335
- "Show Image#71850:57": {
1336
- "type": "BOOLEAN"
1337
- },
1338
- "Show Badge#1398:26": {
1276
+ "Has Image Contents#33407:0": {
1339
1277
  "type": "BOOLEAN"
1340
1278
  },
1341
1279
  "Size": {
@@ -1350,13 +1288,22 @@ const metadata$C = {
1350
1288
  "80",
1351
1289
  "96"
1352
1290
  ]
1291
+ },
1292
+ "Badge": {
1293
+ "type": "VARIANT",
1294
+ "variantOptions": [
1295
+ "None",
1296
+ "Circle",
1297
+ "Shield",
1298
+ "Flower"
1299
+ ]
1353
1300
  }
1354
1301
  }
1355
1302
  };
1356
1303
 
1357
1304
  const metadata$B = {
1358
1305
  "name": "🟢 Avatar Stack",
1359
- "key": "019467fdad2192abb48699dcfb79e344df04b799",
1306
+ "key": "e8e91e01000d878742c55cd6e44b6786460440f7",
1360
1307
  "componentPropertyDefinitions": {
1361
1308
  "Size": {
1362
1309
  "type": "VARIANT",
@@ -1364,24 +1311,11 @@ const metadata$B = {
1364
1311
  "20",
1365
1312
  "24",
1366
1313
  "36",
1314
+ "42",
1367
1315
  "48",
1368
- "64"
1369
- ]
1370
- },
1371
- "Item Count": {
1372
- "type": "VARIANT",
1373
- "variantOptions": [
1374
- "2",
1375
- "3",
1376
- "4",
1377
- "5"
1378
- ]
1379
- },
1380
- "Top Item": {
1381
- "type": "VARIANT",
1382
- "variantOptions": [
1383
- "Last Item",
1384
- "First Item"
1316
+ "64",
1317
+ "80",
1318
+ "96"
1385
1319
  ]
1386
1320
  }
1387
1321
  }
@@ -1418,13 +1352,6 @@ const metadata$A = {
1418
1352
  "Weak",
1419
1353
  "Outline"
1420
1354
  ]
1421
- },
1422
- "Shape": {
1423
- "type": "VARIANT",
1424
- "variantOptions": [
1425
- "Rectangle",
1426
- "Pill"
1427
- ]
1428
1355
  }
1429
1356
  }
1430
1357
  };
@@ -1433,6 +1360,9 @@ const metadata$z = {
1433
1360
  "name": "🟢 Bottom Navigation / Global",
1434
1361
  "key": "983650a4dff639b38bf68ff6004efc8ec4fb5c20",
1435
1362
  "componentPropertyDefinitions": {
1363
+ "Show Safe Area#25445:3": {
1364
+ "type": "BOOLEAN"
1365
+ },
1436
1366
  "OS": {
1437
1367
  "type": "VARIANT",
1438
1368
  "variantOptions": [
@@ -1454,6 +1384,9 @@ const metadata$y = {
1454
1384
  "name": "🟢 Bottom Navigation / KR",
1455
1385
  "key": "accc7cea2d0250cdfbf0197ce00a677c6b9e0dae",
1456
1386
  "componentPropertyDefinitions": {
1387
+ "Show Safe Area#25445:0": {
1388
+ "type": "BOOLEAN"
1389
+ },
1457
1390
  "OS": {
1458
1391
  "type": "VARIANT",
1459
1392
  "variantOptions": [
@@ -1468,37 +1401,84 @@ const metadata$x = {
1468
1401
  "name": "🟢 Bottom Sheet",
1469
1402
  "key": "16bafa5d1155896fe18fb6f52f904f5cd2048686",
1470
1403
  "componentPropertyDefinitions": {
1471
- "Layout": {
1472
- "type": "VARIANT",
1473
- "variantOptions": [
1474
- "Center",
1475
- "Left",
1476
- "None"
1477
- ]
1478
- }
1479
- }
1480
- };
1481
-
1482
- const metadata$w = {
1483
- "name": "🟢 Callout",
1484
- "key": "ec46d38baac3c367c4a5ffa47a2110d51ba0a4fe",
1485
- "componentPropertyDefinitions": {
1486
- "Show Icon#12598:229": {
1487
- "type": "BOOLEAN"
1404
+ "Title#19787:3": {
1405
+ "type": "TEXT"
1488
1406
  },
1489
- "Icon#12598:210": {
1490
- "type": "INSTANCE_SWAP",
1407
+ "Description#19787:7": {
1408
+ "type": "TEXT"
1409
+ },
1410
+ "Show Close Button#19787:11": {
1411
+ "type": "BOOLEAN"
1412
+ },
1413
+ "Show Footer#25162:14": {
1414
+ "type": "BOOLEAN"
1415
+ },
1416
+ "Show Description#25192:0": {
1417
+ "type": "BOOLEAN"
1418
+ },
1419
+ "Contents#25320:0": {
1420
+ "type": "INSTANCE_SWAP",
1491
1421
  "preferredValues": [
1492
1422
  {
1493
1423
  "type": "COMPONENT_SET",
1494
- "key": "f2c04b68b0bec4ec9145d832de45947030d3b653"
1424
+ "key": "ec1901cb37dc88360ae8fd2b61f71e630fda7924"
1425
+ },
1426
+ {
1427
+ "type": "COMPONENT",
1428
+ "key": "5c5369d9c22115fd240d7b75ac2a334e9163ea57"
1429
+ },
1430
+ {
1431
+ "type": "COMPONENT",
1432
+ "key": "8670afb7520ac44dfed003e3e9c7cce359897d0c"
1433
+ },
1434
+ {
1435
+ "type": "COMPONENT",
1436
+ "key": "e3d337e6eddbe9ec025fe69520c1cff0bd697b60"
1437
+ },
1438
+ {
1439
+ "type": "COMPONENT",
1440
+ "key": "0c6c58d5b7a159e7db1a0c1ccf32916ca8a51164"
1441
+ },
1442
+ {
1443
+ "type": "COMPONENT",
1444
+ "key": "088624580ee501efed377bb4f42561a387db5699"
1495
1445
  }
1496
1446
  ]
1497
1447
  },
1448
+ "Show Safe Area#25488:8": {
1449
+ "type": "BOOLEAN"
1450
+ },
1451
+ "Header Layout": {
1452
+ "type": "VARIANT",
1453
+ "variantOptions": [
1454
+ "Bottom Left",
1455
+ "None",
1456
+ "Bottom Center",
1457
+ "Top Center",
1458
+ "Top Left"
1459
+ ]
1460
+ }
1461
+ }
1462
+ };
1463
+
1464
+ const metadata$w = {
1465
+ "name": "🟢 Callout",
1466
+ "key": "ec46d38baac3c367c4a5ffa47a2110d51ba0a4fe",
1467
+ "componentPropertyDefinitions": {
1468
+ "Prefix Icon#35087:0": {
1469
+ "type": "INSTANCE_SWAP",
1470
+ "preferredValues": []
1471
+ },
1472
+ "Show Prefix Icon#35087:1": {
1473
+ "type": "BOOLEAN"
1474
+ },
1475
+ "Pressed#35087:2": {
1476
+ "type": "BOOLEAN"
1477
+ },
1498
1478
  "Interaction": {
1499
1479
  "type": "VARIANT",
1500
1480
  "variantOptions": [
1501
- "Default",
1481
+ "Display",
1502
1482
  "Actionable",
1503
1483
  "Dismissible"
1504
1484
  ]
@@ -1513,25 +1493,18 @@ const metadata$w = {
1513
1493
  "Magic"
1514
1494
  ]
1515
1495
  },
1516
- "State": {
1517
- "type": "VARIANT",
1518
- "variantOptions": [
1519
- "Enabled",
1520
- "Pressed"
1521
- ]
1522
- },
1523
1496
  "Show Title": {
1524
1497
  "type": "VARIANT",
1525
1498
  "variantOptions": [
1526
- "True",
1527
- "False"
1499
+ "False",
1500
+ "True"
1528
1501
  ]
1529
1502
  },
1530
- "Show Link Label": {
1503
+ "Show Link Text": {
1531
1504
  "type": "VARIANT",
1532
1505
  "variantOptions": [
1533
- "True",
1534
- "False"
1506
+ "False",
1507
+ "True"
1535
1508
  ]
1536
1509
  }
1537
1510
  }
@@ -1570,61 +1543,60 @@ const metadata$v = {
1570
1543
  "variantOptions": [
1571
1544
  "Enabled",
1572
1545
  "Pressed",
1546
+ "Disabled",
1573
1547
  "Selected",
1574
1548
  "Selected-Pressed",
1549
+ "Selected-Disabled",
1575
1550
  "Indeterminate",
1576
1551
  "Indeterminate-Pressed",
1577
- "Disabled",
1578
- "Disabled-Selected",
1579
- "Disabled-Indeterminate"
1552
+ "Indeterminate-Disabled"
1580
1553
  ]
1581
1554
  }
1582
1555
  }
1583
1556
  };
1584
1557
 
1585
1558
  const metadata$u = {
1586
- "name": "🟢 Chip Tablist",
1587
- "key": "d098159beacf7713e9116f0ef38d8a20f64ec84f",
1559
+ "name": "🟢 Checkmark",
1560
+ "key": "fae60fb392f55bde60de1dbccb2f453320068805",
1588
1561
  "componentPropertyDefinitions": {
1589
- "Tab Count": {
1562
+ "Shape": {
1590
1563
  "type": "VARIANT",
1591
1564
  "variantOptions": [
1592
- "2",
1593
- "3",
1594
- "4",
1595
- "5",
1596
- "6",
1597
- "Max"
1565
+ "Square",
1566
+ "Ghost"
1598
1567
  ]
1599
1568
  },
1600
- "Variant": {
1569
+ "Size": {
1601
1570
  "type": "VARIANT",
1602
1571
  "variantOptions": [
1603
- "Neutral Solid",
1604
- "Brand Solid"
1572
+ "Medium",
1573
+ "Large"
1574
+ ]
1575
+ },
1576
+ "State": {
1577
+ "type": "VARIANT",
1578
+ "variantOptions": [
1579
+ "Enabled",
1580
+ "Pressed",
1581
+ "Selected",
1582
+ "Selected-Pressed",
1583
+ "Indeterminate",
1584
+ "Indeterminate-Pressed",
1585
+ "Disabled",
1586
+ "Disabled-Selected",
1587
+ "Disabled-Indeterminate"
1605
1588
  ]
1606
1589
  }
1607
1590
  }
1608
1591
  };
1609
1592
 
1610
1593
  const metadata$t = {
1611
- "name": "🟢 Control Chip",
1612
- "key": "5780d56fc2f9bc4bbd6bc3db93949d8a8b7b7563",
1594
+ "name": "🟢 Chip",
1595
+ "key": "8156ef08d9aaa2b0de1cc4a113ec0c9d0586f831",
1613
1596
  "componentPropertyDefinitions": {
1614
- "Suffix Icon#8722:82": {
1615
- "type": "INSTANCE_SWAP",
1616
- "preferredValues": []
1617
- },
1618
1597
  "Label#7185:0": {
1619
1598
  "type": "TEXT"
1620
1599
  },
1621
- "Show Count#7185:42": {
1622
- "type": "BOOLEAN"
1623
- },
1624
- "Icon#8722:41": {
1625
- "type": "INSTANCE_SWAP",
1626
- "preferredValues": []
1627
- },
1628
1600
  "Prefix Icon#8722:0": {
1629
1601
  "type": "INSTANCE_SWAP",
1630
1602
  "preferredValues": [
@@ -1634,24 +1606,48 @@ const metadata$t = {
1634
1606
  }
1635
1607
  ]
1636
1608
  },
1637
- "Count#7185:21": {
1638
- "type": "TEXT"
1609
+ "Suffix Type#32538:0": {
1610
+ "type": "INSTANCE_SWAP",
1611
+ "preferredValues": [
1612
+ {
1613
+ "type": "COMPONENT",
1614
+ "key": "27343e0e5ab2c66948e9b10fde03d58b5e037212"
1615
+ },
1616
+ {
1617
+ "type": "COMPONENT",
1618
+ "key": "5f0d74c959c49dadf5920b19c6267924982ab130"
1619
+ },
1620
+ {
1621
+ "type": "COMPONENT",
1622
+ "key": "a1233c35c4368aba2439d39bc8aedc37cf95bd86"
1623
+ },
1624
+ {
1625
+ "type": "COMPONENT_SET",
1626
+ "key": "43b6e51bc372e108a4ee17fbf4c75800d95f4b8c"
1627
+ },
1628
+ {
1629
+ "type": "COMPONENT_SET",
1630
+ "key": "df43b92004c850e7c6d2869e7a4ba1ef9a2d7db6"
1631
+ }
1632
+ ]
1639
1633
  },
1640
- "Size": {
1634
+ "Has Suffix#32538:181": {
1635
+ "type": "BOOLEAN"
1636
+ },
1637
+ "Variant": {
1641
1638
  "type": "VARIANT",
1642
1639
  "variantOptions": [
1643
- "Medium",
1644
- "Small"
1640
+ "Solid",
1641
+ "Outline Strong",
1642
+ "Outline Weak"
1645
1643
  ]
1646
1644
  },
1647
- "Layout": {
1645
+ "Size": {
1648
1646
  "type": "VARIANT",
1649
1647
  "variantOptions": [
1650
- "Text Only",
1651
- "Icon First",
1652
- "Icon Last",
1653
- "Icon Both",
1654
- "Icon Only"
1648
+ "Large",
1649
+ "Medium",
1650
+ "Small"
1655
1651
  ]
1656
1652
  },
1657
1653
  "State": {
@@ -1659,161 +1655,121 @@ const metadata$t = {
1659
1655
  "variantOptions": [
1660
1656
  "Enabled",
1661
1657
  "Pressed",
1662
- "Selected",
1663
- "Selected-Pressed",
1664
- "Disabled",
1665
- "Disabled-Selected"
1666
- ]
1667
- }
1668
- }
1669
- };
1670
-
1671
- const metadata$s = {
1672
- "name": "🟢 Divider",
1673
- "key": "848e953725f757ea1a79e1fecc0b608a035032d3",
1674
- "componentPropertyDefinitions": {
1675
- "Tone": {
1676
- "type": "VARIANT",
1677
- "variantOptions": [
1678
- "Neutral",
1679
- "Neutral Muted"
1658
+ "Disabled"
1680
1659
  ]
1681
- }
1682
- }
1683
- };
1684
-
1685
- const metadata$r = {
1686
- "name": "🟢 Error State",
1687
- "key": "39b4ecd0b5b4d35f4dc5791765ca04aa062a5172",
1688
- "componentPropertyDefinitions": {
1689
- "Secondary Action Label#17042:0": {
1690
- "type": "TEXT"
1691
- },
1692
- "Title#16237:0": {
1693
- "type": "TEXT"
1694
- },
1695
- "Description#16237:5": {
1696
- "type": "TEXT"
1697
1660
  },
1698
- "Show Buttons#9080:5": {
1699
- "type": "BOOLEAN"
1700
- },
1701
- "Variant": {
1661
+ "Selected": {
1702
1662
  "type": "VARIANT",
1703
1663
  "variantOptions": [
1704
- "Default",
1705
- "Basement"
1664
+ "False",
1665
+ "True"
1706
1666
  ]
1707
1667
  },
1708
- "Layout": {
1668
+ "Prefix Type": {
1709
1669
  "type": "VARIANT",
1710
1670
  "variantOptions": [
1711
- "With Title",
1712
- "Description Only"
1671
+ "None",
1672
+ "Icon",
1673
+ "Avatar",
1674
+ "Image"
1713
1675
  ]
1714
1676
  }
1715
1677
  }
1716
1678
  };
1717
1679
 
1718
- const metadata$q = {
1719
- "name": "🟢 Extended Action Sheet",
1720
- "key": "cd4cf8a850bf3de87b79080b36b421a649bf3fcb",
1680
+ const metadata$s = {
1681
+ "name": "🟢 Chlid",
1682
+ "key": "aa9ffdd60fbfdea42f0d11162cd64f4b4389ddcc",
1721
1683
  "componentPropertyDefinitions": {
1722
- "Show Title#17043:12": {
1723
- "type": "BOOLEAN"
1724
- },
1725
- "OS Indicator (Figma Only)#81637:129": {
1726
- "type": "BOOLEAN"
1727
- },
1728
- "Description#14599:13": {
1729
- "type": "TEXT"
1730
- },
1731
- "Title#14599:0": {
1732
- "type": "TEXT"
1733
- },
1734
1684
  "Type": {
1735
1685
  "type": "VARIANT",
1736
1686
  "variantOptions": [
1737
- "Normal",
1738
- "Destructive"
1739
- ]
1740
- },
1741
- "Action Group Count": {
1742
- "type": "VARIANT",
1743
- "variantOptions": [
1744
- "1",
1745
- "2"
1687
+ "Child",
1688
+ "Text",
1689
+ "Slot"
1746
1690
  ]
1747
1691
  }
1748
1692
  }
1749
1693
  };
1750
1694
 
1751
- const metadata$p = {
1752
- "name": "🟢 Extended Floating Action Button",
1695
+ const metadata$r = {
1696
+ "name": "🟢 Contextual Floating Button",
1753
1697
  "key": "032f3fddaad0aa3fa5a7f680768c1f5d02fb463f",
1754
1698
  "componentPropertyDefinitions": {
1755
- "Label#28936:0": {
1756
- "type": "TEXT"
1757
- },
1758
1699
  "Icon#28796:0": {
1759
1700
  "type": "INSTANCE_SWAP",
1760
1701
  "preferredValues": []
1761
1702
  },
1762
- "Size": {
1703
+ "Label#28936:0": {
1704
+ "type": "TEXT"
1705
+ },
1706
+ "Layout": {
1763
1707
  "type": "VARIANT",
1764
1708
  "variantOptions": [
1765
- "Small",
1766
- "Medium"
1709
+ "Icon First",
1710
+ "Icon Only"
1767
1711
  ]
1768
1712
  },
1769
1713
  "Variant": {
1770
1714
  "type": "VARIANT",
1771
1715
  "variantOptions": [
1772
- "Neutral Solid",
1773
- "Layer Floating"
1716
+ "Solid",
1717
+ "Layer"
1774
1718
  ]
1775
1719
  },
1776
1720
  "State": {
1777
1721
  "type": "VARIANT",
1778
1722
  "variantOptions": [
1779
1723
  "Enabled",
1780
- "Pressed"
1724
+ "Pressed",
1725
+ "Loading",
1726
+ "Disabled"
1781
1727
  ]
1782
1728
  }
1783
1729
  }
1784
1730
  };
1785
1731
 
1786
- const metadata$o = {
1732
+ const metadata$q = {
1733
+ "name": "🟢 Divider",
1734
+ "key": "848e953725f757ea1a79e1fecc0b608a035032d3",
1735
+ "componentPropertyDefinitions": {
1736
+ "Tone": {
1737
+ "type": "VARIANT",
1738
+ "variantOptions": [
1739
+ "Neutral",
1740
+ "Neutral Muted"
1741
+ ]
1742
+ }
1743
+ }
1744
+ };
1745
+
1746
+ const metadata$p = {
1787
1747
  "name": "🟢 Floating Action Button",
1788
- "key": "1974b94703032585bb9e20bd54743e01094b965c",
1748
+ "key": "65f9e7eede627b893fb8ff94ed9a7d0db900c464",
1789
1749
  "componentPropertyDefinitions": {
1790
- "Icon#28796:0": {
1791
- "type": "INSTANCE_SWAP",
1792
- "preferredValues": []
1793
- },
1794
- "State": {
1750
+ "Type": {
1795
1751
  "type": "VARIANT",
1796
1752
  "variantOptions": [
1797
- "Enabled",
1798
- "Pressed"
1753
+ "Button",
1754
+ "Menu"
1799
1755
  ]
1800
1756
  }
1801
1757
  }
1802
1758
  };
1803
1759
 
1804
- const metadata$n = {
1760
+ const metadata$o = {
1805
1761
  "name": "🟢 Help Bubble",
1806
1762
  "key": "804b327c091278a40d5891939eaed90bb2889659",
1807
1763
  "componentPropertyDefinitions": {
1764
+ "Show Description#62499:0": {
1765
+ "type": "BOOLEAN"
1766
+ },
1808
1767
  "Title#62535:0": {
1809
1768
  "type": "TEXT"
1810
1769
  },
1811
1770
  "Description#62535:98": {
1812
1771
  "type": "TEXT"
1813
1772
  },
1814
- "Show Description#62499:0": {
1815
- "type": "BOOLEAN"
1816
- },
1817
1773
  "Placement": {
1818
1774
  "type": "VARIANT",
1819
1775
  "variantOptions": [
@@ -1830,41 +1786,20 @@ const metadata$n = {
1830
1786
  "Top-Center",
1831
1787
  "Top-Right"
1832
1788
  ]
1833
- },
1834
- "Show Close Button": {
1835
- "type": "VARIANT",
1836
- "variantOptions": [
1837
- "True",
1838
- "False"
1839
- ]
1840
1789
  }
1841
1790
  }
1842
1791
  };
1843
1792
 
1844
- const metadata$m = {
1845
- "name": "🟢 Identity Placeholder",
1846
- "key": "808206c07408aa1056ec85a55925e9844e9265c2",
1847
- "componentPropertyDefinitions": {
1848
- "Identity": {
1849
- "type": "VARIANT",
1850
- "variantOptions": [
1851
- "Person",
1852
- "Business"
1853
- ]
1854
- }
1855
- }
1856
- };
1857
-
1858
- const metadata$l = {
1793
+ const metadata$n = {
1859
1794
  "name": "🟢 Inline Banner",
1860
1795
  "key": "ce587d0f21754af05240cb32a4880227cb0ea1e1",
1861
1796
  "componentPropertyDefinitions": {
1862
- "Show Icon#11840:27": {
1863
- "type": "BOOLEAN"
1864
- },
1865
1797
  "Link Label#1547:81": {
1866
1798
  "type": "TEXT"
1867
1799
  },
1800
+ "Show Icon#11840:27": {
1801
+ "type": "BOOLEAN"
1802
+ },
1868
1803
  "Interaction": {
1869
1804
  "type": "VARIANT",
1870
1805
  "variantOptions": [
@@ -1896,14 +1831,14 @@ const metadata$l = {
1896
1831
  }
1897
1832
  };
1898
1833
 
1899
- const metadata$k = {
1834
+ const metadata$m = {
1900
1835
  "name": "🟢 Main Tab Navigation / Global",
1901
1836
  "key": "a694a1da14a5c1d7d5c66bc78218c0c61fb388ab",
1902
1837
  "componentPropertyDefinitions": {
1903
- "Button Label#6409:18": {
1838
+ "Title#6406:6": {
1904
1839
  "type": "TEXT"
1905
1840
  },
1906
- "Title#6406:6": {
1841
+ "Button Label#6409:18": {
1907
1842
  "type": "TEXT"
1908
1843
  },
1909
1844
  "Title Type": {
@@ -1923,7 +1858,7 @@ const metadata$k = {
1923
1858
  }
1924
1859
  };
1925
1860
 
1926
- const metadata$j = {
1861
+ const metadata$l = {
1927
1862
  "name": "🟢 Main Tab Navigation / KR",
1928
1863
  "key": "41d3601e6b4c632a56cdc8fad485a76c026fdd8e",
1929
1864
  "componentPropertyDefinitions": {
@@ -1947,11 +1882,11 @@ const metadata$j = {
1947
1882
  }
1948
1883
  };
1949
1884
 
1950
- const metadata$i = {
1885
+ const metadata$k = {
1951
1886
  "name": "🟢 Manner Temp",
1952
- "key": "030dc68a26c24c37090c8b95ae21043855b5d589",
1887
+ "key": "37c0a35f73a730fdfba7929cea91a7590fc93733",
1953
1888
  "componentPropertyDefinitions": {
1954
- "State": {
1889
+ "Level": {
1955
1890
  "type": "VARIANT",
1956
1891
  "variantOptions": [
1957
1892
  "L1 (~29.9)",
@@ -1965,21 +1900,15 @@ const metadata$i = {
1965
1900
  }
1966
1901
  };
1967
1902
 
1968
- const metadata$h = {
1969
- "name": "🟢 Manner Temp (Bar)",
1970
- "key": "49ca92c450fb5d450be00f69fae709dbb8edc494",
1903
+ const metadata$j = {
1904
+ "name": "🟢 Manner Temp Badge",
1905
+ "key": "3ef9a84d4d80046ff9a581136bd56269554a6e00",
1971
1906
  "componentPropertyDefinitions": {
1972
- "Size": {
1907
+ "Level": {
1973
1908
  "type": "VARIANT",
1974
1909
  "variantOptions": [
1975
- "Medium"
1976
- ]
1977
- },
1978
- "State": {
1979
- "type": "VARIANT",
1980
- "variantOptions": [
1981
- "L1 (29.9 이하)",
1982
- "L2 (29.9~36.2)",
1910
+ "L1 (~29.9)",
1911
+ "L2 (30.0~36.2)",
1983
1912
  "L3 (36.3~37.5)",
1984
1913
  "L4 (37.6~41.9)",
1985
1914
  "L5 (42~51.9)",
@@ -1989,63 +1918,82 @@ const metadata$h = {
1989
1918
  }
1990
1919
  };
1991
1920
 
1992
- const metadata$g = {
1993
- "name": "🟢 Manner Temp Badge",
1994
- "key": "ac5331cec7a2c75b671df5b85ef247dfd820dd2f",
1921
+ const metadata$i = {
1922
+ "name": "🟢 Menu Sheet",
1923
+ "key": "cd4cf8a850bf3de87b79080b36b421a649bf3fcb",
1995
1924
  "componentPropertyDefinitions": {
1996
- "State": {
1925
+ "Title Text#14599:0": {
1926
+ "type": "TEXT"
1927
+ },
1928
+ "Show Header#17043:12": {
1929
+ "type": "BOOLEAN"
1930
+ },
1931
+ "Description Text#21827:0": {
1932
+ "type": "TEXT"
1933
+ },
1934
+ "Show Safe Area#25531:15": {
1935
+ "type": "BOOLEAN"
1936
+ },
1937
+ "Show Description#32984:0": {
1938
+ "type": "BOOLEAN"
1939
+ },
1940
+ "Menu Group Count": {
1997
1941
  "type": "VARIANT",
1998
1942
  "variantOptions": [
1999
- "L1 (~29.9)",
2000
- "L2 (30.0~36.2)",
2001
- "L3 (36.3~37.5)",
2002
- "L4 (37.6~41.9)",
2003
- "L5 (42~51.9)",
2004
- "L6 (52~)"
1943
+ "2",
1944
+ "3",
1945
+ "1"
1946
+ ]
1947
+ },
1948
+ "Layout": {
1949
+ "type": "VARIANT",
1950
+ "variantOptions": [
1951
+ "Text Only",
1952
+ "Text with Icon"
2005
1953
  ]
2006
1954
  }
2007
1955
  }
2008
1956
  };
2009
1957
 
2010
- const metadata$f = {
1958
+ const metadata$h = {
2011
1959
  "name": "🟢 Multiline Text Field",
2012
1960
  "key": "88b2399c930c85f9ce2972163a078bc684b84bbe",
2013
1961
  "componentPropertyDefinitions": {
2014
- "Indicator#15327:286": {
2015
- "type": "TEXT"
2016
- },
2017
- "Character Count#15327:360": {
2018
- "type": "TEXT"
1962
+ "Show Header#870:0": {
1963
+ "type": "BOOLEAN"
2019
1964
  },
2020
- "Max Character Count#15327:175": {
1965
+ "Placeholder#958:0": {
2021
1966
  "type": "TEXT"
2022
1967
  },
2023
- "Label#15327:323": {
2024
- "type": "TEXT"
1968
+ "Show Footer#958:25": {
1969
+ "type": "BOOLEAN"
2025
1970
  },
2026
- "Filled Text#1304:0": {
2027
- "type": "TEXT"
1971
+ "Show Description#958:50": {
1972
+ "type": "BOOLEAN"
2028
1973
  },
2029
1974
  "Show Character count#958:75": {
2030
1975
  "type": "BOOLEAN"
2031
1976
  },
2032
- "Show Footer#958:25": {
1977
+ "Show Indicator#1259:0": {
2033
1978
  "type": "BOOLEAN"
2034
1979
  },
2035
- "Show Description#958:50": {
2036
- "type": "BOOLEAN"
1980
+ "Filled Text#1304:0": {
1981
+ "type": "TEXT"
1982
+ },
1983
+ "Max Character Count#15327:175": {
1984
+ "type": "TEXT"
2037
1985
  },
2038
1986
  "Description#15327:212": {
2039
1987
  "type": "TEXT"
2040
1988
  },
2041
- "Show Indicator#1259:0": {
2042
- "type": "BOOLEAN"
1989
+ "Indicator#15327:286": {
1990
+ "type": "TEXT"
2043
1991
  },
2044
- "Placeholder#958:0": {
1992
+ "Label#15327:323": {
2045
1993
  "type": "TEXT"
2046
1994
  },
2047
- "Show Header#870:0": {
2048
- "type": "BOOLEAN"
1995
+ "Character Count#15327:360": {
1996
+ "type": "TEXT"
2049
1997
  },
2050
1998
  "Size": {
2051
1999
  "type": "VARIANT",
@@ -2076,7 +2024,7 @@ const metadata$f = {
2076
2024
  }
2077
2025
  };
2078
2026
 
2079
- const metadata$e = {
2027
+ const metadata$g = {
2080
2028
  "name": "🟢 Progress Circle",
2081
2029
  "key": "6e6779a372cab2485a0e25529bc4dbc9932a7346",
2082
2030
  "componentPropertyDefinitions": {
@@ -2092,7 +2040,8 @@ const metadata$e = {
2092
2040
  "variantOptions": [
2093
2041
  "Neutral",
2094
2042
  "Brand",
2095
- "Static White"
2043
+ "Static White",
2044
+ "Custom"
2096
2045
  ]
2097
2046
  },
2098
2047
  "Value": {
@@ -2108,7 +2057,7 @@ const metadata$e = {
2108
2057
  }
2109
2058
  };
2110
2059
 
2111
- const metadata$d = {
2060
+ const metadata$f = {
2112
2061
  "name": "🟢 Radio",
2113
2062
  "key": "ac72d9e5ab04a1d59eaf77dffd380fd6e491ecf8",
2114
2063
  "componentPropertyDefinitions": {
@@ -2127,16 +2076,51 @@ const metadata$d = {
2127
2076
  "variantOptions": [
2128
2077
  "Enabled",
2129
2078
  "Pressed",
2079
+ "Disabled",
2130
2080
  "Selected",
2131
2081
  "Selected-Pressed",
2132
- "Disabled",
2133
- "Disabled-Selected"
2082
+ "Selected-Disabled"
2134
2083
  ]
2135
2084
  }
2136
2085
  }
2137
2086
  };
2138
2087
 
2139
- const metadata$c = {
2088
+ const metadata$e = {
2089
+ "name": "🟢 Radio Mark",
2090
+ "key": "832d696d6e9566610968cd70f128f500ec009d6a",
2091
+ "componentPropertyDefinitions": {
2092
+ "Size": {
2093
+ "type": "VARIANT",
2094
+ "variantOptions": [
2095
+ "Medium",
2096
+ "Large"
2097
+ ]
2098
+ },
2099
+ "Selected": {
2100
+ "type": "VARIANT",
2101
+ "variantOptions": [
2102
+ "True",
2103
+ "False"
2104
+ ]
2105
+ },
2106
+ "Pressed": {
2107
+ "type": "VARIANT",
2108
+ "variantOptions": [
2109
+ "True",
2110
+ "False"
2111
+ ]
2112
+ },
2113
+ "Disabled": {
2114
+ "type": "VARIANT",
2115
+ "variantOptions": [
2116
+ "True",
2117
+ "False"
2118
+ ]
2119
+ }
2120
+ }
2121
+ };
2122
+
2123
+ const metadata$d = {
2140
2124
  "name": "🟢 Range Slider",
2141
2125
  "key": "64fc49184979e0be40aa367ca98868601eb7dad5",
2142
2126
  "componentPropertyDefinitions": {
@@ -2168,21 +2152,21 @@ const metadata$c = {
2168
2152
  }
2169
2153
  };
2170
2154
 
2171
- const metadata$b = {
2155
+ const metadata$c = {
2172
2156
  "name": "🟢 Reaction Button",
2173
2157
  "key": "ec43e4e881f7048e95601f8b58c01a0905a174e0",
2174
2158
  "componentPropertyDefinitions": {
2175
- "Icon#12379:0": {
2176
- "type": "INSTANCE_SWAP",
2177
- "preferredValues": []
2159
+ "Label#6397:0": {
2160
+ "type": "TEXT"
2178
2161
  },
2179
2162
  "Show Count#6397:33": {
2180
2163
  "type": "BOOLEAN"
2181
2164
  },
2182
- "Count#15816:0": {
2183
- "type": "TEXT"
2165
+ "Icon#12379:0": {
2166
+ "type": "INSTANCE_SWAP",
2167
+ "preferredValues": []
2184
2168
  },
2185
- "Label#6397:0": {
2169
+ "Count#15816:0": {
2186
2170
  "type": "TEXT"
2187
2171
  },
2188
2172
  "Size": {
@@ -2208,7 +2192,45 @@ const metadata$b = {
2208
2192
  }
2209
2193
  };
2210
2194
 
2195
+ const metadata$b = {
2196
+ "name": "🟢 Resizable.Icon",
2197
+ "key": "1f74eedb6fb186fd201d6ad5b2dbcd46a2bddf3e",
2198
+ "componentPropertyDefinitions": {
2199
+ "Size": {
2200
+ "type": "VARIANT",
2201
+ "variantOptions": [
2202
+ "12",
2203
+ "14",
2204
+ "16",
2205
+ "20",
2206
+ "24",
2207
+ "28",
2208
+ "32"
2209
+ ]
2210
+ }
2211
+ }
2212
+ };
2213
+
2211
2214
  const metadata$a = {
2215
+ "name": "🟢 ResizableChild",
2216
+ "key": "df43b92004c850e7c6d2869e7a4ba1ef9a2d7db6",
2217
+ "componentPropertyDefinitions": {
2218
+ "Size": {
2219
+ "type": "VARIANT",
2220
+ "variantOptions": [
2221
+ "12",
2222
+ "14",
2223
+ "16",
2224
+ "20",
2225
+ "24",
2226
+ "28",
2227
+ "32"
2228
+ ]
2229
+ }
2230
+ }
2231
+ };
2232
+
2233
+ const metadata$9 = {
2212
2234
  "name": "🟢 Segmented Control",
2213
2235
  "key": "3ad7133ba52755867f42f9232375f75639e00d58",
2214
2236
  "componentPropertyDefinitions": {
@@ -2232,18 +2254,18 @@ const metadata$a = {
2232
2254
  }
2233
2255
  };
2234
2256
 
2235
- const metadata$9 = {
2257
+ const metadata$8 = {
2236
2258
  "name": "🟢 Select Box",
2237
2259
  "key": "38722ffeb4c966256a709155e8ddac50c93d7c60",
2238
2260
  "componentPropertyDefinitions": {
2239
- "Label#3635:0": {
2240
- "type": "TEXT"
2261
+ "Show Description#3033:0": {
2262
+ "type": "BOOLEAN"
2241
2263
  },
2242
2264
  "Description #3033:5": {
2243
2265
  "type": "TEXT"
2244
2266
  },
2245
- "Show Description#3033:0": {
2246
- "type": "BOOLEAN"
2267
+ "Label#3635:0": {
2268
+ "type": "TEXT"
2247
2269
  },
2248
2270
  "Control": {
2249
2271
  "type": "VARIANT",
@@ -2264,7 +2286,7 @@ const metadata$9 = {
2264
2286
  }
2265
2287
  };
2266
2288
 
2267
- const metadata$8 = {
2289
+ const metadata$7 = {
2268
2290
  "name": "🟢 Skeleton",
2269
2291
  "key": "ef22c3288722fbfa64a5ab73df397ade88f8e05a",
2270
2292
  "componentPropertyDefinitions": {
@@ -2276,11 +2298,18 @@ const metadata$8 = {
2276
2298
  "16",
2277
2299
  "Full"
2278
2300
  ]
2301
+ },
2302
+ "Tone": {
2303
+ "type": "VARIANT",
2304
+ "variantOptions": [
2305
+ "Magic",
2306
+ "Neutral"
2307
+ ]
2279
2308
  }
2280
2309
  }
2281
2310
  };
2282
2311
 
2283
- const metadata$7 = {
2312
+ const metadata$6 = {
2284
2313
  "name": "🟢 Slider",
2285
2314
  "key": "aee027230a478315e380704c4523141e67e464ee",
2286
2315
  "componentPropertyDefinitions": {
@@ -2304,57 +2333,33 @@ const metadata$7 = {
2304
2333
  "Marker": {
2305
2334
  "type": "VARIANT",
2306
2335
  "variantOptions": [
2307
- "None",
2308
- "Min Max",
2309
- "All"
2310
- ]
2311
- }
2312
- }
2313
- };
2314
-
2315
- const metadata$6 = {
2316
- "name": "🟢 Snackbar",
2317
- "key": "81b17fb8c7d731a19cf8d36a8605559d41414eca",
2318
- "componentPropertyDefinitions": {
2319
- "Action Button Label#1528:8": {
2320
- "type": "TEXT"
2321
- },
2322
- "Message#1528:4": {
2323
- "type": "TEXT"
2324
- },
2325
- "Show Action Button#1528:0": {
2326
- "type": "BOOLEAN"
2327
- },
2328
- "Variant": {
2329
- "type": "VARIANT",
2330
- "variantOptions": [
2331
- "Default",
2332
- "Positive",
2333
- "Critical"
2336
+ "None",
2337
+ "Min Max",
2338
+ "All"
2334
2339
  ]
2335
2340
  }
2336
2341
  }
2337
2342
  };
2338
2343
 
2339
2344
  const metadata$5 = {
2340
- "name": "🟢 Standard Navigation",
2341
- "key": "c07bfe331cf214375fce9ad47cb6fdb459d1fb1b",
2345
+ "name": "🟢 Snackbar",
2346
+ "key": "81b17fb8c7d731a19cf8d36a8605559d41414eca",
2342
2347
  "componentPropertyDefinitions": {
2343
- "Title#28176:5": {
2348
+ "Show Action#1528:0": {
2344
2349
  "type": "BOOLEAN"
2345
2350
  },
2346
- "Variant": {
2347
- "type": "VARIANT",
2348
- "variantOptions": [
2349
- "Layer Default",
2350
- "Transparent"
2351
- ]
2351
+ "Message#1528:4": {
2352
+ "type": "TEXT"
2352
2353
  },
2353
- "OS": {
2354
+ "Action Label#1528:8": {
2355
+ "type": "TEXT"
2356
+ },
2357
+ "Variant": {
2354
2358
  "type": "VARIANT",
2355
2359
  "variantOptions": [
2356
- "iOS",
2357
- "Android"
2360
+ "Default",
2361
+ "Positive",
2362
+ "Critical"
2358
2363
  ]
2359
2364
  }
2360
2365
  }
@@ -2380,166 +2385,103 @@ const metadata$4 = {
2380
2385
  "Enabled",
2381
2386
  "Selected",
2382
2387
  "Disabled",
2383
- "Disabled-Selected"
2388
+ "Selected-Disabled"
2384
2389
  ]
2385
2390
  }
2386
2391
  }
2387
2392
  };
2388
2393
 
2389
2394
  const metadata$3 = {
2390
- "name": "🟢 Tablist",
2391
- "key": "ffe33411fb8796f7a95d3637b90150007f0dd954",
2395
+ "name": "🟢 Tabs",
2396
+ "key": "3e3af9f7f235cbcbbe862d5da552ab23e16ff34e",
2392
2397
  "componentPropertyDefinitions": {
2393
- "Size": {
2394
- "type": "VARIANT",
2395
- "variantOptions": [
2396
- "Small",
2397
- "Medium"
2398
- ]
2399
- },
2400
- "Layout": {
2401
- "type": "VARIANT",
2402
- "variantOptions": [
2403
- "Hug",
2404
- "Fill"
2405
- ]
2406
- },
2407
- "Tab Count": {
2398
+ "Variant": {
2408
2399
  "type": "VARIANT",
2409
2400
  "variantOptions": [
2410
- "2",
2411
- "3",
2412
- "4",
2413
- "5+"
2401
+ "Underline",
2402
+ "Chip"
2414
2403
  ]
2415
2404
  }
2416
2405
  }
2417
2406
  };
2418
2407
 
2419
2408
  const metadata$2 = {
2420
- "name": "🟢 Text Button",
2421
- "key": "601f788792916250e33d04bd3165dee1404342df",
2422
- "componentPropertyDefinitions": {
2423
- "Prefix Icon#7561:0": {
2424
- "type": "INSTANCE_SWAP",
2425
- "preferredValues": []
2426
- },
2427
- "Label#6148:0": {
2428
- "type": "TEXT"
2429
- },
2430
- "Size": {
2431
- "type": "VARIANT",
2432
- "variantOptions": [
2433
- "Small",
2434
- "Medium",
2435
- "Large"
2436
- ]
2437
- },
2438
- "Layout": {
2439
- "type": "VARIANT",
2440
- "variantOptions": [
2441
- "Icon First",
2442
- "Icon Last"
2443
- ]
2444
- },
2445
- "Tone": {
2446
- "type": "VARIANT",
2447
- "variantOptions": [
2448
- "Neutral",
2449
- "Neutral Subtle",
2450
- "Brand",
2451
- "Critical"
2452
- ]
2453
- },
2454
- "State": {
2455
- "type": "VARIANT",
2456
- "variantOptions": [
2457
- "Enabled",
2458
- "Pressed",
2459
- "Disabled"
2460
- ]
2461
- }
2462
- }
2463
- };
2464
-
2465
- const metadata$1 = {
2466
2409
  "name": "🟢 Text Field",
2467
2410
  "key": "c49873c37a639f0dffdea4efd0eb43760d66c141",
2468
2411
  "componentPropertyDefinitions": {
2469
- "Suffix Text#15327:138": {
2470
- "type": "TEXT"
2412
+ "Show Header#870:0": {
2413
+ "type": "BOOLEAN"
2471
2414
  },
2472
- "Indicator#15327:249": {
2415
+ "Placeholder#958:0": {
2473
2416
  "type": "TEXT"
2474
2417
  },
2475
- "Label#14964:0": {
2476
- "type": "TEXT"
2418
+ "Show Footer#958:25": {
2419
+ "type": "BOOLEAN"
2477
2420
  },
2478
- "Character Count#15327:64": {
2479
- "type": "TEXT"
2421
+ "Show Description#958:50": {
2422
+ "type": "BOOLEAN"
2480
2423
  },
2481
- "Description#12626:5": {
2482
- "type": "TEXT"
2424
+ "Show Character Count#958:75": {
2425
+ "type": "BOOLEAN"
2483
2426
  },
2484
- "Filled Text#1304:0": {
2485
- "type": "TEXT"
2427
+ "Show Suffix#958:100": {
2428
+ "type": "BOOLEAN"
2486
2429
  },
2487
- "Show Suffix Icon#1267:75": {
2430
+ "Show Prefix#958:125": {
2488
2431
  "type": "BOOLEAN"
2489
2432
  },
2490
- "Show Prefix Icon#1267:50": {
2433
+ "Show Indicator#1259:0": {
2434
+ "type": "BOOLEAN"
2435
+ },
2436
+ "Show Prefix Text#1267:0": {
2491
2437
  "type": "BOOLEAN"
2492
2438
  },
2493
2439
  "Prefix Icon#1267:25": {
2494
2440
  "type": "INSTANCE_SWAP",
2495
2441
  "preferredValues": []
2496
2442
  },
2497
- "Show Prefix#958:125": {
2443
+ "Show Prefix Icon#1267:50": {
2498
2444
  "type": "BOOLEAN"
2499
2445
  },
2500
- "Show Suffix#958:100": {
2446
+ "Show Suffix Icon#1267:75": {
2501
2447
  "type": "BOOLEAN"
2502
2448
  },
2503
- "Show Character Count#958:75": {
2504
- "type": "BOOLEAN"
2449
+ "Suffix Icon #1267:100": {
2450
+ "type": "INSTANCE_SWAP",
2451
+ "preferredValues": []
2505
2452
  },
2506
- "Show Footer#958:25": {
2453
+ "Show Suffix Text#1267:125": {
2507
2454
  "type": "BOOLEAN"
2508
2455
  },
2509
- "Max Character Count#15327:27": {
2456
+ "Filled Text#1304:0": {
2510
2457
  "type": "TEXT"
2511
2458
  },
2512
- "Show Prefix Text#1267:0": {
2513
- "type": "BOOLEAN"
2459
+ "Description#12626:5": {
2460
+ "type": "TEXT"
2514
2461
  },
2515
- "Show Suffix Text#1267:125": {
2516
- "type": "BOOLEAN"
2462
+ "Label#14964:0": {
2463
+ "type": "TEXT"
2517
2464
  },
2518
- "Suffix Icon #1267:100": {
2519
- "type": "INSTANCE_SWAP",
2520
- "preferredValues": []
2465
+ "Max Character Count#15327:27": {
2466
+ "type": "TEXT"
2521
2467
  },
2522
- "Show Description#958:50": {
2523
- "type": "BOOLEAN"
2468
+ "Character Count#15327:64": {
2469
+ "type": "TEXT"
2524
2470
  },
2525
2471
  "Prefix Text#15327:101": {
2526
2472
  "type": "TEXT"
2527
2473
  },
2528
- "Show Indicator#1259:0": {
2529
- "type": "BOOLEAN"
2530
- },
2531
- "Placeholder#958:0": {
2474
+ "Suffix Text#15327:138": {
2532
2475
  "type": "TEXT"
2533
2476
  },
2534
- "Show Header#870:0": {
2535
- "type": "BOOLEAN"
2477
+ "Indicator#15327:249": {
2478
+ "type": "TEXT"
2536
2479
  },
2537
2480
  "Size": {
2538
2481
  "type": "VARIANT",
2539
2482
  "variantOptions": [
2540
2483
  "Medium",
2541
- "Large",
2542
- "XLarge"
2484
+ "Large(Default)"
2543
2485
  ]
2544
2486
  },
2545
2487
  "State": {
@@ -2563,26 +2505,26 @@ const metadata$1 = {
2563
2505
  }
2564
2506
  };
2565
2507
 
2566
- const metadata = {
2508
+ const metadata$1 = {
2567
2509
  "name": "🟢 Toggle Button",
2568
2510
  "key": "1d240ee5fd7a56879713e69cbea1b6f006f0ea22",
2569
2511
  "componentPropertyDefinitions": {
2570
- "Suffix Icon#6122:343": {
2512
+ "Label#6122:49": {
2513
+ "type": "TEXT"
2514
+ },
2515
+ "Prefix Icon#6122:98": {
2571
2516
  "type": "INSTANCE_SWAP",
2572
2517
  "preferredValues": []
2573
2518
  },
2574
- "Show Prefix Icon#6122:392": {
2575
- "type": "BOOLEAN"
2576
- },
2577
2519
  "Show Suffix Icon#6122:147": {
2578
2520
  "type": "BOOLEAN"
2579
2521
  },
2580
- "Prefix Icon#6122:98": {
2522
+ "Suffix Icon#6122:343": {
2581
2523
  "type": "INSTANCE_SWAP",
2582
2524
  "preferredValues": []
2583
2525
  },
2584
- "Label#6122:49": {
2585
- "type": "TEXT"
2526
+ "Show Prefix Icon#6122:392": {
2527
+ "type": "BOOLEAN"
2586
2528
  },
2587
2529
  "Size": {
2588
2530
  "type": "VARIANT",
@@ -2614,11 +2556,53 @@ const metadata = {
2614
2556
  }
2615
2557
  };
2616
2558
 
2559
+ const metadata = {
2560
+ "name": "🟢 Top Navigation",
2561
+ "key": "f6d069d65f8ffc8b430fd8f3013910557f36e9da",
2562
+ "componentPropertyDefinitions": {
2563
+ "Show Title#33588:82": {
2564
+ "type": "BOOLEAN"
2565
+ },
2566
+ "OS (Figma Only)": {
2567
+ "type": "VARIANT",
2568
+ "variantOptions": [
2569
+ "iOS",
2570
+ "Android"
2571
+ ]
2572
+ },
2573
+ "Variant": {
2574
+ "type": "VARIANT",
2575
+ "variantOptions": [
2576
+ "Layer Default",
2577
+ "Transparent"
2578
+ ]
2579
+ },
2580
+ "Left": {
2581
+ "type": "VARIANT",
2582
+ "variantOptions": [
2583
+ "Back",
2584
+ "Close",
2585
+ "Custom",
2586
+ "None"
2587
+ ]
2588
+ },
2589
+ "Right": {
2590
+ "type": "VARIANT",
2591
+ "variantOptions": [
2592
+ "1 Icon Button",
2593
+ "2 Icon Button",
2594
+ "3 Icon Button",
2595
+ "Text Button",
2596
+ "None"
2597
+ ]
2598
+ }
2599
+ }
2600
+ };
2601
+
2617
2602
  var FIGMA_COMPONENTS = {
2618
2603
  __proto__: null,
2619
- actionButton: metadata$F,
2620
- actionChip: metadata$E,
2621
- actionSheet: metadata$D,
2604
+ actionButton: metadata$E,
2605
+ alertDialog: metadata$D,
2622
2606
  avatar: metadata$C,
2623
2607
  avatarStack: metadata$B,
2624
2608
  badge: metadata$A,
@@ -2627,42 +2611,43 @@ var FIGMA_COMPONENTS = {
2627
2611
  bottomSheet: metadata$x,
2628
2612
  callout: metadata$w,
2629
2613
  checkbox: metadata$v,
2630
- chipTablist: metadata$u,
2631
- controlChip: metadata$t,
2632
- divider: metadata$s,
2633
- errorState: metadata$r,
2634
- extendedActionSheet: metadata$q,
2635
- extendedFloatingActionButton: metadata$p,
2636
- floatingActionButton: metadata$o,
2637
- helpBubble: metadata$n,
2638
- identityPlaceholder: metadata$m,
2639
- inlineBanner: metadata$l,
2640
- mainTabNavigationGlobal: metadata$k,
2641
- mainTabNavigationKr: metadata$j,
2642
- mannerTemp: metadata$i,
2643
- mannerTempBadge: metadata$g,
2644
- mannerTempBar: metadata$h,
2645
- multilineTextField: metadata$f,
2646
- progressCircle: metadata$e,
2647
- radio: metadata$d,
2648
- rangeSlider: metadata$c,
2649
- reactionButton: metadata$b,
2650
- segmentedControl: metadata$a,
2651
- selectBox: metadata$9,
2652
- skeleton: metadata$8,
2653
- slider: metadata$7,
2654
- snackbar: metadata$6,
2655
- standardNavigation: metadata$5,
2614
+ checkmark: metadata$u,
2615
+ chip: metadata$t,
2616
+ chlid: metadata$s,
2617
+ contextualFloatingButton: metadata$r,
2618
+ divider: metadata$q,
2619
+ floatingActionButton: metadata$p,
2620
+ helpBubble: metadata$o,
2621
+ inlineBanner: metadata$n,
2622
+ mainTabNavigationGlobal: metadata$m,
2623
+ mainTabNavigationKr: metadata$l,
2624
+ mannerTemp: metadata$k,
2625
+ mannerTempBadge: metadata$j,
2626
+ menuSheet: metadata$i,
2627
+ multilineTextField: metadata$h,
2628
+ progressCircle: metadata$g,
2629
+ radio: metadata$f,
2630
+ radioMark: metadata$e,
2631
+ rangeSlider: metadata$d,
2632
+ reactionButton: metadata$c,
2633
+ resizableChild: metadata$a,
2634
+ resizableIcon: metadata$b,
2635
+ segmentedControl: metadata$9,
2636
+ selectBox: metadata$8,
2637
+ skeleton: metadata$7,
2638
+ slider: metadata$6,
2639
+ snackbar: metadata$5,
2656
2640
  switch: metadata$4,
2657
- tablist: metadata$3,
2658
- templateBottomFixedBar: metadata$K,
2659
- templateButtonGroup: metadata$J,
2660
- templateChipGroup: metadata$I,
2661
- templateSelectBoxGroup: metadata$H,
2662
- templateTopNavigation: metadata$G,
2663
- textButton: metadata$2,
2664
- textField: metadata$1,
2665
- toggleButton: metadata
2641
+ tabs: metadata$3,
2642
+ templateButtonGroup: metadata$K,
2643
+ templateChipGroup: metadata$J,
2644
+ templateCompletion: metadata$I,
2645
+ templateErrorState: metadata$H,
2646
+ templateSelectBoxGroup: metadata$G,
2647
+ templateTopNavigation: metadata$F,
2648
+ textField: metadata$2,
2649
+ toggleButton: metadata$1,
2650
+ topNavigation: metadata
2666
2651
  };
2667
2652
 
2668
2653
  // TODO: move this file to relevant directory
@@ -2683,20 +2668,20 @@ function handleSizeProp(size) {
2683
2668
  }
2684
2669
  }
2685
2670
 
2686
- const { createLocalSnippetElement: createLocalSnippetElement$n } = createLocalSnippetHelper("action-button");
2687
- const createActionButtonHandler = (ctx)=>defineComponentHandler(metadata$F.key, ({ componentProperties: props })=>{
2671
+ const { createLocalSnippetElement: createLocalSnippetElement$p } = createLocalSnippetHelper("action-button");
2672
+ const createActionButtonHandler = (ctx)=>defineComponentHandler(metadata$E.key, ({ componentProperties: props })=>{
2688
2673
  const states = props.State.value.split("-");
2689
2674
  const { layout, children } = match(props.Layout.value).with("Icon Only", ()=>({
2690
2675
  layout: "iconOnly",
2691
2676
  children: [
2692
- createLocalSnippetElement$n("Icon", {
2677
+ createSeedReactElement("Icon", {
2693
2678
  svg: ctx.iconHandler.transform(props["Icon#7574:0"])
2694
2679
  })
2695
2680
  ]
2696
2681
  })).with("Icon First", ()=>({
2697
2682
  layout: "withText",
2698
2683
  children: [
2699
- createLocalSnippetElement$n("PrefixIcon", {
2684
+ createSeedReactElement("PrefixIcon", {
2700
2685
  svg: ctx.iconHandler.transform(props["Prefix Icon#5987:305"])
2701
2686
  }),
2702
2687
  props["Label#5987:61"].value
@@ -2705,7 +2690,7 @@ const createActionButtonHandler = (ctx)=>defineComponentHandler(metadata$F.key,
2705
2690
  layout: "withText",
2706
2691
  children: [
2707
2692
  props["Label#5987:61"].value,
2708
- createLocalSnippetElement$n("SuffixIcon", {
2693
+ createSeedReactElement("SuffixIcon", {
2709
2694
  svg: ctx.iconHandler.transform(props["Suffix Icon#5987:244"])
2710
2695
  })
2711
2696
  ]
@@ -2724,222 +2709,170 @@ const createActionButtonHandler = (ctx)=>defineComponentHandler(metadata$F.key,
2724
2709
  variant: camelCase(props.Variant.value),
2725
2710
  layout
2726
2711
  };
2727
- return createLocalSnippetElement$n("ActionButton", commonProps, children);
2712
+ return createLocalSnippetElement$p("ActionButton", commonProps, children);
2728
2713
  });
2729
-
2730
- const createActionChipHandler = (ctx)=>defineComponentHandler(metadata$E.key, ({ componentProperties: props })=>{
2714
+ const ACTION_BUTTON_GHOST_BUTTON_KEY = "ea69291fb4d76217419f3d9613ae16aadafb56a5";
2715
+ const createActionButtonGhostHandler = (ctx)=>defineComponentHandler(ACTION_BUTTON_GHOST_BUTTON_KEY, ({ componentProperties: props })=>{
2731
2716
  const states = props.State.value.split("-");
2732
2717
  const { layout, children } = match(props.Layout.value).with("Icon Only", ()=>({
2733
2718
  layout: "iconOnly",
2734
2719
  children: [
2735
2720
  createSeedReactElement("Icon", {
2736
- svg: ctx.iconHandler.transform(props["Icon#8714:0"])
2721
+ svg: ctx.iconHandler.transform(props["Icon#30525:15"])
2737
2722
  })
2738
2723
  ]
2739
2724
  })).with("Icon First", ()=>({
2740
2725
  layout: "withText",
2741
2726
  children: [
2742
2727
  createSeedReactElement("PrefixIcon", {
2743
- svg: ctx.iconHandler.transform(props["Prefix Icon#8711:0"])
2728
+ svg: ctx.iconHandler.transform(props["Prefix Icon#30511:3"])
2744
2729
  }),
2745
- props["Label#7185:0"].value
2730
+ props["Label#30511:2"].value
2746
2731
  ]
2747
2732
  })).with("Icon Last", ()=>({
2748
2733
  layout: "withText",
2749
2734
  children: [
2750
- props["Label#7185:0"].value,
2751
- createSeedReactElement("SuffixIcon", {
2752
- svg: ctx.iconHandler.transform(props["Suffix Icon#8711:3"])
2753
- })
2754
- ]
2755
- })).with("Icon Both", ()=>({
2756
- layout: "withText",
2757
- children: [
2758
- createSeedReactElement("PrefixIcon", {
2759
- svg: ctx.iconHandler.transform(props["Prefix Icon#8711:0"])
2760
- }),
2761
- props["Label#7185:0"].value,
2735
+ props["Label#30511:2"].value,
2762
2736
  createSeedReactElement("SuffixIcon", {
2763
- svg: ctx.iconHandler.transform(props["Suffix Icon#8711:3"])
2737
+ svg: ctx.iconHandler.transform(props["Suffix Icon#30525:0"])
2764
2738
  })
2765
2739
  ]
2766
2740
  })).with("Text Only", ()=>({
2767
2741
  layout: "withText",
2768
- children: props["Label#7185:0"].value
2742
+ children: props["Label#30511:2"].value
2769
2743
  })).exhaustive();
2770
2744
  const commonProps = {
2771
- size: handleSizeProp(props.Size.value),
2772
- layout,
2773
2745
  ...states.includes("Disabled") && {
2774
2746
  disabled: true
2775
2747
  },
2776
- ...props["Show Count#7185:42"].value && {
2777
- count: Number(props["Count#7185:21"].value)
2748
+ ...states.includes("Loading") && {
2749
+ loading: true
2750
+ },
2751
+ size: handleSizeProp(props.Size.value),
2752
+ variant: "ghost",
2753
+ layout,
2754
+ ...props.Bleed.value === "true" && {
2755
+ bleedX: "asPadding",
2756
+ bleedY: "asPadding"
2778
2757
  }
2779
2758
  };
2780
- return createSeedReactElement("ActionChip", commonProps, children);
2759
+ return createLocalSnippetElement$p("ActionButton", commonProps, children);
2781
2760
  });
2782
2761
 
2783
- const { createLocalSnippetElement: createLocalSnippetElement$m } = createLocalSnippetHelper("action-sheet");
2784
- const ACTION_SHEET_ITEM_KEY = "c3cafd3a3fdcd45fecb6971019d88eaf39a2e381";
2785
- const createActionSheetItemHandler = (_ctx)=>defineComponentHandler(ACTION_SHEET_ITEM_KEY, ({ componentProperties: props })=>{
2786
- const states = props.State.value.split("-");
2787
- const commonProps = {
2788
- label: props["Label#15420:4"].value,
2789
- tone: camelCase(props.Tone.value),
2790
- ...states.includes("Disabled") && {
2791
- disabled: true
2792
- }
2793
- };
2794
- return createLocalSnippetElement$m("ActionSheetItem", commonProps);
2795
- });
2796
- const createActionSheetHandler = (ctx)=>{
2797
- const actionSheetItemHandler = createActionSheetItemHandler();
2798
- return defineComponentHandler(metadata$D.key, (node)=>{
2799
- const { componentProperties: props } = node;
2800
- const contentProps = match(props.Header.value).with("None", ()=>({
2801
- title: undefined,
2802
- description: undefined
2803
- })).with("Title Only", ()=>({
2804
- title: props["Title#15641:37"].value,
2805
- description: undefined
2806
- })).with("Description Only", ()=>({
2807
- title: undefined,
2808
- description: props["Description#15641:70"].value
2809
- })).with("Title With Description", ()=>({
2810
- title: props["Title#15641:37"].value,
2811
- description: props["Description#15641:70"].value
2812
- })).exhaustive();
2813
- const items = findAllInstances({
2762
+ const { createLocalSnippetElement: createLocalSnippetElement$o } = createLocalSnippetHelper("alert-dialog");
2763
+ const { createLocalSnippetElement: createLocalSnippetElementTrigger$3 } = createLocalSnippetHelper("action-button");
2764
+ const ALERT_DIALOG_FOOTER_KEY = "00b1b131d67edf2875a7a1df8dfa88098d7c04be";
2765
+ const createAlertDialogHandler = (_ctx)=>defineComponentHandler(metadata$D.key, (node, traverse)=>{
2766
+ const props = node.componentProperties;
2767
+ const alertDialogHeader = createLocalSnippetElement$o("AlertDialogHeader", undefined, [
2768
+ ...props["Show Title#20361:14"].value ? [
2769
+ createLocalSnippetElement$o("AlertDialogTitle", undefined, props["Title Text#20361:0"].value)
2770
+ ] : [],
2771
+ createLocalSnippetElement$o("AlertDialogDescription", undefined, props["Description Text#20361:7"].value)
2772
+ ]);
2773
+ const footerNodes = findAllInstances({
2814
2774
  node,
2815
- key: actionSheetItemHandler.key
2775
+ key: ALERT_DIALOG_FOOTER_KEY
2816
2776
  });
2817
- const contentChildren = items.map(actionSheetItemHandler.transform);
2818
- const content = createLocalSnippetElement$m("ActionSheetContent", contentProps, contentChildren, {
2819
- comment: contentProps.title ? undefined : "title을 제공하지 않는 경우 aria-label이나 aria-labelledby 중 하나를 제공해야 합니다."
2820
- });
2821
- const trigger = createLocalSnippetElement$m("ActionSheetTrigger", {
2822
- asChild: true
2823
- }, createElement("button", undefined, "열기", {
2824
- comment: "ActionSheet을 여는 요소를 제공해주세요."
2825
- }));
2826
- return createLocalSnippetElement$m("ActionSheet", undefined, [
2827
- trigger,
2828
- content
2777
+ if (footerNodes.length === 0 || footerNodes.length > 1) {
2778
+ return createLocalSnippetElement$o("AlertDialog", undefined, alertDialogHeader, {
2779
+ comment: "Footer 영역을 확인해주세요."
2780
+ });
2781
+ }
2782
+ const footerNode = footerNodes[0];
2783
+ const footerNodeProps = traverse(footerNode)?.props;
2784
+ const buttons = footerNode.children.map(traverse);
2785
+ const alertDialogFooterChildren = match(footerNode.componentProperties.Type.value).with("Single", ()=>buttons).with("Neutral", "Critical", ()=>createSeedReactElement("ResponsivePair", footerNodeProps, buttons)).with("Neutral (Overflow)", "Critical (Overflow)", "Nonpreferred", ()=>createSeedReactElement("VStack", footerNodeProps, buttons)).exhaustive();
2786
+ const alertDialogFooter = createLocalSnippetElement$o("AlertDialogFooter", undefined, alertDialogFooterChildren);
2787
+ return createLocalSnippetElement$o("AlertDialogRoot", {
2788
+ open: true
2789
+ }, [
2790
+ createLocalSnippetElement$o("AlertDialogTrigger", {
2791
+ asChild: true
2792
+ }, createLocalSnippetElementTrigger$3("ActionButton", {}, "AlertDialog 열기")),
2793
+ createLocalSnippetElement$o("AlertDialogContent", undefined, [
2794
+ alertDialogHeader,
2795
+ alertDialogFooter
2796
+ ])
2829
2797
  ]);
2830
2798
  });
2831
- };
2832
2799
 
2833
- const { createLocalSnippetElement: createLocalSnippetElement$l } = createLocalSnippetHelper("app-bar");
2834
- const APP_BAR_MAIN_KEY = "336b49b26c3933485d87cc460b06c390976ea58e";
2835
- const createAppBarMainHandler = (_ctx)=>defineComponentHandler(APP_BAR_MAIN_KEY, ({ componentProperties: props })=>{
2836
- const { title, subtitle, layout } = match(props.Type.value).with("Title", ()=>({
2800
+ const { createLocalSnippetElement: createLocalSnippetElement$n } = createLocalSnippetHelper("app-bar");
2801
+ const APP_BAR_TITLE_KEY = "d2cc4f615b2b44098be89448ad1c573f94af0355";
2802
+ const APP_BAR_LEFT_ICON_BUTTON_KEY = "5a953f7bafc0df744777517458396e9f6c915825";
2803
+ const APP_BAR_RIGHT_ICON_BUTTON_KEY = "c08db793288077e53bd45ef11aa419a835e88fce";
2804
+ const createAppBarMainHandler = (_ctx)=>{
2805
+ return defineComponentHandler(APP_BAR_TITLE_KEY, ({ componentProperties: props })=>{
2806
+ const { title, subtitle } = match(props.Type.value).with("Title", ()=>({
2837
2807
  title: props["Title#16944:0"].value,
2838
- subtitle: undefined,
2839
- layout: undefined
2808
+ subtitle: undefined
2840
2809
  })).with("Title-Subtitle", ()=>({
2841
2810
  title: props["Title#16944:0"].value,
2842
- subtitle: props["Subtitle#16958:9"].value,
2843
- layout: "withSubtitle"
2844
- })).otherwise(()=>({
2811
+ subtitle: props["Subtitle#16958:9"].value
2812
+ })).with("Logo (Figma Only)", ()=>({
2845
2813
  title: undefined,
2846
- subtitle: undefined,
2847
- layout: undefined
2848
- }));
2849
- const commonProps = {
2850
- title,
2851
- subtitle,
2852
- layout
2853
- };
2854
- return createLocalSnippetElement$l("AppBarMain", commonProps, undefined, {
2855
- comment: title === undefined ? "Title을 제공해주세요." : undefined
2814
+ subtitle: undefined
2815
+ })).exhaustive();
2816
+ if (title) {
2817
+ return createLocalSnippetElement$n("AppBarMain", {
2818
+ title,
2819
+ subtitle
2820
+ });
2821
+ }
2822
+ return createLocalSnippetElement$n("AppBarMain", undefined, undefined, {
2823
+ comment: "AppBarMain 내부를 직접 작성해주세요."
2856
2824
  });
2857
2825
  });
2858
- const APP_BAR_LEFT_KEY = "e5d2e47052a22395db79f195a0991a570dc1b6c9";
2859
- const createAppBarLeftHandler = (ctx)=>defineComponentHandler(APP_BAR_LEFT_KEY, (node)=>{
2860
- const props = node.componentProperties;
2861
- const children = (()=>{
2862
- switch(props.Action.value){
2863
- case "Back":
2864
- return createLocalSnippetElement$l("AppBarBackButton");
2865
- case "Close":
2866
- return createLocalSnippetElement$l("AppBarCloseButton");
2867
- case "Other":
2868
- {
2869
- const iconNode = findOne(node, (child)=>child.type === "INSTANCE" && child.name === "Icon");
2870
- if (!iconNode) {
2871
- return undefined;
2872
- }
2873
- return createLocalSnippetElement$l("AppBarIconButton", undefined, ctx.iconHandler.transform(iconNode), {
2874
- comment: "aria-label 또는 aria-labelledby를 제공해주세요."
2875
- });
2876
- }
2877
- }
2878
- })();
2879
- return createLocalSnippetElement$l("AppBarLeft", undefined, children);
2880
- });
2881
- const APP_BAR_RIGHT_KEY = "9e157fc2d1f89ffee938a5bc62f4a58064fec44e";
2882
- const createAppBarRightHandler = (ctx)=>defineComponentHandler(APP_BAR_RIGHT_KEY, (node)=>{
2883
- const props = node.componentProperties;
2884
- const children = (()=>{
2885
- switch(props.Type.value){
2886
- case "1 Text":
2887
- {
2888
- const textNode = findOne(node, (child)=>child.type === "TEXT");
2889
- return textNode?.characters;
2890
- }
2891
- default:
2892
- {
2893
- const iconNodes = findAll(node, (child)=>child.type === "INSTANCE" && child.name === "Icon");
2894
- return iconNodes.map((iconNode)=>createLocalSnippetElement$l("AppBarIconButton", undefined, ctx.iconHandler.transform(iconNode), {
2895
- comment: "aria-label 또는 aria-labelledby를 제공해주세요."
2896
- }));
2897
- }
2898
- }
2899
- })();
2900
- return createLocalSnippetElement$l("AppBarRight", undefined, children);
2901
- });
2826
+ };
2902
2827
  const createAppBarHandler = (ctx)=>{
2903
2828
  const appBarMainHandler = createAppBarMainHandler();
2904
- const appBarLeftHandler = createAppBarLeftHandler(ctx);
2905
- const appBarRightHandler = createAppBarRightHandler(ctx);
2906
- return defineComponentHandler(metadata$5.key, (node)=>{
2829
+ return defineComponentHandler(metadata.key, (node, traverse)=>{
2907
2830
  const props = node.componentProperties;
2908
- const theme = (()=>{
2909
- switch(props.OS.value){
2910
- case "Android":
2911
- return "android";
2912
- case "iOS":
2913
- return "cupertino";
2831
+ const { theme, tone } = {
2832
+ theme: match(props["OS (Figma Only)"].value).with("Android", ()=>"android").with("iOS", ()=>"cupertino").exhaustive(),
2833
+ tone: match(props.Variant.value).with("Layer Default", ()=>"layer").with("Transparent", ()=>"transparent").exhaustive()
2834
+ };
2835
+ const main = (()=>{
2836
+ if (!props["Show Title#33588:82"].value) {
2837
+ return undefined;
2914
2838
  }
2915
- })();
2916
- const tone = (()=>{
2917
- switch(props.Variant.value){
2918
- case "Layer Default":
2919
- return "layer";
2920
- case "Transparent":
2921
- return "transparent";
2839
+ const [mainNode] = findAllInstances({
2840
+ node,
2841
+ key: APP_BAR_TITLE_KEY
2842
+ });
2843
+ if (!mainNode) {
2844
+ return undefined;
2922
2845
  }
2846
+ return appBarMainHandler.transform(mainNode, traverse);
2923
2847
  })();
2924
- const mainNode = findAllInstances({
2925
- key: appBarMainHandler.key,
2926
- node
2927
- });
2928
- const onlyMainNode = mainNode.length === 1 ? mainNode[0] : undefined;
2929
- const main = onlyMainNode ? appBarMainHandler.transform(onlyMainNode) : undefined;
2930
- const leftNode = findAllInstances({
2931
- key: appBarLeftHandler.key,
2932
- node
2933
- });
2934
- const onlyLeftNode = leftNode.length === 1 ? leftNode[0] : undefined;
2935
- const left = onlyLeftNode ? appBarLeftHandler.transform(onlyLeftNode) : undefined;
2936
- const rightNode = findAllInstances({
2937
- key: appBarRightHandler.key,
2938
- node
2939
- });
2940
- const onlyRightNode = rightNode.length === 1 ? rightNode[0] : undefined;
2941
- const right = onlyRightNode ? appBarRightHandler.transform(onlyRightNode) : undefined;
2942
- return createLocalSnippetElement$l("AppBar", {
2848
+ const leftChildren = match(props.Left.value).with("None", ()=>undefined).with("Back", ()=>[
2849
+ createLocalSnippetElement$n("AppBarBackButton")
2850
+ ]).with("Close", ()=>[
2851
+ createLocalSnippetElement$n("AppBarCloseButton")
2852
+ ]).with("Custom", ()=>{
2853
+ const buttons = findAllInstances({
2854
+ node,
2855
+ key: APP_BAR_LEFT_ICON_BUTTON_KEY
2856
+ });
2857
+ if (buttons.length > 0) {
2858
+ return buttons.map((button)=>createLocalSnippetElement$n("AppBarIconButton", undefined, ctx.iconHandler.transform(button.componentProperties["Icon#33580:0"]), {
2859
+ comment: "AppBarIconButton에 aria-label 속성을 추가해주세요."
2860
+ }));
2861
+ }
2862
+ return undefined;
2863
+ }).exhaustive();
2864
+ const left = leftChildren && leftChildren.length > 0 ? createLocalSnippetElement$n("AppBarLeft", {}, leftChildren) : undefined;
2865
+ const rightChildren = match(props.Right.value).with("None", ()=>undefined).with("1 Icon Button", "2 Icon Button", "3 Icon Button", ()=>{
2866
+ const buttons = findAllInstances({
2867
+ node,
2868
+ key: APP_BAR_RIGHT_ICON_BUTTON_KEY
2869
+ });
2870
+ return buttons.map((button)=>createLocalSnippetElement$n("AppBarIconButton", undefined, ctx.iconHandler.transform(button.componentProperties["Icon#6406:3"]), {
2871
+ comment: "AppBarIconButton에 aria-label 속성을 추가해주세요."
2872
+ }));
2873
+ }).with("Text Button", ()=>undefined).exhaustive();
2874
+ const right = rightChildren && rightChildren.length > 0 ? createLocalSnippetElement$n("AppBarRight", {}, rightChildren) : undefined;
2875
+ return createLocalSnippetElement$n("AppBar", {
2943
2876
  theme,
2944
2877
  tone
2945
2878
  }, [
@@ -2952,40 +2885,50 @@ const createAppBarHandler = (ctx)=>{
2952
2885
  });
2953
2886
  };
2954
2887
 
2955
- const createIdentityPlaceholderHandler = (_ctx)=>defineComponentHandler(metadata$m.key, ({ componentProperties: props })=>{
2888
+ const IDENTITY_PLACEHOLDER_KEY = "b3563b6f16ba4cfe4240c9b33eef7edad4c304eb";
2889
+ const createIdentityPlaceholderHandler = (_ctx)=>defineComponentHandler(IDENTITY_PLACEHOLDER_KEY, ({ componentProperties: props })=>{
2956
2890
  const commonProps = {
2957
2891
  identity: camelCase(props.Identity.value)
2958
2892
  };
2959
2893
  return createSeedReactElement("IdentityPlaceholder", commonProps);
2960
2894
  });
2961
2895
 
2962
- const { createLocalSnippetElement: createLocalSnippetElement$k } = createLocalSnippetHelper("avatar");
2896
+ const { createLocalSnippetElement: createLocalSnippetElement$m } = createLocalSnippetHelper("avatar");
2963
2897
  const createAvatarHandler = (ctx)=>{
2964
2898
  const identityPlaceholderHandler = createIdentityPlaceholderHandler();
2965
- return defineComponentHandler(metadata$C.key, (node)=>{
2899
+ return defineComponentHandler(metadata$C.key, (node, traverse)=>{
2966
2900
  const [placeholder] = findAllInstances({
2967
2901
  node,
2968
2902
  key: identityPlaceholderHandler.key
2969
2903
  });
2970
2904
  const { componentProperties: props } = node;
2971
- const avatarHasSrc = props["Show Image#71850:57"].value;
2905
+ const avatarHasSrc = props["Has Image Contents#33407:0"].value;
2972
2906
  const commonProps = {
2973
2907
  ...avatarHasSrc && {
2974
2908
  // Placeholder
2975
2909
  src: `https://placehold.co/${props.Size.value}x${props.Size.value}`
2976
2910
  },
2977
2911
  ...placeholder && {
2978
- fallback: identityPlaceholderHandler.transform(placeholder)
2912
+ fallback: identityPlaceholderHandler.transform(placeholder, traverse)
2913
+ },
2914
+ ...props["Badge"].value !== "None" && {
2915
+ badgeMask: camelCase(props["Badge"].value)
2979
2916
  },
2980
2917
  size: props.Size.value
2981
2918
  };
2982
- return createLocalSnippetElement$k("Avatar", commonProps, props["Show Badge#1398:26"].value ? createLocalSnippetElement$k("AvatarBadge", {}) : undefined, {
2919
+ return createLocalSnippetElement$m("Avatar", commonProps, props["Badge"].value === "None" ? undefined : createLocalSnippetElement$m("AvatarBadge", {
2920
+ asChild: true
2921
+ }, createElement("img", {
2922
+ src: "https://placehold.co/20x20"
2923
+ }), {
2924
+ comment: "뱃지를 설명하는 alt 텍스트를 제공해야 합니다."
2925
+ }), {
2983
2926
  comment: avatarHasSrc ? "alt 텍스트를 제공해야 합니다." : undefined
2984
2927
  });
2985
2928
  });
2986
2929
  };
2987
2930
 
2988
- const { createLocalSnippetElement: createLocalSnippetElement$j } = createLocalSnippetHelper("avatar");
2931
+ const { createLocalSnippetElement: createLocalSnippetElement$l } = createLocalSnippetHelper("avatar");
2989
2932
  const createAvatarStackHandler = (ctx)=>{
2990
2933
  const avatarHandler = createAvatarHandler();
2991
2934
  return defineComponentHandler(metadata$B.key, (node)=>{
@@ -2998,7 +2941,7 @@ const createAvatarStackHandler = (ctx)=>{
2998
2941
  size: props.Size.value
2999
2942
  };
3000
2943
  const avatarStackChildren = avatarNodes.map(avatarHandler.transform);
3001
- return createLocalSnippetElement$j("AvatarStack", commonProps, avatarStackChildren);
2944
+ return createLocalSnippetElement$l("AvatarStack", commonProps, avatarStackChildren);
3002
2945
  });
3003
2946
  };
3004
2947
 
@@ -3006,29 +2949,58 @@ const createBadgeHandler = (_ctx)=>defineComponentHandler(metadata$A.key, ({ com
3006
2949
  const commonProps = {
3007
2950
  size: handleSizeProp(props.Size.value),
3008
2951
  tone: camelCase(props.Tone.value),
3009
- variant: camelCase(props.Variant.value),
3010
- shape: camelCase(props.Shape.value)
2952
+ variant: camelCase(props.Variant.value)
3011
2953
  };
3012
2954
  return createSeedReactElement("Badge", commonProps, props["Label#1584:0"].value);
3013
2955
  });
3014
2956
 
3015
- const { createLocalSnippetElement: createLocalSnippetElement$i } = createLocalSnippetHelper("callout");
3016
- const createCalloutHandler = (ctx)=>defineComponentHandler(metadata$w.key, ({ componentProperties: props, children })=>{
3017
- const tag = (()=>{
3018
- switch(props.Interaction.value){
3019
- case "Default":
3020
- return "Callout";
3021
- case "Actionable":
3022
- return "ActionableCallout";
3023
- case "Dismissible":
3024
- return "DismissibleCallout";
3025
- default:
3026
- return "Callout";
2957
+ const { createLocalSnippetElement: createLocalSnippetElement$k } = createLocalSnippetHelper("bottom-sheet");
2958
+ const { createLocalSnippetElement: createLocalSnippetElementTrigger$2 } = createLocalSnippetHelper("action-button");
2959
+ // TODO: Bottom Action Bar (WIP) handler의 키. 해당 컴포넌트(템플릿) 핸들러 작성 시 handler.transform()으로 대체
2960
+ const BOTTOM_SHEET_FOOTER_KEY = "de6c65d34cc4a01c18c9a7c0ded34635170ca11f";
2961
+ const BOTTOM_SHEET_BODY_KEY = "aa9ffdd60fbfdea42f0d11162cd64f4b4389ddcc";
2962
+ const createBottomSheetHandler = (_ctx)=>defineComponentHandler(metadata$x.key, (node, traverse)=>{
2963
+ const props = node.componentProperties;
2964
+ const headerAlign = match(props["Header Layout"].value).with("Bottom Left", "Top Left", ()=>"left").with("Bottom Center", "Top Center", ()=>"center").with("None", ()=>undefined).exhaustive();
2965
+ const contentProps = {
2966
+ title: props["Title#19787:3"].value,
2967
+ ...props["Show Description#25192:0"].value === true && {
2968
+ description: props["Description#19787:7"].value
2969
+ },
2970
+ ...props["Show Close Button#19787:11"].value === false && {
2971
+ showCloseButton: false
3027
2972
  }
3028
- })();
2973
+ };
2974
+ const bodyNodes = findAllInstances({
2975
+ node,
2976
+ key: BOTTOM_SHEET_BODY_KEY
2977
+ });
2978
+ const bottomSheetBody = bodyNodes.length === 1 ? createLocalSnippetElement$k("BottomSheetBody", {}, bodyNodes[0].children.map(traverse)) : createLocalSnippetElement$k("BottomSheetBody", {}, createElement("div", undefined, "No content available"));
2979
+ const footerNodes = findAllInstances({
2980
+ node,
2981
+ key: BOTTOM_SHEET_FOOTER_KEY
2982
+ });
2983
+ const bottomSheetFooter = props["Show Footer#25162:14"] && footerNodes.length === 1 ? createLocalSnippetElement$k("BottomSheetFooter", {}, footerNodes[0].children.map(traverse)) : undefined;
2984
+ return createLocalSnippetElement$k("BottomSheetRoot", {
2985
+ defaultOpen: true,
2986
+ headerAlign
2987
+ }, [
2988
+ createLocalSnippetElement$k("BottomSheetTrigger", {
2989
+ asChild: true
2990
+ }, createLocalSnippetElementTrigger$2("ActionButton", {}, "BottomSheet 열기")),
2991
+ createLocalSnippetElement$k("BottomSheetContent", contentProps, [
2992
+ bottomSheetBody,
2993
+ bottomSheetFooter
2994
+ ])
2995
+ ]);
2996
+ });
2997
+
2998
+ const { createLocalSnippetElement: createLocalSnippetElement$j } = createLocalSnippetHelper("callout");
2999
+ const createCalloutHandler = (ctx)=>defineComponentHandler(metadata$w.key, ({ componentProperties: props, children })=>{
3000
+ const tag = match(props.Interaction.value).with("Display", ()=>"Callout").with("Actionable", ()=>"ActionableCallout").with("Dismissible", ()=>"DismissibleCallout").exhaustive();
3029
3001
  const textNode = children.find((child)=>child.type === "TEXT");
3030
3002
  if (!textNode) {
3031
- return createLocalSnippetElement$i(tag, undefined, undefined, {
3003
+ return createLocalSnippetElement$j(tag, undefined, undefined, {
3032
3004
  comment: "내용을 제공해주세요."
3033
3005
  });
3034
3006
  }
@@ -3071,17 +3043,19 @@ const createCalloutHandler = (ctx)=>defineComponentHandler(metadata$w.key, ({ co
3071
3043
  tone: camelCase(props.Tone.value),
3072
3044
  title,
3073
3045
  description,
3074
- linkProps: {
3075
- children: linkLabel
3046
+ ...linkLabel && {
3047
+ linkProps: {
3048
+ children: linkLabel
3049
+ }
3076
3050
  },
3077
- ...props["Icon#12598:210"].value && {
3078
- prefixIcon: ctx.iconHandler.transform(props["Icon#12598:210"])
3051
+ ...props["Show Prefix Icon#35087:1"].value && {
3052
+ prefixIcon: ctx.iconHandler.transform(props["Prefix Icon#35087:0"])
3079
3053
  }
3080
3054
  };
3081
- return createLocalSnippetElement$i(tag, commonProps);
3055
+ return createLocalSnippetElement$j(tag, commonProps);
3082
3056
  });
3083
3057
 
3084
- const { createLocalSnippetElement: createLocalSnippetElement$h } = createLocalSnippetHelper("checkbox");
3058
+ const { createLocalSnippetElement: createLocalSnippetElement$i } = createLocalSnippetHelper("checkbox");
3085
3059
  const createCheckboxHandler = (_ctx)=>defineComponentHandler(metadata$v.key, ({ componentProperties: props })=>{
3086
3060
  const states = props.State.value.split("-");
3087
3061
  const commonProps = {
@@ -3100,105 +3074,89 @@ const createCheckboxHandler = (_ctx)=>defineComponentHandler(metadata$v.key, ({
3100
3074
  disabled: true
3101
3075
  }
3102
3076
  };
3103
- return createLocalSnippetElement$h("Checkbox", commonProps);
3077
+ return createLocalSnippetElement$i("Checkbox", commonProps);
3104
3078
  });
3105
3079
 
3106
- const { createLocalSnippetElement: createLocalSnippetElement$g } = createLocalSnippetHelper("chip-tabs");
3107
- const CHIP_TABS_ITEM_KEY = "fa80168b02051fbb0ba032238bd76d840dbe2e15";
3108
- const createChipTabsItemHandler = (_ctx)=>defineComponentHandler(CHIP_TABS_ITEM_KEY, ({ componentProperties: props })=>{
3080
+ const { createLocalSnippetElement: createLocalSnippetElement$h } = createLocalSnippetHelper("chip");
3081
+ const createChipHandler = (ctx)=>{
3082
+ const avatarHandler = createAvatarHandler();
3083
+ return defineComponentHandler(metadata$t.key, (node, traverse)=>{
3084
+ const props = node.componentProperties;
3109
3085
  const states = props.State.value.split("-");
3086
+ const prefix = match(props["Prefix Type"].value).with("None", "Image", ()=>undefined).with("Icon", ()=>createLocalSnippetElement$h("Chip.PrefixIcon", undefined, ctx.iconHandler.transform(props["Prefix Icon#8722:0"]))).with("Avatar", ()=>{
3087
+ const [avatar] = findAllInstances({
3088
+ node,
3089
+ key: metadata$C.key
3090
+ });
3091
+ if (!avatar) return undefined;
3092
+ return createLocalSnippetElement$h("Chip.PrefixAvatar", undefined, avatarHandler.transform(avatar, traverse));
3093
+ }).exhaustive();
3094
+ const suffix = props["Has Suffix#32538:181"].value ? createLocalSnippetElement$h("Chip.SuffixIcon", undefined, ctx.iconHandler.transform(props["Suffix Type#32538:0"])) : undefined;
3110
3095
  const commonProps = {
3111
- value: props["Label#8876:0"].value,
3096
+ variant: camelCase(props.Variant.value),
3097
+ size: handleSizeProp(props.Size.value),
3098
+ layout: props["Label#7185:0"].value ? "withText" : "iconOnly",
3112
3099
  ...states.includes("Disabled") && {
3113
3100
  disabled: true
3114
3101
  }
3115
3102
  };
3116
- return createLocalSnippetElement$g("ChipTabsTrigger", commonProps, props["Label#8876:0"].value);
3117
- });
3118
- const createChipTabsHandler = (ctx)=>{
3119
- const chipTabsItemHandler = createChipTabsItemHandler();
3120
- return defineComponentHandler(metadata$u.key, (node)=>{
3121
- const chipTabsItems = findAllInstances({
3122
- node,
3123
- key: chipTabsItemHandler.key
3103
+ return createLocalSnippetElement$h("Chip.Button", commonProps, [
3104
+ prefix,
3105
+ props["Label#7185:0"].value,
3106
+ suffix
3107
+ ], {
3108
+ comment: "목적에 따라 Chip.Toggle, Chip.RadioItem 등으로도 사용할 수 있습니다."
3124
3109
  });
3125
- const selectedChipTabsItem = chipTabsItems.find((chipTabsItem)=>chipTabsItem.componentProperties.State.value.split("-").includes("Selected"));
3126
- const chipTabsList = createLocalSnippetElement$g("ChipTabsList", undefined, chipTabsItems.map(chipTabsItemHandler.transform));
3127
- const commonProps = {
3128
- variant: camelCase(node.componentProperties.Variant.value),
3129
- ...selectedChipTabsItem && {
3130
- defaultValue: selectedChipTabsItem.componentProperties["Label#8876:0"].value
3131
- }
3132
- };
3133
- return createLocalSnippetElement$g("ChipTabs", commonProps, chipTabsList);
3134
3110
  });
3135
3111
  };
3136
3112
 
3137
- const { createLocalSnippetElement: createLocalSnippetElement$f } = createLocalSnippetHelper("control-chip");
3138
- const createControlChipHandler = (ctx)=>defineComponentHandler(metadata$t.key, ({ componentProperties: props })=>{
3113
+ const { createLocalSnippetElement: createLocalSnippetElement$g } = createLocalSnippetHelper("contextual-floating-button");
3114
+ const createContextualFloatingButtonHandler = (ctx)=>defineComponentHandler(metadata$r.key, ({ componentProperties: props })=>{
3139
3115
  const states = props.State.value.split("-");
3140
- const count = props["Show Count#7185:42"].value ? props["Count#7185:21"].value : undefined;
3141
3116
  const { layout, children } = match(props.Layout.value).with("Icon Only", ()=>({
3142
3117
  layout: "iconOnly",
3143
3118
  children: [
3144
3119
  createSeedReactElement("Icon", {
3145
- svg: ctx.iconHandler.transform(props["Icon#8722:41"])
3120
+ svg: ctx.iconHandler.transform(props["Icon#28796:0"])
3146
3121
  })
3147
3122
  ]
3148
3123
  })).with("Icon First", ()=>({
3149
3124
  layout: "withText",
3150
3125
  children: [
3151
3126
  createSeedReactElement("PrefixIcon", {
3152
- svg: ctx.iconHandler.transform(props["Prefix Icon#8722:0"])
3153
- }),
3154
- props["Label#7185:0"].value,
3155
- count ? createSeedReactElement("Count", undefined, [
3156
- count
3157
- ]) : undefined
3158
- ]
3159
- })).with("Icon Last", ()=>({
3160
- layout: "withText",
3161
- children: [
3162
- props["Label#7185:0"].value,
3163
- createSeedReactElement("SuffixIcon", {
3164
- svg: ctx.iconHandler.transform(props["Suffix Icon#8722:82"])
3165
- })
3166
- ]
3167
- })).with("Icon Both", ()=>({
3168
- layout: "withText",
3169
- children: [
3170
- createSeedReactElement("PrefixIcon", {
3171
- svg: ctx.iconHandler.transform(props["Prefix Icon#8722:0"])
3127
+ svg: ctx.iconHandler.transform(props["Icon#28796:0"])
3172
3128
  }),
3173
- props["Label#7185:0"].value,
3174
- createSeedReactElement("SuffixIcon", {
3175
- svg: ctx.iconHandler.transform(props["Suffix Icon#8722:82"])
3176
- })
3129
+ props["Label#28936:0"].value
3177
3130
  ]
3178
- })).with("Text Only", ()=>({
3179
- layout: "withText",
3180
- children: props["Label#7185:0"].value
3181
3131
  })).exhaustive();
3182
3132
  const commonProps = {
3183
- size: handleSizeProp(props.Size.value),
3184
- layout,
3185
- ...states.includes("Selected") && {
3186
- defaultChecked: true
3187
- },
3188
3133
  ...states.includes("Disabled") && {
3189
3134
  disabled: true
3190
3135
  },
3191
- ...props["Show Count#7185:42"].value && {
3192
- count: Number(props["Count#7185:21"].value)
3193
- }
3136
+ ...states.includes("Loading") && {
3137
+ loading: true
3138
+ },
3139
+ variant: match(props.Variant.value).with("Solid", ()=>"solid").with("Layer", ()=>"layer").exhaustive(),
3140
+ layout
3194
3141
  };
3195
- return createLocalSnippetElement$f("ControlChip.Toggle", commonProps, children);
3142
+ return createLocalSnippetElement$g("ContextualFloatingButton", commonProps, children);
3143
+ });
3144
+
3145
+ const createDividerHandler = (_ctx)=>defineComponentHandler(metadata$q.key, ({ componentProperties: props })=>{
3146
+ const { color } = match(props.Tone.value).with("Neutral", ()=>({
3147
+ color: "stroke.neutral"
3148
+ })).with("Neutral Muted", ()=>({
3149
+ color: "stroke.neutralMuted"
3150
+ })).exhaustive();
3151
+ return createSeedReactElement("Divider", {
3152
+ color
3153
+ });
3196
3154
  });
3197
3155
 
3198
- const { createLocalSnippetElement: createLocalSnippetElement$e } = createLocalSnippetHelper("error-state");
3156
+ const { createLocalSnippetElement: createLocalSnippetElement$f } = createLocalSnippetHelper("error-state");
3199
3157
  const createErrorStateHandler = (ctx)=>{
3200
3158
  const actionButtonHandler = createActionButtonHandler(ctx);
3201
- return defineComponentHandler(metadata$r.key, (node)=>{
3159
+ return defineComponentHandler(metadata$H.key, (node, traverse)=>{
3202
3160
  const props = node.componentProperties;
3203
3161
  const [actionButtonNode] = findAllInstances({
3204
3162
  node,
@@ -3212,96 +3170,47 @@ const createErrorStateHandler = (ctx)=>{
3212
3170
  description: props["Description#16237:5"].value,
3213
3171
  ...actionButtonNode && {
3214
3172
  primaryActionProps: {
3215
- children: actionButtonHandler.transform(actionButtonNode).children[0]
3173
+ children: actionButtonHandler.transform(actionButtonNode, traverse).children[0]
3216
3174
  },
3217
3175
  secondaryActionProps: {
3218
3176
  children: props["Secondary Action Label#17042:0"].value
3219
3177
  }
3220
3178
  }
3221
3179
  };
3222
- return createLocalSnippetElement$e("ErrorState", commonProps);
3180
+ return createLocalSnippetElement$f("ErrorState", commonProps);
3223
3181
  });
3224
3182
  };
3225
3183
 
3226
- const { createLocalSnippetElement: createLocalSnippetElement$d } = createLocalSnippetHelper("extended-action-sheet");
3227
- const EXTENDED_ACTION_SHEET_ITEM_KEY = "057083e95466da59051119eec0b41d4ad5a07f8f";
3228
- const createExtendedActionSheetItemHandler = (ctx)=>defineComponentHandler(EXTENDED_ACTION_SHEET_ITEM_KEY, ({ componentProperties: props })=>{
3229
- const states = props.State.value.split("-");
3230
- const commonProps = {
3231
- tone: camelCase(props.Tone.value),
3232
- ...states.includes("Disabled") && {
3233
- disabled: true
3234
- }
3235
- };
3236
- return createLocalSnippetElement$d("ExtendedActionSheetItem", commonProps, [
3237
- props["Show Prefix Icon#17043:5"].value ? createSeedReactElement("PrefixIcon", {
3238
- svg: ctx.iconHandler.transform(props["Prefix Icon#55948:0"])
3239
- }) : undefined,
3240
- props["Label#55905:8"].value
3241
- ]);
3242
- });
3243
- const EXTENDED_ACTION_SHEET_GROUP_KEY = "2a504a1c6b7810d5e652862dcba2cb7048f9eb16";
3244
- const createExtendedActionSheetGroupHandler = (ctx)=>{
3245
- const extendedActionSheetItemHandler = createExtendedActionSheetItemHandler(ctx);
3246
- return defineComponentHandler(EXTENDED_ACTION_SHEET_GROUP_KEY, (node)=>{
3247
- const items = findAllInstances({
3184
+ const { createLocalSnippetElement: createLocalSnippetElement$e } = createLocalSnippetHelper("floating-action-button");
3185
+ const BUTTON_TYPE_KEY = "8cecc85275115d653579d4c3156567ebf19f7b27";
3186
+ const MENU_TYPE_KEY = "400124347392c15473f9cd2d8a6aedb64f3baf36";
3187
+ const createFloatingActionButtonHandler = (ctx)=>defineComponentHandler(metadata$p.key, (node)=>{
3188
+ const [button] = findAllInstances({
3248
3189
  node,
3249
- key: extendedActionSheetItemHandler.key
3190
+ key: BUTTON_TYPE_KEY
3250
3191
  });
3251
- const contentChildren = items.map(extendedActionSheetItemHandler.transform);
3252
- return createLocalSnippetElement$d("ExtendedActionSheetGroup", undefined, contentChildren);
3253
- });
3254
- };
3255
- const createExtendedActionSheetHandler = (ctx)=>{
3256
- const extendedActionSheetGroupHandler = createExtendedActionSheetGroupHandler(ctx);
3257
- return defineComponentHandler(metadata$q.key, (node)=>{
3258
- const { componentProperties: props } = node;
3259
- const groups = findAllInstances({
3192
+ const [menu] = findAllInstances({
3260
3193
  node,
3261
- key: extendedActionSheetGroupHandler.key
3262
- });
3263
- const contentChildren = groups.map(extendedActionSheetGroupHandler.transform);
3264
- const title = props["Show Title#17043:12"].value ? props["Title#14599:0"].value : undefined;
3265
- const content = createLocalSnippetElement$d("ExtendedActionSheetContent", {
3266
- title
3267
- }, contentChildren, {
3268
- comment: title ? undefined : "title을 제공하지 않는 경우 aria-label이나 aria-labelledby 중 하나를 제공해야 합니다."
3269
- });
3270
- const trigger = createLocalSnippetElement$d("ExtendedActionSheetTrigger", {
3271
- asChild: true
3272
- }, createElement("button", undefined, "열기", {
3273
- comment: "ExtendedActionSheet을 여는 요소를 제공해주세요."
3274
- }));
3275
- return createLocalSnippetElement$d("ExtendedActionSheet", undefined, [
3276
- trigger,
3277
- content
3278
- ]);
3279
- });
3280
- };
3281
-
3282
- const createExtendedFabHandler = (ctx)=>defineComponentHandler(metadata$p.key, ({ componentProperties: props })=>{
3283
- const commonProps = {
3284
- size: handleSizeProp(props.Size.value),
3285
- variant: camelCase(props.Variant.value)
3286
- };
3287
- return createSeedReactElement("ExtendedFab", commonProps, [
3288
- createSeedReactElement("PrefixIcon", {
3289
- svg: ctx.iconHandler.transform(props["Icon#28796:0"])
3290
- }),
3291
- props["Label#28936:0"].value
3292
- ]);
3293
- });
3294
-
3295
- const createFabHandler = (ctx)=>defineComponentHandler(metadata$o.key, ({ componentProperties: props })=>{
3296
- return createSeedReactElement("Fab", undefined, createSeedReactElement("Icon", {
3297
- svg: ctx.iconHandler.transform(props["Icon#28796:0"])
3298
- }), {
3299
- comment: "aria-label이나 aria-labelledby 중 하나를 제공해야 합니다."
3194
+ key: MENU_TYPE_KEY
3300
3195
  });
3196
+ const commonProps = (()=>{
3197
+ if (button) return {
3198
+ icon: ctx.iconHandler.transform(button.componentProperties["Icon#29766:18"]),
3199
+ extended: button.componentProperties.Extended.value === "True",
3200
+ label: button.componentProperties["Label#29808:0"].value
3201
+ };
3202
+ if (menu) return {
3203
+ icon: ctx.iconHandler.transform(menu.componentProperties["Icon#29766:0"]),
3204
+ extended: menu.componentProperties.Extended.value === "True",
3205
+ label: menu.componentProperties["Label#29766:9"].value
3206
+ };
3207
+ })();
3208
+ return createLocalSnippetElement$e("FloatingActionButton", commonProps);
3301
3209
  });
3302
3210
 
3303
- const { createLocalSnippetElement: createLocalSnippetElement$c } = createLocalSnippetHelper("help-bubble");
3304
- const createHelpBubbleHandler = (_ctx)=>defineComponentHandler(metadata$n.key, ({ componentProperties: props })=>{
3211
+ const { createLocalSnippetElement: createLocalSnippetElement$d } = createLocalSnippetHelper("help-bubble");
3212
+ const { createLocalSnippetElement: createLocalSnippetElementTrigger$1 } = createLocalSnippetHelper("action-button");
3213
+ const createHelpBubbleHandler = (_ctx)=>defineComponentHandler(metadata$o.key, ({ componentProperties: props })=>{
3305
3214
  const placement = (()=>{
3306
3215
  switch(props.Placement.value){
3307
3216
  case "Bottom-Left":
@@ -3335,35 +3244,19 @@ const createHelpBubbleHandler = (_ctx)=>defineComponentHandler(metadata$n.key, (
3335
3244
  ...props["Show Description#62499:0"].value && {
3336
3245
  description: props["Description#62535:98"].value
3337
3246
  },
3338
- showCloseButton: props["Show Close Button"].value === "True",
3339
3247
  defaultOpen: true,
3340
3248
  placement
3341
3249
  };
3342
- return createLocalSnippetElement$c("HelpBubbleTrigger", commonProps, createElement("button", undefined, "열기", {
3343
- comment: "HelpBubble을 여는 요소를 제공해주세요."
3344
- }));
3250
+ return createLocalSnippetElement$d("HelpBubbleTrigger", commonProps, createLocalSnippetElementTrigger$1("ActionButton", {}, "HelpBubble 열기"));
3345
3251
  });
3346
3252
 
3347
- const { createLocalSnippetElement: createLocalSnippetElement$b } = createLocalSnippetHelper("inline-banner");
3348
- const createInlineBannerHandler = (ctx)=>defineComponentHandler(metadata$l.key, (node)=>{
3253
+ const { createLocalSnippetElement: createLocalSnippetElement$c } = createLocalSnippetHelper("inline-banner");
3254
+ const createInlineBannerHandler = (ctx)=>defineComponentHandler(metadata$n.key, (node)=>{
3349
3255
  const { componentProperties: props } = node;
3350
- const tag = (()=>{
3351
- switch(props.Interaction.value){
3352
- case "Default":
3353
- return "InlineBanner";
3354
- case "Actionable":
3355
- return "ActionableInlineBanner";
3356
- case "Dismissible":
3357
- return "DismissibleInlineBanner";
3358
- case "Link":
3359
- return "InlineBanner";
3360
- default:
3361
- return "InlineBanner";
3362
- }
3363
- })();
3256
+ const tag = match(props.Interaction.value).with("Default", ()=>"InlineBanner").with("Actionable", ()=>"ActionableInlineBanner").with("Dismissible", ()=>"DismissibleInlineBanner").with("Link", ()=>"InlineBanner").exhaustive();
3364
3257
  const textNode = findOne(node, (child)=>child.type === "TEXT" && child.name === "Label");
3365
3258
  if (!textNode) {
3366
- return createLocalSnippetElement$b(tag, undefined, undefined, {
3259
+ return createLocalSnippetElement$c(tag, undefined, undefined, {
3367
3260
  comment: "내용을 제공해주세요."
3368
3261
  });
3369
3262
  }
@@ -3397,20 +3290,92 @@ const createInlineBannerHandler = (ctx)=>defineComponentHandler(metadata$l.key,
3397
3290
  },
3398
3291
  prefixIcon
3399
3292
  };
3400
- return createLocalSnippetElement$b(tag, commonProps);
3293
+ return createLocalSnippetElement$c(tag, commonProps);
3294
+ });
3295
+
3296
+ const { createLocalSnippetElement: createLocalSnippetElement$b } = createLocalSnippetHelper("manner-temp-badge");
3297
+ const createMannerTempBadgeHandler = (_ctx)=>defineComponentHandler(metadata$j.key, ({ children })=>{
3298
+ const textNode = children.find((child)=>child.type === "TEXT");
3299
+ const commonProps = {
3300
+ temperature: Number(textNode?.characters.replace(/[^\d.-]/g, "") ?? "-1")
3301
+ };
3302
+ return createLocalSnippetElement$b("MannerTempBadge", commonProps);
3401
3303
  });
3402
3304
 
3403
3305
  const { createLocalSnippetElement: createLocalSnippetElement$a } = createLocalSnippetHelper("manner-temp-badge");
3404
- const createMannerTempBadgeHandler = (_ctx)=>defineComponentHandler(metadata$g.key, ({ children })=>{
3306
+ const createMannerTempHandler = (_ctx)=>defineComponentHandler(metadata$k.key, ({ children })=>{
3405
3307
  const textNode = children.find((child)=>child.type === "TEXT");
3406
3308
  const commonProps = {
3407
3309
  temperature: Number(textNode?.characters.replace(/[^\d.-]/g, "") ?? "-1")
3408
3310
  };
3409
- return createLocalSnippetElement$a("MannerTempBadge", commonProps);
3311
+ return createLocalSnippetElement$a("MannerTemp", commonProps);
3312
+ });
3313
+
3314
+ const { createLocalSnippetElement: createLocalSnippetElement$9 } = createLocalSnippetHelper("menu-sheet");
3315
+ const { createLocalSnippetElement: createLocalSnippetElementTrigger } = createLocalSnippetHelper("action-button");
3316
+ const MENU_SHEET_ITEM_KEY = "057083e95466da59051119eec0b41d4ad5a07f8f";
3317
+ const createMenuSheetItemHandler = (ctx)=>defineComponentHandler(MENU_SHEET_ITEM_KEY, ({ componentProperties: props })=>{
3318
+ const states = props.State.value.split("-");
3319
+ const commonProps = {
3320
+ tone: camelCase(props.Tone.value),
3321
+ ...states.includes("Disabled") && {
3322
+ disabled: true
3323
+ }
3324
+ };
3325
+ return createLocalSnippetElement$9("MenuSheetItem", commonProps, [
3326
+ props["Show Prefix Icon#17043:5"].value ? createSeedReactElement("PrefixIcon", {
3327
+ svg: ctx.iconHandler.transform(props["Prefix Icon#55948:0"])
3328
+ }) : undefined,
3329
+ props["Label#55905:8"].value
3330
+ ]);
3331
+ });
3332
+ const MENU_SHEET_GROUP_KEY = "2a504a1c6b7810d5e652862dcba2cb7048f9eb16";
3333
+ const createMenuSheetGroupHandler = (ctx)=>{
3334
+ const menuSheetItemHandler = createMenuSheetItemHandler(ctx);
3335
+ return defineComponentHandler(MENU_SHEET_GROUP_KEY, (node, traverse)=>{
3336
+ const items = findAllInstances({
3337
+ node,
3338
+ key: menuSheetItemHandler.key
3339
+ });
3340
+ const contentChildren = items.map((item)=>menuSheetItemHandler.transform(item, traverse));
3341
+ return createLocalSnippetElement$9("MenuSheetGroup", undefined, contentChildren);
3342
+ });
3343
+ };
3344
+ const createMenuSheetHandler = (ctx)=>{
3345
+ const menuSheetGroupHandler = createMenuSheetGroupHandler(ctx);
3346
+ return defineComponentHandler(metadata$i.key, (node, traverse)=>{
3347
+ const { componentProperties: props } = node;
3348
+ const groups = findAllInstances({
3349
+ node,
3350
+ key: menuSheetGroupHandler.key
3351
+ });
3352
+ const contentChildren = groups.map((group)=>menuSheetGroupHandler.transform(group, traverse));
3353
+ const title = props["Show Header#17043:12"].value ? props["Title Text#14599:0"].value : undefined;
3354
+ // TODO: React 구현체에 description 추가 이후
3355
+ // const description = props["Description Text#21827:0"].value;
3356
+ const { labelAlignment } = match(props.Layout.value).with("Text with Icon", ()=>({
3357
+ labelAlignment: undefined
3358
+ })).with("Text Only", ()=>({
3359
+ labelAlignment: "center"
3360
+ })).exhaustive();
3361
+ const content = createLocalSnippetElement$9("MenuSheetContent", {
3362
+ title,
3363
+ labelAlignment
3364
+ }, contentChildren, {
3365
+ comment: title ? undefined : "title을 제공하지 않는 경우 aria-label이나 aria-labelledby 중 하나를 제공해야 합니다."
3366
+ });
3367
+ const trigger = createLocalSnippetElement$9("MenuSheetTrigger", {
3368
+ asChild: true
3369
+ }, createLocalSnippetElementTrigger("ActionButton", {}, "MenuSheet 열기"));
3370
+ return createLocalSnippetElement$9("MenuSheet", undefined, [
3371
+ trigger,
3372
+ content
3373
+ ]);
3410
3374
  });
3375
+ };
3411
3376
 
3412
- const { createLocalSnippetElement: createLocalSnippetElement$9 } = createLocalSnippetHelper("multiline-text-field");
3413
- const createMultilineTextFieldHandler = (_ctx)=>defineComponentHandler(metadata$f.key, ({ componentProperties: props })=>{
3377
+ const { createLocalSnippetElement: createLocalSnippetElement$8 } = createLocalSnippetHelper("text-field");
3378
+ const createMultilineTextFieldHandler = (_ctx)=>defineComponentHandler(metadata$h.key, ({ componentProperties: props })=>{
3414
3379
  const { Size: { value: size }, State: { value: state }, Filled: { value: filled }, "Show Header#870:0": { value: showHeader }, "Label#15327:323": { value: label }, "Show Indicator#1259:0": { value: showIndicator }, "Indicator#15327:286": { value: indicator }, "Placeholder#958:0": { value: placeholder }, "Filled Text#1304:0": { value: defaultValue }, "Show Footer#958:25": { value: showFooter }, "Show Description#958:50": { value: showDescription }, "Description#15327:212": { value: description }, "Show Character count#958:75": { value: showCharacterCount }, "Character Count#15327:360": { value: _characterCount }, "Max Character Count#15327:175": { value: maxCharacterCount } } = props;
3415
3380
  const states = state.split("-");
3416
3381
  const commonProps = {
@@ -3451,12 +3416,12 @@ const createMultilineTextFieldHandler = (_ctx)=>defineComponentHandler(metadata$
3451
3416
  const inputProps = {
3452
3417
  placeholder
3453
3418
  };
3454
- const TextFieldChildren = createLocalSnippetElement$9("TextFieldTextarea", inputProps);
3455
- return createLocalSnippetElement$9("TextField", commonProps, TextFieldChildren);
3419
+ const TextFieldChildren = createLocalSnippetElement$8("TextFieldTextarea", inputProps);
3420
+ return createLocalSnippetElement$8("TextField", commonProps, TextFieldChildren);
3456
3421
  });
3457
3422
 
3458
- const { createLocalSnippetElement: createLocalSnippetElement$8 } = createLocalSnippetHelper("progress-circle");
3459
- const createProgressCircleHandler = (_ctx)=>defineComponentHandler(metadata$e.key, ({ componentProperties: props })=>{
3423
+ const { createLocalSnippetElement: createLocalSnippetElement$7 } = createLocalSnippetHelper("progress-circle");
3424
+ const createProgressCircleHandler = (_ctx)=>defineComponentHandler(metadata$g.key, ({ componentProperties: props })=>{
3460
3425
  const { value, minValue, maxValue } = match(props.Value.value).with("Indeterminate", ()=>({
3461
3426
  value: undefined,
3462
3427
  minValue: undefined,
@@ -3483,13 +3448,15 @@ const createProgressCircleHandler = (_ctx)=>defineComponentHandler(metadata$e.ke
3483
3448
  minValue,
3484
3449
  maxValue,
3485
3450
  size: props.Size.value,
3486
- tone: camelCase(props.Tone.value)
3451
+ ...props.Tone.value !== "Custom" && {
3452
+ tone: camelCase(props.Tone.value)
3453
+ }
3487
3454
  };
3488
- return createLocalSnippetElement$8("ProgressCircle", commonProps);
3455
+ return createLocalSnippetElement$7("ProgressCircle", commonProps);
3489
3456
  });
3490
3457
 
3491
- const { createLocalSnippetElement: createLocalSnippetElement$7 } = createLocalSnippetHelper("reaction-button");
3492
- const createReactionButtonHandler = (ctx)=>defineComponentHandler(metadata$b.key, ({ componentProperties: props })=>{
3458
+ const { createLocalSnippetElement: createLocalSnippetElement$6 } = createLocalSnippetHelper("reaction-button");
3459
+ const createReactionButtonHandler = (ctx)=>defineComponentHandler(metadata$c.key, ({ componentProperties: props })=>{
3493
3460
  const states = props.State.value.split("-");
3494
3461
  const commonProps = {
3495
3462
  size: handleSizeProp(props.Size.value),
@@ -3503,7 +3470,7 @@ const createReactionButtonHandler = (ctx)=>defineComponentHandler(metadata$b.key
3503
3470
  defaultPressed: true
3504
3471
  }
3505
3472
  };
3506
- return createLocalSnippetElement$7("ReactionButton", commonProps, [
3473
+ return createLocalSnippetElement$6("ReactionButton", commonProps, [
3507
3474
  createSeedReactElement("PrefixIcon", {
3508
3475
  svg: ctx.iconHandler.transform(props["Icon#12379:0"])
3509
3476
  }),
@@ -3512,7 +3479,7 @@ const createReactionButtonHandler = (ctx)=>defineComponentHandler(metadata$b.key
3512
3479
  ]);
3513
3480
  });
3514
3481
 
3515
- const { createLocalSnippetElement: createLocalSnippetElement$6 } = createLocalSnippetHelper("segmented-control");
3482
+ const { createLocalSnippetElement: createLocalSnippetElement$5 } = createLocalSnippetHelper("segmented-control");
3516
3483
  const SEGMENTED_CONTROL_ITEM_KEY = "9a7ba0d4c041ddbce84ee48881788434fd6bccc8";
3517
3484
  const createSegmentedControlItemHandler = (_ctx)=>defineComponentHandler(SEGMENTED_CONTROL_ITEM_KEY, ({ componentProperties: props })=>{
3518
3485
  const states = props.State.value.split("-");
@@ -3522,30 +3489,30 @@ const createSegmentedControlItemHandler = (_ctx)=>defineComponentHandler(SEGMENT
3522
3489
  disabled: true
3523
3490
  }
3524
3491
  };
3525
- return createLocalSnippetElement$6("SegmentedControlItem", commonProps, props["Label#11366:15"].value);
3492
+ return createLocalSnippetElement$5("SegmentedControlItem", commonProps, props["Label#11366:15"].value);
3526
3493
  });
3527
3494
  const createSegmentedControlHandler = (ctx)=>{
3528
3495
  const segmentedControlItemHandler = createSegmentedControlItemHandler();
3529
- return defineComponentHandler(metadata$a.key, (node)=>{
3496
+ return defineComponentHandler(metadata$9.key, (node, traverse)=>{
3530
3497
  const segments = findAllInstances({
3531
3498
  node,
3532
3499
  key: segmentedControlItemHandler.key
3533
3500
  });
3534
3501
  const selectedSegment = segments.find((segment)=>segment.componentProperties.State.value.split("-").includes("Selected"));
3535
- const segmentedControlChildren = segments.map(segmentedControlItemHandler.transform);
3502
+ const segmentedControlChildren = segments.map((segment)=>segmentedControlItemHandler.transform(segment, traverse));
3536
3503
  const commonProps = {
3537
3504
  ...selectedSegment && {
3538
3505
  defaultValue: selectedSegment.componentProperties["Label#11366:15"].value
3539
3506
  }
3540
3507
  };
3541
- return createLocalSnippetElement$6("SegmentedControl", commonProps, segmentedControlChildren, {
3508
+ return createLocalSnippetElement$5("SegmentedControl", commonProps, segmentedControlChildren, {
3542
3509
  comment: "aria-label이나 aria-labelledby 중 하나를 제공해야 합니다."
3543
3510
  });
3544
3511
  });
3545
3512
  };
3546
3513
 
3547
- const { createLocalSnippetElement: createLocalSnippetElement$5 } = createLocalSnippetHelper("select-box");
3548
- const createSelectBoxHandler = (_ctx)=>defineComponentHandler(metadata$9.key, ({ componentProperties: props })=>{
3514
+ const { createLocalSnippetElement: createLocalSnippetElement$4 } = createLocalSnippetHelper("select-box");
3515
+ const createSelectBoxHandler = (_ctx)=>defineComponentHandler(metadata$8.key, ({ componentProperties: props })=>{
3549
3516
  const tag = match(props.Control.value).with("Checkbox", ()=>"CheckSelectBox").with("Radio", ()=>"RadioSelectBox").exhaustive();
3550
3517
  const states = props.State.value.split("-");
3551
3518
  const commonProps = {
@@ -3560,11 +3527,11 @@ const createSelectBoxHandler = (_ctx)=>defineComponentHandler(metadata$9.key, ({
3560
3527
  defaultChecked: true
3561
3528
  }
3562
3529
  };
3563
- return createLocalSnippetElement$5(tag, commonProps);
3530
+ return createLocalSnippetElement$4(tag, commonProps);
3564
3531
  });
3565
3532
  const createSelectBoxGroupHandler = (ctx)=>{
3566
3533
  const selectBoxHandler = createSelectBoxHandler();
3567
- return defineComponentHandler(metadata$H.key, (node)=>{
3534
+ return defineComponentHandler(metadata$G.key, (node, traverse)=>{
3568
3535
  const props = node.componentProperties;
3569
3536
  const tag = match(props.Control.value).with("Checkbox", ()=>"CheckSelectBoxGroup").with("Radio", ()=>"RadioSelectBoxGroup").exhaustive();
3570
3537
  const selectBoxes = findAllInstances({
@@ -3572,19 +3539,22 @@ const createSelectBoxGroupHandler = (ctx)=>{
3572
3539
  key: selectBoxHandler.key
3573
3540
  });
3574
3541
  const selectedSelectBox = selectBoxes.find((selectBox)=>selectBox.componentProperties.State.value.split("-").includes("Selected"));
3575
- const stack = createSeedReactElement("Stack", {
3576
- gap: "spacingY.componentDefault"
3577
- }, selectBoxes.map(selectBoxHandler.transform));
3542
+ // traverse the container like it's a frame
3543
+ const vStackProps = traverse({
3544
+ ...node,
3545
+ type: "FRAME"
3546
+ })?.props;
3547
+ const stack = createSeedReactElement("VStack", vStackProps, selectBoxes.map((box)=>selectBoxHandler.transform(box, traverse)));
3578
3548
  const commonProps = {
3579
3549
  ...tag === "RadioSelectBoxGroup" && {
3580
3550
  defaultValue: selectedSelectBox?.componentProperties["Label#3635:0"].value
3581
3551
  }
3582
3552
  };
3583
- return createLocalSnippetElement$5(tag, commonProps, stack);
3553
+ return createLocalSnippetElement$4(tag, commonProps, stack);
3584
3554
  });
3585
3555
  };
3586
3556
 
3587
- const createSkeletonHandler = (ctx)=>defineComponentHandler(metadata$8.key, (node)=>{
3557
+ const createSkeletonHandler = (ctx)=>defineComponentHandler(metadata$7.key, (node)=>{
3588
3558
  const { componentProperties: props, layoutSizingHorizontal, layoutSizingVertical } = node;
3589
3559
  const commonProps = {
3590
3560
  radius: camelCase(props.Radius.value),
@@ -3594,20 +3564,20 @@ const createSkeletonHandler = (ctx)=>defineComponentHandler(metadata$8.key, (nod
3594
3564
  return createSeedReactElement("Skeleton", commonProps);
3595
3565
  });
3596
3566
 
3597
- const { createLocalSnippetElement: createLocalSnippetElement$4 } = createLocalSnippetHelper("snackbar");
3598
- const createSnackbarHandler = (_ctx)=>defineComponentHandler(metadata$6.key, ({ componentProperties: props })=>{
3567
+ const { createLocalSnippetElement: createLocalSnippetElement$3 } = createLocalSnippetHelper("snackbar");
3568
+ const createSnackbarHandler = (_ctx)=>defineComponentHandler(metadata$5.key, ({ componentProperties: props })=>{
3599
3569
  const commonProps = {
3600
3570
  message: props["Message#1528:4"].value,
3601
3571
  variant: camelCase(props.Variant.value),
3602
- ...props["Show Action Button#1528:0"].value && {
3603
- actionLabel: props["Action Button Label#1528:8"].value
3572
+ ...props["Show Action#1528:0"].value && {
3573
+ actionLabel: props["Action Label#1528:8"].value
3604
3574
  }
3605
3575
  };
3606
3576
  // TODO: adapter.create({ render })
3607
- return createLocalSnippetElement$4("Snackbar", commonProps);
3577
+ return createLocalSnippetElement$3("Snackbar", commonProps);
3608
3578
  });
3609
3579
 
3610
- const { createLocalSnippetElement: createLocalSnippetElement$3 } = createLocalSnippetHelper("switch");
3580
+ const { createLocalSnippetElement: createLocalSnippetElement$2 } = createLocalSnippetHelper("switch");
3611
3581
  const createSwitchHandler = (_ctx)=>defineComponentHandler(metadata$4.key, ({ componentProperties: props })=>{
3612
3582
  const states = props.State.value.split("-");
3613
3583
  const size = handleSizeProp(props.Size.value);
@@ -3623,115 +3593,11 @@ const createSwitchHandler = (_ctx)=>defineComponentHandler(metadata$4.key, ({ co
3623
3593
  disabled: true
3624
3594
  }
3625
3595
  };
3626
- return createLocalSnippetElement$3("Switch", commonProps);
3627
- });
3628
-
3629
- const { createLocalSnippetElement: createLocalSnippetElement$2 } = createLocalSnippetHelper("tabs");
3630
- const TABS_HUG_ITEM_KEY = "c242492543b327ceb84fa9933841512fc62a898c";
3631
- const createTabsHugItemHandler = (_ctx)=>defineComponentHandler(TABS_HUG_ITEM_KEY, ({ componentProperties: props })=>{
3632
- const states = props.State.value.split("-");
3633
- const commonProps = {
3634
- value: props["Label#4478:2"].value,
3635
- ...props.Notification.value === "True" && {
3636
- alert: true
3637
- },
3638
- ...states.includes("Disabled") && {
3639
- disabled: true
3640
- }
3641
- };
3642
- return createLocalSnippetElement$2("TabsTrigger", commonProps, props["Label#4478:2"].value);
3643
- });
3644
- const TABS_FILL_ITEM_KEY = "7275293344efb40ee9a3f5248ba2659b94a0b305";
3645
- const createTabsFillItemHandler = (_ctx)=>defineComponentHandler(TABS_FILL_ITEM_KEY, ({ componentProperties: props })=>{
3646
- const states = props.State.value.split("-");
3647
- const commonProps = {
3648
- value: props["Label#4478:2"].value,
3649
- ...props.Notification.value === "True" && {
3650
- alert: true
3651
- },
3652
- ...states.includes("Disabled") && {
3653
- disabled: true
3654
- }
3655
- };
3656
- return createLocalSnippetElement$2("TabsTrigger", commonProps, props["Label#4478:2"].value);
3657
- });
3658
- const createTabsHandler = (ctx)=>{
3659
- const tabsHugItemHandler = createTabsHugItemHandler();
3660
- const tabsFillItemHandler = createTabsFillItemHandler();
3661
- return defineComponentHandler(metadata$3.key, (node)=>{
3662
- const { componentProperties: props, children } = node;
3663
- const mappedItems = children.map((child)=>{
3664
- if (child.type !== "INSTANCE") return null;
3665
- const componentKey = child.componentSetKey ? child.componentSetKey : child.componentKey;
3666
- if (componentKey === tabsHugItemHandler.key) return {
3667
- triggerLayout: "hug",
3668
- node: child
3669
- };
3670
- if (componentKey === tabsFillItemHandler.key) return {
3671
- triggerLayout: "fill",
3672
- node: child
3673
- };
3674
- return null;
3675
- });
3676
- const tabsItems = mappedItems.filter((item)=>item !== null);
3677
- const selectedTabsItem = tabsItems.find(({ node: { componentProperties } })=>componentProperties.State.value.split("-").includes("Selected"))?.node;
3678
- const tabTriggerList = createLocalSnippetElement$2("TabsList", undefined, tabsItems.map(({ triggerLayout, node })=>{
3679
- switch(triggerLayout){
3680
- case "hug":
3681
- return tabsHugItemHandler.transform(node);
3682
- case "fill":
3683
- return tabsFillItemHandler.transform(node);
3684
- }
3685
- }));
3686
- const tabContents = tabsItems.map(({ node })=>{
3687
- const value = node.componentProperties["Label#4478:2"].value;
3688
- return createLocalSnippetElement$2("TabsContent", {
3689
- value
3690
- }, "{/* TODO: 컨텐츠 추가 */}");
3691
- });
3692
- const commonProps = {
3693
- triggerLayout: camelCase(props.Layout.value),
3694
- size: handleSizeProp(props.Size.value),
3695
- ...selectedTabsItem && {
3696
- defaultValue: selectedTabsItem.componentProperties["Label#4478:2"].value
3697
- }
3698
- };
3699
- return createLocalSnippetElement$2("TabsRoot", commonProps, [
3700
- tabTriggerList,
3701
- ...tabContents
3702
- ]);
3703
- });
3704
- };
3705
-
3706
- const createTextButtonHandler = (ctx)=>defineComponentHandler(metadata$2.key, (node)=>{
3707
- const { componentProperties: props } = node;
3708
- const states = props.State.value.split("-");
3709
- const { prefixIcon, suffixIcon, children } = match(props.Layout.value).with("Icon First", ()=>({
3710
- prefixIcon: ctx.iconHandler.transform(props["Prefix Icon#7561:0"]),
3711
- suffixIcon: undefined,
3712
- children: props["Label#6148:0"].value
3713
- })).with("Icon Last", ()=>{
3714
- const suffixIconNode = findOne(node, (node)=>node.type === "INSTANCE" && node.name === "Suffix Icon");
3715
- return {
3716
- prefixIcon: undefined,
3717
- suffixIcon: suffixIconNode ? ctx.iconHandler.transform(suffixIconNode) : undefined,
3718
- children: props["Label#6148:0"].value
3719
- };
3720
- }).exhaustive();
3721
- const commonProps = {
3722
- tone: camelCase(props.Tone.value),
3723
- size: handleSizeProp(props.Size.value),
3724
- prefixIcon,
3725
- suffixIcon,
3726
- ...states.includes("Disabled") && {
3727
- disabled: true
3728
- }
3729
- };
3730
- return createSeedReactElement("TextButton", commonProps, children);
3596
+ return createLocalSnippetElement$2("Switch", commonProps);
3731
3597
  });
3732
3598
 
3733
3599
  const { createLocalSnippetElement: createLocalSnippetElement$1 } = createLocalSnippetHelper("text-field");
3734
- const createTextFieldHandler = (ctx)=>defineComponentHandler(metadata$1.key, ({ componentProperties: props })=>{
3600
+ const createTextFieldHandler = (ctx)=>defineComponentHandler(metadata$2.key, ({ componentProperties: props })=>{
3735
3601
  const { Size: { value: size }, State: { value: state }, Filled: { value: filled }, "Show Header#870:0": { value: showHeader }, "Label#14964:0": { value: label }, "Show Indicator#1259:0": { value: showIndicator }, "Indicator#15327:249": { value: indicator }, "Show Prefix#958:125": { value: showPrefix }, "Show Prefix Icon#1267:50": { value: showPrefixIcon }, "Prefix Icon#1267:25": prefixIcon, "Show Prefix Text#1267:0": { value: showPrefixText }, "Prefix Text#15327:101": { value: prefix }, "Placeholder#958:0": { value: placeholder }, "Filled Text#1304:0": { value: defaultValue }, "Show Suffix#958:100": { value: showSuffix }, "Show Suffix Icon#1267:75": { value: showSuffixIcon }, "Suffix Icon #1267:100": suffixIcon, "Show Suffix Text#1267:125": { value: showSuffixText }, "Suffix Text#15327:138": { value: suffix }, "Show Footer#958:25": { value: showFooter }, "Show Description#958:50": { value: showDescription }, "Description#12626:5": { value: description }, "Show Character Count#958:75": { value: showCharacterCount }, "Character Count#15327:64": { value: _characterCount }, "Max Character Count#15327:27": { value: maxCharacterCount } } = props;
3736
3602
  const states = state.split("-");
3737
3603
  const commonProps = {
@@ -3790,7 +3656,7 @@ const createTextFieldHandler = (ctx)=>defineComponentHandler(metadata$1.key, ({
3790
3656
  });
3791
3657
 
3792
3658
  const { createLocalSnippetElement } = createLocalSnippetHelper("toggle-button");
3793
- const createToggleButtonHandler = (ctx)=>defineComponentHandler(metadata.key, ({ componentProperties: props })=>{
3659
+ const createToggleButtonHandler = (ctx)=>defineComponentHandler(metadata$1.key, ({ componentProperties: props })=>{
3794
3660
  const states = props.State.value.split("-");
3795
3661
  const commonProps = {
3796
3662
  variant: camelCase(props.Variant.value),
@@ -3820,25 +3686,27 @@ function bindComponentHandler(unbound, deps) {
3820
3686
  return unbound(deps);
3821
3687
  }
3822
3688
  const unboundSeedComponentHandlers = [
3689
+ createActionButtonGhostHandler,
3823
3690
  createActionButtonHandler,
3824
- createActionChipHandler,
3825
- createActionSheetHandler,
3691
+ createAlertDialogHandler,
3826
3692
  createAppBarHandler,
3827
3693
  createAvatarHandler,
3828
3694
  createAvatarStackHandler,
3829
3695
  createBadgeHandler,
3696
+ createBottomSheetHandler,
3830
3697
  createCalloutHandler,
3831
3698
  createCheckboxHandler,
3832
- createChipTabsHandler,
3833
- createControlChipHandler,
3699
+ createChipHandler,
3700
+ createContextualFloatingButtonHandler,
3701
+ createDividerHandler,
3834
3702
  createErrorStateHandler,
3835
- createExtendedActionSheetHandler,
3836
- createExtendedFabHandler,
3837
- createFabHandler,
3703
+ createFloatingActionButtonHandler,
3838
3704
  createHelpBubbleHandler,
3839
3705
  createIdentityPlaceholderHandler,
3840
3706
  createInlineBannerHandler,
3841
3707
  createMannerTempBadgeHandler,
3708
+ createMannerTempHandler,
3709
+ createMenuSheetHandler,
3842
3710
  createMultilineTextFieldHandler,
3843
3711
  createProgressCircleHandler,
3844
3712
  createReactionButtonHandler,
@@ -3848,8 +3716,6 @@ const unboundSeedComponentHandlers = [
3848
3716
  createSkeletonHandler,
3849
3717
  createSnackbarHandler,
3850
3718
  createSwitchHandler,
3851
- createTabsHandler,
3852
- createTextButtonHandler,
3853
3719
  createTextFieldHandler,
3854
3720
  createToggleButtonHandler
3855
3721
  ];
@@ -6629,6 +6495,99 @@ const FIGMA_ICONS = {
6629
6495
  }
6630
6496
  };
6631
6497
 
6498
+ const FIGMA_FILL_STYLES = [
6499
+ {
6500
+ styleType: "FILL",
6501
+ key: "46186d7dd037e8e54983ee6677cf7915790d84cc",
6502
+ name: "gradient/fade/layer-floating/↑(to-top)",
6503
+ description: "스크롤이 가능하도록 그라디언트로 특정 영역을 덮는 요소로 사용해요.",
6504
+ remote: false
6505
+ },
6506
+ {
6507
+ styleType: "FILL",
6508
+ key: "b28d9c9adc816fdd4ecec3a0b3e25d8aec802b6a",
6509
+ name: "gradient/fade/layer-floating/↓(to-bottom)",
6510
+ description: "스크롤이 가능하도록 그라디언트로 특정 영역을 덮는 요소로 사용해요.",
6511
+ remote: false
6512
+ },
6513
+ {
6514
+ styleType: "FILL",
6515
+ key: "063c0dc05b438ac36499492e783520a722782d74",
6516
+ name: "gradient/fade/layer-floating/→(to-right)",
6517
+ description: "스크롤이 가능하도록 그라디언트로 특정 영역을 덮는 요소로 사용해요.",
6518
+ remote: false
6519
+ },
6520
+ {
6521
+ styleType: "FILL",
6522
+ key: "c1cee6b89c357c6a12d020654d73a4490cafdf51",
6523
+ name: "gradient/fade/layer-default/←(to-left)",
6524
+ description: "스크롤이 가능하도록 그라디언트로 특정 영역을 덮는 요소로 사용해요.",
6525
+ remote: false
6526
+ },
6527
+ {
6528
+ styleType: "FILL",
6529
+ key: "826457503b7ee3d472eab91581b1fcd499c47c00",
6530
+ name: "gradient/fade/layer-default/↑(to-top)",
6531
+ description: "스크롤이 가능하도록 그라디언트로 특정 영역을 덮는 요소로 사용해요.",
6532
+ remote: false
6533
+ },
6534
+ {
6535
+ styleType: "FILL",
6536
+ key: "df22450a8f8e9c323baf40d8981920d1b6376cbf",
6537
+ name: "gradient/fade/layer-floating/←(to-left)",
6538
+ description: "스크롤이 가능하도록 그라디언트로 특정 영역을 덮는 요소로 사용해요.",
6539
+ remote: false
6540
+ },
6541
+ {
6542
+ styleType: "FILL",
6543
+ key: "ff436e73cf9477a1006e6f8a1f9d2c9dbe0e5edd",
6544
+ name: "gradient/fade/layer-default/→(to-right)",
6545
+ description: "스크롤이 가능하도록 그라디언트로 특정 영역을 덮는 요소로 사용해요.",
6546
+ remote: false
6547
+ },
6548
+ {
6549
+ styleType: "FILL",
6550
+ key: "353baa82e0440385eb121cd0ae98d2fcb1a70b18",
6551
+ name: "gradient/glow/magic",
6552
+ description: "반짝이는 것처럼 느껴지는 배경에 쓰이는 ai 컬러입니다.",
6553
+ remote: false
6554
+ },
6555
+ {
6556
+ styleType: "FILL",
6557
+ key: "f83f54c1840aaf26742629e2c696c363b8df0a82",
6558
+ name: "gradient/glow/magic-pressed",
6559
+ description: "반짝이는 것처럼 느껴지는 배경에 쓰이는 ai 컬러의 pressed컬러입니다.",
6560
+ remote: false
6561
+ },
6562
+ {
6563
+ styleType: "FILL",
6564
+ key: "408cb970f1de672217f452152b0398a4bb4f4e12",
6565
+ name: "gradient/fade/layer-default/↓(to-bottom)",
6566
+ description: "스크롤이 가능하도록 그라디언트로 특정 영역을 덮는 요소로 사용해요.",
6567
+ remote: false
6568
+ },
6569
+ {
6570
+ styleType: "FILL",
6571
+ key: "71971dde923a11c615296a16f8172c0671d5a3a6",
6572
+ name: "gradient/shimmer/neutral",
6573
+ description: "Skeleton shimmer",
6574
+ remote: false
6575
+ },
6576
+ {
6577
+ styleType: "FILL",
6578
+ key: "2ed61bff1a187f39389698cf63b74d6997aed609",
6579
+ name: "gradient/shimmer/magic",
6580
+ description: "Skeleton AI shimmer",
6581
+ remote: false
6582
+ },
6583
+ {
6584
+ styleType: "FILL",
6585
+ key: "1101a7c6a505d97904c3a0ce6a9ee17fe15de879",
6586
+ name: "gradient/highlight/magic",
6587
+ description: "아이콘 및 shape 영역에서 AI 기능을 표현할 때 사용하는 컬러입니다.",
6588
+ remote: false
6589
+ }
6590
+ ];
6632
6591
  const FIGMA_TEXT_STYLES = [
6633
6592
  {
6634
6593
  styleType: "TEXT",
@@ -13698,7 +13657,10 @@ function createVariableService({ variableRepository, inferCompareFunction }) {
13698
13657
  };
13699
13658
  }
13700
13659
 
13701
- const styleRepository = createStaticStyleRepository(FIGMA_TEXT_STYLES);
13660
+ const styleRepository = createStaticStyleRepository([
13661
+ ...FIGMA_TEXT_STYLES,
13662
+ ...FIGMA_FILL_STYLES
13663
+ ]);
13702
13664
  const variableRepository = createStaticVariableRepository({
13703
13665
  variables: FIGMA_VARIABLES,
13704
13666
  variableCollections: FIGMA_VARIABLE_COLLECTIONS
@@ -13783,9 +13745,36 @@ function toCssRgba(color) {
13783
13745
  }
13784
13746
 
13785
13747
  const defaultVariableNameFormatter = ({ slug })=>slug.filter((s)=>!(s === "dimension" || s === "radius" || s === "font-size" || s === "font-weight" || s === "line-height")).map((s)=>s.replaceAll(",", "_")).map(camelCasePreserveUnderscoreBetweenNumbers).join(".");
13786
- const defaultStyleNameFormatter = ({ slug })=>camelCase(slug[slug.length - 1], {
13748
+ const defaultTextStyleNameFormatter = ({ slug })=>{
13749
+ return camelCase(slug[slug.length - 1], {
13787
13750
  mergeAmbiguousCharacters: true
13788
13751
  });
13752
+ };
13753
+ const defaultFillStyleResolver = ({ slug })=>{
13754
+ const [, ...rest] = slug;
13755
+ if (rest[0] === "fade") {
13756
+ // ["fade", "layer-default", "↓(to-bottom)"]
13757
+ const last = rest[rest.length - 1];
13758
+ const direction = (()=>{
13759
+ if (last.startsWith("↓")) return "to bottom";
13760
+ if (last.startsWith("↑")) return "to top";
13761
+ if (last.startsWith("→")) return "to right";
13762
+ if (last.startsWith("←")) return "to left";
13763
+ return "unknown";
13764
+ })();
13765
+ return {
13766
+ value: camelCase(rest.slice(0, -1).join("-"), {
13767
+ mergeAmbiguousCharacters: true
13768
+ }),
13769
+ direction
13770
+ };
13771
+ }
13772
+ return {
13773
+ value: camelCase(rest.join("-"), {
13774
+ mergeAmbiguousCharacters: true
13775
+ })
13776
+ };
13777
+ };
13789
13778
  const defaultRawValueFormatters = {
13790
13779
  color: (value)=>toCssRgba(value),
13791
13780
  dimension: (value)=>toCssPixel(value),
@@ -13802,7 +13791,8 @@ function createPipeline(options = {}) {
13802
13791
  variableService,
13803
13792
  variableNameFormatter: defaultVariableNameFormatter,
13804
13793
  styleService,
13805
- styleNameFormatter: defaultStyleNameFormatter,
13794
+ textStyleNameFormatter: defaultTextStyleNameFormatter,
13795
+ fillStyleResolver: defaultFillStyleResolver,
13806
13796
  rawValueFormatters: defaultRawValueFormatters,
13807
13797
  shouldInferVariableName
13808
13798
  });