@seed-design/figma 0.1.7 → 0.1.9

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 (166) hide show
  1. package/lib/codegen/index.cjs +773 -660
  2. package/lib/codegen/index.d.ts +725 -625
  3. package/lib/codegen/index.d.ts.map +1 -1
  4. package/lib/codegen/index.js +773 -660
  5. package/lib/codegen/targets/react/index.cjs +1242 -1226
  6. package/lib/codegen/targets/react/index.d.ts +22 -11
  7. package/lib/codegen/targets/react/index.d.ts.map +1 -1
  8. package/lib/codegen/targets/react/index.js +1242 -1226
  9. package/lib/index.cjs +899 -671
  10. package/lib/index.d.ts +3 -1
  11. package/lib/index.d.ts.map +1 -1
  12. package/lib/index.js +899 -671
  13. package/package.json +3 -3
  14. package/src/codegen/component-properties.ts +289 -144
  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 +88 -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 +7 -4
  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 +11 -8
  41. package/src/codegen/targets/react/component/handlers/snackbar.ts +2 -2
  42. package/src/codegen/targets/react/component/handlers/switch.ts +2 -7
  43. package/src/codegen/targets/react/component/handlers/tabs.ts +8 -125
  44. package/src/codegen/targets/react/component/index.ts +22 -19
  45. package/src/codegen/targets/react/instance.ts +1 -1
  46. package/src/codegen/targets/react/pipeline.ts +4 -2
  47. package/src/codegen/targets/react/props.ts +16 -9
  48. package/src/codegen/targets/react/value-resolver.ts +38 -3
  49. package/src/entities/data/__generated__/component-sets/action-button.d.ts +5 -5
  50. package/src/entities/data/__generated__/component-sets/action-button.mjs +5 -5
  51. package/src/entities/data/__generated__/component-sets/alert-dialog.d.ts +26 -0
  52. package/src/entities/data/__generated__/component-sets/alert-dialog.mjs +26 -0
  53. package/src/entities/data/__generated__/component-sets/avatar-stack.d.ts +5 -18
  54. package/src/entities/data/__generated__/component-sets/avatar-stack.mjs +5 -18
  55. package/src/entities/data/__generated__/component-sets/avatar.d.ts +11 -5
  56. package/src/entities/data/__generated__/component-sets/avatar.mjs +11 -5
  57. package/src/entities/data/__generated__/component-sets/badge.d.ts +0 -7
  58. package/src/entities/data/__generated__/component-sets/badge.mjs +0 -7
  59. package/src/entities/data/__generated__/component-sets/bottom-navigation-global.d.ts +3 -0
  60. package/src/entities/data/__generated__/component-sets/bottom-navigation-global.mjs +3 -0
  61. package/src/entities/data/__generated__/component-sets/bottom-navigation-kr.d.ts +3 -0
  62. package/src/entities/data/__generated__/component-sets/bottom-navigation-kr.mjs +3 -0
  63. package/src/entities/data/__generated__/component-sets/bottom-sheet.d.ts +53 -4
  64. package/src/entities/data/__generated__/component-sets/bottom-sheet.mjs +53 -4
  65. package/src/entities/data/__generated__/component-sets/callout.d.ts +13 -22
  66. package/src/entities/data/__generated__/component-sets/callout.mjs +13 -22
  67. package/src/entities/data/__generated__/component-sets/checkbox.d.ts +3 -3
  68. package/src/entities/data/__generated__/component-sets/checkbox.mjs +3 -3
  69. package/src/entities/data/__generated__/component-sets/checkmark.d.ts +34 -0
  70. package/src/entities/data/__generated__/component-sets/checkmark.mjs +34 -0
  71. package/src/entities/data/__generated__/component-sets/chip.d.ts +90 -0
  72. package/src/entities/data/__generated__/component-sets/chip.mjs +90 -0
  73. package/src/entities/data/__generated__/component-sets/chlid.d.ts +14 -0
  74. package/src/entities/data/__generated__/component-sets/chlid.mjs +14 -0
  75. package/src/entities/data/__generated__/component-sets/{extended-floating-action-button.d.ts → contextual-floating-button.d.ts} +12 -10
  76. package/src/entities/data/__generated__/component-sets/{extended-floating-action-button.mjs → contextual-floating-button.mjs} +12 -10
  77. package/src/entities/data/__generated__/component-sets/floating-action-button.d.ts +4 -8
  78. package/src/entities/data/__generated__/component-sets/floating-action-button.mjs +4 -8
  79. package/src/entities/data/__generated__/component-sets/help-bubble.d.ts +3 -10
  80. package/src/entities/data/__generated__/component-sets/help-bubble.mjs +3 -10
  81. package/src/entities/data/__generated__/component-sets/index.d.ts +13 -13
  82. package/src/entities/data/__generated__/component-sets/index.mjs +13 -13
  83. package/src/entities/data/__generated__/component-sets/inline-banner.d.ts +3 -3
  84. package/src/entities/data/__generated__/component-sets/inline-banner.mjs +3 -3
  85. package/src/entities/data/__generated__/component-sets/main-tab-navigation-global.d.ts +2 -2
  86. package/src/entities/data/__generated__/component-sets/main-tab-navigation-global.mjs +2 -2
  87. package/src/entities/data/__generated__/component-sets/manner-temp-badge.d.ts +2 -2
  88. package/src/entities/data/__generated__/component-sets/manner-temp-badge.mjs +2 -2
  89. package/src/entities/data/__generated__/component-sets/manner-temp.d.ts +2 -2
  90. package/src/entities/data/__generated__/component-sets/manner-temp.mjs +2 -2
  91. package/src/entities/data/__generated__/component-sets/{extended-action-sheet.d.ts → menu-sheet.d.ts} +17 -13
  92. package/src/entities/data/__generated__/component-sets/{extended-action-sheet.mjs → menu-sheet.mjs} +17 -13
  93. package/src/entities/data/__generated__/component-sets/multiline-text-field.d.ts +18 -18
  94. package/src/entities/data/__generated__/component-sets/multiline-text-field.mjs +18 -18
  95. package/src/entities/data/__generated__/component-sets/progress-circle.d.ts +2 -1
  96. package/src/entities/data/__generated__/component-sets/progress-circle.mjs +2 -1
  97. package/src/entities/data/__generated__/component-sets/radio-mark.d.ts +34 -0
  98. package/src/entities/data/__generated__/component-sets/radio-mark.mjs +34 -0
  99. package/src/entities/data/__generated__/component-sets/radio.d.ts +2 -2
  100. package/src/entities/data/__generated__/component-sets/radio.mjs +2 -2
  101. package/src/entities/data/__generated__/component-sets/reaction-button.d.ts +6 -6
  102. package/src/entities/data/__generated__/component-sets/reaction-button.mjs +6 -6
  103. package/src/entities/data/__generated__/component-sets/resizable-child.d.ts +18 -0
  104. package/src/entities/data/__generated__/component-sets/resizable-child.mjs +18 -0
  105. package/src/entities/data/__generated__/component-sets/resizable-icon.d.ts +18 -0
  106. package/src/entities/data/__generated__/component-sets/resizable-icon.mjs +18 -0
  107. package/src/entities/data/__generated__/component-sets/select-box.d.ts +4 -4
  108. package/src/entities/data/__generated__/component-sets/select-box.mjs +4 -4
  109. package/src/entities/data/__generated__/component-sets/skeleton.d.ts +7 -0
  110. package/src/entities/data/__generated__/component-sets/skeleton.mjs +7 -0
  111. package/src/entities/data/__generated__/component-sets/snackbar.d.ts +4 -4
  112. package/src/entities/data/__generated__/component-sets/snackbar.mjs +4 -4
  113. package/src/entities/data/__generated__/component-sets/switch.d.ts +15 -6
  114. package/src/entities/data/__generated__/component-sets/switch.mjs +15 -6
  115. package/src/entities/data/__generated__/component-sets/tabs.d.ts +13 -0
  116. package/src/entities/data/__generated__/component-sets/tabs.mjs +13 -0
  117. package/src/entities/data/__generated__/component-sets/template-button-group.d.ts +9 -33
  118. package/src/entities/data/__generated__/component-sets/template-button-group.mjs +9 -33
  119. package/src/entities/data/__generated__/component-sets/template-chip-group.d.ts +15 -12
  120. package/src/entities/data/__generated__/component-sets/template-chip-group.mjs +15 -12
  121. package/src/entities/data/__generated__/component-sets/template-completion.d.ts +28 -0
  122. package/src/entities/data/__generated__/component-sets/template-completion.mjs +28 -0
  123. package/src/entities/data/__generated__/component-sets/{error-state.d.ts → template-error-state.d.ts} +5 -5
  124. package/src/entities/data/__generated__/component-sets/{error-state.mjs → template-error-state.mjs} +5 -5
  125. package/src/entities/data/__generated__/component-sets/template-top-navigation.d.ts +9 -7
  126. package/src/entities/data/__generated__/component-sets/template-top-navigation.mjs +9 -7
  127. package/src/entities/data/__generated__/component-sets/text-field.d.ts +35 -36
  128. package/src/entities/data/__generated__/component-sets/text-field.mjs +35 -36
  129. package/src/entities/data/__generated__/component-sets/toggle-button.d.ts +7 -7
  130. package/src/entities/data/__generated__/component-sets/toggle-button.mjs +7 -7
  131. package/src/entities/data/__generated__/component-sets/top-navigation.d.ts +42 -0
  132. package/src/entities/data/__generated__/component-sets/top-navigation.mjs +42 -0
  133. package/src/entities/data/styles.ts +94 -0
  134. package/src/entities/index.ts +5 -2
  135. package/src/normalizer/from-plugin.ts +104 -44
  136. package/src/normalizer/types.ts +3 -1
  137. package/src/utils/figma-gradient.ts +72 -0
  138. package/src/utils/figma-node.ts +4 -3
  139. package/src/codegen/targets/react/component/handlers/action-chip.ts +0 -72
  140. package/src/codegen/targets/react/component/handlers/action-sheet.ts +0 -82
  141. package/src/codegen/targets/react/component/handlers/chip-tabs.ts +0 -57
  142. package/src/codegen/targets/react/component/handlers/control-chip.ts +0 -81
  143. package/src/codegen/targets/react/component/handlers/extended-action-sheet.ts +0 -98
  144. package/src/codegen/targets/react/component/handlers/extended-fab.ts +0 -25
  145. package/src/codegen/targets/react/component/handlers/fab.ts +0 -22
  146. package/src/codegen/targets/react/component/handlers/text-button.ts +0 -49
  147. package/src/entities/data/__generated__/component-sets/action-chip.d.ts +0 -57
  148. package/src/entities/data/__generated__/component-sets/action-chip.mjs +0 -57
  149. package/src/entities/data/__generated__/component-sets/action-sheet.d.ts +0 -40
  150. package/src/entities/data/__generated__/component-sets/action-sheet.mjs +0 -40
  151. package/src/entities/data/__generated__/component-sets/chip-tablist.d.ts +0 -24
  152. package/src/entities/data/__generated__/component-sets/chip-tablist.mjs +0 -24
  153. package/src/entities/data/__generated__/component-sets/control-chip.d.ts +0 -60
  154. package/src/entities/data/__generated__/component-sets/control-chip.mjs +0 -60
  155. package/src/entities/data/__generated__/component-sets/identity-placeholder.d.ts +0 -13
  156. package/src/entities/data/__generated__/component-sets/identity-placeholder.mjs +0 -13
  157. package/src/entities/data/__generated__/component-sets/manner-temp-bar.d.ts +0 -23
  158. package/src/entities/data/__generated__/component-sets/manner-temp-bar.mjs +0 -23
  159. package/src/entities/data/__generated__/component-sets/standard-navigation.d.ts +0 -23
  160. package/src/entities/data/__generated__/component-sets/standard-navigation.mjs +0 -23
  161. package/src/entities/data/__generated__/component-sets/tablist.d.ts +0 -29
  162. package/src/entities/data/__generated__/component-sets/tablist.mjs +0 -29
  163. package/src/entities/data/__generated__/component-sets/template-bottom-fixed-bar.d.ts +0 -42
  164. package/src/entities/data/__generated__/component-sets/template-bottom-fixed-bar.mjs +0 -42
  165. package/src/entities/data/__generated__/component-sets/text-button.d.ts +0 -45
  166. 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,
