@opentrons/components 0.1.7-alpha.1 → 0.2.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/cssModuleSideEffect.ts +22 -0
  2. package/lib/assets/localization/en/index.d.ts +12 -0
  3. package/lib/assets/localization/index.d.ts +12 -0
  4. package/lib/atoms/AnimationVideo/index.d.ts +13 -0
  5. package/lib/atoms/InlineNotification/index.d.ts +1 -1
  6. package/lib/atoms/ListButton/ListButtonChildren/index.d.ts +0 -1
  7. package/lib/atoms/StyledText/PlaceholderStyledText.d.ts +14 -0
  8. package/lib/atoms/StyledText/index.d.ts +1 -0
  9. package/lib/atoms/buttons/BasicButton.d.ts +12 -0
  10. package/lib/atoms/buttons/index.d.ts +1 -0
  11. package/lib/atoms/index.d.ts +1 -0
  12. package/lib/hardware-sim/BaseDeck/BaseDeck.d.ts +10 -8
  13. package/lib/hardware-sim/Deck/FlexTrash.d.ts +4 -1
  14. package/lib/hardware-sim/Deck/MoveLabwareOnDeck.d.ts +3 -2
  15. package/lib/hardware-sim/Deck/RobotCoordsForeignDiv.d.ts +6 -5
  16. package/lib/hardware-sim/Deck/RobotCoordsForeignObject.d.ts +8 -5
  17. package/lib/hardware-sim/Deck/RobotCoordsText.d.ts +11 -1
  18. package/lib/hardware-sim/Deck/RobotWorkSpace.d.ts +30 -14
  19. package/lib/hardware-sim/Deck/__tests__/resolveLabwareLocation.test.d.ts +1 -0
  20. package/lib/hardware-sim/Deck/resolveLabwareLocation.d.ts +20 -0
  21. package/lib/hardware-sim/DeckConfigurator/AbsorbanceReaderItem.d.ts +11 -0
  22. package/lib/hardware-sim/DeckConfigurator/EmptyConfigItem.d.ts +11 -0
  23. package/lib/hardware-sim/DeckConfigurator/FlexStackerItem.d.ts +12 -0
  24. package/lib/hardware-sim/DeckConfigurator/HeaterShakerItem.d.ts +11 -0
  25. package/lib/hardware-sim/DeckConfigurator/MagneticBlockItem.d.ts +12 -0
  26. package/lib/hardware-sim/DeckConfigurator/StagingAreaConfigItem.d.ts +11 -0
  27. package/lib/hardware-sim/DeckConfigurator/{StaticFixture.d.ts → StaticItem.d.ts} +1 -1
  28. package/lib/hardware-sim/DeckConfigurator/TemperatureModuleItem.d.ts +11 -0
  29. package/lib/hardware-sim/DeckConfigurator/ThermocyclerItem.d.ts +11 -0
  30. package/lib/hardware-sim/DeckConfigurator/TrashBinConfigItem.d.ts +11 -0
  31. package/lib/hardware-sim/DeckConfigurator/WasteChuteConfigItem.d.ts +11 -0
  32. package/lib/hardware-sim/DeckConfigurator/constants.d.ts +5 -8
  33. package/lib/hardware-sim/DeckConfigurator/index.d.ts +4 -3
  34. package/lib/hardware-sim/Labware/CalibrationBlockRender.d.ts +15 -0
  35. package/lib/hardware-sim/Labware/Labware.d.ts +7 -8
  36. package/lib/hardware-sim/Labware/LabwareAdapter/index.d.ts +2 -2
  37. package/lib/hardware-sim/Labware/LabwareRender.d.ts +46 -5
  38. package/lib/hardware-sim/Labware/index.d.ts +1 -0
  39. package/lib/hardware-sim/Labware/labwareInternals/FilledWells.d.ts +3 -4
  40. package/lib/hardware-sim/Labware/labwareInternals/LabwareOutline.d.ts +20 -9
  41. package/lib/hardware-sim/Labware/labwareInternals/LabwareWellLabels.d.ts +2 -2
  42. package/lib/hardware-sim/Labware/labwareInternals/StaticLabware.d.ts +2 -2
  43. package/lib/hardware-sim/Labware/labwareInternals/StrokedWells.d.ts +2 -2
  44. package/lib/hardware-sim/Labware/labwareInternals/StyledWells.d.ts +2 -2
  45. package/lib/hardware-sim/Labware/labwareInternals/Well.d.ts +1 -2
  46. package/lib/hardware-sim/Labware/labwareInternals/WellLabels.d.ts +2 -2
  47. package/lib/hardware-sim/Module/index.d.ts +24 -2
  48. package/lib/hardware-sim/Pipette/PipetteRender.d.ts +2 -2
  49. package/lib/hardware-sim/RobotCoordinateSpace/RobotCoordinateSpace.d.ts +5 -3
  50. package/lib/hocs/withStyleProps.d.ts +26 -0
  51. package/lib/hooks/useConditionalConfirm.d.ts +4 -0
  52. package/lib/icons/Icon.d.ts +7 -7
  53. package/lib/icons/ModuleIcon.d.ts +4 -3
  54. package/lib/instrument/index.d.ts +0 -2
  55. package/lib/legacy-hardware-sim/index.d.ts +0 -1
  56. package/lib/lists/index.d.ts +0 -1
  57. package/lib/molecules/CustomizeExpandButton/__tests__/CustomizeExpandButton.test.d.ts +1 -0
  58. package/lib/molecules/CustomizeExpandButton/index.d.ts +29 -0
  59. package/lib/molecules/DeckInfoLabel/index.d.ts +8 -16
  60. package/lib/molecules/index.d.ts +2 -1
  61. package/lib/organisms/CommandText/index.d.ts +2 -2
  62. package/lib/organisms/CommandText/useCommandTextString/index.d.ts +2 -2
  63. package/lib/organisms/CommandText/useCommandTextString/utils/getLabwareDefinitionsFromCommands.d.ts +2 -2
  64. package/lib/organisms/CommandText/useCommandTextString/utils/getLabwareLocation.d.ts +3 -3
  65. package/lib/organisms/CommandText/useCommandTextString/utils/getLabwareName.d.ts +2 -2
  66. package/lib/organisms/FixtureOption/index.d.ts +2 -2
  67. package/lib/organisms/ProtocolDeck/index.d.ts +10 -0
  68. package/lib/organisms/ProtocolTimelineScrubber/CommandItem.d.ts +2 -2
  69. package/lib/organisms/ProtocolTimelineScrubber/utils.d.ts +2 -2
  70. package/lib/organisms/index.d.ts +1 -0
  71. package/lib/primitives/ForeignObject.d.ts +8 -18
  72. package/lib/primitives/style-props.d.ts +1 -1
  73. package/lib/structure/index.d.ts +2 -3
  74. package/package.json +6 -3
  75. package/src/alerts/alerts.module.css +2 -2
  76. package/src/assets/localization/en/deck_configuration.json +12 -0
  77. package/src/assets/localization/en/index.ts +2 -0
  78. package/src/assets/localization/en/protocol_command_text.json +1 -1
  79. package/src/atoms/AnimationVideo/__tests__/AnimationVideo.test.tsx +40 -0
  80. package/src/atoms/AnimationVideo/index.tsx +44 -0
  81. package/src/atoms/CheckboxField/__tests__/CheckboxField.test.tsx +0 -3
  82. package/src/atoms/CheckboxField/index.tsx +1 -1
  83. package/src/atoms/InlineNotification/index.tsx +86 -70
  84. package/src/atoms/ListButton/ListButton.stories.tsx +21 -7
  85. package/src/atoms/ListButton/ListButtonChildren/index.ts +0 -1
  86. package/src/atoms/ListItem/ListItemChildren/ListItemDescriptor.tsx +2 -2
  87. package/src/atoms/MenuList/OverflowBtn.tsx +39 -41
  88. package/src/atoms/Snackbar/Snackbar.stories.tsx +59 -23
  89. package/src/atoms/Snackbar/index.tsx +48 -38
  90. package/src/atoms/StyledText/PlaceholderStyledText.tsx +46 -0
  91. package/src/atoms/StyledText/index.ts +1 -0
  92. package/src/atoms/StyledText/placeholderstyledtext.module.css +25 -0
  93. package/src/atoms/buttons/BasicButton.tsx +100 -0
  94. package/src/atoms/buttons/SecondaryButton.tsx +5 -2
  95. package/src/atoms/buttons/__tests__/BasicButton.test.tsx +87 -0
  96. package/src/atoms/buttons/buttons.stories.tsx +91 -55
  97. package/src/atoms/buttons/index.ts +1 -0
  98. package/src/atoms/index.ts +1 -0
  99. package/src/buttons/buttons.module.css +92 -92
  100. package/src/controls/styles.module.css +15 -15
  101. package/src/forms/Select.module.css +23 -23
  102. package/src/forms/forms.module.css +38 -37
  103. package/src/hardware-sim/BaseDeck/BaseDeck.stories.tsx +7 -7
  104. package/src/hardware-sim/BaseDeck/BaseDeck.tsx +98 -61
  105. package/src/hardware-sim/BaseDeck/WasteChuteFixture.tsx +22 -28
  106. package/src/hardware-sim/BaseDeck/basedeck.module.css +20 -0
  107. package/src/hardware-sim/Deck/FlexTrash.tsx +50 -30
  108. package/src/hardware-sim/Deck/MoveLabwareOnDeck.stories.tsx +2 -2
  109. package/src/hardware-sim/Deck/MoveLabwareOnDeck.tsx +122 -156
  110. package/src/hardware-sim/Deck/RobotCoordsForeignDiv.tsx +35 -27
  111. package/src/hardware-sim/Deck/RobotCoordsForeignObject.tsx +32 -29
  112. package/src/hardware-sim/Deck/RobotCoordsText.tsx +12 -11
  113. package/src/hardware-sim/Deck/RobotWorkSpace.tsx +74 -54
  114. package/src/hardware-sim/Deck/SlotLabels.tsx +51 -51
  115. package/src/hardware-sim/Deck/__tests__/resolveLabwareLocation.test.ts +138 -0
  116. package/src/hardware-sim/Deck/deck.module.css +54 -0
  117. package/src/hardware-sim/Deck/resolveLabwareLocation.ts +154 -0
  118. package/src/hardware-sim/DeckConfigurator/{FlexStackerFixture.tsx → AbsorbanceReaderItem.tsx} +34 -31
  119. package/src/hardware-sim/DeckConfigurator/{EmptyConfigFixture.tsx → EmptyConfigItem.tsx} +72 -44
  120. package/src/hardware-sim/DeckConfigurator/{AbsorbanceReaderFixture.tsx → FlexStackerItem.tsx} +46 -27
  121. package/src/hardware-sim/DeckConfigurator/{HeaterShakerFixture.tsx → HeaterShakerItem.tsx} +40 -28
  122. package/src/hardware-sim/DeckConfigurator/{MagneticBlockFixture.tsx → MagneticBlockItem.tsx} +41 -58
  123. package/src/hardware-sim/DeckConfigurator/{StagingAreaConfigFixture.tsx → StagingAreaConfigItem.tsx} +41 -23
  124. package/src/hardware-sim/DeckConfigurator/{StaticFixture.tsx → StaticItem.tsx} +16 -9
  125. package/src/hardware-sim/DeckConfigurator/{TemperatureModuleFixture.tsx → TemperatureModuleItem.tsx} +42 -26
  126. package/src/hardware-sim/DeckConfigurator/{ThermocyclerFixture.tsx → ThermocyclerItem.tsx} +31 -21
  127. package/src/hardware-sim/DeckConfigurator/{TrashBinConfigFixture.tsx → TrashBinConfigItem.tsx} +42 -27
  128. package/src/hardware-sim/DeckConfigurator/{WasteChuteConfigFixture.tsx → WasteChuteConfigItem.tsx} +38 -27
  129. package/src/hardware-sim/DeckConfigurator/constants.ts +5 -9
  130. package/src/hardware-sim/DeckConfigurator/index.tsx +236 -206
  131. package/src/hardware-sim/Labware/CalibrationBlockRender.stories.tsx +49 -0
  132. package/src/hardware-sim/Labware/CalibrationBlockRender.tsx +172 -0
  133. package/src/hardware-sim/Labware/Labware.tsx +30 -15
  134. package/src/hardware-sim/Labware/LabwareAdapter/index.tsx +2 -2
  135. package/src/hardware-sim/Labware/LabwareRender.stories.tsx +36 -21
  136. package/src/hardware-sim/Labware/LabwareRender.tsx +70 -15
  137. package/src/hardware-sim/Labware/__tests__/Labware.test.tsx +9 -4
  138. package/src/hardware-sim/Labware/__tests__/LabwareRender.test.tsx +14 -5
  139. package/src/hardware-sim/Labware/index.ts +1 -0
  140. package/src/hardware-sim/Labware/labware.module.css +8 -0
  141. package/src/hardware-sim/Labware/labwareInternals/FilledWells.tsx +3 -4
  142. package/src/hardware-sim/Labware/labwareInternals/LabwareOutline.tsx +48 -23
  143. package/src/hardware-sim/Labware/labwareInternals/LabwareWellLabels.tsx +3 -3
  144. package/src/hardware-sim/Labware/labwareInternals/StaticLabware.tsx +2 -2
  145. package/src/hardware-sim/Labware/labwareInternals/StrokedWells.tsx +2 -2
  146. package/src/hardware-sim/Labware/labwareInternals/StyledWells.tsx +2 -2
  147. package/src/hardware-sim/Labware/labwareInternals/Well.tsx +1 -2
  148. package/src/hardware-sim/Labware/labwareInternals/WellLabels.tsx +10 -11
  149. package/src/hardware-sim/Labware/labwareInternals/__tests__/LabwareWellLabels.test.tsx +2 -2
  150. package/src/hardware-sim/Labware/labwareInternals/__tests__/StrokedWells.test.tsx +2 -2
  151. package/src/hardware-sim/Labware/labwareInternals/__tests__/WellLabels.test.tsx +2 -2
  152. package/src/hardware-sim/Module/Module.stories.tsx +45 -15
  153. package/src/hardware-sim/Module/Thermocycler/index.tsx +2 -2
  154. package/src/hardware-sim/Module/index.tsx +41 -18
  155. package/src/hardware-sim/Pipette/PipetteRender.stories.tsx +2 -2
  156. package/src/hardware-sim/Pipette/PipetteRender.tsx +5 -7
  157. package/src/hardware-sim/Pipette/__tests__/PipetteRender.test.tsx +2 -2
  158. package/src/hardware-sim/RobotCoordinateSpace/RobotCoordinateSpace.tsx +15 -14
  159. package/src/hardware-sim/RobotCoordinateSpace/robotcoordinatespace.module.css +3 -0
  160. package/src/hocs/withStyleProps.ts +53 -0
  161. package/src/hooks/useConditionalConfirm.ts +15 -5
  162. package/src/icons/Icon.tsx +38 -29
  163. package/src/icons/ModuleIcon.tsx +5 -3
  164. package/src/icons/icon-data.ts +26 -2
  165. package/src/icons/icon.module.css +10 -0
  166. package/src/index.module.css +1 -0
  167. package/src/instrument/InstrumentDiagram.tsx +0 -2
  168. package/src/instrument/PipetteSelect.module.css +3 -3
  169. package/src/instrument/index.ts +0 -2
  170. package/src/legacy-hardware-sim/LabwareNameOverlay.module.css +5 -5
  171. package/src/legacy-hardware-sim/ModuleItem.module.css +19 -19
  172. package/src/legacy-hardware-sim/index.ts +0 -1
  173. package/src/lists/index.ts +0 -1
  174. package/src/lists/lists.module.css +23 -23
  175. package/src/modals/modals.module.css +55 -55
  176. package/src/molecules/CustomizeExpandButton/__tests__/CustomizeExpandButton.test.tsx +88 -0
  177. package/src/molecules/CustomizeExpandButton/index.tsx +189 -0
  178. package/src/molecules/DeckInfoLabel/DeckInfoLabel.stories.tsx +10 -6
  179. package/src/molecules/DeckInfoLabel/__tests__/DeckInfoLabel.test.tsx +15 -11
  180. package/src/molecules/DeckInfoLabel/deckinfolabel.module.css +42 -0
  181. package/src/molecules/DeckInfoLabel/index.tsx +36 -62
  182. package/src/molecules/DropdownMenu/index.tsx +17 -13
  183. package/src/molecules/InfoScreen/index.tsx +6 -2
  184. package/src/molecules/ReleaseNotes/styles.module.css +15 -15
  185. package/src/molecules/index.ts +2 -1
  186. package/src/nav/SidePanel.module.css +6 -6
  187. package/src/organisms/CommandText/__tests__/CommandText.test.tsx +12 -12
  188. package/src/organisms/CommandText/index.tsx +2 -2
  189. package/src/organisms/CommandText/useCommandTextString/index.ts +2 -2
  190. package/src/organisms/CommandText/useCommandTextString/utils/__tests__/getFinalLabwareLocation.test.ts +4 -4
  191. package/src/organisms/CommandText/useCommandTextString/utils/commandText/__tests__/getPipettingCommandText.test.tsx +3 -3
  192. package/src/organisms/CommandText/useCommandTextString/utils/commandText/getFlexStackerCommandText.ts +2 -4
  193. package/src/organisms/CommandText/useCommandTextString/utils/commandText/getMoveToWellCommandText.ts +19 -3
  194. package/src/organisms/CommandText/useCommandTextString/utils/commandText/getPipettingCommandText.ts +19 -10
  195. package/src/organisms/CommandText/useCommandTextString/utils/getLabwareDefinitionsFromCommands.ts +9 -9
  196. package/src/organisms/CommandText/useCommandTextString/utils/getLabwareLocation.tsx +3 -3
  197. package/src/organisms/CommandText/useCommandTextString/utils/getLabwareName.ts +2 -2
  198. package/src/organisms/DeckLabelSet/index.tsx +1 -3
  199. package/src/organisms/FixtureOption/__tests__/FixtureOption.test.tsx +0 -2
  200. package/src/organisms/FixtureOption/index.tsx +42 -71
  201. package/src/organisms/ProtocolDeck/index.tsx +118 -0
  202. package/src/organisms/ProtocolTimelineScrubber/CommandItem.tsx +2 -2
  203. package/src/organisms/ProtocolTimelineScrubber/PipetteVisuals.tsx +1 -1
  204. package/src/organisms/ProtocolTimelineScrubber/utils.ts +3 -3
  205. package/src/organisms/index.ts +1 -0
  206. package/src/primitives/ForeignObject.tsx +20 -61
  207. package/src/primitives/style-props.ts +1 -0
  208. package/src/slotmap/styles.module.css +1 -1
  209. package/src/structure/Pill.module.css +1 -1
  210. package/src/structure/Splash.module.css +1 -1
  211. package/src/structure/index.ts +2 -4
  212. package/src/structure/structure.module.css +11 -11
  213. package/src/styles/colors.module.css +1 -0
  214. package/src/styles/global.css +179 -0
  215. package/src/styles/index.module.css +1 -1
  216. package/src/styles/typography.module.css +1 -0
  217. package/src/testing/utils/renderWithProviders.tsx +3 -6
  218. package/src/tooltips/tooltips.module.css +14 -14
  219. package/vite.config.mts +6 -3
  220. package/lib/atoms/ListButton/ListButtonChildren/ListButtonRadioButton.d.ts +0 -14
  221. package/lib/hardware-sim/DeckConfigurator/AbsorbanceReaderFixture.d.ts +0 -10
  222. package/lib/hardware-sim/DeckConfigurator/EmptyConfigFixture.d.ts +0 -8
  223. package/lib/hardware-sim/DeckConfigurator/FlexStackerFixture.d.ts +0 -11
  224. package/lib/hardware-sim/DeckConfigurator/HeaterShakerFixture.d.ts +0 -10
  225. package/lib/hardware-sim/DeckConfigurator/MagneticBlockFixture.d.ts +0 -11
  226. package/lib/hardware-sim/DeckConfigurator/StagingAreaConfigFixture.d.ts +0 -10
  227. package/lib/hardware-sim/DeckConfigurator/TemperatureModuleFixture.d.ts +0 -10
  228. package/lib/hardware-sim/DeckConfigurator/ThermocyclerFixture.d.ts +0 -10
  229. package/lib/hardware-sim/DeckConfigurator/TrashBinConfigFixture.d.ts +0 -10
  230. package/lib/hardware-sim/DeckConfigurator/WasteChuteConfigFixture.d.ts +0 -11
  231. package/lib/hardware-sim/utils.d.ts +0 -3
  232. package/lib/instrument/InstrumentGroup.d.ts +0 -11
  233. package/lib/instrument/InstrumentInfo.d.ts +0 -18
  234. package/lib/legacy-hardware-sim/ModuleItem.d.ts +0 -17
  235. package/lib/lists/TitledList.d.ts +0 -44
  236. package/lib/structure/Card.d.ts +0 -18
  237. package/src/atoms/ListButton/ListButtonChildren/ListButtonRadioButton.tsx +0 -109
  238. package/src/atoms/ListButton/__tests__/ListButtonRadioButton.test.tsx +0 -28
  239. package/src/hardware-sim/utils.ts +0 -18
  240. package/src/instrument/InstrumentDiagram.stories.tsx +0 -43
  241. package/src/instrument/InstrumentGroup.stories.tsx +0 -89
  242. package/src/instrument/InstrumentGroup.tsx +0 -35
  243. package/src/instrument/InstrumentInfo.tsx +0 -106
  244. package/src/instrument/__tests__/InstrumentInfo.test.tsx +0 -58
  245. package/src/instrument/instrument.module.css +0 -45
  246. package/src/legacy-hardware-sim/ModuleItem.tsx +0 -145
  247. package/src/lists/TitledList.tsx +0 -154
  248. package/src/structure/Card.stories.tsx +0 -29
  249. package/src/structure/Card.tsx +0 -65
  250. /package/lib/atoms/{ListButton/__tests__/ListButtonRadioButton.test.d.ts → AnimationVideo/__tests__/AnimationVideo.test.d.ts} +0 -0
  251. /package/lib/{instrument/__tests__/InstrumentInfo.test.d.ts → atoms/buttons/__tests__/BasicButton.test.d.ts} +0 -0
