@opalkelly/frontpanel-react-components 0.1.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 (334) hide show
  1. package/LICENSE +45 -0
  2. package/README.md +26 -0
  3. package/dist/cjs/index.js +2 -0
  4. package/dist/cjs/index.js.map +1 -0
  5. package/dist/cjs/types/components/FrontPanel/FrontPanel.d.ts +10 -0
  6. package/dist/cjs/types/components/FrontPanel/FrontPanel.props.d.ts +23 -0
  7. package/dist/cjs/types/components/FrontPanel/index.d.ts +7 -0
  8. package/dist/cjs/types/components/FrontPanelIndicator/FrontPanelIndicator.d.ts +30 -0
  9. package/dist/cjs/types/components/FrontPanelIndicator/FrontPanelIndicator.props.d.ts +17 -0
  10. package/dist/cjs/types/components/FrontPanelIndicator/index.d.ts +8 -0
  11. package/dist/cjs/types/components/FrontPanelNumberDisplay/FrontPanelNumberDisplay.d.ts +33 -0
  12. package/dist/cjs/types/components/FrontPanelNumberDisplay/FrontPanelNumberDisplay.props.d.ts +23 -0
  13. package/dist/cjs/types/components/FrontPanelNumberDisplay/index.d.ts +8 -0
  14. package/dist/cjs/types/components/FrontPanelNumberEntry/FrontPanelNumberEntry.d.ts +33 -0
  15. package/dist/cjs/types/components/FrontPanelNumberEntry/FrontPanelNumberEntry.props.d.ts +27 -0
  16. package/dist/cjs/types/components/FrontPanelNumberEntry/index.d.ts +8 -0
  17. package/dist/cjs/types/components/FrontPanelPushButton/FrontPanelPushButton.d.ts +31 -0
  18. package/dist/cjs/types/components/FrontPanelPushButton/FrontPanelPushButton.props.d.ts +17 -0
  19. package/dist/cjs/types/components/FrontPanelPushButton/index.d.ts +8 -0
  20. package/dist/cjs/types/components/FrontPanelRangeSlider/FrontPanelRangeSlider.d.ts +31 -0
  21. package/dist/cjs/types/components/FrontPanelRangeSlider/FrontPanelRangeSlider.props.d.ts +21 -0
  22. package/dist/cjs/types/components/FrontPanelRangeSlider/index.d.ts +8 -0
  23. package/dist/cjs/types/components/FrontPanelSelectEntry/FrontPanelSelectEntry.d.ts +17 -0
  24. package/dist/cjs/types/components/FrontPanelSelectEntry/FrontPanelSelectEntryRoot.d.ts +43 -0
  25. package/dist/cjs/types/components/FrontPanelSelectEntry/FrontPanelSelectEntryRoot.props.d.ts +21 -0
  26. package/dist/cjs/types/components/FrontPanelSelectEntry/index.d.ts +15 -0
  27. package/dist/cjs/types/components/FrontPanelToggleSwitch/FrontPanelToggleSwitch.d.ts +31 -0
  28. package/dist/cjs/types/components/FrontPanelToggleSwitch/FrontPanelToggleSwitch.props.d.ts +17 -0
  29. package/dist/cjs/types/components/FrontPanelToggleSwitch/index.d.ts +8 -0
  30. package/dist/cjs/types/components/FrontPanelTriggerButton/FrontPanelTriggerButton.d.ts +32 -0
  31. package/dist/cjs/types/components/FrontPanelTriggerButton/FrontPanelTriggerButton.props.d.ts +18 -0
  32. package/dist/cjs/types/components/FrontPanelTriggerButton/index.d.ts +8 -0
  33. package/dist/cjs/types/components/Icons/ChevronIcon.d.ts +17 -0
  34. package/dist/cjs/types/components/Icons/IndicatorArrowIcon.d.ts +17 -0
  35. package/dist/cjs/types/components/Icons/IndicatorBarIcon.d.ts +10 -0
  36. package/dist/cjs/types/components/Icons/IndicatorStateIcon.d.ts +14 -0
  37. package/dist/cjs/types/components/Icons/RadioToggleStateIcon.d.ts +14 -0
  38. package/dist/cjs/types/components/Icons/SwitchToggleStateIcon.d.ts +14 -0
  39. package/dist/cjs/types/components/Icons/index.d.ts +12 -0
  40. package/dist/cjs/types/components/Icons/types.d.ts +17 -0
  41. package/dist/cjs/types/components/index.d.ts +16 -0
  42. package/dist/cjs/types/components/types.d.ts +11 -0
  43. package/dist/cjs/types/contexts/FrontPanelContext.d.ts +15 -0
  44. package/dist/cjs/types/contexts/index.d.ts +8 -0
  45. package/dist/cjs/types/core/Binary.d.ts +7 -0
  46. package/dist/cjs/types/core/Numeric.d.ts +80 -0
  47. package/dist/cjs/types/core/Types.d.ts +34 -0
  48. package/dist/cjs/types/core/index.d.ts +9 -0
  49. package/dist/cjs/types/index.d.ts +10 -0
  50. package/dist/cjs/types/primitives/Application/Application.d.ts +10 -0
  51. package/dist/cjs/types/primitives/Application/Application.props.d.ts +10 -0
  52. package/dist/cjs/types/primitives/Application/index.d.ts +1 -0
  53. package/dist/cjs/types/primitives/Button/Button.d.ts +33 -0
  54. package/dist/cjs/types/primitives/Button/Button.props.d.ts +44 -0
  55. package/dist/cjs/types/primitives/Button/index.d.ts +3 -0
  56. package/dist/cjs/types/primitives/DigitEntry/DigitEntry.d.ts +33 -0
  57. package/dist/cjs/types/primitives/DigitEntry/DigitEntry.props.d.ts +51 -0
  58. package/dist/cjs/types/primitives/DigitEntry/index.d.ts +9 -0
  59. package/dist/cjs/types/primitives/Indicator/Indicator.d.ts +29 -0
  60. package/dist/cjs/types/primitives/Indicator/Indicator.props.d.ts +35 -0
  61. package/dist/cjs/types/primitives/Indicator/index.d.ts +9 -0
  62. package/dist/cjs/types/primitives/Label/Label.d.ts +31 -0
  63. package/dist/cjs/types/primitives/Label/Label.props.d.ts +33 -0
  64. package/dist/cjs/types/primitives/Label/index.d.ts +9 -0
  65. package/dist/cjs/types/primitives/NumberDisplay/NumberDisplay.d.ts +31 -0
  66. package/dist/cjs/types/primitives/NumberDisplay/NumberDisplay.props.d.ts +52 -0
  67. package/dist/cjs/types/primitives/NumberDisplay/index.d.ts +9 -0
  68. package/dist/cjs/types/primitives/NumberEntry/NumberEntry.d.ts +34 -0
  69. package/dist/cjs/types/primitives/NumberEntry/NumberEntry.props.d.ts +69 -0
  70. package/dist/cjs/types/primitives/NumberEntry/NumberEntryDigits.d.ts +27 -0
  71. package/dist/cjs/types/primitives/NumberEntry/NumberEntryDigits.props.d.ts +43 -0
  72. package/dist/cjs/types/primitives/NumberEntry/index.d.ts +9 -0
  73. package/dist/cjs/types/primitives/RangeSlider/RangeSlider.d.ts +33 -0
  74. package/dist/cjs/types/primitives/RangeSlider/RangeSlider.props.d.ts +77 -0
  75. package/dist/cjs/types/primitives/RangeSlider/index.d.ts +9 -0
  76. package/dist/cjs/types/primitives/SelectEntry/SelectEntry.d.ts +17 -0
  77. package/dist/cjs/types/primitives/SelectEntry/SelectEntryContent.d.ts +16 -0
  78. package/dist/cjs/types/primitives/SelectEntry/SelectEntryGroup.d.ts +15 -0
  79. package/dist/cjs/types/primitives/SelectEntry/SelectEntryItem.d.ts +15 -0
  80. package/dist/cjs/types/primitives/SelectEntry/SelectEntryLabel.d.ts +15 -0
  81. package/dist/cjs/types/primitives/SelectEntry/SelectEntryRoot.d.ts +39 -0
  82. package/dist/cjs/types/primitives/SelectEntry/SelectEntryRoot.props.d.ts +31 -0
  83. package/dist/cjs/types/primitives/SelectEntry/SelectEntrySeparator.d.ts +15 -0
  84. package/dist/cjs/types/primitives/SelectEntry/SelectEntryTrigger.d.ts +16 -0
  85. package/dist/cjs/types/primitives/SelectEntry/SelectEntryTrigger.props.d.ts +16 -0
  86. package/dist/cjs/types/primitives/SelectEntry/index.d.ts +17 -0
  87. package/dist/cjs/types/primitives/Toggle/Toggle.d.ts +35 -0
  88. package/dist/cjs/types/primitives/Toggle/Toggle.props.d.ts +37 -0
  89. package/dist/cjs/types/primitives/Toggle/index.d.ts +9 -0
  90. package/dist/cjs/types/primitives/ToggleSwitch/ToggleSwitch.d.ts +32 -0
  91. package/dist/cjs/types/primitives/ToggleSwitch/ToggleSwitch.props.d.ts +22 -0
  92. package/dist/cjs/types/primitives/ToggleSwitch/index.d.ts +8 -0
  93. package/dist/cjs/types/primitives/Tooltip/Tooltip.d.ts +35 -0
  94. package/dist/cjs/types/primitives/Tooltip/Tooltip.props.d.ts +17 -0
  95. package/dist/cjs/types/primitives/Tooltip/index.d.ts +8 -0
  96. package/dist/cjs/types/primitives/TooltipUtility.d.ts +12 -0
  97. package/dist/cjs/types/primitives/index.d.ts +24 -0
  98. package/dist/esm/index.js +2 -0
  99. package/dist/esm/index.js.map +1 -0
  100. package/dist/esm/types/components/FrontPanel/FrontPanel.d.ts +10 -0
  101. package/dist/esm/types/components/FrontPanel/FrontPanel.props.d.ts +23 -0
  102. package/dist/esm/types/components/FrontPanel/index.d.ts +7 -0
  103. package/dist/esm/types/components/FrontPanelIndicator/FrontPanelIndicator.d.ts +30 -0
  104. package/dist/esm/types/components/FrontPanelIndicator/FrontPanelIndicator.props.d.ts +17 -0
  105. package/dist/esm/types/components/FrontPanelIndicator/index.d.ts +8 -0
  106. package/dist/esm/types/components/FrontPanelNumberDisplay/FrontPanelNumberDisplay.d.ts +33 -0
  107. package/dist/esm/types/components/FrontPanelNumberDisplay/FrontPanelNumberDisplay.props.d.ts +23 -0
  108. package/dist/esm/types/components/FrontPanelNumberDisplay/index.d.ts +8 -0
  109. package/dist/esm/types/components/FrontPanelNumberEntry/FrontPanelNumberEntry.d.ts +33 -0
  110. package/dist/esm/types/components/FrontPanelNumberEntry/FrontPanelNumberEntry.props.d.ts +27 -0
  111. package/dist/esm/types/components/FrontPanelNumberEntry/index.d.ts +8 -0
  112. package/dist/esm/types/components/FrontPanelPushButton/FrontPanelPushButton.d.ts +31 -0
  113. package/dist/esm/types/components/FrontPanelPushButton/FrontPanelPushButton.props.d.ts +17 -0
  114. package/dist/esm/types/components/FrontPanelPushButton/index.d.ts +8 -0
  115. package/dist/esm/types/components/FrontPanelRangeSlider/FrontPanelRangeSlider.d.ts +31 -0
  116. package/dist/esm/types/components/FrontPanelRangeSlider/FrontPanelRangeSlider.props.d.ts +21 -0
  117. package/dist/esm/types/components/FrontPanelRangeSlider/index.d.ts +8 -0
  118. package/dist/esm/types/components/FrontPanelSelectEntry/FrontPanelSelectEntry.d.ts +17 -0
  119. package/dist/esm/types/components/FrontPanelSelectEntry/FrontPanelSelectEntryRoot.d.ts +43 -0
  120. package/dist/esm/types/components/FrontPanelSelectEntry/FrontPanelSelectEntryRoot.props.d.ts +21 -0
  121. package/dist/esm/types/components/FrontPanelSelectEntry/index.d.ts +15 -0
  122. package/dist/esm/types/components/FrontPanelToggleSwitch/FrontPanelToggleSwitch.d.ts +31 -0
  123. package/dist/esm/types/components/FrontPanelToggleSwitch/FrontPanelToggleSwitch.props.d.ts +17 -0
  124. package/dist/esm/types/components/FrontPanelToggleSwitch/index.d.ts +8 -0
  125. package/dist/esm/types/components/FrontPanelTriggerButton/FrontPanelTriggerButton.d.ts +32 -0
  126. package/dist/esm/types/components/FrontPanelTriggerButton/FrontPanelTriggerButton.props.d.ts +18 -0
  127. package/dist/esm/types/components/FrontPanelTriggerButton/index.d.ts +8 -0
  128. package/dist/esm/types/components/Icons/ChevronIcon.d.ts +17 -0
  129. package/dist/esm/types/components/Icons/IndicatorArrowIcon.d.ts +17 -0
  130. package/dist/esm/types/components/Icons/IndicatorBarIcon.d.ts +10 -0
  131. package/dist/esm/types/components/Icons/IndicatorStateIcon.d.ts +14 -0
  132. package/dist/esm/types/components/Icons/RadioToggleStateIcon.d.ts +14 -0
  133. package/dist/esm/types/components/Icons/SwitchToggleStateIcon.d.ts +14 -0
  134. package/dist/esm/types/components/Icons/index.d.ts +12 -0
  135. package/dist/esm/types/components/Icons/types.d.ts +17 -0
  136. package/dist/esm/types/components/index.d.ts +16 -0
  137. package/dist/esm/types/components/types.d.ts +11 -0
  138. package/dist/esm/types/contexts/FrontPanelContext.d.ts +15 -0
  139. package/dist/esm/types/contexts/index.d.ts +8 -0
  140. package/dist/esm/types/core/Binary.d.ts +7 -0
  141. package/dist/esm/types/core/Numeric.d.ts +80 -0
  142. package/dist/esm/types/core/Types.d.ts +34 -0
  143. package/dist/esm/types/core/index.d.ts +9 -0
  144. package/dist/esm/types/index.d.ts +10 -0
  145. package/dist/esm/types/primitives/Application/Application.d.ts +10 -0
  146. package/dist/esm/types/primitives/Application/Application.props.d.ts +10 -0
  147. package/dist/esm/types/primitives/Application/index.d.ts +1 -0
  148. package/dist/esm/types/primitives/Button/Button.d.ts +33 -0
  149. package/dist/esm/types/primitives/Button/Button.props.d.ts +44 -0
  150. package/dist/esm/types/primitives/Button/index.d.ts +3 -0
  151. package/dist/esm/types/primitives/DigitEntry/DigitEntry.d.ts +33 -0
  152. package/dist/esm/types/primitives/DigitEntry/DigitEntry.props.d.ts +51 -0
  153. package/dist/esm/types/primitives/DigitEntry/index.d.ts +9 -0
  154. package/dist/esm/types/primitives/Indicator/Indicator.d.ts +29 -0
  155. package/dist/esm/types/primitives/Indicator/Indicator.props.d.ts +35 -0
  156. package/dist/esm/types/primitives/Indicator/index.d.ts +9 -0
  157. package/dist/esm/types/primitives/Label/Label.d.ts +31 -0
  158. package/dist/esm/types/primitives/Label/Label.props.d.ts +33 -0
  159. package/dist/esm/types/primitives/Label/index.d.ts +9 -0
  160. package/dist/esm/types/primitives/NumberDisplay/NumberDisplay.d.ts +31 -0
  161. package/dist/esm/types/primitives/NumberDisplay/NumberDisplay.props.d.ts +52 -0
  162. package/dist/esm/types/primitives/NumberDisplay/index.d.ts +9 -0
  163. package/dist/esm/types/primitives/NumberEntry/NumberEntry.d.ts +34 -0
  164. package/dist/esm/types/primitives/NumberEntry/NumberEntry.props.d.ts +69 -0
  165. package/dist/esm/types/primitives/NumberEntry/NumberEntryDigits.d.ts +27 -0
  166. package/dist/esm/types/primitives/NumberEntry/NumberEntryDigits.props.d.ts +43 -0
  167. package/dist/esm/types/primitives/NumberEntry/index.d.ts +9 -0
  168. package/dist/esm/types/primitives/RangeSlider/RangeSlider.d.ts +33 -0
  169. package/dist/esm/types/primitives/RangeSlider/RangeSlider.props.d.ts +77 -0
  170. package/dist/esm/types/primitives/RangeSlider/index.d.ts +9 -0
  171. package/dist/esm/types/primitives/SelectEntry/SelectEntry.d.ts +17 -0
  172. package/dist/esm/types/primitives/SelectEntry/SelectEntryContent.d.ts +16 -0
  173. package/dist/esm/types/primitives/SelectEntry/SelectEntryGroup.d.ts +15 -0
  174. package/dist/esm/types/primitives/SelectEntry/SelectEntryItem.d.ts +15 -0
  175. package/dist/esm/types/primitives/SelectEntry/SelectEntryLabel.d.ts +15 -0
  176. package/dist/esm/types/primitives/SelectEntry/SelectEntryRoot.d.ts +39 -0
  177. package/dist/esm/types/primitives/SelectEntry/SelectEntryRoot.props.d.ts +31 -0
  178. package/dist/esm/types/primitives/SelectEntry/SelectEntrySeparator.d.ts +15 -0
  179. package/dist/esm/types/primitives/SelectEntry/SelectEntryTrigger.d.ts +16 -0
  180. package/dist/esm/types/primitives/SelectEntry/SelectEntryTrigger.props.d.ts +16 -0
  181. package/dist/esm/types/primitives/SelectEntry/index.d.ts +17 -0
  182. package/dist/esm/types/primitives/Toggle/Toggle.d.ts +35 -0
  183. package/dist/esm/types/primitives/Toggle/Toggle.props.d.ts +37 -0
  184. package/dist/esm/types/primitives/Toggle/index.d.ts +9 -0
  185. package/dist/esm/types/primitives/ToggleSwitch/ToggleSwitch.d.ts +32 -0
  186. package/dist/esm/types/primitives/ToggleSwitch/ToggleSwitch.props.d.ts +22 -0
  187. package/dist/esm/types/primitives/ToggleSwitch/index.d.ts +8 -0
  188. package/dist/esm/types/primitives/Tooltip/Tooltip.d.ts +35 -0
  189. package/dist/esm/types/primitives/Tooltip/Tooltip.props.d.ts +17 -0
  190. package/dist/esm/types/primitives/Tooltip/index.d.ts +8 -0
  191. package/dist/esm/types/primitives/TooltipUtility.d.ts +12 -0
  192. package/dist/esm/types/primitives/index.d.ts +24 -0
  193. package/dist/index.d.ts +1456 -0
  194. package/package.json +81 -0
  195. package/src/components/FrontPanel/FrontPanel.props.ts +25 -0
  196. package/src/components/FrontPanel/FrontPanel.tsx +33 -0
  197. package/src/components/FrontPanel/index.ts +8 -0
  198. package/src/components/FrontPanelIndicator/FrontPanelIndicator.css +0 -0
  199. package/src/components/FrontPanelIndicator/FrontPanelIndicator.props.ts +20 -0
  200. package/src/components/FrontPanelIndicator/FrontPanelIndicator.stories.tsx +44 -0
  201. package/src/components/FrontPanelIndicator/FrontPanelIndicator.tsx +81 -0
  202. package/src/components/FrontPanelIndicator/index.ts +10 -0
  203. package/src/components/FrontPanelNumberDisplay/FrontPanelNumberDisplay.css +0 -0
  204. package/src/components/FrontPanelNumberDisplay/FrontPanelNumberDisplay.props.ts +27 -0
  205. package/src/components/FrontPanelNumberDisplay/FrontPanelNumberDisplay.stories.tsx +67 -0
  206. package/src/components/FrontPanelNumberDisplay/FrontPanelNumberDisplay.tsx +130 -0
  207. package/src/components/FrontPanelNumberDisplay/index.ts +10 -0
  208. package/src/components/FrontPanelNumberEntry/FrontPanelNumberEntry.css +0 -0
  209. package/src/components/FrontPanelNumberEntry/FrontPanelNumberEntry.props.ts +32 -0
  210. package/src/components/FrontPanelNumberEntry/FrontPanelNumberEntry.stories.tsx +104 -0
  211. package/src/components/FrontPanelNumberEntry/FrontPanelNumberEntry.tsx +195 -0
  212. package/src/components/FrontPanelNumberEntry/index.ts +10 -0
  213. package/src/components/FrontPanelPushButton/FrontPanelPushButton.css +0 -0
  214. package/src/components/FrontPanelPushButton/FrontPanelPushButton.props.ts +20 -0
  215. package/src/components/FrontPanelPushButton/FrontPanelPushButton.stories.tsx +46 -0
  216. package/src/components/FrontPanelPushButton/FrontPanelPushButton.tsx +80 -0
  217. package/src/components/FrontPanelPushButton/index.ts +10 -0
  218. package/src/components/FrontPanelRangeSlider/FrontPanelRangeSlider.css +0 -0
  219. package/src/components/FrontPanelRangeSlider/FrontPanelRangeSlider.props.ts +25 -0
  220. package/src/components/FrontPanelRangeSlider/FrontPanelRangeSlider.stories.tsx +92 -0
  221. package/src/components/FrontPanelRangeSlider/FrontPanelRangeSlider.tsx +108 -0
  222. package/src/components/FrontPanelRangeSlider/index.ts +10 -0
  223. package/src/components/FrontPanelSelectEntry/FrontPanelSelectEntry.css +0 -0
  224. package/src/components/FrontPanelSelectEntry/FrontPanelSelectEntry.stories.tsx +107 -0
  225. package/src/components/FrontPanelSelectEntry/FrontPanelSelectEntry.tsx +30 -0
  226. package/src/components/FrontPanelSelectEntry/FrontPanelSelectEntryRoot.props.ts +25 -0
  227. package/src/components/FrontPanelSelectEntry/FrontPanelSelectEntryRoot.tsx +175 -0
  228. package/src/components/FrontPanelSelectEntry/index.ts +17 -0
  229. package/src/components/FrontPanelToggleSwitch/FrontPanelToggleSwitch.css +0 -0
  230. package/src/components/FrontPanelToggleSwitch/FrontPanelToggleSwitch.props.ts +20 -0
  231. package/src/components/FrontPanelToggleSwitch/FrontPanelToggleSwitch.stories.tsx +46 -0
  232. package/src/components/FrontPanelToggleSwitch/FrontPanelToggleSwitch.tsx +108 -0
  233. package/src/components/FrontPanelToggleSwitch/index.ts +10 -0
  234. package/src/components/FrontPanelTriggerButton/FrontPanelTriggerButton.css +0 -0
  235. package/src/components/FrontPanelTriggerButton/FrontPanelTriggerButton.props.ts +21 -0
  236. package/src/components/FrontPanelTriggerButton/FrontPanelTriggerButton.stories.tsx +46 -0
  237. package/src/components/FrontPanelTriggerButton/FrontPanelTriggerButton.tsx +65 -0
  238. package/src/components/FrontPanelTriggerButton/index.ts +10 -0
  239. package/src/components/Icons/ChevronIcon.tsx +69 -0
  240. package/src/components/Icons/IndicatorArrowIcon.tsx +59 -0
  241. package/src/components/Icons/IndicatorBarIcon.tsx +34 -0
  242. package/src/components/Icons/IndicatorStateIcon.tsx +82 -0
  243. package/src/components/Icons/RadioToggleStateIcon.tsx +62 -0
  244. package/src/components/Icons/SwitchToggleStateIcon.tsx +68 -0
  245. package/src/components/Icons/index.ts +15 -0
  246. package/src/components/Icons/types.ts +20 -0
  247. package/src/components/index.ts +31 -0
  248. package/src/components/types.ts +13 -0
  249. package/src/contexts/FrontPanelContext.ts +23 -0
  250. package/src/contexts/index.ts +10 -0
  251. package/src/core/Binary.ts +23 -0
  252. package/src/core/Numeric.ts +168 -0
  253. package/src/core/Types.ts +39 -0
  254. package/src/core/index.ts +11 -0
  255. package/src/fonts/Inter-VariableFont_slnt,wght.ttf +0 -0
  256. package/src/index.css +11 -0
  257. package/src/index.ts +11 -0
  258. package/src/primitives/Application/Application.props.ts +10 -0
  259. package/src/primitives/Application/Application.tsx +24 -0
  260. package/src/primitives/Application/index.ts +1 -0
  261. package/src/primitives/Button/Button.css +60 -0
  262. package/src/primitives/Button/Button.props.ts +53 -0
  263. package/src/primitives/Button/Button.stories.tsx +54 -0
  264. package/src/primitives/Button/Button.tsx +75 -0
  265. package/src/primitives/Button/index.ts +4 -0
  266. package/src/primitives/DigitEntry/DigitEntry.css +120 -0
  267. package/src/primitives/DigitEntry/DigitEntry.props.ts +62 -0
  268. package/src/primitives/DigitEntry/DigitEntry.stories.tsx +84 -0
  269. package/src/primitives/DigitEntry/DigitEntry.tsx +226 -0
  270. package/src/primitives/DigitEntry/index.ts +15 -0
  271. package/src/primitives/Indicator/Indicator.css +66 -0
  272. package/src/primitives/Indicator/Indicator.props.ts +42 -0
  273. package/src/primitives/Indicator/Indicator.stories.tsx +44 -0
  274. package/src/primitives/Indicator/Indicator.tsx +64 -0
  275. package/src/primitives/Indicator/index.ts +11 -0
  276. package/src/primitives/Label/Label.css +49 -0
  277. package/src/primitives/Label/Label.props.ts +38 -0
  278. package/src/primitives/Label/Label.stories.tsx +53 -0
  279. package/src/primitives/Label/Label.tsx +66 -0
  280. package/src/primitives/Label/index.ts +11 -0
  281. package/src/primitives/NumberDisplay/NumberDisplay.css +63 -0
  282. package/src/primitives/NumberDisplay/NumberDisplay.props.ts +65 -0
  283. package/src/primitives/NumberDisplay/NumberDisplay.stories.tsx +83 -0
  284. package/src/primitives/NumberDisplay/NumberDisplay.tsx +155 -0
  285. package/src/primitives/NumberDisplay/index.ts +11 -0
  286. package/src/primitives/NumberEntry/NumberEntry.css +71 -0
  287. package/src/primitives/NumberEntry/NumberEntry.props.ts +86 -0
  288. package/src/primitives/NumberEntry/NumberEntry.stories.tsx +129 -0
  289. package/src/primitives/NumberEntry/NumberEntry.tsx +249 -0
  290. package/src/primitives/NumberEntry/NumberEntryDigits.props.ts +57 -0
  291. package/src/primitives/NumberEntry/NumberEntryDigits.tsx +117 -0
  292. package/src/primitives/NumberEntry/index.ts +11 -0
  293. package/src/primitives/RangeSlider/RangeSlider.css +110 -0
  294. package/src/primitives/RangeSlider/RangeSlider.props.ts +93 -0
  295. package/src/primitives/RangeSlider/RangeSlider.stories.tsx +76 -0
  296. package/src/primitives/RangeSlider/RangeSlider.tsx +168 -0
  297. package/src/primitives/RangeSlider/index.ts +14 -0
  298. package/src/primitives/SelectEntry/SelectEntry.stories.tsx +86 -0
  299. package/src/primitives/SelectEntry/SelectEntry.tsx +29 -0
  300. package/src/primitives/SelectEntry/SelectEntryContent.css +94 -0
  301. package/src/primitives/SelectEntry/SelectEntryContent.tsx +63 -0
  302. package/src/primitives/SelectEntry/SelectEntryGroup.css +17 -0
  303. package/src/primitives/SelectEntry/SelectEntryGroup.tsx +37 -0
  304. package/src/primitives/SelectEntry/SelectEntryItem.css +35 -0
  305. package/src/primitives/SelectEntry/SelectEntryItem.tsx +51 -0
  306. package/src/primitives/SelectEntry/SelectEntryLabel.css +16 -0
  307. package/src/primitives/SelectEntry/SelectEntryLabel.tsx +43 -0
  308. package/src/primitives/SelectEntry/SelectEntryRoot.css +10 -0
  309. package/src/primitives/SelectEntry/SelectEntryRoot.props.ts +38 -0
  310. package/src/primitives/SelectEntry/SelectEntryRoot.tsx +69 -0
  311. package/src/primitives/SelectEntry/SelectEntrySeparator.css +12 -0
  312. package/src/primitives/SelectEntry/SelectEntrySeparator.tsx +38 -0
  313. package/src/primitives/SelectEntry/SelectEntryTrigger.css +49 -0
  314. package/src/primitives/SelectEntry/SelectEntryTrigger.props.ts +18 -0
  315. package/src/primitives/SelectEntry/SelectEntryTrigger.tsx +111 -0
  316. package/src/primitives/SelectEntry/index.ts +20 -0
  317. package/src/primitives/Toggle/Toggle.css +67 -0
  318. package/src/primitives/Toggle/Toggle.props.ts +44 -0
  319. package/src/primitives/Toggle/Toggle.stories.tsx +61 -0
  320. package/src/primitives/Toggle/Toggle.tsx +90 -0
  321. package/src/primitives/Toggle/index.ts +11 -0
  322. package/src/primitives/ToggleSwitch/ToggleSwitch.css +118 -0
  323. package/src/primitives/ToggleSwitch/ToggleSwitch.props.ts +26 -0
  324. package/src/primitives/ToggleSwitch/ToggleSwitch.stories.tsx +85 -0
  325. package/src/primitives/ToggleSwitch/ToggleSwitch.tsx +73 -0
  326. package/src/primitives/ToggleSwitch/index.ts +10 -0
  327. package/src/primitives/Tooltip/Tooltip.css +93 -0
  328. package/src/primitives/Tooltip/Tooltip.props.ts +20 -0
  329. package/src/primitives/Tooltip/Tooltip.tsx +91 -0
  330. package/src/primitives/Tooltip/index.ts +10 -0
  331. package/src/primitives/TooltipUtility.tsx +24 -0
  332. package/src/primitives/index.ts +44 -0
  333. package/src/stories/decorators/Application.decorator.tsx +20 -0
  334. package/src/stories/decorators/FrontPanel.decorator.tsx +47 -0
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Copyright (c) 2024 Opal Kelly Incorporated
3
+ *
4
+ * This source code is licensed under the FrontPanel license.
5
+ * See the LICENSE file found in the root directory of this project.
6
+ */
7
+
8
+ .okRangeSlider {
9
+ --range-slider-thumb-outline-size: 2px;
10
+ --range-slider-thumb-border-size: 2px;
11
+ --range-slider-thumb-size: 22px;
12
+ --range-slider-track-size: 8px;
13
+
14
+ /* Layout */
15
+ display: flex;
16
+ flex-direction: row;
17
+ align-items: center;
18
+ gap: 4px;
19
+ align-self: stretch;
20
+ width: 100%;
21
+ height: fit-content;
22
+
23
+ /* Typography */
24
+ color: var(--Dark, #343434);
25
+ text-align: right;
26
+ font-family: Inter, "Nunito Sans", sans-serif, ui-sans-serif;
27
+ font-size: 12px;
28
+ font-style: normal;
29
+ font-weight: 400;
30
+ line-height: 12px; /* 100% */
31
+ }
32
+
33
+ /* State Disabled */
34
+ .okRangeSlider[data-disabled="true"] {
35
+ opacity: 0.5;
36
+ }
37
+
38
+ .okRangeSliderLabel {
39
+ width: 100%;
40
+ }
41
+
42
+ .okRangeSliderRoot {
43
+ /* Layout */
44
+ position: relative;
45
+ display: flex;
46
+ align-items: center;
47
+ width: 100%;
48
+ height: var(--range-slider-thumb-size);
49
+ min-width: 100px;
50
+
51
+ /* Style */
52
+ user-select: none;
53
+ touch-action: none;
54
+ }
55
+
56
+ .okRangeSliderTrack {
57
+ /* Layout */
58
+ position: relative;
59
+ flex-grow: 1;
60
+ height: var(--range-slider-track-size);
61
+
62
+ /* Style */
63
+ background: var(--Gray-2, #d0d7df);
64
+ border-radius: 9999px;
65
+ }
66
+
67
+ .okRangeSliderRange {
68
+ /* Layout */
69
+ position: absolute;
70
+ height: 100%;
71
+
72
+ /* Style */
73
+ background-color: #44bd84;
74
+ border-radius: inherit;
75
+ }
76
+
77
+ .okRangeSliderThumb {
78
+ /* Layout */
79
+ display: flex;
80
+ flex-direction: column;
81
+ align-items: center;
82
+ width: calc(
83
+ var(--range-slider-thumb-size) -
84
+ (2 * (var(--range-slider-thumb-border-size) + var(--range-slider-thumb-outline-size)))
85
+ );
86
+ height: calc(
87
+ var(--range-slider-thumb-size) -
88
+ (2 * (var(--range-slider-thumb-border-size) + var(--range-slider-thumb-outline-size)))
89
+ );
90
+
91
+ /* Style */
92
+ background: var(--Base-White, #fff);
93
+ border: var(--range-slider-thumb-border-size) solid var(--brand-12, #44bd84);
94
+ border-radius: var(--range-slider-thumb-size);
95
+ }
96
+
97
+ .okRangeSliderThumb:hover {
98
+ background-color: #44bd84;
99
+ }
100
+
101
+ .okRangeSliderThumb:focus {
102
+ outline: none;
103
+ box-shadow: 0 0 0 var(--range-slider-thumb-outline-size) #d0d7df;
104
+ }
105
+
106
+ .okRangeSliderThumbLabel {
107
+ /* Layout */
108
+ position: absolute;
109
+ bottom: -14px;
110
+ }
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Copyright (c) 2024 Opal Kelly Incorporated
3
+ *
4
+ * This source code is licensed under the FrontPanel license.
5
+ * See the LICENSE file found in the root directory of this project.
6
+ */
7
+
8
+ import LabelProps from "../Label/Label.props";
9
+
10
+ export type RangeSliderValueChangeEventHandler = (value: number) => void;
11
+ export type RangeSliderValueCommitEventHandler = (value: number) => void;
12
+
13
+ /**
14
+ * Interface for the properties of the `RangeSlider` component.
15
+ *
16
+ * @interface
17
+ */
18
+ interface RangeSliderProps {
19
+ /**
20
+ * Optional CSS class to apply to the range
21
+ */
22
+ className?: string;
23
+
24
+ /**
25
+ * Optional label properties for the range slider
26
+ */
27
+ label?: LabelProps;
28
+
29
+ /**
30
+ * Optional tooltip text to be displayed on hover
31
+ */
32
+ tooltip?: string;
33
+
34
+ /**
35
+ * Optional default value of the range slider
36
+ */
37
+ defaultValue?: number;
38
+
39
+ /**
40
+ * Optional current value of the range slider
41
+ */
42
+ value?: number;
43
+
44
+ /**
45
+ * Optional step value for the range slider. This determines the increments in value for each step
46
+ * @default 1
47
+ */
48
+ valueStep?: number;
49
+
50
+ /**
51
+ * Optional minimum value that the range slider can have
52
+ * @default 0
53
+ */
54
+ minimumValue?: number;
55
+
56
+ /**
57
+ * Optional maximum value that the range slider can have
58
+ * @default 100
59
+ */
60
+ maximumValue?: number;
61
+
62
+ /**
63
+ * Optional disable the range slider
64
+ * @default false
65
+ */
66
+ disabled?: boolean;
67
+
68
+ /**
69
+ * Optional show the label for the thumb (handle) of the range slider
70
+ * @default true
71
+ */
72
+ showThumbLabel?: boolean;
73
+
74
+ /**
75
+ * Optional show the labels for the track of the range slider
76
+ * @default true
77
+ */
78
+ showTrackLabels?: boolean;
79
+
80
+ /**
81
+ * Optional event handler for the range slider value change event
82
+ * @type {RangeSliderValueChangeEventHandler}
83
+ */
84
+ onValueChange?: RangeSliderValueChangeEventHandler;
85
+
86
+ /**
87
+ * Optional event handler for the range slider value committed event
88
+ * @type {RangeSliderValueCommitEventHandler}
89
+ */
90
+ onValueCommit?: RangeSliderValueCommitEventHandler;
91
+ }
92
+
93
+ export default RangeSliderProps;
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Copyright (c) 2024 Opal Kelly Incorporated
3
+ *
4
+ * This source code is licensed under the FrontPanel license.
5
+ * See the LICENSE file found in the root directory of this project.
6
+ */
7
+
8
+ import React from "react";
9
+
10
+ import type { Meta, StoryObj } from "@storybook/react";
11
+
12
+ import withApplication from "../../stories/decorators/Application.decorator";
13
+
14
+ import RangeSlider from "./RangeSlider";
15
+
16
+ // Configure Story metadata
17
+ const meta = {
18
+ title: "Components/RangeSlider",
19
+ component: RangeSlider,
20
+ parameters: {
21
+ layout: "centered" // Center the component in the Canvas
22
+ },
23
+ tags: ["autodocs"], // Automatically generate documentation
24
+ argTypes: {
25
+ defaultValue: {
26
+ control: { type: "number", step: 1 }
27
+ },
28
+ valueStep: {
29
+ control: { type: "number", step: 1 }
30
+ },
31
+ maximumValue: {
32
+ control: { type: "number", step: 1 }
33
+ },
34
+ minimumValue: {
35
+ control: { type: "number", step: 1 }
36
+ },
37
+ showThumbLabel: { type: "boolean" },
38
+ showTrackLabels: { type: "boolean" },
39
+ disabled: { type: "boolean" },
40
+ // Disable event callback arguments
41
+ onValueChange: {
42
+ control: { disable: true }
43
+ },
44
+ onValueCommit: {
45
+ control: { disable: true }
46
+ }
47
+ }
48
+ } satisfies Meta<typeof RangeSlider>;
49
+
50
+ export default meta;
51
+
52
+ type Story = StoryObj<typeof meta>;
53
+
54
+ // Primary Story
55
+ export const Primary: Story = {
56
+ render: (args) => {
57
+ return (
58
+ <div style={{ minWidth: "200px" }}>
59
+ <RangeSlider {...args} />
60
+ </div>
61
+ );
62
+ },
63
+ decorators: [withApplication],
64
+ args: {
65
+ defaultValue: 50,
66
+ value: undefined,
67
+ maximumValue: 100,
68
+ minimumValue: 0,
69
+ valueStep: 1,
70
+ showTrackLabels: true,
71
+ showThumbLabel: true,
72
+ disabled: false,
73
+ label: { text: "RangeSlider" },
74
+ tooltip: "Set value within range"
75
+ }
76
+ };
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Copyright (c) 2024 Opal Kelly Incorporated
3
+ *
4
+ * This source code is licensed under the FrontPanel license.
5
+ * See the LICENSE file found in the root directory of this project.
6
+ */
7
+
8
+ import React from "react";
9
+
10
+ import classNames from "classnames";
11
+
12
+ import * as SliderPrimitive from "@radix-ui/react-slider";
13
+
14
+ import RangeSliderProps from "./RangeSlider.props";
15
+
16
+ import "../../index.css";
17
+
18
+ import "./RangeSlider.css";
19
+
20
+ import Label from "../Label";
21
+ import Tooltip from "../Tooltip";
22
+
23
+ type RangeSliderElement = React.ElementRef<typeof SliderPrimitive.Root>;
24
+
25
+ /**
26
+ * `RangeSlider` is a React component that renders a range slider to allow setting a value within a specified
27
+ * range by clicking and dragging the slider thumb or by using the arrow keys. The slider can optionally show
28
+ * a label and/or a tooltip.
29
+ *
30
+ * @component
31
+ * @param {object} props - Properties passed to component
32
+ * @param {React.Ref} forwardedRef - Forwarded ref for the range slider
33
+ *
34
+ * @returns {React.Node} The rendered RangeSlider component
35
+ *
36
+ * @example
37
+ * ```jsx
38
+ * <RangeSlider
39
+ * defaultValue={50}
40
+ * maximumValue={100}
41
+ * minimumValue={0}
42
+ * valueStep={1}
43
+ * onValueChange={(value) => console.log(value)} />
44
+ * ```
45
+ */
46
+ const RangeSlider = React.forwardRef<RangeSliderElement, RangeSliderProps>(
47
+ (props, forwardedRef) => {
48
+ const { label, tooltip, ...sliderProps } = props;
49
+
50
+ const showLabel = label != null;
51
+ const showTooltip = tooltip != null;
52
+
53
+ if (showLabel && showTooltip) {
54
+ return (
55
+ <Label className="okRangeSliderLabel" {...label}>
56
+ <Tooltip content={tooltip}>
57
+ <div style={{ width: "100%" }}>
58
+ <RangeSliderImpl ref={forwardedRef} {...sliderProps} />
59
+ </div>
60
+ </Tooltip>
61
+ </Label>
62
+ );
63
+ } else if (showLabel) {
64
+ return (
65
+ <Label className="okRangeSliderLabel" {...label}>
66
+ <div style={{ width: "100%" }}>
67
+ <RangeSliderImpl ref={forwardedRef} {...sliderProps} />
68
+ </div>
69
+ </Label>
70
+ );
71
+ } else if (showTooltip) {
72
+ return (
73
+ <Tooltip content={tooltip}>
74
+ <div style={{ width: "100%" }}>
75
+ <RangeSliderImpl ref={forwardedRef} {...sliderProps} />
76
+ </div>
77
+ </Tooltip>
78
+ );
79
+ } else {
80
+ return <RangeSliderImpl ref={forwardedRef} {...sliderProps} />;
81
+ }
82
+ }
83
+ );
84
+
85
+ RangeSlider.displayName = "RangeSlider";
86
+
87
+ export default RangeSlider;
88
+
89
+ interface RangeSliderImplProps
90
+ extends Omit<React.ComponentPropsWithoutRef<typeof RangeSlider>, "label"> {}
91
+
92
+ const RangeSliderImpl = React.forwardRef<RangeSliderElement, RangeSliderImplProps>(
93
+ (props, forwardedRef) => {
94
+ const {
95
+ className,
96
+ tooltip,
97
+ minimumValue = 0,
98
+ maximumValue = 100,
99
+ onValueChange,
100
+ defaultValue = minimumValue,
101
+ value,
102
+ valueStep = 1,
103
+ showThumbLabel = true,
104
+ showTrackLabels = true,
105
+ disabled = false
106
+ } = props;
107
+
108
+ const initialValue = value ?? defaultValue;
109
+
110
+ const [controlValue, setControlValue] = React.useState<[number]>([initialValue]);
111
+
112
+ React.useEffect(() => {
113
+ setControlValue([initialValue]);
114
+ }, [initialValue]);
115
+
116
+ const updateControlValue = React.useCallback(
117
+ (value: number): void => {
118
+ setControlValue([value]);
119
+ onValueChange?.(value);
120
+ },
121
+ [onValueChange]
122
+ );
123
+
124
+ const RangeSliderTrack = () => {
125
+ return (
126
+ <SliderPrimitive.Track className="okRangeSliderTrack">
127
+ <SliderPrimitive.Range className="okRangeSliderRange" />
128
+ </SliderPrimitive.Track>
129
+ );
130
+ };
131
+
132
+ const showTooltip = tooltip != null;
133
+
134
+ return (
135
+ <div
136
+ className={classNames("okRangeSlider", className)}
137
+ data-disabled={disabled || undefined}>
138
+ {showTrackLabels ? <span>{minimumValue}</span> : null}
139
+ <SliderPrimitive.Root
140
+ ref={forwardedRef}
141
+ min={minimumValue}
142
+ max={maximumValue}
143
+ step={valueStep}
144
+ value={controlValue}
145
+ onValueChange={(value) => updateControlValue(value[0])}
146
+ orientation="horizontal"
147
+ className="okRangeSliderRoot"
148
+ disabled={disabled}>
149
+ {showTooltip ? (
150
+ <Tooltip content={tooltip}>
151
+ <RangeSliderTrack />
152
+ </Tooltip>
153
+ ) : (
154
+ <RangeSliderTrack />
155
+ )}
156
+ <SliderPrimitive.Thumb className="okRangeSliderThumb">
157
+ {showThumbLabel ? (
158
+ <div className="okRangeSliderThumbLabel">{controlValue}</div>
159
+ ) : null}
160
+ </SliderPrimitive.Thumb>
161
+ </SliderPrimitive.Root>
162
+ {showTrackLabels ? <span>{maximumValue}</span> : null}
163
+ </div>
164
+ );
165
+ }
166
+ );
167
+
168
+ RangeSliderImpl.displayName = "RangeSliderImpl";
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Copyright (c) 2024 Opal Kelly Incorporated
3
+ *
4
+ * This source code is licensed under the FrontPanel license.
5
+ * See the LICENSE file found in the root directory of this project.
6
+ */
7
+
8
+ export { default } from "./RangeSlider";
9
+
10
+ export { default as RangeSliderProps } from "./RangeSlider.props";
11
+ export {
12
+ RangeSliderValueChangeEventHandler,
13
+ RangeSliderValueCommitEventHandler
14
+ } from "./RangeSlider.props";
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Copyright (c) 2024 Opal Kelly Incorporated
3
+ *
4
+ * This source code is licensed under the FrontPanel license.
5
+ * See the LICENSE file found in the root directory of this project.
6
+ */
7
+
8
+ import React from "react";
9
+
10
+ import type { Meta, StoryObj } from "@storybook/react";
11
+
12
+ import { useArgs } from "@storybook/preview-api";
13
+
14
+ import withApplication from "../../stories/decorators/Application.decorator";
15
+
16
+ import SelectEntry from "./SelectEntry";
17
+
18
+ // Configure Story metadata
19
+ const meta = {
20
+ title: "Components/SelectEntry",
21
+ component: SelectEntry.Root,
22
+ parameters: {
23
+ layout: "centered" // Center the component in the Canvas
24
+ },
25
+ tags: ["autodocs"], // Automatically generate documentation
26
+ argTypes: {
27
+ size: {
28
+ control: { type: "range", min: 1, max: 3, step: 1 }
29
+ },
30
+ disabled: { control: "boolean" },
31
+ // Disable event callback arguments
32
+ onValueChange: { action: "onValueChange" },
33
+ onOpenChange: { action: "onOpenChange" }
34
+ }
35
+ } satisfies Meta<typeof SelectEntry.Root>;
36
+
37
+ export default meta;
38
+
39
+ type Story = StoryObj<typeof meta>;
40
+
41
+ // Primary Story
42
+ export const Primary: Story = {
43
+ render: ({ ...args }) => {
44
+ const [{ value }, updateArgs] = useArgs();
45
+
46
+ function onValueChange(value: string): void {
47
+ updateArgs({ value: value });
48
+ }
49
+
50
+ return (
51
+ <div style={{ width: "150px" }}>
52
+ <SelectEntry.Root {...args} value={value} onValueChange={onValueChange}>
53
+ <SelectEntry.Trigger />
54
+ <SelectEntry.Content>
55
+ <SelectEntry.Group>
56
+ <SelectEntry.Label>Fruit Group</SelectEntry.Label>
57
+ <SelectEntry.Item value="apple">Apple</SelectEntry.Item>
58
+ <SelectEntry.Item value="orange">Orange</SelectEntry.Item>
59
+ <SelectEntry.Item value="grape" disabled>
60
+ Grape
61
+ </SelectEntry.Item>
62
+ </SelectEntry.Group>
63
+ <SelectEntry.Separator />
64
+ <SelectEntry.Group>
65
+ <SelectEntry.Label>Vegetable Group</SelectEntry.Label>
66
+ <SelectEntry.Item value="carrot">Carrot</SelectEntry.Item>
67
+ <SelectEntry.Item value="potato">Potato</SelectEntry.Item>
68
+ </SelectEntry.Group>
69
+ </SelectEntry.Content>
70
+ </SelectEntry.Root>
71
+ </div>
72
+ );
73
+ },
74
+ decorators: [withApplication],
75
+ args: {
76
+ value: "carrot",
77
+ disabled: false,
78
+ label: {
79
+ text: "Select Item",
80
+ verticalPosition: "top",
81
+ horizontalPosition: "left"
82
+ },
83
+ size: 1,
84
+ tooltip: "Select an item from the list"
85
+ }
86
+ };
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Copyright (c) 2024 Opal Kelly Incorporated
3
+ *
4
+ * This source code is licensed under the FrontPanel license.
5
+ * See the LICENSE file found in the root directory of this project.
6
+ */
7
+
8
+ import SelectEntryContent from "./SelectEntryContent";
9
+ import SelectEntryGroup from "./SelectEntryGroup";
10
+ import SelectEntryItem from "./SelectEntryItem";
11
+ import SelectEntryLabel from "./SelectEntryLabel";
12
+ import SelectEntryRoot from "./SelectEntryRoot";
13
+ import SelectEntrySeparator from "./SelectEntrySeparator";
14
+ import SelectEntryTrigger from "./SelectEntryTrigger";
15
+
16
+ const SelectEntry = Object.assign(
17
+ {},
18
+ {
19
+ Root: SelectEntryRoot,
20
+ Trigger: SelectEntryTrigger,
21
+ Content: SelectEntryContent,
22
+ Item: SelectEntryItem,
23
+ Group: SelectEntryGroup,
24
+ Label: SelectEntryLabel,
25
+ Separator: SelectEntrySeparator
26
+ }
27
+ );
28
+
29
+ export default SelectEntry;
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Copyright (c) 2024 Opal Kelly Incorporated
3
+ *
4
+ * This source code is licensed under the FrontPanel license.
5
+ * See the LICENSE file found in the root directory of this project.
6
+ */
7
+
8
+ .okSelectEntryContent {
9
+ /* Layout */
10
+ width: var(--radix-select-trigger-width);
11
+ max-height: var(--radix-select-content-available-height);
12
+ display: flex;
13
+ padding: 10px 18px;
14
+ flex-direction: column;
15
+ overflow: hidden;
16
+ justify-content: center;
17
+ align-items: stretch;
18
+
19
+ /* Style */
20
+ border-radius: 4px;
21
+ border: 1px solid var(--Gray-2, #d0d7df);
22
+ background: var(--Light, #fff);
23
+ box-shadow: 0px 1px 4px 0px rgba(0, 0, 0, 0.24);
24
+
25
+ .okSelectEntryContentInner {
26
+ display: flex;
27
+ flex-direction: column;
28
+ gap: 10px;
29
+ }
30
+
31
+ /* ScrollArea Root Style */
32
+ .okScrollArea {
33
+ display: flex;
34
+ flex-direction: column;
35
+ overflow: hidden;
36
+ width: 100%;
37
+ height: 100%;
38
+ }
39
+
40
+ /* ScrollArea Viewport Style */
41
+ .okScrollAreaViewport {
42
+ display: flex;
43
+ flex-direction: column;
44
+ width: 100%;
45
+ height: 100%;
46
+ gap: 10px;
47
+
48
+ /* Stop Chrome back/forward two-finger swipe */
49
+ overscroll-behavior-x: contain;
50
+
51
+ &:where(:focus-visible) + :where(.rt-ScrollAreaViewportFocusRing) {
52
+ position: absolute;
53
+ inset: 0;
54
+ pointer-events: none;
55
+ outline: 2px solid var(--focus-8);
56
+ outline-offset: -2px;
57
+ }
58
+ }
59
+
60
+ /* ScrollArea Scrollbar Style */
61
+ .okScrollAreaScrollbar {
62
+ display: flex;
63
+ /* Ensures no selection */
64
+ user-select: none;
65
+ /* Disable browser handling of all panning and zooming gestures on touch devices */
66
+ touch-action: none;
67
+
68
+ &:where([data-orientation="vertical"]) {
69
+ flex-direction: column;
70
+ width: 4px;
71
+ }
72
+ &:where([data-orientation="horizontal"]) {
73
+ flex-direction: row;
74
+ height: 4px;
75
+ }
76
+ }
77
+
78
+ /* ScrollArea Thumb Style */
79
+ .okScrollAreaThumb {
80
+ position: relative;
81
+
82
+ &::before {
83
+ content: "";
84
+ position: absolute;
85
+ top: 50%;
86
+ left: 50%;
87
+ transform: translate(-50%, -50%);
88
+ width: 100%;
89
+ height: 100%;
90
+ min-width: var(--space-4);
91
+ min-height: var(--space-4);
92
+ }
93
+ }
94
+ }