@opentrons/components 0.1.6-alpha.2 → 0.1.6-alpha.20

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 (373) hide show
  1. package/Makefile +5 -1
  2. package/package.json +6 -7
  3. package/src/__mocks__/file.js +10 -0
  4. package/src/alerts/AlertItem.stories.tsx +49 -0
  5. package/src/alerts/AlertItem.tsx +85 -0
  6. package/src/alerts/index.ts +3 -0
  7. package/src/atoms/Checkbox/Checkbox.stories.tsx +24 -0
  8. package/src/atoms/Checkbox/index.tsx +127 -0
  9. package/src/atoms/CheckboxField/CheckboxField.stories.tsx +30 -0
  10. package/src/atoms/CheckboxField/index.tsx +171 -0
  11. package/src/atoms/Chip/Chip.stories.tsx +59 -0
  12. package/src/atoms/Chip/index.tsx +172 -0
  13. package/src/atoms/Divider/index.tsx +15 -0
  14. package/src/atoms/InputField/InputField.stories.tsx +77 -0
  15. package/src/atoms/InputField/index.tsx +383 -0
  16. package/src/atoms/ListButton/ListButton.stories.tsx +133 -0
  17. package/src/atoms/ListButton/ListButtonChildren/ListButtonAccordion.tsx +65 -0
  18. package/src/atoms/ListButton/ListButtonChildren/ListButtonAccordionContainer.tsx +23 -0
  19. package/src/atoms/ListButton/ListButtonChildren/ListButtonRadioButton.tsx +108 -0
  20. package/src/atoms/ListButton/ListButtonChildren/index.ts +3 -0
  21. package/src/atoms/ListButton/index.tsx +72 -0
  22. package/src/atoms/ListItem/ListItem.stories.tsx +96 -0
  23. package/src/atoms/ListItem/ListItemChildren/ListItemCustomize.tsx +78 -0
  24. package/src/atoms/ListItem/ListItemChildren/ListItemDescriptor.tsx +42 -0
  25. package/src/atoms/ListItem/ListItemChildren/index.ts +2 -0
  26. package/src/atoms/ListItem/index.tsx +89 -0
  27. package/src/atoms/MenuList/MenuItem.stories.tsx +20 -0
  28. package/src/atoms/MenuList/MenuItem.tsx +55 -0
  29. package/src/atoms/MenuList/MenuList.stories.tsx +31 -0
  30. package/src/atoms/MenuList/OverflowBtn.stories.tsx +17 -0
  31. package/src/atoms/MenuList/OverflowBtn.tsx +76 -0
  32. package/src/atoms/MenuList/index.tsx +50 -0
  33. package/src/atoms/Snackbar/Snackbar.stories.tsx +67 -0
  34. package/src/atoms/Snackbar/index.tsx +91 -0
  35. package/src/atoms/StepMeter/index.tsx +53 -0
  36. package/src/atoms/StyledText/LegacyStyledText.stories.tsx +106 -0
  37. package/src/atoms/StyledText/LegacyStyledText.tsx +95 -0
  38. package/src/atoms/StyledText/StyledText.stories.tsx +46 -0
  39. package/src/atoms/StyledText/StyledText.tsx +323 -0
  40. package/src/atoms/StyledText/index.ts +2 -0
  41. package/src/atoms/Tag/Tag.stories.tsx +48 -0
  42. package/src/atoms/Tag/index.tsx +116 -0
  43. package/src/atoms/Toast/ODDToast.stories.tsx +68 -0
  44. package/src/atoms/Toast/Toast.stories.tsx +55 -0
  45. package/src/atoms/Toast/index.tsx +439 -0
  46. package/src/atoms/ToggleGroup/ToggleGroup.stories.tsx +39 -0
  47. package/src/atoms/ToggleGroup/index.tsx +91 -0
  48. package/src/atoms/Tooltip/Tooltip.stories.tsx +99 -0
  49. package/src/atoms/Tooltip/index.tsx +38 -0
  50. package/src/atoms/buttons/AlertPrimaryButton.tsx +26 -0
  51. package/src/atoms/buttons/AltPrimaryButton.tsx +31 -0
  52. package/src/atoms/buttons/EmptySelectorButton.stories.tsx +36 -0
  53. package/src/atoms/buttons/EmptySelectorButton.tsx +83 -0
  54. package/src/atoms/buttons/LargeButton.stories.tsx +99 -0
  55. package/src/atoms/buttons/LargeButton.tsx +320 -0
  56. package/src/atoms/buttons/PrimaryButton.tsx +36 -0
  57. package/src/atoms/buttons/RadioButton.stories.tsx +35 -0
  58. package/src/atoms/buttons/RadioButton.tsx +217 -0
  59. package/src/atoms/buttons/SecondaryButton.tsx +62 -0
  60. package/src/atoms/buttons/buttons.stories.tsx +78 -0
  61. package/src/atoms/buttons/index.ts +6 -0
  62. package/src/atoms/index.ts +20 -0
  63. package/src/barrel.ts +10 -0
  64. package/src/buttons/Button.tsx +96 -0
  65. package/src/buttons/DeprecatedPrimaryButton.tsx +24 -0
  66. package/src/buttons/FlatButton.tsx +21 -0
  67. package/src/buttons/IconButton.tsx +37 -0
  68. package/src/buttons/OutlineButton.tsx +24 -0
  69. package/src/buttons/index.ts +7 -0
  70. package/src/controls/ControlInfo.tsx +13 -0
  71. package/src/controls/LabeledButton.tsx +28 -0
  72. package/src/controls/LabeledCheckbox.tsx +35 -0
  73. package/src/controls/LabeledControl.tsx +24 -0
  74. package/src/controls/LabeledRadioGroup.tsx +27 -0
  75. package/src/controls/LabeledSelect.tsx +34 -0
  76. package/src/controls/LabeledToggle.tsx +35 -0
  77. package/src/controls/StackedLabeledControl.tsx +28 -0
  78. package/src/controls/ToggleButton.tsx +25 -0
  79. package/src/controls/index.ts +10 -0
  80. package/src/forms/DeprecatedCheckboxField.stories.tsx +31 -0
  81. package/src/forms/DeprecatedCheckboxField.tsx +94 -0
  82. package/src/forms/DropdownField.stories.tsx +44 -0
  83. package/src/forms/DropdownField.tsx +106 -0
  84. package/src/forms/FormGroup.stories.tsx +31 -0
  85. package/src/forms/FormGroup.tsx +53 -0
  86. package/src/forms/InputField.stories.tsx +41 -0
  87. package/src/forms/LegacyInputField.tsx +123 -0
  88. package/src/forms/RadioGroup.stories.tsx +44 -0
  89. package/src/forms/RadioGroup.tsx +87 -0
  90. package/src/forms/Select.stories.tsx +117 -0
  91. package/src/forms/Select.tsx +132 -0
  92. package/src/forms/SelectField.tsx +94 -0
  93. package/src/forms/ToggleField.stories.tsx +31 -0
  94. package/src/forms/ToggleField.tsx +59 -0
  95. package/src/forms/index.ts +8 -0
  96. package/src/hardware-sim/BaseDeck/BaseDeck.stories.tsx +94 -0
  97. package/src/hardware-sim/BaseDeck/BaseDeck.tsx +423 -0
  98. package/src/hardware-sim/BaseDeck/SingleSlotFixture.tsx +199 -0
  99. package/src/hardware-sim/BaseDeck/SlotBase.tsx +5 -0
  100. package/src/hardware-sim/BaseDeck/SlotClip.tsx +15 -0
  101. package/src/hardware-sim/BaseDeck/StagingAreaFixture.tsx +114 -0
  102. package/src/hardware-sim/BaseDeck/WasteChuteFixture.tsx +114 -0
  103. package/src/hardware-sim/BaseDeck/WasteChuteStagingAreaFixture.tsx +68 -0
  104. package/src/hardware-sim/BaseDeck/__fixtures__/index.ts +165 -0
  105. package/src/hardware-sim/BaseDeck/index.ts +5 -0
  106. package/src/hardware-sim/BaseDeck/something.test.tsx +7 -0
  107. package/src/hardware-sim/Deck/DeckFromLayers.tsx +58 -0
  108. package/src/hardware-sim/Deck/FlexTrash.tsx +128 -0
  109. package/src/hardware-sim/Deck/MoveLabwareOnDeck.stories.tsx +97 -0
  110. package/src/hardware-sim/Deck/MoveLabwareOnDeck.tsx +251 -0
  111. package/src/hardware-sim/Deck/OT2Layers.tsx +153 -0
  112. package/src/hardware-sim/Deck/RobotCoordsForeignDiv.tsx +46 -0
  113. package/src/hardware-sim/Deck/RobotCoordsForeignObject.tsx +42 -0
  114. package/src/hardware-sim/Deck/RobotCoordsText.tsx +32 -0
  115. package/src/hardware-sim/Deck/RobotWorkSpace.tsx +90 -0
  116. package/src/hardware-sim/Deck/SlotLabels.tsx +111 -0
  117. package/src/hardware-sim/Deck/__mocks__/getDeckDefinitions.ts +29 -0
  118. package/src/hardware-sim/Deck/constants.ts +12 -0
  119. package/src/hardware-sim/Deck/index.tsx +8 -0
  120. package/src/hardware-sim/DeckConfigurator/AbsorbanceReaderFixture.tsx +91 -0
  121. package/src/hardware-sim/DeckConfigurator/DeckConfigurator.stories.tsx +110 -0
  122. package/src/hardware-sim/DeckConfigurator/EmptyConfigFixture.tsx +131 -0
  123. package/src/hardware-sim/DeckConfigurator/HeaterShakerFixture.tsx +102 -0
  124. package/src/hardware-sim/DeckConfigurator/MagneticBlockFixture.tsx +130 -0
  125. package/src/hardware-sim/DeckConfigurator/StagingAreaConfigFixture.tsx +89 -0
  126. package/src/hardware-sim/DeckConfigurator/StaticFixture.tsx +54 -0
  127. package/src/hardware-sim/DeckConfigurator/TemperatureModuleFixture.tsx +103 -0
  128. package/src/hardware-sim/DeckConfigurator/ThermocyclerFixture.tsx +89 -0
  129. package/src/hardware-sim/DeckConfigurator/TrashBinConfigFixture.tsx +99 -0
  130. package/src/hardware-sim/DeckConfigurator/WasteChuteConfigFixture.tsx +96 -0
  131. package/src/hardware-sim/DeckConfigurator/constants.ts +81 -0
  132. package/src/hardware-sim/DeckConfigurator/index.tsx +285 -0
  133. package/src/hardware-sim/DeckSlotLocation/index.tsx +88 -0
  134. package/src/hardware-sim/Labware/Labware.tsx +173 -0
  135. package/src/hardware-sim/Labware/LabwareAdapter/Opentrons96DeepWellAdapter.tsx +23 -0
  136. package/src/hardware-sim/Labware/LabwareAdapter/Opentrons96FlatBottomAdapter.tsx +7 -0
  137. package/src/hardware-sim/Labware/LabwareAdapter/OpentronsAluminumFlatBottomPlate.tsx +13 -0
  138. package/src/hardware-sim/Labware/LabwareAdapter/OpentronsAutoclavableDeckRiser.tsx +100 -0
  139. package/src/hardware-sim/Labware/LabwareAdapter/OpentronsFlex96TiprackAdapter.tsx +13 -0
  140. package/src/hardware-sim/Labware/LabwareAdapter/OpentronsToughPCRAutoSealingLid.tsx +83 -0
  141. package/src/hardware-sim/Labware/LabwareAdapter/OpentronsUniversalFlatAdapter.tsx +13 -0
  142. package/src/hardware-sim/Labware/LabwareAdapter/index.tsx +73 -0
  143. package/src/hardware-sim/Labware/LabwareRender.stories.tsx +96 -0
  144. package/src/hardware-sim/Labware/LabwareRender.tsx +173 -0
  145. package/src/hardware-sim/Labware/LabwareStackRender.tsx +272 -0
  146. package/src/hardware-sim/Labware/index.ts +6 -0
  147. package/src/hardware-sim/Labware/labwareInternals/FilledWells.tsx +39 -0
  148. package/src/hardware-sim/Labware/labwareInternals/LabwareOutline.tsx +133 -0
  149. package/src/hardware-sim/Labware/labwareInternals/LabwareWellLabels.tsx +118 -0
  150. package/src/hardware-sim/Labware/labwareInternals/StaticLabware.tsx +121 -0
  151. package/src/hardware-sim/Labware/labwareInternals/StrokedWells.tsx +38 -0
  152. package/src/hardware-sim/Labware/labwareInternals/StyledWells.tsx +77 -0
  153. package/src/hardware-sim/Labware/labwareInternals/Well.tsx +74 -0
  154. package/src/hardware-sim/Labware/labwareInternals/WellLabels.tsx +121 -0
  155. package/src/hardware-sim/Labware/labwareInternals/index.ts +8 -0
  156. package/src/hardware-sim/Labware/labwareInternals/types.ts +18 -0
  157. package/src/hardware-sim/Module/HeaterShaker.tsx +83 -0
  158. package/src/hardware-sim/Module/MagneticBlock.tsx +49 -0
  159. package/src/hardware-sim/Module/MagneticModule.tsx +51 -0
  160. package/src/hardware-sim/Module/Module.stories.tsx +90 -0
  161. package/src/hardware-sim/Module/ModuleTag.tsx +38 -0
  162. package/src/hardware-sim/Module/PlateReader.tsx +208 -0
  163. package/src/hardware-sim/Module/Temperature.tsx +54 -0
  164. package/src/hardware-sim/Module/Thermocycler/ThermocyclerGEN1.tsx +248 -0
  165. package/src/hardware-sim/Module/Thermocycler/ThermocyclerGEN2.tsx +286 -0
  166. package/src/hardware-sim/Module/Thermocycler/index.tsx +49 -0
  167. package/src/hardware-sim/Module/index.tsx +227 -0
  168. package/src/hardware-sim/Pipette/EightEmanatingNozzles.tsx +23 -0
  169. package/src/hardware-sim/Pipette/EmanatingNozzle.tsx +52 -0
  170. package/src/hardware-sim/Pipette/PipetteRender.stories.tsx +71 -0
  171. package/src/hardware-sim/Pipette/PipetteRender.tsx +92 -0
  172. package/src/hardware-sim/Pipette/constants.ts +10 -0
  173. package/src/hardware-sim/Pipette/index.ts +1 -0
  174. package/src/hardware-sim/ProtocolDeck/LabwareInfo.tsx +68 -0
  175. package/src/hardware-sim/ProtocolDeck/ProtocolDeck.stories.tsx +25 -0
  176. package/src/hardware-sim/ProtocolDeck/__fixtures__/analysis_QIAseqFX24xv4_8.json +47145 -0
  177. package/src/hardware-sim/ProtocolDeck/index.tsx +174 -0
  178. package/src/hardware-sim/ProtocolDeck/types.ts +6 -0
  179. package/src/hardware-sim/ProtocolDeck/utils/getInitiallyLoadedLabwareByAdapter.ts +33 -0
  180. package/src/hardware-sim/ProtocolDeck/utils/getLabwareInSlots.ts +155 -0
  181. package/src/hardware-sim/ProtocolDeck/utils/getLabwareInfoByLiquidId.ts +42 -0
  182. package/src/hardware-sim/ProtocolDeck/utils/getModulesInSlots.ts +129 -0
  183. package/src/hardware-sim/ProtocolDeck/utils/getStandardDeckViewLayerBlockList.ts +29 -0
  184. package/src/hardware-sim/ProtocolDeck/utils/getWellFillFromLabwareId.ts +30 -0
  185. package/src/hardware-sim/ProtocolDeck/utils/index.ts +3 -0
  186. package/src/hardware-sim/RobotCoordinateSpace/RobotCoordinateSpace.tsx +28 -0
  187. package/src/hardware-sim/RobotCoordinateSpace/RobotCoordinateSpaceWithRef.tsx +52 -0
  188. package/src/hardware-sim/RobotCoordinateSpace/index.ts +2 -0
  189. package/src/hardware-sim/index.ts +11 -0
  190. package/src/hardware-sim/utils.ts +18 -0
  191. package/src/helix-design-system/borders.ts +32 -0
  192. package/src/helix-design-system/colors.ts +100 -0
  193. package/src/helix-design-system/index.ts +4 -0
  194. package/src/helix-design-system/product/index.ts +1 -0
  195. package/src/helix-design-system/product/typography.ts +151 -0
  196. package/src/helix-design-system/style.ts +2 -0
  197. package/src/hooks/index.ts +15 -0
  198. package/src/hooks/useConditionalConfirm.ts +70 -0
  199. package/src/hooks/useDrag.ts +90 -0
  200. package/src/hooks/useIdle.ts +68 -0
  201. package/src/hooks/useInterval.ts +38 -0
  202. package/src/hooks/useLongPress.ts +83 -0
  203. package/src/hooks/useMenuHandleClickOutside.tsx +46 -0
  204. package/src/hooks/useMountEffect.ts +12 -0
  205. package/src/hooks/usePrevious.ts +19 -0
  206. package/src/hooks/useScrolling.ts +33 -0
  207. package/src/hooks/useSelectDeckLocation/SelectDeckLocation.stories.tsx +55 -0
  208. package/src/hooks/useSelectDeckLocation/index.tsx +331 -0
  209. package/src/hooks/useSwipe.ts +86 -0
  210. package/src/hooks/useTimeout.ts +33 -0
  211. package/src/hooks/useToggle.ts +27 -0
  212. package/src/icons/Icon.stories.tsx +37 -0
  213. package/src/icons/Icon.tsx +79 -0
  214. package/src/icons/IconList.stories.tsx +108 -0
  215. package/src/icons/ModuleIcon.tsx +48 -0
  216. package/src/icons/NotificationIcon.tsx +41 -0
  217. package/src/icons/icon-data.ts +821 -0
  218. package/src/icons/index.ts +6 -0
  219. package/src/images/index.ts +1 -0
  220. package/src/images/labware/index.ts +1 -0
  221. package/src/images/labware/measurement-guide/images/depth/depth-plate-flat@3x.png +0 -0
  222. package/src/images/labware/measurement-guide/images/depth/depth-plate-round@3x.png +0 -0
  223. package/src/images/labware/measurement-guide/images/depth/depth-plate-v@3x.png +0 -0
  224. package/src/images/labware/measurement-guide/images/depth/depth-reservoir-and-tubes-flat@3x.png +0 -0
  225. package/src/images/labware/measurement-guide/images/depth/depth-reservoir-and-tubes-round@3x.png +0 -0
  226. package/src/images/labware/measurement-guide/images/depth/depth-reservoir-and-tubes-v@3x.png +0 -0
  227. package/src/images/labware/measurement-guide/images/depth/length-tip-rack@3x.png +0 -0
  228. package/src/images/labware/measurement-guide/images/dimensions/footprint@3x.png +0 -0
  229. package/src/images/labware/measurement-guide/images/dimensions/height-alum-block-plate@3x.png +0 -0
  230. package/src/images/labware/measurement-guide/images/dimensions/height-alum-block-tubes@3x.png +0 -0
  231. package/src/images/labware/measurement-guide/images/dimensions/height-plate-and-reservoir@3x.png +0 -0
  232. package/src/images/labware/measurement-guide/images/dimensions/height-tip-rack@3x.png +0 -0
  233. package/src/images/labware/measurement-guide/images/dimensions/height-tube-rack-irregular@3x.png +0 -0
  234. package/src/images/labware/measurement-guide/images/dimensions/height-tube-rack@3x.png +0 -0
  235. package/src/images/labware/measurement-guide/images/offset/offset-reservoir@3x.png +0 -0
  236. package/src/images/labware/measurement-guide/images/offset/offset-well-circular@3x.png +0 -0
  237. package/src/images/labware/measurement-guide/images/offset/offset-well-rectangular@3x.png +0 -0
  238. package/src/images/labware/measurement-guide/images/shape/shape-circular@3x.png +0 -0
  239. package/src/images/labware/measurement-guide/images/shape/shape-rectangular@3x.png +0 -0
  240. package/src/images/labware/measurement-guide/images/spacing/spacing-reservoir-multi-row@3x.png +0 -0
  241. package/src/images/labware/measurement-guide/images/spacing/spacing-reservoir@3x.png +0 -0
  242. package/src/images/labware/measurement-guide/images/spacing/spacing-well-circular@3x.png +0 -0
  243. package/src/images/labware/measurement-guide/images/spacing/spacing-well-rectangular@3x.png +0 -0
  244. package/src/images/labware/measurement-guide/index.ts +272 -0
  245. package/src/index.ts +2 -0
  246. package/src/instrument/InstrumentDiagram.stories.tsx +42 -0
  247. package/src/instrument/InstrumentDiagram.tsx +58 -0
  248. package/src/instrument/InstrumentGroup.stories.tsx +88 -0
  249. package/src/instrument/InstrumentGroup.tsx +35 -0
  250. package/src/instrument/InstrumentInfo.tsx +107 -0
  251. package/src/instrument/PipetteSelect.stories.tsx +40 -0
  252. package/src/instrument/PipetteSelect.tsx +170 -0
  253. package/src/instrument/eight-channel-flex.png +0 -0
  254. package/src/instrument/index.ts +4 -0
  255. package/src/instrument/multi-channel_GEN1_800px.png +0 -0
  256. package/src/instrument/multi-channel_GEN2_800px.png +0 -0
  257. package/src/instrument/ninety-six-channel-gen1.png +0 -0
  258. package/src/instrument/pipetteGEN2Multi.png +0 -0
  259. package/src/instrument/pipetteGEN2Single.png +0 -0
  260. package/src/instrument/pipetteMulti.png +0 -0
  261. package/src/instrument/pipetteSingle.png +0 -0
  262. package/src/instrument/single-channel-flex.png +0 -0
  263. package/src/instrument/single-channel_GEN2_800px.png +0 -0
  264. package/src/instrument/single_channel_GEN1_800px.png +0 -0
  265. package/src/interaction-enhancers/ClickOutside.ts +57 -0
  266. package/src/interaction-enhancers/HandleKeypress.tsx +69 -0
  267. package/src/interaction-enhancers/index.ts +4 -0
  268. package/src/interaction-enhancers/useHover.ts +84 -0
  269. package/src/interaction-enhancers/useOnClickOutside.ts +42 -0
  270. package/src/legacy-hardware-sim/LabwareNameOverlay.tsx +22 -0
  271. package/src/legacy-hardware-sim/ModuleItem.tsx +145 -0
  272. package/src/legacy-hardware-sim/index.ts +2 -0
  273. package/src/lists/SidePanelGroup.tsx +48 -0
  274. package/src/lists/TitledList.tsx +155 -0
  275. package/src/lists/index.ts +3 -0
  276. package/src/modals/AlertModal.tsx +89 -0
  277. package/src/modals/ContinueModal.tsx +32 -0
  278. package/src/modals/LegacyModal.tsx +59 -0
  279. package/src/modals/Modal.stories.tsx +52 -0
  280. package/src/modals/Modal.tsx +96 -0
  281. package/src/modals/ModalHeader.tsx +100 -0
  282. package/src/modals/ModalShell.tsx +155 -0
  283. package/src/modals/Overlay.tsx +38 -0
  284. package/src/modals/SpinnerModal.tsx +35 -0
  285. package/src/modals/SpinnerModalPage.tsx +30 -0
  286. package/src/modals/index.ts +10 -0
  287. package/src/molecules/Banner/Banner.stories.tsx +41 -0
  288. package/src/molecules/Banner/index.tsx +147 -0
  289. package/src/molecules/DeckInfoLabel/DeckInfoLabel.stories.tsx +65 -0
  290. package/src/molecules/DeckInfoLabel/index.tsx +95 -0
  291. package/src/molecules/DeckLabel/DeckLabel.stories.tsx +31 -0
  292. package/src/molecules/DeckLabel/index.tsx +80 -0
  293. package/src/molecules/DropdownMenu/DropdownMenu.stories.tsx +30 -0
  294. package/src/molecules/DropdownMenu/index.tsx +343 -0
  295. package/src/molecules/InfoScreen/InfoScreen.stories.tsx +50 -0
  296. package/src/molecules/InfoScreen/index.tsx +54 -0
  297. package/src/molecules/LiquidIcon/LiquidIcon.stories.tsx +53 -0
  298. package/src/molecules/LiquidIcon/index.tsx +68 -0
  299. package/src/molecules/ParametersTable/ParametersTable.stories.tsx +172 -0
  300. package/src/molecules/ParametersTable/index.tsx +198 -0
  301. package/src/molecules/Tabs/Tabs.stories.tsx +74 -0
  302. package/src/molecules/Tabs/index.tsx +94 -0
  303. package/src/molecules/index.ts +8 -0
  304. package/src/nav/SidePanel.stories.tsx +29 -0
  305. package/src/nav/SidePanel.tsx +21 -0
  306. package/src/nav/index.ts +2 -0
  307. package/src/organisms/DeckLabelSet/DeckLabelSet.stories.tsx +46 -0
  308. package/src/organisms/DeckLabelSet/index.tsx +69 -0
  309. package/src/organisms/EndUserAgreementFooter/index.tsx +49 -0
  310. package/src/organisms/Toolbox/Toolbox.stories.tsx +23 -0
  311. package/src/organisms/Toolbox/index.tsx +160 -0
  312. package/src/organisms/index.ts +3 -0
  313. package/src/primitives/Box.stories.tsx +25 -0
  314. package/src/primitives/Box.tsx +17 -0
  315. package/src/primitives/Btn.stories.tsx +105 -0
  316. package/src/primitives/Btn.tsx +266 -0
  317. package/src/primitives/Flex.stories.tsx +50 -0
  318. package/src/primitives/Flex.tsx +17 -0
  319. package/src/primitives/ForeignObject.tsx +70 -0
  320. package/src/primitives/Link.stories.tsx +27 -0
  321. package/src/primitives/Link.tsx +32 -0
  322. package/src/primitives/README.md +188 -0
  323. package/src/primitives/Svg.stories.tsx +36 -0
  324. package/src/primitives/Svg.tsx +68 -0
  325. package/src/primitives/Text.stories.tsx +17 -0
  326. package/src/primitives/Text.tsx +18 -0
  327. package/src/primitives/index.ts +10 -0
  328. package/src/primitives/style-props.ts +197 -0
  329. package/src/primitives/types.ts +120 -0
  330. package/src/robot-types.ts +4 -0
  331. package/src/slotmap/OT2SlotMap.tsx +73 -0
  332. package/src/slotmap/index.ts +1 -0
  333. package/src/structure/Card.stories.tsx +28 -0
  334. package/src/structure/Card.tsx +64 -0
  335. package/src/structure/LabeledValue.stories.tsx +17 -0
  336. package/src/structure/LabeledValue.tsx +31 -0
  337. package/src/structure/Pill.tsx +43 -0
  338. package/src/structure/Splash.stories.tsx +24 -0
  339. package/src/structure/Splash.tsx +22 -0
  340. package/src/structure/TitleBar.stories.tsx +42 -0
  341. package/src/structure/TitleBar.tsx +81 -0
  342. package/src/structure/index.ts +7 -0
  343. package/src/styles/borders.ts +16 -0
  344. package/src/styles/colors.ts +58 -0
  345. package/src/styles/cursor.ts +12 -0
  346. package/src/styles/flexbox.ts +39 -0
  347. package/src/styles/index.ts +8 -0
  348. package/src/styles/layout.ts +31 -0
  349. package/src/styles/position.ts +5 -0
  350. package/src/styles/spacing.ts +11 -0
  351. package/src/styles/typography.ts +90 -0
  352. package/src/testing/utils/index.ts +2 -0
  353. package/src/testing/utils/matchers.ts +31 -0
  354. package/src/testing/utils/renderWithProviders.tsx +53 -0
  355. package/src/tooltips/DeprecatedTooltip.tsx +105 -0
  356. package/src/tooltips/HoverTooltip.tsx +83 -0
  357. package/src/tooltips/LegacyTooltip.stories.tsx +98 -0
  358. package/src/tooltips/LegacyTooltip.tsx +151 -0
  359. package/src/tooltips/constants.ts +28 -0
  360. package/src/tooltips/index.ts +10 -0
  361. package/src/tooltips/styles.ts +20 -0
  362. package/src/tooltips/types.ts +73 -0
  363. package/src/tooltips/useHoverTooltip.ts +47 -0
  364. package/src/tooltips/usePopper.ts +87 -0
  365. package/src/tooltips/useTooltip.ts +100 -0
  366. package/src/ui-style-constants/index.ts +4 -0
  367. package/src/ui-style-constants/responsiveness.ts +15 -0
  368. package/src/ui-style-constants/spacing.ts +18 -0
  369. package/src/ui-style-constants/typography.ts +258 -0
  370. package/src/ui-style-constants/viewport.ts +18 -0
  371. package/src/utils.ts +56 -0
  372. package/{vite.config.ts → vite.config.mts} +2 -0
  373. package/lib/index.mjs +0 -19869
