@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,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
|
+
export type LabelVerticalPosition = "top" | "bottom";
|
|
9
|
+
export type LabelHorizontalPosition = "left" | "right";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Interface for the properties of the `Label` component.
|
|
13
|
+
*/
|
|
14
|
+
interface LabelProps extends React.PropsWithChildren<NonNullable<unknown>> {
|
|
15
|
+
/**
|
|
16
|
+
* Text to be displayed on the label
|
|
17
|
+
*/
|
|
18
|
+
text: string;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Optional CSS class to apply to the label
|
|
22
|
+
*/
|
|
23
|
+
className?: string;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Optional horizontal position of the label, defined in LabelHorizontalPosition
|
|
27
|
+
* @default "left"
|
|
28
|
+
*/
|
|
29
|
+
horizontalPosition?: LabelHorizontalPosition;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Optional vertical position of the label, defined in LabelVerticalPosition
|
|
33
|
+
* @default "top"
|
|
34
|
+
*/
|
|
35
|
+
verticalPosition?: LabelVerticalPosition;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export default LabelProps;
|
|
@@ -0,0 +1,53 @@
|
|
|
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 Label from "./Label";
|
|
13
|
+
|
|
14
|
+
// Configure Story metadata
|
|
15
|
+
const meta = {
|
|
16
|
+
title: "Components/Label",
|
|
17
|
+
component: Label,
|
|
18
|
+
parameters: {
|
|
19
|
+
layout: "centered" // Center the component in the Canvas
|
|
20
|
+
},
|
|
21
|
+
tags: ["autodocs"], // Automatically generate documentation
|
|
22
|
+
argTypes: {
|
|
23
|
+
horizontalPosition: {
|
|
24
|
+
control: "radio",
|
|
25
|
+
options: ["left", "right"]
|
|
26
|
+
},
|
|
27
|
+
verticalPosition: {
|
|
28
|
+
control: "radio",
|
|
29
|
+
options: ["top", "bottom"]
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
} satisfies Meta<typeof Label>;
|
|
33
|
+
|
|
34
|
+
export default meta;
|
|
35
|
+
|
|
36
|
+
type Story = StoryObj<typeof meta>;
|
|
37
|
+
|
|
38
|
+
// Primary Story
|
|
39
|
+
export const Primary: Story = {
|
|
40
|
+
render: ({ ...args }) => {
|
|
41
|
+
return (
|
|
42
|
+
<Label {...args}>
|
|
43
|
+
<input type="text" />
|
|
44
|
+
</Label>
|
|
45
|
+
);
|
|
46
|
+
},
|
|
47
|
+
args: {
|
|
48
|
+
text: "Label Text",
|
|
49
|
+
// Optional Properties
|
|
50
|
+
horizontalPosition: "left",
|
|
51
|
+
verticalPosition: "top"
|
|
52
|
+
}
|
|
53
|
+
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2024 Opal Kelly Incorporated
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the FrontPanel license.
|
|
5
|
+
* See the LICENSE file found in the root directory of this project.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import React from "react";
|
|
9
|
+
|
|
10
|
+
import classNames from "classnames";
|
|
11
|
+
|
|
12
|
+
import LabelProps from "./Label.props";
|
|
13
|
+
|
|
14
|
+
import "../../index.css";
|
|
15
|
+
|
|
16
|
+
import "./Label.css";
|
|
17
|
+
|
|
18
|
+
type LabelElement = React.ElementRef<"div">;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* `Label` is a React component that renders a label with optional positioning.
|
|
22
|
+
*
|
|
23
|
+
* @component
|
|
24
|
+
* @param {object} props - Properties passed to component
|
|
25
|
+
* @param {React.Ref} forwardedRef - Forwarded ref for the indicator
|
|
26
|
+
*
|
|
27
|
+
* @returns {ReactNode} The rendered Label component
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```jsx
|
|
31
|
+
* <Label
|
|
32
|
+
* text="Label"
|
|
33
|
+
* horizontalPosition="left"
|
|
34
|
+
* verticalPosition="top">
|
|
35
|
+
* <input type="text" />
|
|
36
|
+
* </Label>
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
const Label = React.forwardRef<LabelElement, LabelProps>((props, forwardedRef) => {
|
|
40
|
+
const {
|
|
41
|
+
className,
|
|
42
|
+
text,
|
|
43
|
+
horizontalPosition = "left",
|
|
44
|
+
verticalPosition = "top",
|
|
45
|
+
children,
|
|
46
|
+
...labelProps
|
|
47
|
+
} = props;
|
|
48
|
+
|
|
49
|
+
return (
|
|
50
|
+
<div
|
|
51
|
+
{...labelProps}
|
|
52
|
+
ref={forwardedRef}
|
|
53
|
+
className={classNames(
|
|
54
|
+
"okLabel",
|
|
55
|
+
className,
|
|
56
|
+
"ok-pos-" + horizontalPosition + "-" + verticalPosition
|
|
57
|
+
)}>
|
|
58
|
+
<span className={classNames("okLabelText")}>{text}</span>
|
|
59
|
+
{children}
|
|
60
|
+
</div>
|
|
61
|
+
);
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
Label.displayName = "Label";
|
|
65
|
+
|
|
66
|
+
export default Label;
|
|
@@ -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 "./Label";
|
|
9
|
+
|
|
10
|
+
export { default as LabelProps } from "./Label.props";
|
|
11
|
+
export { LabelHorizontalPosition, LabelVerticalPosition } from "./Label.props";
|
|
@@ -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
|
+
.okNumberDisplay {
|
|
9
|
+
/* Layout */
|
|
10
|
+
display: flex;
|
|
11
|
+
padding: var(--number-display-padding, 6px 12px);
|
|
12
|
+
justify-content: flex-end;
|
|
13
|
+
align-items: center;
|
|
14
|
+
gap: 4px;
|
|
15
|
+
|
|
16
|
+
/* Style */
|
|
17
|
+
border-radius: 4px;
|
|
18
|
+
border: 1px solid var(--Gray-2, #d0d7df);
|
|
19
|
+
background: #f5f5f5;
|
|
20
|
+
|
|
21
|
+
/* Content Style */
|
|
22
|
+
.okNumberDisplayContent {
|
|
23
|
+
display: flex;
|
|
24
|
+
padding: var(--spacing-0, 0px);
|
|
25
|
+
align-items: center;
|
|
26
|
+
justify-content: flex-end;
|
|
27
|
+
gap: 8px;
|
|
28
|
+
flex: 1 0 0;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/* Text Style */
|
|
32
|
+
.okNumberDisplayText {
|
|
33
|
+
/* Typography */
|
|
34
|
+
color: var(--Dark, #343434);
|
|
35
|
+
text-align: center;
|
|
36
|
+
font-family: Monaco;
|
|
37
|
+
font-size: var(--number-display-font-size, 12px);
|
|
38
|
+
font-style: normal;
|
|
39
|
+
font-weight: 400;
|
|
40
|
+
line-height: var(--number-display-line-height, 12px); /* 100% */
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/* Size 1 */
|
|
44
|
+
&:where(.ok-r-size-1) {
|
|
45
|
+
--number-display-padding: 6px 6px;
|
|
46
|
+
--number-display-font-size: 12px;
|
|
47
|
+
--number-display-line-height: 12px;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* Sizes 2 */
|
|
51
|
+
&:where(.ok-r-size-2) {
|
|
52
|
+
--number-display-padding: 6px 10px;
|
|
53
|
+
--number-display-font-size: 14px;
|
|
54
|
+
--number-display-line-height: 14px;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/* Sizes 3 */
|
|
58
|
+
&:where(.ok-r-size-3) {
|
|
59
|
+
--number-display-padding: 6px 18px;
|
|
60
|
+
--number-display-font-size: 20px;
|
|
61
|
+
--number-display-line-height: 20px;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -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 { NumeralSystem } from "../../core";
|
|
9
|
+
|
|
10
|
+
import { LabelProps } from "../Label";
|
|
11
|
+
|
|
12
|
+
export type NumberDisplaySize = 1 | 2 | 3;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Interface for the properties of the `NumberDisplay` component.
|
|
16
|
+
*/
|
|
17
|
+
interface NumberDisplayProps {
|
|
18
|
+
/**
|
|
19
|
+
* Current value to be displayed
|
|
20
|
+
*/
|
|
21
|
+
value: bigint;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Maximum value that can be displayed
|
|
25
|
+
*/
|
|
26
|
+
maximumValue: bigint;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Minimum value that can be displayed
|
|
30
|
+
*/
|
|
31
|
+
minimumValue: bigint;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Optional CSS class to apply to the number display
|
|
35
|
+
*/
|
|
36
|
+
className?: string;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Optional label properties for the number display
|
|
40
|
+
*/
|
|
41
|
+
label?: LabelProps;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Optional size of the number display
|
|
45
|
+
* @default 1
|
|
46
|
+
*/
|
|
47
|
+
size?: NumberDisplaySize;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Optional tooltip text to be displayed on hover
|
|
51
|
+
*/
|
|
52
|
+
tooltip?: string;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Optional numeral system to be used for the number display, defined in NumeralSystem
|
|
56
|
+
*/
|
|
57
|
+
numeralSystem?: NumeralSystem;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Optional decimal scale for the number entry (Only used when numeral system is NumeralSystem.Decimal)
|
|
61
|
+
*/
|
|
62
|
+
decimalScale?: number;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export default NumberDisplayProps;
|
|
@@ -0,0 +1,83 @@
|
|
|
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 withApplication from "../../stories/decorators/Application.decorator";
|
|
13
|
+
|
|
14
|
+
import NumberDisplay from "./NumberDisplay";
|
|
15
|
+
|
|
16
|
+
import { NumeralSystem } from "../../core";
|
|
17
|
+
|
|
18
|
+
// Configure Story metadata
|
|
19
|
+
const meta = {
|
|
20
|
+
title: "Components/NumberDisplay",
|
|
21
|
+
component: NumberDisplay,
|
|
22
|
+
parameters: {
|
|
23
|
+
layout: "centered" // Center the component in the Canvas
|
|
24
|
+
},
|
|
25
|
+
tags: ["autodocs"], // Automatically generate documentation
|
|
26
|
+
argTypes: {
|
|
27
|
+
size: {
|
|
28
|
+
control: { type: "range", min: 1, max: 3, step: 1 }
|
|
29
|
+
},
|
|
30
|
+
numeralSystem: {
|
|
31
|
+
control: "radio",
|
|
32
|
+
options: ["Decimal", "Hexadecimal", "Binary", "Octal"],
|
|
33
|
+
mapping: {
|
|
34
|
+
Decimal: NumeralSystem.Decimal,
|
|
35
|
+
Hexadecimal: NumeralSystem.Hexadecimal,
|
|
36
|
+
Binary: NumeralSystem.Binary,
|
|
37
|
+
Octal: NumeralSystem.Octal
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
valueString: { control: "text" },
|
|
41
|
+
maximumValueString: { control: "text" },
|
|
42
|
+
minimumValueString: { control: "text" }
|
|
43
|
+
}
|
|
44
|
+
} satisfies Meta<typeof NumberDisplay>;
|
|
45
|
+
|
|
46
|
+
export default meta;
|
|
47
|
+
|
|
48
|
+
type Story = StoryObj<typeof meta>;
|
|
49
|
+
|
|
50
|
+
const convertToBigInt = (value: string) => {
|
|
51
|
+
return BigInt(value);
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
// Primary Story
|
|
55
|
+
export const Primary: Story = {
|
|
56
|
+
decorators: [withApplication],
|
|
57
|
+
render: (args) => {
|
|
58
|
+
const { valueString, maximumValueString, minimumValueString } = args;
|
|
59
|
+
|
|
60
|
+
const value = convertToBigInt(valueString);
|
|
61
|
+
const maximum = convertToBigInt(maximumValueString);
|
|
62
|
+
const minimum = convertToBigInt(minimumValueString);
|
|
63
|
+
|
|
64
|
+
return (
|
|
65
|
+
<NumberDisplay {...args} value={value} maximumValue={maximum} minimumValue={minimum} />
|
|
66
|
+
);
|
|
67
|
+
},
|
|
68
|
+
args: {
|
|
69
|
+
valueString: "8000",
|
|
70
|
+
maximumValueString: "1000000",
|
|
71
|
+
minimumValueString: "-1000000",
|
|
72
|
+
// Optional Properties
|
|
73
|
+
numeralSystem: NumeralSystem.Decimal,
|
|
74
|
+
decimalScale: 3,
|
|
75
|
+
label: {
|
|
76
|
+
text: "Decimal Value",
|
|
77
|
+
verticalPosition: "top",
|
|
78
|
+
horizontalPosition: "left"
|
|
79
|
+
},
|
|
80
|
+
size: 1,
|
|
81
|
+
tooltip: "Set the decimal value"
|
|
82
|
+
}
|
|
83
|
+
};
|
|
@@ -0,0 +1,155 @@
|
|
|
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 NumberDisplayProps from "./NumberDisplay.props";
|
|
13
|
+
|
|
14
|
+
import "../../index.css";
|
|
15
|
+
|
|
16
|
+
import "./NumberDisplay.css";
|
|
17
|
+
|
|
18
|
+
import Label from "../Label";
|
|
19
|
+
|
|
20
|
+
import { withTooltip } from "../TooltipUtility";
|
|
21
|
+
|
|
22
|
+
import { NumeralSystem, NumericDigits } from "../../core";
|
|
23
|
+
|
|
24
|
+
function FormatValueString(
|
|
25
|
+
value: bigint | null,
|
|
26
|
+
digitCount: bigint,
|
|
27
|
+
numeralSystem: NumeralSystem,
|
|
28
|
+
decimalScale: number
|
|
29
|
+
): string {
|
|
30
|
+
let retval: string;
|
|
31
|
+
|
|
32
|
+
if (value != null) {
|
|
33
|
+
const outputValue: bigint = value >= 0n ? value : -value;
|
|
34
|
+
const outputDigitCount: number = Number(digitCount);
|
|
35
|
+
|
|
36
|
+
const outputValueStr: string = outputValue
|
|
37
|
+
.toString(numeralSystem)
|
|
38
|
+
.padStart(outputDigitCount, "0");
|
|
39
|
+
|
|
40
|
+
if (numeralSystem === NumeralSystem.Decimal && decimalScale > 0) {
|
|
41
|
+
const integerDigitCount: number = outputDigitCount - decimalScale;
|
|
42
|
+
|
|
43
|
+
if (integerDigitCount > 0) {
|
|
44
|
+
retval =
|
|
45
|
+
outputValueStr.slice(0, integerDigitCount) +
|
|
46
|
+
"." +
|
|
47
|
+
outputValueStr.slice(integerDigitCount);
|
|
48
|
+
} else {
|
|
49
|
+
const prefixString: string = "0.";
|
|
50
|
+
const paddedPrefixString = prefixString.padEnd(
|
|
51
|
+
prefixString.length - integerDigitCount,
|
|
52
|
+
"0"
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
retval = paddedPrefixString + outputValueStr;
|
|
56
|
+
}
|
|
57
|
+
} else {
|
|
58
|
+
retval = outputValueStr;
|
|
59
|
+
}
|
|
60
|
+
} else {
|
|
61
|
+
retval = "Error"; //ERROR: Value is null
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return retval;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
type NumberDisplayElement = React.ElementRef<"div">;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* `NumberDisplay` is a React component that renders a number represented in binary, octal,
|
|
71
|
+
* decimal, or hexadecimal numeral systems with optional tooltip. It also allows to
|
|
72
|
+
* optionally set the decimal scale of the number when using the decimal numeral system.
|
|
73
|
+
*
|
|
74
|
+
* @component
|
|
75
|
+
* @param {object} props - Properties passed to component
|
|
76
|
+
* @param {React.Ref} forwardedRef - Forwarded ref for the NumberDisplay
|
|
77
|
+
* @returns {React.Node} The rendered NumberDisplay component
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```jsx
|
|
81
|
+
* <NumberDisplay
|
|
82
|
+
* label="Number Display"
|
|
83
|
+
* value={23456}
|
|
84
|
+
* maximumValue={65535}
|
|
85
|
+
* minimumValue={0} />
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
const NumberDisplay = React.forwardRef<NumberDisplayElement, NumberDisplayProps>(
|
|
89
|
+
(props, forwardedRef) => {
|
|
90
|
+
const {
|
|
91
|
+
className,
|
|
92
|
+
label,
|
|
93
|
+
size = 1,
|
|
94
|
+
numeralSystem = NumeralSystem.Decimal,
|
|
95
|
+
decimalScale = 0,
|
|
96
|
+
maximumValue,
|
|
97
|
+
minimumValue,
|
|
98
|
+
value
|
|
99
|
+
} = props;
|
|
100
|
+
|
|
101
|
+
const digitCount: bigint = React.useMemo(() => {
|
|
102
|
+
const maximumValueDigitCount: bigint = NumericDigits.ComputeDigitCountFromValue(
|
|
103
|
+
maximumValue,
|
|
104
|
+
numeralSystem
|
|
105
|
+
);
|
|
106
|
+
const minimumValueDigitCount: bigint = NumericDigits.ComputeDigitCountFromValue(
|
|
107
|
+
minimumValue,
|
|
108
|
+
numeralSystem
|
|
109
|
+
);
|
|
110
|
+
|
|
111
|
+
const maximumDigitCount: bigint =
|
|
112
|
+
maximumValueDigitCount > minimumValueDigitCount
|
|
113
|
+
? maximumValueDigitCount
|
|
114
|
+
: minimumValueDigitCount;
|
|
115
|
+
|
|
116
|
+
return maximumDigitCount;
|
|
117
|
+
}, [maximumValue, minimumValue, numeralSystem]);
|
|
118
|
+
|
|
119
|
+
const negativeSign = React.useMemo(
|
|
120
|
+
() => <span className={classnames("okNumberDisplayText", "ok-r-size-" + size)}>-</span>,
|
|
121
|
+
[size]
|
|
122
|
+
);
|
|
123
|
+
|
|
124
|
+
const NumberDisplayWithTooltip = withTooltip(
|
|
125
|
+
<div
|
|
126
|
+
ref={forwardedRef}
|
|
127
|
+
className={classnames("okNumberDisplay", className, "ok-r-size-" + size)}>
|
|
128
|
+
<div className="okNumberDisplayContent">
|
|
129
|
+
{value < 0n && negativeSign}
|
|
130
|
+
<span className="okNumberDisplayText">
|
|
131
|
+
{FormatValueString(value, digitCount, numeralSystem, decimalScale)}
|
|
132
|
+
</span>
|
|
133
|
+
</div>
|
|
134
|
+
</div>
|
|
135
|
+
);
|
|
136
|
+
|
|
137
|
+
const showLabel = label != null;
|
|
138
|
+
|
|
139
|
+
if (showLabel) {
|
|
140
|
+
return (
|
|
141
|
+
<Label {...label}>
|
|
142
|
+
<div style={{ width: "100%" }}>
|
|
143
|
+
<NumberDisplayWithTooltip {...props} />
|
|
144
|
+
</div>
|
|
145
|
+
</Label>
|
|
146
|
+
);
|
|
147
|
+
} else {
|
|
148
|
+
<NumberDisplayWithTooltip {...props} />;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
);
|
|
152
|
+
|
|
153
|
+
NumberDisplay.displayName = "NumberDisplay";
|
|
154
|
+
|
|
155
|
+
export default NumberDisplay;
|
|
@@ -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 "./NumberDisplay";
|
|
9
|
+
|
|
10
|
+
export { default as NumberDisplayProps } from "./NumberDisplay.props";
|
|
11
|
+
export { NumberDisplaySize } from "./NumberDisplay.props";
|
|
@@ -0,0 +1,71 @@
|
|
|
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
|
+
.okNumberEntry {
|
|
9
|
+
/* Layout */
|
|
10
|
+
display: flex;
|
|
11
|
+
padding: var(--number-entry-padding, 6px);
|
|
12
|
+
justify-content: flex-end;
|
|
13
|
+
align-items: center;
|
|
14
|
+
|
|
15
|
+
/* Style */
|
|
16
|
+
border-radius: 4px;
|
|
17
|
+
border: 1px solid var(--brand-12, #44bd84);
|
|
18
|
+
background: var(--Light, #fff);
|
|
19
|
+
|
|
20
|
+
/* Content Style */
|
|
21
|
+
.okNumberEntryContent {
|
|
22
|
+
display: flex;
|
|
23
|
+
height: auto; /*32px;*/
|
|
24
|
+
justify-content: flex-end;
|
|
25
|
+
align-items: center;
|
|
26
|
+
gap: var(--spacing-0, 0px);
|
|
27
|
+
align-self: stretch;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* Text Style */
|
|
31
|
+
.okNumberEntryText {
|
|
32
|
+
/* Typography */
|
|
33
|
+
color: var(--Dark, #343434);
|
|
34
|
+
text-align: center;
|
|
35
|
+
font-family: Monaco;
|
|
36
|
+
font-size: var(--number-entry-font-size, 12px);
|
|
37
|
+
font-style: normal;
|
|
38
|
+
font-weight: 400;
|
|
39
|
+
line-height: var(--number-entry-line-height, 12px); /* 100% */
|
|
40
|
+
letter-spacing: 1.26px;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/* Size 1 */
|
|
44
|
+
&:where(.ok-r-size-1) {
|
|
45
|
+
--number-entry-padding: 1px 6px;
|
|
46
|
+
--number-entry-font-size: 12px;
|
|
47
|
+
--number-entry-line-height: 12px;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* Sizes 2 */
|
|
51
|
+
&:where(.ok-r-size-2) {
|
|
52
|
+
--number-entry-padding: 1px 10px;
|
|
53
|
+
--number-entry-font-size: 14px;
|
|
54
|
+
--number-entry-line-height: 14px;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/* Sizes 3 */
|
|
58
|
+
&:where(.ok-r-size-3) {
|
|
59
|
+
--number-entry-padding: 1px 18px;
|
|
60
|
+
--number-entry-font-size: 20px;
|
|
61
|
+
--number-entry-line-height: 20px;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.okNumberEntry[data-disabled="true"] {
|
|
66
|
+
border: 1px solid var(--Gray-2, #d0d7df);
|
|
67
|
+
opacity: 0.5;
|
|
68
|
+
background: var(--Gray-3, #e7ebef);
|
|
69
|
+
|
|
70
|
+
pointer-events: none;
|
|
71
|
+
}
|