@czi-sds/mcp 0.16.0 → 0.17.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 (164) 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/SegmentedControl.md +396 -0
  44. package/data/component-docs/StackedBarChart.md +475 -0
  45. package/data/component-docs/Table.md +2000 -0
  46. package/data/component-docs/TableHeader.md +53 -0
  47. package/data/component-docs/TableRow.md +74 -0
  48. package/data/component-docs/Tabs.md +455 -0
  49. package/data/component-docs/Tag.md +647 -0
  50. package/data/component-docs/TagFilter.md +131 -0
  51. package/data/component-docs/Tooltip.md +561 -0
  52. package/data/component-docs/TooltipCondensed.md +203 -0
  53. package/data/component-docs/TooltipTable.md +145 -0
  54. package/data/component-docs/index.json +262 -0
  55. package/data/component-list.json +2 -5
  56. package/data/component-props/Accordion.json +31 -11
  57. package/data/component-props/Alert.json +3 -3
  58. package/data/component-props/Autocomplete.json +150 -15
  59. package/data/component-props/Banner.json +31 -17
  60. package/data/component-props/Button.json +45 -20
  61. package/data/component-props/ButtonDropdown.json +36 -17
  62. package/data/component-props/ButtonDropdownLegacy.json +11 -11
  63. package/data/component-props/ButtonGroup.json +32 -11
  64. package/data/component-props/ButtonIcon.json +10 -10
  65. package/data/component-props/ButtonLegacy.json +19 -19
  66. package/data/component-props/ButtonToggle.json +32 -19
  67. package/data/component-props/ButtonToggleLegacy.json +11 -11
  68. package/data/component-props/Callout.json +58 -17
  69. package/data/component-props/CellBasic.json +94 -41
  70. package/data/component-props/CellComponent.json +23 -7
  71. package/data/component-props/CellHeader.json +62 -19
  72. package/data/component-props/ComplexFilter.json +52 -21
  73. package/data/component-props/ContentCard.json +70 -47
  74. package/data/component-props/Dialog.json +47 -14
  75. package/data/component-props/Dropdown.json +68 -31
  76. package/data/component-props/DropdownMenu.json +128 -23
  77. package/data/component-props/HeatmapChart.json +88 -12
  78. package/data/component-props/Hero.json +80 -39
  79. package/data/component-props/Icon.json +20 -9
  80. package/data/component-props/InputCheckbox.json +36 -14
  81. package/data/component-props/InputDropdown.json +75 -27
  82. package/data/component-props/InputRadio.json +31 -13
  83. package/data/component-props/InputSearch.json +41 -18
  84. package/data/component-props/InputSlider.json +46 -19
  85. package/data/component-props/InputText.json +26 -19
  86. package/data/component-props/InputToggle.json +26 -9
  87. package/data/component-props/IntentMessage.json +38 -9
  88. package/data/component-props/Link.json +13 -7
  89. package/data/component-props/LoadingIndicator.json +11 -3
  90. package/data/component-props/MenuItem.json +38 -19
  91. package/data/component-props/MenuSelect.json +8 -8
  92. package/data/component-props/NavigationFooter.json +49 -19
  93. package/data/component-props/NavigationHeader.json +150 -37
  94. package/data/component-props/NavigationJumpTo.json +33 -7
  95. package/data/component-props/Notification.json +39 -21
  96. package/data/component-props/Pagination.json +39 -11
  97. package/data/component-props/Panel.json +62 -9
  98. package/data/component-props/Popover.json +80 -7
  99. package/data/component-props/PreComposedTable.json +99 -27
  100. package/data/component-props/SegmentedControl.json +42 -3
  101. package/data/component-props/StackedBarChart.json +116 -42
  102. package/data/component-props/TableRow.json +38 -19
  103. package/data/component-props/Tabs.json +66 -9
  104. package/data/component-props/Tag.json +34 -17
  105. package/data/component-props/TagFilter.json +10 -3
  106. package/data/component-props/Tooltip.json +49 -18
  107. package/data/component-props/TooltipCondensed.json +18 -9
  108. package/data/component-props/TooltipTable.json +17 -7
  109. package/data/resources/{zeroheight-rules.md → documentation-rules.md} +43 -30
  110. package/data/resources/figma-rules.md +2 -2
  111. package/dist/stdio.js +112 -208
  112. package/package.json +9 -5
  113. package/data/component-props/ButtonDropdownV2.json +0 -34
  114. package/data/component-props/ButtonNew.json +0 -47
  115. package/data/component-props/ButtonToggleV2.json +0 -44
  116. package/data/component-props/ButtonV2.json +0 -43
  117. package/data/zeroheight-cache.json +0 -10259
  118. package/data/zeroheight-exports/Accordion.md +0 -774
  119. package/data/zeroheight-exports/Banner.md +0 -691
  120. package/data/zeroheight-exports/Borders.md +0 -117
  121. package/data/zeroheight-exports/Buttons.md +0 -1854
  122. package/data/zeroheight-exports/Callout.md +0 -931
  123. package/data/zeroheight-exports/Colors.md +0 -1755
  124. package/data/zeroheight-exports/Content-Card.md +0 -309
  125. package/data/zeroheight-exports/Contributing-to-SDS.md +0 -98
  126. package/data/zeroheight-exports/Control-Inputs.md +0 -2818
  127. package/data/zeroheight-exports/Corners.md +0 -104
  128. package/data/zeroheight-exports/Cover-page.md +0 -3
  129. package/data/zeroheight-exports/Dialog.md +0 -1367
  130. package/data/zeroheight-exports/Downloads.md +0 -236
  131. package/data/zeroheight-exports/Drop-Shadows.md +0 -79
  132. package/data/zeroheight-exports/Dropdown-Input.md +0 -1776
  133. package/data/zeroheight-exports/Dropdown-Menus.md +0 -913
  134. package/data/zeroheight-exports/Element-Status-Tracker.md +0 -267
  135. package/data/zeroheight-exports/Field-Inputs.md +0 -1405
  136. package/data/zeroheight-exports/Filters.md +0 -1111
  137. package/data/zeroheight-exports/Getting-Started.md +0 -1157
  138. package/data/zeroheight-exports/Hero.md +0 -414
  139. package/data/zeroheight-exports/Icons.md +0 -2067
  140. package/data/zeroheight-exports/Intent.md +0 -86
  141. package/data/zeroheight-exports/Introduction-to-Bases.md +0 -35
  142. package/data/zeroheight-exports/Introduction-to-Cells.md +0 -35
  143. package/data/zeroheight-exports/Introduction-to-DNA.md +0 -35
  144. package/data/zeroheight-exports/Introduction-to-Genes.md +0 -35
  145. package/data/zeroheight-exports/Introduction.md +0 -115
  146. package/data/zeroheight-exports/Link.md +0 -432
  147. package/data/zeroheight-exports/Lists.md +0 -986
  148. package/data/zeroheight-exports/Loading-Indicator.md +0 -41
  149. package/data/zeroheight-exports/Navigation.md +0 -1190
  150. package/data/zeroheight-exports/Notification.md +0 -1038
  151. package/data/zeroheight-exports/Panel.md +0 -1030
  152. package/data/zeroheight-exports/README.md +0 -122
  153. package/data/zeroheight-exports/Responsive-Design.md +0 -330
  154. package/data/zeroheight-exports/Search-Input.md +0 -91
  155. package/data/zeroheight-exports/Search.md +0 -822
  156. package/data/zeroheight-exports/Segmented-Control.md +0 -609
  157. package/data/zeroheight-exports/Spacing.md +0 -297
  158. package/data/zeroheight-exports/Table.md +0 -5345
  159. package/data/zeroheight-exports/Tabs.md +0 -1324
  160. package/data/zeroheight-exports/Tags.md +0 -1545
  161. package/data/zeroheight-exports/Text-Link.md +0 -268
  162. package/data/zeroheight-exports/Theming.md +0 -362
  163. package/data/zeroheight-exports/Tooltips.md +0 -2015
  164. package/data/zeroheight-exports/Typography.md +0 -800
