@seed-design/figma 1.1.0 → 1.1.2

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 (29) hide show
  1. package/lib/codegen/index.cjs +366 -286
  2. package/lib/codegen/index.d.ts +508 -233
  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 +1012 -510
  6. package/lib/codegen/targets/react/index.d.ts.map +1 -1
  7. package/lib/codegen/targets/react/index.js +1012 -510
  8. package/lib/index.cjs +394 -286
  9. package/lib/index.js +394 -286
  10. package/package.json +1 -1
  11. package/src/codegen/component-properties.ts +362 -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/slider.ts +114 -0
  17. package/src/codegen/targets/react/component/handlers/text-field.ts +245 -92
  18. package/src/codegen/targets/react/component/index.ts +40 -23
  19. package/src/codegen/targets/react/element-factories.ts +1 -1
  20. package/src/codegen/targets/react/instance.ts +23 -2
  21. package/src/entities/data/__generated__/component-sets/index.d.ts +225 -222
  22. package/src/entities/data/__generated__/component-sets/index.mjs +225 -222
  23. package/src/entities/data/__generated__/components/index.d.ts +121 -0
  24. package/src/entities/data/__generated__/components/index.mjs +121 -0
  25. package/src/entities/data/__generated__/icons/index.mjs +28 -0
  26. package/src/entities/data/__generated__/styles/index.mjs +0 -56
  27. package/src/entities/data/__generated__/variable-collections/index.mjs +11 -8
  28. package/src/entities/data/__generated__/variables/index.mjs +130 -0
  29. 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$x } = 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$x("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$x("ActionButton", commonProps, children);
3132
3150
  });
3133
3151
 
