@sharedex/ui 0.9.0 → 0.10.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/README.md +37 -2
- package/dist/backgrounds/hosts/CssHost.d.ts +2 -6
- package/dist/backgrounds/hosts/CssHost.js +3 -17
- package/dist/backgrounds/hosts/styleHref.d.ts +6 -0
- package/dist/backgrounds/hosts/styleHref.js +20 -0
- package/dist/buttons/pick.d.ts +9 -3
- package/dist/buttons/pick.js +4 -1
- package/dist/forms/base.d.ts +1 -0
- package/dist/forms/base.js +224 -0
- package/dist/forms/buddy.d.ts +6 -0
- package/dist/forms/buddy.js +150 -0
- package/dist/forms/chips.d.ts +1 -0
- package/dist/forms/chips.js +140 -0
- package/dist/forms/choice.d.ts +1 -0
- package/dist/forms/choice.js +208 -0
- package/dist/forms/controls/CheckGroup.d.ts +65 -0
- package/dist/forms/controls/CheckGroup.js +99 -0
- package/dist/forms/controls/Checkbox.d.ts +43 -0
- package/dist/forms/controls/Checkbox.js +67 -0
- package/dist/forms/controls/ChipGroup.d.ts +50 -0
- package/dist/forms/controls/ChipGroup.js +56 -0
- package/dist/forms/controls/Combobox.d.ts +75 -0
- package/dist/forms/controls/Combobox.js +249 -0
- package/dist/forms/controls/ErrorSummary.d.ts +29 -0
- package/dist/forms/controls/ErrorSummary.js +79 -0
- package/dist/forms/controls/Field.d.ts +92 -0
- package/dist/forms/controls/Field.js +219 -0
- package/dist/forms/controls/FileDrop.d.ts +81 -0
- package/dist/forms/controls/FileDrop.js +328 -0
- package/dist/forms/controls/FormBuddy.d.ts +22 -0
- package/dist/forms/controls/FormBuddy.js +143 -0
- package/dist/forms/controls/FormReveal.d.ts +21 -0
- package/dist/forms/controls/FormReveal.js +19 -0
- package/dist/forms/controls/FormSteps.d.ts +75 -0
- package/dist/forms/controls/FormSteps.js +205 -0
- package/dist/forms/controls/FormSwap.d.ts +27 -0
- package/dist/forms/controls/FormSwap.js +38 -0
- package/dist/forms/controls/InlineEdit.d.ts +50 -0
- package/dist/forms/controls/InlineEdit.js +136 -0
- package/dist/forms/controls/NumberField.d.ts +43 -0
- package/dist/forms/controls/NumberField.js +205 -0
- package/dist/forms/controls/OtpField.d.ts +46 -0
- package/dist/forms/controls/OtpField.js +195 -0
- package/dist/forms/controls/PasswordRules.d.ts +31 -0
- package/dist/forms/controls/PasswordRules.js +85 -0
- package/dist/forms/controls/RadioGroup.d.ts +69 -0
- package/dist/forms/controls/RadioGroup.js +95 -0
- package/dist/forms/controls/Range.d.ts +60 -0
- package/dist/forms/controls/Range.js +169 -0
- package/dist/forms/controls/SaveStatus.d.ts +25 -0
- package/dist/forms/controls/SaveStatus.js +88 -0
- package/dist/forms/controls/Select.d.ts +46 -0
- package/dist/forms/controls/Select.js +35 -0
- package/dist/forms/controls/Switch.d.ts +54 -0
- package/dist/forms/controls/Switch.js +91 -0
- package/dist/forms/controls/TagsField.d.ts +68 -0
- package/dist/forms/controls/TagsField.js +0 -0
- package/dist/forms/controls/choiceChecks.d.ts +11 -0
- package/dist/forms/controls/choiceChecks.js +19 -0
- package/dist/forms/controls/choiceParts.d.ts +40 -0
- package/dist/forms/controls/choiceParts.js +49 -0
- package/dist/forms/controls/fieldChecks.d.ts +17 -0
- package/dist/forms/controls/fieldChecks.js +34 -0
- package/dist/forms/controls/fieldTools.d.ts +62 -0
- package/dist/forms/controls/fieldTools.js +54 -0
- package/dist/forms/controls/pickerChecks.d.ts +10 -0
- package/dist/forms/controls/pickerChecks.js +27 -0
- package/dist/forms/controls/rangeChecks.d.ts +11 -0
- package/dist/forms/controls/rangeChecks.js +23 -0
- package/dist/forms/controls/shared.d.ts +8 -0
- package/dist/forms/controls/shared.js +18 -0
- package/dist/forms/effects/cards.d.ts +11 -0
- package/dist/forms/effects/cards.js +52 -0
- package/dist/forms/effects/check/checkCard.d.ts +10 -0
- package/dist/forms/effects/check/checkCard.js +15 -0
- package/dist/forms/effects/check/checkCard.schema.d.ts +1 -0
- package/dist/forms/effects/check/checkCard.schema.js +9 -0
- package/dist/forms/effects/check/checkConfetti.d.ts +18 -0
- package/dist/forms/effects/check/checkConfetti.js +38 -0
- package/dist/forms/effects/check/checkConfetti.schema.d.ts +1 -0
- package/dist/forms/effects/check/checkConfetti.schema.js +13 -0
- package/dist/forms/effects/check/checkDraw.d.ts +7 -0
- package/dist/forms/effects/check/checkDraw.js +12 -0
- package/dist/forms/effects/check/checkDraw.schema.d.ts +1 -0
- package/dist/forms/effects/check/checkDraw.schema.js +9 -0
- package/dist/forms/effects/check/checkHeart.d.ts +9 -0
- package/dist/forms/effects/check/checkHeart.js +84 -0
- package/dist/forms/effects/check/checkHeart.schema.d.ts +1 -0
- package/dist/forms/effects/check/checkHeart.schema.js +10 -0
- package/dist/forms/effects/check/checkJelly.d.ts +9 -0
- package/dist/forms/effects/check/checkJelly.js +23 -0
- package/dist/forms/effects/check/checkJelly.schema.d.ts +1 -0
- package/dist/forms/effects/check/checkJelly.schema.js +10 -0
- package/dist/forms/effects/check/checkMerge.d.ts +9 -0
- package/dist/forms/effects/check/checkMerge.js +37 -0
- package/dist/forms/effects/check/checkMerge.schema.d.ts +1 -0
- package/dist/forms/effects/check/checkMerge.schema.js +10 -0
- package/dist/forms/effects/check/checkMixed.d.ts +7 -0
- package/dist/forms/effects/check/checkMixed.js +25 -0
- package/dist/forms/effects/check/checkMixed.schema.d.ts +1 -0
- package/dist/forms/effects/check/checkMixed.schema.js +9 -0
- package/dist/forms/effects/check/checkMorph.d.ts +9 -0
- package/dist/forms/effects/check/checkMorph.js +53 -0
- package/dist/forms/effects/check/checkMorph.schema.d.ts +1 -0
- package/dist/forms/effects/check/checkMorph.schema.js +10 -0
- package/dist/forms/effects/check/checkPop.d.ts +9 -0
- package/dist/forms/effects/check/checkPop.js +27 -0
- package/dist/forms/effects/check/checkPop.schema.d.ts +1 -0
- package/dist/forms/effects/check/checkPop.schema.js +10 -0
- package/dist/forms/effects/check/checkRipple.d.ts +7 -0
- package/dist/forms/effects/check/checkRipple.js +33 -0
- package/dist/forms/effects/check/checkRipple.schema.d.ts +1 -0
- package/dist/forms/effects/check/checkRipple.schema.js +9 -0
- package/dist/forms/effects/check/checkScribble.d.ts +11 -0
- package/dist/forms/effects/check/checkScribble.js +42 -0
- package/dist/forms/effects/check/checkScribble.schema.d.ts +1 -0
- package/dist/forms/effects/check/checkScribble.schema.js +11 -0
- package/dist/forms/effects/check/checkStrike.d.ts +9 -0
- package/dist/forms/effects/check/checkStrike.js +54 -0
- package/dist/forms/effects/check/checkStrike.schema.d.ts +1 -0
- package/dist/forms/effects/check/checkStrike.schema.js +10 -0
- package/dist/forms/effects/chip/chipCheck.d.ts +7 -0
- package/dist/forms/effects/chip/chipCheck.js +26 -0
- package/dist/forms/effects/chip/chipCheck.schema.d.ts +1 -0
- package/dist/forms/effects/chip/chipCheck.schema.js +9 -0
- package/dist/forms/effects/chip/chipMerge.d.ts +9 -0
- package/dist/forms/effects/chip/chipMerge.js +63 -0
- package/dist/forms/effects/chip/chipMerge.schema.d.ts +1 -0
- package/dist/forms/effects/chip/chipMerge.schema.js +10 -0
- package/dist/forms/effects/file/fileButton.d.ts +7 -0
- package/dist/forms/effects/file/fileButton.js +28 -0
- package/dist/forms/effects/file/fileButton.schema.d.ts +1 -0
- package/dist/forms/effects/file/fileButton.schema.js +9 -0
- package/dist/forms/effects/file/fileCards.d.ts +7 -0
- package/dist/forms/effects/file/fileCards.js +38 -0
- package/dist/forms/effects/file/fileCards.schema.d.ts +1 -0
- package/dist/forms/effects/file/fileCards.schema.js +9 -0
- package/dist/forms/effects/file/fileDrag.d.ts +9 -0
- package/dist/forms/effects/file/fileDrag.js +45 -0
- package/dist/forms/effects/file/fileDrag.schema.d.ts +1 -0
- package/dist/forms/effects/file/fileDrag.schema.js +10 -0
- package/dist/forms/effects/file/filePage.d.ts +7 -0
- package/dist/forms/effects/file/filePage.js +46 -0
- package/dist/forms/effects/file/filePage.schema.d.ts +1 -0
- package/dist/forms/effects/file/filePage.schema.js +9 -0
- package/dist/forms/effects/file/filePreview.d.ts +7 -0
- package/dist/forms/effects/file/filePreview.js +17 -0
- package/dist/forms/effects/file/filePreview.schema.d.ts +1 -0
- package/dist/forms/effects/file/filePreview.schema.js +9 -0
- package/dist/forms/effects/file/fileProgress.d.ts +9 -0
- package/dist/forms/effects/file/fileProgress.js +92 -0
- package/dist/forms/effects/file/fileProgress.schema.d.ts +1 -0
- package/dist/forms/effects/file/fileProgress.schema.js +10 -0
- package/dist/forms/effects/file/fileReject.d.ts +7 -0
- package/dist/forms/effects/file/fileReject.js +24 -0
- package/dist/forms/effects/file/fileReject.schema.d.ts +1 -0
- package/dist/forms/effects/file/fileReject.schema.js +9 -0
- package/dist/forms/effects/input/inputAside.d.ts +11 -0
- package/dist/forms/effects/input/inputAside.js +42 -0
- package/dist/forms/effects/input/inputAside.schema.d.ts +1 -0
- package/dist/forms/effects/input/inputAside.schema.js +11 -0
- package/dist/forms/effects/input/inputBeam.d.ts +14 -0
- package/dist/forms/effects/input/inputBeam.js +51 -0
- package/dist/forms/effects/input/inputBeam.schema.d.ts +1 -0
- package/dist/forms/effects/input/inputBeam.schema.js +18 -0
- package/dist/forms/effects/input/inputCaret.d.ts +13 -0
- package/dist/forms/effects/input/inputCaret.js +33 -0
- package/dist/forms/effects/input/inputCaret.schema.d.ts +1 -0
- package/dist/forms/effects/input/inputCaret.schema.js +26 -0
- package/dist/forms/effects/input/inputCounter.d.ts +16 -0
- package/dist/forms/effects/input/inputCounter.js +84 -0
- package/dist/forms/effects/input/inputCounter.schema.d.ts +1 -0
- package/dist/forms/effects/input/inputCounter.schema.js +12 -0
- package/dist/forms/effects/input/inputCycle.d.ts +19 -0
- package/dist/forms/effects/input/inputCycle.js +93 -0
- package/dist/forms/effects/input/inputCycle.schema.d.ts +1 -0
- package/dist/forms/effects/input/inputCycle.schema.js +11 -0
- package/dist/forms/effects/input/inputDepth.d.ts +11 -0
- package/dist/forms/effects/input/inputDepth.js +31 -0
- package/dist/forms/effects/input/inputDepth.schema.d.ts +1 -0
- package/dist/forms/effects/input/inputDepth.schema.js +11 -0
- package/dist/forms/effects/input/inputDraw.d.ts +13 -0
- package/dist/forms/effects/input/inputDraw.js +27 -0
- package/dist/forms/effects/input/inputDraw.schema.d.ts +1 -0
- package/dist/forms/effects/input/inputDraw.schema.js +12 -0
- package/dist/forms/effects/input/inputFlap.d.ts +9 -0
- package/dist/forms/effects/input/inputFlap.js +24 -0
- package/dist/forms/effects/input/inputFlap.schema.d.ts +1 -0
- package/dist/forms/effects/input/inputFlap.schema.js +10 -0
- package/dist/forms/effects/input/inputFloat.d.ts +12 -0
- package/dist/forms/effects/input/inputFloat.js +46 -0
- package/dist/forms/effects/input/inputFloat.schema.d.ts +1 -0
- package/dist/forms/effects/input/inputFloat.schema.js +10 -0
- package/dist/forms/effects/input/inputFlood.d.ts +11 -0
- package/dist/forms/effects/input/inputFlood.js +30 -0
- package/dist/forms/effects/input/inputFlood.schema.d.ts +1 -0
- package/dist/forms/effects/input/inputFlood.schema.js +11 -0
- package/dist/forms/effects/input/inputFrame.d.ts +18 -0
- package/dist/forms/effects/input/inputFrame.js +77 -0
- package/dist/forms/effects/input/inputFrame.schema.d.ts +1 -0
- package/dist/forms/effects/input/inputFrame.schema.js +13 -0
- package/dist/forms/effects/input/inputIcon.d.ts +11 -0
- package/dist/forms/effects/input/inputIcon.js +18 -0
- package/dist/forms/effects/input/inputIcon.schema.d.ts +1 -0
- package/dist/forms/effects/input/inputIcon.schema.js +11 -0
- package/dist/forms/effects/input/inputNotch.d.ts +9 -0
- package/dist/forms/effects/input/inputNotch.js +70 -0
- package/dist/forms/effects/input/inputNotch.schema.d.ts +1 -0
- package/dist/forms/effects/input/inputNotch.schema.js +10 -0
- package/dist/forms/effects/input/inputReveal.d.ts +15 -0
- package/dist/forms/effects/input/inputReveal.js +56 -0
- package/dist/forms/effects/input/inputReveal.schema.d.ts +1 -0
- package/dist/forms/effects/input/inputReveal.schema.js +16 -0
- package/dist/forms/effects/input/inputRing.d.ts +13 -0
- package/dist/forms/effects/input/inputRing.js +27 -0
- package/dist/forms/effects/input/inputRing.schema.d.ts +1 -0
- package/dist/forms/effects/input/inputRing.schema.js +12 -0
- package/dist/forms/effects/input/inputRise.d.ts +9 -0
- package/dist/forms/effects/input/inputRise.js +22 -0
- package/dist/forms/effects/input/inputRise.schema.d.ts +1 -0
- package/dist/forms/effects/input/inputRise.schema.js +10 -0
- package/dist/forms/effects/input/inputSearch.d.ts +9 -0
- package/dist/forms/effects/input/inputSearch.js +37 -0
- package/dist/forms/effects/input/inputSearch.schema.d.ts +1 -0
- package/dist/forms/effects/input/inputSearch.schema.js +10 -0
- package/dist/forms/effects/input/inputSkeleton.d.ts +7 -0
- package/dist/forms/effects/input/inputSkeleton.js +41 -0
- package/dist/forms/effects/input/inputSkeleton.schema.d.ts +1 -0
- package/dist/forms/effects/input/inputSkeleton.schema.js +9 -0
- package/dist/forms/effects/input/inputSpotlight.d.ts +9 -0
- package/dist/forms/effects/input/inputSpotlight.js +20 -0
- package/dist/forms/effects/input/inputSpotlight.schema.d.ts +1 -0
- package/dist/forms/effects/input/inputSpotlight.schema.js +10 -0
- package/dist/forms/effects/input/inputStrength.d.ts +9 -0
- package/dist/forms/effects/input/inputStrength.js +29 -0
- package/dist/forms/effects/input/inputStrength.schema.d.ts +1 -0
- package/dist/forms/effects/input/inputStrength.schema.js +10 -0
- package/dist/forms/effects/input/inputSwap.d.ts +11 -0
- package/dist/forms/effects/input/inputSwap.js +39 -0
- package/dist/forms/effects/input/inputSwap.schema.d.ts +1 -0
- package/dist/forms/effects/input/inputSwap.schema.js +11 -0
- package/dist/forms/effects/input/inputUnderline.d.ts +13 -0
- package/dist/forms/effects/input/inputUnderline.js +36 -0
- package/dist/forms/effects/input/inputUnderline.schema.d.ts +1 -0
- package/dist/forms/effects/input/inputUnderline.schema.js +18 -0
- package/dist/forms/effects/input/inputWave.d.ts +11 -0
- package/dist/forms/effects/input/inputWave.js +23 -0
- package/dist/forms/effects/input/inputWave.schema.d.ts +1 -0
- package/dist/forms/effects/input/inputWave.schema.js +11 -0
- package/dist/forms/effects/input/inputWavy.d.ts +11 -0
- package/dist/forms/effects/input/inputWavy.js +53 -0
- package/dist/forms/effects/input/inputWavy.schema.d.ts +1 -0
- package/dist/forms/effects/input/inputWavy.schema.js +11 -0
- package/dist/forms/effects/kit.d.ts +213 -0
- package/dist/forms/effects/kit.js +226 -0
- package/dist/forms/effects/picker/chipPop.d.ts +7 -0
- package/dist/forms/effects/picker/chipPop.js +28 -0
- package/dist/forms/effects/picker/chipPop.schema.d.ts +1 -0
- package/dist/forms/effects/picker/chipPop.schema.js +9 -0
- package/dist/forms/effects/picker/listHighlight.d.ts +9 -0
- package/dist/forms/effects/picker/listHighlight.js +42 -0
- package/dist/forms/effects/picker/listHighlight.schema.d.ts +1 -0
- package/dist/forms/effects/picker/listHighlight.schema.js +10 -0
- package/dist/forms/effects/picker/listMatch.d.ts +7 -0
- package/dist/forms/effects/picker/listMatch.js +21 -0
- package/dist/forms/effects/picker/listMatch.schema.d.ts +1 -0
- package/dist/forms/effects/picker/listMatch.schema.js +9 -0
- package/dist/forms/effects/picker/pickerArrow.d.ts +9 -0
- package/dist/forms/effects/picker/pickerArrow.js +17 -0
- package/dist/forms/effects/picker/pickerArrow.schema.d.ts +1 -0
- package/dist/forms/effects/picker/pickerArrow.schema.js +10 -0
- package/dist/forms/effects/picker/pickerCheck.d.ts +7 -0
- package/dist/forms/effects/picker/pickerCheck.js +31 -0
- package/dist/forms/effects/picker/pickerCheck.schema.d.ts +1 -0
- package/dist/forms/effects/picker/pickerCheck.schema.js +9 -0
- package/dist/forms/effects/picker/pickerOpen.d.ts +12 -0
- package/dist/forms/effects/picker/pickerOpen.js +34 -0
- package/dist/forms/effects/picker/pickerOpen.schema.d.ts +1 -0
- package/dist/forms/effects/picker/pickerOpen.schema.js +16 -0
- package/dist/forms/effects/picker/pickerSheet.d.ts +9 -0
- package/dist/forms/effects/picker/pickerSheet.js +47 -0
- package/dist/forms/effects/picker/pickerSheet.schema.d.ts +1 -0
- package/dist/forms/effects/picker/pickerSheet.schema.js +10 -0
- package/dist/forms/effects/picker/pickerStagger.d.ts +9 -0
- package/dist/forms/effects/picker/pickerStagger.js +31 -0
- package/dist/forms/effects/picker/pickerStagger.schema.d.ts +1 -0
- package/dist/forms/effects/picker/pickerStagger.schema.js +10 -0
- package/dist/forms/effects/radio/radioCard.d.ts +10 -0
- package/dist/forms/effects/radio/radioCard.js +15 -0
- package/dist/forms/effects/radio/radioCard.schema.d.ts +1 -0
- package/dist/forms/effects/radio/radioCard.schema.js +9 -0
- package/dist/forms/effects/radio/radioCircle.d.ts +9 -0
- package/dist/forms/effects/radio/radioCircle.js +49 -0
- package/dist/forms/effects/radio/radioCircle.schema.d.ts +1 -0
- package/dist/forms/effects/radio/radioCircle.schema.js +10 -0
- package/dist/forms/effects/radio/radioDot.d.ts +7 -0
- package/dist/forms/effects/radio/radioDot.js +10 -0
- package/dist/forms/effects/radio/radioDot.schema.d.ts +1 -0
- package/dist/forms/effects/radio/radioDot.schema.js +9 -0
- package/dist/forms/effects/radio/radioEmoji.d.ts +9 -0
- package/dist/forms/effects/radio/radioEmoji.js +94 -0
- package/dist/forms/effects/radio/radioEmoji.schema.d.ts +1 -0
- package/dist/forms/effects/radio/radioEmoji.schema.js +10 -0
- package/dist/forms/effects/radio/radioPulse.d.ts +9 -0
- package/dist/forms/effects/radio/radioPulse.js +24 -0
- package/dist/forms/effects/radio/radioPulse.schema.d.ts +1 -0
- package/dist/forms/effects/radio/radioPulse.schema.js +10 -0
- package/dist/forms/effects/radio/radioScale.d.ts +9 -0
- package/dist/forms/effects/radio/radioScale.js +73 -0
- package/dist/forms/effects/radio/radioScale.schema.d.ts +1 -0
- package/dist/forms/effects/radio/radioScale.schema.js +10 -0
- package/dist/forms/effects/radio/radioSegment.d.ts +7 -0
- package/dist/forms/effects/radio/radioSegment.js +52 -0
- package/dist/forms/effects/radio/radioSegment.schema.d.ts +1 -0
- package/dist/forms/effects/radio/radioSegment.schema.js +9 -0
- package/dist/forms/effects/radio/radioStars.d.ts +15 -0
- package/dist/forms/effects/radio/radioStars.js +125 -0
- package/dist/forms/effects/radio/radioStars.schema.d.ts +1 -0
- package/dist/forms/effects/radio/radioStars.schema.js +13 -0
- package/dist/forms/effects/radio/radioTravel.d.ts +9 -0
- package/dist/forms/effects/radio/radioTravel.js +49 -0
- package/dist/forms/effects/radio/radioTravel.schema.d.ts +1 -0
- package/dist/forms/effects/radio/radioTravel.schema.js +10 -0
- package/dist/forms/effects/radio/radioUnderline.d.ts +9 -0
- package/dist/forms/effects/radio/radioUnderline.js +61 -0
- package/dist/forms/effects/radio/radioUnderline.schema.d.ts +1 -0
- package/dist/forms/effects/radio/radioUnderline.schema.js +10 -0
- package/dist/forms/effects/radio/shape.d.ts +13 -0
- package/dist/forms/effects/radio/shape.js +61 -0
- package/dist/forms/effects/range/rangeBubble.d.ts +9 -0
- package/dist/forms/effects/range/rangeBubble.js +54 -0
- package/dist/forms/effects/range/rangeBubble.schema.d.ts +1 -0
- package/dist/forms/effects/range/rangeBubble.schema.js +10 -0
- package/dist/forms/effects/range/rangeElastic.d.ts +9 -0
- package/dist/forms/effects/range/rangeElastic.js +101 -0
- package/dist/forms/effects/range/rangeElastic.schema.d.ts +1 -0
- package/dist/forms/effects/range/rangeElastic.schema.js +10 -0
- package/dist/forms/effects/range/rangeFace.d.ts +11 -0
- package/dist/forms/effects/range/rangeFace.js +68 -0
- package/dist/forms/effects/range/rangeFace.schema.d.ts +1 -0
- package/dist/forms/effects/range/rangeFace.schema.js +11 -0
- package/dist/forms/effects/range/rangeFill.d.ts +7 -0
- package/dist/forms/effects/range/rangeFill.js +29 -0
- package/dist/forms/effects/range/rangeFill.schema.d.ts +1 -0
- package/dist/forms/effects/range/rangeFill.schema.js +9 -0
- package/dist/forms/effects/range/rangeHistogram.d.ts +14 -0
- package/dist/forms/effects/range/rangeHistogram.js +65 -0
- package/dist/forms/effects/range/rangeHistogram.schema.d.ts +1 -0
- package/dist/forms/effects/range/rangeHistogram.schema.js +11 -0
- package/dist/forms/effects/range/rangeThumb.d.ts +9 -0
- package/dist/forms/effects/range/rangeThumb.js +39 -0
- package/dist/forms/effects/range/rangeThumb.schema.d.ts +1 -0
- package/dist/forms/effects/range/rangeThumb.schema.js +10 -0
- package/dist/forms/effects/range/rangeTicks.d.ts +9 -0
- package/dist/forms/effects/range/rangeTicks.js +44 -0
- package/dist/forms/effects/range/rangeTicks.schema.d.ts +1 -0
- package/dist/forms/effects/range/rangeTicks.schema.js +18 -0
- package/dist/forms/effects/ring.d.ts +5 -0
- package/dist/forms/effects/ring.js +12 -0
- package/dist/forms/effects/step/stepProgress.d.ts +9 -0
- package/dist/forms/effects/step/stepProgress.js +35 -0
- package/dist/forms/effects/step/stepProgress.schema.d.ts +1 -0
- package/dist/forms/effects/step/stepProgress.schema.js +10 -0
- package/dist/forms/effects/step/stepSlide.d.ts +9 -0
- package/dist/forms/effects/step/stepSlide.js +50 -0
- package/dist/forms/effects/step/stepSlide.schema.d.ts +1 -0
- package/dist/forms/effects/step/stepSlide.schema.js +10 -0
- package/dist/forms/effects/switch/switchBulb.d.ts +9 -0
- package/dist/forms/effects/switch/switchBulb.js +70 -0
- package/dist/forms/effects/switch/switchBulb.schema.d.ts +1 -0
- package/dist/forms/effects/switch/switchBulb.schema.js +10 -0
- package/dist/forms/effects/switch/switchDayNight.d.ts +15 -0
- package/dist/forms/effects/switch/switchDayNight.js +96 -0
- package/dist/forms/effects/switch/switchDayNight.schema.d.ts +1 -0
- package/dist/forms/effects/switch/switchDayNight.schema.js +13 -0
- package/dist/forms/effects/switch/switchFace.d.ts +7 -0
- package/dist/forms/effects/switch/switchFace.js +75 -0
- package/dist/forms/effects/switch/switchFace.schema.d.ts +1 -0
- package/dist/forms/effects/switch/switchFace.schema.js +9 -0
- package/dist/forms/effects/switch/switchFlip.d.ts +7 -0
- package/dist/forms/effects/switch/switchFlip.js +45 -0
- package/dist/forms/effects/switch/switchFlip.schema.d.ts +1 -0
- package/dist/forms/effects/switch/switchFlip.schema.js +9 -0
- package/dist/forms/effects/switch/switchGoo.d.ts +7 -0
- package/dist/forms/effects/switch/switchGoo.js +95 -0
- package/dist/forms/effects/switch/switchGoo.schema.d.ts +1 -0
- package/dist/forms/effects/switch/switchGoo.schema.js +9 -0
- package/dist/forms/effects/switch/switchIcon.d.ts +9 -0
- package/dist/forms/effects/switch/switchIcon.js +63 -0
- package/dist/forms/effects/switch/switchIcon.schema.d.ts +1 -0
- package/dist/forms/effects/switch/switchIcon.schema.js +10 -0
- package/dist/forms/effects/switch/switchLabels.d.ts +11 -0
- package/dist/forms/effects/switch/switchLabels.js +55 -0
- package/dist/forms/effects/switch/switchLabels.schema.d.ts +1 -0
- package/dist/forms/effects/switch/switchLabels.schema.js +11 -0
- package/dist/forms/effects/switch/switchMorph.d.ts +9 -0
- package/dist/forms/effects/switch/switchMorph.js +22 -0
- package/dist/forms/effects/switch/switchMorph.schema.d.ts +1 -0
- package/dist/forms/effects/switch/switchMorph.schema.js +10 -0
- package/dist/forms/effects/switch/switchNeon.d.ts +11 -0
- package/dist/forms/effects/switch/switchNeon.js +53 -0
- package/dist/forms/effects/switch/switchNeon.schema.d.ts +1 -0
- package/dist/forms/effects/switch/switchNeon.schema.js +11 -0
- package/dist/forms/effects/switch/switchSlide.d.ts +7 -0
- package/dist/forms/effects/switch/switchSlide.js +11 -0
- package/dist/forms/effects/switch/switchSlide.schema.d.ts +1 -0
- package/dist/forms/effects/switch/switchSlide.schema.js +9 -0
- package/dist/forms/effects/switch/switchStretch.d.ts +9 -0
- package/dist/forms/effects/switch/switchStretch.js +21 -0
- package/dist/forms/effects/switch/switchStretch.schema.d.ts +1 -0
- package/dist/forms/effects/switch/switchStretch.schema.js +10 -0
- package/dist/forms/effects/valid/validAsync.d.ts +7 -0
- package/dist/forms/effects/valid/validAsync.js +36 -0
- package/dist/forms/effects/valid/validAsync.schema.d.ts +1 -0
- package/dist/forms/effects/valid/validAsync.schema.js +9 -0
- package/dist/forms/effects/valid/validBubble.d.ts +7 -0
- package/dist/forms/effects/valid/validBubble.js +61 -0
- package/dist/forms/effects/valid/validBubble.schema.d.ts +1 -0
- package/dist/forms/effects/valid/validBubble.schema.js +9 -0
- package/dist/forms/effects/valid/validCheck.d.ts +9 -0
- package/dist/forms/effects/valid/validCheck.js +50 -0
- package/dist/forms/effects/valid/validCheck.schema.d.ts +1 -0
- package/dist/forms/effects/valid/validCheck.schema.js +10 -0
- package/dist/forms/effects/valid/validColor.d.ts +11 -0
- package/dist/forms/effects/valid/validColor.js +28 -0
- package/dist/forms/effects/valid/validColor.schema.d.ts +1 -0
- package/dist/forms/effects/valid/validColor.schema.js +11 -0
- package/dist/forms/effects/valid/validFlash.d.ts +9 -0
- package/dist/forms/effects/valid/validFlash.js +36 -0
- package/dist/forms/effects/valid/validFlash.schema.d.ts +1 -0
- package/dist/forms/effects/valid/validFlash.schema.js +10 -0
- package/dist/forms/effects/valid/validMessage.d.ts +7 -0
- package/dist/forms/effects/valid/validMessage.js +24 -0
- package/dist/forms/effects/valid/validMessage.schema.d.ts +1 -0
- package/dist/forms/effects/valid/validMessage.schema.js +9 -0
- package/dist/forms/effects/valid/validShake.d.ts +9 -0
- package/dist/forms/effects/valid/validShake.js +37 -0
- package/dist/forms/effects/valid/validShake.schema.d.ts +1 -0
- package/dist/forms/effects/valid/validShake.schema.js +10 -0
- package/dist/forms/effects/valid/validSwap.d.ts +7 -0
- package/dist/forms/effects/valid/validSwap.js +33 -0
- package/dist/forms/effects/valid/validSwap.schema.d.ts +1 -0
- package/dist/forms/effects/valid/validSwap.schema.js +9 -0
- package/dist/forms/errors.d.ts +12 -0
- package/dist/forms/errors.js +20 -0
- package/dist/forms/file.d.ts +1 -0
- package/dist/forms/file.js +268 -0
- package/dist/forms/files.d.ts +7 -0
- package/dist/forms/files.js +29 -0
- package/dist/forms/formSteps.d.ts +9 -0
- package/dist/forms/formSteps.js +6 -0
- package/dist/forms/ids.d.ts +17 -0
- package/dist/forms/ids.js +13 -0
- package/dist/forms/inline.d.ts +3 -0
- package/dist/forms/inline.js +128 -0
- package/dist/forms/number.d.ts +1 -0
- package/dist/forms/number.js +67 -0
- package/dist/forms/otp.d.ts +4 -0
- package/dist/forms/otp.js +171 -0
- package/dist/forms/picker.d.ts +1 -0
- package/dist/forms/picker.js +303 -0
- package/dist/forms/range.d.ts +3 -0
- package/dist/forms/range.js +223 -0
- package/dist/forms/registry.d.ts +4 -0
- package/dist/forms/registry.js +133 -0
- package/dist/forms/reveal.d.ts +6 -0
- package/dist/forms/reveal.js +51 -0
- package/dist/forms/runtime/focus.d.ts +16 -0
- package/dist/forms/runtime/focus.js +55 -0
- package/dist/forms/runtime/listMatch.d.ts +2 -0
- package/dist/forms/runtime/listMatch.js +33 -0
- package/dist/forms/runtime/origin.d.ts +10 -0
- package/dist/forms/runtime/origin.js +25 -0
- package/dist/forms/runtime/placePopup.d.ts +10 -0
- package/dist/forms/runtime/placePopup.js +55 -0
- package/dist/forms/runtime/useFlip.d.ts +7 -0
- package/dist/forms/runtime/useFlip.js +38 -0
- package/dist/forms/runtime/useMorph.d.ts +8 -0
- package/dist/forms/runtime/useMorph.js +56 -0
- package/dist/forms/runtime/useOffScreen.d.ts +3 -0
- package/dist/forms/runtime/useOffScreen.js +16 -0
- package/dist/forms/runtime/useSwitchDrag.d.ts +8 -0
- package/dist/forms/runtime/useSwitchDrag.js +83 -0
- package/dist/forms/runtime/vanish.d.ts +6 -0
- package/dist/forms/runtime/vanish.js +185 -0
- package/dist/forms/steps.d.ts +1 -0
- package/dist/forms/steps.js +149 -0
- package/dist/forms/swap.d.ts +7 -0
- package/dist/forms/swap.js +149 -0
- package/dist/forms/switch.d.ts +1 -0
- package/dist/forms/switch.js +99 -0
- package/dist/forms/tools.d.ts +3 -0
- package/dist/forms/tools.js +248 -0
- package/dist/forms/types.d.ts +161 -0
- package/dist/forms/types.js +5 -0
- package/dist/index.d.ts +234 -0
- package/dist/index.js +119 -0
- package/dist/schema/forms.d.ts +3 -0
- package/dist/schema/forms.js +194 -0
- package/dist/schema/index.d.ts +2 -1
- package/dist/schema/index.js +3 -1
- package/dist/schema/types.d.ts +2 -2
- package/dist/schema/types.js +1 -0
- package/guides/README.md +62 -61
- package/guides/contact.md +100 -77
- package/guides/forms.md +105 -0
- package/package.json +1 -1
- package/styles/form.css +594 -0
- package/theme.css +6 -1
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { defineSchema } from "../../../schema/define.js";
|
|
2
|
+
export const CHIP_POP_SCHEMA = defineSchema()({
|
|
3
|
+
id: "chipPop",
|
|
4
|
+
family: "form",
|
|
5
|
+
factory: "chipPop",
|
|
6
|
+
fields: {
|
|
7
|
+
duration: { kind: "number", label: "Duration", min: 0.1, max: 0.4, step: 0.05, unit: "s", default: 0.2 },
|
|
8
|
+
},
|
|
9
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { FormEffect } from "../../types.js";
|
|
2
|
+
export interface ListHighlightOptions {
|
|
3
|
+
/** The highlight's colour. Default the primary colour, faint. */
|
|
4
|
+
readonly color?: string;
|
|
5
|
+
/** Seconds it takes to slide to the next option. Default `0.15`. */
|
|
6
|
+
readonly duration?: number;
|
|
7
|
+
}
|
|
8
|
+
/** One highlight slides from option to option as you move through the list. A Combobox's only. */
|
|
9
|
+
export declare function listHighlight(options?: ListHighlightOptions): FormEffect;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { EASE, OPTION, POPUP, at, choiceLayer, defineForm, pickerOf, v, varName } from "../kit.js";
|
|
2
|
+
const ID = "listHighlight";
|
|
3
|
+
const BAR = choiceLayer(ID, "bar");
|
|
4
|
+
// One highlight slides from option to option as the arrow keys or the mouse move through the list, in place of each
|
|
5
|
+
// option lighting on its own. Anchor positioning ties it to the active option (its anchor name moves with
|
|
6
|
+
// `data-active`), so options of any height work; Firefox moves it at once. All of it is motion: under reduced motion,
|
|
7
|
+
// and without anchor positioning, the options light on their own again (`--sx-option-active` is the look's hook).
|
|
8
|
+
const CSS = ` @supports (anchor-name: --a) {
|
|
9
|
+
${at(pickerOf(ID))} {
|
|
10
|
+
--sx-option-active: transparent;
|
|
11
|
+
}
|
|
12
|
+
${at(`${pickerOf(ID)} ${OPTION}[data-active]`)} {
|
|
13
|
+
anchor-name: ${v(ID, "anchor")};
|
|
14
|
+
}
|
|
15
|
+
${at(`${pickerOf(ID)} ${BAR}`)} {
|
|
16
|
+
position-anchor: ${v(ID, "anchor")};
|
|
17
|
+
inset-block-start: anchor(start);
|
|
18
|
+
inset-block-end: anchor(end);
|
|
19
|
+
inset-inline-start: anchor(start);
|
|
20
|
+
inset-inline-end: anchor(end);
|
|
21
|
+
border-radius: var(--sx-option-radius, 0.375rem);
|
|
22
|
+
background: ${v(ID, "color")};
|
|
23
|
+
opacity: 0;
|
|
24
|
+
transition: inset-block-start ${v(ID, "time")} ${EASE}, inset-block-end ${v(ID, "time")} ${EASE}, opacity ${v(ID, "time")} ${EASE};
|
|
25
|
+
}
|
|
26
|
+
${at(`${pickerOf(ID)} ${POPUP}:has(${OPTION}[data-active]) ${BAR}`)} {
|
|
27
|
+
opacity: 1;
|
|
28
|
+
}
|
|
29
|
+
}`;
|
|
30
|
+
/** One highlight slides from option to option as you move through the list. A Combobox's only. */
|
|
31
|
+
export function listHighlight(options = {}) {
|
|
32
|
+
return defineForm(ID, CSS, {
|
|
33
|
+
fits: ["picker"],
|
|
34
|
+
vars: {
|
|
35
|
+
[varName(ID, "color")]: options.color ?? "color-mix(in oklab, var(--color-sx-primary) 14%, transparent)",
|
|
36
|
+
// one anchor name per combobox: `{uid}` becomes its own id
|
|
37
|
+
[varName(ID, "anchor")]: "--{uid}-active",
|
|
38
|
+
[varName(ID, "time")]: `${options.duration ?? 0.15}s`,
|
|
39
|
+
},
|
|
40
|
+
layers: [{ slot: "list", part: "bar" }],
|
|
41
|
+
});
|
|
42
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const LIST_HIGHLIGHT_SCHEMA: import("../../../schema/types.js").Schema;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { defineSchema } from "../../../schema/define.js";
|
|
2
|
+
export const LIST_HIGHLIGHT_SCHEMA = defineSchema()({
|
|
3
|
+
id: "listHighlight",
|
|
4
|
+
family: "form",
|
|
5
|
+
factory: "listHighlight",
|
|
6
|
+
fields: {
|
|
7
|
+
color: { kind: "color", label: "Colour", default: "color-mix(in oklab, var(--color-sx-primary) 14%, transparent)" },
|
|
8
|
+
duration: { kind: "number", label: "Duration", min: 0.08, max: 0.4, step: 0.02, unit: "s", default: 0.15 },
|
|
9
|
+
},
|
|
10
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { FormEffect } from "../../types.js";
|
|
2
|
+
export interface ListMatchOptions {
|
|
3
|
+
/** The marked text's background. Default the accent colour, soft. */
|
|
4
|
+
readonly color?: string;
|
|
5
|
+
}
|
|
6
|
+
/** The typed text is marked inside each option as you filter. A Combobox's only. */
|
|
7
|
+
export declare function listMatch(options?: ListMatchOptions): FormEffect;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { at, defineForm, pickerOf, v, varName } from "../kit.js";
|
|
2
|
+
const ID = "listMatch";
|
|
3
|
+
// The Combobox marks where the typed text appears in each option's words with the Custom Highlight API (one highlight,
|
|
4
|
+
// `sx-list-match`, shared by the page): no extra elements, so a screen reader still reads each option as one piece of
|
|
5
|
+
// text. This paints the marks. It shows a state, not a motion: it holds under reduced motion. A browser without the
|
|
6
|
+
// API marks nothing.
|
|
7
|
+
const STATE = ` ${at(`${pickerOf(ID)} [data-sx-option-text]`)}::highlight(sx-list-match) {
|
|
8
|
+
background-color: ${v(ID, "color")};
|
|
9
|
+
text-decoration: underline;
|
|
10
|
+
text-decoration-thickness: 2px;
|
|
11
|
+
text-underline-offset: 0.2em;
|
|
12
|
+
}`;
|
|
13
|
+
/** The typed text is marked inside each option as you filter. A Combobox's only. */
|
|
14
|
+
export function listMatch(options = {}) {
|
|
15
|
+
return defineForm(ID, "", {
|
|
16
|
+
fits: ["picker"],
|
|
17
|
+
state: STATE,
|
|
18
|
+
needs: { match: true },
|
|
19
|
+
vars: { [varName(ID, "color")]: options.color ?? "color-mix(in oklab, var(--color-sx-accent, var(--color-sx-primary)) 30%, transparent)" },
|
|
20
|
+
});
|
|
21
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const LIST_MATCH_SCHEMA: import("../../../schema/types.js").Schema;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { defineSchema } from "../../../schema/define.js";
|
|
2
|
+
export const LIST_MATCH_SCHEMA = defineSchema()({
|
|
3
|
+
id: "listMatch",
|
|
4
|
+
family: "form",
|
|
5
|
+
factory: "listMatch",
|
|
6
|
+
fields: {
|
|
7
|
+
color: { kind: "color", label: "Mark colour", default: "color-mix(in oklab, var(--color-sx-accent, var(--color-sx-primary)) 30%, transparent)" },
|
|
8
|
+
},
|
|
9
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { FormEffect } from "../../types.js";
|
|
2
|
+
export interface PickerArrowOptions {
|
|
3
|
+
/** How far the arrow turns while the list is open, in degrees. Default `180` (it points up). */
|
|
4
|
+
readonly turn?: number;
|
|
5
|
+
/** Seconds the turn takes. Default `0.25`. */
|
|
6
|
+
readonly duration?: number;
|
|
7
|
+
}
|
|
8
|
+
/** The arrow turns over while the list is open, and back when it closes. */
|
|
9
|
+
export declare function pickerArrow(options?: PickerArrowOptions): FormEffect;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ARROW, OPEN, SPRING, at, defineForm, pickerOf, v, varName } from "../kit.js";
|
|
2
|
+
const ID = "pickerArrow";
|
|
3
|
+
// The turn shows the state (open or closed), so it holds under reduced motion; only the motion goes away there.
|
|
4
|
+
const STATE = ` ${at(`${pickerOf(ID)}${OPEN} ${ARROW} > svg`)} {
|
|
5
|
+
rotate: ${v(ID, "turn")};
|
|
6
|
+
}`;
|
|
7
|
+
const CSS = ` ${at(`${pickerOf(ID)} ${ARROW} > svg`)} {
|
|
8
|
+
transition: rotate ${v(ID, "time")} ${SPRING};
|
|
9
|
+
}`;
|
|
10
|
+
/** The arrow turns over while the list is open, and back when it closes. */
|
|
11
|
+
export function pickerArrow(options = {}) {
|
|
12
|
+
return defineForm(ID, CSS, {
|
|
13
|
+
fits: ["picker"],
|
|
14
|
+
state: STATE,
|
|
15
|
+
vars: { [varName(ID, "turn")]: `${options.turn ?? 180}deg`, [varName(ID, "time")]: `${options.duration ?? 0.25}s` },
|
|
16
|
+
});
|
|
17
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const PICKER_ARROW_SCHEMA: import("../../../schema/types.js").Schema;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { defineSchema } from "../../../schema/define.js";
|
|
2
|
+
export const PICKER_ARROW_SCHEMA = defineSchema()({
|
|
3
|
+
id: "pickerArrow",
|
|
4
|
+
family: "form",
|
|
5
|
+
factory: "pickerArrow",
|
|
6
|
+
fields: {
|
|
7
|
+
turn: { kind: "number", label: "Turn", min: 90, max: 180, step: 15, unit: "°", default: 180 },
|
|
8
|
+
duration: { kind: "number", label: "Duration", min: 0.1, max: 0.6, step: 0.05, unit: "s", default: 0.25 },
|
|
9
|
+
},
|
|
10
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { FormEffect } from "../../types.js";
|
|
2
|
+
export interface PickerCheckOptions {
|
|
3
|
+
/** Seconds the tick takes to draw. Default `0.2`. */
|
|
4
|
+
readonly duration?: number;
|
|
5
|
+
}
|
|
6
|
+
/** The chosen option's tick draws itself in, at the end of the option. */
|
|
7
|
+
export declare function pickerCheck(options?: PickerCheckOptions): FormEffect;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { EASE, OPTION, SELECT, SPRING, at, defineForm, pickerOf, v, varName } from "../kit.js";
|
|
2
|
+
const ID = "pickerCheck";
|
|
3
|
+
const CHECK = "[data-sx-option-check]";
|
|
4
|
+
// A Combobox's tick is a path with a dash (the base sheet hides it, a chosen option shows it): here it draws itself
|
|
5
|
+
// and grows into place. A `<select>`'s own tick (`::checkmark`, where the picker can be styled) moves to the end, as
|
|
6
|
+
// in the Combobox, takes the primary colour and grows in. Its place and colour are the state.
|
|
7
|
+
const STATE = ` ${at(`${pickerOf(ID)} ${SELECT} option`)}::checkmark {
|
|
8
|
+
order: 1;
|
|
9
|
+
margin-inline-start: auto;
|
|
10
|
+
color: var(--color-sx-primary, currentColor);
|
|
11
|
+
}`;
|
|
12
|
+
const CSS = ` ${at(`${pickerOf(ID)} ${CHECK} path`)} {
|
|
13
|
+
transition: stroke-dashoffset ${v(ID, "time")} ${EASE};
|
|
14
|
+
}
|
|
15
|
+
${at(`${pickerOf(ID)} ${CHECK}`)} {
|
|
16
|
+
transition: scale ${v(ID, "time")} ${SPRING};
|
|
17
|
+
}
|
|
18
|
+
${at(`${pickerOf(ID)} ${OPTION}:not([aria-selected="true"]) ${CHECK}`)} {
|
|
19
|
+
scale: 0.5;
|
|
20
|
+
}
|
|
21
|
+
${at(`${pickerOf(ID)} ${SELECT} option`)}::checkmark {
|
|
22
|
+
transition: scale ${v(ID, "time")} ${SPRING}, opacity ${v(ID, "time")} ${EASE};
|
|
23
|
+
}
|
|
24
|
+
${at(`${pickerOf(ID)} ${SELECT} option:not(:checked)`)}::checkmark {
|
|
25
|
+
scale: 0.5;
|
|
26
|
+
opacity: 0;
|
|
27
|
+
}`;
|
|
28
|
+
/** The chosen option's tick draws itself in, at the end of the option. */
|
|
29
|
+
export function pickerCheck(options = {}) {
|
|
30
|
+
return defineForm(ID, CSS, { fits: ["picker"], state: STATE, vars: { [varName(ID, "time")]: `${options.duration ?? 0.2}s` } });
|
|
31
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const PICKER_CHECK_SCHEMA: import("../../../schema/types.js").Schema;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { defineSchema } from "../../../schema/define.js";
|
|
2
|
+
export const PICKER_CHECK_SCHEMA = defineSchema()({
|
|
3
|
+
id: "pickerCheck",
|
|
4
|
+
family: "form",
|
|
5
|
+
factory: "pickerCheck",
|
|
6
|
+
fields: {
|
|
7
|
+
duration: { kind: "number", label: "Duration", min: 0.1, max: 0.4, step: 0.05, unit: "s", default: 0.2 },
|
|
8
|
+
},
|
|
9
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { FormEffect } from "../../types.js";
|
|
2
|
+
export interface PickerOpenOptions {
|
|
3
|
+
/**
|
|
4
|
+
* How the list arrives: `"scale"` grows from a little smaller, `"fade"` fades in as it drops a few pixels,
|
|
5
|
+
* `"unroll"` opens downward like a blind. Default `"scale"`.
|
|
6
|
+
*/
|
|
7
|
+
readonly kind?: "scale" | "fade" | "unroll";
|
|
8
|
+
/** Seconds it takes. Default `0.18` (rule 8: 200 ms or less). */
|
|
9
|
+
readonly duration?: number;
|
|
10
|
+
}
|
|
11
|
+
/** The list grows, fades or unrolls into view as it opens, and back as it closes. */
|
|
12
|
+
export declare function pickerOpen(options?: PickerOpenOptions): FormEffect;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { at, defineForm, pickerOf, v, varName } from "../kit.js";
|
|
2
|
+
const ID = "pickerOpen";
|
|
3
|
+
/** Per kind: the starting scale, the starting shift, the clip it opens from and the clip it opens to. */
|
|
4
|
+
const KINDS = {
|
|
5
|
+
scale: { scale: 0.95, shift: "0px", from: "none", to: "none" },
|
|
6
|
+
fade: { scale: 1, shift: "-0.375rem", from: "none", to: "none" },
|
|
7
|
+
// the clip leaves room around the list, so its shadow is not cut off once it is open
|
|
8
|
+
unroll: { scale: 1, shift: "0px", from: "inset(-3rem -3rem 100% -3rem)", to: "inset(-3rem)" },
|
|
9
|
+
};
|
|
10
|
+
// The base sheet holds the transition (opacity, scale, translate, clip-path, and display / overlay so the list stays
|
|
11
|
+
// in the top layer until it has faded out); this sets where it starts. The same variables reach the Combobox's popup
|
|
12
|
+
// and a `<select>`'s own picker, where the browser lets it be styled. Closing plays it backwards.
|
|
13
|
+
const CSS = ` ${at(pickerOf(ID))} {
|
|
14
|
+
--sx-picker-time: ${v(ID, "time")};
|
|
15
|
+
--sx-picker-from-opacity: 0;
|
|
16
|
+
--sx-picker-from-scale: ${v(ID, "scale")};
|
|
17
|
+
--sx-picker-from-shift: 0 ${v(ID, "shift")};
|
|
18
|
+
--sx-picker-from-clip: ${v(ID, "from")};
|
|
19
|
+
--sx-picker-clip: ${v(ID, "to")};
|
|
20
|
+
}`;
|
|
21
|
+
/** The list grows, fades or unrolls into view as it opens, and back as it closes. */
|
|
22
|
+
export function pickerOpen(options = {}) {
|
|
23
|
+
const kind = KINDS[options.kind ?? "scale"];
|
|
24
|
+
return defineForm(ID, CSS, {
|
|
25
|
+
fits: ["picker"],
|
|
26
|
+
vars: {
|
|
27
|
+
[varName(ID, "time")]: `${options.duration ?? 0.18}s`,
|
|
28
|
+
[varName(ID, "scale")]: kind.scale,
|
|
29
|
+
[varName(ID, "shift")]: kind.shift,
|
|
30
|
+
[varName(ID, "from")]: kind.from,
|
|
31
|
+
[varName(ID, "to")]: kind.to,
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const PICKER_OPEN_SCHEMA: import("../../../schema/types.js").Schema;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { defineSchema } from "../../../schema/define.js";
|
|
2
|
+
export const PICKER_OPEN_SCHEMA = defineSchema()({
|
|
3
|
+
id: "pickerOpen",
|
|
4
|
+
family: "form",
|
|
5
|
+
factory: "pickerOpen",
|
|
6
|
+
fields: {
|
|
7
|
+
kind: {
|
|
8
|
+
kind: "choice",
|
|
9
|
+
label: "Kind",
|
|
10
|
+
values: ["scale", "fade", "unroll"],
|
|
11
|
+
labels: { scale: "Scale up", fade: "Fade and drop", unroll: "Unroll" },
|
|
12
|
+
default: "scale",
|
|
13
|
+
},
|
|
14
|
+
duration: { kind: "number", label: "Duration", min: 0.1, max: 0.2, step: 0.01, unit: "s", default: 0.18 },
|
|
15
|
+
},
|
|
16
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { FormEffect } from "../../types.js";
|
|
2
|
+
export interface PickerSheetOptions {
|
|
3
|
+
/** The sheet's tallest, as a share of the screen's height. Default `0.6`. */
|
|
4
|
+
readonly height?: number;
|
|
5
|
+
/** Seconds it takes to slide up. Default `0.25`. */
|
|
6
|
+
readonly duration?: number;
|
|
7
|
+
}
|
|
8
|
+
/** On a phone the list docks at the bottom of the screen and slides up, within reach of a thumb. */
|
|
9
|
+
export declare function pickerSheet(options?: PickerSheetOptions): FormEffect;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { POPUP, SELECT, at, defineForm, pickerOf, v, varName } from "../kit.js";
|
|
2
|
+
const ID = "pickerSheet";
|
|
3
|
+
/** A phone: a narrow screen with a finger, not a narrow desktop window. */
|
|
4
|
+
const PHONE = "@media (max-width: 40rem) and (pointer: coarse)";
|
|
5
|
+
/** The Combobox's popup, and a `<select>`'s own picker where it can be styled: one rule each (see the base sheet). */
|
|
6
|
+
const LISTS = [`${at(`${pickerOf(ID)} ${POPUP}`)}`, `${at(`${pickerOf(ID)} ${SELECT}`)}::picker(select)`];
|
|
7
|
+
// On a phone the list leaves the box and docks at the bottom of the screen, full width, with a dimmed page behind it,
|
|
8
|
+
// where a thumb reaches it. The Combobox (`needs.sheet`) sees it docked (`--sx-picker-docked`), scrolls its box to the
|
|
9
|
+
// top of the screen so the sheet never covers it, and keeps the sheet between the box and the on-screen keyboard.
|
|
10
|
+
// The place is the state; the slide up is the motion, set on the popup itself so it wins over `pickerOpen` on a phone.
|
|
11
|
+
const STATE = ` ${PHONE} {
|
|
12
|
+
${LISTS.map((list) => ` ${list} {
|
|
13
|
+
position-area: none;
|
|
14
|
+
position-try-fallbacks: none;
|
|
15
|
+
inset-inline: 0;
|
|
16
|
+
inset-block: auto var(--sx-picker-keyboard, 0px);
|
|
17
|
+
inline-size: auto;
|
|
18
|
+
max-block-size: min(${v(ID, "height")}, var(--sx-picker-room, 100dvh));
|
|
19
|
+
margin: 0;
|
|
20
|
+
padding: 0.5rem;
|
|
21
|
+
padding-block-end: calc(0.5rem + env(safe-area-inset-bottom, 0px));
|
|
22
|
+
--sx-picker-radius: 1rem 1rem 0 0;
|
|
23
|
+
--sx-picker-docked: 1;
|
|
24
|
+
}`).join("\n")}
|
|
25
|
+
${at(`${pickerOf(ID)} ${POPUP}`)}::backdrop {
|
|
26
|
+
background: color-mix(in oklab, var(--color-sx-ink, currentColor) 35%, transparent);
|
|
27
|
+
}
|
|
28
|
+
}`;
|
|
29
|
+
const CSS = ` ${PHONE} {
|
|
30
|
+
${at(`${pickerOf(ID)} ${POPUP}`)}, ${at(`${pickerOf(ID)} ${SELECT}`)} {
|
|
31
|
+
--sx-picker-time: ${v(ID, "time")};
|
|
32
|
+
--sx-picker-from-opacity: 1;
|
|
33
|
+
--sx-picker-from-scale: 1;
|
|
34
|
+
--sx-picker-from-shift: 0 100%;
|
|
35
|
+
--sx-picker-from-clip: none;
|
|
36
|
+
--sx-picker-clip: none;
|
|
37
|
+
}
|
|
38
|
+
}`;
|
|
39
|
+
/** On a phone the list docks at the bottom of the screen and slides up, within reach of a thumb. */
|
|
40
|
+
export function pickerSheet(options = {}) {
|
|
41
|
+
return defineForm(ID, CSS, {
|
|
42
|
+
fits: ["picker"],
|
|
43
|
+
state: STATE,
|
|
44
|
+
needs: { sheet: true },
|
|
45
|
+
vars: { [varName(ID, "height")]: `${Math.round((options.height ?? 0.6) * 100)}dvh`, [varName(ID, "time")]: `${options.duration ?? 0.25}s` },
|
|
46
|
+
});
|
|
47
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const PICKER_SHEET_SCHEMA: import("../../../schema/types.js").Schema;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { defineSchema } from "../../../schema/define.js";
|
|
2
|
+
export const PICKER_SHEET_SCHEMA = defineSchema()({
|
|
3
|
+
id: "pickerSheet",
|
|
4
|
+
family: "form",
|
|
5
|
+
factory: "pickerSheet",
|
|
6
|
+
fields: {
|
|
7
|
+
height: { kind: "number", label: "Tallest", min: 0.3, max: 0.9, step: 0.05, default: 0.6, help: "A share of the screen's height." },
|
|
8
|
+
duration: { kind: "number", label: "Duration", min: 0.15, max: 0.5, step: 0.05, unit: "s", default: 0.25 },
|
|
9
|
+
},
|
|
10
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { FormEffect } from "../../types.js";
|
|
2
|
+
export interface PickerStaggerOptions {
|
|
3
|
+
/** Seconds between one option and the next. Default `0.03`. */
|
|
4
|
+
readonly step?: number;
|
|
5
|
+
/** Seconds each option takes to arrive. Default `0.18`. */
|
|
6
|
+
readonly duration?: number;
|
|
7
|
+
}
|
|
8
|
+
/** The options drop into the list one after another as it opens. */
|
|
9
|
+
export declare function pickerStagger(options?: PickerStaggerOptions): FormEffect;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { EASE, OPTION, POPUP, SELECT, at, defineForm, pickerOf, v, varName } from "../kit.js";
|
|
2
|
+
const ID = "pickerStagger";
|
|
3
|
+
/** Past the eighth option, the rest arrive together: a long list never keeps anyone waiting. */
|
|
4
|
+
const MOST = 8;
|
|
5
|
+
const arrive = (delay) => `transition: opacity ${v(ID, "time")} ${EASE} ${delay}, translate ${v(ID, "time")} ${EASE} ${delay};`;
|
|
6
|
+
const START = `opacity: 0;
|
|
7
|
+
translate: 0 -0.375rem;`;
|
|
8
|
+
// The options drop in one after another as the list opens (and as filtering brings new ones in). A Combobox numbers
|
|
9
|
+
// its options (`--sx-option-i`); a `<select>`'s count themselves with `sibling-index()` where the browser has it, and
|
|
10
|
+
// arrive together elsewhere (the declaration is dropped, so nothing waits).
|
|
11
|
+
const CSS = ` ${at(`${pickerOf(ID)} ${POPUP} ${OPTION}`)} {
|
|
12
|
+
${arrive(`calc(min(var(--sx-option-i, 0), ${MOST}) * ${v(ID, "step")})`)}
|
|
13
|
+
}
|
|
14
|
+
${at(`${pickerOf(ID)} ${SELECT} option`)} {
|
|
15
|
+
${arrive(`calc(min(sibling-index() - 1, ${MOST}) * ${v(ID, "step")})`)}
|
|
16
|
+
}
|
|
17
|
+
@starting-style {
|
|
18
|
+
${at(`${pickerOf(ID)} ${POPUP}:popover-open ${OPTION}`)} {
|
|
19
|
+
${START}
|
|
20
|
+
}
|
|
21
|
+
${at(`${pickerOf(ID)} ${SELECT}:open option`)} {
|
|
22
|
+
${START}
|
|
23
|
+
}
|
|
24
|
+
}`;
|
|
25
|
+
/** The options drop into the list one after another as it opens. */
|
|
26
|
+
export function pickerStagger(options = {}) {
|
|
27
|
+
return defineForm(ID, CSS, {
|
|
28
|
+
fits: ["picker"],
|
|
29
|
+
vars: { [varName(ID, "step")]: `${options.step ?? 0.03}s`, [varName(ID, "time")]: `${options.duration ?? 0.18}s` },
|
|
30
|
+
});
|
|
31
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const PICKER_STAGGER_SCHEMA: import("../../../schema/types.js").Schema;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { defineSchema } from "../../../schema/define.js";
|
|
2
|
+
export const PICKER_STAGGER_SCHEMA = defineSchema()({
|
|
3
|
+
id: "pickerStagger",
|
|
4
|
+
family: "form",
|
|
5
|
+
factory: "pickerStagger",
|
|
6
|
+
fields: {
|
|
7
|
+
step: { kind: "number", label: "Step", min: 0.01, max: 0.08, step: 0.01, unit: "s", default: 0.03 },
|
|
8
|
+
duration: { kind: "number", label: "Duration", min: 0.1, max: 0.4, step: 0.02, unit: "s", default: 0.18 },
|
|
9
|
+
},
|
|
10
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { FormEffect } from "../../types.js";
|
|
2
|
+
export interface RadioCardOptions {
|
|
3
|
+
/** Seconds each change takes. Default `0.2`. */
|
|
4
|
+
readonly duration?: number;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Each option becomes a card holding the circle, the words and the help (a plan, a delivery speed): the chosen one lit
|
|
8
|
+
* and outlined, all of them lifted a little under the mouse. Side by side with `orientation="horizontal"`.
|
|
9
|
+
*/
|
|
10
|
+
export declare function radioCard(options?: RadioCardOptions): FormEffect;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { CARD_LAYER, cardMotion, cardState } from "../cards.js";
|
|
2
|
+
import { defineForm, radiosOf, varName } from "../kit.js";
|
|
3
|
+
const ID = "radioCard";
|
|
4
|
+
/**
|
|
5
|
+
* Each option becomes a card holding the circle, the words and the help (a plan, a delivery speed): the chosen one lit
|
|
6
|
+
* and outlined, all of them lifted a little under the mouse. Side by side with `orientation="horizontal"`.
|
|
7
|
+
*/
|
|
8
|
+
export function radioCard(options = {}) {
|
|
9
|
+
return defineForm(ID, cardMotion(radiosOf(ID), ID), {
|
|
10
|
+
fits: ["radio"],
|
|
11
|
+
state: cardState(radiosOf(ID), ID),
|
|
12
|
+
vars: { [varName(ID, "time")]: `${options.duration ?? 0.2}s` },
|
|
13
|
+
layers: [CARD_LAYER],
|
|
14
|
+
});
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const RADIO_CARD_SCHEMA: import("../../../schema/types.js").Schema;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { defineSchema } from "../../../schema/define.js";
|
|
2
|
+
export const RADIO_CARD_SCHEMA = defineSchema()({
|
|
3
|
+
id: "radioCard",
|
|
4
|
+
family: "form",
|
|
5
|
+
factory: "radioCard",
|
|
6
|
+
fields: {
|
|
7
|
+
duration: { kind: "number", label: "Duration", min: 0.05, max: 0.6, step: 0.05, unit: "s", default: 0.2 },
|
|
8
|
+
},
|
|
9
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { FormEffect } from "../../types.js";
|
|
2
|
+
export interface RadioCircleOptions {
|
|
3
|
+
/** The pen's colour. Default `var(--color-sx-primary)`. */
|
|
4
|
+
readonly color?: string;
|
|
5
|
+
/** Seconds to draw it. Default `0.5`. */
|
|
6
|
+
readonly duration?: number;
|
|
7
|
+
}
|
|
8
|
+
/** A pen circles the chosen option's words, like an answer marked on paper. */
|
|
9
|
+
export declare function radioCircle(options?: RadioCircleOptions): FormEffect;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { CHECKED, TEXT, at, choiceLayer, defineForm, inItem, radiosOf, v, varName } from "../kit.js";
|
|
2
|
+
const ID = "radioCircle";
|
|
3
|
+
const ROOT = radiosOf(ID);
|
|
4
|
+
const LOOP = choiceLayer(ID);
|
|
5
|
+
const PEN = `${LOOP} [data-sx-choice-svg="loop"]`;
|
|
6
|
+
// A loose loop, drawn once round the chosen option's words and a little past where it started, like a pen circling an
|
|
7
|
+
// answer on paper. It stretches to the words (the words stop at their own width). No `vector-effect: non-scaling-stroke`:
|
|
8
|
+
// with it, Chromium measures the dash in screen pixels instead of the path's length of 1, and every option showed a dotted
|
|
9
|
+
// loop (found in Phase 3). The view box has a label's usual shape instead, so the stroke stays nearly even. The loop is
|
|
10
|
+
// the state: it holds under reduced motion.
|
|
11
|
+
const STATE = ` ${at(`${ROOT} ${TEXT}`)} {
|
|
12
|
+
justify-self: start;
|
|
13
|
+
}
|
|
14
|
+
${at(LOOP)} {
|
|
15
|
+
inset: -0.35em -0.7em;
|
|
16
|
+
}
|
|
17
|
+
${at(PEN)} {
|
|
18
|
+
fill: none;
|
|
19
|
+
stroke: ${v(ID, "color")};
|
|
20
|
+
stroke-width: 2;
|
|
21
|
+
stroke-linecap: round;
|
|
22
|
+
stroke-dasharray: 1 2;
|
|
23
|
+
stroke-dashoffset: 1.01;
|
|
24
|
+
}
|
|
25
|
+
${at(inItem(ROOT, CHECKED, PEN))} {
|
|
26
|
+
stroke-dashoffset: 0;
|
|
27
|
+
}`;
|
|
28
|
+
const CSS = ` ${at(PEN)} {
|
|
29
|
+
transition: stroke-dashoffset ${v(ID, "time")} ease-in-out;
|
|
30
|
+
}`;
|
|
31
|
+
/** A pen circles the chosen option's words, like an answer marked on paper. */
|
|
32
|
+
export function radioCircle(options = {}) {
|
|
33
|
+
return defineForm(ID, CSS, {
|
|
34
|
+
fits: ["radio"],
|
|
35
|
+
state: STATE,
|
|
36
|
+
vars: { [varName(ID, "color")]: options.color ?? "var(--color-sx-primary)", [varName(ID, "time")]: `${options.duration ?? 0.5}s` },
|
|
37
|
+
layers: [
|
|
38
|
+
{
|
|
39
|
+
slot: "text",
|
|
40
|
+
keep: true,
|
|
41
|
+
svg: {
|
|
42
|
+
viewBox: "0 0 120 32",
|
|
43
|
+
preserveAspectRatio: "none",
|
|
44
|
+
children: [{ tag: "path", part: "loop", attrs: { pathLength: 1, d: "M65 3.6C34 2.4 4.5 7.6 5 16.8S30 29.6 60 29.2 115 24.8 114.6 16 91 2.8 54 5.2" } }],
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
});
|
|
49
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const RADIO_CIRCLE_SCHEMA: import("../../../schema/types.js").Schema;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { defineSchema } from "../../../schema/define.js";
|
|
2
|
+
export const RADIO_CIRCLE_SCHEMA = defineSchema()({
|
|
3
|
+
id: "radioCircle",
|
|
4
|
+
family: "form",
|
|
5
|
+
factory: "radioCircle",
|
|
6
|
+
fields: {
|
|
7
|
+
color: { kind: "color", label: "Pen colour", default: "var(--color-sx-primary)" },
|
|
8
|
+
duration: { kind: "number", label: "Duration", min: 0.2, max: 1, step: 0.05, unit: "s", default: 0.5 },
|
|
9
|
+
},
|
|
10
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { FormEffect } from "../../types.js";
|
|
2
|
+
export interface RadioDotOptions {
|
|
3
|
+
/** Seconds it takes. Default `0.3`. */
|
|
4
|
+
readonly duration?: number;
|
|
5
|
+
}
|
|
6
|
+
/** The dot springs in on the chosen radio and shrinks away on the one left. */
|
|
7
|
+
export declare function radioDot(options?: RadioDotOptions): FormEffect;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { SPRING, at, defineForm, radiosOf, v, varName } from "../kit.js";
|
|
2
|
+
const ID = "radioDot";
|
|
3
|
+
// The chosen radio's dot grows in with a little overshoot, and the one left behind shrinks away.
|
|
4
|
+
const CSS = ` ${at(`${radiosOf(ID)} [data-sx-mark="dot"]`)} {
|
|
5
|
+
transition: scale ${v(ID, "time")} ${SPRING};
|
|
6
|
+
}`;
|
|
7
|
+
/** The dot springs in on the chosen radio and shrinks away on the one left. */
|
|
8
|
+
export function radioDot(options = {}) {
|
|
9
|
+
return defineForm(ID, CSS, { fits: ["radio"], vars: { [varName(ID, "time")]: `${options.duration ?? 0.3}s` } });
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const RADIO_DOT_SCHEMA: import("../../../schema/types.js").Schema;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { defineSchema } from "../../../schema/define.js";
|
|
2
|
+
export const RADIO_DOT_SCHEMA = defineSchema()({
|
|
3
|
+
id: "radioDot",
|
|
4
|
+
family: "form",
|
|
5
|
+
factory: "radioDot",
|
|
6
|
+
fields: {
|
|
7
|
+
duration: { kind: "number", label: "Duration", min: 0.1, max: 0.8, step: 0.05, unit: "s", default: 0.3 },
|
|
8
|
+
},
|
|
9
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { FormEffect } from "../../types.js";
|
|
2
|
+
export interface RadioEmojiOptions {
|
|
3
|
+
/** The chosen face's colour. Default `var(--color-sx-accent)`. */
|
|
4
|
+
readonly color?: string;
|
|
5
|
+
/** Seconds each change takes. Default `0.25`. */
|
|
6
|
+
readonly duration?: number;
|
|
7
|
+
}
|
|
8
|
+
/** A rating in five faces, frown to smile: the chosen face lights up and wobbles. */
|
|
9
|
+
export declare function radioEmoji(options?: RadioEmojiOptions): FormEffect;
|