@opalkelly/frontpanel-react-components 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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
package/LICENSE ADDED
@@ -0,0 +1,45 @@
1
+ FrontPanel® License Agreement
2
+ Copyright © 2005-2024 Opal Kelly Incorporated
3
+
4
+ IMPORTANT -- The product, including the software, firmware, and other electronic data contained within the product, is licensed, not sold, and available for use only under the terms of this license agreement. By clicking the "I Agree" button below and continuing with the installation, you are consenting to be bound by this license agreement. If you do not agree to the terms of the license agreement, click the "CANCEL" button. If you do not agree to the terms of this license agreement, and wish to return this product, please contact us at support@opalkelly.com.
5
+
6
+ DEFINITIONS.
7
+ (1) “Agreement” shall mean this license agreement, covering Software and Firmware owned by Opal Kelly.
8
+
9
+ (2) “Opal Kelly” shall refer to Opal Kelly Incorporated, an Illinois corporation, with business address 13500 SW 72nd Ave, STE 100, Portland, OR, 97223. Opal Kelly is the exclusive owner and licensor of both Software and Firmware.
10
+
11
+ (3) “Firmware” shall mean the device firmware included on the hardware device and provided as binary EEPROM contents. The firmware includes, but is not limited to, its object code, scripted code, the full or partial EEPROM contents, the Licensee manuals and all accompanying materials, including any and all revisions and versions regardless of name. Firmware also includes any upgrades provided to users, no matter when provided or how it is acquired.
12
+
13
+ (4) “Software” shall mean the FrontPanel application software and FrontPanel programmer’s interface, as well as any modifications or derivations to the application or interface. The software includes, but is not limited to, its object code, scripted code, the Licensee manuals and all accompanying materials, including any and all revisions and versions regardless of name. Software also includes any upgrades provided to users, no matter when provided or how it is acquired.
14
+
15
+ (5) “Licensee” shall refer to the licensee of Software and Firmware. The Licensee shall not abuse the intended purpose under this Agreement.
16
+
17
+ OWNERSHIP. Opal Kelly owns all proprietary rights, including all patent, copyright, trade secret, trademark, trade name and other proprietary rights in and to the Software and Firmware. Licensee acknowledges that the license granted under this Agreement does not provide Licensee with title to nor ownership of the Software or Firmware, nor to any error corrections, enhancements, updates or other modifications or derivations to the Software or Firmware, whether made by Opal Kelly or any third party. Licensee acknowledges that the license granted under this Agreement only provides the Licensee a right of limited use under the terms and conditions of this Agreement. Licensee shall keep the Software and Firmware free and clear of all claims, liens and encumbrances.
18
+
19
+ SOFTWARE. Opal Kelly hereby grants to the Licensee a temporary, non-exclusive license to install and use Software. Licensee shall not modify, distribute, resell or otherwise transfer Software for any purpose, commercial or non-commercial. Licensee may integrate and sub-license Software for distribution but Software must only be used in conjunction with Opal Kelly devices or devices incorporating Firmware.
20
+
21
+ FIRMWARE. Opal Kelly hereby grants to the Licensee a temporary, non-exclusive license to use Firmware. Licensee shall not distribute, resell or otherwise transfer Firmware for any purpose, commercial or non-commercial. Licensee shall not duplicate, disassemble, reverse engineer, modify, decompile, or otherwise abuse the intended purpose of the Firmware. Licensee may integrate and sub-license Firmware for distribution but Firmware must only be used in conjunction with Software.
22
+
23
+ NO WARRANTY. Software and Firmware are provided to the Licensee in "AS IS-" Condition. Opal Kelly assumes no risk if Software or Firmware does not function properly or operate error-free. Opal Kelly makes no warranties, either expressed or implied, with respect to Software, Firmware, and/or associated materials provided to the Licensee. OPAL KELLY EXPRESSLY DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING THE WARRANTY OF MERCHANTABILITY AND THE WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE. OPAL KELLY SHALL NOT BE LIABLE FOR ANY CLAIMS OR DAMAGES WHATSOEVER, INCLUDING PROPERTY DAMAGE, PERSONAL INJURY, INTELLECTUAL PROPERTY INFRINGEMENT, LOSS OF PROFITS, OR INTERRUPTION OF BUSINESS, OR FOR ANY SPECIAL, CONSEQUENTIAL OR INCIDENTAL DAMAGES, HOWEVER CAUSED, WHETHER ARISING OUT OF BREACH OF WARRANTY, CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY, OR OTHERWISE.
24
+
25
+ RESTRICTIVE COVENANT. Licensee shall not make his/her license for Software and/or Firmware available to any competitor of Opal Kelly in the specific field of FPGA development modules or FPGA integration modules.
26
+
27
+ TECHNICAL SUPPORT. Technical support for Opal Kelly products is provided at the Opal Kelly web site (http://www.opalkelly.com) in the form of a searchable electronic forum. Email support is provided as a courtesy and at the discretion of Opal Kelly. No technical support will be provided over the telephone. Technical support is only available to Licensee, not to any sub-licensees.
28
+
29
+ TERMINATION. Any licenses granted herein are terminated immediately upon material breach of this Agreement by Licensor, or immediately upon use of the Software or Firmware in violation of applicable law. Additionally, Opal Kelly shall have the right to terminate this Agreement and the license granted herein upon the occurrence of any of the following events:
30
+ (1) in the event the Licensee fails to comply with any of the terms and conditions of this Agreement and such a default has not been cured within (15) days after written notice; or
31
+ (2) in the event the Licensee
32
+ a. terminates or suspends its business,
33
+ b. becomes subject to any bankruptcy or insolvency proceeding under Federal or state statute,
34
+ c. becomes insolvent or subject to direct control by a trustee, receiver or similar authority, or
35
+ d. has wound up or liquidated, voluntarily or otherwise.
36
+
37
+ Opal Kelly retains the right to terminate the Agreement with Licensee without cause, after providing written notice to the Licensee. The termination shall be effective thirty (30) days after date of said notice. All such notices shall be delivered to the Licensor's last known mailing address and/or email address.
38
+
39
+ LEGAL NOTICE. THIS CONTRACT SHALL BE GOVERNED AND CONSTRUED IN ACCORDANCE WITH THE LAWS OF THE STATE OF OREGON. ANY CLAIM, ACTION, OR SUIT BETWEEN LICENSEE AND OPAL KELLY THAT ARISES OUT OF OR RELATES TO PERFORMANCE OF THIS CONTRACT SHALL BE BROUGHT AND CONDUCTED SOLELY AND EXCLUSIVELY WITHIN THE CIRCUIT COURT FOR WASHINGTON COUNTY, OREGON. PROVIDED, HOWEVER, THAT IF ANY SUCH CLAIM, ACTION OR SUIT MAY BE BROUGHT ONLY IN A FEDERAL FORUM, IT SHALL BE BROUGHT AND CONDUCTED SOLELY AND EXCLUSIVELY WITHIN THE UNITED STATES DISTRICT COURT OF OREGON. If any provision of this Agreement shall be unlawful, void, or for any reason unenforceable, then that provision shall be deemed severed from this Agreement and shall not affect the validity or enforceability of the remaining provisions of this Agreement. This Agreement is the complete statement of the agreement and supersedes any proposal or prior communications between Opal Kelly and the Licensee relating to the subject matter of this Agreement. If you have any questions regarding this Agreement, please contact:
40
+
41
+ Opal Kelly Incorporated
42
+ 13500 SW 72nd Ave, STE 100
43
+ Portland, OR 97223
44
+ support@opalkelly.com
45
+
package/README.md ADDED
@@ -0,0 +1,26 @@
1
+ FrontPanel Alloy React Component Library
2
+ ==============================
3
+
4
+ This Library provides a set of React Components intended for FrontPanel Alloy application development.
5
+
6
+ Getting Started tutorials, How-To guides, Technical References, and Discussion documentation pieces are available at: [FrontPanel Alloy documentation](https://docs.opalkelly.com/fpsdk/frontpanel-alloy-introduction/)
7
+
8
+ Prerequisites
9
+ -------
10
+
11
+ * FrontPanel application version 6.0.0 or greater
12
+
13
+ Applications using this library are required to run in the FrontPanel Alloy runtime environment provided by the Opal Kelly FrontPanel application.
14
+
15
+ Installation
16
+ -------
17
+
18
+ This is a [Node.js](https://nodejs.org/en/) module available through the
19
+ [npm registry](https://www.npmjs.com/).
20
+
21
+ Installation is done using the
22
+ [`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
23
+
24
+ ```bash
25
+ $ npm install @opalkelly/frontpanel-react-components
26
+ ```
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("react"),n=require("@opalkelly/frontpanel-alloy-core"),r=require("@radix-ui/react-tooltip"),t=require("classnames"),a=require("@radix-ui/react-slider"),i=require("@radix-ui/react-select"),o=require("@radix-ui/react-scroll-area");function l(e){var n=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var t=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,t.get?t:{enumerable:!0,get:function(){return e[r]}})}})),n.default=e,Object.freeze(n)}var s,c,d=l(e),f=l(r),u=l(a),p=l(i),g=l(o);exports.NumeralSystem=void 0,(s=exports.NumeralSystem||(exports.NumeralSystem={}))[s.Binary=2]="Binary",s[s.Octal=8]="Octal",s[s.Decimal=10]="Decimal",s[s.Hexadecimal=16]="Hexadecimal",exports.ToggleState=void 0,(c=exports.ToggleState||(exports.ToggleState={}))[c.Off=0]="Off",c[c.On=1]="On";class m{get DigitCount(){return this._DigitCount}get NumeralSystem(){return this._NumeralSystem}get DigitChars(){return this._DigitChars}constructor(e,n){this._DigitCount=e,this._NumeralSystem=n,this._DigitChars=m.GetDigitChars(n)}GetDigitFromValue(e){let n=e%this._NumeralSystem;return n<0&&(n+=this._NumeralSystem),n.toString(this._NumeralSystem)}static GetDigitChars(e){let n;switch(e){case exports.NumeralSystem.Binary:n=m.BINARY_DIGITVALUES;break;case exports.NumeralSystem.Octal:n=m.OCTAL_DIGITVALUES;break;case exports.NumeralSystem.Decimal:n=m.DECIMAL_DIGITVALUES;break;case exports.NumeralSystem.Hexadecimal:n=m.HEXADECIMAL_DIGITVALUES;break;default:n=[]}return n}static ComputeDigitCountFromBits(e,n){const r=(1n<<BigInt(e))-1n;return this.ComputeDigitCountFromValue(r,n)}static ComputeDigitCountFromValue(e,n){const r=BigInt(n);let t,a=e;for(t=0n;t<m.MAX_DIGITS&&0n!==a;t++)a/=r;return t>0n?t:1n}}function h(e){let n=0;if(e>0n){let r=e;for(;r>0n;)r>>=1n,n++}else 0n===e&&(n=1);return n}m.MAX_DIGITS=1024,m.BINARY_DIGITVALUES=["0","1"],m.OCTAL_DIGITVALUES=["0","1","2","3","4","5","6","7"],m.DECIMAL_DIGITVALUES=[...m.OCTAL_DIGITVALUES,"8","9"],m.HEXADECIMAL_DIGITVALUES=[...m.DECIMAL_DIGITVALUES,"A","B","C","D","E","F"];const y=e.createContext({device:window.FrontPanel,workQueue:new n.WorkQueue}),x=r=>{const{device:t=window.FrontPanel,workQueue:a=new n.WorkQueue,eventSource:i=new n.FrontPanelPeriodicUpdateTimer(t,10)}=r;return e.createElement(y.Provider,{value:{device:t,workQueue:a,eventSource:i}},r.children)};function b(e,n){void 0===n&&(n={});var r=n.insertAt;if(e&&"undefined"!=typeof document){var t=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===r&&t.firstChild?t.insertBefore(a,t.firstChild):t.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}x.displayName="FrontPanel";b("");const S=d.forwardRef(((e,n)=>d.createElement(f.Provider,null,e.children)));S.displayName="Application";b('/**\r\n * Copyright (c) 2024 Opal Kelly Incorporated\r\n *\r\n * This source code is licensed under the FrontPanel license.\r\n * See the LICENSE file found in the root directory of this project.\r\n */\r\n\r\n@font-face {\r\n font-family: "Inter";\r\n src: url("./fonts/Inter-VariableFont_slnt\\,wght.ttf") format("truetype");\r\n}\r\n');b('/**\r\n * Copyright (c) 2024 Opal Kelly Incorporated\r\n *\r\n * This source code is licensed under the FrontPanel license.\r\n * See the LICENSE file found in the root directory of this project.\r\n */\r\n\r\n.okButton {\r\n /* Layout */\r\n display: inline-flex;\r\n padding: var(--button-padding, 6px 12px);\r\n justify-content: center;\r\n align-items: center;\r\n gap: 8px;\r\n\r\n /* Style */\r\n border-width: 0px;\r\n border-radius: 4px;\r\n background: var(--brand-12, #44bd84);\r\n\r\n /* Typography */\r\n color: var(--Base-White, #fff);\r\n text-align: center;\r\n font-family: Inter, "Nunito Sans", sans-serif, ui-sans-serif;\r\n font-size: var(--button-font-size, 12px);\r\n font-style: normal;\r\n font-weight: 600;\r\n line-height: var(--button-line-height, 12px); /* 100% */\r\n\r\n /* State Pressed */\r\n &:is(:active) {\r\n background: #329466;\r\n }\r\n\r\n /* State Disabled */\r\n &:is(:disabled) {\r\n background: var(--Gray-2, #d0d7df);\r\n }\r\n\r\n /* Size 1 */\r\n &:where(.ok-r-size-1) {\r\n --button-padding: 6px 12px;\r\n --button-font-size: 12px;\r\n --button-line-height: 12px;\r\n }\r\n\r\n /* Sizes 2*/\r\n &:where(.ok-r-size-2) {\r\n --button-padding: 10px 18px;\r\n --button-font-size: 14px;\r\n --button-line-height: 14px;\r\n }\r\n\r\n /* Sizes 3*/\r\n &:where(.ok-r-size-3) {\r\n --button-padding: 18px 22px;\r\n --button-font-size: 20px;\r\n --button-line-height: 20px;\r\n }\r\n}\r\n');b('/**\r\n * Copyright (c) 2024 Opal Kelly Incorporated\r\n *\r\n * This source code is licensed under the FrontPanel license.\r\n * See the LICENSE file found in the root directory of this project.\r\n */\r\n\r\n.okTooltipContent {\r\n /* Layout */\r\n display: flex;\r\n padding: 10px;\r\n align-items: flex-end;\r\n\r\n /* Style */\r\n border-radius: 4px;\r\n background: var(--Dark, #343434);\r\n\r\n /* Drop shadow - tiny */\r\n box-shadow: 0px 1px 4px 0px rgba(0, 0, 0, 0.24);\r\n\r\n user-select: none;\r\n animation-duration: 200ms;\r\n animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);\r\n will-change: transform, opacity;\r\n}\r\n\r\n.okTooltipContent[data-state="delayed-open"][data-side="top"] {\r\n animation-name: slideDownAndFade;\r\n}\r\n.okTooltipContent[data-state="delayed-open"][data-side="right"] {\r\n animation-name: slideLeftAndFade;\r\n}\r\n.okTooltipContent[data-state="delayed-open"][data-side="bottom"] {\r\n animation-name: slideUpAndFade;\r\n}\r\n.okTooltipContent[data-state="delayed-open"][data-side="left"] {\r\n animation-name: slideRightAndFade;\r\n}\r\n\r\n.okTooltipText {\r\n /* Typography */\r\n color: var(--Light, #fff);\r\n text-align: center;\r\n font-family: Inter, "Nunito Sans", sans-serif, ui-sans-serif;\r\n font-size: 12px;\r\n font-style: normal;\r\n font-weight: 400;\r\n line-height: 12px; /* 100% */\r\n}\r\n\r\n@keyframes slideUpAndFade {\r\n from {\r\n opacity: 0;\r\n transform: translateY(2px);\r\n }\r\n to {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n}\r\n\r\n@keyframes slideRightAndFade {\r\n from {\r\n opacity: 0;\r\n transform: translateX(-2px);\r\n }\r\n to {\r\n opacity: 1;\r\n transform: translateX(0);\r\n }\r\n}\r\n\r\n@keyframes slideDownAndFade {\r\n from {\r\n opacity: 0;\r\n transform: translateY(-2px);\r\n }\r\n to {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n}\r\n\r\n@keyframes slideLeftAndFade {\r\n from {\r\n opacity: 0;\r\n transform: translateX(2px);\r\n }\r\n to {\r\n opacity: 1;\r\n transform: translateX(0);\r\n }\r\n}\r\n');const w=e.forwardRef(((n,r)=>{const{children:a,className:i,open:o,defaultOpen:l,onOpenChange:s,delayDuration:c,disableHoverableContent:d,content:u,container:p,forceMount:g,...m}=n,h={open:o,defaultOpen:l,onOpenChange:s,delayDuration:c,disableHoverableContent:d};return e.createElement(f.Root,{...h},e.createElement(f.Trigger,{asChild:!0},a),e.createElement(f.Portal,{container:p,forceMount:g},e.createElement(f.Content,{sideOffset:4,collisionPadding:10,...m,ref:r,className:t("okTooltipContent",i)},e.createElement("p",{className:"okTooltipText"},u))))}));function E(n){return function(r){return null!=r.tooltip?e.createElement(w,{content:r.tooltip},n):n}}w.displayName="Tooltip";const k=e.forwardRef(((n,r)=>{const{className:a,label:i,size:o=1,onButtonUp:l,onButtonDown:s,onButtonClick:c,...d}=n,f=E(e.createElement("button",{"data-disabled":d.disabled||void 0,...d,ref:r,className:t("okButton",a,"ok-r-size-"+o),onMouseDown:s,onMouseUp:l,onClick:c},i));return e.createElement(f,{...n})}));k.displayName="Button";var v;b('/**\r\n * Copyright (c) 2024 Opal Kelly Incorporated\r\n *\r\n * This source code is licensed under the FrontPanel license.\r\n * See the LICENSE file found in the root directory of this project.\r\n */\r\n\r\n.okIndicator {\r\n /* Layout */\r\n display: inline-flex;\r\n padding: var(--indicator-padding, 6px 12px);\r\n justify-content: flex-start;\r\n align-items: baseline;\r\n gap: 4px;\r\n\r\n /* Style */\r\n border-radius: 4px;\r\n border: 1px solid var(--Gray-2, #d0d7df);\r\n background: var(--Light, #fff);\r\n\r\n /* Indicator Icon Style */\r\n svg.okIndicatorIcon {\r\n width: var(--indicator-icon-width, 9px);\r\n height: var(--indicator-icon-height, 9px);\r\n }\r\n\r\n /* Label Style */\r\n .okIndicatorLabel {\r\n /* Typography */\r\n color: var(--Dark, #343434);\r\n text-align: center;\r\n /* TODO: Determine how to get Inter font */\r\n font-family: Inter, "Nunito Sans", sans-serif, ui-sans-serif;\r\n font-size: var(--indicator-font-size, 12px);\r\n font-style: normal;\r\n font-weight: 500;\r\n line-height: var(--indicator-line-height, 12px); /* 100% */\r\n }\r\n\r\n /* Size 1 */\r\n &:where(.ok-r-size-1) {\r\n --indicator-padding: 6px 12px;\r\n --indicator-font-size: 12px;\r\n --indicator-line-height: 12px;\r\n --indicator-icon-width: 9px;\r\n --indicator-icon-height: 9px;\r\n }\r\n\r\n /* Sizes 2 */\r\n &:where(.ok-r-size-2) {\r\n --indicator-padding: 10px 18px;\r\n --indicator-font-size: 14px;\r\n --indicator-line-height: 14px;\r\n --indicator-icon-width: 10px;\r\n --indicator-icon-height: 10px;\r\n }\r\n\r\n /* Sizes 3 */\r\n &:where(.ok-r-size-3) {\r\n --indicator-padding: 18px 22px;\r\n --indicator-font-size: 20px;\r\n --indicator-line-height: 20px;\r\n --indicator-icon-width: 15px;\r\n --indicator-icon-height: 15px;\r\n }\r\n}\r\n'),function(e){e[e.Up=0]="Up",e[e.Down=1]="Down"}(v||(v={}));const I=d.forwardRef(((e,n)=>{const{direction:r=v.Down,color:t="#343434",...a}=e;return d.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"8",viewBox:"0 0 12 8",fill:"none",...a,ref:n},((e,n)=>{let r;return e===v.Up||v.Down,r=d.createElement("path",{d:"M6.75593 7.12713C6.35716 7.58759 5.64284 7.58759 5.24407 7.12713L2.23682 3.65465C1.67594 3.00701 2.136 2 2.99275 2L9.00725 2C9.864 2 10.3241 3.00701 9.76318 3.65465L6.75593 7.12713Z",fill:n}),r})(r,t))}));var N;I.displayName="ChevronIcon",function(e){e[e.Up=0]="Up",e[e.Down=1]="Down"}(N||(N={}));const C=d.forwardRef(((e,n)=>{const{direction:r=N.Down,color:t="#343434",...a}=e;return d.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"10",height:"4",viewBox:"0 0 10 4",fill:"none",...a,ref:n},((e,n)=>{let r;switch(e){case N.Up:r=d.createElement("path",{d:"M5 5.1656e-07L10 4L0 4L5 5.1656e-07Z",fill:n});break;case N.Down:r=d.createElement("path",{d:"M5 4L0 0L10 8.88334e-07L5 4Z",fill:n});break;default:r=d.createElement("path",{d:"M5 5.1656e-07L10 4L0 4L5 5.1656e-07Z",fill:n})}return r})(r,t))}));C.displayName="IndicatorArrowIcon";const T=d.forwardRef(((e,n)=>{const{color:r="#343434",...t}=e;return d.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"10",height:"1",viewBox:"0 0 10 1",fill:"none",...t,ref:n},d.createElement("path",{d:"M8.74228e-08 -8.74228e-07L10 -9.53674e-07L10 1L0 0.999999L8.74228e-08 -8.74228e-07Z",fill:r}))}));T.displayName="IndicatorBarIcon";const z=d.forwardRef(((e,n)=>{const{state:r,color:t="#D0D7DF",colorOnState:a="#44BD84",colorOffState:i="#D0D7DF"}=e;return d.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",...e,ref:n},((e,n,r,t)=>{let a;switch(e){case exports.ToggleState.On:a=d.createElement("path",{d:"M5 10C7.76142 10 10 7.76142 10 5C10 2.23858 7.76142 0 5 0C2.23858 0 0 2.23858 0 5C0 7.76142 2.23858 10 5 10Z",fill:r});break;case exports.ToggleState.Off:a=d.createElement("path",{d:"M5 10C7.76142 10 10 7.76142 10 5C10 2.23858 7.76142 0 5 0C2.23858 0 0 2.23858 0 5C0 7.76142 2.23858 10 5 10Z",fill:t});break;default:a=d.createElement("path",{d:"M5 10C7.76142 10 10 7.76142 10 5C10 2.23858 7.76142 0 5 0C2.23858 0 0 2.23858 0 5C0 7.76142 2.23858 10 5 10Z",fill:n})}return a})(r,t,a,i))}));z.displayName="IndicatorStateIcon";const D=d.forwardRef(((e,n)=>{const{state:r,color:t="#343434",colorOnState:a="#44BD84",...i}=e;return d.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",...i,ref:n},((e,n,r)=>{let t;switch(e){case exports.ToggleState.On:t=d.createElement(d.Fragment,null,d.createElement("circle",{cx:"7",cy:"7",r:"6",stroke:n,strokeWidth:"2"}),d.createElement("circle",{cx:"7",cy:"7",r:"3",fill:r}));break;case exports.ToggleState.Off:default:t=d.createElement("circle",{cx:"7",cy:"7",r:"6",stroke:n,strokeWidth:"2"})}return t})(r,t,a))}));D.displayName="RadioToggleStateIcon";const L=d.forwardRef(((e,n)=>{const{state:r,color:t="white",colorOnState:a="white",colorOffState:i="white",...o}=e;return d.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"8",height:"8",viewBox:"0 0 8 8",fill:"none",...o,ref:n},((e,n,r,t)=>{let a;switch(e){case exports.ToggleState.On:a=d.createElement("circle",{cx:"4",cy:"4",r:"3.75",fill:r});break;case exports.ToggleState.Off:a=d.createElement("circle",{cx:"4",cy:"4",r:"3.75",fill:t});break;default:a=d.createElement("circle",{cx:"4",cy:"4",r:"3.75",fill:n})}return a})(r,t,a,i))}));L.displayName="SwitchToggleStateIcon";const R=e.forwardRef(((n,r)=>{const{className:a,label:i,size:o=1,state:l,...s}=n,c=E(e.createElement("span",{...s,ref:r,className:t("okIndicator",a,"ok-r-size-"+o)},e.createElement(z,{className:"okIndicatorIcon",state:l?exports.ToggleState.On:exports.ToggleState.Off}),e.createElement("span",{className:t("okIndicatorLabel")},i)));return e.createElement(c,{...n})}));R.displayName="Indicator";b('/**\r\n * Copyright (c) 2024 Opal Kelly Incorporated\r\n *\r\n * This source code is licensed under the FrontPanel license.\r\n * See the LICENSE file found in the root directory of this project.\r\n */\r\n\r\n.okLabel {\r\n /* Layout */\r\n display: inline-flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n gap: 4px;\r\n\r\n /* Text Style */\r\n .okLabelText {\r\n /* Typography */\r\n color: var(--Dark, #343434);\r\n font-family: Inter, "Nunito Sans", sans-serif, ui-sans-serif;\r\n font-size: 12px;\r\n font-style: normal;\r\n font-weight: 400;\r\n line-height: 12px; /* 100% */\r\n }\r\n\r\n /* Label Position Left Top*/\r\n &:where(.ok-pos-left-top) {\r\n flex-direction: column;\r\n align-items: flex-start;\r\n }\r\n\r\n /* Label Position Left Bottom*/\r\n &:where(.ok-pos-left-bottom) {\r\n flex-direction: column-reverse;\r\n align-items: flex-start;\r\n }\r\n\r\n /* Label Position Right Top*/\r\n &:where(.ok-pos-right-top) {\r\n flex-direction: column;\r\n align-items: flex-end;\r\n }\r\n\r\n /* Label Position Right Bottom*/\r\n &:where(.ok-pos-right-bottom) {\r\n flex-direction: column-reverse;\r\n align-items: flex-end;\r\n }\r\n}\r\n');const O=e.forwardRef(((n,r)=>{const{className:a,text:i,horizontalPosition:o="left",verticalPosition:l="top",children:s,...c}=n;return e.createElement("div",{...c,ref:r,className:t("okLabel",a,"ok-pos-"+o+"-"+l)},e.createElement("span",{className:t("okLabelText")},i),s)}));O.displayName="Label";b("/**\r\n * Copyright (c) 2024 Opal Kelly Incorporated\r\n *\r\n * This source code is licensed under the FrontPanel license.\r\n * See the LICENSE file found in the root directory of this project.\r\n */\r\n\r\n.okNumberDisplay {\r\n /* Layout */\r\n display: flex;\r\n padding: var(--number-display-padding, 6px 12px);\r\n justify-content: flex-end;\r\n align-items: center;\r\n gap: 4px;\r\n\r\n /* Style */\r\n border-radius: 4px;\r\n border: 1px solid var(--Gray-2, #d0d7df);\r\n background: #f5f5f5;\r\n\r\n /* Content Style */\r\n .okNumberDisplayContent {\r\n display: flex;\r\n padding: var(--spacing-0, 0px);\r\n align-items: center;\r\n justify-content: flex-end;\r\n gap: 8px;\r\n flex: 1 0 0;\r\n }\r\n\r\n /* Text Style */\r\n .okNumberDisplayText {\r\n /* Typography */\r\n color: var(--Dark, #343434);\r\n text-align: center;\r\n font-family: Monaco;\r\n font-size: var(--number-display-font-size, 12px);\r\n font-style: normal;\r\n font-weight: 400;\r\n line-height: var(--number-display-line-height, 12px); /* 100% */\r\n }\r\n\r\n /* Size 1 */\r\n &:where(.ok-r-size-1) {\r\n --number-display-padding: 6px 6px;\r\n --number-display-font-size: 12px;\r\n --number-display-line-height: 12px;\r\n }\r\n\r\n /* Sizes 2 */\r\n &:where(.ok-r-size-2) {\r\n --number-display-padding: 6px 10px;\r\n --number-display-font-size: 14px;\r\n --number-display-line-height: 14px;\r\n }\r\n\r\n /* Sizes 3 */\r\n &:where(.ok-r-size-3) {\r\n --number-display-padding: 6px 18px;\r\n --number-display-font-size: 20px;\r\n --number-display-line-height: 20px;\r\n }\r\n}\r\n");const A=e.forwardRef(((n,r)=>{const{className:a,label:i,size:o=1,numeralSystem:l=exports.NumeralSystem.Decimal,decimalScale:s=0,maximumValue:c,minimumValue:d,value:f}=n,u=e.useMemo((()=>{const e=m.ComputeDigitCountFromValue(c,l),n=m.ComputeDigitCountFromValue(d,l);return e>n?e:n}),[c,d,l]),p=e.useMemo((()=>e.createElement("span",{className:t("okNumberDisplayText","ok-r-size-"+o)},"-")),[o]),g=E(e.createElement("div",{ref:r,className:t("okNumberDisplay",a,"ok-r-size-"+o)},e.createElement("div",{className:"okNumberDisplayContent"},f<0n&&p,e.createElement("span",{className:"okNumberDisplayText"},function(e,n,r,t){let a;if(null!=e){const i=e>=0n?e:-e,o=Number(n),l=i.toString(r).padStart(o,"0");if(r===exports.NumeralSystem.Decimal&&t>0){const e=o-t;if(e>0)a=l.slice(0,e)+"."+l.slice(e);else{const n="0.";a=n.padEnd(n.length-e,"0")+l}}else a=l}else a="Error";return a}(f,u,l,s)))));if(null!=i)return e.createElement(O,{...i},e.createElement("div",{style:{width:"100%"}},e.createElement(g,{...n})));e.createElement(g,{...n})}));A.displayName="NumberDisplay";b('/**\r\n * Copyright (c) 2024 Opal Kelly Incorporated\r\n *\r\n * This source code is licensed under the FrontPanel license.\r\n * See the LICENSE file found in the root directory of this project.\r\n */\r\n\r\n.okNumberEntry {\r\n /* Layout */\r\n display: flex;\r\n padding: var(--number-entry-padding, 6px);\r\n justify-content: flex-end;\r\n align-items: center;\r\n\r\n /* Style */\r\n border-radius: 4px;\r\n border: 1px solid var(--brand-12, #44bd84);\r\n background: var(--Light, #fff);\r\n\r\n /* Content Style */\r\n .okNumberEntryContent {\r\n display: flex;\r\n height: auto; /*32px;*/\r\n justify-content: flex-end;\r\n align-items: center;\r\n gap: var(--spacing-0, 0px);\r\n align-self: stretch;\r\n }\r\n\r\n /* Text Style */\r\n .okNumberEntryText {\r\n /* Typography */\r\n color: var(--Dark, #343434);\r\n text-align: center;\r\n font-family: Monaco;\r\n font-size: var(--number-entry-font-size, 12px);\r\n font-style: normal;\r\n font-weight: 400;\r\n line-height: var(--number-entry-line-height, 12px); /* 100% */\r\n letter-spacing: 1.26px;\r\n }\r\n\r\n /* Size 1 */\r\n &:where(.ok-r-size-1) {\r\n --number-entry-padding: 1px 6px;\r\n --number-entry-font-size: 12px;\r\n --number-entry-line-height: 12px;\r\n }\r\n\r\n /* Sizes 2 */\r\n &:where(.ok-r-size-2) {\r\n --number-entry-padding: 1px 10px;\r\n --number-entry-font-size: 14px;\r\n --number-entry-line-height: 14px;\r\n }\r\n\r\n /* Sizes 3 */\r\n &:where(.ok-r-size-3) {\r\n --number-entry-padding: 1px 18px;\r\n --number-entry-font-size: 20px;\r\n --number-entry-line-height: 20px;\r\n }\r\n}\r\n\r\n.okNumberEntry[data-disabled="true"] {\r\n border: 1px solid var(--Gray-2, #d0d7df);\r\n opacity: 0.5;\r\n background: var(--Gray-3, #e7ebef);\r\n\r\n pointer-events: none;\r\n}\r\n');b('/**\r\n * Copyright (c) 2024 Opal Kelly Incorporated\r\n *\r\n * This source code is licensed under the FrontPanel license.\r\n * See the LICENSE file found in the root directory of this project.\r\n */\r\n\r\n.okDigitEntry {\r\n /* Layout */\r\n display: inline-flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n gap: 1px;\r\n\r\n /* Content Style */\r\n .okDigitEntryContent {\r\n /* Layout */\r\n display: flex;\r\n padding: var(--spacing-xxs, 2px);\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n\r\n /* Style */\r\n border-radius: 1px;\r\n\r\n /* Typography */\r\n color: var(--Dark, #343434);\r\n text-align: center;\r\n font-family: Monaco;\r\n font-size: var(--digit-font-size, 12px);\r\n font-style: normal;\r\n font-weight: 400;\r\n line-height: var(--digit-line-height, 12px); /* 200% */\r\n letter-spacing: 1.26px;\r\n text-transform: uppercase;\r\n }\r\n\r\n /* Increment Indicator Style */\r\n .okDigitEntryIncrementIndicator {\r\n visibility: hidden;\r\n }\r\n\r\n /* Decrement Indicator Style */\r\n .okDigitEntryDecrementIndicator {\r\n visibility: hidden;\r\n }\r\n\r\n /* Size 1 */\r\n &:where(.ok-r-size-1) {\r\n --digit-font-size: 12px;\r\n --digit-line-height: 12px;\r\n }\r\n\r\n /* Sizes 2 */\r\n &:where(.ok-r-size-2) {\r\n --digit-font-size: 14px;\r\n --digit-line-height: 14px;\r\n }\r\n\r\n /* Sizes 3 */\r\n &:where(.ok-r-size-3) {\r\n --digit-font-size: 20px;\r\n --digit-line-height: 20px;\r\n }\r\n}\r\n\r\ndiv.okDigitEntry:focus {\r\n /* Layout */\r\n display: inline-flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n gap: 1px;\r\n\r\n /* Style */\r\n outline: none;\r\n overscroll-behavior: none;\r\n\r\n /* Content Style */\r\n .okDigitEntryContent {\r\n /* Layout */\r\n display: flex;\r\n padding: var(--spacing-xxs, 2px);\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n\r\n /* Style */\r\n border-radius: 1px;\r\n background: var(--brand-12, #44bd84);\r\n\r\n /* Typography */\r\n color: var(--Light, #fff);\r\n text-align: center;\r\n font-family: Monaco;\r\n font-size: var(--digit-font-size, 12px);\r\n font-style: normal;\r\n font-weight: 400;\r\n line-height: var(--digit-line-height, 12px); /* 200% */\r\n letter-spacing: 1.26px;\r\n }\r\n\r\n .okDigitEntryIncrementIndicator {\r\n visibility: visible;\r\n }\r\n\r\n .okDigitEntryDecrementIndicator {\r\n visibility: visible;\r\n }\r\n\r\n .okDigitEntryIncrementIndicator[data-enabled="false"] {\r\n opacity: 0.25;\r\n }\r\n\r\n .okDigitEntryDecrementIndicator[data-enabled="false"] {\r\n opacity: 0.25;\r\n }\r\n}\r\n');const P=n=>{const r=e.useRef(null),{className:a,variant:i="standard",size:o=1,value:l,maximum:s,minimum:c,numeralSystem:d=exports.NumeralSystem.Decimal,onValueChanged:f}=n,u=e.useRef(l);u.current=n.value;const p=e.useRef(f);p.current=f;e.useEffect((()=>{const e=e=>{e.deltaY<0?(p.current?.(u.current+1,!1),e.stopPropagation(),e.preventDefault()):e.deltaY>0&&(p.current?.(u.current-1,!1),e.stopPropagation(),e.preventDefault())};return r.current?.addEventListener("wheel",e,{passive:!1}),()=>{r.current?.removeEventListener("wheel",e)}}),[r]);const g=null==s||l<s,m=null==c||l>c;return e.createElement("div",{className:t("okDigitEntry",a,"ok-r-size-"+o),ref:r,tabIndex:-1,onMouseEnter:e=>e.currentTarget.focus(),onMouseLeave:e=>e.currentTarget.blur(),onKeyDown:e=>{let n=!1;switch(e.key){case"ArrowUp":f?.(l+1,!1),n=!0;break;case"ArrowDown":f?.(l-1,!1),n=!0;break;case"ArrowRight":{const r=e.currentTarget.nextElementSibling;r?.focus(),n=!0}break;case"ArrowLeft":{const r=e.currentTarget.previousElementSibling;r?.focus(),n=!0}break;default:n=!1}if(n)e.stopPropagation(),e.preventDefault();else{const n=parseInt(e.key,d);if(!Number.isNaN(n)){f?.(n,!0);const r=e.currentTarget.nextElementSibling;r?.focus()}}}},e.createElement((()=>{let n;switch(i){case"standard":n=e.createElement(C,{className:t("okDigitEntryIncrementIndicator"),direction:N.Up,color:"#343434","data-enabled":g});break;case"compact":n=e.createElement(T,{className:t("okDigitEntryIncrementIndicator"),color:"#343434","data-enabled":g});break;default:n=null}return n}),null),e.createElement("div",{className:t("okDigitEntryContent","ok-r-size-"+o)},Math.abs(l).toString(Number(d))),e.createElement((()=>{let n;switch(i){case"standard":n=e.createElement(C,{className:t("okDigitEntryDecrementIndicator"),direction:N.Down,color:"#343434","data-enabled":m});break;case"compact":n=e.createElement(T,{className:t("okDigitEntryDecrementIndicator"),color:"#343434","data-enabled":m});break;default:n=null}return n}),null))};P.displayName="DigitEntry";const B=n=>{const{variant:r="standard",size:a=1,numeralSystem:i,decimalScale:o=0,digitStates:l,onDigitStatesChange:s}=n;return e.createElement(e.Fragment,null,(()=>{const n=l.map(((n,t)=>e.createElement(P,{key:"digit-"+n.id,variant:r,size:a,numeralSystem:i,value:n.value,maximum:n.maximum,minimum:n.minimum,onValueChanged:(e,n)=>{const r=[...l];r[t]={...l[t],value:e},s?.(r,n)}})));if(i===exports.NumeralSystem.Decimal&&o>0){const r=o-n.length;if(r<0)n.splice(o,0,e.createElement("span",{key:"digit-decimal-point",className:t("okNumberEntryText","ok-r-size-"+a)},"."));else{const i="0.",o=i.padEnd(i.length+r,"0");n.push(e.createElement("span",{key:"digit-decimal-prefix",className:t("okNumberEntryText","ok-r-size-"+a)},o))}}return n.reverse()})())};B.displayName="NumberEntryDigits";const V=e.forwardRef(((n,r)=>{const{label:t,tooltip:a,...i}=n,o=null!=t,l=null!=a;return o&&l?e.createElement(O,{...t},e.createElement(w,{content:a},e.createElement("div",{style:{width:"100%"}},e.createElement(F,{ref:r,...i})))):o?e.createElement(O,{...t},e.createElement("div",{style:{width:"100%"}},e.createElement(F,{ref:r,...i}))):l?e.createElement(w,{content:a},e.createElement("div",null,e.createElement(F,{ref:r,...i}))):e.createElement(F,{ref:r,...i})}));V.displayName="NumberEntry";const F=e.forwardRef(((n,r)=>{const{className:a,variant:i="standard",size:o=1,disabled:l=!1,numeralSystem:s=exports.NumeralSystem.Decimal,decimalScale:c=0,maximumValue:d,minimumValue:f,value:u,onValueChange:p}=n,g=e.useMemo((()=>{const e=m.ComputeDigitCountFromValue(d,s),n=m.ComputeDigitCountFromValue(f,s);return Number(e>n?e:n)}),[d,f,s]),h=BigInt(s),y=j(u,d,f,h,g);return e.createElement("div",{ref:r,className:t("okNumberEntry",a,"ok-r-size-"+o),"data-disabled":l||void 0},e.createElement("div",{className:"okNumberEntryContent"},u<0n&&(n=>e.createElement("span",{className:t("okNumberEntryText","ok-r-size-"+n)},"-"))(o),e.createElement(B,{variant:i,size:o,numeralSystem:s,decimalScale:c,digitStates:y,onDigitStatesChange:(e,n)=>{let r=M(e,h);r>=0n!=u>=0n&&0n!==r&&(r+=2n*-u),r<=d&&r>=f&&p?.(r)}})))}));F.displayName="NumberEntryImpl";const M=(e,n)=>{const r=e.length-1;let t=BigInt(e[r].value);for(let a=r-1;a>=0;a--)t=t*n+BigInt(e[a].value);return t},j=(e,n,r,t,a)=>{const i=[];let o=e,l=n-e,s=r-e;for(let e=0;e<a;e++){const n=Number(o%t),r=Math.floor(Number(l+BigInt(n))),a=Math.ceil(Number(s+BigInt(n)));i[e]={id:e,value:n,maximum:G(r,Number(t)),minimum:G(a,Number(t))},o/=t,l/=t,s/=t}return i},G=(e,n)=>{let r;return r=e>=0?e<n?e:void 0:e>-n?e:void 0,r};b('/**\r\n * Copyright (c) 2024 Opal Kelly Incorporated\r\n *\r\n * This source code is licensed under the FrontPanel license.\r\n * See the LICENSE file found in the root directory of this project.\r\n */\r\n\r\n.okRangeSlider {\r\n --range-slider-thumb-outline-size: 2px;\r\n --range-slider-thumb-border-size: 2px;\r\n --range-slider-thumb-size: 22px;\r\n --range-slider-track-size: 8px;\r\n\r\n /* Layout */\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n gap: 4px;\r\n align-self: stretch;\r\n width: 100%;\r\n height: fit-content;\r\n\r\n /* Typography */\r\n color: var(--Dark, #343434);\r\n text-align: right;\r\n font-family: Inter, "Nunito Sans", sans-serif, ui-sans-serif;\r\n font-size: 12px;\r\n font-style: normal;\r\n font-weight: 400;\r\n line-height: 12px; /* 100% */\r\n}\r\n\r\n/* State Disabled */\r\n.okRangeSlider[data-disabled="true"] {\r\n opacity: 0.5;\r\n}\r\n\r\n.okRangeSliderLabel {\r\n width: 100%;\r\n}\r\n\r\n.okRangeSliderRoot {\r\n /* Layout */\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n width: 100%;\r\n height: var(--range-slider-thumb-size);\r\n min-width: 100px;\r\n\r\n /* Style */\r\n user-select: none;\r\n touch-action: none;\r\n}\r\n\r\n.okRangeSliderTrack {\r\n /* Layout */\r\n position: relative;\r\n flex-grow: 1;\r\n height: var(--range-slider-track-size);\r\n\r\n /* Style */\r\n background: var(--Gray-2, #d0d7df);\r\n border-radius: 9999px;\r\n}\r\n\r\n.okRangeSliderRange {\r\n /* Layout */\r\n position: absolute;\r\n height: 100%;\r\n\r\n /* Style */\r\n background-color: #44bd84;\r\n border-radius: inherit;\r\n}\r\n\r\n.okRangeSliderThumb {\r\n /* Layout */\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n width: calc(\r\n var(--range-slider-thumb-size) -\r\n (2 * (var(--range-slider-thumb-border-size) + var(--range-slider-thumb-outline-size)))\r\n );\r\n height: calc(\r\n var(--range-slider-thumb-size) -\r\n (2 * (var(--range-slider-thumb-border-size) + var(--range-slider-thumb-outline-size)))\r\n );\r\n\r\n /* Style */\r\n background: var(--Base-White, #fff);\r\n border: var(--range-slider-thumb-border-size) solid var(--brand-12, #44bd84);\r\n border-radius: var(--range-slider-thumb-size);\r\n}\r\n\r\n.okRangeSliderThumb:hover {\r\n background-color: #44bd84;\r\n}\r\n\r\n.okRangeSliderThumb:focus {\r\n outline: none;\r\n box-shadow: 0 0 0 var(--range-slider-thumb-outline-size) #d0d7df;\r\n}\r\n\r\n.okRangeSliderThumbLabel {\r\n /* Layout */\r\n position: absolute;\r\n bottom: -14px;\r\n}\r\n');const W=e.forwardRef(((n,r)=>{const{label:t,tooltip:a,...i}=n,o=null!=t,l=null!=a;return o&&l?e.createElement(O,{className:"okRangeSliderLabel",...t},e.createElement(w,{content:a},e.createElement("div",{style:{width:"100%"}},e.createElement(_,{ref:r,...i})))):o?e.createElement(O,{className:"okRangeSliderLabel",...t},e.createElement("div",{style:{width:"100%"}},e.createElement(_,{ref:r,...i}))):l?e.createElement(w,{content:a},e.createElement("div",{style:{width:"100%"}},e.createElement(_,{ref:r,...i}))):e.createElement(_,{ref:r,...i})}));W.displayName="RangeSlider";const _=e.forwardRef(((n,r)=>{const{className:a,tooltip:i,minimumValue:o=0,maximumValue:l=100,onValueChange:s,defaultValue:c=o,value:d,valueStep:f=1,showThumbLabel:p=!0,showTrackLabels:g=!0,disabled:m=!1}=n,h=d??c,[y,x]=e.useState([h]);e.useEffect((()=>{x([h])}),[h]);const b=e.useCallback((e=>{x([e]),s?.(e)}),[s]),S=()=>e.createElement(u.Track,{className:"okRangeSliderTrack"},e.createElement(u.Range,{className:"okRangeSliderRange"})),E=null!=i;return e.createElement("div",{className:t("okRangeSlider",a),"data-disabled":m||void 0},g?e.createElement("span",null,o):null,e.createElement(u.Root,{ref:r,min:o,max:l,step:f,value:y,onValueChange:e=>b(e[0]),orientation:"horizontal",className:"okRangeSliderRoot",disabled:m},E?e.createElement(w,{content:i},e.createElement(S,null)):e.createElement(S,null),e.createElement(u.Thumb,{className:"okRangeSliderThumb"},p?e.createElement("div",{className:"okRangeSliderThumbLabel"},y):null)),g?e.createElement("span",null,l):null)}));_.displayName="RangeSliderImpl";const U=e.createContext({label:{text:"",horizontalPosition:"right",verticalPosition:"top"},size:1,value:void 0}),K=n=>{const{label:r,children:t,size:a=1,tooltip:i,value:o,...l}=n;return e.createElement(p.Root,{value:o,...l},e.createElement(U.Provider,{value:e.useMemo((()=>({label:r,size:a,tooltip:i,value:o})),[r,a,i,o])},t))};K.displayName="SelectEntryRoot";b('/**\r\n * Copyright (c) 2024 Opal Kelly Incorporated\r\n *\r\n * This source code is licensed under the FrontPanel license.\r\n * See the LICENSE file found in the root directory of this project.\r\n */\r\n\r\n.okSelectEntryContent {\r\n /* Layout */\r\n width: var(--radix-select-trigger-width);\r\n max-height: var(--radix-select-content-available-height);\r\n display: flex;\r\n padding: 10px 18px;\r\n flex-direction: column;\r\n overflow: hidden;\r\n justify-content: center;\r\n align-items: stretch;\r\n\r\n /* Style */\r\n border-radius: 4px;\r\n border: 1px solid var(--Gray-2, #d0d7df);\r\n background: var(--Light, #fff);\r\n box-shadow: 0px 1px 4px 0px rgba(0, 0, 0, 0.24);\r\n\r\n .okSelectEntryContentInner {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 10px;\r\n }\r\n\r\n /* ScrollArea Root Style */\r\n .okScrollArea {\r\n display: flex;\r\n flex-direction: column;\r\n overflow: hidden;\r\n width: 100%;\r\n height: 100%;\r\n }\r\n\r\n /* ScrollArea Viewport Style */\r\n .okScrollAreaViewport {\r\n display: flex;\r\n flex-direction: column;\r\n width: 100%;\r\n height: 100%;\r\n gap: 10px;\r\n\r\n /* Stop Chrome back/forward two-finger swipe */\r\n overscroll-behavior-x: contain;\r\n\r\n &:where(:focus-visible) + :where(.rt-ScrollAreaViewportFocusRing) {\r\n position: absolute;\r\n inset: 0;\r\n pointer-events: none;\r\n outline: 2px solid var(--focus-8);\r\n outline-offset: -2px;\r\n }\r\n }\r\n\r\n /* ScrollArea Scrollbar Style */\r\n .okScrollAreaScrollbar {\r\n display: flex;\r\n /* Ensures no selection */\r\n user-select: none;\r\n /* Disable browser handling of all panning and zooming gestures on touch devices */\r\n touch-action: none;\r\n\r\n &:where([data-orientation="vertical"]) {\r\n flex-direction: column;\r\n width: 4px;\r\n }\r\n &:where([data-orientation="horizontal"]) {\r\n flex-direction: row;\r\n height: 4px;\r\n }\r\n }\r\n\r\n /* ScrollArea Thumb Style */\r\n .okScrollAreaThumb {\r\n position: relative;\r\n\r\n &::before {\r\n content: "";\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n width: 100%;\r\n height: 100%;\r\n min-width: var(--space-4);\r\n min-height: var(--space-4);\r\n }\r\n }\r\n}\r\n');const Q=e.forwardRef(((n,r)=>{const{className:a,children:i,container:o,...l}=n,{size:s}=e.useContext(U);return e.createElement(p.Portal,{container:o},e.createElement(p.Content,{sideOffset:4,...l,ref:r,className:t("okSelectEntryContent",a,"ok-r-size-"+s),position:"popper",align:"start"},e.createElement(g.Root,{type:"auto",className:"okScrollArea"},e.createElement(p.Viewport,{asChild:!0},e.createElement(g.Viewport,{className:"okScrollAreaViewport"},e.createElement("div",{className:"okSelectEntryContentInner"},i))),e.createElement(g.Scrollbar,{className:"okScrollAreaScrollbar",orientation:"vertical"},e.createElement(g.Thumb,{className:"okScrollAreaThumb"})))))}));Q.displayName="SelectEntryContent";b("/**\r\n * Copyright (c) 2024 Opal Kelly Incorporated\r\n *\r\n * This source code is licensed under the FrontPanel license.\r\n * See the LICENSE file found in the root directory of this project.\r\n */\r\n\r\n.okSelectEntryGroup {\r\n /* Layout */\r\n display: flex;\r\n padding: 0px;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: flex-start;\r\n align-self: stretch;\r\n gap: 10px;\r\n}\r\n");const X=e.forwardRef(((n,r)=>e.createElement(p.Group,{...n,ref:r,className:t("okSelectEntryGroup",n.className)})));X.displayName="SelectEntryGroup";b('/**\r\n * Copyright (c) 2024 Opal Kelly Incorporated\r\n *\r\n * This source code is licensed under the FrontPanel license.\r\n * See the LICENSE file found in the root directory of this project.\r\n */\r\n\r\n.okSelectEntryItem {\r\n /* Layout */\r\n display: flex;\r\n align-items: center;\r\n gap: 4px;\r\n\r\n /* Style */\r\n color: var(--Dark, #343434);\r\n font-family: Inter, "Nunito Sans", sans-serif, ui-sans-serif;\r\n font-size: 14px;\r\n font-style: normal;\r\n font-weight: 400;\r\n line-height: 14px; /* 100% */\r\n\r\n /* Indicator Style */\r\n .okSelectEntryItemIndicator {\r\n width: 14px;\r\n height: 14px;\r\n }\r\n}\r\n\r\n.okSelectEntryItem[data-disabled] {\r\n opacity: 0.5;\r\n pointer-events: none;\r\n}\r\n.okSelectEntryItem[data-highlighted] {\r\n outline: none;\r\n}\r\n');const Y=e.forwardRef(((n,r)=>{const{className:a,children:i,...o}=n,{size:l,value:s}=e.useContext(U);return e.createElement(p.Item,{...o,ref:r,className:t("okSelectEntryItem",a,"ok-r-size-"+l)},e.createElement(D,{state:s===n.value?exports.ToggleState.On:exports.ToggleState.Off}),e.createElement(p.ItemText,null,i))}));Y.displayName="SelectEntryItem";b('/**\r\n * Copyright (c) 2024 Opal Kelly Incorporated\r\n *\r\n * This source code is licensed under the FrontPanel license.\r\n * See the LICENSE file found in the root directory of this project.\r\n */\r\n\r\n.okSelectEntryLabel {\r\n /* Typography */\r\n color: var(--Gray-1, #989da3);\r\n font-family: Inter, "Nunito Sans", sans-serif, ui-sans-serif;\r\n font-size: 10px;\r\n font-style: normal;\r\n font-weight: 300;\r\n line-height: 12px; /* 120% */\r\n}\r\n');const Z=e.forwardRef(((n,r)=>{const{className:a,...i}=n,{size:o}=e.useContext(U);return e.createElement(p.Label,{...i,ref:r,className:t("okSelectEntryLabel",a,"ok-r-size-"+o)})}));Z.displayName="SelectEntryLabel";b("/**\r\n * Copyright (c) 2024 Opal Kelly Incorporated\r\n *\r\n * This source code is licensed under the FrontPanel license.\r\n * See the LICENSE file found in the root directory of this project.\r\n */\r\n\r\n.okSelectEntrySeparator {\r\n height: 1px;\r\n\r\n background: #d0d7df;\r\n}\r\n");const q=e.forwardRef(((n,r)=>e.createElement(p.Separator,{...n,ref:r,className:t("okSelectEntrySeparator",n.className)})));q.displayName="SelectEntrySeparator";b('/**\r\n * Copyright (c) 2024 Opal Kelly Incorporated\r\n *\r\n * This source code is licensed under the FrontPanel license.\r\n * See the LICENSE file found in the root directory of this project.\r\n */\r\n\r\n.okSelectEntryTrigger {\r\n /* Layout */\r\n display: flex;\r\n padding: 0px 18px;\r\n justify-content: space-between;\r\n align-items: center;\r\n gap: 8px;\r\n\r\n /* Style */\r\n border-radius: 4px;\r\n border: 1px solid var(--Gray-2, #d0d7df);\r\n background: var(--Light, #fff);\r\n\r\n /* Typography */\r\n color: var(--Dark, #343434);\r\n font-family: Inter, "Nunito Sans", sans-serif, ui-sans-serif;\r\n font-size: 14px;\r\n font-style: normal;\r\n font-weight: 400;\r\n line-height: 14px; /* 100% */\r\n\r\n /* State Disabled */\r\n &:is(:disabled) {\r\n opacity: 0.5;\r\n background: var(--Gray-3, #e7ebef);\r\n }\r\n}\r\n\r\n.okSelectEntryTriggerInner {\r\n /* Layout */\r\n padding: 10px 0px;\r\n\r\n /* Style */\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n}\r\n\r\n/* State Disabled */\r\n.okSelectEntryTrigger[data-disabled="true"] {\r\n opacity: 0.5;\r\n}\r\n');const H=e.forwardRef(((n,r)=>{const{label:t,tooltip:a,...i}=e.useContext(U),o=null!=t,l=null!=a;return o&&l?e.createElement(O,{...t},e.createElement(w,{content:a},e.createElement(J,{ref:r,...n,style:{width:"100%"}}))):o?e.createElement(O,{...t},e.createElement(J,{ref:r,...i,style:{width:"100%"}})):l?e.createElement(w,{content:a},e.createElement("div",null,e.createElement(J,{ref:r,...i}))):e.createElement(J,{ref:r,...i})}));H.displayName="SelectEntryTrigger";const J=e.forwardRef(((n,r)=>{const{className:a,placeholder:i,...o}=n,{size:l}=e.useContext(U);return e.createElement(p.Trigger,{asChild:!0},e.createElement("button",{...o,ref:r,className:t("okSelectEntryTrigger",a,"ok-r-size-"+l)},e.createElement("span",{className:"okSelectEntryTriggerInner"},e.createElement(p.Value,{placeholder:i})),e.createElement(p.Icon,{asChild:!0},e.createElement(I,{direction:v.Down}))))}));J.displayName="SelectEntryTriggerImpl";const $=Object.assign({},{Root:K,Trigger:H,Content:Q,Item:Y,Group:X,Label:Z,Separator:q});b('/**\r\n * Copyright (c) 2024 Opal Kelly Incorporated\r\n *\r\n * This source code is licensed under the FrontPanel license.\r\n * See the LICENSE file found in the root directory of this project.\r\n */\r\n\r\n.okToggle {\r\n /* Layout */\r\n display: inline-flex;\r\n padding: var(--toggle-padding, 6px 12px);\r\n justify-content: center;\r\n align-items: center;\r\n gap: 4px;\r\n\r\n color: var(--base-white, #fff);\r\n\r\n /* Style */\r\n border-width: 0px;\r\n border-radius: 4px;\r\n background: var(--brand-12, #44bd84);\r\n\r\n /* Typography */\r\n color: var(--Base-White, #fff);\r\n text-align: center;\r\n font-family: Inter, "Nunito Sans", sans-serif, ui-sans-serif;\r\n font-size: var(--toggle-font-size, 12px);\r\n font-style: normal;\r\n font-weight: 600;\r\n line-height: 12px; /* 100% */\r\n\r\n /* Size 1 */\r\n &:where(.ok-r-size-1) {\r\n --toggle-padding: 6px 12px;\r\n --toggle-font-size: 12px;\r\n --toggle-line-height: 12px;\r\n }\r\n\r\n /* Size 2 */\r\n &:where(.ok-r-size-2) {\r\n --toggle-padding: 10px 18px;\r\n --toggle-font-size: 14px;\r\n --toggle-line-height: 14px;\r\n }\r\n\r\n /* Size 3 */\r\n &:where(.ok-r-size-3) {\r\n --toggle-padding: 18px 22px;\r\n --toggle-font-size: 20px;\r\n --toggle-line-height: 20px;\r\n }\r\n}\r\n\r\n/* State Disabled */\r\n.okToggle[data-disabled="true"] {\r\n background: var(--Gray-2, #d0d7df);\r\n}\r\n\r\n/* State On */\r\n.okToggle[data-state="on"]:not([data-disabled="true"]) {\r\n background: #329466;\r\n}\r\n\r\n/* State Off */\r\n.okToggle[data-state="off"]:not([data-disabled="true"]) {\r\n background: var(--brand-12, #44bd84);\r\n}\r\n');const ee=e.forwardRef(((n,r)=>{const{className:a,size:i=1,disabled:o=!1,tooltip:l,state:s,children:c,onToggleStateChanged:d,...f}=n,u=e.useMemo((()=>{switch(s){case exports.ToggleState.On:return"on";case exports.ToggleState.Off:return"off";default:return"indeterminate"}}),[s]),p=e.useCallback((()=>{const e=s===exports.ToggleState.On?exports.ToggleState.Off:exports.ToggleState.On;d?.(e)}),[s]);return e.createElement("button",{"data-disabled":o||void 0,ref:r,...f,className:t("okToggle",a,"ok-r-size-"+i),"data-state":u,onClick:p},c)}));ee.displayName="Toggle";b('/**\r\n * Copyright (c) 2024 Opal Kelly Incorporated\r\n *\r\n * This source code is licensed under the FrontPanel license.\r\n * See the LICENSE file found in the root directory of this project.\r\n */\r\n\r\n.okToggleSwitchRoot {\r\n /* Layout */\r\n display: inline-flex;\r\n justify-content: center;\r\n align-items: center;\r\n gap: 4px;\r\n\r\n /* Style */\r\n border-radius: 4px;\r\n\r\n /* Switch Style */\r\n .okToggleSwitch {\r\n /* Layout */\r\n display: flex;\r\n width: var(--toggle-switch-width, 16.5px);\r\n height: var(--toggle-switch-height, 9px);\r\n padding: var(--toggle-switch-padding, 0.75px);\r\n align-items: center;\r\n\r\n /* Style */\r\n border-width: 0px;\r\n border-radius: var(--toggle-switch-border-radius, 4.5px);\r\n background: var(--Gray-2, #d0d7df);\r\n\r\n /* Switch Icon Style */\r\n .okIndicatorIcon {\r\n width: var(--toggle-switch-icon-width, 9px);\r\n height: var(--toggle-switch-icon-height, 9px);\r\n }\r\n }\r\n\r\n /* Label Style */\r\n .okToggleSwitchLabel {\r\n /* Typography */\r\n color: var(--Dark, #343434);\r\n text-align: center;\r\n font-family: Inter, "Nunito Sans", sans-serif, ui-sans-serif;\r\n font-size: var(--toggle-switch-font-size, 12px);\r\n font-style: normal;\r\n font-weight: 500;\r\n line-height: var(--toggle-switch-line-height, 12px); /* 100% */\r\n }\r\n\r\n /* Size 1 */\r\n &:where(.ok-r-size-1) {\r\n --toggle-switch-width: 16.5px;\r\n --toggle-switch-height: 9px;\r\n\r\n --toggle-switch-padding: 0.75px;\r\n --toggle-switch-border-radius: 4.5px;\r\n\r\n --toggle-switch-font-size: 12px;\r\n --toggle-switch-line-height: 12px;\r\n\r\n --toggle-switch-icon-width: 7.5px;\r\n --toggle-switch-icon-height: 7.5px;\r\n }\r\n\r\n /* Sizes 2*/\r\n &:where(.ok-r-size-2) {\r\n --toggle-switch-width: 18.333px;\r\n --toggle-switch-height: 10px;\r\n\r\n --toggle-switch-padding: 0.883px;\r\n --toggle-switch-border-radius: 5px;\r\n\r\n --toggle-switch-font-size: 14px;\r\n --toggle-switch-line-height: 14px;\r\n\r\n --toggle-switch-icon-width: 8.33px;\r\n --toggle-switch-icon-height: 8.33px;\r\n }\r\n\r\n /* Sizes 3*/\r\n &:where(.ok-r-size-3) {\r\n --toggle-switch-width: 27.5px;\r\n --toggle-switch-height: 15px;\r\n\r\n --toggle-switch-padding: 1.25px;\r\n --toggle-switch-border-radius: 7.5px;\r\n\r\n --toggle-switch-font-size: 20px;\r\n --toggle-switch-line-height: 20px;\r\n\r\n --toggle-switch-icon-width: 12.5px;\r\n --toggle-switch-icon-height: 12.5px;\r\n }\r\n}\r\n\r\n/* State Disabled */\r\n.okToggleSwitchRoot[data-disabled="true"] {\r\n opacity: 0.5;\r\n}\r\n\r\n/* State On */\r\n.okToggleSwitch[data-state="on"] {\r\n justify-content: flex-end;\r\n}\r\n\r\n.okToggleSwitch[data-state="on"]:not([data-disabled="true"]) {\r\n background: var(--brand-12, #44bd84);\r\n}\r\n\r\n/* State Off */\r\n.okToggleSwitch[data-state="off"] {\r\n justify-content: flex-start;\r\n}\r\n\r\n.okToggleSwitch[data-state="off"]:not([data-disabled="true"]) {\r\n background: var(--Gray-2, #d0d7df);\r\n}\r\n');const ne=e.forwardRef(((n,r)=>{const{className:a,size:i=1,label:o,disabled:l=!1,state:s,...c}=n,d=E(e.createElement("span",{className:t("okToggleSwitchRoot",a,"ok-r-size-"+i),"data-disabled":l||void 0},e.createElement(ee,{className:t("okToggleSwitch"),ref:r,...c,size:i,disabled:l,state:s},e.createElement(L,{className:"okIndicatorIcon",state:s})),e.createElement("span",{className:t("okToggleSwitchLabel")},o)));return e.createElement(d,{...n})}));ne.displayName="ToggleSwitch";const re=e.forwardRef(((r,t)=>{const[a,i]=e.useState(r.minimumValue??0n),{device:o,workQueue:l}=e.useContext(y),{maximumValue:s,minimumValue:c,fpEndpoint:d,...f}=r,u=e.useMemo((()=>void 0!==c?function(e,n,r){let t;t=e<r?r:e>n?n:e;return t}(c,s,0n):0n),[c,s]),p=e.useMemo((()=>h(s)),[s]),g=(1n<<BigInt(p))-1n<<BigInt(d.bitOffset),m=e.useCallback((async e=>{await l.Post((async()=>{let r=await e.getWireInValue(d.epAddress),t=0xffffffffn&g,a=(BigInt(r)&t)>>BigInt(d.bitOffset);if(g>0xffffffffn){let i=32n-BigInt(d.bitOffset),o=g>>32n;for(let l=d.epAddress+1;l<=n.WIREIN_ADDRESS_RANGE.Maximum&&o>0n;l++)r=await e.getWireInValue(l),t=0xffffffffn&o,a|=(BigInt(r)&t)<<i,i+=32n,o>>=32n}i(a)}))}),[d,g]);e.useEffect((()=>{m(o)}),[o,m]);const x=e.useCallback((async e=>{await l.Post((async()=>{let r=0xffffffffn&g,t=Number(e<<BigInt(d.bitOffset)&r);if(await o.setWireInValue(d.epAddress,t,Number(r)),g>0xffffffffn){let a=32n-BigInt(d.bitOffset),i=g>>32n;for(let l=d.epAddress+1;l<=n.WIREIN_ADDRESS_RANGE.Maximum&&i>0n;l++)r=0xffffffffn&i,t=Number(e>>a&r),await o.setWireInValue(l,t,Number(r)),a+=32n,i>>=32n}await o.updateWireIns()})),m(o)}),[o,l,d,g,m]);return e.createElement(V,{...f,ref:t,maximumValue:s,minimumValue:u,value:a,onValueChange:x})}));re.displayName="FrontPanelNumberEntry";b("");const te=e.forwardRef(((r,t)=>{const[a,i]=e.useState(0n),{device:o,workQueue:l,eventSource:s}=e.useContext(y),{maximumValue:c,fpEndpoint:d,...f}=r,u=e.useMemo((()=>h(c)),[c]),p=(1n<<BigInt(u))-1n<<BigInt(d.bitOffset),g=e.useCallback((async e=>{await l.Post((async()=>{let r=await e.getWireOutValue(d.epAddress),t=0xffffffffn&p,a=(BigInt(r)&t)>>BigInt(d.bitOffset);if(p>0xffffffffn){let i=32n-BigInt(d.bitOffset),o=p>>32n;for(let l=d.epAddress+1;l<=n.WIREOUT_ADDRESS_RANGE.Maximum&&o>0n;l++)r=await e.getWireOutValue(l),t=0xffffffffn&o,a|=(BigInt(r)&t)<<i,i+=32n,o>>=32n}i(a)}))}),[d,p]);return e.useEffect((()=>{g(o);const e=s?.WireOutValuesChangedEvent.SubscribeAsync(g);return()=>{e?.Cancel()}}),[o,s,g]),e.createElement(A,{...f,ref:t,maximumValue:c,minimumValue:0n,value:a})}));te.displayName="FrontPanelNumberDisplay";const ae=e.forwardRef(((n,r)=>{const[t,a]=e.useState(!1),{device:i,workQueue:o,eventSource:l}=e.useContext(y),{fpEndpoint:s,...c}=n,d=1<<s.bitOffset,f=e.useCallback((async e=>{await o.Post((async()=>{const n=await e.getWireOutValue(s.epAddress);a((n&d)===d)}))}),[s,d]);return e.useEffect((()=>{f(i);const e=l?.WireOutValuesChangedEvent.SubscribeAsync(f);return()=>{e?.Cancel()}}),[i,l,f]),e.createElement(R,{...c,ref:r,state:t})}));ae.displayName="FrontPanelIndicator";const ie=e.forwardRef(((n,r)=>{const{device:t,workQueue:a}=e.useContext(y),{fpEndpoint:i,...o}=n,l=1<<i.bitOffset,s=e.useCallback((async()=>{await a.Post((async()=>{await t.setWireInValue(i.epAddress,0,l),await t.updateWireIns()}))}),[t,i,l,a]),c=e.useCallback((async()=>{await a.Post((async()=>{await t.setWireInValue(i.epAddress,4294967295,l),await t.updateWireIns()}))}),[t,i,l,a]);return e.createElement(k,{...o,ref:r,onButtonUp:s,onButtonDown:c})}));ie.displayName="FrontPanelPushButton";const oe=e.forwardRef(((n,r)=>{const[t,a]=e.useState(exports.ToggleState.Off),{device:i,workQueue:o}=e.useContext(y),{fpEndpoint:l,...s}=n,c=1<<l.bitOffset,d=e.useCallback((async e=>{await o.Post((async()=>{const n=(await e.getWireInValue(l.epAddress)&c)===c?exports.ToggleState.On:exports.ToggleState.Off;a(n)}))}),[l,c]),f=e.useCallback((async e=>{await o.Post((async()=>{const n=e===exports.ToggleState.On?4294967295:0;await i.setWireInValue(l.epAddress,n,c),await i.updateWireIns()})),d(i)}),[i,l,c,o]);return e.useEffect((()=>{d(i)}),[i,d]),e.createElement(ne,{ref:r,...s,state:t,onToggleStateChanged:f})}));oe.displayName="FrontPanelToggleSwitch";b("");const le=e.forwardRef(((n,r)=>{const{device:t,workQueue:a}=e.useContext(y),{fpEndpoint:i,...o}=n,l=e.useCallback((async()=>{await a.Post((async()=>{await t.activateTriggerIn(i.epAddress,i.bitOffset)}))}),[t,i]);return e.createElement(k,{...o,ref:r,onButtonDown:l})}));le.displayName="FrontPanelTriggerButton";const se=e.forwardRef(((n,r)=>{const[t,a]=e.useState(0n),{device:i,workQueue:o}=e.useContext(y),{fpEndpoint:l,maximumValue:s,...c}=n,d=e.useMemo((()=>h(BigInt(s))),[s]),f=(1n<<BigInt(d))-1n<<BigInt(l.bitOffset),u=e.useCallback((async e=>{await o.Post((async()=>{const n=await e.getWireInValue(l.epAddress),r=(BigInt(n)&f)>>BigInt(l.bitOffset);a(r)}))}),[l,f]),p=e.useCallback((e=>{o.Post((async()=>{await i.setWireInValue(l.epAddress,e<<l.bitOffset,Number(f)),await i.updateWireIns()}))}),[i,l,o,f]);return e.useEffect((()=>{u(i)}),[i,u]),e.createElement(W,{...c,ref:r,defaultValue:Number(t),maximumValue:s,onValueChange:p})}));se.displayName="FrontPanelRangeSlider";const ce=r=>{const[t,a]=e.useState(0n),{device:i,workQueue:o}=e.useContext(y),{fpEndpoint:l,maximumValue:s,...c}=r,d=e.useMemo((()=>h(s)),[s]),f=(1n<<BigInt(d))-1n<<BigInt(l.bitOffset),u=e.useCallback((async e=>{await o.Post((async()=>{let r=await e.getWireInValue(l.epAddress),t=0xffffffffn&f,i=(BigInt(r)&t)>>BigInt(l.bitOffset);if(f>0xffffffffn){let a=32n-BigInt(l.bitOffset),o=f>>32n;for(let s=l.epAddress+1;s<=n.WIREIN_ADDRESS_RANGE.Maximum&&o>0n;s++)r=await e.getWireInValue(s),t=0xffffffffn&o,i|=(BigInt(r)&t)<<a,a+=32n,o>>=32n}a(i)}))}),[l,f]),p=e.useCallback((e=>{const n=BigInt(e);o.Post((async()=>{let e=0xffffffffn&f,r=Number(n<<BigInt(l.bitOffset)&e);if(await i.setWireInValue(l.epAddress,r,Number(e)),f>0xffffffffn){let t=32n-BigInt(l.bitOffset),a=f>>32n;const o=32-l.epAddress;for(let s=1;s<o&&a>0n;s++)e=0xffffffffn&a,r=Number(n>>t&e),await i.setWireInValue(l.epAddress+s,r,Number(e)),t+=32n,a>>=32n}await i.updateWireIns()})),u(i)}),[i,l,o,u]);return e.useEffect((()=>{u(i)}),[i,u]),e.createElement($.Root,{...c,value:t.toString(),onValueChange:p})};ce.displayName="FrontPanelSelectEntryRoot";const de=Object.assign({},{Root:ce,Trigger:H,Content:Q,Item:Y,Group:X,Label:Z,Separator:q});exports.Application=S,exports.Button=k,exports.CalculateBitLength=h,exports.FrontPanel=x,exports.FrontPanelContext=y,exports.FrontPanelIndicator=ae,exports.FrontPanelNumberDisplay=te,exports.FrontPanelNumberEntry=re,exports.FrontPanelPushButton=ie,exports.FrontPanelRangeSlider=se,exports.FrontPanelSelectEntry=de,exports.FrontPanelSelectEntryRoot=ce,exports.FrontPanelToggleSwitch=oe,exports.FrontPanelTriggerButton=le,exports.Indicator=R,exports.Label=O,exports.NumberDisplay=A,exports.NumberEntry=V,exports.NumericDigits=m,exports.RangeSlider=W,exports.SelectEntry=$,exports.SelectEntryContent=Q,exports.SelectEntryGroup=X,exports.SelectEntryItem=Y,exports.SelectEntryLabel=Z,exports.SelectEntryRoot=K,exports.SelectEntrySeparator=q,exports.SelectEntryTrigger=H,exports.Toggle=ee,exports.ToggleSwitch=ne,exports.Tooltip=w;
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/core/Types.ts","../../src/core/Numeric.ts","../../src/core/Binary.ts","../../src/contexts/FrontPanelContext.ts","../../src/components/FrontPanel/FrontPanel.tsx","../../node_modules/style-inject/dist/style-inject.es.js","../../src/primitives/Application/Application.tsx","../../src/primitives/Tooltip/Tooltip.tsx","../../src/primitives/TooltipUtility.tsx","../../src/primitives/Button/Button.tsx","../../src/components/Icons/ChevronIcon.tsx","../../src/components/Icons/IndicatorArrowIcon.tsx","../../src/components/Icons/IndicatorBarIcon.tsx","../../src/components/Icons/IndicatorStateIcon.tsx","../../src/components/Icons/RadioToggleStateIcon.tsx","../../src/components/Icons/SwitchToggleStateIcon.tsx","../../src/primitives/Indicator/Indicator.tsx","../../src/primitives/Label/Label.tsx","../../src/primitives/NumberDisplay/NumberDisplay.tsx","../../src/primitives/DigitEntry/DigitEntry.tsx","../../src/primitives/NumberEntry/NumberEntryDigits.tsx","../../src/primitives/NumberEntry/NumberEntry.tsx","../../src/primitives/RangeSlider/RangeSlider.tsx","../../src/primitives/SelectEntry/SelectEntryRoot.tsx","../../src/primitives/SelectEntry/SelectEntryContent.tsx","../../src/primitives/SelectEntry/SelectEntryGroup.tsx","../../src/primitives/SelectEntry/SelectEntryItem.tsx","../../src/primitives/SelectEntry/SelectEntryLabel.tsx","../../src/primitives/SelectEntry/SelectEntrySeparator.tsx","../../src/primitives/SelectEntry/SelectEntryTrigger.tsx","../../src/primitives/SelectEntry/SelectEntry.tsx","../../src/primitives/Toggle/Toggle.tsx","../../src/primitives/ToggleSwitch/ToggleSwitch.tsx","../../src/components/FrontPanelNumberEntry/FrontPanelNumberEntry.tsx","../../src/components/FrontPanelNumberDisplay/FrontPanelNumberDisplay.tsx","../../src/components/FrontPanelIndicator/FrontPanelIndicator.tsx","../../src/components/FrontPanelPushButton/FrontPanelPushButton.tsx","../../src/components/FrontPanelToggleSwitch/FrontPanelToggleSwitch.tsx","../../src/components/FrontPanelTriggerButton/FrontPanelTriggerButton.tsx","../../src/components/FrontPanelRangeSlider/FrontPanelRangeSlider.tsx","../../src/components/FrontPanelSelectEntry/FrontPanelSelectEntryRoot.tsx","../../src/components/FrontPanelSelectEntry/FrontPanelSelectEntry.tsx"],"sourcesContent":[null,null,null,null,null,"function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["NumeralSystem","ToggleState","NumericDigits","DigitCount","this","_DigitCount","_NumeralSystem","DigitChars","_DigitChars","constructor","digitCount","numeralSystem","GetDigitChars","GetDigitFromValue","value","targetDigitValue","toString","numeral","retval","Binary","BINARY_DIGITVALUES","Octal","OCTAL_DIGITVALUES","Decimal","DECIMAL_DIGITVALUES","Hexadecimal","HEXADECIMAL_DIGITVALUES","ComputeDigitCountFromBits","bitcount","maxValue","BigInt","ComputeDigitCountFromValue","radix","digitIndex","val","MAX_DIGITS","CalculateBitLength","bitLength","targetValue","FrontPanelContext","React","createContext","device","window","FrontPanel","workQueue","WorkQueue","props","eventSource","FrontPanelPeriodicUpdateTimer","createElement","Provider","children","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","displayName","Application","forwardRef","_forwardedRef","TooltipPrimitive","Tooltip","forwardedRef","className","open","defaultOpen","onOpenChange","delayDuration","disableHoverableContent","content","container","forceMount","tooltipContentProps","rootProps","Root","Trigger","asChild","Portal","Content","sideOffset","collisionPadding","classNames","withTooltip","targetComponent","tooltip","Button","label","size","onButtonUp","onButtonDown","onButtonClick","buttonProps","ButtonWithTooltip","disabled","undefined","onMouseDown","onMouseUp","onClick","ChevronDirection","ChevronIcon","direction","Down","color","iconProps","xmlns","width","height","viewBox","fill","arrow","Up","d","DirectionChevron","IndicatorArrowDirection","IndicatorArrowIcon","IndicatorArrow","IndicatorBarIcon","IndicatorStateIcon","state","colorOnState","colorOffState","icon","On","Off","StateIcon","RadioToggleStateIcon","Fragment","cx","cy","r","stroke","strokeWidth","SwitchToggleStateIcon","Indicator","indicatorProps","IndicatorWithTooltip","classnames","Label","text","horizontalPosition","verticalPosition","labelProps","NumberDisplay","decimalScale","maximumValue","minimumValue","useMemo","maximumValueDigitCount","minimumValueDigitCount","negativeSign","NumberDisplayWithTooltip","outputValue","outputDigitCount","Number","outputValueStr","padStart","integerDigitCount","slice","prefixString","padEnd","length","FormatValueString","DigitEntry","digitEntryRef","useRef","variant","maximum","minimum","onValueChanged","valueRef","current","valueChangedRef","useEffect","onDigitMouseWheelEventHandler","event","deltaY","stopPropagation","preventDefault","addEventListener","passive","removeEventListener","canIncrement","canDecrement","tabIndex","onMouseEnter","e","currentTarget","focus","onMouseLeave","blur","onKeyDown","isHandled","key","nextElement","nextElementSibling","previousElement","previousElementSibling","numericValue","parseInt","isNaN","indicator","Math","abs","NumberEntryDigits","digitStates","onDigitStatesChange","digitEntries","map","digitState","id","isKeyDown","newDigitStates","excessDecimalScale","splice","paddedPrefixString","push","reverse","digitListItems","NumberEntry","sliderProps","showLabel","showTooltip","NumberEntryImpl","onValueChange","ComputeDigitStatesFromValue","NegativeSign","_isKeyDown","newValue","ComputeValueFromDigitStates","startDigitIndex","currentValue","currentMaxDifference","currentMinDifference","digitValue","digitMaximum","floor","digitMinimum","ceil","ComputeDigitLimitValue","digitValueDifference","RangeSlider","RangeSliderImpl","defaultValue","valueStep","showThumbLabel","showTrackLabels","initialValue","controlValue","setControlValue","useState","updateControlValue","useCallback","RangeSliderTrack","SliderPrimitive","Track","Range","min","max","step","orientation","Thumb","SelectEntryContext","SelectEntryRoot","SelectPrimitive","SelectEntryContent","contentProps","useContext","position","align","ScrollAreaPrimitive","Viewport","Scrollbar","SelectEntryGroup","Group","SelectEntryItem","itemProps","Item","ItemText","SelectEntryLabel","SelectEntrySeparator","Separator","SelectEntryTrigger","triggerProps","SelectEntryTriggerImpl","placeholder","Value","Icon","SelectEntry","Object","assign","Toggle","onToggleStateChanged","toggleProps","dataState","OnButtonClick","newState","ToggleSwitch","toggleSwitchProps","ToggleButtonWithTooltip","FrontPanelNumberEntry","setValue","fpEndpoint","clampedMinimumValue","maximumLimit","minimumLimit","ClampValue","targetBitLength","targetWireSpanBitMask","bitOffset","onUpdateWireValue","async","sender","Post","sourceWireValue","getWireInValue","epAddress","targetWireBitMask","sourceSpanValue","currentWireSpanBitOffset","currentWireSpanBitMask","sourceWireAddress","WIREIN_ADDRESS_RANGE","Maximum","onNumberEntryValueChange","targetWireValue","setWireInValue","targetWireAddress","updateWireIns","FrontPanelNumberDisplay","getWireOutValue","WIREOUT_ADDRESS_RANGE","subscription","WireOutValuesChangedEvent","SubscribeAsync","Cancel","FrontPanelIndicator","bitValue","setBitValue","FrontPanelPushButton","FrontPanelToggleSwitch","setState","newToggleState","FrontPanelTriggerButton","activateTriggerIn","FrontPanelRangeSlider","sourceValue","onSelectedValueChangeHandler","FrontPanelSelectEntryRoot","targetWireSpanValue","maxWireCount","wireIndex","FrontPanelSelectEntry"],"mappings":"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","x_google_ignoreList":[5]}
@@ -0,0 +1,10 @@
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
+ import React from "react";
8
+ import { FrontPanelProps } from "./FrontPanel.props";
9
+ declare const FrontPanel: React.FC<FrontPanelProps>;
10
+ export default FrontPanel;
@@ -0,0 +1,23 @@
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
+ /// <reference types="react" />
8
+ import { IFrontPanel, IFrontPanelEventSource, WorkQueue } from "@opalkelly/frontpanel-alloy-core";
9
+ interface FrontPanelProps extends React.PropsWithChildren<NonNullable<unknown>> {
10
+ /**
11
+ * The front panel device to be used
12
+ */
13
+ device?: IFrontPanel;
14
+ /**
15
+ * Optional work queue to be used
16
+ */
17
+ workQueue?: WorkQueue;
18
+ /**
19
+ * Optional event source to be used
20
+ */
21
+ eventSource?: IFrontPanelEventSource;
22
+ }
23
+ export { FrontPanelProps };
@@ -0,0 +1,7 @@
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
+ export { default } from "./FrontPanel";
@@ -0,0 +1,30 @@
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
+ import React from "react";
8
+ import { Indicator } from "../../primitives";
9
+ import FrontPanelIndicatorProps from "./FrontPanelIndicator.props";
10
+ interface FrontPanelIndicatorCombinedProps extends Omit<React.ComponentPropsWithoutRef<typeof Indicator>, "state">, FrontPanelIndicatorProps {
11
+ }
12
+ export type { FrontPanelIndicatorCombinedProps };
13
+ /**
14
+ * `FrontPanelIndicator` is a React component that renders an indicator that represents the state of a WireOut endpoint.
15
+ *
16
+ * @component
17
+ * @param {object} props - Properties passed to component
18
+ * @param {React.Ref} forwardedRef - Forwarded ref for the indicator
19
+ *
20
+ * @returns {React.Node} The rendered FrontPanelIndicator component
21
+ *
22
+ * @example
23
+ * ```jsx
24
+ * <FrontPanelIndicator
25
+ * label="Indicator"
26
+ * fpEndpoint={{epAddress: 0x20, bitOffset: 1}} />
27
+ * ```
28
+ */
29
+ declare const FrontPanelIndicator: React.ForwardRefExoticComponent<FrontPanelIndicatorCombinedProps & React.RefAttributes<HTMLSpanElement>>;
30
+ export default FrontPanelIndicator;
@@ -0,0 +1,17 @@
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
+ import { EndpointAddressProps } from "../types";
8
+ /**
9
+ * Interface for the properties of the `FrontPanelIndicator` component.
10
+ */
11
+ interface FrontPanelIndicatorProps {
12
+ /**
13
+ * Address of the frontpanel endpoint
14
+ */
15
+ fpEndpoint: EndpointAddressProps;
16
+ }
17
+ export default FrontPanelIndicatorProps;
@@ -0,0 +1,8 @@
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
+ export { default } from "./FrontPanelIndicator";
8
+ export { default as FrontPanelIndicatorProps } from "./FrontPanelIndicator.props";
@@ -0,0 +1,33 @@
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
+ import React from "react";
8
+ import "./FrontPanelNumberDisplay.css";
9
+ import { NumberDisplay } from "../../primitives";
10
+ import FrontPanelNumberDisplayProps from "./FrontPanelNumberDisplay.props";
11
+ interface FrontPanelNumberDisplayCombinedProps extends Omit<React.ComponentPropsWithoutRef<typeof NumberDisplay>, "value" | "maximumValue" | "minimumValue">, FrontPanelNumberDisplayProps {
12
+ }
13
+ export type { FrontPanelNumberDisplayCombinedProps };
14
+ /**
15
+ * `FrontPanelNumberDisplay` is a React component that renders a number display to represent the value of a WireOut endpoint using
16
+ * binary, octal, decimal, or hexadecimal numeral systems. It also allows to optionally set the decimal scale of the number when
17
+ * using the decimal numeral system.
18
+ *
19
+ * @component
20
+ * @param {object} props - Properties passed to component
21
+ * @param {React.Ref} forwardedRef - Forwarded ref for the number display
22
+ *
23
+ * @returns {React.Node} The rendered FrontPanelNumberDisplay component
24
+ *
25
+ * @example
26
+ * ```jsx
27
+ * <FrontPanelNumberDisplay
28
+ * fpEndpoint={{epAddress: 0x20, bitOffset: 1}}
29
+ * maximumValue=0xffffffff />
30
+ * ```
31
+ */
32
+ declare const FrontPanelNumberDisplay: React.ForwardRefExoticComponent<FrontPanelNumberDisplayCombinedProps & React.RefAttributes<HTMLDivElement>>;
33
+ export default FrontPanelNumberDisplay;
@@ -0,0 +1,23 @@
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
+ import { EndpointAddressProps } from "../types";
8
+ /**
9
+ * Interface for the properties of the `FrontPanelNumberDisplay` component.
10
+ *
11
+ * @interface
12
+ */
13
+ interface FrontPanelNumberDisplayProps {
14
+ /**
15
+ * Address of the frontpanel endpoint
16
+ */
17
+ fpEndpoint: EndpointAddressProps;
18
+ /**
19
+ * Maximum value that the number display will allow
20
+ */
21
+ maximumValue: bigint;
22
+ }
23
+ export default FrontPanelNumberDisplayProps;
@@ -0,0 +1,8 @@
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
+ export { default } from "./FrontPanelNumberDisplay";
8
+ export { default as FrontPanelNumberDisplayProps } from "./FrontPanelNumberDisplay.props";
@@ -0,0 +1,33 @@
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
+ import React from "react";
8
+ import "./FrontPanelNumberEntry.css";
9
+ import { NumberEntry } from "../../primitives";
10
+ import FrontPanelNumberEntryProps from "./FrontPanelNumberEntry.props";
11
+ interface FrontPanelNumberEntryCombinedProps extends Omit<React.ComponentPropsWithoutRef<typeof NumberEntry>, "value" | "maximumValue" | "minimumValue" | "onValueChange">, FrontPanelNumberEntryProps {
12
+ }
13
+ export type { FrontPanelNumberEntryCombinedProps };
14
+ /**
15
+ * `FrontPanelNumberEntry` is a React component that renders a number entry field to allow setting the value of a WireIn endpoint
16
+ * represented in binary, octal, decimal, or hexadecimal numeral systems. The values of the individual digits of the number can
17
+ * be entered by key or they can be incremented and decremented using the up and down arrow keys and or the mouse wheel.
18
+ *
19
+ * @component
20
+ * @param {Object} props - Properties passed to component
21
+ * @param {React.Ref} forwardedRef - Forwarded ref for the number display
22
+ *
23
+ * @returns {React.Node} The rendered FrontPanelNumberDisplay component
24
+ *
25
+ * @example
26
+ * ```jsx
27
+ * <FrontPanelNumberEntry
28
+ * fpEndpoint={{epAddress: 0x00, bitOffset: 1}}
29
+ * maximumValue=0xffffffff />
30
+ * ```
31
+ */
32
+ declare const FrontPanelNumberEntry: React.ForwardRefExoticComponent<FrontPanelNumberEntryCombinedProps & React.RefAttributes<HTMLDivElement>>;
33
+ export default FrontPanelNumberEntry;
@@ -0,0 +1,27 @@
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
+ import { EndpointAddressProps } from "../types";
8
+ /**
9
+ * Interface for the properties of the `FrontPanelNumberEntry` component.
10
+ *
11
+ * @interface
12
+ */
13
+ interface FrontPanelNumberEntryProps {
14
+ /**
15
+ * Address of the frontpanel endpoint
16
+ */
17
+ fpEndpoint: EndpointAddressProps;
18
+ /**
19
+ * Maximum value that the number entry will allow.
20
+ */
21
+ maximumValue: bigint;
22
+ /**
23
+ * Optional minimum value that the number entry will allow.
24
+ */
25
+ minimumValue?: bigint;
26
+ }
27
+ export default FrontPanelNumberEntryProps;
@@ -0,0 +1,8 @@
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
+ export { default } from "./FrontPanelNumberEntry";
8
+ export { default as FrontPanelNumberEntryProps } from "./FrontPanelNumberEntry.props";
@@ -0,0 +1,31 @@
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
+ import React from "react";
8
+ import { Button } from "../../primitives";
9
+ import FrontPanelPushButtonProps from "./FrontPanelPushButton.props";
10
+ interface FrontPanelPushButtonCombinedProps extends Omit<React.ComponentPropsWithoutRef<typeof Button>, "asChild" | "onButtonClick" | "onButtonDown" | "onButtonUp">, FrontPanelPushButtonProps {
11
+ }
12
+ export type { FrontPanelPushButtonCombinedProps };
13
+ /**
14
+ * `FrontPanelPushButton` is a React component that renders a push button that asserts a WireIn endpoint
15
+ * when pressed and deasserts it when released.
16
+ *
17
+ * @component
18
+ * @param {object} props - Properties passed to component
19
+ * @param {React.Ref} forwardedRef - Forwarded ref for the button
20
+ *
21
+ * @returns {React.Node} The rendered FrontPanelPushButton component
22
+ *
23
+ * @example
24
+ * ```jsx
25
+ * <FrontPanelPushButton
26
+ * label="Pushbutton"
27
+ * fpEndpoint={{epAddress: 0x00, bitOffset: 1}} />
28
+ * ```
29
+ */
30
+ declare const FrontPanelPushButton: React.ForwardRefExoticComponent<FrontPanelPushButtonCombinedProps & React.RefAttributes<HTMLButtonElement>>;
31
+ export default FrontPanelPushButton;
@@ -0,0 +1,17 @@
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
+ import { EndpointAddressProps } from "../types";
8
+ /**
9
+ * Interface for the properties of the `FrontPanelToggleButton` component.
10
+ */
11
+ interface FrontPanelPushButtonProps {
12
+ /**
13
+ * Address of the frontpanel endpoint
14
+ */
15
+ fpEndpoint: EndpointAddressProps;
16
+ }
17
+ export default FrontPanelPushButtonProps;