@nexus-cross/design-system 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/chunks/{chunk-D6FII7HW.js → chunk-BBLBTOP4.js} +8 -5
  2. package/dist/chunks/chunk-GMGG4VZM.mjs +5 -0
  3. package/dist/chunks/chunk-N75GAGAG.js +7 -0
  4. package/dist/chunks/{chunk-54RBL7J4.mjs → chunk-UKRU46PH.mjs} +8 -5
  5. package/dist/index.js +3 -3
  6. package/dist/index.mjs +1 -1
  7. package/dist/schemas/_all.json +518 -21
  8. package/dist/schemas/button.json +18 -0
  9. package/dist/schemas/checkBox.json +19 -1
  10. package/dist/schemas/chip.json +7 -1
  11. package/dist/schemas/counter.json +3 -0
  12. package/dist/schemas/divider.json +3 -0
  13. package/dist/schemas/drawer.json +20 -1
  14. package/dist/schemas/drawerClose.json +24 -0
  15. package/dist/schemas/drawerDescription.json +20 -0
  16. package/dist/schemas/drawerTitle.json +20 -0
  17. package/dist/schemas/drawerTrigger.json +24 -0
  18. package/dist/schemas/marquee.json +3 -0
  19. package/dist/schemas/modalCall.json +80 -2
  20. package/dist/schemas/modalTemplate.json +4 -1
  21. package/dist/schemas/numberInput.json +19 -1
  22. package/dist/schemas/radioGroup.json +7 -0
  23. package/dist/schemas/radioItem.json +7 -0
  24. package/dist/schemas/skeleton.json +3 -0
  25. package/dist/schemas/spinner.json +7 -0
  26. package/dist/schemas/switch.json +12 -1
  27. package/dist/schemas/textArea.json +33 -0
  28. package/dist/schemas/textInput.json +41 -1
  29. package/dist/schemas/toastOptions.json +81 -0
  30. package/dist/schemas/toaster.json +46 -1
  31. package/dist/schemas/virtualGrid.json +12 -9
  32. package/dist/schemas/virtualList.json +5 -2
  33. package/dist/schemas.d.mts +420 -56
  34. package/dist/schemas.d.ts +420 -56
  35. package/dist/schemas.js +154 -19
  36. package/dist/schemas.mjs +150 -20
  37. package/dist/styles/layer.js +2 -2
  38. package/dist/styles/layer.mjs +1 -1
  39. package/dist/styles.css +28 -30
  40. package/dist/styles.js +2 -2
  41. package/dist/styles.layered.css +28 -30
  42. package/dist/styles.mjs +1 -1
  43. package/dist/text-input.d.mts +1 -1
  44. package/dist/text-input.d.ts +1 -1
  45. package/dist/text-input.js +3 -3
  46. package/dist/text-input.mjs +1 -1
  47. package/package.json +2 -2
  48. package/dist/chunks/chunk-7AISZYWL.js +0 -7
  49. package/dist/chunks/chunk-V5OTJP6H.mjs +0 -5
@@ -58,6 +58,24 @@
58
58
  "type": "boolean",
59
59
  "description": "비활성 (aria-disabled 자동)"
60
60
  },
61
+ "children": {
62
+ "description": "버튼 내용 (ReactNode)"
63
+ },
64
+ "onClick": {
65
+ "description": "클릭 이벤트 핸들러"
66
+ },
67
+ "type": {
68
+ "type": "string",
69
+ "enum": [
70
+ "button",
71
+ "submit",
72
+ "reset"
73
+ ],
74
+ "description": "HTML button type (기본: button)"
75
+ },
76
+ "style": {
77
+ "description": "인라인 스타일 (CSSProperties)"
78
+ },
61
79
  "className": {
62
80
  "type": "string",
63
81
  "description": "스타일 오버라이드"
@@ -36,14 +36,32 @@
36
36
  },
37
37
  "readOnly": {
38
38
  "type": "boolean",
39
- "description": "읽기 전용. 네이티브 input readOnly와 동일하게 체크 상태 변경 불가"
39
+ "description": "읽기 전용"
40
40
  },
41
41
  "label": {
42
42
  "description": "라벨 텍스트 (ReactNode)"
43
43
  },