3134
- const { createLocalSnippetElement: createLocalSnippetElement$v } = createLocalSnippetHelper("alert-dialog");
3152
+ const { createLocalSnippetElement: createLocalSnippetElement$w } = 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$w("AlertDialogHeader", undefined, [
3140
3158
  ...props["Show Title#20361:14"].value ? [
3141
- createLocalSnippetElement$v("AlertDialogTitle", undefined, props["Title Text#20361:0"].value)
3159
+ createLocalSnippetElement$w("AlertDialogTitle", undefined, props["Title Text#20361:0"].value)
3142
3160
  ] : [],
3143
- createLocalSnippetElement$v("AlertDialogDescription", undefined, props["Description Text#20361:7"].value)
3161
+ createLocalSnippetElement$w("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$w("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$w("AlertDialogFooter", undefined, alertDialogFooterChildren);
3177
+ return createLocalSnippetElement$w("AlertDialogRoot", {
3160
3178
  open: true
3161
3179
  }, [
3162
- createLocalSnippetElement$v("AlertDialogTrigger", {
3180
+ createLocalSnippetElement$w("AlertDialogTrigger", {
3163
3181
  asChild: true
3164
3182
  }, createLocalSnippetElementTrigger$3("ActionButton", {}, "AlertDialog 열기")),
3165
- createLocalSnippetElement$v("AlertDialogContent", undefined, [
3183
+ createLocalSnippetElement$w("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$v } = 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$v("AppBarMain", {
3190
3208
  title,
3191
3209
  subtitle
3192
3210
  });
3193
3211
  }
3194
- return createLocalSnippetElement$u("AppBarMain", undefined, undefined, {
3212
+ return createLocalSnippetElement$v("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$v("AppBarBackButton")
3222
3240
  ]).with("Close", ()=>[
3223
- createLocalSnippetElement$u("AppBarCloseButton")
3241
+ createLocalSnippetElement$v("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$v("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$v("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$v("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$v("AppBarRight", {}, rightChildren) : undefined;
3265
+ return createLocalSnippetElement$v("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$u } = 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$u("IdentityPlaceholder", commonProps);
3267
3285
  });
3268
3286
 
3269
- const { createLocalSnippetElement: createLocalSnippetElement$s } = createLocalSnippetHelper("avatar");
3287
+ const { createLocalSnippetElement: createLocalSnippetElement$t } = 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$t("Avatar", commonProps, props["Badge"].value === "None" ? undefined : createLocalSnippetElement$t("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$s } = 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$s("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$r } = 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$r("BottomSheetBody", {}, bodyNodes[0].children.map(traverse)) : createLocalSnippetElement$r("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$r("BottomSheetFooter", {}, footerNodes[0].children.map(traverse)) : undefined;
3374
+ return createLocalSnippetElement$r("BottomSheetRoot", {
3358
3375
  defaultOpen: true,
3359
3376
  headerAlign
3360
3377
  }, [
3361
- createLocalSnippetElement$q("BottomSheetTrigger", {
3378
+ createLocalSnippetElement$r("BottomSheetTrigger", {
3362
3379
  asChild: true
3363
3380
  }, createLocalSnippetElementTrigger$2("ActionButton", {}, "BottomSheet 열기")),
3364
- createLocalSnippetElement$q("BottomSheetContent", contentProps, [
3381
+ createLocalSnippetElement$r("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$q } = 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$q(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$q(tag, commonProps);
3429
3446
  });
3430
3447
 
3431
- const { createLocalSnippetElement: createLocalSnippetElement$o } = createLocalSnippetHelper("checkbox");
3448
+ const { createLocalSnippetElement: createLocalSnippetElement$p } = 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$p("Checkbox", commonProps);
3452
3469
  });
3453
3470
 
3454
- const { createLocalSnippetElement: createLocalSnippetElement$n } = createLocalSnippetHelper("checkbox");
3471
+ const { createLocalSnippetElement: createLocalSnippetElement$o } = 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$o("Checkmark", commonProps);
3463
3480
  });
3464
3481
 
3465
- const { createLocalSnippetElement: createLocalSnippetElement$m } = createLocalSnippetHelper("chip");
3482
+ const { createLocalSnippetElement: createLocalSnippetElement$n } = 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$n("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$n("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$n("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$n("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$n("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$m } = 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$m("ContextualFloatingButton", commonProps, children);
3545
3562
  });
3546
3563
 
3547
3564
  const createDividerHandler = (_ctx)=>defineComponentHandler(divider.key, ({ componentProperties: props })=>{
@@ -3557,31 +3574,257 @@ 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$l } = 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$l("ErrorState", commonProps);
3609
+ });
3610
+ };
3611
+
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$k } = 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$k("FieldButton", {
3781
+ ...headerProps,
3782
+ ...footerProps,
3783
+ ...commonProps
3784
+ }, props["Has Value"].value === "True" && value ? createLocalSnippetElement$k("FieldButtonValue", undefined, value.characters) : placeholder ? createLocalSnippetElement$k("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);
3585
3828
  });
3586
3829
  };
3587
3830
 
@@ -3868,53 +4111,7 @@ const createMenuSheetHandler = (ctx)=>{
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$c } = 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$c(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$c(tag, commonProps);
3985
4182
  });
3986
4183
  };
3987
4184
 
3988
- const { createLocalSnippetElement: createLocalSnippetElement$a } = createLocalSnippetHelper("progress-circle");
4185
+ const { createLocalSnippetElement: createLocalSnippetElement$b } = 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$b("ProgressCircle", commonProps);
4021
4218
  });
4022
4219
 
4023
- const { createLocalSnippetElement: createLocalSnippetElement$9 } = createLocalSnippetHelper("radio-group");
4220
+ const { createLocalSnippetElement: createLocalSnippetElement$a } = 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$a("RadioGroupItem", commonProps);
4037
4234
  });
4038
4235
 
4039
- const { createLocalSnippetElement: createLocalSnippetElement$8 } = createLocalSnippetHelper("radio-group");
4236
+ const { createLocalSnippetElement: createLocalSnippetElement$9 } = 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$9("RadioMark", commonProps);
4047
4244
  });
4048
4245
 
4049
- const { createLocalSnippetElement: createLocalSnippetElement$7 } = createLocalSnippetHelper("reaction-button");
4246
+ const { createLocalSnippetElement: createLocalSnippetElement$8 } = 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$8("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$7 } = 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$7("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$7("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$6 } = 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$6(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$6(tag, commonProps, stack);
4143
4340
  });
4144
4341
  };
4145
4342
 
@@ -4153,6 +4350,90 @@ const createSkeletonHandler = (ctx)=>defineComponentHandler(skeleton.key, (node)
4153
4350
  return createSeedReactElement("Skeleton", commonProps);
4154
4351
  });
4155
4352
 
4353
+ const { createLocalSnippetElement: createLocalSnippetElement$5 } = 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$5("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$5("Slider", commonProps, undefined, {
4432
+ comment: getSliderComment(commonProps)
4433
+ });
4434
+ });
4435
+ };
4436
+
4156
4437
  const { createLocalSnippetElement: createLocalSnippetElement$4 } = createLocalSnippetHelper("snackbar");
