@czi-sds/mcp 0.16.0 → 0.18.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 (167) hide show
  1. package/README.md +2 -1
  2. package/data/component-docs/Accordion.md +291 -0
  3. package/data/component-docs/Autocomplete.md +525 -0
  4. package/data/component-docs/Banner.md +231 -0
  5. package/data/component-docs/Button.md +224 -0
  6. package/data/component-docs/ButtonDropdown.md +256 -0
  7. package/data/component-docs/ButtonGroup.md +320 -0
  8. package/data/component-docs/ButtonToggle.md +397 -0
  9. package/data/component-docs/Callout.md +268 -0
  10. package/data/component-docs/CellBasic.md +122 -0
  11. package/data/component-docs/CellComponent.md +63 -0
  12. package/data/component-docs/CellHeader.md +128 -0
  13. package/data/component-docs/ComplexFilter.md +294 -0
  14. package/data/component-docs/ContentCard.md +406 -0
  15. package/data/component-docs/Dialog.md +651 -0
  16. package/data/component-docs/Dropdown.md +155 -0
  17. package/data/component-docs/DropdownMenu.md +949 -0
  18. package/data/component-docs/HeatmapChart.md +782 -0
  19. package/data/component-docs/Hero.md +363 -0
  20. package/data/component-docs/Icon.md +283 -0
  21. package/data/component-docs/InputCheckbox.md +205 -0
  22. package/data/component-docs/InputDropdown.md +482 -0
  23. package/data/component-docs/InputRadio.md +173 -0
  24. package/data/component-docs/InputSearch.md +81 -0
  25. package/data/component-docs/InputSlider.md +189 -0
  26. package/data/component-docs/InputText.md +110 -0
  27. package/data/component-docs/InputToggle.md +141 -0
  28. package/data/component-docs/IntentMessage.md +293 -0
  29. package/data/component-docs/Legend.md +442 -0
  30. package/data/component-docs/Link.md +23 -0
  31. package/data/component-docs/List.md +300 -0
  32. package/data/component-docs/LoadingIndicator.md +198 -0
  33. package/data/component-docs/Menu.md +298 -0
  34. package/data/component-docs/MenuItem.md +100 -0
  35. package/data/component-docs/NavigationFooter.md +165 -0
  36. package/data/component-docs/NavigationHeader.md +500 -0
  37. package/data/component-docs/NavigationJumpTo.md +414 -0
  38. package/data/component-docs/Notification.md +288 -0
  39. package/data/component-docs/Pagination.md +67 -0
  40. package/data/component-docs/Panel.md +636 -0
  41. package/data/component-docs/Popover.md +448 -0
  42. package/data/component-docs/PreComposedTable.md +2947 -0
  43. package/data/component-docs/ProteinStructureViewer.md +1044 -0
  44. package/data/component-docs/SegmentedControl.md +396 -0
  45. package/data/component-docs/StackedBarChart.md +475 -0
  46. package/data/component-docs/Table.md +2000 -0
  47. package/data/component-docs/TableHeader.md +53 -0
  48. package/data/component-docs/TableRow.md +74 -0
  49. package/data/component-docs/Tabs.md +455 -0
  50. package/data/component-docs/Tag.md +647 -0
  51. package/data/component-docs/TagFilter.md +131 -0
  52. package/data/component-docs/Tooltip.md +561 -0
  53. package/data/component-docs/TooltipCondensed.md +203 -0
  54. package/data/component-docs/TooltipTable.md +145 -0
  55. package/data/component-docs/index.json +267 -0
  56. package/data/component-list.json +2 -5
  57. package/data/component-props/Accordion.json +31 -11
  58. package/data/component-props/Alert.json +3 -3
  59. package/data/component-props/Autocomplete.json +150 -15
  60. package/data/component-props/Banner.json +31 -17
  61. package/data/component-props/Button.json +45 -20
  62. package/data/component-props/ButtonDropdown.json +36 -17
  63. package/data/component-props/ButtonDropdownLegacy.json +11 -11
  64. package/data/component-props/ButtonGroup.json +32 -11
  65. package/data/component-props/ButtonIcon.json +10 -10
  66. package/data/component-props/ButtonLegacy.json +19 -19
  67. package/data/component-props/ButtonToggle.json +32 -19
  68. package/data/component-props/ButtonToggleLegacy.json +11 -11
  69. package/data/component-props/Callout.json +58 -17
  70. package/data/component-props/CellBasic.json +94 -41
  71. package/data/component-props/CellComponent.json +23 -7
  72. package/data/component-props/CellHeader.json +62 -19
  73. package/data/component-props/ComplexFilter.json +52 -21
  74. package/data/component-props/ContentCard.json +70 -47
  75. package/data/component-props/Dialog.json +47 -14
  76. package/data/component-props/Dropdown.json +68 -31
  77. package/data/component-props/DropdownMenu.json +128 -23
  78. package/data/component-props/HeatmapChart.json +88 -12
  79. package/data/component-props/Hero.json +80 -39
  80. package/data/component-props/Icon.json +20 -9
  81. package/data/component-props/InputCheckbox.json +36 -14
  82. package/data/component-props/InputDropdown.json +75 -27
  83. package/data/component-props/InputRadio.json +31 -13
  84. package/data/component-props/InputSearch.json +41 -18
  85. package/data/component-props/InputSlider.json +46 -19
  86. package/data/component-props/InputText.json +26 -19
  87. package/data/component-props/InputToggle.json +26 -9
  88. package/data/component-props/IntentMessage.json +38 -9
  89. package/data/component-props/Link.json +13 -7
  90. package/data/component-props/LoadingIndicator.json +11 -3
  91. package/data/component-props/MenuItem.json +38 -19
  92. package/data/component-props/MenuSelect.json +8 -8
  93. package/data/component-props/NavigationFooter.json +49 -19
  94. package/data/component-props/NavigationHeader.json +150 -37
  95. package/data/component-props/NavigationJumpTo.json +33 -7
  96. package/data/component-props/Notification.json +39 -21
  97. package/data/component-props/Pagination.json +39 -11
  98. package/data/component-props/Panel.json +62 -9
  99. package/data/component-props/Popover.json +80 -7
  100. package/data/component-props/PreComposedTable.json +99 -27
  101. package/data/component-props/ProteinStructureViewer.json +117 -0
  102. package/data/component-props/SegmentedControl.json +42 -3
  103. package/data/component-props/StackedBarChart.json +116 -42
  104. package/data/component-props/TableRow.json +38 -19
  105. package/data/component-props/Tabs.json +66 -9
  106. package/data/component-props/Tag.json +34 -17
  107. package/data/component-props/TagFilter.json +10 -3
  108. package/data/component-props/Tooltip.json +49 -18
  109. package/data/component-props/TooltipCondensed.json +18 -9
  110. package/data/component-props/TooltipTable.json +17 -7
  111. package/data/resources/{zeroheight-rules.md → documentation-rules.md} +43 -30
  112. package/data/resources/figma-rules.md +2 -2
  113. package/data/tailwind.json +20 -14
  114. package/dist/stdio.js +112 -208
  115. package/package.json +9 -5
  116. package/data/component-props/ButtonDropdownV2.json +0 -34
  117. package/data/component-props/ButtonNew.json +0 -47
  118. package/data/component-props/ButtonToggleV2.json +0 -44
  119. package/data/component-props/ButtonV2.json +0 -43
  120. package/data/zeroheight-cache.json +0 -10259
  121. package/data/zeroheight-exports/Accordion.md +0 -774
  122. package/data/zeroheight-exports/Banner.md +0 -691
  123. package/data/zeroheight-exports/Borders.md +0 -117
  124. package/data/zeroheight-exports/Buttons.md +0 -1854
  125. package/data/zeroheight-exports/Callout.md +0 -931
  126. package/data/zeroheight-exports/Colors.md +0 -1755
  127. package/data/zeroheight-exports/Content-Card.md +0 -309
  128. package/data/zeroheight-exports/Contributing-to-SDS.md +0 -98
  129. package/data/zeroheight-exports/Control-Inputs.md +0 -2818
  130. package/data/zeroheight-exports/Corners.md +0 -104
  131. package/data/zeroheight-exports/Cover-page.md +0 -3
  132. package/data/zeroheight-exports/Dialog.md +0 -1367
  133. package/data/zeroheight-exports/Downloads.md +0 -236
  134. package/data/zeroheight-exports/Drop-Shadows.md +0 -79
  135. package/data/zeroheight-exports/Dropdown-Input.md +0 -1776
  136. package/data/zeroheight-exports/Dropdown-Menus.md +0 -913
  137. package/data/zeroheight-exports/Element-Status-Tracker.md +0 -267
  138. package/data/zeroheight-exports/Field-Inputs.md +0 -1405
  139. package/data/zeroheight-exports/Filters.md +0 -1111
  140. package/data/zeroheight-exports/Getting-Started.md +0 -1157
  141. package/data/zeroheight-exports/Hero.md +0 -414
  142. package/data/zeroheight-exports/Icons.md +0 -2067
  143. package/data/zeroheight-exports/Intent.md +0 -86
  144. package/data/zeroheight-exports/Introduction-to-Bases.md +0 -35
  145. package/data/zeroheight-exports/Introduction-to-Cells.md +0 -35
  146. package/data/zeroheight-exports/Introduction-to-DNA.md +0 -35
  147. package/data/zeroheight-exports/Introduction-to-Genes.md +0 -35
  148. package/data/zeroheight-exports/Introduction.md +0 -115
  149. package/data/zeroheight-exports/Link.md +0 -432
  150. package/data/zeroheight-exports/Lists.md +0 -986
  151. package/data/zeroheight-exports/Loading-Indicator.md +0 -41
  152. package/data/zeroheight-exports/Navigation.md +0 -1190
  153. package/data/zeroheight-exports/Notification.md +0 -1038
  154. package/data/zeroheight-exports/Panel.md +0 -1030
  155. package/data/zeroheight-exports/README.md +0 -122
  156. package/data/zeroheight-exports/Responsive-Design.md +0 -330
  157. package/data/zeroheight-exports/Search-Input.md +0 -91
  158. package/data/zeroheight-exports/Search.md +0 -822
  159. package/data/zeroheight-exports/Segmented-Control.md +0 -609
  160. package/data/zeroheight-exports/Spacing.md +0 -297
  161. package/data/zeroheight-exports/Table.md +0 -5345
  162. package/data/zeroheight-exports/Tabs.md +0 -1324
  163. package/data/zeroheight-exports/Tags.md +0 -1545
  164. package/data/zeroheight-exports/Text-Link.md +0 -268
  165. package/data/zeroheight-exports/Theming.md +0 -362
  166. package/data/zeroheight-exports/Tooltips.md +0 -2015
  167. package/data/zeroheight-exports/Typography.md +0 -800
