@viraui/react 0.0.1
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/dist/avatar/avatar.guide.json +20 -0
- package/dist/button/button.guide.json +20 -0
- package/dist/catalog.json +110 -0
- package/dist/clamp-text/clamp-text.guide.json +23 -0
- package/dist/components/avatar/avatar.css +55 -0
- package/dist/components/avatar/avatar.d.ts +50 -0
- package/dist/components/avatar/avatar.js +17 -0
- package/dist/components/avatar/index.d.ts +2 -0
- package/dist/components/avatar/index.js +1 -0
- package/dist/components/basic-input/basic-input.css +45 -0
- package/dist/components/basic-input/basic-input.d.ts +14 -0
- package/dist/components/basic-input/basic-input.js +17 -0
- package/dist/components/basic-input/field-helper-copy.d.ts +13 -0
- package/dist/components/basic-input/field-helper-copy.js +25 -0
- package/dist/components/basic-input/index.d.ts +2 -0
- package/dist/components/basic-input/index.js +1 -0
- package/dist/components/basic-input/input-control-group.d.ts +26 -0
- package/dist/components/basic-input/input-control-group.js +8 -0
- package/dist/components/button/button.css +156 -0
- package/dist/components/button/button.d.ts +46 -0
- package/dist/components/button/button.js +17 -0
- package/dist/components/button/index.d.ts +2 -0
- package/dist/components/button/index.js +1 -0
- package/dist/components/clamp-text/clamp-text.css +12 -0
- package/dist/components/clamp-text/clamp-text.d.ts +39 -0
- package/dist/components/clamp-text/clamp-text.js +24 -0
- package/dist/components/clamp-text/index.d.ts +2 -0
- package/dist/components/clamp-text/index.js +1 -0
- package/dist/components/elevator/elevator.d.ts +52 -0
- package/dist/components/elevator/elevator.js +29 -0
- package/dist/components/elevator/index.d.ts +2 -0
- package/dist/components/elevator/index.js +1 -0
- package/dist/components/icon/icon.css +7 -0
- package/dist/components/icon/icon.d.ts +9 -0
- package/dist/components/icon/icon.js +11 -0
- package/dist/components/icon/index.d.ts +2 -0
- package/dist/components/icon/index.js +1 -0
- package/dist/components/icon-button/icon-button.d.ts +31 -0
- package/dist/components/icon-button/icon-button.js +3 -0
- package/dist/components/icon-button/index.d.ts +2 -0
- package/dist/components/icon-button/index.js +1 -0
- package/dist/components/index.d.ts +17 -0
- package/dist/components/index.js +17 -0
- package/dist/components/select/index.d.ts +2 -0
- package/dist/components/select/index.js +1 -0
- package/dist/components/select/select-group.d.ts +12 -0
- package/dist/components/select/select-group.js +10 -0
- package/dist/components/select/select-indicator-slot.d.ts +12 -0
- package/dist/components/select/select-indicator-slot.js +11 -0
- package/dist/components/select/select-option.d.ts +16 -0
- package/dist/components/select/select-option.js +11 -0
- package/dist/components/select/select-separator.d.ts +9 -0
- package/dist/components/select/select-separator.js +7 -0
- package/dist/components/select/select.css +194 -0
- package/dist/components/select/select.d.ts +66 -0
- package/dist/components/select/select.js +35 -0
- package/dist/components/skeleton/index.d.ts +2 -0
- package/dist/components/skeleton/index.js +1 -0
- package/dist/components/skeleton/skeleton.css +36 -0
- package/dist/components/skeleton/skeleton.d.ts +51 -0
- package/dist/components/skeleton/skeleton.js +17 -0
- package/dist/components/slider/index.d.ts +2 -0
- package/dist/components/slider/index.js +1 -0
- package/dist/components/slider/slider-control.css +71 -0
- package/dist/components/slider/slider-control.d.ts +8 -0
- package/dist/components/slider/slider-control.js +22 -0
- package/dist/components/slider/slider-utils.d.ts +2 -0
- package/dist/components/slider/slider-utils.js +4 -0
- package/dist/components/slider/slider.css +64 -0
- package/dist/components/slider/slider.d.ts +70 -0
- package/dist/components/slider/slider.js +19 -0
- package/dist/components/spinner/index.d.ts +2 -0
- package/dist/components/spinner/index.js +1 -0
- package/dist/components/spinner/spinner.css +45 -0
- package/dist/components/spinner/spinner.d.ts +17 -0
- package/dist/components/spinner/spinner.js +8 -0
- package/dist/components/stack/index.d.ts +2 -0
- package/dist/components/stack/index.js +1 -0
- package/dist/components/stack/stack.css +57 -0
- package/dist/components/stack/stack.d.ts +104 -0
- package/dist/components/stack/stack.js +38 -0
- package/dist/components/surface/index.d.ts +2 -0
- package/dist/components/surface/index.js +1 -0
- package/dist/components/surface/surface.css +61 -0
- package/dist/components/surface/surface.d.ts +69 -0
- package/dist/components/surface/surface.js +43 -0
- package/dist/components/switch/index.d.ts +2 -0
- package/dist/components/switch/index.js +1 -0
- package/dist/components/switch/switch.css +73 -0
- package/dist/components/switch/switch.d.ts +54 -0
- package/dist/components/switch/switch.js +15 -0
- package/dist/components/text/index.d.ts +2 -0
- package/dist/components/text/index.js +1 -0
- package/dist/components/text/text.css +139 -0
- package/dist/components/text/text.d.ts +127 -0
- package/dist/components/text/text.js +43 -0
- package/dist/components/textarea/index.d.ts +2 -0
- package/dist/components/textarea/index.js +1 -0
- package/dist/components/textarea/textarea.css +45 -0
- package/dist/components/textarea/textarea.d.ts +56 -0
- package/dist/components/textarea/textarea.js +13 -0
- package/dist/components/textfield/index.d.ts +2 -0
- package/dist/components/textfield/index.js +1 -0
- package/dist/components/textfield/textfield.css +87 -0
- package/dist/components/textfield/textfield.d.ts +49 -0
- package/dist/components/textfield/textfield.js +14 -0
- package/dist/components/title/index.d.ts +2 -0
- package/dist/components/title/index.js +1 -0
- package/dist/components/title/title.css +126 -0
- package/dist/components/title/title.d.ts +117 -0
- package/dist/components/title/title.js +41 -0
- package/dist/core/elevation/elevation-types.d.ts +17 -0
- package/dist/core/elevation/elevation-types.js +4 -0
- package/dist/core/elevation/get-elevation-props.d.ts +12 -0
- package/dist/core/elevation/get-elevation-props.js +12 -0
- package/dist/core/props/intrinsic-vira-props.d.ts +23 -0
- package/dist/core/props/intrinsic-vira-props.js +10 -0
- package/dist/core/styles/resolve-axis-padding.d.ts +5 -0
- package/dist/core/styles/resolve-axis-padding.js +17 -0
- package/dist/core/theme/resolve-theme-value.d.ts +5 -0
- package/dist/core/theme/resolve-theme-value.js +7 -0
- package/dist/elevator/elevator.guide.json +23 -0
- package/dist/guides/consumption.json +44 -0
- package/dist/guides/theme-surface.json +61 -0
- package/dist/icon/icon.guide.json +23 -0
- package/dist/icon-button/icon-button.guide.json +20 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/internal-icons/icon-registry.d.ts +248 -0
- package/dist/internal-icons/icon-registry.js +713 -0
- package/dist/internal-icons/icons/duo/AddSection.d.ts +7 -0
- package/dist/internal-icons/icons/duo/AddSection.js +13 -0
- package/dist/internal-icons/icons/duo/AiDeveloper.d.ts +7 -0
- package/dist/internal-icons/icons/duo/AiDeveloper.js +13 -0
- package/dist/internal-icons/icons/duo/AiLoading.d.ts +7 -0
- package/dist/internal-icons/icons/duo/AiLoading.js +13 -0
- package/dist/internal-icons/icons/duo/Album3.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Album3.js +13 -0
- package/dist/internal-icons/icons/duo/ArchiveContent2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ArchiveContent2.js +13 -0
- package/dist/internal-icons/icons/duo/ArrowDown.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ArrowDown.js +13 -0
- package/dist/internal-icons/icons/duo/ArrowDownLeft.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ArrowDownLeft.js +13 -0
- package/dist/internal-icons/icons/duo/ArrowDownRight.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ArrowDownRight.js +13 -0
- package/dist/internal-icons/icons/duo/ArrowLeft.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ArrowLeft.js +13 -0
- package/dist/internal-icons/icons/duo/ArrowRight.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ArrowRight.js +13 -0
- package/dist/internal-icons/icons/duo/ArrowRotate.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ArrowRotate.js +13 -0
- package/dist/internal-icons/icons/duo/ArrowRotateAnticlockwiseCheck.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ArrowRotateAnticlockwiseCheck.js +13 -0
- package/dist/internal-icons/icons/duo/ArrowRotateAnticlockwiseSlash.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ArrowRotateAnticlockwiseSlash.js +13 -0
- package/dist/internal-icons/icons/duo/ArrowRotateAnticlockwiseXmark.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ArrowRotateAnticlockwiseXmark.js +13 -0
- package/dist/internal-icons/icons/duo/ArrowRotateClockwiseSlash.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ArrowRotateClockwiseSlash.js +13 -0
- package/dist/internal-icons/icons/duo/ArrowUp.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ArrowUp.js +13 -0
- package/dist/internal-icons/icons/duo/ArrowUpLeft.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ArrowUpLeft.js +13 -0
- package/dist/internal-icons/icons/duo/ArrowUpRight.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ArrowUpRight.js +13 -0
- package/dist/internal-icons/icons/duo/ArrowsFilter.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ArrowsFilter.js +13 -0
- package/dist/internal-icons/icons/duo/ArrowsToLineY2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ArrowsToLineY2.js +13 -0
- package/dist/internal-icons/icons/duo/Birdhouse.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Birdhouse.js +13 -0
- package/dist/internal-icons/icons/duo/BookmarkList.d.ts +7 -0
- package/dist/internal-icons/icons/duo/BookmarkList.js +13 -0
- package/dist/internal-icons/icons/duo/BookmarkedBook.d.ts +7 -0
- package/dist/internal-icons/icons/duo/BookmarkedBook.js +13 -0
- package/dist/internal-icons/icons/duo/BookmarkedBook2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/BookmarkedBook2.js +13 -0
- package/dist/internal-icons/icons/duo/Box3.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Box3.js +13 -0
- package/dist/internal-icons/icons/duo/BoxSparkle.d.ts +7 -0
- package/dist/internal-icons/icons/duo/BoxSparkle.js +13 -0
- package/dist/internal-icons/icons/duo/BoxSparkle2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/BoxSparkle2.js +13 -0
- package/dist/internal-icons/icons/duo/Brochure.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Brochure.js +13 -0
- package/dist/internal-icons/icons/duo/ButtonPlus.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ButtonPlus.js +13 -0
- package/dist/internal-icons/icons/duo/Calculator3.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Calculator3.js +13 -0
- package/dist/internal-icons/icons/duo/CaretDown.d.ts +7 -0
- package/dist/internal-icons/icons/duo/CaretDown.js +13 -0
- package/dist/internal-icons/icons/duo/CaretLeft.d.ts +7 -0
- package/dist/internal-icons/icons/duo/CaretLeft.js +13 -0
- package/dist/internal-icons/icons/duo/CaretRight.d.ts +7 -0
- package/dist/internal-icons/icons/duo/CaretRight.js +13 -0
- package/dist/internal-icons/icons/duo/CaretUp.d.ts +7 -0
- package/dist/internal-icons/icons/duo/CaretUp.js +13 -0
- package/dist/internal-icons/icons/duo/Chart3.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Chart3.js +13 -0
- package/dist/internal-icons/icons/duo/ChartBar.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ChartBar.js +13 -0
- package/dist/internal-icons/icons/duo/ChartCandlestick2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ChartCandlestick2.js +13 -0
- package/dist/internal-icons/icons/duo/ChatImage.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ChatImage.js +13 -0
- package/dist/internal-icons/icons/duo/ChatInfo.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ChatInfo.js +13 -0
- package/dist/internal-icons/icons/duo/ChatTask.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ChatTask.js +13 -0
- package/dist/internal-icons/icons/duo/Check.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Check.js +13 -0
- package/dist/internal-icons/icons/duo/CheckBoxArrow.d.ts +7 -0
- package/dist/internal-icons/icons/duo/CheckBoxArrow.js +13 -0
- package/dist/internal-icons/icons/duo/ChevronDown.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ChevronDown.js +13 -0
- package/dist/internal-icons/icons/duo/ChevronExpandY.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ChevronExpandY.js +13 -0
- package/dist/internal-icons/icons/duo/ChevronLeft.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ChevronLeft.js +13 -0
- package/dist/internal-icons/icons/duo/ChevronLeftToLine.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ChevronLeftToLine.js +13 -0
- package/dist/internal-icons/icons/duo/ChevronRight.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ChevronRight.js +13 -0
- package/dist/internal-icons/icons/duo/ChevronRightToLine.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ChevronRightToLine.js +13 -0
- package/dist/internal-icons/icons/duo/ChevronUp.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ChevronUp.js +13 -0
- package/dist/internal-icons/icons/duo/Child.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Child.js +13 -0
- package/dist/internal-icons/icons/duo/CircleCoinIn.d.ts +7 -0
- package/dist/internal-icons/icons/duo/CircleCoinIn.js +13 -0
- package/dist/internal-icons/icons/duo/CircleCoinOut.d.ts +7 -0
- package/dist/internal-icons/icons/duo/CircleCoinOut.js +13 -0
- package/dist/internal-icons/icons/duo/CircleCoinPlus.d.ts +7 -0
- package/dist/internal-icons/icons/duo/CircleCoinPlus.js +13 -0
- package/dist/internal-icons/icons/duo/CircleConversion.d.ts +7 -0
- package/dist/internal-icons/icons/duo/CircleConversion.js +13 -0
- package/dist/internal-icons/icons/duo/CircleCross.d.ts +7 -0
- package/dist/internal-icons/icons/duo/CircleCross.js +13 -0
- package/dist/internal-icons/icons/duo/CircleHalfArrowDown.d.ts +7 -0
- package/dist/internal-icons/icons/duo/CircleHalfArrowDown.js +13 -0
- package/dist/internal-icons/icons/duo/CircleHalfArrowLeft.d.ts +7 -0
- package/dist/internal-icons/icons/duo/CircleHalfArrowLeft.js +13 -0
- package/dist/internal-icons/icons/duo/CircleHalfArrowRight.d.ts +7 -0
- package/dist/internal-icons/icons/duo/CircleHalfArrowRight.js +13 -0
- package/dist/internal-icons/icons/duo/CircleHalfArrowUp.d.ts +7 -0
- package/dist/internal-icons/icons/duo/CircleHalfArrowUp.js +13 -0
- package/dist/internal-icons/icons/duo/CircleHalfDottedChart2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/CircleHalfDottedChart2.js +13 -0
- package/dist/internal-icons/icons/duo/ClockTime.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ClockTime.js +13 -0
- package/dist/internal-icons/icons/duo/CloneDashed3.d.ts +7 -0
- package/dist/internal-icons/icons/duo/CloneDashed3.js +13 -0
- package/dist/internal-icons/icons/duo/CloneImageDashed.d.ts +7 -0
- package/dist/internal-icons/icons/duo/CloneImageDashed.js +13 -0
- package/dist/internal-icons/icons/duo/CloneVideoDashed.d.ts +7 -0
- package/dist/internal-icons/icons/duo/CloneVideoDashed.js +13 -0
- package/dist/internal-icons/icons/duo/CloudeCode.d.ts +7 -0
- package/dist/internal-icons/icons/duo/CloudeCode.js +13 -0
- package/dist/internal-icons/icons/duo/CoinStack.d.ts +7 -0
- package/dist/internal-icons/icons/duo/CoinStack.js +13 -0
- package/dist/internal-icons/icons/duo/ConditionalLogic.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ConditionalLogic.js +13 -0
- package/dist/internal-icons/icons/duo/ConnectPlus.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ConnectPlus.js +13 -0
- package/dist/internal-icons/icons/duo/Connection3.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Connection3.js +13 -0
- package/dist/internal-icons/icons/duo/CopyDelete.d.ts +7 -0
- package/dist/internal-icons/icons/duo/CopyDelete.js +13 -0
- package/dist/internal-icons/icons/duo/CopyId.d.ts +7 -0
- package/dist/internal-icons/icons/duo/CopyId.js +13 -0
- package/dist/internal-icons/icons/duo/Deaf.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Deaf.js +13 -0
- package/dist/internal-icons/icons/duo/DependencyLink.d.ts +7 -0
- package/dist/internal-icons/icons/duo/DependencyLink.js +13 -0
- package/dist/internal-icons/icons/duo/DesktopDock.d.ts +7 -0
- package/dist/internal-icons/icons/duo/DesktopDock.js +13 -0
- package/dist/internal-icons/icons/duo/DiamondSparkle.d.ts +7 -0
- package/dist/internal-icons/icons/duo/DiamondSparkle.js +13 -0
- package/dist/internal-icons/icons/duo/DocumentScan.d.ts +7 -0
- package/dist/internal-icons/icons/duo/DocumentScan.js +13 -0
- package/dist/internal-icons/icons/duo/Dog2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Dog2.js +13 -0
- package/dist/internal-icons/icons/duo/DogLeash.d.ts +7 -0
- package/dist/internal-icons/icons/duo/DogLeash.js +13 -0
- package/dist/internal-icons/icons/duo/DogSlash.d.ts +7 -0
- package/dist/internal-icons/icons/duo/DogSlash.js +13 -0
- package/dist/internal-icons/icons/duo/DotFormation.d.ts +7 -0
- package/dist/internal-icons/icons/duo/DotFormation.js +13 -0
- package/dist/internal-icons/icons/duo/DrawFinger.d.ts +7 -0
- package/dist/internal-icons/icons/duo/DrawFinger.js +13 -0
- package/dist/internal-icons/icons/duo/Ear.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Ear.js +13 -0
- package/dist/internal-icons/icons/duo/EarSound.d.ts +7 -0
- package/dist/internal-icons/icons/duo/EarSound.js +13 -0
- package/dist/internal-icons/icons/duo/Embed.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Embed.js +13 -0
- package/dist/internal-icons/icons/duo/EnterDoor.d.ts +7 -0
- package/dist/internal-icons/icons/duo/EnterDoor.js +13 -0
- package/dist/internal-icons/icons/duo/EnterHome.d.ts +7 -0
- package/dist/internal-icons/icons/duo/EnterHome.js +13 -0
- package/dist/internal-icons/icons/duo/ExitDoor.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ExitDoor.js +13 -0
- package/dist/internal-icons/icons/duo/Export2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Export2.js +13 -0
- package/dist/internal-icons/icons/duo/EyeSparkle.d.ts +7 -0
- package/dist/internal-icons/icons/duo/EyeSparkle.js +13 -0
- package/dist/internal-icons/icons/duo/FaceRobot.d.ts +7 -0
- package/dist/internal-icons/icons/duo/FaceRobot.js +13 -0
- package/dist/internal-icons/icons/duo/FaceRobot2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/FaceRobot2.js +13 -0
- package/dist/internal-icons/icons/duo/FaceRobot3.d.ts +7 -0
- package/dist/internal-icons/icons/duo/FaceRobot3.js +13 -0
- package/dist/internal-icons/icons/duo/FerrisWheel.d.ts +7 -0
- package/dist/internal-icons/icons/duo/FerrisWheel.js +13 -0
- package/dist/internal-icons/icons/duo/FileExport.d.ts +7 -0
- package/dist/internal-icons/icons/duo/FileExport.js +13 -0
- package/dist/internal-icons/icons/duo/FlagMenu.d.ts +7 -0
- package/dist/internal-icons/icons/duo/FlagMenu.js +13 -0
- package/dist/internal-icons/icons/duo/FocusCenter.d.ts +7 -0
- package/dist/internal-icons/icons/duo/FocusCenter.js +13 -0
- package/dist/internal-icons/icons/duo/FoodOrder.d.ts +7 -0
- package/dist/internal-icons/icons/duo/FoodOrder.js +13 -0
- package/dist/internal-icons/icons/duo/FuelCan.d.ts +7 -0
- package/dist/internal-icons/icons/duo/FuelCan.js +13 -0
- package/dist/internal-icons/icons/duo/FuelCan2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/FuelCan2.js +13 -0
- package/dist/internal-icons/icons/duo/Gear3Sparkle.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Gear3Sparkle.js +13 -0
- package/dist/internal-icons/icons/duo/GridSparkle.d.ts +7 -0
- package/dist/internal-icons/icons/duo/GridSparkle.js +13 -0
- package/dist/internal-icons/icons/duo/HandHoldingGlobe.d.ts +7 -0
- package/dist/internal-icons/icons/duo/HandHoldingGlobe.js +13 -0
- package/dist/internal-icons/icons/duo/Handshake2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Handshake2.js +13 -0
- package/dist/internal-icons/icons/duo/Haptic.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Haptic.js +13 -0
- package/dist/internal-icons/icons/duo/HelpChat.d.ts +7 -0
- package/dist/internal-icons/icons/duo/HelpChat.js +13 -0
- package/dist/internal-icons/icons/duo/HexagonSparkle.d.ts +7 -0
- package/dist/internal-icons/icons/duo/HexagonSparkle.js +13 -0
- package/dist/internal-icons/icons/duo/Hiking.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Hiking.js +13 -0
- package/dist/internal-icons/icons/duo/History2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/History2.js +13 -0
- package/dist/internal-icons/icons/duo/HorseHead.d.ts +7 -0
- package/dist/internal-icons/icons/duo/HorseHead.js +13 -0
- package/dist/internal-icons/icons/duo/HouseDollarSign.d.ts +7 -0
- package/dist/internal-icons/icons/duo/HouseDollarSign.js +13 -0
- package/dist/internal-icons/icons/duo/HouseMinus2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/HouseMinus2.js +13 -0
- package/dist/internal-icons/icons/duo/Images3.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Images3.js +13 -0
- package/dist/internal-icons/icons/duo/Img4k.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Img4k.js +13 -0
- package/dist/internal-icons/icons/duo/InsertCrypto.d.ts +7 -0
- package/dist/internal-icons/icons/duo/InsertCrypto.js +13 -0
- package/dist/internal-icons/icons/duo/InsertDollar.d.ts +7 -0
- package/dist/internal-icons/icons/duo/InsertDollar.js +13 -0
- package/dist/internal-icons/icons/duo/InstantMoney.d.ts +7 -0
- package/dist/internal-icons/icons/duo/InstantMoney.js +13 -0
- package/dist/internal-icons/icons/duo/InvoiceIn.d.ts +7 -0
- package/dist/internal-icons/icons/duo/InvoiceIn.js +13 -0
- package/dist/internal-icons/icons/duo/InwardFlow.d.ts +7 -0
- package/dist/internal-icons/icons/duo/InwardFlow.js +13 -0
- package/dist/internal-icons/icons/duo/JoinedHands.d.ts +7 -0
- package/dist/internal-icons/icons/duo/JoinedHands.js +13 -0
- package/dist/internal-icons/icons/duo/LawShield.d.ts +7 -0
- package/dist/internal-icons/icons/duo/LawShield.js +13 -0
- package/dist/internal-icons/icons/duo/Lectern.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Lectern.js +13 -0
- package/dist/internal-icons/icons/duo/Lectern2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Lectern2.js +13 -0
- package/dist/internal-icons/icons/duo/LightSpark.d.ts +7 -0
- package/dist/internal-icons/icons/duo/LightSpark.js +13 -0
- package/dist/internal-icons/icons/duo/LightSpark2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/LightSpark2.js +13 -0
- package/dist/internal-icons/icons/duo/ListExport.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ListExport.js +13 -0
- package/dist/internal-icons/icons/duo/ListFavs3.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ListFavs3.js +13 -0
- package/dist/internal-icons/icons/duo/ListFavs4.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ListFavs4.js +13 -0
- package/dist/internal-icons/icons/duo/LoadingStatus.d.ts +7 -0
- package/dist/internal-icons/icons/duo/LoadingStatus.js +13 -0
- package/dist/internal-icons/icons/duo/LoadingStatus2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/LoadingStatus2.js +13 -0
- package/dist/internal-icons/icons/duo/LockedChat.d.ts +7 -0
- package/dist/internal-icons/icons/duo/LockedChat.js +13 -0
- package/dist/internal-icons/icons/duo/MagicHat.d.ts +7 -0
- package/dist/internal-icons/icons/duo/MagicHat.js +13 -0
- package/dist/internal-icons/icons/duo/MagicRabbit.d.ts +7 -0
- package/dist/internal-icons/icons/duo/MagicRabbit.js +13 -0
- package/dist/internal-icons/icons/duo/MagnifierSparkle2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/MagnifierSparkle2.js +13 -0
- package/dist/internal-icons/icons/duo/MediaLibrary2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/MediaLibrary2.js +13 -0
- package/dist/internal-icons/icons/duo/Membership.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Membership.js +13 -0
- package/dist/internal-icons/icons/duo/Menu4.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Menu4.js +13 -0
- package/dist/internal-icons/icons/duo/MilitaryMedal.d.ts +7 -0
- package/dist/internal-icons/icons/duo/MilitaryMedal.js +13 -0
- package/dist/internal-icons/icons/duo/MobileCircuit.d.ts +7 -0
- package/dist/internal-icons/icons/duo/MobileCircuit.js +13 -0
- package/dist/internal-icons/icons/duo/MoneyRefund.d.ts +7 -0
- package/dist/internal-icons/icons/duo/MoneyRefund.js +13 -0
- package/dist/internal-icons/icons/duo/MoneyRefund2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/MoneyRefund2.js +13 -0
- package/dist/internal-icons/icons/duo/MotionAlongPath.d.ts +7 -0
- package/dist/internal-icons/icons/duo/MotionAlongPath.js +13 -0
- package/dist/internal-icons/icons/duo/Msgs2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Msgs2.js +13 -0
- package/dist/internal-icons/icons/duo/Navigation.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Navigation.js +13 -0
- package/dist/internal-icons/icons/duo/NavigationHorizontal.d.ts +7 -0
- package/dist/internal-icons/icons/duo/NavigationHorizontal.js +13 -0
- package/dist/internal-icons/icons/duo/NavigationVertical.d.ts +7 -0
- package/dist/internal-icons/icons/duo/NavigationVertical.js +13 -0
- package/dist/internal-icons/icons/duo/ObjectSelection.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ObjectSelection.js +13 -0
- package/dist/internal-icons/icons/duo/OfficeUser.d.ts +7 -0
- package/dist/internal-icons/icons/duo/OfficeUser.js +13 -0
- package/dist/internal-icons/icons/duo/OpenExternal.d.ts +7 -0
- package/dist/internal-icons/icons/duo/OpenExternal.js +13 -0
- package/dist/internal-icons/icons/duo/OrbitSparkle.d.ts +7 -0
- package/dist/internal-icons/icons/duo/OrbitSparkle.js +13 -0
- package/dist/internal-icons/icons/duo/OutwardFlow.d.ts +7 -0
- package/dist/internal-icons/icons/duo/OutwardFlow.js +13 -0
- package/dist/internal-icons/icons/duo/PaperPlaneFast.d.ts +7 -0
- package/dist/internal-icons/icons/duo/PaperPlaneFast.js +13 -0
- package/dist/internal-icons/icons/duo/Parachute.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Parachute.js +13 -0
- package/dist/internal-icons/icons/duo/Paw.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Paw.js +13 -0
- package/dist/internal-icons/icons/duo/Peace.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Peace.js +13 -0
- package/dist/internal-icons/icons/duo/PicnicTable.d.ts +7 -0
- package/dist/internal-icons/icons/duo/PicnicTable.js +13 -0
- package/dist/internal-icons/icons/duo/Pillow.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Pillow.js +13 -0
- package/dist/internal-icons/icons/duo/Playground.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Playground.js +13 -0
- package/dist/internal-icons/icons/duo/Playlist4.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Playlist4.js +13 -0
- package/dist/internal-icons/icons/duo/Plug3.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Plug3.js +13 -0
- package/dist/internal-icons/icons/duo/Plug3Sparkle.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Plug3Sparkle.js +13 -0
- package/dist/internal-icons/icons/duo/PlugOff.d.ts +7 -0
- package/dist/internal-icons/icons/duo/PlugOff.js +13 -0
- package/dist/internal-icons/icons/duo/PlugSparkle.d.ts +7 -0
- package/dist/internal-icons/icons/duo/PlugSparkle.js +13 -0
- package/dist/internal-icons/icons/duo/PopEffect.d.ts +7 -0
- package/dist/internal-icons/icons/duo/PopEffect.js +13 -0
- package/dist/internal-icons/icons/duo/ProfileAnalytics.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ProfileAnalytics.js +13 -0
- package/dist/internal-icons/icons/duo/ProfileBasic.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ProfileBasic.js +13 -0
- package/dist/internal-icons/icons/duo/ProgressIndicator2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ProgressIndicator2.js +13 -0
- package/dist/internal-icons/icons/duo/QuickActions.d.ts +7 -0
- package/dist/internal-icons/icons/duo/QuickActions.js +13 -0
- package/dist/internal-icons/icons/duo/QuickTimer.d.ts +7 -0
- package/dist/internal-icons/icons/duo/QuickTimer.js +13 -0
- package/dist/internal-icons/icons/duo/Rabbit.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Rabbit.js +13 -0
- package/dist/internal-icons/icons/duo/Receipt3.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Receipt3.js +13 -0
- package/dist/internal-icons/icons/duo/Receipt4.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Receipt4.js +13 -0
- package/dist/internal-icons/icons/duo/Redo2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Redo2.js +13 -0
- package/dist/internal-icons/icons/duo/Redo3.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Redo3.js +13 -0
- package/dist/internal-icons/icons/duo/Refresh3AnticlockwiseSlash.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Refresh3AnticlockwiseSlash.js +13 -0
- package/dist/internal-icons/icons/duo/Refresh3ClockwiseSlash.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Refresh3ClockwiseSlash.js +13 -0
- package/dist/internal-icons/icons/duo/RefreshAnticlockwise.d.ts +7 -0
- package/dist/internal-icons/icons/duo/RefreshAnticlockwise.js +13 -0
- package/dist/internal-icons/icons/duo/RefreshAnticlockwiseSlash.d.ts +7 -0
- package/dist/internal-icons/icons/duo/RefreshAnticlockwiseSlash.js +13 -0
- package/dist/internal-icons/icons/duo/RefreshClockwiseSlash.d.ts +7 -0
- package/dist/internal-icons/icons/duo/RefreshClockwiseSlash.js +13 -0
- package/dist/internal-icons/icons/duo/Refrigerator.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Refrigerator.js +13 -0
- package/dist/internal-icons/icons/duo/RemoteControl.d.ts +7 -0
- package/dist/internal-icons/icons/duo/RemoteControl.js +13 -0
- package/dist/internal-icons/icons/duo/RemoteControl2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/RemoteControl2.js +13 -0
- package/dist/internal-icons/icons/duo/ReportFile.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ReportFile.js +13 -0
- package/dist/internal-icons/icons/duo/Reposition.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Reposition.js +13 -0
- package/dist/internal-icons/icons/duo/Rerouting.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Rerouting.js +13 -0
- package/dist/internal-icons/icons/duo/Robot2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Robot2.js +13 -0
- package/dist/internal-icons/icons/duo/Robot3.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Robot3.js +13 -0
- package/dist/internal-icons/icons/duo/Robot4.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Robot4.js +13 -0
- package/dist/internal-icons/icons/duo/RockOn.d.ts +7 -0
- package/dist/internal-icons/icons/duo/RockOn.js +13 -0
- package/dist/internal-icons/icons/duo/RopeStanchions.d.ts +7 -0
- package/dist/internal-icons/icons/duo/RopeStanchions.js +13 -0
- package/dist/internal-icons/icons/duo/Rotation3602.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Rotation3602.js +13 -0
- package/dist/internal-icons/icons/duo/SavedItems2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/SavedItems2.js +13 -0
- package/dist/internal-icons/icons/duo/ScaleImg4k.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ScaleImg4k.js +13 -0
- package/dist/internal-icons/icons/duo/ScanImage.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ScanImage.js +13 -0
- package/dist/internal-icons/icons/duo/ScissorsSparkle.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ScissorsSparkle.js +13 -0
- package/dist/internal-icons/icons/duo/Seatbelt.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Seatbelt.js +13 -0
- package/dist/internal-icons/icons/duo/ShakaHand.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ShakaHand.js +13 -0
- package/dist/internal-icons/icons/duo/ShapeRectangle.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ShapeRectangle.js +13 -0
- package/dist/internal-icons/icons/duo/Shovel.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Shovel.js +13 -0
- package/dist/internal-icons/icons/duo/ShuffleSparkle.d.ts +7 -0
- package/dist/internal-icons/icons/duo/ShuffleSparkle.js +13 -0
- package/dist/internal-icons/icons/duo/SideProfileQuestion.d.ts +7 -0
- package/dist/internal-icons/icons/duo/SideProfileQuestion.js +13 -0
- package/dist/internal-icons/icons/duo/SideProfileSparkle.d.ts +7 -0
- package/dist/internal-icons/icons/duo/SideProfileSparkle.js +13 -0
- package/dist/internal-icons/icons/duo/SidebarEdit.d.ts +7 -0
- package/dist/internal-icons/icons/duo/SidebarEdit.js +13 -0
- package/dist/internal-icons/icons/duo/SlashCircle.d.ts +7 -0
- package/dist/internal-icons/icons/duo/SlashCircle.js +13 -0
- package/dist/internal-icons/icons/duo/Sliders4.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Sliders4.js +13 -0
- package/dist/internal-icons/icons/duo/Snail.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Snail.js +13 -0
- package/dist/internal-icons/icons/duo/Spiral.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Spiral.js +13 -0
- package/dist/internal-icons/icons/duo/SplitView.d.ts +7 -0
- package/dist/internal-icons/icons/duo/SplitView.js +13 -0
- package/dist/internal-icons/icons/duo/SquareDashedSearchSparkle.d.ts +7 -0
- package/dist/internal-icons/icons/duo/SquareDashedSearchSparkle.js +13 -0
- package/dist/internal-icons/icons/duo/SquareDashedText.d.ts +7 -0
- package/dist/internal-icons/icons/duo/SquareDashedText.js +13 -0
- package/dist/internal-icons/icons/duo/SquarePath.d.ts +7 -0
- package/dist/internal-icons/icons/duo/SquarePath.js +13 -0
- package/dist/internal-icons/icons/duo/Star2Slash.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Star2Slash.js +13 -0
- package/dist/internal-icons/icons/duo/StopSign.d.ts +7 -0
- package/dist/internal-icons/icons/duo/StopSign.js +13 -0
- package/dist/internal-icons/icons/duo/StopwatchBolt.d.ts +7 -0
- package/dist/internal-icons/icons/duo/StopwatchBolt.js +13 -0
- package/dist/internal-icons/icons/duo/SummitFlag.d.ts +7 -0
- package/dist/internal-icons/icons/duo/SummitFlag.js +13 -0
- package/dist/internal-icons/icons/duo/Sunrise2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Sunrise2.js +13 -0
- package/dist/internal-icons/icons/duo/Task.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Task.js +13 -0
- package/dist/internal-icons/icons/duo/Task2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Task2.js +13 -0
- package/dist/internal-icons/icons/duo/TaskDebug.d.ts +7 -0
- package/dist/internal-icons/icons/duo/TaskDebug.js +13 -0
- package/dist/internal-icons/icons/duo/TaskSearch.d.ts +7 -0
- package/dist/internal-icons/icons/duo/TaskSearch.js +13 -0
- package/dist/internal-icons/icons/duo/Teepee.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Teepee.js +13 -0
- package/dist/internal-icons/icons/duo/TextAdjust.d.ts +7 -0
- package/dist/internal-icons/icons/duo/TextAdjust.js +13 -0
- package/dist/internal-icons/icons/duo/TheatreMask.d.ts +7 -0
- package/dist/internal-icons/icons/duo/TheatreMask.js +13 -0
- package/dist/internal-icons/icons/duo/TheatreMask2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/TheatreMask2.js +13 -0
- package/dist/internal-icons/icons/duo/TimerProgress.d.ts +7 -0
- package/dist/internal-icons/icons/duo/TimerProgress.js +13 -0
- package/dist/internal-icons/icons/duo/TimerProgress2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/TimerProgress2.js +13 -0
- package/dist/internal-icons/icons/duo/TransactionSplit.d.ts +7 -0
- package/dist/internal-icons/icons/duo/TransactionSplit.js +13 -0
- package/dist/internal-icons/icons/duo/Undo2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Undo2.js +13 -0
- package/dist/internal-icons/icons/duo/Undo3.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Undo3.js +13 -0
- package/dist/internal-icons/icons/duo/UnicornHead.d.ts +7 -0
- package/dist/internal-icons/icons/duo/UnicornHead.js +13 -0
- package/dist/internal-icons/icons/duo/UserContact.d.ts +7 -0
- package/dist/internal-icons/icons/duo/UserContact.js +13 -0
- package/dist/internal-icons/icons/duo/UserVoice2.d.ts +7 -0
- package/dist/internal-icons/icons/duo/UserVoice2.js +13 -0
- package/dist/internal-icons/icons/duo/VipBadge.d.ts +7 -0
- package/dist/internal-icons/icons/duo/VipBadge.js +13 -0
- package/dist/internal-icons/icons/duo/VoiceCaption.d.ts +7 -0
- package/dist/internal-icons/icons/duo/VoiceCaption.js +13 -0
- package/dist/internal-icons/icons/duo/WalletCoins.d.ts +7 -0
- package/dist/internal-icons/icons/duo/WalletCoins.js +13 -0
- package/dist/internal-icons/icons/duo/Weight.d.ts +7 -0
- package/dist/internal-icons/icons/duo/Weight.js +13 -0
- package/dist/internal-icons/icons/duo/index.d.ts +245 -0
- package/dist/internal-icons/icons/duo/index.js +245 -0
- package/dist/preflight.css +1 -0
- package/dist/select/select.guide.json +17 -0
- package/dist/skeleton/skeleton.guide.json +23 -0
- package/dist/slider/slider.guide.json +23 -0
- package/dist/spinner/spinner.guide.json +23 -0
- package/dist/stack/stack.guide.json +20 -0
- package/dist/surface/surface.guide.json +23 -0
- package/dist/switch/switch.guide.json +23 -0
- package/dist/text/text.guide.json +20 -0
- package/dist/textarea/textarea.guide.json +17 -0
- package/dist/textfield/textfield.guide.json +20 -0
- package/dist/title/title.guide.json +20 -0
- package/package.json +64 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Avatar",
|
|
3
|
+
"summary": "Circular identity image or fallback for users, entities, or profile chips.",
|
|
4
|
+
"whenToUse": [
|
|
5
|
+
"Show a user or entity photo with text or image fallback",
|
|
6
|
+
"Display profile chips from x-small through big sizes",
|
|
7
|
+
"Defer image paint with a loading skeleton placeholder"
|
|
8
|
+
],
|
|
9
|
+
"whenNotToUse": ["Interactive controls or navigation", "Non-identity imagery without a fallback plan"],
|
|
10
|
+
"accessibility": [
|
|
11
|
+
"Provide meaningful alt text when the image conveys identity",
|
|
12
|
+
"Use fallback text or initials when the image is unavailable",
|
|
13
|
+
"Loading uses aria-busy on the avatar region while Skeleton stays decorative"
|
|
14
|
+
],
|
|
15
|
+
"antiPatterns": [
|
|
16
|
+
"Relying on Avatar children for layout sizing",
|
|
17
|
+
"Omitting meaningful alt text when the image conveys identity"
|
|
18
|
+
],
|
|
19
|
+
"related": ["Skeleton"]
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Button",
|
|
3
|
+
"summary": "Primary action control with size, variant, optional icon, and loading state.",
|
|
4
|
+
"whenToUse": [
|
|
5
|
+
"Labeled actions with text and optional leading or trailing icon",
|
|
6
|
+
"Primary, secondary, flat, or destructive visual treatments",
|
|
7
|
+
"Async actions that need a stable width while loading"
|
|
8
|
+
],
|
|
9
|
+
"whenNotToUse": ["Icon-only actions without a visible label — use IconButton", "Navigation or non-button semantics"],
|
|
10
|
+
"accessibility": [
|
|
11
|
+
"Visible button text should name the action; avoid relying on icon alone",
|
|
12
|
+
"Loading sets aria-busy on the control while Spinner stays decorative",
|
|
13
|
+
"Disabled and loading states should not remove the action from the tab order without clear context"
|
|
14
|
+
],
|
|
15
|
+
"antiPatterns": [
|
|
16
|
+
"Using Button without children as icon-only — prefer IconButton",
|
|
17
|
+
"Duplicating icon size on every icon slot — Button CSS sizes SVG descendants"
|
|
18
|
+
],
|
|
19
|
+
"related": ["IconButton", "Icon", "Spinner"]
|
|
20
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"package": "@viraui/react",
|
|
4
|
+
"components": [
|
|
5
|
+
{
|
|
6
|
+
"id": "avatar",
|
|
7
|
+
"name": "Avatar",
|
|
8
|
+
"summary": "Circular identity image or fallback for users, entities, or profile chips.",
|
|
9
|
+
"guidePath": "./avatar/avatar.guide.json"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"id": "clamp-text",
|
|
13
|
+
"name": "ClampText",
|
|
14
|
+
"summary": "Presentational utility that truncates overflowing copy to a fixed line count.",
|
|
15
|
+
"guidePath": "./clamp-text/clamp-text.guide.json"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"id": "elevator",
|
|
19
|
+
"name": "Elevator",
|
|
20
|
+
"summary": "No-DOM elevation utility that merges shadow hooks onto valid element children.",
|
|
21
|
+
"guidePath": "./elevator/elevator.guide.json"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "button",
|
|
25
|
+
"name": "Button",
|
|
26
|
+
"summary": "Primary action control with size, variant, optional icon, and loading state.",
|
|
27
|
+
"guidePath": "./button/button.guide.json"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"id": "icon-button",
|
|
31
|
+
"name": "IconButton",
|
|
32
|
+
"summary": "Icon-only button that requires an accessible name through aria-label or aria-labelledby.",
|
|
33
|
+
"guidePath": "./icon-button/icon-button.guide.json"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"id": "textfield",
|
|
37
|
+
"name": "Textfield",
|
|
38
|
+
"summary": "Single-line field input with control-group chrome and optional addons.",
|
|
39
|
+
"guidePath": "./textfield/textfield.guide.json"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"id": "textarea",
|
|
43
|
+
"name": "Textarea",
|
|
44
|
+
"summary": "Multi-line field control with shared field copy and optional resize.",
|
|
45
|
+
"guidePath": "./textarea/textarea.guide.json"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "slider",
|
|
49
|
+
"name": "Slider",
|
|
50
|
+
"summary": "Field-wrapped range input supporting single-thumb or two-thumb range selection.",
|
|
51
|
+
"guidePath": "./slider/slider.guide.json"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "switch",
|
|
55
|
+
"name": "Switch",
|
|
56
|
+
"summary": "Field-wrapped toggle control with regular or small track and optional field copy.",
|
|
57
|
+
"guidePath": "./switch/switch.guide.json"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"id": "select",
|
|
61
|
+
"name": "Select",
|
|
62
|
+
"summary": "Field-wrapped single-select dropdown with grouped options and field copy.",
|
|
63
|
+
"guidePath": "./select/select.guide.json"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"id": "icon",
|
|
67
|
+
"name": "Icon",
|
|
68
|
+
"summary": "Decorative Vira SVG icon selected by name and variant.",
|
|
69
|
+
"guidePath": "./icon/icon.guide.json"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"id": "skeleton",
|
|
73
|
+
"name": "Skeleton",
|
|
74
|
+
"summary": "Decorative loading placeholder sized by props, not children.",
|
|
75
|
+
"guidePath": "./skeleton/skeleton.guide.json"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"id": "stack",
|
|
79
|
+
"name": "Stack",
|
|
80
|
+
"summary": "Flex layout primitive for arranging children with token spacing, alignment, and padding.",
|
|
81
|
+
"guidePath": "./stack/stack.guide.json"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"id": "surface",
|
|
85
|
+
"name": "Surface",
|
|
86
|
+
"summary": "Presentational container with token background, optional border, radius, and padding.",
|
|
87
|
+
"guidePath": "./surface/surface.guide.json"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"id": "spinner",
|
|
91
|
+
"name": "Spinner",
|
|
92
|
+
"summary": "Decorative SVG pulsing loading indicator used inside interactive components.",
|
|
93
|
+
"guidePath": "./spinner/spinner.guide.json"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"id": "text",
|
|
97
|
+
"name": "Text",
|
|
98
|
+
"summary": "Theme-aware body-copy primitive with tone, family, and responsive body sizing.",
|
|
99
|
+
"guidePath": "./text/text.guide.json"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"id": "title",
|
|
103
|
+
"name": "Title",
|
|
104
|
+
"summary": "Theme-aware heading and display typography primitive.",
|
|
105
|
+
"guidePath": "./title/title.guide.json"
|
|
106
|
+
}
|
|
107
|
+
],
|
|
108
|
+
"consumption": "./consumption.json",
|
|
109
|
+
"themeSurface": "./theme-surface.json"
|
|
110
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ClampText",
|
|
3
|
+
"summary": "Presentational utility that truncates overflowing copy to a fixed line count.",
|
|
4
|
+
"whenToUse": [
|
|
5
|
+
"Single- or multi-line ellipsis in constrained layouts",
|
|
6
|
+
"Clamp Text or Title roots through render",
|
|
7
|
+
"Inline or block clamped typography"
|
|
8
|
+
],
|
|
9
|
+
"whenNotToUse": [
|
|
10
|
+
"Full text must remain visible without truncation",
|
|
11
|
+
"Heading semantics without composing Title through render"
|
|
12
|
+
],
|
|
13
|
+
"accessibility": [
|
|
14
|
+
"Truncation hides content — provide full text nearby, in a tooltip, or on a detail view when it matters",
|
|
15
|
+
"Do not use clamped text alone for critical instructions or legal copy",
|
|
16
|
+
"Choose Title render for headings so document outline stays correct"
|
|
17
|
+
],
|
|
18
|
+
"antiPatterns": [
|
|
19
|
+
"Using ClampText as a heading primitive without Title render",
|
|
20
|
+
"Expecting children-driven sizing instead of rows"
|
|
21
|
+
],
|
|
22
|
+
"related": ["Text", "Title"]
|
|
23
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
@scope (.Avatar) {
|
|
2
|
+
:scope {
|
|
3
|
+
--avatar-size: var(--space-2x-large);
|
|
4
|
+
--avatar-background: var(--global-contrast);
|
|
5
|
+
--avatar-foreground: var(--global-foreground);
|
|
6
|
+
|
|
7
|
+
display: inline-flex;
|
|
8
|
+
align-items: center;
|
|
9
|
+
justify-content: center;
|
|
10
|
+
inline-size: var(--avatar-size);
|
|
11
|
+
block-size: var(--avatar-size);
|
|
12
|
+
min-inline-size: var(--avatar-size);
|
|
13
|
+
min-block-size: var(--avatar-size);
|
|
14
|
+
overflow: hidden;
|
|
15
|
+
border-radius: var(--radius-infinite);
|
|
16
|
+
background: var(--avatar-background);
|
|
17
|
+
color: var(--avatar-foreground);
|
|
18
|
+
vertical-align: middle;
|
|
19
|
+
-webkit-user-select: none;
|
|
20
|
+
user-select: none;
|
|
21
|
+
container-name: viraui-avatar;
|
|
22
|
+
container-type: inline-size;
|
|
23
|
+
|
|
24
|
+
&[data-size='x-small'] {
|
|
25
|
+
--avatar-size: var(--space-large);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
&[data-size='small'] {
|
|
29
|
+
--avatar-size: var(--space-2x-large);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
&[data-size='regular'] {
|
|
33
|
+
--avatar-size: var(--space-wide);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
&[data-size='big'] {
|
|
37
|
+
--avatar-size: var(--space-2x-wide);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
> .Image,
|
|
41
|
+
> .SkeletonPlaceholder {
|
|
42
|
+
inline-size: 100%;
|
|
43
|
+
block-size: 100%;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
> .Image {
|
|
47
|
+
display: block;
|
|
48
|
+
object-fit: cover;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
> .Label {
|
|
52
|
+
font-size: 30cqw;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { IntrinsicViraProps } from '@react/src/core/props/intrinsic-vira-props';
|
|
2
|
+
import type * as React from 'react';
|
|
3
|
+
import './avatar.css';
|
|
4
|
+
/**
|
|
5
|
+
* Public Avatar props.
|
|
6
|
+
*
|
|
7
|
+
* Includes standard `span` attributes such as `id`, `title`, ARIA props, and event handlers,
|
|
8
|
+
* plus Vira-owned image, fallback, size, and loading controls.
|
|
9
|
+
*
|
|
10
|
+
* @default Native span pass-through props keep React defaults.
|
|
11
|
+
*/
|
|
12
|
+
export type AvatarProps = React.ComponentPropsWithoutRef<'span'> & IntrinsicViraProps & {
|
|
13
|
+
/**
|
|
14
|
+
* Supplies the avatar image source URL.
|
|
15
|
+
*
|
|
16
|
+
* @default No default; when omitted the fallback renders.
|
|
17
|
+
*/
|
|
18
|
+
src?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Supplies alternative text for the avatar image.
|
|
21
|
+
*
|
|
22
|
+
* @default ''
|
|
23
|
+
*/
|
|
24
|
+
alt?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Supplies the content shown when the image is absent or fails to load.
|
|
27
|
+
*
|
|
28
|
+
* @default No default; consumer must provide a value.
|
|
29
|
+
*/
|
|
30
|
+
fallback: React.ReactNode;
|
|
31
|
+
/**
|
|
32
|
+
* Selects the rendered avatar footprint.
|
|
33
|
+
*
|
|
34
|
+
* @default 'small'
|
|
35
|
+
*/
|
|
36
|
+
size?: 'x-small' | 'small' | 'regular' | 'big';
|
|
37
|
+
/**
|
|
38
|
+
* Replaces the avatar content with a same-size skeleton while image data is still loading upstream.
|
|
39
|
+
*
|
|
40
|
+
* @default false
|
|
41
|
+
*/
|
|
42
|
+
loading?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Ref forwarded to the rendered avatar root element.
|
|
45
|
+
*
|
|
46
|
+
* @default No ref is attached.
|
|
47
|
+
*/
|
|
48
|
+
ref?: React.Ref<HTMLSpanElement>;
|
|
49
|
+
};
|
|
50
|
+
export declare const Avatar: React.FC<AvatarProps>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Avatar as PrimitiveAvatar } from '@base-ui/react/avatar';
|
|
3
|
+
import { Skeleton, Text } from '@react/src/components';
|
|
4
|
+
import { extractIntrinsicViraProps } from '@react/src/core/props/intrinsic-vira-props';
|
|
5
|
+
import { clsx } from 'clsx';
|
|
6
|
+
import './avatar.css';
|
|
7
|
+
const fallbackTextSizeByAvatarSize = {
|
|
8
|
+
'x-small': 'x-small',
|
|
9
|
+
small: 'x-small',
|
|
10
|
+
regular: 'small',
|
|
11
|
+
big: 'large',
|
|
12
|
+
};
|
|
13
|
+
export const Avatar = ({ alt = '', className, fallback, loading = false, ref, size = 'small', src, ...otherProps }) => {
|
|
14
|
+
const { componentProps, intrinsicAttributes } = extractIntrinsicViraProps(otherProps);
|
|
15
|
+
const hasImage = Boolean(src);
|
|
16
|
+
return (_jsx(PrimitiveAvatar.Root, { ...componentProps, ...intrinsicAttributes, ref: ref, "aria-busy": loading || undefined, className: clsx('Avatar', className), "data-has-image": hasImage ? 'true' : 'false', "data-loading": loading ? 'true' : 'false', "data-size": size, children: loading ? (_jsx(Skeleton, { minHeight: "100%", minWidth: "100%", radius: "infinite", width: "100%" })) : (_jsxs(_Fragment, { children: [hasImage ? (_jsx(PrimitiveAvatar.Image, { draggable: false, decoding: "async", loading: "eager", alt: alt, className: "Image", src: src })) : null, _jsx(PrimitiveAvatar.Fallback, { render: _jsx(Text, { className: "Label", whiteSpace: "nowrap", weight: "semibold", size: fallbackTextSizeByAvatarSize[size] }), children: fallback })] })) }));
|
|
17
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Avatar } from './avatar';
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
@scope (.BasicInput) {
|
|
2
|
+
:scope {
|
|
3
|
+
--basic-input-background: var(--base-1);
|
|
4
|
+
--basic-input-color: var(--global-foreground);
|
|
5
|
+
--basic-input-placeholder-color: var(--global-disabled-foreground);
|
|
6
|
+
--basic-input-padding-inline: var(--space-small);
|
|
7
|
+
--basic-input-font-size: var(--font-scale-body-small);
|
|
8
|
+
--basic-input-border-radius: var(--radius-small);
|
|
9
|
+
|
|
10
|
+
box-sizing: border-box;
|
|
11
|
+
margin: 0;
|
|
12
|
+
inline-size: 100%;
|
|
13
|
+
min-inline-size: 0;
|
|
14
|
+
padding-inline: calc(var(--basic-input-padding-inline) + ((var(--basic-input-border-radius) + 0px) / 4));
|
|
15
|
+
font-family: inherit;
|
|
16
|
+
font-size: var(--basic-input-font-size);
|
|
17
|
+
font-variation-settings: 'wght' 400;
|
|
18
|
+
color: var(--basic-input-color);
|
|
19
|
+
background: var(--basic-input-background);
|
|
20
|
+
border: none;
|
|
21
|
+
border-radius: var(--basic-input-border-radius);
|
|
22
|
+
appearance: none;
|
|
23
|
+
|
|
24
|
+
/* Safari contacts autofill affordance: match input text color */
|
|
25
|
+
&::-webkit-contacts-auto-fill-button {
|
|
26
|
+
background-color: var(--basic-input-color);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
&::placeholder {
|
|
30
|
+
color: var(--basic-input-placeholder-color);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
&:disabled {
|
|
34
|
+
--basic-input-background: var(--global-disabled-background);
|
|
35
|
+
--basic-input-color: var(--global-disabled-foreground);
|
|
36
|
+
--basic-input-placeholder-color: var(--global-disabled-foreground);
|
|
37
|
+
|
|
38
|
+
cursor: not-allowed;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
&[data-invalid] {
|
|
42
|
+
outline-color: oklab(from var(--highlight-red) l a b / 0.3);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Field } from '@base-ui/react/field';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import './basic-input.css';
|
|
4
|
+
/**
|
|
5
|
+
* Internal shared field control for Textfield and Textarea.
|
|
6
|
+
*
|
|
7
|
+
* Merges `BasicInput` and `Control` classes onto one field control surface.
|
|
8
|
+
* With `render={<Input />}` (Base UI input), renders `Input` only — it already wraps
|
|
9
|
+
* `Field.Control`. With `render={<textarea />}`, renders `Field.Control` + native textarea.
|
|
10
|
+
*/
|
|
11
|
+
export type BasicInputProps = Omit<Field.Control.Props, 'ref'> & {
|
|
12
|
+
ref?: React.Ref<HTMLElement> | undefined;
|
|
13
|
+
};
|
|
14
|
+
export declare const BasicInput: React.ForwardRefExoticComponent<Omit<BasicInputProps, "ref"> & React.RefAttributes<HTMLElement>>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { Field } from '@base-ui/react/field';
|
|
4
|
+
import { Input as PrimitiveInput } from '@base-ui/react/input';
|
|
5
|
+
import { clsx } from 'clsx';
|
|
6
|
+
import * as React from 'react';
|
|
7
|
+
import './basic-input.css';
|
|
8
|
+
function usesInputPrimitiveRender(render) {
|
|
9
|
+
return React.isValidElement(render) && render.type === PrimitiveInput;
|
|
10
|
+
}
|
|
11
|
+
export const BasicInput = React.forwardRef(function BasicInput({ className, render, ...props }, ref) {
|
|
12
|
+
const mergedClassName = clsx('BasicInput', className);
|
|
13
|
+
if (usesInputPrimitiveRender(render)) {
|
|
14
|
+
return _jsx(PrimitiveInput, { ref: ref, className: mergedClassName, ...props });
|
|
15
|
+
}
|
|
16
|
+
return _jsx(Field.Control, { ref: ref, className: mergedClassName, render: render, ...props });
|
|
17
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type * as React from 'react';
|
|
2
|
+
type FieldHelperCopyProps = {
|
|
3
|
+
description?: React.ReactNode;
|
|
4
|
+
error?: React.ReactNode;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Renders field helper copy in the shared `Description` slot via `Field.Validity`.
|
|
8
|
+
* Static `error` replaces `description` only while invalid and `error` is set.
|
|
9
|
+
* `description` stays visible when invalid if `error` is omitted.
|
|
10
|
+
* `validate` / native messages render through `Field.Error` when there is no `description`.
|
|
11
|
+
*/
|
|
12
|
+
export declare function FieldHelperCopy({ description, error }: FieldHelperCopyProps): React.JSX.Element;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { Field } from '@base-ui/react/field';
|
|
4
|
+
import { Text } from '@react/src/components/text';
|
|
5
|
+
/**
|
|
6
|
+
* Renders field helper copy in the shared `Description` slot via `Field.Validity`.
|
|
7
|
+
* Static `error` replaces `description` only while invalid and `error` is set.
|
|
8
|
+
* `description` stays visible when invalid if `error` is omitted.
|
|
9
|
+
* `validate` / native messages render through `Field.Error` when there is no `description`.
|
|
10
|
+
*/
|
|
11
|
+
export function FieldHelperCopy({ description, error }) {
|
|
12
|
+
return (_jsx(Field.Validity, { children: (validity) => {
|
|
13
|
+
const isInvalid = validity.validity.valid === false;
|
|
14
|
+
if (isInvalid && error) {
|
|
15
|
+
return (_jsx(Field.Error, { className: "Description", match: true, render: _jsx(Text, { size: "x-small", tone: "danger" }), children: error }));
|
|
16
|
+
}
|
|
17
|
+
if (description) {
|
|
18
|
+
return (_jsx(Field.Description, { className: "Description", render: _jsx(Text, { size: "x-small", tone: "muted" }), children: description }));
|
|
19
|
+
}
|
|
20
|
+
if (isInvalid) {
|
|
21
|
+
return _jsx(Field.Error, { className: "Description", render: _jsx(Text, { size: "x-small", tone: "danger" }) });
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
} }));
|
|
25
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { BasicInput } from './basic-input';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type * as React from 'react';
|
|
2
|
+
export type InputControlGroupProps = {
|
|
3
|
+
/**
|
|
4
|
+
* Optional content rendered before the control (for example a currency prefix).
|
|
5
|
+
*
|
|
6
|
+
* @default No start addon is rendered.
|
|
7
|
+
*/
|
|
8
|
+
startAddon?: React.ReactNode;
|
|
9
|
+
/**
|
|
10
|
+
* Optional content rendered after the control (for example an action button).
|
|
11
|
+
*
|
|
12
|
+
* @default No end addon is rendered.
|
|
13
|
+
*/
|
|
14
|
+
endAddon?: React.ReactNode;
|
|
15
|
+
/**
|
|
16
|
+
* The children of the control group.
|
|
17
|
+
*
|
|
18
|
+
* @required
|
|
19
|
+
*/
|
|
20
|
+
children: React.ReactNode;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Internal flex wrapper for a field control plus optional start/end addons.
|
|
24
|
+
* Not exported from the package public surface.
|
|
25
|
+
*/
|
|
26
|
+
export declare const InputControlGroup: React.FC<InputControlGroupProps>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Stack } from '@react/src/components';
|
|
4
|
+
/**
|
|
5
|
+
* Internal flex wrapper for a field control plus optional start/end addons.
|
|
6
|
+
* Not exported from the package public surface.
|
|
7
|
+
*/
|
|
8
|
+
export const InputControlGroup = ({ children, endAddon, startAddon }) => (_jsxs(Stack, { className: "ControlGroup", direction: "row", fillChildren: false, vAlign: "stretch", children: [startAddon && (_jsx(Stack, { className: "Addon", "data-position": "start", fillChildren: false, hAlign: "center", hPadding: ['small', 'x-small'], inline: true, shrink: false, vAlign: "center", children: startAddon })), children, endAddon && (_jsx(Stack, { className: "Addon", "data-position": "end", fillChildren: false, hAlign: "center", hPadding: "x-small", inline: true, shrink: false, vAlign: "center", children: endAddon }))] }));
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
@scope (.Button) {
|
|
2
|
+
:scope {
|
|
3
|
+
--button-background: var(--global-primary);
|
|
4
|
+
--button-color: var(--base-1);
|
|
5
|
+
--button-height: var(--space-2x-large);
|
|
6
|
+
--button-padding-inline: var(--space-medium);
|
|
7
|
+
--button-padding-block: var(--space-small);
|
|
8
|
+
--button-spinner-color: currentColor;
|
|
9
|
+
--button-icon-size: 1em;
|
|
10
|
+
|
|
11
|
+
-webkit-touch-callout: none;
|
|
12
|
+
-webkit-user-select: none;
|
|
13
|
+
user-select: none;
|
|
14
|
+
margin: 0;
|
|
15
|
+
cursor: pointer;
|
|
16
|
+
font-family: inherit;
|
|
17
|
+
display: inline-flex;
|
|
18
|
+
align-items: center;
|
|
19
|
+
min-inline-size: min-content;
|
|
20
|
+
max-block-size: var(--button-height);
|
|
21
|
+
block-size: var(--button-height);
|
|
22
|
+
justify-content: center;
|
|
23
|
+
text-decoration: none;
|
|
24
|
+
white-space: nowrap;
|
|
25
|
+
appearance: button;
|
|
26
|
+
overflow: hidden;
|
|
27
|
+
position: relative;
|
|
28
|
+
padding: var(--button-padding-block) var(--button-padding-inline);
|
|
29
|
+
font-variation-settings: 'wght' 500;
|
|
30
|
+
gap: var(--space-small);
|
|
31
|
+
border: 1px solid transparent;
|
|
32
|
+
background: var(--button-background);
|
|
33
|
+
color: var(--button-color);
|
|
34
|
+
font-size: var(--font-scale-body-medium);
|
|
35
|
+
border-radius: var(--radius-small);
|
|
36
|
+
transition: translate var(--easing-elastic) var(--duration-instant);
|
|
37
|
+
background-clip: padding-box;
|
|
38
|
+
will-change: translate;
|
|
39
|
+
|
|
40
|
+
/* Pressed: nudge label/icon down when enabled */
|
|
41
|
+
&:not(:disabled):active {
|
|
42
|
+
translate: 0 1px;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
&[data-size='medium'] {
|
|
46
|
+
--button-height: var(--space-x-large);
|
|
47
|
+
--button-padding-inline: var(--space-small);
|
|
48
|
+
--button-padding-block: var(--space-small);
|
|
49
|
+
--button-icon-size: 0.9em;
|
|
50
|
+
gap: var(--space-x-small);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
&[data-size='small'] {
|
|
54
|
+
--button-height: var(--space-large);
|
|
55
|
+
--button-padding-inline: var(--space-small);
|
|
56
|
+
--button-padding-block: var(--space-x-small);
|
|
57
|
+
--button-icon-size: 0.9em;
|
|
58
|
+
gap: var(--space-x-small);
|
|
59
|
+
font-size: var(--font-scale-body-small);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
&[data-variant='primary'] {
|
|
63
|
+
--button-background: var(--global-primary);
|
|
64
|
+
--button-color: contrast-color(var(--global-primary));
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
&[data-variant='secondary'] {
|
|
68
|
+
--button-background: var(--global-contrast);
|
|
69
|
+
--button-color: var(--base-6);
|
|
70
|
+
background-clip: unset;
|
|
71
|
+
|
|
72
|
+
&:hover {
|
|
73
|
+
--button-background: oklab(from var(--global-contrast) l a b / calc(alpha + 0.05));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
&[data-variant='flat'] {
|
|
78
|
+
--button-background: transparent;
|
|
79
|
+
--button-color: var(--base-5);
|
|
80
|
+
|
|
81
|
+
&:hover {
|
|
82
|
+
--button-background: var(--base-1);
|
|
83
|
+
--button-color: var(--base-7);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
&[data-variant='destructive'] {
|
|
88
|
+
--button-background: oklab(from var(--highlight-red) l a b / 20%);
|
|
89
|
+
--button-color: var(--highlight-red);
|
|
90
|
+
|
|
91
|
+
&:hover {
|
|
92
|
+
--button-background: oklab(from var(--highlight-red) l a b / 30%);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
&[data-icon-position='start'] {
|
|
97
|
+
flex-direction: row;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
&[data-icon-position='end'] {
|
|
101
|
+
flex-direction: row-reverse;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
&[data-icon-only='true'] {
|
|
105
|
+
gap: 0;
|
|
106
|
+
padding-block: var(--button-padding-block);
|
|
107
|
+
padding-inline: var(--button-padding-block);
|
|
108
|
+
inline-size: var(--button-height);
|
|
109
|
+
min-inline-size: var(--button-height);
|
|
110
|
+
max-inline-size: var(--button-height);
|
|
111
|
+
aspect-ratio: 1 / 1;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/* Disabled: override variant/hover tokens; aria-disabled for non-native disabled buttons */
|
|
115
|
+
&:disabled,
|
|
116
|
+
&:disabled:hover,
|
|
117
|
+
&[aria-disabled='true'] {
|
|
118
|
+
--button-background: var(--global-disabled-background);
|
|
119
|
+
--button-color: var(--global-disabled-foreground);
|
|
120
|
+
|
|
121
|
+
cursor: not-allowed;
|
|
122
|
+
box-shadow: none;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
&[data-loading='true'][data-disabled] {
|
|
126
|
+
pointer-events: none;
|
|
127
|
+
border: 0;
|
|
128
|
+
box-shadow: none;
|
|
129
|
+
--button-color: var(--base-7);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
> .Content {
|
|
133
|
+
display: inline-grid;
|
|
134
|
+
place-items: center;
|
|
135
|
+
|
|
136
|
+
/* Loading: hide label/icon in Content while SpinnerOverlay stays visible */
|
|
137
|
+
&[data-loading='true'] {
|
|
138
|
+
opacity: 0;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
&:first-child > svg {
|
|
142
|
+
block-size: var(--button-icon-size);
|
|
143
|
+
inline-size: var(--button-icon-size);
|
|
144
|
+
flex-shrink: 0;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
> .SpinnerOverlay {
|
|
149
|
+
position: absolute;
|
|
150
|
+
inset: 0;
|
|
151
|
+
display: grid;
|
|
152
|
+
place-content: center;
|
|
153
|
+
pointer-events: none;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|