@yamada-ui/react 2.2.4-dev-20260629090928 → 2.2.4-dev-20260714071608
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/cjs/components/date-picker/use-date-picker.cjs.map +1 -1
- package/dist/cjs/components/fieldset/fieldset.style.cjs.map +1 -1
- package/dist/cjs/components/icon/icons/database-arrow-down-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/database-arrow-down-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/icons/database-arrow-up-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/database-arrow-up-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/icons/database-check-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/database-check-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/icons/database-minus-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/database-minus-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/icons/database-plus-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/database-plus-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/icons/database-x-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/database-x-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/icons/index.cjs +21 -0
- package/dist/cjs/components/icon/icons/index.cjs.map +1 -1
- package/dist/cjs/components/icon/icons/phi-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/phi-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/index.cjs +14 -0
- package/dist/cjs/components/slider/use-slider.cjs.map +1 -1
- package/dist/cjs/core/components/create-component.cjs.map +1 -1
- package/dist/cjs/core/components/use-component-style.cjs.map +1 -1
- package/dist/cjs/core/css/styles.cjs.map +1 -1
- package/dist/cjs/hooks/use-focus/index.cjs.map +1 -1
- package/dist/cjs/index.cjs +21 -0
- package/dist/cjs/utils/store.cjs.map +1 -1
- package/dist/esm/components/date-picker/use-date-picker.js.map +1 -1
- package/dist/esm/components/fieldset/fieldset.style.js.map +1 -1
- package/dist/esm/components/icon/icons/database-arrow-down-icon.js +14 -0
- package/dist/esm/components/icon/icons/database-arrow-down-icon.js.map +1 -0
- package/dist/esm/components/icon/icons/database-arrow-up-icon.js +14 -0
- package/dist/esm/components/icon/icons/database-arrow-up-icon.js.map +1 -0
- package/dist/esm/components/icon/icons/database-check-icon.js +14 -0
- package/dist/esm/components/icon/icons/database-check-icon.js.map +1 -0
- package/dist/esm/components/icon/icons/database-minus-icon.js +14 -0
- package/dist/esm/components/icon/icons/database-minus-icon.js.map +1 -0
- package/dist/esm/components/icon/icons/database-plus-icon.js +14 -0
- package/dist/esm/components/icon/icons/database-plus-icon.js.map +1 -0
- package/dist/esm/components/icon/icons/database-x-icon.js +14 -0
- package/dist/esm/components/icon/icons/database-x-icon.js.map +1 -0
- package/dist/esm/components/icon/icons/index.js +15 -1
- package/dist/esm/components/icon/icons/index.js.map +1 -1
- package/dist/esm/components/icon/icons/phi-icon.js +14 -0
- package/dist/esm/components/icon/icons/phi-icon.js.map +1 -0
- package/dist/esm/components/icon/index.js +8 -1
- package/dist/esm/components/slider/use-slider.js.map +1 -1
- package/dist/esm/core/components/create-component.js.map +1 -1
- package/dist/esm/core/components/use-component-style.js.map +1 -1
- package/dist/esm/core/css/styles.js.map +1 -1
- package/dist/esm/hooks/use-focus/index.js.map +1 -1
- package/dist/esm/index.js +15 -1
- package/dist/esm/utils/store.js.map +1 -1
- package/dist/types/components/field/use-field-props.d.ts +1 -1
- package/dist/types/components/icon/icons/database-arrow-down-icon.d.ts +13 -0
- package/dist/types/components/icon/icons/database-arrow-up-icon.d.ts +13 -0
- package/dist/types/components/icon/icons/database-check-icon.d.ts +13 -0
- package/dist/types/components/icon/icons/database-minus-icon.d.ts +13 -0
- package/dist/types/components/icon/icons/database-plus-icon.d.ts +13 -0
- package/dist/types/components/icon/icons/database-x-icon.d.ts +13 -0
- package/dist/types/components/icon/icons/index.d.ts +9 -2
- package/dist/types/components/icon/icons/index.types.d.ts +1 -1
- package/dist/types/components/icon/icons/phi-icon.d.ts +13 -0
- package/dist/types/components/icon/index.d.ts +8 -1
- package/dist/types/components/progress/use-progress.d.ts +6 -6
- package/dist/types/components/tree/tree.style.d.ts +1 -1
- package/dist/types/components/tree/use-tree.d.ts +2 -2
- package/dist/types/core/css/styles.d.ts +2 -1
- package/dist/types/index.d.ts +9 -2
- package/dist/types/providers/i18n-provider/i18n-provider.d.ts +1 -1
- package/package.json +5 -5
|
@@ -515,9 +515,15 @@ import { CupSodaIcon } from "./icons/cup-soda-icon.js";
|
|
|
515
515
|
import { CurrencyIcon } from "./icons/currency-icon.js";
|
|
516
516
|
import { CylinderIcon } from "./icons/cylinder-icon.js";
|
|
517
517
|
import { DamIcon } from "./icons/dam-icon.js";
|
|
518
|
+
import { DatabaseArrowDownIcon } from "./icons/database-arrow-down-icon.js";
|
|
519
|
+
import { DatabaseArrowUpIcon } from "./icons/database-arrow-up-icon.js";
|
|
518
520
|
import { DatabaseBackupIcon } from "./icons/database-backup-icon.js";
|
|
521
|
+
import { DatabaseCheckIcon } from "./icons/database-check-icon.js";
|
|
519
522
|
import { DatabaseIcon } from "./icons/database-icon.js";
|
|
523
|
+
import { DatabaseMinusIcon } from "./icons/database-minus-icon.js";
|
|
524
|
+
import { DatabasePlusIcon } from "./icons/database-plus-icon.js";
|
|
520
525
|
import { DatabaseSearchIcon } from "./icons/database-search-icon.js";
|
|
526
|
+
import { DatabaseXIcon } from "./icons/database-x-icon.js";
|
|
521
527
|
import { DatabaseZapIcon } from "./icons/database-zap-icon.js";
|
|
522
528
|
import { DecimalsArrowLeftIcon } from "./icons/decimals-arrow-left-icon.js";
|
|
523
529
|
import { DecimalsArrowRightIcon } from "./icons/decimals-arrow-right-icon.js";
|
|
@@ -1149,6 +1155,7 @@ import { PencilSparklesIcon } from "./icons/pencil-sparkles-icon.js";
|
|
|
1149
1155
|
import { PentagonIcon } from "./icons/pentagon-icon.js";
|
|
1150
1156
|
import { PercentIcon } from "./icons/percent-icon.js";
|
|
1151
1157
|
import { PersonStandingIcon } from "./icons/person-standing-icon.js";
|
|
1158
|
+
import { PhiIcon } from "./icons/phi-icon.js";
|
|
1152
1159
|
import { PhilippinePesoIcon } from "./icons/philippine-peso-icon.js";
|
|
1153
1160
|
import { PhoneCallIcon } from "./icons/phone-call-icon.js";
|
|
1154
1161
|
import { PhoneForwardedIcon } from "./icons/phone-forwarded-icon.js";
|
|
@@ -1739,4 +1746,4 @@ import { ZoomInIcon } from "./icons/zoom-in-icon.js";
|
|
|
1739
1746
|
import { ZoomOutIcon } from "./icons/zoom-out-icon.js";
|
|
1740
1747
|
import { icons_exports } from "./icons/index.js";
|
|
1741
1748
|
import { LucideIcon } from "./lucide-icon.js";
|
|
1742
|
-
export { AArrowDownIcon, AArrowUpIcon, ALargeSmallIcon, AccessibilityIcon, ActivityIcon, AdIcon, AirVentIcon, AirplayIcon, AlarmClockCheckIcon, AlarmClockIcon, AlarmClockMinusIcon, AlarmClockOffIcon, AlarmClockPlusIcon, AlarmSmokeIcon, AlbumIcon, AlignCenterHorizontalIcon, AlignCenterVerticalIcon, AlignEndHorizontalIcon, AlignEndVerticalIcon, AlignHorizontalDistributeCenterIcon, AlignHorizontalDistributeEndIcon, AlignHorizontalDistributeStartIcon, AlignHorizontalJustifyCenterIcon, AlignHorizontalJustifyEndIcon, AlignHorizontalJustifyStartIcon, AlignHorizontalSpaceAroundIcon, AlignHorizontalSpaceBetweenIcon, AlignStartHorizontalIcon, AlignStartVerticalIcon, AlignVerticalDistributeCenterIcon, AlignVerticalDistributeEndIcon, AlignVerticalDistributeStartIcon, AlignVerticalJustifyCenterIcon, AlignVerticalJustifyEndIcon, AlignVerticalJustifyStartIcon, AlignVerticalSpaceAroundIcon, AlignVerticalSpaceBetweenIcon, AmbulanceIcon, AmpersandIcon, AmpersandsIcon, AmphoraIcon, AnchorIcon, AngryIcon, AnnoyedIcon, AntennaIcon, AnvilIcon, ApertureIcon, AppWindowIcon, AppWindowMacIcon, AppleIcon, ArchiveIcon, ArchiveRestoreIcon, ArchiveXIcon, ArmchairIcon, ArrowBigDownDashIcon, ArrowBigDownIcon, ArrowBigLeftDashIcon, ArrowBigLeftIcon, ArrowBigRightDashIcon, ArrowBigRightIcon, ArrowBigUpDashIcon, ArrowBigUpIcon, ArrowDown01Icon, ArrowDown10Icon, ArrowDownAZIcon, ArrowDownFromLineIcon, ArrowDownIcon, ArrowDownLeftIcon, ArrowDownNarrowWideIcon, ArrowDownRightIcon, ArrowDownToDotIcon, ArrowDownToLineIcon, ArrowDownUpIcon, ArrowDownWideNarrowIcon, ArrowDownZAIcon, ArrowLeftFromLineIcon, ArrowLeftIcon, ArrowLeftRightIcon, ArrowLeftToLineIcon, ArrowRightFromLineIcon, ArrowRightIcon, ArrowRightLeftIcon, ArrowRightToLineIcon, ArrowUp01Icon, ArrowUp10Icon, ArrowUpAZIcon, ArrowUpDownIcon, ArrowUpFromDotIcon, ArrowUpFromLineIcon, ArrowUpIcon, ArrowUpLeftIcon, ArrowUpNarrowWideIcon, ArrowUpRightIcon, ArrowUpToLineIcon, ArrowUpWideNarrowIcon, ArrowUpZAIcon, ArrowsUpFromLineIcon, AsteriskIcon, AstroidIcon, AtSignIcon, AtomIcon, AudioLinesIcon, AudioWaveformIcon, AwardIcon, AxeIcon, Axis3dIcon, BabyIcon, BackpackIcon, BadgeAlertIcon, BadgeCentIcon, BadgeCheckIcon, BadgeDollarSignIcon, BadgeEuroIcon, BadgeIcon, BadgeIndianRupeeIcon, BadgeInfoIcon, BadgeJapaneseYenIcon, BadgeMinusIcon, BadgePercentIcon, BadgePlusIcon, BadgePoundSterlingIcon, BadgeQuestionMarkIcon, BadgeRussianRubleIcon, BadgeSwissFrancIcon, BadgeTurkishLiraIcon, BadgeXIcon, BaggageClaimIcon, BalloonIcon, BanIcon, BananaIcon, BandageIcon, BanknoteArrowDownIcon, BanknoteArrowUpIcon, BanknoteCheckIcon, BanknoteIcon, BanknoteXIcon, BarcodeIcon, BarrelIcon, BaselineIcon, BathIcon, BatteryChargingIcon, BatteryFullIcon, BatteryIcon, BatteryLowIcon, BatteryMediumIcon, BatteryPlusIcon, BatteryWarningIcon, BeakerIcon, BeanIcon, BeanOffIcon, BedDoubleIcon, BedIcon, BedSingleIcon, BeefIcon, BeefOffIcon, BeerIcon, BeerOffIcon, BellCheckIcon, BellDotIcon, BellElectricIcon, BellIcon, BellMinusIcon, BellOffIcon, BellPlusIcon, BellRingIcon, BetweenHorizontalEndIcon, BetweenHorizontalStartIcon, BetweenVerticalEndIcon, BetweenVerticalStartIcon, BicepsFlexedIcon, BikeIcon, BinaryIcon, BinocularsIcon, BiohazardIcon, BirdIcon, BirdhouseIcon, BitcoinIcon, BlendIcon, BlenderIcon, BlindsIcon, BlocksIcon, BluetoothConnectedIcon, BluetoothIcon, BluetoothOffIcon, BluetoothSearchingIcon, BoldIcon, BoltIcon, BombIcon, BoneFractureIcon, BoneIcon, BookAIcon, BookAlertIcon, BookAudioIcon, BookCheckIcon, BookCopyIcon, BookDashedIcon, BookDownIcon, BookHeadphonesIcon, BookHeartIcon, BookIcon, BookImageIcon, BookKeyIcon, BookLockIcon, BookMarkedIcon, BookMinusIcon, BookOpenCheckIcon, BookOpenIcon, BookOpenTextIcon, BookPlusIcon, BookSearchIcon, BookTextIcon, BookTypeIcon, BookUp2Icon, BookUpIcon, BookUserIcon, BookXIcon, BookmarkCheckIcon, BookmarkIcon, BookmarkMinusIcon, BookmarkOffIcon, BookmarkPlusIcon, BookmarkXIcon, BoomBoxIcon, BotIcon, BotMessageSquareIcon, BotOffIcon, BottleWineIcon, BowArrowIcon, BoxIcon, BoxesIcon, BracesIcon, BracketsIcon, BrainCircuitIcon, BrainCogIcon, BrainIcon, BrickWallFireIcon, BrickWallIcon, BrickWallShieldIcon, BriefcaseBusinessIcon, BriefcaseConveyorBeltIcon, BriefcaseIcon, BriefcaseMedicalIcon, BringToFrontIcon, BroccoliIcon, BrushCleaningIcon, BrushIcon, BubblesIcon, BugIcon, BugOffIcon, BugPlayIcon, Building2Icon, BuildingIcon, BusFrontIcon, BusIcon, CableCarIcon, CableIcon, CakeIcon, CakeSliceIcon, CalculatorIcon, Calendar1Icon, CalendarArrowDownIcon, CalendarArrowUpIcon, CalendarCheck2Icon, CalendarCheckIcon, CalendarClockIcon, CalendarCogIcon, CalendarDaysIcon, CalendarFoldIcon, CalendarHeartIcon, CalendarIcon, CalendarMinus2Icon, CalendarMinusIcon, CalendarOffIcon, CalendarPlus2Icon, CalendarPlusIcon, CalendarRangeIcon, CalendarSearchIcon, CalendarSyncIcon, CalendarX2Icon, CalendarXIcon, CalendarsIcon, CameraIcon, CameraOffIcon, CandyCaneIcon, CandyIcon, CandyOffIcon, CannabisIcon, CannabisOffIcon, CaptionsIcon, CaptionsOffIcon, CarFrontIcon, CarIcon, CarTaxiFrontIcon, CaravanIcon, CardSimIcon, CarrotIcon, CaseLowerIcon, CaseSensitiveIcon, CaseUpperIcon, CassetteTapeIcon, CastIcon, CastleIcon, CatIcon, CctvIcon, CctvOffIcon, ChartAreaIcon, ChartBarBigIcon, ChartBarDecreasingIcon, ChartBarIcon, ChartBarIncreasingIcon, ChartBarStackedIcon, ChartCandlestickIcon, ChartColumnBigIcon, ChartColumnDecreasingIcon, ChartColumnIcon, ChartColumnIncreasingIcon, ChartColumnStackedIcon, ChartGanttIcon, ChartLineIcon, ChartNetworkIcon, ChartNoAxesColumnDecreasingIcon, ChartNoAxesColumnIcon, ChartNoAxesColumnIncreasingIcon, ChartNoAxesCombinedIcon, ChartNoAxesGanttIcon, ChartPieIcon, ChartScatterIcon, ChartSplineIcon, CheckCheckIcon, CheckIcon, CheckLineIcon, ChefHatIcon, CherryIcon, ChessBishopIcon, ChessKingIcon, ChessKnightIcon, ChessPawnIcon, ChessQueenIcon, ChessRookIcon, ChevronDownIcon, ChevronFirstIcon, ChevronLastIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsDownIcon, ChevronsDownUpIcon, ChevronsLeftIcon, ChevronsLeftRightEllipsisIcon, ChevronsLeftRightIcon, ChevronsRightIcon, ChevronsRightLeftIcon, ChevronsUpDownIcon, ChevronsUpIcon, ChurchIcon, CigaretteIcon, CigaretteOffIcon, CircleAlertIcon, CircleArrowDownIcon, CircleArrowLeftIcon, CircleArrowOutDownLeftIcon, CircleArrowOutDownRightIcon, CircleArrowOutUpLeftIcon, CircleArrowOutUpRightIcon, CircleArrowRightIcon, CircleArrowUpIcon, CircleCheckBigIcon, CircleCheckIcon, CircleChevronDownIcon, CircleChevronLeftIcon, CircleChevronRightIcon, CircleChevronUpIcon, CircleDashedIcon, CircleDivideIcon, CircleDollarSignIcon, CircleDotDashedIcon, CircleDotIcon, CircleEllipsisIcon, CircleEqualIcon, CircleFadingArrowUpIcon, CircleFadingPlusIcon, CircleGaugeIcon, CircleIcon, CircleMinusIcon, CircleOffIcon, CircleParkingIcon, CircleParkingOffIcon, CirclePauseIcon, CirclePercentIcon, CirclePileIcon, CirclePlayIcon, CirclePlusIcon, CirclePoundSterlingIcon, CirclePowerIcon, CircleQuestionMarkIcon, CircleSlash2Icon, CircleSlashIcon, CircleSmallIcon, CircleStarIcon, CircleStopIcon, CircleUserIcon, CircleUserRoundIcon, CircleXIcon, CircuitBoardIcon, CitrusIcon, ClapperboardIcon, ClipboardCheckIcon, ClipboardClockIcon, ClipboardCopyIcon, ClipboardIcon, ClipboardListIcon, ClipboardMinusIcon, ClipboardPasteIcon, ClipboardPenIcon, ClipboardPenLineIcon, ClipboardPlusIcon, ClipboardTypeIcon, ClipboardXIcon, Clock10Icon, Clock11Icon, Clock12Icon, Clock1Icon, Clock2Icon, Clock3Icon, Clock4Icon, Clock5Icon, Clock6Icon, Clock7Icon, Clock8Icon, Clock9Icon, ClockAlertIcon, ClockArrowDownIcon, ClockArrowLeftIcon, ClockArrowRightIcon, ClockArrowUpIcon, ClockCheckIcon, ClockFadingIcon, ClockIcon, ClockPlusIcon, ClosedCaptionIcon, CloudAlertIcon, CloudBackupIcon, CloudCheckIcon, CloudCogIcon, CloudDownloadIcon, CloudDrizzleIcon, CloudFogIcon, CloudHailIcon, CloudIcon, CloudLightningIcon, CloudMoonIcon, CloudMoonRainIcon, CloudOffIcon, CloudRainIcon, CloudRainWindIcon, CloudSnowIcon, CloudSunIcon, CloudSunRainIcon, CloudSyncIcon, CloudUploadIcon, CloudyIcon, CloverIcon, ClubIcon, CodeIcon, CodeXmlIcon, CoffeeIcon, CogIcon, CoinsIcon, Columns2Icon, Columns3CogIcon, Columns3Icon, Columns4Icon, CombineIcon, CommandIcon, CompassIcon, ComponentIcon, ComputerIcon, ConciergeBellIcon, ConeIcon, ConstructionIcon, ContactIcon, ContactRoundIcon, ContainerIcon, ContrastIcon, CookieIcon, CookingPotIcon, CopyCheckIcon, CopyIcon, CopyMinusIcon, CopyPlusIcon, CopySlashIcon, CopyXIcon, CopyleftIcon, CopyrightIcon, CornerDownLeftIcon, CornerDownRightIcon, CornerLeftDownIcon, CornerLeftUpIcon, CornerRightDownIcon, CornerRightUpIcon, CornerUpLeftIcon, CornerUpRightIcon, CpuIcon, CreativeCommonsIcon, CreditCardIcon, CroissantIcon, CropIcon, CrossIcon, CrosshairIcon, CrownIcon, CuboidIcon, CupSodaIcon, CurrencyIcon, CylinderIcon, DamIcon, DatabaseBackupIcon, DatabaseIcon, DatabaseSearchIcon, DatabaseZapIcon, DecimalsArrowLeftIcon, DecimalsArrowRightIcon, DeleteIcon, DessertIcon, DiameterIcon, DiamondIcon, DiamondMinusIcon, DiamondPercentIcon, DiamondPlusIcon, Dice1Icon, Dice2Icon, Dice3Icon, Dice4Icon, Dice5Icon, Dice6Icon, DicesIcon, DiffIcon, Disc2Icon, Disc3Icon, DiscAlbumIcon, DiscIcon, DivideIcon, DnaIcon, DnaOffIcon, DockIcon, DogIcon, DollarSignIcon, DonutIcon, DoorClosedIcon, DoorClosedLockedIcon, DoorOpenIcon, DotIcon, DownloadIcon, DraftingCompassIcon, DramaIcon, DrillIcon, DroneIcon, DropletIcon, DropletOffIcon, DropletsIcon, DrumIcon, DrumstickIcon, DumbbellIcon, EarIcon, EarOffIcon, EarthIcon, EarthLockIcon, EclipseIcon, EggFriedIcon, EggIcon, EggOffIcon, EllipseIcon, EllipsisIcon, EllipsisVerticalIcon, EqualApproximatelyIcon, EqualIcon, EqualNotIcon, EraserIcon, EthernetPortIcon, EuroIcon, EvChargerIcon, ExpandIcon, ExternalLinkIcon, EyeClosedIcon, EyeDashedIcon, EyeIcon, EyeOffIcon, FactoryIcon, FanIcon, FastForwardIcon, FeatherIcon, FenceIcon, FerrisWheelIcon, FileArchiveIcon, FileAxis3dIcon, FileBadgeIcon, FileBoxIcon, FileBracesCornerIcon, FileBracesIcon, FileChartColumnIcon, FileChartColumnIncreasingIcon, FileChartLineIcon, FileChartPieIcon, FileCheckCornerIcon, FileCheckIcon, FileClockIcon, FileCodeCornerIcon, FileCodeIcon, FileCogIcon, FileDiffIcon, FileDigitIcon, FileDownIcon, FileExclamationPointIcon, FileHeadphoneIcon, FileHeartIcon, FileIcon, FileImageIcon, FileInputIcon, FileKeyIcon, FileLockIcon, FileMinusCornerIcon, FileMinusIcon, FileMusicIcon, FileOutputIcon, FilePenIcon, FilePenLineIcon, FilePlayIcon, FilePlusCornerIcon, FilePlusIcon, FileQuestionMarkIcon, FileScanIcon, FileSearchCornerIcon, FileSearchIcon, FileSignalIcon, FileSlidersIcon, FileSpreadsheetIcon, FileStackIcon, FileSymlinkIcon, FileTerminalIcon, FileTextIcon, FileTypeCornerIcon, FileTypeIcon, FileUpIcon, FileUserIcon, FileVideoCameraIcon, FileVolumeIcon, FileXCornerIcon, FileXIcon, FilesIcon, FilmIcon, FingerprintPatternIcon, FireExtinguisherIcon, FishIcon, FishOffIcon, FishSymbolIcon, FishingHookIcon, FishingRodIcon, FlagIcon, FlagOffIcon, FlagTriangleLeftIcon, FlagTriangleRightIcon, FlameIcon, FlameKindlingIcon, FlashlightIcon, FlashlightOffIcon, FlaskConicalIcon, FlaskConicalOffIcon, FlaskRoundIcon, FlipHorizontal2Icon, FlipVertical2Icon, Flower2Icon, FlowerIcon, FocusIcon, FoldHorizontalIcon, FoldVerticalIcon, FolderArchiveIcon, FolderBookmarkIcon, FolderCheckIcon, FolderClockIcon, FolderClosedIcon, FolderCodeIcon, FolderCogIcon, FolderDotIcon, FolderDownIcon, FolderGit2Icon, FolderGitIcon, FolderHeartIcon, FolderIcon, FolderInputIcon, FolderKanbanIcon, FolderKeyIcon, FolderLockIcon, FolderMinusIcon, FolderOpenDotIcon, FolderOpenIcon, FolderOutputIcon, FolderPenIcon, FolderPlusIcon, FolderRootIcon, FolderSearch2Icon, FolderSearchIcon, FolderSymlinkIcon, FolderSyncIcon, FolderTreeIcon, FolderUpIcon, FolderXIcon, FoldersIcon, FootprintsIcon, ForkliftIcon, FormIcon, ForwardIcon, FrameIcon, FrownIcon, FuelIcon, FullscreenIcon, FunnelIcon, FunnelPlusIcon, FunnelXIcon, GalleryHorizontalEndIcon, GalleryHorizontalIcon, GalleryThumbnailsIcon, GalleryVerticalEndIcon, GalleryVerticalIcon, Gamepad2Icon, GamepadDirectionalIcon, GamepadIcon, GaugeIcon, GavelIcon, GemIcon, GeorgianLariIcon, GhostIcon, GiftIcon, GitBranchIcon, GitBranchMinusIcon, GitBranchPlusIcon, GitCommitHorizontalIcon, GitCommitVerticalIcon, GitCompareArrowsIcon, GitCompareIcon, GitForkIcon, GitGraphIcon, GitMergeConflictIcon, GitMergeIcon, GitPullRequestArrowIcon, GitPullRequestClosedIcon, GitPullRequestCreateArrowIcon, GitPullRequestCreateIcon, GitPullRequestDraftIcon, GitPullRequestIcon, GlassWaterIcon, GlassesIcon, GlobeCheckIcon, GlobeIcon, GlobeLockIcon, GlobeOffIcon, GlobeXIcon, GoalIcon, GpuIcon, GraduationCapIcon, GrapeIcon, Grid2x2CheckIcon, Grid2x2Icon, Grid2x2PlusIcon, Grid2x2XIcon, Grid3x2Icon, Grid3x3Icon, GripHorizontalIcon, GripIcon, GripVerticalIcon, GroupIcon, GuitarIcon, HamIcon, HamburgerIcon, HammerIcon, HandCoinsIcon, HandFistIcon, HandGrabIcon, HandHeartIcon, HandHelpingIcon, HandIcon, HandMetalIcon, HandPlatterIcon, HandbagIcon, HandshakeIcon, HardDriveDownloadIcon, HardDriveIcon, HardDriveUploadIcon, HardHatIcon, HashIcon, HatGlassesIcon, HazeIcon, HdIcon, HdmiPortIcon, Heading1Icon, Heading2Icon, Heading3Icon, Heading4Icon, Heading5Icon, Heading6Icon, HeadingIcon, HeadphoneOffIcon, HeadphonesIcon, HeadsetIcon, HeartCrackIcon, HeartHandshakeIcon, HeartIcon, HeartMinusIcon, HeartOffIcon, HeartPlusIcon, HeartPulseIcon, HeartXIcon, HeaterIcon, HelicopterIcon, HexagonIcon, HighlighterIcon, HistoryIcon, HopIcon, HopOffIcon, HospitalIcon, HotelIcon, HourglassIcon, HouseHeartIcon, HouseIcon, HousePlugIcon, HousePlusIcon, HouseWifiIcon, IceCreamBowlIcon, IceCreamConeIcon, Icon, IconPropsContext, IdCardIcon, IdCardLanyardIcon, ImageDownIcon, ImageIcon, ImageMinusIcon, ImageOffIcon, ImagePlayIcon, ImagePlusIcon, ImageUpIcon, ImageUpscaleIcon, ImagesIcon, ImportIcon, InboxIcon, IndianRupeeIcon, InfinityIcon, InfoIcon, InspectionPanelIcon, ItalicIcon, IterationCcwIcon, IterationCwIcon, JapaneseYenIcon, JoystickIcon, KanbanIcon, KayakIcon, KeyIcon, KeyRoundIcon, KeySquareIcon, KeyboardIcon, KeyboardMusicIcon, KeyboardOffIcon, LampCeilingIcon, LampDeskIcon, LampFloorIcon, LampIcon, LampWallDownIcon, LampWallUpIcon, LandPlotIcon, LandmarkIcon, LanguagesIcon, LaptopIcon, LaptopMinimalCheckIcon, LaptopMinimalIcon, LassoIcon, LassoSelectIcon, LaughIcon, Layers2Icon, LayersIcon, LayersMinusIcon, LayersPlusIcon, LayoutDashboardIcon, LayoutGridIcon, LayoutListIcon, LayoutPanelLeftIcon, LayoutPanelTopIcon, LayoutTemplateIcon, LeafIcon, LeafyGreenIcon, LecternIcon, LensConcaveIcon, LensConvexIcon, LibraryBigIcon, LibraryIcon, LifeBuoyIcon, LigatureIcon, LightbulbIcon, LightbulbOffIcon, LineDotRightHorizontalIcon, LineSquiggleIcon, LineStyleIcon, Link2Icon, Link2OffIcon, LinkIcon, ListCheckIcon, ListChecksIcon, ListChevronsDownUpIcon, ListChevronsUpDownIcon, ListCollapseIcon, ListEndIcon, ListFilterIcon, ListFilterPlusIcon, ListIcon, ListIndentDecreaseIcon, ListIndentIncreaseIcon, ListMinusIcon, ListMusicIcon, ListOrderedIcon, ListPlusIcon, ListRestartIcon, ListSortAscendingIcon, ListSortDescendingIcon, ListStartIcon, ListTodoIcon, ListTreeIcon, ListVideoIcon, ListXIcon, LoaderCircleIcon, LoaderIcon, LoaderPinwheelIcon, LocateFixedIcon, LocateIcon, LocateOffIcon, LockIcon, LockKeyholeIcon, LockKeyholeOpenIcon, LockOpenIcon, LogInIcon, LogOutIcon, LogsIcon, LollipopIcon, LucideIcon, LuggageIcon, MagnetIcon, MailCheckIcon, MailIcon, MailMinusIcon, MailOpenIcon, MailPlusIcon, MailQuestionMarkIcon, MailSearchIcon, MailWarningIcon, MailXIcon, MailboxIcon, MailsIcon, MapIcon, MapMinusIcon, MapPinCheckIcon, MapPinCheckInsideIcon, MapPinHouseIcon, MapPinIcon, MapPinMinusIcon, MapPinMinusInsideIcon, MapPinOffIcon, MapPinPenIcon, MapPinPlusIcon, MapPinPlusInsideIcon, MapPinSearchIcon, MapPinXIcon, MapPinXInsideIcon, MapPinnedIcon, MapPlusIcon, MarsIcon, MarsStrokeIcon, MartiniIcon, Maximize2Icon, MaximizeIcon, MedalIcon, MegaphoneIcon, MegaphoneOffIcon, MehIcon, MemoryStickIcon, MenuIcon, MergeIcon, MessageCircleCheckIcon, MessageCircleCodeIcon, MessageCircleDashedIcon, MessageCircleHeartIcon, MessageCircleIcon, MessageCircleMoreIcon, MessageCircleOffIcon, MessageCirclePlusIcon, MessageCircleQuestionMarkIcon, MessageCircleReplyIcon, MessageCircleWarningIcon, MessageCircleXIcon, MessageSquareCheckIcon, MessageSquareCodeIcon, MessageSquareDashedIcon, MessageSquareDiffIcon, MessageSquareDotIcon, MessageSquareHeartIcon, MessageSquareIcon, MessageSquareLockIcon, MessageSquareMoreIcon, MessageSquareOffIcon, MessageSquarePlusIcon, MessageSquareQuoteIcon, MessageSquareReplyIcon, MessageSquareShareIcon, MessageSquareTextIcon, MessageSquareWarningIcon, MessageSquareXIcon, MessagesSquareIcon, MetronomeIcon, MicIcon, MicOffIcon, MicVocalIcon, MicrochipIcon, MicroscopeIcon, MicrowaveIcon, MilestoneIcon, MilkIcon, MilkOffIcon, Minimize2Icon, MinimizeIcon, MinusIcon, MirrorRectangularIcon, MirrorRoundIcon, MonitorCheckIcon, MonitorCloudIcon, MonitorCogIcon, MonitorDotIcon, MonitorDownIcon, MonitorIcon, MonitorOffIcon, MonitorPauseIcon, MonitorPlayIcon, MonitorSmartphoneIcon, MonitorSpeakerIcon, MonitorStopIcon, MonitorUpIcon, MonitorXIcon, MoonIcon, MoonStarIcon, MotorbikeIcon, MountainIcon, MountainSnowIcon, MouseIcon, MouseLeftIcon, MouseOffIcon, MousePointer2Icon, MousePointer2OffIcon, MousePointerBanIcon, MousePointerClickIcon, MousePointerIcon, MouseRightIcon, Move3dIcon, MoveDiagonal2Icon, MoveDiagonalIcon, MoveDownIcon, MoveDownLeftIcon, MoveDownRightIcon, MoveHorizontalIcon, MoveIcon, MoveLeftIcon, MoveRightIcon, MoveUpIcon, MoveUpLeftIcon, MoveUpRightIcon, MoveVerticalIcon, Music2Icon, Music3Icon, Music4Icon, MusicIcon, Navigation2Icon, Navigation2OffIcon, NavigationIcon, NavigationOffIcon, NetworkIcon, NewspaperIcon, NfcIcon, NonBinaryIcon, NotebookIcon, NotebookPenIcon, NotebookTabsIcon, NotebookTextIcon, NotepadTextDashedIcon, NotepadTextIcon, NutIcon, NutOffIcon, OctagonAlertIcon, OctagonIcon, OctagonMinusIcon, OctagonPauseIcon, OctagonXIcon, OmegaIcon, OptionIcon, OrbitIcon, OrigamiIcon, Package2Icon, PackageCheckIcon, PackageIcon, PackageMinusIcon, PackageOpenIcon, PackagePlusIcon, PackageSearchIcon, PackageXIcon, PaintBucketIcon, PaintRollerIcon, PaintbrushIcon, PaintbrushVerticalIcon, PaletteIcon, PandaIcon, PanelBottomCloseIcon, PanelBottomDashedIcon, PanelBottomIcon, PanelBottomOpenIcon, PanelLeftCloseIcon, PanelLeftDashedIcon, PanelLeftIcon, PanelLeftOpenIcon, PanelLeftRightDashedIcon, PanelRightCloseIcon, PanelRightDashedIcon, PanelRightIcon, PanelRightOpenIcon, PanelTopBottomDashedIcon, PanelTopCloseIcon, PanelTopDashedIcon, PanelTopIcon, PanelTopOpenIcon, PanelsLeftBottomIcon, PanelsRightBottomIcon, PanelsTopLeftIcon, PaperclipIcon, ParasolIcon, ParenthesesIcon, ParkingMeterIcon, PartyPopperIcon, PauseIcon, PawPrintIcon, PcCaseIcon, PenIcon, PenLineIcon, PenOffIcon, PenToolIcon, PencilIcon, PencilLineIcon, PencilOffIcon, PencilRulerIcon, PencilSparklesIcon, PentagonIcon, PercentIcon, PersonStandingIcon, PhilippinePesoIcon, PhoneCallIcon, PhoneForwardedIcon, PhoneIcon, PhoneIncomingIcon, PhoneMissedIcon, PhoneOffIcon, PhoneOutgoingIcon, PiIcon, PianoIcon, PickaxeIcon, PictureInPicture2Icon, PictureInPictureIcon, PiggyBankIcon, PilcrowIcon, PilcrowLeftIcon, PilcrowRightIcon, PillBottleIcon, PillIcon, PinIcon, PinOffIcon, PipetteIcon, PizzaIcon, PlaneIcon, PlaneLandingIcon, PlaneTakeoffIcon, PlayIcon, PlayOffIcon, Plug2Icon, PlugIcon, PlugZapIcon, PlusIcon, PocketKnifeIcon, PodcastIcon, PodiumIcon, PointerIcon, PointerOffIcon, PopcornIcon, PopsicleIcon, PoundSterlingIcon, PowerIcon, PowerOffIcon, PresentationIcon, PrinterCheckIcon, PrinterIcon, PrinterXIcon, ProjectorIcon, ProportionsIcon, PuzzleIcon, PyramidIcon, QrCodeIcon, QuoteIcon, RabbitIcon, RadarIcon, RadiationIcon, RadicalIcon, RadioIcon, RadioOffIcon, RadioReceiverIcon, RadioTowerIcon, RadiusIcon, RainbowIcon, RatIcon, RatioIcon, ReceiptCentIcon, ReceiptEuroIcon, ReceiptIcon, ReceiptIndianRupeeIcon, ReceiptJapaneseYenIcon, ReceiptPoundSterlingIcon, ReceiptRussianRubleIcon, ReceiptSwissFrancIcon, ReceiptTextIcon, ReceiptTurkishLiraIcon, RectangleCircleIcon, RectangleEllipsisIcon, RectangleGogglesIcon, RectangleHorizontalIcon, RectangleVerticalIcon, RecycleIcon, Redo2Icon, RedoDotIcon, RedoIcon, RefreshCcwDotIcon, RefreshCcwIcon, RefreshCwIcon, RefreshCwOffIcon, RefrigeratorIcon, RegexIcon, RemoveFormattingIcon, Repeat1Icon, Repeat2Icon, RepeatIcon, RepeatOffIcon, ReplaceAllIcon, ReplaceIcon, ReplyAllIcon, ReplyIcon, RewindIcon, RibbonIcon, RoadIcon, RocketIcon, RockingChairIcon, RollerCoasterIcon, RoseIcon, Rotate3dIcon, RotateCcwIcon, RotateCcwKeyIcon, RotateCcwSquareIcon, RotateCwIcon, RotateCwSquareIcon, RouteIcon, RouteOffIcon, RouterIcon, Rows2Icon, Rows3Icon, Rows4Icon, RssIcon, RulerDimensionLineIcon, RulerIcon, RussianRubleIcon, SailboatIcon, SaladIcon, SandwichIcon, SatelliteDishIcon, SatelliteIcon, SaudiRiyalIcon, SaveAllIcon, SaveCheckIcon, SaveIcon, SaveOffIcon, SavePenIcon, SavePlusIcon, Scale3dIcon, ScaleIcon, ScalingIcon, ScanBarcodeIcon, ScanEyeIcon, ScanFaceIcon, ScanHeartIcon, ScanIcon, ScanLineIcon, ScanQrCodeIcon, ScanSearchIcon, ScanTextIcon, SchoolIcon, ScissorsIcon, ScissorsLineDashedIcon, ScooterIcon, ScreenShareIcon, ScreenShareOffIcon, ScrollIcon, ScrollTextIcon, SearchAlertIcon, SearchCheckIcon, SearchCodeIcon, SearchIcon, SearchSlashIcon, SearchXIcon, SectionIcon, SendHorizontalIcon, SendIcon, SendToBackIcon, SeparatorHorizontalIcon, SeparatorVerticalIcon, ServerCogIcon, ServerCrashIcon, ServerIcon, ServerOffIcon, Settings2Icon, SettingsIcon, ShapesIcon, Share2Icon, ShareIcon, SheetIcon, ShellIcon, ShelvingUnitIcon, ShieldAlertIcon, ShieldBanIcon, ShieldCheckIcon, ShieldCogCornerIcon, ShieldCogIcon, ShieldEllipsisIcon, ShieldHalfIcon, ShieldIcon, ShieldMinusIcon, ShieldOffIcon, ShieldPlusIcon, ShieldQuestionMarkIcon, ShieldUserIcon, ShieldXIcon, ShipIcon, ShipWheelIcon, ShirtIcon, ShoppingBagIcon, ShoppingBasketIcon, ShoppingCartIcon, ShovelIcon, ShowerHeadIcon, ShredderIcon, ShrimpIcon, ShrinkIcon, ShrubIcon, ShuffleIcon, SigmaIcon, SignalHighIcon, SignalIcon, SignalLowIcon, SignalMediumIcon, SignalZeroIcon, SignatureIcon, SignpostBigIcon, SignpostIcon, SirenIcon, SkipBackIcon, SkipForwardIcon, SkullIcon, SlashIcon, SliceIcon, SlidersHorizontalIcon, SlidersVerticalIcon, SmartphoneChargingIcon, SmartphoneIcon, SmartphoneNfcIcon, SmileIcon, SmilePlusIcon, SnailIcon, SnowflakeIcon, SoapDispenserDropletIcon, SofaIcon, SolarPanelIcon, SoupIcon, SpaceIcon, SpadeIcon, SparkleIcon, SparklesIcon, SpeakerIcon, SpeechIcon, SpellCheck2Icon, SpellCheckIcon, SplineIcon, SplinePointerIcon, SplitIcon, SpoolIcon, SportShoeIcon, SpotlightIcon, SprayCanIcon, SproutIcon, SquareActivityIcon, SquareArrowDownIcon, SquareArrowDownLeftIcon, SquareArrowDownRightIcon, SquareArrowLeftIcon, SquareArrowOutDownLeftIcon, SquareArrowOutDownRightIcon, SquareArrowOutUpLeftIcon, SquareArrowOutUpRightIcon, SquareArrowRightEnterIcon, SquareArrowRightExitIcon, SquareArrowRightIcon, SquareArrowUpIcon, SquareArrowUpLeftIcon, SquareArrowUpRightIcon, SquareAsteriskIcon, SquareBottomDashedScissorsIcon, SquareCenterlineDashedHorizontalIcon, SquareCenterlineDashedVerticalIcon, SquareChartGanttIcon, SquareCheckBigIcon, SquareCheckIcon, SquareChevronDownIcon, SquareChevronLeftIcon, SquareChevronRightIcon, SquareChevronUpIcon, SquareCodeIcon, SquareDashedBottomCodeIcon, SquareDashedBottomIcon, SquareDashedIcon, SquareDashedKanbanIcon, SquareDashedMousePointerIcon, SquareDashedTextIcon, SquareDashedTopSolidIcon, SquareDivideIcon, SquareDotIcon, SquareEqualIcon, SquareFunctionIcon, SquareIcon, SquareKanbanIcon, SquareLibraryIcon, SquareMIcon, SquareMenuIcon, SquareMinusIcon, SquareMousePointerIcon, SquareParkingIcon, SquareParkingOffIcon, SquarePauseIcon, SquarePenIcon, SquarePercentIcon, SquarePiIcon, SquarePilcrowIcon, SquarePlayIcon, SquarePlusIcon, SquarePowerIcon, SquareRadicalIcon, SquareRoundCornerIcon, SquareScissorsIcon, SquareSigmaIcon, SquareSlashIcon, SquareSplitHorizontalIcon, SquareSplitVerticalIcon, SquareSquareIcon, SquareStackIcon, SquareStarIcon, SquareStopIcon, SquareTerminalIcon, SquareUserIcon, SquareUserRoundIcon, SquareXIcon, SquaresExcludeIcon, SquaresIntersectIcon, SquaresSubtractIcon, SquaresUniteIcon, SquircleDashedIcon, SquircleIcon, SquirrelIcon, StampIcon, StarCheckIcon, StarHalfIcon, StarIcon, StarMinusIcon, StarOffIcon, StarPlusIcon, StarXIcon, StepBackIcon, StepForwardIcon, StethoscopeIcon, StickerIcon, StickyNoteCheckIcon, StickyNoteIcon, StickyNoteMinusIcon, StickyNoteOffIcon, StickyNotePlusIcon, StickyNoteXIcon, StickyNotesIcon, StoneIcon, StoreIcon, StretchHorizontalIcon, StretchVerticalIcon, StrikethroughIcon, SubscriptIcon, SummaryIcon, SunDimIcon, SunIcon, SunMediumIcon, SunMoonIcon, SunSnowIcon, SunriseIcon, SunsetIcon, SuperscriptIcon, SwatchBookIcon, SwissFrancIcon, SwitchCameraIcon, SwordIcon, SwordsIcon, SyringeIcon, Table2Icon, TableCellsMergeIcon, TableCellsSplitIcon, TableColumnsSplitIcon, TableIcon, TableOfContentsIcon, TablePropertiesIcon, TableRowsSplitIcon, TabletIcon, TabletSmartphoneIcon, TabletsIcon, TagIcon, TagPlusIcon, TagXIcon, TagsIcon, Tally1Icon, Tally2Icon, Tally3Icon, Tally4Icon, Tally5Icon, TangentIcon, TargetIcon, TelescopeIcon, TentIcon, TentTreeIcon, TerminalIcon, TestTubeDiagonalIcon, TestTubeIcon, TestTubesIcon, TextAlignCenterIcon, TextAlignEndIcon, TextAlignJustifyIcon, TextAlignStartIcon, TextCursorIcon, TextCursorInputIcon, TextInitialIcon, TextQuoteIcon, TextSearchIcon, TextWrapIcon, TheaterIcon, ThermometerIcon, ThermometerSnowflakeIcon, ThermometerSunIcon, ThumbsDownIcon, ThumbsUpIcon, TicketCheckIcon, TicketIcon, TicketMinusIcon, TicketPercentIcon, TicketPlusIcon, TicketSlashIcon, TicketXIcon, TicketsIcon, TicketsPlaneIcon, TimelineIcon, TimerIcon, TimerOffIcon, TimerResetIcon, ToggleLeftIcon, ToggleRightIcon, ToiletIcon, ToolCaseIcon, ToolboxIcon, TornadoIcon, TorusIcon, TouchpadIcon, TouchpadOffIcon, TowelRackIcon, TowerControlIcon, ToyBrickIcon, TractorIcon, TrafficConeIcon, TrainFrontIcon, TrainFrontTunnelIcon, TrainTrackIcon, TramFrontIcon, TransgenderIcon, Trash2Icon, TrashIcon, TreeDeciduousIcon, TreePalmIcon, TreePineIcon, TreesIcon, TrendingDownIcon, TrendingUpDownIcon, TrendingUpIcon, TriangleAlertIcon, TriangleDashedIcon, TriangleIcon, TriangleRightIcon, TrophyIcon, TruckElectricIcon, TruckIcon, TurkishLiraIcon, TurntableIcon, TurtleIcon, TvIcon, TvMinimalIcon, TvMinimalPlayIcon, TypeIcon, TypeOutlineIcon, UmbrellaIcon, UmbrellaOffIcon, UnderlineIcon, Undo2Icon, UndoDotIcon, UndoIcon, UnfoldHorizontalIcon, UnfoldVerticalIcon, UngroupIcon, UniversityIcon, Unlink2Icon, UnlinkIcon, UnplugIcon, UploadIcon, UsbIcon, UserCheckIcon, UserCogIcon, UserIcon, UserKeyIcon, UserLockIcon, UserMinusIcon, UserPenIcon, UserPlusIcon, UserRoundArrowLeftIcon, UserRoundCheckIcon, UserRoundCogIcon, UserRoundIcon, UserRoundKeyIcon, UserRoundMinusIcon, UserRoundPenIcon, UserRoundPlusIcon, UserRoundSearchIcon, UserRoundXIcon, UserSearchIcon, UserStarIcon, UserXIcon, UsersIcon, UsersRoundIcon, UtensilsCrossedIcon, UtensilsIcon, UtilityPoleIcon, VanIcon, VariableIcon, VaultIcon, VectorSquareIcon, VeganIcon, VenetianMaskIcon, VenusAndMarsIcon, VenusIcon, VibrateIcon, VibrateOffIcon, VideoIcon, VideoOffIcon, VideotapeIcon, ViewIcon, VoicemailIcon, VolleyballIcon, Volume1Icon, Volume2Icon, VolumeIcon, VolumeOffIcon, VolumeXIcon, VoteIcon, WalletCardsIcon, WalletIcon, WalletMinimalIcon, WallpaperIcon, WandIcon, WandSparklesIcon, WarehouseIcon, WashingMachineIcon, WatchIcon, WavesArrowDownIcon, WavesArrowUpIcon, WavesHorizontalIcon, WavesLadderIcon, WavesVerticalIcon, WaypointsIcon, WebcamIcon, WebcamOffIcon, WebhookIcon, WebhookOffIcon, WeightIcon, WeightTildeIcon, WheatIcon, WheatOffIcon, WholeWordIcon, WifiCogIcon, WifiHighIcon, WifiIcon, WifiLowIcon, WifiOffIcon, WifiPenIcon, WifiSyncIcon, WifiZeroIcon, WindArrowDownIcon, WindIcon, WineIcon, WineOffIcon, WorkflowIcon, WormIcon, WrenchIcon, WrenchOffIcon, XIcon, XLineTopIcon, ZapIcon, ZapOffIcon, ZodiacAquariusIcon, ZodiacAriesIcon, ZodiacCancerIcon, ZodiacCapricornIcon, ZodiacGeminiIcon, ZodiacLeoIcon, ZodiacLibraIcon, ZodiacOphiuchusIcon, ZodiacPiscesIcon, ZodiacSagittariusIcon, ZodiacScorpioIcon, ZodiacTaurusIcon, ZodiacVirgoIcon, ZoomInIcon, ZoomOutIcon, iconStyle, icons_exports as icons, useIconPropsContext };
|
|
1749
|
+
export { AArrowDownIcon, AArrowUpIcon, ALargeSmallIcon, AccessibilityIcon, ActivityIcon, AdIcon, AirVentIcon, AirplayIcon, AlarmClockCheckIcon, AlarmClockIcon, AlarmClockMinusIcon, AlarmClockOffIcon, AlarmClockPlusIcon, AlarmSmokeIcon, AlbumIcon, AlignCenterHorizontalIcon, AlignCenterVerticalIcon, AlignEndHorizontalIcon, AlignEndVerticalIcon, AlignHorizontalDistributeCenterIcon, AlignHorizontalDistributeEndIcon, AlignHorizontalDistributeStartIcon, AlignHorizontalJustifyCenterIcon, AlignHorizontalJustifyEndIcon, AlignHorizontalJustifyStartIcon, AlignHorizontalSpaceAroundIcon, AlignHorizontalSpaceBetweenIcon, AlignStartHorizontalIcon, AlignStartVerticalIcon, AlignVerticalDistributeCenterIcon, AlignVerticalDistributeEndIcon, AlignVerticalDistributeStartIcon, AlignVerticalJustifyCenterIcon, AlignVerticalJustifyEndIcon, AlignVerticalJustifyStartIcon, AlignVerticalSpaceAroundIcon, AlignVerticalSpaceBetweenIcon, AmbulanceIcon, AmpersandIcon, AmpersandsIcon, AmphoraIcon, AnchorIcon, AngryIcon, AnnoyedIcon, AntennaIcon, AnvilIcon, ApertureIcon, AppWindowIcon, AppWindowMacIcon, AppleIcon, ArchiveIcon, ArchiveRestoreIcon, ArchiveXIcon, ArmchairIcon, ArrowBigDownDashIcon, ArrowBigDownIcon, ArrowBigLeftDashIcon, ArrowBigLeftIcon, ArrowBigRightDashIcon, ArrowBigRightIcon, ArrowBigUpDashIcon, ArrowBigUpIcon, ArrowDown01Icon, ArrowDown10Icon, ArrowDownAZIcon, ArrowDownFromLineIcon, ArrowDownIcon, ArrowDownLeftIcon, ArrowDownNarrowWideIcon, ArrowDownRightIcon, ArrowDownToDotIcon, ArrowDownToLineIcon, ArrowDownUpIcon, ArrowDownWideNarrowIcon, ArrowDownZAIcon, ArrowLeftFromLineIcon, ArrowLeftIcon, ArrowLeftRightIcon, ArrowLeftToLineIcon, ArrowRightFromLineIcon, ArrowRightIcon, ArrowRightLeftIcon, ArrowRightToLineIcon, ArrowUp01Icon, ArrowUp10Icon, ArrowUpAZIcon, ArrowUpDownIcon, ArrowUpFromDotIcon, ArrowUpFromLineIcon, ArrowUpIcon, ArrowUpLeftIcon, ArrowUpNarrowWideIcon, ArrowUpRightIcon, ArrowUpToLineIcon, ArrowUpWideNarrowIcon, ArrowUpZAIcon, ArrowsUpFromLineIcon, AsteriskIcon, AstroidIcon, AtSignIcon, AtomIcon, AudioLinesIcon, AudioWaveformIcon, AwardIcon, AxeIcon, Axis3dIcon, BabyIcon, BackpackIcon, BadgeAlertIcon, BadgeCentIcon, BadgeCheckIcon, BadgeDollarSignIcon, BadgeEuroIcon, BadgeIcon, BadgeIndianRupeeIcon, BadgeInfoIcon, BadgeJapaneseYenIcon, BadgeMinusIcon, BadgePercentIcon, BadgePlusIcon, BadgePoundSterlingIcon, BadgeQuestionMarkIcon, BadgeRussianRubleIcon, BadgeSwissFrancIcon, BadgeTurkishLiraIcon, BadgeXIcon, BaggageClaimIcon, BalloonIcon, BanIcon, BananaIcon, BandageIcon, BanknoteArrowDownIcon, BanknoteArrowUpIcon, BanknoteCheckIcon, BanknoteIcon, BanknoteXIcon, BarcodeIcon, BarrelIcon, BaselineIcon, BathIcon, BatteryChargingIcon, BatteryFullIcon, BatteryIcon, BatteryLowIcon, BatteryMediumIcon, BatteryPlusIcon, BatteryWarningIcon, BeakerIcon, BeanIcon, BeanOffIcon, BedDoubleIcon, BedIcon, BedSingleIcon, BeefIcon, BeefOffIcon, BeerIcon, BeerOffIcon, BellCheckIcon, BellDotIcon, BellElectricIcon, BellIcon, BellMinusIcon, BellOffIcon, BellPlusIcon, BellRingIcon, BetweenHorizontalEndIcon, BetweenHorizontalStartIcon, BetweenVerticalEndIcon, BetweenVerticalStartIcon, BicepsFlexedIcon, BikeIcon, BinaryIcon, BinocularsIcon, BiohazardIcon, BirdIcon, BirdhouseIcon, BitcoinIcon, BlendIcon, BlenderIcon, BlindsIcon, BlocksIcon, BluetoothConnectedIcon, BluetoothIcon, BluetoothOffIcon, BluetoothSearchingIcon, BoldIcon, BoltIcon, BombIcon, BoneFractureIcon, BoneIcon, BookAIcon, BookAlertIcon, BookAudioIcon, BookCheckIcon, BookCopyIcon, BookDashedIcon, BookDownIcon, BookHeadphonesIcon, BookHeartIcon, BookIcon, BookImageIcon, BookKeyIcon, BookLockIcon, BookMarkedIcon, BookMinusIcon, BookOpenCheckIcon, BookOpenIcon, BookOpenTextIcon, BookPlusIcon, BookSearchIcon, BookTextIcon, BookTypeIcon, BookUp2Icon, BookUpIcon, BookUserIcon, BookXIcon, BookmarkCheckIcon, BookmarkIcon, BookmarkMinusIcon, BookmarkOffIcon, BookmarkPlusIcon, BookmarkXIcon, BoomBoxIcon, BotIcon, BotMessageSquareIcon, BotOffIcon, BottleWineIcon, BowArrowIcon, BoxIcon, BoxesIcon, BracesIcon, BracketsIcon, BrainCircuitIcon, BrainCogIcon, BrainIcon, BrickWallFireIcon, BrickWallIcon, BrickWallShieldIcon, BriefcaseBusinessIcon, BriefcaseConveyorBeltIcon, BriefcaseIcon, BriefcaseMedicalIcon, BringToFrontIcon, BroccoliIcon, BrushCleaningIcon, BrushIcon, BubblesIcon, BugIcon, BugOffIcon, BugPlayIcon, Building2Icon, BuildingIcon, BusFrontIcon, BusIcon, CableCarIcon, CableIcon, CakeIcon, CakeSliceIcon, CalculatorIcon, Calendar1Icon, CalendarArrowDownIcon, CalendarArrowUpIcon, CalendarCheck2Icon, CalendarCheckIcon, CalendarClockIcon, CalendarCogIcon, CalendarDaysIcon, CalendarFoldIcon, CalendarHeartIcon, CalendarIcon, CalendarMinus2Icon, CalendarMinusIcon, CalendarOffIcon, CalendarPlus2Icon, CalendarPlusIcon, CalendarRangeIcon, CalendarSearchIcon, CalendarSyncIcon, CalendarX2Icon, CalendarXIcon, CalendarsIcon, CameraIcon, CameraOffIcon, CandyCaneIcon, CandyIcon, CandyOffIcon, CannabisIcon, CannabisOffIcon, CaptionsIcon, CaptionsOffIcon, CarFrontIcon, CarIcon, CarTaxiFrontIcon, CaravanIcon, CardSimIcon, CarrotIcon, CaseLowerIcon, CaseSensitiveIcon, CaseUpperIcon, CassetteTapeIcon, CastIcon, CastleIcon, CatIcon, CctvIcon, CctvOffIcon, ChartAreaIcon, ChartBarBigIcon, ChartBarDecreasingIcon, ChartBarIcon, ChartBarIncreasingIcon, ChartBarStackedIcon, ChartCandlestickIcon, ChartColumnBigIcon, ChartColumnDecreasingIcon, ChartColumnIcon, ChartColumnIncreasingIcon, ChartColumnStackedIcon, ChartGanttIcon, ChartLineIcon, ChartNetworkIcon, ChartNoAxesColumnDecreasingIcon, ChartNoAxesColumnIcon, ChartNoAxesColumnIncreasingIcon, ChartNoAxesCombinedIcon, ChartNoAxesGanttIcon, ChartPieIcon, ChartScatterIcon, ChartSplineIcon, CheckCheckIcon, CheckIcon, CheckLineIcon, ChefHatIcon, CherryIcon, ChessBishopIcon, ChessKingIcon, ChessKnightIcon, ChessPawnIcon, ChessQueenIcon, ChessRookIcon, ChevronDownIcon, ChevronFirstIcon, ChevronLastIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsDownIcon, ChevronsDownUpIcon, ChevronsLeftIcon, ChevronsLeftRightEllipsisIcon, ChevronsLeftRightIcon, ChevronsRightIcon, ChevronsRightLeftIcon, ChevronsUpDownIcon, ChevronsUpIcon, ChurchIcon, CigaretteIcon, CigaretteOffIcon, CircleAlertIcon, CircleArrowDownIcon, CircleArrowLeftIcon, CircleArrowOutDownLeftIcon, CircleArrowOutDownRightIcon, CircleArrowOutUpLeftIcon, CircleArrowOutUpRightIcon, CircleArrowRightIcon, CircleArrowUpIcon, CircleCheckBigIcon, CircleCheckIcon, CircleChevronDownIcon, CircleChevronLeftIcon, CircleChevronRightIcon, CircleChevronUpIcon, CircleDashedIcon, CircleDivideIcon, CircleDollarSignIcon, CircleDotDashedIcon, CircleDotIcon, CircleEllipsisIcon, CircleEqualIcon, CircleFadingArrowUpIcon, CircleFadingPlusIcon, CircleGaugeIcon, CircleIcon, CircleMinusIcon, CircleOffIcon, CircleParkingIcon, CircleParkingOffIcon, CirclePauseIcon, CirclePercentIcon, CirclePileIcon, CirclePlayIcon, CirclePlusIcon, CirclePoundSterlingIcon, CirclePowerIcon, CircleQuestionMarkIcon, CircleSlash2Icon, CircleSlashIcon, CircleSmallIcon, CircleStarIcon, CircleStopIcon, CircleUserIcon, CircleUserRoundIcon, CircleXIcon, CircuitBoardIcon, CitrusIcon, ClapperboardIcon, ClipboardCheckIcon, ClipboardClockIcon, ClipboardCopyIcon, ClipboardIcon, ClipboardListIcon, ClipboardMinusIcon, ClipboardPasteIcon, ClipboardPenIcon, ClipboardPenLineIcon, ClipboardPlusIcon, ClipboardTypeIcon, ClipboardXIcon, Clock10Icon, Clock11Icon, Clock12Icon, Clock1Icon, Clock2Icon, Clock3Icon, Clock4Icon, Clock5Icon, Clock6Icon, Clock7Icon, Clock8Icon, Clock9Icon, ClockAlertIcon, ClockArrowDownIcon, ClockArrowLeftIcon, ClockArrowRightIcon, ClockArrowUpIcon, ClockCheckIcon, ClockFadingIcon, ClockIcon, ClockPlusIcon, ClosedCaptionIcon, CloudAlertIcon, CloudBackupIcon, CloudCheckIcon, CloudCogIcon, CloudDownloadIcon, CloudDrizzleIcon, CloudFogIcon, CloudHailIcon, CloudIcon, CloudLightningIcon, CloudMoonIcon, CloudMoonRainIcon, CloudOffIcon, CloudRainIcon, CloudRainWindIcon, CloudSnowIcon, CloudSunIcon, CloudSunRainIcon, CloudSyncIcon, CloudUploadIcon, CloudyIcon, CloverIcon, ClubIcon, CodeIcon, CodeXmlIcon, CoffeeIcon, CogIcon, CoinsIcon, Columns2Icon, Columns3CogIcon, Columns3Icon, Columns4Icon, CombineIcon, CommandIcon, CompassIcon, ComponentIcon, ComputerIcon, ConciergeBellIcon, ConeIcon, ConstructionIcon, ContactIcon, ContactRoundIcon, ContainerIcon, ContrastIcon, CookieIcon, CookingPotIcon, CopyCheckIcon, CopyIcon, CopyMinusIcon, CopyPlusIcon, CopySlashIcon, CopyXIcon, CopyleftIcon, CopyrightIcon, CornerDownLeftIcon, CornerDownRightIcon, CornerLeftDownIcon, CornerLeftUpIcon, CornerRightDownIcon, CornerRightUpIcon, CornerUpLeftIcon, CornerUpRightIcon, CpuIcon, CreativeCommonsIcon, CreditCardIcon, CroissantIcon, CropIcon, CrossIcon, CrosshairIcon, CrownIcon, CuboidIcon, CupSodaIcon, CurrencyIcon, CylinderIcon, DamIcon, DatabaseArrowDownIcon, DatabaseArrowUpIcon, DatabaseBackupIcon, DatabaseCheckIcon, DatabaseIcon, DatabaseMinusIcon, DatabasePlusIcon, DatabaseSearchIcon, DatabaseXIcon, DatabaseZapIcon, DecimalsArrowLeftIcon, DecimalsArrowRightIcon, DeleteIcon, DessertIcon, DiameterIcon, DiamondIcon, DiamondMinusIcon, DiamondPercentIcon, DiamondPlusIcon, Dice1Icon, Dice2Icon, Dice3Icon, Dice4Icon, Dice5Icon, Dice6Icon, DicesIcon, DiffIcon, Disc2Icon, Disc3Icon, DiscAlbumIcon, DiscIcon, DivideIcon, DnaIcon, DnaOffIcon, DockIcon, DogIcon, DollarSignIcon, DonutIcon, DoorClosedIcon, DoorClosedLockedIcon, DoorOpenIcon, DotIcon, DownloadIcon, DraftingCompassIcon, DramaIcon, DrillIcon, DroneIcon, DropletIcon, DropletOffIcon, DropletsIcon, DrumIcon, DrumstickIcon, DumbbellIcon, EarIcon, EarOffIcon, EarthIcon, EarthLockIcon, EclipseIcon, EggFriedIcon, EggIcon, EggOffIcon, EllipseIcon, EllipsisIcon, EllipsisVerticalIcon, EqualApproximatelyIcon, EqualIcon, EqualNotIcon, EraserIcon, EthernetPortIcon, EuroIcon, EvChargerIcon, ExpandIcon, ExternalLinkIcon, EyeClosedIcon, EyeDashedIcon, EyeIcon, EyeOffIcon, FactoryIcon, FanIcon, FastForwardIcon, FeatherIcon, FenceIcon, FerrisWheelIcon, FileArchiveIcon, FileAxis3dIcon, FileBadgeIcon, FileBoxIcon, FileBracesCornerIcon, FileBracesIcon, FileChartColumnIcon, FileChartColumnIncreasingIcon, FileChartLineIcon, FileChartPieIcon, FileCheckCornerIcon, FileCheckIcon, FileClockIcon, FileCodeCornerIcon, FileCodeIcon, FileCogIcon, FileDiffIcon, FileDigitIcon, FileDownIcon, FileExclamationPointIcon, FileHeadphoneIcon, FileHeartIcon, FileIcon, FileImageIcon, FileInputIcon, FileKeyIcon, FileLockIcon, FileMinusCornerIcon, FileMinusIcon, FileMusicIcon, FileOutputIcon, FilePenIcon, FilePenLineIcon, FilePlayIcon, FilePlusCornerIcon, FilePlusIcon, FileQuestionMarkIcon, FileScanIcon, FileSearchCornerIcon, FileSearchIcon, FileSignalIcon, FileSlidersIcon, FileSpreadsheetIcon, FileStackIcon, FileSymlinkIcon, FileTerminalIcon, FileTextIcon, FileTypeCornerIcon, FileTypeIcon, FileUpIcon, FileUserIcon, FileVideoCameraIcon, FileVolumeIcon, FileXCornerIcon, FileXIcon, FilesIcon, FilmIcon, FingerprintPatternIcon, FireExtinguisherIcon, FishIcon, FishOffIcon, FishSymbolIcon, FishingHookIcon, FishingRodIcon, FlagIcon, FlagOffIcon, FlagTriangleLeftIcon, FlagTriangleRightIcon, FlameIcon, FlameKindlingIcon, FlashlightIcon, FlashlightOffIcon, FlaskConicalIcon, FlaskConicalOffIcon, FlaskRoundIcon, FlipHorizontal2Icon, FlipVertical2Icon, Flower2Icon, FlowerIcon, FocusIcon, FoldHorizontalIcon, FoldVerticalIcon, FolderArchiveIcon, FolderBookmarkIcon, FolderCheckIcon, FolderClockIcon, FolderClosedIcon, FolderCodeIcon, FolderCogIcon, FolderDotIcon, FolderDownIcon, FolderGit2Icon, FolderGitIcon, FolderHeartIcon, FolderIcon, FolderInputIcon, FolderKanbanIcon, FolderKeyIcon, FolderLockIcon, FolderMinusIcon, FolderOpenDotIcon, FolderOpenIcon, FolderOutputIcon, FolderPenIcon, FolderPlusIcon, FolderRootIcon, FolderSearch2Icon, FolderSearchIcon, FolderSymlinkIcon, FolderSyncIcon, FolderTreeIcon, FolderUpIcon, FolderXIcon, FoldersIcon, FootprintsIcon, ForkliftIcon, FormIcon, ForwardIcon, FrameIcon, FrownIcon, FuelIcon, FullscreenIcon, FunnelIcon, FunnelPlusIcon, FunnelXIcon, GalleryHorizontalEndIcon, GalleryHorizontalIcon, GalleryThumbnailsIcon, GalleryVerticalEndIcon, GalleryVerticalIcon, Gamepad2Icon, GamepadDirectionalIcon, GamepadIcon, GaugeIcon, GavelIcon, GemIcon, GeorgianLariIcon, GhostIcon, GiftIcon, GitBranchIcon, GitBranchMinusIcon, GitBranchPlusIcon, GitCommitHorizontalIcon, GitCommitVerticalIcon, GitCompareArrowsIcon, GitCompareIcon, GitForkIcon, GitGraphIcon, GitMergeConflictIcon, GitMergeIcon, GitPullRequestArrowIcon, GitPullRequestClosedIcon, GitPullRequestCreateArrowIcon, GitPullRequestCreateIcon, GitPullRequestDraftIcon, GitPullRequestIcon, GlassWaterIcon, GlassesIcon, GlobeCheckIcon, GlobeIcon, GlobeLockIcon, GlobeOffIcon, GlobeXIcon, GoalIcon, GpuIcon, GraduationCapIcon, GrapeIcon, Grid2x2CheckIcon, Grid2x2Icon, Grid2x2PlusIcon, Grid2x2XIcon, Grid3x2Icon, Grid3x3Icon, GripHorizontalIcon, GripIcon, GripVerticalIcon, GroupIcon, GuitarIcon, HamIcon, HamburgerIcon, HammerIcon, HandCoinsIcon, HandFistIcon, HandGrabIcon, HandHeartIcon, HandHelpingIcon, HandIcon, HandMetalIcon, HandPlatterIcon, HandbagIcon, HandshakeIcon, HardDriveDownloadIcon, HardDriveIcon, HardDriveUploadIcon, HardHatIcon, HashIcon, HatGlassesIcon, HazeIcon, HdIcon, HdmiPortIcon, Heading1Icon, Heading2Icon, Heading3Icon, Heading4Icon, Heading5Icon, Heading6Icon, HeadingIcon, HeadphoneOffIcon, HeadphonesIcon, HeadsetIcon, HeartCrackIcon, HeartHandshakeIcon, HeartIcon, HeartMinusIcon, HeartOffIcon, HeartPlusIcon, HeartPulseIcon, HeartXIcon, HeaterIcon, HelicopterIcon, HexagonIcon, HighlighterIcon, HistoryIcon, HopIcon, HopOffIcon, HospitalIcon, HotelIcon, HourglassIcon, HouseHeartIcon, HouseIcon, HousePlugIcon, HousePlusIcon, HouseWifiIcon, IceCreamBowlIcon, IceCreamConeIcon, Icon, IconPropsContext, IdCardIcon, IdCardLanyardIcon, ImageDownIcon, ImageIcon, ImageMinusIcon, ImageOffIcon, ImagePlayIcon, ImagePlusIcon, ImageUpIcon, ImageUpscaleIcon, ImagesIcon, ImportIcon, InboxIcon, IndianRupeeIcon, InfinityIcon, InfoIcon, InspectionPanelIcon, ItalicIcon, IterationCcwIcon, IterationCwIcon, JapaneseYenIcon, JoystickIcon, KanbanIcon, KayakIcon, KeyIcon, KeyRoundIcon, KeySquareIcon, KeyboardIcon, KeyboardMusicIcon, KeyboardOffIcon, LampCeilingIcon, LampDeskIcon, LampFloorIcon, LampIcon, LampWallDownIcon, LampWallUpIcon, LandPlotIcon, LandmarkIcon, LanguagesIcon, LaptopIcon, LaptopMinimalCheckIcon, LaptopMinimalIcon, LassoIcon, LassoSelectIcon, LaughIcon, Layers2Icon, LayersIcon, LayersMinusIcon, LayersPlusIcon, LayoutDashboardIcon, LayoutGridIcon, LayoutListIcon, LayoutPanelLeftIcon, LayoutPanelTopIcon, LayoutTemplateIcon, LeafIcon, LeafyGreenIcon, LecternIcon, LensConcaveIcon, LensConvexIcon, LibraryBigIcon, LibraryIcon, LifeBuoyIcon, LigatureIcon, LightbulbIcon, LightbulbOffIcon, LineDotRightHorizontalIcon, LineSquiggleIcon, LineStyleIcon, Link2Icon, Link2OffIcon, LinkIcon, ListCheckIcon, ListChecksIcon, ListChevronsDownUpIcon, ListChevronsUpDownIcon, ListCollapseIcon, ListEndIcon, ListFilterIcon, ListFilterPlusIcon, ListIcon, ListIndentDecreaseIcon, ListIndentIncreaseIcon, ListMinusIcon, ListMusicIcon, ListOrderedIcon, ListPlusIcon, ListRestartIcon, ListSortAscendingIcon, ListSortDescendingIcon, ListStartIcon, ListTodoIcon, ListTreeIcon, ListVideoIcon, ListXIcon, LoaderCircleIcon, LoaderIcon, LoaderPinwheelIcon, LocateFixedIcon, LocateIcon, LocateOffIcon, LockIcon, LockKeyholeIcon, LockKeyholeOpenIcon, LockOpenIcon, LogInIcon, LogOutIcon, LogsIcon, LollipopIcon, LucideIcon, LuggageIcon, MagnetIcon, MailCheckIcon, MailIcon, MailMinusIcon, MailOpenIcon, MailPlusIcon, MailQuestionMarkIcon, MailSearchIcon, MailWarningIcon, MailXIcon, MailboxIcon, MailsIcon, MapIcon, MapMinusIcon, MapPinCheckIcon, MapPinCheckInsideIcon, MapPinHouseIcon, MapPinIcon, MapPinMinusIcon, MapPinMinusInsideIcon, MapPinOffIcon, MapPinPenIcon, MapPinPlusIcon, MapPinPlusInsideIcon, MapPinSearchIcon, MapPinXIcon, MapPinXInsideIcon, MapPinnedIcon, MapPlusIcon, MarsIcon, MarsStrokeIcon, MartiniIcon, Maximize2Icon, MaximizeIcon, MedalIcon, MegaphoneIcon, MegaphoneOffIcon, MehIcon, MemoryStickIcon, MenuIcon, MergeIcon, MessageCircleCheckIcon, MessageCircleCodeIcon, MessageCircleDashedIcon, MessageCircleHeartIcon, MessageCircleIcon, MessageCircleMoreIcon, MessageCircleOffIcon, MessageCirclePlusIcon, MessageCircleQuestionMarkIcon, MessageCircleReplyIcon, MessageCircleWarningIcon, MessageCircleXIcon, MessageSquareCheckIcon, MessageSquareCodeIcon, MessageSquareDashedIcon, MessageSquareDiffIcon, MessageSquareDotIcon, MessageSquareHeartIcon, MessageSquareIcon, MessageSquareLockIcon, MessageSquareMoreIcon, MessageSquareOffIcon, MessageSquarePlusIcon, MessageSquareQuoteIcon, MessageSquareReplyIcon, MessageSquareShareIcon, MessageSquareTextIcon, MessageSquareWarningIcon, MessageSquareXIcon, MessagesSquareIcon, MetronomeIcon, MicIcon, MicOffIcon, MicVocalIcon, MicrochipIcon, MicroscopeIcon, MicrowaveIcon, MilestoneIcon, MilkIcon, MilkOffIcon, Minimize2Icon, MinimizeIcon, MinusIcon, MirrorRectangularIcon, MirrorRoundIcon, MonitorCheckIcon, MonitorCloudIcon, MonitorCogIcon, MonitorDotIcon, MonitorDownIcon, MonitorIcon, MonitorOffIcon, MonitorPauseIcon, MonitorPlayIcon, MonitorSmartphoneIcon, MonitorSpeakerIcon, MonitorStopIcon, MonitorUpIcon, MonitorXIcon, MoonIcon, MoonStarIcon, MotorbikeIcon, MountainIcon, MountainSnowIcon, MouseIcon, MouseLeftIcon, MouseOffIcon, MousePointer2Icon, MousePointer2OffIcon, MousePointerBanIcon, MousePointerClickIcon, MousePointerIcon, MouseRightIcon, Move3dIcon, MoveDiagonal2Icon, MoveDiagonalIcon, MoveDownIcon, MoveDownLeftIcon, MoveDownRightIcon, MoveHorizontalIcon, MoveIcon, MoveLeftIcon, MoveRightIcon, MoveUpIcon, MoveUpLeftIcon, MoveUpRightIcon, MoveVerticalIcon, Music2Icon, Music3Icon, Music4Icon, MusicIcon, Navigation2Icon, Navigation2OffIcon, NavigationIcon, NavigationOffIcon, NetworkIcon, NewspaperIcon, NfcIcon, NonBinaryIcon, NotebookIcon, NotebookPenIcon, NotebookTabsIcon, NotebookTextIcon, NotepadTextDashedIcon, NotepadTextIcon, NutIcon, NutOffIcon, OctagonAlertIcon, OctagonIcon, OctagonMinusIcon, OctagonPauseIcon, OctagonXIcon, OmegaIcon, OptionIcon, OrbitIcon, OrigamiIcon, Package2Icon, PackageCheckIcon, PackageIcon, PackageMinusIcon, PackageOpenIcon, PackagePlusIcon, PackageSearchIcon, PackageXIcon, PaintBucketIcon, PaintRollerIcon, PaintbrushIcon, PaintbrushVerticalIcon, PaletteIcon, PandaIcon, PanelBottomCloseIcon, PanelBottomDashedIcon, PanelBottomIcon, PanelBottomOpenIcon, PanelLeftCloseIcon, PanelLeftDashedIcon, PanelLeftIcon, PanelLeftOpenIcon, PanelLeftRightDashedIcon, PanelRightCloseIcon, PanelRightDashedIcon, PanelRightIcon, PanelRightOpenIcon, PanelTopBottomDashedIcon, PanelTopCloseIcon, PanelTopDashedIcon, PanelTopIcon, PanelTopOpenIcon, PanelsLeftBottomIcon, PanelsRightBottomIcon, PanelsTopLeftIcon, PaperclipIcon, ParasolIcon, ParenthesesIcon, ParkingMeterIcon, PartyPopperIcon, PauseIcon, PawPrintIcon, PcCaseIcon, PenIcon, PenLineIcon, PenOffIcon, PenToolIcon, PencilIcon, PencilLineIcon, PencilOffIcon, PencilRulerIcon, PencilSparklesIcon, PentagonIcon, PercentIcon, PersonStandingIcon, PhiIcon, PhilippinePesoIcon, PhoneCallIcon, PhoneForwardedIcon, PhoneIcon, PhoneIncomingIcon, PhoneMissedIcon, PhoneOffIcon, PhoneOutgoingIcon, PiIcon, PianoIcon, PickaxeIcon, PictureInPicture2Icon, PictureInPictureIcon, PiggyBankIcon, PilcrowIcon, PilcrowLeftIcon, PilcrowRightIcon, PillBottleIcon, PillIcon, PinIcon, PinOffIcon, PipetteIcon, PizzaIcon, PlaneIcon, PlaneLandingIcon, PlaneTakeoffIcon, PlayIcon, PlayOffIcon, Plug2Icon, PlugIcon, PlugZapIcon, PlusIcon, PocketKnifeIcon, PodcastIcon, PodiumIcon, PointerIcon, PointerOffIcon, PopcornIcon, PopsicleIcon, PoundSterlingIcon, PowerIcon, PowerOffIcon, PresentationIcon, PrinterCheckIcon, PrinterIcon, PrinterXIcon, ProjectorIcon, ProportionsIcon, PuzzleIcon, PyramidIcon, QrCodeIcon, QuoteIcon, RabbitIcon, RadarIcon, RadiationIcon, RadicalIcon, RadioIcon, RadioOffIcon, RadioReceiverIcon, RadioTowerIcon, RadiusIcon, RainbowIcon, RatIcon, RatioIcon, ReceiptCentIcon, ReceiptEuroIcon, ReceiptIcon, ReceiptIndianRupeeIcon, ReceiptJapaneseYenIcon, ReceiptPoundSterlingIcon, ReceiptRussianRubleIcon, ReceiptSwissFrancIcon, ReceiptTextIcon, ReceiptTurkishLiraIcon, RectangleCircleIcon, RectangleEllipsisIcon, RectangleGogglesIcon, RectangleHorizontalIcon, RectangleVerticalIcon, RecycleIcon, Redo2Icon, RedoDotIcon, RedoIcon, RefreshCcwDotIcon, RefreshCcwIcon, RefreshCwIcon, RefreshCwOffIcon, RefrigeratorIcon, RegexIcon, RemoveFormattingIcon, Repeat1Icon, Repeat2Icon, RepeatIcon, RepeatOffIcon, ReplaceAllIcon, ReplaceIcon, ReplyAllIcon, ReplyIcon, RewindIcon, RibbonIcon, RoadIcon, RocketIcon, RockingChairIcon, RollerCoasterIcon, RoseIcon, Rotate3dIcon, RotateCcwIcon, RotateCcwKeyIcon, RotateCcwSquareIcon, RotateCwIcon, RotateCwSquareIcon, RouteIcon, RouteOffIcon, RouterIcon, Rows2Icon, Rows3Icon, Rows4Icon, RssIcon, RulerDimensionLineIcon, RulerIcon, RussianRubleIcon, SailboatIcon, SaladIcon, SandwichIcon, SatelliteDishIcon, SatelliteIcon, SaudiRiyalIcon, SaveAllIcon, SaveCheckIcon, SaveIcon, SaveOffIcon, SavePenIcon, SavePlusIcon, Scale3dIcon, ScaleIcon, ScalingIcon, ScanBarcodeIcon, ScanEyeIcon, ScanFaceIcon, ScanHeartIcon, ScanIcon, ScanLineIcon, ScanQrCodeIcon, ScanSearchIcon, ScanTextIcon, SchoolIcon, ScissorsIcon, ScissorsLineDashedIcon, ScooterIcon, ScreenShareIcon, ScreenShareOffIcon, ScrollIcon, ScrollTextIcon, SearchAlertIcon, SearchCheckIcon, SearchCodeIcon, SearchIcon, SearchSlashIcon, SearchXIcon, SectionIcon, SendHorizontalIcon, SendIcon, SendToBackIcon, SeparatorHorizontalIcon, SeparatorVerticalIcon, ServerCogIcon, ServerCrashIcon, ServerIcon, ServerOffIcon, Settings2Icon, SettingsIcon, ShapesIcon, Share2Icon, ShareIcon, SheetIcon, ShellIcon, ShelvingUnitIcon, ShieldAlertIcon, ShieldBanIcon, ShieldCheckIcon, ShieldCogCornerIcon, ShieldCogIcon, ShieldEllipsisIcon, ShieldHalfIcon, ShieldIcon, ShieldMinusIcon, ShieldOffIcon, ShieldPlusIcon, ShieldQuestionMarkIcon, ShieldUserIcon, ShieldXIcon, ShipIcon, ShipWheelIcon, ShirtIcon, ShoppingBagIcon, ShoppingBasketIcon, ShoppingCartIcon, ShovelIcon, ShowerHeadIcon, ShredderIcon, ShrimpIcon, ShrinkIcon, ShrubIcon, ShuffleIcon, SigmaIcon, SignalHighIcon, SignalIcon, SignalLowIcon, SignalMediumIcon, SignalZeroIcon, SignatureIcon, SignpostBigIcon, SignpostIcon, SirenIcon, SkipBackIcon, SkipForwardIcon, SkullIcon, SlashIcon, SliceIcon, SlidersHorizontalIcon, SlidersVerticalIcon, SmartphoneChargingIcon, SmartphoneIcon, SmartphoneNfcIcon, SmileIcon, SmilePlusIcon, SnailIcon, SnowflakeIcon, SoapDispenserDropletIcon, SofaIcon, SolarPanelIcon, SoupIcon, SpaceIcon, SpadeIcon, SparkleIcon, SparklesIcon, SpeakerIcon, SpeechIcon, SpellCheck2Icon, SpellCheckIcon, SplineIcon, SplinePointerIcon, SplitIcon, SpoolIcon, SportShoeIcon, SpotlightIcon, SprayCanIcon, SproutIcon, SquareActivityIcon, SquareArrowDownIcon, SquareArrowDownLeftIcon, SquareArrowDownRightIcon, SquareArrowLeftIcon, SquareArrowOutDownLeftIcon, SquareArrowOutDownRightIcon, SquareArrowOutUpLeftIcon, SquareArrowOutUpRightIcon, SquareArrowRightEnterIcon, SquareArrowRightExitIcon, SquareArrowRightIcon, SquareArrowUpIcon, SquareArrowUpLeftIcon, SquareArrowUpRightIcon, SquareAsteriskIcon, SquareBottomDashedScissorsIcon, SquareCenterlineDashedHorizontalIcon, SquareCenterlineDashedVerticalIcon, SquareChartGanttIcon, SquareCheckBigIcon, SquareCheckIcon, SquareChevronDownIcon, SquareChevronLeftIcon, SquareChevronRightIcon, SquareChevronUpIcon, SquareCodeIcon, SquareDashedBottomCodeIcon, SquareDashedBottomIcon, SquareDashedIcon, SquareDashedKanbanIcon, SquareDashedMousePointerIcon, SquareDashedTextIcon, SquareDashedTopSolidIcon, SquareDivideIcon, SquareDotIcon, SquareEqualIcon, SquareFunctionIcon, SquareIcon, SquareKanbanIcon, SquareLibraryIcon, SquareMIcon, SquareMenuIcon, SquareMinusIcon, SquareMousePointerIcon, SquareParkingIcon, SquareParkingOffIcon, SquarePauseIcon, SquarePenIcon, SquarePercentIcon, SquarePiIcon, SquarePilcrowIcon, SquarePlayIcon, SquarePlusIcon, SquarePowerIcon, SquareRadicalIcon, SquareRoundCornerIcon, SquareScissorsIcon, SquareSigmaIcon, SquareSlashIcon, SquareSplitHorizontalIcon, SquareSplitVerticalIcon, SquareSquareIcon, SquareStackIcon, SquareStarIcon, SquareStopIcon, SquareTerminalIcon, SquareUserIcon, SquareUserRoundIcon, SquareXIcon, SquaresExcludeIcon, SquaresIntersectIcon, SquaresSubtractIcon, SquaresUniteIcon, SquircleDashedIcon, SquircleIcon, SquirrelIcon, StampIcon, StarCheckIcon, StarHalfIcon, StarIcon, StarMinusIcon, StarOffIcon, StarPlusIcon, StarXIcon, StepBackIcon, StepForwardIcon, StethoscopeIcon, StickerIcon, StickyNoteCheckIcon, StickyNoteIcon, StickyNoteMinusIcon, StickyNoteOffIcon, StickyNotePlusIcon, StickyNoteXIcon, StickyNotesIcon, StoneIcon, StoreIcon, StretchHorizontalIcon, StretchVerticalIcon, StrikethroughIcon, SubscriptIcon, SummaryIcon, SunDimIcon, SunIcon, SunMediumIcon, SunMoonIcon, SunSnowIcon, SunriseIcon, SunsetIcon, SuperscriptIcon, SwatchBookIcon, SwissFrancIcon, SwitchCameraIcon, SwordIcon, SwordsIcon, SyringeIcon, Table2Icon, TableCellsMergeIcon, TableCellsSplitIcon, TableColumnsSplitIcon, TableIcon, TableOfContentsIcon, TablePropertiesIcon, TableRowsSplitIcon, TabletIcon, TabletSmartphoneIcon, TabletsIcon, TagIcon, TagPlusIcon, TagXIcon, TagsIcon, Tally1Icon, Tally2Icon, Tally3Icon, Tally4Icon, Tally5Icon, TangentIcon, TargetIcon, TelescopeIcon, TentIcon, TentTreeIcon, TerminalIcon, TestTubeDiagonalIcon, TestTubeIcon, TestTubesIcon, TextAlignCenterIcon, TextAlignEndIcon, TextAlignJustifyIcon, TextAlignStartIcon, TextCursorIcon, TextCursorInputIcon, TextInitialIcon, TextQuoteIcon, TextSearchIcon, TextWrapIcon, TheaterIcon, ThermometerIcon, ThermometerSnowflakeIcon, ThermometerSunIcon, ThumbsDownIcon, ThumbsUpIcon, TicketCheckIcon, TicketIcon, TicketMinusIcon, TicketPercentIcon, TicketPlusIcon, TicketSlashIcon, TicketXIcon, TicketsIcon, TicketsPlaneIcon, TimelineIcon, TimerIcon, TimerOffIcon, TimerResetIcon, ToggleLeftIcon, ToggleRightIcon, ToiletIcon, ToolCaseIcon, ToolboxIcon, TornadoIcon, TorusIcon, TouchpadIcon, TouchpadOffIcon, TowelRackIcon, TowerControlIcon, ToyBrickIcon, TractorIcon, TrafficConeIcon, TrainFrontIcon, TrainFrontTunnelIcon, TrainTrackIcon, TramFrontIcon, TransgenderIcon, Trash2Icon, TrashIcon, TreeDeciduousIcon, TreePalmIcon, TreePineIcon, TreesIcon, TrendingDownIcon, TrendingUpDownIcon, TrendingUpIcon, TriangleAlertIcon, TriangleDashedIcon, TriangleIcon, TriangleRightIcon, TrophyIcon, TruckElectricIcon, TruckIcon, TurkishLiraIcon, TurntableIcon, TurtleIcon, TvIcon, TvMinimalIcon, TvMinimalPlayIcon, TypeIcon, TypeOutlineIcon, UmbrellaIcon, UmbrellaOffIcon, UnderlineIcon, Undo2Icon, UndoDotIcon, UndoIcon, UnfoldHorizontalIcon, UnfoldVerticalIcon, UngroupIcon, UniversityIcon, Unlink2Icon, UnlinkIcon, UnplugIcon, UploadIcon, UsbIcon, UserCheckIcon, UserCogIcon, UserIcon, UserKeyIcon, UserLockIcon, UserMinusIcon, UserPenIcon, UserPlusIcon, UserRoundArrowLeftIcon, UserRoundCheckIcon, UserRoundCogIcon, UserRoundIcon, UserRoundKeyIcon, UserRoundMinusIcon, UserRoundPenIcon, UserRoundPlusIcon, UserRoundSearchIcon, UserRoundXIcon, UserSearchIcon, UserStarIcon, UserXIcon, UsersIcon, UsersRoundIcon, UtensilsCrossedIcon, UtensilsIcon, UtilityPoleIcon, VanIcon, VariableIcon, VaultIcon, VectorSquareIcon, VeganIcon, VenetianMaskIcon, VenusAndMarsIcon, VenusIcon, VibrateIcon, VibrateOffIcon, VideoIcon, VideoOffIcon, VideotapeIcon, ViewIcon, VoicemailIcon, VolleyballIcon, Volume1Icon, Volume2Icon, VolumeIcon, VolumeOffIcon, VolumeXIcon, VoteIcon, WalletCardsIcon, WalletIcon, WalletMinimalIcon, WallpaperIcon, WandIcon, WandSparklesIcon, WarehouseIcon, WashingMachineIcon, WatchIcon, WavesArrowDownIcon, WavesArrowUpIcon, WavesHorizontalIcon, WavesLadderIcon, WavesVerticalIcon, WaypointsIcon, WebcamIcon, WebcamOffIcon, WebhookIcon, WebhookOffIcon, WeightIcon, WeightTildeIcon, WheatIcon, WheatOffIcon, WholeWordIcon, WifiCogIcon, WifiHighIcon, WifiIcon, WifiLowIcon, WifiOffIcon, WifiPenIcon, WifiSyncIcon, WifiZeroIcon, WindArrowDownIcon, WindIcon, WineIcon, WineOffIcon, WorkflowIcon, WormIcon, WrenchIcon, WrenchOffIcon, XIcon, XLineTopIcon, ZapIcon, ZapOffIcon, ZodiacAquariusIcon, ZodiacAriesIcon, ZodiacCancerIcon, ZodiacCapricornIcon, ZodiacGeminiIcon, ZodiacLeoIcon, ZodiacLibraIcon, ZodiacOphiuchusIcon, ZodiacPiscesIcon, ZodiacSagittariusIcon, ZodiacScorpioIcon, ZodiacTaurusIcon, ZodiacVirgoIcon, ZoomInIcon, ZoomOutIcon, iconStyle, icons_exports as icons, useIconPropsContext };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-slider.js","names":[],"sources":["../../../../src/components/slider/use-slider.ts"],"sourcesContent":["\"use client\"\n\nimport type { KeyboardEvent } from \"react\"\nimport type {\n HTMLProps,\n HTMLRefAttributes,\n Orientation,\n PropGetter,\n RequiredPropGetter,\n} from \"../../core\"\nimport type { Point } from \"../../utils\"\nimport type { FieldProps } from \"../field\"\nimport { useCallback, useRef } from \"react\"\nimport { mergeProps } from \"../../core\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { usePanEvent } from \"../../hooks/use-pan-event\"\nimport { useI18n } from \"../../providers/i18n-provider\"\nimport {\n clampNumber,\n cx,\n dataAttr,\n handlerAll,\n isArray,\n isNumber,\n mergeRefs,\n percentToValue,\n roundNumberToStep,\n runKeyAction,\n valueToPercent,\n visuallyHiddenAttributes,\n} from \"../../utils\"\nimport { useFieldProps } from \"../field\"\n\nexport interface UseSliderProps<Y extends [number, number] | number = number>\n extends\n Omit<HTMLProps, \"defaultValue\" | \"onChange\" | \"ref\">,\n HTMLRefAttributes<\"input\">,\n FieldProps {\n /**\n * The minimum distance between slider thumbs.\n * Useful for preventing the thumbs from being too close together.\n *\n * @default 0\n */\n betweenThumbs?: number\n /**\n * The initial value of the slider.\n */\n defaultValue?: Y\n /**\n * The base `id` to use for the slider.\n */\n id?: string\n /**\n * The maximum allowed value of the slider. Cannot be less than min.\n *\n * @default 100\n */\n max?: number\n /**\n * The minimum allowed value of the slider. Cannot be greater than max.\n *\n * @default 0\n */\n min?: number\n /**\n * The name attribute of the hidden `input` field.\n * This is particularly useful in forms.\n */\n name?: string\n /**\n * The orientation of the slider.\n *\n * @default 'horizontal'\n */\n orientation?: Orientation\n /**\n * The step in which increments or decrements have to be made.\n *\n * @default 1\n */\n step?: number\n /**\n * The value of the slider.\n */\n value?: Y\n /**\n * This is used to format the value so that screen readers\n * can speak out a more human-friendly value.\n *\n * It is used to set the `aria-valuetext` property of the input.\n */\n getAriaValueText?: (value: number, index: number) => string | undefined\n /**\n * Function called whenever the slider value changes.\n */\n onChange?: (value: Y) => void\n /**\n * Function called when the user is done selecting a new value.\n */\n onChangeEnd?: (value: Y) => void\n /**\n * Function called when the user starts selecting a new value.\n */\n onChangeStart?: (value: Y) => void\n}\n\nexport const useSlider = <Y extends [number, number] | number = number>(\n props: UseSliderProps<Y> = {},\n) => {\n const {\n props: {\n id,\n ref,\n name,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-valuetext\": ariaValueText,\n betweenThumbs = 0,\n defaultValue = 0 as Y,\n disabled,\n getAriaValueText,\n max = 100,\n min = 0,\n orientation = \"horizontal\",\n readOnly,\n required,\n step = 1,\n value: valueProp,\n onChange: onChangeProp,\n onChangeEnd,\n onChangeStart,\n ...rest\n },\n ariaProps,\n dataProps,\n eventProps,\n } = useFieldProps(props)\n const [value, setValue] = useControllableState({\n defaultValue,\n value: valueProp,\n onChange: onChangeProp,\n })\n const { t } = useI18n(\"slider\")\n const currentIndex = useRef(0)\n const interactive = !(disabled || readOnly)\n const [_, getPanEventProps] = usePanEvent<HTMLDivElement>({\n onEnd: (_, point, rect) => {\n if (!interactive) return\n\n const panValue = getPanValue(point, rect)\n\n if (range) {\n const start = currentIndex.current === 0\n const oppositeIndex = currentIndex.current === 0 ? 1 : 0\n const oppositeValue = value[oppositeIndex]\n\n onChangeEnd?.(\n (start ? [panValue, oppositeValue] : [oppositeValue, panValue]) as Y,\n )\n } else {\n onChangeEnd?.(panValue as Y)\n }\n },\n onMove: (_, point, rect) => {\n if (!interactive) return\n\n const panValue = getPanValue(point, rect)\n\n onChange(currentIndex.current, panValue)\n },\n onStart: (_, point, rect) => {\n if (!interactive) return\n\n const panValue = getPanValue(point, rect)\n\n if (range) {\n const distances = value.map((value) => Math.abs(value - panValue))\n const closest = Math.min(...distances)\n const index = distances.indexOf(closest)\n\n currentIndex.current = index\n\n const start = index === 0\n const oppositeIndex = index === 0 ? 1 : 0\n const oppositeValue = value[oppositeIndex]\n\n onChangeStart?.(\n (start ? [panValue, oppositeValue] : [oppositeValue, panValue]) as Y,\n )\n } else {\n currentIndex.current = 0\n\n onChangeStart?.(value as Y)\n }\n\n onChange(currentIndex.current, panValue)\n },\n })\n const range = !isNumber(value)\n const percent = (\n range\n ? value.map((value) => valueToPercent(value, min, max))\n : valueToPercent(value, min, max)\n ) as Y extends number ? number : number[]\n const tenStep = (max - min) / 10\n const oneStep = step || (max - min) / 100\n\n if (max < min) console.warn(\"Do not assign a number less than 'min' to 'max'\")\n\n const getMinMax = useCallback(\n (index: number) => {\n const start = index === 0\n const oppositeIndex = index === 0 ? 1 : 0\n const oppositeValue = range ? value[oppositeIndex] : value\n\n return {\n max: range ? (start ? oppositeValue - betweenThumbs : max) : max,\n min: range ? (start ? min : oppositeValue + betweenThumbs) : min,\n }\n },\n [betweenThumbs, max, min, range, value],\n )\n\n const getPanValue = useCallback(\n ({ x, y }: Point, { bottom, height, left, width }: DOMRect) => {\n const diff = orientation === \"horizontal\" ? x - left : bottom - y\n const length = orientation === \"horizontal\" ? width : height\n const percent = diff / length\n\n let nextValue = percentToValue(percent, min, max)\n\n nextValue = parseFloat(roundNumberToStep(nextValue, min, step))\n nextValue = clampNumber(nextValue, min, max)\n\n return nextValue\n },\n [orientation, min, max, step],\n )\n\n const onChange = useCallback(\n (index: number, value: number) => {\n if (!interactive) return\n\n const { max, min } = getMinMax(index)\n\n value = parseFloat(roundNumberToStep(value, min, oneStep))\n value = clampNumber(value, min, max)\n\n setValue((prev) => {\n if (isArray(prev)) {\n const next = [...prev]\n\n next[index] = value\n\n return next as Y\n } else {\n return value as Y\n }\n })\n },\n [getMinMax, interactive, oneStep, setValue],\n )\n\n const stepUp = useCallback(\n (index: number, step = oneStep) =>\n range\n ? onChange(index, value[index]! + step)\n : onChange(index, value + step),\n [oneStep, range, onChange, value],\n )\n\n const stepDown = useCallback(\n (index: number, step = oneStep) =>\n range\n ? onChange(index, value[index]! - step)\n : onChange(index, value - step),\n [oneStep, range, onChange, value],\n )\n\n const onKeyDown = useCallback(\n (index: number) => (ev: KeyboardEvent<HTMLDivElement>) => {\n const { max, min } = getMinMax(index)\n\n runKeyAction(ev, {\n ArrowDown: () => stepDown(index),\n ArrowLeft: () => stepDown(index),\n ArrowRight: () => stepUp(index),\n ArrowUp: () => stepUp(index),\n End: () => onChange(index, max),\n Home: () => onChange(index, min),\n PageDown: () => stepDown(index, tenStep),\n PageUp: () => stepUp(index, tenStep),\n })\n },\n [getMinMax, onChange, stepDown, stepUp, tenStep],\n )\n\n const getRootProps: PropGetter = useCallback(\n (props = {}) => {\n const computedProps: HTMLProps = mergeProps(\n dataProps,\n { \"data-orientation\": orientation },\n rest,\n props,\n { onBlur: eventProps.onBlur, onFocus: eventProps.onFocus },\n )()\n\n computedProps.style ??= {}\n\n if (isArray(percent)) {\n computedProps.style[\"--range-start\"] = `${Math.abs(percent[0]!)}%`\n computedProps.style[\"--range-end\"] = `${Math.abs(percent[1]!)}%`\n } else {\n computedProps.style[\"--range-start\"] = \"0%\"\n computedProps.style[\"--range-end\"] = `${Math.abs(percent)}%`\n }\n\n return computedProps\n },\n [dataProps, eventProps, orientation, percent, rest],\n )\n\n const getInputProps: PropGetter<\"input\", { index?: number }> = useCallback(\n ({ index = 0, ...props } = {}) => ({\n ...visuallyHiddenAttributes,\n ...dataProps,\n ...ariaProps,\n id,\n type: \"hidden\",\n name,\n disabled,\n readOnly,\n required,\n value: range ? value[index]! : value,\n ...props,\n ref: index === 0 ? mergeRefs(props.ref, ref) : props.ref,\n }),\n [\n dataProps,\n ariaProps,\n id,\n name,\n disabled,\n readOnly,\n required,\n range,\n value,\n ref,\n ],\n )\n\n const getTrackProps: PropGetter = useCallback(\n (props) =>\n getPanEventProps({\n ...dataProps,\n \"data-orientation\": orientation,\n ...props,\n }),\n [dataProps, getPanEventProps, orientation],\n )\n\n const getRangeProps: PropGetter = useCallback(\n (props) => ({\n ...dataProps,\n \"data-orientation\": orientation,\n \"data-range\": dataAttr(range),\n ...props,\n }),\n [dataProps, orientation, range],\n )\n\n const getMarkProps: RequiredPropGetter<\"div\", { value: number }> =\n useCallback(\n ({ style, value: valueProp, ...props }) => {\n const between = range\n ? value[0] < valueProp && valueProp < value[1]\n : valueProp < value\n const percent = valueToPercent(valueProp, min, max)\n\n return {\n ...dataProps,\n \"aria-hidden\": true,\n \"data-between\": dataAttr(between),\n \"data-orientation\": orientation,\n role: \"presentation\",\n ...props,\n style: { ...style, \"--mark-position\": `${percent}%` },\n }\n },\n [dataProps, max, min, orientation, range, value],\n )\n\n const getThumbProps: PropGetter<\"div\", { index?: number }> = useCallback(\n ({ index = 0, ...rest } = {}) => {\n const { max, min } = getMinMax(index)\n\n const props: HTMLProps = {\n ...dataProps,\n ...ariaProps,\n \"aria-label\": t(\"Slider thumb\"),\n \"aria-orientation\": orientation,\n \"aria-valuemax\": max,\n \"aria-valuemin\": min,\n role: \"slider\",\n tabIndex: interactive ? 0 : -1,\n ...rest,\n \"aria-labelledby\": cx(rest[\"aria-labelledby\"], ariaLabelledBy),\n onKeyDown: handlerAll(rest.onKeyDown, onKeyDown(index)),\n }\n\n if (range) {\n const currentValue = value[index]!\n\n props[\"data-start\"] = dataAttr(index === 0)\n props[\"data-end\"] = dataAttr(index === 1)\n props[\"aria-valuenow\"] = currentValue\n props[\"aria-valuetext\"] =\n ariaValueText ??\n getAriaValueText?.(currentValue, index) ??\n currentValue.toString()\n } else {\n props[\"data-end\"] = dataAttr(index === 0)\n props[\"aria-valuenow\"] = value\n props[\"aria-valuetext\"] =\n ariaValueText ?? getAriaValueText?.(value, index) ?? value.toString()\n }\n\n return props\n },\n [\n t,\n ariaLabelledBy,\n ariaProps,\n ariaValueText,\n dataProps,\n getAriaValueText,\n getMinMax,\n interactive,\n onKeyDown,\n orientation,\n range,\n value,\n ],\n )\n\n return {\n percent,\n range,\n setValue,\n stepDown,\n stepUp,\n value,\n getInputProps,\n getMarkProps,\n getRangeProps,\n getRootProps,\n getThumbProps,\n getTrackProps,\n onChange,\n }\n}\n\nexport type UseSliderReturn = ReturnType<typeof useSlider>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"use-slider.js","names":[],"sources":["../../../../src/components/slider/use-slider.ts"],"sourcesContent":["\"use client\"\n\nimport type { KeyboardEvent } from \"react\"\nimport type {\n HTMLProps,\n HTMLRefAttributes,\n Orientation,\n PropGetter,\n RequiredPropGetter,\n} from \"../../core\"\nimport type { Point } from \"../../utils\"\nimport type { FieldProps } from \"../field\"\nimport { useCallback, useRef } from \"react\"\nimport { mergeProps } from \"../../core\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { usePanEvent } from \"../../hooks/use-pan-event\"\nimport { useI18n } from \"../../providers/i18n-provider\"\nimport {\n clampNumber,\n cx,\n dataAttr,\n handlerAll,\n isArray,\n isNumber,\n mergeRefs,\n percentToValue,\n roundNumberToStep,\n runKeyAction,\n valueToPercent,\n visuallyHiddenAttributes,\n} from \"../../utils\"\nimport { useFieldProps } from \"../field\"\n\nexport interface UseSliderProps<Y extends [number, number] | number = number>\n extends\n Omit<HTMLProps, \"defaultValue\" | \"onChange\" | \"ref\">,\n HTMLRefAttributes<\"input\">,\n FieldProps {\n /**\n * The minimum distance between slider thumbs.\n * Useful for preventing the thumbs from being too close together.\n *\n * @default 0\n */\n betweenThumbs?: number\n /**\n * The initial value of the slider.\n */\n defaultValue?: Y\n /**\n * The base `id` to use for the slider.\n */\n id?: string\n /**\n * The maximum allowed value of the slider. Cannot be less than min.\n *\n * @default 100\n */\n max?: number\n /**\n * The minimum allowed value of the slider. Cannot be greater than max.\n *\n * @default 0\n */\n min?: number\n /**\n * The name attribute of the hidden `input` field.\n * This is particularly useful in forms.\n */\n name?: string\n /**\n * The orientation of the slider.\n *\n * @default 'horizontal'\n */\n orientation?: Orientation\n /**\n * The step in which increments or decrements have to be made.\n *\n * @default 1\n */\n step?: number\n /**\n * The value of the slider.\n */\n value?: Y\n /**\n * This is used to format the value so that screen readers\n * can speak out a more human-friendly value.\n *\n * It is used to set the `aria-valuetext` property of the input.\n */\n getAriaValueText?: (value: number, index: number) => string | undefined\n /**\n * Function called whenever the slider value changes.\n */\n onChange?: (value: Y) => void\n /**\n * Function called when the user is done selecting a new value.\n */\n onChangeEnd?: (value: Y) => void\n /**\n * Function called when the user starts selecting a new value.\n */\n onChangeStart?: (value: Y) => void\n}\n\nexport const useSlider = <Y extends [number, number] | number = number>(\n props: UseSliderProps<Y> = {},\n) => {\n const {\n props: {\n id,\n ref,\n name,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-valuetext\": ariaValueText,\n betweenThumbs = 0,\n defaultValue = 0 as Y,\n disabled,\n getAriaValueText,\n max = 100,\n min = 0,\n orientation = \"horizontal\",\n readOnly,\n required,\n step = 1,\n value: valueProp,\n onChange: onChangeProp,\n onChangeEnd,\n onChangeStart,\n ...rest\n },\n ariaProps,\n dataProps,\n eventProps,\n } = useFieldProps(props)\n const [value, setValue] = useControllableState({\n defaultValue,\n value: valueProp,\n onChange: onChangeProp,\n })\n const { t } = useI18n(\"slider\")\n const currentIndex = useRef(0)\n const interactive = !(disabled || readOnly)\n const [_, getPanEventProps] = usePanEvent<HTMLDivElement>({\n onEnd: (_, point, rect) => {\n if (!interactive) return\n\n const panValue = getPanValue(point, rect)\n\n if (range) {\n const start = currentIndex.current === 0\n const oppositeIndex = currentIndex.current === 0 ? 1 : 0\n const oppositeValue = value[oppositeIndex]\n\n onChangeEnd?.(\n (start ? [panValue, oppositeValue] : [oppositeValue, panValue]) as Y,\n )\n } else {\n onChangeEnd?.(panValue as Y)\n }\n },\n onMove: (_, point, rect) => {\n if (!interactive) return\n\n const panValue = getPanValue(point, rect)\n\n onChange(currentIndex.current, panValue)\n },\n onStart: (_, point, rect) => {\n if (!interactive) return\n\n const panValue = getPanValue(point, rect)\n\n if (range) {\n const distances = value.map((value) => Math.abs(value - panValue))\n const closest = Math.min(...distances)\n const index = distances.indexOf(closest)\n\n currentIndex.current = index\n\n const start = index === 0\n const oppositeIndex = index === 0 ? 1 : 0\n const oppositeValue = value[oppositeIndex]\n\n onChangeStart?.(\n (start ? [panValue, oppositeValue] : [oppositeValue, panValue]) as Y,\n )\n } else {\n currentIndex.current = 0\n\n onChangeStart?.(value)\n }\n\n onChange(currentIndex.current, panValue)\n },\n })\n const range = !isNumber(value)\n const percent = (\n range\n ? value.map((value) => valueToPercent(value, min, max))\n : valueToPercent(value, min, max)\n ) as Y extends number ? number : number[]\n const tenStep = (max - min) / 10\n const oneStep = step || (max - min) / 100\n\n if (max < min) console.warn(\"Do not assign a number less than 'min' to 'max'\")\n\n const getMinMax = useCallback(\n (index: number) => {\n const start = index === 0\n const oppositeIndex = index === 0 ? 1 : 0\n const oppositeValue = range ? value[oppositeIndex] : value\n\n return {\n max: range ? (start ? oppositeValue - betweenThumbs : max) : max,\n min: range ? (start ? min : oppositeValue + betweenThumbs) : min,\n }\n },\n [betweenThumbs, max, min, range, value],\n )\n\n const getPanValue = useCallback(\n ({ x, y }: Point, { bottom, height, left, width }: DOMRect) => {\n const diff = orientation === \"horizontal\" ? x - left : bottom - y\n const length = orientation === \"horizontal\" ? width : height\n const percent = diff / length\n\n let nextValue = percentToValue(percent, min, max)\n\n nextValue = parseFloat(roundNumberToStep(nextValue, min, step))\n nextValue = clampNumber(nextValue, min, max)\n\n return nextValue\n },\n [orientation, min, max, step],\n )\n\n const onChange = useCallback(\n (index: number, value: number) => {\n if (!interactive) return\n\n const { max, min } = getMinMax(index)\n\n value = parseFloat(roundNumberToStep(value, min, oneStep))\n value = clampNumber(value, min, max)\n\n setValue((prev) => {\n if (isArray(prev)) {\n const next = [...prev]\n\n next[index] = value\n\n return next as Y\n } else {\n return value as Y\n }\n })\n },\n [getMinMax, interactive, oneStep, setValue],\n )\n\n const stepUp = useCallback(\n (index: number, step = oneStep) =>\n range\n ? onChange(index, value[index]! + step)\n : onChange(index, value + step),\n [oneStep, range, onChange, value],\n )\n\n const stepDown = useCallback(\n (index: number, step = oneStep) =>\n range\n ? onChange(index, value[index]! - step)\n : onChange(index, value - step),\n [oneStep, range, onChange, value],\n )\n\n const onKeyDown = useCallback(\n (index: number) => (ev: KeyboardEvent<HTMLDivElement>) => {\n const { max, min } = getMinMax(index)\n\n runKeyAction(ev, {\n ArrowDown: () => stepDown(index),\n ArrowLeft: () => stepDown(index),\n ArrowRight: () => stepUp(index),\n ArrowUp: () => stepUp(index),\n End: () => onChange(index, max),\n Home: () => onChange(index, min),\n PageDown: () => stepDown(index, tenStep),\n PageUp: () => stepUp(index, tenStep),\n })\n },\n [getMinMax, onChange, stepDown, stepUp, tenStep],\n )\n\n const getRootProps: PropGetter = useCallback(\n (props = {}) => {\n const computedProps: HTMLProps = mergeProps(\n dataProps,\n { \"data-orientation\": orientation },\n rest,\n props,\n { onBlur: eventProps.onBlur, onFocus: eventProps.onFocus },\n )()\n\n computedProps.style ??= {}\n\n if (isArray(percent)) {\n computedProps.style[\"--range-start\"] = `${Math.abs(percent[0]!)}%`\n computedProps.style[\"--range-end\"] = `${Math.abs(percent[1]!)}%`\n } else {\n computedProps.style[\"--range-start\"] = \"0%\"\n computedProps.style[\"--range-end\"] = `${Math.abs(percent)}%`\n }\n\n return computedProps\n },\n [dataProps, eventProps, orientation, percent, rest],\n )\n\n const getInputProps: PropGetter<\"input\", { index?: number }> = useCallback(\n ({ index = 0, ...props } = {}) => ({\n ...visuallyHiddenAttributes,\n ...dataProps,\n ...ariaProps,\n id,\n type: \"hidden\",\n name,\n disabled,\n readOnly,\n required,\n value: range ? value[index]! : value,\n ...props,\n ref: index === 0 ? mergeRefs(props.ref, ref) : props.ref,\n }),\n [\n dataProps,\n ariaProps,\n id,\n name,\n disabled,\n readOnly,\n required,\n range,\n value,\n ref,\n ],\n )\n\n const getTrackProps: PropGetter = useCallback(\n (props) =>\n getPanEventProps({\n ...dataProps,\n \"data-orientation\": orientation,\n ...props,\n }),\n [dataProps, getPanEventProps, orientation],\n )\n\n const getRangeProps: PropGetter = useCallback(\n (props) => ({\n ...dataProps,\n \"data-orientation\": orientation,\n \"data-range\": dataAttr(range),\n ...props,\n }),\n [dataProps, orientation, range],\n )\n\n const getMarkProps: RequiredPropGetter<\"div\", { value: number }> =\n useCallback(\n ({ style, value: valueProp, ...props }) => {\n const between = range\n ? value[0] < valueProp && valueProp < value[1]\n : valueProp < value\n const percent = valueToPercent(valueProp, min, max)\n\n return {\n ...dataProps,\n \"aria-hidden\": true,\n \"data-between\": dataAttr(between),\n \"data-orientation\": orientation,\n role: \"presentation\",\n ...props,\n style: { ...style, \"--mark-position\": `${percent}%` },\n }\n },\n [dataProps, max, min, orientation, range, value],\n )\n\n const getThumbProps: PropGetter<\"div\", { index?: number }> = useCallback(\n ({ index = 0, ...rest } = {}) => {\n const { max, min } = getMinMax(index)\n\n const props: HTMLProps = {\n ...dataProps,\n ...ariaProps,\n \"aria-label\": t(\"Slider thumb\"),\n \"aria-orientation\": orientation,\n \"aria-valuemax\": max,\n \"aria-valuemin\": min,\n role: \"slider\",\n tabIndex: interactive ? 0 : -1,\n ...rest,\n \"aria-labelledby\": cx(rest[\"aria-labelledby\"], ariaLabelledBy),\n onKeyDown: handlerAll(rest.onKeyDown, onKeyDown(index)),\n }\n\n if (range) {\n const currentValue = value[index]!\n\n props[\"data-start\"] = dataAttr(index === 0)\n props[\"data-end\"] = dataAttr(index === 1)\n props[\"aria-valuenow\"] = currentValue\n props[\"aria-valuetext\"] =\n ariaValueText ??\n getAriaValueText?.(currentValue, index) ??\n currentValue.toString()\n } else {\n props[\"data-end\"] = dataAttr(index === 0)\n props[\"aria-valuenow\"] = value\n props[\"aria-valuetext\"] =\n ariaValueText ?? getAriaValueText?.(value, index) ?? value.toString()\n }\n\n return props\n },\n [\n t,\n ariaLabelledBy,\n ariaProps,\n ariaValueText,\n dataProps,\n getAriaValueText,\n getMinMax,\n interactive,\n onKeyDown,\n orientation,\n range,\n value,\n ],\n )\n\n return {\n percent,\n range,\n setValue,\n stepDown,\n stepUp,\n value,\n getInputProps,\n getMarkProps,\n getRangeProps,\n getRootProps,\n getThumbProps,\n getTrackProps,\n onChange,\n }\n}\n\nexport type UseSliderReturn = ReturnType<typeof useSlider>\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-component.js","names":["createContext"],"sources":["../../../../src/core/components/create-component.tsx"],"sourcesContent":["\"use client\"\n\nimport type { FC, FunctionComponent } from \"react\"\nimport type { AnyString, Dict, Merge } from \"../../utils\"\nimport type { CSSObject, CSSSlotObject } from \"../css\"\nimport type {\n ComponentSlotStyle,\n ComponentStyle,\n StyledOptions,\n System,\n WithoutThemeProps,\n} from \"../system\"\nimport type {\n As,\n DOMElement,\n HTMLStyledProps,\n Component as OriginalComponent,\n} from \"./index.types\"\nimport { Fragment } from \"react\"\nimport {\n createContext,\n cx,\n isArray,\n isFunction,\n isObject,\n isString,\n runIfFn,\n toArray,\n toCamelCase,\n toPascalCase,\n} from \"../../utils\"\nimport { styled, useSystem } from \"../system\"\nimport { chainProps, mergeProps } from \"./props\"\nimport {\n getSlotClassName,\n mergeSlotCSS,\n useComponentSlotStyle,\n useComponentStyle,\n} from \"./use-component-style\"\nimport { getClassName, getDisplayName } from \"./utils\"\n\ntype AsWithFragment = \"fragment\" | As\ntype ClassName = ((system: System) => string) | string\n\ntype Component<\n Y extends AsWithFragment = AsWithFragment,\n M extends object = {},\n> = Y extends \"fragment\"\n ? FunctionComponent<M>\n : OriginalComponent<Exclude<Y, \"fragment\">, M>\n\nexport type ComponentSlotName<\n Y extends ComponentSlotStyle | ComponentStyle = ComponentSlotStyle,\n> = AnyString | Extract<keyof NonNullable<Y[\"base\"]>, string>\n\nexport type ComponentSlot<Y extends string> =\n | [Y, Y]\n | Y\n | { name: string; slot: [Y, Y] | Y }\n\nexport type InitialProps<Y extends Dict = Dict> =\n | ((props: Y) => any)\n | Partial<Y>\nexport type SuperProps<Y extends Dict = Dict> = ((props: Y) => any) | Y\n\nexport type SuperWithoutThemeProps<\n Y extends Dict = Dict,\n M extends Dict = Dict,\n D extends keyof Y = keyof Y,\n> = ((props: WithoutThemeProps<Y, M, D>) => any) | WithoutThemeProps<Y, M, D>\n\nexport interface UseComponentPropsOptions<\n Y extends number | string | symbol = string,\n> {\n className?: ClassName\n withContext?: boolean\n transferProps?: Y[]\n}\n\nexport interface ComponentOptions extends Omit<StyledOptions, \"transferProps\"> {\n className?: ClassName\n shouldStyleProps?: boolean\n}\n\ninterface classNameOptions<Y extends string = string> {\n className?: ClassName\n slot?: ComponentSlot<Y>\n}\n\nexport interface ComponentWithContextOptions<\n Y extends number | string | symbol = string,\n>\n extends ComponentOptions, UseComponentPropsOptions<Y> {}\n\nfunction createProxyComponent<\n Y extends AsWithFragment = \"div\",\n M extends Dict = Dict,\n>(el: FC<M> | Y, { shouldStyleProps, ...options }: ComponentOptions = {}) {\n options.shouldForwardProp ??= isFunction(el)\n shouldStyleProps ??= !isFunction(el)\n\n if (el === \"fragment\") el = Fragment\n\n if (shouldStyleProps || isString(el)) {\n const ProxyComponent = styled(el as As, options)\n\n ProxyComponent.displayName = \"ProxyComponent\"\n\n return ProxyComponent\n } else {\n el.displayName ??= \"ProxyComponent\"\n\n return el as FC<M>\n }\n}\n\nfunction withDisplayName<\n Y extends AsWithFragment = AsWithFragment,\n M extends object = {},\n>(Component: FC<M>, displayName: string) {\n Object.defineProperty(Component, \"name\", { value: displayName })\n Object.defineProperty(Component, \"displayName\", { value: displayName })\n\n return Component as Component<Y, M>\n}\n\nfunction getSlotKey<Y extends string>(slot?: ComponentSlot<Y>) {\n if (!slot) return \"unknown\"\n\n if (isArray(slot) || !isObject(slot))\n return toCamelCase(toArray(slot).join(\"-\"))\n else return toCamelCase(slot.name)\n}\n\nfunction getSlotName<Y extends string>(slot?: ComponentSlot<Y>) {\n if (!slot) return \"\"\n\n if (isArray(slot))\n return slot.map((value) => toPascalCase(value as string)).join(\"\")\n else if (isObject(slot)) return toPascalCase(slot.name)\n else return toPascalCase(slot as string)\n}\n\nexport function createComponent<\n Y extends object = {},\n M extends ComponentStyle = Dict,\n D extends Dict = Dict,\n>(name: string, style?: M) {\n const defaultClassName = style?.className\n const defaultDisplayName = getDisplayName(name)\n const [ComponentContext, useComponentContext] = createContext<D>({\n name: `${defaultDisplayName}Context`,\n })\n const [PropsContext, usePropsContext] = createContext<Partial<Y>>({\n name: `${defaultDisplayName}PropsContext`,\n strict: false,\n })\n\n function useClassName(name?: string, className?: ClassName) {\n const system = useSystem()\n\n className = runIfFn(className, system)\n className ??= getClassName(name, defaultClassName)(system)\n\n return className\n }\n\n function useComponentProps<H extends Y = Y, R extends keyof H = keyof H>(\n props: H,\n {\n className,\n withContext = true,\n transferProps,\n }: UseComponentPropsOptions<R> = {},\n ) {\n const system = useSystem()\n\n className = runIfFn(className, system)\n className ??= defaultClassName\n className ??= getClassName(name)(system)\n\n const contextProps = usePropsContext() ?? {}\n const mergedProps = withContext\n ? (mergeProps(contextProps, props)() as H)\n : props\n const [, rest] = useComponentStyle(mergedProps, {\n name,\n className,\n style,\n transferProps,\n })\n\n return rest\n }\n\n function component<D extends AsWithFragment = \"div\", H extends Dict = Y>(\n el: D | FC<H>,\n { name, className, ...options }: ComponentOptions = {},\n ) {\n const displayName = getDisplayName(name, defaultDisplayName)\n const ProxyComponent = createProxyComponent(el, options)\n\n return function (\n initialProps?: InitialProps<H>,\n ...superProps: SuperProps<H>[]\n ) {\n return withDisplayName<D, H>((props) => {\n className = useClassName(name, className)\n\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = chainProps<any>(...superProps)()(computedProps)\n\n return (\n <ProxyComponent\n {...mergedProps}\n className={cx(className, mergedProps.className)}\n />\n )\n }, displayName)\n }\n }\n\n function withContext<\n D extends AsWithFragment = \"div\",\n H extends Y = Y,\n R extends keyof H = keyof H,\n >(\n el: D | FC<WithoutThemeProps<H, M, R>>,\n {\n name,\n className,\n withContext,\n transferProps,\n ...options\n }: ComponentWithContextOptions<R> = {},\n ) {\n const displayName = getDisplayName(name, defaultDisplayName)\n const ProxyComponent = createProxyComponent(el, options)\n\n return function (\n initialProps?: InitialProps<H>,\n ...superProps: SuperWithoutThemeProps<H, M, R>[]\n ) {\n return withDisplayName<D, H>((props) => {\n className = useClassName(name, className)\n\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = useComponentProps(computedProps, {\n className,\n withContext,\n transferProps,\n })\n const rest = chainProps<any>(...toArray(superProps))()(mergedProps)\n\n return <ProxyComponent {...rest} />\n }, displayName)\n }\n }\n\n return {\n component,\n ComponentContext,\n PropsContext,\n useComponentContext,\n usePropsContext,\n withContext,\n useComponentProps,\n }\n}\n\nexport function createSlotComponent<\n Y extends object = {},\n M extends ComponentSlotStyle = Dict,\n D extends Dict = Dict,\n>(rootName: string, style?: M) {\n const rootClassName = style?.className\n const rootDisplayName = getDisplayName(rootName)\n const classNameMap = new Map<string, classNameOptions>()\n const [StyleContext, useStyleContext] = createContext<\n CSSSlotObject<ComponentSlotName<M>>\n >({\n name: `${rootDisplayName}StyleContext`,\n })\n const [ComponentContext, useComponentContext] = createContext<D>({\n name: `${rootDisplayName}Context`,\n })\n const [PropsContext, usePropsContext] = createContext<Partial<Y>>({\n name: `${rootDisplayName}PropsContext`,\n strict: false,\n })\n\n function useClassName(\n slot?: ComponentSlot<ComponentSlotName<M>>,\n className?: ClassName,\n ) {\n const system = useSystem()\n\n className = runIfFn(className, system)\n className ??= getSlotClassName(\n rootClassName ?? getClassName(rootName)(system),\n slot,\n )\n\n return className\n }\n\n function useClassNames() {\n const system = useSystem()\n const entries = classNameMap.entries().map(([key, { className, slot }]) => {\n className = runIfFn(className, system)\n className ??= getSlotClassName(\n rootClassName ?? getClassName(rootName)(system),\n slot,\n )\n\n return [key, className]\n })\n\n return Object.fromEntries(\n entries.filter(([_, className]) => className),\n ) as { [key: string]: string }\n }\n\n function useRootComponentProps<\n Y extends Dict = {},\n R extends keyof Y = keyof Y,\n >(\n props: Y,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n {\n className,\n withContext = true,\n transferProps,\n }: UseComponentPropsOptions<R> = {},\n ): [\n CSSSlotObject,\n Merge<WithoutThemeProps<Y, M, R>, { css?: CSSObject | CSSObject[] }>,\n ] {\n className = useClassName(slot, className)\n\n const contextProps = usePropsContext() ?? {}\n const mergedProps = withContext\n ? (mergeProps(contextProps, props)() as Y)\n : props\n const [css, rest] = useComponentSlotStyle(mergedProps, {\n name: rootName,\n className,\n style,\n slot,\n transferProps,\n })\n\n return [css, rest]\n }\n\n function useSlotComponentProps<Y extends Dict = {}>(\n props: Y,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n { className }: Omit<UseComponentPropsOptions, \"transferProps\"> = {},\n ) {\n className = useClassName(slot, className)\n\n const style = useStyleContext()\n\n return {\n ...props,\n className: cx(className, props.className),\n css: mergeSlotCSS(slot, style, props.css),\n }\n }\n\n function component<H extends AsWithFragment = \"div\", R extends Dict = Dict>(\n el: FC<R> | H,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n { name, className, ...options }: ComponentOptions = {},\n ) {\n const ProxyComponent = createProxyComponent(el, options)\n const slotKey = getSlotKey(slot)\n const slotName = getSlotName(slot)\n const displayName = getDisplayName(name, `${rootDisplayName}${slotName}`)\n\n classNameMap.set(slotKey, { className, slot })\n\n return function (\n initialProps?: InitialProps<R>,\n ...superProps: SuperProps<R>[]\n ) {\n return withDisplayName<H, R>((props) => {\n className = useClassName(slot, className)\n\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = chainProps(...superProps)()(computedProps)\n\n return (\n <ProxyComponent\n {...mergedProps}\n className={cx(className, mergedProps.className)}\n />\n )\n }, displayName)\n }\n }\n\n function withProvider<\n H extends AsWithFragment = \"div\",\n R extends Y = Y,\n T extends keyof R = keyof R,\n >(\n el: FC<WithoutThemeProps<R, M, T>> | H,\n slot: ComponentSlot<ComponentSlotName<M>> = \"root\" as ComponentSlot<\n ComponentSlotName<M>\n >,\n {\n name,\n className,\n withContext,\n transferProps,\n ...options\n }: ComponentWithContextOptions<T> = {},\n ) {\n const ProxyComponent = createProxyComponent(el, options)\n const slotKey = getSlotKey(slot)\n const slotName = getSlotName(slot)\n const displayName = getDisplayName(name, `${rootDisplayName}${slotName}`)\n\n classNameMap.set(slotKey, { className, slot })\n\n return function (\n initialProps?: InitialProps<R>,\n ...superProps: SuperWithoutThemeProps<R, M, T>[]\n ) {\n return withDisplayName<H, R>((props) => {\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const [context, mergedProps] = useRootComponentProps(\n computedProps,\n slot,\n {\n className,\n withContext,\n transferProps,\n },\n )\n const rest = chainProps<any>(...superProps)()(mergedProps)\n\n return (\n <StyleContext value={context}>\n <ProxyComponent {...rest} />\n </StyleContext>\n )\n }, displayName)\n }\n }\n\n function withContext<\n H extends AsWithFragment = \"div\",\n R extends Dict = H extends DOMElement ? HTMLStyledProps<H> : Dict,\n >(\n el: FC<R> | H,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n {\n name,\n className,\n withContext,\n ...options\n }: Omit<ComponentWithContextOptions, \"transferProps\"> = {},\n ) {\n const ProxyComponent = createProxyComponent(el, options)\n const slotKey = getSlotKey(slot)\n const slotName = getSlotName(slot)\n const displayName = getDisplayName(name, `${rootDisplayName}${slotName}`)\n\n classNameMap.set(slotKey, { className, slot })\n\n return function (\n initialProps?: InitialProps<R>,\n ...superProps: SuperProps<R>[]\n ) {\n return withDisplayName<H, R>((props) => {\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = useSlotComponentProps(computedProps, slot, {\n className,\n withContext,\n })\n const rest = chainProps(...superProps)()(mergedProps)\n\n return <ProxyComponent {...rest} />\n }, displayName)\n }\n }\n\n return {\n component,\n ComponentContext,\n PropsContext,\n StyleContext,\n useClassNames,\n useComponentContext,\n usePropsContext,\n useStyleContext,\n withContext,\n withProvider,\n useRootComponentProps,\n useSlotComponentProps,\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create-component.js","names":["createContext"],"sources":["../../../../src/core/components/create-component.tsx"],"sourcesContent":["\"use client\"\n\nimport type { FC, FunctionComponent } from \"react\"\nimport type { AnyString, Dict, Merge } from \"../../utils\"\nimport type { CSSObject, CSSSlotObject } from \"../css\"\nimport type {\n ComponentSlotStyle,\n ComponentStyle,\n StyledOptions,\n System,\n WithoutThemeProps,\n} from \"../system\"\nimport type {\n As,\n DOMElement,\n HTMLStyledProps,\n Component as OriginalComponent,\n} from \"./index.types\"\nimport { Fragment } from \"react\"\nimport {\n createContext,\n cx,\n isArray,\n isFunction,\n isObject,\n isString,\n runIfFn,\n toArray,\n toCamelCase,\n toPascalCase,\n} from \"../../utils\"\nimport { styled, useSystem } from \"../system\"\nimport { chainProps, mergeProps } from \"./props\"\nimport {\n getSlotClassName,\n mergeSlotCSS,\n useComponentSlotStyle,\n useComponentStyle,\n} from \"./use-component-style\"\nimport { getClassName, getDisplayName } from \"./utils\"\n\ntype AsWithFragment = \"fragment\" | As\ntype ClassName = ((system: System) => string) | string\n\ntype Component<\n Y extends AsWithFragment = AsWithFragment,\n M extends object = {},\n> = Y extends \"fragment\"\n ? FunctionComponent<M>\n : OriginalComponent<Exclude<Y, \"fragment\">, M>\n\nexport type ComponentSlotName<\n Y extends ComponentSlotStyle | ComponentStyle = ComponentSlotStyle,\n> = AnyString | Extract<keyof NonNullable<Y[\"base\"]>, string>\n\nexport type ComponentSlot<Y extends string> =\n | [Y, Y]\n | Y\n | { name: string; slot: [Y, Y] | Y }\n\nexport type InitialProps<Y extends Dict = Dict> =\n | ((props: Y) => any)\n | Partial<Y>\nexport type SuperProps<Y extends Dict = Dict> = ((props: Y) => any) | Y\n\nexport type SuperWithoutThemeProps<\n Y extends Dict = Dict,\n M extends Dict = Dict,\n D extends keyof Y = keyof Y,\n> = ((props: WithoutThemeProps<Y, M, D>) => any) | WithoutThemeProps<Y, M, D>\n\nexport interface UseComponentPropsOptions<\n Y extends number | string | symbol = string,\n> {\n className?: ClassName\n withContext?: boolean\n transferProps?: Y[]\n}\n\nexport interface ComponentOptions extends Omit<StyledOptions, \"transferProps\"> {\n className?: ClassName\n shouldStyleProps?: boolean\n}\n\ninterface classNameOptions<Y extends string = string> {\n className?: ClassName\n slot?: ComponentSlot<Y>\n}\n\nexport interface ComponentWithContextOptions<\n Y extends number | string | symbol = string,\n>\n extends ComponentOptions, UseComponentPropsOptions<Y> {}\n\nfunction createProxyComponent<\n Y extends AsWithFragment = \"div\",\n M extends Dict = Dict,\n>(el: FC<M> | Y, { shouldStyleProps, ...options }: ComponentOptions = {}) {\n options.shouldForwardProp ??= isFunction(el)\n shouldStyleProps ??= !isFunction(el)\n\n if (el === \"fragment\") el = Fragment\n\n if (shouldStyleProps || isString(el)) {\n const ProxyComponent = styled(el as As, options)\n\n ProxyComponent.displayName = \"ProxyComponent\"\n\n return ProxyComponent\n } else {\n el.displayName ??= \"ProxyComponent\"\n\n return el as FC<M>\n }\n}\n\nfunction withDisplayName<\n Y extends AsWithFragment = AsWithFragment,\n M extends object = {},\n>(Component: FC<M>, displayName: string) {\n Object.defineProperty(Component, \"name\", { value: displayName })\n Object.defineProperty(Component, \"displayName\", { value: displayName })\n\n return Component as Component<Y, M>\n}\n\nfunction getSlotKey<Y extends string>(slot?: ComponentSlot<Y>) {\n if (!slot) return \"unknown\"\n\n if (isArray(slot) || !isObject(slot))\n return toCamelCase(toArray(slot).join(\"-\"))\n else return toCamelCase(slot.name)\n}\n\nfunction getSlotName<Y extends string>(slot?: ComponentSlot<Y>) {\n if (!slot) return \"\"\n\n if (isArray(slot))\n return slot.map((value) => toPascalCase(value as string)).join(\"\")\n else if (isObject(slot)) return toPascalCase(slot.name)\n else return toPascalCase(slot)\n}\n\nexport function createComponent<\n Y extends object = {},\n M extends ComponentStyle = Dict,\n D extends Dict = Dict,\n>(name: string, style?: M) {\n const defaultClassName = style?.className\n const defaultDisplayName = getDisplayName(name)\n const [ComponentContext, useComponentContext] = createContext<D>({\n name: `${defaultDisplayName}Context`,\n })\n const [PropsContext, usePropsContext] = createContext<Partial<Y>>({\n name: `${defaultDisplayName}PropsContext`,\n strict: false,\n })\n\n function useClassName(name?: string, className?: ClassName) {\n const system = useSystem()\n\n className = runIfFn(className, system)\n className ??= getClassName(name, defaultClassName)(system)\n\n return className\n }\n\n function useComponentProps<H extends Y = Y, R extends keyof H = keyof H>(\n props: H,\n {\n className,\n withContext = true,\n transferProps,\n }: UseComponentPropsOptions<R> = {},\n ) {\n const system = useSystem()\n\n className = runIfFn(className, system)\n className ??= defaultClassName\n className ??= getClassName(name)(system)\n\n const contextProps = usePropsContext() ?? {}\n const mergedProps = withContext\n ? (mergeProps(contextProps, props)() as H)\n : props\n const [, rest] = useComponentStyle(mergedProps, {\n name,\n className,\n style,\n transferProps,\n })\n\n return rest\n }\n\n function component<D extends AsWithFragment = \"div\", H extends Dict = Y>(\n el: D | FC<H>,\n { name, className, ...options }: ComponentOptions = {},\n ) {\n const displayName = getDisplayName(name, defaultDisplayName)\n const ProxyComponent = createProxyComponent(el, options)\n\n return function (\n initialProps?: InitialProps<H>,\n ...superProps: SuperProps<H>[]\n ) {\n return withDisplayName<D, H>((props) => {\n className = useClassName(name, className)\n\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = chainProps<any>(...superProps)()(computedProps)\n\n return (\n <ProxyComponent\n {...mergedProps}\n className={cx(className, mergedProps.className)}\n />\n )\n }, displayName)\n }\n }\n\n function withContext<\n D extends AsWithFragment = \"div\",\n H extends Y = Y,\n R extends keyof H = keyof H,\n >(\n el: D | FC<WithoutThemeProps<H, M, R>>,\n {\n name,\n className,\n withContext,\n transferProps,\n ...options\n }: ComponentWithContextOptions<R> = {},\n ) {\n const displayName = getDisplayName(name, defaultDisplayName)\n const ProxyComponent = createProxyComponent(el, options)\n\n return function (\n initialProps?: InitialProps<H>,\n ...superProps: SuperWithoutThemeProps<H, M, R>[]\n ) {\n return withDisplayName<D, H>((props) => {\n className = useClassName(name, className)\n\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = useComponentProps(computedProps, {\n className,\n withContext,\n transferProps,\n })\n const rest = chainProps<any>(...toArray(superProps))()(mergedProps)\n\n return <ProxyComponent {...rest} />\n }, displayName)\n }\n }\n\n return {\n component,\n ComponentContext,\n PropsContext,\n useComponentContext,\n usePropsContext,\n withContext,\n useComponentProps,\n }\n}\n\nexport function createSlotComponent<\n Y extends object = {},\n M extends ComponentSlotStyle = Dict,\n D extends Dict = Dict,\n>(rootName: string, style?: M) {\n const rootClassName = style?.className\n const rootDisplayName = getDisplayName(rootName)\n const classNameMap = new Map<string, classNameOptions>()\n const [StyleContext, useStyleContext] = createContext<\n CSSSlotObject<ComponentSlotName<M>>\n >({\n name: `${rootDisplayName}StyleContext`,\n })\n const [ComponentContext, useComponentContext] = createContext<D>({\n name: `${rootDisplayName}Context`,\n })\n const [PropsContext, usePropsContext] = createContext<Partial<Y>>({\n name: `${rootDisplayName}PropsContext`,\n strict: false,\n })\n\n function useClassName(\n slot?: ComponentSlot<ComponentSlotName<M>>,\n className?: ClassName,\n ) {\n const system = useSystem()\n\n className = runIfFn(className, system)\n className ??= getSlotClassName(\n rootClassName ?? getClassName(rootName)(system),\n slot,\n )\n\n return className\n }\n\n function useClassNames() {\n const system = useSystem()\n const entries = classNameMap.entries().map(([key, { className, slot }]) => {\n className = runIfFn(className, system)\n className ??= getSlotClassName(\n rootClassName ?? getClassName(rootName)(system),\n slot,\n )\n\n return [key, className]\n })\n\n return Object.fromEntries(\n entries.filter(([_, className]) => className),\n ) as { [key: string]: string }\n }\n\n function useRootComponentProps<\n Y extends Dict = {},\n R extends keyof Y = keyof Y,\n >(\n props: Y,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n {\n className,\n withContext = true,\n transferProps,\n }: UseComponentPropsOptions<R> = {},\n ): [\n CSSSlotObject,\n Merge<WithoutThemeProps<Y, M, R>, { css?: CSSObject | CSSObject[] }>,\n ] {\n className = useClassName(slot, className)\n\n const contextProps = usePropsContext() ?? {}\n const mergedProps = withContext\n ? (mergeProps(contextProps, props)() as Y)\n : props\n const [css, rest] = useComponentSlotStyle(mergedProps, {\n name: rootName,\n className,\n style,\n slot,\n transferProps,\n })\n\n return [css, rest]\n }\n\n function useSlotComponentProps<Y extends Dict = {}>(\n props: Y,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n { className }: Omit<UseComponentPropsOptions, \"transferProps\"> = {},\n ) {\n className = useClassName(slot, className)\n\n const style = useStyleContext()\n\n return {\n ...props,\n className: cx(className, props.className),\n css: mergeSlotCSS(slot, style, props.css),\n }\n }\n\n function component<H extends AsWithFragment = \"div\", R extends Dict = Dict>(\n el: FC<R> | H,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n { name, className, ...options }: ComponentOptions = {},\n ) {\n const ProxyComponent = createProxyComponent(el, options)\n const slotKey = getSlotKey(slot)\n const slotName = getSlotName(slot)\n const displayName = getDisplayName(name, `${rootDisplayName}${slotName}`)\n\n classNameMap.set(slotKey, { className, slot })\n\n return function (\n initialProps?: InitialProps<R>,\n ...superProps: SuperProps<R>[]\n ) {\n return withDisplayName<H, R>((props) => {\n className = useClassName(slot, className)\n\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = chainProps(...superProps)()(computedProps)\n\n return (\n <ProxyComponent\n {...mergedProps}\n className={cx(className, mergedProps.className)}\n />\n )\n }, displayName)\n }\n }\n\n function withProvider<\n H extends AsWithFragment = \"div\",\n R extends Y = Y,\n T extends keyof R = keyof R,\n >(\n el: FC<WithoutThemeProps<R, M, T>> | H,\n slot: ComponentSlot<ComponentSlotName<M>> = \"root\",\n {\n name,\n className,\n withContext,\n transferProps,\n ...options\n }: ComponentWithContextOptions<T> = {},\n ) {\n const ProxyComponent = createProxyComponent(el, options)\n const slotKey = getSlotKey(slot)\n const slotName = getSlotName(slot)\n const displayName = getDisplayName(name, `${rootDisplayName}${slotName}`)\n\n classNameMap.set(slotKey, { className, slot })\n\n return function (\n initialProps?: InitialProps<R>,\n ...superProps: SuperWithoutThemeProps<R, M, T>[]\n ) {\n return withDisplayName<H, R>((props) => {\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const [context, mergedProps] = useRootComponentProps(\n computedProps,\n slot,\n {\n className,\n withContext,\n transferProps,\n },\n )\n const rest = chainProps<any>(...superProps)()(mergedProps)\n\n return (\n <StyleContext value={context}>\n <ProxyComponent {...rest} />\n </StyleContext>\n )\n }, displayName)\n }\n }\n\n function withContext<\n H extends AsWithFragment = \"div\",\n R extends Dict = H extends DOMElement ? HTMLStyledProps<H> : Dict,\n >(\n el: FC<R> | H,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n {\n name,\n className,\n withContext,\n ...options\n }: Omit<ComponentWithContextOptions, \"transferProps\"> = {},\n ) {\n const ProxyComponent = createProxyComponent(el, options)\n const slotKey = getSlotKey(slot)\n const slotName = getSlotName(slot)\n const displayName = getDisplayName(name, `${rootDisplayName}${slotName}`)\n\n classNameMap.set(slotKey, { className, slot })\n\n return function (\n initialProps?: InitialProps<R>,\n ...superProps: SuperProps<R>[]\n ) {\n return withDisplayName<H, R>((props) => {\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = useSlotComponentProps(computedProps, slot, {\n className,\n withContext,\n })\n const rest = chainProps(...superProps)()(mergedProps)\n\n return <ProxyComponent {...rest} />\n }, displayName)\n }\n }\n\n return {\n component,\n ComponentContext,\n PropsContext,\n StyleContext,\n useClassNames,\n useComponentContext,\n usePropsContext,\n useStyleContext,\n withContext,\n withProvider,\n useRootComponentProps,\n useSlotComponentProps,\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-component-style.js","names":[],"sources":["../../../../src/core/components/use-component-style.ts"],"sourcesContent":["\"use client\"\n\nimport type { Dict } from \"../../utils\"\nimport type {\n ColorModeArray,\n CSSModifierObject,\n CSSObject,\n CSSPropObject,\n CSSSlotObject,\n ResponsiveWithConditionObject,\n StyleValueWithCondition,\n} from \"../css\"\nimport type {\n Breakpoints,\n ComponentCompound,\n ComponentSlotStyle,\n ComponentStyle,\n Layers,\n LayerScheme,\n ThemeProps,\n WithoutThemeProps,\n} from \"../system\"\nimport type { ComponentSlot, ComponentSlotName } from \"./create-component\"\nimport type { HTMLStyledProps } from \"./index.types\"\nimport { useRef } from \"react\"\nimport {\n bem,\n cx,\n filterEmpty,\n isArray,\n isBooleanish,\n isEmptyObject,\n isObject,\n isRegExp,\n isUndefined,\n merge,\n omitObject,\n toArray,\n toKebabCase,\n} from \"../../utils\"\nimport { conditions, getCondition, mergeCSS } from \"../css\"\nimport { useColorSchemeContext, useSystem } from \"../system\"\nimport { isEqualProps } from \"./props\"\n\ntype Style<Y extends boolean = false> = Y extends false\n ? CSSObject\n : CSSSlotObject\n\ntype MergedStyle = CSSModifierObject | CSSModifierObject<CSSSlotObject>\n\ninterface GetStyleOptions\n extends Partial<Breakpoints>, Pick<Partial<Layers>, \"wrap\"> {\n hasSlot?: boolean\n modifier?: string\n name?: string\n selectors?: (string | undefined)[]\n value?: string\n}\n\nfunction getSelectorStyle<Y extends Dict = Dict>(\n selectors: (string | undefined)[],\n style: Y,\n) {\n return selectors.reduceRight<Dict>(\n (prev, key) => (key ? { [key]: prev } : prev),\n style,\n ) as Y\n}\n\nfunction getStyle<Y extends boolean = false>(\n style: CSSObject | CSSSlotObject | undefined,\n) {\n return function ({\n name: rootName,\n hasSlot = false,\n modifier,\n selectors = [],\n value,\n }: GetStyleOptions): Style<Y> | undefined {\n if (!style || isEmptyObject(style)) return\n\n if (hasSlot) {\n return Object.fromEntries(\n Object.entries(style as CSSSlotObject).map(([name, style]) => {\n if (selectors.length) {\n if (value && modifier)\n style = {\n [`--${rootName}-${name}-${modifier}`]: `\"${value}\"`,\n ...style,\n } as CSSObject\n\n return [name, getSelectorStyle(selectors, style ?? {})]\n } else {\n if (value && modifier)\n style = {\n [`--${rootName}-${name}-${modifier}`]: `\"${value}\"`,\n ...style,\n } as CSSObject\n\n return [name, style]\n }\n }),\n ) as Style<Y>\n } else if (selectors.length) {\n if (value && modifier)\n style = {\n [`--${rootName}-${modifier}`]: `\"${value}\"`,\n ...style,\n } as CSSObject\n\n return getSelectorStyle(selectors, style) as Style<Y>\n } else {\n if (value && modifier)\n style = {\n [`--${rootName}-${modifier}`]: `\"${value}\"`,\n ...style,\n } as CSSObject\n\n return style as Style<Y>\n }\n }\n}\n\nfunction getColorModeStyle<Y extends boolean = false>(\n value: ColorModeArray<string>,\n mergedStyle: MergedStyle,\n) {\n return function ({ selectors = [], ...rest }: GetStyleOptions) {\n const [lightValue, darkValue] = value\n\n const lightStyle = getModifierStyle<Y>(\n lightValue,\n mergedStyle,\n )({ ...rest, selectors })\n\n const darkStyle = getModifierStyle<Y>(\n darkValue,\n mergedStyle,\n )({ ...rest, selectors: [...selectors, conditions._dark] })\n\n return merge(lightStyle, darkStyle)\n }\n}\n\nfunction getConditionStyle<Y extends boolean = false>(\n value: ResponsiveWithConditionObject<string>,\n mergedStyle: MergedStyle,\n) {\n return function (options: GetStyleOptions) {\n const { isResponsiveKey, queries = [], selectors = [] } = options\n const conditionalKeys = Object.keys(value).filter(\n (key) => !isResponsiveKey?.(key),\n )\n\n const breakpointObj = queries.reduce<Style<Y>>(\n (prev, { breakpoint, query }) => {\n if (!isUndefined(value[breakpoint]))\n prev = merge(\n prev,\n getModifierStyle<Y>(\n value[breakpoint],\n mergedStyle,\n )({ ...options, selectors: [...selectors, query] }),\n )\n\n return prev\n },\n {},\n )\n\n const additionalObj = conditionalKeys.reduce<Style<Y>>((prev, key) => {\n prev = merge(\n prev,\n getModifierStyle<Y>(\n value[key as keyof typeof value],\n mergedStyle,\n )({ ...options, selectors: [...selectors, getCondition(key)] }),\n )\n\n return prev\n }, {})\n\n return merge(breakpointObj, additionalObj)\n }\n}\n\nfunction getModifierStyle<Y extends boolean = false>(\n value: StyleValueWithCondition<string> | undefined,\n mergedStyle: MergedStyle,\n) {\n return function (options: GetStyleOptions): Style<Y> | undefined {\n let style: Style<Y> | undefined = undefined\n\n if (!value) return style\n\n if (isArray(value))\n style = getColorModeStyle<Y>(value, mergedStyle)(options)\n else if (isObject(value))\n style = getConditionStyle<Y>(value, mergedStyle)(options)\n else style = getStyle<Y>(mergedStyle[value])({ ...options, value })\n\n return style\n }\n}\n\nfunction getPropStyle<Y extends boolean = false>(\n props: Dict,\n propVariants: CSSPropObject | CSSPropObject<CSSSlotObject>,\n style: Style<Y> | undefined = {},\n) {\n const variants = Object.entries(propVariants)\n\n return function (options: GetStyleOptions) {\n if (!variants.length) return style\n\n variants.forEach(([modifier, variants]) => {\n const value = props[modifier as keyof typeof props]\n\n if (value) {\n const propStyle = getModifierStyle<Y>(\n value,\n variants,\n )({ modifier, value, ...options })\n\n if (propStyle)\n style = merge(style, wrapStyle<Y>(\"props\", propStyle)(options))\n } else {\n const boolean = Object.keys(variants).every((key) => isBooleanish(key))\n\n if (boolean) {\n const propStyle = getModifierStyle<Y>(\n \"false\",\n variants,\n )({ modifier, value: \"true\", ...options })\n\n if (propStyle)\n style = merge(style, wrapStyle<Y>(\"props\", propStyle)(options))\n }\n }\n })\n\n return style\n }\n}\n\nfunction getCompoundStyle<Y extends boolean = false>(\n props: Dict,\n compounds: ComponentCompound<CSSSlotObject>[] | ComponentCompound[],\n style: Style<Y> | undefined = {},\n) {\n return function (options: GetStyleOptions) {\n if (!compounds.length) return style\n\n compounds.forEach(({ css, layer, ...rest }) => {\n const conditions = Object.entries(rest)\n\n if (!conditions.length) return\n\n const apply = conditions.every(([key, value]) =>\n isArray(value)\n ? value.includes(props[key])\n : isRegExp(value)\n ? value.test(props[key])\n : props[key] === value,\n )\n\n if (!apply) return\n\n style = merge(\n style,\n wrapStyle<Y>(layer ?? \"compounds\", css as Style<Y>)(options),\n )\n })\n\n return style\n }\n}\n\nexport function getSlotClassName<Y extends string>(\n className?: string,\n slot?: ComponentSlot<Y>,\n) {\n if (!className || !slot) return className\n\n if (isArray(slot)) {\n const [element, modifier] = slot.map((value) =>\n toKebabCase(value as string),\n )\n\n return cx(bem(className, element), bem(className, element, modifier))\n } else if (isObject(slot)) {\n const slotArray = toArray(slot.slot)\n const [element, modifier] = slotArray.map((value) =>\n toKebabCase(value as string),\n )\n\n return cx(bem(className, element), bem(className, element, modifier))\n } else {\n return bem(className, toKebabCase(slot as string))\n }\n}\n\nexport function mergeSlotCSS<Y extends string>(\n slot?: ComponentSlot<Y>,\n style?: CSSSlotObject<Y>,\n css?: CSSObject | CSSObject[],\n): CSSObject | CSSObject[] | undefined {\n if (!style || !slot) return css\n\n const temp: (CSSObject | undefined)[] = []\n\n if (isArray(slot)) temp.push(...slot.map((slot) => style[slot]))\n else if (isObject(slot))\n if (isArray(slot.slot)) temp.push(...slot.slot.map((slot) => style[slot]))\n else temp.push(style[slot.slot])\n else temp.push(style[slot])\n\n if (css) temp.push(...toArray(css))\n\n const result = filterEmpty(temp)\n\n return result.length ? result : undefined\n}\n\nfunction omitThemeProps<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n>(props: Y, omitKeys: string[] = [], transferProps?: D[]) {\n if (transferProps)\n omitKeys = omitKeys.filter((key) => !transferProps.includes(key as D))\n\n return omitObject(props, omitKeys) as unknown as WithoutThemeProps<Y, M, D>\n}\n\nfunction wrapStyle<Y extends boolean = false>(\n layer: LayerScheme,\n style?: Style<Y>,\n) {\n return function ({ hasSlot, wrap }: GetStyleOptions) {\n if (hasSlot) {\n if (!style) return undefined\n\n return Object.fromEntries(\n Object.entries(style).map(([slot, style]) => [\n slot,\n wrap?.(layer, style) ?? style,\n ]),\n )\n } else {\n return wrap?.(layer, style) ?? style\n }\n }\n}\n\nfunction getHasAtRuleStyle(css?: CSSObject | CSSObject[]) {\n return (getAtRule?: Layers[\"getAtRule\"]) => {\n let hasVariant = false\n let hasSize = false\n\n if (!css || !getAtRule) return { hasSize, hasVariant }\n\n const variantAtRule = getAtRule(\"variant\")\n const sizeAtRule = getAtRule(\"size\")\n\n css = toArray(css)\n\n css.forEach((css) => {\n const keys = Object.keys(css)\n\n if (keys.includes(variantAtRule)) hasVariant = true\n if (keys.includes(sizeAtRule)) hasSize = true\n })\n\n return { hasSize, hasVariant }\n }\n}\n\nfunction mergeDefaultProps<\n Y extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n M extends Dict = Dict,\n>(defaultProps: Y[\"defaultProps\"], props: M) {\n return Object.entries(defaultProps ?? {}).reduce<Dict>(\n (prev, [key, value]) => {\n prev[key] ??= value\n\n return prev\n },\n props,\n ) as M\n}\n\ninterface UseStyleOptions<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n H extends boolean = false,\n> {\n className?: string\n hasSlot?: H\n name?: string\n slot?: ComponentSlot<ComponentSlotName<M>>\n style?: M\n transferProps?: D[]\n}\n\nfunction useStyle<\n Y extends HTMLStyledProps & ThemeProps<{}> = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n H extends boolean = false,\n>(\n props: Y,\n {\n name,\n className: defaultClassName,\n style: componentStyle,\n hasSlot,\n slot,\n transferProps,\n }: UseStyleOptions<Y, M, D, H> = {},\n): [Style<H>, WithoutThemeProps<Y, M, D>] {\n const system = useSystem()\n const { getAtRule, wrap } = system.layers\n const rootColorScheme = useColorSchemeContext()\n const options = { ...system.breakpoints, name, hasSlot, wrap }\n\n const propsRef = useRef<Dict>({})\n const mergedPropsRef = useRef<Dict>({})\n const styleRef = useRef<Style<H> | undefined>(undefined)\n\n const hasComponentStyle =\n componentStyle && !!Object.keys(componentStyle).length\n\n if (hasComponentStyle) {\n const {\n className: customClassName,\n base,\n compounds,\n props: propVariants,\n sizes,\n variants,\n defaultProps: { colorScheme: defaultColorScheme, ...defaultProps } = {},\n } = componentStyle\n\n const colorScheme =\n props.colorScheme ?? rootColorScheme ?? defaultColorScheme\n\n const className = cx(defaultClassName ?? customClassName, props.className)\n const mergedProps = {\n ...mergeDefaultProps(defaultProps, props),\n className,\n colorScheme,\n }\n const omitProps = Object.keys(propVariants ?? {})\n const { size, variant } = mergedProps\n\n if (variants) omitProps.push(\"variant\")\n if (sizes) omitProps.push(\"size\")\n\n const computedProps = omitThemeProps(\n mergedProps,\n omitProps,\n transferProps,\n ) as Y\n\n if (\n !isEqualProps(mergedPropsRef.current, mergedProps, [\"css\", \"children\"])\n ) {\n const { hasSize, hasVariant } = getHasAtRuleStyle(props.css)(getAtRule)\n\n let style: Style<H> = {}\n\n if (base) {\n const baseStyle = getStyle<H>(base)(options)\n\n style = merge(style, wrapStyle<H>(\"base\", baseStyle)(options))\n }\n\n if (sizes && !hasSize) {\n const sizeStyle = merge(\n sizes.base,\n getModifierStyle<H>(size, sizes)({ modifier: \"size\", ...options }),\n )\n\n style = merge(style, wrapStyle<H>(\"size\", sizeStyle)(options))\n }\n\n if (variants && !hasVariant) {\n const variantStyle = merge(\n variants.base,\n getModifierStyle<H>(\n variant,\n variants,\n )({ modifier: \"variant\", ...options }),\n )\n\n style = merge(style, wrapStyle<H>(\"variant\", variantStyle)(options))\n }\n\n if (propVariants)\n style = getPropStyle<H>(mergedProps, propVariants, style)(options)\n\n if (compounds)\n style = getCompoundStyle<H>(mergedProps, compounds, style)(options)\n\n styleRef.current = style\n\n if (hasSlot)\n computedProps.css = mergeSlotCSS<ComponentSlotName<M>>(\n slot,\n style as CSSSlotObject,\n computedProps.css,\n )\n else computedProps.css = mergeCSS(style as CSSObject, computedProps.css)\n } else {\n computedProps.css = propsRef.current.css\n }\n\n mergedPropsRef.current = mergedProps\n\n if (!isEqualProps(propsRef.current, computedProps))\n propsRef.current = computedProps\n } else {\n const className = cx(defaultClassName, props.className)\n\n if (className) props.className = className\n\n if (!isEqualProps(propsRef.current, props))\n propsRef.current = props as unknown as WithoutThemeProps<Y, M, D>\n }\n\n return [\n styleRef.current ?? {},\n propsRef.current as WithoutThemeProps<Y, M, D>,\n ]\n}\n\nexport interface UseComponentStyleOptions<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n> extends Omit<UseStyleOptions<Y, M, D>, \"hasSlot\" | \"slot\"> {}\n\nexport function useComponentStyle<\n Y extends Dict = Dict,\n M extends ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n>(props: Y, options: UseComponentStyleOptions<Y, M, D> = {}) {\n return useStyle<Y, M, D>(props, options)\n}\n\nexport interface UseComponentSlotStyleOptions<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n> extends Omit<UseStyleOptions<Y, M, D, true>, \"hasSlot\"> {}\n\nexport function useComponentSlotStyle<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle = ComponentSlotStyle,\n D extends keyof Y = keyof Y,\n>(props: Y, options: UseComponentSlotStyleOptions<Y, M, D> = {}) {\n return useStyle<Y, M, D, true>(props, { ...options, hasSlot: true })\n}\n"],"mappings":";;;;;;;;;AA2DA,SAAS,iBACP,WACA,OACA;CACA,OAAO,UAAU,aACd,MAAM,QAAS,MAAM,GAAG,MAAM,KAAK,IAAI,MACxC,KACF;AACF;AAEA,SAAS,SACP,OACA;CACA,OAAO,SAAU,EACf,MAAM,UACN,UAAU,OACV,UACA,YAAY,CAAC,GACb,SACwC;EACxC,IAAI,CAAC,UAAA,GAAA,cAAA,cAAA,CAAuB,KAAK,GAAG;EAEpC,IAAI,SACF,OAAO,OAAO,YACZ,OAAO,QAAQ,KAAsB,CAAC,CAAC,KAAK,CAAC,MAAM,WAAW;GAC5D,IAAI,UAAU,QAAQ;IACpB,IAAI,SAAS,UACX,QAAQ;MACL,KAAK,SAAS,GAAG,KAAK,GAAG,aAAa,IAAI,MAAM;KACjD,GAAG;IACL;IAEF,OAAO,CAAC,MAAM,iBAAiB,WAAW,SAAS,CAAC,CAAC,CAAC;GACxD,OAAO;IACL,IAAI,SAAS,UACX,QAAQ;MACL,KAAK,SAAS,GAAG,KAAK,GAAG,aAAa,IAAI,MAAM;KACjD,GAAG;IACL;IAEF,OAAO,CAAC,MAAM,KAAK;GACrB;EACF,CAAC,CACH;OACK,IAAI,UAAU,QAAQ;GAC3B,IAAI,SAAS,UACX,QAAQ;KACL,KAAK,SAAS,GAAG,aAAa,IAAI,MAAM;IACzC,GAAG;GACL;GAEF,OAAO,iBAAiB,WAAW,KAAK;EAC1C,OAAO;GACL,IAAI,SAAS,UACX,QAAQ;KACL,KAAK,SAAS,GAAG,aAAa,IAAI,MAAM;IACzC,GAAG;GACL;GAEF,OAAO;EACT;CACF;AACF;AAEA,SAAS,kBACP,OACA,aACA;CACA,OAAO,SAAU,EAAE,YAAY,CAAC,GAAG,GAAG,QAAyB;EAC7D,MAAM,CAAC,YAAY,aAAa;EAYhC,QAAA,GAAA,cAAA,MAAA,CAVmB,iBACjB,YACA,WACF,CAAC,CAAC;GAAE,GAAG;GAAM;EAAU,CAOD,GALJ,iBAChB,WACA,WACF,CAAC,CAAC;GAAE,GAAG;GAAM,WAAW,CAAC,GAAG,WAAW,WAAW,KAAK;EAAE,CAExB,CAAC;CACpC;AACF;AAEA,SAAS,kBACP,OACA,aACA;CACA,OAAO,SAAU,SAA0B;EACzC,MAAM,EAAE,iBAAiB,UAAU,CAAC,GAAG,YAAY,CAAC,MAAM;EAC1D,MAAM,kBAAkB,OAAO,KAAK,KAAK,CAAC,CAAC,QACxC,QAAQ,CAAC,kBAAkB,GAAG,CACjC;EA8BA,QAAA,GAAA,cAAA,MAAA,CA5BsB,QAAQ,QAC3B,MAAM,EAAE,YAAY,YAAY;GAC/B,IAAI,EAAA,GAAA,cAAA,YAAA,CAAa,MAAM,WAAW,GAChC,QAAA,GAAA,cAAA,MAAA,CACE,MACA,iBACE,MAAM,aACN,WACF,CAAC,CAAC;IAAE,GAAG;IAAS,WAAW,CAAC,GAAG,WAAW,KAAK;GAAE,CAAC,CACpD;GAEF,OAAO;EACT,GACA,CAAC,CAesB,GAZH,gBAAgB,QAAkB,MAAM,QAAQ;GACpE,QAAA,GAAA,cAAA,MAAA,CACE,MACA,iBACE,MAAM,MACN,WACF,CAAC,CAAC;IAAE,GAAG;IAAS,WAAW,CAAC,GAAG,WAAW,aAAa,GAAG,CAAC;GAAE,CAAC,CAChE;GAEA,OAAO;EACT,GAAG,CAAC,CAEoC,CAAC;CAC3C;AACF;AAEA,SAAS,iBACP,OACA,aACA;CACA,OAAO,SAAU,SAAgD;EAC/D,IAAI,QAA8B,KAAA;EAElC,IAAI,CAAC,OAAO,OAAO;EAEnB,KAAA,GAAA,cAAA,QAAA,CAAY,KAAK,GACf,QAAQ,kBAAqB,OAAO,WAAW,CAAC,CAAC,OAAO;OACrD,KAAA,GAAA,cAAA,SAAA,CAAa,KAAK,GACrB,QAAQ,kBAAqB,OAAO,WAAW,CAAC,CAAC,OAAO;OACrD,QAAQ,SAAY,YAAY,MAAM,CAAC,CAAC;GAAE,GAAG;GAAS;EAAM,CAAC;EAElE,OAAO;CACT;AACF;AAEA,SAAS,aACP,OACA,cACA,QAA8B,CAAC,GAC/B;CACA,MAAM,WAAW,OAAO,QAAQ,YAAY;CAE5C,OAAO,SAAU,SAA0B;EACzC,IAAI,CAAC,SAAS,QAAQ,OAAO;EAE7B,SAAS,SAAS,CAAC,UAAU,cAAc;GACzC,MAAM,QAAQ,MAAM;GAEpB,IAAI,OAAO;IACT,MAAM,YAAY,iBAChB,OACA,QACF,CAAC,CAAC;KAAE;KAAU;KAAO,GAAG;IAAQ,CAAC;IAEjC,IAAI,WACF,SAAA,GAAA,cAAA,MAAA,CAAc,OAAO,UAAa,SAAS,SAAS,CAAC,CAAC,OAAO,CAAC;GAClE,OAGE,IAFgB,OAAO,KAAK,QAAQ,CAAC,CAAC,OAAO,SAAA,GAAA,cAAA,aAAA,CAAqB,GAAG,CAE3D,GAAG;IACX,MAAM,YAAY,iBAChB,SACA,QACF,CAAC,CAAC;KAAE;KAAU,OAAO;KAAQ,GAAG;IAAQ,CAAC;IAEzC,IAAI,WACF,SAAA,GAAA,cAAA,MAAA,CAAc,OAAO,UAAa,SAAS,SAAS,CAAC,CAAC,OAAO,CAAC;GAClE;EAEJ,CAAC;EAED,OAAO;CACT;AACF;AAEA,SAAS,iBACP,OACA,WACA,QAA8B,CAAC,GAC/B;CACA,OAAO,SAAU,SAA0B;EACzC,IAAI,CAAC,UAAU,QAAQ,OAAO;EAE9B,UAAU,SAAS,EAAE,KAAK,OAAO,GAAG,WAAW;GAC7C,MAAM,aAAa,OAAO,QAAQ,IAAI;GAEtC,IAAI,CAAC,WAAW,QAAQ;GAUxB,IAAI,CARU,WAAW,OAAO,CAAC,KAAK,YAAA,GAAA,cAAA,QAAA,CAC5B,KAAK,IACT,MAAM,SAAS,MAAM,IAAI,KAAA,GAAA,cAAA,SAAA,CAChB,KAAK,IACZ,MAAM,KAAK,MAAM,IAAI,IACrB,MAAM,SAAS,KAGd,GAAG;GAEZ,SAAA,GAAA,cAAA,MAAA,CACE,OACA,UAAa,SAAS,aAAa,GAAe,CAAC,CAAC,OAAO,CAC7D;EACF,CAAC;EAED,OAAO;CACT;AACF;AAEA,SAAgB,iBACd,WACA,MACA;CACA,IAAI,CAAC,aAAa,CAAC,MAAM,OAAO;CAEhC,KAAA,GAAA,cAAA,QAAA,CAAY,IAAI,GAAG;EACjB,MAAM,CAAC,SAAS,YAAY,KAAK,KAAK,WAAA,GAAA,cAAA,YAAA,CACxB,KAAe,CAC7B;EAEA,QAAA,GAAA,cAAA,GAAA,EAAA,GAAA,cAAA,IAAA,CAAc,WAAW,OAAO,IAAA,GAAA,cAAA,IAAA,CAAO,WAAW,SAAS,QAAQ,CAAC;CACtE,OAAO,KAAA,GAAA,cAAA,SAAA,CAAa,IAAI,GAAG;EAEzB,MAAM,CAAC,SAAS,aAAA,GAAA,cAAA,QAAA,CADU,KAAK,IACK,CAAC,CAAC,KAAK,WAAA,GAAA,cAAA,YAAA,CAC7B,KAAe,CAC7B;EAEA,QAAA,GAAA,cAAA,GAAA,EAAA,GAAA,cAAA,IAAA,CAAc,WAAW,OAAO,IAAA,GAAA,cAAA,IAAA,CAAO,WAAW,SAAS,QAAQ,CAAC;CACtE,OACE,QAAA,GAAA,cAAA,IAAA,CAAW,YAAA,GAAA,cAAA,YAAA,CAAuB,IAAc,CAAC;AAErD;AAEA,SAAgB,aACd,MACA,OACA,KACqC;CACrC,IAAI,CAAC,SAAS,CAAC,MAAM,OAAO;CAE5B,MAAM,OAAkC,CAAC;CAEzC,KAAA,GAAA,cAAA,QAAA,CAAY,IAAI,GAAG,KAAK,KAAK,GAAG,KAAK,KAAK,SAAS,MAAM,KAAK,CAAC;MAC1D,KAAA,GAAA,cAAA,SAAA,CAAa,IAAI,GACpB,KAAA,GAAA,cAAA,QAAA,CAAY,KAAK,IAAI,GAAG,KAAK,KAAK,GAAG,KAAK,KAAK,KAAK,SAAS,MAAM,KAAK,CAAC;MACpE,KAAK,KAAK,MAAM,KAAK,KAAK;MAC5B,KAAK,KAAK,MAAM,KAAK;CAE1B,IAAI,KAAK,KAAK,KAAK,IAAA,GAAA,cAAA,QAAA,CAAW,GAAG,CAAC;CAElC,MAAM,UAAA,GAAA,cAAA,YAAA,CAAqB,IAAI;CAE/B,OAAO,OAAO,SAAS,SAAS,KAAA;AAClC;AAEA,SAAS,eAIP,OAAU,WAAqB,CAAC,GAAG,eAAqB;CACxD,IAAI,eACF,WAAW,SAAS,QAAQ,QAAQ,CAAC,cAAc,SAAS,GAAQ,CAAC;CAEvE,QAAA,GAAA,cAAA,WAAA,CAAkB,OAAO,QAAQ;AACnC;AAEA,SAAS,UACP,OACA,OACA;CACA,OAAO,SAAU,EAAE,SAAS,QAAyB;EACnD,IAAI,SAAS;GACX,IAAI,CAAC,OAAO,OAAO,KAAA;GAEnB,OAAO,OAAO,YACZ,OAAO,QAAQ,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,WAAW,CAC3C,MACA,OAAO,OAAO,KAAK,KAAK,KAC1B,CAAC,CACH;EACF,OACE,OAAO,OAAO,OAAO,KAAK,KAAK;CAEnC;AACF;AAEA,SAAS,kBAAkB,KAA+B;CACxD,QAAQ,cAAoC;EAC1C,IAAI,aAAa;EACjB,IAAI,UAAU;EAEd,IAAI,CAAC,OAAO,CAAC,WAAW,OAAO;GAAE;GAAS;EAAW;EAErD,MAAM,gBAAgB,UAAU,SAAS;EACzC,MAAM,aAAa,UAAU,MAAM;EAEnC,OAAA,GAAA,cAAA,QAAA,CAAc,GAAG;EAEjB,IAAI,SAAS,QAAQ;GACnB,MAAM,OAAO,OAAO,KAAK,GAAG;GAE5B,IAAI,KAAK,SAAS,aAAa,GAAG,aAAa;GAC/C,IAAI,KAAK,SAAS,UAAU,GAAG,UAAU;EAC3C,CAAC;EAED,OAAO;GAAE;GAAS;EAAW;CAC/B;AACF;AAEA,SAAS,kBAGP,cAAiC,OAAU;CAC3C,OAAO,OAAO,QAAQ,gBAAgB,CAAC,CAAC,CAAC,CAAC,QACvC,MAAM,CAAC,KAAK,WAAW;EACtB,KAAK,SAAS;EAEd,OAAO;CACT,GACA,KACF;AACF;AAgBA,SAAS,SAMP,OACA,EACE,MACA,WAAW,kBACX,OAAO,gBACP,SACA,MACA,kBAC+B,CAAC,GACM;CACxC,MAAM,SAAS,UAAU;CACzB,MAAM,EAAE,WAAW,SAAS,OAAO;CACnC,MAAM,kBAAkB,sBAAsB;CAC9C,MAAM,UAAU;EAAE,GAAG,OAAO;EAAa;EAAM;EAAS;CAAK;CAE7D,MAAM,WAAW,OAAa,CAAC,CAAC;CAChC,MAAM,iBAAiB,OAAa,CAAC,CAAC;CACtC,MAAM,WAAW,OAA6B,KAAA,CAAS;CAKvD,IAFE,kBAAkB,CAAC,CAAC,OAAO,KAAK,cAAc,CAAC,CAAC,QAE3B;EACrB,MAAM,EACJ,WAAW,iBACX,MACA,WACA,OAAO,cACP,OACA,UACA,cAAc,EAAE,aAAa,oBAAoB,GAAG,iBAAiB,CAAC,MACpE;EAEJ,MAAM,cACJ,MAAM,eAAe,mBAAmB;EAE1C,MAAM,aAAA,GAAA,cAAA,GAAA,CAAe,oBAAoB,iBAAiB,MAAM,SAAS;EACzE,MAAM,cAAc;GAClB,GAAG,kBAAkB,cAAc,KAAK;GACxC;GACA;EACF;EACA,MAAM,YAAY,OAAO,KAAK,gBAAgB,CAAC,CAAC;EAChD,MAAM,EAAE,MAAM,YAAY;EAE1B,IAAI,UAAU,UAAU,KAAK,SAAS;EACtC,IAAI,OAAO,UAAU,KAAK,MAAM;EAEhC,MAAM,gBAAgB,eACpB,aACA,WACA,aACF;EAEA,IACE,CAAC,aAAa,eAAe,SAAS,aAAa,CAAC,OAAO,UAAU,CAAC,GACtE;GACA,MAAM,EAAE,SAAS,eAAe,kBAAkB,MAAM,GAAG,CAAC,CAAC,SAAS;GAEtE,IAAI,QAAkB,CAAC;GAEvB,IAAI,MAAM;IACR,MAAM,YAAY,SAAY,IAAI,CAAC,CAAC,OAAO;IAE3C,SAAA,GAAA,cAAA,MAAA,CAAc,OAAO,UAAa,QAAQ,SAAS,CAAC,CAAC,OAAO,CAAC;GAC/D;GAEA,IAAI,SAAS,CAAC,SAAS;IACrB,MAAM,aAAA,GAAA,cAAA,MAAA,CACJ,MAAM,MACN,iBAAoB,MAAM,KAAK,CAAC,CAAC;KAAE,UAAU;KAAQ,GAAG;IAAQ,CAAC,CACnE;IAEA,SAAA,GAAA,cAAA,MAAA,CAAc,OAAO,UAAa,QAAQ,SAAS,CAAC,CAAC,OAAO,CAAC;GAC/D;GAEA,IAAI,YAAY,CAAC,YAAY;IAC3B,MAAM,gBAAA,GAAA,cAAA,MAAA,CACJ,SAAS,MACT,iBACE,SACA,QACF,CAAC,CAAC;KAAE,UAAU;KAAW,GAAG;IAAQ,CAAC,CACvC;IAEA,SAAA,GAAA,cAAA,MAAA,CAAc,OAAO,UAAa,WAAW,YAAY,CAAC,CAAC,OAAO,CAAC;GACrE;GAEA,IAAI,cACF,QAAQ,aAAgB,aAAa,cAAc,KAAK,CAAC,CAAC,OAAO;GAEnE,IAAI,WACF,QAAQ,iBAAoB,aAAa,WAAW,KAAK,CAAC,CAAC,OAAO;GAEpE,SAAS,UAAU;GAEnB,IAAI,SACF,cAAc,MAAM,aAClB,MACA,OACA,cAAc,GAChB;QACG,cAAc,MAAM,SAAS,OAAoB,cAAc,GAAG;EACzE,OACE,cAAc,MAAM,SAAS,QAAQ;EAGvC,eAAe,UAAU;EAEzB,IAAI,CAAC,aAAa,SAAS,SAAS,aAAa,GAC/C,SAAS,UAAU;CACvB,OAAO;EACL,MAAM,aAAA,GAAA,cAAA,GAAA,CAAe,kBAAkB,MAAM,SAAS;EAEtD,IAAI,WAAW,MAAM,YAAY;EAEjC,IAAI,CAAC,aAAa,SAAS,SAAS,KAAK,GACvC,SAAS,UAAU;CACvB;CAEA,OAAO,CACL,SAAS,WAAW,CAAC,GACrB,SAAS,OACX;AACF;AAQA,SAAgB,kBAId,OAAU,UAA6C,CAAC,GAAG;CAC3D,OAAO,SAAkB,OAAO,OAAO;AACzC;AAQA,SAAgB,sBAId,OAAU,UAAiD,CAAC,GAAG;CAC/D,OAAO,SAAwB,OAAO;EAAE,GAAG;EAAS,SAAS;CAAK,CAAC;AACrE"}
|
|
1
|
+
{"version":3,"file":"use-component-style.js","names":[],"sources":["../../../../src/core/components/use-component-style.ts"],"sourcesContent":["\"use client\"\n\nimport type { Dict } from \"../../utils\"\nimport type {\n ColorModeArray,\n CSSModifierObject,\n CSSObject,\n CSSPropObject,\n CSSSlotObject,\n ResponsiveWithConditionObject,\n StyleValueWithCondition,\n} from \"../css\"\nimport type {\n Breakpoints,\n ComponentCompound,\n ComponentSlotStyle,\n ComponentStyle,\n Layers,\n LayerScheme,\n ThemeProps,\n WithoutThemeProps,\n} from \"../system\"\nimport type { ComponentSlot, ComponentSlotName } from \"./create-component\"\nimport type { HTMLStyledProps } from \"./index.types\"\nimport { useRef } from \"react\"\nimport {\n bem,\n cx,\n filterEmpty,\n isArray,\n isBooleanish,\n isEmptyObject,\n isObject,\n isRegExp,\n isUndefined,\n merge,\n omitObject,\n toArray,\n toKebabCase,\n} from \"../../utils\"\nimport { conditions, getCondition, mergeCSS } from \"../css\"\nimport { useColorSchemeContext, useSystem } from \"../system\"\nimport { isEqualProps } from \"./props\"\n\ntype Style<Y extends boolean = false> = Y extends false\n ? CSSObject\n : CSSSlotObject\n\ntype MergedStyle = CSSModifierObject | CSSModifierObject<CSSSlotObject>\n\ninterface GetStyleOptions\n extends Partial<Breakpoints>, Pick<Partial<Layers>, \"wrap\"> {\n hasSlot?: boolean\n modifier?: string\n name?: string\n selectors?: (string | undefined)[]\n value?: string\n}\n\nfunction getSelectorStyle<Y extends Dict = Dict>(\n selectors: (string | undefined)[],\n style: Y,\n) {\n return selectors.reduceRight<Dict>(\n (prev, key) => (key ? { [key]: prev } : prev),\n style,\n ) as Y\n}\n\nfunction getStyle<Y extends boolean = false>(\n style: CSSObject | CSSSlotObject | undefined,\n) {\n return function ({\n name: rootName,\n hasSlot = false,\n modifier,\n selectors = [],\n value,\n }: GetStyleOptions): Style<Y> | undefined {\n if (!style || isEmptyObject(style)) return\n\n if (hasSlot) {\n return Object.fromEntries(\n Object.entries(style as CSSSlotObject).map(([name, style]) => {\n if (selectors.length) {\n if (value && modifier)\n style = {\n [`--${rootName}-${name}-${modifier}`]: `\"${value}\"`,\n ...style,\n }\n\n return [name, getSelectorStyle(selectors, style ?? {})]\n } else {\n if (value && modifier)\n style = {\n [`--${rootName}-${name}-${modifier}`]: `\"${value}\"`,\n ...style,\n }\n\n return [name, style]\n }\n }),\n ) as Style<Y>\n } else if (selectors.length) {\n if (value && modifier)\n style = {\n [`--${rootName}-${modifier}`]: `\"${value}\"`,\n ...style,\n } as CSSObject\n\n return getSelectorStyle(selectors, style) as Style<Y>\n } else {\n if (value && modifier)\n style = {\n [`--${rootName}-${modifier}`]: `\"${value}\"`,\n ...style,\n } as CSSObject\n\n return style as Style<Y>\n }\n }\n}\n\nfunction getColorModeStyle<Y extends boolean = false>(\n value: ColorModeArray<string>,\n mergedStyle: MergedStyle,\n) {\n return function ({ selectors = [], ...rest }: GetStyleOptions) {\n const [lightValue, darkValue] = value\n\n const lightStyle = getModifierStyle<Y>(\n lightValue,\n mergedStyle,\n )({ ...rest, selectors })\n\n const darkStyle = getModifierStyle<Y>(\n darkValue,\n mergedStyle,\n )({ ...rest, selectors: [...selectors, conditions._dark] })\n\n return merge(lightStyle, darkStyle)\n }\n}\n\nfunction getConditionStyle<Y extends boolean = false>(\n value: ResponsiveWithConditionObject<string>,\n mergedStyle: MergedStyle,\n) {\n return function (options: GetStyleOptions) {\n const { isResponsiveKey, queries = [], selectors = [] } = options\n const conditionalKeys = Object.keys(value).filter(\n (key) => !isResponsiveKey?.(key),\n )\n\n const breakpointObj = queries.reduce<Style<Y>>(\n (prev, { breakpoint, query }) => {\n if (!isUndefined(value[breakpoint]))\n prev = merge(\n prev,\n getModifierStyle<Y>(\n value[breakpoint],\n mergedStyle,\n )({ ...options, selectors: [...selectors, query] }),\n )\n\n return prev\n },\n {},\n )\n\n const additionalObj = conditionalKeys.reduce<Style<Y>>((prev, key) => {\n prev = merge(\n prev,\n getModifierStyle<Y>(\n value[key as keyof typeof value],\n mergedStyle,\n )({ ...options, selectors: [...selectors, getCondition(key)] }),\n )\n\n return prev\n }, {})\n\n return merge(breakpointObj, additionalObj)\n }\n}\n\nfunction getModifierStyle<Y extends boolean = false>(\n value: StyleValueWithCondition<string> | undefined,\n mergedStyle: MergedStyle,\n) {\n return function (options: GetStyleOptions): Style<Y> | undefined {\n let style: Style<Y> | undefined = undefined\n\n if (!value) return style\n\n if (isArray(value))\n style = getColorModeStyle<Y>(value, mergedStyle)(options)\n else if (isObject(value))\n style = getConditionStyle<Y>(value, mergedStyle)(options)\n else style = getStyle<Y>(mergedStyle[value])({ ...options, value })\n\n return style\n }\n}\n\nfunction getPropStyle<Y extends boolean = false>(\n props: Dict,\n propVariants: CSSPropObject | CSSPropObject<CSSSlotObject>,\n style: Style<Y> | undefined = {},\n) {\n const variants = Object.entries(propVariants)\n\n return function (options: GetStyleOptions) {\n if (!variants.length) return style\n\n variants.forEach(([modifier, variants]) => {\n const value = props[modifier as keyof typeof props]\n\n if (value) {\n const propStyle = getModifierStyle<Y>(\n value,\n variants,\n )({ modifier, value, ...options })\n\n if (propStyle)\n style = merge(style, wrapStyle<Y>(\"props\", propStyle)(options))\n } else {\n const boolean = Object.keys(variants).every((key) => isBooleanish(key))\n\n if (boolean) {\n const propStyle = getModifierStyle<Y>(\n \"false\",\n variants,\n )({ modifier, value: \"true\", ...options })\n\n if (propStyle)\n style = merge(style, wrapStyle<Y>(\"props\", propStyle)(options))\n }\n }\n })\n\n return style\n }\n}\n\nfunction getCompoundStyle<Y extends boolean = false>(\n props: Dict,\n compounds: ComponentCompound<CSSSlotObject>[] | ComponentCompound[],\n style: Style<Y> | undefined = {},\n) {\n return function (options: GetStyleOptions) {\n if (!compounds.length) return style\n\n compounds.forEach(({ css, layer, ...rest }) => {\n const conditions = Object.entries(rest)\n\n if (!conditions.length) return\n\n const apply = conditions.every(([key, value]) =>\n isArray(value)\n ? value.includes(props[key])\n : isRegExp(value)\n ? value.test(props[key])\n : props[key] === value,\n )\n\n if (!apply) return\n\n style = merge(\n style,\n wrapStyle<Y>(layer ?? \"compounds\", css as Style<Y>)(options),\n )\n })\n\n return style\n }\n}\n\nexport function getSlotClassName<Y extends string>(\n className?: string,\n slot?: ComponentSlot<Y>,\n) {\n if (!className || !slot) return className\n\n if (isArray(slot)) {\n const [element, modifier] = slot.map((value) =>\n toKebabCase(value as string),\n )\n\n return cx(bem(className, element), bem(className, element, modifier))\n } else if (isObject(slot)) {\n const slotArray = toArray(slot.slot)\n const [element, modifier] = slotArray.map((value) => toKebabCase(value))\n\n return cx(bem(className, element), bem(className, element, modifier))\n } else {\n return bem(className, toKebabCase(slot))\n }\n}\n\nexport function mergeSlotCSS<Y extends string>(\n slot?: ComponentSlot<Y>,\n style?: CSSSlotObject<Y>,\n css?: CSSObject | CSSObject[],\n): CSSObject | CSSObject[] | undefined {\n if (!style || !slot) return css\n\n const temp: (CSSObject | undefined)[] = []\n\n if (isArray(slot)) temp.push(...slot.map((slot) => style[slot]))\n else if (isObject(slot))\n if (isArray(slot.slot)) temp.push(...slot.slot.map((slot) => style[slot]))\n else temp.push(style[slot.slot])\n else temp.push(style[slot])\n\n if (css) temp.push(...toArray(css))\n\n const result = filterEmpty(temp)\n\n return result.length ? result : undefined\n}\n\nfunction omitThemeProps<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n>(props: Y, omitKeys: string[] = [], transferProps?: D[]) {\n if (transferProps)\n omitKeys = omitKeys.filter((key) => !transferProps.includes(key as D))\n\n return omitObject(props, omitKeys) as unknown as WithoutThemeProps<Y, M, D>\n}\n\nfunction wrapStyle<Y extends boolean = false>(\n layer: LayerScheme,\n style?: Style<Y>,\n) {\n return function ({ hasSlot, wrap }: GetStyleOptions) {\n if (hasSlot) {\n if (!style) return undefined\n\n return Object.fromEntries(\n Object.entries(style).map(([slot, style]) => [\n slot,\n wrap?.(layer, style) ?? style,\n ]),\n )\n } else {\n return wrap?.(layer, style) ?? style\n }\n }\n}\n\nfunction getHasAtRuleStyle(css?: CSSObject | CSSObject[]) {\n return (getAtRule?: Layers[\"getAtRule\"]) => {\n let hasVariant = false\n let hasSize = false\n\n if (!css || !getAtRule) return { hasSize, hasVariant }\n\n const variantAtRule = getAtRule(\"variant\")\n const sizeAtRule = getAtRule(\"size\")\n\n css = toArray(css)\n\n css.forEach((css) => {\n const keys = Object.keys(css)\n\n if (keys.includes(variantAtRule)) hasVariant = true\n if (keys.includes(sizeAtRule)) hasSize = true\n })\n\n return { hasSize, hasVariant }\n }\n}\n\nfunction mergeDefaultProps<\n Y extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n M extends Dict = Dict,\n>(defaultProps: Y[\"defaultProps\"], props: M) {\n return Object.entries(defaultProps ?? {}).reduce<Dict>(\n (prev, [key, value]) => {\n prev[key] ??= value\n\n return prev\n },\n props,\n ) as M\n}\n\ninterface UseStyleOptions<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n H extends boolean = false,\n> {\n className?: string\n hasSlot?: H\n name?: string\n slot?: ComponentSlot<ComponentSlotName<M>>\n style?: M\n transferProps?: D[]\n}\n\nfunction useStyle<\n Y extends HTMLStyledProps & ThemeProps<{}> = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n H extends boolean = false,\n>(\n props: Y,\n {\n name,\n className: defaultClassName,\n style: componentStyle,\n hasSlot,\n slot,\n transferProps,\n }: UseStyleOptions<Y, M, D, H> = {},\n): [Style<H>, WithoutThemeProps<Y, M, D>] {\n const system = useSystem()\n const { getAtRule, wrap } = system.layers\n const rootColorScheme = useColorSchemeContext()\n const options = { ...system.breakpoints, name, hasSlot, wrap }\n\n const propsRef = useRef<Dict>({})\n const mergedPropsRef = useRef<Dict>({})\n const styleRef = useRef<Style<H> | undefined>(undefined)\n\n const hasComponentStyle =\n componentStyle && !!Object.keys(componentStyle).length\n\n if (hasComponentStyle) {\n const {\n className: customClassName,\n base,\n compounds,\n props: propVariants,\n sizes,\n variants,\n defaultProps: { colorScheme: defaultColorScheme, ...defaultProps } = {},\n } = componentStyle\n\n const colorScheme =\n props.colorScheme ?? rootColorScheme ?? defaultColorScheme\n\n const className = cx(defaultClassName ?? customClassName, props.className)\n const mergedProps = {\n ...mergeDefaultProps(defaultProps, props),\n className,\n colorScheme,\n }\n const omitProps = Object.keys(propVariants ?? {})\n const { size, variant } = mergedProps\n\n if (variants) omitProps.push(\"variant\")\n if (sizes) omitProps.push(\"size\")\n\n const computedProps = omitThemeProps(\n mergedProps,\n omitProps,\n transferProps,\n ) as Y\n\n if (\n !isEqualProps(mergedPropsRef.current, mergedProps, [\"css\", \"children\"])\n ) {\n const { hasSize, hasVariant } = getHasAtRuleStyle(props.css)(getAtRule)\n\n let style: Style<H> = {}\n\n if (base) {\n const baseStyle = getStyle<H>(base)(options)\n\n style = merge(style, wrapStyle<H>(\"base\", baseStyle)(options))\n }\n\n if (sizes && !hasSize) {\n const sizeStyle = merge(\n sizes.base,\n getModifierStyle<H>(size, sizes)({ modifier: \"size\", ...options }),\n )\n\n style = merge(style, wrapStyle<H>(\"size\", sizeStyle)(options))\n }\n\n if (variants && !hasVariant) {\n const variantStyle = merge(\n variants.base,\n getModifierStyle<H>(\n variant,\n variants,\n )({ modifier: \"variant\", ...options }),\n )\n\n style = merge(style, wrapStyle<H>(\"variant\", variantStyle)(options))\n }\n\n if (propVariants)\n style = getPropStyle<H>(mergedProps, propVariants, style)(options)\n\n if (compounds)\n style = getCompoundStyle<H>(mergedProps, compounds, style)(options)\n\n styleRef.current = style\n\n if (hasSlot)\n computedProps.css = mergeSlotCSS<ComponentSlotName<M>>(\n slot,\n style as CSSSlotObject,\n computedProps.css,\n )\n else computedProps.css = mergeCSS(style as CSSObject, computedProps.css)\n } else {\n computedProps.css = propsRef.current.css\n }\n\n mergedPropsRef.current = mergedProps\n\n if (!isEqualProps(propsRef.current, computedProps))\n propsRef.current = computedProps\n } else {\n const className = cx(defaultClassName, props.className)\n\n if (className) props.className = className\n\n if (!isEqualProps(propsRef.current, props)) propsRef.current = props\n }\n\n return [\n styleRef.current ?? {},\n propsRef.current as WithoutThemeProps<Y, M, D>,\n ]\n}\n\nexport interface UseComponentStyleOptions<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n> extends Omit<UseStyleOptions<Y, M, D>, \"hasSlot\" | \"slot\"> {}\n\nexport function useComponentStyle<\n Y extends Dict = Dict,\n M extends ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n>(props: Y, options: UseComponentStyleOptions<Y, M, D> = {}) {\n return useStyle<Y, M, D>(props, options)\n}\n\nexport interface UseComponentSlotStyleOptions<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n> extends Omit<UseStyleOptions<Y, M, D, true>, \"hasSlot\"> {}\n\nexport function useComponentSlotStyle<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle = ComponentSlotStyle,\n D extends keyof Y = keyof Y,\n>(props: Y, options: UseComponentSlotStyleOptions<Y, M, D> = {}) {\n return useStyle<Y, M, D, true>(props, { ...options, hasSlot: true })\n}\n"],"mappings":"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"}
|