44
+ "children": {
45
+ "description": "라벨 대체 콘텐츠 (ReactNode)"
46
+ },
47
+ "name": {
48
+ "type": "string",
49
+ "description": "form 필드명"
50
+ },
51
+ "id": {
52
+ "type": "string",
53
+ "description": "요소 ID"
54
+ },
55
+ "value": {
56
+ "type": "string",
57
+ "description": "form 전송 시 값"
58
+ },
44
59
  "onCheckedChange": {
45
60
  "description": "체크 상태 변경 콜백 (checked: boolean) => void"
46
61
  },
62
+ "onChange": {
63
+ "description": "네이티브 change 이벤트 핸들러"
64
+ },
47
65
  "className": {
48
66
  "type": "string",
49
67
  "description": "스타일 오버라이드"
@@ -33,8 +33,14 @@
33
33
  "type": "boolean",
34
34
  "description": "비활성 (aria-disabled 자동)"
35
35
  },
36
+ "children": {
37
+ "description": "칩 내용 (ReactNode)"
38
+ },
36
39
  "onClose": {
37
- "description": "닫기 버튼 클릭 콜백 () => void"
40
+ "description": "닫기 버튼 클릭 콜백 (e: MouseEvent) => void. 전달 시 X 버튼 자동 표시"
41
+ },
42
+ "onClick": {
43
+ "description": "클릭 이벤트 핸들러"
38
44
  },
39
45
  "className": {
40
46
  "type": "string",
@@ -41,6 +41,9 @@
41
41
  "onEnd": {
42
42
  "description": "카운트 완료 콜백 () => void"
43
43
  },
44
+ "style": {
45
+ "description": "인라인 스타일 (CSSProperties)"
46
+ },
44
47
  "className": {
45
48
  "type": "string",
46
49
  "description": "스타일 오버라이드"
@@ -27,6 +27,9 @@
27
27
  "type": "string",
28
28
  "description": "커스텀 색상 (CSS 값)"
29
29
  },
30
+ "style": {
31
+ "description": "인라인 스타일 (CSSProperties)"
32
+ },
30
33
  "className": {
31
34
  "type": "string",
32
35
  "description": "스타일 오버라이드"
@@ -15,8 +15,27 @@
15
15
  "default": "bottom",
16
16
  "description": "방향"
17
17
  },
18
+ "open": {
19
+ "type": "boolean",
20
+ "description": "열림 상태 (제어 모드)"
21
+ },
22
+ "onOpenChange": {
23
+ "description": "열림 상태 변경 콜백 (open: boolean) => void"
24
+ },
25
+ "dismissible": {
26
+ "type": "boolean",
27
+ "description": "스와이프/외부 클릭으로 닫기 허용 (기본 true)"
28
+ },
29
+ "modal": {
30
+ "type": "boolean",
31
+ "description": "모달 모드 (기본 true). false면 배경과 상호작용 가능"
32
+ },
33
+ "shouldScaleBackground": {
34
+ "type": "boolean",
35
+ "description": "배경 축소 효과 (기본 false)"
36
+ },
18
37
  "children": {
19
- "description": "Drawer 하위 컴포넌트 (ReactNode)"
38
+ "description": "Drawer 하위 컴포넌트 (ReactNode, 필수)"
20
39
  }
21
40
  },
22
41
  "additionalProperties": false,
