@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,67 @@
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
+ .okToggle {
9
+ /* Layout */
10
+ display: inline-flex;
11
+ padding: var(--toggle-padding, 6px 12px);
12
+ justify-content: center;
13
+ align-items: center;
14
+ gap: 4px;
15
+
16
+ color: var(--base-white, #fff);
17
+
18
+ /* Style */
19
+ border-width: 0px;
20
+ border-radius: 4px;
21
+ background: var(--brand-12, #44bd84);
22
+
23
+ /* Typography */
24
+ color: var(--Base-White, #fff);
25
+ text-align: center;
26
+ font-family: Inter, "Nunito Sans", sans-serif, ui-sans-serif;
27
+ font-size: var(--toggle-font-size, 12px);
28
+ font-style: normal;
29
+ font-weight: 600;
30
+ line-height: 12px; /* 100% */
31
+
32
+ /* Size 1 */
33
+ &:where(.ok-r-size-1) {
34
+ --toggle-padding: 6px 12px;
35
+ --toggle-font-size: 12px;
36
+ --toggle-line-height: 12px;
37
+ }
38
+
39
+ /* Size 2 */
40
+ &:where(.ok-r-size-2) {
41
+ --toggle-padding: 10px 18px;
42
+ --toggle-font-size: 14px;
43
+ --toggle-line-height: 14px;
44
+ }
45
+
46
+ /* Size 3 */
47
+ &:where(.ok-r-size-3) {
48
+ --toggle-padding: 18px 22px;
49
+ --toggle-font-size: 20px;
50
+ --toggle-line-height: 20px;
51
+ }
52
+ }
53
+
54
+ /* State Disabled */
55
+ .okToggle[data-disabled="true"] {
56
+ background: var(--Gray-2, #d0d7df);
57
+ }
58
+
59
+ /* State On */
60
+ .okToggle[data-state="on"]:not([data-disabled="true"]) {
61
+ background: #329466;
62
+ }
63
+
64
+ /* State Off */
65
+ .okToggle[data-state="off"]:not([data-disabled="true"]) {
66
+ background: var(--brand-12, #44bd84);
67
+ }
@@ -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 { ToggleState } from "../../core";
9
+
10
+ export type ToggleSize = 1 | 2 | 3;
11
+ export type ToggleStateChangeEventHandler = (state: ToggleState) => void;
12
+
13
+ /**
14
+ * Interface for the properties of the `Toggle` component.
15
+ */
16
+ interface ToggleProps extends React.PropsWithChildren<NonNullable<unknown>> {
17
+ /**
18
+ * Current state of the toggle, defined in ToggleState
19
+ */
20
+ state: ToggleState;
21
+
22
+ /**
23
+ * Optional CSS class to apply to the toggle
24
+ */
25
+ className?: string;
26
+
27
+ /**
28
+ * Optional size of the toggle
29
+ * @default 1
30
+ */
31
+ size?: ToggleSize;
32
+
33
+ /**
34
+ * Optional tooltip text to be displayed on hover
35
+ */
36
+ tooltip?: string;
37
+
38
+ /**
39
+ * Optional event handler for the toggle state change event
40
+ */
41
+ onToggleStateChanged?: ToggleStateChangeEventHandler;
42
+ }
43
+
44
+ export default ToggleProps;
@@ -0,0 +1,61 @@
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 Toggle from "./Toggle";
13
+
14
+ import { ToggleState } from "../../core";
15
+
16
+ // Configure Story metadata
17
+ const meta = {
18
+ title: "Components/Toggle",
19
+ component: Toggle,
20
+ parameters: {
21
+ layout: "centered" // Center the component in the Canvas
22
+ },
23
+ tags: ["autodocs"], // Automatically generate documentation
24
+ argTypes: {
25
+ size: {
26
+ control: { type: "range", min: 1, max: 3, step: 1 }
27
+ },
28
+ state: {
29
+ control: "radio",
30
+ options: ["On", "Off"],
31
+ mapping: {
32
+ On: ToggleState.On,
33
+ Off: ToggleState.Off
34
+ }
35
+ },
36
+ disabled: { control: "boolean" },
37
+ // Disable event callback arguments
38
+ onToggleStateChanged: {
39
+ control: { disable: true }
40
+ }
41
+ }
42
+ } satisfies Meta<typeof Toggle>;
43
+
44
+ export default meta;
45
+
46
+ type Story = StoryObj<typeof meta>;
47
+
48
+ // Primary Story
49
+ export const Primary: Story = {
50
+ render: (args) => (
51
+ <Toggle {...args}>
52
+ <span>Toggle</span>
53
+ </Toggle>
54
+ ),
55
+ args: {
56
+ state: ToggleState.Off,
57
+ // Optional Properties
58
+ disabled: false,
59
+ size: 1
60
+ }
61
+ };
@@ -0,0 +1,90 @@
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 ToggleProps from "./Toggle.props";
13
+
14
+ import "../../index.css";
15
+
16
+ import "./Toggle.css";
17
+
18
+ import { ToggleState } from "../../core";
19
+
20
+ type ToggleElement = React.ElementRef<"button">;
21
+
22
+ interface ToggleCombinedProps extends React.ComponentPropsWithoutRef<"button">, ToggleProps {}
23
+
24
+ export type { ToggleCombinedProps };
25
+
26
+ /**
27
+ * `Toggle` is a React component that renders a toggle button to toggle between an "on" and "off"
28
+ * state when the button is clicked. Notification of the state transtion is provided through the
29
+ * `onToggleStateChanged` event handler.
30
+ *
31
+ * @component
32
+ * @param {Object} props - The properties that define the `Toggle` component.
33
+ * @param {React.Ref<ToggleElement>} forwardedRef - A ref that is forwarded to the `Toggle` component.
34
+ *
35
+ * @returns {React.ReactElement} The `Toggle` component.
36
+ *
37
+ * @example
38
+ * ```jsx
39
+ * <Toggle
40
+ * state={ToggleState.On}
41
+ * onToggleStateChanged={(newState) => console.log(newState)}>
42
+ * <span>Toggle<span>
43
+ * </Toggle>
44
+ * ```
45
+ */
46
+ const Toggle = React.forwardRef<ToggleElement, ToggleCombinedProps>((props, forwardedRef) => {
47
+ const {
48
+ className,
49
+ size = 1,
50
+ disabled = false,
51
+ tooltip,
52
+ state,
53
+ children,
54
+ onToggleStateChanged,
55
+ ...toggleProps
56
+ } = props;
57
+
58
+ const dataState: string = React.useMemo(() => {
59
+ switch (state) {
60
+ case ToggleState.On:
61
+ return "on";
62
+ case ToggleState.Off:
63
+ return "off";
64
+ default:
65
+ return "indeterminate";
66
+ }
67
+ }, [state]);
68
+
69
+ const OnButtonClick = React.useCallback((): void => {
70
+ const newState: ToggleState = state === ToggleState.On ? ToggleState.Off : ToggleState.On;
71
+
72
+ onToggleStateChanged?.(newState);
73
+ }, [state]);
74
+
75
+ return (
76
+ <button
77
+ data-disabled={disabled || undefined}
78
+ ref={forwardedRef}
79
+ {...toggleProps}
80
+ className={classNames("okToggle", className, "ok-r-size-" + size)}
81
+ data-state={dataState}
82
+ onClick={OnButtonClick}>
83
+ {children}
84
+ </button>
85
+ );
86
+ });
87
+
88
+ Toggle.displayName = "Toggle";
89
+
90
+ export default Toggle;
@@ -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 "./Toggle";
9
+
10
+ export { default as ToggleProps } from "./Toggle.props";
11
+ export { ToggleSize, ToggleStateChangeEventHandler } from "./Toggle.props";
@@ -0,0 +1,118 @@
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
+ .okToggleSwitchRoot {
9
+ /* Layout */
10
+ display: inline-flex;
11
+ justify-content: center;
12
+ align-items: center;
13
+ gap: 4px;
14
+
15
+ /* Style */
16
+ border-radius: 4px;
17
+
18
+ /* Switch Style */
19
+ .okToggleSwitch {
20
+ /* Layout */
21
+ display: flex;
22
+ width: var(--toggle-switch-width, 16.5px);
23
+ height: var(--toggle-switch-height, 9px);
24
+ padding: var(--toggle-switch-padding, 0.75px);
25
+ align-items: center;
26
+
27
+ /* Style */
28
+ border-width: 0px;
29
+ border-radius: var(--toggle-switch-border-radius, 4.5px);
30
+ background: var(--Gray-2, #d0d7df);
31
+
32
+ /* Switch Icon Style */
33
+ .okIndicatorIcon {
34
+ width: var(--toggle-switch-icon-width, 9px);
35
+ height: var(--toggle-switch-icon-height, 9px);
36
+ }
37
+ }
38
+
39
+ /* Label Style */
40
+ .okToggleSwitchLabel {
41
+ /* Typography */
42
+ color: var(--Dark, #343434);
43
+ text-align: center;
44
+ font-family: Inter, "Nunito Sans", sans-serif, ui-sans-serif;
45
+ font-size: var(--toggle-switch-font-size, 12px);
46
+ font-style: normal;
47
+ font-weight: 500;
48
+ line-height: var(--toggle-switch-line-height, 12px); /* 100% */
49
+ }
50
+
51
+ /* Size 1 */
52
+ &:where(.ok-r-size-1) {
53
+ --toggle-switch-width: 16.5px;
54
+ --toggle-switch-height: 9px;
55
+
56
+ --toggle-switch-padding: 0.75px;
57
+ --toggle-switch-border-radius: 4.5px;
58
+
59
+ --toggle-switch-font-size: 12px;
60
+ --toggle-switch-line-height: 12px;
61
+
62
+ --toggle-switch-icon-width: 7.5px;
63
+ --toggle-switch-icon-height: 7.5px;
64
+ }
65
+
66
+ /* Sizes 2*/
67
+ &:where(.ok-r-size-2) {
68
+ --toggle-switch-width: 18.333px;
69
+ --toggle-switch-height: 10px;
70
+
71
+ --toggle-switch-padding: 0.883px;
72
+ --toggle-switch-border-radius: 5px;
73
+
74
+ --toggle-switch-font-size: 14px;
75
+ --toggle-switch-line-height: 14px;
76
+
77
+ --toggle-switch-icon-width: 8.33px;
78
+ --toggle-switch-icon-height: 8.33px;
79
+ }
80
+
81
+ /* Sizes 3*/
82
+ &:where(.ok-r-size-3) {
83
+ --toggle-switch-width: 27.5px;
84
+ --toggle-switch-height: 15px;
85
+
86
+ --toggle-switch-padding: 1.25px;
87
+ --toggle-switch-border-radius: 7.5px;
88
+
89
+ --toggle-switch-font-size: 20px;
90
+ --toggle-switch-line-height: 20px;
91
+
92
+ --toggle-switch-icon-width: 12.5px;
93
+ --toggle-switch-icon-height: 12.5px;
94
+ }
95
+ }
96
+
97
+ /* State Disabled */
98
+ .okToggleSwitchRoot[data-disabled="true"] {
99
+ opacity: 0.5;
100
+ }
101
+
102
+ /* State On */
103
+ .okToggleSwitch[data-state="on"] {
104
+ justify-content: flex-end;
105
+ }
106
+
107
+ .okToggleSwitch[data-state="on"]:not([data-disabled="true"]) {
108
+ background: var(--brand-12, #44bd84);
109
+ }
110
+
111
+ /* State Off */
112
+ .okToggleSwitch[data-state="off"] {
113
+ justify-content: flex-start;
114
+ }
115
+
116
+ .okToggleSwitch[data-state="off"]:not([data-disabled="true"]) {
117
+ background: var(--Gray-2, #d0d7df);
118
+ }
@@ -0,0 +1,26 @@
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 ToggleProps from "../Toggle/Toggle.props";
9
+
10
+ /**
11
+ * Interface for the properties of the `ToggleSwitch` component.
12
+ */
13
+ interface ToggleSwitchProps extends ToggleProps {
14
+ /**
15
+ * Label to be displayed on the toggle switch
16
+ */
17
+ label: string;
18
+
19
+ /**
20
+ * Optional disable the toggle switch
21
+ * @default false
22
+ */
23
+ disabled?: boolean;
24
+ }
25
+
26
+ export default ToggleSwitchProps;
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Copyright (c) 2024 Opal Kelly Incorporated
3
+ *
4
+ * This source code is licensed under the FrontPanel license.
5
+ * See the LICENSE file found in the root directory of this project.
6
+ */
7
+
8
+ import React from "react";
9
+
10
+ import type { Meta, StoryObj } from "@storybook/react";
11
+
12
+ import { useArgs } from "@storybook/preview-api";
13
+
14
+ import withApplication from "../../stories/decorators/Application.decorator";
15
+
16
+ import ToggleSwitch from "./ToggleSwitch";
17
+
18
+ import { ToggleState } from "../../core";
19
+
20
+ // Configure Story metadata
21
+ const meta = {
22
+ title: "Components/ToggleSwitch",
23
+ component: ToggleSwitch,
24
+ parameters: {
25
+ layout: "centered" // Center the component in the Canvas
26
+ },
27
+ tags: ["autodocs"], // Automatically generate documentation
28
+ argTypes: {
29
+ size: {
30
+ control: { type: "range", min: 1, max: 3, step: 1 }
31
+ },
32
+ state: {
33
+ control: "radio",
34
+ options: ["On", "Off"],
35
+ mapping: {
36
+ On: ToggleState.On,
37
+ Off: ToggleState.Off
38
+ }
39
+ },
40
+ disabled: { control: "boolean" },
41
+ // Disable event callback arguments
42
+ onToggleStateChanged: {
43
+ control: { disable: true }
44
+ }
45
+ }
46
+ } satisfies Meta<typeof ToggleSwitch>;
47
+
48
+ export default meta;
49
+
50
+ type Story = StoryObj<typeof meta>;
51
+
52
+ // Template for Stories
53
+ const ComponentTemplate: Story = {
54
+ render: (args) => {
55
+ const [{ state }, updateArgs] = useArgs();
56
+
57
+ function onToggleStateChange(state: ToggleState): void {
58
+ updateArgs({ state: state });
59
+ }
60
+
61
+ return <ToggleSwitch {...args} state={state} onToggleStateChanged={onToggleStateChange} />;
62
+ },
63
+ decorators: [withApplication],
64
+ args: {
65
+ label: "Toggle",
66
+ state: ToggleState.On,
67
+ // Optional Properties
68
+ disabled: false,
69
+ size: 1,
70
+ tooltip: "Toggle switch tooltip"
71
+ }
72
+ };
73
+
74
+ // Primary Story
75
+ export const Primary: Story = {
76
+ ...ComponentTemplate,
77
+ args: {
78
+ label: "Toggle",
79
+ state: ToggleState.On,
80
+ // Optional Properties
81
+ disabled: false,
82
+ size: 1,
83
+ tooltip: "Toggle switch tooltip"
84
+ }
85
+ };
@@ -0,0 +1,73 @@
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 Toggle from "../Toggle/Toggle";
13
+
14
+ import ToggleSwitchProps from "./ToggleSwitch.props";
15
+
16
+ import "../../index.css";
17
+
18
+ import "./ToggleSwitch.css";
19
+
20
+ import { withTooltip } from "../TooltipUtility";
21
+
22
+ import { SwitchToggleStateIcon } from "../../components/Icons";
23
+
24
+ type ToggleSwitchElement = React.ElementRef<typeof Toggle>;
25
+
26
+ /**
27
+ * `ToggleSwitch` is a React component that renders a toggle switch with a label and a switch button
28
+ * that represents the current toggle state. When the switch is clicked, the toggle
29
+ * state will transition to the next state. Notification of the state transtion is provided through the
30
+ * `onToggleStateChanged` event handler.
31
+ *
32
+ * @component
33
+ * @param {Object} props - Properties passed to component
34
+ * @param {React.Ref<ToggleSwitchElement>} forwardedRef - Forwarded ref for the button
35
+ *
36
+ * @returns {React.ReactElement} The rendered ToggleSwitch component
37
+ *
38
+ * @example
39
+ * ```jsx
40
+ * <ToggleSwitch
41
+ * label="Toggle"
42
+ * state={ToggleState.On}
43
+ * onToggleStateChanged={(newState) => console.log(newState)} />
44
+ * ```
45
+ */
46
+ const ToggleSwitch = React.forwardRef<ToggleSwitchElement, ToggleSwitchProps>(
47
+ (props, forwardedRef) => {
48
+ const { className, size = 1, label, disabled = false, state, ...toggleSwitchProps } = props;
49
+
50
+ const ToggleButtonWithTooltip = withTooltip(
51
+ <span
52
+ className={classnames("okToggleSwitchRoot", className, "ok-r-size-" + size)}
53
+ data-disabled={disabled || undefined}>
54
+ <Toggle
55
+ className={classnames("okToggleSwitch")}
56
+ ref={forwardedRef}
57
+ {...toggleSwitchProps}
58
+ size={size}
59
+ disabled={disabled}
60
+ state={state}>
61
+ <SwitchToggleStateIcon className="okIndicatorIcon" state={state} />
62
+ </Toggle>
63
+ <span className={classnames("okToggleSwitchLabel")}>{label}</span>
64
+ </span>
65
+ );
66
+
67
+ return <ToggleButtonWithTooltip {...props} />;
68
+ }
69
+ );
70
+
71
+ ToggleSwitch.displayName = "ToggleSwitch";
72
+
73
+ export default ToggleSwitch;
@@ -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
+
8
+ export { default } from "./ToggleSwitch";
9
+
10
+ export { default as ToggleSwitchProps } from "./ToggleSwitch.props";
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Copyright (c) 2024 Opal Kelly Incorporated
3
+ *
4
+ * This source code is licensed under the FrontPanel license.
5
+ * See the LICENSE file found in the root directory of this project.
6
+ */
7
+
8
+ .okTooltipContent {
9
+ /* Layout */
10
+ display: flex;
11
+ padding: 10px;
12
+ align-items: flex-end;
13
+
14
+ /* Style */
15
+ border-radius: 4px;
16
+ background: var(--Dark, #343434);
17
+
18
+ /* Drop shadow - tiny */
19
+ box-shadow: 0px 1px 4px 0px rgba(0, 0, 0, 0.24);
20
+
21
+ user-select: none;
22
+ animation-duration: 200ms;
23
+ animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
24
+ will-change: transform, opacity;
25
+ }
26
+
27
+ .okTooltipContent[data-state="delayed-open"][data-side="top"] {
28
+ animation-name: slideDownAndFade;
29
+ }
30
+ .okTooltipContent[data-state="delayed-open"][data-side="right"] {
31
+ animation-name: slideLeftAndFade;
32
+ }
33
+ .okTooltipContent[data-state="delayed-open"][data-side="bottom"] {
34
+ animation-name: slideUpAndFade;
35
+ }
36
+ .okTooltipContent[data-state="delayed-open"][data-side="left"] {
37
+ animation-name: slideRightAndFade;
38
+ }
39
+
40
+ .okTooltipText {
41
+ /* Typography */
42
+ color: var(--Light, #fff);
43
+ text-align: center;
44
+ font-family: Inter, "Nunito Sans", sans-serif, ui-sans-serif;
45
+ font-size: 12px;
46
+ font-style: normal;
47
+ font-weight: 400;
48
+ line-height: 12px; /* 100% */
49
+ }
50
+
51
+ @keyframes slideUpAndFade {
52
+ from {
53
+ opacity: 0;
54
+ transform: translateY(2px);
55
+ }
56
+ to {
57
+ opacity: 1;
58
+ transform: translateY(0);
59
+ }
60
+ }
61
+
62
+ @keyframes slideRightAndFade {
63
+ from {
64
+ opacity: 0;
65
+ transform: translateX(-2px);
66
+ }
67
+ to {
68
+ opacity: 1;
69
+ transform: translateX(0);
70
+ }
71
+ }
72
+
73
+ @keyframes slideDownAndFade {
74
+ from {
75
+ opacity: 0;
76
+ transform: translateY(-2px);
77
+ }
78
+ to {
79
+ opacity: 1;
80
+ transform: translateY(0);
81
+ }
82
+ }
83
+
84
+ @keyframes slideLeftAndFade {
85
+ from {
86
+ opacity: 0;
87
+ transform: translateX(2px);
88
+ }
89
+ to {
90
+ opacity: 1;
91
+ transform: translateX(0);
92
+ }
93
+ }
@@ -0,0 +1,20 @@
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 { ReactNode } from "react";
9
+
10
+ /**
11
+ * Interface for the properties of the `Tooltip` component.
12
+ */
13
+ interface TooltipProps extends React.PropsWithChildren<NonNullable<unknown>> {
14
+ /**
15
+ * Content to be displayed within the tooltip
16
+ */
17
+ content: ReactNode;
18
+ }
19
+
20
+ export default TooltipProps;