@seed-design/figma 1.1.0 → 1.1.3

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 (30) hide show
  1. package/lib/codegen/index.cjs +366 -286
  2. package/lib/codegen/index.d.ts +663 -256
  3. package/lib/codegen/index.d.ts.map +1 -1
  4. package/lib/codegen/index.js +366 -286
  5. package/lib/codegen/targets/react/index.cjs +1155 -542
  6. package/lib/codegen/targets/react/index.d.ts.map +1 -1
  7. package/lib/codegen/targets/react/index.js +1155 -542
  8. package/lib/index.cjs +394 -286
  9. package/lib/index.js +394 -286
  10. package/package.json +2 -2
  11. package/src/codegen/component-properties.ts +496 -103
  12. package/src/codegen/targets/react/component/handlers/bottom-sheet.ts +2 -3
  13. package/src/codegen/targets/react/component/handlers/error-state.ts +18 -6
  14. package/src/codegen/targets/react/component/handlers/field-button.ts +197 -0
  15. package/src/codegen/targets/react/component/handlers/field.ts +167 -0
  16. package/src/codegen/targets/react/component/handlers/legacy-text-field.ts +196 -0
  17. package/src/codegen/targets/react/component/handlers/slider.ts +114 -0
  18. package/src/codegen/targets/react/component/handlers/text-field.ts +245 -92
  19. package/src/codegen/targets/react/component/index.ts +48 -23
  20. package/src/codegen/targets/react/element-factories.ts +1 -1
  21. package/src/codegen/targets/react/instance.ts +23 -2
  22. package/src/entities/data/__generated__/component-sets/index.d.ts +225 -222
  23. package/src/entities/data/__generated__/component-sets/index.mjs +225 -222
  24. package/src/entities/data/__generated__/components/index.d.ts +121 -0
  25. package/src/entities/data/__generated__/components/index.mjs +121 -0
  26. package/src/entities/data/__generated__/icons/index.mjs +28 -0
  27. package/src/entities/data/__generated__/styles/index.mjs +0 -56
  28. package/src/entities/data/__generated__/variable-collections/index.mjs +11 -8
  29. package/src/entities/data/__generated__/variables/index.mjs +130 -0
  30. package/src/codegen/targets/react/component/handlers/multiline-text-field.ts +0 -84
@@ -885,7 +885,7 @@ function createStrokePropsConverter(valueResolver) {
885
885
  }
886
886
 
887
887
  const SEED_REACT_IMPORT_PATH = "@seed-design/react";
888
- const LOCAL_SNIPPET_BASE_PATH = "@/seed-design/ui";
888
+ const LOCAL_SNIPPET_BASE_PATH = "seed-design/ui";
889
889
  const MONOCHROME_ICON_IMPORT_PATH = "@karrotmarket/react-monochrome-icon";
890
890
  const MULTICOLOR_ICON_IMPORT_PATH = "@karrotmarket/react-multicolor-icon";
891
891
  function createSeedReactElement(tag, props, children, meta) {
@@ -989,6 +989,18 @@ function createFrameTransformer({ propsConverters }) {
989
989
  });
990
990
  }
991
991
 