4157
4438
  const createSnackbarHandler = (_ctx)=>defineComponentHandler(snackbar.key, ({ componentProperties: props })=>{
4158
4439
  const commonProps = {
@@ -4374,97 +4655,206 @@ const createLineTriggerFillHandler = (_ctx)=>defineComponentHandler(LINE_TRIGGER
4374
4655
  variant,
4375
4656
  defaultValue
4376
4657
  };
4377
- const tabsCarousel = createChipTabsLocalSnippetElement("ChipTabsCarousel", {
4378
- swipeable: false
4379
- }, triggers.map(({ value })=>createChipTabsLocalSnippetElement("ChipTabsContent", {
4380
- value
4381
- }, value)));
4382
- const tabsList = createChipTabsLocalSnippetElement("ChipTabsList", undefined, triggers.map(({ elementNode })=>elementNode));
4383
- return createChipTabsLocalSnippetElement("ChipTabsRoot", rootProps, [
4384
- tabsList,
4385
- tabsCarousel
4386
- ]);
4658
+ const tabsCarousel = createChipTabsLocalSnippetElement("ChipTabsCarousel", {
4659
+ swipeable: false
4660
+ }, triggers.map(({ value })=>createChipTabsLocalSnippetElement("ChipTabsContent", {
4661
+ value
4662
+ }, value)));
4663
+ const tabsList = createChipTabsLocalSnippetElement("ChipTabsList", undefined, triggers.map(({ elementNode })=>elementNode));
4664
+ return createChipTabsLocalSnippetElement("ChipTabsRoot", rootProps, [
4665
+ tabsList,
4666
+ tabsCarousel
4667
+ ]);
4668
+ });
4669
+ };
4670
+ const CHIP_TRIGGER_KEY = "95bf31a329f9e8bba0d9aa2299d1552f1d388148";
4671
+ const createChipTabsTriggerHandler = (_ctx)=>defineComponentHandler(CHIP_TRIGGER_KEY, (node)=>{
4672
+ const [chip$1] = findAllInstances({
4673
+ node,
4674
+ key: chip.key
4675
+ });
4676
+ if (!chip$1) throw new Error("Chip not found in ChipTabsTrigger");
4677
+ const props = node.componentProperties;
4678
+ const chipProps = chip$1.componentProperties;
4679
+ const commonProps = {
4680
+ value: chipProps["Label#7185:0"].value,
4681
+ ...chipProps.State.value === "Disabled" && {
4682
+ disabled: true
4683
+ },
4684
+ ...props["Has Notification"].value === "True" && {
4685
+ notification: true
4686
+ }
4687
+ };
4688
+ return createChipTabsLocalSnippetElement("ChipTabsTrigger", commonProps);
4689
+ });
4690
+
4691
+ const { createLocalSnippetElement: createLocalSnippetElement$1 } = 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$1("TextField", {
4804
+ ...fieldProps,
4805
+ ...commonProps,
4806
+ ...value && {
4807
+ defaultValue: value.characters
4808
+ }
4809
+ }, createLocalSnippetElement$1("TextFieldInput", inputProps));
4387
4810
  });