@@ -3,20 +3,20 @@
3
3
  .accessibly_hidden {
4
4
  position: absolute;
5
5
  overflow: hidden;
6
- clip: rect(0 0 0 0);
7
- height: 1px;
8
6
  width: 1px;
9
- margin: -1px;
7
+ height: 1px;
10
8
  padding: 0;
11
9
  border: 0;
10
+ margin: -1px;
11
+ clip: rect(0 0 0 0);
12
12
  }
13
13
 
14
14
  .form_field {
15
- font-size: var(--fs-body-1); /* from legacy --font-form-default */
16
- font-weight: var(--fw-regular); /* from legacy --font-form-default */
17
- color: var(--c-font-dark); /* from legacy --font-form-default */
18
15
  display: flex;
19
16
  align-items: center;
17
+ color: var(--c-font-dark); /* from legacy --font-form-default */
18
+ font-size: var(--fs-body-1); /* from legacy --font-form-default */
19
+ font-weight: var(--fw-regular); /* from legacy --font-form-default */
20
20
  line-height: 1;
21
21
  }
22
22
 
@@ -30,10 +30,10 @@
30
30
  }
31
31
 
32
32
  .form_group_label {
33
- font-size: var(--fs-body-1); /* from legacy --font-form-default */
33
+ margin-bottom: 0.15rem;
34
34
  color: var(--c-font-dark); /* from legacy --font-form-default */
35
+ font-size: var(--fs-body-1); /* from legacy --font-form-default */
35
36
  font-weight: var(--fw-semibold);
36
- margin-bottom: 0.15rem;
37
37
  text-transform: capitalize;
38
38
 
39
39
  &::after {
@@ -42,21 +42,22 @@
42
42
  }
43
43
 
44
44
  .form_group_label_pipette_settings_slideout {
45
- font-weight: var(--fw-semibold);
46
45
  margin-bottom: 0.5rem;
47
- text-transform: capitalize;
48
- font-size: 13px;
49
46
  color: #16212d;
47
+ font-size: 13px;
48
+ font-weight: var(--fw-semibold);
49
+ text-transform: capitalize;
50
50
  }
51
51
 
52
52
  .checkbox_icon {
53
+ display: flex;
54
+
53
55
  /* Icon for radiobutton and for checkbox */
54
56
  width: 1.25rem;
55
57
  min-width: 1.25rem;
56
- color: var(--c-font-dark);
57
- display: flex;
58
- justify-content: center;
59
58
  align-items: center;
59
+ justify-content: center;
60
+ color: var(--c-font-dark);
60
61
 
61
62
  &:not(.checkbox_disabled):hover {
62
63
  cursor: pointer;
@@ -96,20 +97,20 @@
96
97
  .input_field {
97
98
  display: flex;
98
99
  flex: 1 1;
99
- background-color: var(--c-light-gray);
100
- border-radius: var(--bd-radius-form-field);
101
100
  padding: 0.25rem 0.25rem 0.25rem 0.5rem;
101
+ border-radius: var(--bd-radius-form-field);
102
+ background-color: var(--c-light-gray);
102
103
 
103
104
  & input {
104
- font-size: var(--fs-body-1); /* from legacy --font-form-default */
105
- font-weight: var(--fw-regular); /* from legacy --font-form-default */
106
- color: var(--c-font-dark); /* from legacy --font-form-default */
107
- background-color: inherit;
108
- border-radius: inherit;
109
- border: none;
110
- flex: 1 1 auto;
111
105
  width: 100%;
112
106
  height: 1rem;
107
+ flex: 1 1 auto;
108
+ border: none;
109
+ border-radius: inherit;
110
+ background-color: inherit;
111
+ color: var(--c-font-dark); /* from legacy --font-form-default */
112
+ font-size: var(--fs-body-1); /* from legacy --font-form-default */
113
+ font-weight: var(--fw-regular); /* from legacy --font-form-default */
113
114
 
114
115
  /* TODO: Ian 2018-09-14 Firefox has 1px padding on input element,
115
116
  * but I can't figure out how to fix it in Firefox without breaking it in Chrome.
@@ -133,20 +134,20 @@
133
134
  }
134
135
 
135
136
  & .suffix {
136
- font-size: var(--fs-body-1); /* from legacy --font-form-default */
137
- color: var(--c-font-dark); /* from legacy --font-form-default */
138
- font-weight: var(--fw-semibold);
139
137
  display: inline-block;
140
138
  flex: 1 0;
141
- text-align: right;
142
139
  align-self: center;
140
+ color: var(--c-font-dark); /* from legacy --font-form-default */
141
+ font-size: var(--fs-body-1); /* from legacy --font-form-default */
142
+ font-weight: var(--fw-semibold);
143
+ text-align: right;
143
144
  }
144
145
  }
145
146
 
146
147
  .input_caption {
148
+ color: var(--c-med-gray); /* from legacy --font-form-caption */
147
149
  font-size: var(--fs-caption); /* from legacy --font-form-caption */
148
150
  font-weight: var(--fw-semibold); /* from legacy --font-form-caption */
149
- color: var(--c-med-gray); /* from legacy --font-form-caption */
150
151
  line-height: 1.2;
151
152
 
152
153
  & .right {
@@ -184,18 +185,18 @@
184
185
  position: relative;
185
186
 
186
187
  & select {
187
- font-size: var(--fs-body-1); /* from legacy --font-form-default */
188
- font-weight: var(--fw-regular); /* from legacy --font-form-default */
189
- color: var(--c-font-dark); /* from legacy --font-form-default */
190
- border: 0;
191
- padding: 0.25rem 0.5rem;
192
- outline: none;
188
+ overflow: hidden;
189
+ width: 100%;
193
190
  height: 1.5rem;
191
+ padding: 0.25rem 0.5rem;
192
+ border: 0;
194
193
  border-radius: var(--bd-radius-form-field);
195
- font-family: inherit;
196
- width: 100%;
197
194
  appearance: none;
198
- overflow: hidden;
195
+ color: var(--c-font-dark); /* from legacy --font-form-default */
196
+ font-family: inherit;
197
+ font-size: var(--fs-body-1); /* from legacy --font-form-default */
198
+ font-weight: var(--fw-regular); /* from legacy --font-form-default */
199
+ outline: none;
199
200
 
200
201
  &:focus {
201
202
  background-color: var(--c-white);
@@ -19,7 +19,7 @@ import type { Meta, StoryObj } from '@storybook/react'
19
19
  import type * as React from 'react'
20
20
  import type {
21
21
  DeckConfiguration,
22
- LabwareDefinition2,
22
+ LabwareDefinition,
23
23
  } from '@opentrons/shared-data'
24
24
 
25
25
  const meta: Meta<React.ComponentProps<typeof BaseDeckComponent>> = {
@@ -54,34 +54,34 @@ export const BaseDeck: Story = {
54
54
  labwareOnDeck: [
55
55
  {
56
56
  labwareLocation: { slotName: 'C2' },
57
- definition: fixture96Plate as LabwareDefinition2,
57
+ definition: fixture96Plate as LabwareDefinition,
58
58
  },
59
59
  {
60
60
  labwareLocation: { slotName: 'C3' },
61
- definition: fixtureTiprack1000ul as LabwareDefinition2,
61
+ definition: fixtureTiprack1000ul as LabwareDefinition,
62
62
  },
63
63
  ],
64
64
  modulesOnDeck: [
65
65
  {
66
66
  moduleLocation: { slotName: 'B1' },
67
67
  moduleModel: THERMOCYCLER_MODULE_V2,
68
- nestedLabwareDef: fixture96Plate as LabwareDefinition2,
68
+ nestedLabwareDef: fixture96Plate as LabwareDefinition,
69
69
  innerProps: { lidMotorState: 'open' },
70
70
  },
71
71
  {
72
72
  moduleLocation: { slotName: 'D1' },
73
73
  moduleModel: TEMPERATURE_MODULE_V2,
74
- nestedLabwareDef: fixture96Plate as LabwareDefinition2,
74
+ nestedLabwareDef: fixture96Plate as LabwareDefinition,
75
75
  },
76
76
  {
77
77
  moduleLocation: { slotName: 'B3' },
78
78
  moduleModel: HEATERSHAKER_MODULE_V1,
79
- nestedLabwareDef: fixture96Plate as LabwareDefinition2,
79
+ nestedLabwareDef: fixture96Plate as LabwareDefinition,
80
80
  },
81
81
  {
82
82
  moduleLocation: { slotName: 'D2' },
83
83
  moduleModel: MAGNETIC_BLOCK_V1,
84
- nestedLabwareDef: fixture96Plate as LabwareDefinition2,
84
+ nestedLabwareDef: fixture96Plate as LabwareDefinition,
85
85
  },
86
86
  ],
87
87
  darkFill: 'rebeccapurple',
@@ -4,7 +4,7 @@ import partition from 'lodash/partition'
4
4
  import {
5
5
  FLEX_STACKER_MODULE_TYPE,
6
6
  getDeckDefFromRobotType,
7
- getModuleDef2,
7
+ getModuleDef,
8
8
  getModuleType,
9
9
  getPositionFromSlotId,
10
10
  HEATERSHAKER_MODULE_V1,
@@ -18,6 +18,7 @@ import {
18
18
  STAGING_AREA_SLOT_WITH_MAGNETIC_BLOCK_V1_FIXTURE,
19
19
  TRASH_BIN_ADAPTER_FIXTURE,
20
20
  WASTE_CHUTE_CUTOUT,
21
+ WASTE_CHUTE_FLEX_STACKER_FIXTURES,
21
22
  WASTE_CHUTE_ONLY_FIXTURES,
22
23
  WASTE_CHUTE_STAGING_AREA_FIXTURES,
23
24
  } from '@opentrons/shared-data'
@@ -40,20 +41,19 @@ import type { ComponentProps, ReactNode } from 'react'
40
41
  import type {
41
42
  CutoutFixtureId,
42
43
  DeckConfiguration,
43
- LabwareDefinition2,
44
+ LabwareDefinition,
44
45
  LabwareLocation,
45
46
  ModuleLocation,
46
47
  ModuleModel,
47
48
  RobotType,
48
49
  } from '@opentrons/shared-data'
49
- import type { Svg } from '../../primitives'
50
50
  import type { TrashCutoutId } from '../Deck/FlexTrash'
51
51
  import type { WellFill, WellGroup } from '../Labware'
52
52
  import type { StagingAreaLocation } from './StagingAreaFixture'
53
53
 
54
54
  export interface LabwareOnDeck {
55
55
  labwareLocation: LabwareLocation
56
- definition: LabwareDefinition2
56
+ definition: LabwareDefinition
57
57
  wellFill?: WellFill
58
58
  missingTips?: WellGroup
59
59
  /** generic prop to render self-positioned children for each labware */
@@ -67,7 +67,7 @@ export interface LabwareOnDeck {
67
67
  export interface ModuleOnDeck {
68
68
  moduleModel: ModuleModel
69
69
  moduleLocation: ModuleLocation
70
- nestedLabwareDef?: LabwareDefinition2 | null
70
+ nestedLabwareDef?: LabwareDefinition | null
71
71
  nestedLabwareWellFill?: WellFill
72
72
  innerProps?: ComponentProps<typeof Module>['innerProps']
73
73
  /** generic prop to render self-positioned children for each module */
@@ -79,7 +79,7 @@ export interface ModuleOnDeck {
79
79
  hopperLabware?: HopperLabwareProps
80
80
  }
81
81
  export interface HopperLabwareProps {
82
- hopperLabwareDef: LabwareDefinition2 | null
82
+ hopperLabwareDef: LabwareDefinition | null
83
83
  hopperLabwareWellFill: WellFill
84
84
  hopperOnLabwareClick: () => void
85
85
  hopperHighlightLabware: boolean
@@ -89,9 +89,15 @@ export interface HopperLabwareProps {
89
89
  // these ugly consts are unfortunately necessary as the hopper location exists
90
90
  // outside of our deck definition so the render doesn't follow our normal conventions
91
91
  export const STACKER_MODULE_Y_OFFSET = -6
92
- export const STACKER_HOPPER_LABWARE_X_OFFSET = 178.5
93
- export const STACKER_HOPPER_LABWARE_Y_OFFSET = 7
92
+ // todo(mm, 2025-07-16): 17.5 mm is a by-eye adjustment that takes us from a little bit
93
+ // left of the hopper to inside the hopper. The fact that we were 17.5 mm left in the
94
+ // first place is weird, and suggests we're doing wrong math somewhere. A more normal
95
+ // thing to expect here would be starting at the extended shuttle position and needing
96
+ // an offset of hundreds of mm to go from there to inside the hopper.
97
+ export const STACKER_HOPPER_LABWARE_X_OFFSET = 17.5
98
+ export const STACKER_HOPPER_LABWARE_Y_OFFSET = 6
94
99
  export const STACKER_DECK_VIEW_BOX_EXPANSION = 220
100
+
95
101
  interface BaseDeckProps {
96
102
  deckConfig: DeckConfiguration
97
103
  robotType: RobotType
@@ -107,7 +113,10 @@ interface BaseDeckProps {
107
113
  /** whether to make wrapping svg tag animatable via @react-spring/web, defaults to false */
108
114
  animatedSVG?: boolean
109
115
  /** extra props to pass to svg tag */
110
- svgProps?: ComponentProps<typeof Svg>
116
+ /** NOTE: typing as any because running into some TS issues with React-spring,
117
+ * CSS Modules & Styled-components not playing together nicely
118
+ */
119
+ svgProps?: any
111
120
  }
112
121
 
113
122
  const LABWARE_OFFSET_DISPLAY_THRESHOLD = 2
@@ -166,6 +175,12 @@ export function BaseDeck(props: BaseDeckProps): JSX.Element {
166
175
  WASTE_CHUTE_STAGING_AREA_FIXTURES.includes(fixture.cutoutFixtureId) &&
167
176
  fixture.cutoutId === WASTE_CHUTE_CUTOUT
168
177
  )
178
+ const wasteChuteStackerFixtures = deckConfig.filter(
179
+ fixture =>
180
+ fixture.cutoutFixtureId != null &&
181
+ WASTE_CHUTE_FLEX_STACKER_FIXTURES.includes(fixture.cutoutFixtureId) &&
182
+ fixture.cutoutId === WASTE_CHUTE_CUTOUT
183
+ )
169
184
 
170
185
  const [singleLocationModules, stackerModules] = partition(
171
186
  modulesOnDeck,
@@ -275,56 +290,6 @@ export function BaseDeck(props: BaseDeckProps): JSX.Element {
275
290
  </>
276
291
  )}
277
292
  <>
278
- {/* render modules, nested labware, and overlays */}
279
- {singleLocationModules.map(
280
- ({
281
- moduleModel,
282
- moduleLocation,
283
- nestedLabwareDef,
284
- nestedLabwareWellFill,
285
- innerProps,
286
- moduleChildren,
287
- onLabwareClick,
288
- highlightLabware,
289
- highlightShadowLabware,
290
- }) => {
291
- const slotPosition = getPositionFromSlotId(
292
- moduleLocation.slotName,
293
- deckDef
294
- )
295
- const moduleDef = getModuleDef2(moduleModel)
296
- return slotPosition != null ? (
297
- <Module
298
- key={`${moduleModel} ${moduleLocation.slotName}`}
299
- def={moduleDef}
300
- x={slotPosition[0]}
301
- y={slotPosition[1]}
302
- orientation={inferModuleOrientationFromXCoordinate(
303
- slotPosition[0]
304
- )}
305
- innerProps={innerProps}
306
- >
307
- {nestedLabwareDef != null ? (
308
- <g cursor={onLabwareClick != null ? 'pointer' : ''}>
309
- <LabwareRender
310
- definition={nestedLabwareDef}
311
- onLabwareClick={onLabwareClick}
312
- wellFill={nestedLabwareWellFill}
313
- shouldRotateAdapterOrientation={
314
- inferModuleOrientationFromXCoordinate(
315
- slotPosition[0]
316
- ) === 'left' && moduleModel === HEATERSHAKER_MODULE_V1
317
- }
318
- highlight={highlightLabware}
319
- highlightShadow={highlightShadowLabware}
320
- />
321
- </g>
322
- ) : null}
323
- {moduleChildren}
324
- </Module>
325
- ) : null
326
- }
327
- )}
328
293
  {stackerModules.map(
329
294
  ({
330
295
  moduleModel,
@@ -341,7 +306,7 @@ export function BaseDeck(props: BaseDeckProps): JSX.Element {
341
306
  moduleLocation.slotName
342
307
  )
343
308
  const slotPosition = getPositionFromSlotId(stackerSlotName, deckDef)
344
- const moduleDef = getModuleDef2(moduleModel)
309
+ const moduleDef = getModuleDef(moduleModel)
345
310
  return slotPosition != null ? (
346
311
  <>
347
312
  <StagingAreaFixture
@@ -352,6 +317,19 @@ export function BaseDeck(props: BaseDeckProps): JSX.Element {
352
317
  slotClipColor={darkFill}
353
318
  fixtureBaseColor={lightFill}
354
319
  />
320
+ {wasteChuteStackerFixtures.map(fixture => {
321
+ if (fixture.cutoutId === WASTE_CHUTE_CUTOUT) {
322
+ return (
323
+ <WasteChuteFixture
324
+ key={fixture.cutoutId}
325
+ cutoutId={fixture.cutoutId}
326
+ deckDefinition={deckDef}
327
+ fixtureBaseColor={lightFill}
328
+ wasteChuteColor={mediumFill}
329
+ />
330
+ )
331
+ }
332
+ })}
355
333
  <Module
356
334
  key={`${moduleModel} ${moduleLocation.slotName}`}
357
335
  def={moduleDef}
@@ -361,6 +339,9 @@ export function BaseDeck(props: BaseDeckProps): JSX.Element {
361
339
  slotPosition[0]
362
340
  )}
363
341
  innerProps={innerProps}
342
+ targetDeckId={deckDef.otId}
343
+ targetSlotId={moduleLocation.slotName}
344
+ childrenPositioningMode="offsetToSlot"
364
345
  >
365
346
  {nestedLabwareDef != null ? (
366
347
  <g
@@ -369,6 +350,7 @@ export function BaseDeck(props: BaseDeckProps): JSX.Element {
369
350
  >
370
351
  <LabwareRender
371
352
  definition={nestedLabwareDef}
353
+ positioningMode="offsetInSlot"
372
354
  onLabwareClick={onLabwareClick}
373
355
  wellFill={nestedLabwareWellFill}
374
356
  shouldRotateAdapterOrientation={
@@ -387,6 +369,60 @@ export function BaseDeck(props: BaseDeckProps): JSX.Element {
387
369
  ) : null
388
370
  }
389
371
  )}
372
+ {/* render modules, nested labware, and overlays */}
373
+ {singleLocationModules.map(
374
+ ({
375
+ moduleModel,
376
+ moduleLocation,
377
+ nestedLabwareDef,
378
+ nestedLabwareWellFill,
379
+ innerProps,
380
+ moduleChildren,
381
+ onLabwareClick,
382
+ highlightLabware,
383
+ highlightShadowLabware,
384
+ }) => {
385
+ const slotPosition = getPositionFromSlotId(
386
+ moduleLocation.slotName,
387
+ deckDef
388
+ )
389
+ const moduleDef = getModuleDef(moduleModel)
390
+ return slotPosition != null ? (
391
+ <Module
392
+ key={`${moduleModel} ${moduleLocation.slotName}`}
393
+ def={moduleDef}
394
+ x={slotPosition[0]}
395
+ y={slotPosition[1]}
396
+ orientation={inferModuleOrientationFromXCoordinate(
397
+ slotPosition[0]
398
+ )}
399
+ innerProps={innerProps}
400
+ targetDeckId={deckDef.otId}
401
+ targetSlotId={moduleLocation.slotName}
402
+ childrenPositioningMode="offsetToSlot"
403
+ >
404
+ {nestedLabwareDef != null ? (
405
+ <g cursor={onLabwareClick != null ? 'pointer' : ''}>
406
+ <LabwareRender
407
+ definition={nestedLabwareDef}
408
+ positioningMode="offsetInSlot"
409
+ onLabwareClick={onLabwareClick}
410
+ wellFill={nestedLabwareWellFill}
411
+ shouldRotateAdapterOrientation={
412
+ inferModuleOrientationFromXCoordinate(
413
+ slotPosition[0]
414
+ ) === 'left' && moduleModel === HEATERSHAKER_MODULE_V1
415
+ }
416
+ highlight={highlightLabware}
417
+ highlightShadow={highlightShadowLabware}
418
+ />
419
+ </g>
420
+ ) : null}
421
+ {moduleChildren}
422
+ </Module>
423
+ ) : null
424
+ }
425
+ )}
390
426
  {/* render non-module labware and overlays */}
391
427
  {labwareOnDeck.map(
392
428
  ({
@@ -423,6 +459,7 @@ export function BaseDeck(props: BaseDeckProps): JSX.Element {
423
459
  >
424
460
  <LabwareRender
425
461
  definition={definition}
462
+ positioningMode="offsetInSlot"
426
463
  onLabwareClick={onLabwareClick}
427
464
  wellFill={wellFill ?? undefined}
428
465
  missingTips={missingTips}
@@ -437,7 +474,7 @@ export function BaseDeck(props: BaseDeckProps): JSX.Element {
437
474
  {/* render stacked badge on module labware */}
438
475
  {modulesOnDeck.map(
439
476
  ({ moduleModel, moduleLocation, stacked = false }) => {
440
- const moduleDef = getModuleDef2(moduleModel)
477
+ const moduleDef = getModuleDef(moduleModel)
441
478
  const slotPosition = getPositionFromSlotId(
442
479
  moduleDef.moduleType === FLEX_STACKER_MODULE_TYPE
443
480
  ? getStackerLocationFromSlot(moduleLocation.slotName)
@@ -1,15 +1,11 @@
1
+ import clsx from 'clsx'
2
+
3
+ import { PlaceholderStyledText } from '../../atoms'
1
4
  import { COLORS } from '../../helix-design-system'
2
5
  import { Icon } from '../../icons'
3
6
  import { DeckLabelSet } from '../../organisms'
4
- import { Flex, Text } from '../../primitives'
5
- import {
6
- ALIGN_CENTER,
7
- DIRECTION_COLUMN,
8
- JUSTIFY_CENTER,
9
- TEXT_ALIGN_CENTER,
10
- } from '../../styles'
11
- import { SPACING, TYPOGRAPHY } from '../../ui-style-constants'
12
7
  import { RobotCoordsForeignObject } from '../Deck/RobotCoordsForeignObject'
8
+ import styles from './basedeck.module.css'
13
9
  import { SlotBase } from './SlotBase'
14
10
 
15
11
  import type { SVGProps } from 'react'
@@ -116,32 +112,30 @@ export function WasteChute(props: WasteChuteProps): JSX.Element {
116
112
  x={WASTE_CHUTE_X}
117
113
  y={-51}
118
114
  flexProps={{ flex: '1' }}
119
- foreignObjectProps={{ opacity: opacity ?? '1.0', flex: '1' }}
115
+ foreignObjectProps={{ opacity: opacity ?? 1, flex: '1' }}
120
116
  >
121
117
  {overlay != null ? (
122
118
  overlay
123
119
  ) : (
124
- <Flex
125
- alignItems={ALIGN_CENTER}
126
- backgroundColor={backgroundColor}
127
- borderRadius="6px"
128
- color={wasteIconColor}
129
- flexDirection={DIRECTION_COLUMN}
130
- gridGap={SPACING.spacing4}
131
- justifyContent={JUSTIFY_CENTER}
132
- padding={SPACING.spacing8}
133
- width="100%"
134
- border={showHighlight ? `3px solid ${COLORS.blue50}` : 'none'}
120
+ <div
121
+ className={clsx(styles.waste_chute_fixture_container, {
122
+ [styles.waste_chute_fixture_container_highlight]: showHighlight,
123
+ })}
124
+ style={{
125
+ backgroundColor,
126
+ color: wasteIconColor,
127
+ }}
135
128
  >
136
129
  <Icon name="trash" color={wasteIconColor} height="2rem" />
137
- <Text
138
- color={COLORS.white}
139
- textAlign={TEXT_ALIGN_CENTER}
140
- css={TYPOGRAPHY.bodyTextSemiBold}
141
- >
142
- Waste chute
143
- </Text>
144
- </Flex>
130
+ <div className={styles.waste_chute_copy_container}>
131
+ <PlaceholderStyledText
132
+ desktopStyle="bodyRegularSemiBold"
133
+ color={COLORS.white}
134
+ >
135
+ Waste chute
136
+ </PlaceholderStyledText>
137
+ </div>
138
+ </div>
145
139
  )}
146
140
  </RobotCoordsForeignObject>
147
141
  {tagInfo != null && tagInfo.length > 0 ? (
@@ -0,0 +1,20 @@
1
+ .waste_chute_copy_container {
2
+ display: flex;
3
+ text-align: center;
4
+ }
5
+
6
+ .waste_chute_fixture_container {
7
+ display: flex;
8
+ width: 100%;
9
+ height: 100%;
10
+ flex-direction: column;
11
+ align-items: center;
12
+ justify-content: center;
13
+ border-radius: 6px;
14
+ gap: var(--spacing-4);
15
+ padding-inline: var(--spacing-8);
16
+ }
17
+
18
+ .waste_chute_fixture_container_highlight {
19
+ border: 3px solid var(--blue-50);
20
+ }