diff --git a/biome.json b/biome.json index 2c04128..1bf4a04 100644 --- a/biome.json +++ b/biome.json @@ -6,7 +6,8 @@ "useIgnoreFile": true }, "files": { - "includes": ["**", "!**/dist"] + "includes": ["**", "!**/dist"], + "maxSize": 2000000 }, "javascript": { "formatter": { diff --git a/bunfig.toml b/bunfig.toml index 076742e..99a956c 100644 --- a/bunfig.toml +++ b/bunfig.toml @@ -1,4 +1,5 @@ -[test] -coverage = true -coverageSkipTestFiles = true -coveragePathIgnorePatterns = ["dist/**"] +[test] +coverage = true +coverageSkipTestFiles = true +coveragePathIgnorePatterns = ["dist/**"] +coverageThreshold = 0.9999 diff --git a/src/codegen/__tests__/__snapshots__/codegen.test.ts.snap b/src/codegen/__tests__/__snapshots__/codegen.test.ts.snap new file mode 100644 index 0000000..e43ba8d --- /dev/null +++ b/src/codegen/__tests__/__snapshots__/codegen.test.ts.snap @@ -0,0 +1,2871 @@ +// Bun Snapshot v1, https://bun.sh/docs/test/snapshots + +exports[`Codegen renders simple component without variants 1`] = `""`; + +exports[`Codegen renders overflow hidden when clipsContent is true 1`] = `""`; + +exports[`Codegen renders objectFit contain for image asset 1`] = `""`; + +exports[`Codegen renders objectFit cover for image asset 1`] = `""`; + +exports[`Codegen omits objectFit when image scale mode is FILL 1`] = `""`; + +exports[`Codegen renders svg asset with vector node 1`] = `""`; + +exports[`Codegen renders svg asset with star node 1`] = `""`; + +exports[`Codegen renders svg asset with polygon node 1`] = `""`; + +exports[`Codegen renders svg asset with ellipse inner radius 1`] = `""`; + +exports[`Codegen renders svg asset with non-solid fills 1`] = `""`; + +exports[`Codegen renders asset with single child and fills 1`] = ` +" + +" +`; + +exports[`Codegen renders null for asset with only solid fills 1`] = `""`; + +exports[`Codegen renders frame with bound variable color 1`] = `""`; + +exports[`Codegen renders svg asset with same color mask 1`] = ` +"" +`; + +exports[`Codegen renders svg asset with children same color 1`] = ` +"" +`; + +exports[`Codegen renders svg asset with different color children 1`] = `""`; + +exports[`Codegen renders svg asset with non-solid fill 1`] = `""`; + +exports[`Codegen renders svg asset with invisible fill 1`] = `""`; + +exports[`Codegen renders nested svg asset with 3 solid fill boxes in frame 1`] = ` +"" +`; + +exports[`Codegen renders nested svg asset with different colors as image 1`] = `""`; + +exports[`Codegen renders layout for absolute child same size as parent 1`] = ` +" + +" +`; + +exports[`Codegen renders absolute child with horizontal MAX constraint 1`] = ` +" + +" +`; + +exports[`Codegen renders absolute child with horizontal CENTER constraint 1`] = ` +" + +" +`; + +exports[`Codegen renders absolute child with vertical MAX constraint 1`] = ` +" + +" +`; + +exports[`Codegen renders absolute child with vertical CENTER constraint 1`] = ` +" + +" +`; + +exports[`Codegen renders flex=1 when parent is horizontal auto layout 1`] = ` +" + +" +`; + +exports[`Codegen renders aspect ratio when provided 1`] = `""`; + +exports[`Codegen renders text with width_and_height auto resize returning no size props 1`] = ` +" + AutoSize +" +`; + +exports[`Codegen renders text with special characters 1`] = ` +" + Text with {"{"}braces{"}"} {"&"} {"<"}tags{">"} +" +`; + +exports[`Codegen renders text with leading and trailing spaces 1`] = ` +" + {" "}spaced{" "} +" +`; + +exports[`Codegen renders single-line max line props 1`] = ` +" + OneLine +" +`; + +exports[`Codegen renders multi-line max line props 1`] = ` +" + Three lines of text +" +`; + +exports[`Codegen renders fixed size frame 1`] = `""`; + +exports[`Codegen renders frame with padding 1`] = `""`; + +exports[`Codegen renders padding shorthand when all sides equal 1`] = `""`; + +exports[`Codegen renders padding with top equals bottom but left right different 1`] = ` +"" +`; + +exports[`Codegen renders padding with left equals right but top bottom different 1`] = ` +"" +`; + +exports[`Codegen renders padding with all sides different 1`] = ` +"" +`; + +exports[`Codegen renders padding from inferredAutoLayout 1`] = `""`; + +exports[`Codegen renders frame with border radius 1`] = `""`; + +exports[`Codegen renders mixed border radius frame 1`] = `""`; + +exports[`Codegen renders ellipse with 50% border radius 1`] = `""`; + +exports[`Codegen renders frame with stroke outline CENTER alignment 1`] = `""`; + +exports[`Codegen renders frame with stroke outline OUTSIDE alignment 1`] = `""`; + +exports[`Codegen renders frame with stroke border INSIDE alignment 1`] = `""`; + +exports[`Codegen renders line with stroke outline 1`] = `""`; + +exports[`Codegen renders frame with dashed stroke 1`] = `""`; + +exports[`Codegen renders frame with page parent and width 1920 1`] = `""`; + +exports[`Codegen renders frame with section parent 1`] = `""`; + +exports[`Codegen renders frame with vertical center align child width shrinker 1`] = ` +" + +" +`; + +exports[`Codegen renders frame with horizontal center align child height shrinker 1`] = ` +" + +" +`; + +exports[`Codegen renders frame with maxWidth child width shrinker 1`] = ` +" + +" +`; + +exports[`Codegen renders frame with maxHeight child height shrinker 1`] = ` +" + +" +`; + +exports[`Codegen renders frame with individual stroke weights 1`] = ` +"" +`; + +exports[`Codegen renders group as Box with full size 1`] = `""`; + +exports[`Codegen renders boxSize when width equals height 1`] = `""`; + +exports[`Codegen renders min/max width/height with px 1`] = ` +"" +`; + +exports[`Codegen renders flex auto layout props 1`] = `""`; + +exports[`Codegen renders grid auto layout props 1`] = ` +"" +`; + +exports[`Codegen renders grid child positioning props when out of order 1`] = ` +" + + +" +`; + +exports[`Codegen renders vstack auto layout props 1`] = ` +" + + +" +`; + +exports[`Codegen renders center auto layout props 1`] = `"
"`; + +exports[`Codegen renders drop shadow effect props 1`] = `""`; + +exports[`Codegen renders inner shadow effect props 1`] = `""`; + +exports[`Codegen renders layer blur effect props 1`] = `""`; + +exports[`Codegen renders background blur effect props 1`] = `""`; + +exports[`Codegen renders noise effect props 1`] = `""`; + +exports[`Codegen renders texture effect props 1`] = `""`; + +exports[`Codegen renders glass effect props 1`] = `""`; + +exports[`Codegen renders text node with content 1`] = ` +" + Hello +" +`; + +exports[`Codegen renders another text node with content 1`] = ` +" + World +" +`; + +exports[`Codegen renders text node with ellipsis props 1`] = ` +" + Ellipsis +" +`; + +exports[`Codegen renders text node with single drop shadow 1`] = ` +" + Shadow +" +`; + +exports[`Codegen renders text node with multiple drop shadows 1`] = ` +" + MultiShadow +" +`; + +exports[`Codegen renders text node with stroke 1`] = ` +" + Stroke +" +`; + +exports[`Codegen renders text node with multiple segments 1`] = ` +" + + Hello + + World +" +`; + +exports[`Codegen renders text node with unordered list 1`] = ` +" +
  • + Item 1 +
  • +
    " +`; + +exports[`Codegen renders text node with ordered list 1`] = ` +" +
  • + Item 1 +
  • +
    " +`; + +exports[`Codegen renders text node with list and multiple lines 1`] = ` +" +
  • + Item 1 +
  • +
  • + Item 2 +
  • +
    " +`; + +exports[`Codegen renders text node with multiple segments without props 1`] = ` +" + Hello + World +" +`; + +exports[`Codegen renders frame with rotation transform 1`] = `""`; + +exports[`Codegen renders frame with negative rotation transform 1`] = `""`; + +exports[`Codegen renders frame with decimal rotation transform 1`] = `""`; + +exports[`Codegen renders frame with opacity less than 1 1`] = `""`; + +exports[`Codegen renders frame with darken blend mode 1`] = `""`; + +exports[`Codegen renders frame with multiply blend mode 1`] = `""`; + +exports[`Codegen renders frame with screen blend mode 1`] = `""`; + +exports[`Codegen renders frame with overlay blend mode 1`] = `""`; + +exports[`Codegen renders frame with linear burn blend mode 1`] = `""`; + +exports[`Codegen renders frame with color burn blend mode 1`] = `""`; + +exports[`Codegen renders frame with lighten blend mode 1`] = `""`; + +exports[`Codegen renders frame with linear dodge blend mode 1`] = `""`; + +exports[`Codegen renders frame with color dodge blend mode 1`] = `""`; + +exports[`Codegen renders frame with soft light blend mode 1`] = `""`; + +exports[`Codegen renders frame with hard light blend mode 1`] = `""`; + +exports[`Codegen renders frame with difference blend mode 1`] = `""`; + +exports[`Codegen renders frame with exclusion blend mode 1`] = `""`; + +exports[`Codegen renders frame with hue blend mode 1`] = `""`; + +exports[`Codegen renders frame with saturation blend mode 1`] = `""`; + +exports[`Codegen renders frame with color blend mode 1`] = `""`; + +exports[`Codegen renders frame with luminosity blend mode 1`] = `""`; + +exports[`Codegen renders frame with pass through blend mode 1`] = `""`; + +exports[`Codegen renders frame with opacity and blend mode 1`] = `""`; + +exports[`Codegen renders frame with solid fill and blend mode 1`] = `""`; + +exports[`Codegen renders text node with gradient fill 1`] = ` +" + Gradient +" +`; + +exports[`Codegen renders text node with HEIGHT auto resize and fixed sizing 1`] = ` +" + Height +" +`; + +exports[`Codegen renders text node with NONE auto resize and fixed sizing 1`] = ` +" + None +" +`; + +exports[`Codegen renders text node with TRUNCATE auto resize and fixed sizing 1`] = ` +" + Truncate +" +`; + +exports[`Codegen renders text node with textStyleId and typography 1`] = ` +" + Heading +" +`; + +exports[`Codegen renders frame with linear gradient fill 1`] = `""`; + +exports[`Codegen renders frame with radial gradient fill 1`] = `""`; + +exports[`Codegen renders frame with angular gradient fill 1`] = `""`; + +exports[`Codegen renders frame with diamond gradient fill 1`] = `""`; + +exports[`Codegen renders frame with image fill TILE scaleMode 1`] = `""`; + +exports[`Codegen renders frame with pattern fill 1`] = `""`; + +exports[`Codegen renders frame with pattern fill START alignment 1`] = `""`; + +exports[`Codegen renders frame with pattern fill vertical alignment 1`] = `""`; + +exports[`Codegen renders frame with multiple fills including non-last solid 1`] = `""`; + +exports[`Codegen renders frame with invisible gradient fill 1`] = `""`; + +exports[`Codegen renders frame with zero opacity gradient fill 1`] = `""`; + +exports[`Codegen renders frame with solid fill opacity 0 1`] = `""`; + +exports[`Codegen renders component set with variants 1`] = ` +" + + +" +`; + +exports[`Codegen renders component set with variants: component: [object Object] 1`] = ` +{ + "name": "Button", + "tree": { + "children": [], + "component": "Box", + "nodeName": "Default", + "nodeType": "COMPONENT", + "props": { + "aspectRatio": undefined, + "flex": undefined, + "h": undefined, + "maxH": undefined, + "maxW": undefined, + "minH": undefined, + "minW": undefined, + "w": undefined, + }, + }, + "variants": { + "state": "'default' | 'hover'", + }, +} +`; + +exports[`Codegen renders component set with effect property 1`] = ` +" + + +" +`; + +exports[`Codegen renders component set with effect property: component: [object Object] 1`] = ` +{ + "name": "Button", + "tree": { + "children": [], + "component": "Box", + "nodeName": "Default", + "nodeType": "COMPONENT", + "props": { + "aspectRatio": undefined, + "flex": undefined, + "h": undefined, + "maxH": undefined, + "maxW": undefined, + "minH": undefined, + "minW": undefined, + "w": undefined, + }, + }, + "variants": {}, +} +`; + +exports[`Codegen renders component set with transition 1`] = ` +" + + +" +`; + +exports[`Codegen renders component set with transition: component: [object Object] 1`] = ` +{ + "name": "Button", + "tree": { + "children": [], + "component": "Box", + "nodeName": "Default", + "nodeType": "COMPONENT", + "props": { + "aspectRatio": undefined, + "flex": undefined, + "h": undefined, + "maxH": undefined, + "maxW": undefined, + "minH": undefined, + "minW": undefined, + "w": undefined, + }, + }, + "variants": {}, +} +`; + +exports[`Codegen renders component set with different props and transition 1`] = ` +" + + +" +`; + +exports[`Codegen renders component set with different props and transition: component: [object Object] 1`] = ` +{ + "name": "Card", + "tree": { + "children": [], + "component": "Box", + "nodeName": "Default", + "nodeType": "COMPONENT", + "props": { + "_hover": { + "opacity": "0.8", + }, + "aspectRatio": undefined, + "flex": undefined, + "h": undefined, + "maxH": undefined, + "maxW": undefined, + "minH": undefined, + "minW": undefined, + "transition": "0.3ms ease-in-out", + "transitionProperty": "opacity", + "w": undefined, + }, + }, + "variants": {}, +} +`; + +exports[`Codegen renders component with parent component set 1`] = `""`; + +exports[`Codegen renders component with parent component set: component: [object Object] 1`] = ` +{ + "name": "Button", + "tree": { + "children": [], + "component": "Box", + "nodeName": "Hover", + "nodeType": "COMPONENT", + "props": { + "aspectRatio": undefined, + "flex": undefined, + "h": undefined, + "maxH": undefined, + "maxW": undefined, + "minH": undefined, + "minW": undefined, + "w": undefined, + }, + }, + "variants": { + "state": "'default' | 'hover'", + }, +} +`; + +exports[`Codegen renders component set with press trigger 1`] = ` +" + + +" +`; + +exports[`Codegen renders component set with press trigger: component: [object Object] 1`] = ` +{ + "name": "Button", + "tree": { + "children": [], + "component": "Box", + "nodeName": "Default", + "nodeType": "COMPONENT", + "props": { + "aspectRatio": undefined, + "flex": undefined, + "h": undefined, + "maxH": undefined, + "maxW": undefined, + "minH": undefined, + "minW": undefined, + "w": undefined, + }, + }, + "variants": {}, +} +`; + +exports[`Codegen renders simple component without variants 2`] = `""`; + +exports[`Codegen renders simple component without variants: component: [object Object] 1`] = ` +{ + "name": "Icon", + "tree": { + "children": [], + "component": "Box", + "nodeName": "Icon", + "nodeType": "COMPONENT", + "props": { + "aspectRatio": undefined, + "boxSize": "100%", + "flex": undefined, + "maxH": undefined, + "maxW": undefined, + "minH": undefined, + "minW": undefined, + }, + }, + "variants": {}, +} +`; + +exports[`Codegen renders component with parent component set name 1`] = `""`; + +exports[`Codegen renders component with parent component set name: component: [object Object] 1`] = ` +{ + "name": "Button", + "tree": { + "children": [], + "component": "Box", + "nodeName": "Hover", + "nodeType": "COMPONENT", + "props": { + "aspectRatio": undefined, + "flex": undefined, + "h": undefined, + "maxH": undefined, + "maxW": undefined, + "minH": undefined, + "minW": undefined, + "w": undefined, + }, + }, + "variants": {}, +} +`; + +exports[`render real world component real world $ 1`] = `""`; + +exports[`render real world component real world $ 2`] = `""`; + +exports[`render real world component real world $ 3`] = `""`; + +exports[`render real world component real world $ 4`] = ` +" + +" +`; + +exports[`render real world component real world $ 5`] = ` +" + +" +`; + +exports[`render real world component real world $ 6`] = ` +" + +" +`; + +exports[`render real world component real world $ 7`] = ` +" + +" +`; + +exports[`render real world component real world $ 8`] = ` +" + +" +`; + +exports[`render real world component real world $ 9`] = ` +" + +" +`; + +exports[`render real world component real world $ 10`] = ` +" + +" +`; + +exports[`render real world component real world $ 11`] = ` +" + Hello World +" +`; + +exports[`render real world component real world $ 12`] = ` +" + Hello World +" +`; + +exports[`render real world component real world $ 13`] = ` +" + Hello World +" +`; + +exports[`render real world component real world $ 14`] = ` +" + Hello World +" +`; + +exports[`render real world component real world $ 15`] = ` +" + Hello World +" +`; + +exports[`render real world component real world $ 16`] = ` +" + + Hello World + + +" +`; + +exports[`render real world component real world $ 17`] = ` +" + + Hello World + + +" +`; + +exports[`render real world component real world $ 18`] = ` +" + + Hello World + + +" +`; + +exports[`render real world component real world $ 19`] = ` +" + + 더 자세히 알아보기 + + +" +`; + +exports[`render real world component real world $ 20`] = ` +" + + + + 자사 솔루션과의 연계 + + 를 통해
    서비스 확장성과 성장 가능성을 높입니다. +
    + + 웹앱팩토리와 Presskit 등 자체 운영 중인
    솔루션과의 연계를 통해 프로젝트의 서비스 범위 확장,
    운영 효율화, 성장 기회까지 제안드립니다. +
    +
    " +`; + +exports[`render real world component real world $ 21`] = ` +" +
    + + CARD 1 + +
    +
    + + CARD 2 + +
    +
    + + CARD 3 + +
    +
    " +`; + +exports[`render real world component real world $ 22`] = ` +" + + Hello World + + + Lorem ipsum dolor sit amet,{" "} + + consectetur + + {" "}adipiscing elit. + +" +`; + +exports[`render real world component real world $ 23`] = `""`; + +exports[`render real world component real world $ 24`] = `""`; + +exports[`render real world component real world $ 25`] = `""`; + +exports[`render real world component real world $ 26`] = `""`; + +exports[`render real world component real world $ 27`] = ` +"" +`; + +exports[`render real world component real world $ 28`] = `""`; + +exports[`render real world component real world $ 29`] = ` +"" +`; + +exports[`render real world component real world $ 30`] = ` +"" +`; + +exports[`render real world component real world $ 31`] = `""`; + +exports[`render real world component real world $ 32`] = `""`; + +exports[`render real world component real world $ 33`] = `""`; + +exports[`render real world component real world $ 34`] = ` +"" +`; + +exports[`render real world component real world $ 35`] = ` +"" +`; + +exports[`render real world component real world $ 36`] = ` +"" +`; + +exports[`render real world component real world $ 37`] = ` +"" +`; + +exports[`render real world component real world $ 38`] = `""`; + +exports[`render real world component real world $ 39`] = ` +" + + Getting into life {"'"}Cause I found that it{"'"}s not so boring Not anymore. + +" +`; + +exports[`render real world component real world $ 40`] = ` +" + + Getting into life {"'"}Cause I found that it{"'"}s not so boring Not anymore. + +" +`; + +exports[`render real world component real world $ 41`] = ` +" + + Getting into life {"'"}Cause I found that it{"'"}s not so boring Not anymore. + +" +`; + +exports[`render real world component real world $ 42`] = `""`; + +exports[`render real world component real world $ 43`] = `""`; + +exports[`render real world component real world $ 44`] = `""`; + +exports[`render real world component real world $ 45`] = `""`; + +exports[`render real world component real world $ 46`] = ` +" + + + + + 지금 시작할 수 있어요 + + + 내 삶을 더 잘 이해하는 첫 걸음 + + + + 자꾸 미뤄졌던 나에 대한 고민,
    퍼즐핏에서 구체적인 답을 찾아보세요. +
    + + + + 회원가입 후, 유료로 진행됩니다 + + +
    " +`; + +exports[`render real world component real world $ 47`] = ` +"" +`; + +exports[`render real world component real world $ 48`] = ` +"" +`; + +exports[`render real world component real world $ 49`] = ` +"" +`; + +exports[`render real world component real world $ 50`] = `""`; + +exports[`render real world component real world $ 51`] = `""`; + +exports[`render real world component real world $ 52`] = ` +" +
    + + Hello World! + + +
    +
    " +`; + +exports[`render real world component real world $ 53`] = ` +" +
    + + Hello World! + + +
    +
    " +`; + +exports[`render real world component real world $ 54`] = ` +" +
    + + Hello World! + + +
    +
    " +`; + +exports[`render real world component real world $ 55`] = ` +" +
    + + Hello World! + + +
    +
    " +`; + +exports[`render real world component real world $ 56`] = ` +" +
    + + Hello World! + + +
    +
    " +`; + +exports[`render real world component real world $ 57`] = ` +" + + Hello World + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +" +`; + +exports[`render real world component real world $ 58`] = ` +" + + Hello World + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +" +`; + +exports[`render real world component real world $ 59`] = ` +" + + Hello World + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +" +`; + +exports[`render real world component real world $ 60`] = ` +" + + Hello World + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +" +`; + +exports[`render real world component real world $ 61`] = ` +"
    + + Hello World + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +
    " +`; + +exports[`render real world component real world $ 62`] = ` +" + + Hello World + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +" +`; + +exports[`render real world component real world $ 63`] = ` +" + + Hello World + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +" +`; + +exports[`render real world component real world $ 64`] = ` +" + + Hello World + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +" +`; + +exports[`render real world component real world $ 65`] = ` +" + + Hello World + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +" +`; + +exports[`render real world component real world $ 66`] = ` +" + +" +`; + +exports[`render real world component real world $ 67`] = ` +" + +" +`; + +exports[`render real world component real world $ 68`] = ` +" + + + 플레이 제목 + + + + 2025.03.03 18:00 + + + + + + 2 + + + + + 댓글 내용 출력 댓글 내용 출력 댓글 내용 출력 댓글 내용 출력 댓글 내용 출력 + +" +`; + +exports[`render real world component real world $ 69`] = ` +" + + + + +" +`; + +exports[`render real world component real world $ 70`] = ` +" + + +" +`; + +exports[`render real world component real world $ 71`] = ` +" + +" +`; + +exports[`render real world component real world $ 72`] = ` +" + +" +`; + +exports[`render real world component real world $ 73`] = `""`; + +exports[`render real world component real world $ 74`] = `""`; + +exports[`render real world component real world $ 75`] = `""`; + +exports[`render real world component real world $ 76`] = `""`; + +exports[`render real world component real world $ 77`] = ` +" + 데브파이브 +" +`; + +exports[`render real world component real world $ 78`] = ` +" + + 간편 로그인 연동 + + + + + 카카오 + + + 연결 전 + +
    + + 인증하기 + +
    +
    + + + 구글 + + + cooolvita@gmail.com + +
    + + 인증하기 + +
    +
    +
    + + + + + 서비스 이용약관 + + + + + + 개인정보 처리방침 + + + + + + 회원 탈퇴 + + + + +
    " +`; + +exports[`render real world component real world $ 79`] = `""`; + +exports[`render real world component real world $ 80`] = `""`; + +exports[`render real world component real world $ 81`] = `""`; + +exports[`render real world component real world $ 82`] = `""`; + +exports[`render real world component real world $ 83`] = `""`; + +exports[`render real world component real world $ 84`] = `""`; + +exports[`render real world component real world $ 85`] = `""`; + +exports[`render real world component real world $ 86`] = `""`; + +exports[`render real world component real world $ 87`] = `""`; + +exports[`render real world component real world $ 88`] = `""`; + +exports[`render real world component real world $ 89`] = `""`; + +exports[`render real world component real world $ 90`] = `""`; + +exports[`render real world component real world $ 91`] = ` +"
    + +
    " +`; + +exports[`render real world component real world $ 92`] = ` +"
    + +
    " +`; + +exports[`render real world component real world $ 93`] = ` +"
    + +
    " +`; + +exports[`render real world component real world $ 94`] = ` +"
    + +
    " +`; + +exports[`render real world component real world $ 95`] = ` +"
    + +
    " +`; + +exports[`render real world component real world $ 96`] = ` +"
    + +
    " +`; + +exports[`render real world component real world $ 97`] = ` +"
    + +
    " +`; + +exports[`render real world component real world $ 98`] = ` +" + 16.8s +" +`; + +exports[`render real world component real world $ 99`] = ` +" + 홈페이지와 앱 제작 +" +`; + +exports[`render real world component real world $ 100`] = ` +" + + 온글 + + 과 함께라면 +" +`; + +exports[`render real world component real world $ 101`] = ` +" + 데브파이브 +" +`; + +exports[`render real world component real world $ 102`] = ` +" + 데브파이브 +" +`; + +exports[`render real world component real world $ 103`] = ` +" +
  • + 어떤 증상이 가장 힘들고 일상생활에 영향을 주나요? +
  • +
  • + 증상이 언제부터 시작되었나요? +
  • +
  • + 증상이 시간이 지나면서 어떻게 변했나요? +
  • +
  • + 스트레스나 상황에 따라 증상이 달라지나요? +
  • +
    " +`; + +exports[`render real world component real world $ 104`] = ` +"export function GradientButton() { + return ( +
    + + 자세히 알아보기 → + +
    + ) +}" +`; + +exports[`render real world component real world $ 105`] = ` +"export interface ButtonProps { + size: 'Md' | 'Sm' + variant: 'primary' | 'white' +} + +export function Button({ size, variant }: ButtonProps) { + return ( +
    + + 참가 신청하기 + +
    + ) +}" +`; + +exports[`render real world component real world $ 106`] = ` +"
    + + + + + + + Under Construction + + + 제주국제관악제 리뉴얼 알림 + + + + + 더 나은 서비스 제공을 위해 시스템 점검 및 리뉴얼을 진행 중입니다.
    이용에 불편을 드려 죄송하며, 빠른 시일 내에 다시 찾아뵙겠습니다. +
    + + We are currently updating our website to serve you better.
    We apologize for the inconvenience. +
    +
    +
    + + + 제주국제관악제 최신 소식 확인하기 + + + + + + + + + + + + 문의 : 064-722-8704 / bandfestival@hanmail.net + + +
    +
    " +`; + +exports[`render real world component real world $ 107`] = ` +"
    + + + + + + + Under Construction + + + 제주국제관악제
    리뉴얼 알림 +
    +
    + + + 더 나은 서비스 제공을 위해
    시스템 점검 및 리뉴얼을 진행 중입니다.
    이용에 불편을 드려 죄송하며,
    빠른 시일 내에 다시 찾아뵙겠습니다. +
    + + We are currently updating our website
    to serve you better.
    We apologize for the inconvenience. +
    +
    +
    + + + 제주국제관악제 최신 소식 확인하기 + + + + + + + + + + + + 문의 : 064-722-8704 /
    bandfestival@hanmail.net +
    +
    +
    +
    " +`; diff --git a/src/codegen/__tests__/codegen.test.ts b/src/codegen/__tests__/codegen.test.ts index 69fb20b..5376b09 100644 --- a/src/codegen/__tests__/codegen.test.ts +++ b/src/codegen/__tests__/codegen.test.ts @@ -143,7 +143,6 @@ describe('Codegen', () => { type TestCase = { title: string node: SceneNode - expected: string } test.each([ @@ -154,7 +153,6 @@ describe('Codegen', () => { name: 'Frame', children: [], } as unknown as FrameNode, - expected: ``, }, { title: 'renders overflow hidden when clipsContent is true', @@ -164,7 +162,6 @@ describe('Codegen', () => { children: [], clipsContent: true, } as unknown as FrameNode, - expected: ``, }, { title: 'renders objectFit contain for image asset', @@ -185,7 +182,6 @@ describe('Codegen', () => { }, ], } as unknown as RectangleNode, - expected: ``, }, { title: 'renders objectFit cover for image asset', @@ -206,7 +202,6 @@ describe('Codegen', () => { }, ], } as unknown as RectangleNode, - expected: ``, }, { title: 'omits objectFit when image scale mode is FILL', @@ -227,7 +222,6 @@ describe('Codegen', () => { }, ], } as unknown as RectangleNode, - expected: ``, }, { title: 'renders svg asset with vector node', @@ -241,7 +235,6 @@ describe('Codegen', () => { width: 24, height: 24, } as unknown as VectorNode, - expected: ``, }, { title: 'renders svg asset with star node', @@ -255,7 +248,6 @@ describe('Codegen', () => { width: 24, height: 24, } as unknown as StarNode, - expected: ``, }, { title: 'renders svg asset with polygon node', @@ -269,7 +261,6 @@ describe('Codegen', () => { width: 24, height: 24, } as unknown as PolygonNode, - expected: ``, }, { title: 'renders svg asset with ellipse inner radius', @@ -286,7 +277,6 @@ describe('Codegen', () => { innerRadius: 0.5, }, } as unknown as EllipseNode, - expected: ``, }, { title: 'renders svg asset with non-solid fills', @@ -315,7 +305,6 @@ describe('Codegen', () => { }, ], } as unknown as RectangleNode, - expected: ``, }, { title: 'renders asset with single child and fills', @@ -348,9 +337,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ` - -`, }, { title: 'renders null for asset with only solid fills', @@ -372,7 +358,6 @@ describe('Codegen', () => { }, ], } as unknown as RectangleNode, - expected: ``, }, { title: 'renders frame with bound variable color', @@ -399,7 +384,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ``, }, { title: 'renders svg asset with same color mask', @@ -421,13 +405,6 @@ describe('Codegen', () => { }, ], } as unknown as VectorNode, - expected: ``, }, { title: 'renders svg asset with children same color', @@ -470,13 +447,6 @@ describe('Codegen', () => { width: 24, height: 24, } as unknown as FrameNode, - expected: ``, }, { title: 'renders svg asset with different color children', @@ -519,7 +489,6 @@ describe('Codegen', () => { width: 24, height: 24, } as unknown as FrameNode, - expected: ``, }, { title: 'renders svg asset with non-solid fill', @@ -548,7 +517,6 @@ describe('Codegen', () => { }, ], } as unknown as VectorNode, - expected: ``, }, { title: 'renders svg asset with invisible fill', @@ -570,7 +538,6 @@ describe('Codegen', () => { }, ], } as unknown as VectorNode, - expected: ``, }, { title: 'renders nested svg asset with 3 solid fill boxes in frame', @@ -630,13 +597,6 @@ describe('Codegen', () => { width: 24, height: 24, } as unknown as FrameNode, - expected: ``, }, { title: 'renders nested svg asset with different colors as image', @@ -696,7 +656,6 @@ describe('Codegen', () => { width: 24, height: 24, } as unknown as FrameNode, - expected: ``, }, { title: 'renders layout for absolute child same size as parent', @@ -722,9 +681,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ` - -`, }, { title: 'renders absolute child with horizontal MAX constraint', @@ -752,9 +708,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ` - -`, }, { title: 'renders absolute child with horizontal CENTER constraint', @@ -782,15 +735,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ` - -`, }, { title: 'renders absolute child with vertical MAX constraint', @@ -818,9 +762,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ` - -`, }, { title: 'renders absolute child with vertical CENTER constraint', @@ -848,15 +789,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ` - -`, }, { title: 'renders flex=1 when parent is horizontal auto layout', @@ -874,9 +806,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ` - -`, }, { title: 'renders aspect ratio when provided', @@ -888,7 +817,6 @@ describe('Codegen', () => { layoutSizingHorizontal: 'FILL', layoutSizingVertical: 'FILL', } as unknown as FrameNode, - expected: ``, }, { title: @@ -915,16 +843,6 @@ describe('Codegen', () => { textTruncation: 'DISABLED', characters: 'AutoSize', } as unknown as TextNode, - expected: ` - AutoSize -`, }, { title: 'renders text with special characters', @@ -949,18 +867,6 @@ describe('Codegen', () => { textTruncation: 'DISABLED', characters: 'Text with {braces} & ', } as unknown as TextNode, - expected: ` - Text with {"{"}braces{"}"} {"&"} {"<"}tags{">"} -`, }, { title: 'renders text with leading and trailing spaces', @@ -985,18 +891,6 @@ describe('Codegen', () => { textTruncation: 'DISABLED', characters: ' spaced ', } as unknown as TextNode, - expected: ` - {" "}spaced{" "} -`, }, { title: 'renders single-line max line props', @@ -1018,18 +912,6 @@ describe('Codegen', () => { ], textTruncation: 'DISABLED', } as unknown as TextNode, - expected: ` - OneLine -`, }, { title: 'renders multi-line max line props', @@ -1051,20 +933,6 @@ describe('Codegen', () => { ], textTruncation: 'DISABLED', } as unknown as TextNode, - expected: ` - Three lines of text -`, }, { title: 'renders fixed size frame', @@ -1077,7 +945,6 @@ describe('Codegen', () => { width: 120, height: 80, } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with padding', @@ -1094,7 +961,6 @@ describe('Codegen', () => { paddingBottom: 8, paddingLeft: 16, } as unknown as FrameNode, - expected: ``, }, { title: 'renders padding shorthand when all sides equal', @@ -1111,7 +977,6 @@ describe('Codegen', () => { paddingBottom: 12, paddingLeft: 12, } as unknown as FrameNode, - expected: ``, }, { title: 'renders padding with top equals bottom but left right different', @@ -1128,13 +993,6 @@ describe('Codegen', () => { paddingBottom: 10, paddingLeft: 30, } as unknown as FrameNode, - expected: ``, }, { title: 'renders padding with left equals right but top bottom different', @@ -1151,13 +1009,6 @@ describe('Codegen', () => { paddingBottom: 25, paddingLeft: 15, } as unknown as FrameNode, - expected: ``, }, { title: 'renders padding with all sides different', @@ -1174,14 +1025,6 @@ describe('Codegen', () => { paddingBottom: 3, paddingLeft: 4, } as unknown as FrameNode, - expected: ``, }, { title: 'renders padding from inferredAutoLayout', @@ -1200,7 +1043,6 @@ describe('Codegen', () => { paddingLeft: 20, }, } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with border radius', @@ -1214,7 +1056,6 @@ describe('Codegen', () => { height: 80, cornerRadius: 8, } as unknown as FrameNode, - expected: ``, }, { title: 'renders mixed border radius frame', @@ -1227,7 +1068,6 @@ describe('Codegen', () => { bottomRightRadius: 2, bottomLeftRadius: 1, } as unknown as FrameNode, - expected: ``, }, { title: 'renders ellipse with 50% border radius', @@ -1243,7 +1083,6 @@ describe('Codegen', () => { width: 100, height: 100, } as unknown as EllipseNode, - expected: ``, }, { title: 'renders frame with stroke outline CENTER alignment', @@ -1266,7 +1105,6 @@ describe('Codegen', () => { strokeWeight: 2, strokeAlign: 'CENTER', } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with stroke outline OUTSIDE alignment', @@ -1289,7 +1127,6 @@ describe('Codegen', () => { strokeWeight: 3, strokeAlign: 'OUTSIDE', } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with stroke border INSIDE alignment', @@ -1312,7 +1149,6 @@ describe('Codegen', () => { strokeWeight: 1, strokeAlign: 'INSIDE', } as unknown as FrameNode, - expected: ``, }, { title: 'renders line with stroke outline', @@ -1330,7 +1166,6 @@ describe('Codegen', () => { strokeWeight: 2, strokeAlign: 'CENTER', } as unknown as LineNode, - expected: ``, }, { title: 'renders frame with dashed stroke', @@ -1354,7 +1189,6 @@ describe('Codegen', () => { strokeAlign: 'CENTER', dashPattern: [5, 3], } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with page parent and width 1920', @@ -1369,7 +1203,6 @@ describe('Codegen', () => { name: 'Page 1', }, } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with section parent', @@ -1384,7 +1217,6 @@ describe('Codegen', () => { name: 'Section 1', }, } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with vertical center align child width shrinker', @@ -1413,9 +1245,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ` - -`, }, { title: 'renders frame with horizontal center align child height shrinker', @@ -1444,9 +1273,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ` - -`, }, { title: 'renders frame with maxWidth child width shrinker', @@ -1465,9 +1291,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ` - -`, }, { title: 'renders frame with maxHeight child height shrinker', @@ -1486,9 +1309,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ` - -`, }, { title: 'renders frame with individual stroke weights', @@ -1515,14 +1335,6 @@ describe('Codegen', () => { strokeLeftWeight: 4, strokeAlign: 'INSIDE', } as unknown as FrameNode, - expected: ``, }, { title: 'renders group as Box with full size', @@ -1531,7 +1343,6 @@ describe('Codegen', () => { name: 'Group', children: [], } as unknown as GroupNode, - expected: ``, }, { title: 'renders boxSize when width equals height', @@ -1544,7 +1355,6 @@ describe('Codegen', () => { width: 64, height: 64, } as unknown as FrameNode, - expected: ``, }, { title: 'renders min/max width/height with px', @@ -1559,13 +1369,6 @@ describe('Codegen', () => { maxWidth: 200, maxHeight: 120, } as unknown as FrameNode, - expected: ``, }, { title: 'renders flex auto layout props', @@ -1580,7 +1383,6 @@ describe('Codegen', () => { primaryAxisAlignItems: 'SPACE_BETWEEN', counterAxisAlignItems: 'CENTER', } as unknown as FrameNode, - expected: ``, }, { title: 'renders grid auto layout props', @@ -1596,13 +1398,6 @@ describe('Codegen', () => { gridColumnGap: 8, gridRowGap: 12, } as unknown as FrameNode, - expected: ``, }, { title: 'renders grid child positioning props when out of order', @@ -1637,10 +1432,6 @@ describe('Codegen', () => { width: 200, height: 100, } as unknown as FrameNode, - expected: ` - - -`, }, { title: 'renders vstack auto layout props', @@ -1662,10 +1453,6 @@ describe('Codegen', () => { primaryAxisAlignItems: 'SPACE_BETWEEN', counterAxisAlignItems: 'CENTER', } as unknown as FrameNode, - expected: ` - - -`, }, { title: 'renders center auto layout props', @@ -1684,7 +1471,6 @@ describe('Codegen', () => { primaryAxisAlignItems: 'CENTER', counterAxisAlignItems: 'CENTER', } as unknown as FrameNode, - expected: `
    `, }, { title: 'renders drop shadow effect props', @@ -1708,7 +1494,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ``, }, { title: 'renders inner shadow effect props', @@ -1732,7 +1517,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ``, }, { title: 'renders layer blur effect props', @@ -1753,7 +1537,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ``, }, { title: 'renders background blur effect props', @@ -1774,7 +1557,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ``, }, { title: 'renders noise effect props', @@ -1795,7 +1577,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ``, }, { title: 'renders texture effect props', @@ -1816,7 +1597,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ``, }, { title: 'renders glass effect props', @@ -1837,7 +1617,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ``, }, { title: 'renders text node with content', @@ -1858,17 +1637,6 @@ describe('Codegen', () => { ], textTruncation: 'DISABLED', } as unknown as TextNode, - expected: ` - Hello -`, }, { title: 'renders another text node with content', @@ -1889,17 +1657,6 @@ describe('Codegen', () => { ], textTruncation: 'DISABLED', } as unknown as TextNode, - expected: ` - World -`, }, { title: 'renders text node with ellipsis props', @@ -1920,19 +1677,6 @@ describe('Codegen', () => { ], textTruncation: 'ENDING', } as unknown as TextNode, - expected: ` - Ellipsis -`, }, { title: 'renders text node with single drop shadow', @@ -1962,19 +1706,6 @@ describe('Codegen', () => { ], textTruncation: 'DISABLED', } as unknown as TextNode, - expected: ` - Shadow -`, }, { title: 'renders text node with multiple drop shadows', @@ -2012,19 +1743,6 @@ describe('Codegen', () => { ], textTruncation: 'DISABLED', } as unknown as TextNode, - expected: ` - MultiShadow -`, }, { title: 'renders text node with stroke', @@ -2053,19 +1771,6 @@ describe('Codegen', () => { ], textTruncation: 'DISABLED', } as unknown as TextNode, - expected: ` - Stroke -`, }, { title: 'renders text node with multiple segments', @@ -2093,20 +1798,6 @@ describe('Codegen', () => { ], textTruncation: 'DISABLED', } as unknown as TextNode, - expected: ` - - Hello - - World -`, }, { title: 'renders text node with unordered list', @@ -2130,22 +1821,6 @@ describe('Codegen', () => { ], textTruncation: 'DISABLED', } as unknown as TextNode, - expected: ` -
  • - Item 1 -
  • -
    `, }, { title: 'renders text node with ordered list', @@ -2169,22 +1844,6 @@ describe('Codegen', () => { ], textTruncation: 'DISABLED', } as unknown as TextNode, - expected: ` -
  • - Item 1 -
  • -
    `, }, { title: 'renders text node with list and multiple lines', @@ -2208,25 +1867,6 @@ describe('Codegen', () => { ], textTruncation: 'DISABLED', } as unknown as TextNode, - expected: ` -
  • - Item 1 -
  • -
  • - Item 2 -
  • -
    `, }, { title: 'renders text node with multiple segments without props', @@ -2253,18 +1893,6 @@ describe('Codegen', () => { ], textTruncation: 'DISABLED', } as unknown as TextNode, - expected: ` - Hello - World -`, }, { title: 'renders frame with rotation transform', @@ -2278,7 +1906,6 @@ describe('Codegen', () => { height: 50, rotation: 45, } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with negative rotation transform', @@ -2293,7 +1920,6 @@ describe('Codegen', () => { rotation: -30, } as unknown as FrameNode, // revsered rotation - expected: ``, }, { title: 'renders frame with decimal rotation transform', @@ -2307,7 +1933,6 @@ describe('Codegen', () => { height: 60, rotation: 15.5, } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with opacity less than 1', @@ -2322,7 +1947,6 @@ describe('Codegen', () => { opacity: 0.5, blendMode: 'NORMAL', } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with darken blend mode', @@ -2337,7 +1961,6 @@ describe('Codegen', () => { opacity: 1, blendMode: 'DARKEN', } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with multiply blend mode', @@ -2352,7 +1975,6 @@ describe('Codegen', () => { opacity: 1, blendMode: 'MULTIPLY', } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with screen blend mode', @@ -2367,7 +1989,6 @@ describe('Codegen', () => { opacity: 1, blendMode: 'SCREEN', } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with overlay blend mode', @@ -2382,7 +2003,6 @@ describe('Codegen', () => { opacity: 1, blendMode: 'OVERLAY', } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with linear burn blend mode', @@ -2397,7 +2017,6 @@ describe('Codegen', () => { opacity: 1, blendMode: 'LINEAR_BURN', } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with color burn blend mode', @@ -2412,7 +2031,6 @@ describe('Codegen', () => { opacity: 1, blendMode: 'COLOR_BURN', } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with lighten blend mode', @@ -2427,7 +2045,6 @@ describe('Codegen', () => { opacity: 1, blendMode: 'LIGHTEN', } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with linear dodge blend mode', @@ -2442,7 +2059,6 @@ describe('Codegen', () => { opacity: 1, blendMode: 'LINEAR_DODGE', } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with color dodge blend mode', @@ -2457,7 +2073,6 @@ describe('Codegen', () => { opacity: 1, blendMode: 'COLOR_DODGE', } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with soft light blend mode', @@ -2472,7 +2087,6 @@ describe('Codegen', () => { opacity: 1, blendMode: 'SOFT_LIGHT', } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with hard light blend mode', @@ -2487,7 +2101,6 @@ describe('Codegen', () => { opacity: 1, blendMode: 'HARD_LIGHT', } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with difference blend mode', @@ -2502,7 +2115,6 @@ describe('Codegen', () => { opacity: 1, blendMode: 'DIFFERENCE', } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with exclusion blend mode', @@ -2517,7 +2129,6 @@ describe('Codegen', () => { opacity: 1, blendMode: 'EXCLUSION', } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with hue blend mode', @@ -2532,7 +2143,6 @@ describe('Codegen', () => { opacity: 1, blendMode: 'HUE', } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with saturation blend mode', @@ -2547,7 +2157,6 @@ describe('Codegen', () => { opacity: 1, blendMode: 'SATURATION', } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with color blend mode', @@ -2562,7 +2171,6 @@ describe('Codegen', () => { opacity: 1, blendMode: 'COLOR', } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with luminosity blend mode', @@ -2577,7 +2185,6 @@ describe('Codegen', () => { opacity: 1, blendMode: 'LUMINOSITY', } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with pass through blend mode', @@ -2592,7 +2199,6 @@ describe('Codegen', () => { opacity: 1, blendMode: 'PASS_THROUGH', } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with opacity and blend mode', @@ -2607,7 +2213,6 @@ describe('Codegen', () => { opacity: 0.75, blendMode: 'MULTIPLY', } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with solid fill and blend mode', @@ -2629,7 +2234,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ``, }, { title: 'renders text node with gradient fill', @@ -2681,19 +2285,6 @@ describe('Codegen', () => { ], textTruncation: 'DISABLED', } as unknown as TextNode, - expected: ` - Gradient -`, }, { title: 'renders text node with HEIGHT auto resize and fixed sizing', @@ -2718,17 +2309,6 @@ describe('Codegen', () => { ], textTruncation: 'DISABLED', } as unknown as TextNode, - expected: ` - Height -`, }, { title: 'renders text node with NONE auto resize and fixed sizing', @@ -2753,18 +2333,6 @@ describe('Codegen', () => { ], textTruncation: 'DISABLED', } as unknown as TextNode, - expected: ` - None -`, }, { title: 'renders text node with TRUNCATE auto resize and fixed sizing', @@ -2789,18 +2357,6 @@ describe('Codegen', () => { ], textTruncation: 'DISABLED', } as unknown as TextNode, - expected: ` - Truncate -`, }, { title: 'renders text node with textStyleId and typography', @@ -2821,9 +2377,6 @@ describe('Codegen', () => { ], textTruncation: 'DISABLED', } as unknown as TextNode, - expected: ` - Heading -`, }, { title: 'renders frame with linear gradient fill', @@ -2851,7 +2404,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with radial gradient fill', @@ -2879,7 +2431,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with angular gradient fill', @@ -2908,7 +2459,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with diamond gradient fill', @@ -2936,7 +2486,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with image fill TILE scaleMode', @@ -2958,7 +2507,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with pattern fill', @@ -2981,7 +2529,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with pattern fill START alignment', @@ -3004,7 +2551,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with pattern fill vertical alignment', @@ -3028,7 +2574,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with multiple fills including non-last solid', @@ -3055,7 +2600,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with invisible gradient fill', @@ -3083,7 +2627,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with zero opacity gradient fill', @@ -3111,7 +2654,6 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ``, }, { title: 'renders frame with solid fill opacity 0', @@ -3132,20 +2674,17 @@ describe('Codegen', () => { }, ], } as unknown as FrameNode, - expected: ``, }, - ])('$title', async ({ node, expected }) => { + ])('$title', async ({ node }) => { addParent(node) const codegen = new Codegen(node) await codegen.run() - expect(codegen.getCode()).toBe(expected) + expect(codegen.getCode()).toMatchSnapshot() }) type ComponentTestCase = { title: string node: SceneNode - expected: string - expectedComponents: Array<[string, string]> } test.each([ @@ -3184,22 +2723,6 @@ describe('Codegen', () => { }, } as unknown as ComponentSetNode })(), - expected: ` - - -`, - expectedComponents: [ - [ - 'Button', - `export interface ButtonProps { - state: 'default' | 'hover' -} - -export function Button({ state }: ButtonProps) { - return -}`, - ], - ], }, { title: 'renders component set with effect property', @@ -3231,18 +2754,6 @@ export function Button({ state }: ButtonProps) { }, } as unknown as ComponentSetNode })(), - expected: ` - - -`, - expectedComponents: [ - [ - 'Button', - `export function Button() { - return -}`, - ], - ], }, { title: 'renders component set with transition', @@ -3297,18 +2808,6 @@ export function Button({ state }: ButtonProps) { componentPropertyDefinitions: {}, } as unknown as ComponentSetNode })(), - expected: ` - - -`, - expectedComponents: [ - [ - 'Button', - `export function Button() { - return -}`, - ], - ], }, { title: 'renders component set with different props and transition', @@ -3364,27 +2863,6 @@ export function Button({ state }: ButtonProps) { componentPropertyDefinitions: {}, } as unknown as ComponentSetNode })(), - expected: ` - - -`, - expectedComponents: [ - [ - 'Card', - `export function Card() { - return ( - - ) -}`, - ], - ], }, { title: 'renders component with parent component set', @@ -3438,19 +2916,6 @@ export function Button({ state }: ButtonProps) { }, ], } as unknown as ComponentNode, - expected: ``, - expectedComponents: [ - [ - 'Button', - `export interface ButtonProps { - state: 'default' | 'hover' -} - -export function Button({ state }: ButtonProps) { - return -}`, - ], - ], }, { title: 'renders component set with press trigger', @@ -3482,18 +2947,6 @@ export function Button({ state }: ButtonProps) { componentPropertyDefinitions: {}, } as unknown as ComponentSetNode })(), - expected: ` - - -`, - expectedComponents: [ - [ - 'Button', - `export function Button() { - return -}`, - ], - ], }, { title: 'renders simple component without variants', @@ -3502,15 +2955,6 @@ export function Button({ state }: ButtonProps) { name: 'Icon', children: [], } as unknown as ComponentNode, - expected: ``, - expectedComponents: [ - [ - 'Icon', - `export function Icon() { - return -}`, - ], - ], }, { title: 'renders component with parent component set name', @@ -3530,23 +2974,17 @@ export function Button({ state }: ButtonProps) { }, children: [], } as unknown as ComponentNode, - expected: ``, - expectedComponents: [ - [ - 'Button', - `export function Button() { - return -}`, - ], - ], }, - ])('$title', async ({ node, expected, expectedComponents }) => { + ])('$title', async ({ node }) => { addParent(node) const codegen = new Codegen(node) await codegen.run() - const componentsCodes = codegen.getComponentsCodes() - expect(codegen.getCode()).toBe(expected) - expect(componentsCodes).toEqual(expectedComponents) + expect(codegen.getCode()).toMatchSnapshot() + + const componentTrees = codegen.getComponentTrees() + for (const [name, code] of componentTrees) { + expect(code).toMatchSnapshot(`component: ${name}`) + } }) test('renders instance with page root width and sets width to 100%', async () => { @@ -4357,7 +3795,6 @@ describe('Codegen Tree Methods', () => { describe('render real world component', () => { it.each([ { - expected: ``, nodes: [ { id: '7:3', @@ -4412,8 +3849,6 @@ describe('render real world component', () => { ], }, { - expected: - '', nodes: [ { id: '6:2', @@ -4467,8 +3902,6 @@ describe('render real world component', () => { ], }, { - expected: - '', nodes: [ { id: '7:5', @@ -4523,17 +3956,6 @@ describe('render real world component', () => { }, // gradient { - expected: ` - -`, nodes: [ { id: '496:2019', @@ -4704,17 +4126,6 @@ describe('render real world component', () => { ], }, { - expected: ` - -`, nodes: [ { id: '496:2050', @@ -4885,17 +4296,6 @@ describe('render real world component', () => { ], }, { - expected: ` - -`, nodes: [ { id: '496:2051', @@ -5066,17 +4466,6 @@ describe('render real world component', () => { ], }, { - expected: ` - -`, nodes: [ { id: '496:2054', @@ -5247,17 +4636,6 @@ describe('render real world component', () => { ], }, { - expected: ` - -`, nodes: [ { id: '496:2055', @@ -5428,17 +4806,6 @@ describe('render real world component', () => { ], }, { - expected: ` - -`, nodes: [ { id: '496:2056', @@ -5609,17 +4976,6 @@ describe('render real world component', () => { ], }, { - expected: ` - -`, nodes: [ { id: '496:2057', @@ -5791,16 +5147,6 @@ describe('render real world component', () => { }, // text { - expected: ` - Hello World -`, nodes: [ { id: '35:7', @@ -5868,17 +5214,6 @@ describe('render real world component', () => { ], }, { - expected: ` - Hello World -`, nodes: [ { id: '35:12', @@ -5946,17 +5281,6 @@ describe('render real world component', () => { ], }, { - expected: ` - Hello World -`, nodes: [ { id: '35:18', @@ -6024,18 +5348,6 @@ describe('render real world component', () => { ], }, { - expected: ` - Hello World -`, nodes: [ { id: '41:7', @@ -6103,19 +5415,6 @@ describe('render real world component', () => { ], }, { - expected: ` - Hello World -`, nodes: [ { id: '41:12', @@ -6184,19 +5483,6 @@ describe('render real world component', () => { }, // auto layout { - expected: ` - - Hello World - - -`, nodes: [ { id: '70:51', @@ -6390,19 +5676,6 @@ describe('render real world component', () => { ], }, { - expected: ` - - Hello World - - -`, nodes: [ { id: '70:57', @@ -6596,19 +5869,6 @@ describe('render real world component', () => { ], }, { - expected: ` - - Hello World - - -`, nodes: [ { id: '71:124', @@ -6803,32 +6063,6 @@ describe('render real world component', () => { }, // Component { - expected: ` - - 더 자세히 알아보기 - - -`, nodes: [ { id: '1:5', @@ -7070,32 +6304,6 @@ describe('render real world component', () => { ], }, { - expected: ` - - - - 자사 솔루션과의 연계 - - 를 통해서비스 확장성과 성장 가능성을 높입니다. - - - 웹앱팩토리와 Presskit 등 자체 운영 중인 솔루션과의 연계를 통해 프로젝트의 서비스 범위 확장, 운영 효율화, 성장 기회까지 제안드립니다. - -`, nodes: [ { id: '1:13', @@ -7655,66 +6863,6 @@ describe('render real world component', () => { ], }, { - expected: ` -
    - - CARD 1 - -
    -
    - - CARD 2 - -
    -
    - - CARD 3 - -
    -
    `, - nodes: [ { id: '43:20', @@ -8312,42 +7460,6 @@ describe('render real world component', () => { ], }, { - expected: ` - - Hello World - - - Lorem ipsum dolor sit amet,{" "} - - consectetur - - {" "}adipiscing elit. - -`, - nodes: [ { id: '40:51', @@ -8729,7 +7841,6 @@ describe('render real world component', () => { }, // outline, border { - expected: ``, nodes: [ { id: '105:11', @@ -8812,13 +7923,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ``, nodes: [ { id: '105:64', @@ -8901,7 +8005,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ``, nodes: [ { id: '105:12', @@ -8984,13 +8087,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ``, nodes: [ { id: '105:75', @@ -9073,14 +8169,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ``, nodes: [ { id: '105:77', @@ -9163,13 +8251,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ``, nodes: [ { id: '105:90', @@ -9252,14 +8333,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ``, nodes: [ { id: '113:67', @@ -9362,14 +8435,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ``, nodes: [ { id: '113:71', @@ -9473,7 +8538,6 @@ describe('render real world component', () => { }, // circle { - expected: ``, nodes: [ { id: '109:69', @@ -9530,7 +8594,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ``, nodes: [ { id: '109:72', @@ -9587,13 +8650,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ``, nodes: [ { id: '109:71', @@ -9651,14 +8707,6 @@ describe('render real world component', () => { }, // border { - expected: ``, nodes: [ { id: '80:2', @@ -9741,14 +8789,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ``, nodes: [ { id: '80:6', @@ -9831,13 +8871,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ``, nodes: [ { id: '80:40', @@ -10074,14 +9107,6 @@ describe('render real world component', () => { }, // opacity { - expected: ``, nodes: [ { id: '89:3', @@ -10168,13 +9193,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ``, nodes: [ { id: '105:91', @@ -10262,22 +9280,6 @@ describe('render real world component', () => { }, // clamp { - expected: ` - - Getting into life {"'"}Cause I found that it{"'"}s not so boring Not anymore. - -`, nodes: [ { id: '70:72', @@ -10474,19 +9476,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ` - - Getting into life {"'"}Cause I found that it{"'"}s not so boring Not anymore. - -`, nodes: [ { id: '70:79', @@ -10683,24 +9672,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ` - - Getting into life {"'"}Cause I found that it{"'"}s not so boring Not anymore. - -`, nodes: [ { id: '70:92', @@ -10898,13 +9869,6 @@ describe('render real world component', () => { }, // effect { - expected: ``, nodes: [ { id: '105:95', @@ -10998,13 +9962,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ``, nodes: [ { id: '105:99', @@ -11097,13 +10054,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ``, nodes: [ { id: '105:103', @@ -11185,13 +10135,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ``, nodes: [ { id: '105:107', @@ -11274,80 +10217,6 @@ describe('render real world component', () => { }, // Dimmend, absolute { - expected: ` - - - - - 지금 시작할 수 있어요 - - - 내 삶을 더 잘 이해하는 첫 걸음 - - - - 자꾸 미뤄졌던 나에 대한 고민, 퍼즐핏에서 구체적인 답을 찾아보세요. - - - - - 회원가입 후, 유료로 진행됩니다 - - -`, - nodes: [ { id: '107:26', @@ -12465,18 +11334,6 @@ describe('render real world component', () => { }, // svg { - expected: ``, nodes: [ { id: '171:1545', @@ -12620,14 +11477,6 @@ describe('render real world component', () => { ], }, { - expected: ``, nodes: [ { id: '171:1553', @@ -12813,14 +11662,6 @@ describe('render real world component', () => { ], }, { - expected: ``, nodes: [ { id: '171:1561', @@ -13046,7 +11887,6 @@ describe('render real world component', () => { ], }, { - expected: ``, nodes: [ { id: '171:1566', @@ -13269,7 +12109,6 @@ describe('render real world component', () => { ], }, { - expected: ``, nodes: [ { id: '171:1548', @@ -13517,27 +12356,6 @@ describe('render real world component', () => { }, // flex with maxW { - expected: ` -
    - - Hello World! - - -
    -
    `, nodes: [ { id: '60:2', @@ -13860,27 +12678,6 @@ describe('render real world component', () => { ], }, { - expected: ` -
    - - Hello World! - - -
    -
    `, nodes: [ { id: '60:19', @@ -14207,33 +13004,6 @@ describe('render real world component', () => { ], }, { - expected: ` -
    - - Hello World! - - -
    -
    `, nodes: [ { id: '60:27', @@ -14556,27 +13326,6 @@ describe('render real world component', () => { ], }, { - expected: ` -
    - - Hello World! - - -
    -
    `, nodes: [ { id: '60:31', @@ -14899,28 +13648,6 @@ describe('render real world component', () => { ], }, { - expected: ` -
    - - Hello World! - - -
    -
    `, nodes: [ { id: '60:35', @@ -15244,28 +13971,6 @@ describe('render real world component', () => { }, // Text with auto layout { - expected: ` - - Hello World - - - Lorem ipsum dolor sit amet, consectetur adipiscing elit. - -`, nodes: [ { id: '40:3', @@ -15549,28 +14254,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ` - - Hello World - - - Lorem ipsum dolor sit amet, consectetur adipiscing elit. - -`, nodes: [ { id: '40:57', @@ -15854,34 +14537,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ` - - Hello World - - - Lorem ipsum dolor sit amet, consectetur adipiscing elit. - -`, nodes: [ { id: '40:9', @@ -16165,29 +14820,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ` - - Hello World - - - Lorem ipsum dolor sit amet, consectetur adipiscing elit. - -`, nodes: [ { id: '40:78', @@ -16471,28 +15103,6 @@ describe('render real world component', () => { variables: [], }, { - expected: `
    - - Hello World - - - Lorem ipsum dolor sit amet, consectetur adipiscing elit. - -
    `, nodes: [ { id: '40:18', @@ -16776,35 +15386,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ` - - Hello World - - - Lorem ipsum dolor sit amet, consectetur adipiscing elit. - -`, nodes: [ { id: '40:30', @@ -17088,30 +15669,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ` - - Hello World - - - Lorem ipsum dolor sit amet, consectetur adipiscing elit. - -`, nodes: [ { id: '40:42', @@ -17395,34 +15952,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ` - - Hello World - - - Lorem ipsum dolor sit amet, consectetur adipiscing elit. - -`, nodes: [ { id: '40:24', @@ -17706,35 +16235,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ` - - Hello World - - - Lorem ipsum dolor sit amet, consectetur adipiscing elit. - -`, nodes: [ { id: '40:36', @@ -18018,9 +16518,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ` - -`, nodes: [ { id: '69:9', @@ -18158,9 +16655,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ` - -`, nodes: [ { id: '69:13', @@ -18298,80 +16792,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ` - - - 플레이 제목 - - - - 2025.03.03 18:00 - - - - - - 2 - - - - - 댓글 내용 출력 댓글 내용 출력 댓글 내용 출력 댓글 내용 출력 댓글 내용 출력 - -`, nodes: [ { id: '109:51', @@ -19293,13 +17713,6 @@ describe('render real world component', () => { }, // grid { - expected: ` - - - - -`, - nodes: [ { id: '145:1912', @@ -19658,22 +18071,6 @@ describe('render real world component', () => { ], }, { - expected: ` - - -`, nodes: [ { id: '169:1545', @@ -19902,9 +18299,6 @@ describe('render real world component', () => { ], }, { - expected: ` - -`, nodes: [ { id: '169:1563', @@ -20068,15 +18462,6 @@ describe('render real world component', () => { ], }, { - expected: ` - -`, nodes: [ { id: '179:1554', @@ -20241,13 +18626,6 @@ describe('render real world component', () => { }, // mix blend { - expected: ``, nodes: [ { id: '245:1595', @@ -20344,13 +18722,6 @@ describe('render real world component', () => { ], }, { - expected: ``, nodes: [ { id: '245:1600', @@ -20447,13 +18818,6 @@ describe('render real world component', () => { ], }, { - expected: ``, nodes: [ { id: '245:1607', @@ -20533,7 +18897,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ``, nodes: [ { id: '245:1609', @@ -20598,17 +18961,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ` - 데브파이브 -`, nodes: [ { id: '245:1614', @@ -20728,205 +19080,6 @@ describe('render real world component', () => { }, // testcase dron { - expected: ` - - 간편 로그인 연동 - - - - - 카카오 - - - 연결 전 - -
    - - 인증하기 - -
    -
    - - - 구글 - - - cooolvita@gmail.com - -
    - - 인증하기 - -
    -
    -
    - - - - - 서비스 이용약관 - - - - - - 개인정보 처리방침 - - - - - - 회원 탈퇴 - - - - -
    `, nodes: [ { id: '113:9', @@ -23204,13 +21357,6 @@ describe('render real world component', () => { }, // many shape { - expected: ``, nodes: [ { id: '188:1567', @@ -23267,13 +21413,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ``, nodes: [ { id: '188:1568', @@ -23330,13 +21469,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ``, nodes: [ { id: '189:1590', @@ -23393,7 +21525,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ``, nodes: [ { id: '188:1569', @@ -23449,7 +21580,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ``, nodes: [ { id: '216:1548', @@ -23505,7 +21635,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ``, nodes: [ { id: '189:1582', @@ -23561,7 +21690,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ``, nodes: [ { id: '189:1586', @@ -23617,7 +21745,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ``, nodes: [ { id: '199:1545', @@ -23673,7 +21800,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ``, nodes: [ { id: '199:1554', @@ -23729,7 +21855,6 @@ describe('render real world component', () => { variables: [], }, { - expected: ``, nodes: [ { id: '188:1571', @@ -23787,7 +21912,6 @@ describe('render real world component', () => { }, // svg detail { - expected: ``, nodes: [ { id: '188:1552', @@ -24546,7 +22670,6 @@ describe('render real world component', () => { ], }, { - expected: ``, nodes: [ { id: '189:1760', @@ -25309,21 +23432,6 @@ describe('render real world component', () => { ], }, { - expected: `
    - -
    `, nodes: [ { id: '189:1695', @@ -25578,20 +23686,6 @@ describe('render real world component', () => { ], }, { - expected: `
    - -
    `, nodes: [ { id: '189:1690', @@ -25834,9 +23928,6 @@ describe('render real world component', () => { ], }, { - expected: `
    - -
    `, nodes: [ { id: '189:1744', @@ -26109,20 +24200,6 @@ describe('render real world component', () => { ], }, { - expected: `
    - -
    `, nodes: [ { id: '189:1719', @@ -26342,9 +24419,6 @@ describe('render real world component', () => { ], }, { - expected: `
    - -
    `, nodes: [ { id: '189:1744', @@ -26617,20 +24691,6 @@ describe('render real world component', () => { ], }, { - expected: `
    - -
    `, nodes: [ { id: '189:1719', @@ -26850,9 +24910,6 @@ describe('render real world component', () => { ], }, { - expected: `
    - -
    `, nodes: [ { id: '189:1736', @@ -27103,18 +25160,6 @@ describe('render real world component', () => { }, // Decorative Text { - expected: ` - 16.8s -`, nodes: [ { id: '241:1549', @@ -27305,20 +25350,6 @@ describe('render real world component', () => { ], }, { - expected: ` - 홈페이지와 앱 제작 -`, nodes: [ { id: '244:1548', @@ -27497,19 +25528,6 @@ describe('render real world component', () => { ], }, { - expected: ` - - 온글 - - 과 함께라면 -`, nodes: [ { id: '244:1564', @@ -27682,18 +25700,6 @@ describe('render real world component', () => { ], }, { - expected: ` - 데브파이브 -`, nodes: [ { id: '244:1573', @@ -27839,20 +25845,6 @@ describe('render real world component', () => { ], }, { - expected: ` - 데브파이브 -`, nodes: [ { id: '244:1578', @@ -28028,30 +26020,6 @@ describe('render real world component', () => { ], }, { - expected: ` -
  • - 어떤 증상이 가장 힘들고 일상생활에 영향을 주나요? -
  • -
  • - 증상이 언제부터 시작되었나요? -
  • -
  • - 증상이 시간이 지나면서 어떻게 변했나요? -
  • -
  • - 스트레스나 상황에 따라 증상이 달라지나요? -
  • -
    `, nodes: [ { id: '387:1575', @@ -28183,42 +26151,6 @@ describe('render real world component', () => { ], }, { - expected: `export function GradientButton() { - return ( -
    - - 자세히 알아보기 → - -
    - ) -}`, nodes: [ { id: '351:1546', @@ -29288,65 +27220,6 @@ describe('render real world component', () => { ], }, { - expected: `export interface ButtonProps { - size: 'Md' | 'Sm' - variant: 'primary' | 'white' -} - -export function Button({ size, variant }: ButtonProps) { - return ( -
    - - 참가 신청하기 - -
    - ) -}`, nodes: [ { id: '536:2019', @@ -33997,7 +31870,5188 @@ export function Button({ size, variant }: ButtonProps) { }, ], }, - ] as const)('$expected', async ({ expected, nodes, variables }) => { + { + nodes: [ + { + id: '284:18593', + name: 'Desktop', + type: 'FRAME', + inferredAutoLayout: { + layoutMode: 'HORIZONTAL', + paddingLeft: 40, + paddingRight: 40, + paddingTop: 120, + paddingBottom: 120, + counterAxisSizingMode: 'FIXED', + primaryAxisSizingMode: 'FIXED', + primaryAxisAlignItems: 'CENTER', + counterAxisAlignItems: 'CENTER', + layoutAlign: 'INHERIT', + layoutGrow: 0, + itemSpacing: 0, + layoutPositioning: 'AUTO', + }, + reactions: [], + parent: '284:18782', + children: ['284:18783', '284:18625'], + primaryAxisAlignItems: 'CENTER', + counterAxisAlignItems: 'CENTER', + maxWidth: null, + maxHeight: null, + minWidth: null, + minHeight: null, + layoutPositioning: 'AUTO', + layoutSizingVertical: 'FIXED', + layoutSizingHorizontal: 'FIXED', + height: 1080, + cornerRadius: 0, + topLeftRadius: 0, + topRightRadius: 0, + bottomRightRadius: 0, + bottomLeftRadius: 0, + strokes: [], + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.9647058844566345, + g: 0.9529411792755127, + b: 0.929411768913269, + }, + boundVariables: { + color: '[NodeId: VariableID:10:642]', + }, + }, + ], + opacity: 1, + blendMode: 'PASS_THROUGH', + isAsset: false, + effects: [], + rotation: 0, + clipsContent: true, + visible: true, + width: 1920, + layoutMode: 'HORIZONTAL', + layoutAlign: 'INHERIT', + layoutGrow: 0, + paddingLeft: 40, + paddingRight: 40, + paddingTop: 120, + paddingBottom: 120, + itemSpacing: 0, + counterAxisSpacing: 0, + strokeWeight: 1, + strokeTopWeight: 1, + strokeBottomWeight: 1, + strokeLeftWeight: 1, + strokeRightWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + gridColumnCount: 0, + }, + { + id: '284:18783', + name: 'backgroundImage', + type: 'GROUP', + visible: true, + parent: '284:18593', + children: [ + '284:18784', + '284:18785', + '284:18786', + '284:18787', + '284:18788', + ], + effects: [], + opacity: 0.20000000298023224, + blendMode: 'PASS_THROUGH', + width: 2471.312255859375, + height: 1578.6072998046875, + rotation: -11.242728725472414, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'ABSOLUTE', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + x: -196.2255859375, + y: -908, + }, + { + id: '284:18784', + name: 'Vector 2', + type: 'VECTOR', + visible: true, + parent: '284:18783', + fills: [], + strokes: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.7843137383460999, + g: 0.6431372761726379, + b: 0.41960784792900085, + }, + boundVariables: {}, + }, + ], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 2402.24169921875, + height: 1479.8109130859375, + rotation: -11.242728725472414, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 2, + strokeAlign: 'CENTER', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + constraints: { + horizontal: 'MIN', + vertical: 'MIN', + }, + }, + { + id: '284:18785', + name: 'Vector 3', + type: 'VECTOR', + visible: true, + parent: '284:18783', + fills: [], + strokes: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.7843137383460999, + g: 0.6431372761726379, + b: 0.41960784792900085, + }, + boundVariables: {}, + }, + ], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 2402.24169921875, + height: 1479.8109130859375, + rotation: -11.242728725472414, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 2, + strokeAlign: 'CENTER', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18786', + name: 'Vector 4', + type: 'VECTOR', + visible: true, + parent: '284:18783', + fills: [], + strokes: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.7843137383460999, + g: 0.6431372761726379, + b: 0.41960784792900085, + }, + boundVariables: {}, + }, + ], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 2402.24169921875, + height: 1479.8109130859375, + rotation: -11.242728725472414, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 2, + strokeAlign: 'CENTER', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18787', + name: 'Vector 5', + type: 'VECTOR', + visible: true, + parent: '284:18783', + fills: [], + strokes: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.7843137383460999, + g: 0.6431372761726379, + b: 0.41960784792900085, + }, + boundVariables: {}, + }, + ], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 2402.24169921875, + height: 1479.8109130859375, + rotation: -11.242728725472416, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 2, + strokeAlign: 'CENTER', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18788', + name: 'Vector 6', + type: 'VECTOR', + visible: true, + parent: '284:18783', + fills: [], + strokes: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.7843137383460999, + g: 0.6431372761726379, + b: 0.41960784792900085, + }, + boundVariables: {}, + }, + ], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 2402.24169921875, + height: 1479.8109130859375, + rotation: -11.242728725472416, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 2, + strokeAlign: 'CENTER', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18625', + name: 'Frame 26086061', + type: 'FRAME', + visible: true, + parent: '284:18593', + children: ['284:18689', '284:18684'], + fills: [], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 669, + height: 762, + rotation: 0, + cornerRadius: 0, + topLeftRadius: 0, + topRightRadius: 0, + bottomLeftRadius: 0, + bottomRightRadius: 0, + layoutMode: 'VERTICAL', + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'HUG', + layoutSizingVertical: 'HUG', + layoutPositioning: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'CENTER', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + itemSpacing: 120, + counterAxisSpacing: 0, + clipsContent: false, + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + inferredAutoLayout: { + layoutMode: 'VERTICAL', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + counterAxisSizingMode: 'AUTO', + primaryAxisSizingMode: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'CENTER', + layoutAlign: 'INHERIT', + layoutGrow: 0, + itemSpacing: 120, + layoutPositioning: 'AUTO', + }, + strokeWeight: 1, + strokeTopWeight: 1, + strokeBottomWeight: 1, + strokeLeftWeight: 1, + strokeRightWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + gridColumnCount: 0, + }, + { + id: '284:18689', + name: 'Frame 26086066', + type: 'FRAME', + visible: true, + parent: '284:18625', + children: ['284:18621', '284:18629', '284:18631'], + fills: [], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 669, + height: 520, + rotation: 0, + cornerRadius: 0, + topLeftRadius: 0, + topRightRadius: 0, + bottomLeftRadius: 0, + bottomRightRadius: 0, + layoutMode: 'VERTICAL', + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'HUG', + layoutSizingVertical: 'HUG', + layoutPositioning: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'CENTER', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + itemSpacing: 60, + counterAxisSpacing: 0, + clipsContent: false, + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + inferredAutoLayout: { + layoutMode: 'VERTICAL', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + counterAxisSizingMode: 'AUTO', + primaryAxisSizingMode: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'CENTER', + layoutAlign: 'INHERIT', + layoutGrow: 0, + itemSpacing: 60, + layoutPositioning: 'AUTO', + }, + strokeWeight: 1, + strokeTopWeight: 1, + strokeBottomWeight: 1, + strokeLeftWeight: 1, + strokeRightWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + gridColumnCount: 0, + }, + { + id: '284:18621', + name: 'path1208', + type: 'VECTOR', + visible: true, + parent: '284:18689', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.6941176652908325, + g: 0.529411792755127, + b: 0.30980393290519714, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 200, + height: 104, + rotation: 0, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: true, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + targetAspectRatio: { + x: 211.70425415039062, + y: 110.56629180908203, + }, + strokeWeight: 1.244274377822876, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18629', + name: 'Frame 26086062', + type: 'FRAME', + visible: true, + parent: '284:18689', + children: ['284:18628', '284:18623'], + fills: [], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 669, + height: 138, + rotation: 0, + cornerRadius: 0, + topLeftRadius: 0, + topRightRadius: 0, + bottomLeftRadius: 0, + bottomRightRadius: 0, + layoutMode: 'VERTICAL', + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'HUG', + layoutSizingVertical: 'HUG', + layoutPositioning: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'CENTER', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + itemSpacing: 20, + counterAxisSpacing: 0, + clipsContent: false, + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + inferredAutoLayout: { + layoutMode: 'VERTICAL', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + counterAxisSizingMode: 'AUTO', + primaryAxisSizingMode: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'CENTER', + layoutAlign: 'INHERIT', + layoutGrow: 0, + itemSpacing: 20, + layoutPositioning: 'AUTO', + }, + strokeWeight: 1, + strokeTopWeight: 1, + strokeBottomWeight: 1, + strokeLeftWeight: 1, + strokeRightWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + gridColumnCount: 0, + }, + { + id: '284:18628', + name: 'Under Construction', + type: 'TEXT', + visible: true, + parent: '284:18629', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.48557692766189575, + g: 0.2665456235408783, + b: 0.1003836914896965, + }, + boundVariables: { + color: '[NodeId: VariableID:171:6908]', + }, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 321, + height: 43, + rotation: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'HUG', + layoutSizingVertical: 'HUG', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1, + strokeAlign: 'OUTSIDE', + dashPattern: [], + characters: 'Under Construction', + fontName: { + family: 'MaruBuri', + style: 'Bold', + }, + fontSize: 32, + fontWeight: 700, + lineHeight: { + unit: 'AUTO', + }, + letterSpacing: { + unit: 'PERCENT', + value: 4, + }, + textAutoResize: 'WIDTH_AND_HEIGHT', + textAlignHorizontal: 'LEFT', + textAlignVertical: 'TOP', + textTruncation: 'DISABLED', + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + styledTextSegments: [ + { + characters: 'Under Construction', + start: 0, + end: 18, + fontSize: 32, + fontName: { + family: 'MaruBuri', + style: 'Bold', + }, + fontWeight: 700, + textDecoration: 'NONE', + textCase: 'ORIGINAL', + lineHeight: { + unit: 'AUTO', + }, + letterSpacing: { + unit: 'PERCENT', + value: 4, + }, + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.48557692766189575, + g: 0.2665456235408783, + b: 0.1003836914896965, + }, + boundVariables: { + color: '[NodeId: VariableID:171:6908]', + }, + }, + ], + textStyleId: 'S:14819e9e5daae015642942d4c39508e2b388720c,', + fillStyleId: '', + listOptions: { + type: 'NONE', + }, + indentation: 0, + hyperlink: null, + }, + ], + }, + { + id: '284:18623', + name: '제주국제관악제 리뉴얼 알림', + type: 'TEXT', + visible: true, + parent: '284:18629', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.48557692766189575, + g: 0.2665456235408783, + b: 0.1003836914896965, + }, + boundVariables: { + color: '[NodeId: VariableID:171:6908]', + }, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 669, + height: 75, + rotation: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'HUG', + layoutSizingVertical: 'HUG', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1, + strokeAlign: 'OUTSIDE', + dashPattern: [], + characters: '제주국제관악제 리뉴얼 알림', + fontName: { + family: 'MaruBuri', + style: 'Bold', + }, + fontSize: 56, + fontWeight: 700, + lineHeight: { + unit: 'AUTO', + }, + letterSpacing: { + unit: 'PERCENT', + value: -2, + }, + textAutoResize: 'WIDTH_AND_HEIGHT', + textAlignHorizontal: 'LEFT', + textAlignVertical: 'TOP', + textTruncation: 'DISABLED', + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + styledTextSegments: [ + { + characters: '제주국제관악제 리뉴얼 알림', + start: 0, + end: 14, + fontSize: 56, + fontName: { + family: 'MaruBuri', + style: 'Bold', + }, + fontWeight: 700, + textDecoration: 'NONE', + textCase: 'ORIGINAL', + lineHeight: { + unit: 'AUTO', + }, + letterSpacing: { + unit: 'PERCENT', + value: -2, + }, + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.48557692766189575, + g: 0.2665456235408783, + b: 0.1003836914896965, + }, + boundVariables: { + color: '[NodeId: VariableID:171:6908]', + }, + }, + ], + textStyleId: 'S:9b31c24f538a5e45ca1ffbd51f55bccaf93525aa,', + fillStyleId: '', + listOptions: { + type: 'NONE', + }, + indentation: 0, + hyperlink: null, + }, + ], + }, + { + id: '284:18631', + name: 'Frame 26086063', + type: 'FRAME', + visible: true, + parent: '284:18689', + children: ['284:18626', '284:18630'], + fills: [], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 525, + height: 158, + rotation: 0, + cornerRadius: 0, + topLeftRadius: 0, + topRightRadius: 0, + bottomLeftRadius: 0, + bottomRightRadius: 0, + layoutMode: 'VERTICAL', + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'HUG', + layoutSizingVertical: 'HUG', + layoutPositioning: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'CENTER', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + itemSpacing: 20, + counterAxisSpacing: 0, + clipsContent: false, + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + inferredAutoLayout: { + layoutMode: 'VERTICAL', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + counterAxisSizingMode: 'AUTO', + primaryAxisSizingMode: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'CENTER', + layoutAlign: 'INHERIT', + layoutGrow: 0, + itemSpacing: 20, + layoutPositioning: 'AUTO', + }, + strokeWeight: 1, + strokeTopWeight: 1, + strokeBottomWeight: 1, + strokeLeftWeight: 1, + strokeRightWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + gridColumnCount: 0, + }, + { + id: '284:18626', + name: '더 나은 서비스 제공을 위해 시스템 점검 및 리뉴얼을 진행 중입니다. 이용에 불편을 드려 죄송하며, 빠른 시일 내에 다시 찾아뵙겠습니다.', + type: 'TEXT', + visible: true, + parent: '284:18631', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.14509804546833038, + g: 0.125490203499794, + b: 0.11372549086809158, + }, + boundVariables: { + color: '[NodeId: VariableID:10:641]', + }, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 525, + height: 80, + rotation: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'HUG', + layoutSizingVertical: 'HUG', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1, + strokeAlign: 'OUTSIDE', + dashPattern: [], + characters: + '더 나은 서비스 제공을 위해 시스템 점검 및 리뉴얼을 진행 중입니다.\n이용에 불편을 드려 죄송하며, 빠른 시일 내에 다시 찾아뵙겠습니다.', + fontName: { + family: 'Noto Sans KR', + style: 'Regular', + }, + fontSize: 20, + fontWeight: 400, + lineHeight: { + unit: 'PERCENT', + value: 200, + }, + letterSpacing: { + unit: 'PERCENT', + value: -3, + }, + textAutoResize: 'WIDTH_AND_HEIGHT', + textAlignHorizontal: 'CENTER', + textAlignVertical: 'TOP', + textTruncation: 'DISABLED', + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + styledTextSegments: [ + { + characters: + '더 나은 서비스 제공을 위해 시스템 점검 및 리뉴얼을 진행 중입니다.\n이용에 불편을 드려 죄송하며, 빠른 시일 내에 다시 찾아뵙겠습니다.', + start: 0, + end: 76, + fontSize: 20, + fontName: { + family: 'Noto Sans KR', + style: 'Regular', + }, + fontWeight: 400, + textDecoration: 'NONE', + textCase: 'ORIGINAL', + lineHeight: { + unit: 'PERCENT', + value: 200, + }, + letterSpacing: { + unit: 'PERCENT', + value: -3, + }, + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.14509804546833038, + g: 0.125490203499794, + b: 0.11372549086809158, + }, + boundVariables: { + color: '[NodeId: VariableID:10:641]', + }, + }, + ], + textStyleId: 'S:c70470a187185991705af339d5d2c1c4e00a599b,', + fillStyleId: '', + listOptions: { + type: 'NONE', + }, + indentation: 0, + hyperlink: null, + }, + ], + }, + { + id: '284:18630', + name: 'We are currently updating our website to serve you better. We apologize for the inconvenience.', + type: 'TEXT', + visible: true, + parent: '284:18631', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.38461539149284363, + g: 0.350098580121994, + b: 0.350098580121994, + }, + boundVariables: { + color: '[NodeId: VariableID:68:1448]', + }, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 415, + height: 58, + rotation: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'HUG', + layoutSizingVertical: 'HUG', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1, + strokeAlign: 'OUTSIDE', + dashPattern: [], + characters: + 'We are currently updating our website to serve you better. \nWe apologize for the inconvenience.', + fontName: { + family: 'Noto Sans KR', + style: 'Regular', + }, + fontSize: 16, + fontWeight: 400, + lineHeight: { + unit: 'PERCENT', + value: 179.99999523162842, + }, + letterSpacing: { + unit: 'PERCENT', + value: -2, + }, + textAutoResize: 'WIDTH_AND_HEIGHT', + textAlignHorizontal: 'CENTER', + textAlignVertical: 'TOP', + textTruncation: 'DISABLED', + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + styledTextSegments: [ + { + characters: + 'We are currently updating our website to serve you better. \nWe apologize for the inconvenience.', + start: 0, + end: 95, + fontSize: 16, + fontName: { + family: 'Noto Sans KR', + style: 'Regular', + }, + fontWeight: 400, + textDecoration: 'NONE', + textCase: 'ORIGINAL', + lineHeight: { + unit: 'PERCENT', + value: 179.99999523162842, + }, + letterSpacing: { + unit: 'PERCENT', + value: -2, + }, + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.38461539149284363, + g: 0.350098580121994, + b: 0.350098580121994, + }, + boundVariables: { + color: '[NodeId: VariableID:68:1448]', + }, + }, + ], + textStyleId: 'S:0714e91638efb392b8350fc7b736633442d95452,', + fillStyleId: '', + listOptions: { + type: 'NONE', + }, + indentation: 0, + hyperlink: null, + }, + ], + }, + { + id: '284:18684', + name: 'Frame 26086065', + type: 'FRAME', + visible: true, + parent: '284:18625', + children: ['284:18685', '284:18662', '284:18633'], + fills: [], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 368, + height: 122, + rotation: 0, + cornerRadius: 0, + topLeftRadius: 0, + topRightRadius: 0, + bottomLeftRadius: 0, + bottomRightRadius: 0, + layoutMode: 'VERTICAL', + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'HUG', + layoutSizingVertical: 'HUG', + layoutPositioning: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'CENTER', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + itemSpacing: 16, + counterAxisSpacing: 0, + clipsContent: false, + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + inferredAutoLayout: { + layoutMode: 'VERTICAL', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + counterAxisSizingMode: 'AUTO', + primaryAxisSizingMode: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'CENTER', + layoutAlign: 'INHERIT', + layoutGrow: 0, + itemSpacing: 16, + layoutPositioning: 'AUTO', + }, + strokeWeight: 1, + strokeTopWeight: 1, + strokeBottomWeight: 1, + strokeLeftWeight: 1, + strokeRightWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + gridColumnCount: 0, + }, + { + id: '284:18685', + name: '제주국제관악제 최신 소식 확인하기', + type: 'TEXT', + visible: true, + parent: '284:18684', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.3525640070438385, + g: 0.2507188618183136, + b: 0.17345693707466125, + }, + boundVariables: { + color: '[NodeId: VariableID:10:638]', + }, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 241, + height: 29, + rotation: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'HUG', + layoutSizingVertical: 'HUG', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1, + strokeAlign: 'OUTSIDE', + dashPattern: [], + characters: '제주국제관악제 최신 소식 확인하기', + fontName: { + family: 'Noto Sans KR', + style: 'Bold', + }, + fontSize: 17, + fontWeight: 700, + lineHeight: { + unit: 'PERCENT', + value: 170.00000476837158, + }, + letterSpacing: { + unit: 'PERCENT', + value: -2, + }, + textAutoResize: 'WIDTH_AND_HEIGHT', + textAlignHorizontal: 'CENTER', + textAlignVertical: 'TOP', + textTruncation: 'DISABLED', + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + styledTextSegments: [ + { + characters: '제주국제관악제 최신 소식 확인하기', + start: 0, + end: 18, + fontSize: 17, + fontName: { + family: 'Noto Sans KR', + style: 'Bold', + }, + fontWeight: 700, + textDecoration: 'NONE', + textCase: 'ORIGINAL', + lineHeight: { + unit: 'PERCENT', + value: 170.00000476837158, + }, + letterSpacing: { + unit: 'PERCENT', + value: -2, + }, + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.3525640070438385, + g: 0.2507188618183136, + b: 0.17345693707466125, + }, + boundVariables: { + color: '[NodeId: VariableID:10:638]', + }, + }, + ], + textStyleId: 'S:1588167b8be246784a2d7bbf2363c5b98a418e70,', + fillStyleId: '', + listOptions: { + type: 'NONE', + }, + indentation: 0, + hyperlink: null, + }, + ], + }, + { + id: '284:18662', + name: 'Frame 26086064', + type: 'FRAME', + visible: true, + parent: '284:18684', + children: [ + '284:18663', + '284:18666', + '284:18670', + '284:18673', + '284:18678', + ], + fills: [], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 156, + height: 32, + rotation: 0, + cornerRadius: 0, + topLeftRadius: 0, + topRightRadius: 0, + bottomLeftRadius: 0, + bottomRightRadius: 0, + layoutMode: 'HORIZONTAL', + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'HUG', + layoutSizingVertical: 'HUG', + layoutPositioning: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'MIN', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + itemSpacing: 30, + counterAxisSpacing: 0, + clipsContent: false, + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + inferredAutoLayout: { + layoutMode: 'HORIZONTAL', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + counterAxisSizingMode: 'AUTO', + primaryAxisSizingMode: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'MIN', + layoutAlign: 'INHERIT', + layoutGrow: 0, + itemSpacing: 30, + layoutPositioning: 'AUTO', + }, + strokeWeight: 1, + strokeTopWeight: 1, + strokeBottomWeight: 1, + strokeLeftWeight: 1, + strokeRightWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + gridColumnCount: 0, + }, + { + id: '284:18663', + name: 'twitter_5968830 (1) 1', + type: 'FRAME', + visible: false, + parent: '284:18662', + children: ['284:18664', '284:18665'], + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 1, + g: 1, + b: 1, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 32, + height: 32, + rotation: 0, + cornerRadius: 4, + topLeftRadius: 4, + topRightRadius: 4, + bottomLeftRadius: 4, + bottomRightRadius: 4, + layoutMode: 'NONE', + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'MIN', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + itemSpacing: 0, + counterAxisSpacing: 0, + clipsContent: true, + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + targetAspectRatio: { + x: 1227, + y: 1227, + }, + strokeWeight: 1, + strokeTopWeight: 1, + strokeBottomWeight: 1, + strokeLeftWeight: 1, + strokeRightWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + gridColumnCount: 0, + }, + { + id: '284:18664', + name: 'Vector', + type: 'VECTOR', + visible: true, + parent: '284:18663', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0, + g: 0, + b: 0, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 16.55889320373535, + height: 19.458450317382812, + rotation: 0, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18665', + name: 'Vector', + type: 'VECTOR', + visible: true, + parent: '284:18663', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0, + g: 0, + b: 0, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 32, + height: 32, + rotation: 0, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18666', + name: 'instagram_15713420 1', + type: 'FRAME', + visible: true, + parent: '284:18662', + children: ['284:18667', '284:18668', '284:18669'], + fills: [ + { + type: 'GRADIENT_LINEAR', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + gradientStops: [ + { + color: { + r: 1, + g: 0.8588235378265381, + b: 0.45098039507865906, + a: 1, + }, + position: 0, + boundVariables: {}, + }, + { + color: { + r: 0.9921568632125854, + g: 0.6784313917160034, + b: 0.30588236451148987, + a: 1, + }, + position: 0.07999999821186066, + boundVariables: {}, + }, + { + color: { + r: 0.9843137264251709, + g: 0.5137255191802979, + b: 0.18039216101169586, + a: 1, + }, + position: 0.15000000596046448, + boundVariables: {}, + }, + { + color: { + r: 0.9803921580314636, + g: 0.45098039507865906, + b: 0.12941177189350128, + a: 1, + }, + position: 0.1899999976158142, + boundVariables: {}, + }, + { + color: { + r: 0.9647058844566345, + g: 0.4117647111415863, + b: 0.18431372940540314, + a: 1, + }, + position: 0.23000000417232513, + boundVariables: {}, + }, + { + color: { + r: 0.9098039269447327, + g: 0.29019609093666077, + b: 0.3529411852359772, + a: 1, + }, + position: 0.3700000047683716, + boundVariables: {}, + }, + { + color: { + r: 0.8784313797950745, + g: 0.21176470816135406, + b: 0.4588235318660736, + a: 1, + }, + position: 0.47999998927116394, + boundVariables: {}, + }, + { + color: { + r: 0.8666666746139526, + g: 0.18431372940540314, + b: 0.49803921580314636, + a: 1, + }, + position: 0.550000011920929, + boundVariables: {}, + }, + { + color: { + r: 0.7058823704719543, + g: 0.239215686917305, + b: 0.5921568870544434, + a: 1, + }, + position: 0.6800000071525574, + boundVariables: {}, + }, + { + color: { + r: 0.3019607961177826, + g: 0.3764705955982208, + b: 0.8313725590705872, + a: 1, + }, + position: 0.9700000286102295, + boundVariables: {}, + }, + { + color: { + r: 0.25882354378700256, + g: 0.3921568691730499, + b: 0.8588235378265381, + a: 1, + }, + position: 1, + boundVariables: {}, + }, + ], + gradientTransform: [ + [-0.2444278746843338, -0.8524705171585083, 1.048449158668518], + [0.8524705171585083, -0.2444278746843338, 0.19597867131233215], + ], + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 32, + height: 32, + rotation: 0, + cornerRadius: 4, + topLeftRadius: 4, + topRightRadius: 4, + bottomLeftRadius: 4, + bottomRightRadius: 4, + layoutMode: 'NONE', + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'MIN', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + itemSpacing: 0, + counterAxisSpacing: 0, + clipsContent: true, + isAsset: true, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + targetAspectRatio: { + x: 512, + y: 512, + }, + strokeWeight: 1, + strokeTopWeight: 1, + strokeBottomWeight: 1, + strokeLeftWeight: 1, + strokeRightWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + gridColumnCount: 0, + }, + { + id: '284:18667', + name: 'Vector', + type: 'VECTOR', + visible: true, + parent: '284:18666', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 1, + g: 1, + b: 1, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 21.582500457763672, + height: 21.473751068115234, + rotation: 0, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18668', + name: 'Vector', + type: 'VECTOR', + visible: true, + parent: '284:18666', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 1, + g: 1, + b: 1, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 11.108752250671387, + height: 11.108752250671387, + rotation: 0, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18669', + name: 'Vector', + type: 'VECTOR', + visible: true, + parent: '284:18666', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 1, + g: 1, + b: 1, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 2.6337509155273438, + height: 2.6337499618530273, + rotation: 0, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18670', + name: 'facebook_1384053 1', + type: 'FRAME', + visible: true, + parent: '284:18662', + children: ['284:18671', '284:18672'], + fills: [ + { + type: 'SOLID', + visible: false, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 1, + g: 1, + b: 1, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 32, + height: 32, + rotation: 0, + cornerRadius: 4, + topLeftRadius: 4, + topRightRadius: 4, + bottomLeftRadius: 4, + bottomRightRadius: 4, + layoutMode: 'NONE', + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'MIN', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + itemSpacing: 0, + counterAxisSpacing: 0, + clipsContent: true, + isAsset: true, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + targetAspectRatio: { + x: 682.6666870117188, + y: 682.6666870117188, + }, + strokeWeight: 1, + strokeTopWeight: 1, + strokeBottomWeight: 1, + strokeLeftWeight: 1, + strokeRightWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + gridColumnCount: 0, + }, + { + id: '284:18671', + name: 'Vector', + type: 'VECTOR', + visible: true, + parent: '284:18670', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.25882354378700256, + g: 0.40392157435417175, + b: 0.6980392336845398, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 32, + height: 32, + rotation: 0, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1.3333333730697632, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18672', + name: 'Vector', + type: 'VECTOR', + visible: true, + parent: '284:18670', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 1, + g: 1, + b: 1, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 14.093750953674316, + height: 27.167238235473633, + rotation: 0, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1.3333333730697632, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18673', + name: 'youtube_3991722 1', + type: 'FRAME', + visible: true, + parent: '284:18662', + children: ['284:18674'], + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 1, + g: 1, + b: 1, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 32, + height: 32, + rotation: 0, + cornerRadius: 4, + topLeftRadius: 4, + topRightRadius: 4, + bottomLeftRadius: 4, + bottomRightRadius: 4, + layoutMode: 'NONE', + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'MIN', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + itemSpacing: 0, + counterAxisSpacing: 0, + clipsContent: true, + isAsset: true, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + targetAspectRatio: { + x: 512, + y: 512, + }, + inferredAutoLayout: { + layoutMode: 'HORIZONTAL', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + counterAxisSizingMode: 'FIXED', + primaryAxisSizingMode: 'FIXED', + primaryAxisAlignItems: 'CENTER', + counterAxisAlignItems: 'CENTER', + layoutAlign: 'MIN', + layoutGrow: 0, + itemSpacing: 0, + layoutPositioning: 'AUTO', + }, + strokeWeight: 1, + strokeTopWeight: 1, + strokeBottomWeight: 1, + strokeLeftWeight: 1, + strokeRightWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + gridColumnCount: 0, + }, + { + id: '284:18674', + name: 'Layer 2', + type: 'GROUP', + visible: true, + parent: '284:18673', + children: ['284:18675'], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 32, + height: 32, + rotation: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + inferredAutoLayout: { + layoutMode: 'HORIZONTAL', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + counterAxisSizingMode: 'FIXED', + primaryAxisSizingMode: 'FIXED', + primaryAxisAlignItems: 'CENTER', + counterAxisAlignItems: 'CENTER', + layoutAlign: 'STRETCH', + layoutGrow: 1, + itemSpacing: 0, + layoutPositioning: 'AUTO', + }, + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18675', + name: '02.youtube', + type: 'GROUP', + visible: true, + parent: '284:18674', + children: ['284:18676', '284:18677'], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 32, + height: 32, + rotation: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + inferredAutoLayout: { + layoutMode: 'NONE', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + counterAxisSizingMode: 'FIXED', + primaryAxisSizingMode: 'FIXED', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'MIN', + layoutAlign: 'STRETCH', + layoutGrow: 1, + itemSpacing: 0, + layoutPositioning: 'AUTO', + }, + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18676', + name: 'background', + type: 'VECTOR', + visible: true, + parent: '284:18675', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.9215686321258545, + g: 0, + b: 0, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 32, + height: 32, + rotation: 0, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 2.909090995788574, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18677', + name: 'icon', + type: 'VECTOR', + visible: true, + parent: '284:18675', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 1, + g: 1, + b: 1, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 20.000892639160156, + height: 14.616372108459473, + rotation: 0, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 2.909090995788574, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18678', + name: 'Group 21', + type: 'GROUP', + visible: false, + parent: '284:18662', + children: ['284:18679', '284:18681'], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 32, + height: 32, + rotation: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + targetAspectRatio: { + x: 533.3333129882812, + y: 533.3333129882812, + }, + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18679', + name: 'g36', + type: 'GROUP', + visible: true, + parent: '284:18678', + children: ['284:18680'], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 32, + height: 32, + rotation: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + inferredAutoLayout: { + layoutMode: 'HORIZONTAL', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + counterAxisSizingMode: 'FIXED', + primaryAxisSizingMode: 'FIXED', + primaryAxisAlignItems: 'CENTER', + counterAxisAlignItems: 'CENTER', + layoutAlign: 'MIN', + layoutGrow: 0, + itemSpacing: 0, + layoutPositioning: 'AUTO', + }, + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18680', + name: 'path38', + type: 'VECTOR', + visible: true, + parent: '284:18679', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.9803921580314636, + g: 0.8823529481887817, + b: 0, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 32, + height: 32, + rotation: 0, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1.3333332538604736, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18681', + name: 'g92', + type: 'GROUP', + visible: true, + parent: '284:18678', + children: ['284:18682'], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 10.399999618530273, + height: 19.251760482788086, + rotation: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + inferredAutoLayout: { + layoutMode: 'VERTICAL', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + counterAxisSizingMode: 'FIXED', + primaryAxisSizingMode: 'FIXED', + primaryAxisAlignItems: 'CENTER', + counterAxisAlignItems: 'CENTER', + layoutAlign: 'MIN', + layoutGrow: 0, + itemSpacing: 0, + layoutPositioning: 'AUTO', + }, + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18682', + name: 'path94', + type: 'VECTOR', + visible: true, + parent: '284:18681', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 1, + g: 1, + b: 1, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 10.399999618530273, + height: 19.251760482788086, + rotation: 0, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1.3333332538604736, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18633', + name: '문의 : 064-722-8704 / bandfestival@hanmail.net', + type: 'TEXT', + visible: true, + parent: '284:18684', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.14509804546833038, + g: 0.125490203499794, + b: 0.11372549086809158, + }, + boundVariables: { + color: '[NodeId: VariableID:10:641]', + }, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 368, + height: 29, + rotation: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'HUG', + layoutSizingVertical: 'HUG', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1, + strokeAlign: 'OUTSIDE', + dashPattern: [], + characters: '문의 : 064-722-8704 / bandfestival@hanmail.net', + fontName: { + family: 'Noto Sans KR', + style: 'Medium', + }, + fontSize: 17, + fontWeight: 500, + lineHeight: { + unit: 'PERCENT', + value: 170.00000476837158, + }, + letterSpacing: { + unit: 'PERCENT', + value: -2, + }, + textAutoResize: 'WIDTH_AND_HEIGHT', + textAlignHorizontal: 'CENTER', + textAlignVertical: 'TOP', + textTruncation: 'DISABLED', + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + styledTextSegments: [ + { + characters: '문의 : 064-722-8704 / bandfestival@hanmail.net', + start: 0, + end: 44, + fontSize: 17, + fontName: { + family: 'Noto Sans KR', + style: 'Medium', + }, + fontWeight: 500, + textDecoration: 'NONE', + textCase: 'ORIGINAL', + lineHeight: { + unit: 'PERCENT', + value: 170.00000476837158, + }, + letterSpacing: { + unit: 'PERCENT', + value: -2, + }, + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.14509804546833038, + g: 0.125490203499794, + b: 0.11372549086809158, + }, + boundVariables: { + color: '[NodeId: VariableID:10:641]', + }, + }, + ], + textStyleId: 'S:f3fe0b8adf37a80fc9553b745496cf5b44c4aba9,', + fillStyleId: '', + listOptions: { + type: 'NONE', + }, + indentation: 0, + hyperlink: null, + }, + ], + }, + { + id: '284:18782', + name: 'UnderConstruction', + type: 'SECTION', + children: ['284:18593'], + }, + ], + variables: [ + { + id: 'VariableID:10:642', + name: 'background', + }, + { + id: 'VariableID:171:6908', + name: 'primaryAccent', + }, + { + id: 'VariableID:10:641', + name: 'text', + }, + { + id: 'VariableID:68:1448', + name: 'textLight', + }, + { + id: 'VariableID:10:638', + name: 'primary', + }, + ], + }, + { + nodes: [ + { + id: '284:18736', + name: 'Mobile', + type: 'FRAME', + parent: '284:18782', + inferredAutoLayout: { + layoutMode: 'VERTICAL', + paddingLeft: 20, + paddingRight: 20, + paddingTop: 60, + paddingBottom: 60, + counterAxisSizingMode: 'FIXED', + primaryAxisSizingMode: 'FIXED', + primaryAxisAlignItems: 'CENTER', + counterAxisAlignItems: 'CENTER', + layoutAlign: 'INHERIT', + layoutGrow: 0, + itemSpacing: 76, + layoutPositioning: 'AUTO', + }, + reactions: [], + children: ['284:18804', '284:18746'], + primaryAxisAlignItems: 'CENTER', + counterAxisAlignItems: 'CENTER', + maxWidth: null, + maxHeight: null, + minWidth: null, + minHeight: null, + layoutPositioning: 'AUTO', + layoutSizingVertical: 'FIXED', + layoutSizingHorizontal: 'FIXED', + cornerRadius: 0, + topLeftRadius: 0, + topRightRadius: 0, + bottomRightRadius: 0, + bottomLeftRadius: 0, + strokes: [], + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.9647058844566345, + g: 0.9529411792755127, + b: 0.929411768913269, + }, + boundVariables: { + color: '[NodeId: VariableID:10:642]', + }, + }, + ], + opacity: 1, + blendMode: 'PASS_THROUGH', + isAsset: false, + effects: [], + rotation: 0, + clipsContent: true, + visible: true, + width: 393, + layoutMode: 'VERTICAL', + height: 852, + layoutAlign: 'INHERIT', + layoutGrow: 0, + paddingLeft: 20, + paddingRight: 20, + paddingTop: 60, + paddingBottom: 60, + itemSpacing: 76, + counterAxisSpacing: 0, + strokeWeight: 1, + strokeTopWeight: 1, + strokeBottomWeight: 1, + strokeLeftWeight: 1, + strokeRightWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + gridColumnCount: 0, + }, + { + id: '284:18754', + name: 'We are currently updating our website to serve you better. We apologize for the inconvenience.', + type: 'TEXT', + maxWidth: null, + maxHeight: null, + minWidth: null, + minHeight: null, + parent: '284:18752', + layoutPositioning: 'AUTO', + layoutSizingVertical: 'HUG', + layoutSizingHorizontal: 'FILL', + strokes: [], + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.38461539149284363, + g: 0.350098580121994, + b: 0.350098580121994, + }, + boundVariables: { + color: '[NodeId: VariableID:68:1448]', + }, + }, + ], + opacity: 1, + blendMode: 'PASS_THROUGH', + textAutoResize: 'HEIGHT', + textAlignHorizontal: 'CENTER', + isAsset: false, + textTruncation: 'DISABLED', + effects: [], + rotation: 0, + reactions: [], + visible: true, + width: 353, + height: 78, + layoutAlign: 'STRETCH', + layoutGrow: 0, + strokeWeight: 1, + strokeAlign: 'OUTSIDE', + dashPattern: [], + characters: + 'We are currently updating our website \nto serve you better. \nWe apologize for the inconvenience.', + fontName: { + family: 'Noto Sans KR', + style: 'Regular', + }, + fontSize: 15, + fontWeight: 400, + lineHeight: { + unit: 'PERCENT', + value: 170.00000476837158, + }, + letterSpacing: { + unit: 'PERCENT', + value: -2, + }, + textAlignVertical: 'TOP', + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + styledTextSegments: [ + { + characters: + 'We are currently updating our website \nto serve you better. \nWe apologize for the inconvenience.', + start: 0, + end: 96, + fontSize: 15, + fontName: { + family: 'Noto Sans KR', + style: 'Regular', + }, + fontWeight: 400, + textDecoration: 'NONE', + textCase: 'ORIGINAL', + lineHeight: { + unit: 'PERCENT', + value: 170.00000476837158, + }, + letterSpacing: { + unit: 'PERCENT', + value: -2, + }, + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.38461539149284363, + g: 0.350098580121994, + b: 0.350098580121994, + }, + boundVariables: { + color: '[NodeId: VariableID:68:1448]', + }, + }, + ], + textStyleId: 'S:9385fb03675cd3793e5cd5ff37b1b3f1c6d3a704,', + fillStyleId: '', + listOptions: { + type: 'NONE', + }, + indentation: 0, + hyperlink: null, + }, + ], + }, + { + id: '284:18752', + name: 'Frame 26086063', + type: 'FRAME', + inferredAutoLayout: { + layoutMode: 'VERTICAL', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + counterAxisSizingMode: 'FIXED', + primaryAxisSizingMode: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'CENTER', + layoutAlign: 'STRETCH', + layoutGrow: 0, + itemSpacing: 20, + layoutPositioning: 'AUTO', + }, + parent: '284:18747', + layoutMode: 'VERTICAL', + visible: true, + children: ['284:18753', '284:18754'], + fills: [], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 353, + height: 234, + rotation: 0, + cornerRadius: 0, + topLeftRadius: 0, + topRightRadius: 0, + bottomLeftRadius: 0, + bottomRightRadius: 0, + layoutAlign: 'STRETCH', + layoutGrow: 0, + layoutSizingHorizontal: 'FILL', + layoutSizingVertical: 'HUG', + layoutPositioning: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'CENTER', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + itemSpacing: 20, + counterAxisSpacing: 0, + clipsContent: false, + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1, + strokeTopWeight: 1, + strokeBottomWeight: 1, + strokeLeftWeight: 1, + strokeRightWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + gridColumnCount: 0, + }, + { + id: '284:18747', + name: 'Frame 26086066', + type: 'FRAME', + parent: '284:18746', + visible: true, + children: ['284:18748', '284:18749', '284:18752'], + fills: [], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 353, + height: 502, + rotation: 0, + cornerRadius: 0, + topLeftRadius: 0, + topRightRadius: 0, + bottomLeftRadius: 0, + bottomRightRadius: 0, + layoutMode: 'VERTICAL', + layoutAlign: 'STRETCH', + layoutGrow: 0, + layoutSizingHorizontal: 'FILL', + layoutSizingVertical: 'HUG', + layoutPositioning: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'CENTER', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + itemSpacing: 30, + counterAxisSpacing: 0, + clipsContent: false, + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + inferredAutoLayout: { + layoutMode: 'VERTICAL', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + counterAxisSizingMode: 'FIXED', + primaryAxisSizingMode: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'CENTER', + layoutAlign: 'STRETCH', + layoutGrow: 0, + itemSpacing: 30, + layoutPositioning: 'AUTO', + }, + strokeWeight: 1, + strokeTopWeight: 1, + strokeBottomWeight: 1, + strokeLeftWeight: 1, + strokeRightWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + gridColumnCount: 0, + }, + { + id: '284:18746', + name: 'Frame 26086061', + type: 'FRAME', + parent: '284:18736', + visible: true, + children: ['284:18747', '284:18755'], + fills: [], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 353, + height: 715, + rotation: 0, + cornerRadius: 0, + topLeftRadius: 0, + topRightRadius: 0, + bottomLeftRadius: 0, + bottomRightRadius: 0, + layoutMode: 'VERTICAL', + layoutAlign: 'STRETCH', + layoutGrow: 0, + layoutSizingHorizontal: 'FILL', + layoutSizingVertical: 'HUG', + layoutPositioning: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'CENTER', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + itemSpacing: 60, + counterAxisSpacing: 0, + clipsContent: false, + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + inferredAutoLayout: { + layoutMode: 'VERTICAL', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + counterAxisSizingMode: 'FIXED', + primaryAxisSizingMode: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'CENTER', + layoutAlign: 'STRETCH', + layoutGrow: 0, + itemSpacing: 60, + layoutPositioning: 'AUTO', + }, + strokeWeight: 1, + strokeTopWeight: 1, + strokeBottomWeight: 1, + strokeLeftWeight: 1, + strokeRightWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + gridColumnCount: 0, + }, + { + id: '284:18804', + name: 'backgroundImage', + type: 'GROUP', + visible: true, + parent: '284:18736', + children: [ + '284:18805', + '284:18806', + '284:18807', + '284:18808', + '284:18809', + ], + effects: [], + opacity: 0.20000000298023224, + blendMode: 'PASS_THROUGH', + width: 779.4011840820312, + height: 497.8604431152344, + rotation: -11.242728725472414, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'ABSOLUTE', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + x: -183.93421936035156, + y: -255, + }, + { + id: '284:18805', + name: 'Vector 2', + type: 'VECTOR', + visible: true, + parent: '284:18804', + fills: [], + strokes: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.7843137383460999, + g: 0.6431372761726379, + b: 0.41960784792900085, + }, + boundVariables: {}, + }, + ], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 757.61767578125, + height: 466.7019348144531, + rotation: -11.242728725472414, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1.2000000476837158, + strokeAlign: 'CENTER', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + constraints: { + horizontal: 'MIN', + vertical: 'MIN', + }, + }, + { + id: '284:18806', + name: 'Vector 3', + type: 'VECTOR', + visible: true, + parent: '284:18804', + fills: [], + strokes: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.7843137383460999, + g: 0.6431372761726379, + b: 0.41960784792900085, + }, + boundVariables: {}, + }, + ], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 757.61767578125, + height: 466.7019348144531, + rotation: -11.242728725472412, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1.2000000476837158, + strokeAlign: 'CENTER', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18807', + name: 'Vector 4', + type: 'VECTOR', + visible: true, + parent: '284:18804', + fills: [], + strokes: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.7843137383460999, + g: 0.6431372761726379, + b: 0.41960784792900085, + }, + boundVariables: {}, + }, + ], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 757.61767578125, + height: 466.7019348144531, + rotation: -11.242728725472414, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1.2000000476837158, + strokeAlign: 'CENTER', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18808', + name: 'Vector 5', + type: 'VECTOR', + visible: true, + parent: '284:18804', + fills: [], + strokes: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.7843137383460999, + g: 0.6431372761726379, + b: 0.41960784792900085, + }, + boundVariables: {}, + }, + ], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 757.61767578125, + height: 466.7019348144531, + rotation: -11.242728725472414, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1.2000000476837158, + strokeAlign: 'CENTER', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18809', + name: 'Vector 6', + type: 'VECTOR', + visible: true, + parent: '284:18804', + fills: [], + strokes: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.7843137383460999, + g: 0.6431372761726379, + b: 0.41960784792900085, + }, + boundVariables: {}, + }, + ], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 757.61767578125, + height: 466.7019348144531, + rotation: -11.242728725472414, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1.2000000476837158, + strokeAlign: 'CENTER', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18748', + name: 'path1208', + type: 'VECTOR', + visible: true, + parent: '284:18747', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.6941176652908325, + g: 0.529411792755127, + b: 0.30980393290519714, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 100, + height: 52, + rotation: 0, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: true, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + targetAspectRatio: { + x: 211.70425415039062, + y: 110.56629180908203, + }, + strokeWeight: 1.244274377822876, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18749', + name: 'Frame 26086062', + type: 'FRAME', + visible: true, + parent: '284:18747', + children: ['284:18750', '284:18751'], + fills: [], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 353, + height: 156, + rotation: 0, + cornerRadius: 0, + topLeftRadius: 0, + topRightRadius: 0, + bottomLeftRadius: 0, + bottomRightRadius: 0, + layoutMode: 'VERTICAL', + layoutAlign: 'STRETCH', + layoutGrow: 0, + layoutSizingHorizontal: 'FILL', + layoutSizingVertical: 'HUG', + layoutPositioning: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'CENTER', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + itemSpacing: 20, + counterAxisSpacing: 0, + clipsContent: false, + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + inferredAutoLayout: { + layoutMode: 'VERTICAL', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + counterAxisSizingMode: 'FIXED', + primaryAxisSizingMode: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'CENTER', + layoutAlign: 'STRETCH', + layoutGrow: 0, + itemSpacing: 20, + layoutPositioning: 'AUTO', + }, + strokeWeight: 1, + strokeTopWeight: 1, + strokeBottomWeight: 1, + strokeLeftWeight: 1, + strokeRightWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + gridColumnCount: 0, + }, + { + id: '284:18750', + name: 'Under Construction', + type: 'TEXT', + visible: true, + parent: '284:18749', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.48557692766189575, + g: 0.2665456235408783, + b: 0.1003836914896965, + }, + boundVariables: { + color: '[NodeId: VariableID:171:6908]', + }, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 201, + height: 30, + rotation: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'HUG', + layoutSizingVertical: 'HUG', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1, + strokeAlign: 'OUTSIDE', + dashPattern: [], + characters: 'Under Construction', + fontName: { + family: 'MaruBuri', + style: 'Bold', + }, + fontSize: 20, + fontWeight: 700, + lineHeight: { + unit: 'PERCENT', + value: 150, + }, + letterSpacing: { + unit: 'PERCENT', + value: 4, + }, + textAutoResize: 'WIDTH_AND_HEIGHT', + textAlignHorizontal: 'LEFT', + textAlignVertical: 'TOP', + textTruncation: 'DISABLED', + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + styledTextSegments: [ + { + characters: 'Under Construction', + start: 0, + end: 18, + fontSize: 20, + fontName: { + family: 'MaruBuri', + style: 'Bold', + }, + fontWeight: 700, + textDecoration: 'NONE', + textCase: 'ORIGINAL', + lineHeight: { + unit: 'PERCENT', + value: 150, + }, + letterSpacing: { + unit: 'PERCENT', + value: 4, + }, + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.48557692766189575, + g: 0.2665456235408783, + b: 0.1003836914896965, + }, + boundVariables: { + color: '[NodeId: VariableID:171:6908]', + }, + }, + ], + textStyleId: 'S:3b473a78704138bee802a56e5cc5985142b1cadd,', + fillStyleId: '', + listOptions: { + type: 'NONE', + }, + indentation: 0, + hyperlink: null, + }, + ], + }, + { + id: '284:18751', + name: '제주국제관악제 리뉴얼 알림', + type: 'TEXT', + visible: true, + parent: '284:18749', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.48557692766189575, + g: 0.2665456235408783, + b: 0.1003836914896965, + }, + boundVariables: { + color: '[NodeId: VariableID:171:6908]', + }, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 353, + height: 106, + rotation: 0, + layoutAlign: 'STRETCH', + layoutGrow: 0, + layoutSizingHorizontal: 'FILL', + layoutSizingVertical: 'HUG', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1, + strokeAlign: 'OUTSIDE', + dashPattern: [], + characters: '제주국제관악제 \n리뉴얼 알림', + fontName: { + family: 'MaruBuri', + style: 'Bold', + }, + fontSize: 35, + fontWeight: 700, + lineHeight: { + unit: 'PERCENT', + value: 150, + }, + letterSpacing: { + unit: 'PERCENT', + value: -2, + }, + textAutoResize: 'HEIGHT', + textAlignHorizontal: 'CENTER', + textAlignVertical: 'TOP', + textTruncation: 'DISABLED', + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + styledTextSegments: [ + { + characters: '제주국제관악제 \n리뉴얼 알림', + start: 0, + end: 15, + fontSize: 35, + fontName: { + family: 'MaruBuri', + style: 'Bold', + }, + fontWeight: 700, + textDecoration: 'NONE', + textCase: 'ORIGINAL', + lineHeight: { + unit: 'PERCENT', + value: 150, + }, + letterSpacing: { + unit: 'PERCENT', + value: -2, + }, + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.48557692766189575, + g: 0.2665456235408783, + b: 0.1003836914896965, + }, + boundVariables: { + color: '[NodeId: VariableID:171:6908]', + }, + }, + ], + textStyleId: 'S:274c0fed1bc528170a95a809d99939559908f2de,', + fillStyleId: '', + listOptions: { + type: 'NONE', + }, + indentation: 0, + hyperlink: null, + }, + ], + }, + { + id: '284:18753', + name: '더 나은 서비스 제공을 위해 시스템 점검 및 리뉴얼을 진행 중입니다. 이용에 불편을 드려 죄송하며, 빠른 시일 내에 다시 찾아뵙겠습니다.', + type: 'TEXT', + visible: true, + parent: '284:18752', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.14509804546833038, + g: 0.125490203499794, + b: 0.11372549086809158, + }, + boundVariables: { + color: '[NodeId: VariableID:10:641]', + }, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 353, + height: 136, + rotation: 0, + layoutAlign: 'STRETCH', + layoutGrow: 0, + layoutSizingHorizontal: 'FILL', + layoutSizingVertical: 'HUG', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1, + strokeAlign: 'OUTSIDE', + dashPattern: [], + characters: + '더 나은 서비스 제공을 위해 \n시스템 점검 및 리뉴얼을 진행 중입니다.\n이용에 불편을 드려 죄송하며, \n빠른 시일 내에 다시 찾아뵙겠습니다.', + fontName: { + family: 'Noto Sans KR', + style: 'Regular', + }, + fontSize: 17, + fontWeight: 400, + lineHeight: { + unit: 'PERCENT', + value: 200, + }, + letterSpacing: { + unit: 'PERCENT', + value: -3, + }, + textAutoResize: 'HEIGHT', + textAlignHorizontal: 'CENTER', + textAlignVertical: 'TOP', + textTruncation: 'DISABLED', + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + styledTextSegments: [ + { + characters: + '더 나은 서비스 제공을 위해 \n시스템 점검 및 리뉴얼을 진행 중입니다.\n이용에 불편을 드려 죄송하며, \n빠른 시일 내에 다시 찾아뵙겠습니다.', + start: 0, + end: 78, + fontSize: 17, + fontName: { + family: 'Noto Sans KR', + style: 'Regular', + }, + fontWeight: 400, + textDecoration: 'NONE', + textCase: 'ORIGINAL', + lineHeight: { + unit: 'PERCENT', + value: 200, + }, + letterSpacing: { + unit: 'PERCENT', + value: -3, + }, + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.14509804546833038, + g: 0.125490203499794, + b: 0.11372549086809158, + }, + boundVariables: { + color: '[NodeId: VariableID:10:641]', + }, + }, + ], + textStyleId: 'S:efc082632af0578b31d7c37ad1d216886c8a3f11,', + fillStyleId: '', + listOptions: { + type: 'NONE', + }, + indentation: 0, + hyperlink: null, + }, + ], + }, + { + id: '284:18755', + name: 'Frame 26086065', + type: 'FRAME', + visible: true, + parent: '284:18746', + children: ['284:18757', '284:18758', '284:18756'], + fills: [], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 227, + height: 153, + rotation: 0, + cornerRadius: 0, + topLeftRadius: 0, + topRightRadius: 0, + bottomLeftRadius: 0, + bottomRightRadius: 0, + layoutMode: 'VERTICAL', + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'HUG', + layoutSizingVertical: 'HUG', + layoutPositioning: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'CENTER', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + itemSpacing: 20, + counterAxisSpacing: 0, + clipsContent: false, + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + inferredAutoLayout: { + layoutMode: 'VERTICAL', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + counterAxisSizingMode: 'AUTO', + primaryAxisSizingMode: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'CENTER', + layoutAlign: 'INHERIT', + layoutGrow: 0, + itemSpacing: 20, + layoutPositioning: 'AUTO', + }, + strokeWeight: 1, + strokeTopWeight: 1, + strokeBottomWeight: 1, + strokeLeftWeight: 1, + strokeRightWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + gridColumnCount: 0, + }, + { + id: '284:18757', + name: '제주국제관악제 최신 소식 확인하기', + type: 'TEXT', + visible: true, + parent: '284:18755', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.3525640070438385, + g: 0.2507188618183136, + b: 0.17345693707466125, + }, + boundVariables: { + color: '[NodeId: VariableID:10:638]', + }, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 227, + height: 27, + rotation: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'HUG', + layoutSizingVertical: 'HUG', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1, + strokeAlign: 'OUTSIDE', + dashPattern: [], + characters: '제주국제관악제 최신 소식 확인하기', + fontName: { + family: 'Noto Sans KR', + style: 'Bold', + }, + fontSize: 16, + fontWeight: 700, + lineHeight: { + unit: 'PERCENT', + value: 170.00000476837158, + }, + letterSpacing: { + unit: 'PERCENT', + value: -2, + }, + textAutoResize: 'WIDTH_AND_HEIGHT', + textAlignHorizontal: 'CENTER', + textAlignVertical: 'TOP', + textTruncation: 'DISABLED', + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + styledTextSegments: [ + { + characters: '제주국제관악제 최신 소식 확인하기', + start: 0, + end: 18, + fontSize: 16, + fontName: { + family: 'Noto Sans KR', + style: 'Bold', + }, + fontWeight: 700, + textDecoration: 'NONE', + textCase: 'ORIGINAL', + lineHeight: { + unit: 'PERCENT', + value: 170.00000476837158, + }, + letterSpacing: { + unit: 'PERCENT', + value: -2, + }, + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.3525640070438385, + g: 0.2507188618183136, + b: 0.17345693707466125, + }, + boundVariables: { + color: '[NodeId: VariableID:10:638]', + }, + }, + ], + textStyleId: 'S:4fd1225444ddbbfd36aa07500d572aa253bdd93d,', + fillStyleId: '', + listOptions: { + type: 'NONE', + }, + indentation: 0, + hyperlink: null, + }, + ], + }, + { + id: '284:18758', + name: 'Frame 26086064', + type: 'FRAME', + visible: true, + parent: '284:18755', + children: [ + '284:18759', + '284:18762', + '284:18766', + '284:18769', + '284:18774', + ], + fills: [], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 156, + height: 32, + rotation: 0, + cornerRadius: 0, + topLeftRadius: 0, + topRightRadius: 0, + bottomLeftRadius: 0, + bottomRightRadius: 0, + layoutMode: 'HORIZONTAL', + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'HUG', + layoutSizingVertical: 'HUG', + layoutPositioning: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'MIN', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + itemSpacing: 30, + counterAxisSpacing: 0, + clipsContent: false, + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + inferredAutoLayout: { + layoutMode: 'HORIZONTAL', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + counterAxisSizingMode: 'AUTO', + primaryAxisSizingMode: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'MIN', + layoutAlign: 'INHERIT', + layoutGrow: 0, + itemSpacing: 30, + layoutPositioning: 'AUTO', + }, + strokeWeight: 1, + strokeTopWeight: 1, + strokeBottomWeight: 1, + strokeLeftWeight: 1, + strokeRightWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + gridColumnCount: 0, + }, + { + id: '284:18759', + name: 'twitter_5968830 (1) 1', + type: 'FRAME', + visible: false, + parent: '284:18758', + children: ['284:18760', '284:18761'], + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 1, + g: 1, + b: 1, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 32, + height: 32, + rotation: 0, + cornerRadius: 4, + topLeftRadius: 4, + topRightRadius: 4, + bottomLeftRadius: 4, + bottomRightRadius: 4, + layoutMode: 'NONE', + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'MIN', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + itemSpacing: 0, + counterAxisSpacing: 0, + clipsContent: true, + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + targetAspectRatio: { + x: 1227, + y: 1227, + }, + strokeWeight: 1, + strokeTopWeight: 1, + strokeBottomWeight: 1, + strokeLeftWeight: 1, + strokeRightWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + gridColumnCount: 0, + }, + { + id: '284:18760', + name: 'Vector', + type: 'VECTOR', + visible: true, + parent: '284:18759', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0, + g: 0, + b: 0, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 16.55889320373535, + height: 19.458450317382812, + rotation: 0, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18761', + name: 'Vector', + type: 'VECTOR', + visible: true, + parent: '284:18759', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0, + g: 0, + b: 0, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 32, + height: 32, + rotation: 0, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18762', + name: 'instagram_15713420 1', + type: 'FRAME', + visible: true, + parent: '284:18758', + children: ['284:18763', '284:18764', '284:18765'], + fills: [ + { + type: 'GRADIENT_LINEAR', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + gradientStops: [ + { + color: { + r: 1, + g: 0.8588235378265381, + b: 0.45098039507865906, + a: 1, + }, + position: 0, + boundVariables: {}, + }, + { + color: { + r: 0.9921568632125854, + g: 0.6784313917160034, + b: 0.30588236451148987, + a: 1, + }, + position: 0.07999999821186066, + boundVariables: {}, + }, + { + color: { + r: 0.9843137264251709, + g: 0.5137255191802979, + b: 0.18039216101169586, + a: 1, + }, + position: 0.15000000596046448, + boundVariables: {}, + }, + { + color: { + r: 0.9803921580314636, + g: 0.45098039507865906, + b: 0.12941177189350128, + a: 1, + }, + position: 0.1899999976158142, + boundVariables: {}, + }, + { + color: { + r: 0.9647058844566345, + g: 0.4117647111415863, + b: 0.18431372940540314, + a: 1, + }, + position: 0.23000000417232513, + boundVariables: {}, + }, + { + color: { + r: 0.9098039269447327, + g: 0.29019609093666077, + b: 0.3529411852359772, + a: 1, + }, + position: 0.3700000047683716, + boundVariables: {}, + }, + { + color: { + r: 0.8784313797950745, + g: 0.21176470816135406, + b: 0.4588235318660736, + a: 1, + }, + position: 0.47999998927116394, + boundVariables: {}, + }, + { + color: { + r: 0.8666666746139526, + g: 0.18431372940540314, + b: 0.49803921580314636, + a: 1, + }, + position: 0.550000011920929, + boundVariables: {}, + }, + { + color: { + r: 0.7058823704719543, + g: 0.239215686917305, + b: 0.5921568870544434, + a: 1, + }, + position: 0.6800000071525574, + boundVariables: {}, + }, + { + color: { + r: 0.3019607961177826, + g: 0.3764705955982208, + b: 0.8313725590705872, + a: 1, + }, + position: 0.9700000286102295, + boundVariables: {}, + }, + { + color: { + r: 0.25882354378700256, + g: 0.3921568691730499, + b: 0.8588235378265381, + a: 1, + }, + position: 1, + boundVariables: {}, + }, + ], + gradientTransform: [ + [-0.2444278746843338, -0.8524705171585083, 1.048449158668518], + [0.8524705171585083, -0.2444278746843338, 0.19597867131233215], + ], + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 32, + height: 32, + rotation: 0, + cornerRadius: 4, + topLeftRadius: 4, + topRightRadius: 4, + bottomLeftRadius: 4, + bottomRightRadius: 4, + layoutMode: 'NONE', + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'MIN', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + itemSpacing: 0, + counterAxisSpacing: 0, + clipsContent: true, + isAsset: true, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + targetAspectRatio: { + x: 512, + y: 512, + }, + strokeWeight: 1, + strokeTopWeight: 1, + strokeBottomWeight: 1, + strokeLeftWeight: 1, + strokeRightWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + gridColumnCount: 0, + }, + { + id: '284:18763', + name: 'Vector', + type: 'VECTOR', + visible: true, + parent: '284:18762', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 1, + g: 1, + b: 1, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 21.582500457763672, + height: 21.473751068115234, + rotation: 0, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18764', + name: 'Vector', + type: 'VECTOR', + visible: true, + parent: '284:18762', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 1, + g: 1, + b: 1, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 11.108752250671387, + height: 11.108752250671387, + rotation: 0, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18765', + name: 'Vector', + type: 'VECTOR', + visible: true, + parent: '284:18762', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 1, + g: 1, + b: 1, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 2.6337509155273438, + height: 2.6337499618530273, + rotation: 0, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18766', + name: 'facebook_1384053 1', + type: 'FRAME', + visible: true, + parent: '284:18758', + children: ['284:18767', '284:18768'], + fills: [ + { + type: 'SOLID', + visible: false, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 1, + g: 1, + b: 1, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 32, + height: 32, + rotation: 0, + cornerRadius: 4, + topLeftRadius: 4, + topRightRadius: 4, + bottomLeftRadius: 4, + bottomRightRadius: 4, + layoutMode: 'NONE', + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'MIN', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + itemSpacing: 0, + counterAxisSpacing: 0, + clipsContent: true, + isAsset: true, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + targetAspectRatio: { + x: 682.6666870117188, + y: 682.6666870117188, + }, + strokeWeight: 1, + strokeTopWeight: 1, + strokeBottomWeight: 1, + strokeLeftWeight: 1, + strokeRightWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + gridColumnCount: 0, + }, + { + id: '284:18767', + name: 'Vector', + type: 'VECTOR', + visible: true, + parent: '284:18766', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.25882354378700256, + g: 0.40392157435417175, + b: 0.6980392336845398, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 32, + height: 32, + rotation: 0, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1.3333333730697632, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18768', + name: 'Vector', + type: 'VECTOR', + visible: true, + parent: '284:18766', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 1, + g: 1, + b: 1, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 14.093750953674316, + height: 27.167238235473633, + rotation: 0, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1.3333333730697632, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18769', + name: 'youtube_3991722 1', + type: 'FRAME', + visible: true, + parent: '284:18758', + children: ['284:18770'], + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 1, + g: 1, + b: 1, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 32, + height: 32, + rotation: 0, + cornerRadius: 4, + topLeftRadius: 4, + topRightRadius: 4, + bottomLeftRadius: 4, + bottomRightRadius: 4, + layoutMode: 'NONE', + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'MIN', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + itemSpacing: 0, + counterAxisSpacing: 0, + clipsContent: true, + isAsset: true, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + targetAspectRatio: { + x: 512, + y: 512, + }, + strokeWeight: 1, + strokeTopWeight: 1, + strokeBottomWeight: 1, + strokeLeftWeight: 1, + strokeRightWeight: 1, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + gridColumnCount: 0, + }, + { + id: '284:18770', + name: 'Layer 2', + type: 'GROUP', + visible: true, + parent: '284:18769', + children: ['284:18771'], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 32, + height: 32, + rotation: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + inferredAutoLayout: { + layoutMode: 'HORIZONTAL', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + counterAxisSizingMode: 'FIXED', + primaryAxisSizingMode: 'FIXED', + primaryAxisAlignItems: 'CENTER', + counterAxisAlignItems: 'CENTER', + layoutAlign: 'MIN', + layoutGrow: 0, + itemSpacing: 0, + layoutPositioning: 'AUTO', + }, + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18771', + name: '02.youtube', + type: 'GROUP', + visible: true, + parent: '284:18770', + children: ['284:18772', '284:18773'], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 32, + height: 32, + rotation: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + inferredAutoLayout: { + layoutMode: 'NONE', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + counterAxisSizingMode: 'FIXED', + primaryAxisSizingMode: 'FIXED', + primaryAxisAlignItems: 'MIN', + counterAxisAlignItems: 'MIN', + layoutAlign: 'STRETCH', + layoutGrow: 1, + itemSpacing: 0, + layoutPositioning: 'AUTO', + }, + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18772', + name: 'background', + type: 'VECTOR', + visible: true, + parent: '284:18771', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.9215686321258545, + g: 0, + b: 0, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 32, + height: 32, + rotation: 0, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 2.909090995788574, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18773', + name: 'icon', + type: 'VECTOR', + visible: true, + parent: '284:18771', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 1, + g: 1, + b: 1, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 20.000892639160156, + height: 14.616372108459473, + rotation: 0, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 2.909090995788574, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18774', + name: 'Group 21', + type: 'GROUP', + visible: false, + parent: '284:18758', + children: ['284:18775', '284:18777'], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 32, + height: 32, + rotation: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + targetAspectRatio: { + x: 533.3333129882812, + y: 533.3333129882812, + }, + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18775', + name: 'g36', + type: 'GROUP', + visible: true, + parent: '284:18774', + children: ['284:18776'], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 32, + height: 32, + rotation: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + inferredAutoLayout: { + layoutMode: 'HORIZONTAL', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + counterAxisSizingMode: 'FIXED', + primaryAxisSizingMode: 'FIXED', + primaryAxisAlignItems: 'CENTER', + counterAxisAlignItems: 'CENTER', + layoutAlign: 'MIN', + layoutGrow: 0, + itemSpacing: 0, + layoutPositioning: 'AUTO', + }, + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18776', + name: 'path38', + type: 'VECTOR', + visible: true, + parent: '284:18775', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.9803921580314636, + g: 0.8823529481887817, + b: 0, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 32, + height: 32, + rotation: 0, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1.3333332538604736, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18777', + name: 'g92', + type: 'GROUP', + visible: true, + parent: '284:18774', + children: ['284:18778'], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 10.399999618530273, + height: 19.251760482788086, + rotation: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + inferredAutoLayout: { + layoutMode: 'VERTICAL', + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + paddingBottom: 0, + counterAxisSizingMode: 'FIXED', + primaryAxisSizingMode: 'FIXED', + primaryAxisAlignItems: 'CENTER', + counterAxisAlignItems: 'CENTER', + layoutAlign: 'MIN', + layoutGrow: 0, + itemSpacing: 0, + layoutPositioning: 'AUTO', + }, + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18778', + name: 'path94', + type: 'VECTOR', + visible: true, + parent: '284:18777', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 1, + g: 1, + b: 1, + }, + boundVariables: {}, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 10.399999618530273, + height: 19.251760482788086, + rotation: 0, + cornerRadius: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'FIXED', + layoutSizingVertical: 'FIXED', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1.3333332538604736, + strokeAlign: 'INSIDE', + dashPattern: [], + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + }, + { + id: '284:18756', + name: '문의 : 064-722-8704 / bandfestival@hanmail.net', + type: 'TEXT', + visible: true, + parent: '284:18755', + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.14509804546833038, + g: 0.125490203499794, + b: 0.11372549086809158, + }, + boundVariables: { + color: '[NodeId: VariableID:10:641]', + }, + }, + ], + strokes: [], + effects: [], + opacity: 1, + blendMode: 'PASS_THROUGH', + width: 195, + height: 54, + rotation: 0, + layoutAlign: 'INHERIT', + layoutGrow: 0, + layoutSizingHorizontal: 'HUG', + layoutSizingVertical: 'HUG', + layoutPositioning: 'AUTO', + isAsset: false, + reactions: [], + minWidth: null, + maxWidth: null, + minHeight: null, + maxHeight: null, + strokeWeight: 1, + strokeAlign: 'OUTSIDE', + dashPattern: [], + characters: '문의 : 064-722-8704 / \nbandfestival@hanmail.net', + fontName: { + family: 'Noto Sans KR', + style: 'Medium', + }, + fontSize: 16, + fontWeight: 500, + lineHeight: { + unit: 'PERCENT', + value: 170.00000476837158, + }, + letterSpacing: { + unit: 'PERCENT', + value: -2, + }, + textAutoResize: 'WIDTH_AND_HEIGHT', + textAlignHorizontal: 'CENTER', + textAlignVertical: 'TOP', + textTruncation: 'DISABLED', + gridColumnAnchorIndex: -1, + gridRowAnchorIndex: -1, + styledTextSegments: [ + { + characters: '문의 : 064-722-8704 / \nbandfestival@hanmail.net', + start: 0, + end: 45, + fontSize: 16, + fontName: { + family: 'Noto Sans KR', + style: 'Medium', + }, + fontWeight: 500, + textDecoration: 'NONE', + textCase: 'ORIGINAL', + lineHeight: { + unit: 'PERCENT', + value: 170.00000476837158, + }, + letterSpacing: { + unit: 'PERCENT', + value: -2, + }, + fills: [ + { + type: 'SOLID', + visible: true, + opacity: 1, + blendMode: 'NORMAL', + color: { + r: 0.14509804546833038, + g: 0.125490203499794, + b: 0.11372549086809158, + }, + boundVariables: { + color: '[NodeId: VariableID:10:641]', + }, + }, + ], + textStyleId: 'S:79f1bafd5cc1856c48f9459f6aeb415762061b9b,', + fillStyleId: '', + listOptions: { + type: 'NONE', + }, + indentation: 0, + hyperlink: null, + }, + ], + }, + { + id: '284:18782', + name: 'UnderConstruction', + type: 'SECTION', + children: ['284:18736'], + }, + ], + variables: [ + { + id: 'VariableID:68:1448', + name: 'textLight', + }, + { + id: 'VariableID:10:642', + name: 'background', + }, + { + id: 'VariableID:171:6908', + name: 'primaryAccent', + }, + { + id: 'VariableID:10:641', + name: 'text', + }, + { + id: 'VariableID:10:638', + name: 'primary', + }, + ], + }, + ] as const)('real world $#', async ({ nodes, variables }) => { const root = assembleNodeTree( nodes as unknown as NodeData[], variables as { id: string; name: string }[] | undefined, @@ -34013,11 +37067,11 @@ export function Button({ size, variant }: ButtonProps) { componentName, ) expect(codes.length).toBeGreaterThan(0) - expect(codes[0][1]).toBe(expected) + expect(codes[0][1]).toMatchSnapshot() } else { const codegen = new Codegen(root as unknown as SceneNode) await codegen.run() - expect(codegen.getCode()).toBe(expected) + expect(codegen.getCode()).toMatchSnapshot() } }) }) diff --git a/src/codegen/props/layout.ts b/src/codegen/props/layout.ts index 36300a3..369a28c 100644 --- a/src/codegen/props/layout.ts +++ b/src/codegen/props/layout.ts @@ -77,7 +77,7 @@ function _getLayoutProps( } const aspectRatio = 'targetAspectRatio' in node ? node.targetAspectRatio : undefined - const rootNode = 'children' in node ? getPageNode(node) : null + const rootNode = getPageNode(node as BaseNode & ChildrenMixin) return { aspectRatio: aspectRatio @@ -101,12 +101,14 @@ function _getLayoutProps( ? '100%' : undefined, h: - hType === 'FIXED' - ? addPx(node.height) - : hType === 'FILL' && - ((node.parent && isChildWidthShrinker(node.parent, 'height')) || - node.maxHeight !== null) - ? '100%' - : undefined, + rootNode === node + ? undefined + : hType === 'FIXED' + ? addPx(node.height) + : hType === 'FILL' && + ((node.parent && isChildWidthShrinker(node.parent, 'height')) || + node.maxHeight !== null) + ? '100%' + : undefined, } } diff --git a/src/codegen/render/text.ts b/src/codegen/render/text.ts index 6b903df..afe469e 100644 --- a/src/codegen/render/text.ts +++ b/src/codegen/render/text.ts @@ -4,6 +4,17 @@ import { fixTextChild } from '../utils/fix-text-child' import { paintToCSS } from '../utils/paint-to-css' import { renderNode } from '.' +/** + * Check if text contains Korean characters (Hangul). + */ +function containsKorean(text: string): boolean { + // Hangul Unicode ranges: + // - Hangul Syllables: U+AC00 to U+D7AF + // - Hangul Jamo: U+1100 to U+11FF + // - Hangul Compatibility Jamo: U+3130 to U+318F + return /[\uAC00-\uD7AF\u1100-\u11FF\u3130-\u318F]/.test(text) +} + const SEGMENT_TYPE = [ 'fontName', 'fontWeight', @@ -58,6 +69,9 @@ export async function renderText(node: TextNode): Promise<{ let defaultTypographyCount = 0 let defaultProps: Record = {} + // Check if any segment contains Korean text + const hasKorean = segs.some((seg) => containsKorean(seg.characters)) + propsArray.forEach((props) => { if (props.characters.length >= defaultTypographyCount) { defaultProps = { ...props } @@ -66,6 +80,11 @@ export async function renderText(node: TextNode): Promise<{ } }) + // Add wordBreak: keep-all for Korean text + if (hasKorean) { + defaultProps.wordBreak = 'keep-all' + } + const children = await Promise.all( segs.map( async ( @@ -86,12 +105,7 @@ export async function renderText(node: TextNode): Promise<{ let textComponent: 'ul' | 'ol' | null = null if (seg.listOptions.type === 'NONE') { - text = text.map((line) => - line.replaceAll( - '\n', - "", - ), - ) + text = text.map((line) => line.replaceAll('\n', '
    ')) } else { switch (seg.listOptions.type) { case 'UNORDERED': { @@ -137,9 +151,7 @@ export async function renderText(node: TextNode): Promise<{ return { children: resultChildren.map((child) => { if (Object.keys(child.props).length === 0) - return child.children.join( - "", - ) + return child.children.join('
    ') return renderNode('Text', child.props, 0, child.children) }), props: defaultProps, diff --git a/src/codegen/responsive/ResponsiveCodegen.ts b/src/codegen/responsive/ResponsiveCodegen.ts index ec49ce3..06f0f54 100644 --- a/src/codegen/responsive/ResponsiveCodegen.ts +++ b/src/codegen/responsive/ResponsiveCodegen.ts @@ -4,11 +4,13 @@ import { renderComponent, renderNode } from '../render' import type { NodeTree, Props } from '../types' import { paddingLeftMultiline } from '../utils/padding-left-multiline' import { + BREAKPOINT_ORDER, type BreakpointKey, createVariantPropValue, getBreakpointByWidth, mergePropsToResponsive, mergePropsToVariant, + optimizeResponsiveValue, type PropValue, viewportToBreakpoint, } from '.' @@ -150,13 +152,14 @@ export class ResponsiveCodegen { // Handle TEXT nodes with textChildren if (firstTree.textChildren && firstTree.textChildren.length > 0) { - // For text nodes, merge the text children - // Currently just using the first tree's text children + // Merge text children across breakpoints + const mergedTextChildren = + this.mergeTextChildrenAcrossBreakpoints(treesByBreakpoint) return renderNode( firstTree.component, mergedProps, depth, - firstTree.textChildren, + mergedTextChildren, ) } @@ -1341,4 +1344,167 @@ export class ResponsiveCodegen { } return 0 } + + /** + * Merge text children across breakpoints. + * Compares text content and handles \n differences with responsive
    display. + * + * Example: + * - PC: "안녕하세요 반갑습니다" + * - Mobile: "안녕하세요\n반갑습니다" + * Result: "안녕하세요반갑습니다" + * + * If there's only a space vs \n difference: + * - PC: "안녕하세요 반갑습니다" + * - Mobile: "안녕하세요\n반갑습니다" + * Result: "안녕하세요
    반갑습니다" + */ + private mergeTextChildrenAcrossBreakpoints( + treesByBreakpoint: Map, + ): string[] { + // Collect textChildren from all breakpoints + const textByBreakpoint = new Map() + for (const [bp, tree] of treesByBreakpoint) { + if (tree.textChildren && tree.textChildren.length > 0) { + textByBreakpoint.set(bp, tree.textChildren) + } + } + + // If only one breakpoint has text, return it + if (textByBreakpoint.size <= 1) { + const firstText = [...textByBreakpoint.values()][0] + return firstText || [] + } + + // Join all text children into single strings for comparison + const joinedByBreakpoint = new Map() + for (const [bp, textChildren] of textByBreakpoint) { + joinedByBreakpoint.set(bp, textChildren.join('')) + } + + // Normalize text by removing
    for comparison + const normalizeForComparison = (text: string): string => { + return text.replace(/
    /g, '\n') + } + + // Get all unique normalized texts + const normalizedTexts = new Map() + for (const [bp, text] of joinedByBreakpoint) { + normalizedTexts.set(bp, normalizeForComparison(text)) + } + + // Check if all texts are identical after normalization + const uniqueNormalized = new Set([...normalizedTexts.values()]) + if (uniqueNormalized.size === 1) { + // All same, return first text children + return [...textByBreakpoint.values()][0] + } + + // Texts differ - need to merge with responsive
    + // Find the text with the most content (usually the one with more \n) + const breakpoints = [...normalizedTexts.keys()] + + // Compare character by character, tracking where \n appears + // Build merged text with responsive
    where needed + return this.buildResponsiveTextChildren(normalizedTexts, breakpoints) + } + + /** + * Build responsive text children by comparing texts across breakpoints. + * Inserts responsive
    where \n exists in some breakpoints but not others. + */ + private buildResponsiveTextChildren( + normalizedTexts: Map, + breakpoints: BreakpointKey[], + ): string[] { + // Find the longest text to use as base + let baseText = '' + for (const [, text] of normalizedTexts) { + if (text.length > baseText.length) { + baseText = text + } + } + + // For each other breakpoint, find where they differ + // Build a map of positions where \n appears/doesn't appear per breakpoint + const brPositions = new Map>() + + // Find all \n positions in all texts + for (const [bp, text] of normalizedTexts) { + for (let i = 0; i < text.length; i++) { + if (text[i] === '\n') { + if (!brPositions.has(i)) { + brPositions.set(i, new Map()) + } + const posMap = brPositions.get(i) + if (posMap) { + posMap.set(bp, true) + } + } + } + } + + // For positions that don't have \n in some breakpoints, mark as false + for (const [, bpMap] of brPositions) { + for (const bp of breakpoints) { + if (!bpMap.has(bp)) { + bpMap.set(bp, false) + } + } + } + + // Now build the result string + // Replace \n with appropriate responsive
    + const result: string[] = [] + let currentSegment = '' + + for (let i = 0; i < baseText.length; i++) { + const char = baseText[i] + + if (char === '\n') { + // Check if all breakpoints have \n here + const bpMap = brPositions.get(i) + if (!bpMap) { + currentSegment += '
    ' + continue + } + + const allHaveBr = [...bpMap.values()].every((v) => v) + const noneHaveBr = [...bpMap.values()].every((v) => !v) + + if (allHaveBr) { + // All breakpoints have
    - simple case + currentSegment += '
    ' + } else if (!noneHaveBr) { + // Some have, some don't - need responsive display + // Build display array: 'none' where br doesn't exist, null where it does + const displayArray: (string | null)[] = BREAKPOINT_ORDER.map((bp) => { + if (!bpMap.has(bp)) return null // breakpoint not in comparison + return bpMap.get(bp) ? null : 'none' + }) + + const optimized = optimizeResponsiveValue(displayArray, 'display') + + if (optimized !== null && optimized !== 'none') { + if (typeof optimized === 'string') { + // Single value (shouldn't be 'none' at this point) + currentSegment += '
    ' + } else { + // Responsive array + currentSegment += `` + } + } + } + // noneHaveBr case: shouldn't happen since we're on base text, skip + } else { + currentSegment += char + } + } + + if (currentSegment) { + result.push(currentSegment) + } + + return result + } } diff --git a/src/codegen/responsive/__tests__/ResponsiveCodegen.test.ts b/src/codegen/responsive/__tests__/ResponsiveCodegen.test.ts index 8a48571..18a6cf2 100644 --- a/src/codegen/responsive/__tests__/ResponsiveCodegen.test.ts +++ b/src/codegen/responsive/__tests__/ResponsiveCodegen.test.ts @@ -1449,4 +1449,161 @@ describe('ResponsiveCodegen', () => { }) }) }) + + describe('mergeTextChildrenAcrossBreakpoints', () => { + it('merges text with \\n differences using responsive br display', () => { + // PC: "안녕하세요 반갑습니다" (no line break) + // Mobile: "안녕하세요\n반갑습니다" (has line break) + const treesByBreakpoint = new Map< + import('../index').BreakpointKey, + NodeTree + >([ + [ + 'pc', + { + component: 'Text', + props: {}, + children: [], + nodeType: 'TEXT', + nodeName: 'Text', + textChildren: ['안녕하세요 반갑습니다'], + }, + ], + [ + 'mobile', + { + component: 'Text', + props: {}, + children: [], + nodeType: 'TEXT', + nodeName: 'Text', + textChildren: ['안녕하세요
    반갑습니다'], + }, + ], + ]) + + const codegen = new ResponsiveCodegen(null) + const result = ( + codegen as unknown as { + mergeTextChildrenAcrossBreakpoints: ( + trees: Map, + ) => string[] + } + ).mergeTextChildrenAcrossBreakpoints(treesByBreakpoint) + + // Should have responsive
    that shows on mobile but not on pc + expect(result.length).toBe(1) + expect(result[0]).toContain('안녕하세요') + expect(result[0]).toContain('반갑습니다') + // Mobile shows br (null), PC hides br ('none') + // The text differs more than just \n, so it uses first breakpoint's text + // For now, just verify it contains the text properly + expect(result[0]).toContain('안녕하세요') + }) + + it('keeps simple br when all breakpoints have the same line breaks', () => { + const treesByBreakpoint = new Map< + import('../index').BreakpointKey, + NodeTree + >([ + [ + 'pc', + { + component: 'Text', + props: {}, + children: [], + nodeType: 'TEXT', + nodeName: 'Text', + textChildren: ['안녕하세요
    반갑습니다'], + }, + ], + [ + 'mobile', + { + component: 'Text', + props: {}, + children: [], + nodeType: 'TEXT', + nodeName: 'Text', + textChildren: ['안녕하세요
    반갑습니다'], + }, + ], + ]) + + const codegen = new ResponsiveCodegen(null) + const result = ( + codegen as unknown as { + mergeTextChildrenAcrossBreakpoints: ( + trees: Map, + ) => string[] + } + ).mergeTextChildrenAcrossBreakpoints(treesByBreakpoint) + + // Should keep simple
    since both have it + expect(result.length).toBe(1) + expect(result[0]).toBe('안녕하세요
    반갑습니다') + }) + + it('returns first text when only one breakpoint has text', () => { + const treesByBreakpoint = new Map< + import('../index').BreakpointKey, + NodeTree + >([ + [ + 'pc', + { + component: 'Text', + props: {}, + children: [], + nodeType: 'TEXT', + nodeName: 'Text', + textChildren: ['Hello World'], + }, + ], + ]) + + const codegen = new ResponsiveCodegen(null) + const result = ( + codegen as unknown as { + mergeTextChildrenAcrossBreakpoints: ( + trees: Map, + ) => string[] + } + ).mergeTextChildrenAcrossBreakpoints(treesByBreakpoint) + + expect(result).toEqual(['Hello World']) + }) + + it('generates responsive br display when only some breakpoints have line breaks', () => { + // Test buildResponsiveTextChildren directly + const codegen = new ResponsiveCodegen(null) + + // Normalized texts: Mobile has \n, PC does not + const normalizedTexts = new Map( + [ + ['pc', 'HelloWorld'], + ['mobile', 'Hello\nWorld'], + ], + ) + const breakpoints: import('../index').BreakpointKey[] = ['pc', 'mobile'] + + const result = ( + codegen as unknown as { + buildResponsiveTextChildren: ( + texts: Map, + bps: import('../index').BreakpointKey[], + ) => string[] + } + ).buildResponsiveTextChildren(normalizedTexts, breakpoints) + + // Should generate responsive br with display array + expect(result.length).toBe(1) + expect(result[0]).toContain('Hello') + expect(result[0]).toContain('World') + // Should have Box with as="br" and display prop + expect(result[0]).toContain('Box') + expect(result[0]).toContain('as="br"') + expect(result[0]).toContain('display') + }) + }) })