@@ -740,7 +745,7 @@ function createContainerLayoutPropsConverter(valueResolver) {
740
745
  function createSelfLayoutPropsConverter(valueResolver) {
741
746
  return createPropsConverter({
742
747
  handlers: {
743
- grow: ({ layoutGrow })=>layoutGrow === 1 ? true : layoutGrow,
748
+ flexGrow: ({ layoutGrow })=>layoutGrow === 1 ? true : layoutGrow,
744
749
  alignSelf: ({ layoutAlign })=>tsPattern.match(layoutAlign).with("STRETCH", ()=>"stretch").with("INHERIT", ()=>undefined).with("MIN", ()=>undefined) // Deprecated in Figma
745
750
  .with("CENTER", ()=>undefined) // Deprecated in Figma
746
751
  .with("MAX", ()=>undefined) // Deprecated in Figma
@@ -753,7 +758,7 @@ function createSelfLayoutPropsConverter(valueResolver) {
753
758
  maxWidth: (node)=>node.layoutSizingHorizontal === "HUG" ? valueResolver.getFormattedValue.maxWidth(node) : undefined
754
759
  },
755
760
  defaults: {
756
- grow: 0
761
+ flexGrow: 0
757
762
  }
758
763
  });
759
764
  }
@@ -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
  }
@@ -852,7 +865,7 @@ function createVectorChildrenFillPropsConverter(valueResolver) {
852
865
  function createStrokePropsConverter(valueResolver) {
853
866
  return definePropsConverter((node)=>{
854
867
  const borderColor = valueResolver.getFormattedValue.stroke(node);
855
- const borderWidth = borderColor ? node.strokeWeight : undefined;
868
+ const borderWidth = borderColor && node.strokeWeight ? `${node.strokeWeight}` : undefined;
856
869
  return {
857
870
  borderColor,
858
871
  borderWidth
@@ -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,52 @@ 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
+ {
1633
+ "type": "COMPONENT_SET",
1634
+ "key": "19923052d4152393ecdc6e2f5853ea0359849127"
1635
+ }
1636
+ ]
1639
1637
  },
1640
- "Size": {
1638
+ "Has Suffix#32538:181": {
1639
+ "type": "BOOLEAN"
1640
+ },
1641
+ "Variant": {
1641
1642
  "type": "VARIANT",
1642
1643
  "variantOptions": [
1643
- "Medium",
1644
- "Small"
1644
+ "Solid",
1645
+ "Outline Strong",
1646
+ "Outline Weak"
1645
1647
  ]
1646
1648
  },
1647
- "Layout": {
1649
+ "Size": {
1648
1650
  "type": "VARIANT",
1649
1651
  "variantOptions": [
1650
- "Text Only",
1651
- "Icon First",
1652
- "Icon Last",
1653
- "Icon Both",
1654
- "Icon Only"
1652
+ "Large",
1653
+ "Medium",
1654
+ "Small"
1655
1655
  ]
1656
1656
  },
1657
1657
  "State": {
@@ -1659,161 +1659,121 @@ const metadata$t = {
1659
1659
  "variantOptions": [
1660
1660
  "Enabled",
1661
1661
  "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"
1662
+ "Disabled"
1680
1663
  ]
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
1664
  },
1692
- "Title#16237:0": {
1693
- "type": "TEXT"
1694
- },
1695
- "Description#16237:5": {
1696
- "type": "TEXT"
1697
- },
1698
- "Show Buttons#9080:5": {
1699
- "type": "BOOLEAN"
1700
- },
1701
- "Variant": {
1665
+ "Selected": {
1702
1666
  "type": "VARIANT",
1703
1667
  "variantOptions": [
1704
- "Default",
1705
- "Basement"
1668
+ "False",
1669
+ "True"
1706
1670
  ]
1707
1671
  },
1708
- "Layout": {
1672
+ "Prefix Type": {
1709
1673
  "type": "VARIANT",
1710
1674
  "variantOptions": [
1711
- "With Title",
1712
- "Description Only"
1675
+ "None",
1676
+ "Icon",
1677
+ "Avatar",
1678
+ "Image"
1713
1679
  ]
1714
1680
  }
1715
1681
  }
1716
1682
  };
1717
1683
 
1718
- const metadata$q = {
1719
- "name": "🟢 Extended Action Sheet",
1720
- "key": "cd4cf8a850bf3de87b79080b36b421a649bf3fcb",
1684
+ const metadata$s = {
1685
+ "name": "🟢 Chlid",
1686
+ "key": "aa9ffdd60fbfdea42f0d11162cd64f4b4389ddcc",
1721
1687
  "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
1688
  "Type": {
1735
1689
  "type": "VARIANT",
1736
1690
  "variantOptions": [
1737
- "Normal",
1738
- "Destructive"
1739
- ]
1740
- },
1741
- "Action Group Count": {
1742
- "type": "VARIANT",
1743
- "variantOptions": [
1744
- "1",
1745
- "2"
1691
+ "Child",
1692
+ "Text",
1693
+ "Slot"
1746
1694
  ]
1747
1695
  }
1748
1696
  }
1749
1697
  };
1750
1698
 
1751
- const metadata$p = {
1752
- "name": "🟢 Extended Floating Action Button",
1699
+ const metadata$r = {
1700
+ "name": "🟢 Contextual Floating Button",
1753
1701
  "key": "032f3fddaad0aa3fa5a7f680768c1f5d02fb463f",
1754
1702
  "componentPropertyDefinitions": {
1755
- "Label#28936:0": {
1756
- "type": "TEXT"
1757
- },
1758
1703
  "Icon#28796:0": {
1759
1704
  "type": "INSTANCE_SWAP",
1760
1705
  "preferredValues": []
1761
1706
  },
1762
- "Size": {
1707
+ "Label#28936:0": {
1708
+ "type": "TEXT"
1709
+ },
1710
+ "Layout": {
1763
1711
  "type": "VARIANT",
1764
1712
  "variantOptions": [
1765
- "Small",
1766
- "Medium"
1713
+ "Icon First",
1714
+ "Icon Only"
1767
1715
  ]
1768
1716
  },
1769
1717
  "Variant": {
1770
1718
  "type": "VARIANT",
1771
1719
  "variantOptions": [
1772
- "Neutral Solid",
1773
- "Layer Floating"
1720
+ "Solid",
1721
+ "Layer"
1774
1722
  ]
1775
1723
  },
1776
1724
  "State": {
1777
1725
  "type": "VARIANT",
1778
1726
  "variantOptions": [
1779
1727
  "Enabled",
1780
- "Pressed"
1728
+ "Pressed",
1729
+ "Loading",
1730
+ "Disabled"
1781
1731
  ]
1782
1732
  }
1783
1733
  }
1784
1734
  };
1785
1735
 
1786
- const metadata$o = {
1736
+ const metadata$q = {
1737
+ "name": "🟢 Divider",
1738
+ "key": "848e953725f757ea1a79e1fecc0b608a035032d3",
1739
+ "componentPropertyDefinitions": {
1740
+ "Tone": {
1741
+ "type": "VARIANT",
1742
+ "variantOptions": [
1743
+ "Neutral",
1744
+ "Neutral Muted"
1745
+ ]
1746
+ }
1747
+ }
1748
+ };
1749
+
1750
+ const metadata$p = {
1787
1751
  "name": "🟢 Floating Action Button",
1788
- "key": "1974b94703032585bb9e20bd54743e01094b965c",
1752
+ "key": "65f9e7eede627b893fb8ff94ed9a7d0db900c464",
1789
1753
  "componentPropertyDefinitions": {
1790
- "Icon#28796:0": {
1791
- "type": "INSTANCE_SWAP",
1792
- "preferredValues": []
1793
- },
1794
- "State": {
1754
+ "Type": {
1795
1755
  "type": "VARIANT",
1796
1756
  "variantOptions": [
1797
- "Enabled",
1798
- "Pressed"
1757
+ "Button",
1758
+ "Menu"
1799
1759
  ]
1800
1760
  }
1801
1761
  }
1802
1762
  };
1803
1763
 
1804
- const metadata$n = {
1764
+ const metadata$o = {
1805
1765
  "name": "🟢 Help Bubble",
1806
1766
  "key": "804b327c091278a40d5891939eaed90bb2889659",
1807
1767
  "componentPropertyDefinitions": {
1768
+ "Show Description#62499:0": {
1769
+ "type": "BOOLEAN"
1770
+ },
1808
1771
  "Title#62535:0": {
1809
1772
  "type": "TEXT"
1810
1773
  },
1811
1774
  "Description#62535:98": {
1812
1775
  "type": "TEXT"
1813
1776
  },
1814
- "Show Description#62499:0": {
1815
- "type": "BOOLEAN"
1816
- },
1817
1777
  "Placement": {
1818
1778
  "type": "VARIANT",
1819
1779
  "variantOptions": [
@@ -1830,41 +1790,20 @@ const metadata$n = {
1830
1790
  "Top-Center",
1831
1791
  "Top-Right"
1832
1792
  ]
1833
- },
1834
- "Show Close Button": {
1835
- "type": "VARIANT",
1836
- "variantOptions": [
1837
- "True",
1838
- "False"
1839
- ]
1840
- }
1841
- }
1842
- };
1843
-
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
1793
  }
1855
1794
  }
1856
1795
  };
1857
1796
 
1858
- const metadata$l = {
1797
+ const metadata$n = {
1859
1798
  "name": "🟢 Inline Banner",
1860
1799
  "key": "ce587d0f21754af05240cb32a4880227cb0ea1e1",
1861
1800
  "componentPropertyDefinitions": {
1862
- "Show Icon#11840:27": {
1863
- "type": "BOOLEAN"
1864
- },
1865
1801
  "Link Label#1547:81": {
1866
1802
  "type": "TEXT"
1867
1803
  },
1804
+ "Show Icon#11840:27": {
1805
+ "type": "BOOLEAN"
1806
+ },
1868
1807
  "Interaction": {
1869
1808
  "type": "VARIANT",
1870
1809
  "variantOptions": [
@@ -1896,14 +1835,14 @@ const metadata$l = {
1896
1835
  }
1897
1836
  };
1898
1837
 
1899
- const metadata$k = {
1838
+ const metadata$m = {
1900
1839
  "name": "🟢 Main Tab Navigation / Global",
1901
1840
  "key": "a694a1da14a5c1d7d5c66bc78218c0c61fb388ab",
1902
1841
  "componentPropertyDefinitions": {
1903
- "Button Label#6409:18": {
1842
+ "Title#6406:6": {
1904
1843
  "type": "TEXT"
1905
1844
  },
1906
- "Title#6406:6": {
1845
+ "Button Label#6409:18": {
1907
1846
  "type": "TEXT"
1908
1847
  },
1909
1848
  "Title Type": {
@@ -1923,7 +1862,7 @@ const metadata$k = {
1923
1862
  }
1924
1863
  };
1925
1864
 
1926
- const metadata$j = {
1865
+ const metadata$l = {
1927
1866
  "name": "🟢 Main Tab Navigation / KR",
1928
1867
  "key": "41d3601e6b4c632a56cdc8fad485a76c026fdd8e",
1929
1868
  "componentPropertyDefinitions": {
@@ -1947,39 +1886,15 @@ const metadata$j = {
1947
1886
  }
1948
1887
  };
1949
1888
 
1950
- const metadata$i = {
1951
- "name": "🟢 Manner Temp",
1952
- "key": "030dc68a26c24c37090c8b95ae21043855b5d589",
1953
- "componentPropertyDefinitions": {
1954
- "State": {
1955
- "type": "VARIANT",
1956
- "variantOptions": [
1957
- "L1 (~29.9)",
1958
- "L2 (30.0~36.2)",
1959
- "L3 (36.3~37.5)",
1960
- "L4 (37.6~41.9)",
1961
- "L5 (42~51.9)",
1962
- "L6 (52~)"
1963
- ]
1964
- }
1965
- }
1966
- };
1967
-
1968
- const metadata$h = {
1969
- "name": "🟢 Manner Temp (Bar)",
1970
- "key": "49ca92c450fb5d450be00f69fae709dbb8edc494",
1971
- "componentPropertyDefinitions": {
1972
- "Size": {
1973
- "type": "VARIANT",
1974
- "variantOptions": [
1975
- "Medium"
1976
- ]
1977
- },
1978
- "State": {
1889
+ const metadata$k = {
1890
+ "name": "🟢 Manner Temp",
1891
+ "key": "37c0a35f73a730fdfba7929cea91a7590fc93733",
1892
+ "componentPropertyDefinitions": {
1893
+ "Level": {
1979
1894
  "type": "VARIANT",
1980
1895
  "variantOptions": [
1981
- "L1 (29.9 이하)",
1982
- "L2 (29.9~36.2)",
1896
+ "L1 (~29.9)",
1897
+ "L2 (30.0~36.2)",
1983
1898
  "L3 (36.3~37.5)",
1984
1899
  "L4 (37.6~41.9)",
1985
1900
  "L5 (42~51.9)",
@@ -1989,11 +1904,11 @@ const metadata$h = {
1989
1904
  }
1990
1905
  };
1991
1906
 
1992
- const metadata$g = {
1907
+ const metadata$j = {
1993
1908
  "name": "🟢 Manner Temp Badge",
1994
- "key": "ac5331cec7a2c75b671df5b85ef247dfd820dd2f",
1909
+ "key": "3ef9a84d4d80046ff9a581136bd56269554a6e00",
1995
1910
  "componentPropertyDefinitions": {
1996
- "State": {
1911
+ "Level": {
1997
1912
  "type": "VARIANT",
1998
1913
  "variantOptions": [
1999
1914
  "L1 (~29.9)",
@@ -2007,45 +1922,82 @@ const metadata$g = {
2007
1922
  }
2008
1923
  };
2009
1924
 
2010
- const metadata$f = {
2011
- "name": "🟢 Multiline Text Field",
2012
- "key": "88b2399c930c85f9ce2972163a078bc684b84bbe",
1925
+ const metadata$i = {
1926
+ "name": "🟢 Menu Sheet",
1927
+ "key": "cd4cf8a850bf3de87b79080b36b421a649bf3fcb",
2013
1928
  "componentPropertyDefinitions": {
2014
- "Indicator#15327:286": {
1929
+ "Title Text#14599:0": {
2015
1930
  "type": "TEXT"
2016
1931
  },
2017
- "Character Count#15327:360": {
2018
- "type": "TEXT"
1932
+ "Show Header#17043:12": {
1933
+ "type": "BOOLEAN"
2019
1934
  },
2020
- "Max Character Count#15327:175": {
1935
+ "Description Text#21827:0": {
2021
1936
  "type": "TEXT"
2022
1937
  },
2023
- "Label#15327:323": {
2024
- "type": "TEXT"
1938
+ "Show Safe Area#25531:15": {
1939
+ "type": "BOOLEAN"
2025
1940
  },
2026
- "Filled Text#1304:0": {
2027
- "type": "TEXT"
1941
+ "Show Description#32984:0": {
1942
+ "type": "BOOLEAN"
2028
1943
  },
2029
- "Show Character count#958:75": {
1944
+ "Menu Group Count": {
1945
+ "type": "VARIANT",
1946
+ "variantOptions": [
1947
+ "2",
1948
+ "3",
1949
+ "1"
1950
+ ]
1951
+ },
1952
+ "Layout": {
1953
+ "type": "VARIANT",
1954
+ "variantOptions": [
1955
+ "Text Only",
1956
+ "Text with Icon"
1957
+ ]
1958
+ }
1959
+ }
1960
+ };
1961
+
1962
+ const metadata$h = {
1963
+ "name": "🟢 Multiline Text Field",
1964
+ "key": "88b2399c930c85f9ce2972163a078bc684b84bbe",
1965
+ "componentPropertyDefinitions": {
1966
+ "Show Header#870:0": {
2030
1967
  "type": "BOOLEAN"
2031
1968
  },
1969
+ "Placeholder#958:0": {
1970
+ "type": "TEXT"
1971
+ },
2032
1972
  "Show Footer#958:25": {
2033
1973
  "type": "BOOLEAN"
2034
1974
  },
2035
1975
  "Show Description#958:50": {
2036
1976
  "type": "BOOLEAN"
2037
1977
  },
2038
- "Description#15327:212": {
2039
- "type": "TEXT"
1978
+ "Show Character count#958:75": {
1979
+ "type": "BOOLEAN"
2040
1980
  },
2041
1981
  "Show Indicator#1259:0": {
2042
1982
  "type": "BOOLEAN"
2043
1983
  },
2044
- "Placeholder#958:0": {
1984
+ "Filled Text#1304:0": {
2045
1985
  "type": "TEXT"
2046
1986
  },
2047
- "Show Header#870:0": {
2048
- "type": "BOOLEAN"
1987
+ "Max Character Count#15327:175": {
1988
+ "type": "TEXT"
1989
+ },
1990
+ "Description#15327:212": {
1991
+ "type": "TEXT"
1992
+ },
1993
+ "Indicator#15327:286": {
1994
+ "type": "TEXT"
1995
+ },
1996
+ "Label#15327:323": {
1997
+ "type": "TEXT"
1998
+ },
1999
+ "Character Count#15327:360": {
2000
+ "type": "TEXT"
2049
2001
  },
2050
2002
  "Size": {
2051
2003
  "type": "VARIANT",
@@ -2076,7 +2028,7 @@ const metadata$f = {
2076
2028
  }
2077
2029
  };
2078
2030
 
2079
- const metadata$e = {
2031
+ const metadata$g = {
2080
2032
  "name": "🟢 Progress Circle",
2081
2033
  "key": "6e6779a372cab2485a0e25529bc4dbc9932a7346",
2082
2034
  "componentPropertyDefinitions": {
@@ -2092,7 +2044,8 @@ const metadata$e = {
2092
2044
  "variantOptions": [
2093
2045
  "Neutral",
2094
2046
  "Brand",
2095
- "Static White"
2047
+ "Static White",
2048
+ "Custom(inherit)"
2096
2049
  ]
2097
2050
  },
2098
2051
  "Value": {
@@ -2108,7 +2061,7 @@ const metadata$e = {
2108
2061
  }
2109
2062
  };
2110
2063
 
2111
- const metadata$d = {
2064
+ const metadata$f = {
2112
2065
  "name": "🟢 Radio",
2113
2066
  "key": "ac72d9e5ab04a1d59eaf77dffd380fd6e491ecf8",
2114
2067
  "componentPropertyDefinitions": {
@@ -2127,16 +2080,51 @@ const metadata$d = {
2127
2080
  "variantOptions": [
2128
2081
  "Enabled",
2129
2082
  "Pressed",
2083
+ "Disabled",
2130
2084
  "Selected",
2131
2085
  "Selected-Pressed",
2132
- "Disabled",
2133
- "Disabled-Selected"
2086
+ "Selected-Disabled"
2134
2087
  ]
2135
2088
  }
2136
2089
  }
2137
2090
  };
2138
2091
 
2139
- const metadata$c = {
2092
+ const metadata$e = {
2093
+ "name": "🟢 Radio Mark",
2094
+ "key": "832d696d6e9566610968cd70f128f500ec009d6a",
2095
+ "componentPropertyDefinitions": {
2096
+ "Size": {
2097
+ "type": "VARIANT",
2098
+ "variantOptions": [
2099
+ "Medium",
2100
+ "Large"
2101
+ ]
2102
+ },
2103
+ "Selected": {
2104
+ "type": "VARIANT",
2105
+ "variantOptions": [
2106
+ "True",
2107
+ "False"
2108
+ ]
2109
+ },
2110
+ "Pressed": {
2111
+ "type": "VARIANT",
2112
+ "variantOptions": [
2113
+ "True",
2114
+ "False"
2115
+ ]
2116
+ },
2117
+ "Disabled": {
2118
+ "type": "VARIANT",
2119
+ "variantOptions": [
2120
+ "True",
2121
+ "False"
2122
+ ]
2123
+ }
2124
+ }
2125
+ };
2126
+
2127
+ const metadata$d = {
2140
2128
  "name": "🟢 Range Slider",
2141
2129
  "key": "64fc49184979e0be40aa367ca98868601eb7dad5",
2142
2130
  "componentPropertyDefinitions": {
@@ -2168,21 +2156,21 @@ const metadata$c = {
2168
2156
  }
2169
2157
  };
2170
2158
 
2171
- const metadata$b = {
2159
+ const metadata$c = {
2172
2160
  "name": "🟢 Reaction Button",
2173
2161
  "key": "ec43e4e881f7048e95601f8b58c01a0905a174e0",
2174
2162
  "componentPropertyDefinitions": {
2175
- "Icon#12379:0": {
2176
- "type": "INSTANCE_SWAP",
2177
- "preferredValues": []
2163
+ "Label#6397:0": {
2164
+ "type": "TEXT"
2178
2165
  },
2179
2166
  "Show Count#6397:33": {
2180
2167
  "type": "BOOLEAN"
2181
2168
  },
2182
- "Count#15816:0": {
2183
- "type": "TEXT"
2169
+ "Icon#12379:0": {
2170
+ "type": "INSTANCE_SWAP",
2171
+ "preferredValues": []
2184
2172
  },
2185
- "Label#6397:0": {
2173
+ "Count#15816:0": {
2186
2174
  "type": "TEXT"
2187
2175
  },
2188
2176
  "Size": {
@@ -2208,7 +2196,45 @@ const metadata$b = {
2208
2196
  }
2209
2197
  };
2210
2198
 
2199
+ const metadata$b = {
2200
+ "name": "🟢 Resizable.Icon",
2201
+ "key": "1f74eedb6fb186fd201d6ad5b2dbcd46a2bddf3e",
2202
+ "componentPropertyDefinitions": {
2203
+ "Size": {
2204
+ "type": "VARIANT",
2205
+ "variantOptions": [
2206
+ "12",
2207
+ "14",
2208
+ "16",
2209
+ "20",
2210
+ "24",
2211
+ "28",
2212
+ "32"
2213
+ ]
2214
+ }
2215
+ }
2216
+ };
2217
+
2211
2218
  const metadata$a = {
2219
+ "name": "🟢 ResizableChild",
2220
+ "key": "df43b92004c850e7c6d2869e7a4ba1ef9a2d7db6",
2221
+ "componentPropertyDefinitions": {
2222
+ "Size": {
2223
+ "type": "VARIANT",
2224
+ "variantOptions": [
2225
+ "12",
2226
+ "14",
2227
+ "16",
2228
+ "20",
2229
+ "24",
2230
+ "28",
2231
+ "32"
2232
+ ]
2233
+ }
2234
+ }
2235
+ };
2236
+
2237
+ const metadata$9 = {
2212
2238
  "name": "🟢 Segmented Control",
2213
2239
  "key": "3ad7133ba52755867f42f9232375f75639e00d58",
2214
2240
  "componentPropertyDefinitions": {
@@ -2232,18 +2258,18 @@ const metadata$a = {
2232
2258
  }
2233
2259
  };
2234
2260
 
2235
- const metadata$9 = {
2261
+ const metadata$8 = {
2236
2262
  "name": "🟢 Select Box",
2237
2263
  "key": "38722ffeb4c966256a709155e8ddac50c93d7c60",
2238
2264
  "componentPropertyDefinitions": {
2239
- "Label#3635:0": {
2240
- "type": "TEXT"
2265
+ "Show Description#3033:0": {
2266
+ "type": "BOOLEAN"
2241
2267
  },
2242
2268
  "Description #3033:5": {
2243
2269
  "type": "TEXT"
2244
2270
  },
2245
- "Show Description#3033:0": {
2246
- "type": "BOOLEAN"
2271
+ "Label#3635:0": {
2272
+ "type": "TEXT"
2247
2273
  },
2248
2274
  "Control": {
2249
2275
  "type": "VARIANT",
@@ -2264,7 +2290,7 @@ const metadata$9 = {
2264
2290
  }
2265
2291
  };
2266
2292
 
2267
- const metadata$8 = {
2293
+ const metadata$7 = {
2268
2294
  "name": "🟢 Skeleton",
2269
2295
  "key": "ef22c3288722fbfa64a5ab73df397ade88f8e05a",
2270
2296
  "componentPropertyDefinitions": {
@@ -2276,11 +2302,18 @@ const metadata$8 = {
2276
2302
  "16",
2277
2303
  "Full"
2278
2304
  ]
2305
+ },
2306
+ "Tone": {
2307
+ "type": "VARIANT",
2308
+ "variantOptions": [
2309
+ "Magic",
2310
+ "Neutral"
2311
+ ]
2279
2312
  }
2280
2313
  }
2281
2314
  };
2282
2315
 
2283
- const metadata$7 = {
2316
+ const metadata$6 = {
2284
2317
  "name": "🟢 Slider",
2285
2318
  "key": "aee027230a478315e380704c4523141e67e464ee",
2286
2319
  "componentPropertyDefinitions": {
@@ -2294,252 +2327,174 @@ const metadata$7 = {
2294
2327
  "4"
2295
2328
  ]
2296
2329
  },
2297
- "State": {
2298
- "type": "VARIANT",
2299
- "variantOptions": [
2300
- "Enabled",
2301
- "Disabled"
2302
- ]
2303
- },
2304
- "Marker": {
2305
- "type": "VARIANT",
2306
- "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"
2334
- ]
2335
- }
2336
- }
2337
- };
2338
-
2339
- const metadata$5 = {
2340
- "name": "🟢 Standard Navigation",
2341
- "key": "c07bfe331cf214375fce9ad47cb6fdb459d1fb1b",
2342
- "componentPropertyDefinitions": {
2343
- "Title#28176:5": {
2344
- "type": "BOOLEAN"
2345
- },
2346
- "Variant": {
2347
- "type": "VARIANT",
2348
- "variantOptions": [
2349
- "Layer Default",
2350
- "Transparent"
2351
- ]
2352
- },
2353
- "OS": {
2354
- "type": "VARIANT",
2355
- "variantOptions": [
2356
- "iOS",
2357
- "Android"
2358
- ]
2359
- }
2360
- }
2361
- };
2362
-
2363
- const metadata$4 = {
2364
- "name": "🟢 Switch",
2365
- "key": "80ce5a33b5ab713ab3bd2449472e2fb13d78c7f3",
2366
- "componentPropertyDefinitions": {
2367
- "Label#15191:2": {
2368
- "type": "TEXT"
2369
- },
2370
- "Size": {
2371
- "type": "VARIANT",
2372
- "variantOptions": [
2373
- "Small",
2374
- "Medium"
2375
- ]
2376
- },
2377
- "State": {
2378
- "type": "VARIANT",
2379
- "variantOptions": [
2380
- "Enabled",
2381
- "Selected",
2382
- "Disabled",
2383
- "Disabled-Selected"
2384
- ]
2385
- }
2386
- }
2387
- };
2388
-
2389
- const metadata$3 = {
2390
- "name": "🟢 Tablist",
2391
- "key": "ffe33411fb8796f7a95d3637b90150007f0dd954",
2392
- "componentPropertyDefinitions": {
2393
- "Size": {
2330
+ "State": {
2394
2331
  "type": "VARIANT",
2395
2332
  "variantOptions": [
2396
- "Small",
2397
- "Medium"
2333
+ "Enabled",
2334
+ "Disabled"
2398
2335
  ]
2399
2336
  },
2400
- "Layout": {
2337
+ "Marker": {
2401
2338
  "type": "VARIANT",
2402
2339
  "variantOptions": [
2403
- "Hug",
2404
- "Fill"
2340
+ "None",
2341
+ "Min Max",
2342
+ "All"
2405
2343
  ]
2344
+ }
2345
+ }
2346
+ };
2347
+
2348
+ const metadata$5 = {
2349
+ "name": "🟢 Snackbar",
2350
+ "key": "81b17fb8c7d731a19cf8d36a8605559d41414eca",
2351
+ "componentPropertyDefinitions": {
2352
+ "Show Action#1528:0": {
2353
+ "type": "BOOLEAN"
2354
+ },
2355
+ "Message#1528:4": {
2356
+ "type": "TEXT"
2357
+ },
2358
+ "Action Label#1528:8": {
2359
+ "type": "TEXT"
2406
2360
  },
2407
- "Tab Count": {
2361
+ "Variant": {
2408
2362
  "type": "VARIANT",
2409
2363
  "variantOptions": [
2410
- "2",
2411
- "3",
2412
- "4",
2413
- "5+"
2364
+ "Default",
2365
+ "Positive",
2366
+ "Critical"
2414
2367
  ]
2415
2368
  }
2416
2369
  }
2417
2370
  };
2418
2371
 
2419
- const metadata$2 = {
2420
- "name": "🟢 Text Button",
2421
- "key": "601f788792916250e33d04bd3165dee1404342df",
2372
+ const metadata$4 = {
2373
+ "name": "🟢 Switch",
2374
+ "key": "65e0e7ba1a0c13b42e5fd0ceb17d5f756128dd6b",
2422
2375
  "componentPropertyDefinitions": {
2423
- "Prefix Icon#7561:0": {
2424
- "type": "INSTANCE_SWAP",
2425
- "preferredValues": []
2426
- },
2427
- "Label#6148:0": {
2376
+ "Label#36578:0": {
2428
2377
  "type": "TEXT"
2429
2378
  },
2430
2379
  "Size": {
2431
2380
  "type": "VARIANT",
2432
2381
  "variantOptions": [
2433
- "Small",
2434
- "Medium",
2435
- "Large"
2382
+ "16",
2383
+ "24",
2384
+ "32"
2436
2385
  ]
2437
2386
  },
2438
- "Layout": {
2387
+ "State": {
2439
2388
  "type": "VARIANT",
2440
2389
  "variantOptions": [
2441
- "Icon First",
2442
- "Icon Last"
2390
+ "Enabled",
2391
+ "Disabled",
2392
+ "Selected",
2393
+ "Selected-Disabled"
2443
2394
  ]
2444
2395
  },
2445
- "Tone": {
2396
+ "Label Layout(Figma Only)": {
2446
2397
  "type": "VARIANT",
2447
2398
  "variantOptions": [
2448
- "Neutral",
2449
- "Neutral Subtle",
2450
- "Brand",
2451
- "Critical"
2399
+ "None",
2400
+ "Right",
2401
+ "Left"
2452
2402
  ]
2453
- },
2454
- "State": {
2403
+ }
2404
+ }
2405
+ };
2406
+
2407
+ const metadata$3 = {
2408
+ "name": "🟢 Tabs",
2409
+ "key": "3e3af9f7f235cbcbbe862d5da552ab23e16ff34e",
2410
+ "componentPropertyDefinitions": {
2411
+ "Variant": {
2455
2412
  "type": "VARIANT",
2456
2413
  "variantOptions": [
2457
- "Enabled",
2458
- "Pressed",
2459
- "Disabled"
2414
+ "Underline",
2415
+ "Chip"
2460
2416
  ]
2461
2417
  }
2462
2418
  }
2463
2419
  };
2464
2420
 
2465
- const metadata$1 = {
2421
+ const metadata$2 = {
2466
2422
  "name": "🟢 Text Field",
2467
2423
  "key": "c49873c37a639f0dffdea4efd0eb43760d66c141",
2468
2424
  "componentPropertyDefinitions": {
2469
- "Suffix Text#15327:138": {
2470
- "type": "TEXT"
2425
+ "Show Header#870:0": {
2426
+ "type": "BOOLEAN"
2471
2427
  },
2472
- "Indicator#15327:249": {
2428
+ "Placeholder#958:0": {
2473
2429
  "type": "TEXT"
2474
2430
  },
2475
- "Label#14964:0": {
2476
- "type": "TEXT"
2431
+ "Show Footer#958:25": {
2432
+ "type": "BOOLEAN"
2477
2433
  },
2478
- "Character Count#15327:64": {
2479
- "type": "TEXT"
2434
+ "Show Description#958:50": {
2435
+ "type": "BOOLEAN"
2480
2436
  },
2481
- "Description#12626:5": {
2482
- "type": "TEXT"
2437
+ "Show Character Count#958:75": {
2438
+ "type": "BOOLEAN"
2483
2439
  },
2484
- "Filled Text#1304:0": {
2485
- "type": "TEXT"
2440
+ "Show Suffix#958:100": {
2441
+ "type": "BOOLEAN"
2486
2442
  },
2487
- "Show Suffix Icon#1267:75": {
2443
+ "Show Prefix#958:125": {
2488
2444
  "type": "BOOLEAN"
2489
2445
  },
2490
- "Show Prefix Icon#1267:50": {
2446
+ "Show Indicator#1259:0": {
2447
+ "type": "BOOLEAN"
2448
+ },
2449
+ "Show Prefix Text#1267:0": {
2491
2450
  "type": "BOOLEAN"
2492
2451
  },
2493
2452
  "Prefix Icon#1267:25": {
2494
2453
  "type": "INSTANCE_SWAP",
2495
2454
  "preferredValues": []
2496
2455
  },
2497
- "Show Prefix#958:125": {
2456
+ "Show Prefix Icon#1267:50": {
2498
2457
  "type": "BOOLEAN"
2499
2458
  },
2500
- "Show Suffix#958:100": {
2459
+ "Show Suffix Icon#1267:75": {
2501
2460
  "type": "BOOLEAN"
2502
2461
  },
2503
- "Show Character Count#958:75": {
2504
- "type": "BOOLEAN"
2462
+ "Suffix Icon #1267:100": {
2463
+ "type": "INSTANCE_SWAP",
2464
+ "preferredValues": []
2505
2465
  },
2506
- "Show Footer#958:25": {
2466
+ "Show Suffix Text#1267:125": {
2507
2467
  "type": "BOOLEAN"
2508
2468
  },
2509
- "Max Character Count#15327:27": {
2469
+ "Filled Text#1304:0": {
2510
2470
  "type": "TEXT"
2511
2471
  },
2512
- "Show Prefix Text#1267:0": {
2513
- "type": "BOOLEAN"
2472
+ "Description#12626:5": {
2473
+ "type": "TEXT"
2514
2474
  },
2515
- "Show Suffix Text#1267:125": {
2516
- "type": "BOOLEAN"
2475
+ "Label#14964:0": {
2476
+ "type": "TEXT"
2517
2477
  },
2518
- "Suffix Icon #1267:100": {
2519
- "type": "INSTANCE_SWAP",
2520
- "preferredValues": []
2478
+ "Max Character Count#15327:27": {
2479
+ "type": "TEXT"
2521
2480
  },
2522
- "Show Description#958:50": {
2523
- "type": "BOOLEAN"
2481
+ "Character Count#15327:64": {
2482
+ "type": "TEXT"
2524
2483
  },
2525
2484
  "Prefix Text#15327:101": {
2526
2485
  "type": "TEXT"
2527
2486
  },
2528
- "Show Indicator#1259:0": {
2529
- "type": "BOOLEAN"
2530
- },
2531
- "Placeholder#958:0": {
2487
+ "Suffix Text#15327:138": {
2532
2488
  "type": "TEXT"
2533
2489
  },
2534
- "Show Header#870:0": {
2535
- "type": "BOOLEAN"
2490
+ "Indicator#15327:249": {
2491
+ "type": "TEXT"
2536
2492
  },
2537
2493
  "Size": {
2538
2494
  "type": "VARIANT",
2539
2495
  "variantOptions": [
2540
2496
  "Medium",
2541
- "Large",
2542
- "XLarge"
2497
+ "Large(Default)"
2543
2498
  ]
2544
2499
  },
2545
2500
  "State": {
@@ -2563,26 +2518,26 @@ const metadata$1 = {
2563
2518
  }
2564
2519
  };
2565
2520
 
2566
- const metadata = {
2521
+ const metadata$1 = {
2567
2522
  "name": "🟢 Toggle Button",
2568
2523
  "key": "1d240ee5fd7a56879713e69cbea1b6f006f0ea22",
2569
2524
  "componentPropertyDefinitions": {
2570
- "Suffix Icon#6122:343": {
2525
+ "Label#6122:49": {
2526
+ "type": "TEXT"
2527
+ },
2528
+ "Prefix Icon#6122:98": {
2571
2529
  "type": "INSTANCE_SWAP",
2572
2530
  "preferredValues": []
2573
2531
  },
2574
- "Show Prefix Icon#6122:392": {
2575
- "type": "BOOLEAN"
2576
- },
2577
2532
  "Show Suffix Icon#6122:147": {
2578
2533
  "type": "BOOLEAN"
2579
2534
  },
2580
- "Prefix Icon#6122:98": {
2535
+ "Suffix Icon#6122:343": {
2581
2536
  "type": "INSTANCE_SWAP",
2582
2537
  "preferredValues": []
2583
2538
  },
2584
- "Label#6122:49": {
2585
- "type": "TEXT"
2539
+ "Show Prefix Icon#6122:392": {
2540
+ "type": "BOOLEAN"
2586
2541
  },
2587
2542
  "Size": {
2588
2543
  "type": "VARIANT",
@@ -2614,11 +2569,53 @@ const metadata = {
2614
2569
  }
2615
2570
  };
2616
2571
 
2572
+ const metadata = {
2573
+ "name": "🟢 Top Navigation",
2574
+ "key": "f6d069d65f8ffc8b430fd8f3013910557f36e9da",
2575
+ "componentPropertyDefinitions": {
2576
+ "Show Title#33588:82": {
2577
+ "type": "BOOLEAN"
2578
+ },
2579
+ "OS (Figma Only)": {
2580
+ "type": "VARIANT",
2581
+ "variantOptions": [
2582
+ "iOS",
2583
+ "Android"
2584
+ ]
2585
+ },
2586
+ "Variant": {
2587
+ "type": "VARIANT",
2588
+ "variantOptions": [
2589
+ "Layer Default",
2590
+ "Transparent"
2591
+ ]
2592
+ },
2593
+ "Left": {
2594
+ "type": "VARIANT",
2595
+ "variantOptions": [
2596
+ "Back",
2597
+ "Close",
2598
+ "Custom",
2599
+ "None"
2600
+ ]
2601
+ },
2602
+ "Right": {
2603
+ "type": "VARIANT",
2604
+ "variantOptions": [
2605
+ "1 Icon Button",
2606
+ "2 Icon Button",
2607
+ "3 Icon Button",
2608
+ "Text Button",
2609
+ "None"
2610
+ ]
2611
+ }
2612
+ }
2613
+ };
2614
+
2617
2615
  var FIGMA_COMPONENTS = {
2618
2616
  __proto__: null,
2619
- actionButton: metadata$F,
2620
- actionChip: metadata$E,
2621
- actionSheet: metadata$D,
2617
+ actionButton: metadata$E,
2618
+ alertDialog: metadata$D,
2622
2619
  avatar: metadata$C,
2623
2620
  avatarStack: metadata$B,
2624
2621
  badge: metadata$A,
@@ -2627,42 +2624,43 @@ var FIGMA_COMPONENTS = {
2627
2624
  bottomSheet: metadata$x,
2628
2625
  callout: metadata$w,
2629
2626
  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,
2627
+ checkmark: metadata$u,
2628
+ chip: metadata$t,
2629
+ chlid: metadata$s,
2630
+ contextualFloatingButton: metadata$r,
2631
+ divider: metadata$q,
2632
+ floatingActionButton: metadata$p,
2633
+ helpBubble: metadata$o,
2634
+ inlineBanner: metadata$n,
2635
+ mainTabNavigationGlobal: metadata$m,
2636
+ mainTabNavigationKr: metadata$l,
2637
+ mannerTemp: metadata$k,
2638
+ mannerTempBadge: metadata$j,
2639
+ menuSheet: metadata$i,
2640
+ multilineTextField: metadata$h,
2641
+ progressCircle: metadata$g,
2642
+ radio: metadata$f,
2643
+ radioMark: metadata$e,
2644
+ rangeSlider: metadata$d,
2645
+ reactionButton: metadata$c,
2646
+ resizableChild: metadata$a,
2647
+ resizableIcon: metadata$b,
2648
+ segmentedControl: metadata$9,
2649
+ selectBox: metadata$8,
2650
+ skeleton: metadata$7,
2651
+ slider: metadata$6,
2652
+ snackbar: metadata$5,
2656
2653
  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
2654
+ tabs: metadata$3,
2655
+ templateButtonGroup: metadata$K,
2656
+ templateChipGroup: metadata$J,
2657
+ templateCompletion: metadata$I,
2658
+ templateErrorState: metadata$H,
2659
+ templateSelectBoxGroup: metadata$G,
2660
+ templateTopNavigation: metadata$F,
2661
+ textField: metadata$2,
2662
+ toggleButton: metadata$1,
2663
+ topNavigation: metadata
2666
2664
  };
2667
2665
 
2668
2666
  // TODO: move this file to relevant directory
@@ -2683,20 +2681,20 @@ function handleSizeProp(size) {
2683
2681
  }
2684
2682
  }
2685
2683
 
2686
- const { createLocalSnippetElement: createLocalSnippetElement$n } = createLocalSnippetHelper("action-button");
2687
- const createActionButtonHandler = (ctx)=>defineComponentHandler(metadata$F.key, ({ componentProperties: props })=>{
2684
+ const { createLocalSnippetElement: createLocalSnippetElement$q } = createLocalSnippetHelper("action-button");
2685
+ const createActionButtonHandler = (ctx)=>defineComponentHandler(metadata$E.key, ({ componentProperties: props })=>{
2688
2686
  const states = props.State.value.split("-");
2689
2687
  const { layout, children } = tsPattern.match(props.Layout.value).with("Icon Only", ()=>({
2690
2688
  layout: "iconOnly",
2691
2689
  children: [
2692
- createLocalSnippetElement$n("Icon", {
2690
+ createSeedReactElement("Icon", {
2693
2691
  svg: ctx.iconHandler.transform(props["Icon#7574:0"])
2694
2692
  })
2695
2693
  ]
2696
2694
  })).with("Icon First", ()=>({
2697
2695
  layout: "withText",
2698
2696
  children: [
2699
- createLocalSnippetElement$n("PrefixIcon", {
2697
+ createSeedReactElement("PrefixIcon", {
2700
2698
  svg: ctx.iconHandler.transform(props["Prefix Icon#5987:305"])
2701
2699
  }),
2702
2700
  props["Label#5987:61"].value
@@ -2705,7 +2703,7 @@ const createActionButtonHandler = (ctx)=>defineComponentHandler(metadata$F.key,
2705
2703
  layout: "withText",
2706
2704
  children: [
2707
2705
  props["Label#5987:61"].value,
2708
- createLocalSnippetElement$n("SuffixIcon", {
2706
+ createSeedReactElement("SuffixIcon", {
2709
2707
  svg: ctx.iconHandler.transform(props["Suffix Icon#5987:244"])
2710
2708
  })
2711
2709
  ]
@@ -2724,222 +2722,170 @@ const createActionButtonHandler = (ctx)=>defineComponentHandler(metadata$F.key,
2724
2722
  variant: changeCase.camelCase(props.Variant.value),
2725
2723
  layout
2726
2724
  };
2727
- return createLocalSnippetElement$n("ActionButton", commonProps, children);
2725
+ return createLocalSnippetElement$q("ActionButton", commonProps, children);
2728
2726
  });
2729
-
2730
- const createActionChipHandler = (ctx)=>defineComponentHandler(metadata$E.key, ({ componentProperties: props })=>{
2727
+ const ACTION_BUTTON_GHOST_BUTTON_KEY = "ea69291fb4d76217419f3d9613ae16aadafb56a5";
2728
+ const createActionButtonGhostHandler = (ctx)=>defineComponentHandler(ACTION_BUTTON_GHOST_BUTTON_KEY, ({ componentProperties: props })=>{
2731
2729
  const states = props.State.value.split("-");
2732
2730
  const { layout, children } = tsPattern.match(props.Layout.value).with("Icon Only", ()=>({
2733
2731
  layout: "iconOnly",
2734
2732
  children: [
2735
2733
  createSeedReactElement("Icon", {
2736
- svg: ctx.iconHandler.transform(props["Icon#8714:0"])
2734
+ svg: ctx.iconHandler.transform(props["Icon#30525:15"])
2737
2735
  })
2738
2736
  ]
2739
2737
  })).with("Icon First", ()=>({
2740
2738
  layout: "withText",
2741
2739
  children: [
2742
2740
  createSeedReactElement("PrefixIcon", {
2743
- svg: ctx.iconHandler.transform(props["Prefix Icon#8711:0"])
2741
+ svg: ctx.iconHandler.transform(props["Prefix Icon#30511:3"])
2744
2742
  }),
2745
- props["Label#7185:0"].value
2743
+ props["Label#30511:2"].value
2746
2744
  ]
2747
2745
  })).with("Icon Last", ()=>({
2748
2746
  layout: "withText",
2749
2747
  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,
2748
+ props["Label#30511:2"].value,
2762
2749
  createSeedReactElement("SuffixIcon", {
2763
- svg: ctx.iconHandler.transform(props["Suffix Icon#8711:3"])
2750
+ svg: ctx.iconHandler.transform(props["Suffix Icon#30525:0"])
2764
2751
  })
2765
2752
  ]
2766
2753
  })).with("Text Only", ()=>({
2767
2754
  layout: "withText",
2768
- children: props["Label#7185:0"].value
2755
+ children: props["Label#30511:2"].value
2769
2756
  })).exhaustive();
2770
2757
  const commonProps = {
2771
- size: handleSizeProp(props.Size.value),
2772
- layout,
2773
2758
  ...states.includes("Disabled") && {
2774
2759
  disabled: true
2775
2760
  },
2776
- ...props["Show Count#7185:42"].value && {
2777
- count: Number(props["Count#7185:21"].value)
2761
+ ...states.includes("Loading") && {
2762
+ loading: true
2763
+ },
2764
+ size: handleSizeProp(props.Size.value),
2765
+ variant: "ghost",
2766
+ layout,
2767
+ ...props.Bleed.value === "true" && {
2768
+ bleedX: "asPadding",
2769
+ bleedY: "asPadding"
2778
2770
  }
2779
2771
  };
2780
- return createSeedReactElement("ActionChip", commonProps, children);
2772
+ return createLocalSnippetElement$q("ActionButton", commonProps, children);
2781
2773
  });
2782
2774
 
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: changeCase.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 = tsPattern.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({
2775
+ const { createLocalSnippetElement: createLocalSnippetElement$p } = createLocalSnippetHelper("alert-dialog");
2776
+ const { createLocalSnippetElement: createLocalSnippetElementTrigger$3 } = createLocalSnippetHelper("action-button");
2777
+ const ALERT_DIALOG_FOOTER_KEY = "00b1b131d67edf2875a7a1df8dfa88098d7c04be";
2778
+ const createAlertDialogHandler = (_ctx)=>defineComponentHandler(metadata$D.key, (node, traverse)=>{
2779
+ const props = node.componentProperties;
2780
+ const alertDialogHeader = createLocalSnippetElement$p("AlertDialogHeader", undefined, [
2781
+ ...props["Show Title#20361:14"].value ? [
2782
+ createLocalSnippetElement$p("AlertDialogTitle", undefined, props["Title Text#20361:0"].value)
2783
+ ] : [],
2784
+ createLocalSnippetElement$p("AlertDialogDescription", undefined, props["Description Text#20361:7"].value)
2785
+ ]);
2786
+ const footerNodes = findAllInstances({
2814
2787
  node,
2815
- key: actionSheetItemHandler.key
2788
+ key: ALERT_DIALOG_FOOTER_KEY
2816
2789
  });
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
2790
+ if (footerNodes.length === 0 || footerNodes.length > 1) {
2791
+ return createLocalSnippetElement$p("AlertDialog", undefined, alertDialogHeader, {
2792
+ comment: "Footer 영역을 확인해주세요."
2793
+ });
2794
+ }
2795
+ const footerNode = footerNodes[0];
2796
+ const footerNodeProps = traverse(footerNode)?.props;
2797
+ const buttons = footerNode.children.map(traverse);
2798
+ const alertDialogFooterChildren = tsPattern.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();
2799
+ const alertDialogFooter = createLocalSnippetElement$p("AlertDialogFooter", undefined, alertDialogFooterChildren);
2800
+ return createLocalSnippetElement$p("AlertDialogRoot", {
2801
+ open: true
2802
+ }, [
2803
+ createLocalSnippetElement$p("AlertDialogTrigger", {
2804
+ asChild: true
2805
+ }, createLocalSnippetElementTrigger$3("ActionButton", {}, "AlertDialog 열기")),
2806
+ createLocalSnippetElement$p("AlertDialogContent", undefined, [
2807
+ alertDialogHeader,
2808
+ alertDialogFooter
2809
+ ])
2829
2810
  ]);
2830
2811
  });
2831
- };
2832
2812
 
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 } = tsPattern.match(props.Type.value).with("Title", ()=>({
2813
+ const { createLocalSnippetElement: createLocalSnippetElement$o } = createLocalSnippetHelper("app-bar");
2814
+ const APP_BAR_TITLE_KEY = "d2cc4f615b2b44098be89448ad1c573f94af0355";
2815
+ const APP_BAR_LEFT_ICON_BUTTON_KEY = "5a953f7bafc0df744777517458396e9f6c915825";
2816
+ const APP_BAR_RIGHT_ICON_BUTTON_KEY = "c08db793288077e53bd45ef11aa419a835e88fce";
2817
+ const createAppBarMainHandler = (_ctx)=>{
2818
+ return defineComponentHandler(APP_BAR_TITLE_KEY, ({ componentProperties: props })=>{
2819
+ const { title, subtitle } = tsPattern.match(props.Type.value).with("Title", ()=>({
2837
2820
  title: props["Title#16944:0"].value,
2838
- subtitle: undefined,
2839
- layout: undefined
2821
+ subtitle: undefined
2840
2822
  })).with("Title-Subtitle", ()=>({
2841
2823
  title: props["Title#16944:0"].value,
2842
- subtitle: props["Subtitle#16958:9"].value,
2843
- layout: "withSubtitle"
2844
- })).otherwise(()=>({
2824
+ subtitle: props["Subtitle#16958:9"].value
2825
+ })).with("Logo (Figma Only)", ()=>({
2845
2826
  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
2827
+ subtitle: undefined
2828
+ })).exhaustive();
2829
+ if (title) {
2830
+ return createLocalSnippetElement$o("AppBarMain", {
2831
+ title,
2832
+ subtitle
2833
+ });
2834
+ }
2835
+ return createLocalSnippetElement$o("AppBarMain", undefined, undefined, {
2836
+ comment: "AppBarMain 내부를 직접 작성해주세요."
2856
2837
  });
2857
2838
  });
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
- });
2839
+ };
2902
2840
  const createAppBarHandler = (ctx)=>{
2903
2841
  const appBarMainHandler = createAppBarMainHandler();
2904
- const appBarLeftHandler = createAppBarLeftHandler(ctx);
2905
- const appBarRightHandler = createAppBarRightHandler(ctx);
2906
- return defineComponentHandler(metadata$5.key, (node)=>{
2842
+ return defineComponentHandler(metadata.key, (node, traverse)=>{
2907
2843
  const props = node.componentProperties;
2908
- const theme = (()=>{
2909
- switch(props.OS.value){
2910
- case "Android":
2911
- return "android";
2912
- case "iOS":
2913
- return "cupertino";
2844
+ const { theme, tone } = {
2845
+ theme: tsPattern.match(props["OS (Figma Only)"].value).with("Android", ()=>"android").with("iOS", ()=>"cupertino").exhaustive(),
2846
+ tone: tsPattern.match(props.Variant.value).with("Layer Default", ()=>"layer").with("Transparent", ()=>"transparent").exhaustive()
2847
+ };
2848
+ const main = (()=>{
2849
+ if (!props["Show Title#33588:82"].value) {
2850
+ return undefined;
2914
2851
  }
2915
- })();
2916
- const tone = (()=>{
2917
- switch(props.Variant.value){
2918
- case "Layer Default":
2919
- return "layer";
2920
- case "Transparent":
2921
- return "transparent";
2852
+ const [mainNode] = findAllInstances({
2853
+ node,
2854
+ key: APP_BAR_TITLE_KEY
2855
+ });
2856
+ if (!mainNode) {
2857
+ return undefined;
2922
2858
  }
2859
+ return appBarMainHandler.transform(mainNode, traverse);
2923
2860
  })();
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", {
2861
+ const leftChildren = tsPattern.match(props.Left.value).with("None", ()=>undefined).with("Back", ()=>[
2862
+ createLocalSnippetElement$o("AppBarBackButton")
2863
+ ]).with("Close", ()=>[
2864
+ createLocalSnippetElement$o("AppBarCloseButton")
2865
+ ]).with("Custom", ()=>{
2866
+ const buttons = findAllInstances({
2867
+ node,
2868
+ key: APP_BAR_LEFT_ICON_BUTTON_KEY
2869
+ });
2870
+ if (buttons.length > 0) {
2871
+ return buttons.map((button)=>createLocalSnippetElement$o("AppBarIconButton", undefined, ctx.iconHandler.transform(button.componentProperties["Icon#33580:0"]), {
2872
+ comment: "AppBarIconButton에 aria-label 속성을 추가해주세요."
2873
+ }));
2874
+ }
2875
+ return undefined;
2876
+ }).exhaustive();
2877
+ const left = leftChildren && leftChildren.length > 0 ? createLocalSnippetElement$o("AppBarLeft", {}, leftChildren) : undefined;
2878
+ const rightChildren = tsPattern.match(props.Right.value).with("None", ()=>undefined).with("1 Icon Button", "2 Icon Button", "3 Icon Button", ()=>{
2879
+ const buttons = findAllInstances({
2880
+ node,
2881
+ key: APP_BAR_RIGHT_ICON_BUTTON_KEY
2882
+ });
2883
+ return buttons.map((button)=>createLocalSnippetElement$o("AppBarIconButton", undefined, ctx.iconHandler.transform(button.componentProperties["Icon#6406:3"]), {
2884
+ comment: "AppBarIconButton에 aria-label 속성을 추가해주세요."
2885
+ }));
2886
+ }).with("Text Button", ()=>undefined).exhaustive();
2887
+ const right = rightChildren && rightChildren.length > 0 ? createLocalSnippetElement$o("AppBarRight", {}, rightChildren) : undefined;
2888
+ return createLocalSnippetElement$o("AppBar", {
2943
2889
  theme,
2944
2890
  tone
2945
2891
  }, [
@@ -2952,40 +2898,51 @@ const createAppBarHandler = (ctx)=>{
2952
2898
  });
2953
2899
  };
2954
2900
 
2955
- const createIdentityPlaceholderHandler = (_ctx)=>defineComponentHandler(metadata$m.key, ({ componentProperties: props })=>{
2901
+ const IDENTITY_PLACEHOLDER_KEY = "b3563b6f16ba4cfe4240c9b33eef7edad4c304eb";
2902
+ const { createLocalSnippetElement: createLocalSnippetElement$n } = createLocalSnippetHelper("identity-placeholder");
2903
+ const createIdentityPlaceholderHandler = (_ctx)=>defineComponentHandler(IDENTITY_PLACEHOLDER_KEY, ({ componentProperties: props })=>{
2956
2904
  const commonProps = {
2957
2905
  identity: changeCase.camelCase(props.Identity.value)
2958
2906
  };
2959
- return createSeedReactElement("IdentityPlaceholder", commonProps);
2907
+ return createLocalSnippetElement$n("IdentityPlaceholder", commonProps);
2960
2908
  });
2961
2909
 
2962
- const { createLocalSnippetElement: createLocalSnippetElement$k } = createLocalSnippetHelper("avatar");
2910
+ const { createLocalSnippetElement: createLocalSnippetElement$m } = createLocalSnippetHelper("avatar");
2963
2911
  const createAvatarHandler = (ctx)=>{
2964
2912
  const identityPlaceholderHandler = createIdentityPlaceholderHandler();
2965
- return defineComponentHandler(metadata$C.key, (node)=>{
2913
+ return defineComponentHandler(metadata$C.key, (node, traverse)=>{
2966
2914
  const [placeholder] = findAllInstances({
2967
2915
  node,
2968
2916
  key: identityPlaceholderHandler.key
2969
2917
  });
2970
2918
  const { componentProperties: props } = node;
2971
- const avatarHasSrc = props["Show Image#71850:57"].value;
2919
+ const avatarHasSrc = props["Has Image Contents#33407:0"].value;
2972
2920
  const commonProps = {
2973
2921
  ...avatarHasSrc && {
2974
2922
  // Placeholder
2975
2923
  src: `https://placehold.co/${props.Size.value}x${props.Size.value}`
2976
2924
  },
2977
2925
  ...placeholder && {
2978
- fallback: identityPlaceholderHandler.transform(placeholder)
2926
+ fallback: identityPlaceholderHandler.transform(placeholder, traverse)
2927
+ },
2928
+ ...props["Badge"].value !== "None" && {
2929
+ badgeMask: changeCase.camelCase(props["Badge"].value)
2979
2930
  },
2980
2931
  size: props.Size.value
2981
2932
  };
2982
- return createLocalSnippetElement$k("Avatar", commonProps, props["Show Badge#1398:26"].value ? createLocalSnippetElement$k("AvatarBadge", {}) : undefined, {
2933
+ return createLocalSnippetElement$m("Avatar", commonProps, props["Badge"].value === "None" ? undefined : createLocalSnippetElement$m("AvatarBadge", {
2934
+ asChild: true
2935
+ }, createElement("img", {
2936
+ src: "https://placehold.co/20x20"
2937
+ }), {
2938
+ comment: "뱃지를 설명하는 alt 텍스트를 제공해야 합니다."
2939
+ }), {
2983
2940
  comment: avatarHasSrc ? "alt 텍스트를 제공해야 합니다." : undefined
2984
2941
  });
2985
2942
  });
2986
2943
  };
2987
2944
 
2988
- const { createLocalSnippetElement: createLocalSnippetElement$j } = createLocalSnippetHelper("avatar");
2945
+ const { createLocalSnippetElement: createLocalSnippetElement$l } = createLocalSnippetHelper("avatar");
2989
2946
  const createAvatarStackHandler = (ctx)=>{
2990
2947
  const avatarHandler = createAvatarHandler();
2991
2948
  return defineComponentHandler(metadata$B.key, (node)=>{
@@ -2998,7 +2955,7 @@ const createAvatarStackHandler = (ctx)=>{
2998
2955
  size: props.Size.value
2999
2956
  };
3000
2957
  const avatarStackChildren = avatarNodes.map(avatarHandler.transform);
3001
- return createLocalSnippetElement$j("AvatarStack", commonProps, avatarStackChildren);
2958
+ return createLocalSnippetElement$l("AvatarStack", commonProps, avatarStackChildren);
3002
2959
  });
3003
2960
  };
3004
2961
 
@@ -3006,29 +2963,58 @@ const createBadgeHandler = (_ctx)=>defineComponentHandler(metadata$A.key, ({ com
3006
2963
  const commonProps = {
3007
2964
  size: handleSizeProp(props.Size.value),
3008
2965
  tone: changeCase.camelCase(props.Tone.value),
3009
- variant: changeCase.camelCase(props.Variant.value),
3010
- shape: changeCase.camelCase(props.Shape.value)
2966
+ variant: changeCase.camelCase(props.Variant.value)
3011
2967
  };
3012
2968
  return createSeedReactElement("Badge", commonProps, props["Label#1584:0"].value);
3013
2969
  });
3014
2970
 
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";
2971
+ const { createLocalSnippetElement: createLocalSnippetElement$k } = createLocalSnippetHelper("bottom-sheet");
2972
+ const { createLocalSnippetElement: createLocalSnippetElementTrigger$2 } = createLocalSnippetHelper("action-button");
2973
+ // TODO: Bottom Action Bar (WIP) handler의 키. 해당 컴포넌트(템플릿) 핸들러 작성 시 handler.transform()으로 대체
2974
+ const BOTTOM_SHEET_FOOTER_KEY = "de6c65d34cc4a01c18c9a7c0ded34635170ca11f";
2975
+ const BOTTOM_SHEET_BODY_KEY = "aa9ffdd60fbfdea42f0d11162cd64f4b4389ddcc";
2976
+ const createBottomSheetHandler = (_ctx)=>defineComponentHandler(metadata$x.key, (node, traverse)=>{
2977
+ const props = node.componentProperties;
2978
+ const headerAlign = tsPattern.match(props["Header Layout"].value).with("Bottom Left", "Top Left", ()=>"left").with("Bottom Center", "Top Center", ()=>"center").with("None", ()=>undefined).exhaustive();
2979
+ const contentProps = {
2980
+ title: props["Title#19787:3"].value,
2981
+ ...props["Show Description#25192:0"].value === true && {
2982
+ description: props["Description#19787:7"].value
2983
+ },
2984
+ ...props["Show Close Button#19787:11"].value === false && {
2985
+ showCloseButton: false
3027
2986
  }
3028
- })();
2987
+ };
2988
+ const bodyNodes = findAllInstances({
2989
+ node,
2990
+ key: BOTTOM_SHEET_BODY_KEY
2991
+ });
2992
+ const bottomSheetBody = bodyNodes.length === 1 ? createLocalSnippetElement$k("BottomSheetBody", {}, bodyNodes[0].children.map(traverse)) : createLocalSnippetElement$k("BottomSheetBody", {}, createElement("div", undefined, "No content available"));
2993
+ const footerNodes = findAllInstances({
2994
+ node,
2995
+ key: BOTTOM_SHEET_FOOTER_KEY
2996
+ });
2997
+ const bottomSheetFooter = props["Show Footer#25162:14"] && footerNodes.length === 1 ? createLocalSnippetElement$k("BottomSheetFooter", {}, footerNodes[0].children.map(traverse)) : undefined;
2998
+ return createLocalSnippetElement$k("BottomSheetRoot", {
2999
+ defaultOpen: true,
3000
+ headerAlign
3001
+ }, [
3002
+ createLocalSnippetElement$k("BottomSheetTrigger", {
3003
+ asChild: true
3004
+ }, createLocalSnippetElementTrigger$2("ActionButton", {}, "BottomSheet 열기")),
3005
+ createLocalSnippetElement$k("BottomSheetContent", contentProps, [
3006
+ bottomSheetBody,
3007
+ bottomSheetFooter
3008
+ ])
3009
+ ]);
3010
+ });
3011
+
3012
+ const { createLocalSnippetElement: createLocalSnippetElement$j } = createLocalSnippetHelper("callout");
3013
+ const createCalloutHandler = (ctx)=>defineComponentHandler(metadata$w.key, ({ componentProperties: props, children })=>{
3014
+ const tag = tsPattern.match(props.Interaction.value).with("Display", ()=>"Callout").with("Actionable", ()=>"ActionableCallout").with("Dismissible", ()=>"DismissibleCallout").exhaustive();
3029
3015
  const textNode = children.find((child)=>child.type === "TEXT");
3030
3016
  if (!textNode) {
3031
- return createLocalSnippetElement$i(tag, undefined, undefined, {
3017
+ return createLocalSnippetElement$j(tag, undefined, undefined, {
3032
3018
  comment: "내용을 제공해주세요."
3033
3019
  });
3034
3020
  }
@@ -3071,17 +3057,19 @@ const createCalloutHandler = (ctx)=>defineComponentHandler(metadata$w.key, ({ co
3071
3057
  tone: changeCase.camelCase(props.Tone.value),
3072
3058
  title,
3073
3059
  description,
3074
- linkProps: {
3075
- children: linkLabel
3060
+ ...linkLabel && {
3061
+ linkProps: {
3062
+ children: linkLabel
3063
+ }
3076
3064
  },
3077
- ...props["Icon#12598:210"].value && {
3078
- prefixIcon: ctx.iconHandler.transform(props["Icon#12598:210"])
3065
+ ...props["Show Prefix Icon#35087:1"].value && {
3066
+ prefixIcon: ctx.iconHandler.transform(props["Prefix Icon#35087:0"])
3079
3067
  }
3080
3068
  };
3081
- return createLocalSnippetElement$i(tag, commonProps);
3069
+ return createLocalSnippetElement$j(tag, commonProps);
3082
3070
  });
3083
3071
 
3084
- const { createLocalSnippetElement: createLocalSnippetElement$h } = createLocalSnippetHelper("checkbox");
3072
+ const { createLocalSnippetElement: createLocalSnippetElement$i } = createLocalSnippetHelper("checkbox");
3085
3073
  const createCheckboxHandler = (_ctx)=>defineComponentHandler(metadata$v.key, ({ componentProperties: props })=>{
3086
3074
  const states = props.State.value.split("-");
3087
3075
  const commonProps = {
@@ -3100,105 +3088,104 @@ const createCheckboxHandler = (_ctx)=>defineComponentHandler(metadata$v.key, ({
3100
3088
  disabled: true
3101
3089
  }
3102
3090
  };
3103
- return createLocalSnippetElement$h("Checkbox", commonProps);
3091
+ return createLocalSnippetElement$i("Checkbox", commonProps);
3104
3092
  });
3105
3093
 
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 })=>{
3094
+ const { createLocalSnippetElement: createLocalSnippetElement$h } = createLocalSnippetHelper("chip");
3095
+ const CHIP_ICON_SUFFIX_KEY = "27343e0e5ab2c66948e9b10fde03d58b5e037212";
3096
+ const createChipIconSuffixHandler = (ctx)=>{
3097
+ return defineComponentHandler(CHIP_ICON_SUFFIX_KEY, ({ componentProperties })=>{
3098
+ return createLocalSnippetElement$h("Chip.SuffixIcon", undefined, createSeedReactElement("Icon", {
3099
+ svg: ctx.iconHandler.transform(componentProperties["Icon#33203:0"])
3100
+ }));
3101
+ });
3102
+ };
3103
+ const createChipHandler = (ctx)=>{
3104
+ const avatarHandler = createAvatarHandler();
3105
+ const iconSuffixHandler = createChipIconSuffixHandler(ctx);
3106
+ return defineComponentHandler(metadata$t.key, (node, traverse)=>{
3107
+ const props = node.componentProperties;
3109
3108
  const states = props.State.value.split("-");
3109
+ const prefix = tsPattern.match(props["Prefix Type"].value).with("None", "Image", ()=>undefined).with("Icon", ()=>createLocalSnippetElement$h("Chip.PrefixIcon", undefined, createSeedReactElement("Icon", {
3110
+ svg: ctx.iconHandler.transform(props["Prefix Icon#8722:0"])
3111
+ }))).with("Avatar", ()=>{
3112
+ const [avatar] = findAllInstances({
3113
+ node,
3114
+ key: metadata$C.key
3115
+ });
3116
+ if (!avatar) return undefined;
3117
+ return createLocalSnippetElement$h("Chip.PrefixAvatar", undefined, avatarHandler.transform(avatar, traverse));
3118
+ }).exhaustive();
3119
+ const label = createLocalSnippetElement$h("Chip.Label", undefined, props["Label#7185:0"].value);
3120
+ const [suffixIcon] = findAllInstances({
3121
+ node,
3122
+ key: CHIP_ICON_SUFFIX_KEY
3123
+ });
3110
3124
  const commonProps = {
3111
- value: props["Label#8876:0"].value,
3125
+ variant: changeCase.camelCase(props.Variant.value),
3126
+ size: handleSizeProp(props.Size.value),
3127
+ layout: props["Label#7185:0"].value ? "withText" : "iconOnly",
3112
3128
  ...states.includes("Disabled") && {
3113
3129
  disabled: true
3114
3130
  }
3115
3131
  };
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
3132
+ return createLocalSnippetElement$h("Chip.Button", commonProps, [
3133
+ prefix,
3134
+ label,
3135
+ suffixIcon ? iconSuffixHandler.transform(suffixIcon, traverse) : undefined
3136
+ ], {
3137
+ comment: "목적에 따라 Chip.Toggle, Chip.RadioItem 등으로 바꿔 사용하세요."
3124
3138
  });
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: changeCase.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
3139
  });
3135
3140
  };
3136
3141
 
3137
- const { createLocalSnippetElement: createLocalSnippetElement$f } = createLocalSnippetHelper("control-chip");
3138
- const createControlChipHandler = (ctx)=>defineComponentHandler(metadata$t.key, ({ componentProperties: props })=>{
3142
+ const { createLocalSnippetElement: createLocalSnippetElement$g } = createLocalSnippetHelper("contextual-floating-button");
3143
+ const createContextualFloatingButtonHandler = (ctx)=>defineComponentHandler(metadata$r.key, ({ componentProperties: props })=>{
3139
3144
  const states = props.State.value.split("-");
3140
- const count = props["Show Count#7185:42"].value ? props["Count#7185:21"].value : undefined;
3141
3145
  const { layout, children } = tsPattern.match(props.Layout.value).with("Icon Only", ()=>({
3142
3146
  layout: "iconOnly",
3143
3147
  children: [
3144
3148
  createSeedReactElement("Icon", {
3145
- svg: ctx.iconHandler.transform(props["Icon#8722:41"])
3149
+ svg: ctx.iconHandler.transform(props["Icon#28796:0"])
3146
3150
  })
3147
3151
  ]
3148
3152
  })).with("Icon First", ()=>({
3149
3153
  layout: "withText",
3150
3154
  children: [
3151
3155
  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"])
3156
+ svg: ctx.iconHandler.transform(props["Icon#28796:0"])
3172
3157
  }),
3173
- props["Label#7185:0"].value,
3174
- createSeedReactElement("SuffixIcon", {
3175
- svg: ctx.iconHandler.transform(props["Suffix Icon#8722:82"])
3176
- })
3158
+ props["Label#28936:0"].value
3177
3159
  ]
3178
- })).with("Text Only", ()=>({
3179
- layout: "withText",
3180
- children: props["Label#7185:0"].value
3181
3160
  })).exhaustive();
3182
3161
  const commonProps = {
3183
- size: handleSizeProp(props.Size.value),
3184
- layout,
3185
- ...states.includes("Selected") && {
3186
- defaultChecked: true
3187
- },
3188
3162
  ...states.includes("Disabled") && {
3189
3163
  disabled: true
3190
3164
  },
3191
- ...props["Show Count#7185:42"].value && {
3192
- count: Number(props["Count#7185:21"].value)
3193
- }
3165
+ ...states.includes("Loading") && {
3166
+ loading: true
3167
+ },
3168
+ variant: tsPattern.match(props.Variant.value).with("Solid", ()=>"solid").with("Layer", ()=>"layer").exhaustive(),
3169
+ layout
3194
3170
  };
3195
- return createLocalSnippetElement$f("ControlChip.Toggle", commonProps, children);
3171
+ return createLocalSnippetElement$g("ContextualFloatingButton", commonProps, children);
3172
+ });
3173
+
3174
+ const createDividerHandler = (_ctx)=>defineComponentHandler(metadata$q.key, ({ componentProperties: props })=>{
3175
+ const { color } = tsPattern.match(props.Tone.value).with("Neutral", ()=>({
3176
+ color: "stroke.neutral"
3177
+ })).with("Neutral Muted", ()=>({
3178
+ color: "stroke.neutralMuted"
3179
+ })).exhaustive();
3180
+ return createSeedReactElement("Divider", {
3181
+ color
3182
+ });
3196
3183
  });
3197
3184
 
3198
- const { createLocalSnippetElement: createLocalSnippetElement$e } = createLocalSnippetHelper("error-state");
3185
+ const { createLocalSnippetElement: createLocalSnippetElement$f } = createLocalSnippetHelper("error-state");
3199
3186
  const createErrorStateHandler = (ctx)=>{
3200
3187
  const actionButtonHandler = createActionButtonHandler(ctx);
3201
- return defineComponentHandler(metadata$r.key, (node)=>{
3188
+ return defineComponentHandler(metadata$H.key, (node, traverse)=>{
3202
3189
  const props = node.componentProperties;
3203
3190
  const [actionButtonNode] = findAllInstances({
3204
3191
  node,
@@ -3212,96 +3199,47 @@ const createErrorStateHandler = (ctx)=>{
3212
3199
  description: props["Description#16237:5"].value,
3213
3200
  ...actionButtonNode && {
3214
3201
  primaryActionProps: {
3215
- children: actionButtonHandler.transform(actionButtonNode).children[0]
3202
+ children: actionButtonHandler.transform(actionButtonNode, traverse).children[0]
3216
3203
  },
3217
3204
  secondaryActionProps: {
3218
3205
  children: props["Secondary Action Label#17042:0"].value
3219
3206
  }
3220
3207
  }
3221
3208
  };
3222
- return createLocalSnippetElement$e("ErrorState", commonProps);
3209
+ return createLocalSnippetElement$f("ErrorState", commonProps);
3223
3210
  });
3224
3211
  };
3225
3212
 
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: changeCase.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({
3213
+ const { createLocalSnippetElement: createLocalSnippetElement$e } = createLocalSnippetHelper("floating-action-button");
3214
+ const BUTTON_TYPE_KEY = "8cecc85275115d653579d4c3156567ebf19f7b27";
3215
+ const MENU_TYPE_KEY = "400124347392c15473f9cd2d8a6aedb64f3baf36";
3216
+ const createFloatingActionButtonHandler = (ctx)=>defineComponentHandler(metadata$p.key, (node)=>{
3217
+ const [button] = findAllInstances({
3248
3218
  node,
3249
- key: extendedActionSheetItemHandler.key
3219
+ key: BUTTON_TYPE_KEY
3250
3220
  });
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({
3221
+ const [menu] = findAllInstances({
3260
3222
  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: changeCase.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 중 하나를 제공해야 합니다."
3223
+ key: MENU_TYPE_KEY
3300
3224
  });
3225
+ const commonProps = (()=>{
3226
+ if (button) return {
3227
+ icon: ctx.iconHandler.transform(button.componentProperties["Icon#29766:18"]),
3228
+ extended: button.componentProperties.Extended.value === "True",
3229
+ label: button.componentProperties["Label#29808:0"].value
3230
+ };
3231
+ if (menu) return {
3232
+ icon: ctx.iconHandler.transform(menu.componentProperties["Icon#29766:0"]),
3233
+ extended: menu.componentProperties.Extended.value === "True",
3234
+ label: menu.componentProperties["Label#29766:9"].value
3235
+ };
3236
+ })();
3237
+ return createLocalSnippetElement$e("FloatingActionButton", commonProps);
3301
3238
  });
3302
3239
 
3303
- const { createLocalSnippetElement: createLocalSnippetElement$c } = createLocalSnippetHelper("help-bubble");
3304
- const createHelpBubbleHandler = (_ctx)=>defineComponentHandler(metadata$n.key, ({ componentProperties: props })=>{
3240
+ const { createLocalSnippetElement: createLocalSnippetElement$d } = createLocalSnippetHelper("help-bubble");
3241
+ const { createLocalSnippetElement: createLocalSnippetElementTrigger$1 } = createLocalSnippetHelper("action-button");
3242
+ const createHelpBubbleHandler = (_ctx)=>defineComponentHandler(metadata$o.key, ({ componentProperties: props })=>{
3305
3243
  const placement = (()=>{
3306
3244
  switch(props.Placement.value){
3307
3245
  case "Bottom-Left":
@@ -3335,35 +3273,19 @@ const createHelpBubbleHandler = (_ctx)=>defineComponentHandler(metadata$n.key, (
3335
3273
  ...props["Show Description#62499:0"].value && {
3336
3274
  description: props["Description#62535:98"].value
3337
3275
  },
3338
- showCloseButton: props["Show Close Button"].value === "True",
3339
3276
  defaultOpen: true,
3340
3277
  placement
3341
3278
  };
3342
- return createLocalSnippetElement$c("HelpBubbleTrigger", commonProps, createElement("button", undefined, "열기", {
3343
- comment: "HelpBubble을 여는 요소를 제공해주세요."
3344
- }));
3279
+ return createLocalSnippetElement$d("HelpBubbleTrigger", commonProps, createLocalSnippetElementTrigger$1("ActionButton", {}, "HelpBubble 열기"));
3345
3280
  });
3346
3281
 
3347
- const { createLocalSnippetElement: createLocalSnippetElement$b } = createLocalSnippetHelper("inline-banner");
3348
- const createInlineBannerHandler = (ctx)=>defineComponentHandler(metadata$l.key, (node)=>{
3282
+ const { createLocalSnippetElement: createLocalSnippetElement$c } = createLocalSnippetHelper("inline-banner");
3283
+ const createInlineBannerHandler = (ctx)=>defineComponentHandler(metadata$n.key, (node)=>{
3349
3284
  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
- })();
3285
+ const tag = tsPattern.match(props.Interaction.value).with("Default", ()=>"InlineBanner").with("Actionable", ()=>"ActionableInlineBanner").with("Dismissible", ()=>"DismissibleInlineBanner").with("Link", ()=>"InlineBanner").exhaustive();
3364
3286
  const textNode = findOne(node, (child)=>child.type === "TEXT" && child.name === "Label");
3365
3287
  if (!textNode) {
3366
- return createLocalSnippetElement$b(tag, undefined, undefined, {
3288
+ return createLocalSnippetElement$c(tag, undefined, undefined, {
3367
3289
  comment: "내용을 제공해주세요."
3368
3290
  });
3369
3291
  }
@@ -3397,20 +3319,92 @@ const createInlineBannerHandler = (ctx)=>defineComponentHandler(metadata$l.key,
3397
3319
  },
3398
3320
  prefixIcon
3399
3321
  };
3400
- return createLocalSnippetElement$b(tag, commonProps);
3322
+ return createLocalSnippetElement$c(tag, commonProps);
3323
+ });
3324
+
3325
+ const { createLocalSnippetElement: createLocalSnippetElement$b } = createLocalSnippetHelper("manner-temp-badge");
3326
+ const createMannerTempBadgeHandler = (_ctx)=>defineComponentHandler(metadata$j.key, ({ children })=>{
3327
+ const textNode = children.find((child)=>child.type === "TEXT");
3328
+ const commonProps = {
3329
+ temperature: Number(textNode?.characters.replace(/[^\d.-]/g, "") ?? "-1")
3330
+ };
3331
+ return createLocalSnippetElement$b("MannerTempBadge", commonProps);
3401
3332
  });
3402
3333
 
3403
- const { createLocalSnippetElement: createLocalSnippetElement$a } = createLocalSnippetHelper("manner-temp-badge");
3404
- const createMannerTempBadgeHandler = (_ctx)=>defineComponentHandler(metadata$g.key, ({ children })=>{
3334
+ const { createLocalSnippetElement: createLocalSnippetElement$a } = createLocalSnippetHelper("manner-temp");
3335
+ const createMannerTempHandler = (_ctx)=>defineComponentHandler(metadata$k.key, ({ children })=>{
3405
3336
  const textNode = children.find((child)=>child.type === "TEXT");
3406
3337
  const commonProps = {
3407
3338
  temperature: Number(textNode?.characters.replace(/[^\d.-]/g, "") ?? "-1")
3408
3339
  };
3409
- return createLocalSnippetElement$a("MannerTempBadge", commonProps);
3340
+ return createLocalSnippetElement$a("MannerTemp", commonProps);
3341
+ });
3342
+
3343
+ const { createLocalSnippetElement: createLocalSnippetElement$9 } = createLocalSnippetHelper("menu-sheet");
3344
+ const { createLocalSnippetElement: createLocalSnippetElementTrigger } = createLocalSnippetHelper("action-button");
3345
+ const MENU_SHEET_ITEM_KEY = "057083e95466da59051119eec0b41d4ad5a07f8f";
3346
+ const createMenuSheetItemHandler = (ctx)=>defineComponentHandler(MENU_SHEET_ITEM_KEY, ({ componentProperties: props })=>{
3347
+ const states = props.State.value.split("-");
3348
+ const commonProps = {
3349
+ tone: changeCase.camelCase(props.Tone.value),
3350
+ ...states.includes("Disabled") && {
3351
+ disabled: true
3352
+ }
3353
+ };
3354
+ return createLocalSnippetElement$9("MenuSheetItem", commonProps, [
3355
+ props["Show Prefix Icon#17043:5"].value ? createSeedReactElement("PrefixIcon", {
3356
+ svg: ctx.iconHandler.transform(props["Prefix Icon#55948:0"])
3357
+ }) : undefined,
3358
+ props["Label#55905:8"].value
3359
+ ]);
3360
+ });
3361
+ const MENU_SHEET_GROUP_KEY = "2a504a1c6b7810d5e652862dcba2cb7048f9eb16";
3362
+ const createMenuSheetGroupHandler = (ctx)=>{
3363
+ const menuSheetItemHandler = createMenuSheetItemHandler(ctx);
3364
+ return defineComponentHandler(MENU_SHEET_GROUP_KEY, (node, traverse)=>{
3365
+ const items = findAllInstances({
3366
+ node,
3367
+ key: menuSheetItemHandler.key
3368
+ });
3369
+ const contentChildren = items.map((item)=>menuSheetItemHandler.transform(item, traverse));
3370
+ return createLocalSnippetElement$9("MenuSheetGroup", undefined, contentChildren);
3371
+ });
3372
+ };
3373
+ const createMenuSheetHandler = (ctx)=>{
3374
+ const menuSheetGroupHandler = createMenuSheetGroupHandler(ctx);
3375
+ return defineComponentHandler(metadata$i.key, (node, traverse)=>{
3376
+ const { componentProperties: props } = node;
3377
+ const groups = findAllInstances({
3378
+ node,
3379
+ key: menuSheetGroupHandler.key
3380
+ });
3381
+ const contentChildren = groups.map((group)=>menuSheetGroupHandler.transform(group, traverse));
3382
+ const title = props["Show Header#17043:12"].value ? props["Title Text#14599:0"].value : undefined;
3383
+ // TODO: React 구현체에 description 추가 이후
3384
+ // const description = props["Description Text#21827:0"].value;
3385
+ const { labelAlignment } = tsPattern.match(props.Layout.value).with("Text with Icon", ()=>({
3386
+ labelAlignment: undefined
3387
+ })).with("Text Only", ()=>({
3388
+ labelAlignment: "center"
3389
+ })).exhaustive();
3390
+ const content = createLocalSnippetElement$9("MenuSheetContent", {
3391
+ title,
3392
+ labelAlignment
3393
+ }, contentChildren, {
3394
+ comment: title ? undefined : "title을 제공하지 않는 경우 aria-label이나 aria-labelledby 중 하나를 제공해야 합니다."
3395
+ });
3396
+ const trigger = createLocalSnippetElement$9("MenuSheetTrigger", {
3397
+ asChild: true
3398
+ }, createLocalSnippetElementTrigger("ActionButton", {}, "MenuSheet 열기"));
3399
+ return createLocalSnippetElement$9("MenuSheet", undefined, [
3400
+ trigger,
3401
+ content
3402
+ ]);
3410
3403
  });
3404
+ };
3411
3405
 
3412
- const { createLocalSnippetElement: createLocalSnippetElement$9 } = createLocalSnippetHelper("multiline-text-field");
3413
- const createMultilineTextFieldHandler = (_ctx)=>defineComponentHandler(metadata$f.key, ({ componentProperties: props })=>{
3406
+ const { createLocalSnippetElement: createLocalSnippetElement$8 } = createLocalSnippetHelper("text-field");
3407
+ const createMultilineTextFieldHandler = (_ctx)=>defineComponentHandler(metadata$h.key, ({ componentProperties: props })=>{
3414
3408
  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
3409
  const states = state.split("-");
3416
3410
  const commonProps = {
@@ -3451,12 +3445,12 @@ const createMultilineTextFieldHandler = (_ctx)=>defineComponentHandler(metadata$
3451
3445
  const inputProps = {
3452
3446
  placeholder
3453
3447
  };
3454
- const TextFieldChildren = createLocalSnippetElement$9("TextFieldTextarea", inputProps);
3455
- return createLocalSnippetElement$9("TextField", commonProps, TextFieldChildren);
3448
+ const TextFieldChildren = createLocalSnippetElement$8("TextFieldTextarea", inputProps);
3449
+ return createLocalSnippetElement$8("TextField", commonProps, TextFieldChildren);
3456
3450
  });
3457
3451
 
3458
- const { createLocalSnippetElement: createLocalSnippetElement$8 } = createLocalSnippetHelper("progress-circle");
3459
- const createProgressCircleHandler = (_ctx)=>defineComponentHandler(metadata$e.key, ({ componentProperties: props })=>{
3452
+ const { createLocalSnippetElement: createLocalSnippetElement$7 } = createLocalSnippetHelper("progress-circle");
3453
+ const createProgressCircleHandler = (_ctx)=>defineComponentHandler(metadata$g.key, ({ componentProperties: props })=>{
3460
3454
  const { value, minValue, maxValue } = tsPattern.match(props.Value.value).with("Indeterminate", ()=>({
3461
3455
  value: undefined,
3462
3456
  minValue: undefined,
@@ -3483,13 +3477,15 @@ const createProgressCircleHandler = (_ctx)=>defineComponentHandler(metadata$e.ke
3483
3477
  minValue,
3484
3478
  maxValue,
3485
3479
  size: props.Size.value,
3486
- tone: changeCase.camelCase(props.Tone.value)
3480
+ ...props.Tone.value !== "Custom(inherit)" && {
3481
+ tone: changeCase.camelCase(props.Tone.value)
3482
+ }
3487
3483
  };
3488
- return createLocalSnippetElement$8("ProgressCircle", commonProps);
3484
+ return createLocalSnippetElement$7("ProgressCircle", commonProps);
3489
3485
  });
3490
3486
 
3491
- const { createLocalSnippetElement: createLocalSnippetElement$7 } = createLocalSnippetHelper("reaction-button");
3492
- const createReactionButtonHandler = (ctx)=>defineComponentHandler(metadata$b.key, ({ componentProperties: props })=>{
3487
+ const { createLocalSnippetElement: createLocalSnippetElement$6 } = createLocalSnippetHelper("reaction-button");
3488
+ const createReactionButtonHandler = (ctx)=>defineComponentHandler(metadata$c.key, ({ componentProperties: props })=>{
3493
3489
  const states = props.State.value.split("-");
3494
3490
  const commonProps = {
3495
3491
  size: handleSizeProp(props.Size.value),
@@ -3503,7 +3499,7 @@ const createReactionButtonHandler = (ctx)=>defineComponentHandler(metadata$b.key
3503
3499
  defaultPressed: true
3504
3500
  }
3505
3501
  };
3506
- return createLocalSnippetElement$7("ReactionButton", commonProps, [
3502
+ return createLocalSnippetElement$6("ReactionButton", commonProps, [
3507
3503
  createSeedReactElement("PrefixIcon", {
3508
3504
  svg: ctx.iconHandler.transform(props["Icon#12379:0"])
3509
3505
  }),
@@ -3512,7 +3508,7 @@ const createReactionButtonHandler = (ctx)=>defineComponentHandler(metadata$b.key
3512
3508
  ]);
3513
3509
  });
3514
3510
 
3515
- const { createLocalSnippetElement: createLocalSnippetElement$6 } = createLocalSnippetHelper("segmented-control");
3511
+ const { createLocalSnippetElement: createLocalSnippetElement$5 } = createLocalSnippetHelper("segmented-control");
3516
3512
  const SEGMENTED_CONTROL_ITEM_KEY = "9a7ba0d4c041ddbce84ee48881788434fd6bccc8";
3517
3513
  const createSegmentedControlItemHandler = (_ctx)=>defineComponentHandler(SEGMENTED_CONTROL_ITEM_KEY, ({ componentProperties: props })=>{
3518
3514
  const states = props.State.value.split("-");
@@ -3522,69 +3518,72 @@ const createSegmentedControlItemHandler = (_ctx)=>defineComponentHandler(SEGMENT
3522
3518
  disabled: true
3523
3519
  }
3524
3520
  };
3525
- return createLocalSnippetElement$6("SegmentedControlItem", commonProps, props["Label#11366:15"].value);
3521
+ return createLocalSnippetElement$5("SegmentedControlItem", commonProps, props["Label#11366:15"].value);
3526
3522
  });
3527
3523
  const createSegmentedControlHandler = (ctx)=>{
3528
3524
  const segmentedControlItemHandler = createSegmentedControlItemHandler();
3529
- return defineComponentHandler(metadata$a.key, (node)=>{
3525
+ return defineComponentHandler(metadata$9.key, (node, traverse)=>{
3530
3526
  const segments = findAllInstances({
3531
3527
  node,
3532
3528
  key: segmentedControlItemHandler.key
3533
3529
  });
3534
3530
  const selectedSegment = segments.find((segment)=>segment.componentProperties.State.value.split("-").includes("Selected"));
3535
- const segmentedControlChildren = segments.map(segmentedControlItemHandler.transform);
3531
+ const segmentedControlChildren = segments.map((segment)=>segmentedControlItemHandler.transform(segment, traverse));
3536
3532
  const commonProps = {
3537
3533
  ...selectedSegment && {
3538
3534
  defaultValue: selectedSegment.componentProperties["Label#11366:15"].value
3539
3535
  }
3540
3536
  };
3541
- return createLocalSnippetElement$6("SegmentedControl", commonProps, segmentedControlChildren, {
3537
+ return createLocalSnippetElement$5("SegmentedControl", commonProps, segmentedControlChildren, {
3542
3538
  comment: "aria-label이나 aria-labelledby 중 하나를 제공해야 합니다."
3543
3539
  });
3544
3540
  });
3545
3541
  };
3546
3542
 
3547
- const { createLocalSnippetElement: createLocalSnippetElement$5 } = createLocalSnippetHelper("select-box");
3548
- const createSelectBoxHandler = (_ctx)=>defineComponentHandler(metadata$9.key, ({ componentProperties: props })=>{
3549
- const tag = tsPattern.match(props.Control.value).with("Checkbox", ()=>"CheckSelectBox").with("Radio", ()=>"RadioSelectBox").exhaustive();
3543
+ const { createLocalSnippetElement: createLocalSnippetElement$4 } = createLocalSnippetHelper("select-box");
3544
+ const createSelectBoxHandler = (_ctx)=>defineComponentHandler(metadata$8.key, ({ componentProperties: props })=>{
3545
+ const tag = tsPattern.match(props.Control.value).with("Checkbox", ()=>"CheckSelectBox").with("Radio", ()=>"RadioSelectBoxItem").exhaustive();
3550
3546
  const states = props.State.value.split("-");
3551
3547
  const commonProps = {
3552
3548
  label: props["Label#3635:0"].value,
3553
3549
  ...props["Show Description#3033:0"].value && {
3554
3550
  description: props["Description #3033:5"].value
3555
3551
  },
3556
- ...tag === "RadioSelectBox" && {
3552
+ ...tag === "RadioSelectBoxItem" && {
3557
3553
  value: props["Label#3635:0"].value
3558
3554
  },
3559
3555
  ...tag === "CheckSelectBox" && states.includes("Selected") && {
3560
3556
  defaultChecked: true
3561
3557
  }
3562
3558
  };
3563
- return createLocalSnippetElement$5(tag, commonProps);
3559
+ return createLocalSnippetElement$4(tag, commonProps);
3564
3560
  });
3565
3561
  const createSelectBoxGroupHandler = (ctx)=>{
3566
3562
  const selectBoxHandler = createSelectBoxHandler();
3567
- return defineComponentHandler(metadata$H.key, (node)=>{
3563
+ return defineComponentHandler(metadata$G.key, (node, traverse)=>{
3568
3564
  const props = node.componentProperties;
3569
- const tag = tsPattern.match(props.Control.value).with("Checkbox", ()=>"CheckSelectBoxGroup").with("Radio", ()=>"RadioSelectBoxGroup").exhaustive();
3565
+ const tag = tsPattern.match(props.Control.value).with("Checkbox", ()=>"CheckSelectBoxGroup").with("Radio", ()=>"RadioSelectBoxRoot").exhaustive();
3570
3566
  const selectBoxes = findAllInstances({
3571
3567
  node,
3572
3568
  key: selectBoxHandler.key
3573
3569
  });
3574
3570
  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));
3571
+ // traverse the container like it's a frame
3572
+ const vStackProps = traverse({
3573
+ ...node,
3574
+ type: "FRAME"
3575
+ })?.props;
3576
+ const stack = createSeedReactElement("VStack", vStackProps, selectBoxes.map((box)=>selectBoxHandler.transform(box, traverse)));
3578
3577
  const commonProps = {
3579
- ...tag === "RadioSelectBoxGroup" && {
3578
+ ...tag === "RadioSelectBoxRoot" && {
3580
3579
  defaultValue: selectedSelectBox?.componentProperties["Label#3635:0"].value
3581
3580
  }
3582
3581
  };
3583
- return createLocalSnippetElement$5(tag, commonProps, stack);
3582
+ return createLocalSnippetElement$4(tag, commonProps, stack);
3584
3583
  });
3585
3584
  };
3586
3585
 
3587
- const createSkeletonHandler = (ctx)=>defineComponentHandler(metadata$8.key, (node)=>{
3586
+ const createSkeletonHandler = (ctx)=>defineComponentHandler(metadata$7.key, (node)=>{
3588
3587
  const { componentProperties: props, layoutSizingHorizontal, layoutSizingVertical } = node;
3589
3588
  const commonProps = {
3590
3589
  radius: changeCase.camelCase(props.Radius.value),
@@ -3594,28 +3593,25 @@ const createSkeletonHandler = (ctx)=>defineComponentHandler(metadata$8.key, (nod
3594
3593
  return createSeedReactElement("Skeleton", commonProps);
3595
3594
  });
3596
3595
 
3597
- const { createLocalSnippetElement: createLocalSnippetElement$4 } = createLocalSnippetHelper("snackbar");
3598
- const createSnackbarHandler = (_ctx)=>defineComponentHandler(metadata$6.key, ({ componentProperties: props })=>{
3596
+ const { createLocalSnippetElement: createLocalSnippetElement$3 } = createLocalSnippetHelper("snackbar");
3597
+ const createSnackbarHandler = (_ctx)=>defineComponentHandler(metadata$5.key, ({ componentProperties: props })=>{
3599
3598
  const commonProps = {
3600
3599
  message: props["Message#1528:4"].value,
3601
3600
  variant: changeCase.camelCase(props.Variant.value),
3602
- ...props["Show Action Button#1528:0"].value && {
3603
- actionLabel: props["Action Button Label#1528:8"].value
3601
+ ...props["Show Action#1528:0"].value && {
3602
+ actionLabel: props["Action Label#1528:8"].value
3604
3603
  }
3605
3604
  };
3606
3605
  // TODO: adapter.create({ render })
3607
- return createLocalSnippetElement$4("Snackbar", commonProps);
3606
+ return createLocalSnippetElement$3("Snackbar", commonProps);
3608
3607
  });
3609
3608
 
3610
- const { createLocalSnippetElement: createLocalSnippetElement$3 } = createLocalSnippetHelper("switch");
3609
+ const { createLocalSnippetElement: createLocalSnippetElement$2 } = createLocalSnippetHelper("switch");
3611
3610
  const createSwitchHandler = (_ctx)=>defineComponentHandler(metadata$4.key, ({ componentProperties: props })=>{
3612
3611
  const states = props.State.value.split("-");
3613
- const size = handleSizeProp(props.Size.value);
3614
3612
  const commonProps = {
3615
- size,
3616
- ...size === "small" && {
3617
- label: props["Label#15191:2"].value
3618
- },
3613
+ size: props.Size.value,
3614
+ label: props["Label#36578:0"].value,
3619
3615
  ...states.includes("Selected") && {
3620
3616
  defaultChecked: true
3621
3617
  },
@@ -3623,115 +3619,11 @@ const createSwitchHandler = (_ctx)=>defineComponentHandler(metadata$4.key, ({ co
3623
3619
  disabled: true
3624
3620
  }
3625
3621
  };
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: changeCase.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 } = tsPattern.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: changeCase.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);
3622
+ return createLocalSnippetElement$2("Switch", commonProps);
3731
3623
  });
3732
3624
 
3733
3625
  const { createLocalSnippetElement: createLocalSnippetElement$1 } = createLocalSnippetHelper("text-field");
3734
- const createTextFieldHandler = (ctx)=>defineComponentHandler(metadata$1.key, ({ componentProperties: props })=>{
3626
+ const createTextFieldHandler = (ctx)=>defineComponentHandler(metadata$2.key, ({ componentProperties: props })=>{
3735
3627
  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
3628
  const states = state.split("-");
3737
3629
  const commonProps = {
@@ -3790,7 +3682,7 @@ const createTextFieldHandler = (ctx)=>defineComponentHandler(metadata$1.key, ({
3790
3682
  });
3791
3683
 
3792
3684
  const { createLocalSnippetElement } = createLocalSnippetHelper("toggle-button");
3793
- const createToggleButtonHandler = (ctx)=>defineComponentHandler(metadata.key, ({ componentProperties: props })=>{
3685
+ const createToggleButtonHandler = (ctx)=>defineComponentHandler(metadata$1.key, ({ componentProperties: props })=>{
3794
3686
  const states = props.State.value.split("-");
3795
3687
  const commonProps = {
3796
3688
  variant: changeCase.camelCase(props.Variant.value),
@@ -3820,25 +3712,27 @@ function bindComponentHandler(unbound, deps) {
3820
3712
  return unbound(deps);
3821
3713
  }
3822
3714
  const unboundSeedComponentHandlers = [
3715
+ createActionButtonGhostHandler,
3823
3716
  createActionButtonHandler,
3824
- createActionChipHandler,
3825
- createActionSheetHandler,
3717
+ createAlertDialogHandler,
3826
3718
  createAppBarHandler,
3827
3719
  createAvatarHandler,
3828
3720
  createAvatarStackHandler,
3829
3721
  createBadgeHandler,
3722
+ createBottomSheetHandler,
3830
3723
  createCalloutHandler,
3831
3724
  createCheckboxHandler,
3832
- createChipTabsHandler,
3833
- createControlChipHandler,
3725
+ createChipHandler,
3726
+ createContextualFloatingButtonHandler,
3727
+ createDividerHandler,
3834
3728
  createErrorStateHandler,
3835
- createExtendedActionSheetHandler,
3836
- createExtendedFabHandler,
3837
- createFabHandler,
3729
+ createFloatingActionButtonHandler,
3838
3730
  createHelpBubbleHandler,
3839
3731
  createIdentityPlaceholderHandler,
3840
3732
  createInlineBannerHandler,
3841
3733
  createMannerTempBadgeHandler,
3734
+ createMannerTempHandler,
3735
+ createMenuSheetHandler,
3842
3736
  createMultilineTextFieldHandler,
3843
3737
  createProgressCircleHandler,
3844
3738
  createReactionButtonHandler,
@@ -3848,8 +3742,6 @@ const unboundSeedComponentHandlers = [
3848
3742
  createSkeletonHandler,
3849
3743
  createSnackbarHandler,
3850
3744
  createSwitchHandler,
3851
- createTabsHandler,
3852
- createTextButtonHandler,
3853
3745
  createTextFieldHandler,
3854
3746
  createToggleButtonHandler
3855
3747
  ];
@@ -6629,6 +6521,99 @@ const FIGMA_ICONS = {
6629
6521
  }
6630
6522
  };
6631
6523
 
6524
+ const FIGMA_FILL_STYLES = [
6525
+ {
6526
+ styleType: "FILL",
6527
+ key: "46186d7dd037e8e54983ee6677cf7915790d84cc",
6528
+ name: "gradient/fade/layer-floating/↑(to-top)",
6529
+ description: "스크롤이 가능하도록 그라디언트로 특정 영역을 덮는 요소로 사용해요.",
6530
+ remote: false
6531
+ },
6532
+ {
6533
+ styleType: "FILL",
6534
+ key: "b28d9c9adc816fdd4ecec3a0b3e25d8aec802b6a",
6535
+ name: "gradient/fade/layer-floating/↓(to-bottom)",
6536
+ description: "스크롤이 가능하도록 그라디언트로 특정 영역을 덮는 요소로 사용해요.",
6537
+ remote: false
6538
+ },
6539
+ {
6540
+ styleType: "FILL",
6541
+ key: "063c0dc05b438ac36499492e783520a722782d74",
6542
+ name: "gradient/fade/layer-floating/→(to-right)",
6543
+ description: "스크롤이 가능하도록 그라디언트로 특정 영역을 덮는 요소로 사용해요.",
6544
+ remote: false
6545
+ },
6546
+ {
6547
+ styleType: "FILL",
6548
+ key: "c1cee6b89c357c6a12d020654d73a4490cafdf51",
6549
+ name: "gradient/fade/layer-default/←(to-left)",
6550
+ description: "스크롤이 가능하도록 그라디언트로 특정 영역을 덮는 요소로 사용해요.",
6551
+ remote: false
6552
+ },
6553
+ {
6554
+ styleType: "FILL",
6555
+ key: "826457503b7ee3d472eab91581b1fcd499c47c00",
6556
+ name: "gradient/fade/layer-default/↑(to-top)",
6557
+ description: "스크롤이 가능하도록 그라디언트로 특정 영역을 덮는 요소로 사용해요.",
6558
+ remote: false
6559
+ },
6560
+ {
6561
+ styleType: "FILL",
6562
+ key: "df22450a8f8e9c323baf40d8981920d1b6376cbf",
6563
+ name: "gradient/fade/layer-floating/←(to-left)",
6564
+ description: "스크롤이 가능하도록 그라디언트로 특정 영역을 덮는 요소로 사용해요.",
6565
+ remote: false
6566
+ },
6567
+ {
6568
+ styleType: "FILL",
6569
+ key: "ff436e73cf9477a1006e6f8a1f9d2c9dbe0e5edd",
6570
+ name: "gradient/fade/layer-default/→(to-right)",
6571
+ description: "스크롤이 가능하도록 그라디언트로 특정 영역을 덮는 요소로 사용해요.",
6572
+ remote: false
6573
+ },
6574
+ {
6575
+ styleType: "FILL",
6576
+ key: "353baa82e0440385eb121cd0ae98d2fcb1a70b18",
6577
+ name: "gradient/glow/magic",
6578
+ description: "반짝이는 것처럼 느껴지는 배경에 쓰이는 ai 컬러입니다.",
6579
+ remote: false
6580
+ },
6581
+ {
6582
+ styleType: "FILL",
6583
+ key: "f83f54c1840aaf26742629e2c696c363b8df0a82",
6584
+ name: "gradient/glow/magic-pressed",
6585
+ description: "반짝이는 것처럼 느껴지는 배경에 쓰이는 ai 컬러의 pressed컬러입니다.",
6586
+ remote: false
6587
+ },
6588
+ {
6589
+ styleType: "FILL",
6590
+ key: "408cb970f1de672217f452152b0398a4bb4f4e12",
6591
+ name: "gradient/fade/layer-default/↓(to-bottom)",
6592
+ description: "스크롤이 가능하도록 그라디언트로 특정 영역을 덮는 요소로 사용해요.",
6593
+ remote: false
6594
+ },
6595
+ {
6596
+ styleType: "FILL",
6597
+ key: "71971dde923a11c615296a16f8172c0671d5a3a6",
6598
+ name: "gradient/shimmer/neutral",
6599
+ description: "Skeleton shimmer",
6600
+ remote: false
6601
+ },
6602
+ {
6603
+ styleType: "FILL",
6604
+ key: "2ed61bff1a187f39389698cf63b74d6997aed609",
6605
+ name: "gradient/shimmer/magic",
6606
+ description: "Skeleton AI shimmer",
6607
+ remote: false
6608
+ },
6609
+ {
6610
+ styleType: "FILL",
6611
+ key: "1101a7c6a505d97904c3a0ce6a9ee17fe15de879",
6612
+ name: "gradient/highlight/magic",
6613
+ description: "아이콘 및 shape 영역에서 AI 기능을 표현할 때 사용하는 컬러입니다.",
6614
+ remote: false
6615
+ }
6616
+ ];
6632
6617
  const FIGMA_TEXT_STYLES = [
6633
6618
  {
6634
6619
  styleType: "TEXT",
@@ -13698,7 +13683,10 @@ function createVariableService({ variableRepository, inferCompareFunction }) {
13698
13683
  };
13699
13684
  }
13700
13685
 
13701
- const styleRepository = createStaticStyleRepository(FIGMA_TEXT_STYLES);
13686
+ const styleRepository = createStaticStyleRepository([
13687
+ ...FIGMA_TEXT_STYLES,
13688
+ ...FIGMA_FILL_STYLES
13689
+ ]);
13702
13690
  const variableRepository = createStaticVariableRepository({
13703
13691
  variables: FIGMA_VARIABLES,
13704
13692
  variableCollections: FIGMA_VARIABLE_COLLECTIONS
@@ -13783,9 +13771,36 @@ function toCssRgba(color) {
13783
13771
  }
13784
13772
 
13785
13773
  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 })=>changeCase.camelCase(slug[slug.length - 1], {
13774
+ const defaultTextStyleNameFormatter = ({ slug })=>{
13775
+ return changeCase.camelCase(slug[slug.length - 1], {
13787
13776
  mergeAmbiguousCharacters: true
13788
13777
  });
13778
+ };
13779
+ const defaultFillStyleResolver = ({ slug })=>{
13780
+ const [, ...rest] = slug;
13781
+ if (rest[0] === "fade") {
13782
+ // ["fade", "layer-default", "↓(to-bottom)"]
13783
+ const last = rest[rest.length - 1];
13784
+ const direction = (()=>{
13785
+ if (last.startsWith("↓")) return "to bottom";
13786
+ if (last.startsWith("↑")) return "to top";
13787
+ if (last.startsWith("→")) return "to right";
13788
+ if (last.startsWith("←")) return "to left";
13789
+ return "unknown";
13790
+ })();
13791
+ return {
13792
+ value: changeCase.camelCase(rest.slice(0, -1).join("-"), {
13793
+ mergeAmbiguousCharacters: true
13794
+ }),
13795
+ direction
13796
+ };
13797
+ }
13798
+ return {
13799
+ value: changeCase.camelCase(rest.join("-"), {
13800
+ mergeAmbiguousCharacters: true
13801
+ })
13802
+ };
13803
+ };
13789
13804
  const defaultRawValueFormatters = {
13790
13805
  color: (value)=>toCssRgba(value),
13791
13806
  dimension: (value)=>toCssPixel(value),
@@ -13802,7 +13817,8 @@ function createPipeline(options = {}) {
13802
13817
  variableService,
13803
13818
  variableNameFormatter: defaultVariableNameFormatter,
13804
13819
  styleService,
13805
- styleNameFormatter: defaultStyleNameFormatter,
13820
+ textStyleNameFormatter: defaultTextStyleNameFormatter,
13821
+ fillStyleResolver: defaultFillStyleResolver,
13806
13822
  rawValueFormatters: defaultRawValueFormatters,
13807
13823
  shouldInferVariableName
13808
13824
  });