@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,63 @@
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 * as SelectPrimitive from "@radix-ui/react-select";
11
+ import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
12
+
13
+ import classNames from "classnames";
14
+
15
+ import { SelectEntryContext } from "./SelectEntryRoot";
16
+
17
+ import "../../index.css";
18
+
19
+ import "./SelectEntryContent.css";
20
+
21
+ type SelectEntryContentElement = React.ElementRef<typeof SelectPrimitive.Content>;
22
+
23
+ interface SelectContentCombinedProps
24
+ extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content> {
25
+ container?: React.ComponentProps<typeof SelectPrimitive.Portal>["container"];
26
+ }
27
+
28
+ export type { SelectContentCombinedProps };
29
+
30
+ const SelectEntryContent = React.forwardRef<SelectEntryContentElement, SelectContentCombinedProps>(
31
+ (props, forwardedRef) => {
32
+ const { className, children, container, ...contentProps } = props;
33
+ const { size } = React.useContext(SelectEntryContext);
34
+ return (
35
+ <SelectPrimitive.Portal container={container}>
36
+ <SelectPrimitive.Content
37
+ sideOffset={4}
38
+ {...contentProps}
39
+ ref={forwardedRef}
40
+ className={classNames("okSelectEntryContent", className, "ok-r-size-" + size)}
41
+ position="popper"
42
+ align="start">
43
+ <ScrollAreaPrimitive.Root type="auto" className="okScrollArea">
44
+ <SelectPrimitive.Viewport asChild>
45
+ <ScrollAreaPrimitive.Viewport className="okScrollAreaViewport">
46
+ <div className="okSelectEntryContentInner">{children}</div>
47
+ </ScrollAreaPrimitive.Viewport>
48
+ </SelectPrimitive.Viewport>
49
+ <ScrollAreaPrimitive.Scrollbar
50
+ className="okScrollAreaScrollbar"
51
+ orientation="vertical">
52
+ <ScrollAreaPrimitive.Thumb className="okScrollAreaThumb" />
53
+ </ScrollAreaPrimitive.Scrollbar>
54
+ </ScrollAreaPrimitive.Root>
55
+ </SelectPrimitive.Content>
56
+ </SelectPrimitive.Portal>
57
+ );
58
+ }
59
+ );
60
+
61
+ SelectEntryContent.displayName = "SelectEntryContent";
62
+
63
+ export default SelectEntryContent;
@@ -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
+
8
+ .okSelectEntryGroup {
9
+ /* Layout */
10
+ display: flex;
11
+ padding: 0px;
12
+ flex-direction: column;
13
+ justify-content: center;
14
+ align-items: flex-start;
15
+ align-self: stretch;
16
+ gap: 10px;
17
+ }
@@ -0,0 +1,37 @@
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 * as SelectPrimitive from "@radix-ui/react-select";
11
+
12
+ import classNames from "classnames";
13
+
14
+ import "../../index.css";
15
+
16
+ import "./SelectEntryGroup.css";
17
+
18
+ type SelectEntryGroupElement = React.ElementRef<typeof SelectPrimitive.Group>;
19
+
20
+ interface SelectEntryGroupCombinedProps
21
+ extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Group> {}
22
+
23
+ export type { SelectEntryGroupCombinedProps };
24
+
25
+ const SelectEntryGroup = React.forwardRef<SelectEntryGroupElement, SelectEntryGroupCombinedProps>(
26
+ (props, forwardedRef) => (
27
+ <SelectPrimitive.Group
28
+ {...props}
29
+ ref={forwardedRef}
30
+ className={classNames("okSelectEntryGroup", props.className)}
31
+ />
32
+ )
33
+ );
34
+
35
+ SelectEntryGroup.displayName = "SelectEntryGroup";
36
+
37
+ export default SelectEntryGroup;
@@ -0,0 +1,35 @@
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
+ .okSelectEntryItem {
9
+ /* Layout */
10
+ display: flex;
11
+ align-items: center;
12
+ gap: 4px;
13
+
14
+ /* Style */
15
+ color: var(--Dark, #343434);
16
+ font-family: Inter, "Nunito Sans", sans-serif, ui-sans-serif;
17
+ font-size: 14px;
18
+ font-style: normal;
19
+ font-weight: 400;
20
+ line-height: 14px; /* 100% */
21
+
22
+ /* Indicator Style */
23
+ .okSelectEntryItemIndicator {
24
+ width: 14px;
25
+ height: 14px;
26
+ }
27
+ }
28
+
29
+ .okSelectEntryItem[data-disabled] {
30
+ opacity: 0.5;
31
+ pointer-events: none;
32
+ }
33
+ .okSelectEntryItem[data-highlighted] {
34
+ outline: none;
35
+ }
@@ -0,0 +1,51 @@
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 * as SelectPrimitive from "@radix-ui/react-select";
11
+
12
+ import classNames from "classnames";
13
+
14
+ import { SelectEntryContext } from "./SelectEntryRoot";
15
+
16
+ import "../../index.css";
17
+
18
+ import "./SelectEntryItem.css";
19
+
20
+ import { ToggleState } from "../../core";
21
+
22
+ import { RadioToggleStateIcon } from "../../components/Icons";
23
+
24
+ type SelectEntryItemElement = React.ElementRef<typeof SelectPrimitive.Item>;
25
+
26
+ interface SelectEntryItemCombinedProps
27
+ extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item> {}
28
+
29
+ export type { SelectEntryItemCombinedProps };
30
+
31
+ const SelectEntryItem = React.forwardRef<SelectEntryItemElement, SelectEntryItemCombinedProps>(
32
+ (props, forwardedRef) => {
33
+ const { className, children, ...itemProps } = props;
34
+ const { size, value } = React.useContext(SelectEntryContext);
35
+ return (
36
+ <SelectPrimitive.Item
37
+ {...itemProps}
38
+ ref={forwardedRef}
39
+ className={classNames("okSelectEntryItem", className, "ok-r-size-" + size)}>
40
+ <RadioToggleStateIcon
41
+ state={value === props.value ? ToggleState.On : ToggleState.Off}
42
+ />
43
+ <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>
44
+ </SelectPrimitive.Item>
45
+ );
46
+ }
47
+ );
48
+
49
+ SelectEntryItem.displayName = "SelectEntryItem";
50
+
51
+ export default SelectEntryItem;
@@ -0,0 +1,16 @@
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
+ .okSelectEntryLabel {
9
+ /* Typography */
10
+ color: var(--Gray-1, #989da3);
11
+ font-family: Inter, "Nunito Sans", sans-serif, ui-sans-serif;
12
+ font-size: 10px;
13
+ font-style: normal;
14
+ font-weight: 300;
15
+ line-height: 12px; /* 120% */
16
+ }
@@ -0,0 +1,43 @@
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 * as SelectPrimitive from "@radix-ui/react-select";
11
+
12
+ import classNames from "classnames";
13
+
14
+ import { SelectEntryContext } from "./SelectEntryRoot";
15
+
16
+ import "../../index.css";
17
+
18
+ import "./SelectEntryLabel.css";
19
+
20
+ type SelectEntryLabelElement = React.ElementRef<typeof SelectPrimitive.Label>;
21
+
22
+ interface SelectEntryLabelCombinedProps
23
+ extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label> {}
24
+
25
+ export type { SelectEntryLabelCombinedProps };
26
+
27
+ const SelectEntryLabel = React.forwardRef<SelectEntryLabelElement, SelectEntryLabelCombinedProps>(
28
+ (props, forwardedRef) => {
29
+ const { className, ...labelProps } = props;
30
+ const { size } = React.useContext(SelectEntryContext);
31
+ return (
32
+ <SelectPrimitive.Label
33
+ {...labelProps}
34
+ ref={forwardedRef}
35
+ className={classNames("okSelectEntryLabel", className, "ok-r-size-" + size)}
36
+ />
37
+ );
38
+ }
39
+ );
40
+
41
+ SelectEntryLabel.displayName = "SelectEntryLabel";
42
+
43
+ export default SelectEntryLabel;
@@ -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
+ .okSelectEntryRootLabel {
9
+ width: 100%;
10
+ }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Copyright (c) 2024 Opal Kelly Incorporated
3
+ *
4
+ * This source code is licensed under the FrontPanel license.
5
+ * See the LICENSE file found in the root directory of this project.
6
+ */
7
+
8
+ import LabelProps from "../Label/Label.props";
9
+
10
+ export type SelectEntrySize = 1 | 2 | 3;
11
+
12
+ /**
13
+ * Interface for the properties of the `SelectEntryRoot` component.
14
+ */
15
+ interface SelectEntryRootProps {
16
+ /**
17
+ * Optional CSS class to apply to the select entry root
18
+ */
19
+ className?: string;
20
+
21
+ /**
22
+ * Optional label properties for the select entry root
23
+ */
24
+ label?: LabelProps;
25
+
26
+ /**
27
+ * Optional size of the select entry root
28
+ * @default 1
29
+ */
30
+ size?: SelectEntrySize;
31
+
32
+ /**
33
+ * Optional tooltip text to be displayed on hover
34
+ */
35
+ tooltip?: string;
36
+ }
37
+
38
+ export default SelectEntryRootProps;
@@ -0,0 +1,69 @@
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 * as SelectPrimitive from "@radix-ui/react-select";
11
+
12
+ import SelectEntryRootProps from "./SelectEntryRoot.props";
13
+
14
+ type SelectEntryContextValue = SelectEntryRootCombinedProps;
15
+
16
+ export const SelectEntryContext = React.createContext<SelectEntryContextValue>({
17
+ label: { text: "", horizontalPosition: "right", verticalPosition: "top" },
18
+ size: 1,
19
+ value: undefined
20
+ });
21
+
22
+ interface SelectEntryRootCombinedProps
23
+ extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Root>,
24
+ SelectEntryRootProps {}
25
+
26
+ export type { SelectEntryRootCombinedProps };
27
+
28
+ /**
29
+ * `SelectEntryRoot` is a React component that is the root component of a select entry. The children of this
30
+ * component are used to specify the component parts. The parts include the trigger that can be clicked on to
31
+ * show a list of options to select from, and the content that is the list of options.
32
+ *
33
+ * @component
34
+ * @param {object} props - Properties passed to component
35
+ *
36
+ * @returns {ReactNode} The rendered SelectEntryRoot component
37
+ *
38
+ * @example
39
+ * ```jsx
40
+ * <SelectEntryRoot>
41
+ * <SelectEntry.Trigger />
42
+ * <SelectEntry.Content>
43
+ * <SelectEntry.Group>
44
+ * <SelectEntry.Label>Options</SelectEntry.Label>
45
+ * <SelectEntry.Item value="0">Option 0</SelectEntry.Item>
46
+ * <SelectEntry.Item value="1">Option 1</SelectEntry.Item>
47
+ * </SelectEntry.Group>
48
+ * </SelectEntry.Content>
49
+ * </SelectEntryRoot>
50
+ * ```
51
+ */
52
+ const SelectEntryRoot: React.FC<SelectEntryRootCombinedProps> = (props) => {
53
+ const { label, children, size = 1, tooltip, value, ...rootProps } = props;
54
+ return (
55
+ <SelectPrimitive.Root value={value} {...rootProps}>
56
+ <SelectEntryContext.Provider
57
+ value={React.useMemo(
58
+ () => ({ label, size, tooltip, value }),
59
+ [label, size, tooltip, value]
60
+ )}>
61
+ {children}
62
+ </SelectEntryContext.Provider>
63
+ </SelectPrimitive.Root>
64
+ );
65
+ };
66
+
67
+ SelectEntryRoot.displayName = "SelectEntryRoot";
68
+
69
+ export default SelectEntryRoot;
@@ -0,0 +1,12 @@
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
+ .okSelectEntrySeparator {
9
+ height: 1px;
10
+
11
+ background: #d0d7df;
12
+ }
@@ -0,0 +1,38 @@
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 * as SelectPrimitive from "@radix-ui/react-select";
11
+
12
+ import classNames from "classnames";
13
+
14
+ import "../../index.css";
15
+
16
+ import "./SelectEntrySeparator.css";
17
+
18
+ type SelectEntrySeparatorElement = React.ElementRef<typeof SelectPrimitive.Separator>;
19
+
20
+ interface SelectEntrySeparatorCombinedProps
21
+ extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator> {}
22
+
23
+ export type { SelectEntrySeparatorCombinedProps };
24
+
25
+ const SelectEntrySeparator = React.forwardRef<
26
+ SelectEntrySeparatorElement,
27
+ SelectEntrySeparatorCombinedProps
28
+ >((props, forwardedRef) => (
29
+ <SelectPrimitive.Separator
30
+ {...props}
31
+ ref={forwardedRef}
32
+ className={classNames("okSelectEntrySeparator", props.className)}
33
+ />
34
+ ));
35
+
36
+ SelectEntrySeparator.displayName = "SelectEntrySeparator";
37
+
38
+ export default SelectEntrySeparator;
@@ -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
+ .okSelectEntryTrigger {
9
+ /* Layout */
10
+ display: flex;
11
+ padding: 0px 18px;
12
+ justify-content: space-between;
13
+ align-items: center;
14
+ gap: 8px;
15
+
16
+ /* Style */
17
+ border-radius: 4px;
18
+ border: 1px solid var(--Gray-2, #d0d7df);
19
+ background: var(--Light, #fff);
20
+
21
+ /* Typography */
22
+ color: var(--Dark, #343434);
23
+ font-family: Inter, "Nunito Sans", sans-serif, ui-sans-serif;
24
+ font-size: 14px;
25
+ font-style: normal;
26
+ font-weight: 400;
27
+ line-height: 14px; /* 100% */
28
+
29
+ /* State Disabled */
30
+ &:is(:disabled) {
31
+ opacity: 0.5;
32
+ background: var(--Gray-3, #e7ebef);
33
+ }
34
+ }
35
+
36
+ .okSelectEntryTriggerInner {
37
+ /* Layout */
38
+ padding: 10px 0px;
39
+
40
+ /* Style */
41
+ overflow: hidden;
42
+ text-overflow: ellipsis;
43
+ white-space: nowrap;
44
+ }
45
+
46
+ /* State Disabled */
47
+ .okSelectEntryTrigger[data-disabled="true"] {
48
+ opacity: 0.5;
49
+ }
@@ -0,0 +1,18 @@
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
+ /**
9
+ * Interface for the properties of the `SelectEntryTrigger` component.
10
+ */
11
+ interface SelectEntryTriggerProps {
12
+ /**
13
+ * Optional placeholder text to be displayed when no value is selected
14
+ */
15
+ placeholder?: string;
16
+ }
17
+
18
+ export default SelectEntryTriggerProps;
@@ -0,0 +1,111 @@
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, { useContext } from "react";
9
+
10
+ import * as SelectPrimitive from "@radix-ui/react-select";
11
+
12
+ import classNames from "classnames";
13
+
14
+ import { SelectEntryContext } from "./SelectEntryRoot";
15
+
16
+ import SelectEntryTriggerProps from "./SelectEntryTrigger.props";
17
+
18
+ import "../../index.css";
19
+
20
+ import "./SelectEntryTrigger.css";
21
+
22
+ import { ChevronIcon, ChevronDirection } from "../../components/Icons";
23
+
24
+ import Label from "../Label";
25
+ import Tooltip from "../Tooltip";
26
+
27
+ type SelectEntryTriggerElement = React.ElementRef<typeof SelectPrimitive.Trigger>;
28
+
29
+ interface SelectEntryTriggerCombinedProps
30
+ extends Omit<React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>, "asChild">,
31
+ SelectEntryTriggerProps {}
32
+
33
+ export type { SelectEntryTriggerCombinedProps };
34
+
35
+ const SelectEntryTrigger = React.forwardRef<
36
+ SelectEntryTriggerElement,
37
+ SelectEntryTriggerCombinedProps
38
+ >((props, forwardedRef) => {
39
+ const { label, tooltip, ...triggerProps } = useContext(SelectEntryContext);
40
+
41
+ const showLabel = label != null;
42
+ const showTooltip = tooltip != null;
43
+
44
+ if (showLabel && showTooltip) {
45
+ return (
46
+ <Label {...label}>
47
+ <Tooltip content={tooltip}>
48
+ <SelectEntryTriggerImpl
49
+ ref={forwardedRef}
50
+ {...props}
51
+ style={{ width: "100%" }}
52
+ />
53
+ </Tooltip>
54
+ </Label>
55
+ );
56
+ } else if (showLabel) {
57
+ return (
58
+ <Label {...label}>
59
+ <SelectEntryTriggerImpl
60
+ ref={forwardedRef}
61
+ {...triggerProps}
62
+ style={{ width: "100%" }}
63
+ />
64
+ </Label>
65
+ );
66
+ } else if (showTooltip) {
67
+ return (
68
+ <Tooltip content={tooltip}>
69
+ <div>
70
+ <SelectEntryTriggerImpl ref={forwardedRef} {...triggerProps} />
71
+ </div>
72
+ </Tooltip>
73
+ );
74
+ } else {
75
+ return <SelectEntryTriggerImpl ref={forwardedRef} {...triggerProps} />;
76
+ }
77
+ });
78
+
79
+ SelectEntryTrigger.displayName = "SelectEntryTrigger";
80
+
81
+ export default SelectEntryTrigger;
82
+
83
+ interface SelectTriggerEntryImplProps
84
+ extends Omit<React.ComponentPropsWithoutRef<typeof SelectEntryTrigger>, "label" | "tooltip"> {}
85
+
86
+ const SelectEntryTriggerImpl = React.forwardRef<
87
+ SelectEntryTriggerElement,
88
+ SelectTriggerEntryImplProps
89
+ >((props, forwardedRef) => {
90
+ const { className, placeholder, ...triggerProps } = props;
91
+
92
+ const { size } = React.useContext(SelectEntryContext);
93
+
94
+ return (
95
+ <SelectPrimitive.Trigger asChild>
96
+ <button
97
+ {...triggerProps}
98
+ ref={forwardedRef}
99
+ className={classNames("okSelectEntryTrigger", className, "ok-r-size-" + size)}>
100
+ <span className="okSelectEntryTriggerInner">
101
+ <SelectPrimitive.Value placeholder={placeholder} />
102
+ </span>
103
+ <SelectPrimitive.Icon asChild>
104
+ <ChevronIcon direction={ChevronDirection.Down} />
105
+ </SelectPrimitive.Icon>
106
+ </button>
107
+ </SelectPrimitive.Trigger>
108
+ );
109
+ });
110
+
111
+ SelectEntryTriggerImpl.displayName = "SelectEntryTriggerImpl";
@@ -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
+ export { default } from "./SelectEntry";
9
+ export { default as SelectEntryRoot } from "./SelectEntryRoot";
10
+ export { default as SelectEntryTrigger } from "./SelectEntryTrigger";
11
+ export { default as SelectEntryContent } from "./SelectEntryContent";
12
+ export { default as SelectEntryItem } from "./SelectEntryItem";
13
+ export { default as SelectEntryGroup } from "./SelectEntryGroup";
14
+ export { default as SelectEntryLabel } from "./SelectEntryLabel";
15
+ export { default as SelectEntrySeparator } from "./SelectEntrySeparator";
16
+
17
+ export { default as SelectEntryRootProps } from "./SelectEntryRoot.props";
18
+ export { SelectEntrySize } from "./SelectEntryRoot.props";
19
+
20
+ export { default as SelectEntryTriggerProps } from "./SelectEntryTrigger.props";