@czi-sds/mcp 0.2.0

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 (98) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +34 -0
  3. package/data/component-list.json +55 -0
  4. package/data/component-props/Accordion.json +31 -0
  5. package/data/component-props/Alert.json +52 -0
  6. package/data/component-props/Autocomplete.json +52 -0
  7. package/data/component-props/Banner.json +35 -0
  8. package/data/component-props/Button.json +109 -0
  9. package/data/component-props/ButtonIcon.json +80 -0
  10. package/data/component-props/ButtonToggle.json +91 -0
  11. package/data/component-props/Callout.json +93 -0
  12. package/data/component-props/CellBasic.json +102 -0
  13. package/data/component-props/CellComponent.json +46 -0
  14. package/data/component-props/CellHeader.json +78 -0
  15. package/data/component-props/Chip.json +73 -0
  16. package/data/component-props/ComplexFilter.json +19 -0
  17. package/data/component-props/ContentCard.json +18 -0
  18. package/data/component-props/Dropdown.json +107 -0
  19. package/data/component-props/DropdownMenu.json +86 -0
  20. package/data/component-props/HeatmapChart.json +110 -0
  21. package/data/component-props/Icon.json +27 -0
  22. package/data/component-props/InputCheckbox.json +76 -0
  23. package/data/component-props/InputDropdown.json +72 -0
  24. package/data/component-props/InputRadio.json +75 -0
  25. package/data/component-props/InputSearch.json +99 -0
  26. package/data/component-props/InputSlider.json +56 -0
  27. package/data/component-props/InputText.json +95 -0
  28. package/data/component-props/InputToggle.json +72 -0
  29. package/data/component-props/List.json +43 -0
  30. package/data/component-props/LoadingIndicator.json +11 -0
  31. package/data/component-props/Menu.json +48 -0
  32. package/data/component-props/MenuItem.json +72 -0
  33. package/data/component-props/MenuSelect.json +83 -0
  34. package/data/component-props/NavigationFooter.json +50 -0
  35. package/data/component-props/NavigationHeader.json +119 -0
  36. package/data/component-props/NavigationJumpTo.json +58 -0
  37. package/data/component-props/Notification.json +89 -0
  38. package/data/component-props/Pagination.json +51 -0
  39. package/data/component-props/Panel.json +72 -0
  40. package/data/component-props/SegmentedControl.json +65 -0
  41. package/data/component-props/Table.json +26 -0
  42. package/data/component-props/TableRow.json +70 -0
  43. package/data/component-props/Tag.json +86 -0
  44. package/data/component-props/TagFilter.json +58 -0
  45. package/data/component-props/Tooltip.json +86 -0
  46. package/data/component-props/TooltipTable.json +22 -0
  47. package/data/component-props-storybook/Accordion-storybook.json +45 -0
  48. package/data/component-props-storybook/Alert-storybook.json +30 -0
  49. package/data/component-props-storybook/Autocomplete-storybook.json +67 -0
  50. package/data/component-props-storybook/Banner-storybook.json +78 -0
  51. package/data/component-props-storybook/Button-storybook.json +115 -0
  52. package/data/component-props-storybook/ButtonDropdown-storybook.json +73 -0
  53. package/data/component-props-storybook/ButtonIcon-storybook.json +60 -0
  54. package/data/component-props-storybook/ButtonToggle-storybook.json +68 -0
  55. package/data/component-props-storybook/Callout-storybook.json +90 -0
  56. package/data/component-props-storybook/CellBasic-storybook.json +138 -0
  57. package/data/component-props-storybook/CellComponent-storybook.json +48 -0
  58. package/data/component-props-storybook/CellHeader-storybook.json +71 -0
  59. package/data/component-props-storybook/Chip-storybook.json +26 -0
  60. package/data/component-props-storybook/ComplexFilter-storybook.json +60 -0
  61. package/data/component-props-storybook/ContentCard-storybook.json +175 -0
  62. package/data/component-props-storybook/Dialog-storybook.json +56 -0
  63. package/data/component-props-storybook/Dropdown-storybook.json +93 -0
  64. package/data/component-props-storybook/DropdownMenu-storybook.json +73 -0
  65. package/data/component-props-storybook/HeatmapChart-storybook.json +55 -0
  66. package/data/component-props-storybook/Icon-storybook.json +75 -0
  67. package/data/component-props-storybook/InputCheckbox-storybook.json +57 -0
  68. package/data/component-props-storybook/InputDropdown-storybook.json +80 -0
  69. package/data/component-props-storybook/InputRadio-storybook.json +56 -0
  70. package/data/component-props-storybook/InputSearch-storybook.json +55 -0
  71. package/data/component-props-storybook/InputSlider-storybook.json +55 -0
  72. package/data/component-props-storybook/InputText-storybook.json +59 -0
  73. package/data/component-props-storybook/InputToggle-storybook.json +42 -0
  74. package/data/component-props-storybook/Link-storybook.json +50 -0
  75. package/data/component-props-storybook/List-storybook.json +26 -0
  76. package/data/component-props-storybook/LoadingIndicator-storybook.json +34 -0
  77. package/data/component-props-storybook/Menu-storybook.json +26 -0
  78. package/data/component-props-storybook/MenuItem-storybook.json +74 -0
  79. package/data/component-props-storybook/MenuSelect-storybook.json +38 -0
  80. package/data/component-props-storybook/NavigationFooter-storybook.json +67 -0
  81. package/data/component-props-storybook/NavigationHeader-storybook.json +115 -0
  82. package/data/component-props-storybook/NavigationJumpTo-storybook.json +41 -0
  83. package/data/component-props-storybook/Notification-storybook.json +89 -0
  84. package/data/component-props-storybook/Pagination-storybook.json +50 -0
  85. package/data/component-props-storybook/Panel-storybook.json +52 -0
  86. package/data/component-props-storybook/SegmentedControl-storybook.json +30 -0
  87. package/data/component-props-storybook/Table-storybook.json +26 -0
  88. package/data/component-props-storybook/TableHeader-storybook.json +26 -0
  89. package/data/component-props-storybook/TableRow-storybook.json +62 -0
  90. package/data/component-props-storybook/Tabs-storybook.json +45 -0
  91. package/data/component-props-storybook/Tag-storybook.json +78 -0
  92. package/data/component-props-storybook/TagFilter-storybook.json +30 -0
  93. package/data/component-props-storybook/Tooltip-storybook.json +85 -0
  94. package/data/component-props-storybook/TooltipCondensed-storybook.json +38 -0
  95. package/data/component-props-storybook/TooltipTable-storybook.json +47 -0
  96. package/data/tailwind.json +3009 -0
  97. package/dist/stdio.js +357 -0
  98. package/package.json +66 -0