@@ -1,609 +0,0 @@
1
- # Segmented Control
2
-
3
- Segmented Control allows users to toggle between different views within an on-screen element such as viewing the same set of data in table or tree format.
4
-
5
- ## Overview
6
-
7
- | | In Figma | | | Meets Accessibility | | | In CZ ID Codebase |
8
- | --- | -------- | --- | --- | ------------------- | --- | --- | ----------------- |
9
-
10
- Segmented Control allows users to toggle between different views of an on-screen element. There must be a minimum of two and can be up to four segments.
11
-
12
- The Segmented Control component is comprised of Segmented Control Items each of which has a Default, Hover, and Active state. Designers can swap out default icons for icons relevant to their needed use case.
13
-
14
- | **Default / Active** | **Hover** |
15
- | -------------------- | --------- |
16
-
17
- **SegmentedControl**
18
-
19
- ---
20
-
21
- **SegmentedControl**
22
-
23
- ---
24
-
25
- ---
26
-
27
- ### Segmented Control Spacing
28
-
29
- These rules establish how much margin should exist between and around elements.
30
-
31
- **Segmented Control Spacing**
32
-
33
- ---
34
-
35
- ---
36
-
37
- ### Segmented Control Best Practices
38
-
39
- Segmented control relies on icons to communicate what’s being shown to the user. Because of this, it should always be coupled with a dark Tooltip that displays the name of the segment item when the user hovers over it.
40
-
41
- **Segmented Control Best Practice**
42
-
43
- ---
44
-
45
- ## Code
46
-
47
- ## Segmented Control Component
48
-
49
- | Below you will find an interactive Storybook iframe for the Segmented Control. 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:** SegmentedControl |
50
- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- | --------------------------------------- |
51
-
52
- ---
53
-
54
- ### SegmentedControl
55
-
56
- Storybook
57
-
58
- ---
59
-
60
- Segmented Control allows users to toggle between different views within an on-screen element such as viewing the same set of data in table or tree format.
61
-
62
- ## Guidelines
63
-
64
- ## Overview
65
-
66
- | | In Figma | | | Meets Accessibility | | | In Code |
67
- | --- | -------- | --- | --- | ------------------- | --- | --- | ------- |
68
-
69
- ### Live Instance
70
-
71
- Interact with the live instance below and adjust the available props to better conceptualize how it will appear in product:
72
-
73
- Default
74
-
75
- ---
76
-
77
- Segmented Control allows users to switch between different views of an on-screen element. There must be a minimum of two and can be up to four segments.
78
-
79
- Icons are used to communicate what will be shown on screen when that segment is clicked. When hovered over, each segment displays Tooltip – Dark to communicate what the icon represents. Any small variant icon can be used as a segment indicator.
80
-
81
- | Default / Active | Hover |
82
- | ---------------- | ----- |
83
-
84
- **Segmented Control_Default_Active**
85
-
86
- ---
87
-
88
- **Segmented Control_Hover**
89
-
90
- ---
91
-
92
- ---
93
-
94
- ### Segmented Control Spacing
95
-
96
- These rules establish how much margin should exist between and around elements.
97
-
98
- **Segmented Control Spacing**
99
-
100
- ---
101
-
102
- ## Code
103
-
104
- > **Note:** The code examples below must install dependencies before displaying and may take extra time to load
105
-
106
- ## SegmentedControl
107
-
108
- ### SDS Source Code
109
-
110
- The component's source code in the SDS codebase can be found here.
111
-
112
- ### SDS vs MUI
113
-
114
- The following props are available to MUI's `ToggleButtonGroup` but not SDS's `SegementedControl`:
115
-
116
- - **`exclusive`\*\***:\*\* This boolean prop determines whether just a single button within the control group can be selected at a time (default) or whether multiple can be. SDS's`SegmentedControl` is an exclusive control only, and setting `exclusive` to `false` has no effect.
117
- - **`size`\*\***:\*\* Has no effect for SDS's `SegmentedControl`
118
-
119
- ### MUI Documentation
120
-
121
- Documentation for the underlying MUI component can be found here.
122
-
123
- ### Props
124
-
125
- Any custom SDS props and MUI props required for implementation are found on the table below. See the MUI documentation for additional optional props.
126
-
127
- | Name | Type | Default | Description |
128
- | ------------------ | ------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------- |
129
- | `buttonDefinition` | `{` `disabled?: boolean;` `iconName: string;` `tooltipText: string;` `value: string;` `}[]` | `-` | An array of items containing an icon name and a tooltip text. |
130
-
131
- ### Code examples
132
-
133
- #### **Default SegmentedControl**
134
-
135
- This example demonstrates the most basic usage of the `SegmentedControl` component with default props.
136
-
137
- **/styles.css**
138
-
139
- ```css
140
- body {
141
- font-size: 13px;
142
- font-weight: 400;
143
- letter-spacing: 0.08px;
144
- line-height: 20px;
145
- text-transform: none;
146
- font-family: "Inter", sans-serif;
147
- }
148
-
149
- h1 {
150
- font-size: 1.5rem;
151
- }
152
-
153
- .app {
154
- padding: 20px;
155
- }
156
- ```
157
-
158
- **tsconfig.json**
159
-
160
- ```json
161
- {
162
- "include": ["./**/*"],
163
- "compilerOptions": {
164
- "strict": true,
165
- "esModuleInterop": true,
166
- "lib": ["dom", "es2015"],
167
- "jsx": "react-jsx"
168
- }
169
- }
170
- ```
171
-
172
- **/App.tsx**
173
-
174
- ```tsx
175
- import { SegmentedControl } from "@czi-sds/components";
176
- import "./styles.css";
177
-
178
- function App() {
179
- const buttonDefinition = [
180
- {
181
- icon: "List",
182
- tooltipText: "List A",
183
- value: "A",
184
- },
185
- {
186
- icon: "List",
187
- tooltipText: "List B",
188
- value: "B",
189
- },
190
- {
191
- icon: "List",
192
- tooltipText: "List C",
193
- value: "C",
194
- },
195
- ];
196
- return (
197
- <div className="app">
198
- <SegmentedControl buttonDefinition={buttonDefinition} />
199
- </div>
200
- );
201
- }
202
-
203
- export default App;
204
- ```
205
-
206
- **/index.tsx**
207
-
208
- ```tsx
209
- import React from "react";
210
- import { createRoot } from "react-dom/client";
211
- import { ThemeProvider as EmotionThemeProvider } from "@emotion/react";
212
- import { StyledEngineProvider, ThemeProvider } from "@mui/material/styles";
213
- import { Theme } from "@czi-sds/components";
214
- import CssBaseline from "@mui/material/CssBaseline";
215
- import useMediaQuery from "@mui/material/useMediaQuery";
216
-
217
- import App from "./App";
218
-
219
- const container = document.getElementById("root");
220
- const root = createRoot(container!);
221
-
222
- const RootApp = () => {
223
- const prefersDarkMode = useMediaQuery("(prefers-color-scheme: dark)");
224
- const theme = prefersDarkMode ? Theme("dark") : Theme("light");
225
-
226
- return (
227
- <StyledEngineProvider injectFirst>
228
- <ThemeProvider theme={theme}>
229
- <EmotionThemeProvider theme={theme}>
230
- <CssBaseline />
231
- <App />
232
- </EmotionThemeProvider>
233
- </ThemeProvider>
234
- </StyledEngineProvider>
235
- );
236
- };
237
-
238
- root.render(
239
- <React.StrictMode>
240
- <RootApp />
241
- </React.StrictMode>
242
- );
243
- ```
244
-
245
- **/public/index.html**
246
-
247
- ```html
248
- <!doctype html>
249
- <html lang="en">
250
- <head>
251
- <meta charset="UTF-8" />
252
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
253
- <link rel="preconnect" href="https://fonts.googleapis.com" />
254
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
255
- <link
256
- href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"
257
- rel="stylesheet"
258
- />
259
- <link
260
- href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&display=swap"
261
- rel="stylesheet"
262
- />
263
- </head>
264
- <body>
265
- <div id="root"></div>
266
- </body>
267
- </html>
268
- ```
269
-
270
- **/package.json**
271
-
272
- ```json
273
- {
274
- "dependencies": {
275
- "react": "^18.0.0",
276
- "react-dom": "^18.0.0",
277
- "react-scripts": "^4.0.0"
278
- },
279
- "devDependencies": {
280
- "@types/react": "^18.0.0",
281
- "@types/react-dom": "^18.0.0",
282
- "typescript": "^4.0.0"
283
- },
284
- "main": "/index.tsx"
285
- }
286
- ```
287
-
288
- ---
289
-
290
- #### **Controlled SegmentedControl**
291
-
292
- This example shows a controlled `SegmentedControl` component.
293
-
294
- **/styles.css**
295
-
296
- ```css
297
- body {
298
- font-size: 13px;
299
- font-weight: 400;
300
- letter-spacing: 0.08px;
301
- line-height: 20px;
302
- text-transform: none;
303
- font-family: "Inter", sans-serif;
304
- }
305
-
306
- h1 {
307
- font-size: 1.5rem;
308
- }
309
-
310
- .app {
311
- padding: 20px;
312
- }
313
- ```
314
-
315
- **tsconfig.json**
316
-
317
- ```json
318
- {
319
- "include": ["./**/*"],
320
- "compilerOptions": {
321
- "strict": true,
322
- "esModuleInterop": true,
323
- "lib": ["dom", "es2015"],
324
- "jsx": "react-jsx"
325
- }
326
- }
327
- ```
328
-
329
- **/App.tsx**
330
-
331
- ```tsx
332
- import { useState } from "react";
333
- import { SegmentedControl } from "@czi-sds/components";
334
- import "./styles.css";
335
-
336
- function App() {
337
- const [value, setValue] = useState("B");
338
- const buttonDefinition = [
339
- {
340
- icon: "List",
341
- tooltipText: "List A",
342
- value: "A",
343
- },
344
- {
345
- icon: "List",
346
- tooltipText: "List B",
347
- value: "B",
348
- },
349
- {
350
- icon: "List",
351
- tooltipText: "List C",
352
- value: "C",
353
- },
354
- ];
355
- return (
356
- <div className="app">
357
- <SegmentedControl
358
- buttonDefinition={buttonDefinition}
359
- value={value}
360
- onChange={(e, newValue) => setValue(newValue)}
361
- />
362
- </div>
363
- );
364
- }
365
-
366
- export default App;
367
- ```
368
-
369
- **/index.tsx**
370
-
371
- ```tsx
372
- import React from "react";
373
- import { createRoot } from "react-dom/client";
374
- import { ThemeProvider as EmotionThemeProvider } from "@emotion/react";
375
- import { StyledEngineProvider, ThemeProvider } from "@mui/material/styles";
376
- import { Theme } from "@czi-sds/components";
377
- import CssBaseline from "@mui/material/CssBaseline";
378
- import useMediaQuery from "@mui/material/useMediaQuery";
379
-
380
- import App from "./App";
381
-
382
- const container = document.getElementById("root");
383
- const root = createRoot(container!);
384
-
385
- const RootApp = () => {
386
- const prefersDarkMode = useMediaQuery("(prefers-color-scheme: dark)");
387
- const theme = prefersDarkMode ? Theme("dark") : Theme("light");
388
-
389
- return (
390
- <StyledEngineProvider injectFirst>
391
- <ThemeProvider theme={theme}>
392
- <EmotionThemeProvider theme={theme}>
393
- <CssBaseline />
394
- <App />
395
- </EmotionThemeProvider>
396
- </ThemeProvider>
397
- </StyledEngineProvider>
398
- );
399
- };
400
-
401
- root.render(
402
- <React.StrictMode>
403
- <RootApp />
404
- </React.StrictMode>
405
- );
406
- ```
407
-
408
- **/public/index.html**
409
-
410
- ```html
411
- <!doctype html>
412
- <html lang="en">
413
- <head>
414
- <meta charset="UTF-8" />
415
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
416
- <link rel="preconnect" href="https://fonts.googleapis.com" />
417
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
418
- <link
419
- href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"
420
- rel="stylesheet"
421
- />
422
- <link
423
- href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&display=swap"
424
- rel="stylesheet"
425
- />
426
- </head>
427
- <body>
428
- <div id="root"></div>
429
- </body>
430
- </html>
431
- ```
432
-
433
- **/package.json**
434
-
435
- ```json
436
- {
437
- "dependencies": {
438
- "react": "^18.0.0",
439
- "react-dom": "^18.0.0",
440
- "react-scripts": "^4.0.0"
441
- },
442
- "devDependencies": {
443
- "@types/react": "^18.0.0",
444
- "@types/react-dom": "^18.0.0",
445
- "typescript": "^4.0.0"
446
- },
447
- "main": "/index.tsx"
448
- }
449
- ```
450
-
451
- ---
452
-
453
- #### **SegmentedControl with disabled items**
454
-
455
- This example shows a `SegmentedControl` component that has one disabled item.
456
-
457
- **/styles.css**
458
-
459
- ```css
460
- body {
461
- font-size: 13px;
462
- font-weight: 400;
463
- letter-spacing: 0.08px;
464
- line-height: 20px;
465
- text-transform: none;
466
- font-family: "Inter", sans-serif;
467
- }
468
-
469
- h1 {
470
- font-size: 1.5rem;
471
- }
472
-
473
- .app {
474
- padding: 20px;
475
- }
476
- ```
477
-
478
- **tsconfig.json**
479
-
480
- ```json
481
- {
482
- "include": ["./**/*"],
483
- "compilerOptions": {
484
- "strict": true,
485
- "esModuleInterop": true,
486
- "lib": ["dom", "es2015"],
487
- "jsx": "react-jsx"
488
- }
489
- }
490
- ```
491
-
492
- **/App.tsx**
493
-
494
- ```tsx
495
- import { SegmentedControl } from "@czi-sds/components";
496
- import "./styles.css";
497
-
498
- function App() {
499
- const buttonDefinition = [
500
- {
501
- icon: "List",
502
- tooltipText: "List A",
503
- value: "A",
504
- },
505
- {
506
- disabled: true,
507
- icon: "List",
508
- tooltipText: "List B",
509
- value: "B",
510
- },
511
- {
512
- icon: "List",
513
- tooltipText: "List C",
514
- value: "C",
515
- },
516
- ];
517
- return (
518
- <div className="app">
519
- <SegmentedControl buttonDefinition={buttonDefinition} />
520
- </div>
521
- );
522
- }
523
-
524
- export default App;
525
- ```
526
-
527
- **/index.tsx**
528
-
529
- ```tsx
530
- import React from "react";
531
- import { createRoot } from "react-dom/client";
532
- import { ThemeProvider as EmotionThemeProvider } from "@emotion/react";
533
- import { StyledEngineProvider, ThemeProvider } from "@mui/material/styles";
534
- import { Theme } from "@czi-sds/components";
535
- import CssBaseline from "@mui/material/CssBaseline";
536
- import useMediaQuery from "@mui/material/useMediaQuery";
537
-
538
- import App from "./App";
539
-
540
- const container = document.getElementById("root");
541
- const root = createRoot(container!);
542
-
543
- const RootApp = () => {
544
- const prefersDarkMode = useMediaQuery("(prefers-color-scheme: dark)");
545
- const theme = prefersDarkMode ? Theme("dark") : Theme("light");
546
-
547
- return (
548
- <StyledEngineProvider injectFirst>
549
- <ThemeProvider theme={theme}>
550
- <EmotionThemeProvider theme={theme}>
551
- <CssBaseline />
552
- <App />
553
- </EmotionThemeProvider>
554
- </ThemeProvider>
555
- </StyledEngineProvider>
556
- );
557
- };
558
-
559
- root.render(
560
- <React.StrictMode>
561
- <RootApp />
562
- </React.StrictMode>
563
- );
564
- ```
565
-
566
- **/public/index.html**
567
-
568
- ```html
569
- <!doctype html>
570
- <html lang="en">
571
- <head>
572
- <meta charset="UTF-8" />
573
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
574
- <link rel="preconnect" href="https://fonts.googleapis.com" />
575
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
576
- <link
577
- href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"
578
- rel="stylesheet"
579
- />
580
- <link
581
- href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&display=swap"
582
- rel="stylesheet"
583
- />
584
- </head>
585
- <body>
586
- <div id="root"></div>
587
- </body>
588
- </html>
589
- ```
590
-
591
- **/package.json**
592
-
593
- ```json
594
- {
595
- "dependencies": {
596
- "react": "^18.0.0",
597
- "react-dom": "^18.0.0",
598
- "react-scripts": "^4.0.0"
599
- },
600
- "devDependencies": {
601
- "@types/react": "^18.0.0",
602
- "@types/react-dom": "^18.0.0",
603
- "typescript": "^4.0.0"
604
- },
605
- "main": "/index.tsx"
606
- }
607
- ```
608
-
609
- ---