@@ -0,0 +1,78 @@
1
+ import type * as React from 'react'
2
+ import { SPACING } from '../../ui-style-constants'
3
+ import { DIRECTION_ROW } from '../../styles'
4
+ import { Flex } from '../../primitives'
5
+ import { PrimaryButton } from './PrimaryButton'
6
+ import { SecondaryButton } from './SecondaryButton'
7
+ import { AlertPrimaryButton } from './AlertPrimaryButton'
8
+ import { AltPrimaryButton } from './AltPrimaryButton'
9
+
10
+ import type { Story, Meta } from '@storybook/react'
11
+
12
+ export default {
13
+ title: 'Library/Atoms/Buttons',
14
+ } as Meta
15
+
16
+ const PrimaryButtonTemplate: Story<
17
+ React.ComponentProps<typeof PrimaryButton>
18
+ > = args => {
19
+ const { children } = args
20
+ return (
21
+ <Flex flexDirection={DIRECTION_ROW} gridGap={SPACING.spacing16}>
22
+ <PrimaryButton>{children}</PrimaryButton>
23
+ </Flex>
24
+ )
25
+ }
26
+
27
+ export const Primary = PrimaryButtonTemplate.bind({})
28
+ Primary.args = {
29
+ children: 'primary button',
30
+ }
31
+
32
+ const SecondaryButtonTemplate: Story<
33
+ React.ComponentProps<typeof SecondaryButton>
34
+ > = args => {
35
+ const { children } = args
36
+ return (
37
+ <Flex flexDirection={DIRECTION_ROW} gridGap={SPACING.spacing16}>
38
+ <SecondaryButton>{children}</SecondaryButton>
39
+ </Flex>
40
+ )
41
+ }
42
+
43
+ export const Secondary = SecondaryButtonTemplate.bind({})
44
+ Secondary.args = {
45
+ children: 'secondary button',
46
+ }
47
+
48
+ const AlertPrimaryButtonTemplate: Story<
49
+ React.ComponentProps<typeof AlertPrimaryButton>
50
+ > = args => {
51
+ const { children } = args
52
+ return (
53
+ <Flex>
54
+ <AlertPrimaryButton>{children}</AlertPrimaryButton>
55
+ </Flex>
56
+ )
57
+ }
58
+
59
+ export const AlertPrimary = AlertPrimaryButtonTemplate.bind({})
60
+ AlertPrimary.args = {
61
+ children: 'alert tertiary button',
62
+ }
63
+
64
+ const AltPrimaryButtonTemplate: Story<
65
+ React.ComponentProps<typeof AltPrimaryButton>
66
+ > = args => {
67
+ const { children } = args
68
+ return (
69
+ <Flex>
70
+ <AltPrimaryButton>{children}</AltPrimaryButton>
71
+ </Flex>
72
+ )
73
+ }
74
+
75
+ export const AltPrimary = AltPrimaryButtonTemplate.bind({})
76
+ AltPrimary.args = {
77
+ children: 'alt primary button',
78
+ }
@@ -0,0 +1,6 @@
1
+ export * from './AlertPrimaryButton'
2
+ export * from './EmptySelectorButton'
3
+ export * from './LargeButton'
4
+ export * from './PrimaryButton'
5
+ export * from './RadioButton'
6
+ export * from './SecondaryButton'
@@ -0,0 +1,20 @@
1
+ export * from './buttons'
2
+ export * from './Checkbox'
3
+ export * from './CheckboxField'
4
+ export * from './Chip'
5
+ export * from './Divider'
6
+ export * from './InputField'
7
+ export * from './ListButton'
8
+ export * from './ListItem'
9
+ export * from './ListItem/ListItemChildren//ListItemDescriptor'
10
+ export * from './MenuList'
11
+ export * from './MenuList/MenuItem'
12
+ export * from './MenuList/OverflowBtn'
13
+ export * from './Snackbar'
14
+ export * from './StepMeter'
15
+ export * from './StepMeter'
16
+ export * from './StyledText'
17
+ export * from './Tag'
18
+ export * from './Toast'
19
+ export * from './ToggleGroup'
20
+ export * from './Tooltip'
package/src/barrel.ts ADDED
@@ -0,0 +1,10 @@
1
+ // TODO(BC, 2024-01-04): This is intentionally a subset of the exports from
2
+ // index.ts. Once the cruft is removed from index.ts, these two files should probably converge
3
+
4
+ // opentrons components library package
5
+
6
+ export * from './hardware-sim'
7
+
8
+ export * from './primitives'
9
+
10
+ export * from './ui-style-constants'
@@ -0,0 +1,96 @@
1
+ import type * as React from 'react'
2
+ import cx from 'classnames'
3
+ import omit from 'lodash/omit'
4
+
5
+ import { Icon } from '../icons'
6
+ import styles from './buttons.module.css'
7
+
8
+ import { BUTTON_TYPE_BUTTON } from '../primitives'
9
+
10
+ import type { BUTTON_TYPE_SUBMIT, BUTTON_TYPE_RESET } from '../primitives'
11
+ import type { IconName } from '../icons'
12
+ import type { UseHoverTooltipTargetProps } from '../tooltips'
13
+
14
+ export interface ButtonProps {
15
+ /** id attribute */
16
+ id?: string
17
+ /** click handler */
18
+ onClick?: React.MouseEventHandler
19
+ /** name attribute */
20
+ name?: string
21
+ /** title attribute */
22
+ title?: string
23
+ /** disabled attribute (setting disabled removes onClick) */
24
+ disabled?: boolean | null | undefined
25
+ /** use hover style even when not hovered */
26
+ hover?: boolean | null | undefined
27
+ /** optional Icon name */
28
+ iconName?: IconName
29
+ /** classes to apply */
30
+ className?: string
31
+ /** inverts the default color/background/border of default button style */
32
+ inverted?: boolean
33
+ /** contents of the button */
34
+ children?: React.ReactNode
35
+ /** type of button (default "button") */
36
+ type?:
37
+ | typeof BUTTON_TYPE_SUBMIT
38
+ | typeof BUTTON_TYPE_RESET
39
+ | typeof BUTTON_TYPE_BUTTON
40
+ /** ID of form that button is for */
41
+ form?: string
42
+ /** custom element or component to use instead of `<button>` */
43
+ Component?: React.ComponentType<any> | keyof JSX.IntrinsicElements
44
+ /** handlers for HoverTooltipComponent */
45
+ hoverTooltipHandlers?: UseHoverTooltipTargetProps | null | undefined
46
+ /** html tabindex property */
47
+ tabIndex?: number
48
+ /** catch all prop for pass-through props */
49
+ [name: string]: any
50
+ }
51
+
52
+ // props to strip if using a custom component
53
+ const STRIP_PROPS = [
54
+ 'inverted',
55
+ 'iconName',
56
+ 'children',
57
+ 'Component',
58
+ 'hoverTooltipHandlers',
59
+ ]
60
+
61
+ /**
62
+ * Basic, un-styled button. You probably want to use a styled button
63
+ * instead. All buttons take the same props.
64
+ *
65
+ * If you need access to the ButtonProps type, you can:
66
+ * ```js
67
+ * import {type ButtonProps} from '@opentrons/components'
68
+ * ```
69
+ * @deprecated Use {@link Btn}
70
+ */
71
+ export function Button(props: ButtonProps): JSX.Element {
72
+ const { id, name, title, disabled, hover, tabIndex, form } = props
73
+ const className = cx(props.className, { [styles.hover]: hover })
74
+ const onClick = !disabled ? props.onClick : undefined
75
+ const Component: any = props.Component ?? 'button'
76
+ const type = props.type ?? BUTTON_TYPE_BUTTON
77
+
78
+ // pass all props if using a custom component
79
+ const buttonProps = !props.Component
80
+ ? { id, name, type, form, title, disabled, onClick, className, tabIndex }
81
+ : {
82
+ ...omit(props, STRIP_PROPS),
83
+ className: cx(className, { [styles.disabled]: disabled }),
84
+ onClick,
85
+ }
86
+
87
+ // TODO(mc, 2019-04-02): hoverTooltipHandlers should probably be named more
88
+ // generically, and the Button component should probably be configured as a
89
+ // ref forwarder
90
+ return (
91
+ <Component {...props.hoverTooltipHandlers} {...buttonProps}>
92
+ {props.iconName && <Icon name={props.iconName} className={styles.icon} />}
93
+ {props.children}
94
+ </Component>
95
+ )
96
+ }
@@ -0,0 +1,24 @@
1
+ import cx from 'classnames'
2
+
3
+ import { Button } from './Button'
4
+ import styles from './buttons.module.css'
5
+
6
+ import type { ButtonProps } from './Button'
7
+
8
+ /**
9
+ * Primary application button. Fills its container and has a dark
10
+ * background with white text
11
+ *
12
+ * @deprecated Use {@link PrimaryButton}
13
+ */
14
+ export function DeprecatedPrimaryButton(props: ButtonProps): JSX.Element {
15
+ const className = cx(styles.button_primary, props.className, {
16
+ [styles.inverted]: props.inverted,
17
+ })
18
+
19
+ return (
20
+ <Button {...props} className={className}>
21
+ {props.children}
22
+ </Button>
23
+ )
24
+ }
@@ -0,0 +1,21 @@
1
+ import classnames from 'classnames'
2
+
3
+ import { Button } from './Button'
4
+ import styles from './buttons.module.css'
5
+
6
+ import type { ButtonProps } from './Button'
7
+
8
+ /**
9
+ * Flat-styled button with a default width of `9rem` and no background fill
10
+ */
11
+ export function FlatButton(props: ButtonProps): JSX.Element {
12
+ const className = classnames(styles.button_flat, props.className, {
13
+ [styles.inverted]: props.inverted,
14
+ })
15
+
16
+ return (
17
+ <Button {...props} className={className}>
18
+ {props.children}
19
+ </Button>
20
+ )
21
+ }
@@ -0,0 +1,37 @@
1
+ import cx from 'classnames'
2
+
3
+ import { Icon } from '../icons'
4
+ import { FlatButton } from './FlatButton'
5
+
6
+ import styles from './buttons.module.css'
7
+
8
+ import type { IconProps } from '../icons'
9
+ import type { ButtonProps } from './Button'
10
+
11
+ interface Props extends ButtonProps {
12
+ name: IconProps['name']
13
+ spin?: IconProps['spin']
14
+ }
15
+
16
+ /**
17
+ * FlatButton variant for a button that is a single icon. Takes props of
18
+ * both Button _and_ Icon. Use `name` to specify icon name.
19
+ *
20
+ * @deprecated Use {@link Btn} and {@link Icon}
21
+ */
22
+ export function IconButton(props: Props): JSX.Element {
23
+ // TODO(mc, 2020-02-04): ButtonProps::name conflicts with IconProps::name
24
+ // this component will need to be redone so underlying `button` can still
25
+ // receive an HTML name for a11y
26
+ const { name, spin, ...buttonProps } = props
27
+ const iconProps = { name, spin }
28
+ const className = cx(styles.button_icon, props.className, {
29
+ [styles.inverted]: props.inverted,
30
+ })
31
+
32
+ return (
33
+ <FlatButton {...buttonProps} className={className} iconName={undefined}>
34
+ <Icon {...iconProps} />
35
+ </FlatButton>
36
+ )
37
+ }
@@ -0,0 +1,24 @@
1
+ import cx from 'classnames'
2
+
3
+ import { Button } from './Button'
4
+ import styles from './buttons.module.css'
5
+
6
+ import type { ButtonProps } from './Button'
7
+
8
+ /**
9
+ * Button with no background fill and a dark border.
10
+ * Use inverted prop for buttons on dark backgrounds.
11
+ *
12
+ * @deprecated Use {@link SecondaryBtn}
13
+ */
14
+ export function OutlineButton(props: ButtonProps): JSX.Element {
15
+ const className = cx(styles.button_outline, props.className, {
16
+ [styles.inverted]: props.inverted,
17
+ })
18
+
19
+ return (
20
+ <Button {...props} className={className}>
21
+ {props.children}
22
+ </Button>
23
+ )
24
+ }
@@ -0,0 +1,7 @@
1
+ // button components
2
+
3
+ export * from './Button'
4
+ export * from './FlatButton'
5
+ export * from './DeprecatedPrimaryButton'
6
+ export * from './IconButton'
7
+ export * from './OutlineButton'
@@ -0,0 +1,13 @@
1
+ import type * as React from 'react'
2
+
3
+ import styles from './styles.module.css'
4
+
5
+ export interface ControlInfoProps {
6
+ children: React.ReactNode
7
+ className?: string
8
+ }
9
+
10
+ export function ControlInfo(props: ControlInfoProps): JSX.Element {
11
+ const { children, className = styles.control_info } = props
12
+ return <div className={className}>{children}</div>
13
+ }
@@ -0,0 +1,28 @@
1
+ import type * as React from 'react'
2
+ import cx from 'classnames'
3
+
4
+ import { OutlineButton } from '../buttons'
5
+ import { LabeledControl } from './LabeledControl'
6
+ import styles from './styles.module.css'
7
+
8
+ import type { ButtonProps } from '../buttons'
9
+
10
+ export interface LabeledButtonProps {
11
+ label: string
12
+ buttonProps: ButtonProps
13
+ children: React.ReactNode
14
+ }
15
+
16
+ export function LabeledButton(props: LabeledButtonProps): JSX.Element {
17
+ const { label, buttonProps } = props
18
+ const buttonClass = cx(styles.labeled_button, buttonProps.className)
19
+
20
+ return (
21
+ <LabeledControl
22
+ label={label}
23
+ control={<OutlineButton {...buttonProps} className={buttonClass} />}
24
+ >
25
+ {props.children}
26
+ </LabeledControl>
27
+ )
28
+ }
@@ -0,0 +1,35 @@
1
+ import type * as React from 'react'
2
+ import cx from 'classnames'
3
+
4
+ import { DeprecatedCheckboxField } from '../forms'
5
+ import { LabeledControl } from './LabeledControl'
6
+ import styles from './styles.module.css'
7
+
8
+ export interface LabeledCheckboxProps {
9
+ label: string
10
+ name: string
11
+ value: boolean
12
+ className?: string
13
+ children: React.ReactNode
14
+ onChange: React.ChangeEventHandler<HTMLInputElement>
15
+ }
16
+
17
+ export function LabeledCheckbox(props: LabeledCheckboxProps): JSX.Element {
18
+ const { label, value, name, onChange } = props
19
+ const checkboxClass = cx(styles.labeled_checkbox, props.className)
20
+ return (
21
+ <LabeledControl
22
+ label={label}
23
+ control={
24
+ <DeprecatedCheckboxField
25
+ className={checkboxClass}
26
+ name={name}
27
+ value={value}
28
+ onChange={onChange}
29
+ />
30
+ }
31
+ >
32
+ {props.children}
33
+ </LabeledControl>
34
+ )
35
+ }
@@ -0,0 +1,24 @@
1
+ import type * as React from 'react'
2
+
3
+ import { ControlInfo } from './ControlInfo'
4
+ import styles from './styles.module.css'
5
+
6
+ export interface LabeledControlProps {
7
+ label: string
8
+ control: React.ReactNode
9
+ children?: React.ReactNode
10
+ }
11
+
12
+ export function LabeledControl(props: LabeledControlProps): JSX.Element {
13
+ const { label, control, children } = props
14
+
15
+ return (
16
+ <div className={styles.labeled_control_wrapper}>
17
+ <div className={styles.labeled_control}>
18
+ <p className={styles.labeled_control_label}>{label}</p>
19
+ {control}
20
+ </div>
21
+ {children && <ControlInfo>{children}</ControlInfo>}
22
+ </div>
23
+ )
24
+ }
@@ -0,0 +1,27 @@
1
+ import type * as React from 'react'
2
+
3
+ import { StackedLabeledControl } from './StackedLabeledControl'
4
+ import { RadioGroup } from '../forms'
5
+
6
+ import type { RadioGroupProps } from '../forms'
7
+
8
+ export interface LabeledRadioGroupProps extends RadioGroupProps {
9
+ label: string
10
+ children: React.ReactNode
11
+ 'data-test'?: string
12
+ }
13
+
14
+ export function LabeledRadioGroup(props: LabeledRadioGroupProps): JSX.Element {
15
+ const { label, value, options, onChange } = props
16
+
17
+ return (
18
+ <StackedLabeledControl
19
+ label={label}
20
+ control={
21
+ <RadioGroup value={value} options={options} onChange={onChange} />
22
+ }
23
+ >
24
+ {props.children}
25
+ </StackedLabeledControl>
26
+ )
27
+ }
@@ -0,0 +1,34 @@
1
+ import type * as React from 'react'
2
+
3
+ import { DropdownField } from '../forms'
4
+ import { LabeledControl } from './LabeledControl'
5
+ import styles from './styles.module.css'
6
+
7
+ import type { DropdownFieldProps } from '../forms'
8
+
9
+ export interface LabeledSelectProps extends DropdownFieldProps {
10
+ label: string
11
+ children: React.ReactNode
12
+ /** optional data test id for the container */
13
+ 'data-test'?: string
14
+ }
15
+
16
+ export function LabeledSelect(props: LabeledSelectProps): JSX.Element {
17
+ const { label, value, options, onChange } = props
18
+
19
+ return (
20
+ <LabeledControl
21
+ label={label}
22
+ control={
23
+ <DropdownField
24
+ className={styles.labeled_select}
25
+ value={value}
26
+ options={options}
27
+ onChange={onChange}
28
+ />
29
+ }
30
+ >
31
+ {props.children}
32
+ </LabeledControl>
33
+ )
34
+ }
@@ -0,0 +1,35 @@
1
+ import type * as React from 'react'
2
+
3
+ import { LabeledControl } from './LabeledControl'
4
+ import { ToggleButton } from './ToggleButton'
5
+ import styles from './styles.module.css'
6
+
7
+ export interface LabeledToggleProps {
8
+ label: string
9
+ toggledOn: boolean
10
+ disabled?: boolean
11
+ children?: React.ReactNode
12
+ onClick: () => unknown
13
+ /** optional data test id for the container */
14
+ 'data-test'?: string
15
+ }
16
+
17
+ export function LabeledToggle(props: LabeledToggleProps): JSX.Element {
18
+ const { label, toggledOn, disabled, onClick } = props
19
+
20
+ return (
21
+ <LabeledControl
22
+ label={label}
23
+ control={
24
+ <ToggleButton
25
+ className={styles.labeled_toggle_button}
26
+ toggledOn={toggledOn}
27
+ disabled={disabled}
28
+ onClick={onClick}
29
+ />
30
+ }
31
+ >
32
+ {props.children}
33
+ </LabeledControl>
34
+ )
35
+ }
@@ -0,0 +1,28 @@
1
+ import type * as React from 'react'
2
+
3
+ import { ControlInfo } from './ControlInfo'
4
+ import styles from './styles.module.css'
5
+
6
+ export interface StackedLabeledControlProps {
7
+ label: string
8
+ control: React.ReactNode
9
+ children?: React.ReactNode
10
+ }
11
+
12
+ export function StackedLabeledControl(
13
+ props: StackedLabeledControlProps
14
+ ): JSX.Element {
15
+ const { label, control, children } = props
16
+
17
+ return (
18
+ <div className={styles.labeled_control_wrapper}>
19
+ <p className={styles.stacked_labeled_control_label}>{label}</p>
20
+ {children && (
21
+ <ControlInfo className={styles.stacked_control_info}>
22
+ {children}
23
+ </ControlInfo>
24
+ )}
25
+ <div className={styles.stacked_labeled_control}>{control}</div>
26
+ </div>
27
+ )
28
+ }
@@ -0,0 +1,25 @@
1
+ // reusable toggle button with on off styling for connect to robot and opt in/out
2
+ import cx from 'classnames'
3
+ import { IconButton } from '../buttons'
4
+ import styles from './styles.module.css'
5
+
6
+ import type { ButtonProps } from '../buttons'
7
+
8
+ export interface ToggleButtonProps extends ButtonProps {
9
+ toggledOn: boolean
10
+ }
11
+
12
+ export function ToggleButton(props: ToggleButtonProps): JSX.Element {
13
+ // TODO(mc, 2020-02-04): destructuring `name` to avoid flow error
14
+ // ButtonProps::name conflicts with IconProps::name, and IconButton
15
+ // has `name` prop to pass to Icon. IconButton will need to be redone
16
+ const { toggledOn, name, ...buttonProps } = props
17
+ const className = cx(styles.robot_item_icon, props.className, {
18
+ [styles.toggled_on]: toggledOn,
19
+ [styles.toggled_off]: !toggledOn,
20
+ })
21
+
22
+ const toggleIcon = toggledOn ? 'ot-toggle-switch-on' : 'ot-toggle-switch-off'
23
+
24
+ return <IconButton {...buttonProps} name={toggleIcon} className={className} />
25
+ }
@@ -0,0 +1,10 @@
1
+ // TODO: All of these are not actually reusable and shouldn't be in the
2
+ // components library. They belong in the app components (and they also
3
+ // belong in the please-refactor-these-to-use-primitives-and-styled-components
4
+ // category). We should move them all.
5
+ export * from './ToggleButton'
6
+ export * from './LabeledToggle'
7
+ export * from './LabeledButton'
8
+ export * from './LabeledSelect'
9
+ export * from './LabeledCheckbox'
10
+ export * from './LabeledRadioGroup'
@@ -0,0 +1,31 @@
1
+ import * as React from 'react'
2
+
3
+ import { DeprecatedCheckboxField as DeprecatedCheckboxComponent } from './DeprecatedCheckboxField'
4
+
5
+ import type { Story, Meta } from '@storybook/react'
6
+
7
+ export default {
8
+ title: 'Library/Molecules/Forms/Deprecated Checkbox Field',
9
+ component: DeprecatedCheckboxComponent,
10
+ } as Meta
11
+
12
+ const Template: Story<
13
+ React.ComponentProps<typeof DeprecatedCheckboxComponent>
14
+ > = args => {
15
+ const [isChecked, setIsChecked] = React.useState<boolean>(false)
16
+ return (
17
+ <DeprecatedCheckboxComponent
18
+ {...args}
19
+ onChange={e => {
20
+ setIsChecked(!isChecked)
21
+ args.onChange(e)
22
+ }}
23
+ value={isChecked}
24
+ />
25
+ )
26
+ }
27
+ export const DeprecatedCheckboxField = Template.bind({})
28
+ DeprecatedCheckboxField.args = {
29
+ label: 'Remember this setting?',
30
+ isIndeterminate: false,
31
+ }