4388
4811
  };
4389
- const CHIP_TRIGGER_KEY = "95bf31a329f9e8bba0d9aa2299d1552f1d388148";
4390
- const createChipTabsTriggerHandler = (_ctx)=>defineComponentHandler(CHIP_TRIGGER_KEY, (node)=>{
4391
- const [chip$1] = findAllInstances({
4812
+ const createTextareaFieldHandler = (ctx)=>{
4813
+ const fieldHeaderHandler = createFieldHeaderHandler();
4814
+ const fieldFooterHandler = createFieldFooterHandler();
4815
+ return defineComponentHandler(templateTextareaField.key, (node, traverse)=>{
4816
+ const [textarea] = findAllInstances({
4392
4817
  node,
4393
- key: chip.key
4818
+ key: TEXTAREA_KEY
4394
4819
  });
4395
- if (!chip$1) throw new Error("Chip not found in ChipTabsTrigger");
4396
- const props = node.componentProperties;
4397
- const chipProps = chip$1.componentProperties;
4398
- const commonProps = {
4399
- value: chipProps["Label#7185:0"].value,
4400
- ...chipProps.State.value === "Disabled" && {
4401
- disabled: true
4402
- },
4403
- ...props["Has Notification"].value === "True" && {
4404
- notification: true
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
4405
4839
  }
4406
4840
  };
4407
- return createChipTabsLocalSnippetElement("ChipTabsTrigger", commonProps);
4408
- });
4409
-
4410
- const { createLocalSnippetElement: createLocalSnippetElement$1 } = createLocalSnippetHelper("text-field");
4411
- const createTextFieldHandler = (ctx)=>defineComponentHandler(textField.key, ({ componentProperties: props })=>{
4412
- 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
- const states = state.split("-");
4414
4841
  const commonProps = {
4415
- size: handleSizeProp(size),
4416
- // header
4417
- ...showHeader && {
4418
- label
4419
- },
4420
- ...showHeader && showIndicator && {
4421
- indicator
4422
- },
4423
- // input affixes
4424
- ...showPrefix && showPrefixIcon && {
4425
- prefixIcon: ctx.iconHandler.transform(prefixIcon)
4426
- },
4427
- ...showPrefix && showPrefixText && {
4428
- prefix
4429
- },
4430
- ...showSuffix && showSuffixIcon && {
4431
- suffixIcon: ctx.iconHandler.transform(suffixIcon)
4432
- },
4433
- ...showSuffix && showSuffixText && {
4434
- suffix
4435
- },
4436
- // input
4437
- ...filled === "True" && {
4438
- defaultValue
4439
- },
4440
- ...states.includes("Invalid") && {
4441
- invalid: true
4442
- },
4443
- ...states.includes("Disabled") && {
4842
+ ...textarea.componentProperties.State.value === "Disabled" && {
4444
4843
  disabled: true
4445
4844
  },
4446
- ...states.includes("Read Only") && {
4845
+ ...textarea.componentProperties.State.value === "Read Only" && {
4447
4846
  readOnly: true
4448
4847
  },
4449
- // footer
4450
- ...showFooter && showDescription && states.includes("Invalid") && {
4451
- // invalid인 경우 description을 error로 사용
4452
- errorMessage: description
4453
- },
4454
- ...showFooter && showDescription && !states.includes("Invalid") && {
4455
- // invalid가 아닌 경우 description을 description으로 사용
4456
- description
4457
- },
4458
- ...showFooter && showCharacterCount && {
4459
- maxGraphemeCount: Number(maxCharacterCount)
4848
+ ...value && {
4849
+ defaultValue: value.characters
4460
4850
  }
4461
4851
  };
4462
- const inputProps = {
4463
- placeholder
4464
- };
4465
- const TextFieldChildren = createLocalSnippetElement$1("TextFieldInput", inputProps);
4466
- return createLocalSnippetElement$1("TextField", commonProps, TextFieldChildren);
4852
+ return createLocalSnippetElement$1("TextField", {
4853
+ ...fieldProps,
4854
+ ...commonProps
4855
+ }, createLocalSnippetElement$1("TextFieldTextarea", inputProps));
4467
4856
  });
4857
+ };
4468
4858
 
4469
4859
  const { createLocalSnippetElement } = createLocalSnippetHelper("toggle-button");
4470
4860
  const createToggleButtonHandler = (ctx)=>defineComponentHandler(toggleButton.key, ({ componentProperties: props })=>{
@@ -4558,19 +4948,40 @@ function bindComponentHandler(unbound, deps) {
4558
4948
  const unboundSeedComponentHandlers = [
4559
4949
  createActionButtonGhostHandler,
4560
4950
  createActionButtonHandler,
4561
- createAlertDialogHandler,
4562
- createAppBarHandler,
4563
- createAvatarHandler,
4564
- createAvatarStackHandler,
4951
+ createTextInputFieldHandler,
4952
+ createTextareaFieldHandler,
4565
4953
  createBadgeHandler,
4566
- createBottomSheetHandler,
4954
+ createChipHandler,
4567
4955
  createCalloutHandler,
4956
+ createPageBannerHandler,
4568
4957
  createCheckboxHandler,
4569
4958
  createCheckmarkHandler,
4570
- createChipHandler,
4571
- createContextualFloatingButtonHandler,
4959
+ createRadioGroupItemHandler,
4960
+ createRadioMarkHandler,
4961
+ createSwitchHandler,
4962
+ createSwitchMarkHandler,
4963
+ createAlertDialogHandler,
4572
4964
  createDividerHandler,
4965
+ createAvatarHandler,
4966
+ createAvatarStackHandler,
4967
+ createSegmentedControlHandler,
4968
+ createSelectBoxGroupHandler,
4969
+ createSelectBoxHandler,
4970
+ createSliderHandler,
4971
+ createSliderFieldHandler,
4972
+ createTabsHandler,
4973
+ createTagGroupHandler,
4974
+ createTagGroupItemHandler,
4975
+ createToggleButtonHandler,
4976
+ createAppBarHandler,
4977
+ createBottomSheetHandler,
4978
+ createFieldButtonHandler,
4979
+ createAddressFieldHandler,
4980
+ createDatePickerFieldHandler,
4981
+ createSelectFieldHandler,
4982
+ createTimePickerFieldHandler,
4573
4983
  createErrorStateHandler,
4984
+ createContextualFloatingButtonHandler,
4574
4985
  createFloatingActionButtonHandler,
4575
4986
  createHelpBubbleHandler,
4576
4987
  createIdentityPlaceholderHandler,
@@ -4579,24 +4990,10 @@ const unboundSeedComponentHandlers = [
4579
4990
  createMannerTempBadgeHandler,
4580
4991
  createMannerTempHandler,
4581
4992
  createMenuSheetHandler,
4582
- createMultilineTextFieldHandler,
4583
- createPageBannerHandler,
4584
4993
  createProgressCircleHandler,
4585
- createRadioGroupItemHandler,
4586
- createRadioMarkHandler,
4587
4994
  createReactionButtonHandler,
4588
- createSegmentedControlHandler,
4589
- createSelectBoxGroupHandler,
4590
- createSelectBoxHandler,
4591
4995
  createSkeletonHandler,
4592
- createSnackbarHandler,
4593
- createSwitchHandler,
4594
- createSwitchMarkHandler,
4595
- createTabsHandler,
4596
- createTagGroupHandler,
4597
- createTagGroupItemHandler,
4598
- createTextFieldHandler,
4599
- createToggleButtonHandler
4996
+ createSnackbarHandler
4600
4997
  ];
4601
4998
 
4602
4999
  function createStaticIconRepository(iconRecord) {
@@ -5996,6 +6393,16 @@ const FIGMA_ICONS = {
5996
6393
  "type": "monochrome",
5997
6394
  "weight": "Line"
5998
6395
  },
6396
+ "8c85104333ba7cc69fc866b41770316a6bd226d9": {
6397
+ "name": "icon_grid_dot5",
6398
+ "type": "monochrome",
6399
+ "weight": "Fill"
6400
+ },
6401
+ "29482f6a02c7c0fe2d714271ca540c197e2c5e9a": {
6402
+ "name": "icon_grid_dot5",
6403
+ "type": "monochrome",
6404
+ "weight": "Line"
6405
+ },
5999
6406
  "94396773c3208ff19b7650bb7f48de6600492c83": {
6000
6407
  "name": "icon_grid_heart",
6001
6408
  "type": "monochrome",
@@ -6386,6 +6793,16 @@ const FIGMA_ICONS = {
6386
6793
  "type": "monochrome",
6387
6794
  "weight": "Line"
6388
6795
  },
6796
+ "af40e22f4795e41a24778fae19232b7ffe8d0b95": {
6797
+ "name": "icon_midcut_square",
6798
+ "type": "monochrome",
6799
+ "weight": "Fill"
6800
+ },
6801
+ "7c104076f1c7d9bbe9e14f5957012f2c7a5710d7": {
6802
+ "name": "icon_midcut_square",
6803
+ "type": "monochrome",
6804
+ "weight": "Line"
6805
+ },
6389
6806
  "5fa174f09a36f25f6af68e8a7b268e1d9a7f4752": {
6390
6807
  "name": "icon_minus_circle",
6391
6808
  "type": "monochrome",
@@ -7788,6 +8205,10 @@ const FIGMA_ICONS = {
7788
8205
  "name": "icon_gift",
7789
8206
  "type": "multicolor"
7790
8207
  },
8208
+ "e44bf2ccec8dd6a9b720e15f1660854234aeb9ca": {
8209
+ "name": "icon_grid_dot5",
8210
+ "type": "multicolor"
8211
+ },
7791
8212
  "9d3511905b35064003bf689e7f536f120e1fa5ad": {
7792
8213
  "name": "icon_horizline_viewfinder",
7793
8214
  "type": "multicolor"
@@ -7880,6 +8301,10 @@ const FIGMA_ICONS = {
7880
8301
  "name": "icon_sneaker_lifted_leftside",
7881
8302
  "type": "multicolor"
7882
8303
  },
8304
+ "e8eb13395b0696f63d148a8c31401b21382f03ef": {
8305
+ "name": "icon_sofa",
8306
+ "type": "multicolor"
8307
+ },
7883
8308
  "7fa76e36cb5397446a8ac3105d882ea685290c1b": {
7884
8309
  "name": "icon_sparkle2",
7885
8310
  "type": "multicolor"
@@ -7935,62 +8360,6 @@ const FIGMA_ICONS = {
7935
8360
  };
7936
8361
 
7937
8362
  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
8363
  {
7995
8364
  "styleType": "FILL",
7996
8365
  "key": "353baa82e0440385eb121cd0ae98d2fcb1a70b18",
@@ -8281,10 +8650,10 @@ const FIGMA_VARIABLE_COLLECTIONS = {
8281
8650
  "VariableID:238:17662",
8282
8651
  "VariableID:17544:4057",
8283
8652
  "VariableID:1:171",
8284
- "VariableID:41186:6437",
8285
8653
  "VariableID:670:2700",
8286
- "VariableID:1:158",
8654
+ "VariableID:41186:6437",
8287
8655
  "VariableID:1:172",
8656
+ "VariableID:1:158",
8288
8657
  "VariableID:1:161",
8289
8658
  "VariableID:1:159",
8290
8659
  "VariableID:576:22878",
@@ -8332,8 +8701,8 @@ const FIGMA_VARIABLE_COLLECTIONS = {
8332
8701
  "VariableID:12479:23364",
8333
8702
  "VariableID:12479:23365",
8334
8703
  "VariableID:12479:23366",
8335
- "VariableID:1:7",
8336
8704
  "VariableID:12548:1437",
8705
+ "VariableID:1:7",
8337
8706
  "VariableID:12479:23367",
8338
8707
  "VariableID:12479:23368",
8339
8708
  "VariableID:12479:23371",
@@ -8468,14 +8837,12 @@ const FIGMA_VARIABLE_COLLECTIONS = {
8468
8837
  "VariableID:10181:34417",
8469
8838
  "VariableID:1:168",
8470
8839
  "VariableID:29913:8440",
8471
- "VariableID:29917:289",
8472
8840
  "VariableID:29917:362",
8473
- "VariableID:30009:40284",
8474
8841
  "VariableID:29917:5084",
8842
+ "VariableID:30009:40284",
8475
8843
  "VariableID:30009:40393",
8476
8844
  "VariableID:30021:1313",
8477
8845
  "VariableID:30023:1876",
8478
- "VariableID:30023:1877",
8479
8846
  "VariableID:30023:3032",
8480
8847
  "VariableID:30023:1878",
8481
8848
  "VariableID:30023:3347",
@@ -8496,7 +8863,12 @@ const FIGMA_VARIABLE_COLLECTIONS = {
8496
8863
  "VariableID:43290:12820",
8497
8864
  "VariableID:43290:12822",
8498
8865
  "VariableID:43290:12823",
8499
- "VariableID:43290:12824"
8866
+ "VariableID:43290:12824",
8867
+ "VariableID:49497:1643",
8868
+ "VariableID:49497:1644",
8869
+ "VariableID:49495:1861",
8870
+ "VariableID:49497:1645",
8871
+ "VariableID:49497:1646"
8500
8872
  ]
8501
8873
  },
8502
8874
  "VariableCollectionId:1:174": {
@@ -8622,9 +8994,9 @@ const FIGMA_VARIABLE_COLLECTIONS = {
8622
8994
  "VariableID:289:13772",
8623
8995
  "VariableID:1886:93038",
8624
8996
  "VariableID:289:13773",
8997
+ "VariableID:796:4448",
8625
8998
  "VariableID:15518:15916",
8626
8999
  "VariableID:19225:68732",
8627
- "VariableID:796:4448",
8628
9000
  "VariableID:17955:50606",
8629
9001
  "VariableID:514:13178",
8630
9002
  "VariableID:535:1747",
@@ -8715,6 +9087,136 @@ const FIGMA_VARIABLES = {
8715
9087
  ],
8716
9088
  "codeSyntax": {}
8717
9089
  },
9090
+ "VariableID:49495:1861": {
9091
+ "name": "_scroll-fog",
9092
+ "id": "VariableID:49495:1861",
9093
+ "remote": false,
9094
+ "key": "12f1d88d590090e396c9b283bb51d4e89d9016d2",
9095
+ "variableCollectionId": "VariableCollectionId:1:3",
9096
+ "resolvedType": "COLOR",
9097
+ "description": "",
9098
+ "hiddenFromPublishing": false,
9099
+ "valuesByMode": {
9100
+ "1928:7": {
9101
+ "type": "VARIABLE_ALIAS",
9102
+ "id": "VariableID:29453:35711"
9103
+ },
9104
+ "1928:8": {
9105
+ "r": 1,
9106
+ "g": 1,
9107
+ "b": 1,
9108
+ "a": 1
9109
+ }
9110
+ },
9111
+ "scopes": [
9112
+ "ALL_SCOPES"
9113
+ ],
9114
+ "codeSyntax": {}
9115
+ },
9116
+ "VariableID:49497:1643": {
9117
+ "name": "_scroll-fog/layer-default/0",
9118
+ "id": "VariableID:49497:1643",
9119
+ "remote": false,
9120
+ "key": "fae00f7e2fc2ee7cd4bef58de19f468255ca4c5c",
9121
+ "variableCollectionId": "VariableCollectionId:1:3",
9122
+ "resolvedType": "COLOR",
9123
+ "description": "",
9124
+ "hiddenFromPublishing": false,
9125
+ "valuesByMode": {
9126
+ "1928:7": {
9127
+ "type": "VARIABLE_ALIAS",
9128
+ "id": "VariableID:1:155"
9129
+ },
9130
+ "1928:8": {
9131
+ "type": "VARIABLE_ALIAS",
9132
+ "id": "VariableID:1:155"
9133
+ }
9134
+ },
9135
+ "scopes": [
9136
+ "ALL_SCOPES"
9137
+ ],
9138
+ "codeSyntax": {}
9139
+ },
9140
+ "VariableID:49497:1644": {
9141
+ "name": "_scroll-fog/layer-default/1",
9142
+ "id": "VariableID:49497:1644",
9143
+ "remote": false,
9144
+ "key": "fac0ada2e11c8d54997dce0fc72a723fce514a9f",
9145
+ "variableCollectionId": "VariableCollectionId:1:3",
9146
+ "resolvedType": "COLOR",
9147
+ "description": "",
9148
+ "hiddenFromPublishing": false,
9149
+ "valuesByMode": {
9150
+ "1928:7": {
9151
+ "r": 1,
9152
+ "g": 1,
9153
+ "b": 1,
9154
+ "a": 0
9155
+ },
9156
+ "1928:8": {
9157
+ "r": 0.08627451211214066,
9158
+ "g": 0.09019608050584793,
9159
+ "b": 0.10588235408067703,
9160
+ "a": 0
9161
+ }
9162
+ },
9163
+ "scopes": [
9164
+ "ALL_SCOPES"
9165
+ ],
9166
+ "codeSyntax": {}
9167
+ },
9168
+ "VariableID:49497:1645": {
9169
+ "name": "_scroll-fog/layer-floating/0",
9170
+ "id": "VariableID:49497:1645",
9171
+ "remote": false,
9172
+ "key": "334d485b6f54e6ed8dce767cd150b578f4323ad3",
9173
+ "variableCollectionId": "VariableCollectionId:1:3",
9174
+ "resolvedType": "COLOR",
9175
+ "description": "",
9176
+ "hiddenFromPublishing": false,
9177
+ "valuesByMode": {
9178
+ "1928:7": {
9179
+ "type": "VARIABLE_ALIAS",
9180
+ "id": "VariableID:238:17662"
9181
+ },
9182
+ "1928:8": {
9183
+ "type": "VARIABLE_ALIAS",
9184
+ "id": "VariableID:238:17662"
9185
+ }
9186
+ },
9187
+ "scopes": [
9188
+ "ALL_SCOPES"
9189
+ ],
9190
+ "codeSyntax": {}
9191
+ },
9192
+ "VariableID:49497:1646": {
9193
+ "name": "_scroll-fog/layer-floating/1",
9194
+ "id": "VariableID:49497:1646",
9195
+ "remote": false,
9196
+ "key": "3259bea6c3999bc3ad72999fd3123648544bd002",
9197
+ "variableCollectionId": "VariableCollectionId:1:3",
9198
+ "resolvedType": "COLOR",
9199
+ "description": "",
9200
+ "hiddenFromPublishing": false,
9201
+ "valuesByMode": {
9202
+ "1928:7": {
9203
+ "r": 1,
9204
+ "g": 1,
9205
+ "b": 1,
9206
+ "a": 0
9207
+ },
9208
+ "1928:8": {
9209
+ "r": 0.11555555462837219,
9210
+ "g": 0.12638889253139496,
9211
+ "b": 0.14444443583488464,
9212
+ "a": 0
9213
+ }
9214
+ },
9215
+ "scopes": [
9216
+ "ALL_SCOPES"
9217
+ ],
9218
+ "codeSyntax": {}
9219
+ },
8718
9220
  "VariableID:1:151": {
8719
9221
  "name": "bg/brand-solid",
8720
9222
  "id": "VariableID:1:151",