@opentrons/components 0.1.6-alpha.15 → 0.1.6-alpha.17
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.
- package/lib/atoms/Checkbox/index.d.ts +1 -0
- package/lib/atoms/InputField/index.d.ts +9 -9
- package/lib/atoms/ListItem/ListItemChildren/ListItemCustomize.d.ts +2 -2
- package/lib/atoms/ListItem/ListItemChildren/ListItemDescriptor.d.ts +1 -0
- package/lib/atoms/ListItem/index.d.ts +1 -1
- package/lib/atoms/Tag/index.d.ts +1 -0
- package/lib/hardware-sim/BaseDeck/BaseDeck.d.ts +6 -6
- package/lib/hardware-sim/Deck/RobotCoordsText.d.ts +1 -0
- package/lib/hardware-sim/Deck/RobotWorkSpace.d.ts +2 -2
- package/lib/hooks/useMenuHandleClickOutside.d.ts +3 -3
- package/lib/molecules/DropdownMenu/index.d.ts +2 -2
- package/lib/molecules/InfoScreen/index.d.ts +3 -1
- package/lib/organisms/Toolbox/index.d.ts +1 -1
- package/package.json +6 -6
- package/src/__mocks__/file.js +10 -0
- package/src/__tests__/utils.test.ts +27 -0
- package/src/alerts/AlertItem.stories.tsx +49 -0
- package/src/alerts/AlertItem.tsx +85 -0
- package/src/alerts/alerts.module.css +103 -0
- package/src/alerts/index.ts +3 -0
- package/src/atoms/Checkbox/Checkbox.stories.tsx +24 -0
- package/src/atoms/Checkbox/__tests__/Checkbox.test.tsx +55 -0
- package/src/atoms/Checkbox/index.tsx +127 -0
- package/src/atoms/CheckboxField/CheckboxField.stories.tsx +30 -0
- package/src/atoms/CheckboxField/__tests__/CheckboxField.test.tsx +141 -0
- package/src/atoms/CheckboxField/index.tsx +171 -0
- package/src/atoms/Chip/Chip.stories.tsx +59 -0
- package/src/atoms/Chip/__tests__/Chip.test.tsx +429 -0
- package/src/atoms/Chip/index.tsx +172 -0
- package/src/atoms/Divider/index.tsx +15 -0
- package/src/atoms/InputField/InputField.stories.tsx +77 -0
- package/src/atoms/InputField/__tests__/InputField.test.tsx +63 -0
- package/src/atoms/InputField/index.tsx +383 -0
- package/src/atoms/ListButton/ListButton.stories.tsx +133 -0
- package/src/atoms/ListButton/ListButtonChildren/ListButtonAccordion.tsx +65 -0
- package/src/atoms/ListButton/ListButtonChildren/ListButtonAccordionContainer.tsx +23 -0
- package/src/atoms/ListButton/ListButtonChildren/ListButtonRadioButton.tsx +108 -0
- package/src/atoms/ListButton/ListButtonChildren/index.ts +3 -0
- package/src/atoms/ListButton/__tests__/ListButton.test.tsx +46 -0
- package/src/atoms/ListButton/__tests__/ListButtonAccordion.test.tsx +35 -0
- package/src/atoms/ListButton/__tests__/ListButtonRadioButton.test.tsx +27 -0
- package/src/atoms/ListButton/index.tsx +72 -0
- package/src/atoms/ListItem/ListItem.stories.tsx +96 -0
- package/src/atoms/ListItem/ListItemChildren/ListItemCustomize.tsx +78 -0
- package/src/atoms/ListItem/ListItemChildren/ListItemDescriptor.tsx +42 -0
- package/src/atoms/ListItem/ListItemChildren/index.ts +2 -0
- package/src/atoms/ListItem/__tests__/ListItem.test.tsx +61 -0
- package/src/atoms/ListItem/index.tsx +89 -0
- package/src/atoms/MenuList/MenuItem.stories.tsx +20 -0
- package/src/atoms/MenuList/MenuItem.tsx +55 -0
- package/src/atoms/MenuList/MenuList.stories.tsx +31 -0
- package/src/atoms/MenuList/OverflowBtn.stories.tsx +17 -0
- package/src/atoms/MenuList/OverflowBtn.tsx +76 -0
- package/src/atoms/MenuList/__tests__/MenuItem.test.tsx +50 -0
- package/src/atoms/MenuList/__tests__/MenuList.test.tsx +36 -0
- package/src/atoms/MenuList/__tests__/OverflowBtn.test.tsx +33 -0
- package/src/atoms/MenuList/index.tsx +50 -0
- package/src/atoms/Snackbar/Snackbar.stories.tsx +67 -0
- package/src/atoms/Snackbar/__tests__/Snackbar.test.tsx +73 -0
- package/src/atoms/Snackbar/index.tsx +91 -0
- package/src/atoms/StepMeter/index.tsx +53 -0
- package/src/atoms/StyledText/LegacyStyledText.stories.tsx +106 -0
- package/src/atoms/StyledText/LegacyStyledText.tsx +95 -0
- package/src/atoms/StyledText/StyledText.stories.tsx +46 -0
- package/src/atoms/StyledText/StyledText.tsx +323 -0
- package/src/atoms/StyledText/index.ts +2 -0
- package/src/atoms/Tag/Tag.stories.tsx +48 -0
- package/src/atoms/Tag/__tests__/Tag.test.tsx +55 -0
- package/src/atoms/Tag/index.tsx +116 -0
- package/src/atoms/Toast/ODDToast.stories.tsx +68 -0
- package/src/atoms/Toast/Toast.stories.tsx +55 -0
- package/src/atoms/Toast/__tests__/ODDToast.test.tsx +178 -0
- package/src/atoms/Toast/__tests__/Toast.test.tsx +174 -0
- package/src/atoms/Toast/index.tsx +439 -0
- package/src/atoms/ToggleGroup/ToggleGroup.stories.tsx +39 -0
- package/src/atoms/ToggleGroup/__tests__/ToggleGroup.test.tsx +28 -0
- package/src/atoms/ToggleGroup/index.tsx +91 -0
- package/src/atoms/Tooltip/Tooltip.stories.tsx +99 -0
- package/src/atoms/Tooltip/__tests__/Tooltip.test.tsx +78 -0
- package/src/atoms/Tooltip/index.tsx +38 -0
- package/src/atoms/buttons/AlertPrimaryButton.tsx +26 -0
- package/src/atoms/buttons/AltPrimaryButton.tsx +31 -0
- package/src/atoms/buttons/EmptySelectorButton.stories.tsx +36 -0
- package/src/atoms/buttons/EmptySelectorButton.tsx +83 -0
- package/src/atoms/buttons/LargeButton.stories.tsx +99 -0
- package/src/atoms/buttons/LargeButton.tsx +320 -0
- package/src/atoms/buttons/PrimaryButton.tsx +36 -0
- package/src/atoms/buttons/RadioButton.stories.tsx +35 -0
- package/src/atoms/buttons/RadioButton.tsx +217 -0
- package/src/atoms/buttons/SecondaryButton.tsx +62 -0
- package/src/atoms/buttons/__tests__/AlertPrimaryButton.test.tsx +47 -0
- package/src/atoms/buttons/__tests__/AltPrimaryButton.test.tsx +57 -0
- package/src/atoms/buttons/__tests__/EmptySelectorButton.test.tsx +42 -0
- package/src/atoms/buttons/__tests__/LargeButton.test.tsx +91 -0
- package/src/atoms/buttons/__tests__/PrimaryButton.test.tsx +64 -0
- package/src/atoms/buttons/__tests__/RadioButton.test.tsx +98 -0
- package/src/atoms/buttons/__tests__/SecondaryButton.test.tsx +54 -0
- package/src/atoms/buttons/buttons.stories.tsx +78 -0
- package/src/atoms/buttons/index.ts +6 -0
- package/src/atoms/index.ts +20 -0
- package/src/barrel.ts +10 -0
- package/src/buttons/Button.tsx +96 -0
- package/src/buttons/DeprecatedPrimaryButton.tsx +24 -0
- package/src/buttons/FlatButton.tsx +21 -0
- package/src/buttons/IconButton.tsx +37 -0
- package/src/buttons/OutlineButton.tsx +24 -0
- package/src/buttons/buttons.module.css +428 -0
- package/src/buttons/index.ts +7 -0
- package/src/controls/ControlInfo.tsx +13 -0
- package/src/controls/LabeledButton.tsx +28 -0
- package/src/controls/LabeledCheckbox.tsx +35 -0
- package/src/controls/LabeledControl.tsx +24 -0
- package/src/controls/LabeledRadioGroup.tsx +27 -0
- package/src/controls/LabeledSelect.tsx +34 -0
- package/src/controls/LabeledToggle.tsx +35 -0
- package/src/controls/StackedLabeledControl.tsx +28 -0
- package/src/controls/ToggleButton.tsx +25 -0
- package/src/controls/index.ts +10 -0
- package/src/controls/styles.module.css +103 -0
- package/src/forms/DeprecatedCheckboxField.stories.tsx +31 -0
- package/src/forms/DeprecatedCheckboxField.tsx +94 -0
- package/src/forms/DropdownField.stories.tsx +44 -0
- package/src/forms/DropdownField.tsx +106 -0
- package/src/forms/FormGroup.stories.tsx +31 -0
- package/src/forms/FormGroup.tsx +53 -0
- package/src/forms/InputField.stories.tsx +41 -0
- package/src/forms/LegacyInputField.tsx +123 -0
- package/src/forms/RadioGroup.stories.tsx +44 -0
- package/src/forms/RadioGroup.tsx +87 -0
- package/src/forms/Select.module.css +118 -0
- package/src/forms/Select.stories.tsx +117 -0
- package/src/forms/Select.tsx +132 -0
- package/src/forms/SelectField.module.css +16 -0
- package/src/forms/SelectField.tsx +94 -0
- package/src/forms/ToggleField.stories.tsx +31 -0
- package/src/forms/ToggleField.tsx +59 -0
- package/src/forms/__tests__/DeprecatedCheckboxField.test.tsx +5 -0
- package/src/forms/__tests__/DropdownField.test.tsx +5 -0
- package/src/forms/__tests__/InputField.test.tsx +5 -0
- package/src/forms/__tests__/Select.test.tsx +5 -0
- package/src/forms/__tests__/SelectField.test.tsx +5 -0
- package/src/forms/__tests__/ToggleField.test.tsx +5 -0
- package/src/forms/forms.module.css +239 -0
- package/src/forms/index.ts +8 -0
- package/src/hardware-sim/BaseDeck/BaseDeck.stories.tsx +94 -0
- package/src/hardware-sim/BaseDeck/BaseDeck.tsx +423 -0
- package/src/hardware-sim/BaseDeck/SingleSlotFixture.tsx +199 -0
- package/src/hardware-sim/BaseDeck/SlotBase.tsx +5 -0
- package/src/hardware-sim/BaseDeck/SlotClip.tsx +15 -0
- package/src/hardware-sim/BaseDeck/StagingAreaFixture.tsx +114 -0
- package/src/hardware-sim/BaseDeck/WasteChuteFixture.tsx +114 -0
- package/src/hardware-sim/BaseDeck/WasteChuteStagingAreaFixture.tsx +68 -0
- package/src/hardware-sim/BaseDeck/__fixtures__/index.ts +165 -0
- package/src/hardware-sim/BaseDeck/index.ts +5 -0
- package/src/hardware-sim/Deck/DeckFromLayers.tsx +58 -0
- package/src/hardware-sim/Deck/FlexTrash.tsx +128 -0
- package/src/hardware-sim/Deck/MoveLabwareOnDeck.stories.tsx +97 -0
- package/src/hardware-sim/Deck/MoveLabwareOnDeck.tsx +251 -0
- package/src/hardware-sim/Deck/OT2Layers.tsx +153 -0
- package/src/hardware-sim/Deck/RobotCoordsForeignDiv.tsx +46 -0
- package/src/hardware-sim/Deck/RobotCoordsForeignObject.tsx +42 -0
- package/src/hardware-sim/Deck/RobotCoordsText.tsx +32 -0
- package/src/hardware-sim/Deck/RobotWorkSpace.tsx +90 -0
- package/src/hardware-sim/Deck/SlotLabels.tsx +111 -0
- package/src/hardware-sim/Deck/__mocks__/getDeckDefinitions.ts +29 -0
- package/src/hardware-sim/Deck/constants.ts +12 -0
- package/src/hardware-sim/Deck/index.tsx +8 -0
- package/src/hardware-sim/DeckConfigurator/AbsorbanceReaderFixture.tsx +91 -0
- package/src/hardware-sim/DeckConfigurator/DeckConfigurator.stories.tsx +110 -0
- package/src/hardware-sim/DeckConfigurator/EmptyConfigFixture.tsx +131 -0
- package/src/hardware-sim/DeckConfigurator/HeaterShakerFixture.tsx +102 -0
- package/src/hardware-sim/DeckConfigurator/MagneticBlockFixture.tsx +130 -0
- package/src/hardware-sim/DeckConfigurator/StagingAreaConfigFixture.tsx +89 -0
- package/src/hardware-sim/DeckConfigurator/StaticFixture.tsx +54 -0
- package/src/hardware-sim/DeckConfigurator/TemperatureModuleFixture.tsx +103 -0
- package/src/hardware-sim/DeckConfigurator/ThermocyclerFixture.tsx +89 -0
- package/src/hardware-sim/DeckConfigurator/TrashBinConfigFixture.tsx +99 -0
- package/src/hardware-sim/DeckConfigurator/WasteChuteConfigFixture.tsx +96 -0
- package/src/hardware-sim/DeckConfigurator/constants.ts +81 -0
- package/src/hardware-sim/DeckConfigurator/index.tsx +285 -0
- package/src/hardware-sim/DeckSlotLocation/index.tsx +88 -0
- package/src/hardware-sim/Labware/Labware.tsx +173 -0
- package/src/hardware-sim/Labware/LabwareAdapter/Opentrons96DeepWellAdapter.tsx +23 -0
- package/src/hardware-sim/Labware/LabwareAdapter/Opentrons96FlatBottomAdapter.tsx +7 -0
- package/src/hardware-sim/Labware/LabwareAdapter/OpentronsAluminumFlatBottomPlate.tsx +13 -0
- package/src/hardware-sim/Labware/LabwareAdapter/OpentronsAutoclavableDeckRiser.tsx +100 -0
- package/src/hardware-sim/Labware/LabwareAdapter/OpentronsFlex96TiprackAdapter.tsx +13 -0
- package/src/hardware-sim/Labware/LabwareAdapter/OpentronsToughPCRAutoSealingLid.tsx +83 -0
- package/src/hardware-sim/Labware/LabwareAdapter/OpentronsUniversalFlatAdapter.tsx +13 -0
- package/src/hardware-sim/Labware/LabwareAdapter/index.tsx +73 -0
- package/src/hardware-sim/Labware/LabwareRender.stories.tsx +96 -0
- package/src/hardware-sim/Labware/LabwareRender.tsx +173 -0
- package/src/hardware-sim/Labware/LabwareStackRender.tsx +272 -0
- package/src/hardware-sim/Labware/__tests__/Labware.test.tsx +43 -0
- package/src/hardware-sim/Labware/__tests__/LabwareRender.test.tsx +54 -0
- package/src/hardware-sim/Labware/index.ts +6 -0
- package/src/hardware-sim/Labware/labwareInternals/FilledWells.tsx +39 -0
- package/src/hardware-sim/Labware/labwareInternals/LabwareOutline.tsx +133 -0
- package/src/hardware-sim/Labware/labwareInternals/LabwareWellLabels.tsx +118 -0
- package/src/hardware-sim/Labware/labwareInternals/StaticLabware.tsx +121 -0
- package/src/hardware-sim/Labware/labwareInternals/StrokedWells.tsx +38 -0
- package/src/hardware-sim/Labware/labwareInternals/StyledWells.tsx +77 -0
- package/src/hardware-sim/Labware/labwareInternals/Well.tsx +74 -0
- package/src/hardware-sim/Labware/labwareInternals/WellLabels.tsx +121 -0
- package/src/hardware-sim/Labware/labwareInternals/__tests__/LabwareWellLabels.test.tsx +66 -0
- package/src/hardware-sim/Labware/labwareInternals/__tests__/StrokedWells.test.tsx +31 -0
- package/src/hardware-sim/Labware/labwareInternals/__tests__/WellLabels.test.tsx +91 -0
- package/src/hardware-sim/Labware/labwareInternals/index.ts +8 -0
- package/src/hardware-sim/Labware/labwareInternals/types.ts +18 -0
- package/src/hardware-sim/Module/HeaterShaker.tsx +83 -0
- package/src/hardware-sim/Module/MagneticBlock.tsx +49 -0
- package/src/hardware-sim/Module/MagneticModule.tsx +51 -0
- package/src/hardware-sim/Module/Module.stories.tsx +90 -0
- package/src/hardware-sim/Module/ModuleTag.tsx +38 -0
- package/src/hardware-sim/Module/PlateReader.tsx +208 -0
- package/src/hardware-sim/Module/Temperature.tsx +54 -0
- package/src/hardware-sim/Module/Thermocycler/ThermocyclerGEN1.tsx +248 -0
- package/src/hardware-sim/Module/Thermocycler/ThermocyclerGEN2.tsx +286 -0
- package/src/hardware-sim/Module/Thermocycler/index.tsx +49 -0
- package/src/hardware-sim/Module/index.tsx +227 -0
- package/src/hardware-sim/Pipette/EightEmanatingNozzles.tsx +23 -0
- package/src/hardware-sim/Pipette/EmanatingNozzle.tsx +52 -0
- package/src/hardware-sim/Pipette/PipetteRender.stories.tsx +71 -0
- package/src/hardware-sim/Pipette/PipetteRender.tsx +92 -0
- package/src/hardware-sim/Pipette/__tests__/EightEmanatingNozzles.test.tsx +16 -0
- package/src/hardware-sim/Pipette/__tests__/EmanatingNozzle.test.tsx +67 -0
- package/src/hardware-sim/Pipette/__tests__/PipetteRender.test.tsx +99 -0
- package/src/hardware-sim/Pipette/constants.ts +10 -0
- package/src/hardware-sim/Pipette/index.ts +1 -0
- package/src/hardware-sim/ProtocolDeck/LabwareInfo.tsx +68 -0
- package/src/hardware-sim/ProtocolDeck/ProtocolDeck.stories.tsx +25 -0
- package/src/hardware-sim/ProtocolDeck/__fixtures__/analysis_QIAseqFX24xv4_8.json +47145 -0
- package/src/hardware-sim/ProtocolDeck/index.tsx +174 -0
- package/src/hardware-sim/ProtocolDeck/types.ts +6 -0
- package/src/hardware-sim/ProtocolDeck/utils/__tests__/getLabwareInforByLiquidId.test.ts +158 -0
- package/src/hardware-sim/ProtocolDeck/utils/getInitiallyLoadedLabwareByAdapter.ts +33 -0
- package/src/hardware-sim/ProtocolDeck/utils/getLabwareInSlots.ts +155 -0
- package/src/hardware-sim/ProtocolDeck/utils/getLabwareInfoByLiquidId.ts +42 -0
- package/src/hardware-sim/ProtocolDeck/utils/getModulesInSlots.ts +129 -0
- package/src/hardware-sim/ProtocolDeck/utils/getStandardDeckViewLayerBlockList.ts +29 -0
- package/src/hardware-sim/ProtocolDeck/utils/getWellFillFromLabwareId.ts +30 -0
- package/src/hardware-sim/ProtocolDeck/utils/index.ts +3 -0
- package/src/hardware-sim/RobotCoordinateSpace/RobotCoordinateSpace.tsx +28 -0
- package/src/hardware-sim/RobotCoordinateSpace/RobotCoordinateSpaceWithRef.tsx +52 -0
- package/src/hardware-sim/RobotCoordinateSpace/index.ts +2 -0
- package/src/hardware-sim/index.ts +11 -0
- package/src/hardware-sim/utils.ts +18 -0
- package/src/helix-design-system/borders.ts +32 -0
- package/src/helix-design-system/colors.ts +100 -0
- package/src/helix-design-system/index.ts +4 -0
- package/src/helix-design-system/product/index.ts +1 -0
- package/src/helix-design-system/product/typography.ts +151 -0
- package/src/helix-design-system/style.ts +2 -0
- package/src/hooks/__tests__/useConditionalConfirm.test.tsx +5 -0
- package/src/hooks/__tests__/useDrag.test.ts +46 -0
- package/src/hooks/__tests__/useIdle.test.ts +68 -0
- package/src/hooks/__tests__/useInterval.test.tsx +5 -0
- package/src/hooks/__tests__/useLongPress.test.ts +25 -0
- package/src/hooks/__tests__/useMountEffect.test.tsx +5 -0
- package/src/hooks/__tests__/usePrevious.test.tsx +5 -0
- package/src/hooks/__tests__/useScrolling.test.tsx +46 -0
- package/src/hooks/__tests__/useSwipe.test.tsx +26 -0
- package/src/hooks/__tests__/useTimeout.test.tsx +5 -0
- package/src/hooks/__tests__/useToggle.test.tsx +5 -0
- package/src/hooks/index.ts +15 -0
- package/src/hooks/useConditionalConfirm.ts +70 -0
- package/src/hooks/useDrag.ts +90 -0
- package/src/hooks/useIdle.ts +68 -0
- package/src/hooks/useInterval.ts +38 -0
- package/src/hooks/useLongPress.ts +83 -0
- package/src/hooks/useMenuHandleClickOutside.tsx +46 -0
- package/src/hooks/useMountEffect.ts +12 -0
- package/src/hooks/usePrevious.ts +19 -0
- package/src/hooks/useScrolling.ts +33 -0
- package/src/hooks/useSelectDeckLocation/SelectDeckLocation.stories.tsx +55 -0
- package/src/hooks/useSelectDeckLocation/index.tsx +331 -0
- package/src/hooks/useSwipe.ts +86 -0
- package/src/hooks/useTimeout.ts +33 -0
- package/src/hooks/useToggle.ts +27 -0
- package/src/icons/Icon.stories.tsx +37 -0
- package/src/icons/Icon.tsx +79 -0
- package/src/icons/IconList.stories.tsx +108 -0
- package/src/icons/ModuleIcon.tsx +48 -0
- package/src/icons/NotificationIcon.tsx +41 -0
- package/src/icons/icon-data.ts +821 -0
- package/src/icons/index.ts +6 -0
- package/src/images/index.ts +1 -0
- package/src/images/labware/index.ts +1 -0
- package/src/images/labware/measurement-guide/images/depth/depth-plate-flat@3x.png +0 -0
- package/src/images/labware/measurement-guide/images/depth/depth-plate-round@3x.png +0 -0
- package/src/images/labware/measurement-guide/images/depth/depth-plate-v@3x.png +0 -0
- package/src/images/labware/measurement-guide/images/depth/depth-reservoir-and-tubes-flat@3x.png +0 -0
- package/src/images/labware/measurement-guide/images/depth/depth-reservoir-and-tubes-round@3x.png +0 -0
- package/src/images/labware/measurement-guide/images/depth/depth-reservoir-and-tubes-v@3x.png +0 -0
- package/src/images/labware/measurement-guide/images/depth/length-tip-rack@3x.png +0 -0
- package/src/images/labware/measurement-guide/images/dimensions/footprint@3x.png +0 -0
- package/src/images/labware/measurement-guide/images/dimensions/height-alum-block-plate@3x.png +0 -0
- package/src/images/labware/measurement-guide/images/dimensions/height-alum-block-tubes@3x.png +0 -0
- package/src/images/labware/measurement-guide/images/dimensions/height-plate-and-reservoir@3x.png +0 -0
- package/src/images/labware/measurement-guide/images/dimensions/height-tip-rack@3x.png +0 -0
- package/src/images/labware/measurement-guide/images/dimensions/height-tube-rack-irregular@3x.png +0 -0
- package/src/images/labware/measurement-guide/images/dimensions/height-tube-rack@3x.png +0 -0
- package/src/images/labware/measurement-guide/images/offset/offset-reservoir@3x.png +0 -0
- package/src/images/labware/measurement-guide/images/offset/offset-well-circular@3x.png +0 -0
- package/src/images/labware/measurement-guide/images/offset/offset-well-rectangular@3x.png +0 -0
- package/src/images/labware/measurement-guide/images/shape/shape-circular@3x.png +0 -0
- package/src/images/labware/measurement-guide/images/shape/shape-rectangular@3x.png +0 -0
- package/src/images/labware/measurement-guide/images/spacing/spacing-reservoir-multi-row@3x.png +0 -0
- package/src/images/labware/measurement-guide/images/spacing/spacing-reservoir@3x.png +0 -0
- package/src/images/labware/measurement-guide/images/spacing/spacing-well-circular@3x.png +0 -0
- package/src/images/labware/measurement-guide/images/spacing/spacing-well-rectangular@3x.png +0 -0
- package/src/images/labware/measurement-guide/index.ts +272 -0
- package/src/index.module.css +9 -0
- package/src/index.ts +41 -0
- package/src/instrument/InstrumentDiagram.stories.tsx +42 -0
- package/src/instrument/InstrumentDiagram.tsx +58 -0
- package/src/instrument/InstrumentGroup.stories.tsx +88 -0
- package/src/instrument/InstrumentGroup.tsx +35 -0
- package/src/instrument/InstrumentInfo.tsx +107 -0
- package/src/instrument/PipetteSelect.module.css +14 -0
- package/src/instrument/PipetteSelect.stories.tsx +40 -0
- package/src/instrument/PipetteSelect.tsx +170 -0
- package/src/instrument/__tests__/InstrumentInfo.test.tsx +55 -0
- package/src/instrument/__tests__/PipetteSelect.test.tsx +4 -0
- package/src/instrument/eight-channel-flex.png +0 -0
- package/src/instrument/index.ts +4 -0
- package/src/instrument/instrument.module.css +45 -0
- package/src/instrument/multi-channel_GEN1_800px.png +0 -0
- package/src/instrument/multi-channel_GEN2_800px.png +0 -0
- package/src/instrument/ninety-six-channel-gen1.png +0 -0
- package/src/instrument/pipetteGEN2Multi.png +0 -0
- package/src/instrument/pipetteGEN2Single.png +0 -0
- package/src/instrument/pipetteMulti.png +0 -0
- package/src/instrument/pipetteSingle.png +0 -0
- package/src/instrument/single-channel-flex.png +0 -0
- package/src/instrument/single-channel_GEN2_800px.png +0 -0
- package/src/instrument/single_channel_GEN1_800px.png +0 -0
- package/src/interaction-enhancers/ClickOutside.ts +57 -0
- package/src/interaction-enhancers/HandleKeypress.tsx +69 -0
- package/src/interaction-enhancers/__tests__/useHover.test.tsx +4 -0
- package/src/interaction-enhancers/index.ts +4 -0
- package/src/interaction-enhancers/useHover.ts +84 -0
- package/src/interaction-enhancers/useOnClickOutside.ts +42 -0
- package/src/legacy-hardware-sim/LabwareNameOverlay.module.css +20 -0
- package/src/legacy-hardware-sim/LabwareNameOverlay.tsx +22 -0
- package/src/legacy-hardware-sim/ModuleItem.module.css +98 -0
- package/src/legacy-hardware-sim/ModuleItem.tsx +145 -0
- package/src/legacy-hardware-sim/index.ts +2 -0
- package/src/lists/SidePanelGroup.tsx +48 -0
- package/src/lists/TitledList.tsx +155 -0
- package/src/lists/index.ts +3 -0
- package/src/lists/lists.module.css +171 -0
- package/src/modals/AlertModal.tsx +89 -0
- package/src/modals/ContinueModal.tsx +32 -0
- package/src/modals/LegacyModal.tsx +59 -0
- package/src/modals/Modal.stories.tsx +52 -0
- package/src/modals/Modal.tsx +96 -0
- package/src/modals/ModalHeader.tsx +100 -0
- package/src/modals/ModalShell.tsx +155 -0
- package/src/modals/Overlay.tsx +38 -0
- package/src/modals/SpinnerModal.tsx +35 -0
- package/src/modals/SpinnerModalPage.tsx +30 -0
- package/src/modals/__tests__/Modal.test.tsx +65 -0
- package/src/modals/__tests__/ModalHeader.test.tsx +73 -0
- package/src/modals/__tests__/ModalShell.test.tsx +45 -0
- package/src/modals/index.ts +10 -0
- package/src/modals/modals.module.css +275 -0
- package/src/molecules/Banner/Banner.stories.tsx +41 -0
- package/src/molecules/Banner/__tests__/Banner.test.tsx +94 -0
- package/src/molecules/Banner/index.tsx +147 -0
- package/src/molecules/DeckInfoLabel/DeckInfoLabel.stories.tsx +65 -0
- package/src/molecules/DeckInfoLabel/__tests__/DeckInfoLabel.test.tsx +49 -0
- package/src/molecules/DeckInfoLabel/index.tsx +95 -0
- package/src/molecules/DeckLabel/DeckLabel.stories.tsx +31 -0
- package/src/molecules/DeckLabel/__tests__/DeckLabel.test.tsx +69 -0
- package/src/molecules/DeckLabel/index.tsx +80 -0
- package/src/molecules/DropdownMenu/DropdownMenu.stories.tsx +30 -0
- package/src/molecules/DropdownMenu/__tests__/DropdownMenu.test.tsx +85 -0
- package/src/molecules/DropdownMenu/index.tsx +343 -0
- package/src/molecules/InfoScreen/InfoScreen.stories.tsx +50 -0
- package/src/molecules/InfoScreen/__tests__/InfoScreen.test.tsx +40 -0
- package/src/molecules/InfoScreen/index.tsx +54 -0
- package/src/molecules/LiquidIcon/LiquidIcon.stories.tsx +53 -0
- package/src/molecules/LiquidIcon/__tests__/LiquidIcon.test.tsx +50 -0
- package/src/molecules/LiquidIcon/index.tsx +68 -0
- package/src/molecules/ParametersTable/ParametersTable.stories.tsx +172 -0
- package/src/molecules/ParametersTable/__tests__/ParametersTable.test.tsx +126 -0
- package/src/molecules/ParametersTable/index.tsx +198 -0
- package/src/molecules/Tabs/Tabs.stories.tsx +74 -0
- package/src/molecules/Tabs/__tests__/Tabs.test.tsx +90 -0
- package/src/molecules/Tabs/index.tsx +94 -0
- package/src/molecules/index.ts +8 -0
- package/src/nav/SidePanel.module.css +34 -0
- package/src/nav/SidePanel.stories.tsx +29 -0
- package/src/nav/SidePanel.tsx +21 -0
- package/src/nav/index.ts +2 -0
- package/src/organisms/DeckLabelSet/DeckLabelSet.stories.tsx +46 -0
- package/src/organisms/DeckLabelSet/__tests__/DeckLabelSet.test.tsx +49 -0
- package/src/organisms/DeckLabelSet/index.tsx +69 -0
- package/src/organisms/EndUserAgreementFooter/__tests__/EndUserAgreementFooter.test.tsx +21 -0
- package/src/organisms/EndUserAgreementFooter/index.tsx +49 -0
- package/src/organisms/Toolbox/Toolbox.stories.tsx +23 -0
- package/src/organisms/Toolbox/__tests__/Toolbox.test.tsx +35 -0
- package/src/organisms/Toolbox/index.tsx +160 -0
- package/src/organisms/index.ts +3 -0
- package/src/primitives/Box.stories.tsx +25 -0
- package/src/primitives/Box.tsx +17 -0
- package/src/primitives/Btn.stories.tsx +105 -0
- package/src/primitives/Btn.tsx +266 -0
- package/src/primitives/Flex.stories.tsx +50 -0
- package/src/primitives/Flex.tsx +17 -0
- package/src/primitives/ForeignObject.tsx +70 -0
- package/src/primitives/Link.stories.tsx +27 -0
- package/src/primitives/Link.tsx +32 -0
- package/src/primitives/README.md +188 -0
- package/src/primitives/Svg.stories.tsx +36 -0
- package/src/primitives/Svg.tsx +68 -0
- package/src/primitives/Text.stories.tsx +17 -0
- package/src/primitives/Text.tsx +18 -0
- package/src/primitives/__tests__/Box.test.tsx +4 -0
- package/src/primitives/__tests__/Btn.test.tsx +4 -0
- package/src/primitives/__tests__/Flex.test.tsx +4 -0
- package/src/primitives/__tests__/Link.test.tsx +4 -0
- package/src/primitives/__tests__/Svg.test.tsx +4 -0
- package/src/primitives/__tests__/Text.test.tsx +4 -0
- package/src/primitives/__tests__/primitives.test.tsx +4 -0
- package/src/primitives/__tests__/style-props.test.tsx +4 -0
- package/src/primitives/index.ts +10 -0
- package/src/primitives/style-props.ts +197 -0
- package/src/primitives/types.ts +120 -0
- package/src/robot-types.ts +4 -0
- package/src/slotmap/OT2SlotMap.tsx +73 -0
- package/src/slotmap/__tests__/OT2SlotMap.test.tsx +4 -0
- package/src/slotmap/index.ts +1 -0
- package/src/slotmap/styles.module.css +18 -0
- package/src/structure/Card.stories.tsx +28 -0
- package/src/structure/Card.tsx +64 -0
- package/src/structure/LabeledValue.stories.tsx +17 -0
- package/src/structure/LabeledValue.tsx +31 -0
- package/src/structure/Pill.module.css +16 -0
- package/src/structure/Pill.tsx +43 -0
- package/src/structure/Splash.module.css +16 -0
- package/src/structure/Splash.stories.tsx +24 -0
- package/src/structure/Splash.tsx +22 -0
- package/src/structure/TitleBar.stories.tsx +42 -0
- package/src/structure/TitleBar.tsx +81 -0
- package/src/structure/index.ts +7 -0
- package/src/structure/structure.module.css +114 -0
- package/src/styles/borders.module.css +20 -0
- package/src/styles/borders.ts +16 -0
- package/src/styles/colors.module.css +57 -0
- package/src/styles/colors.ts +58 -0
- package/src/styles/cursor.ts +12 -0
- package/src/styles/flexbox.ts +39 -0
- package/src/styles/index.module.css +8 -0
- package/src/styles/index.ts +8 -0
- package/src/styles/layout.ts +31 -0
- package/src/styles/position.ts +5 -0
- package/src/styles/spacing.ts +11 -0
- package/src/styles/typography.module.css +22 -0
- package/src/styles/typography.ts +90 -0
- package/src/testing/utils/index.ts +2 -0
- package/src/testing/utils/matchers.ts +31 -0
- package/src/testing/utils/renderWithProviders.tsx +53 -0
- package/src/tooltips/DeprecatedTooltip.tsx +105 -0
- package/src/tooltips/HoverTooltip.tsx +83 -0
- package/src/tooltips/LegacyTooltip.stories.tsx +98 -0
- package/src/tooltips/LegacyTooltip.tsx +151 -0
- package/src/tooltips/__tests__/Tooltip.test.tsx +4 -0
- package/src/tooltips/__tests__/useHoverTooltip.test.tsx +4 -0
- package/src/tooltips/__tests__/usePopper.test.tsx +4 -0
- package/src/tooltips/__tests__/useTooltip.test.tsx +4 -0
- package/src/tooltips/constants.ts +28 -0
- package/src/tooltips/index.ts +10 -0
- package/src/tooltips/styles.ts +20 -0
- package/src/tooltips/tooltips.module.css +72 -0
- package/src/tooltips/types.ts +73 -0
- package/src/tooltips/useHoverTooltip.ts +47 -0
- package/src/tooltips/usePopper.ts +87 -0
- package/src/tooltips/useTooltip.ts +100 -0
- package/src/ui-style-constants/index.ts +4 -0
- package/src/ui-style-constants/responsiveness.ts +15 -0
- package/src/ui-style-constants/spacing.ts +18 -0
- package/src/ui-style-constants/typography.ts +258 -0
- package/src/ui-style-constants/viewport.ts +18 -0
- package/src/utils.ts +56 -0
- package/tsconfig.json +0 -2
- package/vite.config.mts +6 -25
- package/lib/index.cjs +0 -732
- package/lib/index.mjs +0 -36590
- package/lib/style.css +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
1
|
import { TYPOGRAPHY } from '../../ui-style-constants';
|
|
2
|
+
import type { ChangeEventHandler, FocusEvent, MouseEvent, ReactNode } from 'react';
|
|
3
3
|
import type { IconName } from '../../icons';
|
|
4
4
|
export declare const INPUT_TYPE_NUMBER: "number";
|
|
5
5
|
export declare const LEGACY_INPUT_TYPE_TEXT: "text";
|
|
@@ -8,7 +8,7 @@ export interface InputFieldProps {
|
|
|
8
8
|
/** field is disabled if value is true */
|
|
9
9
|
disabled?: boolean;
|
|
10
10
|
/** change handler */
|
|
11
|
-
onChange?:
|
|
11
|
+
onChange?: ChangeEventHandler<HTMLInputElement>;
|
|
12
12
|
/** name of field in form */
|
|
13
13
|
name?: string;
|
|
14
14
|
/** optional ID of <input> element */
|
|
@@ -16,7 +16,7 @@ export interface InputFieldProps {
|
|
|
16
16
|
/** placeholder text */
|
|
17
17
|
placeholder?: string;
|
|
18
18
|
/** optional suffix component, appears to the right of input text */
|
|
19
|
-
units?:
|
|
19
|
+
units?: ReactNode;
|
|
20
20
|
/** current value of text in box, defaults to '' */
|
|
21
21
|
value?: string | number | null;
|
|
22
22
|
/** if included, InputField will use error style and display error instead of caption */
|
|
@@ -30,11 +30,11 @@ export interface InputFieldProps {
|
|
|
30
30
|
/** optional input type (default "text") */
|
|
31
31
|
type?: typeof LEGACY_INPUT_TYPE_TEXT | typeof LEGACY_INPUT_TYPE_PASSWORD | typeof INPUT_TYPE_NUMBER;
|
|
32
32
|
/** mouse click handler */
|
|
33
|
-
onClick?: (event:
|
|
33
|
+
onClick?: (event: MouseEvent<HTMLInputElement>) => unknown;
|
|
34
34
|
/** focus handler */
|
|
35
|
-
onFocus?: (event:
|
|
35
|
+
onFocus?: (event: FocusEvent<HTMLInputElement>) => unknown;
|
|
36
36
|
/** blur handler */
|
|
37
|
-
onBlur?: (event:
|
|
37
|
+
onBlur?: (event: FocusEvent<HTMLInputElement>) => unknown;
|
|
38
38
|
/** makes input field read-only */
|
|
39
39
|
readOnly?: boolean;
|
|
40
40
|
/** html tabindex property */
|
|
@@ -44,8 +44,8 @@ export interface InputFieldProps {
|
|
|
44
44
|
/** if true, clear out value and add '-' placeholder */
|
|
45
45
|
isIndeterminate?: boolean;
|
|
46
46
|
/** if input type is number, these are the min and max values */
|
|
47
|
-
max?: number;
|
|
48
|
-
min?: number;
|
|
47
|
+
max?: number | string;
|
|
48
|
+
min?: number | string;
|
|
49
49
|
/** horizontal text alignment for title, input, and (sub)captions */
|
|
50
50
|
textAlign?: typeof TYPOGRAPHY.textAlignLeft | typeof TYPOGRAPHY.textAlignCenter;
|
|
51
51
|
/** small or medium input field height, relevant only */
|
|
@@ -65,4 +65,4 @@ export interface InputFieldProps {
|
|
|
65
65
|
/** optional prop to override input field padding */
|
|
66
66
|
padding?: string;
|
|
67
67
|
}
|
|
68
|
-
export declare const InputField:
|
|
68
|
+
export declare const InputField: import("react").ForwardRefExoticComponent<Omit<InputFieldProps, "ref"> & import("react").RefAttributes<HTMLInputElement>>;
|
|
@@ -8,8 +8,8 @@ interface ListItemCustomizeProps {
|
|
|
8
8
|
label?: string;
|
|
9
9
|
dropdown?: DropdownMenuProps;
|
|
10
10
|
tag?: TagProps;
|
|
11
|
-
/**
|
|
12
|
-
|
|
11
|
+
/** optional placement of the menu */
|
|
12
|
+
menuPlacement?: 'auto' | 'top' | 'bottom';
|
|
13
13
|
}
|
|
14
14
|
export declare function ListItemCustomize(props: ListItemCustomizeProps): JSX.Element;
|
|
15
15
|
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type * as React from 'react';
|
|
2
2
|
import type { StyleProps } from '../../primitives';
|
|
3
3
|
export * from './ListItemChildren';
|
|
4
|
-
export type ListItemType = 'error' | 'noActive' | 'success' | 'warning';
|
|
4
|
+
export type ListItemType = 'error' | 'noActive' | 'success' | 'warning' | 'unavailable';
|
|
5
5
|
interface ListItemProps extends StyleProps {
|
|
6
6
|
/** ListItem state type */
|
|
7
7
|
type: ListItemType;
|
package/lib/atoms/Tag/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
1
|
import { Module } from '../Module';
|
|
2
|
+
import type { ComponentProps, ReactNode } from 'react';
|
|
3
3
|
import type { Svg } from '../../primitives';
|
|
4
4
|
import type { DeckConfiguration, LabwareDefinition2, LabwareLocation, ModuleLocation, ModuleModel, RobotType } from '@opentrons/shared-data';
|
|
5
5
|
import type { WellFill, WellGroup } from '../Labware';
|
|
@@ -9,7 +9,7 @@ export interface LabwareOnDeck {
|
|
|
9
9
|
wellFill?: WellFill;
|
|
10
10
|
missingTips?: WellGroup;
|
|
11
11
|
/** generic prop to render self-positioned children for each labware */
|
|
12
|
-
labwareChildren?:
|
|
12
|
+
labwareChildren?: ReactNode;
|
|
13
13
|
onLabwareClick?: () => void;
|
|
14
14
|
highlight?: boolean;
|
|
15
15
|
highlightShadow?: boolean;
|
|
@@ -20,9 +20,9 @@ export interface ModuleOnDeck {
|
|
|
20
20
|
moduleLocation: ModuleLocation;
|
|
21
21
|
nestedLabwareDef?: LabwareDefinition2 | null;
|
|
22
22
|
nestedLabwareWellFill?: WellFill;
|
|
23
|
-
innerProps?:
|
|
23
|
+
innerProps?: ComponentProps<typeof Module>['innerProps'];
|
|
24
24
|
/** generic prop to render self-positioned children for each module */
|
|
25
|
-
moduleChildren?:
|
|
25
|
+
moduleChildren?: ReactNode;
|
|
26
26
|
onLabwareClick?: () => void;
|
|
27
27
|
highlightLabware?: boolean;
|
|
28
28
|
highlightShadowLabware?: boolean;
|
|
@@ -38,12 +38,12 @@ interface BaseDeckProps {
|
|
|
38
38
|
lightFill?: string;
|
|
39
39
|
mediumFill?: string;
|
|
40
40
|
darkFill?: string;
|
|
41
|
-
children?:
|
|
41
|
+
children?: ReactNode;
|
|
42
42
|
showSlotLabels?: boolean;
|
|
43
43
|
/** whether to make wrapping svg tag animatable via @react-spring/web, defaults to false */
|
|
44
44
|
animatedSVG?: boolean;
|
|
45
45
|
/** extra props to pass to svg tag */
|
|
46
|
-
svgProps?:
|
|
46
|
+
svgProps?: ComponentProps<typeof Svg>;
|
|
47
47
|
}
|
|
48
48
|
export declare function BaseDeck(props: BaseDeckProps): JSX.Element;
|
|
49
49
|
export {};
|
|
@@ -3,6 +3,7 @@ export interface RobotCoordsTextProps extends React.ComponentProps<'text'> {
|
|
|
3
3
|
x: number;
|
|
4
4
|
y: number;
|
|
5
5
|
children?: React.ReactNode;
|
|
6
|
+
canHighlight?: boolean;
|
|
6
7
|
}
|
|
7
8
|
/** SVG text reflected to use take robot coordinates as props */
|
|
8
9
|
export declare function RobotCoordsText(props: RobotCoordsTextProps): JSX.Element;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
2
|
import type { StyleProps } from '../../primitives';
|
|
3
3
|
import type { DeckDefinition, DeckSlot } from '@opentrons/shared-data';
|
|
4
4
|
export interface RobotWorkSpaceRenderProps {
|
|
@@ -13,7 +13,7 @@ export interface RobotWorkSpaceRenderProps {
|
|
|
13
13
|
export interface RobotWorkSpaceProps extends StyleProps {
|
|
14
14
|
deckDef?: DeckDefinition;
|
|
15
15
|
viewBox?: string | null;
|
|
16
|
-
children?: (props: RobotWorkSpaceRenderProps) =>
|
|
16
|
+
children?: (props: RobotWorkSpaceRenderProps) => ReactNode;
|
|
17
17
|
deckLayerBlocklist?: string[];
|
|
18
18
|
showDeckLayers?: boolean;
|
|
19
19
|
id?: string;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { Dispatch, MouseEventHandler, SetStateAction } from 'react';
|
|
2
2
|
interface MenuHandleClickOutside {
|
|
3
3
|
menuOverlay: JSX.Element;
|
|
4
|
-
handleOverflowClick:
|
|
4
|
+
handleOverflowClick: MouseEventHandler<HTMLButtonElement>;
|
|
5
5
|
showOverflowMenu: boolean;
|
|
6
|
-
setShowOverflowMenu:
|
|
6
|
+
setShowOverflowMenu: Dispatch<SetStateAction<boolean>>;
|
|
7
7
|
}
|
|
8
8
|
export declare function useMenuHandleClickOutside(): MenuHandleClickOutside;
|
|
9
9
|
export {};
|
|
@@ -35,7 +35,7 @@ export interface DropdownMenuProps {
|
|
|
35
35
|
onBlur?: React.FocusEventHandler<HTMLButtonElement>;
|
|
36
36
|
/** optional disabled */
|
|
37
37
|
disabled?: boolean;
|
|
38
|
-
/**
|
|
39
|
-
|
|
38
|
+
/** optional placement of the menu */
|
|
39
|
+
menuPlacement?: 'auto' | 'top' | 'bottom';
|
|
40
40
|
}
|
|
41
41
|
export declare function DropdownMenu(props: DropdownMenuProps): JSX.Element;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
interface InfoScreenProps {
|
|
2
2
|
content: string;
|
|
3
|
+
subContent?: string;
|
|
3
4
|
backgroundColor?: string;
|
|
5
|
+
height?: string;
|
|
4
6
|
}
|
|
5
|
-
export declare function InfoScreen({ content, backgroundColor, }: InfoScreenProps): JSX.Element;
|
|
7
|
+
export declare function InfoScreen({ content, subContent, backgroundColor, height, }: InfoScreenProps): JSX.Element;
|
|
6
8
|
export {};
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
1
|
export interface ToolboxProps {
|
|
3
2
|
title: JSX.Element;
|
|
4
3
|
children: React.ReactNode;
|
|
@@ -12,6 +11,7 @@ export interface ToolboxProps {
|
|
|
12
11
|
closeButton?: JSX.Element;
|
|
13
12
|
side?: 'left' | 'right';
|
|
14
13
|
horizontalSide?: 'top' | 'bottom';
|
|
14
|
+
titlePadding?: string;
|
|
15
15
|
childrenPadding?: string;
|
|
16
16
|
subHeader?: JSX.Element | null;
|
|
17
17
|
secondaryHeaderButton?: JSX.Element;
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opentrons/components",
|
|
3
|
-
"version": "0.1.6-alpha.
|
|
3
|
+
"version": "0.1.6-alpha.17",
|
|
4
4
|
"description": "React components library for Opentrons' projects",
|
|
5
5
|
"source": "src/index.ts",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
7
7
|
"style": "src/index.module.css",
|
|
8
|
-
"main": "
|
|
8
|
+
"main": "src/index.ts",
|
|
9
9
|
"module": "src/index.ts",
|
|
10
10
|
"repository": {
|
|
11
11
|
"type": "git",
|
|
@@ -19,11 +19,10 @@
|
|
|
19
19
|
"homepage": "https://github.com/Opentrons/opentrons#readme",
|
|
20
20
|
"peerDependencies": {
|
|
21
21
|
"react": "18.2.0",
|
|
22
|
-
"react-dom": "18.2.0"
|
|
23
|
-
"styled-components": "5.3.6"
|
|
22
|
+
"react-dom": "18.2.0"
|
|
24
23
|
},
|
|
25
24
|
"dependencies": {
|
|
26
|
-
"@opentrons/shared-data": "0.1.6-alpha.
|
|
25
|
+
"@opentrons/shared-data": "0.1.6-alpha.17",
|
|
27
26
|
"@popperjs/core": "2.1.1",
|
|
28
27
|
"@react-spring/types": "9.6.1",
|
|
29
28
|
"@react-spring/web": "9.6.1",
|
|
@@ -38,7 +37,8 @@
|
|
|
38
37
|
"react-popper": "1.0.0",
|
|
39
38
|
"react-remove-scroll": "2.4.3",
|
|
40
39
|
"react-select": "5.4.0",
|
|
41
|
-
"redux": "4.0.5"
|
|
40
|
+
"redux": "4.0.5",
|
|
41
|
+
"styled-components": "5.3.6"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"react-redux": "8.1.2"
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// File transformer for Jest
|
|
2
|
+
// Makes asset filenames appear in snapshots
|
|
3
|
+
// see https://facebook.github.io/jest/docs/en/webpack.html
|
|
4
|
+
const path = require('path')
|
|
5
|
+
|
|
6
|
+
module.exports = {
|
|
7
|
+
process(src, filename, config, options) {
|
|
8
|
+
return 'module.exports = ' + JSON.stringify(path.basename(filename))
|
|
9
|
+
},
|
|
10
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest'
|
|
2
|
+
import { truncateString } from '../utils'
|
|
3
|
+
|
|
4
|
+
describe('truncateString', () => {
|
|
5
|
+
it('when an input string less than max length, return the original input', () => {
|
|
6
|
+
// Note (kj:05/03/2023) the max length and breakPoints are the same as what we use for the Desktop app
|
|
7
|
+
const str = 'opentrons-dev'
|
|
8
|
+
const result = truncateString(str, 80, 65)
|
|
9
|
+
expect(result).toEqual(str)
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
it('when an input string is more than 80 characters, return the truncated string', () => {
|
|
13
|
+
const str = `Lorem Ipsum Is Simply Dummy Text Of The Printing And Typesetting Industry. Lorem Ipsum Has Been The Industry's Standard Dummy Text Ever Since The 1500s, When An Unknown Printer Took A Galley Of Type And Scrambled It To Make A Type Specimen Book.Py`
|
|
14
|
+
const result = truncateString(str, 80, 65)
|
|
15
|
+
const truncatedStr =
|
|
16
|
+
'Lorem Ipsum Is Simply Dummy Text Of The Printing And Typesetting ...imen Book.Py'
|
|
17
|
+
expect(result).toEqual(truncatedStr)
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
it('when an input string is more than 80 characters without specifying the break point, return the truncated string', () => {
|
|
21
|
+
const str = `Lorem Ipsum Is Simply Dummy Text Of The Printing And Typesetting Industry. Lorem Ipsum Has Been The Industry's Standard Dummy Text Ever Since The 1500s, When An Unknown Printer Took A Galley Of Type And Scrambled It To Make A Type Specimen Book.Py`
|
|
22
|
+
const result = truncateString(str, 80)
|
|
23
|
+
const truncatedStr =
|
|
24
|
+
'Lorem Ipsum Is Simply Dummy Text Of The Printing And Typesetting Industry. Lo...'
|
|
25
|
+
expect(result).toEqual(truncatedStr)
|
|
26
|
+
})
|
|
27
|
+
})
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type * as React from 'react'
|
|
2
|
+
import { AlertItem } from './AlertItem'
|
|
3
|
+
|
|
4
|
+
import type { Story, Meta } from '@storybook/react'
|
|
5
|
+
|
|
6
|
+
export default {
|
|
7
|
+
title: 'Library/Molecules/AlertItem',
|
|
8
|
+
component: AlertItem,
|
|
9
|
+
argTypes: { onCloseClick: { action: 'clicked' } },
|
|
10
|
+
} as Meta
|
|
11
|
+
|
|
12
|
+
const Template: Story<React.ComponentProps<typeof AlertItem>> = args => (
|
|
13
|
+
<AlertItem {...args} />
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
export const Basic = Template.bind({})
|
|
17
|
+
Basic.args = {
|
|
18
|
+
type: 'success',
|
|
19
|
+
title: 'good job!',
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export const OverriddenIcon = Template.bind({})
|
|
23
|
+
OverriddenIcon.args = {
|
|
24
|
+
type: 'info',
|
|
25
|
+
title: 'Alert with overridden icon',
|
|
26
|
+
icon: { name: 'pause-circle' },
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export const Stackable: Story<
|
|
30
|
+
React.ComponentProps<typeof AlertItem>
|
|
31
|
+
> = args => (
|
|
32
|
+
<div>
|
|
33
|
+
<Template {...args} type="warning" title={'Warning with close button'} />
|
|
34
|
+
<Template
|
|
35
|
+
{...args}
|
|
36
|
+
onCloseClick={undefined}
|
|
37
|
+
type="warning"
|
|
38
|
+
title={'Warning with no close button'}
|
|
39
|
+
/>
|
|
40
|
+
<Template {...args} type="warning" title={'Warning with no children'} />
|
|
41
|
+
<Template
|
|
42
|
+
{...args}
|
|
43
|
+
type="warning"
|
|
44
|
+
title={'Warning with React Node children'}
|
|
45
|
+
>
|
|
46
|
+
<p>Some additional info</p>
|
|
47
|
+
</Template>
|
|
48
|
+
</div>
|
|
49
|
+
)
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type * as React from 'react'
|
|
2
|
+
import cx from 'classnames'
|
|
3
|
+
import { Icon } from '../icons'
|
|
4
|
+
import { IconButton } from '../buttons'
|
|
5
|
+
import styles from './alerts.module.css'
|
|
6
|
+
|
|
7
|
+
import type { IconProps } from '../icons'
|
|
8
|
+
|
|
9
|
+
export type AlertType = 'success' | 'warning' | 'error' | 'info'
|
|
10
|
+
|
|
11
|
+
export interface AlertItemProps {
|
|
12
|
+
/** name constant of the icon to display */
|
|
13
|
+
type: AlertType
|
|
14
|
+
/** title/main message of colored alert bar */
|
|
15
|
+
title: React.ReactNode
|
|
16
|
+
/** Alert message body contents */
|
|
17
|
+
children?: React.ReactNode
|
|
18
|
+
/** Additional class name */
|
|
19
|
+
className?: string
|
|
20
|
+
/** optional handler to show close button/clear alert */
|
|
21
|
+
onCloseClick?: () => unknown
|
|
22
|
+
/** Override the default Alert Icon */
|
|
23
|
+
icon?: IconProps
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Alert overlay,
|
|
28
|
+
* change style and icon by using type 'success' 'warning' 'error'
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
const ALERT_PROPS_BY_TYPE: Record<
|
|
32
|
+
AlertType,
|
|
33
|
+
{ icon: IconProps; className: string }
|
|
34
|
+
> = {
|
|
35
|
+
success: {
|
|
36
|
+
icon: { name: 'check-circle' },
|
|
37
|
+
className: styles.success,
|
|
38
|
+
},
|
|
39
|
+
error: {
|
|
40
|
+
icon: { name: 'alert-circle' },
|
|
41
|
+
className: styles.error,
|
|
42
|
+
},
|
|
43
|
+
warning: {
|
|
44
|
+
icon: { name: 'alert-circle' },
|
|
45
|
+
className: styles.warning,
|
|
46
|
+
},
|
|
47
|
+
info: {
|
|
48
|
+
icon: { name: 'information' },
|
|
49
|
+
className: styles.info,
|
|
50
|
+
},
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* @deprecated Use 'Banner' instead
|
|
55
|
+
*/
|
|
56
|
+
|
|
57
|
+
export function AlertItem(props: AlertItemProps): JSX.Element {
|
|
58
|
+
const alertProps = ALERT_PROPS_BY_TYPE[props.type]
|
|
59
|
+
const icon = props.icon ? props.icon : alertProps.icon
|
|
60
|
+
const className = cx(styles.alert, alertProps.className, props.className)
|
|
61
|
+
|
|
62
|
+
const iconProps = {
|
|
63
|
+
...icon,
|
|
64
|
+
className: styles.icon,
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return (
|
|
68
|
+
<div className={className}>
|
|
69
|
+
<div className={styles.title_bar}>
|
|
70
|
+
<Icon {...iconProps} />
|
|
71
|
+
<span className={styles.title} data-testid="alert_item_title">
|
|
72
|
+
{props.title}
|
|
73
|
+
</span>
|
|
74
|
+
{props.onCloseClick && (
|
|
75
|
+
<IconButton
|
|
76
|
+
name="close"
|
|
77
|
+
onClick={props.onCloseClick}
|
|
78
|
+
className={styles.close}
|
|
79
|
+
/>
|
|
80
|
+
)}
|
|
81
|
+
</div>
|
|
82
|
+
{props.children && <div className={styles.message}>{props.children}</div>}
|
|
83
|
+
</div>
|
|
84
|
+
)
|
|
85
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
@import '../index.module.css';
|
|
2
|
+
|
|
3
|
+
.alert {
|
|
4
|
+
font-size: var(--fs-body-2);
|
|
5
|
+
font-weight: var(--fw-regular);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.alert:not(:first-of-type) {
|
|
9
|
+
border-top: none;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.title_bar {
|
|
13
|
+
display: flex;
|
|
14
|
+
flex-direction: row;
|
|
15
|
+
justify-content: space-between;
|
|
16
|
+
align-items: center;
|
|
17
|
+
padding: 0.5rem 1rem;
|
|
18
|
+
font-weight: var(--fw-semibold);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.title {
|
|
22
|
+
width: 100%;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.success {
|
|
26
|
+
border: 1px solid var(--c-success);
|
|
27
|
+
|
|
28
|
+
& > .title_bar {
|
|
29
|
+
background-color: var(--c-bg-success);
|
|
30
|
+
color: var(--c-success);
|
|
31
|
+
|
|
32
|
+
& svg {
|
|
33
|
+
color: var(--c-success);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.info {
|
|
39
|
+
border: 1px solid var(--c-highlight);
|
|
40
|
+
|
|
41
|
+
& > .title_bar {
|
|
42
|
+
background-color: var(--c-bg-selected);
|
|
43
|
+
color: var(--c-selected-dark);
|
|
44
|
+
|
|
45
|
+
& svg {
|
|
46
|
+
color: var(--c-highlight);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.warning {
|
|
52
|
+
border: 1px solid var(--c-warning);
|
|
53
|
+
|
|
54
|
+
& > .title_bar {
|
|
55
|
+
background-color: var(--c-warning-light);
|
|
56
|
+
color: var(--c-warning-dark);
|
|
57
|
+
|
|
58
|
+
& svg {
|
|
59
|
+
fill: var(--c-warning);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.error {
|
|
65
|
+
border: 1px solid var(--c-error);
|
|
66
|
+
|
|
67
|
+
& > .title_bar {
|
|
68
|
+
background-color: var(--c-error-light);
|
|
69
|
+
color: var(--c-error-dark);
|
|
70
|
+
|
|
71
|
+
& svg {
|
|
72
|
+
fill: var(--c-error);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.message {
|
|
78
|
+
padding: 1rem 3rem;
|
|
79
|
+
background-color: white;
|
|
80
|
+
|
|
81
|
+
& a {
|
|
82
|
+
text-decoration: underline;
|
|
83
|
+
color: inherit;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
&:empty {
|
|
87
|
+
padding: 0;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.icon {
|
|
92
|
+
width: 1.5rem;
|
|
93
|
+
margin-right: 0.5rem;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.close {
|
|
97
|
+
width: 2rem;
|
|
98
|
+
padding: 0.125rem;
|
|
99
|
+
|
|
100
|
+
&:hover {
|
|
101
|
+
background-color: rgba(100, 100, 100, 0.1);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Checkbox } from './index'
|
|
2
|
+
|
|
3
|
+
import type { StoryObj, Meta } from '@storybook/react'
|
|
4
|
+
|
|
5
|
+
const meta: Meta<typeof Checkbox> = {
|
|
6
|
+
title: 'Library/Atoms/Checkbox',
|
|
7
|
+
component: Checkbox,
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
type Story = StoryObj<typeof Checkbox>
|
|
11
|
+
|
|
12
|
+
export const Basic: Story = {
|
|
13
|
+
args: {
|
|
14
|
+
isChecked: true,
|
|
15
|
+
labelText: 'Button Text',
|
|
16
|
+
onClick: () => {
|
|
17
|
+
console.log('clicked')
|
|
18
|
+
},
|
|
19
|
+
tabIndex: 1,
|
|
20
|
+
disabled: false,
|
|
21
|
+
},
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export default meta
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type * as React from 'react'
|
|
2
|
+
import { describe, beforeEach, afterEach, vi, expect, it } from 'vitest'
|
|
3
|
+
import { fireEvent, screen } from '@testing-library/react'
|
|
4
|
+
import '@testing-library/jest-dom/vitest'
|
|
5
|
+
import { renderWithProviders } from '../../../testing/utils'
|
|
6
|
+
import { Checkbox } from '..'
|
|
7
|
+
|
|
8
|
+
const render = (props: React.ComponentProps<typeof Checkbox>) => {
|
|
9
|
+
return renderWithProviders(<Checkbox {...props} />)[0]
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
describe('Checkbox', () => {
|
|
13
|
+
let props: React.ComponentProps<typeof Checkbox>
|
|
14
|
+
|
|
15
|
+
beforeEach(() => {
|
|
16
|
+
props = {
|
|
17
|
+
onClick: vi.fn(),
|
|
18
|
+
isChecked: false,
|
|
19
|
+
labelText: 'fake checkbox label',
|
|
20
|
+
tabIndex: 1,
|
|
21
|
+
disabled: false,
|
|
22
|
+
}
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
afterEach(() => {
|
|
26
|
+
vi.resetAllMocks()
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
it('renders label with disabled true', () => {
|
|
30
|
+
props.disabled = true
|
|
31
|
+
render(props)
|
|
32
|
+
const checkBoxInput = screen.getByRole('checkbox', {
|
|
33
|
+
name: 'fake checkbox label',
|
|
34
|
+
})
|
|
35
|
+
expect(checkBoxInput).toBeDisabled()
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
it('renders label with correct style - tabIndex 1', () => {
|
|
39
|
+
props.tabIndex = 1
|
|
40
|
+
render(props)
|
|
41
|
+
const checkBoxInput = screen.getByRole('checkbox', {
|
|
42
|
+
name: 'fake checkbox label',
|
|
43
|
+
})
|
|
44
|
+
expect(checkBoxInput).toHaveAttribute('tabindex', '1')
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
it('calls mock function when clicking checkbox', () => {
|
|
48
|
+
render(props)
|
|
49
|
+
const checkBoxInput = screen.getByRole('checkbox', {
|
|
50
|
+
name: 'fake checkbox label',
|
|
51
|
+
})
|
|
52
|
+
fireEvent.click(checkBoxInput)
|
|
53
|
+
expect(props.onClick).toHaveBeenCalled()
|
|
54
|
+
})
|
|
55
|
+
})
|