@@ -0,0 +1,24 @@
1
+ {
2
+ "$ref": "#/definitions/drawerClosePropsSchema",
3
+ "definitions": {
4
+ "drawerClosePropsSchema": {
5
+ "type": "object",
6
+ "properties": {
7
+ "asChild": {
8
+ "type": "boolean",
9
+ "description": "자식 요소로 렌더링"
10
+ },
11
+ "children": {
12
+ "description": "닫기 요소 (ReactNode, 필수)"
13
+ },
14
+ "className": {
15
+ "type": "string",
16
+ "description": "스타일 오버라이드"
17
+ }
18
+ },
19
+ "additionalProperties": false,
20
+ "description": "Drawer 닫기 버튼."
21
+ }
22
+ },
23
+ "$schema": "http://json-schema.org/draft-07/schema#"
24
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "$ref": "#/definitions/drawerDescriptionPropsSchema",
3
+ "definitions": {
4
+ "drawerDescriptionPropsSchema": {
5
+ "type": "object",
6
+ "properties": {
7
+ "children": {
8
+ "description": "설명 텍스트 (ReactNode, 필수)"
9
+ },
10
+ "className": {
11
+ "type": "string",
12
+ "description": "스타일 오버라이드"
13
+ }
14
+ },
15
+ "additionalProperties": false,
16
+ "description": "Drawer 설명."
17
+ }
18
+ },
19
+ "$schema": "http://json-schema.org/draft-07/schema#"
20
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "$ref": "#/definitions/drawerTitlePropsSchema",
3
+ "definitions": {
4
+ "drawerTitlePropsSchema": {
5
+ "type": "object",
6
+ "properties": {
7
+ "children": {
8
+ "description": "제목 텍스트 (ReactNode, 필수)"
9
+ },
10
+ "className": {
11
+ "type": "string",
12
+ "description": "스타일 오버라이드"
13
+ }
14
+ },
15
+ "additionalProperties": false,
16
+ "description": "Drawer 제목 (접근성용 필수)."
17
+ }
18
+ },
19
+ "$schema": "http://json-schema.org/draft-07/schema#"
20
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "$ref": "#/definitions/drawerTriggerPropsSchema",
3
+ "definitions": {
4
+ "drawerTriggerPropsSchema": {
5
+ "type": "object",
6
+ "properties": {
7
+ "asChild": {
8
+ "type": "boolean",
9
+ "description": "자식 요소로 렌더링"
10
+ },
11
+ "children": {
12
+ "description": "트리거 요소 (ReactNode, 필수)"
13
+ },
14
+ "className": {
15
+ "type": "string",
16
+ "description": "스타일 오버라이드"
17
+ }
18
+ },
19
+ "additionalProperties": false,
20
+ "description": "Drawer 열기 트리거."
21
+ }
22
+ },
23
+ "$schema": "http://json-schema.org/draft-07/schema#"
24
+ }
@@ -33,6 +33,9 @@
33
33
  "children": {
34
34
  "description": "반복 표시할 콘텐츠 (ReactNode, 필수)"
35
35
  },
36
+ "style": {
37
+ "description": "인라인 스타일 (CSSProperties)"
38
+ },
36
39
  "className": {
37
40
  "type": "string",
38
41
  "description": "스타일 오버라이드"
@@ -5,16 +5,94 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "component": {
8
- "description": "모달 컴포넌트 (필수)"
8
+ "description": "모달 컴포넌트 (필수). close/resolve를 자동으로 props로 받음"
9
9
  },
10
10
  "props": {
11
11
  "type": "object",
12
12
  "additionalProperties": {},
13
13
  "description": "컴포넌트에 전달할 props"
14
+ },
15
+ "id": {
16
+ "type": "string",
17
+ "description": "모달 ID (중복 체크 시 사용)"
18
+ },
19
+ "layout": {
20
+ "type": "string",
21
+ "enum": [
22
+ "default",
23
+ "bottom-sheet",
24
+ "slide-left",
25
+ "slide-right",
26
+ "full-page",
27
+ "full-page-reverse",
28
+ "draggable"
29
+ ],
30
+ "description": "레이아웃"
31
+ },
32
+ "animation": {
33
+ "type": "object",
34
+ "properties": {
35
+ "name": {
36
+ "type": "string",
37
+ "description": "애니메이션 이름"
38
+ },
39
+ "mobile": {
40
+ "type": "string",
41
+ "description": "모바일용 애니메이션 이름"
42
+ },
43
+ "delay": {
44
+ "type": "number",
45
+ "description": "지연 (ms)"
46
+ },
47
+ "duration": {
48
+ "type": "number",
49
+ "description": "지속 시간 (ms)"
50
+ },
51
+ "timingFunc": {
52
+ "type": "string",
53
+ "description": "타이밍 함수"
54
+ },
55
+ "leaveTimingFunc": {
56
+ "type": "string",
57
+ "description": "퇴장 타이밍 함수"
58
+ }
59
+ },
60
+ "additionalProperties": false,
61
+ "description": "모달 애니메이션"
62
+ },
63
+ "scrollEnable": {
64
+ "type": "boolean",
65
+ "description": "배경 스크롤 허용"
66
+ },
67
+ "isToggle": {
68
+ "type": "boolean",
69
+ "description": "토글 모드 (같은 모달 재호출 시 닫기)"
70
+ },
71
+ "isAlone": {
72
+ "type": "boolean",
73
+ "description": "단독 모드 (기존 모달 모두 닫고 열기)"
74
+ },
75
+ "duplicateCheck": {
76
+ "type": "boolean",
77
+ "description": "동일 컴포넌트 중복 열기 방지"
78
+ },
79
+ "disableEscapeKeyPress": {
80
+ "type": "boolean",
81
+ "description": "ESC 키로 닫기 비활성화"
82
+ },
83
+ "componentName": {
84
+ "type": "string",
85
+ "description": "모달 식별 이름 (중복 체크, 모달 검색 시 사용)"
86
+ },
87
+ "onOpen": {
88
+ "description": "모달 열릴 때 콜백"
89
+ },
90
+ "onClose": {
91
+ "description": "모달 닫힐 때 콜백"
14
92
  }
15
93
  },
