@opalkelly/frontpanel-react-components 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/LICENSE +45 -0
  2. package/README.md +26 -0
  3. package/dist/cjs/index.js +2 -0
  4. package/dist/cjs/index.js.map +1 -0
  5. package/dist/cjs/types/components/FrontPanel/FrontPanel.d.ts +10 -0
  6. package/dist/cjs/types/components/FrontPanel/FrontPanel.props.d.ts +23 -0
  7. package/dist/cjs/types/components/FrontPanel/index.d.ts +7 -0
  8. package/dist/cjs/types/components/FrontPanelIndicator/FrontPanelIndicator.d.ts +30 -0
  9. package/dist/cjs/types/components/FrontPanelIndicator/FrontPanelIndicator.props.d.ts +17 -0
  10. package/dist/cjs/types/components/FrontPanelIndicator/index.d.ts +8 -0
  11. package/dist/cjs/types/components/FrontPanelNumberDisplay/FrontPanelNumberDisplay.d.ts +33 -0
  12. package/dist/cjs/types/components/FrontPanelNumberDisplay/FrontPanelNumberDisplay.props.d.ts +23 -0
  13. package/dist/cjs/types/components/FrontPanelNumberDisplay/index.d.ts +8 -0
  14. package/dist/cjs/types/components/FrontPanelNumberEntry/FrontPanelNumberEntry.d.ts +33 -0
  15. package/dist/cjs/types/components/FrontPanelNumberEntry/FrontPanelNumberEntry.props.d.ts +27 -0
  16. package/dist/cjs/types/components/FrontPanelNumberEntry/index.d.ts +8 -0
  17. package/dist/cjs/types/components/FrontPanelPushButton/FrontPanelPushButton.d.ts +31 -0
  18. package/dist/cjs/types/components/FrontPanelPushButton/FrontPanelPushButton.props.d.ts +17 -0
  19. package/dist/cjs/types/components/FrontPanelPushButton/index.d.ts +8 -0
  20. package/dist/cjs/types/components/FrontPanelRangeSlider/FrontPanelRangeSlider.d.ts +31 -0
  21. package/dist/cjs/types/components/FrontPanelRangeSlider/FrontPanelRangeSlider.props.d.ts +21 -0
  22. package/dist/cjs/types/components/FrontPanelRangeSlider/index.d.ts +8 -0
  23. package/dist/cjs/types/components/FrontPanelSelectEntry/FrontPanelSelectEntry.d.ts +17 -0
  24. package/dist/cjs/types/components/FrontPanelSelectEntry/FrontPanelSelectEntryRoot.d.ts +43 -0
  25. package/dist/cjs/types/components/FrontPanelSelectEntry/FrontPanelSelectEntryRoot.props.d.ts +21 -0
  26. package/dist/cjs/types/components/FrontPanelSelectEntry/index.d.ts +15 -0
  27. package/dist/cjs/types/components/FrontPanelToggleSwitch/FrontPanelToggleSwitch.d.ts +31 -0
  28. package/dist/cjs/types/components/FrontPanelToggleSwitch/FrontPanelToggleSwitch.props.d.ts +17 -0
  29. package/dist/cjs/types/components/FrontPanelToggleSwitch/index.d.ts +8 -0
  30. package/dist/cjs/types/components/FrontPanelTriggerButton/FrontPanelTriggerButton.d.ts +32 -0
  31. package/dist/cjs/types/components/FrontPanelTriggerButton/FrontPanelTriggerButton.props.d.ts +18 -0
  32. package/dist/cjs/types/components/FrontPanelTriggerButton/index.d.ts +8 -0
  33. package/dist/cjs/types/components/Icons/ChevronIcon.d.ts +17 -0
  34. package/dist/cjs/types/components/Icons/IndicatorArrowIcon.d.ts +17 -0
  35. package/dist/cjs/types/components/Icons/IndicatorBarIcon.d.ts +10 -0
  36. package/dist/cjs/types/components/Icons/IndicatorStateIcon.d.ts +14 -0
  37. package/dist/cjs/types/components/Icons/RadioToggleStateIcon.d.ts +14 -0
  38. package/dist/cjs/types/components/Icons/SwitchToggleStateIcon.d.ts +14 -0
  39. package/dist/cjs/types/components/Icons/index.d.ts +12 -0
  40. package/dist/cjs/types/components/Icons/types.d.ts +17 -0
  41. package/dist/cjs/types/components/index.d.ts +16 -0
  42. package/dist/cjs/types/components/types.d.ts +11 -0
  43. package/dist/cjs/types/contexts/FrontPanelContext.d.ts +15 -0
  44. package/dist/cjs/types/contexts/index.d.ts +8 -0
  45. package/dist/cjs/types/core/Binary.d.ts +7 -0
  46. package/dist/cjs/types/core/Numeric.d.ts +80 -0
  47. package/dist/cjs/types/core/Types.d.ts +34 -0
  48. package/dist/cjs/types/core/index.d.ts +9 -0
  49. package/dist/cjs/types/index.d.ts +10 -0
  50. package/dist/cjs/types/primitives/Application/Application.d.ts +10 -0
  51. package/dist/cjs/types/primitives/Application/Application.props.d.ts +10 -0
  52. package/dist/cjs/types/primitives/Application/index.d.ts +1 -0
  53. package/dist/cjs/types/primitives/Button/Button.d.ts +33 -0
  54. package/dist/cjs/types/primitives/Button/Button.props.d.ts +44 -0
  55. package/dist/cjs/types/primitives/Button/index.d.ts +3 -0
  56. package/dist/cjs/types/primitives/DigitEntry/DigitEntry.d.ts +33 -0
  57. package/dist/cjs/types/primitives/DigitEntry/DigitEntry.props.d.ts +51 -0
  58. package/dist/cjs/types/primitives/DigitEntry/index.d.ts +9 -0
  59. package/dist/cjs/types/primitives/Indicator/Indicator.d.ts +29 -0
  60. package/dist/cjs/types/primitives/Indicator/Indicator.props.d.ts +35 -0
  61. package/dist/cjs/types/primitives/Indicator/index.d.ts +9 -0
  62. package/dist/cjs/types/primitives/Label/Label.d.ts +31 -0
  63. package/dist/cjs/types/primitives/Label/Label.props.d.ts +33 -0
  64. package/dist/cjs/types/primitives/Label/index.d.ts +9 -0
  65. package/dist/cjs/types/primitives/NumberDisplay/NumberDisplay.d.ts +31 -0
  66. package/dist/cjs/types/primitives/NumberDisplay/NumberDisplay.props.d.ts +52 -0
  67. package/dist/cjs/types/primitives/NumberDisplay/index.d.ts +9 -0
  68. package/dist/cjs/types/primitives/NumberEntry/NumberEntry.d.ts +34 -0
  69. package/dist/cjs/types/primitives/NumberEntry/NumberEntry.props.d.ts +69 -0
  70. package/dist/cjs/types/primitives/NumberEntry/NumberEntryDigits.d.ts +27 -0
  71. package/dist/cjs/types/primitives/NumberEntry/NumberEntryDigits.props.d.ts +43 -0
  72. package/dist/cjs/types/primitives/NumberEntry/index.d.ts +9 -0
  73. package/dist/cjs/types/primitives/RangeSlider/RangeSlider.d.ts +33 -0
  74. package/dist/cjs/types/primitives/RangeSlider/RangeSlider.props.d.ts +77 -0
  75. package/dist/cjs/types/primitives/RangeSlider/index.d.ts +9 -0
  76. package/dist/cjs/types/primitives/SelectEntry/SelectEntry.d.ts +17 -0
  77. package/dist/cjs/types/primitives/SelectEntry/SelectEntryContent.d.ts +16 -0
  78. package/dist/cjs/types/primitives/SelectEntry/SelectEntryGroup.d.ts +15 -0
  79. package/dist/cjs/types/primitives/SelectEntry/SelectEntryItem.d.ts +15 -0
  80. package/dist/cjs/types/primitives/SelectEntry/SelectEntryLabel.d.ts +15 -0
  81. package/dist/cjs/types/primitives/SelectEntry/SelectEntryRoot.d.ts +39 -0
  82. package/dist/cjs/types/primitives/SelectEntry/SelectEntryRoot.props.d.ts +31 -0
  83. package/dist/cjs/types/primitives/SelectEntry/SelectEntrySeparator.d.ts +15 -0
  84. package/dist/cjs/types/primitives/SelectEntry/SelectEntryTrigger.d.ts +16 -0
  85. package/dist/cjs/types/primitives/SelectEntry/SelectEntryTrigger.props.d.ts +16 -0
  86. package/dist/cjs/types/primitives/SelectEntry/index.d.ts +17 -0
  87. package/dist/cjs/types/primitives/Toggle/Toggle.d.ts +35 -0
  88. package/dist/cjs/types/primitives/Toggle/Toggle.props.d.ts +37 -0
  89. package/dist/cjs/types/primitives/Toggle/index.d.ts +9 -0
  90. package/dist/cjs/types/primitives/ToggleSwitch/ToggleSwitch.d.ts +32 -0
  91. package/dist/cjs/types/primitives/ToggleSwitch/ToggleSwitch.props.d.ts +22 -0
  92. package/dist/cjs/types/primitives/ToggleSwitch/index.d.ts +8 -0
  93. package/dist/cjs/types/primitives/Tooltip/Tooltip.d.ts +35 -0
  94. package/dist/cjs/types/primitives/Tooltip/Tooltip.props.d.ts +17 -0
  95. package/dist/cjs/types/primitives/Tooltip/index.d.ts +8 -0
  96. package/dist/cjs/types/primitives/TooltipUtility.d.ts +12 -0
  97. package/dist/cjs/types/primitives/index.d.ts +24 -0
  98. package/dist/esm/index.js +2 -0
  99. package/dist/esm/index.js.map +1 -0
  100. package/dist/esm/types/components/FrontPanel/FrontPanel.d.ts +10 -0
  101. package/dist/esm/types/components/FrontPanel/FrontPanel.props.d.ts +23 -0
  102. package/dist/esm/types/components/FrontPanel/index.d.ts +7 -0
  103. package/dist/esm/types/components/FrontPanelIndicator/FrontPanelIndicator.d.ts +30 -0
  104. package/dist/esm/types/components/FrontPanelIndicator/FrontPanelIndicator.props.d.ts +17 -0
  105. package/dist/esm/types/components/FrontPanelIndicator/index.d.ts +8 -0
  106. package/dist/esm/types/components/FrontPanelNumberDisplay/FrontPanelNumberDisplay.d.ts +33 -0
  107. package/dist/esm/types/components/FrontPanelNumberDisplay/FrontPanelNumberDisplay.props.d.ts +23 -0
  108. package/dist/esm/types/components/FrontPanelNumberDisplay/index.d.ts +8 -0
  109. package/dist/esm/types/components/FrontPanelNumberEntry/FrontPanelNumberEntry.d.ts +33 -0
  110. package/dist/esm/types/components/FrontPanelNumberEntry/FrontPanelNumberEntry.props.d.ts +27 -0
  111. package/dist/esm/types/components/FrontPanelNumberEntry/index.d.ts +8 -0
  112. package/dist/esm/types/components/FrontPanelPushButton/FrontPanelPushButton.d.ts +31 -0
  113. package/dist/esm/types/components/FrontPanelPushButton/FrontPanelPushButton.props.d.ts +17 -0
  114. package/dist/esm/types/components/FrontPanelPushButton/index.d.ts +8 -0
  115. package/dist/esm/types/components/FrontPanelRangeSlider/FrontPanelRangeSlider.d.ts +31 -0
  116. package/dist/esm/types/components/FrontPanelRangeSlider/FrontPanelRangeSlider.props.d.ts +21 -0
  117. package/dist/esm/types/components/FrontPanelRangeSlider/index.d.ts +8 -0
  118. package/dist/esm/types/components/FrontPanelSelectEntry/FrontPanelSelectEntry.d.ts +17 -0
  119. package/dist/esm/types/components/FrontPanelSelectEntry/FrontPanelSelectEntryRoot.d.ts +43 -0
  120. package/dist/esm/types/components/FrontPanelSelectEntry/FrontPanelSelectEntryRoot.props.d.ts +21 -0
  121. package/dist/esm/types/components/FrontPanelSelectEntry/index.d.ts +15 -0
  122. package/dist/esm/types/components/FrontPanelToggleSwitch/FrontPanelToggleSwitch.d.ts +31 -0
  123. package/dist/esm/types/components/FrontPanelToggleSwitch/FrontPanelToggleSwitch.props.d.ts +17 -0
  124. package/dist/esm/types/components/FrontPanelToggleSwitch/index.d.ts +8 -0
  125. package/dist/esm/types/components/FrontPanelTriggerButton/FrontPanelTriggerButton.d.ts +32 -0
  126. package/dist/esm/types/components/FrontPanelTriggerButton/FrontPanelTriggerButton.props.d.ts +18 -0
  127. package/dist/esm/types/components/FrontPanelTriggerButton/index.d.ts +8 -0
  128. package/dist/esm/types/components/Icons/ChevronIcon.d.ts +17 -0
  129. package/dist/esm/types/components/Icons/IndicatorArrowIcon.d.ts +17 -0
  130. package/dist/esm/types/components/Icons/IndicatorBarIcon.d.ts +10 -0
  131. package/dist/esm/types/components/Icons/IndicatorStateIcon.d.ts +14 -0
  132. package/dist/esm/types/components/Icons/RadioToggleStateIcon.d.ts +14 -0
  133. package/dist/esm/types/components/Icons/SwitchToggleStateIcon.d.ts +14 -0
  134. package/dist/esm/types/components/Icons/index.d.ts +12 -0
  135. package/dist/esm/types/components/Icons/types.d.ts +17 -0
  136. package/dist/esm/types/components/index.d.ts +16 -0
  137. package/dist/esm/types/components/types.d.ts +11 -0
  138. package/dist/esm/types/contexts/FrontPanelContext.d.ts +15 -0
  139. package/dist/esm/types/contexts/index.d.ts +8 -0
  140. package/dist/esm/types/core/Binary.d.ts +7 -0
  141. package/dist/esm/types/core/Numeric.d.ts +80 -0
  142. package/dist/esm/types/core/Types.d.ts +34 -0
  143. package/dist/esm/types/core/index.d.ts +9 -0
  144. package/dist/esm/types/index.d.ts +10 -0
  145. package/dist/esm/types/primitives/Application/Application.d.ts +10 -0
  146. package/dist/esm/types/primitives/Application/Application.props.d.ts +10 -0
  147. package/dist/esm/types/primitives/Application/index.d.ts +1 -0
  148. package/dist/esm/types/primitives/Button/Button.d.ts +33 -0
  149. package/dist/esm/types/primitives/Button/Button.props.d.ts +44 -0
  150. package/dist/esm/types/primitives/Button/index.d.ts +3 -0
  151. package/dist/esm/types/primitives/DigitEntry/DigitEntry.d.ts +33 -0
  152. package/dist/esm/types/primitives/DigitEntry/DigitEntry.props.d.ts +51 -0
  153. package/dist/esm/types/primitives/DigitEntry/index.d.ts +9 -0
  154. package/dist/esm/types/primitives/Indicator/Indicator.d.ts +29 -0
  155. package/dist/esm/types/primitives/Indicator/Indicator.props.d.ts +35 -0
  156. package/dist/esm/types/primitives/Indicator/index.d.ts +9 -0
  157. package/dist/esm/types/primitives/Label/Label.d.ts +31 -0
  158. package/dist/esm/types/primitives/Label/Label.props.d.ts +33 -0
  159. package/dist/esm/types/primitives/Label/index.d.ts +9 -0
  160. package/dist/esm/types/primitives/NumberDisplay/NumberDisplay.d.ts +31 -0
  161. package/dist/esm/types/primitives/NumberDisplay/NumberDisplay.props.d.ts +52 -0
  162. package/dist/esm/types/primitives/NumberDisplay/index.d.ts +9 -0
  163. package/dist/esm/types/primitives/NumberEntry/NumberEntry.d.ts +34 -0
  164. package/dist/esm/types/primitives/NumberEntry/NumberEntry.props.d.ts +69 -0
  165. package/dist/esm/types/primitives/NumberEntry/NumberEntryDigits.d.ts +27 -0
  166. package/dist/esm/types/primitives/NumberEntry/NumberEntryDigits.props.d.ts +43 -0
  167. package/dist/esm/types/primitives/NumberEntry/index.d.ts +9 -0
  168. package/dist/esm/types/primitives/RangeSlider/RangeSlider.d.ts +33 -0
  169. package/dist/esm/types/primitives/RangeSlider/RangeSlider.props.d.ts +77 -0
  170. package/dist/esm/types/primitives/RangeSlider/index.d.ts +9 -0
  171. package/dist/esm/types/primitives/SelectEntry/SelectEntry.d.ts +17 -0
  172. package/dist/esm/types/primitives/SelectEntry/SelectEntryContent.d.ts +16 -0
  173. package/dist/esm/types/primitives/SelectEntry/SelectEntryGroup.d.ts +15 -0
  174. package/dist/esm/types/primitives/SelectEntry/SelectEntryItem.d.ts +15 -0
  175. package/dist/esm/types/primitives/SelectEntry/SelectEntryLabel.d.ts +15 -0
  176. package/dist/esm/types/primitives/SelectEntry/SelectEntryRoot.d.ts +39 -0
  177. package/dist/esm/types/primitives/SelectEntry/SelectEntryRoot.props.d.ts +31 -0
  178. package/dist/esm/types/primitives/SelectEntry/SelectEntrySeparator.d.ts +15 -0
  179. package/dist/esm/types/primitives/SelectEntry/SelectEntryTrigger.d.ts +16 -0
  180. package/dist/esm/types/primitives/SelectEntry/SelectEntryTrigger.props.d.ts +16 -0
  181. package/dist/esm/types/primitives/SelectEntry/index.d.ts +17 -0
  182. package/dist/esm/types/primitives/Toggle/Toggle.d.ts +35 -0
  183. package/dist/esm/types/primitives/Toggle/Toggle.props.d.ts +37 -0
  184. package/dist/esm/types/primitives/Toggle/index.d.ts +9 -0
  185. package/dist/esm/types/primitives/ToggleSwitch/ToggleSwitch.d.ts +32 -0
  186. package/dist/esm/types/primitives/ToggleSwitch/ToggleSwitch.props.d.ts +22 -0
  187. package/dist/esm/types/primitives/ToggleSwitch/index.d.ts +8 -0
  188. package/dist/esm/types/primitives/Tooltip/Tooltip.d.ts +35 -0
  189. package/dist/esm/types/primitives/Tooltip/Tooltip.props.d.ts +17 -0
  190. package/dist/esm/types/primitives/Tooltip/index.d.ts +8 -0
  191. package/dist/esm/types/primitives/TooltipUtility.d.ts +12 -0
  192. package/dist/esm/types/primitives/index.d.ts +24 -0
  193. package/dist/index.d.ts +1456 -0
  194. package/package.json +81 -0
  195. package/src/components/FrontPanel/FrontPanel.props.ts +25 -0
  196. package/src/components/FrontPanel/FrontPanel.tsx +33 -0
  197. package/src/components/FrontPanel/index.ts +8 -0
  198. package/src/components/FrontPanelIndicator/FrontPanelIndicator.css +0 -0
  199. package/src/components/FrontPanelIndicator/FrontPanelIndicator.props.ts +20 -0
  200. package/src/components/FrontPanelIndicator/FrontPanelIndicator.stories.tsx +44 -0
  201. package/src/components/FrontPanelIndicator/FrontPanelIndicator.tsx +81 -0
  202. package/src/components/FrontPanelIndicator/index.ts +10 -0
  203. package/src/components/FrontPanelNumberDisplay/FrontPanelNumberDisplay.css +0 -0
  204. package/src/components/FrontPanelNumberDisplay/FrontPanelNumberDisplay.props.ts +27 -0
  205. package/src/components/FrontPanelNumberDisplay/FrontPanelNumberDisplay.stories.tsx +67 -0
  206. package/src/components/FrontPanelNumberDisplay/FrontPanelNumberDisplay.tsx +130 -0
  207. package/src/components/FrontPanelNumberDisplay/index.ts +10 -0
  208. package/src/components/FrontPanelNumberEntry/FrontPanelNumberEntry.css +0 -0
  209. package/src/components/FrontPanelNumberEntry/FrontPanelNumberEntry.props.ts +32 -0
  210. package/src/components/FrontPanelNumberEntry/FrontPanelNumberEntry.stories.tsx +104 -0
  211. package/src/components/FrontPanelNumberEntry/FrontPanelNumberEntry.tsx +195 -0
  212. package/src/components/FrontPanelNumberEntry/index.ts +10 -0
  213. package/src/components/FrontPanelPushButton/FrontPanelPushButton.css +0 -0
  214. package/src/components/FrontPanelPushButton/FrontPanelPushButton.props.ts +20 -0
  215. package/src/components/FrontPanelPushButton/FrontPanelPushButton.stories.tsx +46 -0
  216. package/src/components/FrontPanelPushButton/FrontPanelPushButton.tsx +80 -0
  217. package/src/components/FrontPanelPushButton/index.ts +10 -0
  218. package/src/components/FrontPanelRangeSlider/FrontPanelRangeSlider.css +0 -0
  219. package/src/components/FrontPanelRangeSlider/FrontPanelRangeSlider.props.ts +25 -0
  220. package/src/components/FrontPanelRangeSlider/FrontPanelRangeSlider.stories.tsx +92 -0
  221. package/src/components/FrontPanelRangeSlider/FrontPanelRangeSlider.tsx +108 -0
  222. package/src/components/FrontPanelRangeSlider/index.ts +10 -0
  223. package/src/components/FrontPanelSelectEntry/FrontPanelSelectEntry.css +0 -0
  224. package/src/components/FrontPanelSelectEntry/FrontPanelSelectEntry.stories.tsx +107 -0
  225. package/src/components/FrontPanelSelectEntry/FrontPanelSelectEntry.tsx +30 -0
  226. package/src/components/FrontPanelSelectEntry/FrontPanelSelectEntryRoot.props.ts +25 -0
  227. package/src/components/FrontPanelSelectEntry/FrontPanelSelectEntryRoot.tsx +175 -0
  228. package/src/components/FrontPanelSelectEntry/index.ts +17 -0
  229. package/src/components/FrontPanelToggleSwitch/FrontPanelToggleSwitch.css +0 -0
  230. package/src/components/FrontPanelToggleSwitch/FrontPanelToggleSwitch.props.ts +20 -0
  231. package/src/components/FrontPanelToggleSwitch/FrontPanelToggleSwitch.stories.tsx +46 -0
  232. package/src/components/FrontPanelToggleSwitch/FrontPanelToggleSwitch.tsx +108 -0
  233. package/src/components/FrontPanelToggleSwitch/index.ts +10 -0
  234. package/src/components/FrontPanelTriggerButton/FrontPanelTriggerButton.css +0 -0
  235. package/src/components/FrontPanelTriggerButton/FrontPanelTriggerButton.props.ts +21 -0
  236. package/src/components/FrontPanelTriggerButton/FrontPanelTriggerButton.stories.tsx +46 -0
  237. package/src/components/FrontPanelTriggerButton/FrontPanelTriggerButton.tsx +65 -0
  238. package/src/components/FrontPanelTriggerButton/index.ts +10 -0
  239. package/src/components/Icons/ChevronIcon.tsx +69 -0
  240. package/src/components/Icons/IndicatorArrowIcon.tsx +59 -0
  241. package/src/components/Icons/IndicatorBarIcon.tsx +34 -0
  242. package/src/components/Icons/IndicatorStateIcon.tsx +82 -0
  243. package/src/components/Icons/RadioToggleStateIcon.tsx +62 -0
  244. package/src/components/Icons/SwitchToggleStateIcon.tsx +68 -0
  245. package/src/components/Icons/index.ts +15 -0
  246. package/src/components/Icons/types.ts +20 -0
  247. package/src/components/index.ts +31 -0
  248. package/src/components/types.ts +13 -0
  249. package/src/contexts/FrontPanelContext.ts +23 -0
  250. package/src/contexts/index.ts +10 -0
  251. package/src/core/Binary.ts +23 -0
  252. package/src/core/Numeric.ts +168 -0
  253. package/src/core/Types.ts +39 -0
  254. package/src/core/index.ts +11 -0
  255. package/src/fonts/Inter-VariableFont_slnt,wght.ttf +0 -0
  256. package/src/index.css +11 -0
  257. package/src/index.ts +11 -0
  258. package/src/primitives/Application/Application.props.ts +10 -0
  259. package/src/primitives/Application/Application.tsx +24 -0
  260. package/src/primitives/Application/index.ts +1 -0
  261. package/src/primitives/Button/Button.css +60 -0
  262. package/src/primitives/Button/Button.props.ts +53 -0
  263. package/src/primitives/Button/Button.stories.tsx +54 -0
  264. package/src/primitives/Button/Button.tsx +75 -0
  265. package/src/primitives/Button/index.ts +4 -0
  266. package/src/primitives/DigitEntry/DigitEntry.css +120 -0
  267. package/src/primitives/DigitEntry/DigitEntry.props.ts +62 -0
  268. package/src/primitives/DigitEntry/DigitEntry.stories.tsx +84 -0
  269. package/src/primitives/DigitEntry/DigitEntry.tsx +226 -0
  270. package/src/primitives/DigitEntry/index.ts +15 -0
  271. package/src/primitives/Indicator/Indicator.css +66 -0
  272. package/src/primitives/Indicator/Indicator.props.ts +42 -0
  273. package/src/primitives/Indicator/Indicator.stories.tsx +44 -0
  274. package/src/primitives/Indicator/Indicator.tsx +64 -0
  275. package/src/primitives/Indicator/index.ts +11 -0
  276. package/src/primitives/Label/Label.css +49 -0
  277. package/src/primitives/Label/Label.props.ts +38 -0
  278. package/src/primitives/Label/Label.stories.tsx +53 -0
  279. package/src/primitives/Label/Label.tsx +66 -0
  280. package/src/primitives/Label/index.ts +11 -0
  281. package/src/primitives/NumberDisplay/NumberDisplay.css +63 -0
  282. package/src/primitives/NumberDisplay/NumberDisplay.props.ts +65 -0
  283. package/src/primitives/NumberDisplay/NumberDisplay.stories.tsx +83 -0
  284. package/src/primitives/NumberDisplay/NumberDisplay.tsx +155 -0
  285. package/src/primitives/NumberDisplay/index.ts +11 -0
  286. package/src/primitives/NumberEntry/NumberEntry.css +71 -0
  287. package/src/primitives/NumberEntry/NumberEntry.props.ts +86 -0
  288. package/src/primitives/NumberEntry/NumberEntry.stories.tsx +129 -0
  289. package/src/primitives/NumberEntry/NumberEntry.tsx +249 -0
  290. package/src/primitives/NumberEntry/NumberEntryDigits.props.ts +57 -0
  291. package/src/primitives/NumberEntry/NumberEntryDigits.tsx +117 -0
  292. package/src/primitives/NumberEntry/index.ts +11 -0
  293. package/src/primitives/RangeSlider/RangeSlider.css +110 -0
  294. package/src/primitives/RangeSlider/RangeSlider.props.ts +93 -0
  295. package/src/primitives/RangeSlider/RangeSlider.stories.tsx +76 -0
  296. package/src/primitives/RangeSlider/RangeSlider.tsx +168 -0
  297. package/src/primitives/RangeSlider/index.ts +14 -0
  298. package/src/primitives/SelectEntry/SelectEntry.stories.tsx +86 -0
  299. package/src/primitives/SelectEntry/SelectEntry.tsx +29 -0
  300. package/src/primitives/SelectEntry/SelectEntryContent.css +94 -0
  301. package/src/primitives/SelectEntry/SelectEntryContent.tsx +63 -0
  302. package/src/primitives/SelectEntry/SelectEntryGroup.css +17 -0
  303. package/src/primitives/SelectEntry/SelectEntryGroup.tsx +37 -0
  304. package/src/primitives/SelectEntry/SelectEntryItem.css +35 -0
  305. package/src/primitives/SelectEntry/SelectEntryItem.tsx +51 -0
  306. package/src/primitives/SelectEntry/SelectEntryLabel.css +16 -0
  307. package/src/primitives/SelectEntry/SelectEntryLabel.tsx +43 -0
  308. package/src/primitives/SelectEntry/SelectEntryRoot.css +10 -0
  309. package/src/primitives/SelectEntry/SelectEntryRoot.props.ts +38 -0
  310. package/src/primitives/SelectEntry/SelectEntryRoot.tsx +69 -0
  311. package/src/primitives/SelectEntry/SelectEntrySeparator.css +12 -0
  312. package/src/primitives/SelectEntry/SelectEntrySeparator.tsx +38 -0
  313. package/src/primitives/SelectEntry/SelectEntryTrigger.css +49 -0
  314. package/src/primitives/SelectEntry/SelectEntryTrigger.props.ts +18 -0
  315. package/src/primitives/SelectEntry/SelectEntryTrigger.tsx +111 -0
  316. package/src/primitives/SelectEntry/index.ts +20 -0
  317. package/src/primitives/Toggle/Toggle.css +67 -0
  318. package/src/primitives/Toggle/Toggle.props.ts +44 -0
  319. package/src/primitives/Toggle/Toggle.stories.tsx +61 -0
  320. package/src/primitives/Toggle/Toggle.tsx +90 -0
  321. package/src/primitives/Toggle/index.ts +11 -0
  322. package/src/primitives/ToggleSwitch/ToggleSwitch.css +118 -0
  323. package/src/primitives/ToggleSwitch/ToggleSwitch.props.ts +26 -0
  324. package/src/primitives/ToggleSwitch/ToggleSwitch.stories.tsx +85 -0
  325. package/src/primitives/ToggleSwitch/ToggleSwitch.tsx +73 -0
  326. package/src/primitives/ToggleSwitch/index.ts +10 -0
  327. package/src/primitives/Tooltip/Tooltip.css +93 -0
  328. package/src/primitives/Tooltip/Tooltip.props.ts +20 -0
  329. package/src/primitives/Tooltip/Tooltip.tsx +91 -0
  330. package/src/primitives/Tooltip/index.ts +10 -0
  331. package/src/primitives/TooltipUtility.tsx +24 -0
  332. package/src/primitives/index.ts +44 -0
  333. package/src/stories/decorators/Application.decorator.tsx +20 -0
  334. package/src/stories/decorators/FrontPanel.decorator.tsx +47 -0
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Copyright (c) 2024 Opal Kelly Incorporated
3
+ *
4
+ * This source code is licensed under the FrontPanel license.
5
+ * See the LICENSE file found in the root directory of this project.
6
+ */
7
+
8
+ import { NumeralSystem } from "../../core";
9
+
10
+ export type DigitEntryVariant = "standard" | "compact";
11
+ export type DigitEntrySize = 1 | 2 | 3;
12
+ export type DigitEntryValueChangeEventHandler = (value: number, isKeyDown: boolean) => void;
13
+
14
+ /**
15
+ * Interface for the properties of the `DigitEntry` component.
16
+ */
17
+ interface DigitEntryProps {
18
+ /**
19
+ * The current value of the digit entry
20
+ */
21
+ value: number;
22
+
23
+ /**
24
+ * Optional CSS class to apply to the digit entry
25
+ */
26
+ className?: string;
27
+
28
+ /**
29
+ * The maximum value that the digit entry can have
30
+ */
31
+ maximum?: number;
32
+
33
+ /**
34
+ * The minimum value that the digit entry can have
35
+ */
36
+ minimum?: number;
37
+
38
+ /**
39
+ * The numeral system for the digit entry
40
+ * @default Decimal
41
+ */
42
+ numeralSystem?: NumeralSystem;
43
+
44
+ /**
45
+ * Size of the digit entry
46
+ * @default 1
47
+ */
48
+ size?: DigitEntrySize;
49
+
50
+ /**
51
+ * Variant of the digit entry
52
+ * @default standard
53
+ */
54
+ variant?: DigitEntryVariant;
55
+
56
+ /**
57
+ * Optional event handler for the value changed event
58
+ */
59
+ onValueChanged?: DigitEntryValueChangeEventHandler;
60
+ }
61
+
62
+ export default DigitEntryProps;
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Copyright (c) 2024 Opal Kelly Incorporated
3
+ *
4
+ * This source code is licensed under the FrontPanel license.
5
+ * See the LICENSE file found in the root directory of this project.
6
+ */
7
+
8
+ import React from "react";
9
+
10
+ import type { Meta, StoryObj } from "@storybook/react";
11
+
12
+ import { useArgs } from "@storybook/preview-api";
13
+
14
+ import DigitEntry from "./DigitEntry";
15
+
16
+ import { NumeralSystem } from "../../core";
17
+
18
+ // Configure Story metadata
19
+ const meta = {
20
+ title: "Components/DigitEntry",
21
+ component: DigitEntry,
22
+ parameters: {
23
+ layout: "centered" // Center the component in the Canvas
24
+ },
25
+ tags: ["autodocs"], // Automatically generate documentation
26
+ argTypes: {
27
+ variant: {
28
+ control: "radio",
29
+ options: ["standard", "compact"]
30
+ },
31
+ size: {
32
+ control: { type: "range", min: 1, max: 3, step: 1 }
33
+ },
34
+ numeralSystem: {
35
+ control: "radio",
36
+ options: ["Decimal", "Hexadecimal", "Binary", "Octal"],
37
+ mapping: {
38
+ Decimal: NumeralSystem.Decimal,
39
+ Hexadecimal: NumeralSystem.Hexadecimal,
40
+ Binary: NumeralSystem.Binary,
41
+ Octal: NumeralSystem.Octal
42
+ }
43
+ },
44
+ value: {
45
+ control: { type: "number", step: 1 }
46
+ },
47
+ maximum: {
48
+ control: { type: "number", step: 1 }
49
+ },
50
+ minimum: {
51
+ control: { type: "number", step: 1 }
52
+ },
53
+ // Disable event callback arguments
54
+ onValueChanged: {
55
+ control: { disable: true }
56
+ }
57
+ }
58
+ } satisfies Meta<typeof DigitEntry>;
59
+
60
+ export default meta;
61
+
62
+ type Story = StoryObj<typeof meta>;
63
+
64
+ // Primary Story
65
+ export const Primary: Story = {
66
+ render: (args) => {
67
+ const [{ value }, updateArgs] = useArgs();
68
+
69
+ function onValueChanged(value: number, _isKeyDown: boolean): void {
70
+ updateArgs({ value: value });
71
+ }
72
+
73
+ return <DigitEntry {...args} value={value} onValueChanged={onValueChanged} />;
74
+ },
75
+ args: {
76
+ value: 8,
77
+ // Optional Properties
78
+ size: 1,
79
+ numeralSystem: NumeralSystem.Decimal,
80
+ variant: "standard",
81
+ maximum: undefined,
82
+ minimum: undefined
83
+ }
84
+ };
@@ -0,0 +1,226 @@
1
+ /**
2
+ * Copyright (c) 2024 Opal Kelly Incorporated
3
+ *
4
+ * This source code is licensed under the FrontPanel license.
5
+ * See the LICENSE file found in the root directory of this project.
6
+ */
7
+
8
+ import React from "react";
9
+
10
+ import classNames from "classnames";
11
+
12
+ import { IndicatorArrowIcon, IndicatorArrowDirection } from "../../components/Icons";
13
+ import { IndicatorBarIcon } from "../../components/Icons";
14
+
15
+ import DigitEntryProps from "./DigitEntry.props";
16
+
17
+ import "../../index.css";
18
+
19
+ import "./DigitEntry.css";
20
+
21
+ import { NumeralSystem } from "../../core";
22
+
23
+ type DigitEntryElement = React.ElementRef<"div">;
24
+
25
+ /**
26
+ * `DigitEntry` is a React component that renders a digit entry field to allow setting the value of the digit represented
27
+ * in binary, octal, decimal, or hexadecimal number systems. The value of the digit can be entered by key or the current
28
+ * value can be incremented or decremented using the up and down arrow keys and or the mouse wheel. A maximum and minimum
29
+ * value can be specified to limit the range of values that the digit entry field can have. Indicators are displayed to
30
+ * show when the value can be incremented or decremented based on the maximum and minimum values.
31
+ *
32
+ * @component
33
+ * @param {Object} props - Properties passed to component
34
+ * @param {React.Ref<DigitEntryElement>} forwardedRef - Forwarded ref for the number display
35
+ *
36
+ * @returns {React.ReactElement} The rendered DigitEntry component
37
+ *
38
+ * @example
39
+ * ```jsx
40
+ * <DigitEntry
41
+ * value={0}
42
+ * maximum={5}
43
+ * minimum={2} />
44
+ * ```
45
+ */
46
+ const DigitEntry: React.FC<DigitEntryProps> = (props) => {
47
+ const digitEntryRef = React.useRef<DigitEntryElement>(null);
48
+
49
+ const {
50
+ className,
51
+ variant = "standard",
52
+ size = 1,
53
+ value,
54
+ maximum,
55
+ minimum,
56
+ numeralSystem = NumeralSystem.Decimal,
57
+ onValueChanged
58
+ } = props;
59
+
60
+ const valueRef = React.useRef(value);
61
+
62
+ valueRef.current = props.value;
63
+
64
+ const valueChangedRef = React.useRef(onValueChanged);
65
+
66
+ valueChangedRef.current = onValueChanged;
67
+
68
+ const onDigitKeyboardEventHandler = (event: React.KeyboardEvent<HTMLDivElement>) => {
69
+ let isHandled: boolean = false;
70
+
71
+ switch (event.key) {
72
+ case "ArrowUp":
73
+ onValueChanged?.(value + 1, false);
74
+ isHandled = true;
75
+ break;
76
+ case "ArrowDown":
77
+ onValueChanged?.(value - 1, false);
78
+ isHandled = true;
79
+ break;
80
+ case "ArrowRight":
81
+ {
82
+ const nextElement: HTMLDivElement | null = event.currentTarget
83
+ .nextElementSibling as HTMLDivElement;
84
+ nextElement?.focus();
85
+ isHandled = true;
86
+ }
87
+ break;
88
+ case "ArrowLeft":
89
+ {
90
+ const previousElement: HTMLDivElement | null = event.currentTarget
91
+ .previousElementSibling as HTMLDivElement;
92
+ previousElement?.focus();
93
+ isHandled = true;
94
+ }
95
+ break;
96
+ default:
97
+ isHandled = false;
98
+ break;
99
+ }
100
+
101
+ if (isHandled) {
102
+ event.stopPropagation();
103
+ event.preventDefault();
104
+ } else {
105
+ const numericValue: number = parseInt(event.key, numeralSystem);
106
+
107
+ if (!Number.isNaN(numericValue)) {
108
+ onValueChanged?.(numericValue, true);
109
+
110
+ const nextElement: HTMLDivElement | null = event.currentTarget
111
+ .nextElementSibling as HTMLDivElement;
112
+
113
+ nextElement?.focus();
114
+ }
115
+ }
116
+ };
117
+
118
+ React.useEffect(() => {
119
+ const onDigitMouseWheelEventHandler = (event: WheelEvent) => {
120
+ if (event.deltaY < 0) {
121
+ valueChangedRef.current?.(valueRef.current + 1, false);
122
+
123
+ event.stopPropagation();
124
+ event.preventDefault();
125
+ } else if (event.deltaY > 0) {
126
+ valueChangedRef.current?.(valueRef.current - 1, false);
127
+
128
+ event.stopPropagation();
129
+ event.preventDefault();
130
+ }
131
+ };
132
+
133
+ digitEntryRef.current?.addEventListener("wheel", onDigitMouseWheelEventHandler, {
134
+ passive: false
135
+ });
136
+
137
+ return () => {
138
+ digitEntryRef.current?.removeEventListener("wheel", onDigitMouseWheelEventHandler);
139
+ };
140
+ }, [digitEntryRef]);
141
+
142
+ const canIncrement = maximum != null ? value < maximum : true;
143
+ const canDecrement = minimum != null ? value > minimum : true;
144
+
145
+ const DigitEntryIncrementIndicator = (): React.ReactNode => {
146
+ let indicator: React.ReactNode;
147
+
148
+ switch (variant) {
149
+ case "standard":
150
+ indicator = (
151
+ <IndicatorArrowIcon
152
+ className={classNames("okDigitEntryIncrementIndicator")}
153
+ direction={IndicatorArrowDirection.Up}
154
+ color="#343434"
155
+ data-enabled={canIncrement}
156
+ />
157
+ );
158
+ break;
159
+ case "compact":
160
+ indicator = (
161
+ <IndicatorBarIcon
162
+ className={classNames("okDigitEntryIncrementIndicator")}
163
+ color="#343434"
164
+ data-enabled={canIncrement}
165
+ />
166
+ );
167
+ break;
168
+ default:
169
+ indicator = null;
170
+ break;
171
+ }
172
+
173
+ return indicator;
174
+ };
175
+
176
+ const DigitEntryDecrementIndicator = (): React.ReactNode => {
177
+ let indicator: React.ReactNode;
178
+
179
+ switch (variant) {
180
+ case "standard":
181
+ indicator = (
182
+ <IndicatorArrowIcon
183
+ className={classNames("okDigitEntryDecrementIndicator")}
184
+ direction={IndicatorArrowDirection.Down}
185
+ color="#343434"
186
+ data-enabled={canDecrement}
187
+ />
188
+ );
189
+ break;
190
+ case "compact":
191
+ indicator = (
192
+ <IndicatorBarIcon
193
+ className={classNames("okDigitEntryDecrementIndicator")}
194
+ color="#343434"
195
+ data-enabled={canDecrement}
196
+ />
197
+ );
198
+ break;
199
+ default:
200
+ indicator = null;
201
+ break;
202
+ }
203
+
204
+ return indicator;
205
+ };
206
+
207
+ return (
208
+ <div
209
+ className={classNames("okDigitEntry", className, "ok-r-size-" + size)}
210
+ ref={digitEntryRef}
211
+ tabIndex={-1}
212
+ onMouseEnter={(e) => e.currentTarget.focus()}
213
+ onMouseLeave={(e) => e.currentTarget.blur()}
214
+ onKeyDown={onDigitKeyboardEventHandler}>
215
+ <DigitEntryIncrementIndicator />
216
+ <div className={classNames("okDigitEntryContent", "ok-r-size-" + size)}>
217
+ {Math.abs(value).toString(Number(numeralSystem))}
218
+ </div>
219
+ <DigitEntryDecrementIndicator />
220
+ </div>
221
+ );
222
+ };
223
+
224
+ DigitEntry.displayName = "DigitEntry";
225
+
226
+ export default DigitEntry;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Copyright (c) 2024 Opal Kelly Incorporated
3
+ *
4
+ * This source code is licensed under the FrontPanel license.
5
+ * See the LICENSE file found in the root directory of this project.
6
+ */
7
+
8
+ export { default } from "./DigitEntry";
9
+
10
+ export { default as DigitEntryProps } from "./DigitEntry.props";
11
+ export {
12
+ DigitEntryVariant,
13
+ DigitEntrySize,
14
+ DigitEntryValueChangeEventHandler
15
+ } from "./DigitEntry.props";
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Copyright (c) 2024 Opal Kelly Incorporated
3
+ *
4
+ * This source code is licensed under the FrontPanel license.
5
+ * See the LICENSE file found in the root directory of this project.
6
+ */
7
+
8
+ .okIndicator {
9
+ /* Layout */
10
+ display: inline-flex;
11
+ padding: var(--indicator-padding, 6px 12px);
12
+ justify-content: flex-start;
13
+ align-items: baseline;
14
+ gap: 4px;
15
+
16
+ /* Style */
17
+ border-radius: 4px;
18
+ border: 1px solid var(--Gray-2, #d0d7df);
19
+ background: var(--Light, #fff);
20
+
21
+ /* Indicator Icon Style */
22
+ svg.okIndicatorIcon {
23
+ width: var(--indicator-icon-width, 9px);
24
+ height: var(--indicator-icon-height, 9px);
25
+ }
26
+
27
+ /* Label Style */
28
+ .okIndicatorLabel {
29
+ /* Typography */
30
+ color: var(--Dark, #343434);
31
+ text-align: center;
32
+ /* TODO: Determine how to get Inter font */
33
+ font-family: Inter, "Nunito Sans", sans-serif, ui-sans-serif;
34
+ font-size: var(--indicator-font-size, 12px);
35
+ font-style: normal;
36
+ font-weight: 500;
37
+ line-height: var(--indicator-line-height, 12px); /* 100% */
38
+ }
39
+
40
+ /* Size 1 */
41
+ &:where(.ok-r-size-1) {
42
+ --indicator-padding: 6px 12px;
43
+ --indicator-font-size: 12px;
44
+ --indicator-line-height: 12px;
45
+ --indicator-icon-width: 9px;
46
+ --indicator-icon-height: 9px;
47
+ }
48
+
49
+ /* Sizes 2 */
50
+ &:where(.ok-r-size-2) {
51
+ --indicator-padding: 10px 18px;
52
+ --indicator-font-size: 14px;
53
+ --indicator-line-height: 14px;
54
+ --indicator-icon-width: 10px;
55
+ --indicator-icon-height: 10px;
56
+ }
57
+
58
+ /* Sizes 3 */
59
+ &:where(.ok-r-size-3) {
60
+ --indicator-padding: 18px 22px;
61
+ --indicator-font-size: 20px;
62
+ --indicator-line-height: 20px;
63
+ --indicator-icon-width: 15px;
64
+ --indicator-icon-height: 15px;
65
+ }
66
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Copyright (c) 2024 Opal Kelly Incorporated
3
+ *
4
+ * This source code is licensed under the FrontPanel license.
5
+ * See the LICENSE file found in the root directory of this project.
6
+ */
7
+
8
+ export type IndicatorSize = 1 | 2 | 3;
9
+ export type IndicatorState = boolean;
10
+
11
+ /**
12
+ * Interface for the properties of the `Indicator` component.
13
+ */
14
+ interface IndicatorProps {
15
+ /**
16
+ * Label to be displayed on the indicator
17
+ */
18
+ label: string;
19
+
20
+ /**
21
+ * Current state of the indicator
22
+ */
23
+ state: IndicatorState;
24
+
25
+ /**
26
+ * Optional CSS class to apply to the indicator
27
+ */
28
+ className?: string;
29
+
30
+ /**
31
+ * Optional size of the indicator
32
+ * @default 1
33
+ */
34
+ size?: IndicatorSize;
35
+
36
+ /**
37
+ * Optional tooltip text to be displayed on hover
38
+ */
39
+ tooltip?: string;
40
+ }
41
+
42
+ export default IndicatorProps;
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Copyright (c) 2024 Opal Kelly Incorporated
3
+ *
4
+ * This source code is licensed under the FrontPanel license.
5
+ * See the LICENSE file found in the root directory of this project.
6
+ */
7
+
8
+ import type { Meta, StoryObj } from "@storybook/react";
9
+
10
+ import withApplication from "../../stories/decorators/Application.decorator";
11
+
12
+ import Indicator from "./Indicator";
13
+
14
+ // Configure Story metadata
15
+ const meta = {
16
+ title: "Components/Indicator",
17
+ component: Indicator,
18
+ parameters: {
19
+ layout: "centered" // Center the component in the Canvas
20
+ },
21
+ tags: ["autodocs"], // Automatically generate documentation
22
+ argTypes: {
23
+ size: {
24
+ control: { type: "range", min: 1, max: 3, step: 1 }
25
+ },
26
+ state: { control: { type: "boolean" } }
27
+ }
28
+ } satisfies Meta<typeof Indicator>;
29
+
30
+ export default meta;
31
+
32
+ type Story = StoryObj<typeof meta>;
33
+
34
+ // Primary Story
35
+ export const Primary: Story = {
36
+ decorators: [withApplication],
37
+ args: {
38
+ label: "Indicator",
39
+ state: true,
40
+ // Optional Properties
41
+ size: 1,
42
+ tooltip: "Indicator tooltip"
43
+ }
44
+ };
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Copyright (c) 2024 Opal Kelly Incorporated
3
+ *
4
+ * This source code is licensed under the FrontPanel license.
5
+ * See the LICENSE file found in the root directory of this project.
6
+ */
7
+
8
+ import React from "react";
9
+
10
+ import classnames from "classnames";
11
+
12
+ import IndicatorProps from "./Indicator.props";
13
+
14
+ import "../../index.css";
15
+
16
+ import "./Indicator.css";
17
+
18
+ import { withTooltip } from "../TooltipUtility";
19
+
20
+ import { ToggleState } from "../../core";
21
+
22
+ import { IndicatorStateIcon } from "../../components/Icons";
23
+
24
+ type IndicatorElement = React.ElementRef<"span">;
25
+
26
+ /**
27
+ * `Indicator` is a React component that renders an indicator that represents the state of a boolean value with an
28
+ * optional tooltip.
29
+ *
30
+ * @component
31
+ * @param {object} props - Properties passed to component
32
+ * @param {React.Ref} forwardedRef - Forwarded ref for the indicator
33
+ *
34
+ * @returns {React.Node} The rendered Indicator component
35
+ *
36
+ * @example
37
+ * ```jsx
38
+ * <Indicator
39
+ * label="Indicator"
40
+ * state={true} />
41
+ * ```
42
+ */
43
+ const Indicator = React.forwardRef<IndicatorElement, IndicatorProps>((props, forwardedRef) => {
44
+ const { className, label, size = 1, state, ...indicatorProps } = props;
45
+
46
+ const IndicatorWithTooltip = withTooltip(
47
+ <span
48
+ {...indicatorProps}
49
+ ref={forwardedRef}
50
+ className={classnames("okIndicator", className, "ok-r-size-" + size)}>
51
+ <IndicatorStateIcon
52
+ className="okIndicatorIcon"
53
+ state={state ? ToggleState.On : ToggleState.Off}
54
+ />
55
+ <span className={classnames("okIndicatorLabel")}>{label}</span>
56
+ </span>
57
+ );
58
+
59
+ return <IndicatorWithTooltip {...props} />;
60
+ });
61
+
62
+ Indicator.displayName = "Indicator";
63
+
64
+ export default Indicator;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Copyright (c) 2024 Opal Kelly Incorporated
3
+ *
4
+ * This source code is licensed under the FrontPanel license.
5
+ * See the LICENSE file found in the root directory of this project.
6
+ */
7
+
8
+ export { default } from "./Indicator";
9
+
10
+ export { default as IndicatorProps } from "./Indicator.props";
11
+ export { IndicatorSize, IndicatorState } from "./Indicator.props";
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Copyright (c) 2024 Opal Kelly Incorporated
3
+ *
4
+ * This source code is licensed under the FrontPanel license.
5
+ * See the LICENSE file found in the root directory of this project.
6
+ */
7
+
8
+ .okLabel {
9
+ /* Layout */
10
+ display: inline-flex;
11
+ flex-direction: column;
12
+ align-items: flex-start;
13
+ gap: 4px;
14
+
15
+ /* Text Style */
16
+ .okLabelText {
17
+ /* Typography */
18
+ color: var(--Dark, #343434);
19
+ font-family: Inter, "Nunito Sans", sans-serif, ui-sans-serif;
20
+ font-size: 12px;
21
+ font-style: normal;
22
+ font-weight: 400;
23
+ line-height: 12px; /* 100% */
24
+ }
25
+
26
+ /* Label Position Left Top*/
27
+ &:where(.ok-pos-left-top) {
28
+ flex-direction: column;
29
+ align-items: flex-start;
30
+ }
31
+
32
+ /* Label Position Left Bottom*/
33
+ &:where(.ok-pos-left-bottom) {
34
+ flex-direction: column-reverse;
35
+ align-items: flex-start;
36
+ }
37
+
38
+ /* Label Position Right Top*/
39
+ &:where(.ok-pos-right-top) {
40
+ flex-direction: column;
41
+ align-items: flex-end;
42
+ }
43
+
44
+ /* Label Position Right Bottom*/
45
+ &:where(.ok-pos-right-bottom) {
46
+ flex-direction: column-reverse;
47
+ align-items: flex-end;
48
+ }
49
+ }