992
+ const OVERRIDE_ACCEPTABLE_PROPERTIES = new Set([
993
+ "characters",
994
+ "parent",
995
+ "locked",
996
+ "visible",
997
+ "name",
998
+ "x",
999
+ "y",
1000
+ "componentProperties",
1001
+ "componentPropertyDefinitions",
1002
+ "componentPropertyReferences"
1003
+ ]);
992
1004
  function createInstanceTransformer({ iconHandler, propsConverters, componentHandlers, frameTransformer }) {
993
1005
  const transform = defineElementTransformer((node, traverse)=>{
994
1006
  const { componentKey, componentSetKey } = node;
@@ -1006,12 +1018,15 @@ function createInstanceTransformer({ iconHandler, propsConverters, componentHand
1006
1018
  if (componentHandler) {
1007
1019
  const handled = componentHandler.transform(node, traverse);
1008
1020
  if (node.overrides && node.overrides.length > 0) {
1009
- const overriddenFields = node.overrides.flatMap(({ overriddenFields })=>overriddenFields);
1021
+ const overriddenFields = node.overrides.flatMap(({ overriddenFields })=>overriddenFields).filter((field)=>OVERRIDE_ACCEPTABLE_PROPERTIES.has(field) === false);
1022
+ if (overriddenFields.length === 0) {
1023
+ return handled;
1024
+ }
1010
1025
  return {
1011
1026
  ...handled,
1012
1027
  meta: {
1013
1028
  ...handled.meta,
1014
- comment: `${handled.meta.comment ? `${handled.meta.comment} ` : ""}오버라이드된 필드: ${overriddenFields.join(", ")}`
1029
+ comment: `${handled.meta.comment ? `${handled.meta.comment} ` : ""}오버라이드된 필드: ${Array.from(new Set(overriddenFields)).join(", ")}`
1015
1030
  }
1016
1031
  };
1017
1032
  }
@@ -1143,11 +1158,39 @@ const templateCompletion = {
1143
1158
  }
1144
1159
  }
1145
1160
  };
1161
+ const templateCustomPickerField = {
1162
+ "name": "templateCustomPickerField",
1163
+ "key": "91d73dfc297a467d78dc91ade6ff9be9a152619e",
1164
+ "componentPropertyDefinitions": {
1165
+ "Show Header#40606:8": {
1166
+ "type": "BOOLEAN"
1167
+ },
1168
+ "Show Footer#40606:9": {
1169
+ "type": "BOOLEAN"
1170
+ },
1171
+ "State": {
1172
+ "type": "VARIANT",
1173
+ "variantOptions": [
1174
+ "Default",
1175
+ "Error",
1176
+ "Disabled",
1177
+ "Read Only"
1178
+ ]
1179
+ },
1180
+ "Has Value": {
1181
+ "type": "VARIANT",
1182
+ "variantOptions": [
1183
+ "False",
1184
+ "True"
1185
+ ]
1186
+ }
1187
+ }
1188
+ };
1146
1189
  const templateErrorState = {
1147
1190
  "name": "templateErrorState",
1148
1191
  "key": "39b4ecd0b5b4d35f4dc5791765ca04aa062a5172",
1149
1192
  "componentPropertyDefinitions": {
1150
- "Show Buttons#9080:5": {
1193
+ "Show Action Button#9080:5": {
1151
1194
  "type": "BOOLEAN"
1152
1195
  },
1153
1196
  "Title#16237:0": {
@@ -1156,9 +1199,6 @@ const templateErrorState = {
1156
1199
  "Description#16237:5": {
1157
1200
  "type": "TEXT"
1158
1201
  },
1159
- "Secondary Action Label#17042:0": {
1160
- "type": "TEXT"
1161
- },
1162
1202
  "Variant": {
1163
1203
  "type": "VARIANT",
1164
1204
  "variantOptions": [
@@ -1199,6 +1239,83 @@ const templateSelectBoxGroup = {
1199
1239
  }
1200
1240
  }
1201
1241
  };
1242
+ const templateSliderField = {
1243
+ "name": "templateSliderField",
1244
+ "key": "7d2b449bcfb28ebf3c509ed76a141511f7d955eb",
1245
+ "componentPropertyDefinitions": {
1246
+ "Show Header#40606:8": {
1247
+ "type": "BOOLEAN"
1248
+ },
1249
+ "Show Footer#40606:9": {
1250
+ "type": "BOOLEAN"
1251
+ },
1252
+ "State": {
1253
+ "type": "VARIANT",
1254
+ "variantOptions": [
1255
+ "Default",
1256
+ "Error",
1257
+ "Disabled",
1258
+ "Read Only",
1259
+ "Pressed"
1260
+ ]
1261
+ }
1262
+ }
1263
+ };
1264
+ const templateTextField = {
1265
+ "name": "templateTextField",
1266
+ "key": "0a83a0ff9d18d98a14536b21aa5411622f9f0c05",
1267
+ "componentPropertyDefinitions": {
1268
+ "Show Header#40606:8": {
1269
+ "type": "BOOLEAN"
1270
+ },
1271
+ "Show Footer#40606:9": {
1272
+ "type": "BOOLEAN"
1273
+ },
1274
+ "Variant": {
1275
+ "type": "VARIANT",
1276
+ "variantOptions": [
1277
+ "Outline",
1278
+ "Underline"
1279
+ ]
1280
+ },
1281
+ "State": {
1282
+ "type": "VARIANT",
1283
+ "variantOptions": [
1284
+ "Default",
1285
+ "Focused",
1286
+ "Error",
1287
+ "Error Focused",
1288
+ "Disabled",
1289
+ "Read Only",
1290
+ "AI Loading (Figma Only)"
1291
+ ]
1292
+ }
1293
+ }
1294
+ };
1295
+ const templateTextareaField = {
1296
+ "name": "templateTextareaField",
1297
+ "key": "cdc688eccd78b947289e8089a620bdc494f6c809",
1298
+ "componentPropertyDefinitions": {
1299
+ "Show Header#40606:8": {
1300
+ "type": "BOOLEAN"
1301
+ },
1302
+ "Show Footer#40606:9": {
1303
+ "type": "BOOLEAN"
1304
+ },
1305
+ "State": {
1306
+ "type": "VARIANT",
1307
+ "variantOptions": [
1308
+ "Default",
1309
+ "Focused",
1310
+ "Error",
1311
+ "Error Focused",
1312
+ "Disabled",
1313
+ "Read Only",
1314
+ "AI Loading (Figma Only)"
1315
+ ]
1316
+ }
1317
+ }
1318
+ };
1202
1319
  const templateTopNavigation = {
1203
1320
  "name": "templateTopNavigation",
1204
1321
  "key": "74f045c1972dc31d0fddd0a0027537b6779cd0e8",
@@ -1488,6 +1605,9 @@ const bottomSheet = {
1488
1605
  "Show Safe Area#25488:8": {
1489
1606
  "type": "BOOLEAN"
1490
1607
  },
1608
+ "Show Handle#49774:6": {
1609
+ "type": "BOOLEAN"
1610
+ },
1491
1611
  "Header Layout": {
1492
1612
  "type": "VARIANT",
1493
1613
  "variantOptions": [
@@ -1867,8 +1987,8 @@ const listHeader = {
1867
1987
  "type": "VARIANT",
1868
1988
  "variantOptions": [
1869
1989
  "None",
1870
- "Button",
1871
- "Custom"
1990
+ "Custom",
1991
+ "Button"
1872
1992
  ]
1873
1993
  },
1874
1994
  "Variant": {
@@ -2159,74 +2279,6 @@ const menuSheet = {
2159
2279
  }
2160
2280
  }
2161
2281
  };
2162
- const multilineTextField = {
2163
- "name": "multilineTextField",
2164
- "key": "88b2399c930c85f9ce2972163a078bc684b84bbe",
2165
- "componentPropertyDefinitions": {
2166
- "Show Header#870:0": {
2167
- "type": "BOOLEAN"
2168
- },
2169
- "Placeholder#958:0": {
2170
- "type": "TEXT"
2171
- },
2172
- "Show Footer#958:25": {
2173
- "type": "BOOLEAN"
2174
- },
2175
- "Show Description#958:50": {
2176
- "type": "BOOLEAN"
2177
- },
2178
- "Show Character count#958:75": {
2179
- "type": "BOOLEAN"
2180
- },
2181
- "Show Indicator#1259:0": {
2182
- "type": "BOOLEAN"
2183
- },
2184
- "Filled Text#1304:0": {
2185
- "type": "TEXT"
2186
- },
2187
- "Max Character Count#15327:175": {
2188
- "type": "TEXT"
2189
- },
2190
- "Description#15327:212": {
2191
- "type": "TEXT"
2192
- },
2193
- "Indicator#15327:286": {
2194
- "type": "TEXT"
2195
- },
2196
- "Label#15327:323": {
2197
- "type": "TEXT"
2198
- },
2199
- "Character Count#15327:360": {
2200
- "type": "TEXT"
2201
- },
2202
- "Size": {
2203
- "type": "VARIANT",
2204
- "variantOptions": [
2205
- "Medium",
2206
- "Large",
2207
- "XLarge"
2208
- ]
2209
- },
2210
- "State": {
2211
- "type": "VARIANT",
2212
- "variantOptions": [
2213
- "Enabled",
2214
- "Focused",
2215
- "Invalid",
2216
- "Invalid-Focused",
2217
- "Disabled",
2218
- "Read Only"
2219
- ]
2220
- },
2221
- "Filled": {
2222
- "type": "VARIANT",
2223
- "variantOptions": [
2224
- "True",
2225
- "False"
2226
- ]
2227
- }
2228
- }
2229
- };
2230
2282
  const pageBanner = {
2231
2283
  "name": "pageBanner",
2232
2284
  "key": "ce587d0f21754af05240cb32a4880227cb0ea1e1",
@@ -2389,37 +2441,6 @@ const radioMark = {
2389
2441
  }
2390
2442
  }
2391
2443
  };
2392
- const rangeSlider = {
2393
- "name": "rangeSlider",
2394
- "key": "64fc49184979e0be40aa367ca98868601eb7dad5",
2395
- "componentPropertyDefinitions": {
2396
- "Steps": {
2397
- "type": "VARIANT",
2398
- "variantOptions": [
2399
- "0",
2400
- "1",
2401
- "2",
2402
- "3",
2403
- "4"
2404
- ]
2405
- },
2406
- "State": {
2407
- "type": "VARIANT",
2408
- "variantOptions": [
2409
- "Enabled",
2410
- "Disabled"
2411
- ]
2412
- },
2413
- "Marker": {
2414
- "type": "VARIANT",
2415
- "variantOptions": [
2416
- "None",
2417
- "Min Max",
2418
- "All"
2419
- ]
2420
- }
2421
- }
2422
- };
2423
2444
  const reactionButton = {
2424
2445
  "name": "reactionButton",
2425
2446
  "key": "ec43e4e881f7048e95601f8b58c01a0905a174e0",
@@ -2498,6 +2519,28 @@ const resizableChild = {
2498
2519
  }
2499
2520
  }
2500
2521
  };
2522
+ const scrollFog = {
2523
+ "name": "scrollFog",
2524
+ "key": "0a06ea65fe164e0245fde6ac6c97135990a4de3c",
2525
+ "componentPropertyDefinitions": {
2526
+ "Orientation": {
2527
+ "type": "VARIANT",
2528
+ "variantOptions": [
2529
+ "Top ⬇️",
2530
+ "Bottom ⬆️",
2531
+ "Right ➡️",
2532
+ "Left ⬅️"
2533
+ ]
2534
+ },
2535
+ "Layer": {
2536
+ "type": "VARIANT",
2537
+ "variantOptions": [
2538
+ "Default",
2539
+ "Floating"
2540
+ ]
2541
+ }
2542
+ }
2543
+ };
2501
2544
  const segmentedControl = {
2502
2545
  "name": "segmentedControl",
2503
2546
  "key": "3ad7133ba52755867f42f9232375f75639e00d58",
@@ -2572,32 +2615,31 @@ const skeleton = {
2572
2615
  };
2573
2616
  const slider = {
2574
2617
  "name": "slider",
2575
- "key": "aee027230a478315e380704c4523141e67e464ee",
2618
+ "key": "c748f314f790eb804138bd105bfb0bd0584c9aa1",
2576
2619
  "componentPropertyDefinitions": {
2577
- "Steps": {
2620
+ "Has Tick Mark#47921:0": {
2621
+ "type": "BOOLEAN"
2622
+ },
2623
+ "Show Active Track#48156:0": {
2624
+ "type": "BOOLEAN"
2625
+ },
2626
+ "Show Markers#49596:0": {
2627
+ "type": "BOOLEAN"
2628
+ },
2629
+ "Value": {
2578
2630
  "type": "VARIANT",
2579
2631
  "variantOptions": [
2580
- "0",
2581
- "1",
2582
- "2",
2583
- "3",
2584
- "4"
2632
+ "Single",
2633
+ "Range"
2585
2634
  ]
2586
2635
  },
2587
2636
  "State": {
2588
2637
  "type": "VARIANT",
2589
2638
  "variantOptions": [
2590
2639
  "Enabled",
2640
+ "Pressed",
2591
2641
  "Disabled"
2592
2642
  ]
2593
- },
2594
- "Marker": {
2595
- "type": "VARIANT",
2596
- "variantOptions": [
2597
- "None",
2598
- "Min Max",
2599
- "All"
2600
- ]
2601
2643
  }
2602
2644
  }
2603
2645
  };
@@ -2759,105 +2801,6 @@ const tagGroup = {
2759
2801
  }
2760
2802
  }
2761
2803
  };
2762
- const textField = {
2763
- "name": "textField",
2764
- "key": "c49873c37a639f0dffdea4efd0eb43760d66c141",
2765
- "componentPropertyDefinitions": {
2766
- "Show Header#870:0": {
2767
- "type": "BOOLEAN"
2768
- },
2769
- "Placeholder#958:0": {
2770
- "type": "TEXT"
2771
- },
2772
- "Show Footer#958:25": {
2773
- "type": "BOOLEAN"
2774
- },
2775
- "Show Description#958:50": {
2776
- "type": "BOOLEAN"
2777
- },
2778
- "Show Character Count#958:75": {
2779
- "type": "BOOLEAN"
2780
- },
2781
- "Show Suffix#958:100": {
2782
- "type": "BOOLEAN"
2783
- },
2784
- "Show Prefix#958:125": {
2785
- "type": "BOOLEAN"
2786
- },
2787
- "Show Indicator#1259:0": {
2788
- "type": "BOOLEAN"
2789
- },
2790
- "Show Prefix Text#1267:0": {
2791
- "type": "BOOLEAN"
2792
- },
2793
- "Prefix Icon#1267:25": {
2794
- "type": "INSTANCE_SWAP",
2795
- "preferredValues": []
2796
- },
2797
- "Show Prefix Icon#1267:50": {
2798
- "type": "BOOLEAN"
2799
- },
2800
- "Show Suffix Icon#1267:75": {
2801
- "type": "BOOLEAN"
2802
- },
2803
- "Suffix Icon #1267:100": {
2804
- "type": "INSTANCE_SWAP",
2805
- "preferredValues": []
2806
- },
2807
- "Show Suffix Text#1267:125": {
2808
- "type": "BOOLEAN"
2809
- },
2810
- "Filled Text#1304:0": {
2811
- "type": "TEXT"
2812
- },
2813
- "Description#12626:5": {
2814
- "type": "TEXT"
2815
- },
2816
- "Label#14964:0": {
2817
- "type": "TEXT"
2818
- },
2819
- "Max Character Count#15327:27": {
2820
- "type": "TEXT"
2821
- },
2822
- "Character Count#15327:64": {
2823
- "type": "TEXT"
2824
- },
2825
- "Prefix Text#15327:101": {
2826
- "type": "TEXT"
2827
- },
2828
- "Suffix Text#15327:138": {
2829
- "type": "TEXT"
2830
- },
2831
- "Indicator#15327:249": {
2832
- "type": "TEXT"
2833
- },
2834
- "Size": {
2835
- "type": "VARIANT",
2836
- "variantOptions": [
2837
- "Medium",
2838
- "Large(Default)"
2839
- ]
2840
- },
2841
- "State": {
2842
- "type": "VARIANT",
2843
- "variantOptions": [
2844
- "Enabled",
2845
- "Focused",
2846
- "Invalid",
2847
- "Invalid-Focused",
2848
- "Disabled",
2849
- "Read Only"
2850
- ]
2851
- },
2852
- "Filled": {
2853
- "type": "VARIANT",
2854
- "variantOptions": [
2855
- "True",
2856
- "False"
2857
- ]
2858
- }
2859
- }
2860
- };
2861
2804
  const toggleButton = {
2862
2805
  "name": "toggleButton",
2863
2806
  "key": "1d240ee5fd7a56879713e69cbea1b6f006f0ea22",
@@ -2953,11 +2896,84 @@ const topNavigation = {
2953
2896
  }
2954
2897
  }
2955
2898
  };
2899
+ const actionButtonGhostButton = {
2900
+ "name": "actionButtonGhostButton",
2901
+ "key": "ea69291fb4d76217419f3d9613ae16aadafb56a5",
2902
+ "componentPropertyDefinitions": {
2903
+ "Label#30511:2": {
2904
+ "type": "TEXT"
2905
+ },
2906
+ "Prefix Icon#30511:3": {
2907
+ "type": "INSTANCE_SWAP",
2908
+ "preferredValues": []
2909
+ },
2910
+ "Suffix Icon#30525:0": {
2911
+ "type": "INSTANCE_SWAP",
2912
+ "preferredValues": [
2913
+ {
2914
+ "type": "COMPONENT_SET",
2915
+ "key": "c8415f85843e5aea5a1d3620d03d16b643bf86cd"
2916
+ },
2917
+ {
2918
+ "type": "COMPONENT_SET",
2919
+ "key": "0d0a2bc648a2c4e1f06a56a30ef16299b6e91037"
2920
+ },
2921
+ {
2922
+ "type": "COMPONENT_SET",
2923
+ "key": "8f28ae559baf8f388d84ccc3ad65a282966e1b05"
2924
+ },
2925
+ {
2926
+ "type": "COMPONENT_SET",
2927
+ "key": "57341e8a9961bf31590240dd288e57c76969098d"
2928
+ }
2929
+ ]
2930
+ },
2931
+ "Icon#30525:15": {
2932
+ "type": "INSTANCE_SWAP",
2933
+ "preferredValues": []
2934
+ },
2935
+ "Bleed": {
2936
+ "type": "VARIANT",
2937
+ "variantOptions": [
2938
+ "true",
2939
+ "false"
2940
+ ]
2941
+ },
2942
+ "Size": {
2943
+ "type": "VARIANT",
2944
+ "variantOptions": [
2945
+ "Xsmall",
2946
+ "Small",
2947
+ "Medium",
2948
+ "Large"
2949
+ ]
2950
+ },
2951
+ "Layout": {
2952
+ "type": "VARIANT",
2953
+ "variantOptions": [
2954
+ "Text Only",
2955
+ "Icon First",
2956
+ "Icon Last",
2957
+ "Icon Only"
2958
+ ]
2959
+ },
2960
+ "State": {
2961
+ "type": "VARIANT",
2962
+ "variantOptions": [
2963
+ "Enabled",
2964
+ "Pressed",
2965
+ "Loading",
2966
+ "Disabled"
2967
+ ]
2968
+ }
2969
+ }
2970
+ };
2956
2971
 
2957
2972
  var FIGMA_COMPONENTS = {
2958
2973
  __proto__: null,
2959
2974
  _switch: _switch,
2960
2975
  actionButton: actionButton,
2976
+ actionButtonGhostButton: actionButtonGhostButton,
2961
2977
  alertDialog: alertDialog,
2962
2978
  avatar: avatar,
2963
2979
  avatarStack: avatarStack,
@@ -2981,15 +2997,14 @@ var FIGMA_COMPONENTS = {
2981
2997
  mannerTemp: mannerTemp,
2982
2998
  mannerTempBadge: mannerTempBadge,
2983
2999
  menuSheet: menuSheet,
2984
- multilineTextField: multilineTextField,
2985
3000
  pageBanner: pageBanner,
2986
3001
  progressCircle: progressCircle,
2987
3002
  radio: radio,
2988
3003
  radioMark: radioMark,
2989
- rangeSlider: rangeSlider,
2990
3004
  reactionButton: reactionButton,
2991
3005
  resizableChild: resizableChild,
2992
3006
  resizableIcon: resizableIcon,
3007
+ scrollFog: scrollFog,
2993
3008
  segmentedControl: segmentedControl,
2994
3009
  selectBox: selectBox,
2995
3010
  skeleton: skeleton,
@@ -3003,10 +3018,13 @@ var FIGMA_COMPONENTS = {
3003
3018
  templateButtonGroup: templateButtonGroup,
3004
3019
  templateChipGroup: templateChipGroup,
3005
3020
  templateCompletion: templateCompletion,
3021
+ templateCustomPickerField: templateCustomPickerField,
3006
3022
  templateErrorState: templateErrorState,
3007
3023
  templateSelectBoxGroup: templateSelectBoxGroup,
3024
+ templateSliderField: templateSliderField,
3025
+ templateTextField: templateTextField,
3026
+ templateTextareaField: templateTextareaField,
3008
3027
  templateTopNavigation: templateTopNavigation,
3009
- textField: textField,
3010
3028
  toggleButton: toggleButton,
3011
3029
  topNavigation: topNavigation
3012
3030
  };
@@ -3029,7 +3047,7 @@ function handleSizeProp(size) {
3029
3047
  }
3030
3048
  }
3031
3049
 
3032
- const { createLocalSnippetElement: createLocalSnippetElement$w } = createLocalSnippetHelper("action-button");
3050
+ const { createLocalSnippetElement: createLocalSnippetElement$y } = createLocalSnippetHelper("action-button");
3033
3051
  const createActionButtonHandler = (ctx)=>defineComponentHandler(actionButton.key, ({ componentProperties: props })=>{
3034
3052
  const states = props.State.value.split("-");
3035
3053
  const { layout, children } = tsPattern.match(props.Layout.value).with("Icon Only", ()=>({
@@ -3070,7 +3088,7 @@ const createActionButtonHandler = (ctx)=>defineComponentHandler(actionButton.key
3070
3088
  variant: changeCase.camelCase(props.Variant.value),
3071
3089
  layout
3072
3090
  };
3073
- return createLocalSnippetElement$w("ActionButton", commonProps, children);
3091
+ return createLocalSnippetElement$y("ActionButton", commonProps, children);
3074
3092
  });
3075
3093
  const ACTION_BUTTON_GHOST_BUTTON_KEY = "ea69291fb4d76217419f3d9613ae16aadafb56a5";
3076
3094
  const createActionButtonGhostHandler = (ctx)=>defineComponentHandler(ACTION_BUTTON_GHOST_BUTTON_KEY, (node)=>{
@@ -3128,26 +3146,26 @@ const createActionButtonGhostHandler = (ctx)=>defineComponentHandler(ACTION_BUTT
3128
3146
  bleedY: "asPadding"
3129
3147
  }
3130
3148
  };
3131
- return createLocalSnippetElement$w("ActionButton", commonProps, children);
3149
+ return createLocalSnippetElement$y("ActionButton", commonProps, children);
3132
3150
  });
3133
3151
 
3134
- const { createLocalSnippetElement: createLocalSnippetElement$v } = createLocalSnippetHelper("alert-dialog");
3152
+ const { createLocalSnippetElement: createLocalSnippetElement$x } = createLocalSnippetHelper("alert-dialog");
3135
3153
  const { createLocalSnippetElement: createLocalSnippetElementTrigger$3 } = createLocalSnippetHelper("action-button");
3136
3154
  const ALERT_DIALOG_FOOTER_KEY = "00b1b131d67edf2875a7a1df8dfa88098d7c04be";
3137
3155
  const createAlertDialogHandler = (_ctx)=>defineComponentHandler(alertDialog.key, (node, traverse)=>{
3138
3156
  const props = node.componentProperties;
3139
- const alertDialogHeader = createLocalSnippetElement$v("AlertDialogHeader", undefined, [
3157
+ const alertDialogHeader = createLocalSnippetElement$x("AlertDialogHeader", undefined, [
3140
3158
  ...props["Show Title#20361:14"].value ? [
3141
- createLocalSnippetElement$v("AlertDialogTitle", undefined, props["Title Text#20361:0"].value)
3159
+ createLocalSnippetElement$x("AlertDialogTitle", undefined, props["Title Text#20361:0"].value)
3142
3160
  ] : [],
3143
- createLocalSnippetElement$v("AlertDialogDescription", undefined, props["Description Text#20361:7"].value)
3161
+ createLocalSnippetElement$x("AlertDialogDescription", undefined, props["Description Text#20361:7"].value)
3144
3162
  ]);
3145
3163
  const footerNodes = findAllInstances({
3146
3164
  node,
3147
3165
  key: ALERT_DIALOG_FOOTER_KEY
3148
3166
  });
3149
3167
  if (footerNodes.length === 0 || footerNodes.length > 1) {
3150
- return createLocalSnippetElement$v("AlertDialog", undefined, alertDialogHeader, {
3168
+ return createLocalSnippetElement$x("AlertDialog", undefined, alertDialogHeader, {
3151
3169
  comment: "Footer 영역을 확인해주세요."
3152
3170
  });
3153
3171
  }
@@ -3155,21 +3173,21 @@ const createAlertDialogHandler = (_ctx)=>defineComponentHandler(alertDialog.key,
3155
3173
  const footerNodeProps = traverse(footerNode)?.props;
3156
3174
  const buttons = footerNode.children.map(traverse);
3157
3175
  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();
3158
- const alertDialogFooter = createLocalSnippetElement$v("AlertDialogFooter", undefined, alertDialogFooterChildren);
3159
- return createLocalSnippetElement$v("AlertDialogRoot", {
3176
+ const alertDialogFooter = createLocalSnippetElement$x("AlertDialogFooter", undefined, alertDialogFooterChildren);
3177
+ return createLocalSnippetElement$x("AlertDialogRoot", {
3160
3178
  open: true
3161
3179
  }, [
3162
- createLocalSnippetElement$v("AlertDialogTrigger", {
3180
+ createLocalSnippetElement$x("AlertDialogTrigger", {
3163
3181
  asChild: true
3164
3182
  }, createLocalSnippetElementTrigger$3("ActionButton", {}, "AlertDialog 열기")),
3165
- createLocalSnippetElement$v("AlertDialogContent", undefined, [
3183
+ createLocalSnippetElement$x("AlertDialogContent", undefined, [
3166
3184
  alertDialogHeader,
3167
3185
  alertDialogFooter
3168
3186
  ])
3169
3187
  ]);
3170
3188
  });
3171
3189
 
3172
- const { createLocalSnippetElement: createLocalSnippetElement$u } = createLocalSnippetHelper("app-bar");
3190
+ const { createLocalSnippetElement: createLocalSnippetElement$w } = createLocalSnippetHelper("app-bar");
3173
3191
  const APP_BAR_TITLE_KEY = "d2cc4f615b2b44098be89448ad1c573f94af0355";
3174
3192
  const APP_BAR_LEFT_ICON_BUTTON_KEY = "5a953f7bafc0df744777517458396e9f6c915825";
3175
3193
  const APP_BAR_RIGHT_ICON_BUTTON_KEY = "c08db793288077e53bd45ef11aa419a835e88fce";
@@ -3186,12 +3204,12 @@ const createAppBarMainHandler = (_ctx)=>{
3186
3204
  subtitle: undefined
3187
3205
  })).exhaustive();
3188
3206
  if (title) {
3189
- return createLocalSnippetElement$u("AppBarMain", {
3207
+ return createLocalSnippetElement$w("AppBarMain", {
3190
3208
  title,
3191
3209
  subtitle
3192
3210
  });
3193
3211
  }
3194
- return createLocalSnippetElement$u("AppBarMain", undefined, undefined, {
3212
+ return createLocalSnippetElement$w("AppBarMain", undefined, undefined, {
3195
3213
  comment: "AppBarMain 내부를 직접 작성해주세요."
3196
3214
  });
3197
3215
  });
@@ -3218,33 +3236,33 @@ const createAppBarHandler = (ctx)=>{
3218
3236
  return appBarMainHandler.transform(mainNode, traverse);
3219
3237
  })();
3220
3238
  const leftChildren = tsPattern.match(props.Left.value).with("None", ()=>undefined).with("Back", ()=>[
3221
- createLocalSnippetElement$u("AppBarBackButton")
3239
+ createLocalSnippetElement$w("AppBarBackButton")
3222
3240
  ]).with("Close", ()=>[
3223
- createLocalSnippetElement$u("AppBarCloseButton")
3241
+ createLocalSnippetElement$w("AppBarCloseButton")
3224
3242
  ]).with("Custom", ()=>{
3225
3243
  const buttons = findAllInstances({
3226
3244
  node,
3227
3245
  key: APP_BAR_LEFT_ICON_BUTTON_KEY
3228
3246
  });
3229
3247
  if (buttons.length > 0) {
3230
- return buttons.map((button)=>createLocalSnippetElement$u("AppBarIconButton", undefined, ctx.iconHandler.transform(button.componentProperties["Icon#33580:0"]), {
3248
+ return buttons.map((button)=>createLocalSnippetElement$w("AppBarIconButton", undefined, ctx.iconHandler.transform(button.componentProperties["Icon#33580:0"]), {
3231
3249
  comment: "AppBarIconButton에 aria-label 속성을 추가해주세요."
3232
3250
  }));
3233
3251
  }
3234
3252
  return undefined;
3235
3253
  }).exhaustive();
3236
- const left = leftChildren && leftChildren.length > 0 ? createLocalSnippetElement$u("AppBarLeft", {}, leftChildren) : undefined;
3254
+ const left = leftChildren && leftChildren.length > 0 ? createLocalSnippetElement$w("AppBarLeft", {}, leftChildren) : undefined;
3237
3255
  const rightChildren = tsPattern.match(props.Right.value).with("None", ()=>undefined).with("1 Icon Button", "2 Icon Button", "3 Icon Button", ()=>{
3238
3256
  const buttons = findAllInstances({
3239
3257
  node,
3240
3258
  key: APP_BAR_RIGHT_ICON_BUTTON_KEY
3241
3259
  });
3242
- return buttons.map((button)=>createLocalSnippetElement$u("AppBarIconButton", undefined, ctx.iconHandler.transform(button.componentProperties["Icon#6406:3"]), {
3260
+ return buttons.map((button)=>createLocalSnippetElement$w("AppBarIconButton", undefined, ctx.iconHandler.transform(button.componentProperties["Icon#6406:3"]), {
3243
3261
  comment: "AppBarIconButton에 aria-label 속성을 추가해주세요."
3244
3262
  }));
3245
3263
  }).with("Text Button", ()=>undefined).exhaustive();
3246
- const right = rightChildren && rightChildren.length > 0 ? createLocalSnippetElement$u("AppBarRight", {}, rightChildren) : undefined;
3247
- return createLocalSnippetElement$u("AppBar", {
3264
+ const right = rightChildren && rightChildren.length > 0 ? createLocalSnippetElement$w("AppBarRight", {}, rightChildren) : undefined;
3265
+ return createLocalSnippetElement$w("AppBar", {
3248
3266
  theme,
3249
3267
  tone
3250
3268
  }, [
@@ -3258,15 +3276,15 @@ const createAppBarHandler = (ctx)=>{
3258
3276
  };
3259
3277
 
3260
3278
  const IDENTITY_PLACEHOLDER_KEY = "b3563b6f16ba4cfe4240c9b33eef7edad4c304eb";
3261
- const { createLocalSnippetElement: createLocalSnippetElement$t } = createLocalSnippetHelper("identity-placeholder");
3279
+ const { createLocalSnippetElement: createLocalSnippetElement$v } = createLocalSnippetHelper("identity-placeholder");
3262
3280
  const createIdentityPlaceholderHandler = (_ctx)=>defineComponentHandler(IDENTITY_PLACEHOLDER_KEY, ({ componentProperties: props })=>{
3263
3281
  const commonProps = {
3264
3282
  identity: changeCase.camelCase(props.Identity.value)
3265
3283
  };
3266
- return createLocalSnippetElement$t("IdentityPlaceholder", commonProps);
3284
+ return createLocalSnippetElement$v("IdentityPlaceholder", commonProps);
3267
3285
  });
3268
3286
 
3269
- const { createLocalSnippetElement: createLocalSnippetElement$s } = createLocalSnippetHelper("avatar");
3287
+ const { createLocalSnippetElement: createLocalSnippetElement$u } = createLocalSnippetHelper("avatar");
3270
3288
  const createAvatarHandler = (ctx)=>{
3271
3289
  const identityPlaceholderHandler = createIdentityPlaceholderHandler();
3272
3290
  return defineComponentHandler(avatar.key, (node, traverse)=>{
@@ -3289,7 +3307,7 @@ const createAvatarHandler = (ctx)=>{
3289
3307
  },
3290
3308
  size: props.Size.value
3291
3309
  };
3292
- return createLocalSnippetElement$s("Avatar", commonProps, props["Badge"].value === "None" ? undefined : createLocalSnippetElement$s("AvatarBadge", {
3310
+ return createLocalSnippetElement$u("Avatar", commonProps, props["Badge"].value === "None" ? undefined : createLocalSnippetElement$u("AvatarBadge", {
3293
3311
  asChild: true
3294
3312
  }, createElement("img", {
3295
3313
  src: "https://placehold.co/20x20"
@@ -3301,7 +3319,7 @@ const createAvatarHandler = (ctx)=>{
3301
3319
  });
3302
3320
  };
3303
3321
 
3304
- const { createLocalSnippetElement: createLocalSnippetElement$r } = createLocalSnippetHelper("avatar");
3322
+ const { createLocalSnippetElement: createLocalSnippetElement$t } = createLocalSnippetHelper("avatar");
3305
3323
  const createAvatarStackHandler = (ctx)=>{
3306
3324
  const avatarHandler = createAvatarHandler();
3307
3325
  return defineComponentHandler(avatarStack.key, (node, traverse)=>{
@@ -3314,7 +3332,7 @@ const createAvatarStackHandler = (ctx)=>{
3314
3332
  size: props.Size.value
3315
3333
  };
3316
3334
  const avatarStackChildren = avatarNodes.map((avatarNode)=>avatarHandler.transform(avatarNode, traverse));
3317
- return createLocalSnippetElement$r("AvatarStack", commonProps, avatarStackChildren);
3335
+ return createLocalSnippetElement$t("AvatarStack", commonProps, avatarStackChildren);
3318
3336
  });
3319
3337
  };
3320
3338
 
@@ -3327,7 +3345,7 @@ const createBadgeHandler = (_ctx)=>defineComponentHandler(badge.key, ({ componen
3327
3345
  return createSeedReactElement("Badge", commonProps, props["Label#1584:0"].value);
3328
3346
  });
3329
3347
 
3330
- const { createLocalSnippetElement: createLocalSnippetElement$q } = createLocalSnippetHelper("bottom-sheet");
3348
+ const { createLocalSnippetElement: createLocalSnippetElement$s } = createLocalSnippetHelper("bottom-sheet");
3331
3349
  const { createLocalSnippetElement: createLocalSnippetElementTrigger$2 } = createLocalSnippetHelper("action-button");
3332
3350
  // TODO: Bottom Action Bar (WIP) handler의 키. 해당 컴포넌트(템플릿) 핸들러 작성 시 handler.transform()으로 대체
3333
3351
  const BOTTOM_SHEET_FOOTER_KEY = "de6c65d34cc4a01c18c9a7c0ded34635170ca11f";
@@ -3340,40 +3358,39 @@ const createBottomSheetHandler = (_ctx)=>defineComponentHandler(bottomSheet.key,
3340
3358
  ...props["Show Description#25192:0"].value === true && {
3341
3359
  description: props["Description#19787:7"].value
3342
3360
  },
3343
- ...props["Show Close Button#19787:11"].value === false && {
3344
- hideCloseButton: true
3345
- }
3361
+ showHandle: props["Show Handle#49774:6"].value,
3362
+ showCloseButton: props["Show Close Button#19787:11"].value
3346
3363
  };
3347
3364
  const bodyNodes = findAllInstances({
3348
3365
  node,
3349
3366
  key: BOTTOM_SHEET_BODY_KEY
3350
3367
  });
3351
- const bottomSheetBody = bodyNodes.length === 1 ? createLocalSnippetElement$q("BottomSheetBody", {}, bodyNodes[0].children.map(traverse)) : createLocalSnippetElement$q("BottomSheetBody", {}, createElement("div", undefined, "No content available"));
3368
+ const bottomSheetBody = bodyNodes.length === 1 ? createLocalSnippetElement$s("BottomSheetBody", {}, bodyNodes[0].children.map(traverse)) : createLocalSnippetElement$s("BottomSheetBody", {}, createElement("div", undefined, "No content available"));
3352
3369
  const footerNodes = findAllInstances({
3353
3370
  node,
3354
3371
  key: BOTTOM_SHEET_FOOTER_KEY
3355
3372
  });
3356
- const bottomSheetFooter = props["Show Footer#25162:14"] && footerNodes.length === 1 ? createLocalSnippetElement$q("BottomSheetFooter", {}, footerNodes[0].children.map(traverse)) : undefined;
3357
- return createLocalSnippetElement$q("BottomSheetRoot", {
3373
+ const bottomSheetFooter = props["Show Footer#25162:14"] && footerNodes.length === 1 ? createLocalSnippetElement$s("BottomSheetFooter", {}, footerNodes[0].children.map(traverse)) : undefined;
3374
+ return createLocalSnippetElement$s("BottomSheetRoot", {
3358
3375
  defaultOpen: true,
3359
3376
  headerAlign
3360
3377
  }, [
3361
- createLocalSnippetElement$q("BottomSheetTrigger", {
3378
+ createLocalSnippetElement$s("BottomSheetTrigger", {
3362
3379
  asChild: true
3363
3380
  }, createLocalSnippetElementTrigger$2("ActionButton", {}, "BottomSheet 열기")),
3364
- createLocalSnippetElement$q("BottomSheetContent", contentProps, [
3381
+ createLocalSnippetElement$s("BottomSheetContent", contentProps, [
3365
3382
  bottomSheetBody,
3366
3383
  bottomSheetFooter
3367
3384
  ])
3368
3385
  ]);
3369
3386
  });
3370
3387
 
3371
- const { createLocalSnippetElement: createLocalSnippetElement$p } = createLocalSnippetHelper("callout");
3388
+ const { createLocalSnippetElement: createLocalSnippetElement$r } = createLocalSnippetHelper("callout");
3372
3389
  const createCalloutHandler = (ctx)=>defineComponentHandler(callout.key, ({ componentProperties: props, children })=>{
3373
3390
  const tag = tsPattern.match(props.Interaction.value).with("Display", ()=>"Callout").with("Actionable", ()=>"ActionableCallout").with("Dismissible", ()=>"DismissibleCallout").exhaustive();
3374
3391
  const textNode = children.find((child)=>child.type === "TEXT");
3375
3392
  if (!textNode) {
3376
- return createLocalSnippetElement$p(tag, undefined, undefined, {
3393
+ return createLocalSnippetElement$r(tag, undefined, undefined, {
3377
3394
  comment: "내용을 제공해주세요."
3378
3395
  });
3379
3396
  }
@@ -3425,10 +3442,10 @@ const createCalloutHandler = (ctx)=>defineComponentHandler(callout.key, ({ compo
3425
3442
  prefixIcon: ctx.iconHandler.transform(props["Prefix Icon#35087:0"])
3426
3443
  }
3427
3444
  };
3428
- return createLocalSnippetElement$p(tag, commonProps);
3445
+ return createLocalSnippetElement$r(tag, commonProps);
3429
3446
  });
3430
3447
 
3431
- const { createLocalSnippetElement: createLocalSnippetElement$o } = createLocalSnippetHelper("checkbox");
3448
+ const { createLocalSnippetElement: createLocalSnippetElement$q } = createLocalSnippetHelper("checkbox");
3432
3449
  const createCheckboxHandler = (_ctx)=>defineComponentHandler(checkbox.key, ({ componentProperties: props })=>{
3433
3450
  const tone = tsPattern.match(props.Tone.value).with("Neutral", ()=>"neutral").with("🚫[Deprecated]Brand", ()=>"brand").exhaustive();
3434
3451
  const commonProps = {
@@ -3448,10 +3465,10 @@ const createCheckboxHandler = (_ctx)=>defineComponentHandler(checkbox.key, ({ co
3448
3465
  disabled: true
3449
3466
  }
3450
3467
  };
3451
- return createLocalSnippetElement$o("Checkbox", commonProps);
3468
+ return createLocalSnippetElement$q("Checkbox", commonProps);
3452
3469
  });
3453
3470
 
3454
- const { createLocalSnippetElement: createLocalSnippetElement$n } = createLocalSnippetHelper("checkbox");
3471
+ const { createLocalSnippetElement: createLocalSnippetElement$p } = createLocalSnippetHelper("checkbox");
3455
3472
  const createCheckmarkHandler = (_ctx)=>defineComponentHandler(checkmark.key, ({ componentProperties: props })=>{
3456
3473
  const tone = tsPattern.match(props.Tone.value).with("Neutral", ()=>"neutral").with("🚫[Deprecated]Brand", ()=>"brand").exhaustive();
3457
3474
  const commonProps = {
@@ -3459,14 +3476,14 @@ const createCheckmarkHandler = (_ctx)=>defineComponentHandler(checkmark.key, ({
3459
3476
  variant: changeCase.camelCase(props.Shape.value),
3460
3477
  size: handleSizeProp(props.Size.value)
3461
3478
  };
3462
- return createLocalSnippetElement$n("Checkmark", commonProps);
3479
+ return createLocalSnippetElement$p("Checkmark", commonProps);
3463
3480
  });
3464
3481
 
3465
- const { createLocalSnippetElement: createLocalSnippetElement$m } = createLocalSnippetHelper("chip");
3482
+ const { createLocalSnippetElement: createLocalSnippetElement$o } = createLocalSnippetHelper("chip");
3466
3483
  const CHIP_ICON_SUFFIX_KEY = "27343e0e5ab2c66948e9b10fde03d58b5e037212";
3467
3484
  const createChipIconSuffixHandler = (ctx)=>{
3468
3485
  return defineComponentHandler(CHIP_ICON_SUFFIX_KEY, ({ componentProperties })=>{
3469
- return createLocalSnippetElement$m("Chip.SuffixIcon", undefined, createSeedReactElement("Icon", {
3486
+ return createLocalSnippetElement$o("Chip.SuffixIcon", undefined, createSeedReactElement("Icon", {
3470
3487
  svg: ctx.iconHandler.transform(componentProperties["Icon#33203:0"])
3471
3488
  }));
3472
3489
  });
@@ -3476,7 +3493,7 @@ const createChipHandler = (ctx)=>{
3476
3493
  const iconSuffixHandler = createChipIconSuffixHandler(ctx);
3477
3494
  return defineComponentHandler(chip.key, (node, traverse)=>{
3478
3495
  const props = node.componentProperties;
3479
- const prefix = tsPattern.match(props["Prefix Type"].value).with("None", "Image", ()=>undefined).with("Icon", ()=>createLocalSnippetElement$m("Chip.PrefixIcon", undefined, createSeedReactElement("Icon", {
3496
+ const prefix = tsPattern.match(props["Prefix Type"].value).with("None", "Image", ()=>undefined).with("Icon", ()=>createLocalSnippetElement$o("Chip.PrefixIcon", undefined, createSeedReactElement("Icon", {
3480
3497
  svg: ctx.iconHandler.transform(props["Prefix Icon#8722:0"])
3481
3498
  }))).with("Avatar", ()=>{
3482
3499
  const [avatar$1] = findAllInstances({
@@ -3484,9 +3501,9 @@ const createChipHandler = (ctx)=>{
3484
3501
  key: avatar.key
3485
3502
  });
3486
3503
  if (!avatar$1) return undefined;
3487
- return createLocalSnippetElement$m("Chip.PrefixAvatar", undefined, avatarHandler.transform(avatar$1, traverse));
3504
+ return createLocalSnippetElement$o("Chip.PrefixAvatar", undefined, avatarHandler.transform(avatar$1, traverse));
3488
3505
  }).exhaustive();
3489
- const label = createLocalSnippetElement$m("Chip.Label", undefined, props["Label#7185:0"].value);
3506
+ const label = createLocalSnippetElement$o("Chip.Label", undefined, props["Label#7185:0"].value);
3490
3507
  const [suffixIcon] = findAllInstances({
3491
3508
  node,
3492
3509
  key: CHIP_ICON_SUFFIX_KEY
@@ -3502,7 +3519,7 @@ const createChipHandler = (ctx)=>{
3502
3519
  disabled: true
3503
3520
  }
3504
3521
  };
3505
- return createLocalSnippetElement$m("Chip.Toggle", commonProps, [
3522
+ return createLocalSnippetElement$o("Chip.Toggle", commonProps, [
3506
3523
  prefix,
3507
3524
  label,
3508
3525
  suffixIcon ? iconSuffixHandler.transform(suffixIcon, traverse) : undefined
@@ -3512,7 +3529,7 @@ const createChipHandler = (ctx)=>{
3512
3529
  });
3513
3530
  };
3514
3531
 
3515
- const { createLocalSnippetElement: createLocalSnippetElement$l } = createLocalSnippetHelper("contextual-floating-button");
3532
+ const { createLocalSnippetElement: createLocalSnippetElement$n } = createLocalSnippetHelper("contextual-floating-button");
3516
3533
  const createContextualFloatingButtonHandler = (ctx)=>defineComponentHandler(contextualFloatingButton.key, ({ componentProperties: props })=>{
3517
3534
  const states = props.State.value.split("-");
3518
3535
  const { layout, children } = tsPattern.match(props.Layout.value).with("Icon Only", ()=>({
@@ -3541,7 +3558,7 @@ const createContextualFloatingButtonHandler = (ctx)=>defineComponentHandler(cont
3541
3558
  variant: tsPattern.match(props.Variant.value).with("Solid", ()=>"solid").with("Layer", ()=>"layer").exhaustive(),
3542
3559
  layout
3543
3560
  };
3544
- return createLocalSnippetElement$l("ContextualFloatingButton", commonProps, children);
3561
+ return createLocalSnippetElement$n("ContextualFloatingButton", commonProps, children);
3545
3562
  });
3546
3563
 
3547
3564
  const createDividerHandler = (_ctx)=>defineComponentHandler(divider.key, ({ componentProperties: props })=>{
@@ -3557,35 +3574,261 @@ const createDividerHandler = (_ctx)=>defineComponentHandler(divider.key, ({ comp
3557
3574
  return createSeedReactElement("Divider", commonProps, undefined);
3558
3575
  });
3559
3576
 
3560
- const { createLocalSnippetElement: createLocalSnippetElement$k } = createLocalSnippetHelper("error-state");
3577
+ const { createLocalSnippetElement: createLocalSnippetElement$m } = createLocalSnippetHelper("error-state");
3561
3578
  const createErrorStateHandler = (ctx)=>{
3562
3579
  const actionButtonHandler = createActionButtonHandler(ctx);
3580
+ const ghostButtonHandler = createActionButtonGhostHandler(ctx);
3563
3581
  return defineComponentHandler(templateErrorState.key, (node, traverse)=>{
3564
3582
  const props = node.componentProperties;
3565
- const [actionButtonNode] = findAllInstances({
3583
+ const [actionButton] = findAllInstances({
3566
3584
  node,
3567
3585
  key: actionButtonHandler.key
3568
3586
  });
3587
+ const [ghostButton] = findAllInstances({
3588
+ node,
3589
+ key: ghostButtonHandler.key
3590
+ });
3569
3591
  const commonProps = {
3570
3592
  variant: changeCase.camelCase(props.Variant.value),
3571
3593
  ...props.Layout.value === "With Title" && {
3572
3594
  title: props["Title#16237:0"].value
3573
3595
  },
3574
3596
  description: props["Description#16237:5"].value,
3575
- ...actionButtonNode && {
3597
+ ...actionButton && {
3576
3598
  primaryActionProps: {
3577
- children: actionButtonHandler.transform(actionButtonNode, traverse).children[0]
3578
- },
3599
+ children: actionButtonHandler.transform(actionButton, traverse).children[0]
3600
+ }
3601
+ },
3602
+ ...ghostButton && {
3579
3603
  secondaryActionProps: {
3580
- children: props["Secondary Action Label#17042:0"].value
3604
+ children: ghostButtonHandler.transform(ghostButton, traverse).children[0]
3581
3605
  }
3582
3606
  }
3583
3607
  };
3584
- return createLocalSnippetElement$k("ErrorState", commonProps);
3608
+ return createLocalSnippetElement$m("ErrorState", commonProps);
3585
3609
  });
3586
3610
  };
3587
3611
 
3588
- const { createLocalSnippetElement: createLocalSnippetElement$j } = createLocalSnippetHelper("floating-action-button");
3612
+ const templateAddressPickerField = {
3613
+ "key": "a6cb0e888094d95ca0e9862f4775b34407b3611d"
3614
+ };
3615
+ const templateDatePickerField = {
3616
+ "key": "9fac6c04140c81cdb2e446979952381f1afc0e1a"
3617
+ };
3618
+ const templateSelectField = {
3619
+ "key": "a43d16a5c3cbb5fe22ca230d6a28338da21c7562"
3620
+ };
3621
+ const templateTimePickerField = {
3622
+ "key": "0ee0729eb92d55acfa557e8fe3f0a21a0e43f117"
3623
+ };
3624
+
3625
+ const FIELD_HEADER_KEY = "84fe2e479c3291177662e41c71af29716e48789b";
3626
+ const FIELD_INDICATOR_KEY = "a0a170973212ea0cd952b45a8acb11a92561f402";
3627
+ const FIELD_FOOTER_KEY = "ab528f3b51a6dc529bb144de1495b07deef77ffa";
3628
+ const FIELD_CHARACTER_COUNT_KEY = "25dd9a96f4bf3b866b8713f6d8deec370eebfa72";
3629
+ const FIELD_KEYS = {
3630
+ HEADER: FIELD_HEADER_KEY,
3631
+ FOOTER: FIELD_FOOTER_KEY
3632
+ };
3633
+ /**
3634
+ * NOTE: only gives useful 'props' for field-related components but doesn't give fully functional code.
3635
+ */ const createFieldHeaderHandler = (ctx)=>{
3636
+ const indicatorHandler = createFieldIndicatorHandler();
3637
+ return defineComponentHandler(FIELD_HEADER_KEY, (node, traverse)=>{
3638
+ const { componentProperties: props } = node;
3639
+ const [indicator] = findAllInstances({
3640
+ node,
3641
+ key: FIELD_INDICATOR_KEY
3642
+ });
3643
+ // only returns some nice common props for Slider, TextField and more
3644
+ return createSeedReactElement("__FieldHeader__", {
3645
+ label: props["Label#34796:0"].value,
3646
+ labelWeight: changeCase.camelCase(props.Weight.value),
3647
+ ...indicator && indicatorHandler.transform(indicator, traverse).props
3648
+ });
3649
+ });
3650
+ };
3651
+ /**
3652
+ * NOTE: only gives useful 'props' for field-related components but doesn't give fully functional code.
3653
+ */ const createFieldIndicatorHandler = (_ctx)=>{
3654
+ return defineComponentHandler(FIELD_INDICATOR_KEY, ({ componentProperties: props })=>{
3655
+ const { required, showRequiredIndicator, indicator } = tsPattern.match(props.Type.value).with("Required Mark", ()=>({
3656
+ required: true,
3657
+ showRequiredIndicator: true,
3658
+ indicator: undefined
3659
+ })).with("Text", ()=>({
3660
+ required: undefined,
3661
+ showRequiredIndicator: undefined,
3662
+ indicator: props["Required Label#40606:3"].value
3663
+ })).exhaustive();
3664
+ // only returns some nice common props for Slider, TextField and more
3665
+ return createSeedReactElement("__FieldIndicator__", {
3666
+ required,
3667
+ showRequiredIndicator,
3668
+ indicator
3669
+ });
3670
+ });
3671
+ };
3672
+ /**
3673
+ * NOTE: only gives useful 'props' for field-related components but doesn't give fully functional code.
3674
+ */ const createFieldFooterHandler = (ctx)=>{
3675
+ const characterCountHandler = createFieldCharacterCountHandler();
3676
+ return defineComponentHandler(FIELD_FOOTER_KEY, (node, traverse)=>{
3677
+ const { componentProperties: props } = node;
3678
+ const { description, maxGraphemeCount } = tsPattern.match(props.Type.value).with("Description", ()=>({
3679
+ description: props["Text#2770:0"].value,
3680
+ maxGraphemeCount: undefined
3681
+ })).with("Description With Character Count", ()=>({
3682
+ description: props["Text#2770:0"].value,
3683
+ maxGraphemeCount: undefined
3684
+ })).with("Character Count", ()=>{
3685
+ const [characterCount] = findAllInstances({
3686
+ node,
3687
+ key: FIELD_CHARACTER_COUNT_KEY
3688
+ });
3689
+ return {
3690
+ description: undefined,
3691
+ ...characterCount && characterCountHandler.transform(characterCount, traverse).props
3692
+ };
3693
+ }).exhaustive();
3694
+ const { errorMessage, invalid } = tsPattern.match(props.Error.value === "true").with(true, ()=>({
3695
+ invalid: true,
3696
+ errorMessage: props["Error Text#32821:0"].value
3697
+ })).with(false, ()=>({
3698
+ invalid: undefined,
3699
+ errorMessage: undefined
3700
+ })).exhaustive();
3701
+ // only returns some nice common props for Slider, TextField and more
3702
+ return createSeedReactElement("__FieldFooter__", {
3703
+ description,
3704
+ maxGraphemeCount,
3705
+ invalid,
3706
+ errorMessage
3707
+ });
3708
+ });
3709
+ };
3710
+ /**
3711
+ * NOTE: only gives useful 'props' for field-related components but doesn't give fully functional code.
3712
+ */ const createFieldCharacterCountHandler = (_ctx)=>{
3713
+ return defineComponentHandler(FIELD_CHARACTER_COUNT_KEY, ({ componentProperties: props })=>{
3714
+ // only returns some nice common props for Slider, TextField and more
3715
+ return createSeedReactElement("__FieldCharacterCount__", {
3716
+ maxGraphemeCount: Number(props["Max Count#40960:4"].value)
3717
+ });
3718
+ });
3719
+ };
3720
+
3721
+ const { createLocalSnippetElement: createLocalSnippetElement$l } = createLocalSnippetHelper("field-button");
3722
+ const INPUT_BUTTON_KEY = "965bdecb58755af9a08d60cc3c8d2d33b42e15f0";
3723
+ const INPUT_BUTTON_PREFIX_KEY = "12b40c736a098298c64ba16de85702b4b460d1f1";
3724
+ const INPUT_BUTTON_SUFFIX_KEY = "5dda27af9f4afafa471925c17acf97d81912877a";
3725
+ const createFieldButtonHandler = (ctx)=>{
3726
+ const fieldHeaderHandler = createFieldHeaderHandler();
3727
+ const fieldFooterHandler = createFieldFooterHandler();
3728
+ return defineComponentHandler(templateCustomPickerField.key, (node, traverse)=>{
3729
+ const props = node.componentProperties;
3730
+ const [inputButton] = findAllInstances({
3731
+ node,
3732
+ key: INPUT_BUTTON_KEY
3733
+ });
3734
+ const [clearButton] = findAllInstances({
3735
+ node,
3736
+ key: actionButtonGhostButton.key
3737
+ });
3738
+ const [fieldHeader] = findAllInstances({
3739
+ node,
3740
+ key: FIELD_KEYS.HEADER
3741
+ });
3742
+ const [fieldFooter] = findAllInstances({
3743
+ node,
3744
+ key: FIELD_KEYS.FOOTER
3745
+ });
3746
+ // maxGraphemeCount and required can't be props of FieldButton
3747
+ const { required: __required, ...headerProps } = props["Show Header#40606:8"].value && fieldHeader ? fieldHeaderHandler.transform(fieldHeader, traverse).props : {};
3748
+ const { maxGraphemeCount: __maxGraphemeCount, ...footerProps } = props["Show Footer#40606:9"].value && fieldFooter ? fieldFooterHandler.transform(fieldFooter, traverse).props : {};
3749
+ const [prefix] = findAllInstances({
3750
+ node: inputButton,
3751
+ key: INPUT_BUTTON_PREFIX_KEY
3752
+ });
3753
+ const [suffix] = findAllInstances({
3754
+ node: inputButton,
3755
+ key: INPUT_BUTTON_SUFFIX_KEY
3756
+ });
3757
+ const commonProps = {
3758
+ ...inputButton.componentProperties.State.value === "Disabled" && {
3759
+ disabled: true
3760
+ },
3761
+ ...(inputButton.componentProperties.State.value === "Error" || inputButton.componentProperties.State.value === "Error Pressed") && {
3762
+ invalid: true
3763
+ },
3764
+ ...clearButton && {
3765
+ showClearButton: true
3766
+ },
3767
+ ...inputButton.componentProperties["Has Prefix#32514:10"].value === true && prefix && prefix.componentProperties.Type.value === "Icon" && {
3768
+ prefixIcon: ctx.iconHandler.transform(prefix.componentProperties["Icon#34021:2"])
3769
+ },
3770
+ ...inputButton.componentProperties["Has Suffix#32865:68"].value === true && suffix && suffix.componentProperties["Type (Figma Only)"].value === "Icon" && {
3771
+ suffixIcon: ctx.iconHandler.transform(suffix.componentProperties["Icon#37963:0"])
3772
+ },
3773
+ ...inputButton.componentProperties["Has Suffix#32865:68"].value === true && suffix && suffix.componentProperties["Type (Figma Only)"].value === "Text" && {
3774
+ suffix: suffix.componentProperties["Suffix Text#34021:4"].value
3775
+ }
3776
+ };
3777
+ // these can be fragile but better than having 9 different handlers
3778
+ const placeholder = findOne(node, (node)=>node.type === "TEXT" && node.name.toLowerCase().includes("placeholder"));
3779
+ const value = findOne(node, (node)=>node.type === "TEXT" && node.name.toLowerCase().includes("value"));
3780
+ return createLocalSnippetElement$l("FieldButton", {
3781
+ ...headerProps,
3782
+ ...footerProps,
3783
+ ...commonProps
3784
+ }, props["Has Value"].value === "True" && value ? createLocalSnippetElement$l("FieldButtonValue", undefined, value.characters) : placeholder ? createLocalSnippetElement$l("FieldButtonPlaceholder", undefined, placeholder.characters) : undefined, {
3785
+ comment: "buttonProps를 통해 aria-label을 제공하세요."
3786
+ });
3787
+ });
3788
+ };
3789
+ // TODO: those 4 are basically the same
3790
+ const createSelectFieldHandler = (ctx)=>{
3791
+ const fieldButtonHandler = createFieldButtonHandler(ctx);
3792
+ return defineComponentHandler(templateSelectField.key, (node, traverse)=>{
3793
+ const [fieldButton] = findAllInstances({
3794
+ node,
3795
+ key: fieldButtonHandler.key
3796
+ });
3797
+ return fieldButtonHandler.transform(fieldButton, traverse);
3798
+ });
3799
+ };
3800
+ const createDatePickerFieldHandler = (ctx)=>{
3801
+ const fieldButtonHandler = createFieldButtonHandler(ctx);
3802
+ return defineComponentHandler(templateDatePickerField.key, (node, traverse)=>{
3803
+ const [fieldButton] = findAllInstances({
3804
+ node,
3805
+ key: fieldButtonHandler.key
3806
+ });
3807
+ return fieldButtonHandler.transform(fieldButton, traverse);
3808
+ });
3809
+ };
3810
+ const createTimePickerFieldHandler = (ctx)=>{
3811
+ const fieldButtonHandler = createFieldButtonHandler(ctx);
3812
+ return defineComponentHandler(templateTimePickerField.key, (node, traverse)=>{
3813
+ const [fieldButton] = findAllInstances({
3814
+ node,
3815
+ key: fieldButtonHandler.key
3816
+ });
3817
+ return fieldButtonHandler.transform(fieldButton, traverse);
3818
+ });
3819
+ };
3820
+ const createAddressFieldHandler = (ctx)=>{
3821
+ const fieldButtonHandler = createFieldButtonHandler(ctx);
3822
+ return defineComponentHandler(templateAddressPickerField.key, (node, traverse)=>{
3823
+ const [fieldButton] = findAllInstances({
3824
+ node,
3825
+ key: fieldButtonHandler.key
3826
+ });
3827
+ return fieldButtonHandler.transform(fieldButton, traverse);
3828
+ });
3829
+ };
3830
+
3831
+ const { createLocalSnippetElement: createLocalSnippetElement$k } = createLocalSnippetHelper("floating-action-button");
3589
3832
  const BUTTON_TYPE_KEY = "8cecc85275115d653579d4c3156567ebf19f7b27";
3590
3833
  const MENU_TYPE_KEY = "400124347392c15473f9cd2d8a6aedb64f3baf36";
3591
3834
  const createFloatingActionButtonHandler = (ctx)=>defineComponentHandler(floatingActionButton.key, (node)=>{
@@ -3609,10 +3852,10 @@ const createFloatingActionButtonHandler = (ctx)=>defineComponentHandler(floating
3609
3852
  label: menu.componentProperties["Label#29766:9"].value
3610
3853
  };
3611
3854
  })();
3612
- return createLocalSnippetElement$j("FloatingActionButton", commonProps);
3855
+ return createLocalSnippetElement$k("FloatingActionButton", commonProps);
3613
3856
  });
3614
3857
 
3615
- const { createLocalSnippetElement: createLocalSnippetElement$i } = createLocalSnippetHelper("help-bubble");
3858
+ const { createLocalSnippetElement: createLocalSnippetElement$j } = createLocalSnippetHelper("help-bubble");
3616
3859
  const { createLocalSnippetElement: createLocalSnippetElementTrigger$1 } = createLocalSnippetHelper("action-button");
3617
3860
  const createHelpBubbleHandler = (_ctx)=>defineComponentHandler(helpBubble.key, ({ componentProperties: props })=>{
3618
3861
  const placement = (()=>{
@@ -3652,20 +3895,20 @@ const createHelpBubbleHandler = (_ctx)=>defineComponentHandler(helpBubble.key, (
3652
3895
  showCloseButton: props["Show Close Button#40538:0"].value,
3653
3896
  placement
3654
3897
  };
3655
- return createLocalSnippetElement$i("HelpBubbleTrigger", commonProps, createLocalSnippetElementTrigger$1("ActionButton", {}, "HelpBubble 열기"), {
3898
+ return createLocalSnippetElement$j("HelpBubbleTrigger", commonProps, createLocalSnippetElementTrigger$1("ActionButton", {}, "HelpBubble 열기"), {
3656
3899
  comment: "필요에 따라 HelpBubbleAnchor로 변경하여 사용하세요."
3657
3900
  });
3658
3901
  });
3659
3902
 
3660
- const { createLocalSnippetElement: createLocalSnippetElement$h } = createLocalSnippetHelper("list-header");
3903
+ const { createLocalSnippetElement: createLocalSnippetElement$i } = createLocalSnippetHelper("list-header");
3661
3904
  const createListHeaderHandler = (_ctx)=>defineComponentHandler(listHeader.key, ({ componentProperties: props })=>{
3662
3905
  const commonProps = {
3663
3906
  variant: changeCase.camelCase(props["Variant"].value)
3664
3907
  };
3665
- return createLocalSnippetElement$h("ListHeader", commonProps, props["Title#28588:0"].value);
3908
+ return createLocalSnippetElement$i("ListHeader", commonProps, props["Title#28588:0"].value);
3666
3909
  });
3667
3910
 
3668
- const { createLocalSnippetElement: createLocalSnippetElement$g } = createLocalSnippetHelper("list");
3911
+ const { createLocalSnippetElement: createLocalSnippetElement$h } = createLocalSnippetHelper("list");
3669
3912
  const PREFIX_KEYS = {
3670
3913
  checkmark: "f24c9ef42ef08df79483fbae0fa7d9037e566748",
3671
3914
  radioMark: "5a77ad37a2291989dfe77c44ddee9aa39e447f90",
@@ -3775,37 +4018,37 @@ const createListItemHandler = (ctx)=>defineComponentHandler(listItem.key, (node,
3775
4018
  }
3776
4019
  };
3777
4020
  const comment = tsPattern.match(tag).with("ListItem", ()=>"목적에 따라 ListButtonItem이나 ListLinkItem으로 바꿔 사용하세요.").with("ListCheckItem", ()=>`<List as="fieldset">과 함께 사용하세요.`).with("ListRadioItem", ()=>"<RadioGroup.Root>와 함께 사용하세요.").otherwise(()=>undefined);
3778
- const list = createLocalSnippetElement$g(tag, commonProps, undefined, {
4021
+ const list = createLocalSnippetElement$h(tag, commonProps, undefined, {
3779
4022
  comment
3780
4023
  });
3781
4024
  if (props["Divider#28441:0"].value) {
3782
4025
  return createElement("", {}, [
3783
4026
  list,
3784
- createLocalSnippetElement$g("ListDivider")
4027
+ createLocalSnippetElement$h("ListDivider")
3785
4028
  ]);
3786
4029
  }
3787
4030
  return list;
3788
4031
  });
3789
4032
 
3790
- const { createLocalSnippetElement: createLocalSnippetElement$f } = createLocalSnippetHelper("manner-temp-badge");
4033
+ const { createLocalSnippetElement: createLocalSnippetElement$g } = createLocalSnippetHelper("manner-temp-badge");
3791
4034
  const createMannerTempBadgeHandler = (_ctx)=>defineComponentHandler(mannerTempBadge.key, ({ children })=>{
3792
4035
  const textNode = children.find((child)=>child.type === "TEXT");
3793
4036
  const commonProps = {
3794
4037
  temperature: Number(textNode?.characters.replace(/[^\d.-]/g, "") ?? "-1")
3795
4038
  };
3796
- return createLocalSnippetElement$f("MannerTempBadge", commonProps);
4039
+ return createLocalSnippetElement$g("MannerTempBadge", commonProps);
3797
4040
  });
3798
4041
 
3799
- const { createLocalSnippetElement: createLocalSnippetElement$e } = createLocalSnippetHelper("manner-temp");
4042
+ const { createLocalSnippetElement: createLocalSnippetElement$f } = createLocalSnippetHelper("manner-temp");
3800
4043
  const createMannerTempHandler = (_ctx)=>defineComponentHandler(mannerTemp.key, ({ children })=>{
3801
4044
  const textNode = children.find((child)=>child.type === "TEXT");
3802
4045
  const commonProps = {
3803
4046
  temperature: Number(textNode?.characters.replace(/[^\d.-]/g, "") ?? "-1")
3804
4047
  };
3805
- return createLocalSnippetElement$e("MannerTemp", commonProps);
4048
+ return createLocalSnippetElement$f("MannerTemp", commonProps);
3806
4049
  });
3807
4050
 
3808
- const { createLocalSnippetElement: createLocalSnippetElement$d } = createLocalSnippetHelper("menu-sheet");
4051
+ const { createLocalSnippetElement: createLocalSnippetElement$e } = createLocalSnippetHelper("menu-sheet");
3809
4052
  const { createLocalSnippetElement: createLocalSnippetElementTrigger } = createLocalSnippetHelper("action-button");
3810
4053
  const MENU_SHEET_ITEM_KEY = "057083e95466da59051119eec0b41d4ad5a07f8f";
3811
4054
  const createMenuSheetItemHandler = (ctx)=>defineComponentHandler(MENU_SHEET_ITEM_KEY, ({ componentProperties: props })=>{
@@ -3816,7 +4059,7 @@ const createMenuSheetItemHandler = (ctx)=>defineComponentHandler(MENU_SHEET_ITEM
3816
4059
  disabled: true
3817
4060
  }
3818
4061
  };
3819
- return createLocalSnippetElement$d("MenuSheetItem", commonProps, [
4062
+ return createLocalSnippetElement$e("MenuSheetItem", commonProps, [
3820
4063
  props["Show Prefix Icon#17043:5"].value ? createSeedReactElement("PrefixIcon", {
3821
4064
  svg: ctx.iconHandler.transform(props["Prefix Icon#55948:0"])
3822
4065
  }) : undefined,
@@ -3832,7 +4075,7 @@ const createMenuSheetGroupHandler = (ctx)=>{
3832
4075
  key: menuSheetItemHandler.key
3833
4076
  });
3834
4077
  const contentChildren = items.map((item)=>menuSheetItemHandler.transform(item, traverse));
3835
- return createLocalSnippetElement$d("MenuSheetGroup", undefined, contentChildren);
4078
+ return createLocalSnippetElement$e("MenuSheetGroup", undefined, contentChildren);
3836
4079
  });
3837
4080
  };
3838
4081
  const createMenuSheetHandler = (ctx)=>{
@@ -3852,69 +4095,23 @@ const createMenuSheetHandler = (ctx)=>{
3852
4095
  })).with("Text Only", ()=>({
3853
4096
  labelAlignment: "center"
3854
4097
  })).exhaustive();
3855
- const content = createLocalSnippetElement$d("MenuSheetContent", {
4098
+ const content = createLocalSnippetElement$e("MenuSheetContent", {
3856
4099
  title,
3857
4100
  labelAlignment
3858
4101
  }, contentChildren, {
3859
4102
  comment: title ? undefined : "title을 제공하지 않는 경우 aria-label이나 aria-labelledby 중 하나를 제공해야 합니다."
3860
4103
  });
3861
- const trigger = createLocalSnippetElement$d("MenuSheetTrigger", {
4104
+ const trigger = createLocalSnippetElement$e("MenuSheetTrigger", {
3862
4105
  asChild: true
3863
4106
  }, createLocalSnippetElementTrigger("ActionButton", {}, "MenuSheet 열기"));
3864
- return createLocalSnippetElement$d("MenuSheet", undefined, [
4107
+ return createLocalSnippetElement$e("MenuSheet", undefined, [
3865
4108
  trigger,
3866
4109
  content
3867
4110
  ]);
3868
4111
  });
3869
4112
  };
3870
4113
 
3871
- const { createLocalSnippetElement: createLocalSnippetElement$c } = createLocalSnippetHelper("text-field");
3872
- const createMultilineTextFieldHandler = (_ctx)=>defineComponentHandler(multilineTextField.key, ({ componentProperties: props })=>{
3873
- 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;
3874
- const states = state.split("-");
3875
- const commonProps = {
3876
- size: handleSizeProp(size),
3877
- // header
3878
- ...showHeader && {
3879
- label
3880
- },
3881
- ...showHeader && showIndicator && {
3882
- indicator
3883
- },
3884
- // input
3885
- ...filled === "True" && {
3886
- defaultValue
3887
- },
3888
- ...states.includes("Invalid") && {
3889
- invalid: true
3890
- },
3891
- ...states.includes("Disabled") && {
3892
- disabled: true
3893
- },
3894
- ...states.includes("Read Only") && {
3895
- readOnly: true
3896
- },
3897
- // footer
3898
- ...showFooter && showDescription && states.includes("Invalid") && {
3899
- // invalid인 경우 description을 error로 사용
3900
- errorMessage: description
3901
- },
3902
- ...showFooter && showDescription && !states.includes("Invalid") && {
3903
- // invalid가 아닌 경우 description을 description으로 사용
3904
- description
3905
- },
3906
- ...showFooter && showCharacterCount && {
3907
- maxGraphemeCount: Number(maxCharacterCount)
3908
- }
3909
- };
3910
- const inputProps = {
3911
- placeholder
3912
- };
3913
- const TextFieldChildren = createLocalSnippetElement$c("TextFieldTextarea", inputProps);
3914
- return createLocalSnippetElement$c("TextField", commonProps, TextFieldChildren);
3915
- });
3916
-
3917
- const { createLocalSnippetElement: createLocalSnippetElement$b } = createLocalSnippetHelper("page-banner");
4114
+ const { createLocalSnippetElement: createLocalSnippetElement$d } = createLocalSnippetHelper("page-banner");
3918
4115
  const SUFFIX_BUTTON_KEY = "7dce4e1242761ccd8e5da42278fc2d870918039c";
3919
4116
  const createPageBannerButtonHandler = (_ctx)=>defineComponentHandler(SUFFIX_BUTTON_KEY, (node)=>{
3920
4117
  return createElement("PageBannerButton", undefined, node.componentProperties["Label#39890:0"].value);
@@ -3948,7 +4145,7 @@ const createPageBannerHandler = (ctx)=>{
3948
4145
  })).exhaustive();
3949
4146
  const textNode = findOne(node, (child)=>child.type === "TEXT" && child.name === "Text");
3950
4147
  if (!textNode) {
3951
- return createLocalSnippetElement$b(tag, undefined, undefined, {
4148
+ return createLocalSnippetElement$d(tag, undefined, undefined, {
3952
4149
  comment: "내용을 제공해주세요."
3953
4150
  });
3954
4151
  }
@@ -3981,11 +4178,11 @@ const createPageBannerHandler = (ctx)=>{
3981
4178
  suffix
3982
4179
  }
3983
4180
  };
3984
- return createLocalSnippetElement$b(tag, commonProps);
4181
+ return createLocalSnippetElement$d(tag, commonProps);
3985
4182
  });
3986
4183
  };
3987
4184
 
3988
- const { createLocalSnippetElement: createLocalSnippetElement$a } = createLocalSnippetHelper("progress-circle");
4185
+ const { createLocalSnippetElement: createLocalSnippetElement$c } = createLocalSnippetHelper("progress-circle");
3989
4186
  const createProgressCircleHandler = (_ctx)=>defineComponentHandler(progressCircle.key, ({ componentProperties: props })=>{
3990
4187
  const { value, minValue, maxValue } = tsPattern.match(props.Value.value).with("Indeterminate", ()=>({
3991
4188
  value: undefined,
@@ -4017,10 +4214,10 @@ const createProgressCircleHandler = (_ctx)=>defineComponentHandler(progressCircl
4017
4214
  tone: changeCase.camelCase(props.Tone.value)
4018
4215
  }
4019
4216
  };
4020
- return createLocalSnippetElement$a("ProgressCircle", commonProps);
4217
+ return createLocalSnippetElement$c("ProgressCircle", commonProps);
4021
4218
  });
4022
4219
 
4023
- const { createLocalSnippetElement: createLocalSnippetElement$9 } = createLocalSnippetHelper("radio-group");
4220
+ const { createLocalSnippetElement: createLocalSnippetElement$b } = createLocalSnippetHelper("radio-group");
4024
4221
  const createRadioGroupItemHandler = (_ctx)=>defineComponentHandler(radio.key, ({ componentProperties: props })=>{
4025
4222
  const tone = tsPattern.match(props.Tone.value).with("Neutral", ()=>"neutral").with("🚫[Deprecated]Brand", ()=>"brand").exhaustive();
4026
4223
  const commonProps = {
@@ -4033,20 +4230,20 @@ const createRadioGroupItemHandler = (_ctx)=>defineComponentHandler(radio.key, ({
4033
4230
  tone,
4034
4231
  weight: changeCase.camelCase(props.Weight.value)
4035
4232
  };
4036
- return createLocalSnippetElement$9("RadioGroupItem", commonProps);
4233
+ return createLocalSnippetElement$b("RadioGroupItem", commonProps);
4037
4234
  });
4038
4235
 
4039
- const { createLocalSnippetElement: createLocalSnippetElement$8 } = createLocalSnippetHelper("radio-group");
4236
+ const { createLocalSnippetElement: createLocalSnippetElement$a } = createLocalSnippetHelper("radio-group");
4040
4237
  const createRadioMarkHandler = (_ctx)=>defineComponentHandler(radioMark.key, ({ componentProperties: props })=>{
4041
4238
  const tone = tsPattern.match(props.Tone.value).with("Neutral", ()=>"neutral").with("🚫[Deprecated]Brand", ()=>"brand").exhaustive();
4042
4239
  const commonProps = {
4043
4240
  tone,
4044
4241
  size: handleSizeProp(props.Size.value)
4045
4242
  };
4046
- return createLocalSnippetElement$8("RadioMark", commonProps);
4243
+ return createLocalSnippetElement$a("RadioMark", commonProps);
4047
4244
  });
4048
4245
 
4049
- const { createLocalSnippetElement: createLocalSnippetElement$7 } = createLocalSnippetHelper("reaction-button");
4246
+ const { createLocalSnippetElement: createLocalSnippetElement$9 } = createLocalSnippetHelper("reaction-button");
4050
4247
  const createReactionButtonHandler = (ctx)=>defineComponentHandler(reactionButton.key, ({ componentProperties: props })=>{
4051
4248
  const commonProps = {
4052
4249
  size: handleSizeProp(props.Size.value),
@@ -4060,7 +4257,7 @@ const createReactionButtonHandler = (ctx)=>defineComponentHandler(reactionButton
4060
4257
  defaultPressed: true
4061
4258
  }
4062
4259
  };
4063
- return createLocalSnippetElement$7("ReactionButton", commonProps, [
4260
+ return createLocalSnippetElement$9("ReactionButton", commonProps, [
4064
4261
  createSeedReactElement("PrefixIcon", {
4065
4262
  svg: ctx.iconHandler.transform(props["Icon#12379:0"])
4066
4263
  }),
@@ -4069,7 +4266,7 @@ const createReactionButtonHandler = (ctx)=>defineComponentHandler(reactionButton
4069
4266
  ]);
4070
4267
  });
4071
4268
 
4072
- const { createLocalSnippetElement: createLocalSnippetElement$6 } = createLocalSnippetHelper("segmented-control");
4269
+ const { createLocalSnippetElement: createLocalSnippetElement$8 } = createLocalSnippetHelper("segmented-control");
4073
4270
  const SEGMENTED_CONTROL_ITEM_KEY = "9a7ba0d4c041ddbce84ee48881788434fd6bccc8";
4074
4271
  const createSegmentedControlItemHandler = (_ctx)=>defineComponentHandler(SEGMENTED_CONTROL_ITEM_KEY, ({ componentProperties: props })=>{
4075
4272
  const states = props.State.value.split("-");
@@ -4079,7 +4276,7 @@ const createSegmentedControlItemHandler = (_ctx)=>defineComponentHandler(SEGMENT
4079
4276
  disabled: true
4080
4277
  }
4081
4278
  };
4082
- return createLocalSnippetElement$6("SegmentedControlItem", commonProps, props["Label#11366:15"].value);
4279
+ return createLocalSnippetElement$8("SegmentedControlItem", commonProps, props["Label#11366:15"].value);
4083
4280
  });
4084
4281
  const createSegmentedControlHandler = (ctx)=>{
4085
4282
  const segmentedControlItemHandler = createSegmentedControlItemHandler();
@@ -4095,13 +4292,13 @@ const createSegmentedControlHandler = (ctx)=>{
4095
4292
  defaultValue: selectedSegment.componentProperties["Label#11366:15"].value
4096
4293
  }
4097
4294
  };
4098
- return createLocalSnippetElement$6("SegmentedControl", commonProps, segmentedControlChildren, {
4295
+ return createLocalSnippetElement$8("SegmentedControl", commonProps, segmentedControlChildren, {
4099
4296
  comment: "aria-label이나 aria-labelledby 중 하나를 제공해야 합니다."
4100
4297
  });
4101
4298
  });
4102
4299
  };
4103
4300
 
4104
- const { createLocalSnippetElement: createLocalSnippetElement$5 } = createLocalSnippetHelper("select-box");
4301
+ const { createLocalSnippetElement: createLocalSnippetElement$7 } = createLocalSnippetHelper("select-box");
4105
4302
  const createSelectBoxHandler = (_ctx)=>defineComponentHandler(selectBox.key, ({ componentProperties: props })=>{
4106
4303
  const tag = tsPattern.match(props.Control.value).with("Checkbox", ()=>"CheckSelectBox").with("Radio", ()=>"RadioSelectBoxItem").exhaustive();
4107
4304
  const commonProps = {
@@ -4116,7 +4313,7 @@ const createSelectBoxHandler = (_ctx)=>defineComponentHandler(selectBox.key, ({
4116
4313
  defaultChecked: true
4117
4314
  }
4118
4315
  };
4119
- return createLocalSnippetElement$5(tag, commonProps);
4316
+ return createLocalSnippetElement$7(tag, commonProps);
4120
4317
  });
4121
4318
  const createSelectBoxGroupHandler = (ctx)=>{
4122
4319
  const selectBoxHandler = createSelectBoxHandler();
@@ -4139,7 +4336,7 @@ const createSelectBoxGroupHandler = (ctx)=>{
4139
4336
  defaultValue: selectedSelectBox?.componentProperties["Label#3635:0"].value
4140
4337
  }
4141
4338
  };
4142
- return createLocalSnippetElement$5(tag, commonProps, stack);
4339
+ return createLocalSnippetElement$7(tag, commonProps, stack);
4143
4340
  });
4144
4341
  };
4145
4342
 
@@ -4153,7 +4350,91 @@ const createSkeletonHandler = (ctx)=>defineComponentHandler(skeleton.key, (node)
4153
4350
  return createSeedReactElement("Skeleton", commonProps);
4154
4351
  });
4155
4352
 
4156
- const { createLocalSnippetElement: createLocalSnippetElement$4 } = createLocalSnippetHelper("snackbar");
4353
+ const { createLocalSnippetElement: createLocalSnippetElement$6 } = createLocalSnippetHelper("slider");
4354
+ const SLIDER_TICK_KEY = "ace432ffb7a2af13bce549b19c932ac5f96a9a78";
4355
+ function getSliderComment(props) {
4356
+ return [
4357
+ "min, max, step 값을 적절히 조정해주세요.",
4358
+ props.markers && "markers 배열을 채워주세요.",
4359
+ props.ticks && "ticks 배열을 채워주세요."
4360
+ ].filter(Boolean).join(" ");
4361
+ }
4362
+ const createSliderFieldHandler = (ctx)=>{
4363
+ const sliderHandler = createSliderHandler();
4364
+ const fieldHeaderHandler = createFieldHeaderHandler();
4365
+ const fieldFooterHandler = createFieldFooterHandler();
4366
+ return defineComponentHandler(templateSliderField.key, (node, traverse)=>{
4367
+ const props = node.componentProperties;
4368
+ const [slider$1] = findAllInstances({
4369
+ node,
4370
+ key: slider.key
4371
+ });
4372
+ const [fieldHeader] = findAllInstances({
4373
+ node,
4374
+ key: FIELD_KEYS.HEADER
4375
+ });
4376
+ const [fieldFooter] = findAllInstances({
4377
+ node,
4378
+ key: FIELD_KEYS.FOOTER
4379
+ });
4380
+ const sliderProps = sliderHandler.transform(slider$1, traverse).props;
4381
+ // maxGraphemeCount and required can't be props of Slider
4382
+ const { required: __required, ...headerProps } = props["Show Header#40606:8"].value && fieldHeader ? fieldHeaderHandler.transform(fieldHeader, traverse).props : {};
4383
+ const { maxGraphemeCount: __maxGraphemeCount, ...footerProps } = props["Show Footer#40606:9"].value && fieldFooter ? fieldFooterHandler.transform(fieldFooter, traverse).props : {};
4384
+ const commonProps = {
4385
+ ...sliderProps,
4386
+ ...headerProps,
4387
+ ...footerProps
4388
+ };
4389
+ return createLocalSnippetElement$6("Slider", commonProps, undefined, {
4390
+ comment: getSliderComment(commonProps)
4391
+ });
4392
+ });
4393
+ };
4394
+ const createSliderHandler = (_ctx)=>{
4395
+ return defineComponentHandler(slider.key, (node)=>{
4396
+ const { componentProperties: props } = node;
4397
+ const { min, max, defaultValues } = tsPattern.match(props.Value.value).with("Single", ()=>({
4398
+ min: 0,
4399
+ max: 100,
4400
+ defaultValues: [
4401
+ 50
4402
+ ]
4403
+ })).with("Range", ()=>({
4404
+ min: 0,
4405
+ max: 100,
4406
+ defaultValues: [
4407
+ 0,
4408
+ 50
4409
+ ]
4410
+ })).exhaustive();
4411
+ const [ticks] = findAllInstances({
4412
+ node,
4413
+ key: SLIDER_TICK_KEY
4414
+ });
4415
+ const commonProps = {
4416
+ min,
4417
+ max,
4418
+ defaultValues,
4419
+ hideRange: props["Show Active Track#48156:0"].value === false,
4420
+ ...props["Show Markers#49596:0"].value === true && {
4421
+ markers: []
4422
+ },
4423
+ ...props["Has Tick Mark#47921:0"].value === true && ticks && {
4424
+ ticks: [],
4425
+ tickWeight: ticks.componentProperties.Type.value === "Discrete" ? "thick" : "thin"
4426
+ },
4427
+ ...props.State.value === "Disabled" && {
4428
+ disabled: true
4429
+ }
4430
+ };
4431
+ return createLocalSnippetElement$6("Slider", commonProps, undefined, {
4432
+ comment: getSliderComment(commonProps)
4433
+ });
4434
+ });
4435
+ };
4436
+
4437
+ const { createLocalSnippetElement: createLocalSnippetElement$5 } = createLocalSnippetHelper("snackbar");
4157
4438
  const createSnackbarHandler = (_ctx)=>defineComponentHandler(snackbar.key, ({ componentProperties: props })=>{
4158
4439
  const commonProps = {
4159
4440
  message: props["Message#1528:4"].value,
@@ -4163,20 +4444,20 @@ const createSnackbarHandler = (_ctx)=>defineComponentHandler(snackbar.key, ({ co
4163
4444
  }
4164
4445
  };
4165
4446
  // TODO: adapter.create({ render })
4166
- return createLocalSnippetElement$4("Snackbar", commonProps);
4447
+ return createLocalSnippetElement$5("Snackbar", commonProps);
4167
4448
  });
4168
4449
 
4169
- const { createLocalSnippetElement: createLocalSnippetElement$3 } = createLocalSnippetHelper("switch");
4450
+ const { createLocalSnippetElement: createLocalSnippetElement$4 } = createLocalSnippetHelper("switch");
4170
4451
  const createSwitchMarkHandler = (_ctx)=>defineComponentHandler(switchMark.key, ({ componentProperties: props })=>{
4171
4452
  const tone = tsPattern.match(props.Tone.value).with("Neutral", ()=>"neutral").with("🚫[Deprecated] Brand", ()=>"brand").exhaustive();
4172
4453
  const commonProps = {
4173
4454
  tone,
4174
4455
  size: props.Size.value
4175
4456
  };
4176
- return createLocalSnippetElement$3("SwitchMark", commonProps);
4457
+ return createLocalSnippetElement$4("SwitchMark", commonProps);
4177
4458
  });
4178
4459
 
4179
- const { createLocalSnippetElement: createLocalSnippetElement$2 } = createLocalSnippetHelper("switch");
4460
+ const { createLocalSnippetElement: createLocalSnippetElement$3 } = createLocalSnippetHelper("switch");
4180
4461
  const createSwitchHandler = (_ctx)=>defineComponentHandler(_switch.key, ({ componentProperties: props })=>{
4181
4462
  const tone = tsPattern.match(props.Tone.value).with("Neutral", ()=>"neutral").with("🚫[Deprecated] Brand", ()=>"brand").exhaustive();
4182
4463
  const commonProps = {
@@ -4184,9 +4465,9 @@ const createSwitchHandler = (_ctx)=>defineComponentHandler(_switch.key, ({ compo
4184
4465
  size: props.Size.value
4185
4466
  };
4186
4467
  if (props["Layout(Figma Only)"].value === "🚫[Switch Mark 사용] Switch Only") {
4187
- return createLocalSnippetElement$2("SwitchMark", commonProps);
4468
+ return createLocalSnippetElement$3("SwitchMark", commonProps);
4188
4469
  }
4189
- return createLocalSnippetElement$2("Switch", {
4470
+ return createLocalSnippetElement$3("Switch", {
4190
4471
  ...commonProps,
4191
4472
  label: props["Label#36578:0"].value,
4192
4473
  ...props.Selected.value === "True" && {
@@ -4407,8 +4688,264 @@ const createChipTabsTriggerHandler = (_ctx)=>defineComponentHandler(CHIP_TRIGGER
4407
4688
  return createChipTabsLocalSnippetElement("ChipTabsTrigger", commonProps);
4408
4689
  });
4409
4690
 
4410
- const { createLocalSnippetElement: createLocalSnippetElement$1 } = createLocalSnippetHelper("text-field");
4411
- const createTextFieldHandler = (ctx)=>defineComponentHandler(textField.key, ({ componentProperties: props })=>{
4691
+ const { createLocalSnippetElement: createLocalSnippetElement$2 } = createLocalSnippetHelper("text-field");
4692
+ const TEXT_INPUT_OUTLINE_KEY = "22eebd645d310c086d9f5f69d8f179ff5c7cf7ca";
4693
+ const TEXT_INPUT_OUTLINE_PREFIX_KEY = "1ab174dd51bc42a5efe530f52f1dd02255c50b18";
4694
+ const TEXT_INPUT_OUTLINE_SUFFIX_KEY = "555fee288d9053760e301791665bbac31d19c43f";
4695
+ const TEXT_INPUT_UNDERLINE_KEY = "16e9e343fc319190149369bd61076d6415e09a8a";
4696
+ const TEXT_INPUT_UNDERLINE_PREFIX_KEY = "a7ceae43b6daf4490e8ab408d2c29fb63b2eb891";
4697
+ const TEXT_INPUT_UNDERLINE_SUFFIX_KEY = "1b88368820be61f358e24a8aaa601e7f2a2ea101";
4698
+ const TEXTAREA_KEY = "22bb206483f00cd635188eea6ae8a6aac058b5d5";
4699
+ const createTextInputFieldHandler = (ctx)=>{
4700
+ const fieldHeaderHandler = createFieldHeaderHandler();
4701
+ const fieldFooterHandler = createFieldFooterHandler();
4702
+ return defineComponentHandler(templateTextField.key, (node, traverse)=>{
4703
+ const props = node.componentProperties;
4704
+ const [textInputOutline] = findAllInstances({
4705
+ node,
4706
+ key: TEXT_INPUT_OUTLINE_KEY
4707
+ });
4708
+ const [textInputUnderline] = findAllInstances({
4709
+ node,
4710
+ key: TEXT_INPUT_UNDERLINE_KEY
4711
+ });
4712
+ const [fieldHeader] = findAllInstances({
4713
+ node,
4714
+ key: FIELD_KEYS.HEADER
4715
+ });
4716
+ const [fieldFooter] = findAllInstances({
4717
+ node,
4718
+ key: FIELD_KEYS.FOOTER
4719
+ });
4720
+ const fieldProps = {
4721
+ ...props["Show Header#40606:8"].value && fieldHeader ? fieldHeaderHandler.transform(fieldHeader, traverse).props : {},
4722
+ ...props["Show Footer#40606:9"].value && fieldFooter ? fieldFooterHandler.transform(fieldFooter, traverse).props : {}
4723
+ };
4724
+ const commonProps = (()=>{
4725
+ if (textInputOutline) {
4726
+ const [prefix] = findAllInstances({
4727
+ node: textInputOutline,
4728
+ key: TEXT_INPUT_OUTLINE_PREFIX_KEY
4729
+ });
4730
+ const [suffix] = findAllInstances({
4731
+ node: textInputOutline,
4732
+ key: TEXT_INPUT_OUTLINE_SUFFIX_KEY
4733
+ });
4734
+ return {
4735
+ variant: "outline",
4736
+ ...textInputOutline.componentProperties.State.value === "Disabled" && {
4737
+ disabled: true
4738
+ },
4739
+ ...textInputOutline.componentProperties.State.value === "Read Only" && {
4740
+ readOnly: true
4741
+ },
4742
+ ...textInputOutline.componentProperties.State.value === "Error" && {
4743
+ invalid: true
4744
+ },
4745
+ ...textInputOutline.componentProperties.State.value === "Error Focused" && {
4746
+ invalid: true
4747
+ },
4748
+ ...textInputOutline.componentProperties["Has Prefix#32514:10"].value === true && prefix && prefix.componentProperties.Type.value === "Icon" && {
4749
+ prefixIcon: ctx.iconHandler.transform(prefix.componentProperties["Icon#34021:2"])
4750
+ },
4751
+ ...textInputOutline.componentProperties["Has Suffix#32865:68"].value === true && suffix && suffix.componentProperties["Type (Figma Only)"].value === "Icon" && {
4752
+ suffixIcon: ctx.iconHandler.transform(suffix.componentProperties["Icon#45391:0"])
4753
+ },
4754
+ ...textInputOutline.componentProperties["Has Suffix#32865:68"].value === true && suffix && suffix.componentProperties["Type (Figma Only)"].value === "Text" && {
4755
+ suffix: suffix.componentProperties["Suffix Text#34021:4"].value
4756
+ }
4757
+ };
4758
+ }
4759
+ if (textInputUnderline) {
4760
+ const [prefix] = findAllInstances({
4761
+ node: textInputUnderline,
4762
+ key: TEXT_INPUT_UNDERLINE_PREFIX_KEY
4763
+ });
4764
+ const [suffix] = findAllInstances({
4765
+ node: textInputUnderline,
4766
+ key: TEXT_INPUT_UNDERLINE_SUFFIX_KEY
4767
+ });
4768
+ return {
4769
+ variant: "underline",
4770
+ ...textInputUnderline.componentProperties.State.value === "Disabled" && {
4771
+ disabled: true
4772
+ },
4773
+ ...textInputUnderline.componentProperties.State.value === "Read Only" && {
4774
+ readOnly: true
4775
+ },
4776
+ ...textInputUnderline.componentProperties.State.value === "Error" && {
4777
+ invalid: true
4778
+ },
4779
+ ...textInputUnderline.componentProperties.State.value === "Error Focused" && {
4780
+ invalid: true
4781
+ },
4782
+ ...textInputUnderline.componentProperties["Has Prefix#34125:0"].value === true && prefix && prefix.componentProperties.Type.value === "Icon" && {
4783
+ prefixIcon: ctx.iconHandler.transform(prefix.componentProperties["Icon#34021:2"])
4784
+ },
4785
+ ...textInputUnderline.componentProperties["Has Suffix#34125:8"].value === true && suffix && suffix.componentProperties["Type (Figma Only)"].value === "Icon" && {
4786
+ suffixIcon: ctx.iconHandler.transform(suffix.componentProperties["Icon#45391:5"])
4787
+ },
4788
+ ...textInputUnderline.componentProperties["Has Suffix#34125:8"].value === true && suffix && suffix.componentProperties["Type (Figma Only)"].value === "Text" && {
4789
+ suffix: suffix.componentProperties["Suffix Text#34021:4"].value
4790
+ }
4791
+ };
4792
+ }
4793
+ return {};
4794
+ })();
4795
+ // these can be fragile but better than having 9 different handlers
4796
+ const placeholder = findOne(node, (node)=>node.type === "TEXT" && node.name.toLowerCase().includes("placeholder"));
4797
+ const value = findOne(node, (node)=>node.type === "TEXT" && node.name.toLowerCase().includes("value"));
4798
+ const inputProps = {
4799
+ ...placeholder && {
4800
+ placeholder: placeholder.characters
4801
+ }
4802
+ };
4803
+ return createLocalSnippetElement$2("TextField", {
4804
+ ...fieldProps,
4805
+ ...commonProps,
4806
+ ...value && {
4807
+ defaultValue: value.characters
4808
+ }
4809
+ }, createLocalSnippetElement$2("TextFieldInput", inputProps));
4810
+ });
4811
+ };
4812
+ const createTextareaFieldHandler = (ctx)=>{
4813
+ const fieldHeaderHandler = createFieldHeaderHandler();
4814
+ const fieldFooterHandler = createFieldFooterHandler();
4815
+ return defineComponentHandler(templateTextareaField.key, (node, traverse)=>{
4816
+ const [textarea] = findAllInstances({
4817
+ node,
4818
+ key: TEXTAREA_KEY
4819
+ });
4820
+ const [fieldHeader] = findAllInstances({
4821
+ node,
4822
+ key: FIELD_KEYS.HEADER
4823
+ });
4824
+ const [fieldFooter] = findAllInstances({
4825
+ node,
4826
+ key: FIELD_KEYS.FOOTER
4827
+ });
4828
+ const fieldProps = {
4829
+ ...fieldHeader ? fieldHeaderHandler.transform(fieldHeader, traverse).props : {},
4830
+ ...fieldFooter ? fieldFooterHandler.transform(fieldFooter, traverse).props : {}
4831
+ };
4832
+ // these can be fragile but better than having 9 different handlers
4833
+ const placeholder = findOne(node, (node)=>node.type === "TEXT" && node.name.toLowerCase().includes("placeholder"));
4834
+ const value = findOne(node, (node)=>node.type === "TEXT" && node.name.toLowerCase().includes("value"));
4835
+ const inputProps = {
4836
+ autoresize: textarea.componentProperties["Auto Size (Figma Only)"].value === "true",
4837
+ ...placeholder && {
4838
+ placeholder: placeholder.characters
4839
+ }
4840
+ };
4841
+ const commonProps = {
4842
+ ...textarea.componentProperties.State.value === "Disabled" && {
4843
+ disabled: true
4844
+ },
4845
+ ...textarea.componentProperties.State.value === "Read Only" && {
4846
+ readOnly: true
4847
+ },
4848
+ ...value && {
4849
+ defaultValue: value.characters
4850
+ }
4851
+ };
4852
+ return createLocalSnippetElement$2("TextField", {
4853
+ ...fieldProps,
4854
+ ...commonProps
4855
+ }, createLocalSnippetElement$2("TextFieldTextarea", inputProps));
4856
+ });
4857
+ };
4858
+
4859
+ const { createLocalSnippetElement: createLocalSnippetElement$1 } = createLocalSnippetHelper("toggle-button");
4860
+ const createToggleButtonHandler = (ctx)=>defineComponentHandler(toggleButton.key, ({ componentProperties: props })=>{
4861
+ const commonProps = {
4862
+ variant: changeCase.camelCase(props.Variant.value),
4863
+ size: handleSizeProp(props.Size.value),
4864
+ ...props.Selected.value === "True" && {
4865
+ defaultPressed: true
4866
+ },
4867
+ ...props.State.value === "Disabled" && {
4868
+ disabled: true
4869
+ },
4870
+ ...props.State.value === "Loading" && {
4871
+ loading: true
4872
+ }
4873
+ };
4874
+ return createLocalSnippetElement$1("ToggleButton", commonProps, [
4875
+ props["Show Prefix Icon#6122:392"].value ? createSeedReactElement("PrefixIcon", {
4876
+ svg: ctx.iconHandler.transform(props["Prefix Icon#6122:98"])
4877
+ }) : undefined,
4878
+ props["Label#6122:49"].value,
4879
+ props["Show Suffix Icon#6122:147"].value ? createSeedReactElement("SuffixIcon", {
4880
+ svg: ctx.iconHandler.transform(props["Suffix Icon#6122:343"])
4881
+ }) : undefined
4882
+ ]);
4883
+ });
4884
+
4885
+ const createTagGroupHandler = (ctx)=>{
4886
+ const itemHandler = createTagGroupItemHandler(ctx);
4887
+ return defineComponentHandler(tagGroup.key, (node, traverse)=>{
4888
+ const itemNodes = findAllInstances({
4889
+ node,
4890
+ key: TAG_GROUP_ITEM_KEY
4891
+ });
4892
+ const items = itemNodes.map((itemNode)=>itemHandler.transform(itemNode, traverse));
4893
+ if (items.length === 0) {
4894
+ return createSeedReactElement("TagGroup.Root");
4895
+ }
4896
+ // if size/weight/tone are all the same among item[n].props, lift them up to TagGroup.Root
4897
+ const consistent = {
4898
+ size: items.map((item)=>item.props.size).every((size)=>size === items[0].props.size),
4899
+ weight: items.map((item)=>item.props.weight).every((weight)=>weight === items[0].props.weight),
4900
+ tone: items.map((item)=>item.props.tone).every((tone)=>tone === items[0].props.tone)
4901
+ };
4902
+ return createSeedReactElement("TagGroup.Root", {
4903
+ // lift up consistent props
4904
+ ...consistent.size && {
4905
+ size: items[0].props.size
4906
+ },
4907
+ ...consistent.weight && {
4908
+ weight: items[0].props.weight
4909
+ },
4910
+ ...consistent.tone && {
4911
+ tone: items[0].props.tone
4912
+ }
4913
+ }, items.map((item)=>({
4914
+ ...item,
4915
+ props: {
4916
+ // remove lifted props
4917
+ ...item.props,
4918
+ size: consistent.size ? undefined : item.props.size,
4919
+ weight: consistent.weight ? undefined : item.props.weight,
4920
+ tone: consistent.tone ? undefined : item.props.tone
4921
+ }
4922
+ })));
4923
+ });
4924
+ };
4925
+ const TAG_GROUP_ITEM_KEY = "a7bbc318919053f96be00e509469f6294d6bb6bb";
4926
+ const createTagGroupItemHandler = (ctx)=>defineComponentHandler(TAG_GROUP_ITEM_KEY, ({ componentProperties: props })=>{
4927
+ const size = tsPattern.match(props.Size.value).with("t2(12pt)", ()=>"t2").with("t3(13pt)", ()=>"t3").with("t4(14pt)", ()=>"t4").exhaustive();
4928
+ const commonProps = {
4929
+ size,
4930
+ weight: changeCase.camelCase(props["Weight"].value),
4931
+ tone: changeCase.camelCase(props["Tone"].value)
4932
+ };
4933
+ const children = [
4934
+ props.Layout.value === "Icon First" ? createSeedReactElement("PrefixIcon", {
4935
+ svg: ctx.iconHandler.transform(props["Prefix Icon#47948:0"])
4936
+ }) : undefined,
4937
+ props["Label#5409:0"].value,
4938
+ props.Layout.value === "Icon Last" ? createSeedReactElement("SuffixIcon", {
4939
+ svg: ctx.iconHandler.transform(props["Suffix Icon#47948:55"])
4940
+ }) : undefined
4941
+ ].filter(Boolean);
4942
+ return createSeedReactElement("TagGroup.Item", commonProps, children);
4943
+ });
4944
+
4945
+ const { createLocalSnippetElement } = createLocalSnippetHelper("text-field");
4946
+ const LEGACY_TEXT_FIELD_KEY = "c49873c37a639f0dffdea4efd0eb43760d66c141";
4947
+ const LEGACY_MULTILINE_TEXT_FIELD_KEY = "88b2399c930c85f9ce2972163a078bc684b84bbe";
4948
+ const createLegacyTextFieldHandler = (ctx)=>defineComponentHandler(LEGACY_TEXT_FIELD_KEY, ({ componentProperties: props })=>{
4412
4949
  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;
4413
4950
  const states = state.split("-");
4414
4951
  const commonProps = {
@@ -4462,94 +4999,56 @@ const createTextFieldHandler = (ctx)=>defineComponentHandler(textField.key, ({ c
4462
4999
  const inputProps = {
4463
5000
  placeholder
4464
5001
  };
4465
- const TextFieldChildren = createLocalSnippetElement$1("TextFieldInput", inputProps);
4466
- return createLocalSnippetElement$1("TextField", commonProps, TextFieldChildren);
5002
+ const TextFieldChildren = createLocalSnippetElement("TextFieldInput", inputProps);
5003
+ return createLocalSnippetElement("TextField", commonProps, TextFieldChildren, {
5004
+ comment: "이 Figma 컴포넌트는 @seed-design/react@1.1보다 낮은 버전의 TextField입니다."
5005
+ });
4467
5006
  });
4468
-
4469
- const { createLocalSnippetElement } = createLocalSnippetHelper("toggle-button");
4470
- const createToggleButtonHandler = (ctx)=>defineComponentHandler(toggleButton.key, ({ componentProperties: props })=>{
5007
+ const createLegacyMultilineTextFieldHandler = (_ctx)=>defineComponentHandler(LEGACY_MULTILINE_TEXT_FIELD_KEY, ({ componentProperties: props })=>{
5008
+ 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;
5009
+ const states = state.split("-");
4471
5010
  const commonProps = {
4472
- variant: changeCase.camelCase(props.Variant.value),
4473
- size: handleSizeProp(props.Size.value),
4474
- ...props.Selected.value === "True" && {
4475
- defaultPressed: true
4476
- },
4477
- ...props.State.value === "Disabled" && {
4478
- disabled: true
5011
+ size: handleSizeProp(size),
5012
+ // header
5013
+ ...showHeader && {
5014
+ label
4479
5015
  },
4480
- ...props.State.value === "Loading" && {
4481
- loading: true
4482
- }
4483
- };
4484
- return createLocalSnippetElement("ToggleButton", commonProps, [
4485
- props["Show Prefix Icon#6122:392"].value ? createSeedReactElement("PrefixIcon", {
4486
- svg: ctx.iconHandler.transform(props["Prefix Icon#6122:98"])
4487
- }) : undefined,
4488
- props["Label#6122:49"].value,
4489
- props["Show Suffix Icon#6122:147"].value ? createSeedReactElement("SuffixIcon", {
4490
- svg: ctx.iconHandler.transform(props["Suffix Icon#6122:343"])
4491
- }) : undefined
4492
- ]);
4493
- });
4494
-
4495
- const createTagGroupHandler = (ctx)=>{
4496
- const itemHandler = createTagGroupItemHandler(ctx);
4497
- return defineComponentHandler(tagGroup.key, (node, traverse)=>{
4498
- const itemNodes = findAllInstances({
4499
- node,
4500
- key: TAG_GROUP_ITEM_KEY
4501
- });
4502
- const items = itemNodes.map((itemNode)=>itemHandler.transform(itemNode, traverse));
4503
- if (items.length === 0) {
4504
- return createSeedReactElement("TagGroup.Root");
4505
- }
4506
- // if size/weight/tone are all the same among item[n].props, lift them up to TagGroup.Root
4507
- const consistent = {
4508
- size: items.map((item)=>item.props.size).every((size)=>size === items[0].props.size),
4509
- weight: items.map((item)=>item.props.weight).every((weight)=>weight === items[0].props.weight),
4510
- tone: items.map((item)=>item.props.tone).every((tone)=>tone === items[0].props.tone)
4511
- };
4512
- return createSeedReactElement("TagGroup.Root", {
4513
- // lift up consistent props
4514
- ...consistent.size && {
4515
- size: items[0].props.size
5016
+ ...showHeader && showIndicator && {
5017
+ indicator
4516
5018
  },
4517
- ...consistent.weight && {
4518
- weight: items[0].props.weight
5019
+ // input
5020
+ ...filled === "True" && {
5021
+ defaultValue
4519
5022
  },
4520
- ...consistent.tone && {
4521
- tone: items[0].props.tone
5023
+ ...states.includes("Invalid") && {
5024
+ invalid: true
5025
+ },
5026
+ ...states.includes("Disabled") && {
5027
+ disabled: true
5028
+ },
5029
+ ...states.includes("Read Only") && {
5030
+ readOnly: true
5031
+ },
5032
+ // footer
5033
+ ...showFooter && showDescription && states.includes("Invalid") && {
5034
+ // invalid인 경우 description을 error로 사용
5035
+ errorMessage: description
5036
+ },
5037
+ ...showFooter && showDescription && !states.includes("Invalid") && {
5038
+ // invalid가 아닌 경우 description을 description으로 사용
5039
+ description
5040
+ },
5041
+ ...showFooter && showCharacterCount && {
5042
+ maxGraphemeCount: Number(maxCharacterCount)
4522
5043
  }
4523
- }, items.map((item)=>({
4524
- ...item,
4525
- props: {
4526
- // remove lifted props
4527
- ...item.props,
4528
- size: consistent.size ? undefined : item.props.size,
4529
- weight: consistent.weight ? undefined : item.props.weight,
4530
- tone: consistent.tone ? undefined : item.props.tone
4531
- }
4532
- })));
4533
- });
4534
- };
4535
- const TAG_GROUP_ITEM_KEY = "a7bbc318919053f96be00e509469f6294d6bb6bb";
4536
- const createTagGroupItemHandler = (ctx)=>defineComponentHandler(TAG_GROUP_ITEM_KEY, ({ componentProperties: props })=>{
4537
- const size = tsPattern.match(props.Size.value).with("t2(12pt)", ()=>"t2").with("t3(13pt)", ()=>"t3").with("t4(14pt)", ()=>"t4").exhaustive();
4538
- const commonProps = {
4539
- size,
4540
- weight: changeCase.camelCase(props["Weight"].value),
4541
- tone: changeCase.camelCase(props["Tone"].value)
4542
5044
  };
4543
- const children = [
4544
- props.Layout.value === "Icon First" ? createSeedReactElement("PrefixIcon", {
4545
- svg: ctx.iconHandler.transform(props["Prefix Icon#47948:0"])
4546
- }) : undefined,
4547
- props["Label#5409:0"].value,
4548
- props.Layout.value === "Icon Last" ? createSeedReactElement("SuffixIcon", {
4549
- svg: ctx.iconHandler.transform(props["Suffix Icon#47948:55"])
4550
- }) : undefined
4551
- ].filter(Boolean);
4552
- return createSeedReactElement("TagGroup.Item", commonProps, children);
5045
+ const inputProps = {
5046
+ placeholder
5047
+ };
5048
+ const TextFieldChildren = createLocalSnippetElement("TextFieldTextarea", inputProps);
5049
+ return createLocalSnippetElement("TextField", commonProps, TextFieldChildren, {
5050
+ comment: " Figma 컴포넌트는 @seed-design/react@1.1보다 낮은 버전의 TextField입니다."
5051
+ });
4553
5052
  });
4554
5053
 
4555
5054
  function bindComponentHandler(unbound, deps) {
@@ -4558,19 +5057,42 @@ function bindComponentHandler(unbound, deps) {
4558
5057
  const unboundSeedComponentHandlers = [
4559
5058
  createActionButtonGhostHandler,
4560
5059
  createActionButtonHandler,
4561
- createAlertDialogHandler,
4562
- createAppBarHandler,
4563
- createAvatarHandler,
4564
- createAvatarStackHandler,
5060
+ createTextInputFieldHandler,
5061
+ createTextareaFieldHandler,
5062
+ createLegacyTextFieldHandler,
5063
+ createLegacyMultilineTextFieldHandler,
4565
5064
  createBadgeHandler,
4566
- createBottomSheetHandler,
5065
+ createChipHandler,
4567
5066
  createCalloutHandler,
5067
+ createPageBannerHandler,
4568
5068
  createCheckboxHandler,
4569
5069
  createCheckmarkHandler,
4570
- createChipHandler,
4571
- createContextualFloatingButtonHandler,
5070
+ createRadioGroupItemHandler,
5071
+ createRadioMarkHandler,
5072
+ createSwitchHandler,
5073
+ createSwitchMarkHandler,
5074
+ createAlertDialogHandler,
4572
5075
  createDividerHandler,
5076
+ createAvatarHandler,
5077
+ createAvatarStackHandler,
5078
+ createSegmentedControlHandler,
5079
+ createSelectBoxGroupHandler,
5080
+ createSelectBoxHandler,
5081
+ createSliderHandler,
5082
+ createSliderFieldHandler,
5083
+ createTabsHandler,
5084
+ createTagGroupHandler,
5085
+ createTagGroupItemHandler,
5086
+ createToggleButtonHandler,
5087
+ createAppBarHandler,
5088
+ createBottomSheetHandler,
5089
+ createFieldButtonHandler,
5090
+ createAddressFieldHandler,
5091
+ createDatePickerFieldHandler,
5092
+ createSelectFieldHandler,
5093
+ createTimePickerFieldHandler,
4573
5094
  createErrorStateHandler,
5095
+ createContextualFloatingButtonHandler,
4574
5096
  createFloatingActionButtonHandler,
4575
5097
  createHelpBubbleHandler,
4576
5098
  createIdentityPlaceholderHandler,
@@ -4579,24 +5101,10 @@ const unboundSeedComponentHandlers = [
4579
5101
  createMannerTempBadgeHandler,
4580
5102
  createMannerTempHandler,
4581
5103
  createMenuSheetHandler,
4582
- createMultilineTextFieldHandler,
4583
- createPageBannerHandler,
4584
5104
  createProgressCircleHandler,
4585
- createRadioGroupItemHandler,
4586
- createRadioMarkHandler,
4587
5105
  createReactionButtonHandler,
4588
- createSegmentedControlHandler,
4589
- createSelectBoxGroupHandler,
4590
- createSelectBoxHandler,
4591
5106
  createSkeletonHandler,
4592
- createSnackbarHandler,
4593
- createSwitchHandler,
4594
- createSwitchMarkHandler,
4595
- createTabsHandler,
4596
- createTagGroupHandler,
4597
- createTagGroupItemHandler,
4598
- createTextFieldHandler,
4599
- createToggleButtonHandler
5107
+ createSnackbarHandler
4600
5108
  ];
4601
5109
 
4602
5110
  function createStaticIconRepository(iconRecord) {
@@ -5996,6 +6504,16 @@ const FIGMA_ICONS = {
5996
6504
  "type": "monochrome",
5997
6505
  "weight": "Line"
5998
6506
  },
6507
+ "8c85104333ba7cc69fc866b41770316a6bd226d9": {
6508
+ "name": "icon_grid_dot5",
6509
+ "type": "monochrome",
6510
+ "weight": "Fill"
6511
+ },
6512
+ "29482f6a02c7c0fe2d714271ca540c197e2c5e9a": {
6513
+ "name": "icon_grid_dot5",
6514
+ "type": "monochrome",
6515
+ "weight": "Line"
6516
+ },
5999
6517
  "94396773c3208ff19b7650bb7f48de6600492c83": {
6000
6518
  "name": "icon_grid_heart",
6001
6519
  "type": "monochrome",
@@ -6386,6 +6904,16 @@ const FIGMA_ICONS = {
6386
6904
  "type": "monochrome",
6387
6905
  "weight": "Line"
6388
6906
  },
6907
+ "af40e22f4795e41a24778fae19232b7ffe8d0b95": {
6908
+ "name": "icon_midcut_square",
6909
+ "type": "monochrome",
6910
+ "weight": "Fill"
6911
+ },
6912
+ "7c104076f1c7d9bbe9e14f5957012f2c7a5710d7": {
6913
+ "name": "icon_midcut_square",
6914
+ "type": "monochrome",
6915
+ "weight": "Line"
6916
+ },
6389
6917
  "5fa174f09a36f25f6af68e8a7b268e1d9a7f4752": {
6390
6918
  "name": "icon_minus_circle",
6391
6919
  "type": "monochrome",
@@ -7788,6 +8316,10 @@ const FIGMA_ICONS = {
7788
8316
  "name": "icon_gift",
7789
8317
  "type": "multicolor"
7790
8318
  },
8319
+ "e44bf2ccec8dd6a9b720e15f1660854234aeb9ca": {
8320
+ "name": "icon_grid_dot5",
8321
+ "type": "multicolor"
8322
+ },
7791
8323
  "9d3511905b35064003bf689e7f536f120e1fa5ad": {
7792
8324
  "name": "icon_horizline_viewfinder",
7793
8325
  "type": "multicolor"
@@ -7880,6 +8412,10 @@ const FIGMA_ICONS = {
7880
8412
  "name": "icon_sneaker_lifted_leftside",
7881
8413
  "type": "multicolor"
7882
8414
  },
8415
+ "e8eb13395b0696f63d148a8c31401b21382f03ef": {
8416
+ "name": "icon_sofa",
8417
+ "type": "multicolor"
8418
+ },
7883
8419
  "7fa76e36cb5397446a8ac3105d882ea685290c1b": {
7884
8420
  "name": "icon_sparkle2",
7885
8421
  "type": "multicolor"
@@ -7935,62 +8471,6 @@ const FIGMA_ICONS = {
7935
8471
  };
7936
8472
 
7937
8473
  const FIGMA_STYLES = [
7938
- {
7939
- "styleType": "FILL",
7940
- "key": "c1cee6b89c357c6a12d020654d73a4490cafdf51",
7941
- "name": "gradient/fade/layer-default/←(to-left)",
7942
- "description": "스크롤이 가능하도록 그라디언트로 특정 영역을 덮는 요소로 사용해요.",
7943
- "remote": false
7944
- },
7945
- {
7946
- "styleType": "FILL",
7947
- "key": "ff436e73cf9477a1006e6f8a1f9d2c9dbe0e5edd",
7948
- "name": "gradient/fade/layer-default/→(to-right)",
7949
- "description": "스크롤이 가능하도록 그라디언트로 특정 영역을 덮는 요소로 사용해요.",
7950
- "remote": false
7951
- },
7952
- {
7953
- "styleType": "FILL",
7954
- "key": "826457503b7ee3d472eab91581b1fcd499c47c00",
7955
- "name": "gradient/fade/layer-default/↑(to-top)",
7956
- "description": "스크롤이 가능하도록 그라디언트로 특정 영역을 덮는 요소로 사용해요.",
7957
- "remote": false
7958
- },
7959
- {
7960
- "styleType": "FILL",
7961
- "key": "408cb970f1de672217f452152b0398a4bb4f4e12",
7962
- "name": "gradient/fade/layer-default/↓(to-bottom)",
7963
- "description": "스크롤이 가능하도록 그라디언트로 특정 영역을 덮는 요소로 사용해요.",
7964
- "remote": false
7965
- },
7966
- {
7967
- "styleType": "FILL",
7968
- "key": "df22450a8f8e9c323baf40d8981920d1b6376cbf",
7969
- "name": "gradient/fade/layer-floating/←(to-left)",
7970
- "description": "스크롤이 가능하도록 그라디언트로 특정 영역을 덮는 요소로 사용해요.",
7971
- "remote": false
7972
- },
7973
- {
7974
- "styleType": "FILL",
7975
- "key": "063c0dc05b438ac36499492e783520a722782d74",
7976
- "name": "gradient/fade/layer-floating/→(to-right)",
7977
- "description": "스크롤이 가능하도록 그라디언트로 특정 영역을 덮는 요소로 사용해요.",
7978
- "remote": false
7979
- },
7980
- {
7981
- "styleType": "FILL",
7982
- "key": "46186d7dd037e8e54983ee6677cf7915790d84cc",
7983
- "name": "gradient/fade/layer-floating/↑(to-top)",
7984
- "description": "스크롤이 가능하도록 그라디언트로 특정 영역을 덮는 요소로 사용해요.",
7985
- "remote": false
7986
- },
7987
- {
7988
- "styleType": "FILL",
7989
- "key": "b28d9c9adc816fdd4ecec3a0b3e25d8aec802b6a",
7990
- "name": "gradient/fade/layer-floating/↓(to-bottom)",
7991
- "description": "스크롤이 가능하도록 그라디언트로 특정 영역을 덮는 요소로 사용해요.",
7992
- "remote": false
7993
- },
7994
8474
  {
7995
8475
  "styleType": "FILL",
7996
8476
  "key": "353baa82e0440385eb121cd0ae98d2fcb1a70b18",
@@ -8281,10 +8761,10 @@ const FIGMA_VARIABLE_COLLECTIONS = {
8281
8761
  "VariableID:238:17662",
8282
8762
  "VariableID:17544:4057",
8283
8763
  "VariableID:1:171",
8284
- "VariableID:41186:6437",
8285
8764
  "VariableID:670:2700",
8286
- "VariableID:1:158",
8765
+ "VariableID:41186:6437",
8287
8766
  "VariableID:1:172",
8767
+ "VariableID:1:158",
8288
8768
  "VariableID:1:161",
8289
8769
  "VariableID:1:159",
8290
8770
  "VariableID:576:22878",
@@ -8332,8 +8812,8 @@ const FIGMA_VARIABLE_COLLECTIONS = {
8332
8812
  "VariableID:12479:23364",
8333
8813
  "VariableID:12479:23365",
8334
8814
  "VariableID:12479:23366",
8335
- "VariableID:1:7",
8336
8815
  "VariableID:12548:1437",
8816
+ "VariableID:1:7",
8337
8817
  "VariableID:12479:23367",
8338
8818
  "VariableID:12479:23368",
8339
8819
  "VariableID:12479:23371",
@@ -8468,14 +8948,12 @@ const FIGMA_VARIABLE_COLLECTIONS = {
8468
8948
  "VariableID:10181:34417",
8469
8949
  "VariableID:1:168",
8470
8950
  "VariableID:29913:8440",
8471
- "VariableID:29917:289",
8472
8951
  "VariableID:29917:362",
8473
- "VariableID:30009:40284",
8474
8952
  "VariableID:29917:5084",
8953
+ "VariableID:30009:40284",
8475
8954
  "VariableID:30009:40393",
8476
8955
  "VariableID:30021:1313",
8477
8956
  "VariableID:30023:1876",
8478
- "VariableID:30023:1877",
8479
8957
  "VariableID:30023:3032",
8480
8958
  "VariableID:30023:1878",
8481
8959
  "VariableID:30023:3347",
@@ -8496,7 +8974,12 @@ const FIGMA_VARIABLE_COLLECTIONS = {
8496
8974
  "VariableID:43290:12820",
8497
8975
  "VariableID:43290:12822",
8498
8976
  "VariableID:43290:12823",
8499
- "VariableID:43290:12824"
8977
+ "VariableID:43290:12824",
8978
+ "VariableID:49497:1643",
8979
+ "VariableID:49497:1644",
8980
+ "VariableID:49495:1861",
8981
+ "VariableID:49497:1645",
8982
+ "VariableID:49497:1646"
8500
8983
  ]
8501
8984
  },
8502
8985
  "VariableCollectionId:1:174": {
@@ -8622,9 +9105,9 @@ const FIGMA_VARIABLE_COLLECTIONS = {
8622
9105
  "VariableID:289:13772",
8623
9106
  "VariableID:1886:93038",
8624
9107
  "VariableID:289:13773",
9108
+ "VariableID:796:4448",
8625
9109
  "VariableID:15518:15916",
8626
9110
  "VariableID:19225:68732",
8627
- "VariableID:796:4448",
8628
9111
  "VariableID:17955:50606",
8629
9112
  "VariableID:514:13178",
8630
9113
  "VariableID:535:1747",
@@ -8715,6 +9198,136 @@ const FIGMA_VARIABLES = {
8715
9198
  ],
8716
9199
  "codeSyntax": {}
8717
9200
  },
9201
+ "VariableID:49495:1861": {
9202
+ "name": "_scroll-fog",
9203
+ "id": "VariableID:49495:1861",
9204
+ "remote": false,
9205
+ "key": "12f1d88d590090e396c9b283bb51d4e89d9016d2",
9206
+ "variableCollectionId": "VariableCollectionId:1:3",
9207
+ "resolvedType": "COLOR",
9208
+ "description": "",
9209
+ "hiddenFromPublishing": false,
9210
+ "valuesByMode": {
9211
+ "1928:7": {
9212
+ "type": "VARIABLE_ALIAS",
9213
+ "id": "VariableID:29453:35711"
9214
+ },
9215
+ "1928:8": {
9216
+ "r": 1,
9217
+ "g": 1,
9218
+ "b": 1,
9219
+ "a": 1
9220
+ }
9221
+ },
9222
+ "scopes": [
9223
+ "ALL_SCOPES"
9224
+ ],
9225
+ "codeSyntax": {}
9226
+ },
9227
+ "VariableID:49497:1643": {
9228
+ "name": "_scroll-fog/layer-default/0",
9229
+ "id": "VariableID:49497:1643",
9230
+ "remote": false,
9231
+ "key": "fae00f7e2fc2ee7cd4bef58de19f468255ca4c5c",
9232
+ "variableCollectionId": "VariableCollectionId:1:3",
9233
+ "resolvedType": "COLOR",
9234
+ "description": "",
9235
+ "hiddenFromPublishing": false,
9236
+ "valuesByMode": {
9237
+ "1928:7": {
9238
+ "type": "VARIABLE_ALIAS",
9239
+ "id": "VariableID:1:155"
9240
+ },
9241
+ "1928:8": {
9242
+ "type": "VARIABLE_ALIAS",
9243
+ "id": "VariableID:1:155"
9244
+ }
9245
+ },
9246
+ "scopes": [
9247
+ "ALL_SCOPES"
9248
+ ],
9249
+ "codeSyntax": {}
9250
+ },
9251
+ "VariableID:49497:1644": {
9252
+ "name": "_scroll-fog/layer-default/1",
9253
+ "id": "VariableID:49497:1644",
9254
+ "remote": false,
9255
+ "key": "fac0ada2e11c8d54997dce0fc72a723fce514a9f",
9256
+ "variableCollectionId": "VariableCollectionId:1:3",
9257
+ "resolvedType": "COLOR",
9258
+ "description": "",
9259
+ "hiddenFromPublishing": false,
9260
+ "valuesByMode": {
9261
+ "1928:7": {
9262
+ "r": 1,
9263
+ "g": 1,
9264
+ "b": 1,
9265
+ "a": 0
9266
+ },
9267
+ "1928:8": {
9268
+ "r": 0.08627451211214066,
9269
+ "g": 0.09019608050584793,
9270
+ "b": 0.10588235408067703,
9271
+ "a": 0
9272
+ }
9273
+ },
9274
+ "scopes": [
9275
+ "ALL_SCOPES"
9276
+ ],
9277
+ "codeSyntax": {}
9278
+ },
9279
+ "VariableID:49497:1645": {
9280
+ "name": "_scroll-fog/layer-floating/0",
9281
+ "id": "VariableID:49497:1645",
9282
+ "remote": false,
9283
+ "key": "334d485b6f54e6ed8dce767cd150b578f4323ad3",
9284
+ "variableCollectionId": "VariableCollectionId:1:3",
9285
+ "resolvedType": "COLOR",
9286
+ "description": "",
9287
+ "hiddenFromPublishing": false,
9288
+ "valuesByMode": {
9289
+ "1928:7": {
9290
+ "type": "VARIABLE_ALIAS",
9291
+ "id": "VariableID:238:17662"
9292
+ },
9293
+ "1928:8": {
9294
+ "type": "VARIABLE_ALIAS",
9295
+ "id": "VariableID:238:17662"
9296
+ }
9297
+ },
9298
+ "scopes": [
9299
+ "ALL_SCOPES"
9300
+ ],
9301
+ "codeSyntax": {}
9302
+ },
9303
+ "VariableID:49497:1646": {
9304
+ "name": "_scroll-fog/layer-floating/1",
9305
+ "id": "VariableID:49497:1646",
9306
+ "remote": false,
9307
+ "key": "3259bea6c3999bc3ad72999fd3123648544bd002",
9308
+ "variableCollectionId": "VariableCollectionId:1:3",
9309
+ "resolvedType": "COLOR",
9310
+ "description": "",
9311
+ "hiddenFromPublishing": false,
9312
+ "valuesByMode": {
9313
+ "1928:7": {
9314
+ "r": 1,
9315
+ "g": 1,
9316
+ "b": 1,
9317
+ "a": 0
9318
+ },
9319
+ "1928:8": {
9320
+ "r": 0.11555555462837219,
9321
+ "g": 0.12638889253139496,
9322
+ "b": 0.14444443583488464,
9323
+ "a": 0
9324
+ }
9325
+ },
9326
+ "scopes": [
9327
+ "ALL_SCOPES"
9328
+ ],
9329
+ "codeSyntax": {}
9330
+ },
8718
9331
  "VariableID:1:151": {
8719
9332
  "name": "bg/brand-solid",
8720
9333
  "id": "VariableID:1:151",