16
94
  "additionalProperties": false,
17
- "description": "modal() 함수 호출 형태. component는 close/resolve를 자동으로 props로 받는다."
95
+ "description": "modal() 함수 호출 옵션. component는 close/resolve를 자동으로 props로 받는다."
18
96
  }
19
97
  },
20
98
  "$schema": "http://json-schema.org/draft-07/schema#"
@@ -76,7 +76,7 @@
76
76
  }
77
77
  },
78
78
  "additionalProperties": false,
79
- "description": "모달 애니메이션 (ModalTemplatePropsType)"
79
+ "description": "모달 애니메이션"
80
80
  },
81
81
  "enableDrag": {
82
82
  "type": "boolean",
@@ -87,6 +87,9 @@
87
87
  "type": "string",
88
88
  "description": "드래그 위치 저장 키"
89
89
  },
90
+ "close": {
91
+ "description": "모달 닫기 함수 (isAnimation?: boolean) => void (자동 주입)"
92
+ },
90
93
  "children": {
91
94
  "description": "모달 본문 (ReactNode, 필수)"
92
95
  },
@@ -55,15 +55,33 @@
55
55
  },
56
56
  "readOnly": {
57
57
  "type": "boolean",
58
- "description": "읽기 전용. 입력·스핀 버튼으로 값 변경 불가(스핀 버튼은 숨김)"
58
+ "description": "읽기 전용 (스핀 버튼 숨김 동작 포함)"
59
59
  },
60
60
  "placeholder": {
61
61
  "type": "string",
62
62
  "description": "플레이스홀더"
63
63
  },
64
+ "name": {
65
+ "type": "string",
66
+ "description": "form 필드명"
67
+ },
68
+ "id": {
69
+ "type": "string",
70
+ "description": "요소 ID"
71
+ },
72
+ "autoFocus": {
73
+ "type": "boolean",
74
+ "description": "자동 포커스"
75
+ },
64
76
  "onValueChange": {
65
77
  "description": "값 변경 콜백 (value: number | undefined) => void"
66
78
  },
79
+ "onBlur": {
80
+ "description": "포커스 해제 콜백"
81
+ },
82
+ "onFocus": {
83
+ "description": "포커스 콜백"
84
+ },
67
85
  "className": {
68
86
  "type": "string",
69
87
  "description": "스타일 오버라이드"
@@ -38,10 +38,17 @@
38
38
  "type": "boolean",
39
39
  "description": "비활성"
40
40
  },
41
+ "children": {
42
+ "description": "RadioItem 목록 (ReactNode, 필수)"
43
+ },
41
44
  "aria-label": {
42
45
  "type": "string",
43
46
  "description": "접근성 라벨"
44
47
  },
48
+ "aria-labelledby": {
49
+ "type": "string",
50
+ "description": "접근성 라벨 참조 ID"
51
+ },
45
52
  "onValueChange": {
46
53
  "description": "값 변경 콜백 (value: string) => void"
47
54
  },
@@ -19,9 +19,16 @@
19
19
  "label": {
20
20
  "description": "라벨 텍스트 (ReactNode)"
21
21
  },
