@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,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,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";
|