@opentrons/components 0.1.6-alpha.16 → 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/StyledText/StyledText.d.ts +1 -1
- package/lib/hardware-sim/Labware/LabwareRender.d.ts +1 -1
- package/lib/hardware-sim/Labware/labwareInternals/FilledWells.d.ts +1 -1
- package/lib/hardware-sim/Labware/labwareInternals/LabwareOutline.d.ts +1 -1
- package/lib/hardware-sim/Labware/labwareInternals/StaticLabware.d.ts +1 -1
- package/lib/hardware-sim/Labware/labwareInternals/StrokedWells.d.ts +1 -1
- package/lib/instrument/InstrumentDiagram.d.ts +1 -1
- package/lib/primitives/Btn.d.ts +1 -1
- package/lib/primitives/style-props.d.ts +1 -1
- package/lib/primitives/types.d.ts +1 -1
- package/lib/styles/typography.d.ts +1 -1
- package/package.json +3 -3
- 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/lib/index.mjs +0 -23832
- package/lib/patches.d.ts +0 -4
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { RobotType } from '@opentrons/shared-data'
|
|
2
|
+
|
|
3
|
+
const OT2_STANDARD_DECK_VIEW_LAYER_BLOCK_LIST: string[] = [
|
|
4
|
+
'calibrationMarkings',
|
|
5
|
+
'fixedBase',
|
|
6
|
+
'doorStops',
|
|
7
|
+
'metalFrame',
|
|
8
|
+
'removalHandle',
|
|
9
|
+
'removableDeckOutline',
|
|
10
|
+
'screwHoles',
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
const OT3_STANDARD_DECK_VIEW_LAYER_BLOCK_LIST: string[] = [
|
|
14
|
+
'DECK_BASE',
|
|
15
|
+
'BARCODE_COVERS',
|
|
16
|
+
]
|
|
17
|
+
|
|
18
|
+
export const getStandardDeckViewLayerBlockList = (
|
|
19
|
+
robotType: RobotType
|
|
20
|
+
): string[] => {
|
|
21
|
+
switch (robotType) {
|
|
22
|
+
case 'OT-2 Standard':
|
|
23
|
+
return OT2_STANDARD_DECK_VIEW_LAYER_BLOCK_LIST
|
|
24
|
+
case 'OT-3 Standard':
|
|
25
|
+
return OT3_STANDARD_DECK_VIEW_LAYER_BLOCK_LIST
|
|
26
|
+
default:
|
|
27
|
+
return []
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Liquid } from '@opentrons/shared-data'
|
|
2
|
+
import type { WellFill } from '../../Labware'
|
|
3
|
+
import type { LabwareByLiquidId } from '../types'
|
|
4
|
+
|
|
5
|
+
export function getWellFillFromLabwareId(
|
|
6
|
+
labwareId: string,
|
|
7
|
+
liquidsInLoadOrder: Liquid[],
|
|
8
|
+
labwareByLiquidId: LabwareByLiquidId
|
|
9
|
+
): WellFill {
|
|
10
|
+
let labwareWellFill: WellFill = {}
|
|
11
|
+
const liquidIds = Object.keys(labwareByLiquidId)
|
|
12
|
+
const labwareInfo = Object.values(labwareByLiquidId)
|
|
13
|
+
|
|
14
|
+
labwareInfo.forEach((labwareArray, index) => {
|
|
15
|
+
labwareArray.forEach(labware => {
|
|
16
|
+
if (labware.labwareId === labwareId) {
|
|
17
|
+
const liquidId = liquidIds[index]
|
|
18
|
+
const liquid = liquidsInLoadOrder.find(liquid => liquid.id === liquidId)
|
|
19
|
+
const wellFill: {
|
|
20
|
+
[well: string]: string
|
|
21
|
+
} = {}
|
|
22
|
+
Object.keys(labware.volumeByWell).forEach(key => {
|
|
23
|
+
wellFill[key] = liquid?.displayColor ?? ''
|
|
24
|
+
})
|
|
25
|
+
labwareWellFill = { ...labwareWellFill, ...wellFill }
|
|
26
|
+
}
|
|
27
|
+
})
|
|
28
|
+
})
|
|
29
|
+
return labwareWellFill
|
|
30
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import styled from 'styled-components'
|
|
2
|
+
import { animated } from '@react-spring/web'
|
|
3
|
+
import type * as React from 'react'
|
|
4
|
+
import { Svg } from '../../primitives'
|
|
5
|
+
|
|
6
|
+
interface RobotCoordinateSpaceProps extends React.ComponentProps<typeof Svg> {
|
|
7
|
+
animated?: boolean
|
|
8
|
+
}
|
|
9
|
+
export function RobotCoordinateSpace(
|
|
10
|
+
props: RobotCoordinateSpaceProps
|
|
11
|
+
): JSX.Element {
|
|
12
|
+
const { animated = false, children, ...restProps } = props
|
|
13
|
+
const allPassThroughProps = {
|
|
14
|
+
transform: 'scale(1, -1)',
|
|
15
|
+
...restProps,
|
|
16
|
+
}
|
|
17
|
+
return animated ? (
|
|
18
|
+
<AnimatedSvg {...allPassThroughProps}>{children}</AnimatedSvg>
|
|
19
|
+
) : (
|
|
20
|
+
<Svg {...allPassThroughProps}>{children}</Svg>
|
|
21
|
+
)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* These animated components needs to be split out because react-spring and styled-components don't play nice
|
|
26
|
+
* @see https://github.com/pmndrs/react-spring/issues/1515 */
|
|
27
|
+
// @ts-expect-error Type instantiation is excessively deep and possibly infinite
|
|
28
|
+
const AnimatedSvg = styled(animated.svg)<typeof animated.svg>``
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { useRef } from 'react'
|
|
2
|
+
import { Svg } from '../../primitives'
|
|
3
|
+
|
|
4
|
+
import type { ReactNode } from 'react'
|
|
5
|
+
import type { DeckDefinition, DeckSlot } from '@opentrons/shared-data'
|
|
6
|
+
|
|
7
|
+
export interface RobotCoordinateSpaceWithRefRenderProps {
|
|
8
|
+
deckSlotsById: { [slotId: string]: DeckSlot }
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
interface RobotCoordinateSpaceWithRefProps
|
|
12
|
+
extends React.ComponentProps<typeof Svg> {
|
|
13
|
+
viewBox?: string | null
|
|
14
|
+
deckDef?: DeckDefinition
|
|
15
|
+
zoomed?: boolean
|
|
16
|
+
children?: (props: RobotCoordinateSpaceWithRefRenderProps) => ReactNode
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function RobotCoordinateSpaceWithRef(
|
|
20
|
+
props: RobotCoordinateSpaceWithRefProps
|
|
21
|
+
): JSX.Element | null {
|
|
22
|
+
const { children, deckDef, viewBox, zoomed = false, ...restProps } = props
|
|
23
|
+
const wrapperRef = useRef<SVGSVGElement>(null)
|
|
24
|
+
|
|
25
|
+
if (deckDef == null && viewBox == null) return null
|
|
26
|
+
|
|
27
|
+
let wholeDeckViewBox
|
|
28
|
+
let deckSlotsById = {}
|
|
29
|
+
if (deckDef != null) {
|
|
30
|
+
const [viewBoxOriginX, viewBoxOriginY] = deckDef.cornerOffsetFromOrigin
|
|
31
|
+
const [deckXDimension, deckYDimension] = deckDef.dimensions
|
|
32
|
+
|
|
33
|
+
deckSlotsById = deckDef.locations.addressableAreas.reduce(
|
|
34
|
+
(acc, deckSlot) => ({ ...acc, [deckSlot.id]: deckSlot }),
|
|
35
|
+
{}
|
|
36
|
+
)
|
|
37
|
+
wholeDeckViewBox = `${viewBoxOriginX} ${viewBoxOriginY} ${deckXDimension} ${deckYDimension}`
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return (
|
|
41
|
+
<Svg
|
|
42
|
+
viewBox={zoomed ? viewBox : wholeDeckViewBox}
|
|
43
|
+
ref={wrapperRef}
|
|
44
|
+
transform="scale(1, -1)"
|
|
45
|
+
width="100%"
|
|
46
|
+
height="100%"
|
|
47
|
+
{...restProps}
|
|
48
|
+
>
|
|
49
|
+
{children?.({ deckSlotsById })}
|
|
50
|
+
</Svg>
|
|
51
|
+
)
|
|
52
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './BaseDeck'
|
|
2
|
+
export * from './BaseDeck/__fixtures__'
|
|
3
|
+
export * from './ProtocolDeck'
|
|
4
|
+
export * from './ProtocolDeck/utils'
|
|
5
|
+
export * from './Deck'
|
|
6
|
+
export * from './DeckConfigurator'
|
|
7
|
+
export * from './DeckSlotLocation'
|
|
8
|
+
export * from './Labware'
|
|
9
|
+
export * from './Module'
|
|
10
|
+
export * from './Pipette'
|
|
11
|
+
export * from './RobotCoordinateSpace'
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { AffineTransformMatrix } from '@opentrons/shared-data'
|
|
2
|
+
|
|
3
|
+
export const IDENTITY_AFFINE_TRANSFORM: AffineTransformMatrix = [
|
|
4
|
+
[1, 0, 0, 0],
|
|
5
|
+
[0, 1, 0, 0],
|
|
6
|
+
[0, 0, 1, 0],
|
|
7
|
+
[0, 0, 0, 1],
|
|
8
|
+
]
|
|
9
|
+
|
|
10
|
+
// multiply two matrices together (dot product)
|
|
11
|
+
export function multiplyMatrices(a: number[][], b: number[][]): number[][] {
|
|
12
|
+
const transposedB = b[0].map((_val, index) => b.map(row => row[index]))
|
|
13
|
+
return a.map(rowA =>
|
|
14
|
+
transposedB.map(rowB =>
|
|
15
|
+
rowA.reduce((acc, valA, colIndexA) => acc + valA * rowB[colIndexA], 0)
|
|
16
|
+
)
|
|
17
|
+
)
|
|
18
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { COLORS } from '.'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Constants
|
|
5
|
+
*/
|
|
6
|
+
export const borderRadius2 = '2px' // WEB ONLY!
|
|
7
|
+
export const borderRadius4 = '4px'
|
|
8
|
+
export const borderRadius8 = '8px'
|
|
9
|
+
export const borderRadius12 = '12px'
|
|
10
|
+
export const borderRadius16 = '16px'
|
|
11
|
+
export const borderRadius40 = '40px'
|
|
12
|
+
export const borderRadiusFull = '200px'
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Styles
|
|
16
|
+
*/
|
|
17
|
+
export const styleSolid = 'solid'
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Special-case borders
|
|
21
|
+
*/
|
|
22
|
+
export const activeLineBorder = `1px ${styleSolid} ${COLORS.blue50}`
|
|
23
|
+
export const lineBorder = `1px ${styleSolid} ${COLORS.grey30}`
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Shadows
|
|
27
|
+
*/
|
|
28
|
+
export const smallDropShadow = '0px 3px 6px rgba(0, 0, 0, 0.23)'
|
|
29
|
+
export const tinyDropShadow = '0px 1px 3px 0px rgba(0, 0, 0, .33)'
|
|
30
|
+
// touch screen
|
|
31
|
+
export const shadowBig = '0px 3px 6px rgba(0,0,0,0.23)'
|
|
32
|
+
export const shadowSmall = '0px 0px 40px rgba(0,0,0,0.4)'
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// some colors are slightly adjusted for on-device display screen differences
|
|
2
|
+
// isTouchscreen hex values are dev concerns only - designs will reflect the standard hex values
|
|
3
|
+
import { isTouchscreen } from '../ui-style-constants/responsiveness'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* green
|
|
7
|
+
*/
|
|
8
|
+
export const green60 = '#03683E'
|
|
9
|
+
export const green50 = isTouchscreen ? '#1CA850' : '#04AA65'
|
|
10
|
+
export const green40 = isTouchscreen ? '#8EF3A8' : '#91E2C0'
|
|
11
|
+
export const green35 = isTouchscreen ? '#8AFBAB' : '#AFEDD3'
|
|
12
|
+
export const green30 = '#C4F6E0'
|
|
13
|
+
export const green20 = '#E8F7ED'
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* red
|
|
17
|
+
*/
|
|
18
|
+
export const red60 = '#941313'
|
|
19
|
+
export const red55 = '#C71A1B'
|
|
20
|
+
export const red50 = '#DE1B1B'
|
|
21
|
+
export const red40 = '#F5B2B3'
|
|
22
|
+
export const red35 = '#F8C8C9'
|
|
23
|
+
export const red30 = '#FAD6D6'
|
|
24
|
+
export const red20 = '#FCE9E9'
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* yellow
|
|
28
|
+
*/
|
|
29
|
+
export const yellow60 = '#825512'
|
|
30
|
+
export const yellow50 = '#F09D20'
|
|
31
|
+
export const yellow40 = '#FCD48B'
|
|
32
|
+
export const yellow35 = '#FFE1A4'
|
|
33
|
+
export const yellow30 = '#FFE9BE'
|
|
34
|
+
export const yellow20 = '#FDF3E2'
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* purple
|
|
38
|
+
*/
|
|
39
|
+
export const purple60 = isTouchscreen ? '#612367' : '#562566'
|
|
40
|
+
export const purple55 = isTouchscreen ? '#822E89' : '#713187'
|
|
41
|
+
export const purple50 = isTouchscreen ? '#9E39A8' : '#893BA4'
|
|
42
|
+
export const purple40 = isTouchscreen ? '#E2A9EA' : '#CEA4DF'
|
|
43
|
+
export const purple35 = isTouchscreen ? '#ECC2F2' : '#DBBCE7'
|
|
44
|
+
export const purple30 = isTouchscreen ? '#F4DEF7' : '#E6D5EC'
|
|
45
|
+
export const purple20 = isTouchscreen ? '#FFF3FE' : '#F1E8F5'
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* blue
|
|
49
|
+
*/
|
|
50
|
+
export const blue60 = '#004196'
|
|
51
|
+
export const blue55 = '#0056C8'
|
|
52
|
+
export const blue40 = '#A9CEFD'
|
|
53
|
+
export const blue35 = '#BFDCFD'
|
|
54
|
+
export const blue30 = '#D0E6FE'
|
|
55
|
+
export const blue20 = '#E1EFFF'
|
|
56
|
+
export const blue10 = '#F1F8FF'
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* grey
|
|
60
|
+
*/
|
|
61
|
+
export const grey60 = '#4A4C4E'
|
|
62
|
+
export const grey55 = '#626467'
|
|
63
|
+
export const grey50 = '#737578'
|
|
64
|
+
export const grey40 = '#B7B8B9'
|
|
65
|
+
export const grey35 = '#CBCCCC'
|
|
66
|
+
export const grey30 = '#DEDEDE'
|
|
67
|
+
export const grey20 = '#E9E9E9'
|
|
68
|
+
export const grey10 = '#F3F3F3'
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* core
|
|
72
|
+
*/
|
|
73
|
+
export const black90 = '#16212D'
|
|
74
|
+
export const black80 = '#24313F'
|
|
75
|
+
export const black70 = '#39495B'
|
|
76
|
+
export const white = '#FFFFFF'
|
|
77
|
+
export const blue50 = '#006CFA'
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Semi-opaques
|
|
81
|
+
* */
|
|
82
|
+
export const transparentWhite80 = `${white}CC`
|
|
83
|
+
export const transparentWhite50 = `${white}80`
|
|
84
|
+
export const transparentBlack80 = `${black90}80`
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* flex
|
|
88
|
+
*/
|
|
89
|
+
export const flex55 = '#0297CC'
|
|
90
|
+
export const flex50 = '#00BDFF'
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* extras
|
|
94
|
+
*/
|
|
95
|
+
export const transparent = 'transparent'
|
|
96
|
+
// opacity hex codes to append to 6-digit color hex codes
|
|
97
|
+
export const opacity20HexCode = '33' // 20% opacity
|
|
98
|
+
export const opacity40HexCode = '66' // 40% opacity
|
|
99
|
+
export const opacity60HexCode = '99' // 60% opacity
|
|
100
|
+
export const opacity90HexCode = 'E6' // 90% opacity
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * as TYPOGRAPHY from './typography'
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Note: these values are only currently correct for desktop and should not be used on ODD.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
// Valid for most typography styles
|
|
6
|
+
export const fontFamily = 'Public Sans'
|
|
7
|
+
|
|
8
|
+
export const fontWeightRegular = '400'
|
|
9
|
+
export const fontWeightSemiBold = '600'
|
|
10
|
+
export const fontWeightBold = '700'
|
|
11
|
+
|
|
12
|
+
// Display styles
|
|
13
|
+
const fontFamilyDisplay = fontFamily
|
|
14
|
+
const fontSizeDisplay = '2.4375rem' // 39px
|
|
15
|
+
const lineHeightDisplay = '3rem' // 48px
|
|
16
|
+
|
|
17
|
+
// Display-Bold
|
|
18
|
+
export const fontSizeDisplayBold = fontSizeDisplay
|
|
19
|
+
export const lineHeightDisplayBold = lineHeightDisplay
|
|
20
|
+
export const fontFamilyDisplayBold = fontFamilyDisplay
|
|
21
|
+
export const fontWeightDisplayBold = fontWeightBold
|
|
22
|
+
export const fontStyleDisplayBold = `${fontWeightDisplayBold} ${fontSizeDisplayBold}/${lineHeightDisplayBold} ${fontFamilyDisplayBold}`
|
|
23
|
+
|
|
24
|
+
// Heading-Large
|
|
25
|
+
const fontSizeHeadingLarge = '1.625rem' // 26px
|
|
26
|
+
const lineHeightHeadingLarge = '2rem' // 32px
|
|
27
|
+
const fontFamilyHeadingLarge = fontFamily
|
|
28
|
+
|
|
29
|
+
// Heading-Large-Regular
|
|
30
|
+
export const fontFamilyHeadingLargeRegular = fontFamilyHeadingLarge
|
|
31
|
+
export const fontSizeHeadingLargeRegular = fontSizeHeadingLarge
|
|
32
|
+
export const lineHeightHeadingLargeRegular = lineHeightHeadingLarge
|
|
33
|
+
export const fontWeightHeadingLargeRegular = fontWeightRegular
|
|
34
|
+
export const fontStyleHeadingLargeRegular = `${fontWeightHeadingLargeRegular} ${fontSizeHeadingLargeRegular}/${lineHeightHeadingLargeRegular} ${fontFamilyHeadingLargeRegular}`
|
|
35
|
+
|
|
36
|
+
// Heading-Large-Bold
|
|
37
|
+
export const fontFamilyHeadingLargeBold = fontFamilyHeadingLarge
|
|
38
|
+
export const fontSizeHeadingLargeBold = fontSizeHeadingLarge
|
|
39
|
+
export const lineHeightHeadingLargeBold = lineHeightHeadingLarge
|
|
40
|
+
export const fontWeightHeadingLargeBold = fontWeightBold
|
|
41
|
+
export const fontStyleHeadingLargeBold = `${fontWeightHeadingLargeBold} ${fontSizeHeadingLargeBold}/${lineHeightHeadingLargeBold} ${fontFamilyHeadingLargeBold}`
|
|
42
|
+
|
|
43
|
+
// Heading-Medium
|
|
44
|
+
const fontSizeHeadingMedium = '1.4375rem' // 23px
|
|
45
|
+
const lineHeightHeadingMedium = '1.75rem' // 28px
|
|
46
|
+
const fontFamilyHeadingMedium = fontFamily
|
|
47
|
+
|
|
48
|
+
// Heading-Medium-Regular
|
|
49
|
+
export const fontSizeHeadingMediumSemiBold = fontSizeHeadingMedium
|
|
50
|
+
export const lineHeightHeadingMediumSemiBold = lineHeightHeadingMedium
|
|
51
|
+
|
|
52
|
+
export const fontFamilyHeadingMediumSemiBold = fontFamilyHeadingMedium
|
|
53
|
+
export const fontWeightHeadingMediumSemiBold = fontWeightSemiBold
|
|
54
|
+
export const fontStyleHeadingMediumSemiBold = `${fontWeightHeadingMediumSemiBold} ${fontSizeHeadingMediumSemiBold}/${lineHeightHeadingMediumSemiBold} ${fontFamilyHeadingMediumSemiBold}`
|
|
55
|
+
export const fontStyleHeadingMediumBold = `${fontWeightBold} ${fontSizeHeadingMedium}/${lineHeightHeadingMediumSemiBold} ${fontFamilyHeadingMediumSemiBold}`
|
|
56
|
+
|
|
57
|
+
// Heading-Small
|
|
58
|
+
const fontSizeHeadingSmall = '1.125rem' // 18px
|
|
59
|
+
const lineHeightHeadingSmall = '1.5rem' // 24px
|
|
60
|
+
const fontFamilyHeadingSmall = fontFamily
|
|
61
|
+
|
|
62
|
+
// Heading-Small-Regular
|
|
63
|
+
export const fontSizeHeadingSmallRegular = fontSizeHeadingSmall
|
|
64
|
+
export const lineHeightHeadingSmallRegular = lineHeightHeadingSmall
|
|
65
|
+
export const fontFamilyHeadingSmallRegular = fontFamilyHeadingSmall
|
|
66
|
+
export const fontWeightHeadingSmallRegular = '400'
|
|
67
|
+
export const fontStyleHeadingSmallRegular = `${fontWeightHeadingSmallRegular} ${fontSizeHeadingSmallRegular}/${lineHeightHeadingSmallRegular} ${fontFamilyHeadingSmallRegular}`
|
|
68
|
+
|
|
69
|
+
// Heading-Small-Bold
|
|
70
|
+
export const fontSizeHeadingSmallBold = fontSizeHeadingSmall
|
|
71
|
+
export const lineHeightHeadingSmallBold = lineHeightHeadingSmall
|
|
72
|
+
export const fontFamilyHeadingSmallBold = fontFamilyHeadingSmall
|
|
73
|
+
export const fontWeightHeadingSmallBold = fontWeightBold
|
|
74
|
+
export const fontStyleHeadingSmallBold = `${fontWeightHeadingSmallBold} ${fontSizeHeadingSmallBold}/${lineHeightHeadingSmallBold} ${fontFamilyHeadingSmallBold}`
|
|
75
|
+
export const fontStyleHeadingSmallSemiBold = `${fontWeightSemiBold} ${fontSizeHeadingSmallBold}/${lineHeightHeadingSmallBold} ${fontFamilyHeadingSmallBold}`
|
|
76
|
+
|
|
77
|
+
// Body-Large
|
|
78
|
+
const fontSizeBodyLarge = '1rem' // 16px
|
|
79
|
+
const lineHeightBodyLarge = '1.5rem' // 24px
|
|
80
|
+
const fontFamilyBodyLarge = fontFamily
|
|
81
|
+
|
|
82
|
+
// Body-Large-Medium
|
|
83
|
+
export const fontSizeBodyLargeSemiBold = fontSizeBodyLarge
|
|
84
|
+
export const lineHeightBodyLargeSemiBold = lineHeightBodyLarge
|
|
85
|
+
export const fontFamilyBodyLargeSemiBold = fontFamilyBodyLarge
|
|
86
|
+
export const fontWeightBodyLargeSemiBold = fontWeightSemiBold
|
|
87
|
+
export const fontStyleBodyLargeSemiBold = `${fontWeightBodyLargeSemiBold} ${fontSizeBodyLargeSemiBold}/${lineHeightBodyLargeSemiBold} ${fontFamilyBodyLargeSemiBold}`
|
|
88
|
+
|
|
89
|
+
// Body-Large-Regular
|
|
90
|
+
export const fontSizeBodyLargeRegular = fontSizeBodyLarge
|
|
91
|
+
export const lineHeightBodyLargeRegular = lineHeightBodyLarge
|
|
92
|
+
export const fontFamilyBodyLargeRegular = fontFamilyBodyLarge
|
|
93
|
+
export const fontWeightBodyLargeRegular = fontWeightRegular
|
|
94
|
+
export const fontStyleBodyLargeRegular = `${fontWeightBodyLargeRegular} ${fontSizeBodyLargeRegular}/${lineHeightBodyLargeRegular} ${fontFamilyBodyLargeRegular}`
|
|
95
|
+
|
|
96
|
+
// Body-Default
|
|
97
|
+
const fontSizeBodyDefault = '0.875rem' // 14px
|
|
98
|
+
const lineHeightBodyDefault = '1.25rem' // 20px
|
|
99
|
+
const fontFamilyBodyDefault = fontFamily
|
|
100
|
+
|
|
101
|
+
// Body-Default-Medium
|
|
102
|
+
export const fontSizeBodyDefaultSemiBold = fontSizeBodyDefault
|
|
103
|
+
export const lineHeightBodyDefaultSemiBold = lineHeightBodyDefault
|
|
104
|
+
export const fontFamilyBodyDefaultSemiBold = fontFamilyBodyDefault
|
|
105
|
+
export const fontWeightBodyDefaultSemiBold = fontWeightSemiBold
|
|
106
|
+
export const fontStyleBodyDefaultSemiBold = `${fontWeightBodyDefaultSemiBold} ${fontSizeBodyDefaultSemiBold}/${lineHeightBodyDefaultSemiBold} ${fontFamilyBodyDefaultSemiBold}`
|
|
107
|
+
|
|
108
|
+
// Body-Default-Regular
|
|
109
|
+
export const fontSizeBodyDefaultRegular = fontSizeBodyDefault
|
|
110
|
+
export const lineHeightBodyDefaultRegular = lineHeightBodyDefault
|
|
111
|
+
export const fontFamilyBodyDefaultRegular = fontFamilyBodyDefault
|
|
112
|
+
export const fontWeightBodyDefaultRegular = fontWeightRegular
|
|
113
|
+
export const fontStyleBodyDefaultRegular = `${fontWeightBodyDefaultRegular} ${fontSizeBodyDefaultRegular}/${lineHeightBodyDefaultRegular} ${fontFamilyBodyDefaultRegular}`
|
|
114
|
+
|
|
115
|
+
// Caption
|
|
116
|
+
const fontSizeCaption = '0.8125rem' // 13px
|
|
117
|
+
const lineHeightCaption = '1rem' // 16px
|
|
118
|
+
const fontFamilyCaption = fontFamily
|
|
119
|
+
|
|
120
|
+
// Caption-Bold
|
|
121
|
+
export const fontSizeCaptionBold = fontSizeCaption
|
|
122
|
+
export const lineHeightCaptionBold = lineHeightCaption
|
|
123
|
+
export const fontFamilyCaptionBold = fontFamilyCaption
|
|
124
|
+
export const fontWeightCaptionBold = fontWeightBold
|
|
125
|
+
export const fontStyleCaptionBold = `${fontWeightCaptionBold} ${fontSizeCaptionBold}/${lineHeightCaptionBold} ${fontFamilyCaptionBold}`
|
|
126
|
+
|
|
127
|
+
// Caption-Medium
|
|
128
|
+
export const fontSizeCaptionSemiBold = fontSizeCaption
|
|
129
|
+
export const lineHeightCaptionSemiBold = lineHeightCaption
|
|
130
|
+
export const fontFamilyCaptionSemiBold = fontFamilyCaption
|
|
131
|
+
export const fontWeightCaptionSemiBold = fontWeightSemiBold
|
|
132
|
+
export const fontStyleCaptionSemiBold = `${fontWeightCaptionSemiBold} ${fontSizeCaptionSemiBold}/${lineHeightCaptionSemiBold} ${fontFamilyCaptionSemiBold}`
|
|
133
|
+
|
|
134
|
+
// Caption-Regular
|
|
135
|
+
export const fontSizeCaptionRegular = fontSizeCaption
|
|
136
|
+
export const lineHeightCaptionRegular = lineHeightCaption
|
|
137
|
+
export const fontFamilyCaptionRegular = fontFamilyCaption
|
|
138
|
+
export const fontWeightCaptionRegular = fontWeightRegular
|
|
139
|
+
export const fontStyleCaptionRegular = `${fontWeightCaptionRegular} ${fontSizeCaptionRegular}/${lineHeightCaptionRegular} ${fontFamilyCaptionRegular}`
|
|
140
|
+
|
|
141
|
+
// Code
|
|
142
|
+
const fontSizeCode = '0.8125rem' // 12px
|
|
143
|
+
const lineHeightCode = '1.25rem' // 20px
|
|
144
|
+
const fontFamilyCode = 'Reddit Mono'
|
|
145
|
+
|
|
146
|
+
// Code-Regular
|
|
147
|
+
export const fontSizeCodeRegular = fontSizeCode
|
|
148
|
+
export const lineHeightCodeRegular = lineHeightCode
|
|
149
|
+
export const fontFamilyCodeRegular = fontFamilyCode
|
|
150
|
+
export const fontWeightCodeRegular = fontWeightRegular
|
|
151
|
+
export const fontStyleCodeRegular = `${fontWeightCodeRegular} ${fontSizeCodeRegular}/${lineHeightCodeRegular} ${fontFamilyCodeRegular}`
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest'
|
|
2
|
+
import { act, renderHook } from '@testing-library/react'
|
|
3
|
+
import { useDrag } from '../useDrag'
|
|
4
|
+
import type { ElementPosition } from '../useDrag'
|
|
5
|
+
|
|
6
|
+
const mockPosition: ElementPosition = {
|
|
7
|
+
width: 100,
|
|
8
|
+
height: 200,
|
|
9
|
+
x: 10,
|
|
10
|
+
y: 20,
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
describe('useDrag', () => {
|
|
14
|
+
it('useDrag returns UseDragResult', () => {
|
|
15
|
+
const { result } = renderHook(() => useDrag(mockPosition))
|
|
16
|
+
|
|
17
|
+
expect(result.current.position.width).toBe(mockPosition.width)
|
|
18
|
+
expect(result.current.position.height).toBe(mockPosition.height)
|
|
19
|
+
expect(result.current.position.x).toBe(mockPosition.x)
|
|
20
|
+
expect(result.current.position.y).toBe(mockPosition.y)
|
|
21
|
+
expect(result.current.style.width).toBe(`${mockPosition.width}px`)
|
|
22
|
+
expect(result.current.style.height).toBe(`${mockPosition.height}px`)
|
|
23
|
+
expect(result.current.style.touchAction).toBe('none')
|
|
24
|
+
expect(result.current.style.transform).toBe(
|
|
25
|
+
`translate3D(${mockPosition.x}px, ${mockPosition.y}px, 0)`
|
|
26
|
+
)
|
|
27
|
+
expect(result.current.style.position).toBe('absolute')
|
|
28
|
+
expect(typeof result.current.isEnabled).toBe('boolean')
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
it('When calling enable, isEnabled true', () => {
|
|
32
|
+
const { result } = renderHook(() => useDrag(mockPosition))
|
|
33
|
+
act(() => {
|
|
34
|
+
result.current.enable()
|
|
35
|
+
})
|
|
36
|
+
expect(result.current.isEnabled).toBe(true)
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
it('When calling disable, isEnabled false', () => {
|
|
40
|
+
const { result } = renderHook(() => useDrag(mockPosition))
|
|
41
|
+
act(() => {
|
|
42
|
+
result.current.disable()
|
|
43
|
+
})
|
|
44
|
+
expect(result.current.isEnabled).toBe(false)
|
|
45
|
+
})
|
|
46
|
+
})
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach } from 'vitest'
|
|
2
|
+
import { renderHook } from '@testing-library/react'
|
|
3
|
+
import { useIdle } from '../useIdle'
|
|
4
|
+
|
|
5
|
+
const MOCK_EVENTS: Array<keyof DocumentEventMap> = [
|
|
6
|
+
'mousedown',
|
|
7
|
+
'click',
|
|
8
|
+
'scroll',
|
|
9
|
+
]
|
|
10
|
+
|
|
11
|
+
const MOCK_OPTIONS = {
|
|
12
|
+
events: MOCK_EVENTS,
|
|
13
|
+
initialState: false,
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
describe('useIdle', () => {
|
|
17
|
+
beforeEach(() => {
|
|
18
|
+
vi.useFakeTimers({ shouldAdvanceTime: true })
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
it('should return the default initialState', () => {
|
|
22
|
+
const mockTime = 1000
|
|
23
|
+
const { result } = renderHook(() => useIdle(mockTime))
|
|
24
|
+
expect(result.current).toBe(true)
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
it('should return the given initialState', () => {
|
|
28
|
+
const mockTime = 1000
|
|
29
|
+
const { result } = renderHook(() => useIdle(mockTime, MOCK_OPTIONS))
|
|
30
|
+
expect(result.current).toBe(false)
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
it('should return true after 1000ms', () => {
|
|
34
|
+
const mockTime = 1000
|
|
35
|
+
const { result } = renderHook(() => useIdle(mockTime, MOCK_OPTIONS))
|
|
36
|
+
expect(result.current).toBe(false)
|
|
37
|
+
setTimeout(() => {
|
|
38
|
+
expect(result.current).toBe(true)
|
|
39
|
+
}, 1001)
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
it('should return true after 180,000ms - 3min', () => {
|
|
43
|
+
const mockTime = 60 * 1000 * 3
|
|
44
|
+
const { result } = renderHook(() => useIdle(mockTime, MOCK_OPTIONS))
|
|
45
|
+
expect(result.current).toBe(false)
|
|
46
|
+
setTimeout(() => {
|
|
47
|
+
expect(result.current).toBe(true)
|
|
48
|
+
}, 180001)
|
|
49
|
+
})
|
|
50
|
+
|
|
51
|
+
it('should return true after 180,0000ms - 30min', () => {
|
|
52
|
+
const mockTime = 60 * 1000 * 30
|
|
53
|
+
const { result } = renderHook(() => useIdle(mockTime, MOCK_OPTIONS))
|
|
54
|
+
expect(result.current).toBe(false)
|
|
55
|
+
setTimeout(() => {
|
|
56
|
+
expect(result.current).toBe(true)
|
|
57
|
+
}, 1800001)
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
it('should return true after 3,600,000ms - 1 hour', () => {
|
|
61
|
+
const mockTime = 60 * 1000 * 60
|
|
62
|
+
const { result } = renderHook(() => useIdle(mockTime, MOCK_OPTIONS))
|
|
63
|
+
expect(result.current).toBe(false)
|
|
64
|
+
setTimeout(() => {
|
|
65
|
+
expect(result.current).toBe(true)
|
|
66
|
+
}, 3600001)
|
|
67
|
+
})
|
|
68
|
+
})
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest'
|
|
2
|
+
import { act, renderHook, waitFor } from '@testing-library/react'
|
|
3
|
+
import { useLongPress } from '../useLongPress'
|
|
4
|
+
|
|
5
|
+
describe('useLongPress', () => {
|
|
6
|
+
it('useLongPress returns typeof UseLongPressResult', () => {
|
|
7
|
+
const { result } = renderHook(() => useLongPress())
|
|
8
|
+
expect(result.current.style.touchAction).toBe('none')
|
|
9
|
+
expect(result.current.isEnabled).toBe(true)
|
|
10
|
+
expect(result.current.isLongPressed).toBe(false)
|
|
11
|
+
expect(result.current.isTapped).toBe(false)
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
it('when callling disable, isEnabled true', () => {
|
|
15
|
+
const { result } = renderHook(() => useLongPress())
|
|
16
|
+
act(() => result.current.enable())
|
|
17
|
+
waitFor(() => expect(result.current.isEnabled).toBe(true))
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
it('when callling disable, isEnabled false', () => {
|
|
21
|
+
const { result } = renderHook(() => useLongPress())
|
|
22
|
+
act(() => result.current.disable())
|
|
23
|
+
waitFor(() => expect(result.current.isEnabled).toBe(false))
|
|
24
|
+
})
|
|
25
|
+
})
|