22
+ "children": {
23
+ "description": "라벨 대체 콘텐츠 (ReactNode)"
24
+ },
22
25
  "disabled": {
23
26
  "type": "boolean",
24
27
  "description": "비활성"
28
+ },
29
+ "className": {
30
+ "type": "string",
31
+ "description": "스타일 오버라이드"
25
32
  }
26
33
  },
27
34
  "required": [
@@ -35,6 +35,9 @@
35
35
  "children": {
36
36
  "description": "내부 콘텐츠 (로딩 완료 시 표시, 실제 크기 유지용)"
37
37
  },
38
+ "style": {
39
+ "description": "인라인 스타일 (CSSProperties)"
40
+ },
38
41
  "className": {
39
42
  "type": "string",
40
43
  "description": "스타일 오버라이드"
@@ -9,11 +9,18 @@
9
9
  "default": 20,
10
10
  "description": "px 크기"
11
11
  },
12
+ "color": {
13
+ "type": "string",
14
+ "description": "색상 (CSS color 값, 기본 currentColor)"
15
+ },
12
16
  "aria-label": {
13
17
  "type": "string",
14
18
  "default": "Loading",
15
19
  "description": "접근성 라벨"
16
20
  },
21
+ "style": {
22
+ "description": "인라인 스타일 (CSSProperties)"
23
+ },
17
24
  "className": {
18
25
  "type": "string",
19
26
  "description": "색상 등 오버라이드"
@@ -23,11 +23,22 @@
23
23
  },
24
24
  "readOnly": {
25
25
  "type": "boolean",
26
- "description": "읽기 전용. 네이티브 input readOnly와 동일하게 on/off 상태 변경 불가"
26
+ "description": "읽기 전용"
27
+ },
28
+ "name": {
29
+ "type": "string",
30
+ "description": "form 필드명"
31
+ },
32
+ "id": {
33
+ "type": "string",
34
+ "description": "요소 ID"
27
35
  },
28
36
  "onCheckedChange": {
29
37
  "description": "토글 상태 변경 콜백 (checked: boolean) => void"
30
38
  },
39
+ "onChange": {
40
+ "description": "네이티브 change 이벤트 핸들러 (ChangeEvent)"
41
+ },
31
42
  "className": {
32
43
  "type": "string",
33
44
  "description": "스타일 오버라이드"
@@ -28,9 +28,42 @@
28
28
  "type": "boolean",
29
29
  "description": "비활성"
30
30
  },
31
+ "readOnly": {
32
+ "type": "boolean",
33
+ "description": "읽기 전용"
34
+ },
35
+ "value": {
36
+ "type": "string",
37
+ "description": "입력값 (제어 모드)"
38
+ },
39
+ "defaultValue": {
40
+ "type": "string",
41
+ "description": "초기값 (비제어 모드)"
42
+ },
43
+ "name": {
44
+ "type": "string",
45
+ "description": "form 필드명"
46
+ },
47
+ "id": {
48
+ "type": "string",
49
+ "description": "요소 ID"
50
+ },
51
+ "autoFocus": {
52
+ "type": "boolean",
53
+ "description": "자동 포커스"
54
+ },
31
55
  "onValueChange": {
32
56
  "description": "값 변경 콜백 (value: string) => void"
33
57
  },
58
+ "onChange": {
59
+ "description": "네이티브 change 이벤트 핸들러"
60
+ },
61
+ "onBlur": {
62
+ "description": "포커스 해제 콜백"
63
+ },
64
+ "onFocus": {
65
+ "description": "포커스 콜백"
66
+ },
34
67
  "className": {
35
68
  "type": "string",
36
69
  "description": "스타일 오버라이드"
@@ -7,7 +7,6 @@
7
7
  "size": {
8
8
  "type": "string",
9
9
  "enum": [
10
- "sm",
11
10
  "md",
12
11
  "lg",
13
12
  "xl"
@@ -51,9 +50,50 @@
51
50
  "type": "boolean",
52
51
  "description": "비활성"
53
52
  },
53
+ "readOnly": {
54
+ "type": "boolean",
55
+ "description": "읽기 전용"
56
+ },
57
+ "value": {
58
+ "type": "string",
59
+ "description": "입력값 (제어 모드)"
60
+ },
61
+ "defaultValue": {
62
+ "type": "string",
63
+ "description": "초기값 (비제어 모드)"
64
+ },
65
+ "type": {
66
+ "type": "string",
67
+ "description": "input type (text, password, email, url 등)"
68
+ },
69
+ "name": {
70
+ "type": "string",
71
+ "description": "form 필드명"
72
+ },
73
+ "id": {
74
+ "type": "string",
75
+ "description": "요소 ID (label htmlFor 연결용)"
76
+ },
77
+ "autoFocus": {
78
+ "type": "boolean",
79
+ "description": "자동 포커스"
80
+ },
81
+ "autoComplete": {
82
+ "type": "string",
83
+ "description": "자동완성 힌트 (on, off, email 등)"
84
+ },
54
85
  "onValueChange": {
55
86
  "description": "값 변경 콜백 (value: string) => void"
56
87
  },
88
+ "onChange": {
89
+ "description": "네이티브 change 이벤트 핸들러"
90
+ },
91
+ "onBlur": {
92
+ "description": "포커스 해제 콜백"
93
+ },
94
+ "onFocus": {
95
+ "description": "포커스 콜백"
96
+ },
57
97
  "className": {
58
98
  "type": "string",
59
99
  "description": "스타일 오버라이드"
@@ -0,0 +1,81 @@
1
+ {
2
+ "$ref": "#/definitions/toastOptionsSchema",
3
+ "definitions": {
4
+ "toastOptionsSchema": {
5
+ "type": "object",
6
+ "properties": {
7
+ "description": {
8
+ "description": "토스트 부제목 (ReactNode)"
9
+ },
10
+ "duration": {
11
+ "type": "number",
12
+ "description": "자동 닫힘 시간 (ms). 기본 4000"
13
+ },
14
+ "icon": {
15
+ "description": "커스텀 아이콘 (ReactNode)"
16
+ },
17
+ "action": {
18
+ "description": "액션 버튼. { label: ReactNode, onClick: () => void }"
19
+ },
20
+ "cancel": {
21
+ "description": "취소 버튼. { label: ReactNode, onClick: () => void }"
22
+ },
23
+ "closeButton": {
24
+ "type": "boolean",
25
+ "description": "닫기(X) 버튼 표시"
26
+ },
27
+ "dismissible": {
28
+ "type": "boolean",
29
+ "description": "스와이프/클릭으로 닫기 가능 여부"
30
+ },
31
+ "richColors": {
32
+ "type": "boolean",
33
+ "description": "success/error/warning/info에 강한 색상 적용"
34
+ },
35
+ "invert": {
36
+ "type": "boolean",
37
+ "description": "색상 반전 (다크↔라이트)"
38
+ },
39
+ "position": {
40
+ "type": "string",
41
+ "enum": [
42
+ "top-left",
43
+ "top-center",
44
+ "top-right",
45
+ "bottom-left",
46
+ "bottom-center",
47
+ "bottom-right"
48
+ ],
49
+ "description": "이 토스트만 개별 위치 지정"
50
+ },
51
+ "onDismiss": {
52
+ "description": "닫힐 때 콜백 (toast: ToastT) => void"
53
+ },
54
+ "onAutoClose": {
55
+ "description": "자동 닫힘 시 콜백 (toast: ToastT) => void"
56
+ },
57
+ "className": {
58
+ "type": "string",
59
+ "description": "토스트 커스텀 클래스"
60
+ },
61
+ "style": {
62
+ "description": "토스트 인라인 스타일 (CSSProperties)"
63
+ },
64
+ "unstyled": {
65
+ "type": "boolean",
66
+ "description": "기본 스타일 제거 (커스텀 스타일링 시)"
67
+ },
68
+ "id": {
69
+ "type": [
70
+ "string",
71
+ "number"
72
+ ],
73
+ "description": "토스트 ID (중복 방지 또는 업데이트 시 사용)"
74
+ }
75
+ },
76
+ "additionalProperties": false,
77
+ "description": "toast() 호출 옵션. toast(message, options) 형태로 사용. toast.custom(jsx)으로 완전 커스텀 가능."
78
+ }
79
+ },
80
+ "$schema": "http://json-schema.org/draft-07/schema#"
81
+ }