@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.
- package/LICENSE +45 -0
- package/README.md +26 -0
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/types/components/FrontPanel/FrontPanel.d.ts +10 -0
- package/dist/cjs/types/components/FrontPanel/FrontPanel.props.d.ts +23 -0
- package/dist/cjs/types/components/FrontPanel/index.d.ts +7 -0
- package/dist/cjs/types/components/FrontPanelIndicator/FrontPanelIndicator.d.ts +30 -0
- package/dist/cjs/types/components/FrontPanelIndicator/FrontPanelIndicator.props.d.ts +17 -0
- package/dist/cjs/types/components/FrontPanelIndicator/index.d.ts +8 -0
- package/dist/cjs/types/components/FrontPanelNumberDisplay/FrontPanelNumberDisplay.d.ts +33 -0
- package/dist/cjs/types/components/FrontPanelNumberDisplay/FrontPanelNumberDisplay.props.d.ts +23 -0
- package/dist/cjs/types/components/FrontPanelNumberDisplay/index.d.ts +8 -0
- package/dist/cjs/types/components/FrontPanelNumberEntry/FrontPanelNumberEntry.d.ts +33 -0
- package/dist/cjs/types/components/FrontPanelNumberEntry/FrontPanelNumberEntry.props.d.ts +27 -0
- package/dist/cjs/types/components/FrontPanelNumberEntry/index.d.ts +8 -0
- package/dist/cjs/types/components/FrontPanelPushButton/FrontPanelPushButton.d.ts +31 -0
- package/dist/cjs/types/components/FrontPanelPushButton/FrontPanelPushButton.props.d.ts +17 -0
- package/dist/cjs/types/components/FrontPanelPushButton/index.d.ts +8 -0
- package/dist/cjs/types/components/FrontPanelRangeSlider/FrontPanelRangeSlider.d.ts +31 -0
- package/dist/cjs/types/components/FrontPanelRangeSlider/FrontPanelRangeSlider.props.d.ts +21 -0
- package/dist/cjs/types/components/FrontPanelRangeSlider/index.d.ts +8 -0
- package/dist/cjs/types/components/FrontPanelSelectEntry/FrontPanelSelectEntry.d.ts +17 -0
- package/dist/cjs/types/components/FrontPanelSelectEntry/FrontPanelSelectEntryRoot.d.ts +43 -0
- package/dist/cjs/types/components/FrontPanelSelectEntry/FrontPanelSelectEntryRoot.props.d.ts +21 -0
- package/dist/cjs/types/components/FrontPanelSelectEntry/index.d.ts +15 -0
- package/dist/cjs/types/components/FrontPanelToggleSwitch/FrontPanelToggleSwitch.d.ts +31 -0
- package/dist/cjs/types/components/FrontPanelToggleSwitch/FrontPanelToggleSwitch.props.d.ts +17 -0
- package/dist/cjs/types/components/FrontPanelToggleSwitch/index.d.ts +8 -0
- package/dist/cjs/types/components/FrontPanelTriggerButton/FrontPanelTriggerButton.d.ts +32 -0
- package/dist/cjs/types/components/FrontPanelTriggerButton/FrontPanelTriggerButton.props.d.ts +18 -0
- package/dist/cjs/types/components/FrontPanelTriggerButton/index.d.ts +8 -0
- package/dist/cjs/types/components/Icons/ChevronIcon.d.ts +17 -0
- package/dist/cjs/types/components/Icons/IndicatorArrowIcon.d.ts +17 -0
- package/dist/cjs/types/components/Icons/IndicatorBarIcon.d.ts +10 -0
- package/dist/cjs/types/components/Icons/IndicatorStateIcon.d.ts +14 -0
- package/dist/cjs/types/components/Icons/RadioToggleStateIcon.d.ts +14 -0
- package/dist/cjs/types/components/Icons/SwitchToggleStateIcon.d.ts +14 -0
- package/dist/cjs/types/components/Icons/index.d.ts +12 -0
- package/dist/cjs/types/components/Icons/types.d.ts +17 -0
- package/dist/cjs/types/components/index.d.ts +16 -0
- package/dist/cjs/types/components/types.d.ts +11 -0
- package/dist/cjs/types/contexts/FrontPanelContext.d.ts +15 -0
- package/dist/cjs/types/contexts/index.d.ts +8 -0
- package/dist/cjs/types/core/Binary.d.ts +7 -0
- package/dist/cjs/types/core/Numeric.d.ts +80 -0
- package/dist/cjs/types/core/Types.d.ts +34 -0
- package/dist/cjs/types/core/index.d.ts +9 -0
- package/dist/cjs/types/index.d.ts +10 -0
- package/dist/cjs/types/primitives/Application/Application.d.ts +10 -0
- package/dist/cjs/types/primitives/Application/Application.props.d.ts +10 -0
- package/dist/cjs/types/primitives/Application/index.d.ts +1 -0
- package/dist/cjs/types/primitives/Button/Button.d.ts +33 -0
- package/dist/cjs/types/primitives/Button/Button.props.d.ts +44 -0
- package/dist/cjs/types/primitives/Button/index.d.ts +3 -0
- package/dist/cjs/types/primitives/DigitEntry/DigitEntry.d.ts +33 -0
- package/dist/cjs/types/primitives/DigitEntry/DigitEntry.props.d.ts +51 -0
- package/dist/cjs/types/primitives/DigitEntry/index.d.ts +9 -0
- package/dist/cjs/types/primitives/Indicator/Indicator.d.ts +29 -0
- package/dist/cjs/types/primitives/Indicator/Indicator.props.d.ts +35 -0
- package/dist/cjs/types/primitives/Indicator/index.d.ts +9 -0
- package/dist/cjs/types/primitives/Label/Label.d.ts +31 -0
- package/dist/cjs/types/primitives/Label/Label.props.d.ts +33 -0
- package/dist/cjs/types/primitives/Label/index.d.ts +9 -0
- package/dist/cjs/types/primitives/NumberDisplay/NumberDisplay.d.ts +31 -0
- package/dist/cjs/types/primitives/NumberDisplay/NumberDisplay.props.d.ts +52 -0
- package/dist/cjs/types/primitives/NumberDisplay/index.d.ts +9 -0
- package/dist/cjs/types/primitives/NumberEntry/NumberEntry.d.ts +34 -0
- package/dist/cjs/types/primitives/NumberEntry/NumberEntry.props.d.ts +69 -0
- package/dist/cjs/types/primitives/NumberEntry/NumberEntryDigits.d.ts +27 -0
- package/dist/cjs/types/primitives/NumberEntry/NumberEntryDigits.props.d.ts +43 -0
- package/dist/cjs/types/primitives/NumberEntry/index.d.ts +9 -0
- package/dist/cjs/types/primitives/RangeSlider/RangeSlider.d.ts +33 -0
- package/dist/cjs/types/primitives/RangeSlider/RangeSlider.props.d.ts +77 -0
- package/dist/cjs/types/primitives/RangeSlider/index.d.ts +9 -0
- package/dist/cjs/types/primitives/SelectEntry/SelectEntry.d.ts +17 -0
- package/dist/cjs/types/primitives/SelectEntry/SelectEntryContent.d.ts +16 -0
- package/dist/cjs/types/primitives/SelectEntry/SelectEntryGroup.d.ts +15 -0
- package/dist/cjs/types/primitives/SelectEntry/SelectEntryItem.d.ts +15 -0
- package/dist/cjs/types/primitives/SelectEntry/SelectEntryLabel.d.ts +15 -0
- package/dist/cjs/types/primitives/SelectEntry/SelectEntryRoot.d.ts +39 -0
- package/dist/cjs/types/primitives/SelectEntry/SelectEntryRoot.props.d.ts +31 -0
- package/dist/cjs/types/primitives/SelectEntry/SelectEntrySeparator.d.ts +15 -0
- package/dist/cjs/types/primitives/SelectEntry/SelectEntryTrigger.d.ts +16 -0
- package/dist/cjs/types/primitives/SelectEntry/SelectEntryTrigger.props.d.ts +16 -0
- package/dist/cjs/types/primitives/SelectEntry/index.d.ts +17 -0
- package/dist/cjs/types/primitives/Toggle/Toggle.d.ts +35 -0
- package/dist/cjs/types/primitives/Toggle/Toggle.props.d.ts +37 -0
- package/dist/cjs/types/primitives/Toggle/index.d.ts +9 -0
- package/dist/cjs/types/primitives/ToggleSwitch/ToggleSwitch.d.ts +32 -0
- package/dist/cjs/types/primitives/ToggleSwitch/ToggleSwitch.props.d.ts +22 -0
- package/dist/cjs/types/primitives/ToggleSwitch/index.d.ts +8 -0
- package/dist/cjs/types/primitives/Tooltip/Tooltip.d.ts +35 -0
- package/dist/cjs/types/primitives/Tooltip/Tooltip.props.d.ts +17 -0
- package/dist/cjs/types/primitives/Tooltip/index.d.ts +8 -0
- package/dist/cjs/types/primitives/TooltipUtility.d.ts +12 -0
- package/dist/cjs/types/primitives/index.d.ts +24 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/types/components/FrontPanel/FrontPanel.d.ts +10 -0
- package/dist/esm/types/components/FrontPanel/FrontPanel.props.d.ts +23 -0
- package/dist/esm/types/components/FrontPanel/index.d.ts +7 -0
- package/dist/esm/types/components/FrontPanelIndicator/FrontPanelIndicator.d.ts +30 -0
- package/dist/esm/types/components/FrontPanelIndicator/FrontPanelIndicator.props.d.ts +17 -0
- package/dist/esm/types/components/FrontPanelIndicator/index.d.ts +8 -0
- package/dist/esm/types/components/FrontPanelNumberDisplay/FrontPanelNumberDisplay.d.ts +33 -0
- package/dist/esm/types/components/FrontPanelNumberDisplay/FrontPanelNumberDisplay.props.d.ts +23 -0
- package/dist/esm/types/components/FrontPanelNumberDisplay/index.d.ts +8 -0
- package/dist/esm/types/components/FrontPanelNumberEntry/FrontPanelNumberEntry.d.ts +33 -0
- package/dist/esm/types/components/FrontPanelNumberEntry/FrontPanelNumberEntry.props.d.ts +27 -0
- package/dist/esm/types/components/FrontPanelNumberEntry/index.d.ts +8 -0
- package/dist/esm/types/components/FrontPanelPushButton/FrontPanelPushButton.d.ts +31 -0
- package/dist/esm/types/components/FrontPanelPushButton/FrontPanelPushButton.props.d.ts +17 -0
- package/dist/esm/types/components/FrontPanelPushButton/index.d.ts +8 -0
- package/dist/esm/types/components/FrontPanelRangeSlider/FrontPanelRangeSlider.d.ts +31 -0
- package/dist/esm/types/components/FrontPanelRangeSlider/FrontPanelRangeSlider.props.d.ts +21 -0
- package/dist/esm/types/components/FrontPanelRangeSlider/index.d.ts +8 -0
- package/dist/esm/types/components/FrontPanelSelectEntry/FrontPanelSelectEntry.d.ts +17 -0
- package/dist/esm/types/components/FrontPanelSelectEntry/FrontPanelSelectEntryRoot.d.ts +43 -0
- package/dist/esm/types/components/FrontPanelSelectEntry/FrontPanelSelectEntryRoot.props.d.ts +21 -0
- package/dist/esm/types/components/FrontPanelSelectEntry/index.d.ts +15 -0
- package/dist/esm/types/components/FrontPanelToggleSwitch/FrontPanelToggleSwitch.d.ts +31 -0
- package/dist/esm/types/components/FrontPanelToggleSwitch/FrontPanelToggleSwitch.props.d.ts +17 -0
- package/dist/esm/types/components/FrontPanelToggleSwitch/index.d.ts +8 -0
- package/dist/esm/types/components/FrontPanelTriggerButton/FrontPanelTriggerButton.d.ts +32 -0
- package/dist/esm/types/components/FrontPanelTriggerButton/FrontPanelTriggerButton.props.d.ts +18 -0
- package/dist/esm/types/components/FrontPanelTriggerButton/index.d.ts +8 -0
- package/dist/esm/types/components/Icons/ChevronIcon.d.ts +17 -0
- package/dist/esm/types/components/Icons/IndicatorArrowIcon.d.ts +17 -0
- package/dist/esm/types/components/Icons/IndicatorBarIcon.d.ts +10 -0
- package/dist/esm/types/components/Icons/IndicatorStateIcon.d.ts +14 -0
- package/dist/esm/types/components/Icons/RadioToggleStateIcon.d.ts +14 -0
- package/dist/esm/types/components/Icons/SwitchToggleStateIcon.d.ts +14 -0
- package/dist/esm/types/components/Icons/index.d.ts +12 -0
- package/dist/esm/types/components/Icons/types.d.ts +17 -0
- package/dist/esm/types/components/index.d.ts +16 -0
- package/dist/esm/types/components/types.d.ts +11 -0
- package/dist/esm/types/contexts/FrontPanelContext.d.ts +15 -0
- package/dist/esm/types/contexts/index.d.ts +8 -0
- package/dist/esm/types/core/Binary.d.ts +7 -0
- package/dist/esm/types/core/Numeric.d.ts +80 -0
- package/dist/esm/types/core/Types.d.ts +34 -0
- package/dist/esm/types/core/index.d.ts +9 -0
- package/dist/esm/types/index.d.ts +10 -0
- package/dist/esm/types/primitives/Application/Application.d.ts +10 -0
- package/dist/esm/types/primitives/Application/Application.props.d.ts +10 -0
- package/dist/esm/types/primitives/Application/index.d.ts +1 -0
- package/dist/esm/types/primitives/Button/Button.d.ts +33 -0
- package/dist/esm/types/primitives/Button/Button.props.d.ts +44 -0
- package/dist/esm/types/primitives/Button/index.d.ts +3 -0
- package/dist/esm/types/primitives/DigitEntry/DigitEntry.d.ts +33 -0
- package/dist/esm/types/primitives/DigitEntry/DigitEntry.props.d.ts +51 -0
- package/dist/esm/types/primitives/DigitEntry/index.d.ts +9 -0
- package/dist/esm/types/primitives/Indicator/Indicator.d.ts +29 -0
- package/dist/esm/types/primitives/Indicator/Indicator.props.d.ts +35 -0
- package/dist/esm/types/primitives/Indicator/index.d.ts +9 -0
- package/dist/esm/types/primitives/Label/Label.d.ts +31 -0
- package/dist/esm/types/primitives/Label/Label.props.d.ts +33 -0
- package/dist/esm/types/primitives/Label/index.d.ts +9 -0
- package/dist/esm/types/primitives/NumberDisplay/NumberDisplay.d.ts +31 -0
- package/dist/esm/types/primitives/NumberDisplay/NumberDisplay.props.d.ts +52 -0
- package/dist/esm/types/primitives/NumberDisplay/index.d.ts +9 -0
- package/dist/esm/types/primitives/NumberEntry/NumberEntry.d.ts +34 -0
- package/dist/esm/types/primitives/NumberEntry/NumberEntry.props.d.ts +69 -0
- package/dist/esm/types/primitives/NumberEntry/NumberEntryDigits.d.ts +27 -0
- package/dist/esm/types/primitives/NumberEntry/NumberEntryDigits.props.d.ts +43 -0
- package/dist/esm/types/primitives/NumberEntry/index.d.ts +9 -0
- package/dist/esm/types/primitives/RangeSlider/RangeSlider.d.ts +33 -0
- package/dist/esm/types/primitives/RangeSlider/RangeSlider.props.d.ts +77 -0
- package/dist/esm/types/primitives/RangeSlider/index.d.ts +9 -0
- package/dist/esm/types/primitives/SelectEntry/SelectEntry.d.ts +17 -0
- package/dist/esm/types/primitives/SelectEntry/SelectEntryContent.d.ts +16 -0
- package/dist/esm/types/primitives/SelectEntry/SelectEntryGroup.d.ts +15 -0
- package/dist/esm/types/primitives/SelectEntry/SelectEntryItem.d.ts +15 -0
- package/dist/esm/types/primitives/SelectEntry/SelectEntryLabel.d.ts +15 -0
- package/dist/esm/types/primitives/SelectEntry/SelectEntryRoot.d.ts +39 -0
- package/dist/esm/types/primitives/SelectEntry/SelectEntryRoot.props.d.ts +31 -0
- package/dist/esm/types/primitives/SelectEntry/SelectEntrySeparator.d.ts +15 -0
- package/dist/esm/types/primitives/SelectEntry/SelectEntryTrigger.d.ts +16 -0
- package/dist/esm/types/primitives/SelectEntry/SelectEntryTrigger.props.d.ts +16 -0
- package/dist/esm/types/primitives/SelectEntry/index.d.ts +17 -0
- package/dist/esm/types/primitives/Toggle/Toggle.d.ts +35 -0
- package/dist/esm/types/primitives/Toggle/Toggle.props.d.ts +37 -0
- package/dist/esm/types/primitives/Toggle/index.d.ts +9 -0
- package/dist/esm/types/primitives/ToggleSwitch/ToggleSwitch.d.ts +32 -0
- package/dist/esm/types/primitives/ToggleSwitch/ToggleSwitch.props.d.ts +22 -0
- package/dist/esm/types/primitives/ToggleSwitch/index.d.ts +8 -0
- package/dist/esm/types/primitives/Tooltip/Tooltip.d.ts +35 -0
- package/dist/esm/types/primitives/Tooltip/Tooltip.props.d.ts +17 -0
- package/dist/esm/types/primitives/Tooltip/index.d.ts +8 -0
- package/dist/esm/types/primitives/TooltipUtility.d.ts +12 -0
- package/dist/esm/types/primitives/index.d.ts +24 -0
- package/dist/index.d.ts +1456 -0
- package/package.json +81 -0
- package/src/components/FrontPanel/FrontPanel.props.ts +25 -0
- package/src/components/FrontPanel/FrontPanel.tsx +33 -0
- package/src/components/FrontPanel/index.ts +8 -0
- package/src/components/FrontPanelIndicator/FrontPanelIndicator.css +0 -0
- package/src/components/FrontPanelIndicator/FrontPanelIndicator.props.ts +20 -0
- package/src/components/FrontPanelIndicator/FrontPanelIndicator.stories.tsx +44 -0
- package/src/components/FrontPanelIndicator/FrontPanelIndicator.tsx +81 -0
- package/src/components/FrontPanelIndicator/index.ts +10 -0
- package/src/components/FrontPanelNumberDisplay/FrontPanelNumberDisplay.css +0 -0
- package/src/components/FrontPanelNumberDisplay/FrontPanelNumberDisplay.props.ts +27 -0
- package/src/components/FrontPanelNumberDisplay/FrontPanelNumberDisplay.stories.tsx +67 -0
- package/src/components/FrontPanelNumberDisplay/FrontPanelNumberDisplay.tsx +130 -0
- package/src/components/FrontPanelNumberDisplay/index.ts +10 -0
- package/src/components/FrontPanelNumberEntry/FrontPanelNumberEntry.css +0 -0
- package/src/components/FrontPanelNumberEntry/FrontPanelNumberEntry.props.ts +32 -0
- package/src/components/FrontPanelNumberEntry/FrontPanelNumberEntry.stories.tsx +104 -0
- package/src/components/FrontPanelNumberEntry/FrontPanelNumberEntry.tsx +195 -0
- package/src/components/FrontPanelNumberEntry/index.ts +10 -0
- package/src/components/FrontPanelPushButton/FrontPanelPushButton.css +0 -0
- package/src/components/FrontPanelPushButton/FrontPanelPushButton.props.ts +20 -0
- package/src/components/FrontPanelPushButton/FrontPanelPushButton.stories.tsx +46 -0
- package/src/components/FrontPanelPushButton/FrontPanelPushButton.tsx +80 -0
- package/src/components/FrontPanelPushButton/index.ts +10 -0
- package/src/components/FrontPanelRangeSlider/FrontPanelRangeSlider.css +0 -0
- package/src/components/FrontPanelRangeSlider/FrontPanelRangeSlider.props.ts +25 -0
- package/src/components/FrontPanelRangeSlider/FrontPanelRangeSlider.stories.tsx +92 -0
- package/src/components/FrontPanelRangeSlider/FrontPanelRangeSlider.tsx +108 -0
- package/src/components/FrontPanelRangeSlider/index.ts +10 -0
- package/src/components/FrontPanelSelectEntry/FrontPanelSelectEntry.css +0 -0
- package/src/components/FrontPanelSelectEntry/FrontPanelSelectEntry.stories.tsx +107 -0
- package/src/components/FrontPanelSelectEntry/FrontPanelSelectEntry.tsx +30 -0
- package/src/components/FrontPanelSelectEntry/FrontPanelSelectEntryRoot.props.ts +25 -0
- package/src/components/FrontPanelSelectEntry/FrontPanelSelectEntryRoot.tsx +175 -0
- package/src/components/FrontPanelSelectEntry/index.ts +17 -0
- package/src/components/FrontPanelToggleSwitch/FrontPanelToggleSwitch.css +0 -0
- package/src/components/FrontPanelToggleSwitch/FrontPanelToggleSwitch.props.ts +20 -0
- package/src/components/FrontPanelToggleSwitch/FrontPanelToggleSwitch.stories.tsx +46 -0
- package/src/components/FrontPanelToggleSwitch/FrontPanelToggleSwitch.tsx +108 -0
- package/src/components/FrontPanelToggleSwitch/index.ts +10 -0
- package/src/components/FrontPanelTriggerButton/FrontPanelTriggerButton.css +0 -0
- package/src/components/FrontPanelTriggerButton/FrontPanelTriggerButton.props.ts +21 -0
- package/src/components/FrontPanelTriggerButton/FrontPanelTriggerButton.stories.tsx +46 -0
- package/src/components/FrontPanelTriggerButton/FrontPanelTriggerButton.tsx +65 -0
- package/src/components/FrontPanelTriggerButton/index.ts +10 -0
- package/src/components/Icons/ChevronIcon.tsx +69 -0
- package/src/components/Icons/IndicatorArrowIcon.tsx +59 -0
- package/src/components/Icons/IndicatorBarIcon.tsx +34 -0
- package/src/components/Icons/IndicatorStateIcon.tsx +82 -0
- package/src/components/Icons/RadioToggleStateIcon.tsx +62 -0
- package/src/components/Icons/SwitchToggleStateIcon.tsx +68 -0
- package/src/components/Icons/index.ts +15 -0
- package/src/components/Icons/types.ts +20 -0
- package/src/components/index.ts +31 -0
- package/src/components/types.ts +13 -0
- package/src/contexts/FrontPanelContext.ts +23 -0
- package/src/contexts/index.ts +10 -0
- package/src/core/Binary.ts +23 -0
- package/src/core/Numeric.ts +168 -0
- package/src/core/Types.ts +39 -0
- package/src/core/index.ts +11 -0
- package/src/fonts/Inter-VariableFont_slnt,wght.ttf +0 -0
- package/src/index.css +11 -0
- package/src/index.ts +11 -0
- package/src/primitives/Application/Application.props.ts +10 -0
- package/src/primitives/Application/Application.tsx +24 -0
- package/src/primitives/Application/index.ts +1 -0
- package/src/primitives/Button/Button.css +60 -0
- package/src/primitives/Button/Button.props.ts +53 -0
- package/src/primitives/Button/Button.stories.tsx +54 -0
- package/src/primitives/Button/Button.tsx +75 -0
- package/src/primitives/Button/index.ts +4 -0
- package/src/primitives/DigitEntry/DigitEntry.css +120 -0
- package/src/primitives/DigitEntry/DigitEntry.props.ts +62 -0
- package/src/primitives/DigitEntry/DigitEntry.stories.tsx +84 -0
- package/src/primitives/DigitEntry/DigitEntry.tsx +226 -0
- package/src/primitives/DigitEntry/index.ts +15 -0
- package/src/primitives/Indicator/Indicator.css +66 -0
- package/src/primitives/Indicator/Indicator.props.ts +42 -0
- package/src/primitives/Indicator/Indicator.stories.tsx +44 -0
- package/src/primitives/Indicator/Indicator.tsx +64 -0
- package/src/primitives/Indicator/index.ts +11 -0
- package/src/primitives/Label/Label.css +49 -0
- package/src/primitives/Label/Label.props.ts +38 -0
- package/src/primitives/Label/Label.stories.tsx +53 -0
- package/src/primitives/Label/Label.tsx +66 -0
- package/src/primitives/Label/index.ts +11 -0
- package/src/primitives/NumberDisplay/NumberDisplay.css +63 -0
- package/src/primitives/NumberDisplay/NumberDisplay.props.ts +65 -0
- package/src/primitives/NumberDisplay/NumberDisplay.stories.tsx +83 -0
- package/src/primitives/NumberDisplay/NumberDisplay.tsx +155 -0
- package/src/primitives/NumberDisplay/index.ts +11 -0
- package/src/primitives/NumberEntry/NumberEntry.css +71 -0
- package/src/primitives/NumberEntry/NumberEntry.props.ts +86 -0
- package/src/primitives/NumberEntry/NumberEntry.stories.tsx +129 -0
- package/src/primitives/NumberEntry/NumberEntry.tsx +249 -0
- package/src/primitives/NumberEntry/NumberEntryDigits.props.ts +57 -0
- package/src/primitives/NumberEntry/NumberEntryDigits.tsx +117 -0
- package/src/primitives/NumberEntry/index.ts +11 -0
- package/src/primitives/RangeSlider/RangeSlider.css +110 -0
- package/src/primitives/RangeSlider/RangeSlider.props.ts +93 -0
- package/src/primitives/RangeSlider/RangeSlider.stories.tsx +76 -0
- package/src/primitives/RangeSlider/RangeSlider.tsx +168 -0
- package/src/primitives/RangeSlider/index.ts +14 -0
- package/src/primitives/SelectEntry/SelectEntry.stories.tsx +86 -0
- package/src/primitives/SelectEntry/SelectEntry.tsx +29 -0
- package/src/primitives/SelectEntry/SelectEntryContent.css +94 -0
- package/src/primitives/SelectEntry/SelectEntryContent.tsx +63 -0
- package/src/primitives/SelectEntry/SelectEntryGroup.css +17 -0
- package/src/primitives/SelectEntry/SelectEntryGroup.tsx +37 -0
- package/src/primitives/SelectEntry/SelectEntryItem.css +35 -0
- package/src/primitives/SelectEntry/SelectEntryItem.tsx +51 -0
- package/src/primitives/SelectEntry/SelectEntryLabel.css +16 -0
- package/src/primitives/SelectEntry/SelectEntryLabel.tsx +43 -0
- package/src/primitives/SelectEntry/SelectEntryRoot.css +10 -0
- package/src/primitives/SelectEntry/SelectEntryRoot.props.ts +38 -0
- package/src/primitives/SelectEntry/SelectEntryRoot.tsx +69 -0
- package/src/primitives/SelectEntry/SelectEntrySeparator.css +12 -0
- package/src/primitives/SelectEntry/SelectEntrySeparator.tsx +38 -0
- package/src/primitives/SelectEntry/SelectEntryTrigger.css +49 -0
- package/src/primitives/SelectEntry/SelectEntryTrigger.props.ts +18 -0
- package/src/primitives/SelectEntry/SelectEntryTrigger.tsx +111 -0
- package/src/primitives/SelectEntry/index.ts +20 -0
- package/src/primitives/Toggle/Toggle.css +67 -0
- package/src/primitives/Toggle/Toggle.props.ts +44 -0
- package/src/primitives/Toggle/Toggle.stories.tsx +61 -0
- package/src/primitives/Toggle/Toggle.tsx +90 -0
- package/src/primitives/Toggle/index.ts +11 -0
- package/src/primitives/ToggleSwitch/ToggleSwitch.css +118 -0
- package/src/primitives/ToggleSwitch/ToggleSwitch.props.ts +26 -0
- package/src/primitives/ToggleSwitch/ToggleSwitch.stories.tsx +85 -0
- package/src/primitives/ToggleSwitch/ToggleSwitch.tsx +73 -0
- package/src/primitives/ToggleSwitch/index.ts +10 -0
- package/src/primitives/Tooltip/Tooltip.css +93 -0
- package/src/primitives/Tooltip/Tooltip.props.ts +20 -0
- package/src/primitives/Tooltip/Tooltip.tsx +91 -0
- package/src/primitives/Tooltip/index.ts +10 -0
- package/src/primitives/TooltipUtility.tsx +24 -0
- package/src/primitives/index.ts +44 -0
- package/src/stories/decorators/Application.decorator.tsx +20 -0
- package/src/stories/decorators/FrontPanel.decorator.tsx +47 -0
|
@@ -0,0 +1,21 @@
|
|
|
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 { EndpointAddressProps } from "../types";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Interface for the properties of the FrontPanelTriggerButton component.
|
|
12
|
+
* This interface extends the properties of the TriggerButton component.
|
|
13
|
+
*/
|
|
14
|
+
interface FrontPanelTriggerButtonProps {
|
|
15
|
+
/**
|
|
16
|
+
* Address of the frontpanel endpoint
|
|
17
|
+
*/
|
|
18
|
+
fpEndpoint: EndpointAddressProps;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export default FrontPanelTriggerButtonProps;
|
|
@@ -0,0 +1,46 @@
|
|
|
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
|
+
import withFrontPanel from "../../stories/decorators/FrontPanel.decorator";
|
|
12
|
+
|
|
13
|
+
import FrontPanelTriggerButton from "./FrontPanelTriggerButton";
|
|
14
|
+
|
|
15
|
+
// Configure Story metadata
|
|
16
|
+
const meta = {
|
|
17
|
+
title: "Components/FrontPanel/FrontPanelTriggerButton",
|
|
18
|
+
component: FrontPanelTriggerButton,
|
|
19
|
+
parameters: {
|
|
20
|
+
layout: "centered" // Center the component in the Canvas
|
|
21
|
+
},
|
|
22
|
+
tags: ["autodocs"], // Automatically generate documentation
|
|
23
|
+
argTypes: {
|
|
24
|
+
size: {
|
|
25
|
+
control: { type: "range", min: 1, max: 3, step: 1 }
|
|
26
|
+
},
|
|
27
|
+
disabled: { control: "boolean" }
|
|
28
|
+
}
|
|
29
|
+
} satisfies Meta<typeof FrontPanelTriggerButton>;
|
|
30
|
+
|
|
31
|
+
export default meta;
|
|
32
|
+
|
|
33
|
+
type Story = StoryObj<typeof meta>;
|
|
34
|
+
|
|
35
|
+
// Primary Story
|
|
36
|
+
export const Primary: Story = {
|
|
37
|
+
decorators: [withApplication, withFrontPanel],
|
|
38
|
+
args: {
|
|
39
|
+
label: "Trigger",
|
|
40
|
+
fpEndpoint: { epAddress: 0x40, bitOffset: 1 },
|
|
41
|
+
// Optional Properties
|
|
42
|
+
disabled: false,
|
|
43
|
+
size: 1,
|
|
44
|
+
tooltip: "Trigger endpoint"
|
|
45
|
+
}
|
|
46
|
+
};
|
|
@@ -0,0 +1,65 @@
|
|
|
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 "./FrontPanelTriggerButton.css";
|
|
11
|
+
|
|
12
|
+
import FrontPanelTriggerButtonProps from "./FrontPanelTriggerButton.props";
|
|
13
|
+
|
|
14
|
+
import Button from "../../primitives/Button";
|
|
15
|
+
|
|
16
|
+
import { FrontPanelContext } from "../../contexts";
|
|
17
|
+
|
|
18
|
+
type FrontPanelTriggerButtonElement = React.ElementRef<typeof Button>;
|
|
19
|
+
|
|
20
|
+
interface FrontPanelTriggerButtonCombinedProps
|
|
21
|
+
extends Omit<
|
|
22
|
+
React.ComponentPropsWithoutRef<typeof Button>,
|
|
23
|
+
"asChild" | "onButtonClick" | "onButtonDown" | "onButtonUp"
|
|
24
|
+
>,
|
|
25
|
+
FrontPanelTriggerButtonProps {}
|
|
26
|
+
|
|
27
|
+
export type { FrontPanelTriggerButtonCombinedProps };
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* `FrontPanelTriggerButton` is a React component that renders a trigger button that asserts a TriggerIn endpoint when
|
|
31
|
+
* it is pressed.
|
|
32
|
+
*
|
|
33
|
+
* @component
|
|
34
|
+
* @param {Object} props - Properties passed to component
|
|
35
|
+
* @param {React.Ref<FrontPanelTriggerButtonElement>} forwardedRef - Forwarded ref for the button
|
|
36
|
+
*
|
|
37
|
+
* @returns {React.ReactElement} The rendered FrontPanelTriggerButton component
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```jsx
|
|
41
|
+
* <FrontPanelTriggerButton
|
|
42
|
+
* label="Trigger"
|
|
43
|
+
* fpEndpoint={{epAddress: 0x00, bitOffset: 1}} />
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
const FrontPanelTriggerButton = React.forwardRef<
|
|
47
|
+
FrontPanelTriggerButtonElement,
|
|
48
|
+
FrontPanelTriggerButtonCombinedProps
|
|
49
|
+
>((props, forwardedRef) => {
|
|
50
|
+
const { device, workQueue } = React.useContext(FrontPanelContext);
|
|
51
|
+
|
|
52
|
+
const { fpEndpoint, ...buttonProps } = props;
|
|
53
|
+
|
|
54
|
+
const onButtonDown = React.useCallback(async (): Promise<void> => {
|
|
55
|
+
await workQueue.Post(async () => {
|
|
56
|
+
await device.activateTriggerIn(fpEndpoint.epAddress, fpEndpoint.bitOffset);
|
|
57
|
+
});
|
|
58
|
+
}, [device, fpEndpoint]);
|
|
59
|
+
|
|
60
|
+
return <Button {...buttonProps} ref={forwardedRef} onButtonDown={onButtonDown} />;
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
FrontPanelTriggerButton.displayName = "FrontPanelTriggerButton";
|
|
64
|
+
|
|
65
|
+
export default FrontPanelTriggerButton;
|
|
@@ -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 "./FrontPanelTriggerButton";
|
|
9
|
+
|
|
10
|
+
export { default as FrontPanelTriggerButtonProps } from "./FrontPanelTriggerButton.props";
|
|
@@ -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 * as React from "react";
|
|
9
|
+
|
|
10
|
+
import { IconProps } from "./types";
|
|
11
|
+
|
|
12
|
+
export enum ChevronDirection {
|
|
13
|
+
Up,
|
|
14
|
+
Down
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface ChevronIconProps extends IconProps {
|
|
18
|
+
direction: ChevronDirection;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const DirectionChevron = (direction: ChevronDirection, color: string): React.ReactNode => {
|
|
22
|
+
let arrow: React.ReactNode;
|
|
23
|
+
|
|
24
|
+
if (direction === ChevronDirection.Up) {
|
|
25
|
+
arrow = (
|
|
26
|
+
<path
|
|
27
|
+
d="M6.75593 7.12713C6.35716 7.58759 5.64284 7.58759 5.24407 7.12713L2.23682 3.65465C1.67594 3.00701 2.136 2 2.99275 2L9.00725 2C9.864 2 10.3241 3.00701 9.76318 3.65465L6.75593 7.12713Z"
|
|
28
|
+
fill={color}
|
|
29
|
+
/>
|
|
30
|
+
);
|
|
31
|
+
} else if (direction === ChevronDirection.Down) {
|
|
32
|
+
arrow = (
|
|
33
|
+
<path
|
|
34
|
+
d="M6.75593 7.12713C6.35716 7.58759 5.64284 7.58759 5.24407 7.12713L2.23682 3.65465C1.67594 3.00701 2.136 2 2.99275 2L9.00725 2C9.864 2 10.3241 3.00701 9.76318 3.65465L6.75593 7.12713Z"
|
|
35
|
+
fill={color}
|
|
36
|
+
/>
|
|
37
|
+
);
|
|
38
|
+
} else {
|
|
39
|
+
arrow = (
|
|
40
|
+
<path
|
|
41
|
+
d="M6.75593 7.12713C6.35716 7.58759 5.64284 7.58759 5.24407 7.12713L2.23682 3.65465C1.67594 3.00701 2.136 2 2.99275 2L9.00725 2C9.864 2 10.3241 3.00701 9.76318 3.65465L6.75593 7.12713Z"
|
|
42
|
+
fill={color}
|
|
43
|
+
/>
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return arrow;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const ChevronIcon = React.forwardRef<SVGSVGElement, ChevronIconProps>((props, forwardedRef) => {
|
|
51
|
+
const { direction = ChevronDirection.Down, color = "#343434", ...iconProps } = props;
|
|
52
|
+
|
|
53
|
+
return (
|
|
54
|
+
<svg
|
|
55
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
56
|
+
width="12"
|
|
57
|
+
height="8"
|
|
58
|
+
viewBox="0 0 12 8"
|
|
59
|
+
fill="none"
|
|
60
|
+
{...iconProps}
|
|
61
|
+
ref={forwardedRef}>
|
|
62
|
+
{DirectionChevron(direction, color)}
|
|
63
|
+
</svg>
|
|
64
|
+
);
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
export default ChevronIcon;
|
|
68
|
+
|
|
69
|
+
ChevronIcon.displayName = "ChevronIcon";
|
|
@@ -0,0 +1,59 @@
|
|
|
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 * as React from "react";
|
|
9
|
+
|
|
10
|
+
import { IconProps } from "./types";
|
|
11
|
+
|
|
12
|
+
export enum IndicatorArrowDirection {
|
|
13
|
+
Up,
|
|
14
|
+
Down
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface IndicatorArrowIconProps extends IconProps {
|
|
18
|
+
direction: IndicatorArrowDirection;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const IndicatorArrow = (direction: IndicatorArrowDirection, color: string): React.ReactNode => {
|
|
22
|
+
let arrow: React.ReactNode;
|
|
23
|
+
|
|
24
|
+
switch (direction) {
|
|
25
|
+
case IndicatorArrowDirection.Up:
|
|
26
|
+
arrow = <path d="M5 5.1656e-07L10 4L0 4L5 5.1656e-07Z" fill={color} />;
|
|
27
|
+
break;
|
|
28
|
+
case IndicatorArrowDirection.Down:
|
|
29
|
+
arrow = <path d="M5 4L0 0L10 8.88334e-07L5 4Z" fill={color} />;
|
|
30
|
+
break;
|
|
31
|
+
default:
|
|
32
|
+
arrow = <path d="M5 5.1656e-07L10 4L0 4L5 5.1656e-07Z" fill={color} />;
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return arrow;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
const IndicatorArrowIcon = React.forwardRef<SVGSVGElement, IndicatorArrowIconProps>(
|
|
40
|
+
(props, forwardedRef) => {
|
|
41
|
+
const { direction = IndicatorArrowDirection.Down, color = "#343434", ...iconProps } = props;
|
|
42
|
+
return (
|
|
43
|
+
<svg
|
|
44
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
45
|
+
width="10"
|
|
46
|
+
height="4"
|
|
47
|
+
viewBox="0 0 10 4"
|
|
48
|
+
fill="none"
|
|
49
|
+
{...iconProps}
|
|
50
|
+
ref={forwardedRef}>
|
|
51
|
+
{IndicatorArrow(direction, color)}
|
|
52
|
+
</svg>
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
export default IndicatorArrowIcon;
|
|
58
|
+
|
|
59
|
+
IndicatorArrowIcon.displayName = "IndicatorArrowIcon";
|
|
@@ -0,0 +1,34 @@
|
|
|
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 * as React from "react";
|
|
9
|
+
|
|
10
|
+
import { IconProps } from "./types";
|
|
11
|
+
|
|
12
|
+
const IndicatorBarIcon = React.forwardRef<SVGSVGElement, IconProps>((props, forwardedRef) => {
|
|
13
|
+
const { color = "#343434", ...iconProps } = props;
|
|
14
|
+
|
|
15
|
+
return (
|
|
16
|
+
<svg
|
|
17
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
18
|
+
width="10"
|
|
19
|
+
height="1"
|
|
20
|
+
viewBox="0 0 10 1"
|
|
21
|
+
fill="none"
|
|
22
|
+
{...iconProps}
|
|
23
|
+
ref={forwardedRef}>
|
|
24
|
+
<path
|
|
25
|
+
d="M8.74228e-08 -8.74228e-07L10 -9.53674e-07L10 1L0 0.999999L8.74228e-08 -8.74228e-07Z"
|
|
26
|
+
fill={color}
|
|
27
|
+
/>
|
|
28
|
+
</svg>
|
|
29
|
+
);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
export default IndicatorBarIcon;
|
|
33
|
+
|
|
34
|
+
IndicatorBarIcon.displayName = "IndicatorBarIcon";
|
|
@@ -0,0 +1,82 @@
|
|
|
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 * as React from "react";
|
|
9
|
+
|
|
10
|
+
import { StateIconProps } from "./types";
|
|
11
|
+
|
|
12
|
+
import { ToggleState } from "../../core";
|
|
13
|
+
|
|
14
|
+
export interface IndicatorStateIconProps extends StateIconProps {
|
|
15
|
+
state: ToggleState;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const StateIcon = (
|
|
19
|
+
state: ToggleState,
|
|
20
|
+
color: string,
|
|
21
|
+
colorOnState: string,
|
|
22
|
+
colorOffState: string
|
|
23
|
+
): React.ReactNode => {
|
|
24
|
+
let icon: React.ReactNode;
|
|
25
|
+
|
|
26
|
+
switch (state) {
|
|
27
|
+
case ToggleState.On:
|
|
28
|
+
icon = (
|
|
29
|
+
<path
|
|
30
|
+
d="M5 10C7.76142 10 10 7.76142 10 5C10 2.23858 7.76142 0 5 0C2.23858 0 0 2.23858 0 5C0 7.76142 2.23858 10 5 10Z"
|
|
31
|
+
fill={colorOnState}
|
|
32
|
+
/>
|
|
33
|
+
);
|
|
34
|
+
break;
|
|
35
|
+
case ToggleState.Off:
|
|
36
|
+
icon = (
|
|
37
|
+
<path
|
|
38
|
+
d="M5 10C7.76142 10 10 7.76142 10 5C10 2.23858 7.76142 0 5 0C2.23858 0 0 2.23858 0 5C0 7.76142 2.23858 10 5 10Z"
|
|
39
|
+
fill={colorOffState}
|
|
40
|
+
/>
|
|
41
|
+
);
|
|
42
|
+
break;
|
|
43
|
+
default:
|
|
44
|
+
icon = (
|
|
45
|
+
<path
|
|
46
|
+
d="M5 10C7.76142 10 10 7.76142 10 5C10 2.23858 7.76142 0 5 0C2.23858 0 0 2.23858 0 5C0 7.76142 2.23858 10 5 10Z"
|
|
47
|
+
fill={color}
|
|
48
|
+
/>
|
|
49
|
+
);
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return icon;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const IndicatorStateIcon = React.forwardRef<SVGSVGElement, IndicatorStateIconProps>(
|
|
57
|
+
(props, forwardedRef) => {
|
|
58
|
+
const {
|
|
59
|
+
state,
|
|
60
|
+
color = "#D0D7DF",
|
|
61
|
+
colorOnState = "#44BD84",
|
|
62
|
+
colorOffState = "#D0D7DF"
|
|
63
|
+
} = props;
|
|
64
|
+
|
|
65
|
+
return (
|
|
66
|
+
<svg
|
|
67
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
68
|
+
width="10"
|
|
69
|
+
height="10"
|
|
70
|
+
viewBox="0 0 10 10"
|
|
71
|
+
fill="none"
|
|
72
|
+
{...props}
|
|
73
|
+
ref={forwardedRef}>
|
|
74
|
+
{StateIcon(state, color, colorOnState, colorOffState)}
|
|
75
|
+
</svg>
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
export default IndicatorStateIcon;
|
|
81
|
+
|
|
82
|
+
IndicatorStateIcon.displayName = "IndicatorStateIcon";
|
|
@@ -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 * as React from "react";
|
|
9
|
+
|
|
10
|
+
import { StateIconProps } from "./types";
|
|
11
|
+
|
|
12
|
+
import { ToggleState } from "../../core";
|
|
13
|
+
|
|
14
|
+
export interface RadioToggleStateIconProps extends StateIconProps {
|
|
15
|
+
state: ToggleState;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const StateIcon = (state: ToggleState, color: string, colorOnState: string): React.ReactNode => {
|
|
19
|
+
let icon: React.ReactNode;
|
|
20
|
+
|
|
21
|
+
switch (state) {
|
|
22
|
+
case ToggleState.On:
|
|
23
|
+
icon = (
|
|
24
|
+
<>
|
|
25
|
+
<circle cx="7" cy="7" r="6" stroke={color} strokeWidth="2" />
|
|
26
|
+
<circle cx="7" cy="7" r="3" fill={colorOnState} />
|
|
27
|
+
</>
|
|
28
|
+
);
|
|
29
|
+
break;
|
|
30
|
+
case ToggleState.Off:
|
|
31
|
+
icon = <circle cx="7" cy="7" r="6" stroke={color} strokeWidth="2" />;
|
|
32
|
+
break;
|
|
33
|
+
default:
|
|
34
|
+
icon = <circle cx="7" cy="7" r="6" stroke={color} strokeWidth="2" />;
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return icon;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const RadioToggleStateIcon = React.forwardRef<SVGSVGElement, RadioToggleStateIconProps>(
|
|
42
|
+
(props, forwardedRef) => {
|
|
43
|
+
const { state, color = "#343434", colorOnState = "#44BD84", ...iconProps } = props;
|
|
44
|
+
|
|
45
|
+
return (
|
|
46
|
+
<svg
|
|
47
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
48
|
+
width="14"
|
|
49
|
+
height="14"
|
|
50
|
+
viewBox="0 0 14 14"
|
|
51
|
+
fill="none"
|
|
52
|
+
{...iconProps}
|
|
53
|
+
ref={forwardedRef}>
|
|
54
|
+
{StateIcon(state, color, colorOnState)}
|
|
55
|
+
</svg>
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
export default RadioToggleStateIcon;
|
|
61
|
+
|
|
62
|
+
RadioToggleStateIcon.displayName = "RadioToggleStateIcon";
|
|
@@ -0,0 +1,68 @@
|
|
|
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 * as React from "react";
|
|
9
|
+
|
|
10
|
+
import { StateIconProps } from "./types";
|
|
11
|
+
|
|
12
|
+
import { ToggleState } from "../../core";
|
|
13
|
+
|
|
14
|
+
export interface SwitchToggleStateIconProps extends StateIconProps {
|
|
15
|
+
state: ToggleState;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const StateIcon = (
|
|
19
|
+
state: ToggleState,
|
|
20
|
+
color: string,
|
|
21
|
+
colorOnState: string,
|
|
22
|
+
colorOffState: string
|
|
23
|
+
): React.ReactNode => {
|
|
24
|
+
let icon: React.ReactNode;
|
|
25
|
+
|
|
26
|
+
switch (state) {
|
|
27
|
+
case ToggleState.On:
|
|
28
|
+
icon = <circle cx="4" cy="4" r="3.75" fill={colorOnState} />;
|
|
29
|
+
break;
|
|
30
|
+
case ToggleState.Off:
|
|
31
|
+
icon = <circle cx="4" cy="4" r="3.75" fill={colorOffState} />;
|
|
32
|
+
break;
|
|
33
|
+
default:
|
|
34
|
+
icon = <circle cx="4" cy="4" r="3.75" fill={color} />;
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return icon;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const SwitchToggleStateIcon = React.forwardRef<SVGSVGElement, SwitchToggleStateIconProps>(
|
|
42
|
+
(props, forwardedRef) => {
|
|
43
|
+
const {
|
|
44
|
+
state,
|
|
45
|
+
color = "white",
|
|
46
|
+
colorOnState = "white",
|
|
47
|
+
colorOffState = "white",
|
|
48
|
+
...iconProps
|
|
49
|
+
} = props;
|
|
50
|
+
|
|
51
|
+
return (
|
|
52
|
+
<svg
|
|
53
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
54
|
+
width="8"
|
|
55
|
+
height="8"
|
|
56
|
+
viewBox="0 0 8 8"
|
|
57
|
+
fill="none"
|
|
58
|
+
{...iconProps}
|
|
59
|
+
ref={forwardedRef}>
|
|
60
|
+
{StateIcon(state, color, colorOnState, colorOffState)}
|
|
61
|
+
</svg>
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
export default SwitchToggleStateIcon;
|
|
67
|
+
|
|
68
|
+
SwitchToggleStateIcon.displayName = "SwitchToggleStateIcon";
|
|
@@ -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 as ChevronIcon, ChevronDirection } from "./ChevronIcon";
|
|
9
|
+
|
|
10
|
+
export { default as IndicatorArrowIcon, IndicatorArrowDirection } from "./IndicatorArrowIcon";
|
|
11
|
+
export { default as IndicatorBarIcon } from "./IndicatorBarIcon";
|
|
12
|
+
export { default as IndicatorStateIcon } from "./IndicatorStateIcon";
|
|
13
|
+
|
|
14
|
+
export { default as RadioToggleStateIcon } from "./RadioToggleStateIcon";
|
|
15
|
+
export { default as SwitchToggleStateIcon } from "./SwitchToggleStateIcon";
|
|
@@ -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 * as React from "react";
|
|
9
|
+
|
|
10
|
+
export interface IconProps extends React.SVGAttributes<SVGElement> {
|
|
11
|
+
children?: never;
|
|
12
|
+
color?: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface StateIconProps extends React.SVGAttributes<SVGElement> {
|
|
16
|
+
children?: never;
|
|
17
|
+
color?: string;
|
|
18
|
+
colorOnState?: string;
|
|
19
|
+
colorOffState?: string;
|
|
20
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2024 Opal Kelly Incorporated
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the FrontPanel license.
|
|
5
|
+
* See the LICENSE file found in the root directory of this project.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export { EndpointAddressProps } from "./types";
|
|
9
|
+
|
|
10
|
+
export { default as FrontPanel } from "./FrontPanel";
|
|
11
|
+
|
|
12
|
+
export { default as FrontPanelNumberEntry } from "./FrontPanelNumberEntry";
|
|
13
|
+
export { default as FrontPanelNumberDisplay } from "./FrontPanelNumberDisplay";
|
|
14
|
+
|
|
15
|
+
export { default as FrontPanelIndicator } from "./FrontPanelIndicator";
|
|
16
|
+
export { default as FrontPanelPushButton } from "./FrontPanelPushButton";
|
|
17
|
+
export { default as FrontPanelToggleSwitch } from "./FrontPanelToggleSwitch";
|
|
18
|
+
export { default as FrontPanelTriggerButton } from "./FrontPanelTriggerButton";
|
|
19
|
+
|
|
20
|
+
export { default as FrontPanelRangeSlider } from "./FrontPanelRangeSlider";
|
|
21
|
+
|
|
22
|
+
export {
|
|
23
|
+
FrontPanelSelectEntry,
|
|
24
|
+
FrontPanelSelectEntryRoot
|
|
25
|
+
//SelectEntryTrigger,
|
|
26
|
+
//SelectEntryContent,
|
|
27
|
+
//SelectEntryItem,
|
|
28
|
+
//SelectEntryGroup,
|
|
29
|
+
//SelectEntryLabel,
|
|
30
|
+
//SelectEntrySeparator
|
|
31
|
+
} from "./FrontPanelSelectEntry";
|
|
@@ -0,0 +1,13 @@
|
|
|
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 { BitCount } from "@opalkelly/frontpanel-alloy-core";
|
|
9
|
+
|
|
10
|
+
export interface EndpointAddressProps {
|
|
11
|
+
epAddress: number;
|
|
12
|
+
bitOffset: BitCount;
|
|
13
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2024 Opal Kelly Incorporated
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the FrontPanel license.
|
|
5
|
+
* See the LICENSE file found in the root directory of this project.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import React from "react";
|
|
9
|
+
|
|
10
|
+
import { IFrontPanel, IFrontPanelEventSource, WorkQueue } from "@opalkelly/frontpanel-alloy-core";
|
|
11
|
+
|
|
12
|
+
export type FrontPanelContextValue = {
|
|
13
|
+
device: IFrontPanel;
|
|
14
|
+
workQueue: WorkQueue;
|
|
15
|
+
eventSource?: IFrontPanelEventSource;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const FrontPanelContext = React.createContext<FrontPanelContextValue>({
|
|
19
|
+
device: window.FrontPanel,
|
|
20
|
+
workQueue: new WorkQueue()
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
export default FrontPanelContext;
|
|
@@ -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 as FrontPanelContext } from "./FrontPanelContext";
|
|
9
|
+
|
|
10
|
+
export { FrontPanelContextValue } from "./FrontPanelContext";
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2024 Opal Kelly Incorporated
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the FrontPanel license.
|
|
5
|
+
* See the LICENSE file found in the root directory of this project.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export function CalculateBitLength(value: bigint): number {
|
|
9
|
+
let bitLength = 0;
|
|
10
|
+
|
|
11
|
+
if (value > 0n) {
|
|
12
|
+
let targetValue = value;
|
|
13
|
+
|
|
14
|
+
while (targetValue > 0n) {
|
|
15
|
+
targetValue >>= 1n; // Divide by 2
|
|
16
|
+
bitLength++;
|
|
17
|
+
}
|
|
18
|
+
} else if (value === 0n) {
|
|
19
|
+
bitLength = 1;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return bitLength;
|
|
23
|
+
}
|