@@ -0,0 +1,115 @@
1
+ {
2
+ "NavigationHeader": {
3
+ "props": {
4
+ "buttons": {
5
+ "type": "object",
6
+ "isRequired": false,
7
+ "description": "List of buttons to display in the navigation header."
8
+ },
9
+ "hasInvertedStyle": {
10
+ "type": "boolean",
11
+ "isRequired": false,
12
+ "description": "Invert the colors of the navigation header."
13
+ },
14
+ "logo": {
15
+ "type": "\"0\"",
16
+ "isRequired": false,
17
+ "description": "The logo to display in the navigation header.",
18
+ "options": [
19
+ "0"
20
+ ]
21
+ },
22
+ "logoLinkComponent": {
23
+ "type": "string",
24
+ "isRequired": false,
25
+ "description": "The link component to display in the navigation header."
26
+ },
27
+ "logoUrl": {
28
+ "type": "string",
29
+ "isRequired": false,
30
+ "description": "The URL of the logo."
31
+ },
32
+ "position": {
33
+ "type": "\"absolute\" | \"fixed\" | \"relative\" | \"static\" | \"sticky\"",
34
+ "isRequired": false,
35
+ "description": "Position of the navigation header.",
36
+ "options": [
37
+ "absolute",
38
+ "fixed",
39
+ "relative",
40
+ "static",
41
+ "sticky"
42
+ ]
43
+ },
44
+ "primaryNavItems": {
45
+ "type": "object",
46
+ "isRequired": false,
47
+ "description": "List of primary navigation items to display in the navigation header."
48
+ },
49
+ "primaryNavPosition": {
50
+ "type": "\"left\" | \"right\"",
51
+ "isRequired": false,
52
+ "description": "Position of the primary navigation items.",
53
+ "options": [
54
+ "left",
55
+ "right"
56
+ ]
57
+ },
58
+ "scrollElevation": {
59
+ "type": "boolean",
60
+ "isRequired": false,
61
+ "description": "Elevate the navigation header when the user scrolls."
62
+ },
63
+ "searchProps": {
64
+ "type": "object",
65
+ "isRequired": false,
66
+ "description": "Search props for the navigation header."
67
+ },
68
+ "secondaryNavItems": {
69
+ "type": "object",
70
+ "isRequired": false,
71
+ "description": "List of secondary navigation items to display in the navigation header."
72
+ },
73
+ "showSearch": {
74
+ "type": "boolean",
75
+ "isRequired": false,
76
+ "description": "Show the search input in the navigation header."
77
+ },
78
+ "tag": {
79
+ "type": "string",
80
+ "isRequired": false,
81
+ "description": "The tag to display in the navigation header next to the logo."
82
+ },
83
+ "tagColor": {
84
+ "type": "string",
85
+ "isRequired": false,
86
+ "description": "Color of the tag."
87
+ },
88
+ "title": {
89
+ "type": "string",
90
+ "isRequired": false,
91
+ "description": "Title to display in the navigation header."
92
+ },
93
+ "className": {
94
+ "type": "string",
95
+ "isRequired": false,
96
+ "description": "Standard React className prop"
97
+ },
98
+ "style": {
99
+ "type": "CSSProperties",
100
+ "isRequired": false,
101
+ "description": "Standard React style prop"
102
+ },
103
+ "children": {
104
+ "type": "ReactNode",
105
+ "isRequired": false,
106
+ "description": "Standard React children prop"
107
+ },
108
+ "id": {
109
+ "type": "string",
110
+ "isRequired": false,
111
+ "description": "Standard React id prop"
112
+ }
113
+ }
114
+ }
115
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "NavigationJumpTo": {
3
+ "props": {
4
+ "items": {
5
+ "type": "object",
6
+ "isRequired": false,
7
+ "description": "An array of object containing a title for the Navigation Tab and a ref to the section div."
8
+ },
9
+ "offsetTop": {
10
+ "type": "number",
11
+ "isRequired": false,
12
+ "description": "wew"
13
+ },
14
+ "width": {
15
+ "type": "string",
16
+ "isRequired": false,
17
+ "description": "The width of the component."
18
+ },
19
+ "className": {
20
+ "type": "string",
21
+ "isRequired": false,
22
+ "description": "Standard React className prop"
23
+ },
24
+ "style": {
25
+ "type": "CSSProperties",
26
+ "isRequired": false,
27
+ "description": "Standard React style prop"
28
+ },
29
+ "children": {
30
+ "type": "ReactNode",
31
+ "isRequired": false,
32
+ "description": "Standard React children prop"
33
+ },
34
+ "id": {
35
+ "type": "string",
36
+ "isRequired": false,
37
+ "description": "Standard React id prop"
38
+ }
39
+ }
40
+ }
41
+ }
@@ -0,0 +1,89 @@
1
+ {
2
+ "Notification": {
3
+ "props": {
4
+ "autoDismiss": {
5
+ "type": "\"true\" | \"false\" | \"4000\" | \"12000\" | \"20000\"",
6
+ "isRequired": false,
7
+ "options": [
8
+ "true",
9
+ "false",
10
+ 4000,
11
+ 12000,
12
+ 20000
13
+ ]
14
+ },
15
+ "buttonOnClick": {
16
+ "type": "unknown",
17
+ "isRequired": false
18
+ },
19
+ "buttonPosition": {
20
+ "type": "\"left\" | \"right\"",
21
+ "isRequired": false,
22
+ "options": [
23
+ "left",
24
+ "right"
25
+ ]
26
+ },
27
+ "extraContent": {
28
+ "type": "boolean",
29
+ "isRequired": false
30
+ },
31
+ "icon": {
32
+ "type": "\"0\" | \"1\" | \"2\" | \"3\"",
33
+ "isRequired": false,
34
+ "options": [
35
+ "0",
36
+ "1",
37
+ "2",
38
+ "3"
39
+ ]
40
+ },
41
+ "intent": {
42
+ "type": "\"info\" | \"negative\" | \"positive\" | \"notice\"",
43
+ "isRequired": false,
44
+ "options": [
45
+ "info",
46
+ "negative",
47
+ "positive",
48
+ "notice"
49
+ ]
50
+ },
51
+ "onClose": {
52
+ "type": "unknown",
53
+ "isRequired": false
54
+ },
55
+ "sdsIconProps": {
56
+ "type": "object",
57
+ "isRequired": false
58
+ },
59
+ "slideDirection": {
60
+ "type": "\"left\" | \"right\"",
61
+ "isRequired": false,
62
+ "options": [
63
+ "left",
64
+ "right"
65
+ ]
66
+ },
67
+ "className": {
68
+ "type": "string",
69
+ "isRequired": false,
70
+ "description": "Standard React className prop"
71
+ },
72
+ "style": {
73
+ "type": "CSSProperties",
74
+ "isRequired": false,
75
+ "description": "Standard React style prop"
76
+ },
77
+ "children": {
78
+ "type": "ReactNode",
79
+ "isRequired": false,
80
+ "description": "Standard React children prop"
81
+ },
82
+ "id": {
83
+ "type": "string",
84
+ "isRequired": false,
85
+ "description": "Standard React id prop"
86
+ }
87
+ }
88
+ }
89
+ }
@@ -0,0 +1,50 @@
1
+ {
2
+ "Pagination": {
3
+ "props": {
4
+ "pageSize": {
5
+ "type": "number",
6
+ "isRequired": false
7
+ },
8
+ "sdsStyle": {
9
+ "type": "\"round\" | \"square\"",
10
+ "isRequired": false,
11
+ "options": [
12
+ "round",
13
+ "square"
14
+ ]
15
+ },
16
+ "siblingCount": {
17
+ "type": "number",
18
+ "isRequired": false
19
+ },
20
+ "totalCount": {
21
+ "type": "number",
22
+ "isRequired": false
23
+ },
24
+ "truncateDropdown": {
25
+ "type": "boolean",
26
+ "isRequired": false
27
+ },
28
+ "className": {
29
+ "type": "string",
30
+ "isRequired": false,
31
+ "description": "Standard React className prop"
32
+ },
33
+ "style": {
34
+ "type": "CSSProperties",
35
+ "isRequired": false,
36
+ "description": "Standard React style prop"
37
+ },
38
+ "children": {
39
+ "type": "ReactNode",
40
+ "isRequired": false,
41
+ "description": "Standard React children prop"
42
+ },
43
+ "id": {
44
+ "type": "string",
45
+ "isRequired": false,
46
+ "description": "Standard React id prop"
47
+ }
48
+ }
49
+ }
50
+ }
@@ -0,0 +1,52 @@
1
+ {
2
+ "Panel": {
3
+ "props": {
4
+ "isBackdropClickEnabled": {
5
+ "type": "boolean",
6
+ "isRequired": false,
7
+ "description": "If true, clicking on the backdrop will close the panel. Only applies to overlay panels."
8
+ },
9
+ "position": {
10
+ "type": "\"left\" | \"right\" | \"bottom\"",
11
+ "isRequired": false,
12
+ "options": [
13
+ "left",
14
+ "right",
15
+ "bottom"
16
+ ]
17
+ },
18
+ "sdsType": {
19
+ "type": "\"basic\" | \"overlay\"",
20
+ "isRequired": false,
21
+ "options": [
22
+ "basic",
23
+ "overlay"
24
+ ]
25
+ },
26
+ "width": {
27
+ "type": "string",
28
+ "isRequired": false
29
+ },
30
+ "className": {
31
+ "type": "string",
32
+ "isRequired": false,
33
+ "description": "Standard React className prop"
34
+ },
35
+ "style": {
36
+ "type": "CSSProperties",
37
+ "isRequired": false,
38
+ "description": "Standard React style prop"
39
+ },
40
+ "children": {
41
+ "type": "ReactNode",
42
+ "isRequired": false,
43
+ "description": "Standard React children prop"
44
+ },
45
+ "id": {
46
+ "type": "string",
47
+ "isRequired": false,
48
+ "description": "Standard React id prop"
49
+ }
50
+ }
51
+ }
52
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "SegmentedControl": {
3
+ "props": {
4
+ "buttonDefinition": {
5
+ "type": "object",
6
+ "isRequired": false
7
+ },
8
+ "className": {
9
+ "type": "string",
10
+ "isRequired": false,
11
+ "description": "Standard React className prop"
12
+ },
13
+ "style": {
14
+ "type": "CSSProperties",
15
+ "isRequired": false,
16
+ "description": "Standard React style prop"
17
+ },
18
+ "children": {
19
+ "type": "ReactNode",
20
+ "isRequired": false,
21
+ "description": "Standard React children prop"
22
+ },
23
+ "id": {
24
+ "type": "string",
25
+ "isRequired": false,
26
+ "description": "Standard React id prop"
27
+ }
28
+ }
29
+ }
30
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "Table": {
3
+ "props": {
4
+ "className": {
5
+ "type": "string",
6
+ "isRequired": false,
7
+ "description": "Standard React className prop"
8
+ },
9
+ "style": {
10
+ "type": "CSSProperties",
11
+ "isRequired": false,
12
+ "description": "Standard React style prop"
13
+ },
14
+ "children": {
15
+ "type": "ReactNode",
16
+ "isRequired": false,
17
+ "description": "Standard React children prop"
18
+ },
19
+ "id": {
20
+ "type": "string",
21
+ "isRequired": false,
22
+ "description": "Standard React id prop"
23
+ }
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "TableHeader": {
3
+ "props": {
4
+ "className": {
5
+ "type": "string",
6
+ "isRequired": false,
7
+ "description": "Standard React className prop"
8
+ },
9
+ "style": {
10
+ "type": "CSSProperties",
11
+ "isRequired": false,
12
+ "description": "Standard React style prop"
13
+ },
14
+ "children": {
15
+ "type": "ReactNode",
16
+ "isRequired": false,
17
+ "description": "Standard React children prop"
18
+ },
19
+ "id": {
20
+ "type": "string",
21
+ "isRequired": false,
22
+ "description": "Standard React id prop"
23
+ }
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,62 @@
1
+ {
2
+ "TableRow": {
3
+ "props": {
4
+ "disabled": {
5
+ "type": "boolean",
6
+ "isRequired": false
7
+ },
8
+ "hover": {
9
+ "type": "boolean",
10
+ "isRequired": false
11
+ },
12
+ "rowHeight": {
13
+ "type": "number",
14
+ "isRequired": false
15
+ },
16
+ "selected": {
17
+ "type": "boolean",
18
+ "isRequired": false
19
+ },
20
+ "shouldShowTooltipOnHover": {
21
+ "type": "boolean",
22
+ "isRequired": false
23
+ },
24
+ "tooltipProps": {
25
+ "type": "object",
26
+ "isRequired": false
27
+ },
28
+ "tooltipSubtitle": {
29
+ "type": "string",
30
+ "isRequired": false
31
+ },
32
+ "tooltipText": {
33
+ "type": "string",
34
+ "isRequired": false
35
+ },
36
+ "useDivider": {
37
+ "type": "boolean",
38
+ "isRequired": false
39
+ },
40
+ "className": {
41
+ "type": "string",
42
+ "isRequired": false,
43
+ "description": "Standard React className prop"
44
+ },
45
+ "style": {
46
+ "type": "CSSProperties",
47
+ "isRequired": false,
48
+ "description": "Standard React style prop"
49
+ },
50
+ "children": {
51
+ "type": "ReactNode",
52
+ "isRequired": false,
53
+ "description": "Standard React children prop"
54
+ },
55
+ "id": {
56
+ "type": "string",
57
+ "isRequired": false,
58
+ "description": "Standard React id prop"
59
+ }
60
+ }
61
+ }
62
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "Tabs": {
3
+ "props": {
4
+ "items": {
5
+ "type": "object",
6
+ "isRequired": true,
7
+ "description": "Here is an array of objects, each comprising a label and count for the tabs. Please note that this is specific to Storybook. In an actual implementation, it is recommended to pass the tabs as children of the Tabs component."
8
+ },
9
+ "sdsSize": {
10
+ "type": "\"large\" | \"small\"",
11
+ "isRequired": false,
12
+ "description": "The size of the tabs",
13
+ "options": [
14
+ "large",
15
+ "small"
16
+ ]
17
+ },
18
+ "underlined": {
19
+ "type": "boolean",
20
+ "isRequired": false,
21
+ "description": "Whether the tabs should be underlined"
22
+ },
23
+ "className": {
24
+ "type": "string",
25
+ "isRequired": false,
26
+ "description": "Standard React className prop"
27
+ },
28
+ "style": {
29
+ "type": "CSSProperties",
30
+ "isRequired": false,
31
+ "description": "Standard React style prop"
32
+ },
33
+ "children": {
34
+ "type": "ReactNode",
35
+ "isRequired": false,
36
+ "description": "Standard React children prop"
37
+ },
38
+ "id": {
39
+ "type": "string",
40
+ "isRequired": false,
41
+ "description": "Standard React id prop"
42
+ }
43
+ }
44
+ }
45
+ }
@@ -0,0 +1,78 @@
1
+ {
2
+ "Tag": {
3
+ "props": {
4
+ "color": {
5
+ "type": "string",
6
+ "isRequired": false
7
+ },
8
+ "hover": {
9
+ "type": "boolean",
10
+ "isRequired": false
11
+ },
12
+ "icon": {
13
+ "type": "\"0\" | \"1\" | \"2\" | \"3\" | \"4\" | \"5\"",
14
+ "isRequired": false,
15
+ "options": [
16
+ "0",
17
+ "1",
18
+ "2",
19
+ "3",
20
+ "4",
21
+ "5"
22
+ ]
23
+ },
24
+ "label": {
25
+ "type": "string",
26
+ "isRequired": true
27
+ },
28
+ "onClick": {
29
+ "type": "unknown",
30
+ "isRequired": false
31
+ },
32
+ "sdsSize": {
33
+ "type": "\"s\" | \"l\"",
34
+ "isRequired": false,
35
+ "options": [
36
+ "s",
37
+ "l"
38
+ ]
39
+ },
40
+ "sdsStyle": {
41
+ "type": "\"rounded\" | \"square\"",
42
+ "isRequired": false,
43
+ "options": [
44
+ "rounded",
45
+ "square"
46
+ ]
47
+ },
48
+ "sdsType": {
49
+ "type": "\"primary\" | \"secondary\"",
50
+ "isRequired": false,
51
+ "options": [
52
+ "primary",
53
+ "secondary"
54
+ ]
55
+ },
56
+ "className": {
57
+ "type": "string",
58
+ "isRequired": false,
59
+ "description": "Standard React className prop"
60
+ },
61
+ "style": {
62
+ "type": "CSSProperties",
63
+ "isRequired": false,
64
+ "description": "Standard React style prop"
65
+ },
66
+ "children": {
67
+ "type": "ReactNode",
68
+ "isRequired": false,
69
+ "description": "Standard React children prop"
70
+ },
71
+ "id": {
72
+ "type": "string",
73
+ "isRequired": false,
74
+ "description": "Standard React id prop"
75
+ }
76
+ }
77
+ }
78
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "TagFilter": {
3
+ "props": {
4
+ "label": {
5
+ "type": "string",
6
+ "isRequired": true
7
+ },
8
+ "className": {
9
+ "type": "string",
10
+ "isRequired": false,
11
+ "description": "Standard React className prop"
12
+ },
13
+ "style": {
14
+ "type": "CSSProperties",
15
+ "isRequired": false,
16
+ "description": "Standard React style prop"
17
+ },
18
+ "children": {
19
+ "type": "ReactNode",
20
+ "isRequired": false,
21
+ "description": "Standard React children prop"
22
+ },
23
+ "id": {
24
+ "type": "string",
25
+ "isRequired": false,
26
+ "description": "Standard React id prop"
27
+ }
28
+ }
29
+ }
30
+ }