@@ -1,1324 +0,0 @@
1
- # Tabs
2
-
3
- Tabs allow users to switch between different sets of information or content that is related to one overarching category or group while staying on the same page.
4
-
5
- ## Overview
6
-
7
- ## Tab Variants
8
-
9
- | There are two sizes of Tabs available for use determined by their location in the UI. Individual tabs within each size can optionally include an alert to draw user's attention to something specific on that tab, such as to communicate the content on the tab is newly added or updated. They can also be paired with an underline that spans the width of the entire div the tab group is placed within to provide visual separation between the Tabs and the content beneath them. Follow the usage criteria accompanying each variant as a guide for selecting the correct Tab size for any given use case. | | **Jump to variant:** Large Small |
10
- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- | -------------------------------- |
11
-
12
- ---
13
-
14
- ## Tabs
15
-
16
- | | In Figma | | | Meets Accessibility | | | In napari hub + .org Codebases |
17
- | --- | -------- | --- | --- | ------------------- | --- | --- | ------------------------------ |
18
-
19
- ### Large Tabs
20
-
21
- Default Tabs size to be used throughout the UI. Specifically used in napari hub at the top of plugin detail pages allowing users to change between the plugin's description and additional information such as usage activity and related analytics or citation information.
22
-
23
- An optional alert can be added on a per Tab basis to communicate additional details about the Tab or the content on it, for example, indicating that the Tab is new or has been recently updated.
24
-
25
- Tabs can also optionally be paired with an underline beneath them that spans the width of the entire div the Tab group is placed within.
26
-
27
- | **Default** | **Hover** | **Active** | **Disabled** |
28
- | ----------- | --------- | ---------- | ------------ |
29
-
30
- **Large_No Underline_No Alert_Default**
31
-
32
- ---
33
-
34
- **Large_No Underline_No Alert_Hover**
35
-
36
- ---
37
-
38
- **Large_No Underline_No Alert_Active**
39
-
40
- ---
41
-
42
- **Large_No Underline_No Alert_Disabled**
43
-
44
- ---
45
-
46
- | **Default + Alert** | **Hover** | **Active** | **Disabled** |
47
- | ------------------- | --------- | ---------- | ------------ |
48
-
49
- **Large_No Underline_Alert_Default**
50
-
51
- ---
52
-
53
- **Large_No Underline_Alert_Hover**
54
-
55
- ---
56
-
57
- **Large_No Underline_Alert_Active**
58
-
59
- ---
60
-
61
- **Large_No Underline_Alert_Disabled**
62
-
63
- ---
64
-
65
- | **Default + Underline** | **Hover** | **Active** | **Disabled** |
66
- | ----------------------- | --------- | ---------- | ------------ |
67
-
68
- **Large_Underline_No Alert_Default**
69
-
70
- ---
71
-
72
- **Large_Underline_No Alert_Hover**
73
-
74
- ---
75
-
76
- **Large_Underline_No Alert_Active**
77
-
78
- ---
79
-
80
- **Large_Underline_No Alert_Disabled**
81
-
82
- ---
83
-
84
- | **Default + Alert + Underline** | **Hover** | **Active** | **Disabled** |
85
- | ------------------------------- | --------- | ---------- | ------------ |
86
-
87
- **Large_Underline_Alert_Default**
88
-
89
- ---
90
-
91
- **Large_Underline_Alert_Hover**
92
-
93
- ---
94
-
95
- **Large_Underline_Alert_Active**
96
-
97
- ---
98
-
99
- **Large_Underline_Alert_Disabled**
100
-
101
- ---
102
-
103
- ### Small Tabs
104
-
105
- Alternative Tab size to be used in napari hub on plugin detail pages for plugins whose authors are using official formatting for their plugin citations.
106
-
107
- | **Default** | **Hover** | **Active** | **Disabled** |
108
- | ----------- | --------- | ---------- | ------------ |
109
-
110
- **Small_No Underline_No Alert_Default**
111
-
112
- ---
113
-
114
- **Small_No Underline_No Alert_Hover**
115
-
116
- ---
117
-
118
- **Small_No Underline_No Alert_Active**
119
-
120
- ---
121
-
122
- **Small_No Underline_No Alert_Disabled**
123
-
124
- ---
125
-
126
- | **Default + Alert** | **Hover** | **Active** | **Disabled** |
127
- | ------------------- | --------- | ---------- | ------------ |
128
-
129
- **Small_No Underline_Alert_Default**
130
-
131
- ---
132
-
133
- **Small_No Underline_Alert_Hover**
134
-
135
- ---
136
-
137
- **Small_No Underline_Alert_Active**
138
-
139
- ---
140
-
141
- **Small_No Underline_Alert_Disabled**
142
-
143
- ---
144
-
145
- | **Default + Underline** | **Hover** | **Active** | **Disabled** |
146
- | ----------------------- | --------- | ---------- | ------------ |
147
-
148
- **Small_Underline_No Alert_Default**
149
-
150
- ---
151
-
152
- **Small_Underline_No Alert_Hover**
153
-
154
- ---
155
-
156
- **Small_Underline_No Alert_Active**
157
-
158
- ---
159
-
160
- **Small_Underline_No Alert_Disabled**
161
-
162
- ---
163
-
164
- | **Default + Alert + Underline** | **Hover** | **Active** | **Disabled** |
165
- | ------------------------------- | --------- | ---------- | ------------ |
166
-
167
- **Small_Underline_Alert_Default**
168
-
169
- ---
170
-
171
- **Small_Underline_Alert_Hover**
172
-
173
- ---
174
-
175
- **Small_Underline_Alert_Active**
176
-
177
- ---
178
-
179
- **Small_Underline_Alert_Disabled**
180
-
181
- ---
182
-
183
- ---
184
-
185
- ### Tabs Spacing
186
-
187
- These rules establish how much margin should exist between and around elements.
188
-
189
- **Tabs spacing**
190
-
191
- ---
192
-
193
- ## Code
194
-
195
- ## Tabs Component
196
-
197
- | Below you will find an interactive Storybook iframe for Tabs. Tabs within each iframe provide a different set of tools: The Controls tab allows you to see and adjust all available props. The Actions tab shows you data displayed by event handler arguments. | | **Jump to component:** Tabs |
198
- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- | --------------------------- |
199
-
200
- ---
201
-
202
- > This component appears as it is in the default SDS codebase. Once imported into the napari hub or napari.org codebases, use a theme file to enable the napari visual appearance customization.
203
-
204
- ### Tabs 
205
-
206
- Storybook
207
-
208
- ---
209
-
210
- Tabs allow users to switch between different sets of information or content that is related to one overarching category or group while staying on the same page.
211
-
212
- ## Overview
213
-
214
- ## Tab Variants
215
-
216
- | There are two sizes of Tabs available for use determined by their location in the UI. Each size can include a counter to indicate the number of items on that tab’s screen such as search or filter results. They can also be paired with an underline that spans the width of the entire div the tab group is placed within to provide visual separation between the Tabs and the content beneath them. Follow the usage criteria accompanying each variant as a guide for selecting the correct Tab size for any given use case. | | **Jump to variant:** Large Small |
217
- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- | -------------------------------- |
218
-
219
- ---
220
-
221
- ## Tabs
222
-
223
- | | In Figma | | | Meets Accessibility | | | In CZ GEN EPI Codebase |
224
- | --- | -------- | --- | --- | ------------------- | --- | --- | ---------------------- |
225
-
226
- ### Large Tabs
227
-
228
- Default Tabs size to be used throughout the CZ GEN EPI UI.
229
-
230
- In CZ GEN EPI, Large Tabs holding quantifiable data sets (like a sample table) should include a Count to allow users to be aware of data that isn't currently visible. On the group page for members and group details, Large Tabs without a count are used to separate between sections.
231
-
232
- Overall, include a counter when necessary to indicate the number of items on that Tab's screen, whether visible or not visible, such as when displaying search or filter results.
233
-
234
- | **Default** | **Hover** | **Active** | **Disabled** |
235
- | ----------- | --------- | ---------- | ------------ |
236
-
237
- **Tabs**
238
-
239
- ---
240
-
241
- **Tabs**
242
-
243
- ---
244
-
245
- **Tabs**
246
-
247
- ---
248
-
249
- **Tabs**
250
-
251
- ---
252
-
253
- | **Default + Count** | **Hover** | **Active** | **Disabled** |
254
- | ------------------- | --------- | ---------- | ------------ |
255
-
256
- **Tabs**
257
-
258
- ---
259
-
260
- **Tabs**
261
-
262
- ---
263
-
264
- **Tabs**
265
-
266
- ---
267
-
268
- **Tabs**
269
-
270
- ---
271
-
272
- | **Default + Underline** | **Hover** | **Active** | **Disabled** |
273
- | ----------------------- | --------- | ---------- | ------------ |
274
-
275
- **Tabs**
276
-
277
- ---
278
-
279
- **Tabs**
280
-
281
- ---
282
-
283
- **Tabs**
284
-
285
- ---
286
-
287
- **Tabs**
288
-
289
- ---
290
-
291
- | **Default + Count + Underline** | **Hover** | **Active** | **Disabled** |
292
- | ------------------------------- | --------- | ---------- | ------------ |
293
-
294
- **Tabs**
295
-
296
- ---
297
-
298
- **Tabs**
299
-
300
- ---
301
-
302
- **Tabs**
303
-
304
- ---
305
-
306
- **Tabs**
307
-
308
- ---
309
-
310
- ### Small Tabs
311
-
312
- Alternative Tab size to be used only in conjunction with Large Tabs when a secondary layer of tabbing is needed.
313
-
314
- Include a counter when necessary to indicate the number of items on that Tab's screen, such as in the Members section of CZ GEN EPI, to help delineate between active members and outstanding invitations to the group.
315
-
316
- | **Default** | **Hover** | **Active** | **Disabled** |
317
- | ----------- | --------- | ---------- | ------------ |
318
-
319
- **Tabs**
320
-
321
- ---
322
-
323
- **Tabs**
324
-
325
- ---
326
-
327
- **Tabs**
328
-
329
- ---
330
-
331
- **Tabs**
332
-
333
- ---
334
-
335
- | **Default + Count** | **Hover** | **Active** | **Disabled** |
336
- | ------------------- | --------- | ---------- | ------------ |
337
-
338
- **Tabs**
339
-
340
- ---
341
-
342
- **Tabs**
343
-
344
- ---
345
-
346
- **Tabs**
347
-
348
- ---
349
-
350
- **Tabs**
351
-
352
- ---
353
-
354
- | **Default + Underline** | **Hover** | **Active** | **Disabled** |
355
- | ----------------------- | --------- | ---------- | ------------ |
356
-
357
- **Tabs**
358
-
359
- ---
360
-
361
- **Tabs**
362
-
363
- ---
364
-
365
- **Tabs**
366
-
367
- ---
368
-
369
- **Tabs**
370
-
371
- ---
372
-
373
- | **Default + Count + Underline** | **Hover** | **Active** | **Disabled** |
374
- | ------------------------------- | --------- | ---------- | ------------ |
375
-
376
- **Tabs**
377
-
378
- ---
379
-
380
- **Tabs**
381
-
382
- ---
383
-
384
- **Tabs**
385
-
386
- ---
387
-
388
- **Tabs**
389
-
390
- ---
391
-
392
- ---
393
-
394
- ### Tabs Spacing
395
-
396
- These rules establish how much margin should exist between and around elements.
397
-
398
- **Tabs Spacing**
399
-
400
- ---
401
-
402
- ## Code
403
-
404
- ## Tabs Component
405
-
406
- | Below you will find an interactive Storybook iframe for Tabs. Tabs within each iframe provide a different set of tools: The Controls tab allows you to see and adjust all available props. The Actions tab shows you data displayed by event handler arguments. | | **Jump to component:** Tabs |
407
- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- | --------------------------- |
408
-
409
- ---
410
-
411
- > This component appears as it is in the default SDS codebase. Once imported into the CZ GEN EPI codebase, use a theme file to enable the CZ GEN EPI visual appearance customization.
412
-
413
- ### Tabs 
414
-
415
- Storybook
416
-
417
- ---
418
-
419
- Tabs allow users to switch between different sets of information or content that is related to one overarching category or group while staying on the same page.
420
-
421
- ## Overview
422
-
423
- ## Tab Variants
424
-
425
- | There are two sizes of Tabs available for use determined by their location in the UI. Each size can include a counter to indicate the number of items on that tab’s screen such as search or filter results. They can also be paired with an underline that spans the width of the entire div the tab group is placed within to provide visual separation between the Tabs and the content beneath them. Follow the usage criteria accompanying each variant as a guide for selecting the correct Tab size for any given use case. | | **Jump to variant:** Large Small |
426
- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- | -------------------------------- |
427
-
428
- ---
429
-
430
- ## Tabs
431
-
432
- | | In Figma | | | Meets Accessibility | | | In CZ ID Codebase |
433
- | --- | -------- | --- | --- | ------------------- | --- | --- | ----------------- |
434
-
435
- ### Large Tabs
436
-
437
- Default Tabs size to be used throughout the CZ ID UI.
438
-
439
- In CZ ID, Large Tabs should include a Count when used in conjunction with header-level searches to allow users to tab between search results.
440
-
441
- Include a counter when necessary to indicate the number of items on that Tab's screen such as when displaying search or filter results.
442
-
443
- | **Default** | **Hover** | **Active** | **Disabled** |
444
- | ----------- | --------- | ---------- | ------------ |
445
-
446
- **Large_No Underline_No Count_Default**
447
-
448
- ---
449
-
450
- **Large_No Underline_No Count_Hover**
451
-
452
- ---
453
-
454
- **Large_No Underline_No Count_Active**
455
-
456
- ---
457
-
458
- **Large_No Underline_No Count_Disabled**
459
-
460
- ---
461
-
462
- | **Default + Count** | **Hover** | **Active** | **Disabled** |
463
- | ------------------- | --------- | ---------- | ------------ |
464
-
465
- **Large_No Underline_Count_Default**
466
-
467
- ---
468
-
469
- **Large_No Underline_Count_Hover**
470
-
471
- ---
472
-
473
- **Large_No Underline_Count_Active**
474
-
475
- ---
476
-
477
- **Large_No Underline_Count_Disabled**
478
-
479
- ---
480
-
481
- | **Default + Underline** | **Hover** | **Active** | **Disabled** |
482
- | ----------------------- | --------- | ---------- | ------------ |
483
-
484
- **Large_Underline_No Count_Default**
485
-
486
- ---
487
-
488
- **Large_Underline_No Count_Hover**
489
-
490
- ---
491
-
492
- **Large_Underline_No Count_Active**
493
-
494
- ---
495
-
496
- **Large_Underline_No Count_Disabled**
497
-
498
- ---
499
-
500
- | **Default + Count + Underline** | **Hover** | **Active** | **Disabled** |
501
- | ------------------------------- | --------- | ---------- | ------------ |
502
-
503
- **Large_Underline_Count_Default**
504
-
505
- ---
506
-
507
- **Large_Underline_Count_Hover**
508
-
509
- ---
510
-
511
- **Large_Underline_Count_Active**
512
-
513
- ---
514
-
515
- **Large_Underline_Count_Disabled**
516
-
517
- ---
518
-
519
- ### Small Tabs
520
-
521
- Alternative Tab size to be used only in conjunction with Large Tabs when a secondary layer of tabbing is needed.
522
-
523
- Include a counter when necessary to indicate the number of items on that Tab's screen such as when displaying search or filter results.
524
-
525
- | **Default** | **Hover** | **Active** | **Disabled** |
526
- | ----------- | --------- | ---------- | ------------ |
527
-
528
- **Small_No Underline_No Count_Default**
529
-
530
- ---
531
-
532
- **Small_No Underline_No Count_Hover**
533
-
534
- ---
535
-
536
- **Small_No Underline_No Count_Active**
537
-
538
- ---
539
-
540
- **Small_No Underline_No Count_Disabled**
541
-
542
- ---
543
-
544
- | **Default + Count** | **Hover** | **Active** | **Disabled** |
545
- | ------------------- | --------- | ---------- | ------------ |
546
-
547
- **Small_No Underline_Count_Default**
548
-
549
- ---
550
-
551
- **Small_No Underline_Count_Hover**
552
-
553
- ---
554
-
555
- **Small_No Underline_Count_Active**
556
-
557
- ---
558
-
559
- **Small_No Underline_Count_Disabled**
560
-
561
- ---
562
-
563
- | **Default + Underline** | **Hover** | **Active** | **Disabled** |
564
- | ----------------------- | --------- | ---------- | ------------ |
565
-
566
- **Small_Underline_No Count_Default**
567
-
568
- ---
569
-
570
- **Small_Underline_No Count_Hover**
571
-
572
- ---
573
-
574
- **Small_Underline_No Count_Active**
575
-
576
- ---
577
-
578
- **Small_Underline_No Count_Disabled**
579
-
580
- ---
581
-
582
- | **Default + Count + Underline** | **Hover** | **Active** | **Disabled** |
583
- | ------------------------------- | --------- | ---------- | ------------ |
584
-
585
- **Small_Underline_Count_Default**
586
-
587
- ---
588
-
589
- **Small_Underline_Count_Hover**
590
-
591
- ---
592
-
593
- **Small_Underline_Count_Active**
594
-
595
- ---
596
-
597
- **Small_Underline_Count_Disabled**
598
-
599
- ---
600
-
601
- ---
602
-
603
- ### Tabs Spacing
604
-
605
- These rules establish how much margin should exist between and around elements.
606
-
607
- **Tabs Spacing**
608
-
609
- ---
610
-
611
- ## Code
612
-
613
- ## Tabs Component
614
-
615
- | Below you will find an interactive Storybook iframe for Tabs. Tabs within each iframe provide a different set of tools: The Controls tab allows you to see and adjust all available props. The Actions tab shows you data displayed by event handler arguments. | | **Jump to component:** Tabs |
616
- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- | --------------------------- |
617
-
618
- ---
619
-
620
- ### Tabs 
621
-
622
- Storybook
623
-
624
- ---
625
-
626
- Tabs allow users to switch between different sets of information or content that is related to one overarching category while staying on the same page.
627
-
628
- ## Guidelines
629
-
630
- ## Overview
631
-
632
- | | In Figma | | | Meets Accessibility | | | In Code |
633
- | --- | -------- | --- | --- | ------------------- | --- | --- | ------- |
634
-
635
- ### Tabs Sizes
636
-
637
- There are two sizes of Tabs available for use which is determined by their location in the UI, the key difference being the size of the text on each Tab. Each size can include a counter to indicate the number of items on that Tab’s screen such as when used as part of Filter results. They can also be paired with an underline that spans the width of the entire div the tab group is placed within to provide visual separation between the Tabs and the content beneath them.
638
-
639
- **Tabs_Large**
640
-
641
- ---
642
-
643
- **Tabs_Small**
644
-
645
- ---
646
-
647
- ---
648
-
649
- ### Live Instance
650
-
651
- Interact with the live instance below and adjust the available props to better conceptualize how it will appear in product:
652
-
653
- Default
654
-
655
- ---
656
-
657
- ### Tabs – Large
658
-
659
- Tabs – Large is used at a top level within the UI. If a secondary layer of tabbing is needed, use Tabs – Small.
660
-
661
- Include a counter when necessary to indicate the number of viewable items available when navigating to that Tab's screen.
662
-
663
- | Default | Hover | Active | Disabled |
664
- | ------- | ----- | ------ | -------- |
665
-
666
- **Large_No Underline_No Count_Default**
667
-
668
- ---
669
-
670
- **Large_No Underline_No Count_Hover**
671
-
672
- ---
673
-
674
- **Large_No Underline_No Count_Active**
675
-
676
- ---
677
-
678
- **Large_No Underline_No Count_Disabled**
679
-
680
- ---
681
-
682
- **Large_No Underline_Count_Default**
683
-
684
- ---
685
-
686
- **Large_No Underline_Count_Hover**
687
-
688
- ---
689
-
690
- **Large_No Underline_Count_Active**
691
-
692
- ---
693
-
694
- **Large_No Underline_Count_Disabled**
695
-
696
- ---
697
-
698
- **Large_Underline_No Count_Default**
699
-
700
- ---
701
-
702
- **Large_Underline_No Count_Hover**
703
-
704
- ---
705
-
706
- **Large_Underline_No Count_Active**
707
-
708
- ---
709
-
710
- **Large_Underline_No Count_Disabled**
711
-
712
- ---
713
-
714
- **Large_Underline_Count_Default**
715
-
716
- ---
717
-
718
- **Large_Underline_Count_Hover**
719
-
720
- ---
721
-
722
- **Large_Underline_Count_Active**
723
-
724
- ---
725
-
726
- **Large_Underline_Count_Disabled**
727
-
728
- ---
729
-
730
- ---
731
-
732
- ### Tabs – Small
733
-
734
- Tabs – Small is an alternative size to be used only in conjunction with Tabs – Large when a secondary layer of tabbing is needed.
735
-
736
- Include a counter when necessary to indicate the number of viewable items available when navigating to that Tab's screen.
737
-
738
- | Default | Hover | Active | Disabled |
739
- | ------- | ----- | ------ | -------- |
740
-
741
- **Small_No Underline_No Count_Default**
742
-
743
- ---
744
-
745
- **Small_No Underline_No Count_Hover**
746
-
747
- ---
748
-
749
- **Small_No Underline_No Count_Active**
750
-
751
- ---
752
-
753
- **Small_No Underline_No Count_Disabled**
754
-
755
- ---
756
-
757
- **Small_No Underline_Count_Default**
758
-
759
- ---
760
-
761
- **Small_No Underline_Count_Hover**
762
-
763
- ---
764
-
765
- **Small_No Underline_Count_Active**
766
-
767
- ---
768
-
769
- **Small_No Underline_Count_Disabled**
770
-
771
- ---
772
-
773
- **Small_Underline_No Count_Default**
774
-
775
- ---
776
-
777
- **Small_Underline_No Count_Hover**
778
-
779
- ---
780
-
781
- **Small_Underline_No Count_Active**
782
-
783
- ---
784
-
785
- **Small_Underline_No Count_Disabled**
786
-
787
- ---
788
-
789
- **Small_Underline_Count_Default**
790
-
791
- ---
792
-
793
- **Small_Underline_Count_Hover**
794
-
795
- ---
796
-
797
- **Small_Underline_Count_Active**
798
-
799
- ---
800
-
801
- **Small_Underline_Count_Disabled**
802
-
803
- ---
804
-
805
- ---
806
-
807
- ### Tabs Spacing
808
-
809
- These rules establish how much margin should exist between and around elements.
810
-
811
- **Tabs Spacing**
812
-
813
- ---
814
-
815
- ## Code
816
-
817
- > **Note:** The code examples below must install dependencies before displaying and may take extra time to load
818
-
819
- ## Tabs
820
-
821
- ### SDS Source Code
822
-
823
- The component's source code in the SDS codebase can be found here.
824
-
825
- ### SDS vs MUI
826
-
827
- The SDS `Tabs` component is built on the MUI `Tabs` component, but the SDS version has a few additional props to provide stylistic options that fit within the SDS designs:
828
-
829
- - **`sdsSize`\*\***:\*\* Takes `large` (default) or `small` as values, and sizes the Tabs component and its label text accordingly
830
- - **`underlined`\*\***:\*\* This boolean prop extends a light gray underline beneath the whole of the `Tabs` component when true; without this prop, only the selected tab has an underline of the primary color
831
- - **count, metadata, and / or component:** Each individual tab within the `Tabs` component can be assigned a count, via a prop associated to that tab's position, such as `tabOneCount` for the first tab. These props take a number value to represent a count, but they can also take text or even another component, for example:
832
-
833
- `count={123}`
834
-
835
- `count={"Hello!"}`
836
-
837
- `tabThreeCount={<Tag />}`  
838
-
839
- This example demonstrates passing a ReactNode as the count prop to a `Tabs` component.
840
-
841
- ### MUI Documentation
842
-
843
- Documentation for the underlying MUI component can be found here.
844
-
845
- ### Props
846
-
847
- Any custom SDS props and MUI props required for implementation are found on the table below. See the MUI documentation for additional optional props.
848
-
849
- | Name | Type | Default | Description |
850
- | ------------ | ----------- | -------- | ------------------------------------------------------------------------------------------------------ | -------------------------------------- |
851
- | `sdsSize` | `"small"` ` | "large"` | `"large"` | Specifies the size of the Tab element. |
852
- | `underlined` | `boolean` | `false` | when set to `true`, adds a gray bottom border to the tab group, providing a distinctive visual effect. |
853
-
854
- ### Code examples
855
-
856
- #### Tabs – Large
857
-
858
- This example demonstrates a `Tabs` group with a larger visual style.
859
-
860
- **/styles.css**
861
-
862
- ```css
863
- body {
864
- font-size: 13px;
865
- font-weight: 400;
866
- letter-spacing: 0.08px;
867
- line-height: 20px;
868
- text-transform: none;
869
- font-family: "Inter", sans-serif;
870
- }
871
-
872
- h1 {
873
- font-size: 1.5rem;
874
- }
875
-
876
- .app {
877
- padding: 20px;
878
- }
879
- ```
880
-
881
- **tsconfig.json**
882
-
883
- ```json
884
- {
885
- "include": ["./**/*"],
886
- "compilerOptions": {
887
- "strict": true,
888
- "esModuleInterop": true,
889
- "lib": ["dom", "es2015"],
890
- "jsx": "react-jsx"
891
- }
892
- }
893
- ```
894
-
895
- **/App.tsx**
896
-
897
- ```tsx
898
- import { useState, SyntheticEvent } from "react";
899
- import { Tabs, Tab } from "@czi-sds/components";
900
- import "./styles.css";
901
-
902
- function App() {
903
- const [value, setValue] = useState(0);
904
-
905
- const handleTabsChange = (_: SyntheticEvent, tabsValue: unknown) => {
906
- setValue(tabsValue as number);
907
- };
908
-
909
- return (
910
- <div className="app">
911
- <Tabs value={value} sdsSize="large" onChange={handleTabsChange}>
912
- <Tab label="First Tab" />
913
- <Tab label="Second Tab" />
914
- </Tabs>
915
- </div>
916
- );
917
- }
918
-
919
- export default App;
920
- ```
921
-
922
- **/index.tsx**
923
-
924
- ```tsx
925
- import React from "react";
926
- import { createRoot } from "react-dom/client";
927
- import { ThemeProvider as EmotionThemeProvider } from "@emotion/react";
928
- import { StyledEngineProvider, ThemeProvider } from "@mui/material/styles";
929
- import { Theme } from "@czi-sds/components";
930
- import CssBaseline from "@mui/material/CssBaseline";
931
- import useMediaQuery from "@mui/material/useMediaQuery";
932
-
933
- import App from "./App";
934
-
935
- const container = document.getElementById("root");
936
- const root = createRoot(container!);
937
-
938
- const RootApp = () => {
939
- const prefersDarkMode = useMediaQuery("(prefers-color-scheme: dark)");
940
- const theme = prefersDarkMode ? Theme("dark") : Theme("light");
941
-
942
- return (
943
- <StyledEngineProvider injectFirst>
944
- <ThemeProvider theme={theme}>
945
- <EmotionThemeProvider theme={theme}>
946
- <CssBaseline />
947
- <App />
948
- </EmotionThemeProvider>
949
- </ThemeProvider>
950
- </StyledEngineProvider>
951
- );
952
- };
953
-
954
- root.render(
955
- <React.StrictMode>
956
- <RootApp />
957
- </React.StrictMode>
958
- );
959
- ```
960
-
961
- **/public/index.html**
962
-
963
- ```html
964
- <!doctype html>
965
- <html lang="en">
966
- <head>
967
- <meta charset="UTF-8" />
968
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
969
- <link rel="preconnect" href="https://fonts.googleapis.com" />
970
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
971
- <link
972
- href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"
973
- rel="stylesheet"
974
- />
975
- <link
976
- href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&display=swap"
977
- rel="stylesheet"
978
- />
979
- </head>
980
- <body>
981
- <div id="root"></div>
982
- </body>
983
- </html>
984
- ```
985
-
986
- **/package.json**
987
-
988
- ```json
989
- {
990
- "dependencies": {
991
- "react": "^18.0.0",
992
- "react-dom": "^18.0.0",
993
- "react-scripts": "^4.0.0"
994
- },
995
- "devDependencies": {
996
- "@types/react": "^18.0.0",
997
- "@types/react-dom": "^18.0.0",
998
- "typescript": "^4.0.0"
999
- },
1000
- "main": "/index.tsx"
1001
- }
1002
- ```
1003
-
1004
- ---
1005
-
1006
- #### Tabs – Small
1007
-
1008
- This example showcases a `Tabs` group with a smaller visual style.
1009
-
1010
- **/styles.css**
1011
-
1012
- ```css
1013
- body {
1014
- font-size: 13px;
1015
- font-weight: 400;
1016
- letter-spacing: 0.08px;
1017
- line-height: 20px;
1018
- text-transform: none;
1019
- font-family: "Inter", sans-serif;
1020
- }
1021
-
1022
- h1 {
1023
- font-size: 1.5rem;
1024
- }
1025
-
1026
- .app {
1027
- padding: 20px;
1028
- }
1029
- ```
1030
-
1031
- **tsconfig.json**
1032
-
1033
- ```json
1034
- {
1035
- "include": ["./**/*"],
1036
- "compilerOptions": {
1037
- "strict": true,
1038
- "esModuleInterop": true,
1039
- "lib": ["dom", "es2015"],
1040
- "jsx": "react-jsx"
1041
- }
1042
- }
1043
- ```
1044
-
1045
- **/App.tsx**
1046
-
1047
- ```tsx
1048
- import { useState, SyntheticEvent } from "react";
1049
- import { Tabs, Tab } from "@czi-sds/components";
1050
- import "./styles.css";
1051
-
1052
- function App() {
1053
- const [value, setValue] = useState(0);
1054
-
1055
- const handleTabsChange = (_: SyntheticEvent, tabsValue: unknown) => {
1056
- setValue(tabsValue as number);
1057
- };
1058
-
1059
- return (
1060
- <div className="app">
1061
- <Tabs value={value} sdsSize="small" onChange={handleTabsChange}>
1062
- <Tab label="First Tab" />
1063
- <Tab label="Second Tab" />
1064
- </Tabs>
1065
- </div>
1066
- );
1067
- }
1068
-
1069
- export default App;
1070
- ```
1071
-
1072
- **/index.tsx**
1073
-
1074
- ```tsx
1075
- import React from "react";
1076
- import { createRoot } from "react-dom/client";
1077
- import { ThemeProvider as EmotionThemeProvider } from "@emotion/react";
1078
- import { StyledEngineProvider, ThemeProvider } from "@mui/material/styles";
1079
- import { Theme } from "@czi-sds/components";
1080
- import CssBaseline from "@mui/material/CssBaseline";
1081
- import useMediaQuery from "@mui/material/useMediaQuery";
1082
-
1083
- import App from "./App";
1084
-
1085
- const container = document.getElementById("root");
1086
- const root = createRoot(container!);
1087
-
1088
- const RootApp = () => {
1089
- const prefersDarkMode = useMediaQuery("(prefers-color-scheme: dark)");
1090
- const theme = prefersDarkMode ? Theme("dark") : Theme("light");
1091
-
1092
- return (
1093
- <StyledEngineProvider injectFirst>
1094
- <ThemeProvider theme={theme}>
1095
- <EmotionThemeProvider theme={theme}>
1096
- <CssBaseline />
1097
- <App />
1098
- </EmotionThemeProvider>
1099
- </ThemeProvider>
1100
- </StyledEngineProvider>
1101
- );
1102
- };
1103
-
1104
- root.render(
1105
- <React.StrictMode>
1106
- <RootApp />
1107
- </React.StrictMode>
1108
- );
1109
- ```
1110
-
1111
- **/public/index.html**
1112
-
1113
- ```html
1114
- <!doctype html>
1115
- <html lang="en">
1116
- <head>
1117
- <meta charset="UTF-8" />
1118
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
1119
- <link rel="preconnect" href="https://fonts.googleapis.com" />
1120
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
1121
- <link
1122
- href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"
1123
- rel="stylesheet"
1124
- />
1125
- <link
1126
- href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&display=swap"
1127
- rel="stylesheet"
1128
- />
1129
- </head>
1130
- <body>
1131
- <div id="root"></div>
1132
- </body>
1133
- </html>
1134
- ```
1135
-
1136
- **/package.json**
1137
-
1138
- ```json
1139
- {
1140
- "dependencies": {
1141
- "react": "^18.0.0",
1142
- "react-dom": "^18.0.0",
1143
- "react-scripts": "^4.0.0"
1144
- },
1145
- "devDependencies": {
1146
- "@types/react": "^18.0.0",
1147
- "@types/react-dom": "^18.0.0",
1148
- "typescript": "^4.0.0"
1149
- },
1150
- "main": "/index.tsx"
1151
- }
1152
- ```
1153
-
1154
- ---
1155
-
1156
- #### Tabs with count, text, and component
1157
-
1158
- This example shows an underlined `Tabs` group where the last tab includes a custom `Tag` component alongside the count.
1159
-
1160
- **/styles.css**
1161
-
1162
- ```css
1163
- body {
1164
- font-size: 13px;
1165
- font-weight: 400;
1166
- letter-spacing: 0.08px;
1167
- line-height: 20px;
1168
- text-transform: none;
1169
- font-family: "Inter", sans-serif;
1170
- }
1171
-
1172
- h1 {
1173
- font-size: 1.5rem;
1174
- }
1175
-
1176
- .app {
1177
- padding: 20px;
1178
- }
1179
- ```
1180
-
1181
- **tsconfig.json**
1182
-
1183
- ```json
1184
- {
1185
- "include": ["./**/*"],
1186
- "compilerOptions": {
1187
- "strict": true,
1188
- "esModuleInterop": true,
1189
- "lib": ["dom", "es2015"],
1190
- "jsx": "react-jsx"
1191
- }
1192
- }
1193
- ```
1194
-
1195
- **/App.tsx**
1196
-
1197
- ```tsx
1198
- import { useState, SyntheticEvent } from "react";
1199
- import { Tabs, Tab, Tag } from "@czi-sds/components";
1200
- import { styled } from "@mui/material";
1201
- import "./styles.css";
1202
-
1203
- function App() {
1204
- const [value, setValue] = useState(0);
1205
-
1206
- const handleTabsChange = (_: SyntheticEvent, tabsValue: unknown) => {
1207
- setValue(tabsValue as number);
1208
- };
1209
-
1210
- const CountWrapper = styled("span")`
1211
- margin-right: 5px;
1212
- `;
1213
-
1214
- function BetaTagWithCount() {
1215
- return (
1216
- <>
1217
- <CountWrapper>14</CountWrapper>
1218
- <Tag label="BETA" color="beta" sdsStyle="rounded" sdsType="secondary" />
1219
- </>
1220
- );
1221
- }
1222
-
1223
- return (
1224
- <div className="app">
1225
- <Tabs
1226
- value={value}
1227
- sdsSize="large"
1228
- onChange={handleTabsChange}
1229
- underlined
1230
- >
1231
- <Tab label="First Tab" count="4" />
1232
- <Tab label="Second Tab" count="20" />
1233
- <Tab label="Third Tab" count={<BetaTagWithCount />} />
1234
- </Tabs>
1235
- </div>
1236
- );
1237
- }
1238
-
1239
- export default App;
1240
- ```
1241
-
1242
- **/index.tsx**
1243
-
1244
- ```tsx
1245
- import React from "react";
1246
- import { createRoot } from "react-dom/client";
1247
- import { ThemeProvider as EmotionThemeProvider } from "@emotion/react";
1248
- import { StyledEngineProvider, ThemeProvider } from "@mui/material/styles";
1249
- import { Theme } from "@czi-sds/components";
1250
- import CssBaseline from "@mui/material/CssBaseline";
1251
- import useMediaQuery from "@mui/material/useMediaQuery";
1252
-
1253
- import App from "./App";
1254
-
1255
- const container = document.getElementById("root");
1256
- const root = createRoot(container!);
1257
-
1258
- const RootApp = () => {
1259
- const prefersDarkMode = useMediaQuery("(prefers-color-scheme: dark)");
1260
- const theme = prefersDarkMode ? Theme("dark") : Theme("light");
1261
-
1262
- return (
1263
- <StyledEngineProvider injectFirst>
1264
- <ThemeProvider theme={theme}>
1265
- <EmotionThemeProvider theme={theme}>
1266
- <CssBaseline />
1267
- <App />
1268
- </EmotionThemeProvider>
1269
- </ThemeProvider>
1270
- </StyledEngineProvider>
1271
- );
1272
- };
1273
-
1274
- root.render(
1275
- <React.StrictMode>
1276
- <RootApp />
1277
- </React.StrictMode>
1278
- );
1279
- ```
1280
-
1281
- **/public/index.html**
1282
-
1283
- ```html
1284
- <!doctype html>
1285
- <html lang="en">
1286
- <head>
1287
- <meta charset="UTF-8" />
1288
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
1289
- <link rel="preconnect" href="https://fonts.googleapis.com" />
1290
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
1291
- <link
1292
- href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"
1293
- rel="stylesheet"
1294
- />
1295
- <link
1296
- href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&display=swap"
1297
- rel="stylesheet"
1298
- />
1299
- </head>
1300
- <body>
1301
- <div id="root"></div>
1302
- </body>
1303
- </html>
1304
- ```
1305
-
1306
- **/package.json**
1307
-
1308
- ```json
1309
- {
1310
- "dependencies": {
1311
- "react": "^18.0.0",
1312
- "react-dom": "^18.0.0",
1313
- "react-scripts": "^4.0.0"
1314
- },
1315
- "devDependencies": {
1316
- "@types/react": "^18.0.0",
1317
- "@types/react-dom": "^18.0.0",
1318
- "typescript": "^4.0.0"
1319
- },
1320
- "main": "/index.tsx"
1321
- }
1322
- ```
1323
-
1324
- ---