nuvox 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/react/index.ts","../../src/tokens/contract.ts","../../src/tokens/themes/light.ts","../../src/tokens/themes/dark.ts","../../src/tokens/themes/glass.ts","../../src/tokens/themes/dark-glass.ts","../../src/tokens/themes/minimalism.ts","../../src/tokens/themes/brutalism.ts","../../src/tokens/themes/neobrutalism.ts","../../src/tokens/themes/cyberpunk.ts","../../src/tokens/themes/gradient.ts","../../src/tokens/themes/material.ts","../../src/tokens/themes/skeuomorphism.ts","../../src/tokens/registry.ts","../../src/tokens/accents/indigo.ts","../../src/tokens/accents/violet.ts","../../src/tokens/accents/teal.ts","../../src/tokens/accents/rose.ts","../../src/tokens/accents/amber.ts","../../src/tokens/accents/emerald.ts","../../src/tokens/accents/copper.ts","../../src/tokens/accents/graphite.ts","../../src/tokens/accents/magenta.ts","../../src/tokens/accents.ts","../../src/theme-engine/resolveColor.ts","../../src/theme-engine/NuvoxProvider.tsx","../../src/theme-engine/ThemedPortal.tsx","../../src/react/Button.tsx","../../src/core/button.ts","../../src/react/Input.tsx","../../src/core/field.ts","../../src/core/input.ts","../../src/react/Textarea.tsx","../../src/core/textarea.ts","../../src/react/Checkbox.tsx","../../src/core/checkbox.ts","../../src/react/Radio.tsx","../../src/core/radio.ts","../../src/react/Toggle.tsx","../../src/core/toggle.ts","../../src/react/Badge.tsx","../../src/core/badge.ts","../../src/react/Avatar.tsx","../../src/core/avatar.ts","../../src/react/Spinner.tsx","../../src/core/spinner.ts","../../src/react/Divider.tsx","../../src/core/divider.ts","../../src/react/Card.tsx","../../src/core/card.ts","../../src/react/Alert.tsx","../../src/core/alert.ts","../../src/icons/react/AlarmCheckIcon.tsx","../../src/icons/react/AlarmClockIcon.tsx","../../src/icons/react/AlarmMinusIcon.tsx","../../src/icons/react/AlarmOffIcon.tsx","../../src/icons/react/AlarmPlusIcon.tsx","../../src/icons/react/AlertIcon.tsx","../../src/icons/react/AlignBottomIcon.tsx","../../src/icons/react/AlignCenterIcon.tsx","../../src/icons/react/AlignJustifyIcon.tsx","../../src/icons/react/AlignLeftIcon.tsx","../../src/icons/react/AlignRightIcon.tsx","../../src/icons/react/AlignTopIcon.tsx","../../src/icons/react/AnchorIcon.tsx","../../src/icons/react/AngryIcon.tsx","../../src/icons/react/AnnoyedIcon.tsx","../../src/icons/react/AntennaIcon.tsx","../../src/icons/react/ArrowDownIcon.tsx","../../src/icons/react/ArrowDownLeftIcon.tsx","../../src/icons/react/ArrowDownRightIcon.tsx","../../src/icons/react/ArrowLeftIcon.tsx","../../src/icons/react/ArrowLeftRightIcon.tsx","../../src/icons/react/ArrowRightIcon.tsx","../../src/icons/react/ArrowUpDownIcon.tsx","../../src/icons/react/ArrowUpIcon.tsx","../../src/icons/react/ArrowUpLeftIcon.tsx","../../src/icons/react/ArrowUpRightIcon.tsx","../../src/icons/react/AtSignIcon.tsx","../../src/icons/react/AwardIcon.tsx","../../src/icons/react/BabyIcon.tsx","../../src/icons/react/BadgeIcon.tsx","../../src/icons/react/BanIcon.tsx","../../src/icons/react/BankIcon.tsx","../../src/icons/react/BatteryChargeIcon.tsx","../../src/icons/react/BatteryFullIcon.tsx","../../src/icons/react/BatteryIcon.tsx","../../src/icons/react/BatteryLowIcon.tsx","../../src/icons/react/BellDotIcon.tsx","../../src/icons/react/BellIcon.tsx","../../src/icons/react/BellOffIcon.tsx","../../src/icons/react/BikeIcon.tsx","../../src/icons/react/BirdIcon.tsx","../../src/icons/react/BitcoinIcon.tsx","../../src/icons/react/BluetoothIcon.tsx","../../src/icons/react/BluetoothOffIcon.tsx","../../src/icons/react/BoatIcon.tsx","../../src/icons/react/BoltIcon.tsx","../../src/icons/react/BombIcon.tsx","../../src/icons/react/BookIcon.tsx","../../src/icons/react/BookmarkFilledIcon.tsx","../../src/icons/react/BookmarkIcon.tsx","../../src/icons/react/BotIcon.tsx","../../src/icons/react/BoxIcon.tsx","../../src/icons/react/BrainIcon.tsx","../../src/icons/react/BriefcaseIcon.tsx","../../src/icons/react/BugIcon.tsx","../../src/icons/react/BuildingIcon.tsx","../../src/icons/react/BusIcon.tsx","../../src/icons/react/CalculatorIcon.tsx","../../src/icons/react/CalendarAddIcon.tsx","../../src/icons/react/CalendarIcon.tsx","../../src/icons/react/CameraIcon.tsx","../../src/icons/react/CameraOffIcon.tsx","../../src/icons/react/CameraSwitchIcon.tsx","../../src/icons/react/CandlestickIcon.tsx","../../src/icons/react/CaptionsIcon.tsx","../../src/icons/react/CaptionsOffIcon.tsx","../../src/icons/react/CarIcon.tsx","../../src/icons/react/CashIcon.tsx","../../src/icons/react/CastIcon.tsx","../../src/icons/react/CatIcon.tsx","../../src/icons/react/CctvIcon.tsx","../../src/icons/react/CentIcon.tsx","../../src/icons/react/CentSymbolIcon.tsx","../../src/icons/react/ChartDownIcon.tsx","../../src/icons/react/ChartUpIcon.tsx","../../src/icons/react/CheckCircleIcon.tsx","../../src/icons/react/CheckIcon.tsx","../../src/icons/react/ChevronDownIcon.tsx","../../src/icons/react/ChevronFirstIcon.tsx","../../src/icons/react/ChevronLastIcon.tsx","../../src/icons/react/ChevronLeftIcon.tsx","../../src/icons/react/ChevronRightIcon.tsx","../../src/icons/react/ChevronsDownIcon.tsx","../../src/icons/react/ChevronsLeftIcon.tsx","../../src/icons/react/ChevronsRightIcon.tsx","../../src/icons/react/ChevronsUpIcon.tsx","../../src/icons/react/ChevronUpIcon.tsx","../../src/icons/react/CigaretteIcon.tsx","../../src/icons/react/CigaretteOffIcon.tsx","../../src/icons/react/CircleIcon.tsx","../../src/icons/react/ClapperboardIcon.tsx","../../src/icons/react/ClipboardIcon.tsx","../../src/icons/react/ClockIcon.tsx","../../src/icons/react/CloseIcon.tsx","../../src/icons/react/CloudDownloadIcon.tsx","../../src/icons/react/CloudIcon.tsx","../../src/icons/react/CloudLightningIcon.tsx","../../src/icons/react/CloudMoonIcon.tsx","../../src/icons/react/CloudRainIcon.tsx","../../src/icons/react/CloudSnowIcon.tsx","../../src/icons/react/CloudSunIcon.tsx","../../src/icons/react/CloudUploadIcon.tsx","../../src/icons/react/CloudyIcon.tsx","../../src/icons/react/CodeIcon.tsx","../../src/icons/react/CoinIcon.tsx","../../src/icons/react/ColumnIcon.tsx","../../src/icons/react/CompassIcon.tsx","../../src/icons/react/ContactIcon.tsx","../../src/icons/react/CopyIcon.tsx","../../src/icons/react/CornerDownLeftIcon.tsx","../../src/icons/react/CornerDownRightIcon.tsx","../../src/icons/react/CornerUpLeftIcon.tsx","../../src/icons/react/CornerUpRightIcon.tsx","../../src/icons/react/CpuIcon.tsx","../../src/icons/react/CreativeCommonsIcon.tsx","../../src/icons/react/CreditCardIcon.tsx","../../src/icons/react/CropIcon.tsx","../../src/icons/react/CrossCircleIcon.tsx","../../src/icons/react/CrownIcon.tsx","../../src/icons/react/CutIcon.tsx","../../src/icons/react/CycleIcon.tsx","../../src/icons/react/DatabaseIcon.tsx","../../src/icons/react/DiaryIcon.tsx","../../src/icons/react/DiceFiveIcon.tsx","../../src/icons/react/DiceFourIcon.tsx","../../src/icons/react/DiceOneIcon.tsx","../../src/icons/react/DiceSixIcon.tsx","../../src/icons/react/DiceThreeIcon.tsx","../../src/icons/react/DiceTwoIcon.tsx","../../src/icons/react/DirectionDownIcon.tsx","../../src/icons/react/DirectionLeftIcon.tsx","../../src/icons/react/DirectionRightIcon.tsx","../../src/icons/react/DirectionUpIcon.tsx","../../src/icons/react/DiscordFilledIcon.tsx","../../src/icons/react/DiscordIcon.tsx","../../src/icons/react/DislikeIcon.tsx","../../src/icons/react/DogIcon.tsx","../../src/icons/react/DollarIcon.tsx","../../src/icons/react/DollarSymbolIcon.tsx","../../src/icons/react/DotIcon.tsx","../../src/icons/react/DownloadIcon.tsx","../../src/icons/react/DragIcon.tsx","../../src/icons/react/DribbbleFilledIcon.tsx","../../src/icons/react/DribbbleIcon.tsx","../../src/icons/react/DropletIcon.tsx","../../src/icons/react/DropletOffIcon.tsx","../../src/icons/react/EditIcon.tsx","../../src/icons/react/EmergencyIcon.tsx","../../src/icons/react/EqualIcon.tsx","../../src/icons/react/EraserIcon.tsx","../../src/icons/react/EthernetIcon.tsx","../../src/icons/react/EuroIcon.tsx","../../src/icons/react/EuroSymbolIcon.tsx","../../src/icons/react/ExpandIcon.tsx","../../src/icons/react/ExternalLinkIcon.tsx","../../src/icons/react/EyeClosedIcon.tsx","../../src/icons/react/EyeIcon.tsx","../../src/icons/react/EyeOffIcon.tsx","../../src/icons/react/FacebookFilledIcon.tsx","../../src/icons/react/FacebookIcon.tsx","../../src/icons/react/FactoryIcon.tsx","../../src/icons/react/FastForwardIcon.tsx","../../src/icons/react/FemaleGenderIcon.tsx","../../src/icons/react/FigmaFilledIcon.tsx","../../src/icons/react/FigmaIcon.tsx","../../src/icons/react/FileArchiveIcon.tsx","../../src/icons/react/FileAudioIcon.tsx","../../src/icons/react/FileChartIcon.tsx","../../src/icons/react/FileCheckIcon.tsx","../../src/icons/react/FileCodeIcon.tsx","../../src/icons/react/FileCogIcon.tsx","../../src/icons/react/FileCssIcon.tsx","../../src/icons/react/FileDatabaseIcon.tsx","../../src/icons/react/FileDownloadIcon.tsx","../../src/icons/react/FileEditIcon.tsx","../../src/icons/react/FileEnvIcon.tsx","../../src/icons/react/FileHeartIcon.tsx","../../src/icons/react/FileHtmlIcon.tsx","../../src/icons/react/FileIcon.tsx","../../src/icons/react/FileImageIcon.tsx","../../src/icons/react/FileJsIcon.tsx","../../src/icons/react/FileJsonIcon.tsx","../../src/icons/react/FileJsxIcon.tsx","../../src/icons/react/FileLockIcon.tsx","../../src/icons/react/FileMdIcon.tsx","../../src/icons/react/FileMinusIcon.tsx","../../src/icons/react/FilePdfIcon.tsx","../../src/icons/react/FilePlusIcon.tsx","../../src/icons/react/FilePresentationIcon.tsx","../../src/icons/react/FileSearchIcon.tsx","../../src/icons/react/FileSpreadsheetIcon.tsx","../../src/icons/react/FileTextIcon.tsx","../../src/icons/react/FileTsIcon.tsx","../../src/icons/react/FileTsxIcon.tsx","../../src/icons/react/FileUserIcon.tsx","../../src/icons/react/FileVideoIcon.tsx","../../src/icons/react/FileXIcon.tsx","../../src/icons/react/FilmIcon.tsx","../../src/icons/react/FilterIcon.tsx","../../src/icons/react/FingerprintIcon.tsx","../../src/icons/react/FireExtinguisherIcon.tsx","../../src/icons/react/FishIcon.tsx","../../src/icons/react/FlagIcon.tsx","../../src/icons/react/FlagOffIcon.tsx","../../src/icons/react/FlameIcon.tsx","../../src/icons/react/FlipHorizontalIcon.tsx","../../src/icons/react/FlipVerticalIcon.tsx","../../src/icons/react/FlowerIcon.tsx","../../src/icons/react/FolderArchiveIcon.tsx","../../src/icons/react/FolderCheckIcon.tsx","../../src/icons/react/FolderCogIcon.tsx","../../src/icons/react/FolderDownIcon.tsx","../../src/icons/react/FolderDownloadIcon.tsx","../../src/icons/react/FolderEditIcon.tsx","../../src/icons/react/FolderHeartIcon.tsx","../../src/icons/react/FolderIcon.tsx","../../src/icons/react/FolderLockIcon.tsx","../../src/icons/react/FolderMinusIcon.tsx","../../src/icons/react/FolderOpenIcon.tsx","../../src/icons/react/FolderPlusIcon.tsx","../../src/icons/react/FolderSearchIcon.tsx","../../src/icons/react/FolderXIcon.tsx","../../src/icons/react/FrancIcon.tsx","../../src/icons/react/FrancSymbolIcon.tsx","../../src/icons/react/FrownIcon.tsx","../../src/icons/react/GamepadIcon.tsx","../../src/icons/react/GemIcon.tsx","../../src/icons/react/GhostIcon.tsx","../../src/icons/react/GiftIcon.tsx","../../src/icons/react/GithubFilledIcon.tsx","../../src/icons/react/GithubIcon.tsx","../../src/icons/react/GlobeIcon.tsx","../../src/icons/react/GpuIcon.tsx","../../src/icons/react/GraduationCapIcon.tsx","../../src/icons/react/GridIcon.tsx","../../src/icons/react/GroupIcon.tsx","../../src/icons/react/HandshakeIcon.tsx","../../src/icons/react/HardDriveIcon.tsx","../../src/icons/react/HdmiIcon.tsx","../../src/icons/react/HeadphonesIcon.tsx","../../src/icons/react/HeadphonesOffIcon.tsx","../../src/icons/react/HeartBrokenIcon.tsx","../../src/icons/react/HeartFilledIcon.tsx","../../src/icons/react/HeartIcon.tsx","../../src/icons/react/HelicopterIcon.tsx","../../src/icons/react/HelpIcon.tsx","../../src/icons/react/HeptagonIcon.tsx","../../src/icons/react/HexagonIcon.tsx","../../src/icons/react/HighlighterIcon.tsx","../../src/icons/react/HistoryIcon.tsx","../../src/icons/react/HomeIcon.tsx","../../src/icons/react/HospitalIcon.tsx","../../src/icons/react/HourglassIcon.tsx","../../src/icons/react/IdCardIcon.tsx","../../src/icons/react/ImageIcon.tsx","../../src/icons/react/InboxIcon.tsx","../../src/icons/react/IndentIcon.tsx","../../src/icons/react/InfoIcon.tsx","../../src/icons/react/InstagramFilledIcon.tsx","../../src/icons/react/InstagramIcon.tsx","../../src/icons/react/JoystickIcon.tsx","../../src/icons/react/KeyboardIcon.tsx","../../src/icons/react/KeyIcon.tsx","../../src/icons/react/LaptopIcon.tsx","../../src/icons/react/LaughIcon.tsx","../../src/icons/react/LayersIcon.tsx","../../src/icons/react/LayersPlusIcon.tsx","../../src/icons/react/LayoutGridIcon.tsx","../../src/icons/react/LayoutKanbanIcon.tsx","../../src/icons/react/LayoutListIcon.tsx","../../src/icons/react/LeafIcon.tsx","../../src/icons/react/LightbulbIcon.tsx","../../src/icons/react/LightbulbOffIcon.tsx","../../src/icons/react/LikeIcon.tsx","../../src/icons/react/LineIcon.tsx","../../src/icons/react/LinkedinFilledIcon.tsx","../../src/icons/react/LinkedinIcon.tsx","../../src/icons/react/LinkIcon.tsx","../../src/icons/react/LiraIcon.tsx","../../src/icons/react/LiraSymbolIcon.tsx","../../src/icons/react/ListIcon.tsx","../../src/icons/react/LoaderIcon.tsx","../../src/icons/react/LoaderSpinnerIcon.tsx","../../src/icons/react/LockIcon.tsx","../../src/icons/react/MagicIcon.tsx","../../src/icons/react/MailIcon.tsx","../../src/icons/react/MaleGenderIcon.tsx","../../src/icons/react/MapPinIcon.tsx","../../src/icons/react/MaximizeIcon.tsx","../../src/icons/react/MedalIcon.tsx","../../src/icons/react/MedicineIcon.tsx","../../src/icons/react/MehIcon.tsx","../../src/icons/react/MenuIcon.tsx","../../src/icons/react/MergeIcon.tsx","../../src/icons/react/MessageCircleIcon.tsx","../../src/icons/react/MessageSquareIcon.tsx","../../src/icons/react/MicIcon.tsx","../../src/icons/react/MicOffIcon.tsx","../../src/icons/react/MinimizeIcon.tsx","../../src/icons/react/MinusIcon.tsx","../../src/icons/react/MonitorIcon.tsx","../../src/icons/react/MoonIcon.tsx","../../src/icons/react/MoreHorizontalIcon.tsx","../../src/icons/react/MoreVerticalIcon.tsx","../../src/icons/react/MountainIcon.tsx","../../src/icons/react/MouseIcon.tsx","../../src/icons/react/MoveIcon.tsx","../../src/icons/react/MusicIcon.tsx","../../src/icons/react/OctagonIcon.tsx","../../src/icons/react/OutboxIcon.tsx","../../src/icons/react/OutdentIcon.tsx","../../src/icons/react/PackageIcon.tsx","../../src/icons/react/PackageOpenIcon.tsx","../../src/icons/react/PaintbrushIcon.tsx","../../src/icons/react/PaletteIcon.tsx","../../src/icons/react/PanelBottomIcon.tsx","../../src/icons/react/PanelLeftIcon.tsx","../../src/icons/react/PanelRightIcon.tsx","../../src/icons/react/PanelTopIcon.tsx","../../src/icons/react/PaperclipIcon.tsx","../../src/icons/react/PassportIcon.tsx","../../src/icons/react/PauseIcon.tsx","../../src/icons/react/PawIcon.tsx","../../src/icons/react/PencilIcon.tsx","../../src/icons/react/PentagonIcon.tsx","../../src/icons/react/PhoneCallIcon.tsx","../../src/icons/react/PhoneIcon.tsx","../../src/icons/react/PhoneMissedIcon.tsx","../../src/icons/react/PhoneOffIcon.tsx","../../src/icons/react/PictureInPictureIcon.tsx","../../src/icons/react/PiggyBankIcon.tsx","../../src/icons/react/PinIcon.tsx","../../src/icons/react/PlayIcon.tsx","../../src/icons/react/PlaylistIcon.tsx","../../src/icons/react/PlusIcon.tsx","../../src/icons/react/PoundIcon.tsx","../../src/icons/react/PoundSymbolIcon.tsx","../../src/icons/react/PowerIcon.tsx","../../src/icons/react/PowerOffIcon.tsx","../../src/icons/react/PrinterIcon.tsx","../../src/icons/react/PrintIcon.tsx","../../src/icons/react/ProjectorIcon.tsx","../../src/icons/react/QrIcon.tsx","../../src/icons/react/RadioIcon.tsx","../../src/icons/react/RadioOffIcon.tsx","../../src/icons/react/RadioTowerIcon.tsx","../../src/icons/react/RainbowIcon.tsx","../../src/icons/react/RectangleIcon.tsx","../../src/icons/react/RecycleIcon.tsx","../../src/icons/react/RedditFilledIcon.tsx","../../src/icons/react/RedditIcon.tsx","../../src/icons/react/RedoIcon.tsx","../../src/icons/react/RefreshIcon.tsx","../../src/icons/react/RepeatIcon.tsx","../../src/icons/react/RepeatOnceIcon.tsx","../../src/icons/react/ReplyAllIcon.tsx","../../src/icons/react/ReplyIcon.tsx","../../src/icons/react/ResizeIcon.tsx","../../src/icons/react/RibbonIcon.tsx","../../src/icons/react/RocketIcon.tsx","../../src/icons/react/RotateCcwIcon.tsx","../../src/icons/react/RotateCwIcon.tsx","../../src/icons/react/RouterIcon.tsx","../../src/icons/react/RowIcon.tsx","../../src/icons/react/RubleIcon.tsx","../../src/icons/react/RubleSymbolIcon.tsx","../../src/icons/react/RupeeIcon.tsx","../../src/icons/react/RupeeSymbolIcon.tsx","../../src/icons/react/SatelliteIcon.tsx","../../src/icons/react/SaveIcon.tsx","../../src/icons/react/ScanEyeIcon.tsx","../../src/icons/react/ScanIcon.tsx","../../src/icons/react/SchoolIcon.tsx","../../src/icons/react/ScreenShareIcon.tsx","../../src/icons/react/ScreenShareOffIcon.tsx","../../src/icons/react/SearchIcon.tsx","../../src/icons/react/SendAngledIcon.tsx","../../src/icons/react/SendDiagonalIcon.tsx","../../src/icons/react/ServerIcon.tsx","../../src/icons/react/SettingsIcon.tsx","../../src/icons/react/ShareIcon.tsx","../../src/icons/react/ShieldCheckIcon.tsx","../../src/icons/react/ShieldOffIcon.tsx","../../src/icons/react/ShieldUserIcon.tsx","../../src/icons/react/ShoppingBagIcon.tsx","../../src/icons/react/ShoppingCartIcon.tsx","../../src/icons/react/ShrinkIcon.tsx","../../src/icons/react/SidebarLeftIcon.tsx","../../src/icons/react/SidebarRightIcon.tsx","../../src/icons/react/SignatureIcon.tsx","../../src/icons/react/SmartphoneChargingIcon.tsx","../../src/icons/react/SmartphoneIcon.tsx","../../src/icons/react/SmileIcon.tsx","../../src/icons/react/SnowflakeIcon.tsx","../../src/icons/react/SortAscIcon.tsx","../../src/icons/react/SortDescIcon.tsx","../../src/icons/react/SparkleIcon.tsx","../../src/icons/react/SpeakerIcon.tsx","../../src/icons/react/SplitHorizontalIcon.tsx","../../src/icons/react/SplitVerticalIcon.tsx","../../src/icons/react/SquareIcon.tsx","../../src/icons/react/StampIcon.tsx","../../src/icons/react/StarFilledIcon.tsx","../../src/icons/react/StarHalfFilledIcon.tsx","../../src/icons/react/StarHalfIcon.tsx","../../src/icons/react/StarIcon.tsx","../../src/icons/react/StepBackIcon.tsx","../../src/icons/react/StepForwardIcon.tsx","../../src/icons/react/StickyNoteIcon.tsx","../../src/icons/react/StopIcon.tsx","../../src/icons/react/StopwatchIcon.tsx","../../src/icons/react/StoreIcon.tsx","../../src/icons/react/SunIcon.tsx","../../src/icons/react/TableOfContentsIcon.tsx","../../src/icons/react/TabletIcon.tsx","../../src/icons/react/TagIcon.tsx","../../src/icons/react/TelegramFilledIcon.tsx","../../src/icons/react/TelegramIcon.tsx","../../src/icons/react/TerminalIcon.tsx","../../src/icons/react/TerminalSquareIcon.tsx","../../src/icons/react/ThermometerIcon.tsx","../../src/icons/react/ThermometerSnowflakeIcon.tsx","../../src/icons/react/ThermometerSunIcon.tsx","../../src/icons/react/TicketAddIcon.tsx","../../src/icons/react/TicketCancelIcon.tsx","../../src/icons/react/TicketCheckIcon.tsx","../../src/icons/react/TicketDiscountIcon.tsx","../../src/icons/react/TicketIcon.tsx","../../src/icons/react/TimerIcon.tsx","../../src/icons/react/ToggleLeftIcon.tsx","../../src/icons/react/ToggleRightIcon.tsx","../../src/icons/react/ToiletIcon.tsx","../../src/icons/react/TorchIcon.tsx","../../src/icons/react/TorchOffIcon.tsx","../../src/icons/react/TornadoIcon.tsx","../../src/icons/react/TrademarkIcon.tsx","../../src/icons/react/TrainIcon.tsx","../../src/icons/react/TransgenderIcon.tsx","../../src/icons/react/TrashIcon.tsx","../../src/icons/react/TreeIcon.tsx","../../src/icons/react/TrendingDownIcon.tsx","../../src/icons/react/TrendingUpDownIcon.tsx","../../src/icons/react/TrendingUpIcon.tsx","../../src/icons/react/TriangleIcon.tsx","../../src/icons/react/TrophyIcon.tsx","../../src/icons/react/TruckIcon.tsx","../../src/icons/react/TvIcon.tsx","../../src/icons/react/UmbrellaIcon.tsx","../../src/icons/react/UmbrellaOffIcon.tsx","../../src/icons/react/UndoIcon.tsx","../../src/icons/react/UngroupIcon.tsx","../../src/icons/react/UnlinkIcon.tsx","../../src/icons/react/UnlockIcon.tsx","../../src/icons/react/UploadIcon.tsx","../../src/icons/react/UsbIcon.tsx","../../src/icons/react/UserCheckIcon.tsx","../../src/icons/react/UserCircleIcon.tsx","../../src/icons/react/UserCogIcon.tsx","../../src/icons/react/UserEditIcon.tsx","../../src/icons/react/UserIcon.tsx","../../src/icons/react/UserLockIcon.tsx","../../src/icons/react/UserMinusIcon.tsx","../../src/icons/react/UserPlusIcon.tsx","../../src/icons/react/UserSearchIcon.tsx","../../src/icons/react/UsersIcon.tsx","../../src/icons/react/UserSquareIcon.tsx","../../src/icons/react/UserStarIcon.tsx","../../src/icons/react/VideoIcon.tsx","../../src/icons/react/VideoOffIcon.tsx","../../src/icons/react/VolumeIcon.tsx","../../src/icons/react/VolumeOffIcon.tsx","../../src/icons/react/WalletIcon.tsx","../../src/icons/react/WandIcon.tsx","../../src/icons/react/WatchIcon.tsx","../../src/icons/react/WebcamIcon.tsx","../../src/icons/react/WhatsappFilledIcon.tsx","../../src/icons/react/WhatsappIcon.tsx","../../src/icons/react/WifiIcon.tsx","../../src/icons/react/WindIcon.tsx","../../src/icons/react/WorkflowIcon.tsx","../../src/icons/react/WrapTextIcon.tsx","../../src/icons/react/WrenchIcon.tsx","../../src/icons/react/XFilledIcon.tsx","../../src/icons/react/XIcon.tsx","../../src/icons/react/YenIcon.tsx","../../src/icons/react/YenSymbolIcon.tsx","../../src/icons/react/YoutubeFilledIcon.tsx","../../src/icons/react/YoutubeIcon.tsx","../../src/icons/react/ZapIcon.tsx","../../src/icons/react/ZapOffIcon.tsx","../../src/icons/react/ZoomInIcon.tsx","../../src/icons/react/ZoomOutIcon.tsx","../../src/react/Modal.tsx","../../src/core/modal.ts","../../src/theme-engine/useOverlayBehavior.ts","../../src/react/Tooltip.tsx","../../src/core/tooltip.ts","../../src/theme-engine/useFloatingPosition.ts","../../src/core/floating.ts","../../src/react/ToastProvider.tsx","../../src/core/toast.ts","../../src/react/Progress.tsx","../../src/core/progress.ts","../../src/react/Tabs.tsx","../../src/core/tabs.ts","../../src/core/collection.ts","../../src/react/Accordion.tsx","../../src/core/accordion.ts","../../src/react/DropdownMenu.tsx","../../src/core/dropdown.ts","../../src/theme-engine/useClickOutside.ts","../../src/react/Select.tsx","../../src/core/select.ts","../../src/react/Slider.tsx","../../src/core/slider.ts","../../src/react/Combobox.tsx","../../src/core/combobox.ts","../../src/react/Calendar.tsx","../../src/core/calendar.ts","../../src/core/datepicker.ts","../../src/react/DatePicker.tsx","../../src/react/Popover.tsx","../../src/core/popover.ts","../../src/react/TimePicker.tsx","../../src/core/timepicker.ts","../../src/react/ColorPicker.tsx","../../src/core/colorpicker.ts","../../src/react/Carousel.tsx","../../src/core/carousel.ts","../../src/react/Timeline.tsx","../../src/core/timeline.ts","../../src/react/CommandPalette.tsx","../../src/core/command.ts","../../src/react/NumberInput.tsx","../../src/core/number-input.ts","../../src/react/FileUpload.tsx","../../src/core/file-upload.ts","../../src/react/Pagination.tsx","../../src/core/pagination.ts","../../src/react/Breadcrumb.tsx","../../src/core/breadcrumb.ts","../../src/react/Skeleton.tsx","../../src/core/skeleton.ts","../../src/react/Table.tsx","../../src/core/table.ts","../../src/react/Drawer.tsx","../../src/core/drawer.ts","../../src/react/ContextMenu.tsx","../../src/core/context-menu.ts","../../src/react/Rating.tsx","../../src/core/rating.ts","../../src/react/OTPInput.tsx","../../src/core/otp-input.ts","../../src/react/PhoneInput.tsx","../../src/core/phone-input.ts","../../src/react/StatCard.tsx","../../src/core/stat-card.ts","../../src/icons/react/registry.ts"],"sourcesContent":["// ============================================================\n// PUBLIC API — REACT bindings\n// Components, the theme engine (hooks/context), and the icon set —\n// all React-specific. Depends on the framework-neutral exports in\n// \"../index\" (published as the \".\" export; this file is published\n// as the \"./react\" subpath export).\n// ============================================================\n\n\n// Theme engine (React)\nexport { NuvoxProvider, withThemeOverride, withAccentOverride, DEFAULT_ACCENT } from \"../theme-engine/NuvoxProvider\";\nexport { ThemedPortal } from \"../theme-engine/ThemedPortal\";\n\n// Components\nexport { Button } from \"./Button\";\nexport { Input } from \"./Input\";\nexport { Textarea } from \"./Textarea\";\nexport { Checkbox } from \"./Checkbox\";\nexport { Radio } from \"./Radio\";\nexport { Toggle } from \"./Toggle\";\nexport { Badge } from \"./Badge\";\nexport { Avatar } from \"./Avatar\";\nexport { Spinner } from \"./Spinner\";\nexport { Divider } from \"./Divider\";\nexport { Card } from \"./Card\";\nexport { Alert } from \"./Alert\";\nexport { Modal } from \"./Modal\";\nexport { Tooltip } from \"./Tooltip\";\nexport { ToastProvider, useToast } from \"./ToastProvider\";\n\n// --- Components added in the foundation-first extension pass ---\n// (built after the initial 15 \"proof\" components, each following\n// CONTRACT.md end to end: pure core + tests + docs).\n// Progress — Category A (feedback), determinate + indeterminate.\nexport { Progress } from \"./Progress\";\n// Tabs + Accordion — Category E (disclosure / in-page navigation).\n// Both compose the shared core/collection nav primitive (Rule 12).\nexport { Tabs, TabList, Tab, TabPanel } from \"./Tabs\";\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionPanel } from \"./Accordion\";\n// Dropdown Menu — Category C (overlay); WAI-ARIA menu button, portalled.\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuLabel,\n} from \"./DropdownMenu\";\n// Select — Category D (combobox + listbox), single + multiple.\nexport { Select } from \"./Select\";\n// Slider — Category B (form/input). One component for single-value\n// and two-thumb range: a plain number is single-thumb, a\n// [number, number] tuple is range mode — see core/slider.ts.\nexport { Slider } from \"./Slider\";\n// Combobox — Category D (editable text field + filtered listbox).\n// Mirrors Select's shape (ThemedPortal, useFloatingPosition,\n// useOverlayBehavior, useClickOutside) but the trigger is real\n// editable text (aria-autocomplete=\"list\") rather than a button.\nexport { Combobox } from \"./Combobox\";\n// Calendar — standalone month-grid, and the same grid DatePicker\n// embeds rather than re-deriving. Zero runtime deps: native\n// Intl/Date only (core/calendar.ts).\nexport { Calendar } from \"./Calendar\";\n// DatePicker — Category D. Composes Input's field shape + the\n// rebuilt Popover (non-modal, real anchor positioning) + Calendar —\n// nothing here is a fourth reimplementation of any of those.\nexport { DatePicker } from \"./DatePicker\";\n// TimePicker — Category D. Not one of the original 42 components,\n// added following the exact same shape DatePicker proved out: Input's\n// field shape + Popover, with Calendar's month grid swapped for a\n// flat scrollable time list (roving-tabIndex real focus, arrow nav\n// via core/collection.ts, same as Calendar's day grid — not\n// active-descendant). See core/timepicker.ts's header.\nexport { TimePicker } from \"./TimePicker\";\n// ColorPicker — Category D. Composes Input's field shape + Popover +\n// a preset swatch grid (keyboard-navigable via core/collection.ts,\n// Rule 12) + the browser's own native <input type=\"color\"> for\n// continuous/arbitrary picking, rather than a hand-rolled hue/\n// saturation canvas. See core/colorpicker.ts's header.\nexport { ColorPicker } from \"./ColorPicker\";\n// Carousel — Category F. Decomposed on paper first (see\n// core/carousel.ts's header): root (controlled active index +\n// autoplay), Viewport (arrow keys + pause-on-hover — Carousel's own\n// baseline per BUILDING-COMPONENTS.md's table, not Rule 11's overlay\n// one), Track, Slide, Previous/Next, Indicators.\nexport { Carousel, CarouselViewport, CarouselTrack, CarouselSlide, CarouselPrevious, CarouselNext, CarouselIndicators } from \"./Carousel\";\n// Timeline — Category A (see core/timeline.ts's header for why,\n// despite being listed as a Category F example earlier in\n// BUILDING-COMPONENTS.md's prose — the table and progress notes are\n// authoritative and place it here). No controlled value, no portal,\n// no index tracking — connector visibility and alternate-side layout\n// are pure CSS by list position.\nexport { Timeline, TimelineItem } from \"./Timeline\";\n// CommandPalette — Category D. No natural trigger (opened however\n// the consumer wants, e.g. a global Cmd+K listener) — uses the same\n// sentinel-ref trick Modal.tsx does for ThemedPortal, and reuses\n// core/collection.ts for arrow-key navigation exactly the way\n// BUILDING-COMPONENTS.md names Command as an intended consumer of\n// it, alongside Select/Combobox.\nexport { CommandPalette } from \"./CommandPalette\";\n// Popover — Category C (overlay). Rebuilt properly this time: real\n// anchor positioning via useFloatingPosition/core/floating.ts (the\n// exact thing the first attempt shipped without and got removed\n// for), plus a `modal` toggle for the Tab-trapping axis DatePicker's\n// calendar panel needs to be false on.\nexport { Popover, PopoverTrigger, PopoverContent, PopoverClose } from \"./Popover\";\n\n// NumberInput — Category B (form/input). Composes core/field.ts's\n// shared shape like every other input; typing is tracked as free\n// text and only clamped/committed on blur, Enter, or a stepper\n// click (see react/NumberInput.tsx's module comment for why).\nexport { NumberInput } from \"./NumberInput\";\n// FileUpload — Category B (form/input). Composes the real Button\n// component for its \"Browse\" trigger (CONTRACT.md Rule 12) rather\n// than hand-styling a second button; drag-and-drop and the hidden\n// native <input type=\"file\"> both funnel through the same\n// accept/size validation in core/file-upload.ts.\nexport { FileUpload } from \"./FileUpload\";\n// Pagination — Category E (navigation/structural). No portal or\n// roving tabindex (BUILDING-COMPONENTS.md's table: neither applies\n// here) — plain in-flow buttons in native tab order, the same as a\n// browser's own pagination links. The page-window-with-ellipses\n// math lives in core/pagination.ts, fully unit-tested there.\nexport { Pagination } from \"./Pagination\";\n// Breadcrumb — Category E (navigation/structural). WAI-ARIA's\n// breadcrumb pattern: a labeled <nav><ol> of real links with\n// aria-current=\"page\" on the trail's last item — no custom keyboard\n// handling needed, the same reasoning as Pagination.\nexport { Breadcrumb } from \"./Breadcrumb\";\n// Skeleton — Category A (static/display). The simplest of the\n// three extension passes: no controlled value, aria-hidden=\"true\"\n// throughout since a loading placeholder has nothing to announce.\nexport { Skeleton } from \"./Skeleton\";\n\n// Table — Category F (complex/stateful). Decomposed on paper first\n// per BUILDING-COMPONENTS.md's own guidance for this category: seven\n// small pieces (Table, TableHeader, TableBody, TableRow, TableHead,\n// TableCell, TableCaption) rather than one component holding all of\n// it. Sort state is controlled by the consumer, the same shape as\n// every value-holding component here; row selection isn't modeled\n// at all — a \"select all\"/row checkbox is just a real Checkbox\n// (Rule 12) placed in a cell, not a feature Table reimplements.\nexport { Table, TableHeader, TableBody, TableRow, TableHead, TableCell, TableCaption } from \"./Table\";\n// Drawer (a.k.a. \"Sheet\") — Category C (overlay). A close copy of\n// Modal.tsx's own pattern (same ThemedPortal sentinel trick, same\n// useOverlayBehavior wiring, same ref-forwarding-into-a-portaled-node\n// technique) with one axis added: which edge the panel slides in\n// from, and \"size\" measuring width or height depending on that side.\nexport { Drawer } from \"./Drawer\";\n// ContextMenu — Category C (overlay). Structurally DropdownMenu's\n// sibling — same portal/overlay/keyboard-nav infrastructure reused\n// via core/collection.ts — with the one real difference being what\n// it's anchored to: a right-click point instead of a persistent\n// trigger element's own bounding rect (handled via a zero-size\n// \"virtual anchor\" positioned at the click — see the module comment\n// in react/ContextMenu.tsx). Reuses DropdownMenu's own item/menu\n// classes and pure logic rather than reinventing either.\nexport { ContextMenu, ContextMenuTrigger, ContextMenuContent, ContextMenuItem, ContextMenuSeparator, ContextMenuLabel } from \"./ContextMenu\";\n\n// Rating — Category B (form/input), not one of the original 42.\n// Follows Slider's precedent rather than Input's: one role=\"slider\"\n// region (not N separately-tabbable stars), ref forwards to that\n// root the same way Slider forwards to its thumb container.\nexport { Rating } from \"./Rating\";\n// OTPInput — Category B. Covers both \"OTP Input\" and \"Pin Input\"\n// from BUILDING-COMPONENTS.md's list with one component: a `mask`\n// prop renders the PIN-entry dot look instead of the code\n// characters, since the two are the same segmented-box pattern\n// (see core/otp-input.ts's module comment).\nexport { OTPInput } from \"./OTPInput\";\n// PhoneInput — Category B. Composes Select (inside Input's own\n// prefix slot) for the country/dial-code picker rather than\n// reimplementing a listbox — see core/phone-input.ts's module\n// comment for why this satisfies both CONTRACT.md Rule 6 (portals,\n// transitively through Select) and the BUILDING-COMPONENTS.md\n// table's ❌ on PhoneInput's own ThemedPortal column (it never calls\n// ThemedPortal directly).\nexport { PhoneInput } from \"./PhoneInput\";\n// StatCard — Category A. Composes the real Card for chrome (Rule\n// 12); trend up/down is colored from the semantic success/danger\n// tokens, never the accent system (Rule 5b).\nexport { StatCard } from \"./StatCard\";\nexport type { ShowToastOptions } from \"./ToastProvider\";\nexport type { BreadcrumbItem } from \"./Breadcrumb\";\nexport type { FileUploadRejection } from \"./FileUpload\";\n\n// Icons — 361 total, generated from the original design set (see\n// scripts/generate-icons.mjs). Every icon shares the same interface\n// (IconProps: size, plus any standard SVG prop) and uses\n// stroke=\"currentColor\", so changing an icon's color is just CSS —\n// no icon-specific color prop needed. ICON_REGISTRY is a name/Component\n// list used by the docs site's browsable icon gallery; most consumers\n// just want the named exports below.\nexport type { IconProps } from \"../icons/react/types\";\nexport type { IconRegistryEntry } from \"../icons/react/registry\";\nexport { ICON_REGISTRY } from \"../icons/react/registry\";\nexport { AlarmCheckIcon } from \"../icons/react/AlarmCheckIcon\";\nexport { AlarmClockIcon } from \"../icons/react/AlarmClockIcon\";\nexport { AlarmMinusIcon } from \"../icons/react/AlarmMinusIcon\";\nexport { AlarmOffIcon } from \"../icons/react/AlarmOffIcon\";\nexport { AlarmPlusIcon } from \"../icons/react/AlarmPlusIcon\";\nexport { AlertIcon } from \"../icons/react/AlertIcon\";\nexport { AlignBottomIcon } from \"../icons/react/AlignBottomIcon\";\nexport { AlignCenterIcon } from \"../icons/react/AlignCenterIcon\";\nexport { AlignJustifyIcon } from \"../icons/react/AlignJustifyIcon\";\nexport { AlignLeftIcon } from \"../icons/react/AlignLeftIcon\";\nexport { AlignRightIcon } from \"../icons/react/AlignRightIcon\";\nexport { AlignTopIcon } from \"../icons/react/AlignTopIcon\";\nexport { AnchorIcon } from \"../icons/react/AnchorIcon\";\nexport { AngryIcon } from \"../icons/react/AngryIcon\";\nexport { AnnoyedIcon } from \"../icons/react/AnnoyedIcon\";\nexport { AntennaIcon } from \"../icons/react/AntennaIcon\";\nexport { ArrowDownIcon } from \"../icons/react/ArrowDownIcon\";\nexport { ArrowDownLeftIcon } from \"../icons/react/ArrowDownLeftIcon\";\nexport { ArrowDownRightIcon } from \"../icons/react/ArrowDownRightIcon\";\nexport { ArrowLeftIcon } from \"../icons/react/ArrowLeftIcon\";\nexport { ArrowLeftRightIcon } from \"../icons/react/ArrowLeftRightIcon\";\nexport { ArrowRightIcon } from \"../icons/react/ArrowRightIcon\";\nexport { ArrowUpDownIcon } from \"../icons/react/ArrowUpDownIcon\";\nexport { ArrowUpIcon } from \"../icons/react/ArrowUpIcon\";\nexport { ArrowUpLeftIcon } from \"../icons/react/ArrowUpLeftIcon\";\nexport { ArrowUpRightIcon } from \"../icons/react/ArrowUpRightIcon\";\nexport { AtSignIcon } from \"../icons/react/AtSignIcon\";\nexport { AwardIcon } from \"../icons/react/AwardIcon\";\nexport { BabyIcon } from \"../icons/react/BabyIcon\";\nexport { BadgeIcon } from \"../icons/react/BadgeIcon\";\nexport { BanIcon } from \"../icons/react/BanIcon\";\nexport { BankIcon } from \"../icons/react/BankIcon\";\nexport { BatteryChargeIcon } from \"../icons/react/BatteryChargeIcon\";\nexport { BatteryFullIcon } from \"../icons/react/BatteryFullIcon\";\nexport { BatteryIcon } from \"../icons/react/BatteryIcon\";\nexport { BatteryLowIcon } from \"../icons/react/BatteryLowIcon\";\nexport { BellDotIcon } from \"../icons/react/BellDotIcon\";\nexport { BellIcon } from \"../icons/react/BellIcon\";\nexport { BellOffIcon } from \"../icons/react/BellOffIcon\";\nexport { BikeIcon } from \"../icons/react/BikeIcon\";\nexport { BirdIcon } from \"../icons/react/BirdIcon\";\nexport { BitcoinIcon } from \"../icons/react/BitcoinIcon\";\nexport { BluetoothIcon } from \"../icons/react/BluetoothIcon\";\nexport { BluetoothOffIcon } from \"../icons/react/BluetoothOffIcon\";\nexport { BoatIcon } from \"../icons/react/BoatIcon\";\nexport { BoltIcon } from \"../icons/react/BoltIcon\";\nexport { BombIcon } from \"../icons/react/BombIcon\";\nexport { BookIcon } from \"../icons/react/BookIcon\";\nexport { BookmarkFilledIcon } from \"../icons/react/BookmarkFilledIcon\";\nexport { BookmarkIcon } from \"../icons/react/BookmarkIcon\";\nexport { BotIcon } from \"../icons/react/BotIcon\";\nexport { BoxIcon } from \"../icons/react/BoxIcon\";\nexport { BrainIcon } from \"../icons/react/BrainIcon\";\nexport { BriefcaseIcon } from \"../icons/react/BriefcaseIcon\";\nexport { BugIcon } from \"../icons/react/BugIcon\";\nexport { BuildingIcon } from \"../icons/react/BuildingIcon\";\nexport { BusIcon } from \"../icons/react/BusIcon\";\nexport { CalculatorIcon } from \"../icons/react/CalculatorIcon\";\nexport { CalendarAddIcon } from \"../icons/react/CalendarAddIcon\";\nexport { CalendarIcon } from \"../icons/react/CalendarIcon\";\nexport { CameraIcon } from \"../icons/react/CameraIcon\";\nexport { CameraOffIcon } from \"../icons/react/CameraOffIcon\";\nexport { CameraSwitchIcon } from \"../icons/react/CameraSwitchIcon\";\nexport { CandlestickIcon } from \"../icons/react/CandlestickIcon\";\nexport { CaptionsIcon } from \"../icons/react/CaptionsIcon\";\nexport { CaptionsOffIcon } from \"../icons/react/CaptionsOffIcon\";\nexport { CarIcon } from \"../icons/react/CarIcon\";\nexport { CashIcon } from \"../icons/react/CashIcon\";\nexport { CastIcon } from \"../icons/react/CastIcon\";\nexport { CatIcon } from \"../icons/react/CatIcon\";\nexport { CctvIcon } from \"../icons/react/CctvIcon\";\nexport { CentIcon } from \"../icons/react/CentIcon\";\nexport { CentSymbolIcon } from \"../icons/react/CentSymbolIcon\";\nexport { ChartDownIcon } from \"../icons/react/ChartDownIcon\";\nexport { ChartUpIcon } from \"../icons/react/ChartUpIcon\";\nexport { CheckCircleIcon } from \"../icons/react/CheckCircleIcon\";\nexport { CheckIcon } from \"../icons/react/CheckIcon\";\nexport { ChevronDownIcon } from \"../icons/react/ChevronDownIcon\";\nexport { ChevronFirstIcon } from \"../icons/react/ChevronFirstIcon\";\nexport { ChevronLastIcon } from \"../icons/react/ChevronLastIcon\";\nexport { ChevronLeftIcon } from \"../icons/react/ChevronLeftIcon\";\nexport { ChevronRightIcon } from \"../icons/react/ChevronRightIcon\";\nexport { ChevronUpIcon } from \"../icons/react/ChevronUpIcon\";\nexport { ChevronsDownIcon } from \"../icons/react/ChevronsDownIcon\";\nexport { ChevronsLeftIcon } from \"../icons/react/ChevronsLeftIcon\";\nexport { ChevronsRightIcon } from \"../icons/react/ChevronsRightIcon\";\nexport { ChevronsUpIcon } from \"../icons/react/ChevronsUpIcon\";\nexport { CigaretteIcon } from \"../icons/react/CigaretteIcon\";\nexport { CigaretteOffIcon } from \"../icons/react/CigaretteOffIcon\";\nexport { CircleIcon } from \"../icons/react/CircleIcon\";\nexport { ClapperboardIcon } from \"../icons/react/ClapperboardIcon\";\nexport { ClipboardIcon } from \"../icons/react/ClipboardIcon\";\nexport { ClockIcon } from \"../icons/react/ClockIcon\";\nexport { CloseIcon } from \"../icons/react/CloseIcon\";\nexport { CloudDownloadIcon } from \"../icons/react/CloudDownloadIcon\";\nexport { CloudIcon } from \"../icons/react/CloudIcon\";\nexport { CloudLightningIcon } from \"../icons/react/CloudLightningIcon\";\nexport { CloudMoonIcon } from \"../icons/react/CloudMoonIcon\";\nexport { CloudRainIcon } from \"../icons/react/CloudRainIcon\";\nexport { CloudSnowIcon } from \"../icons/react/CloudSnowIcon\";\nexport { CloudSunIcon } from \"../icons/react/CloudSunIcon\";\nexport { CloudUploadIcon } from \"../icons/react/CloudUploadIcon\";\nexport { CloudyIcon } from \"../icons/react/CloudyIcon\";\nexport { CodeIcon } from \"../icons/react/CodeIcon\";\nexport { CoinIcon } from \"../icons/react/CoinIcon\";\nexport { ColumnIcon } from \"../icons/react/ColumnIcon\";\nexport { CompassIcon } from \"../icons/react/CompassIcon\";\nexport { ContactIcon } from \"../icons/react/ContactIcon\";\nexport { CopyIcon } from \"../icons/react/CopyIcon\";\nexport { CornerDownLeftIcon } from \"../icons/react/CornerDownLeftIcon\";\nexport { CornerDownRightIcon } from \"../icons/react/CornerDownRightIcon\";\nexport { CornerUpLeftIcon } from \"../icons/react/CornerUpLeftIcon\";\nexport { CornerUpRightIcon } from \"../icons/react/CornerUpRightIcon\";\nexport { CpuIcon } from \"../icons/react/CpuIcon\";\nexport { CreativeCommonsIcon } from \"../icons/react/CreativeCommonsIcon\";\nexport { CreditCardIcon } from \"../icons/react/CreditCardIcon\";\nexport { CropIcon } from \"../icons/react/CropIcon\";\nexport { CrossCircleIcon } from \"../icons/react/CrossCircleIcon\";\nexport { CrownIcon } from \"../icons/react/CrownIcon\";\nexport { CutIcon } from \"../icons/react/CutIcon\";\nexport { CycleIcon } from \"../icons/react/CycleIcon\";\nexport { DatabaseIcon } from \"../icons/react/DatabaseIcon\";\nexport { DiaryIcon } from \"../icons/react/DiaryIcon\";\nexport { DiceFiveIcon } from \"../icons/react/DiceFiveIcon\";\nexport { DiceFourIcon } from \"../icons/react/DiceFourIcon\";\nexport { DiceOneIcon } from \"../icons/react/DiceOneIcon\";\nexport { DiceSixIcon } from \"../icons/react/DiceSixIcon\";\nexport { DiceThreeIcon } from \"../icons/react/DiceThreeIcon\";\nexport { DiceTwoIcon } from \"../icons/react/DiceTwoIcon\";\nexport { DirectionDownIcon } from \"../icons/react/DirectionDownIcon\";\nexport { DirectionLeftIcon } from \"../icons/react/DirectionLeftIcon\";\nexport { DirectionRightIcon } from \"../icons/react/DirectionRightIcon\";\nexport { DirectionUpIcon } from \"../icons/react/DirectionUpIcon\";\nexport { DiscordFilledIcon } from \"../icons/react/DiscordFilledIcon\";\nexport { DiscordIcon } from \"../icons/react/DiscordIcon\";\nexport { DislikeIcon } from \"../icons/react/DislikeIcon\";\nexport { DogIcon } from \"../icons/react/DogIcon\";\nexport { DollarIcon } from \"../icons/react/DollarIcon\";\nexport { DollarSymbolIcon } from \"../icons/react/DollarSymbolIcon\";\nexport { DotIcon } from \"../icons/react/DotIcon\";\nexport { DownloadIcon } from \"../icons/react/DownloadIcon\";\nexport { DragIcon } from \"../icons/react/DragIcon\";\nexport { DribbbleFilledIcon } from \"../icons/react/DribbbleFilledIcon\";\nexport { DribbbleIcon } from \"../icons/react/DribbbleIcon\";\nexport { DropletIcon } from \"../icons/react/DropletIcon\";\nexport { DropletOffIcon } from \"../icons/react/DropletOffIcon\";\nexport { EditIcon } from \"../icons/react/EditIcon\";\nexport { EmergencyIcon } from \"../icons/react/EmergencyIcon\";\nexport { EqualIcon } from \"../icons/react/EqualIcon\";\nexport { EraserIcon } from \"../icons/react/EraserIcon\";\nexport { EthernetIcon } from \"../icons/react/EthernetIcon\";\nexport { EuroIcon } from \"../icons/react/EuroIcon\";\nexport { EuroSymbolIcon } from \"../icons/react/EuroSymbolIcon\";\nexport { ExpandIcon } from \"../icons/react/ExpandIcon\";\nexport { ExternalLinkIcon } from \"../icons/react/ExternalLinkIcon\";\nexport { EyeClosedIcon } from \"../icons/react/EyeClosedIcon\";\nexport { EyeIcon } from \"../icons/react/EyeIcon\";\nexport { EyeOffIcon } from \"../icons/react/EyeOffIcon\";\nexport { FacebookFilledIcon } from \"../icons/react/FacebookFilledIcon\";\nexport { FacebookIcon } from \"../icons/react/FacebookIcon\";\nexport { FactoryIcon } from \"../icons/react/FactoryIcon\";\nexport { FastForwardIcon } from \"../icons/react/FastForwardIcon\";\nexport { FemaleGenderIcon } from \"../icons/react/FemaleGenderIcon\";\nexport { FigmaFilledIcon } from \"../icons/react/FigmaFilledIcon\";\nexport { FigmaIcon } from \"../icons/react/FigmaIcon\";\nexport { FileArchiveIcon } from \"../icons/react/FileArchiveIcon\";\nexport { FileAudioIcon } from \"../icons/react/FileAudioIcon\";\nexport { FileChartIcon } from \"../icons/react/FileChartIcon\";\nexport { FileCheckIcon } from \"../icons/react/FileCheckIcon\";\nexport { FileCodeIcon } from \"../icons/react/FileCodeIcon\";\nexport { FileCogIcon } from \"../icons/react/FileCogIcon\";\nexport { FileCssIcon } from \"../icons/react/FileCssIcon\";\nexport { FileDatabaseIcon } from \"../icons/react/FileDatabaseIcon\";\nexport { FileDownloadIcon } from \"../icons/react/FileDownloadIcon\";\nexport { FileEditIcon } from \"../icons/react/FileEditIcon\";\nexport { FileEnvIcon } from \"../icons/react/FileEnvIcon\";\nexport { FileHeartIcon } from \"../icons/react/FileHeartIcon\";\nexport { FileHtmlIcon } from \"../icons/react/FileHtmlIcon\";\nexport { FileIcon } from \"../icons/react/FileIcon\";\nexport { FileImageIcon } from \"../icons/react/FileImageIcon\";\nexport { FileJsIcon } from \"../icons/react/FileJsIcon\";\nexport { FileJsonIcon } from \"../icons/react/FileJsonIcon\";\nexport { FileJsxIcon } from \"../icons/react/FileJsxIcon\";\nexport { FileLockIcon } from \"../icons/react/FileLockIcon\";\nexport { FileMdIcon } from \"../icons/react/FileMdIcon\";\nexport { FileMinusIcon } from \"../icons/react/FileMinusIcon\";\nexport { FilePdfIcon } from \"../icons/react/FilePdfIcon\";\nexport { FilePlusIcon } from \"../icons/react/FilePlusIcon\";\nexport { FilePresentationIcon } from \"../icons/react/FilePresentationIcon\";\nexport { FileSearchIcon } from \"../icons/react/FileSearchIcon\";\nexport { FileSpreadsheetIcon } from \"../icons/react/FileSpreadsheetIcon\";\nexport { FileTextIcon } from \"../icons/react/FileTextIcon\";\nexport { FileTsIcon } from \"../icons/react/FileTsIcon\";\nexport { FileTsxIcon } from \"../icons/react/FileTsxIcon\";\nexport { FileUserIcon } from \"../icons/react/FileUserIcon\";\nexport { FileVideoIcon } from \"../icons/react/FileVideoIcon\";\nexport { FileXIcon } from \"../icons/react/FileXIcon\";\nexport { FilmIcon } from \"../icons/react/FilmIcon\";\nexport { FilterIcon } from \"../icons/react/FilterIcon\";\nexport { FingerprintIcon } from \"../icons/react/FingerprintIcon\";\nexport { FireExtinguisherIcon } from \"../icons/react/FireExtinguisherIcon\";\nexport { FishIcon } from \"../icons/react/FishIcon\";\nexport { FlagIcon } from \"../icons/react/FlagIcon\";\nexport { FlagOffIcon } from \"../icons/react/FlagOffIcon\";\nexport { FlameIcon } from \"../icons/react/FlameIcon\";\nexport { FlipHorizontalIcon } from \"../icons/react/FlipHorizontalIcon\";\nexport { FlipVerticalIcon } from \"../icons/react/FlipVerticalIcon\";\nexport { FlowerIcon } from \"../icons/react/FlowerIcon\";\nexport { FolderArchiveIcon } from \"../icons/react/FolderArchiveIcon\";\nexport { FolderCheckIcon } from \"../icons/react/FolderCheckIcon\";\nexport { FolderCogIcon } from \"../icons/react/FolderCogIcon\";\nexport { FolderDownIcon } from \"../icons/react/FolderDownIcon\";\nexport { FolderDownloadIcon } from \"../icons/react/FolderDownloadIcon\";\nexport { FolderEditIcon } from \"../icons/react/FolderEditIcon\";\nexport { FolderHeartIcon } from \"../icons/react/FolderHeartIcon\";\nexport { FolderIcon } from \"../icons/react/FolderIcon\";\nexport { FolderLockIcon } from \"../icons/react/FolderLockIcon\";\nexport { FolderMinusIcon } from \"../icons/react/FolderMinusIcon\";\nexport { FolderOpenIcon } from \"../icons/react/FolderOpenIcon\";\nexport { FolderPlusIcon } from \"../icons/react/FolderPlusIcon\";\nexport { FolderSearchIcon } from \"../icons/react/FolderSearchIcon\";\nexport { FolderXIcon } from \"../icons/react/FolderXIcon\";\nexport { FrancIcon } from \"../icons/react/FrancIcon\";\nexport { FrancSymbolIcon } from \"../icons/react/FrancSymbolIcon\";\nexport { FrownIcon } from \"../icons/react/FrownIcon\";\nexport { GamepadIcon } from \"../icons/react/GamepadIcon\";\nexport { GemIcon } from \"../icons/react/GemIcon\";\nexport { GhostIcon } from \"../icons/react/GhostIcon\";\nexport { GiftIcon } from \"../icons/react/GiftIcon\";\nexport { GithubFilledIcon } from \"../icons/react/GithubFilledIcon\";\nexport { GithubIcon } from \"../icons/react/GithubIcon\";\nexport { GlobeIcon } from \"../icons/react/GlobeIcon\";\nexport { GpuIcon } from \"../icons/react/GpuIcon\";\nexport { GraduationCapIcon } from \"../icons/react/GraduationCapIcon\";\nexport { GridIcon } from \"../icons/react/GridIcon\";\nexport { GroupIcon } from \"../icons/react/GroupIcon\";\nexport { HandshakeIcon } from \"../icons/react/HandshakeIcon\";\nexport { HardDriveIcon } from \"../icons/react/HardDriveIcon\";\nexport { HdmiIcon } from \"../icons/react/HdmiIcon\";\nexport { HeadphonesIcon } from \"../icons/react/HeadphonesIcon\";\nexport { HeadphonesOffIcon } from \"../icons/react/HeadphonesOffIcon\";\nexport { HeartBrokenIcon } from \"../icons/react/HeartBrokenIcon\";\nexport { HeartFilledIcon } from \"../icons/react/HeartFilledIcon\";\nexport { HeartIcon } from \"../icons/react/HeartIcon\";\nexport { HelicopterIcon } from \"../icons/react/HelicopterIcon\";\nexport { HelpIcon } from \"../icons/react/HelpIcon\";\nexport { HeptagonIcon } from \"../icons/react/HeptagonIcon\";\nexport { HexagonIcon } from \"../icons/react/HexagonIcon\";\nexport { HighlighterIcon } from \"../icons/react/HighlighterIcon\";\nexport { HistoryIcon } from \"../icons/react/HistoryIcon\";\nexport { HomeIcon } from \"../icons/react/HomeIcon\";\nexport { HospitalIcon } from \"../icons/react/HospitalIcon\";\nexport { HourglassIcon } from \"../icons/react/HourglassIcon\";\nexport { IdCardIcon } from \"../icons/react/IdCardIcon\";\nexport { ImageIcon } from \"../icons/react/ImageIcon\";\nexport { InboxIcon } from \"../icons/react/InboxIcon\";\nexport { IndentIcon } from \"../icons/react/IndentIcon\";\nexport { InfoIcon } from \"../icons/react/InfoIcon\";\nexport { InstagramFilledIcon } from \"../icons/react/InstagramFilledIcon\";\nexport { InstagramIcon } from \"../icons/react/InstagramIcon\";\nexport { JoystickIcon } from \"../icons/react/JoystickIcon\";\nexport { KeyIcon } from \"../icons/react/KeyIcon\";\nexport { KeyboardIcon } from \"../icons/react/KeyboardIcon\";\nexport { LaptopIcon } from \"../icons/react/LaptopIcon\";\nexport { LaughIcon } from \"../icons/react/LaughIcon\";\nexport { LayersIcon } from \"../icons/react/LayersIcon\";\nexport { LayersPlusIcon } from \"../icons/react/LayersPlusIcon\";\nexport { LayoutGridIcon } from \"../icons/react/LayoutGridIcon\";\nexport { LayoutKanbanIcon } from \"../icons/react/LayoutKanbanIcon\";\nexport { LayoutListIcon } from \"../icons/react/LayoutListIcon\";\nexport { LeafIcon } from \"../icons/react/LeafIcon\";\nexport { LightbulbIcon } from \"../icons/react/LightbulbIcon\";\nexport { LightbulbOffIcon } from \"../icons/react/LightbulbOffIcon\";\nexport { LikeIcon } from \"../icons/react/LikeIcon\";\nexport { LineIcon } from \"../icons/react/LineIcon\";\nexport { LinkIcon } from \"../icons/react/LinkIcon\";\nexport { LinkedinFilledIcon } from \"../icons/react/LinkedinFilledIcon\";\nexport { LinkedinIcon } from \"../icons/react/LinkedinIcon\";\nexport { LiraIcon } from \"../icons/react/LiraIcon\";\nexport { LiraSymbolIcon } from \"../icons/react/LiraSymbolIcon\";\nexport { ListIcon } from \"../icons/react/ListIcon\";\nexport { LoaderIcon } from \"../icons/react/LoaderIcon\";\nexport { LoaderSpinnerIcon } from \"../icons/react/LoaderSpinnerIcon\";\nexport { LockIcon } from \"../icons/react/LockIcon\";\nexport { MagicIcon } from \"../icons/react/MagicIcon\";\nexport { MailIcon } from \"../icons/react/MailIcon\";\nexport { MaleGenderIcon } from \"../icons/react/MaleGenderIcon\";\nexport { MapPinIcon } from \"../icons/react/MapPinIcon\";\nexport { MaximizeIcon } from \"../icons/react/MaximizeIcon\";\nexport { MedalIcon } from \"../icons/react/MedalIcon\";\nexport { MedicineIcon } from \"../icons/react/MedicineIcon\";\nexport { MehIcon } from \"../icons/react/MehIcon\";\nexport { MenuIcon } from \"../icons/react/MenuIcon\";\nexport { MergeIcon } from \"../icons/react/MergeIcon\";\nexport { MessageCircleIcon } from \"../icons/react/MessageCircleIcon\";\nexport { MessageSquareIcon } from \"../icons/react/MessageSquareIcon\";\nexport { MicIcon } from \"../icons/react/MicIcon\";\nexport { MicOffIcon } from \"../icons/react/MicOffIcon\";\nexport { MinimizeIcon } from \"../icons/react/MinimizeIcon\";\nexport { MinusIcon } from \"../icons/react/MinusIcon\";\nexport { MonitorIcon } from \"../icons/react/MonitorIcon\";\nexport { MoonIcon } from \"../icons/react/MoonIcon\";\nexport { MoreHorizontalIcon } from \"../icons/react/MoreHorizontalIcon\";\nexport { MoreVerticalIcon } from \"../icons/react/MoreVerticalIcon\";\nexport { MountainIcon } from \"../icons/react/MountainIcon\";\nexport { MouseIcon } from \"../icons/react/MouseIcon\";\nexport { MoveIcon } from \"../icons/react/MoveIcon\";\nexport { MusicIcon } from \"../icons/react/MusicIcon\";\nexport { OctagonIcon } from \"../icons/react/OctagonIcon\";\nexport { OutboxIcon } from \"../icons/react/OutboxIcon\";\nexport { OutdentIcon } from \"../icons/react/OutdentIcon\";\nexport { PackageIcon } from \"../icons/react/PackageIcon\";\nexport { PackageOpenIcon } from \"../icons/react/PackageOpenIcon\";\nexport { PaintbrushIcon } from \"../icons/react/PaintbrushIcon\";\nexport { PaletteIcon } from \"../icons/react/PaletteIcon\";\nexport { PanelBottomIcon } from \"../icons/react/PanelBottomIcon\";\nexport { PanelLeftIcon } from \"../icons/react/PanelLeftIcon\";\nexport { PanelRightIcon } from \"../icons/react/PanelRightIcon\";\nexport { PanelTopIcon } from \"../icons/react/PanelTopIcon\";\nexport { PaperclipIcon } from \"../icons/react/PaperclipIcon\";\nexport { PassportIcon } from \"../icons/react/PassportIcon\";\nexport { PauseIcon } from \"../icons/react/PauseIcon\";\nexport { PawIcon } from \"../icons/react/PawIcon\";\nexport { PencilIcon } from \"../icons/react/PencilIcon\";\nexport { PentagonIcon } from \"../icons/react/PentagonIcon\";\nexport { PhoneCallIcon } from \"../icons/react/PhoneCallIcon\";\nexport { PhoneIcon } from \"../icons/react/PhoneIcon\";\nexport { PhoneMissedIcon } from \"../icons/react/PhoneMissedIcon\";\nexport { PhoneOffIcon } from \"../icons/react/PhoneOffIcon\";\nexport { PictureInPictureIcon } from \"../icons/react/PictureInPictureIcon\";\nexport { PiggyBankIcon } from \"../icons/react/PiggyBankIcon\";\nexport { PinIcon } from \"../icons/react/PinIcon\";\nexport { PlayIcon } from \"../icons/react/PlayIcon\";\nexport { PlaylistIcon } from \"../icons/react/PlaylistIcon\";\nexport { PlusIcon } from \"../icons/react/PlusIcon\";\nexport { PoundIcon } from \"../icons/react/PoundIcon\";\nexport { PoundSymbolIcon } from \"../icons/react/PoundSymbolIcon\";\nexport { PowerIcon } from \"../icons/react/PowerIcon\";\nexport { PowerOffIcon } from \"../icons/react/PowerOffIcon\";\nexport { PrintIcon } from \"../icons/react/PrintIcon\";\nexport { PrinterIcon } from \"../icons/react/PrinterIcon\";\nexport { ProjectorIcon } from \"../icons/react/ProjectorIcon\";\nexport { QrIcon } from \"../icons/react/QrIcon\";\nexport { RadioIcon } from \"../icons/react/RadioIcon\";\nexport { RadioOffIcon } from \"../icons/react/RadioOffIcon\";\nexport { RadioTowerIcon } from \"../icons/react/RadioTowerIcon\";\nexport { RainbowIcon } from \"../icons/react/RainbowIcon\";\nexport { RectangleIcon } from \"../icons/react/RectangleIcon\";\nexport { RecycleIcon } from \"../icons/react/RecycleIcon\";\nexport { RedditFilledIcon } from \"../icons/react/RedditFilledIcon\";\nexport { RedditIcon } from \"../icons/react/RedditIcon\";\nexport { RedoIcon } from \"../icons/react/RedoIcon\";\nexport { RefreshIcon } from \"../icons/react/RefreshIcon\";\nexport { RepeatIcon } from \"../icons/react/RepeatIcon\";\nexport { RepeatOnceIcon } from \"../icons/react/RepeatOnceIcon\";\nexport { ReplyAllIcon } from \"../icons/react/ReplyAllIcon\";\nexport { ReplyIcon } from \"../icons/react/ReplyIcon\";\nexport { ResizeIcon } from \"../icons/react/ResizeIcon\";\nexport { RibbonIcon } from \"../icons/react/RibbonIcon\";\nexport { RocketIcon } from \"../icons/react/RocketIcon\";\nexport { RotateCcwIcon } from \"../icons/react/RotateCcwIcon\";\nexport { RotateCwIcon } from \"../icons/react/RotateCwIcon\";\nexport { RouterIcon } from \"../icons/react/RouterIcon\";\nexport { RowIcon } from \"../icons/react/RowIcon\";\nexport { RubleIcon } from \"../icons/react/RubleIcon\";\nexport { RubleSymbolIcon } from \"../icons/react/RubleSymbolIcon\";\nexport { RupeeIcon } from \"../icons/react/RupeeIcon\";\nexport { RupeeSymbolIcon } from \"../icons/react/RupeeSymbolIcon\";\nexport { SatelliteIcon } from \"../icons/react/SatelliteIcon\";\nexport { SaveIcon } from \"../icons/react/SaveIcon\";\nexport { ScanEyeIcon } from \"../icons/react/ScanEyeIcon\";\nexport { ScanIcon } from \"../icons/react/ScanIcon\";\nexport { SchoolIcon } from \"../icons/react/SchoolIcon\";\nexport { ScreenShareIcon } from \"../icons/react/ScreenShareIcon\";\nexport { ScreenShareOffIcon } from \"../icons/react/ScreenShareOffIcon\";\nexport { SearchIcon } from \"../icons/react/SearchIcon\";\nexport { SendAngledIcon } from \"../icons/react/SendAngledIcon\";\nexport { SendDiagonalIcon } from \"../icons/react/SendDiagonalIcon\";\nexport { ServerIcon } from \"../icons/react/ServerIcon\";\nexport { SettingsIcon } from \"../icons/react/SettingsIcon\";\nexport { ShareIcon } from \"../icons/react/ShareIcon\";\nexport { ShieldCheckIcon } from \"../icons/react/ShieldCheckIcon\";\nexport { ShieldOffIcon } from \"../icons/react/ShieldOffIcon\";\nexport { ShieldUserIcon } from \"../icons/react/ShieldUserIcon\";\nexport { ShoppingBagIcon } from \"../icons/react/ShoppingBagIcon\";\nexport { ShoppingCartIcon } from \"../icons/react/ShoppingCartIcon\";\nexport { ShrinkIcon } from \"../icons/react/ShrinkIcon\";\nexport { SidebarLeftIcon } from \"../icons/react/SidebarLeftIcon\";\nexport { SidebarRightIcon } from \"../icons/react/SidebarRightIcon\";\nexport { SignatureIcon } from \"../icons/react/SignatureIcon\";\nexport { SmartphoneChargingIcon } from \"../icons/react/SmartphoneChargingIcon\";\nexport { SmartphoneIcon } from \"../icons/react/SmartphoneIcon\";\nexport { SmileIcon } from \"../icons/react/SmileIcon\";\nexport { SnowflakeIcon } from \"../icons/react/SnowflakeIcon\";\nexport { SortAscIcon } from \"../icons/react/SortAscIcon\";\nexport { SortDescIcon } from \"../icons/react/SortDescIcon\";\nexport { SparkleIcon } from \"../icons/react/SparkleIcon\";\nexport { SpeakerIcon } from \"../icons/react/SpeakerIcon\";\nexport { SplitHorizontalIcon } from \"../icons/react/SplitHorizontalIcon\";\nexport { SplitVerticalIcon } from \"../icons/react/SplitVerticalIcon\";\nexport { SquareIcon } from \"../icons/react/SquareIcon\";\nexport { StampIcon } from \"../icons/react/StampIcon\";\nexport { StarFilledIcon } from \"../icons/react/StarFilledIcon\";\nexport { StarHalfFilledIcon } from \"../icons/react/StarHalfFilledIcon\";\nexport { StarHalfIcon } from \"../icons/react/StarHalfIcon\";\nexport { StarIcon } from \"../icons/react/StarIcon\";\nexport { StepBackIcon } from \"../icons/react/StepBackIcon\";\nexport { StepForwardIcon } from \"../icons/react/StepForwardIcon\";\nexport { StickyNoteIcon } from \"../icons/react/StickyNoteIcon\";\nexport { StopIcon } from \"../icons/react/StopIcon\";\nexport { StopwatchIcon } from \"../icons/react/StopwatchIcon\";\nexport { StoreIcon } from \"../icons/react/StoreIcon\";\nexport { SunIcon } from \"../icons/react/SunIcon\";\nexport { TableOfContentsIcon } from \"../icons/react/TableOfContentsIcon\";\nexport { TabletIcon } from \"../icons/react/TabletIcon\";\nexport { TagIcon } from \"../icons/react/TagIcon\";\nexport { TelegramFilledIcon } from \"../icons/react/TelegramFilledIcon\";\nexport { TelegramIcon } from \"../icons/react/TelegramIcon\";\nexport { TerminalIcon } from \"../icons/react/TerminalIcon\";\nexport { TerminalSquareIcon } from \"../icons/react/TerminalSquareIcon\";\nexport { ThermometerIcon } from \"../icons/react/ThermometerIcon\";\nexport { ThermometerSnowflakeIcon } from \"../icons/react/ThermometerSnowflakeIcon\";\nexport { ThermometerSunIcon } from \"../icons/react/ThermometerSunIcon\";\nexport { TicketAddIcon } from \"../icons/react/TicketAddIcon\";\nexport { TicketCancelIcon } from \"../icons/react/TicketCancelIcon\";\nexport { TicketCheckIcon } from \"../icons/react/TicketCheckIcon\";\nexport { TicketDiscountIcon } from \"../icons/react/TicketDiscountIcon\";\nexport { TicketIcon } from \"../icons/react/TicketIcon\";\nexport { TimerIcon } from \"../icons/react/TimerIcon\";\nexport { ToggleLeftIcon } from \"../icons/react/ToggleLeftIcon\";\nexport { ToggleRightIcon } from \"../icons/react/ToggleRightIcon\";\nexport { ToiletIcon } from \"../icons/react/ToiletIcon\";\nexport { TorchIcon } from \"../icons/react/TorchIcon\";\nexport { TorchOffIcon } from \"../icons/react/TorchOffIcon\";\nexport { TornadoIcon } from \"../icons/react/TornadoIcon\";\nexport { TrademarkIcon } from \"../icons/react/TrademarkIcon\";\nexport { TrainIcon } from \"../icons/react/TrainIcon\";\nexport { TransgenderIcon } from \"../icons/react/TransgenderIcon\";\nexport { TrashIcon } from \"../icons/react/TrashIcon\";\nexport { TreeIcon } from \"../icons/react/TreeIcon\";\nexport { TrendingDownIcon } from \"../icons/react/TrendingDownIcon\";\nexport { TrendingUpDownIcon } from \"../icons/react/TrendingUpDownIcon\";\nexport { TrendingUpIcon } from \"../icons/react/TrendingUpIcon\";\nexport { TriangleIcon } from \"../icons/react/TriangleIcon\";\nexport { TrophyIcon } from \"../icons/react/TrophyIcon\";\nexport { TruckIcon } from \"../icons/react/TruckIcon\";\nexport { TvIcon } from \"../icons/react/TvIcon\";\nexport { UmbrellaIcon } from \"../icons/react/UmbrellaIcon\";\nexport { UmbrellaOffIcon } from \"../icons/react/UmbrellaOffIcon\";\nexport { UndoIcon } from \"../icons/react/UndoIcon\";\nexport { UngroupIcon } from \"../icons/react/UngroupIcon\";\nexport { UnlinkIcon } from \"../icons/react/UnlinkIcon\";\nexport { UnlockIcon } from \"../icons/react/UnlockIcon\";\nexport { UploadIcon } from \"../icons/react/UploadIcon\";\nexport { UsbIcon } from \"../icons/react/UsbIcon\";\nexport { UserCheckIcon } from \"../icons/react/UserCheckIcon\";\nexport { UserCircleIcon } from \"../icons/react/UserCircleIcon\";\nexport { UserCogIcon } from \"../icons/react/UserCogIcon\";\nexport { UserEditIcon } from \"../icons/react/UserEditIcon\";\nexport { UserIcon } from \"../icons/react/UserIcon\";\nexport { UserLockIcon } from \"../icons/react/UserLockIcon\";\nexport { UserMinusIcon } from \"../icons/react/UserMinusIcon\";\nexport { UserPlusIcon } from \"../icons/react/UserPlusIcon\";\nexport { UserSearchIcon } from \"../icons/react/UserSearchIcon\";\nexport { UserSquareIcon } from \"../icons/react/UserSquareIcon\";\nexport { UserStarIcon } from \"../icons/react/UserStarIcon\";\nexport { UsersIcon } from \"../icons/react/UsersIcon\";\nexport { VideoIcon } from \"../icons/react/VideoIcon\";\nexport { VideoOffIcon } from \"../icons/react/VideoOffIcon\";\nexport { VolumeIcon } from \"../icons/react/VolumeIcon\";\nexport { VolumeOffIcon } from \"../icons/react/VolumeOffIcon\";\nexport { WalletIcon } from \"../icons/react/WalletIcon\";\nexport { WandIcon } from \"../icons/react/WandIcon\";\nexport { WatchIcon } from \"../icons/react/WatchIcon\";\nexport { WebcamIcon } from \"../icons/react/WebcamIcon\";\nexport { WhatsappFilledIcon } from \"../icons/react/WhatsappFilledIcon\";\nexport { WhatsappIcon } from \"../icons/react/WhatsappIcon\";\nexport { WifiIcon } from \"../icons/react/WifiIcon\";\nexport { WindIcon } from \"../icons/react/WindIcon\";\nexport { WorkflowIcon } from \"../icons/react/WorkflowIcon\";\nexport { WrapTextIcon } from \"../icons/react/WrapTextIcon\";\nexport { WrenchIcon } from \"../icons/react/WrenchIcon\";\nexport { XFilledIcon } from \"../icons/react/XFilledIcon\";\nexport { XIcon } from \"../icons/react/XIcon\";\nexport { YenIcon } from \"../icons/react/YenIcon\";\nexport { YenSymbolIcon } from \"../icons/react/YenSymbolIcon\";\nexport { YoutubeFilledIcon } from \"../icons/react/YoutubeFilledIcon\";\nexport { YoutubeIcon } from \"../icons/react/YoutubeIcon\";\nexport { ZapIcon } from \"../icons/react/ZapIcon\";\nexport { ZapOffIcon } from \"../icons/react/ZapOffIcon\";\nexport { ZoomInIcon } from \"../icons/react/ZoomInIcon\";\nexport { ZoomOutIcon } from \"../icons/react/ZoomOutIcon\";","// ============================================================\n// TOKEN CONTRACT\n//\n// This is the single most important file in the foundation.\n//\n// Every theme (light, dark, glass, cyberpunk, whatever comes\n// next) must produce an object that satisfies ThemeTokens.\n// TypeScript enforces this at compile time via `defineTheme()`\n// below — leave out a single key and the build fails with a\n// clear error naming the missing key.\n//\n// In the old codebase, themes were hand-written CSS files.\n// Nothing checked that cyberpunk.css defined every variable\n// brutalism.css did. A missing token didn't error — it just\n// silently fell back to nothing, and you only found out by\n// looking at the rendered page.\n//\n// Here, themes are TypeScript objects. CSS is *generated* from\n// them (see generate-css.ts), never hand-authored. There is\n// exactly one source of truth per theme, and it cannot be\n// incomplete.\n// ============================================================\n\n// ============================================================\n// A theme controls SHAPE, not brand color: radius, shadow style,\n// motion curves, border treatment, glass/gradient/glow effects,\n// and the neutral/semantic palette needed for legibility (a dark\n// theme's background/text MUST differ from light's — that's a\n// contrast requirement, not a brand choice). It does NOT define\n// `color.brand` — that's a separate, orthogonal axis (see\n// accents.ts) that a consumer picks independently of which theme\n// is active, and can override per-component exactly like `theme`\n// can. success/danger/warning/info stay theme-defined (their\n// exact shade can differ per theme for contrast, but their\n// meaning — green reads as success, red as danger — must not be\n// user-customizable away from that).\n// ============================================================\n\nexport interface ColorScale {\n 50: string; 100: string; 200: string; 300: string; 400: string;\n 500: string; 600: string; 700: string; 800: string; 900: string;\n}\n\nexport interface SemanticColor {\n light: string;\n subtle: string;\n base: string;\n dark: string;\n deeper: string;\n}\n\nexport interface ThemeTokens {\n meta: {\n name: string;\n label: string;\n /** Short description of the visual identity — kept out of CSS, used in docs/registry UI. */\n description: string;\n };\n\n color: {\n neutral: ColorScale & { 0: string; 950: string };\n success: SemanticColor;\n danger: SemanticColor;\n warning: SemanticColor;\n info: SemanticColor;\n /** Page/app background, not component surface. */\n background: string;\n /** Default component surface (card, input, modal body). */\n surface: string;\n /** Elevated surface (popover, dropdown, tooltip). */\n surfaceRaised: string;\n border: string;\n borderFocus: string;\n text: string;\n textMuted: string;\n textInverse: string;\n };\n\n radius: {\n sm: string; md: string; lg: string; xl: string; \"2xl\": string; full: string;\n };\n\n spacing: {\n xs: string; sm: string; md: string; lg: string; xl: string; \"2xl\": string;\n };\n\n typography: {\n fontSans: string;\n fontMono: string;\n sizeXs: string; sizeSm: string; sizeMd: string; sizeLg: string; sizeXl: string;\n weightNormal: string; weightMedium: string; weightBold: string;\n lineHeightTight: string; lineHeightNormal: string;\n };\n\n shadow: {\n xs: string; sm: string; md: string; lg: string; xl: string; \"2xl\": string;\n inner: string;\n };\n\n elevation: {\n /** z-index steps — must be consistent across every portal-based component. */\n dropdown: number;\n popover: number;\n modal: number;\n toast: number;\n tooltip: number;\n };\n\n motion: {\n durationFast: string;\n durationNormal: string;\n durationSlow: string;\n easeStandard: string;\n easeEmphasized: string;\n /** Set to '0.01ms' by a reduced-motion-aware theme variant if needed. */\n durationInstant: string;\n };\n\n border: {\n widthThin: string;\n widthMedium: string;\n widthThick: string;\n style: string;\n };\n\n effects: {\n /**\n * CSS `backdrop-filter: blur()` amount, e.g. \"16px\" or \"0px\".\n * Every non-glass theme sets this to \"0px\" — an explicit zero,\n * not an absent field, so `defineTheme`'s completeness check\n * still catches an accidentally-forgotten theme. Translucent\n * `color.surface`/`color.border` values (glass, dark-glass) are\n * only actually visible as \"glass\" when something behind them\n * is blurred; without this, a translucent white surface over a\n * plain page background is indistinguishable from opaque white.\n */\n backdropBlur: string;\n };\n}\n\n/**\n * Identity function with a strict parameter type.\n * Its only job is to make an incomplete theme a compile error\n * at the call site, with TypeScript naming the exact missing key.\n */\nexport function defineTheme(tokens: ThemeTokens): ThemeTokens {\n return tokens;\n}\n\n/** Every top-level and nested key path, used by the completeness test. */\nexport const TOKEN_CATEGORIES = [\n \"meta\", \"color\", \"radius\", \"spacing\", \"typography\", \"shadow\", \"elevation\", \"motion\", \"border\", \"effects\",\n] as const;\n\n/**\n * Every required leaf path, hardcoded independently of any\n * theme instance. This is deliberately NOT derived from\n * whichever theme happens to register first — that would make\n * the very first theme registered the unverified \"trust me\"\n * reference. Every path listed here corresponds 1:1 to a field\n * in ThemeTokens; if you add a field to the contract, add its\n * path here too (a mismatch here is caught by\n * registry.test.ts's cross-check against `light`).\n */\nexport const REQUIRED_TOKEN_PATHS = [\n \"meta.name\", \"meta.label\", \"meta.description\",\n ...[\"0\", \"50\", \"100\", \"200\", \"300\", \"400\", \"500\", \"600\", \"700\", \"800\", \"900\", \"950\"].map((k) => `color.neutral.${k}`),\n ...([\"success\", \"danger\", \"warning\", \"info\"] as const).flatMap((c) =>\n [\"light\", \"subtle\", \"base\", \"dark\", \"deeper\"].map((k) => `color.${c}.${k}`)\n ),\n \"color.background\", \"color.surface\", \"color.surfaceRaised\", \"color.border\", \"color.borderFocus\",\n \"color.text\", \"color.textMuted\", \"color.textInverse\",\n \"radius.sm\", \"radius.md\", \"radius.lg\", \"radius.xl\", \"radius.2xl\", \"radius.full\",\n \"spacing.xs\", \"spacing.sm\", \"spacing.md\", \"spacing.lg\", \"spacing.xl\", \"spacing.2xl\",\n \"typography.fontSans\", \"typography.fontMono\",\n \"typography.sizeXs\", \"typography.sizeSm\", \"typography.sizeMd\", \"typography.sizeLg\", \"typography.sizeXl\",\n \"typography.weightNormal\", \"typography.weightMedium\", \"typography.weightBold\",\n \"typography.lineHeightTight\", \"typography.lineHeightNormal\",\n \"shadow.xs\", \"shadow.sm\", \"shadow.md\", \"shadow.lg\", \"shadow.xl\", \"shadow.2xl\", \"shadow.inner\",\n \"elevation.dropdown\", \"elevation.popover\", \"elevation.modal\", \"elevation.toast\", \"elevation.tooltip\",\n \"motion.durationFast\", \"motion.durationNormal\", \"motion.durationSlow\",\n \"motion.easeStandard\", \"motion.easeEmphasized\", \"motion.durationInstant\",\n \"border.widthThin\", \"border.widthMedium\", \"border.widthThick\", \"border.style\",\n \"effects.backdropBlur\",\n] as const;\n\nfunction getAtPath(obj: unknown, path: string): unknown {\n return path.split(\".\").reduce<unknown>((acc, key) => {\n if (acc === null || typeof acc !== \"object\") return undefined;\n return (acc as Record<string, unknown>)[key];\n }, obj);\n}\n\n/** Returns every required path that is missing or empty on the given theme-like object. */\nexport function findMissingTokenPaths(theme: unknown): string[] {\n return REQUIRED_TOKEN_PATHS.filter((path) => {\n const value = getAtPath(theme, path);\n return value === null || value === undefined || value === \"\";\n });\n}\n","import { defineTheme } from \"../contract\";\n\nexport const light = defineTheme({\n meta: {\n name: \"light\",\n label: \"Light\",\n description: \"Default, neutral, high-legibility surface.\",\n },\n color: {\n neutral: {\n 0: \"#ffffff\", 50: \"#f9fafb\", 100: \"#f3f4f6\", 200: \"#e5e7eb\", 300: \"#d1d5db\",\n 400: \"#9ca3af\", 500: \"#6b7280\", 600: \"#4b5563\", 700: \"#374151\", 800: \"#1f2937\",\n 900: \"#111827\", 950: \"#030712\",\n },\n success: { light: \"#d1fae5\", subtle: \"#a7f3d0\", base: \"#10b981\", dark: \"#059669\", deeper: \"#064e3b\" },\n danger: { light: \"#fee2e2\", subtle: \"#fecaca\", base: \"#ef4444\", dark: \"#dc2626\", deeper: \"#7f1d1d\" },\n warning: { light: \"#fef3c7\", subtle: \"#fde68a\", base: \"#f59e0b\", dark: \"#d97706\", deeper: \"#78350f\" },\n info: { light: \"#dbeafe\", subtle: \"#bfdbfe\", base: \"#3b82f6\", dark: \"#2563eb\", deeper: \"#1e3a5f\" },\n background: \"#ffffff\",\n surface: \"#ffffff\",\n surfaceRaised: \"#ffffff\",\n border: \"#e5e7eb\",\n // Neutral, not brand-tied — the actual focus-ring color\n // interactive components use is the picked accent\n // (--color-brand-500/600), not this. This exists for\n // non-branded emphasis borders.\n borderFocus: \"#9ca3af\",\n text: \"#111827\",\n textMuted: \"#6b7280\",\n textInverse: \"#ffffff\",\n },\n radius: { sm: \"6px\", md: \"10px\", lg: \"14px\", xl: \"18px\", \"2xl\": \"24px\", full: \"9999px\" },\n spacing: { xs: \"4px\", sm: \"8px\", md: \"12px\", lg: \"16px\", xl: \"24px\", \"2xl\": \"32px\" },\n typography: {\n fontSans: \"'Inter', system-ui, sans-serif\",\n fontMono: \"'JetBrains Mono', monospace\",\n sizeXs: \"12px\", sizeSm: \"14px\", sizeMd: \"16px\", sizeLg: \"18px\", sizeXl: \"22px\",\n weightNormal: \"400\", weightMedium: \"500\", weightBold: \"700\",\n lineHeightTight: \"1.2\", lineHeightNormal: \"1.5\",\n },\n shadow: {\n xs: \"0 1px 2px rgba(0,0,0,0.05)\",\n sm: \"0 2px 6px rgba(0,0,0,0.06)\",\n md: \"0 4px 12px rgba(0,0,0,0.08)\",\n lg: \"0 10px 24px rgba(0,0,0,0.10)\",\n xl: \"0 20px 40px rgba(0,0,0,0.12)\",\n \"2xl\": \"0 28px 56px rgba(0,0,0,0.16)\",\n inner: \"inset 0 1px 2px rgba(0,0,0,0.05)\",\n },\n elevation: { dropdown: 1000, popover: 1100, modal: 1200, toast: 1300, tooltip: 1400 },\n motion: {\n durationFast: \"120ms\", durationNormal: \"200ms\", durationSlow: \"320ms\",\n easeStandard: \"cubic-bezier(0.4, 0, 0.2, 1)\", easeEmphasized: \"cubic-bezier(0.2, 0, 0, 1)\",\n durationInstant: \"0ms\",\n },\n border: { widthThin: \"1px\", widthMedium: \"1.5px\", widthThick: \"2px\", style: \"solid\" },\n effects: { backdropBlur: \"0px\" },\n});\n","import { defineTheme } from \"../contract\";\n\nexport const dark = defineTheme({\n meta: {\n name: \"dark\",\n label: \"Dark\",\n description: \"Low-glare surface for extended use.\",\n },\n color: {\n neutral: {\n 0: \"#030712\", 50: \"#111827\", 100: \"#1f2937\", 200: \"#374151\", 300: \"#4b5563\",\n 400: \"#6b7280\", 500: \"#9ca3af\", 600: \"#d1d5db\", 700: \"#e5e7eb\", 800: \"#f3f4f6\",\n 900: \"#f9fafb\", 950: \"#ffffff\",\n },\n success: { light: \"#064e3b\", subtle: \"#065f46\", base: \"#34d399\", dark: \"#6ee7b7\", deeper: \"#d1fae5\" },\n danger: { light: \"#7f1d1d\", subtle: \"#991b1b\", base: \"#f87171\", dark: \"#fca5a5\", deeper: \"#fee2e2\" },\n warning: { light: \"#78350f\", subtle: \"#92400e\", base: \"#fbbf24\", dark: \"#fcd34d\", deeper: \"#fef3c7\" },\n info: { light: \"#1e3a5f\", subtle: \"#1e40af\", base: \"#60a5fa\", dark: \"#93c5fd\", deeper: \"#dbeafe\" },\n background: \"#0b0f19\",\n surface: \"#131826\",\n surfaceRaised: \"#1c2333\",\n border: \"#2a3143\",\n borderFocus: \"#6b7280\",\n text: \"#f3f4f6\",\n textMuted: \"#9ca3af\",\n textInverse: \"#111827\",\n },\n radius: { sm: \"6px\", md: \"10px\", lg: \"14px\", xl: \"18px\", \"2xl\": \"24px\", full: \"9999px\" },\n spacing: { xs: \"4px\", sm: \"8px\", md: \"12px\", lg: \"16px\", xl: \"24px\", \"2xl\": \"32px\" },\n typography: {\n fontSans: \"'Inter', system-ui, sans-serif\",\n fontMono: \"'JetBrains Mono', monospace\",\n sizeXs: \"12px\", sizeSm: \"14px\", sizeMd: \"16px\", sizeLg: \"18px\", sizeXl: \"22px\",\n weightNormal: \"400\", weightMedium: \"500\", weightBold: \"700\",\n lineHeightTight: \"1.2\", lineHeightNormal: \"1.5\",\n },\n shadow: {\n xs: \"0 1px 2px rgba(0,0,0,0.4)\",\n sm: \"0 2px 6px rgba(0,0,0,0.45)\",\n md: \"0 4px 12px rgba(0,0,0,0.5)\",\n lg: \"0 10px 24px rgba(0,0,0,0.55)\",\n xl: \"0 20px 40px rgba(0,0,0,0.6)\",\n \"2xl\": \"0 28px 56px rgba(0,0,0,0.65)\",\n inner: \"inset 0 1px 2px rgba(0,0,0,0.4)\",\n },\n elevation: { dropdown: 1000, popover: 1100, modal: 1200, toast: 1300, tooltip: 1400 },\n motion: {\n durationFast: \"120ms\", durationNormal: \"200ms\", durationSlow: \"320ms\",\n easeStandard: \"cubic-bezier(0.4, 0, 0.2, 1)\", easeEmphasized: \"cubic-bezier(0.2, 0, 0, 1)\",\n durationInstant: \"0ms\",\n },\n border: { widthThin: \"1px\", widthMedium: \"1.5px\", widthThick: \"2px\", style: \"solid\" },\n effects: { backdropBlur: \"0px\" },\n});\n","import { defineTheme } from \"../contract\";\n\nexport const glass = defineTheme({\n meta: {\n name: \"glass\",\n label: \"Glass\",\n description: \"Translucent, softly rounded, floating surfaces. Needs a rich background behind it.\",\n },\n color: {\n neutral: {\n 0: \"#ffffff\", 50: \"#f9fafb\", 100: \"#f3f4f6\", 200: \"#e5e7eb\", 300: \"#d1d5db\",\n 400: \"#9ca3af\", 500: \"#6b7280\", 600: \"#4b5563\", 700: \"#374151\", 800: \"#1f2937\",\n 900: \"#111827\", 950: \"#030712\",\n },\n success: { light: \"#d1fae5\", subtle: \"#a7f3d0\", base: \"#10b981\", dark: \"#059669\", deeper: \"#064e3b\" },\n danger: { light: \"#fee2e2\", subtle: \"#fecaca\", base: \"#ef4444\", dark: \"#dc2626\", deeper: \"#7f1d1d\" },\n warning: { light: \"#fef3c7\", subtle: \"#fde68a\", base: \"#f59e0b\", dark: \"#d97706\", deeper: \"#78350f\" },\n info: { light: \"#dbeafe\", subtle: \"#bfdbfe\", base: \"#3b82f6\", dark: \"#2563eb\", deeper: \"#1e3a5f\" },\n background: \"transparent\",\n surface: \"rgba(255,255,255,0.55)\",\n surfaceRaised: \"rgba(255,255,255,0.75)\",\n border: \"rgba(255,255,255,0.35)\",\n borderFocus: \"#9ca3af\",\n text: \"#111827\",\n textMuted: \"rgba(17,24,39,0.65)\",\n textInverse: \"#ffffff\",\n },\n // Notably rounder than light/dark — this is a shape difference, not just color.\n radius: { sm: \"10px\", md: \"16px\", lg: \"22px\", xl: \"28px\", \"2xl\": \"36px\", full: \"9999px\" },\n spacing: { xs: \"4px\", sm: \"8px\", md: \"12px\", lg: \"16px\", xl: \"24px\", \"2xl\": \"32px\" },\n typography: {\n fontSans: \"'Inter', system-ui, sans-serif\",\n fontMono: \"'JetBrains Mono', monospace\",\n sizeXs: \"12px\", sizeSm: \"14px\", sizeMd: \"16px\", sizeLg: \"18px\", sizeXl: \"22px\",\n weightNormal: \"400\", weightMedium: \"500\", weightBold: \"700\",\n lineHeightTight: \"1.2\", lineHeightNormal: \"1.5\",\n },\n shadow: {\n xs: \"0 2px 8px rgba(0,0,0,0.06)\",\n sm: \"0 4px 16px rgba(0,0,0,0.08)\",\n md: \"0 8px 32px rgba(0,0,0,0.10)\",\n lg: \"0 16px 48px rgba(0,0,0,0.12)\",\n xl: \"0 24px 64px rgba(0,0,0,0.14)\",\n \"2xl\": \"0 32px 80px rgba(0,0,0,0.18)\",\n inner: \"inset 0 1px 0 rgba(255,255,255,0.4)\",\n },\n elevation: { dropdown: 1000, popover: 1100, modal: 1200, toast: 1300, tooltip: 1400 },\n motion: {\n // Slightly slower/softer than light/dark — matches \"everything floats\".\n durationFast: \"160ms\", durationNormal: \"260ms\", durationSlow: \"400ms\",\n easeStandard: \"cubic-bezier(0.25, 0.1, 0.25, 1)\", easeEmphasized: \"cubic-bezier(0.16, 1, 0.3, 1)\",\n durationInstant: \"0ms\",\n },\n border: { widthThin: \"1px\", widthMedium: \"1px\", widthThick: \"1.5px\", style: \"solid\" },\n effects: { backdropBlur: \"16px\" },\n});\n","import { defineTheme } from \"../contract\";\nimport { dark } from \"./dark\";\n\nexport const darkGlass = defineTheme({\n ...dark,\n meta: {\n name: \"dark-glass\",\n label: \"Dark Glass\",\n description: \"Translucent glass panels floating over a dark background.\",\n },\n color: {\n ...dark.color,\n background: \"#05070d\",\n surface: \"rgba(255,255,255,0.06)\",\n surfaceRaised: \"rgba(255,255,255,0.10)\",\n border: \"rgba(255,255,255,0.12)\",\n },\n radius: { sm: \"10px\", md: \"16px\", lg: \"22px\", xl: \"28px\", \"2xl\": \"36px\", full: \"9999px\" },\n shadow: {\n xs: \"0 2px 8px rgba(0,0,0,0.5)\", sm: \"0 4px 16px rgba(0,0,0,0.55)\", md: \"0 8px 32px rgba(0,0,0,0.6)\",\n lg: \"0 16px 48px rgba(0,0,0,0.65)\", xl: \"0 24px 64px rgba(0,0,0,0.7)\", \"2xl\": \"0 32px 80px rgba(0,0,0,0.75)\",\n inner: \"inset 0 1px 0 rgba(255,255,255,0.08)\",\n },\n motion: { ...dark.motion, durationFast: \"160ms\", durationNormal: \"260ms\", durationSlow: \"400ms\" },\n effects: { backdropBlur: \"18px\" },\n});\n","import { defineTheme } from \"../contract\";\nimport { light } from \"./light\";\n\nexport const minimalism = defineTheme({\n ...light,\n meta: {\n name: \"minimalism\",\n label: \"Minimalism\",\n description: \"Reduced to essentials — thin borders, flat surfaces, no shadow, tight radius.\",\n },\n color: {\n ...light.color,\n border: \"#e2e2e2\", surface: \"#ffffff\", surfaceRaised: \"#ffffff\",\n },\n radius: { sm: \"2px\", md: \"3px\", lg: \"4px\", xl: \"6px\", \"2xl\": \"8px\", full: \"9999px\" },\n shadow: { xs: \"none\", sm: \"none\", md: \"none\", lg: \"none\", xl: \"none\", \"2xl\": \"none\", inner: \"none\" },\n border: { widthThin: \"1px\", widthMedium: \"1px\", widthThick: \"1px\", style: \"solid\" },\n effects: { backdropBlur: \"0px\" },\n});\n","import { defineTheme } from \"../contract\";\nimport { light } from \"./light\";\n\nexport const brutalism = defineTheme({\n ...light,\n meta: {\n name: \"brutalism\",\n label: \"Brutalism\",\n description: \"Raw, unstyled web aesthetic — square corners, zero shadow, monospace type.\",\n },\n color: {\n ...light.color,\n background: \"#ffffff\", surface: \"#ffffff\", surfaceRaised: \"#ffffff\",\n border: \"#000000\", borderFocus: \"#ff0000\", text: \"#000000\",\n },\n radius: { sm: \"0px\", md: \"0px\", lg: \"0px\", xl: \"0px\", \"2xl\": \"0px\", full: \"0px\" },\n typography: { ...light.typography, fontSans: \"'Courier New', monospace\", fontMono: \"'Courier New', monospace\" },\n shadow: { xs: \"none\", sm: \"none\", md: \"none\", lg: \"none\", xl: \"none\", \"2xl\": \"none\", inner: \"none\" },\n border: { widthThin: \"1px\", widthMedium: \"2px\", widthThick: \"3px\", style: \"solid\" },\n motion: { ...light.motion, durationFast: \"0ms\", durationNormal: \"0ms\", durationSlow: \"0ms\" },\n effects: { backdropBlur: \"0px\" },\n});\n","import { defineTheme } from \"../contract\";\nimport { light } from \"./light\";\n\nexport const neobrutalism = defineTheme({\n ...light,\n meta: {\n name: \"neobrutalism\",\n label: \"Neo Brutalism\",\n description: \"Bold black borders, flat offset shadows, saturated color blocks.\",\n },\n color: {\n ...light.color,\n background: \"#fef3c7\", surface: \"#ffffff\", surfaceRaised: \"#ffffff\",\n border: \"#000000\", borderFocus: \"#000000\",\n },\n radius: { sm: \"4px\", md: \"6px\", lg: \"8px\", xl: \"10px\", \"2xl\": \"12px\", full: \"9999px\" },\n shadow: {\n xs: \"2px 2px 0 #000000\", sm: \"3px 3px 0 #000000\", md: \"4px 4px 0 #000000\",\n lg: \"6px 6px 0 #000000\", xl: \"8px 8px 0 #000000\", \"2xl\": \"10px 10px 0 #000000\",\n inner: \"inset 2px 2px 0 #000000\",\n },\n border: { widthThin: \"2px\", widthMedium: \"3px\", widthThick: \"4px\", style: \"solid\" },\n motion: { ...light.motion, durationFast: \"80ms\", durationNormal: \"140ms\", durationSlow: \"200ms\", easeStandard: \"linear\", easeEmphasized: \"linear\" },\n effects: { backdropBlur: \"0px\" },\n});\n","import { defineTheme } from \"../contract\";\nimport { dark } from \"./dark\";\n\nexport const cyberpunk = defineTheme({\n ...dark,\n meta: {\n name: \"cyberpunk\",\n label: \"Cyberpunk\",\n description: \"Neon-on-black, glowing edges, high-saturation magenta/cyan accents.\",\n },\n color: {\n ...dark.color,\n background: \"#0a0014\", surface: \"#12001f\", surfaceRaised: \"#1a0230\",\n border: \"#ff2bd6\", borderFocus: \"#00f0ff\", text: \"#e8faff\", textMuted: \"#9a8cc9\",\n },\n radius: { sm: \"2px\", md: \"4px\", lg: \"6px\", xl: \"8px\", \"2xl\": \"10px\", full: \"9999px\" },\n shadow: {\n xs: \"0 0 6px rgba(255,43,214,0.5)\", sm: \"0 0 12px rgba(255,43,214,0.55)\",\n md: \"0 0 20px rgba(0,240,255,0.5)\", lg: \"0 0 32px rgba(0,240,255,0.55)\",\n xl: \"0 0 48px rgba(255,43,214,0.6)\", \"2xl\": \"0 0 64px rgba(0,240,255,0.65)\",\n inner: \"inset 0 0 8px rgba(255,43,214,0.4)\",\n },\n border: { widthThin: \"1px\", widthMedium: \"1.5px\", widthThick: \"2px\", style: \"solid\" },\n motion: { ...dark.motion, easeStandard: \"cubic-bezier(0.83,0,0.17,1)\", easeEmphasized: \"cubic-bezier(0.9,0,0.1,1)\" },\n effects: { backdropBlur: \"0px\" },\n});\n","import { defineTheme } from \"../contract\";\nimport { light } from \"./light\";\n\nexport const gradient = defineTheme({\n ...light,\n meta: {\n name: \"gradient\",\n label: \"Gradient\",\n description: \"Vibrant, colorful transitions across surfaces and accents.\",\n },\n color: {\n ...light.color,\n background: \"linear-gradient(135deg, #667eea 0%, #764ba2 100%)\",\n surface: \"linear-gradient(135deg, rgba(255,255,255,0.92), rgba(255,255,255,0.75))\",\n surfaceRaised: \"#ffffff\",\n border: \"rgba(118,75,162,0.25)\",\n borderFocus: \"#764ba2\",\n },\n radius: { sm: \"12px\", md: \"18px\", lg: \"24px\", xl: \"32px\", \"2xl\": \"40px\", full: \"9999px\" },\n shadow: {\n xs: \"0 2px 10px rgba(118,75,162,0.15)\", sm: \"0 4px 20px rgba(118,75,162,0.18)\",\n md: \"0 8px 30px rgba(118,75,162,0.22)\", lg: \"0 16px 40px rgba(118,75,162,0.26)\",\n xl: \"0 24px 56px rgba(118,75,162,0.3)\", \"2xl\": \"0 32px 72px rgba(118,75,162,0.35)\",\n inner: \"inset 0 1px 0 rgba(255,255,255,0.5)\",\n },\n motion: { ...light.motion, durationNormal: \"240ms\", durationSlow: \"380ms\" },\n effects: { backdropBlur: \"0px\" },\n});\n","import { defineTheme } from \"../contract\";\nimport { light } from \"./light\";\n\nexport const material = defineTheme({\n ...light,\n meta: {\n name: \"material\",\n label: \"Material\",\n description: \"Google Material Design-inspired elevation shadows and motion curves.\",\n },\n color: {\n ...light.color,\n surface: \"#ffffff\", background: \"#fafafa\",\n },\n radius: { sm: \"4px\", md: \"8px\", lg: \"12px\", xl: \"16px\", \"2xl\": \"28px\", full: \"9999px\" },\n typography: { ...light.typography, fontSans: \"'Roboto', system-ui, sans-serif\" },\n shadow: {\n xs: \"0 1px 2px rgba(0,0,0,0.24)\",\n sm: \"0 1px 4px rgba(0,0,0,0.2), 0 1px 2px rgba(0,0,0,0.12)\",\n md: \"0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23)\",\n lg: \"0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23)\",\n xl: \"0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22)\",\n \"2xl\": \"0 19px 38px rgba(0,0,0,0.3), 0 15px 12px rgba(0,0,0,0.22)\",\n inner: \"inset 0 1px 2px rgba(0,0,0,0.12)\",\n },\n motion: { ...light.motion, easeStandard: \"cubic-bezier(0.4,0,0.2,1)\", easeEmphasized: \"cubic-bezier(0.0,0,0.2,1)\" },\n effects: { backdropBlur: \"0px\" },\n});\n","import { defineTheme } from \"../contract\";\nimport { light } from \"./light\";\n\nexport const skeuomorphism = defineTheme({\n ...light,\n meta: {\n name: \"skeuomorphism\",\n label: \"Skeuomorphism\",\n description: \"Realistic depth — soft embossed surfaces mimicking physical material.\",\n },\n color: {\n ...light.color,\n background: \"#e8e4da\", surface: \"#f0ece2\", surfaceRaised: \"#f7f4ec\",\n border: \"#c9c2b0\", text: \"#3a3226\",\n },\n radius: { sm: \"8px\", md: \"12px\", lg: \"18px\", xl: \"24px\", \"2xl\": \"32px\", full: \"9999px\" },\n shadow: {\n xs: \"inset 0 1px 1px rgba(255,255,255,0.8), 0 1px 3px rgba(58,50,38,0.25)\",\n sm: \"inset 0 1px 1px rgba(255,255,255,0.8), 0 2px 6px rgba(58,50,38,0.28)\",\n md: \"inset 0 1px 1px rgba(255,255,255,0.8), 0 4px 10px rgba(58,50,38,0.3)\",\n lg: \"inset 0 1px 1px rgba(255,255,255,0.8), 0 8px 18px rgba(58,50,38,0.32)\",\n xl: \"inset 0 1px 1px rgba(255,255,255,0.8), 0 14px 28px rgba(58,50,38,0.35)\",\n \"2xl\": \"inset 0 1px 1px rgba(255,255,255,0.8), 0 20px 40px rgba(58,50,38,0.38)\",\n inner: \"inset 0 2px 4px rgba(58,50,38,0.3)\",\n },\n motion: { ...light.motion, durationNormal: \"220ms\", easeStandard: \"cubic-bezier(0.34,1.56,0.64,1)\" },\n effects: { backdropBlur: \"0px\" },\n});\n","import type { ThemeTokens } from \"./contract\";\nimport { findMissingTokenPaths } from \"./contract\";\nimport { light } from \"./themes/light\";\nimport { dark } from \"./themes/dark\";\nimport { glass } from \"./themes/glass\";\nimport { darkGlass } from \"./themes/dark-glass\";\nimport { minimalism } from \"./themes/minimalism\";\nimport { brutalism } from \"./themes/brutalism\";\nimport { neobrutalism } from \"./themes/neobrutalism\";\nimport { cyberpunk } from \"./themes/cyberpunk\";\nimport { gradient } from \"./themes/gradient\";\nimport { material } from \"./themes/material\";\nimport { skeuomorphism } from \"./themes/skeuomorphism\";\n\nconst registry = new Map<string, ThemeTokens>();\n\n/**\n * Checks the theme against REQUIRED_TOKEN_PATHS — a fixed list\n * hardcoded in contract.ts, not derived from whichever theme\n * happens to register first. This is the runtime safety net for\n * themes that bypass the TypeScript-level defineTheme() check\n * (e.g. loaded from JSON at runtime rather than authored as a\n * .ts file in this repo). A theme that fails this throws\n * immediately on registration, not silently at render time on\n * whichever component hits the missing key first.\n */\nfunction assertComplete(theme: ThemeTokens): void {\n const missing = findMissingTokenPaths(theme);\n if (missing.length > 0) {\n throw new Error(\n `Theme \"${theme.meta?.name ?? \"unknown\"}\" is missing/empty required token(s): ${missing.join(\", \")}`\n );\n }\n}\n\nexport function registerTheme(theme: ThemeTokens): void {\n assertComplete(theme);\n registry.set(theme.meta.name, theme);\n}\n\nexport function getTheme(name: string): ThemeTokens | undefined {\n return registry.get(name);\n}\n\nexport function listThemes(): ThemeTokens[] {\n return Array.from(registry.values());\n}\n\n// Built-in themes register on import. Third-party/future themes\n// (Cyberpunk, Neo Brutal, Aurora, ...) call registerTheme() the\n// same way from wherever they're defined — no other file needs\n// to change.\nregisterTheme(light);\nregisterTheme(dark);\nregisterTheme(glass);\nregisterTheme(darkGlass);\nregisterTheme(minimalism);\nregisterTheme(brutalism);\nregisterTheme(neobrutalism);\nregisterTheme(cyberpunk);\nregisterTheme(gradient);\nregisterTheme(material);\nregisterTheme(skeuomorphism);\n","import type { AccentDefinition } from \"../accents\";\n\nexport const indigo: AccentDefinition = {\n name: \"indigo\",\n label: \"Indigo\",\n scale: {\n 50: \"#f0f4ff\", 100: \"#e0e8ff\", 200: \"#c7d5fe\", 300: \"#a5b4fc\", 400: \"#818cf8\",\n 500: \"#6366f1\", 600: \"#4f46e5\", 700: \"#4338ca\", 800: \"#3730a3\", 900: \"#312e81\",\n },\n};\n","import type { AccentDefinition } from \"../accents\";\n\nexport const violet: AccentDefinition = {\n name: \"violet\",\n label: \"Violet\",\n scale: {\n 50: \"#faf5ff\", 100: \"#f3e8ff\", 200: \"#e9d5ff\", 300: \"#d8b4fe\", 400: \"#c084fc\",\n 500: \"#a855f7\", 600: \"#9333ea\", 700: \"#7e22ce\", 800: \"#6b21a8\", 900: \"#581c87\",\n },\n};\n","import type { AccentDefinition } from \"../accents\";\n\nexport const teal: AccentDefinition = {\n name: \"teal\",\n label: \"Teal\",\n scale: {\n 50: \"#f0fdfa\", 100: \"#ccfbf1\", 200: \"#99f6e4\", 300: \"#5eead4\", 400: \"#2dd4bf\",\n 500: \"#14b8a6\", 600: \"#0d9488\", 700: \"#0f766e\", 800: \"#115e59\", 900: \"#134e4a\",\n },\n};\n","import type { AccentDefinition } from \"../accents\";\n\nexport const rose: AccentDefinition = {\n name: \"rose\",\n label: \"Rose\",\n scale: {\n 50: \"#fff1f2\", 100: \"#ffe4e6\", 200: \"#fecdd3\", 300: \"#fda4af\", 400: \"#fb7185\",\n 500: \"#f43f5e\", 600: \"#e11d48\", 700: \"#be123c\", 800: \"#9f1239\", 900: \"#881337\",\n },\n};\n","import type { AccentDefinition } from \"../accents\";\n\nexport const amber: AccentDefinition = {\n name: \"amber\",\n label: \"Amber\",\n scale: {\n 50: \"#fffbeb\", 100: \"#fef3c7\", 200: \"#fde68a\", 300: \"#fcd34d\", 400: \"#fbbf24\",\n 500: \"#f59e0b\", 600: \"#d97706\", 700: \"#b45309\", 800: \"#92400e\", 900: \"#78350f\",\n },\n};\n","import type { AccentDefinition } from \"../accents\";\n\nexport const emerald: AccentDefinition = {\n name: \"emerald\",\n label: \"Emerald\",\n scale: {\n 50: \"#ecfdf5\", 100: \"#d1fae5\", 200: \"#a7f3d0\", 300: \"#6ee7b7\", 400: \"#34d399\",\n 500: \"#10b981\", 600: \"#059669\", 700: \"#047857\", 800: \"#065f46\", 900: \"#064e3b\",\n },\n};\n","import type { AccentDefinition } from \"../accents\";\n\nexport const copper: AccentDefinition = {\n name: \"copper\",\n label: \"Copper\",\n scale: {\n 50: \"#fdf6ec\", 100: \"#faebd2\", 200: \"#f3d3a0\", 300: \"#e9b56b\",\n 400: \"#d99a45\", 500: \"#b9752c\", 600: \"#9c5d24\", 700: \"#7d4a1f\", 800: \"#623a1c\", 900: \"#4e2f19\",\n },\n};\n","import type { AccentDefinition } from \"../accents\";\n\nexport const graphite: AccentDefinition = {\n name: \"graphite\",\n label: \"Graphite\",\n scale: {\n 50: \"#fafafa\", 100: \"#f0f0f0\", 200: \"#e0e0e0\", 300: \"#c7c7c7\", 400: \"#a3a3a3\",\n 500: \"#525252\", 600: \"#404040\", 700: \"#262626\", 800: \"#171717\", 900: \"#0a0a0a\",\n },\n};\n","import type { AccentDefinition } from \"../accents\";\n\nexport const magenta: AccentDefinition = {\n name: \"magenta\",\n label: \"Magenta\",\n scale: {\n 50: \"#ffe0fb\", 100: \"#ffb3f5\", 200: \"#ff80ee\", 300: \"#ff4de6\", 400: \"#ff26e0\",\n 500: \"#ff00d9\", 600: \"#e600c4\", 700: \"#cc00af\", 800: \"#b3009a\", 900: \"#800070\",\n },\n};\n","import type { ColorScale } from \"./contract\";\n\n// ============================================================\n// ACCENT COLORS\n//\n// This is the axis a consumer actually picks their brand color\n// from — completely independent of which theme (shape/structure)\n// is active. \"Our brand is teal\" should work whether the app is\n// using the light theme, the cyberpunk theme, or any other —\n// the theme still controls radius/shadow/motion/glass-or-not,\n// the accent controls hue.\n//\n// Mirrors tokens/registry.ts's shape deliberately (registerX /\n// getX / listX) so the two systems are learned once, not twice.\n// ============================================================\n\nexport interface AccentDefinition {\n name: string;\n label: string;\n scale: ColorScale;\n}\n\nconst registry = new Map<string, AccentDefinition>();\n\nfunction assertCompleteScale(def: AccentDefinition): void {\n const missing = ([\"50\", \"100\", \"200\", \"300\", \"400\", \"500\", \"600\", \"700\", \"800\", \"900\"] as const).filter(\n (k) => !def.scale[k as unknown as keyof ColorScale]\n );\n if (missing.length > 0) {\n throw new Error(`Accent \"${def.name}\" is missing scale step(s): ${missing.join(\", \")}`);\n }\n}\n\nexport function registerAccent(def: AccentDefinition): void {\n assertCompleteScale(def);\n registry.set(def.name, def);\n}\n\nexport function getAccent(name: string): AccentDefinition | undefined {\n return registry.get(name);\n}\n\nexport function listAccents(): AccentDefinition[] {\n return Array.from(registry.values());\n}\n\n// Built-in accents register on import. A consumer's own custom\n// brand accent registers the same way — registerAccent() with a\n// name/label/scale, called from wherever they define it.\nimport { indigo } from \"./accents/indigo\";\nimport { violet } from \"./accents/violet\";\nimport { teal } from \"./accents/teal\";\nimport { rose } from \"./accents/rose\";\nimport { amber } from \"./accents/amber\";\nimport { emerald } from \"./accents/emerald\";\nimport { copper } from \"./accents/copper\";\nimport { graphite } from \"./accents/graphite\";\nimport { magenta } from \"./accents/magenta\";\n\nregisterAccent(indigo);\nregisterAccent(violet);\nregisterAccent(teal);\nregisterAccent(rose);\nregisterAccent(amber);\nregisterAccent(emerald);\nregisterAccent(copper);\nregisterAccent(graphite);\nregisterAccent(magenta);\n\nexport const DEFAULT_ACCENT = \"indigo\";\n","import type { CSSProperties } from \"react\";\n\n// ============================================================\n// The `color`/`accent` value can be EITHER a registered accent\n// name (\"teal\", \"rose\", ...) OR any raw CSS color a consumer wants\n// to use directly — a hex code, rgb()/hsl(), a CSS color keyword.\n// Not every user wants to pick from a curated palette; some have\n// their own exact brand hex and shouldn't have to register a full\n// named accent (with hover/soft-variant shades hand-picked) just to\n// use it once.\n//\n// Detection is simple: if the value matches a registered accent\n// name, treat it as one (full designed scale, via the existing\n// data-accent CSS mechanism). Otherwise, treat it as a literal CSS\n// color and derive the hover/active/soft shades at paint time using\n// CSS color-mix() — so `color=\"#ff6600\"` \"just works\" without\n// registering anything first.\n// ============================================================\n\n/**\n * Derives the same five --color-brand-* variables a registered\n * accent's generated CSS would provide, but computed from a single\n * raw color using CSS color-mix() — evaluated by the browser, not\n * precomputed here, so it stays correct for any valid CSS color\n * (a hex code, rgb(), hsl(), oklch(), a named color like \"tomato\").\n */\nexport function rawColorToBrandVars(color: string): CSSProperties {\n return {\n [\"--color-brand-50\" as string]: `color-mix(in srgb, ${color} 8%, white)`,\n [\"--color-brand-100\" as string]: `color-mix(in srgb, ${color} 16%, white)`,\n [\"--color-brand-500\" as string]: color,\n [\"--color-brand-600\" as string]: `color-mix(in srgb, ${color} 85%, black)`,\n [\"--color-brand-700\" as string]: `color-mix(in srgb, ${color} 70%, black)`,\n } as CSSProperties;\n}\n","import React from \"react\";\nimport { getTheme, listThemes } from \"../tokens/registry\";\nimport { getAccent, DEFAULT_ACCENT } from \"../tokens/accents\";\nimport { rawColorToBrandVars } from \"./resolveColor\";\n\ninterface NuvoxProviderProps {\n /** Theme name — shape/structure (radius, shadow, motion, glass/gradient/glow). Must be registered (see tokens/registry.ts). */\n theme?: string;\n /**\n * Either a registered accent name (\"teal\", \"rose\", ...) OR any raw\n * CSS color (\"#ff6600\", \"rgb(255 100 0)\", \"tomato\", ...). A\n * registered name uses the full designed scale (data-accent CSS\n * mechanism); anything else is treated as a literal color and its\n * hover/active/soft shades are derived via CSS color-mix() —\n * no registration needed for a one-off brand color.\n */\n accent?: string;\n children: React.ReactNode;\n /** Renders as this element instead of a div — useful at the document root. */\n as?: keyof React.JSX.IntrinsicElements;\n}\n\n/**\n * Sets data-theme and/or data-accent (or, for a raw color, inline\n * --color-brand-* variables) on a wrapping element. Theme and accent\n * are two independent axes — a theme controls shape (radius, shadow,\n * motion, glass/gradient/glow), an accent controls brand color — and\n * either one can be set without the other. Nesting one NuvoxProvider\n * inside another (or setting `theme`/`accent` directly on a leaf\n * component) overrides just that axis for everything inside it, via\n * the CSS cascade. No resolveTheme() JS function is needed for\n * in-tree components.\n *\n * A future portal-based component is the one case the cascade can't\n * reach on its own, because it renders outside this element's DOM\n * subtree — that's handled by ThemedPortal (see ThemedPortal.tsx),\n * which currently mirrors data-theme/data-accent but NOT a raw\n * color's inline style vars — worth fixing when the next portal\n * component is built and needs to support raw-color overrides too.\n */\nexport function NuvoxProvider({ theme, accent, children, as = \"div\" }: NuvoxProviderProps) {\n if (process.env.NODE_ENV !== \"production\" && theme && !getTheme(theme)) {\n const known = listThemes().map((t) => t.meta.name).join(\", \");\n throw new Error(`NuvoxProvider: unknown theme \"${theme}\". Registered themes: ${known}`);\n }\n // Deliberately no \"unknown accent\" throw the way theme has one —\n // an accent value that isn't a registered name is valid usage\n // (a raw CSS color), not necessarily a typo, so there's no safe\n // way to distinguish \"meant to type teal\" from \"meant #f43f5e\"\n // at this layer. An actually-invalid CSS color string is silently\n // ignored by the browser, the same way a native `color=\"bogus\"`\n // prop would be.\n\n const Tag = as as React.ElementType;\n const attrs: Record<string, string> = {};\n let style: React.CSSProperties | undefined;\n\n if (theme) attrs[\"data-theme\"] = theme;\n\n if (accent) {\n if (getAccent(accent)) {\n attrs[\"data-accent\"] = accent;\n } else {\n style = rawColorToBrandVars(accent);\n }\n }\n\n return (\n <Tag {...attrs} style={style}>\n {children}\n </Tag>\n );\n}\n\n/**\n * Component-level override helper for shape (theme). A component\n * that accepts a `theme?: string` prop wraps its own output with\n * this instead of rendering raw JSX directly, so:\n *\n * <Button theme=\"cyberpunk\" />\n *\n * gets Cyberpunk's shape regardless of the ambient theme, and a\n * Button with no `theme` prop is untouched — it still inherits\n * from whatever ancestor set data-theme, because it renders no\n * data-theme attribute at all.\n */\nexport function withThemeOverride(theme: string | undefined, children: React.ReactNode) {\n if (!theme) return children;\n return <NuvoxProvider theme={theme}>{children}</NuvoxProvider>;\n}\n\n/**\n * Component-level override helper for brand color. Same mechanism\n * as withThemeOverride, but for the independent color axis — a\n * component's `color?: string` prop (see BaseComponentProps) wraps\n * with this:\n *\n * <Button color=\"teal\" /> // registered accent\n * <Button color=\"#ff6600\" /> // raw CSS color, works the same way\n *\n * Either gets applied regardless of which theme is active or which\n * accent/color is ambient, and doesn't touch shape at all. Which of\n * the two paths is used is resolved inside NuvoxProvider, not here —\n * this function doesn't need to know or care which one it is.\n */\nexport function withAccentOverride(color: string | undefined, children: React.ReactNode) {\n if (!color) return children;\n return <NuvoxProvider accent={color}>{children}</NuvoxProvider>;\n}\n\nexport { DEFAULT_ACCENT };\n","import React, { useLayoutEffect, useRef } from \"react\";\nimport { createPortal } from \"react-dom\";\n\n/**\n * ============================================================\n * THE FIX FOR THE #1 BUG FOUND IN THE OLD CODEBASE.\n *\n * Every component that portals to document.body (Popover, Modal,\n * Toast, Tooltip, Dropdown, Select, Combobox, DatePicker, ...)\n * escapes the DOM subtree that data-theme/data-accent cascade\n * through.\n *\n * The old code re-solved this per component: walk up from an\n * anchor element to the nearest [data-theme] ancestor, copy the\n * attribute onto the portal node, and watch it with a\n * MutationObserver in case the theme changes live. That fix was\n * copy-pasted into 12 of 15 portal-using components — and\n * missing from the other 3 (Toast, Tooltip, Kanban), which\n * silently rendered in the wrong theme.\n *\n * ThemedPortal solves it exactly once, for BOTH independent axes\n * (theme = shape, accent = brand color) — they can be set on\n * different ancestor elements (e.g. theme at the app root, an\n * accent override closer to one button), so each is tracked\n * against its own nearest ancestor, not assumed to share one.\n * Every future portal-based component renders through this\n * instead of calling createPortal directly, and the bug class\n * becomes structurally impossible to reintroduce — there's no\n * second place to forget the fix in.\n * ============================================================\n */\ninterface ThemedPortalProps {\n /** Element inside the themed tree to read the ambient theme/accent from (e.g. the trigger button). */\n anchorRef: React.RefObject<HTMLElement | null>;\n children: React.ReactNode;\n /** Defaults to document.body. */\n container?: Element;\n}\n\nconst TRACKED_ATTRIBUTES = [\"data-theme\", \"data-accent\"] as const;\n\nexport function ThemedPortal({ anchorRef, children, container }: ThemedPortalProps) {\n const portalElRef = useRef<HTMLDivElement | null>(null);\n if (!portalElRef.current && typeof document !== \"undefined\") {\n portalElRef.current = document.createElement(\"div\");\n portalElRef.current.setAttribute(\"data-nuvox-portal\", \"\");\n }\n\n useLayoutEffect(() => {\n const target = container ?? document.body;\n const portalEl = portalElRef.current;\n if (!portalEl) return;\n\n target.appendChild(portalEl);\n\n function syncAttribute(attr: string) {\n const anchor = anchorRef.current;\n if (!anchor || !portalEl) return;\n const ancestor = anchor.closest<HTMLElement>(`[${attr}]`);\n const value = ancestor?.getAttribute(attr) ?? \"\";\n const current = portalEl.getAttribute(attr) ?? \"\";\n if (value === current) return;\n if (value) portalEl.setAttribute(attr, value);\n else portalEl.removeAttribute(attr);\n }\n\n function syncAll() {\n for (const attr of TRACKED_ATTRIBUTES) syncAttribute(attr);\n }\n\n syncAll();\n\n // Keep in sync if the ambient theme/accent changes live (e.g.\n // a toolbar or provider prop changing). Each attribute is\n // observed on its own nearest ancestor, since theme and accent\n // may be set at different points in the tree.\n const observers: MutationObserver[] = [];\n const anchor = anchorRef.current;\n for (const attr of TRACKED_ATTRIBUTES) {\n const ancestor = anchor?.closest<HTMLElement>(`[${attr}]`);\n if (ancestor) {\n const observer = new MutationObserver(syncAll);\n observer.observe(ancestor, { attributeFilter: [attr] });\n observers.push(observer);\n }\n }\n\n return () => {\n observers.forEach((o) => o.disconnect());\n target.removeChild(portalEl);\n };\n }, [anchorRef, container]);\n\n if (!portalElRef.current) return null;\n return createPortal(children, portalElRef.current);\n}\n","import React, { forwardRef } from \"react\";\nimport {\n resolveButtonState,\n getButtonClasses,\n getButtonAriaProps,\n type ButtonProps as CoreButtonProps,\n} from \"../core/button\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport \"./Button.css\";\n\ninterface ButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"color\">,\n CoreButtonProps,\n BaseComponentProps {\n /**\n * Anything renderable — a Nuvox icon, a Lucide icon, a raw\n * <svg>, an emoji. Deliberately typed as ReactNode, not as a\n * Nuvox-specific icon type. Button doesn't clone the element,\n * doesn't inject a size prop, doesn't inspect it at all — it\n * just renders it in a wrapping span. This is the fix for the\n * old codebase's icon-coupling problem: the mistake wasn't\n * having an icon package, it was components knowing too much\n * about how that specific package's icons worked internally.\n */\n iconLeft?: React.ReactNode;\n iconRight?: React.ReactNode;\n}\n\n/**\n * Every interactive component forwards its ref. The old codebase\n * did this in 1 of 41 components (Slider only) — every other\n * component, including Button and Input, couldn't be focused\n * imperatively or registered with a form library. That's fixed\n * here structurally: this is the template every future\n * interactive component copies.\n */\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n { children, className, style, theme, color, variant, size, disabled, loading, fullWidth, iconLeft, iconRight, ...rest },\n ref\n) {\n const state = resolveButtonState({ variant, size, disabled, loading, fullWidth });\n const classes = [getButtonClasses(state), className].filter(Boolean).join(\" \");\n const aria = getButtonAriaProps(state);\n\n const button = (\n <button ref={ref} className={classes} style={style} disabled={state.isDisabled} {...aria} {...rest}>\n {state.isLoading && <span className=\"nx-btn__spinner\" aria-hidden=\"true\" />}\n {!state.isLoading && iconLeft && <span className=\"nx-btn__icon nx-btn__icon--left\">{iconLeft}</span>}\n {children}\n {!state.isLoading && iconRight && <span className=\"nx-btn__icon nx-btn__icon--right\">{iconRight}</span>}\n </button>\n );\n\n // `theme` and `color` are independent overrides — either, both,\n // or neither can be set. See NuvoxProvider.tsx for why this\n // needs no JS resolver: it's just nested data-theme/data-accent\n // attributes and the CSS cascade.\n return withThemeOverride(theme, withAccentOverride(color, button));\n});\n","import type { Size } from \"./types\";\n\n// This core/react split is the one pattern from the old codebase\n// that worked without modification — kept as-is. Pure logic, no\n// JSX, no DOM. A future Vue or Angular Button calls these same\n// functions.\n\nexport type ButtonVariant = \"solid\" | \"outline\" | \"ghost\" | \"soft\" | \"danger\";\nexport type ButtonSize = Size; // no bespoke scale — Button doesn't need one\n\nexport interface ButtonProps {\n variant?: ButtonVariant;\n size?: ButtonSize;\n disabled?: boolean;\n loading?: boolean;\n fullWidth?: boolean;\n}\n\nexport interface ButtonState {\n isDisabled: boolean;\n isLoading: boolean;\n variant: ButtonVariant;\n size: ButtonSize;\n fullWidth: boolean;\n}\n\nexport function resolveButtonState(props: ButtonProps): ButtonState {\n return {\n // ?? throughout, never || — a future boolean/numeric prop\n // whose valid value is `false`/`0` must not get silently\n // overridden by a truthy-check fallback. The old codebase\n // mixed ?? and || across files (36 vs 5) with no rule.\n isDisabled: (props.disabled ?? false) || (props.loading ?? false),\n isLoading: props.loading ?? false,\n variant: props.variant ?? \"solid\",\n size: props.size ?? \"md\",\n fullWidth: props.fullWidth ?? false,\n };\n}\n\nexport function getButtonClasses(state: ButtonState): string {\n return [\n \"nx-btn\",\n `nx-btn--${state.variant}`,\n `nx-btn--${state.size}`,\n state.isLoading && \"nx-btn--loading\",\n state.isDisabled && \"nx-btn--disabled\",\n state.fullWidth && \"nx-btn--full\",\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\nexport function getButtonAriaProps(state: ButtonState) {\n return {\n \"aria-disabled\": state.isDisabled ? (true as const) : undefined,\n \"aria-busy\": state.isLoading ? (true as const) : undefined,\n };\n}\n","import React, { forwardRef, useId } from \"react\";\nimport {\n resolveInputState,\n getInputWrapperClasses,\n getInputClasses,\n getInputAriaProps,\n type InputCoreProps,\n} from \"../core/input\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport \"./Field.css\";\nimport \"./Input.css\";\n\ninterface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"color\" | \"prefix\">,\n Omit<InputCoreProps, \"hasPrefix\" | \"hasSuffix\">,\n BaseComponentProps {\n label?: string;\n helperText?: string;\n errorText?: string;\n /**\n * Anything renderable, same philosophy as Button's iconLeft/\n * iconRight (see react/Button.tsx) — Input doesn't inspect or\n * clone what's passed, it just renders it in a slot. No built-in\n * per-`type` icon injection: that coupled the component to a\n * fixed icon set internally in the old codebase.\n */\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n}\n\n/**\n * Category B's ref-forwarding requirement (BUILDING-COMPONENTS.md)\n * is non-negotiable here: this is exactly the component category\n * where the old codebase's 1-of-41 ref problem cost real pain\n * (react-hook-form register(), imperative .focus() on validation\n * error). See react/Button.tsx for the template this follows.\n */\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n {\n className,\n style,\n theme,\n color,\n size,\n disabled,\n required,\n error,\n label,\n helperText,\n errorText,\n prefix,\n suffix,\n id,\n \"aria-describedby\": describedByProp,\n ...rest\n },\n ref\n) {\n const uid = useId();\n const inputId = id ?? `nx-input-${uid}`;\n // An explicit `error` prop wins; otherwise providing errorText\n // implies the invalid state, so a consumer doesn't have to set\n // both redundantly.\n const isInvalid = error ?? !!errorText;\n const helperMessage = errorText ?? helperText;\n const descId = helperMessage ? `nx-input-desc-${uid}` : undefined;\n const describedBy = [describedByProp, descId].filter(Boolean).join(\" \") || undefined;\n\n const state = resolveInputState({\n disabled,\n required,\n error: isInvalid,\n size,\n hasPrefix: !!prefix,\n hasSuffix: !!suffix,\n });\n\n const wrapperClasses = getInputWrapperClasses(state);\n const inputClasses = [getInputClasses(state), className].filter(Boolean).join(\" \");\n const aria = getInputAriaProps(state, describedBy);\n\n const field = (\n <div className=\"nx-field\" style={style}>\n {label && (\n <label htmlFor={inputId} className=\"nx-field__label\">\n {label}\n {state.isRequired && (\n <span className=\"nx-field__required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n <div className={wrapperClasses}>\n {prefix && <span className=\"nx-input__adornment nx-input__adornment--prefix\">{prefix}</span>}\n <input\n ref={ref}\n id={inputId}\n className={inputClasses}\n disabled={state.isDisabled}\n required={state.isRequired}\n {...aria}\n {...rest}\n />\n {suffix && <span className=\"nx-input__adornment nx-input__adornment--suffix\">{suffix}</span>}\n </div>\n {helperMessage && (\n <span id={descId} className={`nx-field__helper${isInvalid ? \" nx-field__helper--error\" : \"\"}`}>\n {helperMessage}\n </span>\n )}\n </div>\n );\n\n // theme/color are independent overrides, same mechanism as Button\n // — see NuvoxProvider.tsx.\n return withThemeOverride(theme, withAccentOverride(color, field));\n});\n","import type { Size } from \"./types\";\n\n// ============================================================\n// Category B (form/input primitives) shared shape.\n//\n// BUILDING-COMPONENTS.md's Category B note: \"Standard props every\n// component in this category should share: value/defaultValue,\n// onChange, disabled, error (or invalid), placeholder where\n// applicable. Decide this shape once, here, rather than letting\n// Input and NumberInput drift (the old color/radius drift, one\n// category up).\" This module is that one decision, applied by\n// every field-based component (Input, Textarea, Checkbox, Radio,\n// Toggle, and any future one) instead of each re-deriving it.\n// ============================================================\n\nexport interface FieldProps {\n disabled?: boolean;\n required?: boolean;\n /** Whether the field is in an invalid/error state. */\n error?: boolean;\n size?: Size;\n}\n\nexport interface FieldState {\n isDisabled: boolean;\n isRequired: boolean;\n isInvalid: boolean;\n size: Size;\n}\n\nexport function resolveFieldState(props: FieldProps): FieldState {\n return {\n // ?? throughout, never || (CONTRACT.md Rule 3) — `error={false}`\n // or `disabled={false}` must not be silently discarded.\n isDisabled: props.disabled ?? false,\n isRequired: props.required ?? false,\n isInvalid: props.error ?? false,\n size: props.size ?? \"md\",\n };\n}\n\n/**\n * Category B's accessibility baseline (BUILDING-COMPONENTS.md):\n * aria-invalid and aria-describedby (for an error/helper message)\n * on every field component, not just the ones an author happened\n * to remember.\n */\nexport function getFieldAriaProps(state: FieldState, describedBy?: string) {\n return {\n \"aria-invalid\": state.isInvalid ? (true as const) : undefined,\n \"aria-required\": state.isRequired ? (true as const) : undefined,\n \"aria-describedby\": describedBy,\n };\n}\n","import type { Size } from \"./types\";\nimport { resolveFieldState, getFieldAriaProps, type FieldProps } from \"./field\";\n\nexport type InputSize = Size; // no bespoke scale — Input doesn't need one\n\nexport interface InputCoreProps extends FieldProps {\n hasPrefix?: boolean;\n hasSuffix?: boolean;\n}\n\nexport interface InputState {\n isDisabled: boolean;\n isRequired: boolean;\n isInvalid: boolean;\n size: InputSize;\n hasPrefix: boolean;\n hasSuffix: boolean;\n}\n\nexport function resolveInputState(props: InputCoreProps): InputState {\n return {\n ...resolveFieldState(props),\n hasPrefix: props.hasPrefix ?? false,\n hasSuffix: props.hasSuffix ?? false,\n };\n}\n\n/** Classes for the outer wrapper (border, focus ring, prefix/suffix layout). */\nexport function getInputWrapperClasses(state: InputState): string {\n return [\n \"nx-input-wrapper\",\n `nx-input-wrapper--${state.size}`,\n state.isDisabled && \"nx-input-wrapper--disabled\",\n state.isInvalid && \"nx-input-wrapper--invalid\",\n state.hasPrefix && \"nx-input-wrapper--has-prefix\",\n state.hasSuffix && \"nx-input-wrapper--has-suffix\",\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\n/** Classes for the <input> element itself. */\nexport function getInputClasses(state: InputState): string {\n return [\"nx-input\", `nx-input--${state.size}`].filter(Boolean).join(\" \");\n}\n\nexport function getInputAriaProps(state: InputState, describedBy?: string) {\n return getFieldAriaProps(state, describedBy);\n}\n","import React, { forwardRef, useId, useRef, useImperativeHandle, useLayoutEffect } from \"react\";\nimport {\n resolveTextareaState,\n getTextareaClasses,\n getTextareaAriaProps,\n getCharacterCount,\n type TextareaCoreProps,\n} from \"../core/textarea\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport \"./Field.css\";\nimport \"./Textarea.css\";\n\ninterface TextareaProps\n extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, \"color\">,\n TextareaCoreProps,\n BaseComponentProps {\n label?: string;\n helperText?: string;\n errorText?: string;\n /** Caps how tall autoGrow will stretch the textarea, in rows. */\n maxRows?: number;\n /** Shows a `n / maxLength` counter — requires `maxLength` to be set. */\n showCount?: boolean;\n}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n {\n className,\n style,\n theme,\n color,\n size,\n disabled,\n required,\n error,\n autoGrow,\n maxLength,\n maxRows,\n showCount,\n label,\n helperText,\n errorText,\n id,\n value,\n defaultValue,\n onChange,\n \"aria-describedby\": describedByProp,\n ...rest\n },\n forwardedRef\n) {\n const uid = useId();\n const textareaId = id ?? `nx-textarea-${uid}`;\n const isInvalid = error ?? !!errorText;\n const helperMessage = errorText ?? helperText;\n\n const innerRef = useRef<HTMLTextAreaElement>(null);\n // Category B's ref-forwarding requirement (see Input.tsx / Button.tsx)\n // still applies here — autoGrow needing an internal DOM ref for\n // measurement doesn't excuse skipping it. useImperativeHandle\n // makes the forwarded ref resolve to the exact same node either way.\n useImperativeHandle(forwardedRef, () => innerRef.current as HTMLTextAreaElement);\n\n const [count, setCount] = React.useState(() => {\n if (typeof value === \"string\") return value.length;\n if (typeof defaultValue === \"string\") return defaultValue.length;\n return 0;\n });\n\n useLayoutEffect(() => {\n if (typeof value === \"string\") setCount(value.length);\n }, [value]);\n\n useLayoutEffect(() => {\n const node = innerRef.current;\n if (!node || !autoGrow) return;\n node.style.height = \"auto\";\n const maxHeight = maxRows ? maxRows * 24 + 20 : undefined;\n const next = maxHeight ? Math.min(node.scrollHeight, maxHeight) : node.scrollHeight;\n node.style.height = `${next}px`;\n }, [autoGrow, maxRows, value, count]);\n\n const charCount = getCharacterCount(count, maxLength);\n const descId = helperMessage || (showCount && maxLength) ? `nx-textarea-desc-${uid}` : undefined;\n const describedBy = [describedByProp, descId].filter(Boolean).join(\" \") || undefined;\n\n const state = resolveTextareaState({ disabled, required, error: isInvalid, size, autoGrow, maxLength });\n const classes = [getTextareaClasses(state), className].filter(Boolean).join(\" \");\n const aria = getTextareaAriaProps(state, describedBy);\n\n const field = (\n <div className=\"nx-field\" style={style}>\n {label && (\n <label htmlFor={textareaId} className=\"nx-field__label\">\n {label}\n {state.isRequired && (\n <span className=\"nx-field__required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n <textarea\n ref={innerRef}\n id={textareaId}\n className={classes}\n disabled={state.isDisabled}\n required={state.isRequired}\n maxLength={maxLength}\n value={value}\n defaultValue={defaultValue}\n onChange={(e) => {\n if (typeof value !== \"string\") setCount(e.target.value.length);\n onChange?.(e);\n }}\n {...aria}\n {...rest}\n />\n {(helperMessage || (showCount && maxLength !== undefined)) && (\n <div className=\"nx-textarea__footer\">\n {helperMessage && (\n <span id={descId} className={`nx-field__helper${isInvalid ? \" nx-field__helper--error\" : \"\"}`}>\n {helperMessage}\n </span>\n )}\n {showCount && maxLength !== undefined && (\n <span className={`nx-field__count${charCount.isOverLimit ? \" nx-field__count--over\" : \"\"}`}>\n {charCount.length} / {maxLength}\n </span>\n )}\n </div>\n )}\n </div>\n );\n\n return withThemeOverride(theme, withAccentOverride(color, field));\n});\n","import type { Size } from \"./types\";\nimport { resolveFieldState, getFieldAriaProps, type FieldProps } from \"./field\";\n\nexport type TextareaSize = Size;\n\nexport interface TextareaCoreProps extends FieldProps {\n autoGrow?: boolean;\n maxLength?: number;\n}\n\nexport interface TextareaState {\n isDisabled: boolean;\n isRequired: boolean;\n isInvalid: boolean;\n size: TextareaSize;\n autoGrow: boolean;\n}\n\nexport function resolveTextareaState(props: TextareaCoreProps): TextareaState {\n return {\n ...resolveFieldState(props),\n autoGrow: props.autoGrow ?? false,\n };\n}\n\nexport function getTextareaClasses(state: TextareaState): string {\n return [\n \"nx-textarea\",\n `nx-textarea--${state.size}`,\n state.isDisabled && \"nx-textarea--disabled\",\n state.isInvalid && \"nx-textarea--invalid\",\n state.autoGrow && \"nx-textarea--auto-grow\",\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\nexport function getTextareaAriaProps(state: TextareaState, describedBy?: string) {\n return getFieldAriaProps(state, describedBy);\n}\n\n/**\n * Character-count helper for the optional `showCount` UI. Pure\n * function, no DOM — kept here rather than inline in the React\n * component so a future non-React Textarea gets it free. Takes a\n * plain length rather than the raw value so it works the same way\n * whether the caller is tracking a controlled `value` or an\n * uncontrolled `defaultValue` via its own local count.\n */\nexport function getCharacterCount(length: number, maxLength?: number) {\n return { length, maxLength, isOverLimit: maxLength !== undefined && length > maxLength };\n}\n","import React, { forwardRef, useId, useRef, useImperativeHandle, useLayoutEffect } from \"react\";\nimport {\n resolveCheckboxState,\n getCheckboxWrapperClasses,\n getCheckboxAriaProps,\n type CheckboxCoreProps,\n} from \"../core/checkbox\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport \"./Field.css\";\nimport \"./Checkbox.css\";\n\ninterface CheckboxProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"color\" | \"type\">,\n CheckboxCoreProps,\n BaseComponentProps {\n label?: React.ReactNode;\n helperText?: string;\n errorText?: string;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\n {\n className,\n style,\n theme,\n color,\n size,\n disabled,\n required,\n error,\n indeterminate,\n label,\n helperText,\n errorText,\n id,\n \"aria-describedby\": describedByProp,\n ...rest\n },\n forwardedRef\n) {\n const uid = useId();\n const checkboxId = id ?? `nx-checkbox-${uid}`;\n const isInvalid = error ?? !!errorText;\n const helperMessage = errorText ?? helperText;\n const descId = helperMessage ? `nx-checkbox-desc-${uid}` : undefined;\n const describedBy = [describedByProp, descId].filter(Boolean).join(\" \") || undefined;\n\n const innerRef = useRef<HTMLInputElement>(null);\n // Same reasoning as Textarea.tsx: indeterminate needs a real DOM\n // ref internally (there's no HTML attribute for it), but that\n // doesn't excuse skipping Category B's ref-forwarding requirement\n // — useImperativeHandle keeps the forwarded ref pointed at the\n // exact same <input> node.\n useImperativeHandle(forwardedRef, () => innerRef.current as HTMLInputElement);\n\n useLayoutEffect(() => {\n if (innerRef.current) innerRef.current.indeterminate = indeterminate ?? false;\n }, [indeterminate]);\n\n const state = resolveCheckboxState({ disabled, required, error: isInvalid, size, indeterminate });\n const wrapperClasses = [getCheckboxWrapperClasses(state), className].filter(Boolean).join(\" \");\n const aria = getCheckboxAriaProps(state, describedBy);\n\n const field = (\n <div className=\"nx-field\">\n <label className={wrapperClasses} style={style}>\n <span className=\"nx-checkbox__control\">\n <input\n ref={innerRef}\n type=\"checkbox\"\n id={checkboxId}\n className=\"nx-checkbox__input\"\n disabled={state.isDisabled}\n required={state.isRequired}\n {...aria}\n {...rest}\n />\n {/* The visual box is pure CSS off the real input's\n :checked/:indeterminate pseudo-classes (see\n core/checkbox.ts) — it never needs its own JS state. */}\n <span className=\"nx-checkbox__box\" aria-hidden=\"true\">\n <svg className=\"nx-checkbox__check\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M3.5 8.5l3 3 6-7\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n <span className=\"nx-checkbox__dash\" aria-hidden=\"true\" />\n </span>\n </span>\n {label && <span className=\"nx-checkbox__label\">{label}</span>}\n </label>\n {helperMessage && (\n <span id={descId} className={`nx-field__helper${isInvalid ? \" nx-field__helper--error\" : \"\"}`}>\n {helperMessage}\n </span>\n )}\n </div>\n );\n\n return withThemeOverride(theme, withAccentOverride(color, field));\n});\n","import type { Size } from \"./types\";\nimport { resolveFieldState, getFieldAriaProps, type FieldProps } from \"./field\";\n\nexport type CheckboxSize = Size;\n\nexport interface CheckboxCoreProps extends FieldProps {\n indeterminate?: boolean;\n}\n\nexport interface CheckboxState {\n isDisabled: boolean;\n isRequired: boolean;\n isInvalid: boolean;\n size: CheckboxSize;\n isIndeterminate: boolean;\n}\n\nexport function resolveCheckboxState(props: CheckboxCoreProps): CheckboxState {\n return {\n ...resolveFieldState(props),\n isIndeterminate: props.indeterminate ?? false,\n };\n}\n\nexport function getCheckboxWrapperClasses(state: CheckboxState): string {\n return [\n \"nx-checkbox\",\n `nx-checkbox--${state.size}`,\n state.isDisabled && \"nx-checkbox--disabled\",\n state.isInvalid && \"nx-checkbox--invalid\",\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\n/**\n * Checked/unchecked visual state is driven by the CSS\n * `:checked`/`:indeterminate` pseudo-classes on the real (visually\n * hidden) <input>, not by a JS-computed class — the input stays the\n * single source of truth whether it's controlled or uncontrolled,\n * so there's no way for the visual box and the actual form value to\n * drift apart. `indeterminate` still needs a JS assignment (there's\n * no HTML attribute for it), but the resulting box styling is still\n * pure CSS off the property browsers expose as `:indeterminate`.\n */\nexport function getCheckboxAriaProps(state: CheckboxState, describedBy?: string) {\n return {\n ...getFieldAriaProps(state, describedBy),\n // Explicit aria-checked=\"mixed\" for indeterminate — don't rely\n // solely on the browser's implicit mapping of the indeterminate\n // DOM property to the accessibility tree.\n \"aria-checked\": state.isIndeterminate ? (\"mixed\" as const) : undefined,\n };\n}\n","import React, { forwardRef, useId } from \"react\";\nimport { resolveRadioState, getRadioWrapperClasses, getRadioAriaProps, type RadioCoreProps } from \"../core/radio\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport \"./Field.css\";\nimport \"./Radio.css\";\n\ninterface RadioProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"color\" | \"type\">,\n RadioCoreProps,\n BaseComponentProps {\n label?: React.ReactNode;\n helperText?: string;\n errorText?: string;\n}\n\n/**\n * A single radio input. Grouping multiple `Radio`s is done the same\n * way native HTML does it — give them the same `name` — rather than\n * a bespoke RadioGroup wrapper; see core/radio.ts for why that's a\n * deliberate scope decision, not an oversight.\n */\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(function Radio(\n {\n className,\n style,\n theme,\n color,\n size,\n disabled,\n required,\n error,\n label,\n helperText,\n errorText,\n id,\n \"aria-describedby\": describedByProp,\n ...rest\n },\n ref\n) {\n const uid = useId();\n const radioId = id ?? `nx-radio-${uid}`;\n const isInvalid = error ?? !!errorText;\n const helperMessage = errorText ?? helperText;\n const descId = helperMessage ? `nx-radio-desc-${uid}` : undefined;\n const describedBy = [describedByProp, descId].filter(Boolean).join(\" \") || undefined;\n\n const state = resolveRadioState({ disabled, required, error: isInvalid, size });\n const wrapperClasses = [getRadioWrapperClasses(state), className].filter(Boolean).join(\" \");\n const aria = getRadioAriaProps(state, describedBy);\n\n const field = (\n <div className=\"nx-field\">\n <label className={wrapperClasses} style={style}>\n <span className=\"nx-radio__control\">\n <input\n ref={ref}\n type=\"radio\"\n id={radioId}\n className=\"nx-radio__input\"\n disabled={state.isDisabled}\n required={state.isRequired}\n {...aria}\n {...rest}\n />\n <span className=\"nx-radio__ring\" aria-hidden=\"true\">\n <span className=\"nx-radio__dot\" />\n </span>\n </span>\n {label && <span className=\"nx-radio__label\">{label}</span>}\n </label>\n {helperMessage && (\n <span id={descId} className={`nx-field__helper${isInvalid ? \" nx-field__helper--error\" : \"\"}`}>\n {helperMessage}\n </span>\n )}\n </div>\n );\n\n return withThemeOverride(theme, withAccentOverride(color, field));\n});\n","import type { Size } from \"./types\";\nimport { resolveFieldState, getFieldAriaProps, type FieldProps } from \"./field\";\n\nexport type RadioSize = Size;\n\nexport type RadioCoreProps = FieldProps;\n\nexport interface RadioState {\n isDisabled: boolean;\n isRequired: boolean;\n isInvalid: boolean;\n size: RadioSize;\n}\n\nexport function resolveRadioState(props: RadioCoreProps): RadioState {\n return resolveFieldState(props);\n}\n\nexport function getRadioWrapperClasses(state: RadioState): string {\n return [\n \"nx-radio\",\n `nx-radio--${state.size}`,\n state.isDisabled && \"nx-radio--disabled\",\n state.isInvalid && \"nx-radio--invalid\",\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\n// Checked/unchecked visual state is driven by the native <input>'s\n// :checked pseudo-class, the same reasoning as Checkbox — see\n// core/checkbox.ts's getCheckboxAriaProps comment.\nexport function getRadioAriaProps(state: RadioState, describedBy?: string) {\n return getFieldAriaProps(state, describedBy);\n}\n\n// A grouping wrapper (RadioGroup) is deliberately not included here —\n// it doesn't exist in the old codebase either, and grouping is\n// achievable today via the native `name` attribute across sibling\n// <Radio> elements. If a future consumer needs shared keyboard\n// roving-tabindex behavior beyond what native radios already give\n// for free, that's a new component to design deliberately (per\n// CONTRACT.md Rule 12), not something to bolt onto Radio itself.\n","import React, { forwardRef, useId } from \"react\";\nimport { resolveToggleState, getToggleWrapperClasses, getToggleAriaProps, type ToggleCoreProps } from \"../core/toggle\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport \"./Field.css\";\nimport \"./Toggle.css\";\n\ninterface ToggleProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"color\" | \"type\">,\n ToggleCoreProps,\n BaseComponentProps {\n label?: React.ReactNode;\n helperText?: string;\n errorText?: string;\n}\n\nexport const Toggle = forwardRef<HTMLInputElement, ToggleProps>(function Toggle(\n {\n className,\n style,\n theme,\n color,\n size,\n disabled,\n required,\n error,\n label,\n helperText,\n errorText,\n id,\n \"aria-describedby\": describedByProp,\n ...rest\n },\n ref\n) {\n const uid = useId();\n const toggleId = id ?? `nx-toggle-${uid}`;\n const isInvalid = error ?? !!errorText;\n const helperMessage = errorText ?? helperText;\n const descId = helperMessage ? `nx-toggle-desc-${uid}` : undefined;\n const describedBy = [describedByProp, descId].filter(Boolean).join(\" \") || undefined;\n\n const state = resolveToggleState({ disabled, required, error: isInvalid, size });\n const wrapperClasses = [getToggleWrapperClasses(state), className].filter(Boolean).join(\" \");\n const aria = getToggleAriaProps(state, describedBy);\n\n const field = (\n <div className=\"nx-field\">\n <label className={wrapperClasses} style={style}>\n <span className=\"nx-toggle__control\">\n <input\n ref={ref}\n type=\"checkbox\"\n role=\"switch\"\n id={toggleId}\n className=\"nx-toggle__input\"\n disabled={state.isDisabled}\n required={state.isRequired}\n {...aria}\n {...rest}\n />\n <span className=\"nx-toggle__track\" aria-hidden=\"true\">\n <span className=\"nx-toggle__thumb\" />\n </span>\n </span>\n {label && <span className=\"nx-toggle__label\">{label}</span>}\n </label>\n {helperMessage && (\n <span id={descId} className={`nx-field__helper${isInvalid ? \" nx-field__helper--error\" : \"\"}`}>\n {helperMessage}\n </span>\n )}\n </div>\n );\n\n return withThemeOverride(theme, withAccentOverride(color, field));\n});\n","import type { Size } from \"./types\";\nimport { resolveFieldState, getFieldAriaProps, type FieldProps } from \"./field\";\n\nexport type ToggleSize = Size;\n\nexport type ToggleCoreProps = FieldProps;\n\nexport interface ToggleState {\n isDisabled: boolean;\n isRequired: boolean;\n isInvalid: boolean;\n size: ToggleSize;\n}\n\nexport function resolveToggleState(props: ToggleCoreProps): ToggleState {\n return resolveFieldState(props);\n}\n\nexport function getToggleWrapperClasses(state: ToggleState): string {\n return [\n \"nx-toggle\",\n `nx-toggle--${state.size}`,\n state.isDisabled && \"nx-toggle--disabled\",\n state.isInvalid && \"nx-toggle--invalid\",\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\n// Checked/unchecked (on/off) is a real <input type=\"checkbox\"\n// role=\"switch\"> under the hood — same :checked-pseudo-class\n// reasoning as Checkbox/Radio, see core/checkbox.ts.\nexport function getToggleAriaProps(state: ToggleState, describedBy?: string) {\n return getFieldAriaProps(state, describedBy);\n}\n","import React, { forwardRef } from \"react\";\nimport { resolveBadgeState, getBadgeClasses, formatBadgeCount, type BadgeCoreProps } from \"../core/badge\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport \"./Badge.css\";\n\ninterface BadgeProps extends BadgeCoreProps, BaseComponentProps {\n children?: React.ReactNode;\n iconLeft?: React.ReactNode;\n iconRight?: React.ReactNode;\n /**\n * Presence of this prop is what makes the badge dismissible/a\n * chip — there's no separate `dismissible` boolean to keep in\n * sync with it (Category A convention: derive booleans from what\n * was actually passed rather than asking for both).\n */\n onDismiss?: React.MouseEventHandler<HTMLButtonElement>;\n}\n\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n { className, style, theme, color, children, iconLeft, iconRight, count, onDismiss, ...rest },\n ref\n) {\n const state = resolveBadgeState({\n ...rest,\n count,\n dismissible: !!onDismiss,\n hasIconLeft: !!iconLeft,\n hasIconRight: !!iconRight,\n });\n const classes = [getBadgeClasses(state), className].filter(Boolean).join(\" \");\n\n const content = count !== undefined ? formatBadgeCount(count) : children;\n\n const badge = (\n <span ref={ref} className={classes} style={style}>\n {iconLeft && !state.isDot && <span className=\"nx-badge__icon\">{iconLeft}</span>}\n\n {!state.isDot && <span className=\"nx-badge__label\">{content}</span>}\n\n {iconRight && !state.isDot && !state.isDismissible && (\n <span className=\"nx-badge__icon\">{iconRight}</span>\n )}\n\n {state.isDismissible && (\n <button\n type=\"button\"\n className=\"nx-badge__dismiss\"\n onClick={onDismiss}\n aria-label={typeof content === \"string\" ? `Remove ${content}` : \"Remove\"}\n >\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M2 2l6 6M8 2l-6 6\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" />\n </svg>\n </button>\n )}\n </span>\n );\n\n return withThemeOverride(theme, withAccentOverride(color, badge));\n});\n","import type { Size } from \"./types\";\n\n// Reuses the same variant vocabulary Button already established\n// (solid/outline/soft) rather than inventing a fresh one — see\n// types.ts's convention note on Size for why sharing beats each\n// component picking its own scale independently.\nexport type BadgeVariant = \"solid\" | \"outline\" | \"soft\";\n\nexport interface BadgeCoreProps {\n variant?: BadgeVariant;\n size?: Size;\n /** Renders a small status dot instead of any label/count content. */\n dot?: boolean;\n /** Numeric count — 999+ caps display, same convention as the old codebase. */\n count?: number;\n /** Derived by the React layer from whether onDismiss was passed, not set directly. */\n dismissible?: boolean;\n hasIconLeft?: boolean;\n hasIconRight?: boolean;\n}\n\nexport interface BadgeState {\n variant: BadgeVariant;\n size: Size;\n isDot: boolean;\n isDismissible: boolean;\n hasIconLeft: boolean;\n hasIconRight: boolean;\n}\n\nexport function resolveBadgeState(props: BadgeCoreProps): BadgeState {\n return {\n variant: props.variant ?? \"solid\",\n size: props.size ?? \"md\",\n isDot: props.dot ?? false,\n isDismissible: props.dismissible ?? false,\n hasIconLeft: props.hasIconLeft ?? false,\n hasIconRight: props.hasIconRight ?? false,\n };\n}\n\nexport function getBadgeClasses(state: BadgeState): string {\n return [\n \"nx-badge\",\n `nx-badge--${state.variant}`,\n `nx-badge--${state.size}`,\n state.isDot && \"nx-badge--dot\",\n state.isDismissible && \"nx-badge--dismissible\",\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\n/** Pure formatting helper: 1000 -> \"999+\", otherwise the number as-is. */\nexport function formatBadgeCount(count: number): string {\n return count > 999 ? \"999+\" : String(count);\n}\n","import React, { forwardRef, useState } from \"react\";\nimport {\n resolveAvatarState,\n getAvatarClasses,\n getStatusClasses,\n getInitials,\n getAvatarHue,\n type AvatarCoreProps,\n} from \"../core/avatar\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport \"./Avatar.css\";\n\ninterface AvatarProps extends AvatarCoreProps, BaseComponentProps {\n src?: string;\n alt?: string;\n /** Used for the initials fallback and the deterministic fallback color. */\n name?: string;\n onClick?: () => void;\n}\n\nexport const Avatar = forwardRef<HTMLSpanElement, AvatarProps>(function Avatar(\n { className, style, theme, color, src, alt, name, status, onClick, ...rest },\n ref\n) {\n // A broken/failed image URL falls back to initials instead of a\n // broken-image icon — same fallback chain as the old codebase, but\n // ported into `hasImage` state so it flows through the same\n // resolve/classes pipeline as everything else instead of being an\n // ad hoc conditional in the JSX.\n const [imgError, setImgError] = useState(false);\n const hasImage = !!src && !imgError;\n\n const state = resolveAvatarState({ ...rest, status, hasImage, isClickable: !!onClick });\n const classes = [getAvatarClasses(state), className].filter(Boolean).join(\" \");\n\n const initials = getInitials(name);\n const hue = getAvatarHue(name);\n const fallbackStyle: React.CSSProperties = !hasImage\n ? { background: `hsl(${hue} 55% 88%)`, color: `hsl(${hue} 55% 30%)` }\n : {};\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLSpanElement>) {\n if (!onClick) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick();\n }\n }\n\n const avatar = (\n <span\n ref={ref}\n className={classes}\n style={style}\n onClick={onClick}\n role={onClick ? \"button\" : undefined}\n tabIndex={onClick ? 0 : undefined}\n onKeyDown={onClick ? handleKeyDown : undefined}\n aria-label={alt ?? name ?? \"Avatar\"}\n >\n {/*\n The clip (overflow: hidden, for a circular/square image crop)\n lives on this inner element, not the outer one. If it lived\n on the outer element, the status dot below — positioned in\n the bottom-right corner of the square bounding box — would\n sit outside the *visual* circle and get clipped into a\n crescent by the same overflow:hidden that's meant to crop the\n image. Keeping the clip scoped to just the image/initials\n lets the status dot render as an actual full circle.\n */}\n <span className=\"nx-avatar__visual\" style={fallbackStyle}>\n {hasImage ? (\n <img\n className=\"nx-avatar__image\"\n src={src}\n alt={alt ?? name ?? \"\"}\n onError={() => setImgError(true)}\n />\n ) : (\n <span className=\"nx-avatar__initials\" aria-hidden=\"true\">\n {initials}\n </span>\n )}\n </span>\n {status && <span className={getStatusClasses(status)} aria-hidden=\"true\" />}\n </span>\n );\n\n return withThemeOverride(theme, withAccentOverride(color, avatar));\n});\n","import type { Size } from \"./types\";\n\n// types.ts's own convention comment names this exact case — \"Avatar\n// reasonably wants 2xl\" — as the model for a deliberate, visible\n// divergence from the shared scale rather than a silent one.\nexport type AvatarSize = Size | \"2xl\";\nexport type AvatarShape = \"circle\" | \"square\";\nexport type AvatarStatus = \"online\" | \"offline\" | \"away\" | \"busy\";\n\nexport interface AvatarCoreProps {\n size?: AvatarSize;\n shape?: AvatarShape;\n status?: AvatarStatus;\n /** Derived by the React layer (image present and not errored), not set directly. */\n hasImage?: boolean;\n /** Derived by the React layer from whether an onClick was passed. */\n isClickable?: boolean;\n}\n\nexport interface AvatarState {\n size: AvatarSize;\n shape: AvatarShape;\n status?: AvatarStatus;\n hasImage: boolean;\n isClickable: boolean;\n}\n\nexport function resolveAvatarState(props: AvatarCoreProps): AvatarState {\n return {\n size: props.size ?? \"md\",\n shape: props.shape ?? \"circle\",\n status: props.status,\n hasImage: props.hasImage ?? false,\n isClickable: props.isClickable ?? false,\n };\n}\n\nexport function getAvatarClasses(state: AvatarState): string {\n return [\n \"nx-avatar\",\n `nx-avatar--${state.size}`,\n `nx-avatar--${state.shape}`,\n state.hasImage && \"nx-avatar--has-image\",\n state.isClickable && \"nx-avatar--clickable\",\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\nexport function getStatusClasses(status: AvatarStatus): string {\n return `nx-avatar__status nx-avatar__status--${status}`;\n}\n\n/**\n * \"Jane Doe\" -> \"JD\", \"Cher\" -> \"C\", \"\" / undefined -> \"\". Pure —\n * ported as-is from the old codebase's logic, which was already\n * correct and framework-agnostic in spirit even if it lived\n * directly in the React file there.\n */\nexport function getInitials(name?: string): string {\n const trimmed = (name ?? \"\").trim();\n if (!trimmed) return \"\";\n const parts = trimmed.split(/\\s+/);\n const first = parts[0]?.[0] ?? \"\";\n const last = parts.length > 1 ? (parts[parts.length - 1]?.[0] ?? \"\") : \"\";\n return (first + last).toUpperCase();\n}\n\n/**\n * Deterministic hue (0-359) derived from a name, so the same person\n * always gets the same fallback color across renders/sessions\n * without needing to persist anything.\n */\nexport function getAvatarHue(name?: string): number {\n const value = name ?? \"\";\n let hash = 0;\n for (let i = 0; i < value.length; i++) {\n hash = (hash << 5) - hash + value.charCodeAt(i);\n hash |= 0; // keep it a 32-bit int\n }\n return Math.abs(hash) % 360;\n}\n","import React, { forwardRef } from \"react\";\nimport { resolveSpinnerState, getSpinnerClasses, getSpinnerAriaProps, type SpinnerCoreProps } from \"../core/spinner\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport \"./Spinner.css\";\n\ninterface SpinnerProps extends SpinnerCoreProps, BaseComponentProps {}\n\nexport const Spinner = forwardRef<HTMLSpanElement, SpinnerProps>(function Spinner(\n { className, style, theme, color, ...rest },\n ref\n) {\n const state = resolveSpinnerState(rest);\n const classes = [getSpinnerClasses(state), className].filter(Boolean).join(\" \");\n const aria = getSpinnerAriaProps(state);\n\n const spinner = (\n <span ref={ref} className={classes} style={style} {...aria}>\n {/* ---------- Circular and geometric (unchanged) ---------- */}\n\n {state.variant === \"ring\" && (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" className=\"nx-spinner__ring-svg\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"3\" opacity=\"0.2\" />\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeDasharray=\"15.7 47.1\"\n className=\"nx-spinner__ring-arc\"\n />\n </svg>\n )}\n\n {state.variant === \"dots\" && (\n <span className=\"nx-spinner__dots\" aria-hidden=\"true\">\n <span className=\"nx-spinner__dot\" />\n <span className=\"nx-spinner__dot\" />\n <span className=\"nx-spinner__dot\" />\n </span>\n )}\n\n {state.variant === \"bars\" && (\n <span className=\"nx-spinner__bars\" aria-hidden=\"true\">\n <span className=\"nx-spinner__bar\" />\n <span className=\"nx-spinner__bar\" />\n <span className=\"nx-spinner__bar\" />\n <span className=\"nx-spinner__bar\" />\n </span>\n )}\n\n {state.variant === \"pulse\" && <span className=\"nx-spinner__pulse\" aria-hidden=\"true\" />}\n\n {state.variant === \"dual-ring\" && (\n <span className=\"nx-spinner__dual-ring\" aria-hidden=\"true\">\n <span className=\"nx-spinner__dual-ring-outer\" />\n <span className=\"nx-spinner__dual-ring-inner\" />\n </span>\n )}\n\n {state.variant === \"ripple\" && (\n <span className=\"nx-spinner__ripple\" aria-hidden=\"true\">\n <span className=\"nx-spinner__ripple-wave\" />\n <span className=\"nx-spinner__ripple-wave\" />\n </span>\n )}\n\n {/* Orbit (fixed) — a nucleus dot with two plain concentric\n circles, each carrying its own satellite dot around the\n track. The two `.orbit-spin` wrappers are now full-size\n siblings of the rings (not nested inside each ring's own\n shrunk box), and each satellite is positioned by its ring's\n actual radius as a percentage of the full container. This\n keeps both dots correctly sized and seated exactly on their\n track — previously the outer satellite overlapped the ring\n enough to read as a fused oval, and the inner satellite was\n sized against the inner ring's already-shrunk box, making\n it tiny and off-track. */}\n {state.variant === \"orbit\" && (\n <span className=\"nx-spinner__orbit\" aria-hidden=\"true\">\n <span className=\"nx-spinner__orbit-nucleus\" />\n <span className=\"nx-spinner__orbit-ring nx-spinner__orbit-ring--outer\" />\n <span className=\"nx-spinner__orbit-ring nx-spinner__orbit-ring--inner\" />\n <span className=\"nx-spinner__orbit-spin nx-spinner__orbit-spin--outer\">\n <span className=\"nx-spinner__orbit-satellite nx-spinner__orbit-satellite--outer\" />\n </span>\n <span className=\"nx-spinner__orbit-spin nx-spinner__orbit-spin--inner\">\n <span className=\"nx-spinner__orbit-satellite nx-spinner__orbit-satellite--inner\" />\n </span>\n </span>\n )}\n\n {state.variant === \"bounce\" && (\n <span className=\"nx-spinner__bounce-track\" aria-hidden=\"true\">\n <span className=\"nx-spinner__bounce-ball\" />\n </span>\n )}\n\n {state.variant === \"conic\" && <span className=\"nx-spinner__conic\" aria-hidden=\"true\" />}\n\n {/* Buffer — moved into the circular/geometric tier: it's a\n full-rotation ring motion, same family as ring/dual-ring/\n conic, not a creative silhouette. Twelve ticks around a\n ring, fading from solid to faint across the circle, spinning\n as one rigid body — the classic video-buffering /\n activity-indicator look. */}\n {state.variant === \"buffer\" && (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" className=\"nx-spinner__buffer-svg\" aria-hidden=\"true\">\n <g className=\"nx-spinner__buffer-group\">\n <rect x=\"11\" y=\"2\" width=\"2\" height=\"5\" rx=\"1\" fill=\"currentColor\" opacity=\"1\" transform=\"rotate(0 12 12)\" />\n <rect x=\"11\" y=\"2\" width=\"2\" height=\"5\" rx=\"1\" fill=\"currentColor\" opacity=\"0.92\" transform=\"rotate(30 12 12)\" />\n <rect x=\"11\" y=\"2\" width=\"2\" height=\"5\" rx=\"1\" fill=\"currentColor\" opacity=\"0.83\" transform=\"rotate(60 12 12)\" />\n <rect x=\"11\" y=\"2\" width=\"2\" height=\"5\" rx=\"1\" fill=\"currentColor\" opacity=\"0.75\" transform=\"rotate(90 12 12)\" />\n <rect x=\"11\" y=\"2\" width=\"2\" height=\"5\" rx=\"1\" fill=\"currentColor\" opacity=\"0.66\" transform=\"rotate(120 12 12)\" />\n <rect x=\"11\" y=\"2\" width=\"2\" height=\"5\" rx=\"1\" fill=\"currentColor\" opacity=\"0.58\" transform=\"rotate(150 12 12)\" />\n <rect x=\"11\" y=\"2\" width=\"2\" height=\"5\" rx=\"1\" fill=\"currentColor\" opacity=\"0.49\" transform=\"rotate(180 12 12)\" />\n <rect x=\"11\" y=\"2\" width=\"2\" height=\"5\" rx=\"1\" fill=\"currentColor\" opacity=\"0.41\" transform=\"rotate(210 12 12)\" />\n <rect x=\"11\" y=\"2\" width=\"2\" height=\"5\" rx=\"1\" fill=\"currentColor\" opacity=\"0.32\" transform=\"rotate(240 12 12)\" />\n <rect x=\"11\" y=\"2\" width=\"2\" height=\"5\" rx=\"1\" fill=\"currentColor\" opacity=\"0.24\" transform=\"rotate(270 12 12)\" />\n <rect x=\"11\" y=\"2\" width=\"2\" height=\"5\" rx=\"1\" fill=\"currentColor\" opacity=\"0.15\" transform=\"rotate(300 12 12)\" />\n <rect x=\"11\" y=\"2\" width=\"2\" height=\"5\" rx=\"1\" fill=\"currentColor\" opacity=\"0.08\" transform=\"rotate(330 12 12)\" />\n </g>\n </svg>\n )}\n\n {/* ---------- Creative and non-circular ---------- */}\n\n {state.variant === \"linear\" && (\n <span className=\"nx-spinner__linear-track\" aria-hidden=\"true\">\n <span className=\"nx-spinner__linear-bar\" />\n </span>\n )}\n\n {state.variant === \"heartbeat\" && (\n <svg viewBox=\"0 0 48 24\" fill=\"none\" className=\"nx-spinner__heartbeat-svg\" aria-hidden=\"true\">\n <path\n d=\"M0,12 L8,12 L11,4 L14,20 L17,12 L20,12 L23,6 L26,18 L29,12 L48,12\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n opacity=\"0.2\"\n />\n <path\n d=\"M0,12 L8,12 L11,4 L14,20 L17,12 L20,12 L23,6 L26,18 L29,12 L48,12\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"nx-spinner__heartbeat-path\"\n />\n </svg>\n )}\n\n {/* Infinity — rebuilt using actual circular arcs (A r r ...)\n instead of cubic beziers, so the two loops are geometrically\n real circles meeting at the center — no more egg-shaped\n edges. */}\n {state.variant === \"infinity\" && (\n <svg viewBox=\"0 0 36 20\" fill=\"none\" className=\"nx-spinner__infinity-svg\" aria-hidden=\"true\">\n <path\n d=\"M18,10 A6,6 0 1,1 30,10 A6,6 0 1,1 18,10 A6,6 0 1,0 6,10 A6,6 0 1,0 18,10 Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n opacity=\"0.2\"\n />\n <path\n d=\"M18,10 A6,6 0 1,1 30,10 A6,6 0 1,1 18,10 A6,6 0 1,0 6,10 A6,6 0 1,0 18,10 Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n className=\"nx-spinner__infinity-path\"\n />\n </svg>\n )}\n\n {/* Hourglass — sand visibly drains from one bulb into the\n other, then the whole glass flips and it repeats. */}\n {state.variant === \"hourglass\" && (\n <svg viewBox=\"0 0 24 32\" fill=\"none\" className=\"nx-spinner__hourglass-svg\" aria-hidden=\"true\">\n <path\n d=\"M5 2 H19 L12 16 L19 30 H5 L12 16 Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinejoin=\"round\"\n opacity=\"0.3\"\n />\n <path className=\"nx-spinner__hourglass-sand-top\" d=\"M6.5 4 H17.5 L12 14.5 Z\" fill=\"currentColor\" />\n <path className=\"nx-spinner__hourglass-sand-bottom\" d=\"M6.5 28 H17.5 L12 17.5 Z\" fill=\"currentColor\" />\n <circle className=\"nx-spinner__hourglass-grain\" cx=\"12\" cy=\"16\" r=\"1\" fill=\"currentColor\" />\n </svg>\n )}\n\n {/* Pinwheel — curved sail-shaped blades around a fixed hub,\n spinning as one rigid body. */}\n {state.variant === \"pinwheel\" && (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" className=\"nx-spinner__pinwheel-svg\" aria-hidden=\"true\">\n <g className=\"nx-spinner__pinwheel-blades\">\n <path\n d=\"M12 12 C13 6 21 8 21 12 C21 16 15 15 12 12 Z\"\n fill=\"currentColor\"\n transform=\"rotate(0 12 12)\"\n opacity=\"1\"\n />\n <path\n d=\"M12 12 C13 6 21 8 21 12 C21 16 15 15 12 12 Z\"\n fill=\"currentColor\"\n transform=\"rotate(90 12 12)\"\n opacity=\"0.75\"\n />\n <path\n d=\"M12 12 C13 6 21 8 21 12 C21 16 15 15 12 12 Z\"\n fill=\"currentColor\"\n transform=\"rotate(180 12 12)\"\n opacity=\"0.5\"\n />\n <path\n d=\"M12 12 C13 6 21 8 21 12 C21 16 15 15 12 12 Z\"\n fill=\"currentColor\"\n transform=\"rotate(270 12 12)\"\n opacity=\"0.25\"\n />\n </g>\n <circle cx=\"12\" cy=\"12\" r=\"1.6\" fill=\"currentColor\" />\n </svg>\n )}\n\n {/* Radar — a filled sweeping wedge inside a bordered disc,\n sonar-screen style. No blip: it added visual noise and\n didn't read cleanly as it faded in/out inside the sweep. */}\n {state.variant === \"radar\" && (\n <span className=\"nx-spinner__radar\" aria-hidden=\"true\">\n <span className=\"nx-spinner__radar-sweep\" />\n </span>\n )}\n\n {/* Wave — five dots bobbing vertically in a staggered sequence,\n a literal traveling wave rather than \"bars\"'s in-place\n height pulse. Dots are ovals (elongated) sized via CSS with\n a locked aspect-ratio. */}\n {state.variant === \"wave\" && (\n <span className=\"nx-spinner__wave\" aria-hidden=\"true\">\n <span className=\"nx-spinner__wave-dot\" />\n <span className=\"nx-spinner__wave-dot\" />\n <span className=\"nx-spinner__wave-dot\" />\n <span className=\"nx-spinner__wave-dot\" />\n <span className=\"nx-spinner__wave-dot\" />\n </span>\n )}\n\n {/* Helix — two strands: five rows, each with two dots swinging\n in mirrored phase so they visibly cross like a double helix.\n Kept deliberately simple (an earlier pass added connecting\n \"rungs\" between the dots, which read as clutter rather than\n DNA) — bolder here just means bigger dots and punchier\n opacity, not more elements. */}\n {state.variant === \"helix\" && (\n <span className=\"nx-spinner__helix\" aria-hidden=\"true\">\n <span className=\"nx-spinner__helix-row\">\n <span className=\"nx-spinner__helix-dot nx-spinner__helix-dot--a\" />\n <span className=\"nx-spinner__helix-dot nx-spinner__helix-dot--b\" />\n </span>\n <span className=\"nx-spinner__helix-row\">\n <span className=\"nx-spinner__helix-dot nx-spinner__helix-dot--a\" />\n <span className=\"nx-spinner__helix-dot nx-spinner__helix-dot--b\" />\n </span>\n <span className=\"nx-spinner__helix-row\">\n <span className=\"nx-spinner__helix-dot nx-spinner__helix-dot--a\" />\n <span className=\"nx-spinner__helix-dot nx-spinner__helix-dot--b\" />\n </span>\n <span className=\"nx-spinner__helix-row\">\n <span className=\"nx-spinner__helix-dot nx-spinner__helix-dot--a\" />\n <span className=\"nx-spinner__helix-dot nx-spinner__helix-dot--b\" />\n </span>\n <span className=\"nx-spinner__helix-row\">\n <span className=\"nx-spinner__helix-dot nx-spinner__helix-dot--a\" />\n <span className=\"nx-spinner__helix-dot nx-spinner__helix-dot--b\" />\n </span>\n </span>\n )}\n\n {/* Atom — three tilted elliptical orbits with an electron\n circling each, around a fixed nucleus. The ring is squashed\n into an ellipse and rotated to fake orbital motion. Each\n electron sits inside an \"orbit\" wrapper (sets position only)\n and a \"counter\" wrapper that spins opposite to `.atom-spin`\n at the same speed — cancelling the ambient rotation before\n the electron's own scaleY correction is applied, so the\n squash and its inverse are always axis-aligned. That keeps\n the electron perfectly round at every point on the orbit,\n not just at two angles like the old static-scale approach. */}\n {state.variant === \"atom\" && (\n <span className=\"nx-spinner__atom\" aria-hidden=\"true\">\n <span className=\"nx-spinner__atom-nucleus\" aria-hidden=\"true\" />\n <span className=\"nx-spinner__atom-ring nx-spinner__atom-ring--a\">\n <span className=\"nx-spinner__atom-spin\">\n <span className=\"nx-spinner__atom-electron-orbit\">\n <span className=\"nx-spinner__atom-electron-counter\">\n <span className=\"nx-spinner__atom-electron\" />\n </span>\n </span>\n </span>\n </span>\n <span className=\"nx-spinner__atom-ring nx-spinner__atom-ring--b\">\n <span className=\"nx-spinner__atom-spin\">\n <span className=\"nx-spinner__atom-electron-orbit\">\n <span className=\"nx-spinner__atom-electron-counter\">\n <span className=\"nx-spinner__atom-electron\" />\n </span>\n </span>\n </span>\n </span>\n <span className=\"nx-spinner__atom-ring nx-spinner__atom-ring--c\">\n <span className=\"nx-spinner__atom-spin\">\n <span className=\"nx-spinner__atom-electron-orbit\">\n <span className=\"nx-spinner__atom-electron-counter\">\n <span className=\"nx-spinner__atom-electron\" />\n </span>\n </span>\n </span>\n </span>\n </span>\n )}\n\n {/* Comet — a head dot with a fading trail of smaller dots,\n rotating as one rigid arc — \"orbit\" has a single satellite\n and no trail, this is genuinely different. */}\n {state.variant === \"comet\" && (\n <span className=\"nx-spinner__comet\" aria-hidden=\"true\">\n <span className=\"nx-spinner__comet-dot\" />\n <span className=\"nx-spinner__comet-dot\" />\n <span className=\"nx-spinner__comet-dot\" />\n <span className=\"nx-spinner__comet-dot\" />\n <span className=\"nx-spinner__comet-dot\" />\n </span>\n )}\n\n {/* ---------- Extended set ---------- */}\n\n {/* Gauge — a half-circle arc that fills and unfills, speedometer\n style, distinct from any full-circle variant. */}\n {state.variant === \"gauge\" && (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" className=\"nx-spinner__gauge-svg\" aria-hidden=\"true\">\n <path d=\"M4 18 A 10 10 0 0 1 20 18\" stroke=\"currentColor\" strokeWidth=\"3\" strokeLinecap=\"round\" opacity=\"0.2\" />\n <path d=\"M4 18 A 10 10 0 0 1 20 18\" stroke=\"currentColor\" strokeWidth=\"3\" strokeLinecap=\"round\" className=\"nx-spinner__gauge-arc\" />\n </svg>\n )}\n\n {/* Stack — three cards cycling through a shuffle: rise, shrink,\n settle, distinct from \"grid\"'s static fading squares. */}\n {state.variant === \"stack\" && (\n <span className=\"nx-spinner__stack\" aria-hidden=\"true\">\n <span className=\"nx-spinner__stack-card\" />\n <span className=\"nx-spinner__stack-card\" />\n <span className=\"nx-spinner__stack-card\" />\n </span>\n )}\n\n {/* Spiral — three concentric rings spinning at different speeds\n and directions, reading as a vortex. */}\n {state.variant === \"spiral\" && (\n <span className=\"nx-spinner__spiral\" aria-hidden=\"true\">\n <span className=\"nx-spinner__spiral-ring\" />\n <span className=\"nx-spinner__spiral-ring\" />\n <span className=\"nx-spinner__spiral-ring\" />\n </span>\n )}\n\n {/* Burst — six particles popping outward from the center and\n fading, all in lockstep: same distance, same instant, in\n every direction, so the symmetry is immediate rather than a\n staggered ripple. Built on pure `transform` (translate +\n scale) instead of animating `top` alongside `scale`, which\n previously caused a subtle non-circular wobble. Particles\n sized up a notch so the burst reads clearly at a glance. */}\n {state.variant === \"burst\" && (\n <span className=\"nx-spinner__burst\" aria-hidden=\"true\">\n <span className=\"nx-spinner__burst-particle\" />\n <span className=\"nx-spinner__burst-particle\" />\n <span className=\"nx-spinner__burst-particle\" />\n <span className=\"nx-spinner__burst-particle\" />\n <span className=\"nx-spinner__burst-particle\" />\n <span className=\"nx-spinner__burst-particle\" />\n </span>\n )}\n\n {/* Eclipse — a solid disc sliding across a faint base disc\n inside a circular mask, a moon-phase style reveal. */}\n {state.variant === \"eclipse\" && (\n <span className=\"nx-spinner__eclipse\" aria-hidden=\"true\">\n <span className=\"nx-spinner__eclipse-shadow\" />\n </span>\n )}\n\n {/* Petal — six leaf shapes blooming (scale + fade) in sequence\n while the whole flower slowly rotates. */}\n {state.variant === \"petal\" && (\n <span className=\"nx-spinner__petal\" aria-hidden=\"true\">\n <span className=\"nx-spinner__petal-leaf\" />\n <span className=\"nx-spinner__petal-leaf\" />\n <span className=\"nx-spinner__petal-leaf\" />\n <span className=\"nx-spinner__petal-leaf\" />\n <span className=\"nx-spinner__petal-leaf\" />\n <span className=\"nx-spinner__petal-leaf\" />\n </span>\n )}\n\n {/* Sine — a smooth traced wave, distinct from \"heartbeat\"'s\n jagged ECG line. */}\n {state.variant === \"sine\" && (\n <svg viewBox=\"0 0 48 24\" fill=\"none\" className=\"nx-spinner__sine-svg\" aria-hidden=\"true\">\n <path\n d=\"M0,12 C4,4 8,4 12,12 C16,20 20,20 24,12 C28,4 32,4 36,12 C40,20 44,20 48,12\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n opacity=\"0.2\"\n />\n <path\n d=\"M0,12 C4,4 8,4 12,12 C16,20 20,20 24,12 C28,4 32,4 36,12 C40,20 44,20 48,12\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n className=\"nx-spinner__sine-path\"\n />\n </svg>\n )}\n\n {/* Gear — a thick stroked ring with eight radiating teeth,\n spinning as one — a genuinely mechanical silhouette. Teeth\n are drawn first and sized to overlap the ring's stroke band\n (not just touch its outer edge), then the ring is drawn on\n top — that overlap is what fuses them into one gear shape\n instead of a ring with detached rays floating around it. */}\n {state.variant === \"gear\" && (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" className=\"nx-spinner__gear-svg\" aria-hidden=\"true\">\n <g className=\"nx-spinner__gear-group\">\n <rect x=\"10.5\" y=\"1.5\" width=\"3\" height=\"6.5\" rx=\"1\" fill=\"currentColor\" transform=\"rotate(0 12 12)\" />\n <rect x=\"10.5\" y=\"1.5\" width=\"3\" height=\"6.5\" rx=\"1\" fill=\"currentColor\" transform=\"rotate(45 12 12)\" />\n <rect x=\"10.5\" y=\"1.5\" width=\"3\" height=\"6.5\" rx=\"1\" fill=\"currentColor\" transform=\"rotate(90 12 12)\" />\n <rect x=\"10.5\" y=\"1.5\" width=\"3\" height=\"6.5\" rx=\"1\" fill=\"currentColor\" transform=\"rotate(135 12 12)\" />\n <rect x=\"10.5\" y=\"1.5\" width=\"3\" height=\"6.5\" rx=\"1\" fill=\"currentColor\" transform=\"rotate(180 12 12)\" />\n <rect x=\"10.5\" y=\"1.5\" width=\"3\" height=\"6.5\" rx=\"1\" fill=\"currentColor\" transform=\"rotate(225 12 12)\" />\n <rect x=\"10.5\" y=\"1.5\" width=\"3\" height=\"6.5\" rx=\"1\" fill=\"currentColor\" transform=\"rotate(270 12 12)\" />\n <rect x=\"10.5\" y=\"1.5\" width=\"3\" height=\"6.5\" rx=\"1\" fill=\"currentColor\" transform=\"rotate(315 12 12)\" />\n <circle cx=\"12\" cy=\"12\" r=\"6\" stroke=\"currentColor\" strokeWidth=\"3\" />\n </g>\n </svg>\n )}\n\n {/* Pendulum — rebuilt as plain SVG instead of percentage-sized\n HTML spans, which were rendering as a near-invisible\n diagonal sliver at small sizes. Now: a static pivot dot at\n the top, and a single group (arm + ball) that rotates as\n one rigid body around that pivot — simple, and the swing is\n obvious at any size. */}\n {state.variant === \"pendulum\" && (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" className=\"nx-spinner__pendulum-svg\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"3\" r=\"1.6\" fill=\"currentColor\" opacity=\"0.5\" />\n <g className=\"nx-spinner__pendulum-swing\">\n <line x1=\"12\" y1=\"3\" x2=\"12\" y2=\"18\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n <circle cx=\"12\" cy=\"19.5\" r=\"3.2\" fill=\"currentColor\" />\n </g>\n </svg>\n )}\n\n {/* Dancer — two squares that pivot together as a rigid pair,\n then slide apart and swap sides — adapted from a two-tone\n pseudo-element loader pattern found elsewhere, rebuilt here\n as two real elements sized off the component's own box\n (not fixed pixels) and colored with currentColor, using\n opacity to tell the pair apart instead of a second hardcoded\n color — same convention as every other two-tone variant in\n this set (dual-ring, comet, helix). */}\n {state.variant === \"dancer\" && (\n <span className=\"nx-spinner__dancer\" aria-hidden=\"true\">\n <span className=\"nx-spinner__dancer-square nx-spinner__dancer-square--a\" />\n <span className=\"nx-spinner__dancer-square nx-spinner__dancer-square--b\" />\n </span>\n )}\n </span>\n );\n\n return withThemeOverride(theme, withAccentOverride(color, spinner));\n});","import type { Size } from \"./types\";\n\n// History: trimmed to 2 (ring, dots) to escape the old codebase's\n// 10-near-duplicate sprawl -> expanded to 9 -> expanded to 19.\n// That 19 turned out to have a real quality problem: five of the\n// ten \"creative\" variants (grid, flip, blob, triangle, typing) were\n// either broken, redundant with something else already here, or\n// just not good enough to ship, and three more (infinity, hourglass,\n// pinwheel) had the right idea but a poor build. This pass removes\n// the five weak ones, rebuilds the three salvageable ones, and adds\n// enough new variants to keep real variety at both the \"circular /\n// geometric\" and \"creative / non-circular\" tiers, plus a third tier\n// for even more range. The bar stays the same as always: genuinely\n// distinct motion or silhouette, not a near-duplicate, and it has to\n// actually look right, not just be a novel idea.\n//\n// \"aperture\" (camera-iris) was cut from the extended set after\n// review — the wedge blades pinned at center tiled the whole circle\n// with no gap, so it just read as a static hexagon rather than an\n// iris opening. Replaced with \"buffer\": a ring of fading ticks\n// spinning together, the standard video-buffering /\n// activity-indicator look.\n//\n// Follow-up: \"buffer\" is a full-rotation ring motion, same family as\n// ring/dual-ring/conic, so it moved out of the extended set and into\n// \"circular / geometric\" where it always belonged. \"dancer\" backfills\n// the extended set: two squares that pivot together as a rigid pair\n// and swap sides — the only variant built from two independently\n// translating rigid blocks.\nexport type SpinnerVariant =\n // Circular and geometric\n | \"ring\"\n | \"dots\"\n | \"bars\"\n | \"pulse\"\n | \"dual-ring\"\n | \"ripple\"\n | \"orbit\"\n | \"bounce\"\n | \"conic\"\n | \"buffer\"\n // Creative and non-circular\n | \"linear\"\n | \"heartbeat\"\n | \"infinity\"\n | \"hourglass\"\n | \"pinwheel\"\n | \"radar\"\n | \"wave\"\n | \"helix\"\n | \"atom\"\n | \"comet\"\n // Extended set\n | \"gauge\"\n | \"stack\"\n | \"spiral\"\n | \"burst\"\n | \"eclipse\"\n | \"petal\"\n | \"sine\"\n | \"gear\"\n | \"pendulum\"\n | \"dancer\";\n\nexport interface SpinnerCoreProps {\n size?: Size;\n variant?: SpinnerVariant;\n /** Accessible label — defaults to \"Loading\" if not given. */\n label?: string;\n}\n\nexport interface SpinnerState {\n size: Size;\n variant: SpinnerVariant;\n label: string;\n}\n\nexport function resolveSpinnerState(props: SpinnerCoreProps): SpinnerState {\n return {\n size: props.size ?? \"md\",\n variant: props.variant ?? \"ring\",\n label: props.label ?? \"Loading\",\n };\n}\n\nexport function getSpinnerClasses(state: SpinnerState): string {\n return [\"nx-spinner\", `nx-spinner--${state.variant}`, `nx-spinner--${state.size}`].join(\" \");\n}\n\n/** role=\"status\" + aria-label, same accessible-loading-indicator pattern regardless of variant. */\nexport function getSpinnerAriaProps(state: SpinnerState) {\n return {\n role: \"status\" as const,\n \"aria-label\": state.label,\n };\n}","import React, { forwardRef } from \"react\";\nimport { resolveDividerState, getDividerClasses, getDividerAriaProps, type DividerCoreProps } from \"../core/divider\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport \"./Divider.css\";\n\ninterface DividerProps extends DividerCoreProps, BaseComponentProps {\n children?: React.ReactNode;\n}\n\n/**\n * CONTRACT.md's Rule 4 names Divider as the one legitimate\n * ref-forwarding exemption. This implementation forwards anyway —\n * not because the exemption is wrong, but because forwarding it too\n * costs nothing and sidesteps re-litigating the \"is this one of the\n * exempt ones?\" judgment call the rule was written to eliminate in\n * the first place. A consumer that never needs the ref simply never\n * uses it.\n */\nexport const Divider = forwardRef<HTMLDivElement, DividerProps>(function Divider(\n { className, style, theme, color, children, ...rest },\n ref\n) {\n const hasLabel = !!children;\n const state = resolveDividerState({ ...rest, hasLabel });\n const classes = [getDividerClasses(state), className].filter(Boolean).join(\" \");\n const aria = getDividerAriaProps(state);\n\n const divider = (\n <div ref={ref} className={classes} style={style} {...aria}>\n <span className=\"nx-divider__line\" />\n {hasLabel && <span className=\"nx-divider__content\">{children}</span>}\n {hasLabel && <span className=\"nx-divider__line\" />}\n </div>\n );\n\n return withThemeOverride(theme, withAccentOverride(color, divider));\n});\n","export type DividerOrientation = \"horizontal\" | \"vertical\";\n\nexport interface DividerCoreProps {\n orientation?: DividerOrientation;\n /** Derived by the React layer from whether label content was passed. */\n hasLabel?: boolean;\n}\n\nexport interface DividerState {\n orientation: DividerOrientation;\n hasLabel: boolean;\n}\n\nexport function resolveDividerState(props: DividerCoreProps): DividerState {\n return {\n orientation: props.orientation ?? \"horizontal\",\n hasLabel: props.hasLabel ?? false,\n };\n}\n\nexport function getDividerClasses(state: DividerState): string {\n return [\n \"nx-divider\",\n `nx-divider--${state.orientation}`,\n state.hasLabel && \"nx-divider--labeled\",\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\n/**\n * CONTRACT.md's Rule 4 names Divider as the one legitimate\n * ref-forwarding exemption (no focusable/interactive element) — but\n * a labeled divider is a semantic `role=\"separator\"` either way, and\n * a *vertical* divider used inside a toolbar isn't purely decorative\n * (it can carry `aria-orientation`). Getting the ARIA right here\n * doesn't depend on the ref decision either way.\n */\nexport function getDividerAriaProps(state: DividerState) {\n return {\n role: \"separator\" as const,\n \"aria-orientation\": state.orientation,\n };\n}\n","import React, { forwardRef } from \"react\";\nimport { resolveCardState, getCardClasses, getCardAriaProps, type CardCoreProps } from \"../core/card\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport \"./Card.css\";\n\ninterface CardProps extends CardCoreProps, BaseComponentProps {\n children?: React.ReactNode;\n header?: React.ReactNode;\n footer?: React.ReactNode;\n /** An <img>, <video>, or any custom media element — sized and cropped by the card, not by you. */\n media?: React.ReactNode;\n mediaPosition?: \"top\" | \"bottom\";\n badge?: React.ReactNode;\n onClick?: React.MouseEventHandler<HTMLDivElement>;\n}\n\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n {\n className,\n style,\n theme,\n color,\n children,\n header,\n footer,\n media,\n mediaPosition = \"top\",\n badge,\n onClick,\n ...rest\n },\n ref\n) {\n const state = resolveCardState({ ...rest, isClickable: !!onClick });\n const classes = [getCardClasses(state), className].filter(Boolean).join(\" \");\n const aria = getCardAriaProps(state);\n\n function handleClick(e: React.MouseEvent<HTMLDivElement>) {\n if (state.isDisabled) return;\n onClick?.(e);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLDivElement>) {\n if (!state.isClickable || state.isDisabled) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick?.(e as unknown as React.MouseEvent<HTMLDivElement>);\n }\n }\n\n // header/body/footer always share one wrapper — horizontal layout\n // needs it as a single flex item (media sits beside it, fixed-\n // width), and overlay mode needs it as a single positioned block\n // (stacked on top of media with a scrim behind it). Keeping one\n // wrapper for both means neither layout needs its own duplicate\n // markup branch.\n const content = (header || children || footer) && (\n <div className=\"nx-card__content\">\n {header && <div className=\"nx-card__header\">{header}</div>}\n {children && <div className=\"nx-card__body\">{children}</div>}\n {footer && <div className=\"nx-card__footer\">{footer}</div>}\n </div>\n );\n\n const mediaEl = media && <div className=\"nx-card__media\">{media}</div>;\n const badgeEl = badge && <span className=\"nx-card__badge\">{badge}</span>;\n\n const card = (\n <div\n ref={ref}\n className={classes}\n style={style}\n onClick={state.isClickable ? handleClick : undefined}\n onKeyDown={state.isClickable ? handleKeyDown : undefined}\n {...aria}\n >\n {state.isOverlay ? (\n <>\n {mediaEl}\n {badgeEl}\n {content}\n </>\n ) : (\n <>\n {badgeEl}\n {mediaPosition === \"top\" && mediaEl}\n {content}\n {mediaPosition === \"bottom\" && mediaEl}\n </>\n )}\n </div>\n );\n\n return withThemeOverride(theme, withAccentOverride(color, card));\n});\n","// Card's visual variants are about elevation/border treatment, not\n// fill/color the way Button's solid/outline/soft are — a genuinely\n// different axis, so (per types.ts's convention note) it gets its\n// own named type instead of forcing the shared Variant union onto a\n// concept it doesn't fit.\n//\n// \"flat\" (no border, no shadow) reads as bare unstyled content on\n// some themes where color.surface is close to color.background —\n// nothing wrong with that as an option, but it shouldn't be the only\n// alternative to \"has visible chrome\". \"filled\" is a fourth option\n// that instead reads as a card via a background tint distinct from\n// the page (color.surfaceRaised), with no border or shadow either —\n// still a Card, just quieter.\nexport type CardVariant = \"elevated\" | \"outlined\" | \"flat\" | \"filled\";\nexport type CardPadding = \"none\" | \"sm\" | \"md\" | \"lg\";\n/** vertical: media stacked above/below content (default). horizontal: media beside content, fixed-width. */\nexport type CardLayout = \"vertical\" | \"horizontal\";\n\nexport interface CardCoreProps {\n variant?: CardVariant;\n padding?: CardPadding;\n layout?: CardLayout;\n /** Renders header/footer/badge/children on top of media with a gradient scrim, instead of stacked below it. */\n overlay?: boolean;\n disabled?: boolean;\n /** Derived by the React layer from whether onClick was passed. */\n isClickable?: boolean;\n}\n\nexport interface CardState {\n variant: CardVariant;\n padding: CardPadding;\n layout: CardLayout;\n isOverlay: boolean;\n isDisabled: boolean;\n isClickable: boolean;\n}\n\nexport function resolveCardState(props: CardCoreProps): CardState {\n return {\n variant: props.variant ?? \"elevated\",\n padding: props.padding ?? \"md\",\n layout: props.layout ?? \"vertical\",\n isOverlay: props.overlay ?? false,\n isDisabled: props.disabled ?? false,\n isClickable: props.isClickable ?? false,\n };\n}\n\nexport function getCardClasses(state: CardState): string {\n return [\n \"nx-card\",\n `nx-card--${state.variant}`,\n `nx-card--padding-${state.padding}`,\n `nx-card--${state.layout}`,\n state.isOverlay && \"nx-card--overlay\",\n state.isClickable && \"nx-card--clickable\",\n state.isDisabled && \"nx-card--disabled\",\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\nexport function getCardAriaProps(state: CardState) {\n return {\n role: state.isClickable ? (\"button\" as const) : undefined,\n tabIndex: state.isClickable && !state.isDisabled ? 0 : undefined,\n \"aria-disabled\": state.isDisabled ? (true as const) : undefined,\n };\n}\n","import React, { forwardRef, useState } from \"react\";\nimport { resolveAlertState, getAlertClasses, getAlertRole, type AlertCoreProps } from \"../core/alert\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport { InfoIcon, CheckCircleIcon, AlertIcon, CrossCircleIcon } from \"../icons/react\";\nimport \"./Alert.css\";\n\nconst DEFAULT_ICONS = {\n info: InfoIcon,\n success: CheckCircleIcon,\n warning: AlertIcon,\n danger: CrossCircleIcon,\n} as const;\n\ninterface AlertProps extends AlertCoreProps, BaseComponentProps {\n title?: React.ReactNode;\n children?: React.ReactNode;\n /** Overrides the default per-variant status icon. Pass `false` to hide the icon entirely. */\n icon?: React.ReactNode | false;\n /** Rendered at the end of the alert (a button, a link) — separate from the dismiss control. */\n action?: React.ReactNode;\n /** Presence is what makes the alert dismissible — see Badge/Card's onDismiss convention. */\n onDismiss?: () => void;\n}\n\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>(function Alert(\n { className, style, theme, color, title, children, icon, action, onDismiss, ...rest },\n ref\n) {\n const [dismissed, setDismissed] = useState(false);\n const state = resolveAlertState({ ...rest, dismissible: !!onDismiss, hasIcon: icon !== false });\n const classes = [getAlertClasses(state), className].filter(Boolean).join(\" \");\n const role = getAlertRole(state.variant);\n\n function handleDismiss() {\n setDismissed(true);\n onDismiss?.();\n }\n\n if (dismissed) return null;\n\n const DefaultIcon = DEFAULT_ICONS[state.variant];\n\n const alert = (\n <div ref={ref} role={role} className={classes} style={style}>\n {state.hasIcon && (\n <span className=\"nx-alert__icon\" aria-hidden=\"true\">\n {icon ?? <DefaultIcon size={20} />}\n </span>\n )}\n\n <div className=\"nx-alert__body\">\n {title && <div className=\"nx-alert__title\">{title}</div>}\n {children && <div className=\"nx-alert__description\">{children}</div>}\n </div>\n\n {action && <div className=\"nx-alert__action\">{action}</div>}\n\n {state.isDismissible && (\n <button type=\"button\" className=\"nx-alert__dismiss\" onClick={handleDismiss} aria-label=\"Dismiss\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M3 3l10 10M13 3L3 13\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\" />\n </svg>\n </button>\n )}\n </div>\n );\n\n return withThemeOverride(theme, withAccentOverride(color, alert));\n});\n","export type AlertVariant = \"info\" | \"success\" | \"warning\" | \"danger\";\n\nexport interface AlertCoreProps {\n variant?: AlertVariant;\n /** Derived by the React layer from whether onDismiss was passed. */\n dismissible?: boolean;\n /** Derived by the React layer from whether an icon slot was explicitly hidden. */\n hasIcon?: boolean;\n}\n\nexport interface AlertState {\n variant: AlertVariant;\n isDismissible: boolean;\n hasIcon: boolean;\n}\n\nexport function resolveAlertState(props: AlertCoreProps): AlertState {\n return {\n variant: props.variant ?? \"info\",\n isDismissible: props.dismissible ?? false,\n hasIcon: props.hasIcon ?? true,\n };\n}\n\nexport function getAlertClasses(state: AlertState): string {\n return [\"nx-alert\", `nx-alert--${state.variant}`].join(\" \");\n}\n\n/**\n * `alert` interrupts (errors, warnings needing acknowledgment);\n * `status` is advisory and shouldn't interrupt a screen reader\n * mid-sentence the way `alert` does. info/success lean advisory,\n * warning/danger lean interrupting — this mirrors how most screen\n * readers actually behave with these roles, not an arbitrary split.\n */\nexport function getAlertRole(variant: AlertVariant): \"alert\" | \"status\" {\n return variant === \"danger\" || variant === \"warning\" ? \"alert\" : \"status\";\n}\n","import type { IconProps } from \"./types\";\n\nexport function AlarmCheckIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"13\" r=\"8\"/>\n <path d=\"M5 3 2 6\"/>\n <path d=\"m22 6-3-3\"/>\n <path d=\"M6.38 18.7 4 21\"/>\n <path d=\"M17.64 18.67 20 21\"/>\n <path d=\"m9 13 2 2 4-4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function AlarmClockIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"13\" r=\"8\"/>\n <path d=\"M12 9v4l2 2\"/>\n <path d=\"M5 3 2 6\"/>\n <path d=\"m22 6-3-3\"/>\n <path d=\"M6.38 18.7 4 21\"/>\n <path d=\"M17.64 18.67 20 21\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function AlarmMinusIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"13\" r=\"8\"/>\n <path d=\"M5 3 2 6\"/>\n <path d=\"m22 6-3-3\"/>\n <path d=\"M6.38 18.7 4 21\"/>\n <path d=\"M17.64 18.67 20 21\"/>\n <path d=\"M9 13h6\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function AlarmOffIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6.87 6.87a8 8 0 1 0 11.26 11.26\"/>\n <path d=\"M19.9 14.25a8 8 0 0 0-9.15-9.15\"/>\n <path d=\"m22 6-3-3\"/>\n <path d=\"M6.26 18.67 4 21\"/>\n <path d=\"m2 2 20 20\"/>\n <path d=\"M4 4 2 6\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function AlarmPlusIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"13\" r=\"8\"/>\n <path d=\"M5 3 2 6\"/>\n <path d=\"m22 6-3-3\"/>\n <path d=\"M6.38 18.7 4 21\"/>\n <path d=\"M17.64 18.67 20 21\"/>\n <path d=\"M12 10v6\"/>\n <path d=\"M9 13h6\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function AlertIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\"/>\n <path d=\"M12 9v4\"/>\n <path d=\"M12 17h.01\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function AlignBottomIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M5 3V21\"/>\n <path d=\"M12 9V21\"/>\n <path d=\"M19 7V21\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function AlignCenterIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M18 5H6\"/>\n <path d=\"M21 12H3\"/>\n <path d=\"M18 19H6\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function AlignJustifyIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M3 5h18\"/>\n <path d=\"M3 12h18\"/>\n <path d=\"M3 19h18\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function AlignLeftIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M21 5H3\"/>\n <path d=\"M15 12H3\"/>\n <path d=\"M17 19H3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function AlignRightIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M21 5H3\"/>\n <path d=\"M21 12H9\"/>\n <path d=\"M21 19H7\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function AlignTopIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M5 3V21\"/>\n <path d=\"M12 3V15\"/>\n <path d=\"M19 3V17\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function AnchorIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 6v16\"/>\n <path d=\"m19 13 2-1a9 9 0 0 1-18 0l2 1\"/>\n <path d=\"M9 11h6\"/>\n <circle cx=\"12\" cy=\"4\" r=\"2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function AngryIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M16 16s-1.5-2-4-2-4 2-4 2\"/><path d=\"M7.5 8 10 9\"/><path d=\"m14 9 2.5-1\"/><path d=\"M9 10h.01\"/><path d=\"M15 10h.01\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function AnnoyedIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <path d=\"M8 15h8\"/>\n <path d=\"M8 9h2\"/>\n <path d=\"M14 9h2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function AntennaIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M2 12 7 2\"/>\n <path d=\"m7 12 5-10\"/>\n <path d=\"m12 12 5-10\"/>\n <path d=\"m17 12 5-10\"/>\n <path d=\"M4.5 7h15\"/>\n <path d=\"M12 16v6\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ArrowDownIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 5v14\"/>\n <path d=\"m5 12 7 7 7-7\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ArrowDownLeftIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M17 17H7V7\"/>\n <path d=\"M17 7 7 17\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ArrowDownRightIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M7 17h10V7\"/>\n <path d=\"m7 7 10 10\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ArrowLeftIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M19 12h-14\"/>\n <path d=\"m12 19-7-7 7-7\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ArrowLeftRightIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M8 3 4 7l4 4\"/>\n <path d=\"M4 7h16\"/>\n <path d=\"m16 21 4-4-4-4\"/>\n <path d=\"M20 17H4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ArrowRightIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M5 12h14\"/>\n <path d=\"m12 5 7 7-7 7\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ArrowUpDownIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m21 16-4 4-4-4\"/>\n <path d=\"M17 20V4\"/>\n <path d=\"m3 8 4-4 4 4\"/>\n <path d=\"M7 4v16\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ArrowUpIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 19V5\"/>\n <path d=\"m5 12 7-7 7 7\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ArrowUpLeftIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M17 7H7v10\"/>\n <path d=\"M17 17 7 7\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ArrowUpRightIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M7 7h10v10\"/>\n <path d=\"M7 17 17 7\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function AtSignIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"4\"/>\n <path d=\"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function AwardIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m15.477 12.89 1.515 8.526a.5.5 0 0 1-.81.47l-3.58-2.687a1 1 0 0 0-1.197 0l-3.586 2.686a.5.5 0 0 1-.81-.469l1.514-8.526\"/>\n <circle cx=\"12\" cy=\"8\" r=\"6\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BabyIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10 16c.5.3 1.2.5 2 .5s1.5-.2 2-.5\"/>\n <path d=\"M15 12h.01\"/>\n <path d=\"M19.38 6.813A9 9 0 0 1 20.8 10.2a2 2 0 0 1 0 3.6 9 9 0 0 1-17.6 0 2 2 0 0 1 0-3.6A9 9 0 0 1 12 3c2 0 3.5 1.1 3.5 2.5s-.9 2.5-2 2.5c-.8 0-1.5-.4-1.5-1\"/>\n <path d=\"M9 12h.01\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BadgeIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z\"/>\n <path d=\"m9 12 2 2 4-4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BanIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <path d=\"M4.929 4.929 19.07 19.071\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BankIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10 18v-7\"/>\n <path d=\"M11.12 2.198a2 2 0 0 1 1.76.006l7.866 3.847c.476.233.31.949-.22.949H3.474c-.53 0-.695-.716-.22-.949z\"/>\n <path d=\"M14 18v-7\"/>\n <path d=\"M18 18v-7\"/>\n <path d=\"M3 22h18\"/>\n <path d=\"M6 18v-7\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BatteryChargeIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m11 7-3 5h4l-3 5\"/>\n <path d=\"M14.856 6H16a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.935\"/>\n <path d=\"M22 14v-4\"/>\n <path d=\"M5.14 18H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h2.936\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BatteryFullIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10 10v4\"/>\n <path d=\"M14 10v4\"/>\n <path d=\"M22 14v-4\"/>\n <path d=\"M6 10v4\"/>\n <rect x=\"2\" y=\"6\" width=\"16\" height=\"12\" rx=\"2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BatteryIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M 22 14 L 22 10\"/>\n <rect x=\"2\" y=\"6\" width=\"16\" height=\"12\" rx=\"2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BatteryLowIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M22 14v-4\"/>\n <path d=\"M6 10v4\"/>\n <rect x=\"2\" y=\"6\" width=\"16\" height=\"12\" rx=\"2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BellDotIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10.268 21a2 2 0 0 0 3.464 0\"/>\n <path d=\"M11.68 2.009A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673c-.824-.85-1.678-1.731-2.21-3.348\"/>\n <circle cx=\"18\" cy=\"5\" r=\"3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BellIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10.268 21a2 2 0 0 0 3.464 0\"/>\n <path d=\"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BellOffIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10.268 21a2 2 0 0 0 3.464 0\"/>\n <path d=\"M17 17H4a1 1 0 0 1-.74-1.673C4.59 13.956 6 12.499 6 8a6 6 0 0 1 .258-1.742\"/>\n <path d=\"m2 2 20 20\"/>\n <path d=\"M8.668 3.01A6 6 0 0 1 18 8c0 2.687.77 4.653 1.707 6.05\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BikeIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m18 14-1-3\"/>\n <path d=\"m3 9 6 2a2 2 0 0 1 2-2h2a2 2 0 0 1 1.99 1.81\"/>\n <path d=\"M8 17h3a1 1 0 0 0 1-1 6 6 0 0 1 6-6 1 1 0 0 0 1-1v-.75A5 5 0 0 0 17 5\"/>\n <circle cx=\"19\" cy=\"17\" r=\"3\"/>\n <circle cx=\"5\" cy=\"17\" r=\"3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BirdIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M16 7h.01\"/>\n <path d=\"M3.4 18H12a8 8 0 0 0 8-8V7a4 4 0 0 0-7.28-2.3L2 20\"/>\n <path d=\"m20 7 2 .5-2 .5\"/>\n <path d=\"M10 18v3\"/>\n <path d=\"M14 17.75V21\"/>\n <path d=\"M7 18a6 6 0 0 0 3.84-10.61\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BitcoinIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M11.767 19.089c4.924.868 6.14-6.025 1.216-6.894m-1.216 6.894L5.86 18.047m5.908 1.042-.347 1.97m1.563-8.864c4.924.869 6.14-6.025 1.215-6.893m-1.215 6.893-3.94-.694m5.155-6.2L8.29 4.26m5.908 1.042.348-1.97M7.48 20.364l3.126-17.727\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BluetoothIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m7 7 10 10-5 5V2l5 5L7 17\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BluetoothOffIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m17 17-5 5V12l-5 5\"/>\n <path d=\"m2 2 20 20\"/>\n <path d=\"M14.5 9.5 17 7l-5-5v4.5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BoatIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10 2v15\"/>\n <path d=\"M7 22a4 4 0 0 1-4-4 1 1 0 0 1 1-1h16a1 1 0 0 1 1 1 4 4 0 0 1-4 4z\"/>\n <path d=\"M9.159 2.46a1 1 0 0 1 1.521-.193l9.977 8.98A1 1 0 0 1 20 13H4a1 1 0 0 1-.824-1.567z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BoltIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\"/>\n <circle cx=\"12\" cy=\"12\" r=\"4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BombIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"11\" cy=\"13\" r=\"9\"/>\n <path d=\"M14.35 4.65 16.3 2.7a2.41 2.41 0 0 1 3.4 0l1.6 1.6a2.4 2.4 0 0 1 0 3.4l-1.95 1.95\"/>\n <path d=\"m22 2-1.5 1.5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BookIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BookmarkFilledIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BookmarkIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BotIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 8V4H8\"/>\n <rect width=\"16\" height=\"12\" x=\"4\" y=\"8\" rx=\"2\"/>\n <path d=\"M2 14h2\"/>\n <path d=\"M20 14h2\"/>\n <path d=\"M15 13v2\"/>\n <path d=\"M9 13v2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BoxIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z\"/>\n <path d=\"m3.3 7 8.7 5 8.7-5\"/>\n <path d=\"M12 22V12\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BrainIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 18V5\"/>\n <path d=\"M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4\"/>\n <path d=\"M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5\"/>\n <path d=\"M17.997 5.125a4 4 0 0 1 2.526 5.77\"/>\n <path d=\"M18 18a4 4 0 0 0 2-7.464\"/>\n <path d=\"M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517\"/>\n <path d=\"M6 18a4 4 0 0 1-2-7.464\"/>\n <path d=\"M6.003 5.125a4 4 0 0 0-2.526 5.77\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BriefcaseIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 12h.01\"/>\n <path d=\"M16 6V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v2\"/>\n <path d=\"M22 13a18.15 18.15 0 0 1-20 0\"/>\n <rect width=\"20\" height=\"14\" x=\"2\" y=\"6\" rx=\"2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BugIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 20v-9\"/>\n <path d=\"M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z\"/>\n <path d=\"M14.12 3.88 16 2\"/>\n <path d=\"M21 21a4 4 0 0 0-3.81-4\"/>\n <path d=\"M21 5a4 4 0 0 1-3.55 3.97\"/>\n <path d=\"M22 13h-4\"/>\n <path d=\"M3 21a4 4 0 0 1 3.81-4\"/>\n <path d=\"M3 5a4 4 0 0 0 3.55 3.97\"/>\n <path d=\"M6 13H2\"/>\n <path d=\"m8 2 1.88 1.88\"/>\n <path d=\"M9 7.13V6a3 3 0 1 1 6 0v1.13\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BuildingIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 10h.01\"/>\n <path d=\"M12 14h.01\"/>\n <path d=\"M12 6h.01\"/>\n <path d=\"M16 10h.01\"/>\n <path d=\"M16 14h.01\"/>\n <path d=\"M16 6h.01\"/>\n <path d=\"M8 10h.01\"/>\n <path d=\"M8 14h.01\"/>\n <path d=\"M8 6h.01\"/>\n <path d=\"M9 22v-3a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v3\"/>\n <rect x=\"4\" y=\"2\" width=\"16\" height=\"20\" rx=\"2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function BusIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M4 6 2 7\"/>\n <path d=\"M10 6h4\"/>\n <path d=\"m22 7-2-1\"/>\n <rect width=\"16\" height=\"16\" x=\"4\" y=\"3\" rx=\"2\"/>\n <path d=\"M4 11h16\"/>\n <path d=\"M8 15h.01\"/>\n <path d=\"M16 15h.01\"/>\n <path d=\"M6 19v2\"/>\n <path d=\"M18 21v-2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CalculatorIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"16\" height=\"20\" x=\"4\" y=\"2\" rx=\"2\"/>\n <line x1=\"8\" x2=\"16\" y1=\"6\" y2=\"6\"/>\n <line x1=\"16\" x2=\"16\" y1=\"14\" y2=\"18\"/>\n <path d=\"M16 10h.01\"/>\n <path d=\"M12 10h.01\"/>\n <path d=\"M8 10h.01\"/>\n <path d=\"M12 14h.01\"/>\n <path d=\"M8 14h.01\"/>\n <path d=\"M12 18h.01\"/>\n <path d=\"M8 18h.01\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CalendarAddIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M16 19h6\"/>\n <path d=\"M16 2v4\"/>\n <path d=\"M19 16v6\"/>\n <path d=\"M21 12.598V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h8.5\"/>\n <path d=\"M3 10h18\"/>\n <path d=\"M8 2v4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CalendarIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M8 2v4\"/>\n <path d=\"M16 2v4\"/>\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"4\" rx=\"2\"/>\n <path d=\"M3 10h18\"/>\n <path d=\"M8 14h.01\"/>\n <path d=\"M12 14h.01\"/>\n <path d=\"M16 14h.01\"/>\n <path d=\"M8 18h.01\"/>\n <path d=\"M12 18h.01\"/>\n <path d=\"M16 18h.01\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CameraIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z\"/>\n <circle cx=\"12\" cy=\"13\" r=\"3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CameraOffIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M14.564 14.558a3 3 0 1 1-4.122-4.121\"/>\n <path d=\"m2 2 20 20\"/>\n <path d=\"M20 20H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 .819-.175\"/>\n <path d=\"M9.695 4.024A2 2 0 0 1 10.004 4h3.993a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v7.344\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CameraSwitchIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M11 19H4a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h5\"/>\n <path d=\"M13 5h7a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-5\"/>\n <circle cx=\"12\" cy=\"12\" r=\"3\"/>\n <path d=\"m18 22-3-3 3-3\"/>\n <path d=\"m6 2 3 3-3 3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CandlestickIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M17 5v4\"/>\n <rect width=\"4\" height=\"6\" x=\"15\" y=\"9\" rx=\"1\"/>\n <path d=\"M17 15v2\"/>\n <path d=\"M9 3v2\"/>\n <rect width=\"4\" height=\"8\" x=\"7\" y=\"5\" rx=\"1\"/>\n <path d=\"M9 13v3\"/>\n <path d=\"M3 3v16a2 2 0 0 0 2 2h16\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CaptionsIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"18\" height=\"14\" x=\"3\" y=\"5\" rx=\"2\" ry=\"2\"/>\n <path d=\"M7 15h4M15 15h2M7 11h2M13 11h4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CaptionsOffIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10.5 5H19a2 2 0 0 1 2 2v8.5\"/>\n <path d=\"M17 11h-.5\"/>\n <path d=\"M19 19H5a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2\"/>\n <path d=\"m2 2 20 20\"/>\n <path d=\"M7 11h4\"/>\n <path d=\"M7 15h2.5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CarIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M19 17h2c.6 0 1-.4 1-1v-3c0-.9-.7-1.7-1.5-1.9C18.7 10.6 16 10 16 10s-1.3-1.4-2.2-2.3c-.5-.4-1.1-.7-1.8-.7H5c-.6 0-1.1.4-1.4.9l-1.4 2.9A3.7 3.7 0 0 0 2 12v4c0 .6.4 1 1 1h2\"/>\n <circle cx=\"7\" cy=\"17\" r=\"2\"/>\n <path d=\"M9 17h6\"/>\n <circle cx=\"17\" cy=\"17\" r=\"2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CashIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"20\" height=\"12\" x=\"2\" y=\"6\" rx=\"2\"/>\n <circle cx=\"12\" cy=\"12\" r=\"2\"/>\n <path d=\"M6 12h.01\"/>\n <path d=\"M18 12h.01\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CastIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6\"/>\n <path d=\"M2 12a9 9 0 0 1 8 8\"/>\n <path d=\"M2 16a5 5 0 0 1 4 4\"/>\n <line x1=\"2\" x2=\"2.01\" y1=\"20\" y2=\"20\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CatIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 5c.67 0 1.35.09 2 .26 1.78-2 5.03-2.84 6.42-2.26 1.4.58-.42 7-.42 7 .57 1.07 1 2.24 1 3.44C21 17.9 16.97 21 12 21s-9-3-9-7.56c0-1.25.5-2.4 1-3.44 0 0-1.89-6.42-.5-7 1.39-.58 4.72.23 6.5 2.23A9.04 9.04 0 0 1 12 5Z\"/>\n <path d=\"M8 14v.5\"/>\n <path d=\"M16 14v.5\"/>\n <path d=\"M11.25 16.25h1.5L12 17l-.75-.75Z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CctvIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M16.75 12h3.632a1 1 0 0 1 .894 1.447l-2.034 4.069a1 1 0 0 1-1.708.134l-2.124-2.97\"/>\n <path d=\"M17.106 9.053a1 1 0 0 1 .447 1.341l-3.106 6.211a1 1 0 0 1-1.342.447L3.61 12.3a2.92 2.92 0 0 1-1.3-3.91L3.69 5.6a2.92 2.92 0 0 1 3.92-1.3z\"/>\n <path d=\"M2 19h3.76a2 2 0 0 0 1.8-1.1L9 15\"/>\n <path d=\"M2 21v-4\"/>\n <path d=\"M7 9h.01\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CentIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <path d=\"M12 7v10\"/>\n <path d=\"M15.4 10a4 4 0 1 0 0 4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CentSymbolIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M13 2.5v19\"/>\n <path d=\"M19 6a7.7 7.7 0 0 0-5.2-2A7.9 7.9 0 0 0 6 12c0 4.4 3.5 8 7.8 8 2 0 3.8-.8 5.2-2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ChartDownIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M13 17V9\"/>\n <path d=\"M18 17v-3\"/>\n <path d=\"M3 3v16a2 2 0 0 0 2 2h16\"/>\n <path d=\"M8 17V5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ChartUpIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M13 17V9\"/>\n <path d=\"M18 17V5\"/>\n <path d=\"M3 3v16a2 2 0 0 0 2 2h16\"/>\n <path d=\"M8 17v-3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CheckCircleIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\"/>\n <path d=\"m9 12 2 2 4-4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CheckIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M20 6 9 17l-5-5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ChevronDownIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m6 9 6 6 6-6\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ChevronFirstIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m17 18-6-6 6-6\"/>\n <path d=\"M7 6v12\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ChevronLastIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m7 18 6-6-6-6\"/>\n <path d=\"M17 6v12\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ChevronLeftIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m15 18-6-6 6-6\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ChevronRightIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m9 18 6-6-6-6\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ChevronsDownIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m7 13 5 5 5-5\"/>\n <path d=\"m7 6 5 5 5-5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ChevronsLeftIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m11 17-5-5 5-5\"/>\n <path d=\"m18 17-5-5 5-5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ChevronsRightIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m13 17 5-5-5-5\"/>\n <path d=\"m6 17 5-5-5-5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ChevronsUpIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m17 11-5-5-5 5\"/>\n <path d=\"m17 18-5-5-5 5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ChevronUpIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m18 15-6-6-6 6\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CigaretteIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M17 12H3a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h14\"/>\n <path d=\"M18 8c0-2.5-2-2.5-2-5\"/>\n <path d=\"M21 16a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1\"/>\n <path d=\"M22 8c0-2.5-2-2.5-2-5\"/>\n <path d=\"M7 12v4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CigaretteOffIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 12H3a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h13\"/>\n <path d=\"M18 8c0-2.5-2-2.5-2-5\"/>\n <path d=\"m2 2 20 20\"/>\n <path d=\"M21 12a1 1 0 0 1 1 1v2a1 1 0 0 1-.5.866\"/>\n <path d=\"M22 8c0-2.5-2-2.5-2-5\"/>\n <path d=\"M7 12v4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CircleIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ClapperboardIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m12.296 3.464 3.02 3.956\"/>\n <path d=\"M20.2 6 3 11l-.9-2.4c-.3-1.1.3-2.2 1.3-2.5l13.5-4c1.1-.3 2.2.3 2.5 1.3z\"/>\n <path d=\"M3 11h18v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"/>\n <path d=\"m6.18 5.276 3.1 3.899\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ClipboardIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"8\" height=\"4\" x=\"8\" y=\"2\" rx=\"1\" ry=\"1\"/>\n <path d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ClockIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <path d=\"M12 6v6l4 2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CloseIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M18 6 6 18\"/>\n <path d=\"m6 6 12 12\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CloudDownloadIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 13v8l-4-4\"/>\n <path d=\"m12 21 4-4\"/>\n <path d=\"M4.393 15.269A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.436 8.284\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CloudIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CloudLightningIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 16.326A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 .5 8.973\"/>\n <path d=\"m13 12-3 5h4l-3 5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CloudMoonIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M13 16a3 3 0 0 1 0 6H7a5 5 0 1 1 4.9-6z\"/>\n <path d=\"M18.376 14.512a6 6 0 0 0 3.461-4.127c.148-.625-.659-.97-1.248-.714a4 4 0 0 1-5.259-5.26c.255-.589-.09-1.395-.716-1.248a6 6 0 0 0-4.594 5.36\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CloudRainIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242\"/>\n <path d=\"M16 14v6\"/>\n <path d=\"M8 14v6\"/>\n <path d=\"M12 16v6\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CloudSnowIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242\"/>\n <path d=\"M8 15h.01\"/>\n <path d=\"M8 19h.01\"/>\n <path d=\"M12 17h.01\"/>\n <path d=\"M12 21h.01\"/>\n <path d=\"M16 15h.01\"/>\n <path d=\"M16 19h.01\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CloudSunIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 2v2\"/>\n <path d=\"m4.93 4.93 1.41 1.41\"/>\n <path d=\"M20 12h2\"/>\n <path d=\"m19.07 4.93-1.41 1.41\"/>\n <path d=\"M15.947 12.65a4 4 0 0 0-5.925-4.128\"/>\n <path d=\"M13 22H7a5 5 0 1 1 4.9-6H13a3 3 0 0 1 0 6Z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CloudUploadIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 13v8\"/>\n <path d=\"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242\"/>\n <path d=\"m8 17 4-4 4 4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CloudyIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M17.5 12a1 1 0 1 1 0 9H9.006a7 7 0 1 1 6.702-9z\"/>\n <path d=\"M21.832 9A3 3 0 0 0 19 7h-2.207a5.5 5.5 0 0 0-10.72.61\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CodeIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m16 18 6-6-6-6\"/>\n <path d=\"m8 6-6 6 6 6\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CoinIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\"/>\n <path d=\"M10.3 10l2-2v8\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ColumnIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"/>\n <path d=\"M9 3v18\"/>\n <path d=\"M15 3v18\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CompassIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <path d=\"m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ContactIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M16 2v2\"/>\n <path d=\"M7 21v-2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v2\"/>\n <path d=\"M8 2v2\"/>\n <circle cx=\"12\" cy=\"10\" r=\"3\"/>\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CopyIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"/>\n <path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CornerDownLeftIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M20 4v7a4 4 0 0 1-4 4H4\"/>\n <path d=\"m9 10-5 5 5 5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CornerDownRightIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M4 4v7a4 4 0 0 0 4 4h12\"/>\n <path d=\"m15 10 5 5-5 5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CornerUpLeftIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M20 20v-7a4 4 0 0 0-4-4H4\"/>\n <path d=\"M9 14 4 9l5-5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CornerUpRightIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M4 20v-7a4 4 0 0 1 4-4h12\"/>\n <path d=\"m15 14 5-5-5-5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CpuIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 20v2\"/>\n <path d=\"M12 2v2\"/>\n <path d=\"M17 20v2\"/>\n <path d=\"M17 2v2\"/>\n <path d=\"M2 12h2\"/>\n <path d=\"M2 17h2\"/>\n <path d=\"M2 7h2\"/>\n <path d=\"M20 12h2\"/>\n <path d=\"M20 17h2\"/>\n <path d=\"M20 7h2\"/>\n <path d=\"M7 20v2\"/>\n <path d=\"M7 2v2\"/>\n <rect x=\"4\" y=\"4\" width=\"16\" height=\"16\" rx=\"2\"/>\n <rect x=\"8\" y=\"8\" width=\"8\" height=\"8\" rx=\"1\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CreativeCommonsIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <path d=\"M10 9.3a2.8 2.8 0 0 0-3.5 1 3.1 3.1 0 0 0 0 3.4 2.7 2.7 0 0 0 3.5 1\"/>\n <path d=\"M17 9.3a2.8 2.8 0 0 0-3.5 1 3.1 3.1 0 0 0 0 3.4 2.7 2.7 0 0 0 3.5 1\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CreditCardIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"20\" height=\"14\" x=\"2\" y=\"5\" rx=\"2\"/>\n <line x1=\"2\" x2=\"22\" y1=\"10\" y2=\"10\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CropIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 2v14a2 2 0 0 0 2 2h14\"/>\n <path d=\"M18 22V8a2 2 0 0 0-2-2H2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CrossCircleIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\"/>\n <path d=\"M9 9l6 6\"/>\n <path d=\"M15 9l-6 6\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CrownIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M11.562 3.266a.5.5 0 0 1 .876 0L15.39 8.87a1 1 0 0 0 1.516.294L21.183 5.5a.5.5 0 0 1 .798.519l-2.834 10.246a1 1 0 0 1-.956.734H5.81a1 1 0 0 1-.957-.734L2.02 6.02a.5.5 0 0 1 .798-.519l4.276 3.664a1 1 0 0 0 1.516-.294z\"/>\n <path d=\"M5 21h14\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CutIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"6\" cy=\"6\" r=\"3\"/>\n <path d=\"M8.12 8.12 12 12\"/>\n <path d=\"M20 4 8.12 15.88\"/>\n <circle cx=\"6\" cy=\"18\" r=\"3\"/>\n <path d=\"M14.8 14.8 20 20\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function CycleIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"18.5\" cy=\"17.5\" r=\"3.5\"/>\n <circle cx=\"5.5\" cy=\"17.5\" r=\"3.5\"/>\n <circle cx=\"15\" cy=\"5\" r=\"1\"/>\n <path d=\"M12 17.5V14l-3-3 4-3 2 3h2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function DatabaseIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\"/>\n <path d=\"M3 5V19A9 3 0 0 0 21 19V5\"/>\n <path d=\"M3 12A9 3 0 0 0 21 12\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function DiaryIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M2 6h4\"/>\n <path d=\"M2 10h4\"/>\n <path d=\"M2 14h4\"/>\n <path d=\"M2 18h4\"/>\n <rect width=\"16\" height=\"20\" x=\"4\" y=\"2\" rx=\"2\"/>\n <path d=\"M16 2v20\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function DiceFiveIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\"/>\n <path d=\"M16 8h.01\"/>\n <path d=\"M8 8h.01\"/>\n <path d=\"M8 16h.01\"/>\n <path d=\"M16 16h.01\"/>\n <path d=\"M12 12h.01\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function DiceFourIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\"/>\n <path d=\"M16 8h.01\"/>\n <path d=\"M8 8h.01\"/>\n <path d=\"M8 16h.01\"/>\n <path d=\"M16 16h.01\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function DiceOneIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\"/>\n <path d=\"M12 12h.01\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function DiceSixIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\"/><path d=\"M16 8h.01\"/>\n <path d=\"M16 12h.01\"/>\n <path d=\"M16 16h.01\"/>\n <path d=\"M8 8h.01\"/>\n <path d=\"M8 12h.01\"/>\n <path d=\"M8 16h.01\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function DiceThreeIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\"/>\n <path d=\"M16 8h.01\"/>\n <path d=\"M12 12h.01\"/>\n <path d=\"M8 16h.01\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function DiceTwoIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\"/>\n <path d=\"M15 9h.01\"/>\n <path d=\"M9 15h.01\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function DirectionDownIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M15 5a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v6a1 1 0 0 1-1 1H4.707a.707.707 0 0 0-.5 1.207l7.086 7.086a1 1 0 0 0 1.414 0l7.086-7.086a.707.707 0 0 0-.5-1.207H16a1 1 0 0 1-1-1z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function DirectionLeftIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M19 15a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1h-6a1 1 0 0 1-1-1V4.707a.707.707 0 0 0-1.207-.5L3.707 11.293a1 1 0 0 0 0 1.414l7.086 7.086a.707.707 0 0 0 1.207-.5V16a1 1 0 0 1 1-1z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function DirectionRightIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M5 9a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h6a1 1 0 0 1 1 1v3.293a.707.707 0 0 0 1.207.5l7.086-7.086a1 1 0 0 0 0-1.414l-7.086-7.086a.707.707 0 0 0-1.207.5V8a1 1 0 0 1-1 1z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function DirectionUpIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M9 19a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-6a1 1 0 0 1 1-1h3.293a.707.707 0 0 0 .5-1.207l-7.086-7.086a1 1 0 0 0-1.414 0l-7.086 7.086a.707.707 0 0 0 .5 1.207H8a1 1 0 0 1 1 1z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function DiscordFilledIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 192 192\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M 48.512,20 H 143.488 A 28.512,28.512 0 0 1 172,48.512 V 143.488 A 28.512,28.512 0 0 1 143.488,172 H 48.512 A 28.512,28.512 0 0 1 20,143.488 V 48.512 A 28.512,28.512 0 0 1 48.512,20 Z M 133.167 58.064 C 133.128 58.0 133.09 57.935 133.013 57.914 C 126.122 54.721 118.82 52.19 111.21 50.873 C 111.133 50.854 111.057 50.873 111.001 50.893 C 110.945 50.912 110.888 50.97 110.851 51.047 C 109.851 52.902 108.91 54.806 108.167 56.72 C 99.706 55.464 91.114 55.464 82.653 56.72 C 81.91 54.806 80.952 52.902 79.917 51.047 C 79.881 50.97 79.823 50.912 79.766 50.893 C 79.708 50.854 79.631 50.854 79.554 50.873 C 71.953 52.19 64.651 54.721 57.763 57.899 C 57.686 57.94 57.63 57.985 57.592 58.049 C 43.86 77.522 39.799 96.684 41.605 115.733 C 41.605 115.798 41.625 115.84 41.643 115.883 C 41.663 115.926 41.702 115.958 41.74 115.98 C 50.089 121.982 59.175 126.565 68.811 129.892 C 68.888 129.914 68.967 129.914 69.038 129.892 C 69.108 129.871 69.183 129.809 69.223 129.745 C 71.489 126.565 73.567 123.204 75.345 119.656 C 75.365 119.615 75.379 119.554 75.379 119.502 C 75.379 119.451 75.377 119.4 75.359 119.348 C 75.341 119.297 75.316 119.256 75.279 119.224 C 75.243 119.192 75.2 119.16 75.158 119.147 C 72.154 117.985 69.241 116.587 66.428 114.964 C 66.37 114.932 66.323 114.89 66.284 114.847 C 66.246 114.804 66.223 114.731 66.223 114.659 C 66.223 114.586 66.223 114.524 66.263 114.459 C 66.304 114.395 66.349 114.353 66.408 114.321 C 67.007 113.895 67.616 113.459 68.201 113.023 C 68.261 112.98 68.33 112.959 68.402 112.959 C 68.475 112.959 68.548 112.98 68.606 113.023 C 86.347 121.338 105.482 121.338 123.012 113.023 C 123.069 112.991 123.14 112.97 123.213 112.97 C 123.286 112.97 123.356 113.002 123.414 113.044 C 123.995 113.48 124.604 113.917 125.204 114.321 C 125.264 114.353 125.309 114.395 125.348 114.459 C 125.386 114.524 125.388 114.586 125.386 114.659 C 125.385 114.731 125.361 114.804 125.322 114.847 C 125.284 114.89 125.237 114.932 125.179 114.964 C 122.378 116.576 119.465 117.974 116.458 119.139 C 116.416 119.149 116.373 119.182 116.338 119.213 C 116.302 119.246 116.275 119.288 116.258 119.341 C 116.24 119.395 116.238 119.448 116.24 119.502 C 116.242 119.555 116.259 119.609 116.279 119.652 C 118.074 123.189 120.152 126.549 122.409 129.724 C 122.449 129.788 122.525 129.849 122.595 129.871 C 122.666 129.892 122.744 129.892 122.82 129.871 C 132.474 126.543 141.576 121.96 149.935 115.937 C 149.974 115.916 150.01 115.883 150.029 115.84 C 150.049 115.798 150.059 115.755 150.059 115.691 C 152.078 96.958 147.078 77.857 133.167 58.064 Z M 74.108 102.447 C 74.108 99.916 75.074 97.556 76.716 95.816 C 78.357 94.076 80.614 93.074 82.949 93.074 C 85.283 93.074 87.54 94.076 89.181 95.816 C 90.823 97.556 91.789 99.916 91.789 102.447 C 91.789 104.977 90.823 107.337 89.181 109.077 C 87.54 110.817 85.283 111.819 82.949 111.819 C 80.614 111.819 78.357 110.817 76.716 109.077 C 75.074 107.337 74.108 104.977 74.108 102.447 Z M 100.22 102.447 C 100.22 99.916 101.186 97.556 102.827 95.816 C 104.469 94.076 106.726 93.074 109.06 93.074 C 111.394 93.074 113.652 94.075 115.293 95.816 C 116.935 97.556 117.901 99.916 117.901 102.447 C 117.901 104.977 116.935 107.337 115.293 109.077 C 113.652 110.817 111.394 111.816 109.06 111.819 C 106.726 111.819 104.469 110.817 102.827 109.077 C 101.186 107.337 100.22 104.977 100.22 102.447 Z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function DiscordIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 640 640\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"24\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect x=\"96\" y=\"96\" width=\"448\" height=\"448\" rx=\"64\"/>\n <g transform=\"translate(160,160) scale(0.5)\">\n <path fill=\"currentColor\" stroke=\"none\"\n d=\"M524.5 133.8C524.3 133.5 524.1 133.2 523.7 133.1C485.6 115.6 445.3 103.1 404 96C403.6 95.9 403.2 96 402.9 96.1C402.6 96.2 402.3 96.5 402.1 96.9C396.6 106.8 391.6 117.1 387.2 127.5C342.6 120.7 297.3 120.7 252.8 127.5C248.3 117 243.3 106.8 237.7 96.9C237.5 96.6 237.2 96.3 236.9 96.1C236.6 95.9 236.2 95.9 235.8 95.9C194.5 103 154.2 115.5 116.1 133C115.8 133.1 115.5 133.4 115.3 133.7C39.1 247.5 18.2 358.6 28.4 468.2C28.4 468.5 28.5 468.7 28.6 469C28.7 469.3 28.9 469.4 29.1 469.6C73.5 502.5 123.1 527.6 175.9 543.8C176.3 543.9 176.7 543.9 177 543.8C177.3 543.7 177.7 543.4 177.9 543.1C189.2 527.7 199.3 511.3 207.9 494.3C208 494.1 208.1 493.8 208.1 493.5C208.1 493.2 208.1 493 208 492.7C207.9 492.4 207.8 492.2 207.6 492.1C207.4 492 207.2 491.8 206.9 491.7C191.1 485.6 175.7 478.3 161 469.8C160.7 469.6 160.5 469.4 160.3 469.2C160.1 469 160 468.6 160 468.3C160 468 160 467.7 160.2 467.4C160.4 467.1 160.5 466.9 160.8 466.7C163.9 464.4 167 462 169.9 459.6C170.2 459.4 170.5 459.2 170.8 459.2C171.1 459.2 171.5 459.2 171.8 459.3C268 503.2 372.2 503.2 467.3 459.3C467.6 459.2 468 459.1 468.3 459.1C468.6 459.1 469 459.3 469.2 459.5C472.1 461.9 475.2 464.4 478.3 466.7C478.5 466.9 478.7 467.1 478.9 467.4C479.1 467.7 479.1 468 479.1 468.3C479.1 468.6 479 468.9 478.8 469.2C478.6 469.5 478.4 469.7 478.2 469.8C463.5 478.4 448.2 485.7 432.3 491.6C432.1 491.7 431.8 491.8 431.6 492C431.4 492.2 431.3 492.4 431.2 492.7C431.1 493 431.1 493.2 431.1 493.5C431.1 493.8 431.2 494 431.3 494.3C440.1 511.3 450.1 527.6 461.3 543.1C461.5 543.4 461.9 543.7 462.2 543.8C462.5 543.9 463 543.9 463.3 543.8C516.2 527.6 565.9 502.5 610.4 469.6C610.6 469.4 610.8 469.2 610.9 469C611 468.8 611.1 468.5 611.1 468.2C623.4 341.4 590.6 231.3 524.2 133.7z\n M222.5 401.5C193.5 401.5 169.7 374.9 169.7 342.3C169.7 309.7 193.1 283.1 222.5 283.1C252.2 283.1 275.8 309.9 275.3 342.3C275.3 375 251.9 401.5 222.5 401.5z\n M417.9 401.5C388.9 401.5 365.1 374.9 365.1 342.3C365.1 309.7 388.5 283.1 417.9 283.1C447.6 283.1 471.2 309.9 470.7 342.3C470.7 375 447.5 401.5 417.9 401.5z\"/>\n </g>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function DislikeIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z\"/>\n <path d=\"M17 14V2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function DogIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M11.25 16.25h1.5L12 17z\"/>\n <path d=\"M16 14v.5\"/>\n <path d=\"M4.42 11.247A13.152 13.152 0 0 0 4 14.556C4 18.728 7.582 21 12 21s8-2.272 8-6.444a11.702 11.702 0 0 0-.493-3.309\"/>\n <path d=\"M8 14v.5\"/>\n <path d=\"M8.5 8.5c-.384 1.05-1.083 2.028-2.344 2.5-1.931.722-3.576-.297-3.656-1-.113-.994 1.177-6.53 4-7 1.923-.321 3.651.845 3.651 2.235A7.497 7.497 0 0 1 14 5.277c0-1.39 1.844-2.598 3.767-2.277 2.823.47 4.113 6.006 4 7-.08.703-1.725 1.722-3.656 1-1.261-.472-1.855-1.45-2.239-2.5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function DollarIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <path d=\"M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8\"/>\n <path d=\"M12 18V6\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function DollarSymbolIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <line x1=\"12\" x2=\"12\" y1=\"2\" y2=\"22\"/>\n <path d=\"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function DotIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function DownloadIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 15V3\"/>\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"/>\n <path d=\"m7 10 5 5 5-5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function DragIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"8\" cy=\"6\" r=\"1\"/>\n <circle cx=\"8\" cy=\"12\" r=\"1\"/>\n <circle cx=\"8\" cy=\"18\" r=\"1\"/>\n <circle cx=\"16\" cy=\"6\" r=\"1\"/>\n <circle cx=\"16\" cy=\"12\" r=\"1\"/>\n <circle cx=\"16\" cy=\"18\" r=\"1\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function DribbbleFilledIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 640 640\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M261.9 196.5C223.6 214.5 195.1 249.8 186.2 292.2C192.3 292.3 248.6 292.5 312.6 275.5C289.9 235.3 265.5 201.4 261.9 196.5zM288 187.4C291.8 192.5 316.6 226.3 339 267.4C387.6 249.1 408.1 221.5 410.6 218C377 188.2 331.3 176.9 288 187.4zM373.4 446C371.4 434 363.4 392.2 344.2 342.4C289.1 361.2 250.4 398.8 236.1 428C276.6 459.6 329.4 464.7 373.4 446zM323.8 296.6C255.6 317 189.4 316.2 183.4 316L183.4 320.2C183.4 355.3 196.7 387.3 218.5 411.6C240.7 373.7 285.6 333.7 335 319.8C331.6 312 327.8 304.3 323.9 296.6L323.8 296.6zM396.3 433.5C427 412.8 448.8 379.9 454.9 341.9C450.3 340.4 412.6 329.2 369.8 336.1C387.7 385.2 394.9 425.2 396.3 433.5zM361.5 314.5C407 308.8 452.2 317.9 456.7 318.9C456.4 286.6 444.9 257 425.8 233.8C422.9 237.7 400 267 349.5 287.7C354.3 297.5 357.8 305.5 361.5 314.5zM480 96L160 96C124.7 96 96 124.7 96 160L96 480C96 515.3 124.7 544 160 544L480 544C515.3 544 544 515.3 544 480L544 160C544 124.7 515.3 96 480 96zM320 160C408.4 160 480 231.6 480 320C480 408.4 408.4 480 320 480C231.6 480 160 408.4 160 320C160 231.6 231.6 160 320 160z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function DribbbleIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 640 640\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"24\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect x=\"96\" y=\"96\" width=\"448\" height=\"448\" rx=\"64\"/>\n <path fill=\"currentColor\" stroke=\"none\"\n d=\"M261.9 196.5C223.6 214.5 195.1 249.8 186.2 292.2C192.3 292.3 248.6 292.5 312.6 275.5C289.9 235.3 265.5 201.4 261.9 196.5z\n M288 187.4C291.8 192.5 316.6 226.3 339 267.4C387.6 249.1 408.1 221.5 410.6 218C377 188.2 331.3 176.9 288 187.4z\n M373.4 446C371.4 434 363.4 392.2 344.2 342.4C289.1 361.2 250.4 398.8 236.1 428C276.6 459.6 329.4 464.7 373.4 446z\n M323.8 296.6C255.6 317 189.4 316.2 183.4 316L183.4 320.2C183.4 355.3 196.7 387.3 218.5 411.6C240.7 373.7 285.6 333.7 335 319.8C331.6 312 327.8 304.3 323.9 296.6z\n M396.3 433.5C427 412.8 448.8 379.9 454.9 341.9C450.3 340.4 412.6 329.2 369.8 336.1C387.7 385.2 394.9 425.2 396.3 433.5z\n M361.5 314.5C407 308.8 452.2 317.9 456.7 318.9C456.4 286.6 444.9 257 425.8 233.8C422.9 237.7 400 267 349.5 287.7C354.3 297.5 357.8 305.5 361.5 314.5z\n M320 160C408.4 160 480 231.6 480 320C480 408.4 408.4 480 320 480C231.6 480 160 408.4 160 320C160 231.6 231.6 160 320 160z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function DropletIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 22a7 7 0 0 0 7-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5 2.5-2 4.9-4 6.5C6 11.1 5 13 5 15a7 7 0 0 0 7 7z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function DropletOffIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M18.715 13.186C18.29 11.858 17.384 10.607 16 9.5c-2-1.6-3.5-4-4-6.5a10.7 10.7 0 0 1-.884 2.586\"/>\n <path d=\"m2 2 20 20\"/>\n <path d=\"M8.795 8.797A11 11 0 0 1 8 9.5C6 11.1 5 13 5 15a7 7 0 0 0 13.222 3.208\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function EditIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 20h9\"/>\n <path d=\"M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z\"/>\n <path d=\"m16 5 2 2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function EmergencyIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M7 18v-6a5 5 0 1 1 10 0v6\"/>\n <path d=\"M5 21a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-1a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2z\"/>\n <path d=\"M21 12h1\"/>\n <path d=\"M18.5 4.5 18 5\"/>\n <path d=\"M2 12h1\"/>\n <path d=\"M12 2v1\"/>\n <path d=\"m4.929 4.929.707.707\"/>\n <path d=\"M12 12v6\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function EqualIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <line x1=\"5\" x2=\"19\" y1=\"9\" y2=\"9\"/>\n <line x1=\"5\" x2=\"19\" y1=\"15\" y2=\"15\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function EraserIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M21 21H8a2 2 0 0 1-1.42-.587l-3.994-3.999a2 2 0 0 1 0-2.828l10-10a2 2 0 0 1 2.829 0l5.999 6a2 2 0 0 1 0 2.828L12.834 21\"/>\n <path d=\"m5.082 11.09 8.828 8.828\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function EthernetIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10 8v1\"/>\n <path d=\"M14 8v1\"/>\n <path d=\"M18 8v1\"/>\n <path d=\"M19 17a2 2 0 0 0-1.765 1.059l-.47.882A2 2 0 0 1 15 20H9a2 2 0 0 1-1.765-1.059l-.47-.882A2 2 0 0 0 5 17H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2z\"/>\n <path d=\"M6 8v1\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function EuroIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <path d=\"M7 12h5\"/>\n <path d=\"M15 9.4a4 4 0 1 0 0 5.2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function EuroSymbolIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M4 10h12\"/>\n <path d=\"M4 14h9\"/>\n <path d=\"M19 6a7.7 7.7 0 0 0-5.2-2A7.9 7.9 0 0 0 6 12c0 4.4 3.5 8 7.8 8 2 0 3.8-.8 5.2-2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ExpandIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m15 15 6 6\"/>\n <path d=\"m15 9 6-6\"/>\n <path d=\"M21 16v5h-5\"/>\n <path d=\"M21 8V3h-5\"/>\n <path d=\"M3 16v5h5\"/>\n <path d=\"m3 21 6-6\"/>\n <path d=\"M3 8V3h5\"/>\n <path d=\"M9 9 3 3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ExternalLinkIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M15 3h6v6\"/><path d=\"M10 14 21 3\"/>\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function EyeClosedIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m15 18-.722-3.25\"/>\n <path d=\"M2 8a10.645 10.645 0 0 0 20 0\"/>\n <path d=\"m20 15-1.726-2.05\"/>\n <path d=\"m4 15 1.726-2.05\"/>\n <path d=\"m9 18 .722-3.25\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function EyeIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\"/>\n <circle cx=\"12\" cy=\"12\" r=\"3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function EyeOffIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\"/>\n <path d=\"M14.084 14.158a3 3 0 0 1-4.242-4.242\"/>\n <path d=\"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\"/>\n <path d=\"m2 2 20 20\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FacebookFilledIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 640 640\"\n fill=\"currentColor\"\n stroke=\"none\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M160 96C124.7 96 96 124.7 96 160L96 480C96 515.3 124.7 544 160 544L258.2 544L258.2 398.2L205.4 398.2L205.4 320L258.2 320L258.2 286.3C258.2 199.2 297.6 158.8 383.2 158.8C399.4 158.8 427.4 162 438.9 165.2L438.9 236C432.9 235.4 422.4 235 409.3 235C367.3 235 351.1 250.9 351.1 292.2L351.1 320L434.7 320L420.3 398.2L351 398.2L351 544L480 544C515.3 544 544 515.3 544 480L544 160C544 124.7 515.3 96 480 96L160 96z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FacebookIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 640 640\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"24\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect x=\"96\" y=\"96\" width=\"448\" height=\"448\" rx=\"64\"/>\n <path fill=\"currentColor\" stroke=\"none\"\n d=\"M258.2 544L258.2 398.2L205.4 398.2L205.4 320L258.2 320L258.2 286.3C258.2 199.2 297.6 158.8 383.2 158.8C399.4 158.8 427.4 162 438.9 165.2L438.9 236C432.9 235.4 422.4 235 409.3 235C367.3 235 351.1 250.9 351.1 292.2L351.1 320L434.7 320L420.3 398.2L351 398.2L351 544z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FactoryIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 16h.01\"/>\n <path d=\"M16 16h.01\"/>\n <path d=\"M3 19a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V8.5a.5.5 0 0 0-.769-.422l-4.462 2.844A.5.5 0 0 1 15 10.5v-2a.5.5 0 0 0-.769-.422L9.77 10.922A.5.5 0 0 1 9 10.5V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2z\"/>\n <path d=\"M8 16h.01\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FastForwardIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 6a2 2 0 0 1 3.414-1.414l6 6a2 2 0 0 1 0 2.828l-6 6A2 2 0 0 1 12 18z\"/>\n <path d=\"M2 6a2 2 0 0 1 3.414-1.414l6 6a2 2 0 0 1 0 2.828l-6 6A2 2 0 0 1 2 18z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FemaleGenderIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 15v7\"/>\n <path d=\"M9 19h6\"/>\n <circle cx=\"12\" cy=\"9\" r=\"6\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FigmaFilledIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 640 640\"\n fill=\"currentColor\"\n stroke=\"none\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M480 96C515.3 96 544 124.7 544 160L544 480C544 515.3 515.3 544 480 544L160 544C124.7 544 96 515.3 96 480L96 160C96 124.7 124.7 96 160 96L480 96zM269.7 160C236.7 160 209.9 186.8 209.9 219.8C209.9 240.8 220.7 259.2 237.1 269.9C220.7 280.6 209.9 299 209.9 320C209.9 341 220.7 359.5 237.1 370.1C220.7 380.8 209.9 399.2 209.9 420.2C209.9 453.3 237 480 270 480C303.2 480 330.6 453.1 330.6 419.7L330.6 364C341.2 373.8 355.4 379.8 371 379.8L372.1 379.8C405.1 379.8 431.9 353 431.9 320C431.9 299 421.1 280.5 404.7 269.9C421.1 259.2 431.9 240.8 431.9 219.8C431.9 186.8 405.1 160 372.1 160L269.7 160zM311.3 379.8L311.3 419.7C311.3 442.3 292.7 460.7 270 460.7C247.6 460.7 229.3 442.5 229.3 420.2C229.3 397.9 247.4 379.8 269.6 379.8L311.3 379.8zM311.3 279.5L311.3 360.4L269.6 360.4C247.3 360.3 229.3 342.2 229.3 319.9C229.3 297.6 247.4 279.4 269.8 279.4L311.4 279.4zM372.1 279.5C394.4 279.5 412.6 297.6 412.6 320C412.6 342.4 394.5 360.5 372.1 360.5L371 360.5C348.7 360.5 330.6 342.4 330.6 320C330.6 297.6 348.7 279.5 371 279.5L372.1 279.5zM311.3 260.2L269.7 260.2C247.4 260.2 229.2 242.1 229.2 219.8C229.2 197.5 247.3 179.3 269.7 179.3L311.3 179.3L311.3 260.2zM372.1 179.3C394.4 179.3 412.6 197.4 412.6 219.8C412.6 242.2 394.5 260.2 372.1 260.2L330.6 260.2L330.6 179.3L372.1 179.3z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FigmaIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 640 640\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"24\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect x=\"96\" y=\"96\" width=\"448\" height=\"448\" rx=\"64\"/>\n <path fill=\"currentColor\" stroke=\"none\"\n d=\"M269.7 160C236.7 160 209.9 186.8 209.9 219.8C209.9 240.8 220.7 259.2 237.1 269.9C220.7 280.6 209.9 299 209.9 320C209.9 341 220.7 359.5 237.1 370.1C220.7 380.8 209.9 399.2 209.9 420.2C209.9 453.3 237 480 270 480C303.2 480 330.6 453.1 330.6 419.7L330.6 364C341.2 373.8 355.4 379.8 371 379.8L372.1 379.8C405.1 379.8 431.9 353 431.9 320C431.9 299 421.1 280.5 404.7 269.9C421.1 259.2 431.9 240.8 431.9 219.8C431.9 186.8 405.1 160 372.1 160L269.7 160z\n M311.3 379.8L311.3 419.7C311.3 442.3 292.7 460.7 270 460.7C247.6 460.7 229.3 442.5 229.3 420.2C229.3 397.9 247.4 379.8 269.6 379.8L311.3 379.8z\n M311.3 279.5L311.3 360.4L269.6 360.4C247.3 360.3 229.3 342.2 229.3 319.9C229.3 297.6 247.4 279.4 269.8 279.4L311.4 279.4z\n M372.1 279.5C394.4 279.5 412.6 297.6 412.6 320C412.6 342.4 394.5 360.5 372.1 360.5L371 360.5C348.7 360.5 330.6 342.4 330.6 320C330.6 297.6 348.7 279.5 371 279.5L372.1 279.5z\n M311.3 260.2L269.7 260.2C247.4 260.2 229.2 242.1 229.2 219.8C229.2 197.5 247.3 179.3 269.7 179.3L311.3 179.3L311.3 260.2z\n M372.1 179.3C394.4 179.3 412.6 197.4 412.6 219.8C412.6 242.2 394.5 260.2 372.1 260.2L330.6 260.2L330.6 179.3L372.1 179.3z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileArchiveIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <path d=\"M9 6v1\"/>\n <path d=\"M9 10v1\"/>\n <path d=\"M9 14v1\"/>\n <circle cx=\"9\" cy=\"19\" r=\"1.5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileAudioIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2z\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <path d=\"M12 16v-5l3 1.5\"/>\n <circle cx=\"10.5\" cy=\"16.5\" r=\"1.5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileChartIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <path d=\"M8 18v-1\"/>\n <path d=\"M12 18v-6\"/>\n <path d=\"M16 18v-3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileCheckIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10.5 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v6\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <path d=\"m14 20 2 2 4-4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileCodeIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <path d=\"M10 12.5 8 15l2 2.5\"/>\n <path d=\"m14 12.5 2 2.5-2 2.5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileCogIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M15 8a1 1 0 0 1-1-1V2a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8z\"/>\n <path d=\"M20 8v12a2 2 0 0 1-2 2h-4.182\"/>\n <path d=\"m3.305 19.53.923-.382\"/>\n <path d=\"M4 10.592V4a2 2 0 0 1 2-2h8\"/>\n <path d=\"m4.228 16.852-.924-.383\"/>\n <path d=\"m5.852 15.228-.383-.923\"/>\n <path d=\"m5.852 20.772-.383.924\"/>\n <path d=\"m8.148 15.228.383-.923\"/>\n <path d=\"m8.53 21.696-.382-.924\"/>\n <path d=\"m9.773 16.852.922-.383\"/>\n <path d=\"m9.773 19.148.922.383\"/>\n <circle cx=\"7\" cy=\"18\" r=\"3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileCssIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <text x=\"6\" y=\"16.5\" fontSize=\"6\" fontWeight=\"700\" letterSpacing=\".02em\" stroke=\"none\" fill=\"currentColor\">CSS</text>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileDatabaseIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <ellipse cx=\"12\" cy=\"12\" rx=\"4\" ry=\"1.5\" strokeWidth=\"1.3\"/>\n <path d=\"M8 12v3c0 .83 1.79 1.5 4 1.5s4-.67 4-1.5v-3\" strokeWidth=\"1.3\"/>\n <path d=\"M8 15v3c0 .83 1.79 1.5 4 1.5s4-.67 4-1.5v-3\" strokeWidth=\"1.3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileDownloadIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <path d=\"M12 12v5M9.5 14.5l2.5 2.5 2.5-2.5\" strokeWidth=\"1.5\"/>\n <path d=\"M8.5 19h7\" strokeWidth=\"1.5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileEditIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v9.34\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <path d=\"M10.378 12.622a1 1 0 0 1 3 3.003L8.36 20.637a2 2 0 0 1-.854.506l-2.867.837a.5.5 0 0 1-.62-.62l.836-2.869a2 2 0 0 1 .506-.853z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileEnvIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <text x=\"5.35\" y=\"16.5\" fontSize=\"6.2\" fontWeight=\"700\" letterSpacing=\".02em\" stroke=\"none\" fill=\"currentColor\">ENV</text>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileHeartIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M13 22h5a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v7\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <path d=\"M3.62 18.8A2.25 2.25 0 1 1 7 15.836a2.25 2.25 0 1 1 3.38 2.966l-2.626 2.856a1 1 0 0 1-1.507 0z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileHtmlIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <text x=\"5.2\" y=\"16.5\" fontSize=\"4.5\" fontWeight=\"700\" letterSpacing=\".02em\" stroke=\"none\" fill=\"currentColor\">HTML</text>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileImageIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <circle cx=\"10\" cy=\"12\" r=\"2\"/>\n <path d=\"m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileJsIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <text x=\"8\" y=\"16.5\" fontSize=\"6.5\" fontWeight=\"700\" letterSpacing=\".02em\" stroke=\"none\" fill=\"currentColor\">JS</text>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileJsonIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <path d=\"M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1\"/>\n <path d=\"M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileJsxIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <text x=\"6\" y=\"16.5\" fontSize=\"6.5\" fontWeight=\"700\" letterSpacing=\".02em\" stroke=\"none\" fill=\"currentColor\">JSX</text>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileLockIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <rect x=\"8.5\" y=\"14\" width=\"7\" height=\"5\" rx=\"1\" strokeWidth=\"1.5\"/>\n <path d=\"M10 14v-1.5a2 2 0 0 1 4 0V14\" strokeWidth=\"1.5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileMdIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <text x=\"6.7\" y=\"16.5\" fontSize=\"6.5\" fontWeight=\"700\" letterSpacing=\".02em\" stroke=\"none\" fill=\"currentColor\">MD</text>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileMinusIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M20 14V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <path d=\"M14 18h6\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FilePdfIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <text x=\"5.7\" y=\"16.5\" fontSize=\"6.5\" fontWeight=\"700\" letterSpacing=\".02em\" stroke=\"none\" fill=\"currentColor\">PDF</text>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FilePlusIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M11.35 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v5.35\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <path d=\"M14 19h6\"/>\n <path d=\"M17 16v6\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FilePresentationIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <path d=\"M7 11h10\" strokeWidth=\"1.3\"/>\n <rect x=\"8\" y=\"11\" width=\"8\" height=\"5\" rx=\"1\" strokeWidth=\"1.3\"/>\n <path d=\"m10 18.7 2-2 2 2\" strokeWidth=\"1.3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileSearchIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M11.1 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.589 3.588A2.4 2.4 0 0 1 20 8v3.25\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <path d=\"m21 22-2.88-2.88\"/>\n <circle cx=\"16\" cy=\"17\" r=\"3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileSpreadsheetIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <rect x=\"6.5\" y=\"12\" width=\"11\" height=\"8\" rx=\"0.5\" strokeWidth=\"1.3\"/>\n <path d=\"M6.6 14.5h10.5M10 12v8 M14 12v8 \" strokeWidth=\"1.3\"/>\n <path d=\"M6.6 17.5h10.5M10\" strokeWidth=\"1.3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileTextIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <path d=\"M10 9H8\"/>\n <path d=\"M16 13H8\"/>\n <path d=\"M16 17H8\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileTsIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <text x=\"8\" y=\"16.5\" fontSize=\"6.5\" fontWeight=\"700\" letterSpacing=\".02em\" stroke=\"none\" fill=\"currentColor\">TS</text>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileTsxIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <text x=\"5.5\" y=\"16.5\" fontSize=\"6.5\" fontWeight=\"700\" letterSpacing=\".02em\" stroke=\"none\" fill=\"currentColor\">TSX</text>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileUserIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <path d=\"M16 22a4 4 0 0 0-8 0\"/>\n <circle cx=\"12\" cy=\"15\" r=\"3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileVideoIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <path d=\"M15.033 13.44a.647.647 0 0 1 0 1.12l-4.065 2.352a.645.645 0 0 1-.968-.56v-4.704a.645.645 0 0 1 .967-.56z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FileXIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M11 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v5\"/>\n <path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>\n <path d=\"m15 17 5 5\"/>\n <path d=\"m20 17-5 5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FilmIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"/>\n <path d=\"M7 3v18\"/>\n <path d=\"M3 7.5h4\"/>\n <path d=\"M3 12h18\"/>\n <path d=\"M3 16.5h4\"/>\n <path d=\"M17 3v18\"/>\n <path d=\"M17 7.5h4\"/>\n <path d=\"M17 16.5h4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FilterIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M3 6h18\"/>\n <path d=\"M6 12h12\"/>\n <path d=\"M10 18h4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FingerprintIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4\"/>\n <path d=\"M14 13.12c0 2.38 0 6.38-1 8.88\"/>\n <path d=\"M17.29 21.02c.12-.6.43-2.3.5-3.02\"/>\n <path d=\"M2 12a10 10 0 0 1 18-6\"/>\n <path d=\"M2 16h.01\"/>\n <path d=\"M21.8 16c.2-2 .131-5.354 0-6\"/>\n <path d=\"M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2\"/>\n <path d=\"M8.65 22c.21-.66.45-1.32.57-2\"/>\n <path d=\"M9 6.8a6 6 0 0 1 9 5.2v2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FireExtinguisherIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M15 6.5V3a1 1 0 0 0-1-1h-2a1 1 0 0 0-1 1v3.5\"/>\n <path d=\"M9 18h8\"/>\n <path d=\"M18 3h-3\"/>\n <path d=\"M11 3a6 6 0 0 0-6 6v11\"/>\n <path d=\"M5 13h4\"/>\n <path d=\"M17 10a4 4 0 0 0-8 0v10a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2Z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FishIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6.5 12c.94-3.46 4.94-6 8.5-6 3.56 0 6.06 2.54 7 6-.94 3.47-3.44 6-7 6s-7.56-2.53-8.5-6Z\"/>\n <path d=\"M18 12v.5\"/>\n <path d=\"M16 17.93a9.77 9.77 0 0 1 0-11.86\"/>\n <path d=\"M7 10.67C7 8 5.58 5.97 2.73 5.5c-1 1.5-1 5 .23 6.5-1.24 1.5-1.24 5-.23 6.5C5.58 18.03 7 16 7 13.33\"/>\n <path d=\"M10.46 7.26C10.2 5.88 9.17 4.24 8 3h5.8a2 2 0 0 1 1.98 1.67l.23 1.4\"/>\n <path d=\"m16.01 17.93-.23 1.4A2 2 0 0 1 13.8 21H9.5a5.96 5.96 0 0 0 1.49-3.98\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FlagIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M4 22V4a1 1 0 0 1 .4-.8A6 6 0 0 1 8 2c3 0 5 2 7.333 2q2 0 3.067-.8A1 1 0 0 1 20 4v10a1 1 0 0 1-.4.8A6 6 0 0 1 16 16c-3 0-5-2-8-2a6 6 0 0 0-4 1.528\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FlagOffIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M16 16c-3 0-5-2-8-2a6 6 0 0 0-4 1.528\"/>\n <path d=\"m2 2 20 20\"/>\n <path d=\"M4 22V4\"/>\n <path d=\"M7.656 2H8c3 0 5 2 7.333 2q2 0 3.067-.8A1 1 0 0 1 20 4v10.347\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FlameIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FlipHorizontalIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m3 7 5 5-5 5V7\"/>\n <path d=\"m21 7-5 5 5 5V7\"/>\n <path d=\"M12 20v2\"/>\n <path d=\"M12 14v2\"/>\n <path d=\"M12 8v2\"/>\n <path d=\"M12 2v2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FlipVerticalIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m7 3 5 5 5-5H7\"/>\n <path d=\"m7 21 5-5 5 5H7\"/>\n <path d=\"M2 12h2\"/>\n <path d=\"M8 12h2\"/>\n <path d=\"M14 12h2\"/>\n <path d=\"M20 12h2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FlowerIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"3\"/>\n <path d=\"M12 16.5A4.5 4.5 0 1 1 7.5 12 4.5 4.5 0 1 1 12 7.5a4.5 4.5 0 1 1 4.5 4.5 4.5 4.5 0 1 1-4.5 4.5\"/>\n <path d=\"M12 7.5V9\"/>\n <path d=\"M7.5 12H9\"/>\n <path d=\"M16.5 12H15\"/>\n <path d=\"M12 16.5V15\"/>\n <path d=\"m8 8 1.88 1.88\"/>\n <path d=\"M14.12 9.88 16 8\"/>\n <path d=\"m8 16 1.88-1.88\"/>\n <path d=\"M14.12 14.12 16 16\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FolderArchiveIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\"/>\n <path d=\"M15 9.5v-1\"/>\n <path d=\"M15 13v-1\"/>\n <circle cx=\"15\" cy=\"16.8\" r=\"1.5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FolderCheckIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\"/>\n <path d=\"m9 13 2 2 4-4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FolderCogIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10.3 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.98a2 2 0 0 1 1.69.9l.66 1.2A2 2 0 0 0 12 6h8a2 2 0 0 1 2 2v3.3\"/>\n <path d=\"m14.305 19.53.923-.382\"/>\n <path d=\"m15.228 16.852-.923-.383\"/>\n <path d=\"m16.852 15.228-.383-.923\"/>\n <path d=\"m16.852 20.772-.383.924\"/>\n <path d=\"m19.148 15.228.383-.923\"/>\n <path d=\"m19.53 21.696-.382-.924\"/>\n <path d=\"m20.772 16.852.924-.383\"/>\n <path d=\"m20.772 19.148.924.383\"/>\n <circle cx=\"18\" cy=\"18\" r=\"3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FolderDownIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\"/>\n <path d=\"M12 10v6\"/>\n <path d=\"m15 13-3 3-3-3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FolderDownloadIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\"/>\n <path d=\"M12 10v6\"/>\n <path d=\"m15 13-3 3-3-3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FolderEditIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M2 11.5V5a2 2 0 0 1 2-2h3.9c.7 0 1.3.3 1.7.9l.8 1.2c.4.6 1 .9 1.7.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-9.5\"/>\n <path d=\"M11.378 13.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FolderHeartIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10.638 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v3.417\"/>\n <path d=\"M14.62 18.8A2.25 2.25 0 1 1 18 15.836a2.25 2.25 0 1 1 3.38 2.966l-2.626 2.856a.998.998 0 0 1-1.507 0z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FolderIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FolderLockIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\"/>\n <rect x=\"8.5\" y=\"13\" width=\"7\" height=\"5\" rx=\"1\" strokeWidth=\"1.5\"/>\n <path d=\"M10 13v-1.5a2 2 0 0 1 4 0V13\" strokeWidth=\"1.5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FolderMinusIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M9 13h6\"/>\n <path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FolderOpenIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FolderPlusIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 10v6\"/>\n <path d=\"M9 13h6\"/>\n <path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FolderSearchIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10.7 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v4.1\"/>\n <path d=\"m21 21-1.9-1.9\"/>\n <circle cx=\"17\" cy=\"17\" r=\"3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FolderXIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\"/>\n <path d=\"m9.5 10.5 5 5\"/>\n <path d=\"m14.5 10.5-5 5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FrancIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <path d=\"M11 17V8h4\"/>\n <path d=\"M11 12h3\"/>\n <path d=\"M9 16h4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FrancSymbolIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10 21V3h8\"/>\n <path d=\"M6 16h9\"/>\n <path d=\"M10 9.5h7\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function FrownIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <path d=\"M16 16s-1.5-2-4-2-4 2-4 2\"/>\n <line x1=\"9\" x2=\"9.01\" y1=\"9\" y2=\"9\"/>\n <line x1=\"15\" x2=\"15.01\" y1=\"9\" y2=\"9\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function GamepadIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <line x1=\"6\" x2=\"10\" y1=\"11\" y2=\"11\"/>\n <line x1=\"8\" x2=\"8\" y1=\"9\" y2=\"13\"/>\n <line x1=\"15\" x2=\"15.01\" y1=\"12\" y2=\"12\"/>\n <line x1=\"18\" x2=\"18.01\" y1=\"10\" y2=\"10\"/>\n <path d=\"M17.32 5H6.68a4 4 0 0 0-3.978 3.59c-.006.052-.01.101-.017.152C2.604 9.416 2 14.456 2 16a3 3 0 0 0 3 3c1 0 1.5-.5 2-1l1.414-1.414A2 2 0 0 1 9.828 16h4.344a2 2 0 0 1 1.414.586L17 18c.5.5 1 1 2 1a3 3 0 0 0 3-3c0-1.545-.604-6.584-.685-7.258-.007-.05-.011-.1-.017-.151A4 4 0 0 0 17.32 5z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function GemIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10.5 3 8 9l4 13 4-13-2.5-6\"/>\n <path d=\"M17 3a2 2 0 0 1 1.6.8l3 4a2 2 0 0 1 .013 2.382l-7.99 10.986a2 2 0 0 1-3.247 0l-7.99-10.986A2 2 0 0 1 2.4 7.8l2.998-3.997A2 2 0 0 1 7 3z\"/>\n <path d=\"M2 9h20\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function GhostIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M9 10h.01\"/>\n <path d=\"M15 10h.01\"/>\n <path d=\"M12 2a8 8 0 0 0-8 8v12l3-3 2.5 2.5L12 19l2.5 2.5L17 19l3 3V10a8 8 0 0 0-8-8z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function GiftIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 7v14\"/>\n <path d=\"M20 11v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-8\"/>\n <path d=\"M7.5 7a1 1 0 0 1 0-5A4.8 8 0 0 1 12 7a4.8 8 0 0 1 4.5-5 1 1 0 0 1 0 5\"/>\n <rect x=\"3\" y=\"7\" width=\"18\" height=\"4\" rx=\"1\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function GithubFilledIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 640 640\"\n fill=\"currentColor\"\n stroke=\"none\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M544 160C544 124.7 515.3 96 480 96L160 96C124.7 96 96 124.7 96 160L96 480C96 515.3 124.7 544 160 544L480 544C515.3 544 544 515.3 544 480L544 160zM361.8 471.7C361.8 469.9 361.8 465.7 361.9 460.1C362 448.7 362 431.3 362 416.4C362 400.8 356.8 390.9 350.7 385.7C387.7 381.6 426.7 376.5 426.7 312.6C426.7 294.4 420.2 285.3 409.6 273.6C411.3 269.3 417 251.6 407.9 228.6C394 224.3 362.2 246.5 362.2 246.5C335.6 239 305.6 239 279 246.5C279 246.5 247.2 224.3 233.3 228.6C224.2 251.5 229.8 269.2 231.6 273.6C221 285.3 216 294.4 216 312.6C216 376.2 253.3 381.6 290.3 385.7C285.5 390 281.2 397.4 279.7 408C270.2 412.3 245.9 419.7 231.4 394.1C222.3 378.3 205.9 377 205.9 377C189.7 376.8 204.8 387.2 204.8 387.2C215.6 392.2 223.2 411.4 223.2 411.4C232.9 441.1 279.3 431.1 279.3 431.1C279.3 440.1 279.4 452.8 279.4 461.7C279.4 466.5 279.5 470.3 279.5 471.7C279.5 476 276.5 481.2 268 479.7C202 457.6 155.8 394.8 155.8 321.4C155.8 229.6 226 159.9 317.8 159.9C409.6 159.9 484 229.6 484 321.4C484.1 394.8 439.3 457.7 373.3 479.7C364.9 481.2 361.8 476 361.8 471.7zM271.3 416.9C271.1 415.4 272.4 414.1 274.3 413.7C276.2 413.5 278 414.3 278.2 415.6C278.5 416.9 277.2 418.2 275.2 418.6C273.3 419 271.5 418.2 271.3 416.9zM262.2 420.1C260 420.3 258.5 419.2 258.5 417.7C258.5 416.4 260 415.3 262 415.3C263.9 415.1 265.7 416.2 265.7 417.7C265.7 419 264.2 420.1 262.2 420.1zM247.9 417.9C246 417.5 244.7 416 245.1 414.7C245.5 413.4 247.5 412.8 249.2 413.2C251.2 413.8 252.5 415.3 252 416.6C251.6 417.9 249.6 418.5 247.9 417.9zM235.4 410.6C233.9 409.3 233.5 407.4 234.5 406.5C235.4 405.4 237.3 405.6 238.8 407.1C240.1 408.4 240.6 410.4 239.7 411.2C238.8 412.3 236.9 412.1 235.4 410.6zM226.9 400.6C225.8 399.1 225.8 397.4 226.9 396.7C228 395.8 229.7 396.5 230.6 398C231.7 399.5 231.7 401.3 230.6 402.1C229.7 402.7 228 402.1 226.9 400.6zM220.6 391.8C219.5 390.5 219.3 389 220.2 388.3C221.1 387.4 222.6 387.9 223.7 388.9C224.8 390.2 225 391.7 224.1 392.4C223.2 393.3 221.7 392.8 220.6 391.8zM214.6 385.4C213.3 384.8 212.7 383.7 213.1 382.8C213.5 382.2 214.6 381.9 215.9 382.4C217.2 383.1 217.8 384.2 217.4 385C217 385.9 215.7 386.1 214.6 385.4z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function GithubIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 640 640\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"24\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect x=\"96\" y=\"96\" width=\"448\" height=\"448\" rx=\"64\"/>\n <path fill=\"currentColor\" stroke=\"none\"\n d=\"M361.8 471.7C361.8 469.9 361.8 465.7 361.9 460.1C362 448.7 362 431.3 362 416.4C362 400.8 356.8 390.9 350.7 385.7C387.7 381.6 426.7 376.5 426.7 312.6C426.7 294.4 420.2 285.3 409.6 273.6C411.3 269.3 417 251.6 407.9 228.6C394 224.3 362.2 246.5 362.2 246.5C335.6 239 305.6 239 279 246.5C279 246.5 247.2 224.3 233.3 228.6C224.2 251.5 229.8 269.2 231.6 273.6C221 285.3 216 294.4 216 312.6C216 376.2 253.3 381.6 290.3 385.7C285.5 390 281.2 397.4 279.7 408C270.2 412.3 245.9 419.7 231.4 394.1C222.3 378.3 205.9 377 205.9 377C189.7 376.8 204.8 387.2 204.8 387.2C215.6 392.2 223.2 411.4 223.2 411.4C232.9 441.1 279.3 431.1 279.3 431.1C279.3 440.1 279.4 452.8 279.4 461.7C279.4 466.5 279.5 470.3 279.5 471.7C279.5 476 276.5 481.2 268 479.7C202 457.6 155.8 394.8 155.8 321.4C155.8 229.6 226 159.9 317.8 159.9C409.6 159.9 484 229.6 484 321.4C484.1 394.8 439.3 457.7 373.3 479.7C364.9 481.2 361.8 476 361.8 471.7z\n M271.3 416.9C271.1 415.4 272.4 414.1 274.3 413.7C276.2 413.5 278 414.3 278.2 415.6C278.5 416.9 277.2 418.2 275.2 418.6C273.3 419 271.5 418.2 271.3 416.9z\n M262.2 420.1C260 420.3 258.5 419.2 258.5 417.7C258.5 416.4 260 415.3 262 415.3C263.9 415.1 265.7 416.2 265.7 417.7C265.7 419 264.2 420.1 262.2 420.1z\n M247.9 417.9C246 417.5 244.7 416 245.1 414.7C245.5 413.4 247.5 412.8 249.2 413.2C251.2 413.8 252.5 415.3 252 416.6C251.6 417.9 249.6 418.5 247.9 417.9z\n M235.4 410.6C233.9 409.3 233.5 407.4 234.5 406.5C235.4 405.4 237.3 405.6 238.8 407.1C240.1 408.4 240.6 410.4 239.7 411.2C238.8 412.3 236.9 412.1 235.4 410.6z\n M226.9 400.6C225.8 399.1 225.8 397.4 226.9 396.7C228 395.8 229.7 396.5 230.6 398C231.7 399.5 231.7 401.3 230.6 402.1C229.7 402.7 228 402.1 226.9 400.6z\n M220.6 391.8C219.5 390.5 219.3 389 220.2 388.3C221.1 387.4 222.6 387.9 223.7 388.9C224.8 390.2 225 391.7 224.1 392.4C223.2 393.3 221.7 392.8 220.6 391.8z\n M214.6 385.4C213.3 384.8 212.7 383.7 213.1 382.8C213.5 382.2 214.6 381.9 215.9 382.4C217.2 383.1 217.8 384.2 217.4 385C217 385.9 215.7 386.1 214.6 385.4z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function GlobeIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <path d=\"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20\"/>\n <path d=\"M2 12h20\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function GpuIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M2 17h18a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2H2\"/>\n <path d=\"M2 21V3\"/>\n <path d=\"M7 17v3a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1v-3\"/>\n <circle cx=\"16\" cy=\"11\" r=\"2\"/>\n <circle cx=\"8\" cy=\"11\" r=\"2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function GraduationCapIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z\"/>\n <path d=\"M22 10v6\"/>\n <path d=\"M6 12.5V16a6 3 0 0 0 12 0v-3.5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function GridIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"7\" height=\"7\" x=\"3\" y=\"3\" rx=\"1\"/>\n <rect width=\"7\" height=\"7\" x=\"14\" y=\"3\" rx=\"1\"/>\n <rect width=\"7\" height=\"7\" x=\"14\" y=\"14\" rx=\"1\"/>\n <rect width=\"7\" height=\"7\" x=\"3\" y=\"14\" rx=\"1\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function GroupIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M3 7V5c0-1.1.9-2 2-2h2\"/>\n <path d=\"M17 3h2c1.1 0 2 .9 2 2v2\"/>\n <path d=\"M21 17v2c0 1.1-.9 2-2 2h-2\"/>\n <path d=\"M7 21H5c-1.1 0-2-.9-2-2v-2\"/>\n <rect width=\"7\" height=\"5\" x=\"7\" y=\"7\" rx=\"1\"/>\n <rect width=\"7\" height=\"5\" x=\"10\" y=\"12\" rx=\"1\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function HandshakeIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m11 17 2 2a1 1 0 1 0 3-3\"/>\n <path d=\"m14 14 2.5 2.5a1 1 0 1 0 3-3l-3.88-3.88a3 3 0 0 0-4.24 0l-.88.88a1 1 0 1 1-3-3l2.81-2.81a5.79 5.79 0 0 1 7.06-.87l.47.28a2 2 0 0 0 1.42.25L21 4\"/>\n <path d=\"m21 3 1 11h-2\"/>\n <path d=\"M3 3 2 14l6.5 6.5a1 1 0 1 0 3-3\"/>\n <path d=\"M3 4h8\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function HardDriveIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10 16h.01\"/>\n <path d=\"M2.212 11.577a2 2 0 0 0-.212.896V18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5.527a2 2 0 0 0-.212-.896L18.55 5.11A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\"/>\n <path d=\"M21.946 12.013H2.054\"/>\n <path d=\"M6 16h.01\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function HdmiIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M22 9a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h.5a2 2 0 0 1 1.6.8l.3.4A2 2 0 0 0 7 16h10a2 2 0 0 0 1.6-.8l.3-.4a2 2 0 0 1 1.6-.8h.5a1 1 0 0 0 1-1z\"/>\n <path d=\"M8 12h8\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function HeadphonesIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M3 14h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-7a9 9 0 0 1 18 0v7a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function HeadphonesOffIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M21 14h-1.343\"/>\n <path d=\"M9.128 3.47A9 9 0 0 1 21 12v3.343\"/>\n <path d=\"m2 2 20 20\"/>\n <path d=\"M20.414 20.414A2 2 0 0 1 19 21h-1a2 2 0 0 1-2-2v-3\"/>\n <path d=\"M3 14h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-7a9 9 0 0 1 2.636-6.364\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function HeartBrokenIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5\"/>\n <path d=\"m12 6-1.5 4 2 2-1.5 4 2 3.5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function HeartFilledIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n strokeWidth=\"1\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function HeartIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function HelicopterIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M11 17v4\"/>\n <path d=\"M14 3v8a2 2 0 0 0 2 2h5.865\"/>\n <path d=\"M17 17v4\"/>\n <path d=\"M18 17a4 4 0 0 0 4-4 8 6 0 0 0-8-6 6 5 0 0 0-6 5v3a2 2 0 0 0 2 2z\"/>\n <path d=\"M2 10v5\"/>\n <path d=\"M6 3h16\"/>\n <path d=\"M7 21h14\"/>\n <path d=\"M8 13H2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function HelpIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\"/>\n <path d=\"M9.5 9a2.5 2.5 0 1 1 3.5 2.3c-.9.4-1.5 1.1-1.5 2.2\"/>\n <path d=\"M12 17h.01\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function HeptagonIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 2 19.82 6.5 21.75 15.5 16.5 22H7.5l-5.25-6.5L4.18 6.5z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function HexagonIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 3h12l4 9-4 9H6l-4-9z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function HighlighterIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m9 11-6 6v3h9l3-3\"/>\n <path d=\"m22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function HistoryIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\"/>\n <path d=\"M3 3v5h5\"/>\n <path d=\"M12 7v5l4 2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function HomeIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"/>\n <polyline points=\"9 22 9 12 15 12 15 22\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function HospitalIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 7v4\"/>\n <path d=\"M14 21v-3a2 2 0 0 0-4 0v3\"/>\n <path d=\"M14 9h-4\"/>\n <path d=\"M18 11h2a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-9a2 2 0 0 1 2-2h2\"/>\n <path d=\"M18 21V5a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v16\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function HourglassIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M5 22h14\"/>\n <path d=\"M5 2h14\"/>\n <path d=\"M17 22v-4.172a2 2 0 0 0-.586-1.414L12 12l-4.414 4.414A2 2 0 0 0 7 17.828V22\"/>\n <path d=\"M7 2v4.172a2 2 0 0 0 .586 1.414L12 12l4.414-4.414A2 2 0 0 0 17 6.172V2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function IdCardIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M13.5 8h-3\"/>\n <path d=\"m15 2-1 2h3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h3\"/>\n <path d=\"M16.899 22A5 5 0 0 0 7.1 22\"/>\n <path d=\"m9 2 3 6\"/>\n <circle cx=\"12\" cy=\"15\" r=\"3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ImageIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\"/>\n <circle cx=\"9\" cy=\"9\" r=\"2\"/>\n <path d=\"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function InboxIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <polyline points=\"22 12 16 12 14 15 10 15 8 12 2 12\"/>\n <path d=\"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function IndentIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M21 5H11\"/>\n <path d=\"M21 12H11\"/>\n <path d=\"M21 19H11\"/>\n <path d=\"m3 8 4 4-4 4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function InfoIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\"/>\n <path d=\"M12 10v6\"/>\n <path d=\"M12 7h.01\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function InstagramFilledIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 640 640\"\n fill=\"currentColor\"\n stroke=\"none\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M290.4 275.7C274 286 264.5 304.5 265.5 323.8C266.6 343.2 278.2 360.4 295.6 368.9C313.1 377.3 333.8 375.5 349.6 364.3C366 354 375.5 335.5 374.5 316.2C373.4 296.8 361.8 279.6 344.4 271.1C326.9 262.7 306.2 264.5 290.4 275.7zM432.7 207.3C427.5 202.1 421.2 198 414.3 195.3C396.2 188.2 356.7 188.5 331.2 188.8C327.1 188.8 323.3 188.9 320 188.9C316.7 188.9 312.8 188.9 308.6 188.8C283.1 188.5 243.8 188.1 225.7 195.3C218.8 198 212.6 202.1 207.3 207.3C202 212.5 198 218.8 195.3 225.7C188.2 243.8 188.6 283.4 188.8 308.9C188.8 313 188.9 316.8 188.9 320C188.9 323.2 188.9 327 188.8 331.1C188.6 356.6 188.2 396.2 195.3 414.3C198 421.2 202.1 427.4 207.3 432.7C212.5 438 218.8 442 225.7 444.7C243.8 451.8 283.3 451.5 308.8 451.2C312.9 451.2 316.7 451.1 320 451.1C323.3 451.1 327.2 451.1 331.4 451.2C356.9 451.5 396.2 451.9 414.3 444.7C421.2 442 427.4 437.9 432.7 432.7C438 427.5 442 421.2 444.7 414.3C451.9 396.3 451.5 356.9 451.2 331.3C451.2 327.1 451.1 323.2 451.1 319.9C451.1 316.6 451.1 312.8 451.2 308.5C451.5 283 451.9 243.6 444.7 225.5C442 218.6 437.9 212.4 432.7 207.1L432.7 207.3zM365.6 251.8C383.7 263.9 396.2 282.7 400.5 304C404.8 325.3 400.3 347.5 388.2 365.6C382.2 374.6 374.5 382.2 365.6 388.2C356.7 394.2 346.6 398.3 336 400.4C314.7 404.6 292.5 400.2 274.4 388.1C256.3 376 243.8 357.2 239.5 335.9C235.2 314.6 239.7 292.4 251.7 274.3C263.7 256.2 282.6 243.7 303.9 239.4C325.2 235.1 347.4 239.6 365.5 251.6L365.6 251.6zM394.8 250.5C391.7 248.4 389.2 245.4 387.7 241.9C386.2 238.4 385.9 234.6 386.6 230.8C387.3 227 389.2 223.7 391.8 221C394.4 218.3 397.9 216.5 401.6 215.8C405.3 215.1 409.2 215.4 412.7 216.9C416.2 218.4 419.2 220.8 421.3 223.9C423.4 227 424.5 230.7 424.5 234.5C424.5 237 424 239.5 423.1 241.8C422.2 244.1 420.7 246.2 419 248C417.3 249.8 415.1 251.2 412.8 252.2C410.5 253.2 408 253.7 405.5 253.7C401.7 253.7 398 252.6 394.9 250.5L394.8 250.5zM544 160C544 124.7 515.3 96 480 96L160 96C124.7 96 96 124.7 96 160L96 480C96 515.3 124.7 544 160 544L480 544C515.3 544 544 515.3 544 480L544 160zM453 453C434.3 471.7 411.6 477.6 386 478.9C359.6 480.4 280.4 480.4 254 478.9C228.4 477.6 205.7 471.7 187 453C168.3 434.3 162.4 411.6 161.2 386C159.7 359.6 159.7 280.4 161.2 254C162.5 228.4 168.3 205.7 187 187C205.7 168.3 228.5 162.4 254 161.2C280.4 159.7 359.6 159.7 386 161.2C411.6 162.5 434.3 168.3 453 187C471.7 205.7 477.6 228.4 478.8 254C480.3 280.3 480.3 359.4 478.8 385.9C477.5 411.5 471.7 434.2 453 452.9L453 453z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function InstagramIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 640 640\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"24\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect x=\"96\" y=\"96\" width=\"448\" height=\"448\" rx=\"64\"/>\n <path fill=\"currentColor\" stroke=\"none\"\n d=\"M290.4 275.7C274 286 264.5 304.5 265.5 323.8C266.6 343.2 278.2 360.4 295.6 368.9C313.1 377.3 333.8 375.5 349.6 364.3C366 354 375.5 335.5 374.5 316.2C373.4 296.8 361.8 279.6 344.4 271.1C326.9 262.7 306.2 264.5 290.4 275.7zM432.7 207.3C427.5 202.1 421.2 198 414.3 195.3C396.2 188.2 356.7 188.5 331.2 188.8C327.1 188.8 323.3 188.9 320 188.9C316.7 188.9 312.8 188.9 308.6 188.8C283.1 188.5 243.8 188.1 225.7 195.3C218.8 198 212.6 202.1 207.3 207.3C202 212.5 198 218.8 195.3 225.7C188.2 243.8 188.6 283.4 188.8 308.9C188.8 313 188.9 316.8 188.9 320C188.9 323.2 188.9 327 188.8 331.1C188.6 356.6 188.2 396.2 195.3 414.3C198 421.2 202.1 427.4 207.3 432.7C212.5 438 218.8 442 225.7 444.7C243.8 451.8 283.3 451.5 308.8 451.2C312.9 451.2 316.7 451.1 320 451.1C323.3 451.1 327.2 451.1 331.4 451.2C356.9 451.5 396.2 451.9 414.3 444.7C421.2 442 427.4 437.9 432.7 432.7C438 427.5 442 421.2 444.7 414.3C451.9 396.3 451.5 356.9 451.2 331.3C451.2 327.1 451.1 323.2 451.1 319.9C451.1 316.6 451.1 312.8 451.2 308.5C451.5 283 451.9 243.6 444.7 225.5C442 218.6 437.9 212.4 432.7 207.1L432.7 207.3zM365.6 251.8C383.7 263.9 396.2 282.7 400.5 304C404.8 325.3 400.3 347.5 388.2 365.6C382.2 374.6 374.5 382.2 365.6 388.2C356.7 394.2 346.6 398.3 336 400.4C314.7 404.6 292.5 400.2 274.4 388.1C256.3 376 243.8 357.2 239.5 335.9C235.2 314.6 239.7 292.4 251.7 274.3C263.7 256.2 282.6 243.7 303.9 239.4C325.2 235.1 347.4 239.6 365.5 251.6L365.6 251.6zM394.8 250.5C391.7 248.4 389.2 245.4 387.7 241.9C386.2 238.4 385.9 234.6 386.6 230.8C387.3 227 389.2 223.7 391.8 221C394.4 218.3 397.9 216.5 401.6 215.8C405.3 215.1 409.2 215.4 412.7 216.9C416.2 218.4 419.2 220.8 421.3 223.9C423.4 227 424.5 230.7 424.5 234.5C424.5 237 424 239.5 423.1 241.8C422.2 244.1 420.7 246.2 419 248C417.3 249.8 415.1 251.2 412.8 252.2C410.5 253.2 408 253.7 405.5 253.7C401.7 253.7 398 252.6 394.9 250.5zM453 453C434.3 471.7 411.6 477.6 386 478.9C359.6 480.4 280.4 480.4 254 478.9C228.4 477.6 205.7 471.7 187 453C168.3 434.3 162.4 411.6 161.2 386C159.7 359.6 159.7 280.4 161.2 254C162.5 228.4 168.3 205.7 187 187C205.7 168.3 228.5 162.4 254 161.2C280.4 159.7 359.6 159.7 386 161.2C411.6 162.5 434.3 168.3 453 187C471.7 205.7 477.6 228.4 478.8 254C480.3 280.3 480.3 359.4 478.8 385.9C477.5 411.5 471.7 434.2 453 452.9z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function JoystickIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M21 17a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-2Z\"/>\n <path d=\"M6 15v-2\"/>\n <path d=\"M12 15V9\"/>\n <circle cx=\"12\" cy=\"6\" r=\"3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function KeyboardIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10 8h.01\"/>\n <path d=\"M12 12h.01\"/>\n <path d=\"M14 8h.01\"/>\n <path d=\"M16 12h.01\"/>\n <path d=\"M18 8h.01\"/>\n <path d=\"M6 8h.01\"/>\n <path d=\"M7 16h10\"/>\n <path d=\"M8 12h.01\"/>\n <rect width=\"20\" height=\"16\" x=\"2\" y=\"4\" rx=\"2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function KeyIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4\"/>\n <path d=\"m21 2-9.6 9.6\"/>\n <circle cx=\"7.5\" cy=\"15.5\" r=\"5.5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function LaptopIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M18 5a2 2 0 0 1 2 2v8.526a2 2 0 0 0 .212.897l1.068 2.127a1 1 0 0 1-.9 1.45H3.62a1 1 0 0 1-.9-1.45l1.068-2.127A2 2 0 0 0 4 15.526V7a2 2 0 0 1 2-2z\"/>\n <path d=\"M20.054 15.987H3.946\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function LaughIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <path d=\"M18 13a6 6 0 0 1-6 5 6 6 0 0 1-6-5h12Z\"/>\n <line x1=\"9\" x2=\"9.01\" y1=\"9\" y2=\"9\"/>\n <line x1=\"15\" x2=\"15.01\" y1=\"9\" y2=\"9\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function LayersIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z\"/>\n <path d=\"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12\"/>\n <path d=\"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function LayersPlusIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 .83.18 2 2 0 0 0 .83-.18l8.58-3.9a1 1 0 0 0 0-1.831z\"/>\n <path d=\"M16 17h6\"/>\n <path d=\"M19 14v6\"/>\n <path d=\"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 .825.178\"/>\n <path d=\"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l2.116-.962\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function LayoutGridIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"7\" height=\"7\" x=\"3\" y=\"3\" rx=\"1\"/>\n <rect width=\"7\" height=\"7\" x=\"14\" y=\"3\" rx=\"1\"/>\n <rect width=\"7\" height=\"7\" x=\"14\" y=\"14\" rx=\"1\"/>\n <rect width=\"7\" height=\"7\" x=\"3\" y=\"14\" rx=\"1\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function LayoutKanbanIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"/>\n <path d=\"M8 7v7\"/>\n <path d=\"M12 7v4\"/>\n <path d=\"M16 7v9\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function LayoutListIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"7\" height=\"7\" x=\"3\" y=\"3\" rx=\"1\"/>\n <rect width=\"7\" height=\"7\" x=\"3\" y=\"14\" rx=\"1\"/>\n <path d=\"M14 4h7\"/>\n <path d=\"M14 9h7\"/>\n <path d=\"M14 15h7\"/>\n <path d=\"M14 20h7\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function LeafIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z\"/>\n <path d=\"M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function LightbulbIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5\"/>\n <path d=\"M9 18h6\"/>\n <path d=\"M10 22h4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function LightbulbOffIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M16.8 11.2c.8-.9 1.2-2 1.2-3.2a6 6 0 0 0-9.3-5\"/>\n <path d=\"m2 2 20 20\"/>\n <path d=\"M6.3 6.3a4.67 4.67 0 0 0 1.2 5.2c.7.7 1.3 1.5 1.5 2.5\"/>\n <path d=\"M9 18h6\"/>\n <path d=\"M10 22h4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function LikeIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z\"/>\n <path d=\"M7 10v12\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function LineIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M3 12h18\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function LinkedinFilledIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 640 640\"\n fill=\"currentColor\"\n stroke=\"none\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M160 96C124.7 96 96 124.7 96 160L96 480C96 515.3 124.7 544 160 544L480 544C515.3 544 544 515.3 544 480L544 160C544 124.7 515.3 96 480 96L160 96zM165 266.2L231.5 266.2L231.5 480L165 480L165 266.2zM236.7 198.5C236.7 219.8 219.5 237 198.2 237C176.9 237 159.7 219.8 159.7 198.5C159.7 177.2 176.9 160 198.2 160C219.5 160 236.7 177.2 236.7 198.5zM413.9 480L413.9 376C413.9 351.2 413.4 319.3 379.4 319.3C344.8 319.3 339.5 346.3 339.5 374.2L339.5 480L273.1 480L273.1 266.2L336.8 266.2L336.8 295.4L337.7 295.4C346.6 278.6 368.3 260.9 400.6 260.9C467.8 260.9 480.3 305.2 480.3 362.8L480.3 480L413.9 480z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function LinkedinIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 640 640\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"24\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect x=\"96\" y=\"96\" width=\"448\" height=\"448\" rx=\"64\"/>\n <path fill=\"currentColor\" stroke=\"none\"\n d=\"M165 266.2L231.5 266.2L231.5 480L165 480L165 266.2z\n M236.7 198.5C236.7 219.8 219.5 237 198.2 237C176.9 237 159.7 219.8 159.7 198.5C159.7 177.2 176.9 160 198.2 160C219.5 160 236.7 177.2 236.7 198.5z\n M413.9 480L413.9 376C413.9 351.2 413.4 319.3 379.4 319.3C344.8 319.3 339.5 346.3 339.5 374.2L339.5 480L273.1 480L273.1 266.2L336.8 266.2L336.8 295.4L337.7 295.4C346.6 278.6 368.3 260.9 400.6 260.9C467.8 260.9 480.3 305.2 480.3 362.8L480.3 480L413.9 480z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function LinkIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"/>\n <path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function LiraIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <path d=\"M11 7v10a5 5 0 0 0 5-5\"/>\n <path d=\"m15 8-6 3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function LiraSymbolIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M15 4 5 9\"/>\n <path d=\"m15 8.5-10 5\"/>\n <path d=\"M18 12a9 9 0 0 1-9 9V3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ListIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M8 6h13\"/>\n <path d=\"M8 12h13\"/>\n <path d=\"M8 18h13\"/>\n <circle cx=\"3\" cy=\"6\" r=\"1\"/>\n <circle cx=\"3\" cy=\"12\" r=\"1\"/>\n <circle cx=\"3\" cy=\"18\" r=\"1\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function LoaderIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 2v4\"/>\n <path d=\"m16.2 7.8 2.9-2.9\"/>\n <path d=\"M18 12h4\"/>\n <path d=\"m16.2 16.2 2.9 2.9\"/>\n <path d=\"M12 18v4\"/>\n <path d=\"m4.9 19.1 2.9-2.9\"/>\n <path d=\"M2 12h4\"/>\n <path d=\"m4.9 4.9 2.9 2.9\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function LoaderSpinnerIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M21 12a9 9 0 1 1-6.2-8.6\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function LockIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"18\" height=\"11\" x=\"3\" y=\"11\" rx=\"2\" ry=\"2\"/>\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function MagicIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72\"/>\n <path d=\"m14 7 3 3\"/>\n <path d=\"M5 6v4\"/>\n <path d=\"M19 14v4\"/>\n <path d=\"M10 2v2\"/>\n <path d=\"M7 8H3\"/>\n <path d=\"M21 16h-4\"/>\n <path d=\"M11 3H9\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function MailIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7\"/>\n <rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function MaleGenderIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M16 3h5v5\"/>\n <path d=\"m21 3-6.75 6.75\"/>\n <circle cx=\"10\" cy=\"14\" r=\"6\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function MapPinIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0\"/>\n <circle cx=\"12\" cy=\"10\" r=\"3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function MaximizeIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M8 3H5a2 2 0 0 0-2 2v3\"/>\n <path d=\"M21 8V5a2 2 0 0 0-2-2h-3\"/>\n <path d=\"M3 16v3a2 2 0 0 0 2 2h3\"/>\n <path d=\"M16 21h3a2 2 0 0 0 2-2v-3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function MedalIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M7.21 15 2.66 7.14a2 2 0 0 1 .13-2.2L4.4 2.8A2 2 0 0 1 6 2h12a2 2 0 0 1 1.6.8l1.6 2.14a2 2 0 0 1 .14 2.2L16.79 15\"/>\n <path d=\"M11 12 5.12 2.2\"/>\n <path d=\"m13 12 5.88-9.8\"/>\n <path d=\"M8 7h8\"/>\n <circle cx=\"12\" cy=\"17\" r=\"5\"/>\n <path d=\"M12 18v-2h-.5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function MedicineIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m10.5 20.5 10-10a4.95 4.95 0 1 0-7-7l-10 10a4.95 4.95 0 1 0 7 7Z\"/><path d=\"m8.5 8.5 7 7\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function MehIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <line x1=\"8\" x2=\"16\" y1=\"15\" y2=\"15\"/>\n <line x1=\"9\" x2=\"9.01\" y1=\"9\" y2=\"9\"/>\n <line x1=\"15\" x2=\"15.01\" y1=\"9\" y2=\"9\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function MenuIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M3 6h18\"/>\n <path d=\"M3 12h18\"/>\n <path d=\"M3 18h18\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function MergeIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m8 6 4-4 4 4\"/>\n <path d=\"M12 2v10.3a4 4 0 0 1-1.172 2.872L4 22\"/>\n <path d=\"m20 22-5-5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function MessageCircleIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function MessageSquareIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function MicIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 19v3\"/>\n <path d=\"M19 10v2a7 7 0 0 1-14 0v-2\"/>\n <rect x=\"9\" y=\"2\" width=\"6\" height=\"13\" rx=\"3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function MicOffIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 19v3\"/>\n <path d=\"M15 9.34V5a3 3 0 0 0-5.68-1.33\"/>\n <path d=\"M16.95 16.95A7 7 0 0 1 5 12v-2\"/>\n <path d=\"M18.89 13.23A7 7 0 0 0 19 12v-2\"/>\n <path d=\"m2 2 20 20\"/>\n <path d=\"M9 9v3a3 3 0 0 0 5.12 2.12\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function MinimizeIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M8 3v3a2 2 0 0 1-2 2H3\"/>\n <path d=\"M21 8h-3a2 2 0 0 1-2-2V3\"/>\n <path d=\"M3 16h3a2 2 0 0 1 2 2v3\"/>\n <path d=\"M16 21v-3a2 2 0 0 1 2-2h3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function MinusIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M5 12h14\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function MonitorIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"20\" height=\"14\" x=\"2\" y=\"3\" rx=\"2\"/>\n <line x1=\"8\" x2=\"16\" y1=\"21\" y2=\"21\"/>\n <line x1=\"12\" x2=\"12\" y1=\"17\" y2=\"21\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function MoonIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function MoreHorizontalIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"1\"/>\n <circle cx=\"19\" cy=\"12\" r=\"1\"/>\n <circle cx=\"5\" cy=\"12\" r=\"1\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function MoreVerticalIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"1\"/>\n <circle cx=\"12\" cy=\"5\" r=\"1\"/>\n <circle cx=\"12\" cy=\"19\" r=\"1\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function MountainIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m8 3 4 8 5-5 5 15H2L8 3z\"/>\n <path d=\"M4.14 15.08c2.62-1.57 5.24-1.43 7.86.42 2.74 1.94 5.49 2 8.23.19\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function MouseIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect x=\"5\" y=\"2\" width=\"14\" height=\"20\" rx=\"7\"/>\n <path d=\"M12 6v4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function MoveIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 2v20\"/>\n <path d=\"m15 19-3 3-3-3\"/>\n <path d=\"m19 9 3 3-3 3\"/>\n <path d=\"M2 12h20\"/>\n <path d=\"m5 9-3 3 3 3\"/>\n <path d=\"m9 5 3-3 3 3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function MusicIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M9 18V5l12-2v13\"/>\n <circle cx=\"6\" cy=\"18\" r=\"3\"/>\n <circle cx=\"18\" cy=\"16\" r=\"3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function OctagonIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function OutboxIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <polyline points=\"22 12 16 12 14 15 10 15 8 12 2 12\"/>\n <path d=\"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\"/>\n <path d=\"M12 3v7\"/>\n <path d=\"m9 6 3-3 3 3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function OutdentIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M21 5H11\"/>\n <path d=\"M21 12H11\"/>\n <path d=\"M21 19H11\"/>\n <path d=\"m7 8-4 4 4 4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PackageIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z\"/>\n <path d=\"M12 22V12\"/>\n <polyline points=\"3.29 7 12 12 20.71 7\"/>\n <path d=\"m7.5 4.27 9 5.15\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PackageOpenIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 22v-9\"/>\n <path d=\"M15.17 2.21a1.67 1.67 0 0 1 1.63 0L21 4.57a1.93 1.93 0 0 1 0 3.36L8.82 14.79a1.655 1.655 0 0 1-1.64 0L3 12.43a1.93 1.93 0 0 1 0-3.36z\"/>\n <path d=\"M20 13v3.87a2.06 2.06 0 0 1-1.11 1.83l-6 3.08a1.93 1.93 0 0 1-1.78 0l-6-3.08A2.06 2.06 0 0 1 4 16.87V13\"/>\n <path d=\"M21 12.43a1.93 1.93 0 0 0 0-3.36L8.83 2.2a1.64 1.64 0 0 0-1.63 0L3 4.57a1.93 1.93 0 0 0 0 3.36l12.18 6.86a1.636 1.636 0 0 0 1.63 0z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PaintbrushIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m14.622 17.897-10.68-2.913\"/>\n <path d=\"M18.376 2.622a1 1 0 1 1 3.002 3.002L17.36 9.643a.5.5 0 0 0 0 .707l.944.944a2.41 2.41 0 0 1 0 3.408l-.944.944a.5.5 0 0 1-.707 0L8.354 7.348a.5.5 0 0 1 0-.707l.944-.944a2.41 2.41 0 0 1 3.408 0l.944.944a.5.5 0 0 0 .707 0z\"/>\n <path d=\"M9 8c-1.804 2.71-3.97 3.46-6.583 3.948a.507.507 0 0 0-.302.819l7.32 8.883a1 1 0 0 0 1.185.204C12.735 20.405 16 16.792 16 15\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PaletteIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z\"/>\n <circle cx=\"13.5\" cy=\"6.5\" r=\".5\"/>\n <circle cx=\"17.5\" cy=\"10.5\" r=\".5\"/>\n <circle cx=\"6.5\" cy=\"12.5\" r=\".5\"/>\n <circle cx=\"8.5\" cy=\"7.5\" r=\".5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PanelBottomIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"/>\n <path d=\"M3 15h18\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PanelLeftIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"/>\n <path d=\"M9 3v18\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PanelRightIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"/>\n <path d=\"M15 3v18\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PanelTopIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"/>\n <path d=\"M3 9h18\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PaperclipIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PassportIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"14\" cy=\"12.5\" r=\"2\"/>\n <path d=\"M10.5 18.5a3.5 3.5 0 0 1 7 0\"/>\n <path d=\"m3.173 8.18 11-5a2 2 0 0 1 2.647.993L18.56 8\"/>\n <path d=\"M6 10V8\"/>\n <path d=\"M6 14v1\"/>\n <path d=\"M6 19v2\"/>\n <rect x=\"2\" y=\"8\" width=\"20\" height=\"13\" rx=\"2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PauseIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect x=\"14\" y=\"3\" width=\"5\" height=\"18\" rx=\"1\"/>\n <rect x=\"5\" y=\"3\" width=\"5\" height=\"18\" rx=\"1\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PawIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"11\" cy=\"4\" r=\"2\"/>\n <circle cx=\"18\" cy=\"8\" r=\"2\"/>\n <circle cx=\"20\" cy=\"16\" r=\"2\"/>\n <path d=\"M9 10a5 5 0 0 1 5 5v3.5a3.5 3.5 0 0 1-6.84 1.045Q6.52 17.48 4.46 16.84A3.5 3.5 0 0 1 5.5 10Z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PencilIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z\"/>\n <path d=\"m16 5 2 2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PentagonIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 2 22 9.27l-3.82 11.76H5.82L2 9.27z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PhoneCallIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M13 2a9 9 0 0 1 9 9\"/>\n <path d=\"M13 6a5 5 0 0 1 5 5\"/>\n <path d=\"M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PhoneIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PhoneMissedIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m16 2 6 6\"/>\n <path d=\"m22 2-6 6\"/>\n <path d=\"M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PhoneOffIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10.1 13.9a14 14 0 0 0 3.732 2.668 1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2 18 18 0 0 1-12.728-5.272\"/>\n <path d=\"M22 2 2 22\"/>\n <path d=\"M4.76 13.582A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 .244.473\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PictureInPictureIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M21 9V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v10c0 1.1.9 2 2 2h4\"/>\n <rect width=\"10\" height=\"7\" x=\"12\" y=\"13\" rx=\"2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PiggyBankIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M11 17h3v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-3a3.16 3.16 0 0 0 2-2h1a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1h-1a5 5 0 0 0-2-4V3a4 4 0 0 0-3.2 1.6l-.3.4H11a6 6 0 0 0-6 6v1a5 5 0 0 0 2 4v3a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1z\"/>\n <path d=\"M16 10h.01\"/>\n <path d=\"M2 8v1a2 2 0 0 0 2 2h1\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PinIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 17v5\"/>\n <path d=\"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PlayIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PlaylistIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M21 5H3\"/>\n <path d=\"M10 12H3\"/>\n <path d=\"M10 19H3\"/>\n <path d=\"M15 12.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997a1 1 0 0 1-1.517-.86z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PlusIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 5v14\"/>\n <path d=\"M5 12h14\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PoundIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <path d=\"M8 12h4\"/>\n <path d=\"M10 16V9.5a2.5 2.5 0 0 1 5 0\"/>\n <path d=\"M8 16h7\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PoundSymbolIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M18 7c0-5.333-8-5.333-8 0\"/>\n <path d=\"M10 7v14\"/>\n <path d=\"M6 21h12\"/>\n <path d=\"M6 13h10\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PowerIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 2v10\"/>\n <path d=\"M18.4 6.6a9 9 0 1 1-12.77.04\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PowerOffIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M18.36 6.64A9 9 0 0 1 20.77 15\"/>\n <path d=\"M6.16 6.16a9 9 0 1 0 12.68 12.68\"/>\n <path d=\"M12 2v4\"/>\n <path d=\"m2 2 20 20\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PrinterIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2\"/>\n <path d=\"M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6\"/>\n <rect x=\"6\" y=\"14\" width=\"12\" height=\"8\" rx=\"1\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function PrintIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2\"/>\n <path d=\"M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6\"/>\n <rect x=\"6\" y=\"14\" width=\"12\" height=\"8\" rx=\"1\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ProjectorIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M5 7 3 5\"/>\n <path d=\"M9 6V3\"/>\n <path d=\"m13 7 2-2\"/>\n <circle cx=\"9\" cy=\"13\" r=\"3\"/>\n <path d=\"M11.83 12H20a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2h2.17\"/>\n <path d=\"M16 16h2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function QrIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"5\" height=\"5\" x=\"3\" y=\"3\" rx=\"1\"/>\n <rect width=\"5\" height=\"5\" x=\"16\" y=\"3\" rx=\"1\"/>\n <rect width=\"5\" height=\"5\" x=\"3\" y=\"16\" rx=\"1\"/>\n <path d=\"M21 16h-3a2 2 0 0 0-2 2v3\"/>\n <path d=\"M21 21v.01\"/>\n <path d=\"M12 7v3a2 2 0 0 1-2 2H7\"/>\n <path d=\"M3 12h.01\"/>\n <path d=\"M12 3h.01\"/>\n <path d=\"M12 16v.01\"/>\n <path d=\"M16 12h1\"/>\n <path d=\"M21 12v.01\"/>\n <path d=\"M12 21v-1\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function RadioIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M16.247 7.761a6 6 0 0 1 0 8.478\"/>\n <path d=\"M19.075 4.933a10 10 0 0 1 0 14.134\"/>\n <path d=\"M4.925 19.067a10 10 0 0 1 0-14.134\"/>\n <path d=\"M7.753 16.239a6 6 0 0 1 0-8.478\"/>\n <circle cx=\"12\" cy=\"12\" r=\"2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function RadioOffIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M13.414 13.414a2 2 0 1 1-2.828-2.828\"/>\n <path d=\"M16.247 7.761a6 6 0 0 1 1.744 4.572\"/>\n <path d=\"M19.075 4.933a10 10 0 0 1 2.234 10.72\"/>\n <path d=\"m2 2 20 20\"/>\n <path d=\"M4.925 19.067a10 10 0 0 1 0-14.134\"/>\n <path d=\"M7.753 16.239a6 6 0 0 1 0-8.478\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function RadioTowerIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M4.9 16.1C1 12.2 1 5.8 4.9 1.9\"/>\n <path d=\"M7.8 4.7a6.14 6.14 0 0 0-.8 7.5\"/>\n <circle cx=\"12\" cy=\"9\" r=\"2\"/>\n <path d=\"M16.2 4.8c2 2 2.26 5.11.8 7.47\"/>\n <path d=\"M19.1 1.9a9.96 9.96 0 0 1 0 14.1\"/>\n <path d=\"M9.5 18h5\"/>\n <path d=\"m8 22 4-11 4 11\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function RainbowIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M22 17a10 10 0 0 0-20 0\"/>\n <path d=\"M6 17a6 6 0 0 1 12 0\"/>\n <path d=\"M10 17a2 2 0 0 1 4 0\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function RectangleIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"20\" height=\"14\" x=\"2\" y=\"5\" rx=\"2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function RecycleIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M7 19H4.815a1.83 1.83 0 0 1-1.57-.881 1.785 1.785 0 0 1-.004-1.784L7.196 9.5\"/>\n <path d=\"M11 19h8.203a1.83 1.83 0 0 0 1.556-.89 1.784 1.784 0 0 0 0-1.775l-1.226-2.12\"/>\n <path d=\"m14 16-3 3 3 3\"/>\n <path d=\"M8.293 13.596 7.196 9.5 3.1 10.598\"/>\n <path d=\"m9.344 5.811 1.093-1.892A1.83 1.83 0 0 1 11.985 3a1.784 1.784 0 0 1 1.546.888l3.943 6.843\"/>\n <path d=\"m13.378 9.633 4.096 1.098 1.097-4.096\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function RedditFilledIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 640 640\"\n fill=\"currentColor\"\n stroke=\"none\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M160 96L480 96C515.3 96 544 124.7 544 160L544 480C544 515.3 515.3 544 480 544L160 544C124.7 544 96 515.3 96 480L96 160C96 124.7 124.7 96 160 96zM401.9 230.4C422.5 230.4 439.2 213.7 439.2 193.1C439.2 172.5 422.5 155.8 401.9 155.8C383.9 155.8 368.8 168.6 365.3 185.6C335.1 188.8 311.5 214.4 311.5 245.5L311.5 245.7C278.7 247.1 248.7 256.4 224.9 271.2C216.1 264.4 205 260.3 192.9 260.3C164 260.3 140.6 283.7 140.6 312.6C140.6 333.6 152.9 351.6 170.7 360C172.4 420.7 238.6 469.6 320 469.6C401.4 469.6 467.6 420.7 469.3 359.9C487 351.5 499.2 333.5 499.2 312.6C499.2 283.7 475.8 260.3 446.9 260.3C434.9 260.3 423.9 264.3 415 271.1C391 256.2 360.7 246.9 327.5 245.7L327.5 245.6C327.5 223.4 344 204.9 365.4 201.9C369.3 218.4 384.1 230.6 401.7 230.6L401.9 230.4zM251 312.1C265.6 312.1 276.8 327.5 276 346.5C275.2 365.5 264.2 372.4 249.5 372.4C234.8 372.4 222 364.7 222.9 345.7C223.8 326.7 236.4 312.2 251 312.2L251 312.1zM417.4 345.6C418.3 364.6 405.4 372.3 390.8 372.3C376.2 372.3 365.2 365.4 364.3 346.4C363.4 327.4 374.6 312 389.3 312C404 312 416.6 326.6 417.4 345.5L417.4 345.6zM375.3 395.2C366.3 416.7 345 431.9 320.2 431.9C295.4 431.9 274.1 416.8 265.1 395.2C264 392.6 265.8 389.8 268.5 389.5C284.6 387.9 302 387 320.2 387C338.4 387 355.8 387.9 371.9 389.5C374.6 389.8 376.4 392.6 375.3 395.2z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function RedditIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 640 640\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"24\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect x=\"96\" y=\"96\" width=\"448\" height=\"448\" rx=\"64\"/>\n <path fill=\"currentColor\" stroke=\"none\"\n d=\"M401.9 230.4C422.5 230.4 439.2 213.7 439.2 193.1C439.2 172.5 422.5 155.8 401.9 155.8C383.9 155.8 368.8 168.6 365.3 185.6C335.1 188.8 311.5 214.4 311.5 245.5L311.5 245.7C278.7 247.1 248.7 256.4 224.9 271.2C216.1 264.4 205 260.3 192.9 260.3C164 260.3 140.6 283.7 140.6 312.6C140.6 333.6 152.9 351.6 170.7 360C172.4 420.7 238.6 469.6 320 469.6C401.4 469.6 467.6 420.7 469.3 359.9C487 351.5 499.2 333.5 499.2 312.6C499.2 283.7 475.8 260.3 446.9 260.3C434.9 260.3 423.9 264.3 415 271.1C391 256.2 360.7 246.9 327.5 245.7L327.5 245.6C327.5 223.4 344 204.9 365.4 201.9C369.3 218.4 384.1 230.6 401.7 230.6L401.9 230.4z\n M251 312.1C265.6 312.1 276.8 327.5 276 346.5C275.2 365.5 264.2 372.4 249.5 372.4C234.8 372.4 222 364.7 222.9 345.7C223.8 326.7 236.4 312.2 251 312.2L251 312.1z\n M417.4 345.6C418.3 364.6 405.4 372.3 390.8 372.3C376.2 372.3 365.2 365.4 364.3 346.4C363.4 327.4 374.6 312 389.3 312C404 312 416.6 326.6 417.4 345.5L417.4 345.6z\n M375.3 395.2C366.3 416.7 345 431.9 320.2 431.9C295.4 431.9 274.1 416.8 265.1 395.2C264 392.6 265.8 389.8 268.5 389.5C284.6 387.9 302 387 320.2 387C338.4 387 355.8 387.9 371.9 389.5C374.6 389.8 376.4 392.6 375.3 395.2z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function RedoIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M21 7v6h-6\"/>\n <path d=\"M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function RefreshIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\"/>\n <path d=\"M3 3v5h5\"/>\n <path d=\"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16\"/>\n <path d=\"M16 16h5v5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function RepeatIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m17 2 4 4-4 4\"/>\n <path d=\"M3 11v-1a4 4 0 0 1 4-4h14\"/>\n <path d=\"m7 22-4-4 4-4\"/>\n <path d=\"M21 13v1a4 4 0 0 1-4 4H3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function RepeatOnceIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m17 2 4 4-4 4\"/>\n <path d=\"M3 11v-1a4 4 0 0 1 4-4h14\"/>\n <path d=\"m7 22-4-4 4-4\"/>\n <path d=\"M21 13v1a4 4 0 0 1-4 4H3\"/>\n <path d=\"M11 10h1v4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ReplyAllIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m12 17-5-5 5-5\"/>\n <path d=\"M22 18v-2a4 4 0 0 0-4-4H7\"/>\n <path d=\"m7 17-5-5 5-5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ReplyIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M20 18v-2a4 4 0 0 0-4-4H4\"/>\n <path d=\"m9 17-5-5 5-5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ResizeIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M8 3H5a2 2 0 0 0-2 2v3\"/>\n <path d=\"M21 8V5a2 2 0 0 0-2-2h-3\"/>\n <path d=\"M3 16v3a2 2 0 0 0 2 2h3\"/>\n <path d=\"M16 21h3a2 2 0 0 0 2-2v-3\"/>\n <path d=\"m15 9 6-6\"/>\n <path d=\"M15 3h6v6\"/>\n <path d=\"m9 15-6 6\"/>\n <path d=\"M3 15v6h6\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function RibbonIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 11.22C11 9.997 10 9 10 8a2 2 0 0 1 4 0c0 1-.998 2.002-2.01 3.22\"/>\n <path d=\"m12 18 2.57-3.5\"/>\n <path d=\"M6.243 9.016a7 7 0 0 1 11.507-.009\"/>\n <path d=\"M9.35 14.53 12 11.22\"/>\n <path d=\"M9.35 14.53C7.728 12.246 6 10.221 6 7a6 5 0 0 1 12 0c-.005 3.22-1.778 5.235-3.43 7.5l3.557 4.527a1 1 0 0 1-.203 1.43l-1.894 1.36a1 1 0 0 1-1.384-.215L12 18l-2.679 3.593a1 1 0 0 1-1.39.213l-1.865-1.353a1 1 0 0 1-.203-1.422z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function RocketIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5\"/>\n <path d=\"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09\"/>\n <path d=\"M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z\"/>\n <path d=\"M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function RotateCcwIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\"/>\n <path d=\"M3 3v5h5\"/>\n <path d=\"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16\"/>\n <path d=\"M16 16h5v5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function RotateCwIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\"/>\n <path d=\"M21 3v5h-5\"/>\n <path d=\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\"/>\n <path d=\"M8 16H3v5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function RouterIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"20\" height=\"8\" x=\"2\" y=\"14\" rx=\"2\"/>\n <path d=\"M6.01 18H6\"/>\n <path d=\"M10.01 18H10\"/>\n <path d=\"M15 10v4\"/>\n <path d=\"M17.84 7.17a4 4 0 0 0-5.66 0\"/>\n <path d=\"M20.66 4.34a8 8 0 0 0-11.31 0\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function RowIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"/>\n <path d=\"M21 9H3\"/>\n <path d=\"M21 15H3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function RubleIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <path d=\"M9 16h5\"/>\n <path d=\"M9 12h5a2 2 0 1 0 0-4h-3v9\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function RubleSymbolIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 11h8a4 4 0 0 0 0-8H9v18\"/>\n <path d=\"M6 15h8\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function RupeeIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <path d=\"M8 8h8\"/>\n <path d=\"M8 12h8\"/>\n <path d=\"m13 17-5-1h1a4 4 0 0 0 0-8\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function RupeeSymbolIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 3h12\"/>\n <path d=\"M6 8h12\"/>\n <path d=\"m6 13 8.5 8\"/>\n <path d=\"M6 13h3\"/>\n <path d=\"M9 13c6.667 0 6.667-10 0-10\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function SatelliteIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m13.5 6.5-3.148-3.148a1.205 1.205 0 0 0-1.704 0L6.352 5.648a1.205 1.205 0 0 0 0 1.704L9.5 10.5\"/>\n <path d=\"M16.5 7.5 19 5\"/>\n <path d=\"m17.5 10.5 3.148 3.148a1.205 1.205 0 0 1 0 1.704l-2.296 2.296a1.205 1.205 0 0 1-1.704 0L13.5 14.5\"/>\n <path d=\"M9 21a6 6 0 0 0-6-6\"/>\n <path d=\"M9.352 10.648a1.205 1.205 0 0 0 0 1.704l2.296 2.296a1.205 1.205 0 0 0 1.704 0l4.296-4.296a1.205 1.205 0 0 0 0-1.704l-2.296-2.296a1.205 1.205 0 0 0-1.704 0z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function SaveIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z\"/>\n <path d=\"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7\"/>\n <path d=\"M7 3v4a1 1 0 0 0 1 1h7\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ScanEyeIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M3 7V5a2 2 0 0 1 2-2h2\"/>\n <path d=\"M17 3h2a2 2 0 0 1 2 2v2\"/>\n <path d=\"M21 17v2a2 2 0 0 1-2 2h-2\"/>\n <path d=\"M7 21H5a2 2 0 0 1-2-2v-2\"/>\n <circle cx=\"12\" cy=\"12\" r=\"1\"/>\n <path d=\"M18.944 12.33a1 1 0 0 0 0-.66 7.5 7.5 0 0 0-13.888 0 1 1 0 0 0 0 .66 7.5 7.5 0 0 0 13.888 0\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ScanIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"3\"/>\n <path d=\"M3 7V5a2 2 0 0 1 2-2h2\"/>\n <path d=\"M17 3h2a2 2 0 0 1 2 2v2\"/>\n <path d=\"M21 17v2a2 2 0 0 1-2 2h-2\"/>\n <path d=\"M7 21H5a2 2 0 0 1-2-2v-2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function SchoolIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M14 21v-3a2 2 0 0 0-4 0v3\"/>\n <path d=\"M18 4.933V21\"/>\n <path d=\"m4 6 7.106-3.79a2 2 0 0 1 1.788 0L20 6\"/>\n <path d=\"m6 11-3.52 2.147a1 1 0 0 0-.48.854V19a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5a1 1 0 0 0-.48-.853L18 11\"/>\n <path d=\"M6 4.933V21\"/>\n <circle cx=\"12\" cy=\"9\" r=\"2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ScreenShareIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M13 3H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-3\"/>\n <path d=\"M8 21h8\"/>\n <path d=\"M12 17v4\"/>\n <path d=\"m17 8 5-5\"/>\n <path d=\"M17 3h5v5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ScreenShareOffIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M13 3H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-3\"/>\n <path d=\"M8 21h8\"/>\n <path d=\"M12 17v4\"/>\n <path d=\"m22 3-5 5\"/>\n <path d=\"m17 3 5 5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function SearchIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m21 21-4.34-4.34\"/>\n <circle cx=\"11\" cy=\"11\" r=\"8\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function SendAngledIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z\"/>\n <path d=\"m21.854 2.147-10.94 10.939\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function SendDiagonalIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M3.714 3.048a.498.498 0 0 0-.683.627l2.843 7.627a2 2 0 0 1 0 1.396l-2.842 7.627a.498.498 0 0 0 .682.627l18-8.5a.5.5 0 0 0 0-.904z\"/>\n <path d=\"M6 12h16\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ServerIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"20\" height=\"8\" x=\"2\" y=\"2\" rx=\"2\" ry=\"2\"/>\n <rect width=\"20\" height=\"8\" x=\"2\" y=\"14\" rx=\"2\" ry=\"2\"/>\n <line x1=\"6\" x2=\"6.01\" y1=\"6\" y2=\"6\"/>\n <line x1=\"6\" x2=\"6.01\" y1=\"18\" y2=\"18\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function SettingsIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915\"/>\n <circle cx=\"12\" cy=\"12\" r=\"3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ShareIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"18\" cy=\"5\" r=\"3\"/>\n <circle cx=\"6\" cy=\"12\" r=\"3\"/>\n <circle cx=\"18\" cy=\"19\" r=\"3\"/>\n <line x1=\"8.59\" x2=\"15.42\" y1=\"13.51\" y2=\"17.49\"/>\n <line x1=\"15.41\" x2=\"8.59\" y1=\"6.51\" y2=\"10.49\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ShieldCheckIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\"/>\n <path d=\"m9 12 2 2 4-4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ShieldOffIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\"/>\n <path d=\"m14.5 9.5-5 5\"/>\n <path d=\"m9.5 9.5 5 5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ShieldUserIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\"/>\n <path d=\"M6.376 18.91a6 6 0 0 1 11.249.003\"/>\n <circle cx=\"12\" cy=\"11\" r=\"4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ShoppingBagIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M16 10a4 4 0 0 1-8 0\"/>\n <path d=\"M3.103 6.034h17.794\"/>\n <path d=\"M3.4 5.467a2 2 0 0 0-.4 1.2V20a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6.667a2 2 0 0 0-.4-1.2l-2-2.667A2 2 0 0 0 17 2H7a2 2 0 0 0-1.6.8z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ShoppingCartIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"8\" cy=\"21\" r=\"1\"/>\n <circle cx=\"19\" cy=\"21\" r=\"1\"/>\n <path d=\"M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ShrinkIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m15 15 6 6m-6-6v4.8m0-4.8h4.8\"/>\n <path d=\"M9 19.8V15m0 0H4.2M9 15l-6 6\"/>\n <path d=\"M15 4.2V9m0 0h4.8M15 9l6-6\"/>\n <path d=\"M9 4.2V9m0 0H4.2M9 9 3 3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function SidebarLeftIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"/>\n <path d=\"M9 3v18\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function SidebarRightIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"/>\n <path d=\"M15 3v18\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function SignatureIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M3 20c2.5-4 4-8 6-8s1 6 3 6 3-8 5-8 0 6 2 6c1.5 0 2.5-1 3-2\"/>\n <path d=\"M3 20h18\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function SmartphoneChargingIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"14\" height=\"20\" x=\"5\" y=\"2\" rx=\"2\" ry=\"2\"/>\n <path d=\"M12.667 8 10 12h4l-2.667 4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function SmartphoneIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"14\" height=\"20\" x=\"5\" y=\"2\" rx=\"2\" ry=\"2\"/><path d=\"M12 18h.01\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function SmileIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <path d=\"M8 14s1.5 2 4 2 4-2 4-2\"/>\n <line x1=\"9\" x2=\"9.01\" y1=\"9\" y2=\"9\"/>\n <line x1=\"15\" x2=\"15.01\" y1=\"9\" y2=\"9\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function SnowflakeIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m10 20-1.25-2.5L6 18\"/>\n <path d=\"M10 4 8.75 6.5 6 6\"/>\n <path d=\"m14 20 1.25-2.5L18 18\"/>\n <path d=\"m14 4 1.25 2.5L18 6\"/>\n <path d=\"m17 21-3-6h-4\"/>\n <path d=\"m17 3-3 6 1.5 3\"/>\n <path d=\"M2 12h6.5L10 9\"/>\n <path d=\"m20 10-1.5 2 1.5 2\"/>\n <path d=\"M22 12h-6.5L14 15\"/>\n <path d=\"m4 10 1.5 2L4 14\"/>\n <path d=\"m7 21 3-6-1.5-3\"/>\n <path d=\"m7 3 3 6h4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function SortAscIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m3 8 4-4 4 4\"/>\n <path d=\"M7 4v16\"/>\n <path d=\"M11 20h10\"/>\n <path d=\"M11 16h7\"/>\n <path d=\"M11 12h4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function SortDescIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m3 16 4 4 4-4\"/>\n <path d=\"M7 20V4\"/>\n <path d=\"M11 4h10\"/>\n <path d=\"M11 8h7\"/>\n <path d=\"M11 12h4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function SparkleIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z\"/>\n <path d=\"M20 2v4\"/>\n <path d=\"M22 4h-4\"/>\n <circle cx=\"4\" cy=\"20\" r=\"2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function SpeakerIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"16\" height=\"20\" x=\"4\" y=\"2\" rx=\"2\"/>\n <path d=\"M12 6h.01\"/>\n <circle cx=\"12\" cy=\"14\" r=\"4\"/>\n <path d=\"M12 14h.01\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function SplitHorizontalIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 2v20\"/>\n <path d=\"M16 3h3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-3\"/>\n <path d=\"M8 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function SplitVerticalIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M2 12h20\"/>\n <path d=\"M3 8V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v3\"/>\n <path d=\"M21 16v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function SquareIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function StampIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M14 13V8.5C14 7 15 7 15 5a3 3 0 0 0-6 0c0 2 1 2 1 3.5V13\"/>\n <path d=\"M20 15.5a2.5 2.5 0 0 0-2.5-2.5h-11A2.5 2.5 0 0 0 4 15.5V17a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1z\"/>\n <path d=\"M5 22h14\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function StarFilledIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n strokeWidth=\"1\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function StarHalfFilledIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 18.338a2.1 2.1 0 0 0-.987.244L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.12 2.12 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.12 2.12 0 0 0 1.597-1.16l2.309-4.679A.53.53 0 0 1 12 2v16.338z\" fill=\"currentColor\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function StarHalfIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 18.338a2.1 2.1 0 0 0-.987.244L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.12 2.12 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.12 2.12 0 0 0 1.597-1.16l2.309-4.679A.53.53 0 0 1 12 2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function StarIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function StepBackIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M13.971 4.285A2 2 0 0 1 17 6v12a2 2 0 0 1-3.029 1.715l-9.997-5.998a2 2 0 0 1-.003-3.432z\"/>\n <path d=\"M21 20V4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function StepForwardIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10.029 4.285A2 2 0 0 0 7 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z\"/>\n <path d=\"M3 4v16\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function StickyNoteIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z\"/>\n <path d=\"M15 3v5a1 1 0 0 0 1 1h5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function StopIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect x=\"6\" y=\"6\" width=\"12\" height=\"12\" rx=\"2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function StopwatchIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <line x1=\"10\" x2=\"14\" y1=\"2\" y2=\"2\"/>\n <line x1=\"12\" x2=\"15\" y1=\"14\" y2=\"11\"/>\n <circle cx=\"12\" cy=\"14\" r=\"8\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function StoreIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M15 21v-5a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v5\"/>\n <path d=\"M17.774 10.31a1.12 1.12 0 0 0-1.549 0 2.5 2.5 0 0 1-3.451 0 1.12 1.12 0 0 0-1.548 0 2.5 2.5 0 0 1-3.452 0 1.12 1.12 0 0 0-1.549 0 2.5 2.5 0 0 1-3.77-3.248l2.889-4.184A2 2 0 0 1 7 2h10a2 2 0 0 1 1.653.873l2.895 4.192a2.5 2.5 0 0 1-3.774 3.244\"/>\n <path d=\"M4 10.95V19a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8.05\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function SunIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"4\"/>\n <path d=\"M12 2v2\"/>\n <path d=\"M12 20v2\"/>\n <path d=\"m4.93 4.93 1.41 1.41\"/>\n <path d=\"m17.66 17.66 1.41 1.41\"/>\n <path d=\"M2 12h2\"/>\n <path d=\"M20 12h2\"/>\n <path d=\"m6.34 17.66-1.41 1.41\"/>\n <path d=\"m19.07 4.93-1.41 1.41\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TableOfContentsIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M16 5H3\"/>\n <path d=\"M16 12H3\"/>\n <path d=\"M16 19H3\"/>\n <path d=\"M21 5h.01\"/>\n <path d=\"M21 12h.01\"/>\n <path d=\"M21 19h.01\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TabletIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"16\" height=\"20\" x=\"4\" y=\"2\" rx=\"2\" ry=\"2\"/>\n <line x1=\"12\" x2=\"12.01\" y1=\"18\" y2=\"18\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TagIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z\"/>\n <circle cx=\"7.5\" cy=\"7.5\" r=\".5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TelegramFilledIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 640 640\"\n fill=\"currentColor\"\n stroke=\"none\"\n aria-hidden=\"true\"\n {...props}\n >\n <path fillRule=\"evenodd\"\n d=\"M160 96L480 96C515.3 96 544 124.7 544 160L544 480C544 515.3 515.3 544 480 544L160 544C124.7 544 96 515.3 96 480L96 160C96 124.7 124.7 96 160 96z\n M435 240.7C431.3 279.9 415.1 375.1 406.9 419C403.4 437.6 396.6 443.8 390 444.4C375.6 445.7 364.7 434.9 350.7 425.7C328.9 411.4 316.5 402.5 295.4 388.5C270.9 372.4 286.8 363.5 300.7 349C304.4 345.2 367.8 287.5 369 282.3C369.2 281.6 369.3 279.2 367.8 277.9C366.3 276.6 364.2 277.1 362.7 277.4C360.5 277.9 325.6 300.9 258.1 346.5C248.2 353.3 239.2 356.6 231.2 356.4C222.3 356.2 205.3 351.4 192.6 347.3C177.1 342.3 164.7 339.6 165.8 331C166.4 326.5 172.5 322 184.2 317.3C256.5 285.8 304.7 265 328.8 255C397.7 226.4 412 221.4 421.3 221.2C423.4 221.2 427.9 221.7 430.9 224.1C432.9 225.8 434.1 228.2 434.4 230.8C434.9 234 435 237.3 434.8 240.6z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TelegramIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 640 640\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"24\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect x=\"96\" y=\"96\" width=\"448\" height=\"448\" rx=\"64\"/>\n <path fill=\"currentColor\" stroke=\"none\"\n d=\"M435 240.7C431.3 279.9 415.1 375.1 406.9 419C403.4 437.6 396.6 443.8 390 444.4C375.6 445.7 364.7 434.9 350.7 425.7C328.9 411.4 316.5 402.5 295.4 388.5C270.9 372.4 286.8 363.5 300.7 349C304.4 345.2 367.8 287.5 369 282.3C369.2 281.6 369.3 279.2 367.8 277.9C366.3 276.6 364.2 277.1 362.7 277.4C360.5 277.9 325.6 300.9 258.1 346.5C248.2 353.3 239.2 356.6 231.2 356.4C222.3 356.2 205.3 351.4 192.6 347.3C177.1 342.3 164.7 339.6 165.8 331C166.4 326.5 172.5 322 184.2 317.3C256.5 285.8 304.7 265 328.8 255C397.7 226.4 412 221.4 421.3 221.2C423.4 221.2 427.9 221.7 430.9 224.1C432.9 225.8 434.1 228.2 434.4 230.8C434.9 234 435 237.3 434.8 240.6z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TerminalIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m7 11 2-2-2-2\"/>\n <path d=\"M11 13h4\"/>\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TerminalSquareIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m7 11 2-2-2-2\"/>\n <path d=\"M11 13h4\"/>\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ThermometerIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M14 4v10.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0Z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ThermometerSnowflakeIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m10 20-1.25-2.5L6 18\"/>\n <path d=\"M10 4 8.75 6.5 6 6\"/>\n <path d=\"M10.585 15H10\"/>\n <path d=\"M2 12h6.5L10 9\"/>\n <path d=\"M20 14.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0z\"/>\n <path d=\"m4 10 1.5 2L4 14\"/>\n <path d=\"m7 21 3-6-1.5-3\"/>\n <path d=\"m7 3 3 6h2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ThermometerSunIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 2v2\"/>\n <path d=\"M12 8a4 4 0 0 0-1.645 7.647\"/>\n <path d=\"M2 12h2\"/>\n <path d=\"M20 14.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0z\"/>\n <path d=\"m4.93 4.93 1.41 1.41\"/>\n <path d=\"m6.34 17.66-1.41 1.41\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TicketAddIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z\"/>\n <path d=\"M9 12h6\"/>\n <path d=\"M12 9v6\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TicketCancelIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z\"/>\n <path d=\"m9.5 14.5 5-5\"/>\n <path d=\"m9.5 9.5 5 5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TicketCheckIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z\"/>\n <path d=\"m9 12 2 2 4-4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TicketDiscountIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M2 9a3 3 0 1 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 1 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z\"/>\n <path d=\"M9 9h.01\"/>\n <path d=\"m15 9-6 6\"/>\n <path d=\"M15 15h.01\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TicketIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z\"/>\n <path d=\"M13 5v2\"/>\n <path d=\"M13 17v2\"/>\n <path d=\"M13 11v2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TimerIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <line x1=\"10\" x2=\"14\" y1=\"2\" y2=\"2\"/>\n <line x1=\"12\" x2=\"15\" y1=\"14\" y2=\"11\"/>\n <circle cx=\"12\" cy=\"14\" r=\"8\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ToggleLeftIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"9\" cy=\"12\" r=\"3\"/>\n <rect width=\"20\" height=\"14\" x=\"2\" y=\"5\" rx=\"7\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ToggleRightIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"15\" cy=\"12\" r=\"3\"/>\n <rect width=\"20\" height=\"14\" x=\"2\" y=\"5\" rx=\"7\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ToiletIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M7 12h13a1 1 0 0 1 1 1 5 5 0 0 1-5 5h-.598a.5.5 0 0 0-.424.765l1.544 2.47a.5.5 0 0 1-.424.765H5.402a.5.5 0 0 1-.424-.765L7 18\"/>\n <path d=\"M8 18a5 5 0 0 1-5-5V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v8\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TorchIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M17 2a1 1 0 0 1 1 1v4a3 3 0 0 1-.6 1.8l-.6.8A4 4 0 0 0 16 12v8a2 2 0 0 1-2 2H10a2 2 0 0 1-2-2v-8a4 4 0 0 0-.8-2.4l-.6-.8A3 3 0 0 1 6 7V3a1 1 0 0 1 1-1z\"/>\n <path d=\"M6 6h12\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TorchOffIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M11.652 6H18\"/>\n <path d=\"M16 16v4a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-8a4 4 0 0 0-.8-2.4l-.6-.8A3 3 0 0 1 6 7V6\"/>\n <path d=\"m2 2 20 20\"/>\n <path d=\"M7.649 2H17a1 1 0 0 1 1 1v4a3 3 0 0 1-.6 1.8l-.6.8a4 4 0 0 0-.55 1.007\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TornadoIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M21 4H3\"/>\n <path d=\"M18 8H6\"/>\n <path d=\"M19 12H9\"/>\n <path d=\"M16 16h-6\"/>\n <path d=\"M11 20H9\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TrademarkIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <path d=\"M6 9h4\"/>\n <path d=\"M8 9v6\"/>\n <path d=\"M12 15V9l3 4 3-4v6\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TrainIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M8 3.1V7a4 4 0 0 0 8 0V3.1\"/>\n <path d=\"m9 15-1-1\"/>\n <path d=\"m15 15 1-1\"/>\n <path d=\"M9 19c-2.8 0-5-2.2-5-5v-4a8 8 0 0 1 16 0v4c0 2.8-2.2 5-5 5Z\"/>\n <path d=\"m8 19-2 3\"/>\n <path d=\"m16 19 2 3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TransgenderIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 16v6\"/>\n <path d=\"M14 20h-4\"/>\n <path d=\"M18 2h4v4\"/>\n <path d=\"m2 2 7.17 7.17\"/>\n <path d=\"M2 5.355V2h3.357\"/>\n <path d=\"m22 2-7.17 7.17\"/>\n <path d=\"M8 5 5 8\"/>\n <circle cx=\"12\" cy=\"12\" r=\"4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TrashIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10 11v6\"/>\n <path d=\"M14 11v6\"/>\n <path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\"/>\n <path d=\"M3 6h18\"/>\n <path d=\"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TreeIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m17 14 3 3.3a1 1 0 0 1-.7 1.7H4.7a1 1 0 0 1-.7-1.7L7 14h-.3a1 1 0 0 1-.7-1.7L9 9h-.2A1 1 0 0 1 8 7.3L12 3l4 4.3a1 1 0 0 1-.8 1.7H15l3 3.3a1 1 0 0 1-.7 1.7H17Z\"/>\n <path d=\"M12 22v-3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TrendingDownIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M16 17h6v-6\"/>\n <path d=\"m22 17-8.5-8.5-5 5L2 7\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TrendingUpDownIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M14.828 14.828 21 21\"/>\n <path d=\"M21 16v5h-5\"/>\n <path d=\"m21 3-9 9-4-4-6 6\"/>\n <path d=\"M21 8V3h-5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TrendingUpIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M16 7h6v6\"/>\n <path d=\"m22 7-8.5 8.5-5-5L2 17\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TriangleIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m12 3 10 18H2z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TrophyIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10 14.66V17a1 1 0 0 1-1 1 2 2 0 0 0-2 2v2\"/>\n <path d=\"M14 14.66V17a1 1 0 0 0 1 1 2 2 0 0 1 2 2v2\"/>\n <path d=\"M17.916 10H19.5A2.5 2.5 0 0 0 22 7.5V5a1 1 0 0 0-1-1h-3\"/>\n <path d=\"M4 22h16\"/>\n <path d=\"M6 9a6 6 0 0 0 12 0V3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1z\"/>\n <path d=\"M6.084 10H4.5A2.5 2.5 0 0 1 2 7.5V5a1 1 0 0 1 1-1h3\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TruckIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M13 6v5a1 1 0 0 0 1 1h6.102a1 1 0 0 1 .712.298l.898.91a1 1 0 0 1 .288.702V17a1 1 0 0 1-1 1h-3\"/>\n <path d=\"M5 18H3a1 1 0 0 1-1-1V8a2 2 0 0 1 2-2h12c1.1 0 2.1.8 2.4 1.8l1.176 4.2\"/>\n <path d=\"M9 18h5\"/>\n <circle cx=\"16\" cy=\"18\" r=\"2\"/>\n <circle cx=\"7\" cy=\"18\" r=\"2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function TvIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m17 2-5 5-5-5\"/>\n <rect width=\"20\" height=\"15\" x=\"2\" y=\"7\" rx=\"2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function UmbrellaIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 13v7a2 2 0 0 0 4 0\"/>\n <path d=\"M12 2v2\"/>\n <path d=\"M20.992 13a1 1 0 0 0 .97-1.274 10.284 10.284 0 0 0-19.923 0A1 1 0 0 0 3 13z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function UmbrellaOffIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 13v7a2 2 0 0 0 4 0\"/>\n <path d=\"M12 2v2\"/>\n <path d=\"M18.656 13h2.336a1 1 0 0 0 .97-1.274 10.284 10.284 0 0 0-12.07-7.51\"/>\n <path d=\"m2 2 20 20\"/>\n <path d=\"M5.961 5.957a10.28 10.28 0 0 0-3.922 5.769A1 1 0 0 0 3 13h10\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function UndoIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M3 7v6h6\"/>\n <path d=\"M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function UngroupIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect x=\"11\" y=\"14\" width=\"10\" height=\"7\" rx=\"2\"/>\n <rect x=\"3\" y=\"3\" width=\"10\" height=\"7\" rx=\"2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function UnlinkIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m18.84 12.25 1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71\"/>\n <path d=\"m5.17 11.75-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71\"/>\n <line x1=\"8\" x2=\"8\" y1=\"2\" y2=\"5\"/>\n <line x1=\"2\" x2=\"5\" y1=\"8\" y2=\"8\"/>\n <line x1=\"16\" x2=\"16\" y1=\"19\" y2=\"22\"/>\n <line x1=\"19\" x2=\"22\" y1=\"16\" y2=\"16\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function UnlockIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"18\" height=\"11\" x=\"3\" y=\"11\" rx=\"2\" ry=\"2\"/>\n <path d=\"M7 11V7a5 5 0 0 1 10 0\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function UploadIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 3v12\"/>\n <path d=\"m17 8-5-5-5 5\"/>\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function UsbIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"10\" cy=\"7\" r=\"1\"/>\n <circle cx=\"4\" cy=\"20\" r=\"1\"/>\n <path d=\"M4.7 19.3 19 5\"/>\n <path d=\"m21 3-3 1 2 2Z\"/>\n <path d=\"M9.26 7.68 5 12l2 5\"/>\n <path d=\"m10 14 5 2 3.5-3.5\"/>\n <path d=\"m18 12 1-1 1 1-1 1Z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function UserCheckIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m16 11 2 2 4-4\"/>\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\"/>\n <circle cx=\"9\" cy=\"7\" r=\"4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function UserCircleIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <circle cx=\"12\" cy=\"10\" r=\"3\"/>\n <path d=\"M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function UserCogIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10 15H6a4 4 0 0 0-4 4v2\"/>\n <path d=\"m14.305 16.53.923-.382\"/>\n <path d=\"m15.228 13.852-.923-.383\"/>\n <path d=\"m16.852 12.228-.383-.923\"/>\n <path d=\"m16.852 17.772-.383.924\"/>\n <path d=\"m19.148 12.228.383-.923\"/>\n <path d=\"m19.53 18.696-.382-.924\"/>\n <path d=\"m20.772 13.852.924-.383\"/>\n <path d=\"m20.772 16.148.924.383\"/>\n <circle cx=\"18\" cy=\"15\" r=\"3\"/>\n <circle cx=\"9\" cy=\"7\" r=\"4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function UserEditIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M11.5 15H7a4 4 0 0 0-4 4v2\"/>\n <path d=\"M21.378 16.626a1 1 0 0 0-3.004-3.004l-4.01 4.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z\"/>\n <circle cx=\"10\" cy=\"7\" r=\"4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function UserIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\"/>\n <circle cx=\"12\" cy=\"7\" r=\"4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function UserLockIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M19 16v-2a2 2 0 0 0-4 0v2\"/>\n <path d=\"M9.5 15H7a4 4 0 0 0-4 4v2\"/>\n <circle cx=\"10\" cy=\"7\" r=\"4\"/>\n <rect x=\"13\" y=\"16\" width=\"8\" height=\"5\" rx=\".899\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function UserMinusIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\"/>\n <circle cx=\"9\" cy=\"7\" r=\"4\"/>\n <line x1=\"22\" x2=\"16\" y1=\"11\" y2=\"11\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function UserPlusIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\"/>\n <circle cx=\"9\" cy=\"7\" r=\"4\"/>\n <line x1=\"19\" x2=\"19\" y1=\"8\" y2=\"14\"/>\n <line x1=\"22\" x2=\"16\" y1=\"11\" y2=\"11\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function UserSearchIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"10\" cy=\"7\" r=\"4\"/>\n <path d=\"M10.3 15H7a4 4 0 0 0-4 4v2\"/>\n <circle cx=\"17\" cy=\"17\" r=\"3\"/>\n <path d=\"m21 21-1.9-1.9\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function UsersIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\"/>\n <path d=\"M16 3.128a4 4 0 0 1 0 7.744\"/>\n <path d=\"M22 21v-2a4 4 0 0 0-3-3.87\"/>\n <circle cx=\"9\" cy=\"7\" r=\"4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function UserSquareIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"/>\n <circle cx=\"12\" cy=\"10\" r=\"3\"/>\n <path d=\"M7 21v-2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function UserStarIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M16.051 12.616a1 1 0 0 1 1.909.024l.737 1.452a1 1 0 0 0 .737.535l1.634.256a1 1 0 0 1 .588 1.806l-1.172 1.168a1 1 0 0 0-.282.866l.259 1.613a1 1 0 0 1-1.541 1.134l-1.465-.75a1 1 0 0 0-.912 0l-1.465.75a1 1 0 0 1-1.539-1.133l.258-1.613a1 1 0 0 0-.282-.866l-1.156-1.153a1 1 0 0 1 .572-1.822l1.633-.256a1 1 0 0 0 .737-.535z\"/>\n <path d=\"M8 15H7a4 4 0 0 0-4 4v2\"/>\n <circle cx=\"10\" cy=\"7\" r=\"4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function VideoIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5\"/>\n <rect x=\"2\" y=\"6\" width=\"14\" height=\"12\" rx=\"2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function VideoOffIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10.66 6H14a2 2 0 0 1 2 2v2.5l5.248-3.062A.5.5 0 0 1 22 7.87v8.196\"/>\n <path d=\"M16 16a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h2\"/>\n <path d=\"m2 2 20 20\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function VolumeIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z\"/>\n <path d=\"M16 9a5 5 0 0 1 0 6\"/>\n <path d=\"M19.364 18.364a9 9 0 0 0 0-12.728\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function VolumeOffIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M16 9a5 5 0 0 1 .95 2.293\"/>\n <path d=\"M19.364 5.636a9 9 0 0 1 1.889 9.96\"/>\n <path d=\"m2 2 20 20\"/>\n <path d=\"m7 7-.587.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298V11\"/>\n <path d=\"M9.828 4.172A.686.686 0 0 1 11 4.657v.686\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function WalletIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1\"/>\n <path d=\"M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function WandIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M15 4V2\"/>\n <path d=\"M15 16v-2\"/>\n <path d=\"M8 9h2\"/>\n <path d=\"M20 9h2\"/>\n <path d=\"M17.8 11.8 19 13\"/>\n <path d=\"M15 9h.01\"/>\n <path d=\"M17.8 6.2 19 5\"/>\n <path d=\"m3 21 9-9\"/>\n <path d=\"M12.2 6.2 11 5\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function WatchIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 10v2.2l1.6 1\"/>\n <path d=\"m16.13 7.66-.81-4.05a2 2 0 0 0-2-1.61h-2.68a2 2 0 0 0-2 1.61l-.78 4.05\"/>\n <path d=\"m7.88 16.36.8 4a2 2 0 0 0 2 1.61h2.72a2 2 0 0 0 2-1.61l.81-4.05\"/>\n <circle cx=\"12\" cy=\"12\" r=\"6\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function WebcamIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"10\" r=\"8\"/>\n <circle cx=\"12\" cy=\"10\" r=\"3\"/>\n <path d=\"M7 22h10\"/>\n <path d=\"M12 22v-4\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function WhatsappFilledIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 640 640\"\n fill=\"currentColor\"\n stroke=\"none\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M188.1 318.6C188.1 343.5 195.1 367.8 208.3 388.7L211.4 393.7L198.1 442.3L248 429.2L252.8 432.1C273 444.1 296.2 450.5 319.9 450.5L320 450.5C392.6 450.5 453.3 391.4 453.3 318.7C453.3 283.5 438.1 250.4 413.2 225.5C388.2 200.5 355.2 186.8 320 186.8C247.3 186.8 188.2 245.9 188.1 318.6zM370.8 394C358.2 395.9 348.4 394.9 323.3 384.1C286.5 368.2 261.5 332.6 256.4 325.4C256 324.8 255.7 324.5 255.6 324.3C253.6 321.7 239.4 302.8 239.4 283.3C239.4 264.9 248.4 255.4 252.6 251C252.9 250.7 253.1 250.5 253.3 250.2C256.9 246.2 261.2 245.2 263.9 245.2C266.5 245.2 269.2 245.2 271.5 245.3L272.3 245.3C274.6 245.3 277.5 245.3 280.4 252.1C281.6 255 283.4 259.4 285.3 263.9C288.6 271.9 292 280.2 292.6 281.5C293.6 283.5 294.3 285.8 292.9 288.4C289.5 295.2 286 298.8 283.6 301.4C280.5 304.6 279.1 306.1 281.3 310C296.6 336.3 311.9 345.4 335.2 357.1C339.2 359.1 341.5 358.8 343.8 356.1C346.1 353.5 353.7 344.5 356.3 340.6C358.9 336.6 361.6 337.3 365.2 338.6C368.8 339.9 388.3 349.5 392.3 351.5C393.1 351.9 393.8 352.2 394.4 352.5C397.2 353.9 399.1 354.8 399.9 356.1C400.8 358 400.8 366 397.5 375.2C394.2 384.5 378.4 392.9 370.8 394zM544 160C544 124.7 515.3 96 480 96L160 96C124.7 96 96 124.7 96 160L96 480C96 515.3 124.7 544 160 544L480 544C515.3 544 544 515.3 544 480L544 160zM244.1 457.9L160 480L182.5 397.8C168.6 373.8 161.3 346.5 161.3 318.5C161.4 231.1 232.5 160 319.9 160C362.3 160 402.1 176.5 432.1 206.5C462 236.5 480 276.3 480 318.7C480 406.1 407.3 477.2 319.9 477.2C293.3 477.2 267.2 470.5 244.1 457.9z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function WhatsappIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 640 640\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"24\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect x=\"96\" y=\"96\" width=\"448\" height=\"448\" rx=\"64\"/>\n <path fill=\"currentColor\" stroke=\"none\"\n d=\"M188.1 318.6C188.1 343.5 195.1 367.8 208.3 388.7L211.4 393.7L198.1 442.3L248 429.2L252.8 432.1C273 444.1 296.2 450.5 319.9 450.5C392.6 450.5 453.3 391.4 453.3 318.7C453.3 283.5 438.1 250.4 413.2 225.5C388.2 200.5 355.2 186.8 320 186.8C247.3 186.8 188.2 245.9 188.1 318.6z\n M370.8 394C358.2 395.9 348.4 394.9 323.3 384.1C286.5 368.2 261.5 332.6 256.4 325.4C253.6 321.7 239.4 302.8 239.4 283.3C239.4 264.9 248.4 255.4 252.6 251C256.9 246.2 261.2 245.2 263.9 245.2C269.2 245.2 277.5 245.3 280.4 252.1C283.4 259.4 292 280.2 292.6 281.5C293.6 283.5 294.3 285.8 292.9 288.4C289.5 295.2 286 298.8 283.6 301.4C280.5 304.6 279.1 306.1 281.3 310C296.6 336.3 311.9 345.4 335.2 357.1C339.2 359.1 341.5 358.8 343.8 356.1C346.1 353.5 353.7 344.5 356.3 340.6C358.9 336.6 361.6 337.3 365.2 338.6C368.8 339.9 388.3 349.5 392.3 351.5C397.2 353.9 400.8 358 397.5 375.2C394.2 384.5 378.4 392.9 370.8 394z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function WifiIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 20h.01\"/>\n <path d=\"M2 8.82a15 15 0 0 1 20 0\"/>\n <path d=\"M5 12.859a10 10 0 0 1 14 0\"/>\n <path d=\"M8.5 16.429a5 5 0 0 1 7 0\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function WindIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12.8 19.6A2 2 0 1 0 14 16H2\"/>\n <path d=\"M17.5 8a2.5 2.5 0 1 1 2 4H2\"/>\n <path d=\"M9.8 4.4A2 2 0 1 1 11 8H2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function WorkflowIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect width=\"8\" height=\"8\" x=\"3\" y=\"3\" rx=\"2\"/>\n <path d=\"M7 11v4a2 2 0 0 0 2 2h4\"/>\n <rect width=\"8\" height=\"8\" x=\"13\" y=\"13\" rx=\"2\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function WrapTextIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m16 16-3 3 3 3\"/>\n <path d=\"M3 12h14.5a1 1 0 0 1 0 7H13\"/>\n <path d=\"M3 19h6\"/>\n <path d=\"M3 5h18\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function WrenchIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function XFilledIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 640 640\"\n fill=\"currentColor\"\n stroke=\"none\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M160 96C124.7 96 96 124.7 96 160L96 480C96 515.3 124.7 544 160 544L480 544C515.3 544 544 515.3 544 480L544 160C544 124.7 515.3 96 480 96L160 96zM457.1 180L353.3 298.6L475.4 460L379.8 460L305 362.1L219.3 460L171.8 460L282.8 333.1L165.7 180L263.7 180L331.4 269.5L409.6 180L457.1 180zM419.3 431.6L249.4 206.9L221.1 206.9L392.9 431.6L419.3 431.6z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function XIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 640 640\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"24\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect x=\"96\" y=\"96\" width=\"448\" height=\"448\" rx=\"64\"/>\n <path fill=\"currentColor\" stroke=\"none\"\n d=\"M457.1 180L353.3 298.6L475.4 460L379.8 460L305 362.1L219.3 460L171.8 460L282.8 333.1L165.7 180L263.7 180L331.4 269.5L409.6 180L457.1 180z\n M419.3 431.6L249.4 206.9L221.1 206.9L392.9 431.6L419.3 431.6z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function YenIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"/>\n <path d=\"m9 8 3 3v7\"/>\n <path d=\"m12 11 3-3\"/>\n <path d=\"M9 12h6\"/>\n <path d=\"M9 16h6\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function YenSymbolIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 9.5V21m0-11.5L6 3m6 6.5L18 3\"/>\n <path d=\"M6 15h12\"/>\n <path d=\"M6 11h12\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function YoutubeFilledIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 640 640\"\n fill=\"currentColor\"\n stroke=\"none\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M378 320.2L282.8 266.1L282.8 374.3L378 320.2zM480 96L160 96C124.7 96 96 124.7 96 160L96 480C96 515.3 124.7 544 160 544L480 544C515.3 544 544 515.3 544 480L544 160C544 124.7 515.3 96 480 96zM494.4 232.1C502 260.7 502 320.3 502 320.3C502 320.3 502 379.9 494.4 408.4C490.2 424.2 477.9 436.1 462.2 440.3C433.9 448 320 448 320 448C320 448 206.1 448 177.8 440.4C162.1 436.2 149.8 424.3 145.6 408.5C138 379.9 138 320.3 138 320.3C138 320.3 138 260.6 145.6 232.1C149.8 216.3 162.1 203.9 177.8 199.7C206.1 192 320 192 320 192C320 192 433.9 192 462.2 199.7C477.9 203.9 490.2 216.3 494.4 232.1z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function YoutubeIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 640 640\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"24\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect x=\"96\" y=\"96\" width=\"448\" height=\"448\" rx=\"64\"/>\n <path fill=\"currentColor\" stroke=\"none\"\n d=\"M378 320.2L282.8 266.1L282.8 374.3L378 320.2z\n M494.4 232.1C502 260.7 502 320.3 502 320.3C502 320.3 502 379.9 494.4 408.4C490.2 424.2 477.9 436.1 462.2 440.3C433.9 448 320 448 320 448C320 448 206.1 448 177.8 440.4C162.1 436.2 149.8 424.3 145.6 408.5C138 379.9 138 320.3 138 320.3C138 320.3 138 260.6 145.6 232.1C149.8 216.3 162.1 203.9 177.8 199.7C206.1 192 320 192 320 192C320 192 433.9 192 462.2 199.7C477.9 203.9 490.2 216.3 494.4 232.1z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ZapIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ZapOffIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10.513 4.856 13.12 2.17a.5.5 0 0 1 .86.46l-1.377 4.317\"/>\n <path d=\"M15.656 10H20a1 1 0 0 1 .78 1.63l-1.72 1.773\"/>\n <path d=\"M16.273 16.273 10.88 21.83a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14H4a1 1 0 0 1-.78-1.63l4.507-4.643\"/>\n <path d=\"m2 2 20 20\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ZoomInIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\"/>\n <line x1=\"21\" x2=\"16.65\" y1=\"21\" y2=\"16.65\"/>\n <line x1=\"11\" x2=\"11\" y1=\"8\" y2=\"14\"/>\n <line x1=\"8\" x2=\"14\" y1=\"11\" y2=\"11\"/>\n </svg>\n );\n}\n","import type { IconProps } from \"./types\";\n\nexport function ZoomOutIcon({ size = 20, ...props }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\"/>\n <line x1=\"21\" x2=\"16.65\" y1=\"21\" y2=\"16.65\"/>\n <line x1=\"8\" x2=\"14\" y1=\"11\" y2=\"11\"/>\n </svg>\n );\n}\n","import React, { forwardRef, useRef, useId, useImperativeHandle } from \"react\";\nimport { resolveModalState, getModalClasses, getModalBackdropClasses, getModalAriaProps, type ModalCoreProps } from \"../core/modal\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport { ThemedPortal } from \"../theme-engine/ThemedPortal\";\nimport { useOverlayBehavior } from \"../theme-engine/useOverlayBehavior\";\nimport \"./Modal.css\";\n\ninterface ModalProps extends ModalCoreProps, BaseComponentProps {\n open: boolean;\n onClose: () => void;\n title?: React.ReactNode;\n children?: React.ReactNode;\n footer?: React.ReactNode;\n /** Explicit element to return focus to on close. Defaults to whatever was focused right before opening (almost always the button that opened it). */\n triggerRef?: React.RefObject<HTMLElement | null>;\n}\n\n/**\n * Modal doesn't have a natural \"trigger element\" of its own the way\n * Tooltip does (the consumer manages `open` state from wherever they\n * want) — `sentinelRef` is a zero-size marker rendered inline, right\n * where `<Modal>` appears in the tree, purely so ThemedPortal has a\n * real DOM node inside the themed subtree to read `data-theme`/\n * `data-accent` from. It's the same reasoning ThemedPortal always\n * needs an anchorRef for, just satisfied differently here than a\n * component with a visible trigger.\n *\n * Ref forwarding (Rule 4) still applies here even though the ref\n * needs to reach a node that only exists once portaled and is also\n * used internally for the focus trap — same merged-ref pattern as\n * Checkbox/Textarea's internally-needed refs, via useImperativeHandle.\n */\nexport const Modal = forwardRef<HTMLDivElement, ModalProps>(function Modal(\n {\n open,\n onClose,\n title,\n children,\n footer,\n triggerRef,\n className,\n style,\n theme,\n color,\n ...rest\n },\n forwardedRef\n) {\n const sentinelRef = useRef<HTMLSpanElement>(null);\n const dialogRef = useRef<HTMLDivElement>(null);\n const titleId = `nx-modal-title-${useId()}`;\n\n useImperativeHandle(forwardedRef, () => dialogRef.current as HTMLDivElement);\n\n const state = resolveModalState({ ...rest, hasTitle: !!title });\n const classes = [getModalClasses(state), className].filter(Boolean).join(\" \");\n const aria = getModalAriaProps(state, titleId);\n\n useOverlayBehavior({\n isOpen: open,\n onClose,\n containerRef: dialogRef,\n triggerRef,\n closeOnEscape: state.closeOnEscape,\n trapFocus: true,\n returnFocus: true,\n autoFocus: true,\n });\n\n function handleBackdropClick(e: React.MouseEvent<HTMLDivElement>) {\n // Only a direct click on the backdrop itself closes it — a click\n // that starts inside the dialog and bubbles up doesn't count,\n // which is why this checks target === currentTarget rather than\n // stopping propagation on every click inside the dialog.\n if (e.target !== e.currentTarget) return;\n if (state.closeOnBackdropClick) onClose();\n }\n\n const modalContent = open && (\n <ThemedPortal anchorRef={sentinelRef}>\n <div className={getModalBackdropClasses()} onMouseDown={handleBackdropClick}>\n {withThemeOverride(\n theme,\n withAccentOverride(\n color,\n <div ref={dialogRef} className={classes} style={style} {...aria} aria-label={!state.hasTitle ? \"Dialog\" : undefined}>\n {title && (\n <div className=\"nx-modal__header\">\n <div id={titleId} className=\"nx-modal__title\">\n {title}\n </div>\n <button type=\"button\" className=\"nx-modal__close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M4 4l10 10M14 4L4 14\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n )}\n <div className=\"nx-modal__body\">{children}</div>\n {footer && <div className=\"nx-modal__footer\">{footer}</div>}\n </div>\n )\n )}\n </div>\n </ThemedPortal>\n );\n\n return (\n <>\n <span ref={sentinelRef} style={{ display: \"none\" }} aria-hidden=\"true\" />\n {modalContent}\n </>\n );\n});\n","import type { Size } from \"./types\";\n\n// types.ts's own convention comment names this exact case — \"Modal\n// reasonably wants full\" — as the model for a deliberate, visible\n// divergence from the shared scale.\nexport type ModalSize = Size | \"full\";\n\nexport interface ModalCoreProps {\n size?: ModalSize;\n /** Clicking the backdrop closes the modal. Default true. */\n closeOnBackdropClick?: boolean;\n /** Escape closes the modal. Default true. */\n closeOnEscape?: boolean;\n hasTitle?: boolean;\n}\n\nexport interface ModalState {\n size: ModalSize;\n closeOnBackdropClick: boolean;\n closeOnEscape: boolean;\n hasTitle: boolean;\n}\n\nexport function resolveModalState(props: ModalCoreProps): ModalState {\n return {\n size: props.size ?? \"md\",\n closeOnBackdropClick: props.closeOnBackdropClick ?? true,\n closeOnEscape: props.closeOnEscape ?? true,\n hasTitle: props.hasTitle ?? false,\n };\n}\n\nexport function getModalBackdropClasses(): string {\n return \"nx-modal-backdrop\";\n}\n\nexport function getModalClasses(state: ModalState): string {\n return [\"nx-modal\", `nx-modal--${state.size}`].join(\" \");\n}\n\nexport function getModalAriaProps(state: ModalState, titleId?: string) {\n return {\n role: \"dialog\" as const,\n \"aria-modal\": true as const,\n \"aria-labelledby\": state.hasTitle ? titleId : undefined,\n };\n}\n","import { useEffect, useLayoutEffect, useRef } from \"react\";\n\n// ============================================================\n// THE SHARED FIX FOR RULE 11 (CONTRACT.md), the accessibility\n// counterpart to ThemedPortal's Rule 6 fix. Escape-to-close,\n// focus-trapping, and return-focus-to-trigger are each easy to\n// get right once and easy to forget in at least one of several\n// components if hand-rolled per component — this is built once,\n// here, and every overlay component (Modal, Tooltip, Toast, and\n// anything Category C/D later) uses it instead.\n// ============================================================\n\nconst FOCUSABLE_SELECTOR = [\n \"a[href]\",\n \"button:not([disabled])\",\n \"textarea:not([disabled])\",\n \"input:not([disabled])\",\n \"select:not([disabled])\",\n \"[tabindex]:not([tabindex='-1'])\",\n].join(\", \");\n\nfunction isVisible(el: HTMLElement): boolean {\n // offsetParent-based checks are the more common way to detect\n // \"hidden\" elements, but offsetParent depends on real layout —\n // it's always null under jsdom (no layout engine), which would\n // silently filter out every element in tests even though the\n // same check works correctly in a real browser. Computed\n // display/visibility works in both.\n const style = window.getComputedStyle(el);\n return style.display !== \"none\" && style.visibility !== \"hidden\";\n}\n\nfunction getFocusableElements(container: HTMLElement): HTMLElement[] {\n return Array.from(container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)).filter(isVisible);\n}\n\nexport interface UseOverlayBehaviorOptions {\n isOpen: boolean;\n onClose: () => void;\n /** The overlay's own rendered container — focus trap and initial focus operate within this. */\n containerRef: React.RefObject<HTMLElement | null>;\n /** Explicit element to return focus to on close. Defaults to whatever was focused right before opening. */\n triggerRef?: React.RefObject<HTMLElement | null>;\n /** Escape closes the overlay. Default true. */\n closeOnEscape?: boolean;\n /**\n * Tab/Shift+Tab cycles within the container instead of leaving it.\n * Default true. Tooltip sets this false — it's informational\n * (WAI-ARIA tooltip pattern), it never receives focus itself, so\n * there's nothing inside it to trap focus within.\n */\n trapFocus?: boolean;\n /** Focus returns to the trigger/previously-focused element on close. Default true. */\n returnFocus?: boolean;\n /** The first focusable element inside (or the container itself) is focused on open. Default true. */\n autoFocus?: boolean;\n}\n\nexport function useOverlayBehavior({\n isOpen,\n onClose,\n containerRef,\n triggerRef,\n closeOnEscape = true,\n trapFocus = true,\n returnFocus = true,\n autoFocus = true,\n}: UseOverlayBehaviorOptions): void {\n const previouslyFocusedRef = useRef<HTMLElement | null>(null);\n // Keep the latest onClose in a ref so the keydown listener doesn't\n // need to be torn down/re-added every render just because the\n // caller passed a new inline function.\n const onCloseRef = useRef(onClose);\n onCloseRef.current = onClose;\n\n // Initial focus + remembering what to return focus to. Runs\n // before paint (useLayoutEffect) so there's no visible flash of\n // focus landing somewhere wrong first.\n useLayoutEffect(() => {\n if (!isOpen) return;\n previouslyFocusedRef.current = (document.activeElement as HTMLElement) ?? null;\n\n if (!autoFocus) return;\n const container = containerRef.current;\n if (!container) return;\n const focusable = getFocusableElements(container);\n if (focusable.length > 0) {\n focusable[0].focus();\n } else {\n // Nothing focusable inside (e.g. a Tooltip's plain text) —\n // make the container itself a valid focus target so Escape\n // and screen readers still have something to anchor to.\n if (!container.hasAttribute(\"tabindex\")) container.setAttribute(\"tabindex\", \"-1\");\n container.focus();\n }\n }, [isOpen, autoFocus, containerRef]);\n\n // Return focus on close.\n useEffect(() => {\n if (isOpen) return;\n if (!returnFocus) return;\n const target = triggerRef?.current ?? previouslyFocusedRef.current;\n target?.focus?.();\n }, [isOpen, returnFocus, triggerRef]);\n\n // Escape + focus trap, both live only while open.\n useEffect(() => {\n if (!isOpen) return;\n\n function handleKeyDown(e: KeyboardEvent) {\n if (closeOnEscape && e.key === \"Escape\") {\n e.stopPropagation();\n onCloseRef.current();\n return;\n }\n\n if (trapFocus && e.key === \"Tab\") {\n const container = containerRef.current;\n if (!container) return;\n const focusable = getFocusableElements(container);\n if (focusable.length === 0) {\n e.preventDefault();\n return;\n }\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n const active = document.activeElement;\n\n if (e.shiftKey && active === first) {\n e.preventDefault();\n last.focus();\n } else if (!e.shiftKey && active === last) {\n e.preventDefault();\n first.focus();\n } else if (!container.contains(active)) {\n // Focus somehow ended up outside the trap (e.g. a\n // programmatic focus() elsewhere) — pull it back in\n // rather than letting it escape.\n e.preventDefault();\n first.focus();\n }\n }\n }\n\n document.addEventListener(\"keydown\", handleKeyDown, true);\n return () => document.removeEventListener(\"keydown\", handleKeyDown, true);\n }, [isOpen, closeOnEscape, trapFocus, containerRef]);\n}\n","import React, { forwardRef, useRef, useState, useId, useEffect, useImperativeHandle, cloneElement, isValidElement } from \"react\";\nimport { resolveTooltipState, getTooltipClasses, getTooltipAriaProps, type TooltipCoreProps } from \"../core/tooltip\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport { ThemedPortal } from \"../theme-engine/ThemedPortal\";\nimport { useOverlayBehavior } from \"../theme-engine/useOverlayBehavior\";\nimport { useFloatingPosition } from \"../theme-engine/useFloatingPosition\";\nimport \"./Tooltip.css\";\n\ninterface TooltipProps extends TooltipCoreProps, BaseComponentProps {\n content: React.ReactNode;\n /** A single element — Tooltip clones it to attach hover/focus handlers, a ref for positioning, and aria-describedby. */\n children: React.ReactElement;\n}\n\nfunction mergeRefs<T>(...refs: Array<React.Ref<T> | null | undefined>) {\n return (value: T | null) => {\n for (const ref of refs) {\n if (!ref) continue;\n if (typeof ref === \"function\") ref(value);\n else (ref as React.MutableRefObject<T | null>).current = value;\n }\n };\n}\n\nfunction composeHandlers<E>(a?: (e: E) => void, b?: (e: E) => void) {\n return (e: E) => {\n a?.(e);\n b?.(e);\n };\n}\n\n/**\n * Hover AND focus both trigger it — a keyboard user tabbing to the\n * trigger needs to see the tooltip too, not just a mouse user\n * hovering it (BUILDING-COMPONENTS.md's Category C note on this\n * exact point). Keyboard focus shows immediately; hover waits\n * `delay` ms so tooltips don't flash on every incidental mouse pass.\n *\n * Ref forwarding (Rule 4) resolves to the trigger element — the same\n * node Tooltip already needs internally for positioning, and the one\n * a consumer would actually want (to focus/measure the trigger, not\n * the transient tooltip bubble). It's merged three ways: the child's\n * own existing ref (if any), Tooltip's internal triggerRef, and\n * whatever ref was forwarded to Tooltip itself.\n */\nexport const Tooltip = forwardRef<HTMLElement, TooltipProps>(function Tooltip(\n { content, children, className, style, theme, color, ...rest },\n forwardedRef\n) {\n const state = resolveTooltipState(rest);\n const [open, setOpen] = useState(false);\n const triggerRef = useRef<HTMLElement>(null);\n const floatingRef = useRef<HTMLDivElement>(null);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const tooltipId = `nx-tooltip-${useId()}`;\n\n useImperativeHandle(forwardedRef, () => triggerRef.current as HTMLElement);\n\n const position = useFloatingPosition({\n isOpen: open,\n triggerRef,\n floatingRef,\n placement: state.placement,\n align: state.align,\n offset: state.offset,\n });\n\n // trapFocus/autoFocus/returnFocus are all false — a tooltip is\n // never itself a focus target (WAI-ARIA tooltip pattern), unlike\n // Modal. Only Escape-to-close is shared behavior here.\n useOverlayBehavior({\n isOpen: open,\n onClose: () => setOpen(false),\n containerRef: floatingRef,\n closeOnEscape: true,\n trapFocus: false,\n returnFocus: false,\n autoFocus: false,\n });\n\n useEffect(() => () => clearTimeout(timeoutRef.current), []);\n\n function show(immediate: boolean) {\n if (state.isDisabled) return;\n clearTimeout(timeoutRef.current);\n if (immediate) setOpen(true);\n else timeoutRef.current = setTimeout(() => setOpen(true), state.delay);\n }\n\n function hide() {\n clearTimeout(timeoutRef.current);\n setOpen(false);\n }\n\n if (!isValidElement(children)) return children;\n\n const child = children as React.ReactElement<Record<string, unknown>>;\n const trigger = cloneElement(child, {\n // React 19 moved `ref` into props (deprecating direct element.ref\n // access, which still works in 18 but warns in 19) — checking\n // props.ref first, falling back to the older element.ref field,\n // covers both without picking one React major version to commit to.\n ref: mergeRefs(\n (child.props as { ref?: React.Ref<HTMLElement> }).ref ?? (child as unknown as { ref?: React.Ref<HTMLElement> }).ref,\n triggerRef\n ),\n onMouseEnter: composeHandlers(child.props.onMouseEnter as ((e: React.MouseEvent) => void) | undefined, () => show(false)),\n onMouseLeave: composeHandlers(child.props.onMouseLeave as ((e: React.MouseEvent) => void) | undefined, hide),\n onFocus: composeHandlers(child.props.onFocus as ((e: React.FocusEvent) => void) | undefined, () => show(true)),\n onBlur: composeHandlers(child.props.onBlur as ((e: React.FocusEvent) => void) | undefined, hide),\n \"aria-describedby\": open ? tooltipId : (child.props[\"aria-describedby\"] as string | undefined),\n });\n\n const tooltipEl = open && !state.isDisabled && (\n <ThemedPortal anchorRef={triggerRef}>\n {withThemeOverride(\n theme,\n withAccentOverride(\n color,\n <div\n ref={floatingRef}\n className={[getTooltipClasses(position?.placement ?? state.placement), className].filter(Boolean).join(\" \")}\n style={{\n ...style,\n position: \"fixed\",\n top: position?.top ?? -9999,\n left: position?.left ?? -9999,\n visibility: position ? \"visible\" : \"hidden\",\n }}\n {...getTooltipAriaProps(tooltipId)}\n >\n {content}\n </div>\n )\n )}\n </ThemedPortal>\n );\n\n return (\n <>\n {trigger}\n {tooltipEl}\n </>\n );\n});\n","import type { Placement, Alignment } from \"./floating\";\n\nexport type { Placement as TooltipPlacement, Alignment as TooltipAlign };\n\nexport interface TooltipCoreProps {\n placement?: Placement;\n align?: Alignment;\n offset?: number;\n /** ms of hover before showing. Keyboard focus shows immediately, no delay — see Tooltip.tsx. */\n delay?: number;\n disabled?: boolean;\n}\n\nexport interface TooltipState {\n placement: Placement;\n align: Alignment;\n offset: number;\n delay: number;\n isDisabled: boolean;\n}\n\nexport function resolveTooltipState(props: TooltipCoreProps): TooltipState {\n return {\n placement: props.placement ?? \"top\",\n align: props.align ?? \"center\",\n offset: props.offset ?? 8,\n delay: props.delay ?? 400,\n isDisabled: props.disabled ?? false,\n };\n}\n\nexport function getTooltipClasses(placement: Placement): string {\n return [\"nx-tooltip\", `nx-tooltip--${placement}`].join(\" \");\n}\n\n/**\n * WAI-ARIA tooltip pattern: the trigger gets aria-describedby\n * pointing at the tooltip's id; the tooltip itself gets\n * role=\"tooltip\". Nothing about focus — a tooltip is never a focus\n * target itself (unlike Modal), which is also why it doesn't use\n * useOverlayBehavior's focus-trap/autoFocus, just its Escape handling.\n */\nexport function getTooltipAriaProps(id: string) {\n return { role: \"tooltip\" as const, id };\n}\n","import { useLayoutEffect, useState } from \"react\";\nimport { computePosition, type Placement, type Alignment, type ComputedPosition } from \"../core/floating\";\n\nexport interface UseFloatingPositionOptions {\n isOpen: boolean;\n triggerRef: React.RefObject<HTMLElement | null>;\n floatingRef: React.RefObject<HTMLElement | null>;\n placement?: Placement;\n align?: Alignment;\n offset?: number;\n}\n\n/**\n * The DOM-measuring half of anchor positioning — core/floating.ts\n * has the actual placement math (pure, unit-tested). This hook's\n * only job is turning real elements into the plain rects that math\n * needs, and re-running it when the trigger moves (scroll/resize).\n */\nexport function useFloatingPosition({\n isOpen,\n triggerRef,\n floatingRef,\n placement = \"top\",\n align = \"center\",\n offset = 8,\n}: UseFloatingPositionOptions): ComputedPosition | null {\n const [position, setPosition] = useState<ComputedPosition | null>(null);\n\n useLayoutEffect(() => {\n if (!isOpen) {\n setPosition(null);\n return;\n }\n\n function recompute() {\n const trigger = triggerRef.current;\n const floating = floatingRef.current;\n if (!trigger || !floating) return;\n\n const triggerRect = trigger.getBoundingClientRect();\n const floatingRect = floating.getBoundingClientRect();\n const viewport = { top: 0, left: 0, width: window.innerWidth, height: window.innerHeight };\n\n setPosition(\n computePosition(\n { top: triggerRect.top, left: triggerRect.left, width: triggerRect.width, height: triggerRect.height },\n { width: floatingRect.width, height: floatingRect.height },\n { placement, align, offset, viewport }\n )\n );\n }\n\n // Two rAF ticks: the floating element needs to have actually\n // rendered (and been laid out with real dimensions) before its\n // getBoundingClientRect() means anything — on the very first\n // open it may still be a zero-size box on the first frame.\n const raf = requestAnimationFrame(() => requestAnimationFrame(recompute));\n\n window.addEventListener(\"scroll\", recompute, true);\n window.addEventListener(\"resize\", recompute);\n\n return () => {\n cancelAnimationFrame(raf);\n window.removeEventListener(\"scroll\", recompute, true);\n window.removeEventListener(\"resize\", recompute);\n };\n }, [isOpen, triggerRef, floatingRef, placement, align, offset]);\n\n return position;\n}\n","// ============================================================\n// Anchor positioning: computing where a floating element (a\n// Tooltip, and later a Popover/Dropdown/Select panel) should sit\n// relative to its trigger.\n//\n// This is deliberately NOT a DOM-touching module — every function\n// here takes plain rects and returns plain numbers, so the actual\n// placement math can be unit-tested directly (see\n// tests/floating.test.ts) without a browser or jsdom's notoriously\n// unreliable layout measurements. The one existing DOM-facing\n// consumer is theme-engine/useFloatingPosition.ts, which measures\n// real elements and calls into this.\n//\n// This is the specific gap the project's docs call out: the\n// original Popover attempt \"opened at the bottom of the page\n// instead of near its trigger\" and was removed for it. Getting\n// this module right — and tested — is what earns a portal-based\n// component back into the library.\n// ============================================================\n\nexport type Placement = \"top\" | \"bottom\" | \"left\" | \"right\";\nexport type Alignment = \"start\" | \"center\" | \"end\";\n\nexport interface Rect {\n top: number;\n left: number;\n width: number;\n height: number;\n}\n\nexport interface ComputePositionOptions {\n /** Preferred side of the trigger. Default \"top\". */\n placement?: Placement;\n /** Alignment along that side. Default \"center\". */\n align?: Alignment;\n /** Gap between trigger and floating element, in px. Default 8. */\n offset?: number;\n /** Viewport bounds to flip/clamp against. Defaults to window's, supplied by the caller. */\n viewport: Rect;\n /** Extra margin kept from the viewport edge when clamping, in px. Default 4. */\n viewportPadding?: number;\n}\n\nexport interface ComputedPosition {\n top: number;\n left: number;\n /** The placement actually used — may differ from the requested one if it had to flip to fit. */\n placement: Placement;\n}\n\nfunction placeFor(\n placement: Placement,\n align: Alignment,\n trigger: Rect,\n floating: { width: number; height: number },\n offset: number\n): { top: number; left: number } {\n const alignCross = (triggerStart: number, triggerSize: number, floatingSize: number): number => {\n switch (align) {\n case \"start\":\n return triggerStart;\n case \"end\":\n return triggerStart + triggerSize - floatingSize;\n case \"center\":\n default:\n return triggerStart + triggerSize / 2 - floatingSize / 2;\n }\n };\n\n switch (placement) {\n case \"top\":\n return { top: trigger.top - floating.height - offset, left: alignCross(trigger.left, trigger.width, floating.width) };\n case \"bottom\":\n return { top: trigger.top + trigger.height + offset, left: alignCross(trigger.left, trigger.width, floating.width) };\n case \"left\":\n return { left: trigger.left - floating.width - offset, top: alignCross(trigger.top, trigger.height, floating.height) };\n case \"right\":\n return { left: trigger.left + trigger.width + offset, top: alignCross(trigger.top, trigger.height, floating.height) };\n }\n}\n\nconst OPPOSITE: Record<Placement, Placement> = { top: \"bottom\", bottom: \"top\", left: \"right\", right: \"left\" };\n\nfunction fitsInViewport(\n pos: { top: number; left: number },\n floating: { width: number; height: number },\n viewport: Rect,\n padding: number\n): boolean {\n return (\n pos.top >= viewport.top + padding &&\n pos.left >= viewport.left + padding &&\n pos.top + floating.height <= viewport.top + viewport.height - padding &&\n pos.left + floating.width <= viewport.left + viewport.width - padding\n );\n}\n\n/**\n * Computes where a floating element should be placed relative to\n * its trigger. Tries the requested placement first; if it doesn't\n * fit in the viewport, flips to the opposite side (top<->bottom,\n * left<->right) and uses that if it fits better. Either way, the\n * final position is clamped to stay within the viewport — a very\n * wide/tall floating element, or a trigger right at the screen\n * edge, never ends up placed fully or partially off-screen.\n */\nexport function computePosition(\n trigger: Rect,\n floating: { width: number; height: number },\n options: ComputePositionOptions\n): ComputedPosition {\n const { placement = \"top\", align = \"center\", offset = 8, viewport, viewportPadding = 4 } = options;\n\n const preferred = placeFor(placement, align, trigger, floating, offset);\n let finalPlacement = placement;\n let finalPos = preferred;\n\n if (!fitsInViewport(preferred, floating, viewport, viewportPadding)) {\n const flipped = placeFor(OPPOSITE[placement], align, trigger, floating, offset);\n // Only actually flip if the opposite side is a genuine\n // improvement — otherwise keep the originally requested\n // placement (still clamped below) rather than flip-flopping\n // between two placements that both don't fit.\n if (fitsInViewport(flipped, floating, viewport, viewportPadding)) {\n finalPlacement = OPPOSITE[placement];\n finalPos = flipped;\n }\n }\n\n const clamp = (value: number, min: number, max: number): number => {\n // If the floating element is larger than the viewport on this\n // axis, min > max — Math.min(Math.max(...)) would produce a\n // nonsensical (negative/off-screen) result in that case. Pin to\n // the start edge instead: the top/left of the content stays\n // visible, which matters more than trying to also fit the end.\n if (min > max) return min;\n return Math.min(Math.max(value, min), max);\n };\n\n const clampedTop = clamp(finalPos.top, viewport.top + viewportPadding, viewport.top + viewport.height - floating.height - viewportPadding);\n const clampedLeft = clamp(finalPos.left, viewport.left + viewportPadding, viewport.left + viewport.width - floating.width - viewportPadding);\n\n return { top: clampedTop, left: clampedLeft, placement: finalPlacement };\n}\n","import React, { createContext, useCallback, useContext, useEffect, useId, useRef, useState } from \"react\";\nimport {\n resolveToastState,\n getToastClasses,\n getToastRole,\n getToastContainerClasses,\n type ToastVariant,\n type ToastPosition,\n} from \"../core/toast\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport { ThemedPortal } from \"../theme-engine/ThemedPortal\";\nimport { InfoIcon, CheckCircleIcon, AlertIcon, CrossCircleIcon } from \"../icons/react\";\nimport \"./Toast.css\";\n\nconst DEFAULT_ICONS = {\n info: InfoIcon,\n success: CheckCircleIcon,\n warning: AlertIcon,\n danger: CrossCircleIcon,\n} as const;\n\nexport interface ShowToastOptions {\n variant?: ToastVariant;\n title?: React.ReactNode;\n description?: React.ReactNode;\n /** ms before auto-dismiss. 0 = sticky. Default 4000. */\n duration?: number;\n action?: React.ReactNode;\n}\n\ninterface ToastRecord extends ShowToastOptions {\n id: string;\n}\n\ninterface ToastContextValue {\n show: (options: ShowToastOptions) => string;\n dismiss: (id: string) => void;\n dismissAll: () => void;\n}\n\nconst ToastContext = createContext<ToastContextValue | null>(null);\n\n/** Throws outside a ToastProvider — same \"fail loudly, not silently\" preference as the rest of the library. */\nexport function useToast(): ToastContextValue {\n const ctx = useContext(ToastContext);\n if (!ctx) throw new Error(\"useToast() must be called inside a <ToastProvider>.\");\n return ctx;\n}\n\ninterface ToastProviderProps extends BaseComponentProps {\n children: React.ReactNode;\n position?: ToastPosition;\n}\n\nexport function ToastProvider({ children, position = \"bottom-right\", theme, color }: ToastProviderProps) {\n const [toasts, setToasts] = useState<ToastRecord[]>([]);\n const sentinelRef = useRef<HTMLSpanElement>(null);\n const idCounter = useRef(0);\n\n const dismiss = useCallback((id: string) => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n }, []);\n\n const dismissAll = useCallback(() => setToasts([]), []);\n\n const show = useCallback((options: ShowToastOptions) => {\n idCounter.current += 1;\n const id = `nx-toast-${idCounter.current}`;\n setToasts((prev) => [...prev, { ...options, id }]);\n return id;\n }, []);\n\n // Escape dismisses the most recently shown toast — not a full\n // focus-trap/return-focus overlay behavior (a toast never steals\n // focus to begin with, unlike Modal), just a way for a keyboard\n // user to clear a notification without hunting for its dismiss\n // button. Only listens while at least one toast is showing.\n useEffect(() => {\n if (toasts.length === 0) return;\n function handleKeyDown(e: KeyboardEvent) {\n if (e.key !== \"Escape\") return;\n setToasts((prev) => prev.slice(0, -1));\n }\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [toasts.length]);\n\n const containerClasses = getToastContainerClasses(position);\n\n return (\n <ToastContext.Provider value={{ show, dismiss, dismissAll }}>\n {children}\n <span ref={sentinelRef} style={{ display: \"none\" }} aria-hidden=\"true\" />\n {toasts.length > 0 && (\n <ThemedPortal anchorRef={sentinelRef}>\n {withThemeOverride(\n theme,\n withAccentOverride(\n color,\n <div className={containerClasses}>\n {toasts.map((toast) => (\n <ToastItem key={toast.id} toast={toast} onDismiss={() => dismiss(toast.id)} />\n ))}\n </div>\n )\n )}\n </ThemedPortal>\n )}\n </ToastContext.Provider>\n );\n}\n\nfunction ToastItem({ toast, onDismiss }: { toast: ToastRecord; onDismiss: () => void }) {\n const state = resolveToastState(toast);\n const titleId = `nx-toast-title-${useId()}`;\n const remainingRef = useRef(state.duration);\n const startRef = useRef<number>(0);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n\n useEffect(() => {\n if (state.duration <= 0) return; // sticky — no auto-dismiss\n startTimer();\n return () => clearTimeout(timeoutRef.current);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n function startTimer() {\n startRef.current = Date.now();\n timeoutRef.current = setTimeout(onDismiss, remainingRef.current);\n }\n\n function pauseTimer() {\n if (state.duration <= 0) return;\n clearTimeout(timeoutRef.current);\n const elapsed = Date.now() - startRef.current;\n remainingRef.current = Math.max(0, remainingRef.current - elapsed);\n }\n\n function resumeTimer() {\n if (state.duration <= 0) return;\n startTimer();\n }\n\n const Icon = DEFAULT_ICONS[state.variant];\n\n return (\n <div\n className={getToastClasses(state.variant)}\n role={getToastRole(state.variant)}\n aria-labelledby={toast.title ? titleId : undefined}\n onMouseEnter={pauseTimer}\n onMouseLeave={resumeTimer}\n >\n <span className=\"nx-toast__icon\" aria-hidden=\"true\">\n <Icon size={18} />\n </span>\n <div className=\"nx-toast__body\">\n {toast.title && (\n <div id={titleId} className=\"nx-toast__title\">\n {toast.title}\n </div>\n )}\n {toast.description && <div className=\"nx-toast__description\">{toast.description}</div>}\n </div>\n {toast.action && <div className=\"nx-toast__action\">{toast.action}</div>}\n <button type=\"button\" className=\"nx-toast__dismiss\" onClick={onDismiss} aria-label=\"Dismiss notification\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M2.5 2.5l9 9M11.5 2.5l-9 9\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n );\n}\n","export type ToastVariant = \"info\" | \"success\" | \"warning\" | \"danger\";\nexport type ToastPosition = \"top-left\" | \"top-center\" | \"top-right\" | \"bottom-left\" | \"bottom-center\" | \"bottom-right\";\n\nexport interface ToastCoreProps {\n variant?: ToastVariant;\n /** ms before auto-dismiss. 0 = sticky, stays until dismissed manually. Default 4000. */\n duration?: number;\n}\n\nexport interface ToastResolvedState {\n variant: ToastVariant;\n duration: number;\n}\n\nexport function resolveToastState(props: ToastCoreProps): ToastResolvedState {\n return {\n variant: props.variant ?? \"info\",\n duration: props.duration ?? 4000,\n };\n}\n\nexport function getToastClasses(variant: ToastVariant): string {\n return [\"nx-toast\", `nx-toast--${variant}`].join(\" \");\n}\n\n// Same reasoning as Alert's getAlertRole — warning/danger interrupt,\n// info/success are advisory. Toast and Alert are different\n// components (transient queue vs. static inline) but the same\n// semantic-severity-to-ARIA-role mapping applies to both.\nexport function getToastRole(variant: ToastVariant): \"alert\" | \"status\" {\n return variant === \"danger\" || variant === \"warning\" ? \"alert\" : \"status\";\n}\n\nexport function getToastContainerClasses(position: ToastPosition): string {\n return [\"nx-toast-container\", `nx-toast-container--${position}`].join(\" \");\n}\n","import React, { forwardRef, useId } from \"react\";\nimport {\n resolveProgressState,\n getProgressClasses,\n getProgressValueText,\n getProgressAriaProps,\n type ProgressCoreProps,\n} from \"../core/progress\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport \"./Progress.css\";\n\ninterface ProgressProps extends ProgressCoreProps, BaseComponentProps {\n /**\n * Accessible name for the bar. A progressbar with no name is a\n * WCAG failure, so if neither `label` nor a `labelledBy` is given\n * and there's no visible label to point at, this falls back to a\n * generic \"Progress\" — better than an unnamed meter.\n */\n label?: string;\n /** id of an external visible element that names this bar (instead of `label`). */\n labelledBy?: string;\n}\n\n/**\n * Determinate or indeterminate progress meter (row 7, Category A).\n * Ref forwards to the `progressbar` element itself — the node a\n * consumer would want to measure or observe — not the layout\n * wrapper, following the same \"ref goes to the meaningful element\"\n * choice Input makes (ref → the <input>, not the field wrapper).\n *\n * The fill width is set inline only when determinate; in the\n * indeterminate state the width is owned entirely by a CSS keyframe\n * animation, so no inline width is written (setting one would fight\n * the animation).\n */\nexport const Progress = forwardRef<HTMLDivElement, ProgressProps>(function Progress(\n { className, style, theme, color, label, labelledBy, ...rest },\n ref\n) {\n const state = resolveProgressState(rest);\n const uid = useId();\n const valueText = getProgressValueText(state);\n\n const classes = [getProgressClasses(state), className].filter(Boolean).join(\" \");\n\n // If the consumer shows the numeric value, that visible text is the\n // natural accessible name — point aria-labelledby at it rather than\n // duplicating a string into aria-label.\n const valueId = state.showValue ? `nx-progress-value-${uid}` : undefined;\n const resolvedLabelledBy = labelledBy ?? valueId;\n const aria = getProgressAriaProps(state, {\n // Only fall back to a generic label when there's truly nothing\n // else naming the bar (no explicit label, no external labelledBy,\n // no visible value text).\n label: label ?? (resolvedLabelledBy ? undefined : \"Progress\"),\n labelledBy: label ? undefined : resolvedLabelledBy,\n });\n\n const track = (\n <div\n ref={ref}\n className={classes}\n {...aria}\n >\n <div\n className=\"nx-progress__fill\"\n style={state.isIndeterminate ? undefined : { inlineSize: `${state.percent}%` }}\n />\n </div>\n );\n\n const output = (\n <div className=\"nx-progress-wrap\" style={style}>\n {track}\n {state.showValue && (\n <span id={valueId} className=\"nx-progress__value\">\n {state.isIndeterminate ? \"…\" : valueText}\n </span>\n )}\n </div>\n );\n\n // theme = shape, color = accent — independent overrides (Rule 5/5b).\n return withThemeOverride(theme, withAccentOverride(color, output));\n});\n","import type { Size } from \"./types\";\n\n// ============================================================\n// Category A (static/display primitive). No portal, no overlay,\n// no interactivity — the value is driven entirely by the consumer.\n//\n// The one bit of real logic worth keeping out of the React file\n// (BUILDING-COMPONENTS.md Category A: \"resist the urge to inline\n// the logic directly in the .tsx file\") is clamping: a consumer\n// can legitimately pass value=140 max=100 (e.g. an over-quota\n// meter) or a negative value mid-animation, and the rendered bar\n// and aria-valuenow must both stay inside [0, max] regardless.\n// Doing that here means a future Vue/Angular Progress gets the\n// same clamp for free.\n// ============================================================\n\n/**\n * A tone, not a shape. Progress deliberately does NOT reuse the\n * shared `Variant` union (\"solid\" | \"outline\" | \"ghost\" | \"soft\") —\n * that describes fill treatment for interactive controls and means\n * nothing for a meter. What varies here is semantic color, so this\n * is its own small union, and (per CONTRACT.md Rule 5b) `success`/\n * `warning`/`danger` are the theme-defined SEMANTIC colors, kept\n * separate from the brand accent. `brand` is the default and is the\n * one tone that tracks the accent.\n */\nexport type ProgressVariant = \"brand\" | \"success\" | \"warning\" | \"danger\";\n\nexport interface ProgressCoreProps {\n /** 0..max. Ignored (and the bar animates) when `indeterminate`. */\n value?: number;\n /** Upper bound. Default 100. */\n max?: number;\n /** Unknown-duration state: an animated bar, no numeric value. */\n indeterminate?: boolean;\n size?: Size;\n variant?: ProgressVariant;\n /** Render the numeric percent next to the track. Default false. */\n showValue?: boolean;\n}\n\nexport interface ProgressState {\n /** The consumer's value, clamped into [0, max]. */\n value: number;\n max: number;\n /** 0..100, derived from the clamped value. 0 when max <= 0. */\n percent: number;\n isIndeterminate: boolean;\n size: Size;\n variant: ProgressVariant;\n showValue: boolean;\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n if (Number.isNaN(value)) return min;\n return Math.min(Math.max(value, min), max);\n}\n\nexport function resolveProgressState(props: ProgressCoreProps): ProgressState {\n // ?? throughout, never || (Rule 3): `value={0}` and `max={0}` are\n // both meaningful and must not be silently swapped for a default.\n const max = props.max ?? 100;\n const rawValue = props.value ?? 0;\n const safeMax = max > 0 ? max : 0;\n const value = safeMax > 0 ? clamp(rawValue, 0, safeMax) : 0;\n const percent = safeMax > 0 ? (value / safeMax) * 100 : 0;\n\n return {\n value,\n max: safeMax,\n percent,\n isIndeterminate: props.indeterminate ?? false,\n size: props.size ?? \"md\",\n variant: props.variant ?? \"brand\",\n showValue: props.showValue ?? false,\n };\n}\n\nexport function getProgressClasses(state: ProgressState): string {\n return [\n \"nx-progress\",\n `nx-progress--${state.size}`,\n `nx-progress--${state.variant}`,\n state.isIndeterminate && \"nx-progress--indeterminate\",\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\n/** The rounded percent string used for both the visible label and aria-valuetext. */\nexport function getProgressValueText(state: ProgressState): string {\n return `${Math.round(state.percent)}%`;\n}\n\n/**\n * WAI-ARIA `progressbar` role. When indeterminate, `aria-valuenow`\n * is deliberately omitted (its absence is what tells assistive tech\n * the value is unknown, not zero) — that's the whole point of the\n * indeterminate state, so a bar mid-load doesn't announce \"0%\".\n * An explicit `label` becomes `aria-label`; a caller that instead\n * wires an external `<label>` can pass `labelledBy`.\n */\nexport function getProgressAriaProps(\n state: ProgressState,\n opts: { label?: string; labelledBy?: string } = {}\n) {\n return {\n role: \"progressbar\" as const,\n \"aria-valuemin\": 0,\n \"aria-valuemax\": state.max,\n \"aria-valuenow\": state.isIndeterminate ? undefined : state.value,\n \"aria-valuetext\": state.isIndeterminate ? undefined : getProgressValueText(state),\n \"aria-label\": opts.label,\n \"aria-labelledby\": opts.labelledBy,\n };\n}\n","import React, {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n resolveTabsState,\n getRootClasses,\n getTabListClasses,\n getTabClasses,\n getTabPanelClasses,\n getTabListAriaProps,\n getTabAriaProps,\n getTabPanelAriaProps,\n makeTabId,\n makePanelId,\n type TabsCoreProps,\n} from \"../core/tabs\";\nimport { getIndexForKey } from \"../core/collection\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport \"./Tabs.css\";\n\n// ============================================================\n// TABS — compound React layer over core/tabs.ts + core/collection.ts\n//\n// <Tabs> owns the selected value (controlled OR uncontrolled) and\n// shares it, plus the base id and orientation, through context.\n// <TabList> is the roving-focus keyboard container. <Tab> is a\n// tab button; <TabPanel> is its region. The nav math lives in the\n// shared collection primitive, the ARIA wiring in the core module,\n// so this file is only React glue.\n// ============================================================\n\ninterface TabsContextValue {\n value: string | undefined;\n setValue: (next: string) => void;\n baseId: string;\n orientation: \"horizontal\" | \"vertical\";\n activationMode: \"automatic\" | \"manual\";\n registerTab: (value: string, disabled: boolean) => void;\n unregisterTab: (value: string) => void;\n}\n\nconst TabsContext = createContext<TabsContextValue | null>(null);\n\nfunction useTabsContext(component: string): TabsContextValue {\n const ctx = useContext(TabsContext);\n if (!ctx) {\n // Same \"fail loudly\" stance as useToast — a <Tab> or <TabPanel>\n // outside <Tabs> is a wiring mistake, not a soft-degrade case.\n throw new Error(`<${component}> must be rendered inside a <Tabs>.`);\n }\n return ctx;\n}\n\n// ---- Root ----------------------------------------------------\n\ninterface TabsProps extends TabsCoreProps, BaseComponentProps {\n /** Selected tab value (controlled). */\n value?: string;\n /** Initial selected tab value (uncontrolled). */\n defaultValue?: string;\n /** Fires with the newly selected value on every change. */\n onValueChange?: (value: string) => void;\n children?: React.ReactNode;\n}\n\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>(function Tabs(\n {\n value,\n defaultValue,\n onValueChange,\n orientation,\n activationMode,\n variant,\n size,\n theme,\n color,\n className,\n style,\n children,\n ...rest\n },\n ref\n) {\n const state = resolveTabsState({ orientation, activationMode, variant, size });\n const baseId = useId();\n\n // Controlled when `value` is provided; otherwise this state drives it.\n const isControlled = value !== undefined;\n const [uncontrolled, setUncontrolled] = useState<string | undefined>(defaultValue);\n\n // Fallback selection: when neither value nor defaultValue is set, the\n // first *enabled* tab wins (WAI-ARIA's \"a tab is selected by default\").\n // Tabs are declared as opaque children, so they register their value\n // with the root rather than the root parsing children.\n const itemsRef = useRef<{ value: string; disabled: boolean }[]>([]);\n const [fallback, setFallback] = useState<string | undefined>(undefined);\n const recomputeFallback = useCallback(() => {\n setFallback(itemsRef.current.find((i) => !i.disabled)?.value);\n }, []);\n const registerTab = useCallback(\n (v: string, disabled: boolean) => {\n const existing = itemsRef.current.find((i) => i.value === v);\n if (existing) existing.disabled = disabled;\n else itemsRef.current.push({ value: v, disabled });\n recomputeFallback();\n },\n [recomputeFallback]\n );\n const unregisterTab = useCallback(\n (v: string) => {\n itemsRef.current = itemsRef.current.filter((i) => i.value !== v);\n recomputeFallback();\n },\n [recomputeFallback]\n );\n\n const selectedValue = (isControlled ? value : uncontrolled) ?? fallback;\n\n const setValue = useCallback(\n (next: string) => {\n if (!isControlled) setUncontrolled(next);\n onValueChange?.(next);\n },\n [isControlled, onValueChange]\n );\n\n const ctx = useMemo<TabsContextValue>(\n () => ({\n value: selectedValue,\n setValue,\n baseId,\n orientation: state.orientation,\n activationMode: state.activationMode,\n registerTab,\n unregisterTab,\n }),\n [selectedValue, setValue, baseId, state.orientation, state.activationMode, registerTab, unregisterTab]\n );\n\n const output = (\n <TabsContext.Provider value={ctx}>\n <div\n ref={ref}\n className={getRootClasses(state, className)}\n style={style}\n data-orientation={state.orientation}\n {...rest}\n >\n {children}\n </div>\n </TabsContext.Provider>\n );\n\n // theme = shape, color = accent — independent overrides (Rule 5/5b).\n return withThemeOverride(theme, withAccentOverride(color, output));\n});\n\n// ---- TabList (roving-focus container) ------------------------\n\ninterface TabListProps extends React.HTMLAttributes<HTMLDivElement> {\n children?: React.ReactNode;\n}\n\nexport const TabList = forwardRef<HTMLDivElement, TabListProps>(function TabList(\n { className, onKeyDown, children, ...rest },\n forwardedRef\n) {\n const ctx = useTabsContext(\"TabList\");\n const listRef = useRef<HTMLDivElement | null>(null);\n\n const setRefs = useCallback(\n (node: HTMLDivElement | null) => {\n listRef.current = node;\n if (typeof forwardedRef === \"function\") forwardedRef(node);\n else if (forwardedRef) (forwardedRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n },\n [forwardedRef]\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n const list = listRef.current;\n if (!list) return;\n\n // Authoritative DOM order — no dependence on child registration\n // order — so nav is correct even if tabs are conditionally shown.\n const tabs = Array.from(list.querySelectorAll<HTMLElement>('[role=\"tab\"]'));\n if (tabs.length === 0) return;\n\n const disabled = tabs.map(\n (t) => (t as HTMLButtonElement).disabled || t.getAttribute(\"aria-disabled\") === \"true\"\n );\n const currentIndex = tabs.findIndex((t) => t === document.activeElement);\n\n const next = getIndexForKey(e.key, currentIndex, disabled, {\n orientation: ctx.orientation,\n loop: true,\n });\n if (next === null) return;\n\n e.preventDefault();\n const target = tabs[next];\n target.focus();\n\n // Automatic activation follows focus; manual activation waits for\n // the click/Enter/Space that focusing a real <button> produces.\n if (ctx.activationMode === \"automatic\") {\n const v = target.getAttribute(\"data-value\");\n if (v !== null) ctx.setValue(v);\n }\n },\n [ctx, onKeyDown]\n );\n\n const aria = getTabListAriaProps(ctx.orientation);\n\n return (\n <div\n ref={setRefs}\n className={[getTabListClasses(), className].filter(Boolean).join(\" \")}\n onKeyDown={handleKeyDown}\n {...aria}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\n// ---- Tab -----------------------------------------------------\n\ninterface TabProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"value\"> {\n /** Identifies this tab and links it to the panel with the same value. */\n value: string;\n disabled?: boolean;\n children?: React.ReactNode;\n}\n\nexport const Tab = forwardRef<HTMLButtonElement, TabProps>(function Tab(\n { value, disabled = false, className, onClick, children, ...rest },\n ref\n) {\n const ctx = useTabsContext(\"Tab\");\n const selected = ctx.value === value;\n const tabId = makeTabId(ctx.baseId, value);\n const panelId = makePanelId(ctx.baseId, value);\n\n // Register for the root's first-enabled-tab fallback.\n useEffect(() => {\n ctx.registerTab(value, disabled);\n return () => ctx.unregisterTab(value);\n }, [ctx, value, disabled]);\n\n const aria = getTabAriaProps({ selected, disabled, tabId, panelId });\n\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (e.defaultPrevented || disabled) return;\n ctx.setValue(value);\n },\n [ctx, value, disabled, onClick]\n );\n\n return (\n <button\n ref={ref}\n type=\"button\"\n data-value={value}\n className={[getTabClasses(selected, disabled), className].filter(Boolean).join(\" \")}\n disabled={disabled}\n onClick={handleClick}\n {...aria}\n {...rest}\n >\n {children}\n </button>\n );\n});\n\n// ---- TabPanel ------------------------------------------------\n\ninterface TabPanelProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Links this panel to the tab with the same value. */\n value: string;\n /**\n * Keep the panel mounted (just hidden) when inactive, so its\n * internal state survives tab switches. Default false — inactive\n * panels unmount, which is lighter and the common case.\n */\n forceMount?: boolean;\n children?: React.ReactNode;\n}\n\nexport const TabPanel = forwardRef<HTMLDivElement, TabPanelProps>(function TabPanel(\n { value, forceMount = false, className, children, ...rest },\n ref\n) {\n const ctx = useTabsContext(\"TabPanel\");\n const selected = ctx.value === value;\n const tabId = makeTabId(ctx.baseId, value);\n const panelId = makePanelId(ctx.baseId, value);\n\n if (!selected && !forceMount) return null;\n\n const aria = getTabPanelAriaProps({ tabId, panelId });\n\n return (\n <div\n ref={ref}\n className={getTabPanelClasses(className)}\n hidden={!selected}\n {...aria}\n {...rest}\n >\n {children}\n </div>\n );\n});\n","import type { Size } from \"./types\";\n\n// ============================================================\n// TABS — pure core (Category E: tablist/tab/tabpanel)\n//\n// This is the \"shape + ARIA + id wiring\" half of Tabs, with no\n// React and no DOM, so the parts most likely to regress — the\n// exact aria-* attributes and the id linking each tab to its\n// panel — are unit-testable in isolation (tests/tabs.test.tsx),\n// the same split every other component here uses.\n//\n// The KEYBOARD movement itself is not reimplemented here: it\n// composes core/collection.ts (getIndexForKey / roving index),\n// which BUILDING-COMPONENTS.md Category E and CONTRACT.md Rule\n// 12 both call for — Tabs and Accordion share that primitive\n// rather than each hand-rolling arrow-key handling.\n// ============================================================\n\n/**\n * Horizontal is the default (a row of tabs above their panels).\n * Vertical changes two things at once, which is why it's a single\n * flag and not two: the visual layout AND — per WAI-ARIA — which\n * arrow keys move between tabs (Up/Down instead of Left/Right).\n */\nexport type TabsOrientation = \"horizontal\" | \"vertical\";\n\n/**\n * \"automatic\" (the WAI-ARIA default) selects a tab the moment it's\n * focused via the arrow keys — good for cheap panels. \"manual\"\n * moves focus without selecting, requiring Enter/Space to commit —\n * the right choice when showing a panel is expensive (a network\n * fetch, a heavy chart) and you don't want every arrow press to\n * trigger it.\n */\nexport type TabsActivationMode = \"automatic\" | \"manual\";\n\n/** Visual treatment of the tab row. Shape only — never encodes color meaning. */\nexport type TabsVariant = \"line\" | \"soft\" | \"solid\";\n\nexport interface TabsCoreProps {\n orientation?: TabsOrientation;\n activationMode?: TabsActivationMode;\n variant?: TabsVariant;\n size?: Size;\n}\n\nexport interface TabsState {\n orientation: TabsOrientation;\n activationMode: TabsActivationMode;\n variant: TabsVariant;\n size: Size;\n}\n\nexport function resolveTabsState(props: TabsCoreProps): TabsState {\n return {\n // ?? not || throughout (CONTRACT.md Rule 3): these are all\n // non-empty defaults today, but the discipline is what keeps a\n // future `size={0}`-style falsy-but-valid value from silently\n // snapping back to the default.\n orientation: props.orientation ?? \"horizontal\",\n activationMode: props.activationMode ?? \"automatic\",\n variant: props.variant ?? \"line\",\n size: props.size ?? \"md\",\n };\n}\n\n// --- id wiring ------------------------------------------------\n// A tab and its panel must reference each other by id\n// (tab.aria-controls -> panel, panel.aria-labelledby -> tab).\n// Both are derived from the same (baseId, value) pair so the two\n// sides agree without threading refs between them. Values are\n// sanitized because they become part of a DOM id and may contain\n// spaces or punctuation; distinct values must stay distinct\n// strings (documented in tabs.mdx).\n\nfunction sanitizeValue(value: string): string {\n // Keep it readable for debugging but valid as an id fragment.\n return value.replace(/[^a-zA-Z0-9_-]/g, \"_\");\n}\n\nexport function makeTabId(baseId: string, value: string): string {\n return `${baseId}-tab-${sanitizeValue(value)}`;\n}\n\nexport function makePanelId(baseId: string, value: string): string {\n return `${baseId}-panel-${sanitizeValue(value)}`;\n}\n\n// --- class helpers -------------------------------------------\n\nexport function getRootClasses(state: TabsState, className?: string): string {\n return [\n \"nx-tabs\",\n `nx-tabs--${state.orientation}`,\n `nx-tabs--${state.variant}`,\n `nx-tabs--${state.size}`,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\nexport function getTabListClasses(): string {\n return \"nx-tabs__list\";\n}\n\nexport function getTabClasses(selected: boolean, disabled: boolean): string {\n return [\n \"nx-tabs__tab\",\n selected && \"nx-tabs__tab--selected\",\n disabled && \"nx-tabs__tab--disabled\",\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\nexport function getTabPanelClasses(className?: string): string {\n return [\"nx-tabs__panel\", className].filter(Boolean).join(\" \");\n}\n\n// --- ARIA -----------------------------------------------------\n\nexport function getTabListAriaProps(orientation: TabsOrientation) {\n return {\n role: \"tablist\" as const,\n \"aria-orientation\": orientation,\n };\n}\n\nexport interface TabAriaInput {\n selected: boolean;\n disabled: boolean;\n tabId: string;\n panelId: string;\n}\n\nexport function getTabAriaProps(input: TabAriaInput) {\n return {\n role: \"tab\" as const,\n id: input.tabId,\n // A tab always controls its panel, so aria-controls points there\n // even when the tab isn't selected — assistive tech uses it to\n // let users jump from tab to panel.\n \"aria-controls\": input.panelId,\n \"aria-selected\": input.selected,\n // Roving tabindex: exactly one tab is in the tab order at a time\n // (the selected one); the rest are reachable only via arrow keys.\n tabIndex: input.selected ? 0 : -1,\n // Prefer the DOM `disabled` attribute on a real <button>; expose\n // aria-disabled only as the semantic mirror for non-button hosts.\n \"aria-disabled\": input.disabled || undefined,\n };\n}\n\nexport interface TabPanelAriaInput {\n tabId: string;\n panelId: string;\n}\n\nexport function getTabPanelAriaProps(input: TabPanelAriaInput) {\n return {\n role: \"tabpanel\" as const,\n id: input.panelId,\n \"aria-labelledby\": input.tabId,\n // The panel itself is a focus stop (tabIndex 0) so that keyboard\n // users landing on a panel with no focusable content can still\n // scroll/read it — the WAI-ARIA authoring practice for tabpanels.\n tabIndex: 0,\n };\n}\n","// ============================================================\n// SHARED KEYBOARD-NAVIGABLE COLLECTION PRIMITIVE\n//\n// This is the \"build it once\" half of CONTRACT.md Rule 12\n// (components compose primitives, they don't reimplement them)\n// and BUILDING-COMPONENTS.md's Category D note by name:\n//\n// \"Build that list primitive (ListBox — arrow-key navigation,\n// typeahead, active-descendant ARIA wiring) once, and have\n// Select, Combobox, and Command all use it instead of each\n// implementing arrow-key handling separately.\"\n//\n// Four different components need the exact same \"move through a\n// list of items with the arrow keys, skipping disabled ones,\n// wrapping at the ends, and jumping by typed characters\":\n// - Tabs (Category E, roving focus across tab buttons)\n// - Accordion (Category E, roving focus across headers)\n// - Dropdown (Category C, roving focus across menu items)\n// - Select (Category D, active-descendant across options)\n//\n// The DIFFERENCES between them (tab vs menuitem vs option roles;\n// real DOM focus vs aria-activedescendant) live in each\n// component. The SAMENESS — the index math and typeahead — lives\n// here, as dependency-free pure functions that can be unit-tested\n// without React or a DOM (see tests/collection.test.ts), exactly\n// like core/floating.ts did for anchor positioning.\n// ============================================================\n\n/** Which arrow keys move the active item, mirroring the WAI-ARIA orientation of the widget. */\nexport type NavOrientation = \"vertical\" | \"horizontal\" | \"both\";\n\n/** The navigation keys this primitive understands. Anything else returns null from getIndexForKey. */\nexport type NavKey =\n | \"ArrowDown\"\n | \"ArrowUp\"\n | \"ArrowLeft\"\n | \"ArrowRight\"\n | \"Home\"\n | \"End\";\n\nexport interface NavOptions {\n /** Wrap past the ends (last -> first). Default true. */\n loop?: boolean;\n /** Which arrows are \"next\"/\"previous\". Default \"vertical\". */\n orientation?: NavOrientation;\n}\n\n/** First index whose `disabled` flag is false, or -1 if every item is disabled/empty. */\nexport function firstEnabledIndex(disabled: readonly boolean[]): number {\n for (let i = 0; i < disabled.length; i++) {\n if (!disabled[i]) return i;\n }\n return -1;\n}\n\n/** Last enabled index, or -1. */\nexport function lastEnabledIndex(disabled: readonly boolean[]): number {\n for (let i = disabled.length - 1; i >= 0; i--) {\n if (!disabled[i]) return i;\n }\n return -1;\n}\n\n/**\n * The next enabled index from `from`, moving by `dir` (+1 forward,\n * -1 back), skipping disabled items. With `loop`, running off one\n * end continues from the other; without it, hitting the end means\n * \"stay put\" (returns `from`) rather than wrapping. If no other\n * enabled item exists it returns `from` unchanged. `from` may be -1\n * to mean \"nothing active yet\" — the first step then lands on index\n * 0 (forward) or the last index (back).\n */\nexport function nextEnabledIndex(\n disabled: readonly boolean[],\n from: number,\n dir: 1 | -1,\n loop = true\n): number {\n const n = disabled.length;\n if (n === 0) return -1;\n\n // Seed position. A `from` of -1 means \"nothing active yet\"; it has\n // to sit just *outside* the list so the first step lands on the\n // right end — just before index 0 going forward (-1), just after\n // the last index going back (n). Using -1 for both directions is\n // the subtle bug this guards against: -1 + -1 = -2 wraps to n-2,\n // not the last index the docstring promises.\n let i = from >= 0 ? from : dir === 1 ? -1 : n;\n for (let step = 0; step < n; step++) {\n i += dir;\n if (i < 0 || i >= n) {\n if (!loop) return from >= 0 ? from : dir === 1 ? firstEnabledIndex(disabled) : lastEnabledIndex(disabled);\n i = ((i % n) + n) % n; // safe modulo for negatives\n }\n if (!disabled[i]) return i;\n }\n return from;\n}\n\n/**\n * Maps a keydown to the index that key should move to, or null if\n * the key isn't a navigation key this widget handles (so the caller\n * knows whether to preventDefault). Orientation controls which\n * arrows count: a horizontal tablist navigates with Left/Right, a\n * vertical listbox with Up/Down, and \"both\" (a grid-ish menu)\n * accepts either axis.\n */\nexport function getIndexForKey(\n key: string,\n current: number,\n disabled: readonly boolean[],\n options: NavOptions = {}\n): number | null {\n const { loop = true, orientation = \"vertical\" } = options;\n\n const nextKeys =\n orientation === \"horizontal\"\n ? [\"ArrowRight\"]\n : orientation === \"both\"\n ? [\"ArrowRight\", \"ArrowDown\"]\n : [\"ArrowDown\"];\n const prevKeys =\n orientation === \"horizontal\"\n ? [\"ArrowLeft\"]\n : orientation === \"both\"\n ? [\"ArrowLeft\", \"ArrowUp\"]\n : [\"ArrowUp\"];\n\n if (nextKeys.includes(key)) return nextEnabledIndex(disabled, current, 1, loop);\n if (prevKeys.includes(key)) return nextEnabledIndex(disabled, current, -1, loop);\n if (key === \"Home\") return firstEnabledIndex(disabled);\n if (key === \"End\") return lastEnabledIndex(disabled);\n return null;\n}\n\n/**\n * Type-to-jump. Given each item's text label and an accumulated\n * query string, returns the next enabled item whose label starts\n * with the query, searching AFTER `from` and wrapping around. This\n * ordering is what makes repeatedly pressing the same first letter\n * cycle through all items starting with it — the classic native\n * <select> behavior — rather than re-selecting the current one.\n * Case-insensitive. Returns null when nothing matches.\n */\nexport function matchTypeahead(\n labels: readonly string[],\n query: string,\n from: number,\n disabled?: readonly boolean[]\n): number | null {\n const q = query.trim().toLowerCase();\n if (!q) return null;\n const n = labels.length;\n\n for (let step = 1; step <= n; step++) {\n const i = (from + step) % n;\n if (disabled?.[i]) continue;\n if (labels[i].toLowerCase().startsWith(q)) return i;\n }\n return null;\n}\n\n/**\n * Shared typeahead buffer manager (used by the React hook). Appends\n * to the query if keystrokes come quickly, or starts fresh after a\n * pause. Kept pure — it takes the previous buffer + timestamps and\n * returns the next buffer — so the timing logic is testable without\n * fake timers. `timeoutMs` default 500ms matches the native\n * <select> reset window.\n */\nexport function nextTypeaheadQuery(\n prevQuery: string,\n prevTime: number,\n char: string,\n now: number,\n timeoutMs = 500\n): string {\n if (now - prevTime > timeoutMs) return char;\n // Pressing the same key repeatedly (e.g. \"sss\") is treated as\n // \"cycle through items starting with s\", not a search for \"sss\" —\n // so the buffer stays a single char in that case.\n if (prevQuery.length === 1 && prevQuery === char) return char;\n return prevQuery + char;\n}\n","import React, {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n resolveAccordionState,\n toggleMultiple,\n toggleSingle,\n makeTriggerId,\n makePanelId,\n getRootClasses,\n getItemClasses,\n getTriggerClasses,\n getPanelClasses,\n getTriggerAriaProps,\n getPanelAriaProps,\n type AccordionCoreProps,\n} from \"../core/accordion\";\nimport { getIndexForKey } from \"../core/collection\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport { ChevronDownIcon } from \"../icons/react\";\nimport \"./Accordion.css\";\n\n// ============================================================\n// ACCORDION — compound React layer over core/accordion.ts.\n//\n// <Accordion> owns which items are open (controlled or\n// uncontrolled) and shares that + a toggle through context.\n// <AccordionItem> scopes one section (its value + open/disabled).\n// <AccordionTrigger> is the header button; <AccordionPanel> the\n// region it discloses. Toggle logic and ARIA come from the core\n// module; arrow-key movement between headers reuses the shared\n// core/collection primitive.\n// ============================================================\n\ninterface AccordionContextValue {\n baseId: string;\n isOpen: (value: string) => boolean;\n toggle: (value: string) => void;\n}\n\nconst AccordionContext = createContext<AccordionContextValue | null>(null);\n\nfunction useAccordionContext(component: string): AccordionContextValue {\n const ctx = useContext(AccordionContext);\n if (!ctx) throw new Error(`<${component}> must be rendered inside an <Accordion>.`);\n return ctx;\n}\n\ninterface ItemContextValue {\n value: string;\n open: boolean;\n disabled: boolean;\n triggerId: string;\n panelId: string;\n}\n\nconst ItemContext = createContext<ItemContextValue | null>(null);\n\nfunction useItemContext(component: string): ItemContextValue {\n const ctx = useContext(ItemContext);\n if (!ctx) throw new Error(`<${component}> must be rendered inside an <AccordionItem>.`);\n return ctx;\n}\n\n// ---- Root ----------------------------------------------------\n\ninterface AccordionCommonProps extends AccordionCoreProps, BaseComponentProps {\n children?: React.ReactNode;\n}\n\ninterface AccordionSingleProps extends AccordionCommonProps {\n type?: \"single\";\n /** Open item value (controlled). Empty string = nothing open. */\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n /** Allow closing the open item so all sections can be shut. Single mode only. */\n collapsible?: boolean;\n}\n\ninterface AccordionMultipleProps extends AccordionCommonProps {\n type: \"multiple\";\n /** Open item values (controlled). */\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (value: string[]) => void;\n}\n\ntype AccordionProps = AccordionSingleProps | AccordionMultipleProps;\n\n/** Normalizes either value shape to the single internal string[] model. */\nfunction toArray(v: string | string[] | undefined, isMultiple: boolean): string[] {\n if (v === undefined) return [];\n if (Array.isArray(v)) return isMultiple ? v : v.slice(0, 1);\n return v === \"\" ? [] : [v];\n}\n\nexport const Accordion = forwardRef<HTMLDivElement, AccordionProps>(function Accordion(\n props,\n forwardedRef\n) {\n const type = props.type ?? \"single\";\n const isMultiple = type === \"multiple\";\n const collapsible = type !== \"multiple\" ? (props as AccordionSingleProps).collapsible ?? false : false;\n const { size, theme, color, className, style, children } = props;\n const onValueChange = props.onValueChange as ((v: string | string[]) => void) | undefined;\n\n const state = resolveAccordionState({ size });\n const baseId = useId();\n\n const isControlled = props.value !== undefined;\n const [uncontrolled, setUncontrolled] = useState<string[]>(() =>\n toArray(props.defaultValue, isMultiple)\n );\n const openArray = isControlled ? toArray(props.value, isMultiple) : uncontrolled;\n\n const commit = useCallback(\n (next: string[]) => {\n if (!isControlled) setUncontrolled(next);\n // Report back in the shape that matches this Accordion's mode.\n if (isMultiple) onValueChange?.(next);\n else onValueChange?.(next[0] ?? \"\");\n },\n [isControlled, isMultiple, onValueChange]\n );\n\n const toggle = useCallback(\n (itemValue: string) => {\n const next = isMultiple\n ? toggleMultiple(openArray, itemValue)\n : toggleSingle(openArray, itemValue, collapsible);\n commit(next);\n },\n [isMultiple, openArray, collapsible, commit]\n );\n\n const rootCtx = useMemo<AccordionContextValue>(\n () => ({\n baseId,\n isOpen: (v: string) => openArray.includes(v),\n toggle,\n }),\n [baseId, openArray, toggle]\n );\n\n // Optional arrow-key movement between headers (WAI-ARIA APG lists\n // this as an enhancement, not the primary path — Tab still works).\n // Only acts when a header itself is focused, so arrows inside an\n // open panel's own content are never hijacked.\n const rootRef = useRef<HTMLDivElement | null>(null);\n const setRootRef = useCallback(\n (node: HTMLDivElement | null) => {\n rootRef.current = node;\n if (typeof forwardedRef === \"function\") forwardedRef(node);\n else if (forwardedRef) (forwardedRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n },\n [forwardedRef]\n );\n\n const handleKeyDown = useCallback((e: React.KeyboardEvent<HTMLDivElement>) => {\n const target = e.target as HTMLElement;\n if (target.getAttribute(\"data-accordion-trigger\") !== \"true\") return;\n const root = rootRef.current;\n if (!root) return;\n\n const triggers = Array.from(\n root.querySelectorAll<HTMLElement>('[data-accordion-trigger=\"true\"]')\n );\n const disabled = triggers.map(\n (t) => (t as HTMLButtonElement).disabled || t.getAttribute(\"aria-disabled\") === \"true\"\n );\n const currentIndex = triggers.findIndex((t) => t === document.activeElement);\n\n // Vertical, and NOT looping — accordion headers don't wrap; Home/End\n // cover the extremes.\n const next = getIndexForKey(e.key, currentIndex, disabled, {\n orientation: \"vertical\",\n loop: false,\n });\n if (next === null) return;\n e.preventDefault();\n triggers[next]?.focus();\n }, []);\n\n const output = (\n <AccordionContext.Provider value={rootCtx}>\n <div\n ref={setRootRef}\n className={getRootClasses(state, className)}\n style={style}\n onKeyDown={handleKeyDown}\n >\n {children}\n </div>\n </AccordionContext.Provider>\n );\n\n // theme = shape, color = accent — independent overrides (Rule 5/5b).\n return withThemeOverride(theme, withAccentOverride(color, output));\n});\n\n// ---- Item ----------------------------------------------------\n\ninterface AccordionItemProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string;\n disabled?: boolean;\n children?: React.ReactNode;\n}\n\nexport const AccordionItem = forwardRef<HTMLDivElement, AccordionItemProps>(function AccordionItem(\n { value, disabled = false, className, children, ...rest },\n ref\n) {\n const root = useAccordionContext(\"AccordionItem\");\n const open = root.isOpen(value);\n const triggerId = makeTriggerId(root.baseId, value);\n const panelId = makePanelId(root.baseId, value);\n\n const ctx = useMemo<ItemContextValue>(\n () => ({ value, open, disabled, triggerId, panelId }),\n [value, open, disabled, triggerId, panelId]\n );\n\n return (\n <ItemContext.Provider value={ctx}>\n <div ref={ref} className={getItemClasses(open, disabled, className)} {...rest}>\n {children}\n </div>\n </ItemContext.Provider>\n );\n});\n\n// ---- Trigger -------------------------------------------------\n\ninterface AccordionTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Heading level to wrap the button in (WAI-ARIA requires a heading). Default 3. */\n headingLevel?: 1 | 2 | 3 | 4 | 5 | 6;\n children?: React.ReactNode;\n}\n\nexport const AccordionTrigger = forwardRef<HTMLButtonElement, AccordionTriggerProps>(\n function AccordionTrigger({ headingLevel = 3, className, onClick, children, ...rest }, ref) {\n const root = useAccordionContext(\"AccordionTrigger\");\n const item = useItemContext(\"AccordionTrigger\");\n\n const aria = getTriggerAriaProps({\n open: item.open,\n disabled: item.disabled,\n triggerId: item.triggerId,\n panelId: item.panelId,\n });\n\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (e.defaultPrevented || item.disabled) return;\n root.toggle(item.value);\n },\n [root, item.value, item.disabled, onClick]\n );\n\n // Each header button is wrapped in a heading element (real <hN>),\n // per the WAI-ARIA accordion pattern, so screen-reader users can\n // navigate the sections by heading.\n const Heading = `h${headingLevel}` as React.ElementType;\n\n return (\n <Heading className=\"nx-accordion__header\">\n <button\n ref={ref}\n type=\"button\"\n data-accordion-trigger=\"true\"\n className={[getTriggerClasses(item.open), className].filter(Boolean).join(\" \")}\n disabled={item.disabled}\n onClick={handleClick}\n {...aria}\n {...rest}\n >\n <span className=\"nx-accordion__label\">{children}</span>\n <ChevronDownIcon className=\"nx-accordion__icon\" aria-hidden=\"true\" />\n </button>\n </Heading>\n );\n }\n);\n\n// ---- Panel ---------------------------------------------------\n\ninterface AccordionPanelProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Keep mounted (hidden) when closed, preserving internal state. Default false. */\n forceMount?: boolean;\n children?: React.ReactNode;\n}\n\nexport const AccordionPanel = forwardRef<HTMLDivElement, AccordionPanelProps>(function AccordionPanel(\n { forceMount = false, className, children, ...rest },\n ref\n) {\n const item = useItemContext(\"AccordionPanel\");\n const aria = getPanelAriaProps({ triggerId: item.triggerId, panelId: item.panelId });\n\n if (!item.open && !forceMount) return null;\n\n return (\n <div ref={ref} className={getPanelClasses(className)} hidden={!item.open} {...aria} {...rest}>\n {/* Inner wrapper carries the padding so a future height animation\n can target the outer element's block-size without fighting it. */}\n <div className=\"nx-accordion__panel-inner\">{children}</div>\n </div>\n );\n});\n","import type { Size } from \"./types\";\n\n// ============================================================\n// ACCORDION — pure core (Category E: disclosure sections)\n//\n// Shares the same split as Tabs: this module owns the toggle\n// logic (single vs. multiple open, \"collapsible\" behavior), the\n// id wiring linking each trigger to its region, and the ARIA — all\n// as pure, node-testable functions — while the React layer does\n// only glue and composes core/collection.ts for optional\n// arrow-key movement between headers.\n//\n// Note the deliberate ARIA difference from Tabs: an accordion does\n// NOT use a roving tabindex. Every header button is a normal Tab\n// stop (WAI-ARIA APG); arrow keys between headers are an optional\n// enhancement, not the primary way in. So there are no tabIndex\n// props here — real <button>s are focusable on their own.\n// ============================================================\n\n/**\n * \"single\" allows one open section at a time (optionally\n * `collapsible`, so the open one can be closed to leave all shut).\n * \"multiple\" lets any number be open at once. The two modes carry\n * different value shapes (a string vs. a string[]), which is why\n * the React props are a discriminated union on this field.\n */\nexport type AccordionType = \"single\" | \"multiple\";\n\nexport interface AccordionCoreProps {\n size?: Size;\n}\n\nexport interface AccordionState {\n size: Size;\n}\n\nexport function resolveAccordionState(props: AccordionCoreProps): AccordionState {\n return {\n size: props.size ?? \"md\", // ?? not || (Rule 3)\n };\n}\n\n// --- open-state model ----------------------------------------\n// The React layer keeps open items as a string[] for BOTH modes\n// (single = 0-or-1 entries) so there's one code path; these pure\n// helpers compute the next array given a toggle. Keeping this out\n// of the component makes the trickiest behavior — single +\n// collapsible — unit-testable without rendering anything.\n\nexport function isItemOpen(open: readonly string[], value: string): boolean {\n return open.includes(value);\n}\n\n/**\n * Next open-set for \"multiple\": plain membership toggle.\n */\nexport function toggleMultiple(open: readonly string[], value: string): string[] {\n return open.includes(value) ? open.filter((v) => v !== value) : [...open, value];\n}\n\n/**\n * Next open-set for \"single\". Opening an item replaces whatever was\n * open. Clicking the already-open item closes it only when\n * `collapsible` — otherwise it stays open (a radio-like group that\n * always has one selection), which is the WAI-ARIA default.\n */\nexport function toggleSingle(\n open: readonly string[],\n value: string,\n collapsible: boolean\n): string[] {\n const isOpen = open.includes(value);\n if (isOpen) return collapsible ? [] : [value];\n return [value];\n}\n\n// --- id wiring (same scheme as Tabs) -------------------------\n\nfunction sanitizeValue(value: string): string {\n return value.replace(/[^a-zA-Z0-9_-]/g, \"_\");\n}\n\nexport function makeTriggerId(baseId: string, value: string): string {\n return `${baseId}-trigger-${sanitizeValue(value)}`;\n}\n\nexport function makePanelId(baseId: string, value: string): string {\n return `${baseId}-panel-${sanitizeValue(value)}`;\n}\n\n// --- class helpers -------------------------------------------\n\nexport function getRootClasses(state: AccordionState, className?: string): string {\n return [\"nx-accordion\", `nx-accordion--${state.size}`, className].filter(Boolean).join(\" \");\n}\n\nexport function getItemClasses(open: boolean, disabled: boolean, className?: string): string {\n return [\n \"nx-accordion__item\",\n open && \"nx-accordion__item--open\",\n disabled && \"nx-accordion__item--disabled\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\nexport function getTriggerClasses(open: boolean): string {\n return [\"nx-accordion__trigger\", open && \"nx-accordion__trigger--open\"].filter(Boolean).join(\" \");\n}\n\nexport function getPanelClasses(className?: string): string {\n return [\"nx-accordion__panel\", className].filter(Boolean).join(\" \");\n}\n\n// --- ARIA -----------------------------------------------------\n\nexport interface TriggerAriaInput {\n open: boolean;\n disabled: boolean;\n triggerId: string;\n panelId: string;\n}\n\nexport function getTriggerAriaProps(input: TriggerAriaInput) {\n return {\n id: input.triggerId,\n // The heart of the disclosure pattern: aria-expanded flips as the\n // panel opens/closes, and aria-controls names the panel it toggles.\n \"aria-expanded\": input.open,\n \"aria-controls\": input.panelId,\n // Prefer the real `disabled` attribute on the <button>; expose\n // aria-disabled only as the semantic mirror, and only when set.\n \"aria-disabled\": input.disabled || undefined,\n };\n}\n\nexport interface PanelAriaInput {\n triggerId: string;\n panelId: string;\n}\n\nexport function getPanelAriaProps(input: PanelAriaInput) {\n return {\n // region + aria-labelledby lets AT users find and re-enter an open\n // panel by name; the label is the trigger's text.\n role: \"region\" as const,\n id: input.panelId,\n \"aria-labelledby\": input.triggerId,\n };\n}\n","import React, {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n cloneElement,\n isValidElement,\n} from \"react\";\nimport {\n resolveDropdownState,\n makeTriggerId,\n makeMenuId,\n getMenuClasses,\n getItemClasses,\n getSeparatorClasses,\n getLabelClasses,\n getTriggerAriaProps,\n getMenuAriaProps,\n getItemAriaProps,\n getOpenIntent,\n type DropdownCoreProps,\n type DropdownItemVariant,\n} from \"../core/dropdown\";\nimport {\n getIndexForKey,\n firstEnabledIndex,\n lastEnabledIndex,\n matchTypeahead,\n nextTypeaheadQuery,\n} from \"../core/collection\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport { ThemedPortal } from \"../theme-engine/ThemedPortal\";\nimport { useOverlayBehavior } from \"../theme-engine/useOverlayBehavior\";\nimport { useFloatingPosition } from \"../theme-engine/useFloatingPosition\";\nimport { useClickOutside } from \"../theme-engine/useClickOutside\";\nimport \"./DropdownMenu.css\";\n\n// ============================================================\n// DROPDOWN MENU — compound React layer over core/dropdown.ts.\n//\n// This is a Category C overlay: it portals through ThemedPortal\n// (Rule 6 — the theme/accent follow the menu out of the DOM tree),\n// positions with useFloatingPosition + core/floating.ts (the bug\n// that got the old Popover removed — \"opened at the bottom of the\n// page\"), and shares Escape/return-focus wiring via\n// useOverlayBehavior (Rule 11). Arrow-key movement + typeahead come\n// from core/collection.ts (Rule 12), the SAME primitive Tabs,\n// Accordion and Select use.\n//\n// Focus model (WAI-ARIA menu button pattern): opening moves real\n// DOM focus INTO the menu — first item for Enter/Space/Down, last\n// for Up. Items are a roving group (all tabIndex -1); arrows move\n// focus, Escape/selection returns it to the trigger, and Tab closes\n// the menu and lets focus move on naturally (so, unlike a Modal, we\n// deliberately do NOT trap focus or use the hook's autofocus).\n// ============================================================\n\nfunction mergeRefs<T>(...refs: Array<React.Ref<T> | null | undefined>) {\n return (value: T | null) => {\n for (const ref of refs) {\n if (!ref) continue;\n if (typeof ref === \"function\") ref(value);\n else (ref as React.MutableRefObject<T | null>).current = value;\n }\n };\n}\n\nfunction composeHandlers<E>(a?: (e: E) => void, b?: (e: E) => void) {\n return (e: E) => {\n a?.(e);\n if ((e as unknown as { defaultPrevented?: boolean }).defaultPrevented) return;\n b?.(e);\n };\n}\n\n// DOM helpers shared by the initial-focus effect and the keyboard\n// handler, so both read the live menu items the same authoritative\n// way (document order) rather than a separately-tracked registry.\nfunction getMenuItems(menu: HTMLElement): HTMLElement[] {\n return Array.from(menu.querySelectorAll<HTMLElement>('[role=\"menuitem\"]'));\n}\nfunction isItemDisabled(item: HTMLElement): boolean {\n return item.getAttribute(\"aria-disabled\") === \"true\";\n}\n\ntype OpenIntent = \"first\" | \"last\";\n\ninterface DropdownContextValue {\n open: boolean;\n openMenu: (intent: OpenIntent) => void;\n close: (returnFocus: boolean) => void;\n toggle: () => void;\n triggerId: string;\n menuId: string;\n triggerRef: React.RefObject<HTMLElement | null>;\n initialFocusRef: React.MutableRefObject<OpenIntent>;\n state: ReturnType<typeof resolveDropdownState>;\n theme?: string;\n color?: string;\n}\n\nconst DropdownContext = createContext<DropdownContextValue | null>(null);\n\nfunction useDropdownContext(component: string): DropdownContextValue {\n const ctx = useContext(DropdownContext);\n if (!ctx) throw new Error(`<${component}> must be rendered inside a <DropdownMenu>.`);\n return ctx;\n}\n\n// ---- Root ----------------------------------------------------\n\ninterface DropdownMenuProps extends DropdownCoreProps, Pick<BaseComponentProps, \"theme\" | \"color\"> {\n /** Open state (controlled). Pair with onOpenChange. */\n open?: boolean;\n /** Initial open state (uncontrolled). Default false. */\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n children?: React.ReactNode;\n}\n\nexport function DropdownMenu(props: DropdownMenuProps) {\n const { open: openProp, defaultOpen, onOpenChange, size, placement, align, theme, color, children } = props;\n\n const state = resolveDropdownState({ size, placement, align });\n const baseId = useId();\n const triggerId = makeTriggerId(baseId);\n const menuId = makeMenuId(baseId);\n\n const triggerRef = useRef<HTMLElement | null>(null);\n const initialFocusRef = useRef<OpenIntent>(\"first\");\n\n const isControlled = openProp !== undefined;\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen ?? false);\n const open = isControlled ? openProp! : uncontrolledOpen;\n\n const setOpenState = useCallback(\n (next: boolean) => {\n if (!isControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n },\n [isControlled, onOpenChange]\n );\n\n const openMenu = useCallback(\n (intent: OpenIntent) => {\n initialFocusRef.current = intent;\n setOpenState(true);\n },\n [setOpenState]\n );\n\n const close = useCallback(\n (returnFocus: boolean) => {\n setOpenState(false);\n // Return focus to the trigger on Escape / selection, but NOT on\n // Tab-close or outside-click (there focus should land where the\n // user is going, not snap back). rAF waits for the menu to\n // unmount so the focus call isn't stolen back.\n if (returnFocus) requestAnimationFrame(() => triggerRef.current?.focus());\n },\n [setOpenState]\n );\n\n const toggle = useCallback(() => {\n if (open) close(true);\n else openMenu(\"first\");\n }, [open, close, openMenu]);\n\n const ctx = useMemo<DropdownContextValue>(\n () => ({\n open,\n openMenu,\n close,\n toggle,\n triggerId,\n menuId,\n triggerRef,\n initialFocusRef,\n state,\n theme,\n color,\n }),\n [open, openMenu, close, toggle, triggerId, menuId, state, theme, color]\n );\n\n return <DropdownContext.Provider value={ctx}>{children}</DropdownContext.Provider>;\n}\n\n// ---- Trigger -------------------------------------------------\n\ninterface DropdownMenuTriggerProps {\n /** A single element — the trigger clones it to attach the menu-button ARIA, a ref, and open/close handlers. */\n children: React.ReactElement;\n}\n\nexport const DropdownMenuTrigger = forwardRef<HTMLElement, DropdownMenuTriggerProps>(\n function DropdownMenuTrigger({ children }, forwardedRef) {\n const ctx = useDropdownContext(\"DropdownMenuTrigger\");\n const aria = getTriggerAriaProps({ open: ctx.open, triggerId: ctx.triggerId, menuId: ctx.menuId });\n\n if (!isValidElement(children)) {\n throw new Error(\"<DropdownMenuTrigger> expects a single React element child.\");\n }\n const child = children as React.ReactElement<Record<string, unknown>>;\n\n const handleClick = composeHandlers(child.props.onClick as ((e: React.MouseEvent) => void) | undefined, () =>\n ctx.toggle()\n );\n const handleKeyDown = composeHandlers(\n child.props.onKeyDown as ((e: React.KeyboardEvent) => void) | undefined,\n (e: React.KeyboardEvent) => {\n // Only the CLOSED trigger opens on a key — once open, focus is\n // inside the menu, so the trigger no longer receives these.\n if (ctx.open) return;\n const intent = getOpenIntent(e.key);\n if (intent) {\n e.preventDefault();\n ctx.openMenu(intent);\n }\n }\n );\n\n return cloneElement(child, {\n // React 19 moved `ref` into props; check props.ref first, fall\n // back to the legacy element.ref — covers 18 and 19 both.\n ref: mergeRefs(\n (child.props as { ref?: React.Ref<HTMLElement> }).ref ??\n (child as unknown as { ref?: React.Ref<HTMLElement> }).ref,\n ctx.triggerRef,\n forwardedRef\n ),\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n ...aria,\n });\n }\n);\n\n// ---- Content (the portalled menu) ----------------------------\n\ninterface DropdownMenuContentProps extends BaseComponentProps {\n children?: React.ReactNode;\n}\n\nexport const DropdownMenuContent = forwardRef<HTMLDivElement, DropdownMenuContentProps>(\n function DropdownMenuContent({ className, style, theme, color, children }, forwardedRef) {\n const ctx = useDropdownContext(\"DropdownMenuContent\");\n if (!ctx.open) return null;\n return (\n <DropdownMenuContentInner\n className={className}\n style={style}\n theme={theme}\n color={color}\n forwardedRef={forwardedRef}\n >\n {children}\n </DropdownMenuContentInner>\n );\n }\n);\n\n// Split so all the open-only hooks (position, overlay behavior,\n// listeners, initial focus) mount and unmount cleanly with the menu,\n// instead of running while it's closed.\ninterface InnerProps extends BaseComponentProps {\n children?: React.ReactNode;\n forwardedRef: React.ForwardedRef<HTMLDivElement>;\n}\n\nfunction DropdownMenuContentInner({ className, style, theme, color, children, forwardedRef }: InnerProps) {\n const ctx = useDropdownContext(\"DropdownMenuContent\");\n const menuRef = useRef<HTMLDivElement | null>(null);\n const typeaheadRef = useRef<{ query: string; time: number }>({ query: \"\", time: 0 });\n\n const setMenuRef = useCallback(\n (node: HTMLDivElement | null) => {\n menuRef.current = node;\n if (typeof forwardedRef === \"function\") forwardedRef(node);\n else if (forwardedRef) (forwardedRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n },\n [forwardedRef]\n );\n\n const position = useFloatingPosition({\n isOpen: true,\n triggerRef: ctx.triggerRef,\n floatingRef: menuRef,\n placement: ctx.state.placement,\n align: ctx.state.align,\n offset: 6,\n });\n\n // Escape-to-close comes from the shared overlay hook (Rule 11). Its\n // focus features are all off: a menu manages focus itself (roving\n // items, Tab-to-close, return-on-Escape) — a modal-style trap and\n // autofocus would fight that model, so we drive initial + return\n // focus by hand below.\n useOverlayBehavior({\n isOpen: true,\n onClose: () => ctx.close(true),\n containerRef: menuRef,\n triggerRef: ctx.triggerRef,\n closeOnEscape: true,\n trapFocus: false,\n returnFocus: false,\n autoFocus: false,\n });\n\n // Initial focus: first item (Enter/Space/Down) or last (Up). Runs\n // once on mount; items render synchronously as children so they're\n // present. opacity — not visibility — hides the pre-positioned menu\n // (below), which keeps items focusable here.\n useLayoutEffect(() => {\n const menu = menuRef.current;\n if (!menu) return;\n const items = getMenuItems(menu);\n const disabled = items.map(isItemDisabled);\n const idx = ctx.initialFocusRef.current === \"last\" ? lastEnabledIndex(disabled) : firstEnabledIndex(disabled);\n if (idx >= 0) items[idx].focus();\n // Intentionally mount-only.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Close when a pointer press lands outside both the menu and the\n // trigger. The trigger is excluded so its own onClick handles the\n // toggle (no double-fire); returnFocus is false so focus follows\n // the click. This component only mounts while open, so `isOpen`\n // is always true here — no separate flag needed the way Select's\n // usage of the same hook needs one.\n useClickOutside(true, [menuRef, ctx.triggerRef], useCallback(() => ctx.close(false), [ctx]));\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n const menu = menuRef.current;\n if (!menu) return;\n\n // Enter/Space activate the focused item — handled on the item\n // itself; don't let them fall through to typeahead here.\n if (e.key === \"Enter\" || e.key === \" \") return;\n\n // Tab closes the menu and lets focus move on (APG), so no\n // preventDefault and no return-to-trigger.\n if (e.key === \"Tab\") {\n ctx.close(false);\n return;\n }\n\n const items = getMenuItems(menu);\n const disabled = items.map(isItemDisabled);\n const currentIndex = items.findIndex((it) => it === document.activeElement);\n\n const idx = getIndexForKey(e.key, currentIndex, disabled, { orientation: \"vertical\", loop: true });\n if (idx !== null) {\n e.preventDefault();\n items[idx]?.focus();\n return;\n }\n\n // Typeahead: a single printable char jumps to the next matching\n // item, cycling on repeats — the shared collection primitive.\n if (e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey) {\n const now = Date.now();\n const q = nextTypeaheadQuery(typeaheadRef.current.query, typeaheadRef.current.time, e.key.toLowerCase(), now);\n typeaheadRef.current = { query: q, time: now };\n const labels = items.map((it) => (it.textContent ?? \"\").trim());\n const match = matchTypeahead(labels, q, currentIndex, disabled);\n if (match !== null) {\n e.preventDefault();\n items[match].focus();\n }\n }\n },\n [ctx]\n );\n\n const menuAria = getMenuAriaProps({ menuId: ctx.menuId, triggerId: ctx.triggerId });\n\n const menu = (\n <div\n ref={setMenuRef}\n className={getMenuClasses(ctx.state.size, className)}\n style={{\n ...style,\n position: \"fixed\",\n top: position?.top ?? -9999,\n left: position?.left ?? -9999,\n // opacity (not visibility) hides the menu until it's measured\n // and placed — visibility:hidden elements can't be focused,\n // and this menu focuses an item the instant it opens.\n opacity: position ? 1 : 0,\n pointerEvents: position ? undefined : \"none\",\n }}\n onKeyDown={handleKeyDown}\n data-placement={position?.placement ?? ctx.state.placement}\n {...menuAria}\n >\n {children}\n </div>\n );\n\n // theme/accent re-applied INSIDE the portal (Rule 6) — the Content\n // props override the root's, which override the ambient provider.\n return (\n <ThemedPortal anchorRef={ctx.triggerRef}>\n {withThemeOverride(theme ?? ctx.theme, withAccentOverride(color ?? ctx.color, menu))}\n </ThemedPortal>\n );\n}\n\n// ---- Item ----------------------------------------------------\n\ninterface DropdownMenuItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onSelect\"> {\n /** Destructive styling from the semantic registry (stays red across accents). Default \"default\". */\n variant?: DropdownItemVariant;\n disabled?: boolean;\n /** Called when the item is chosen (click or Enter/Space). The menu then closes. */\n onSelect?: () => void;\n children?: React.ReactNode;\n}\n\nexport const DropdownMenuItem = forwardRef<HTMLDivElement, DropdownMenuItemProps>(function DropdownMenuItem(\n { variant = \"default\", disabled = false, onSelect, className, onClick, onKeyDown, children, ...rest },\n ref\n) {\n const ctx = useDropdownContext(\"DropdownMenuItem\");\n const aria = getItemAriaProps({ disabled });\n\n const activate = useCallback(() => {\n if (disabled) return;\n onSelect?.();\n ctx.close(true);\n }, [disabled, onSelect, ctx]);\n\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n activate();\n },\n [onClick, activate]\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n activate();\n }\n },\n [onKeyDown, activate]\n );\n\n return (\n <div\n ref={ref}\n className={getItemClasses(variant, disabled, className)}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...aria}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\n// ---- Separator / Label (non-interactive helpers) -------------\n\nexport const DropdownMenuSeparator = forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(function DropdownMenuSeparator({ className, ...rest }, ref) {\n return <div ref={ref} role=\"separator\" className={getSeparatorClasses(className)} {...rest} />;\n});\n\nexport const DropdownMenuLabel = forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(function DropdownMenuLabel({ className, children, ...rest }, ref) {\n return (\n <div ref={ref} className={getLabelClasses(className)} {...rest}>\n {children}\n </div>\n );\n});\n","import type { Size } from \"./types\";\nimport type { Placement, Alignment } from \"./floating\";\n\n// ============================================================\n// DROPDOWN MENU — pure core (Category C: menu button + menu)\n//\n// The \"shape + ARIA + id wiring\" half of the Dropdown, with no\n// React and no DOM, so the parts most likely to regress — the\n// menu-button aria-* attributes and the id linking the trigger to\n// its menu — are unit-testable in isolation (tests/dropdown.test.tsx),\n// the same core/react split every other component here uses.\n//\n// The KEYBOARD movement itself is NOT reimplemented here: the React\n// layer composes core/collection.ts (getIndexForKey + typeahead),\n// which CONTRACT.md Rule 12 calls for — Dropdown, Select, Tabs and\n// Accordion share that one primitive rather than each hand-rolling\n// arrow-key handling. The POSITIONING likewise composes\n// core/floating.ts through useFloatingPosition. This module only\n// owns what is unique to a menu: its roles, its haspopup/expanded\n// wiring, and its size/placement defaults.\n// ============================================================\n\n/**\n * A menu opens below its trigger, left-aligned, by default — the\n * conventional action-menu placement (unlike Tooltip, which centers\n * above). Both are passthroughs to core/floating.ts so a consumer\n * can flip a menu that would collide with the viewport edge; the\n * positioner also flips automatically when it doesn't fit.\n */\nexport interface DropdownCoreProps {\n size?: Size;\n placement?: Placement;\n align?: Alignment;\n}\n\nexport interface DropdownState {\n size: Size;\n placement: Placement;\n align: Alignment;\n}\n\nexport function resolveDropdownState(props: DropdownCoreProps): DropdownState {\n return {\n // ?? not || (CONTRACT.md Rule 3) — same discipline as every\n // other resolver: a falsy-but-valid value must not snap back to\n // the default.\n size: props.size ?? \"md\",\n placement: props.placement ?? \"bottom\",\n align: props.align ?? \"start\",\n };\n}\n\n// --- id wiring ------------------------------------------------\n// The trigger and menu reference each other by id: the trigger's\n// aria-controls points at the menu, and the menu's aria-labelledby\n// points back at the trigger so the menu is announced with the\n// button's name. Both derive from one baseId (useId) so the two\n// sides agree without threading refs between them.\n\nexport function makeTriggerId(baseId: string): string {\n return `${baseId}-trigger`;\n}\n\nexport function makeMenuId(baseId: string): string {\n return `${baseId}-menu`;\n}\n\n// --- class helpers -------------------------------------------\n\nexport function getMenuClasses(size: Size, className?: string): string {\n return [\"nx-dropdown__menu\", `nx-dropdown__menu--${size}`, className]\n .filter(Boolean)\n .join(\" \");\n}\n\n/**\n * Menu items have two visual variants: the default, and a\n * destructive one (\"danger\") for actions like Delete. \"danger\" is a\n * SEMANTIC color drawn from the separate success/warning/danger\n * registry (CONTRACT.md Rule 5b) — it is not the theme accent, and\n * it stays red across every accent so a destructive action never\n * blends into a brand-colored menu.\n */\nexport type DropdownItemVariant = \"default\" | \"danger\";\n\nexport function getItemClasses(\n variant: DropdownItemVariant,\n disabled: boolean,\n className?: string\n): string {\n return [\n \"nx-dropdown__item\",\n variant === \"danger\" && \"nx-dropdown__item--danger\",\n disabled && \"nx-dropdown__item--disabled\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\nexport function getSeparatorClasses(className?: string): string {\n return [\"nx-dropdown__separator\", className].filter(Boolean).join(\" \");\n}\n\nexport function getLabelClasses(className?: string): string {\n return [\"nx-dropdown__label\", className].filter(Boolean).join(\" \");\n}\n\n// --- ARIA -----------------------------------------------------\n\nexport interface TriggerAriaInput {\n open: boolean;\n triggerId: string;\n menuId: string;\n}\n\nexport function getTriggerAriaProps(input: TriggerAriaInput) {\n return {\n id: input.triggerId,\n // haspopup=\"menu\" (not the generic \"true\") tells assistive tech\n // exactly what kind of popup this button summons.\n \"aria-haspopup\": \"menu\" as const,\n \"aria-expanded\": input.open,\n // The menu only exists in the DOM while open, so only claim to\n // control it while it's there — a dangling aria-controls pointing\n // at a non-existent id is an accessibility error some validators\n // flag.\n \"aria-controls\": input.open ? input.menuId : undefined,\n };\n}\n\nexport interface MenuAriaInput {\n menuId: string;\n triggerId: string;\n}\n\nexport function getMenuAriaProps(input: MenuAriaInput) {\n return {\n role: \"menu\" as const,\n id: input.menuId,\n // The menu is named by its trigger button, so screen readers\n // announce e.g. \"Options menu\" rather than an anonymous menu.\n \"aria-labelledby\": input.triggerId,\n };\n}\n\nexport interface ItemAriaInput {\n disabled: boolean;\n}\n\nexport function getItemAriaProps(input: ItemAriaInput) {\n return {\n role: \"menuitem\" as const,\n // Roving tabindex: the menu manages focus itself. Every item is\n // -1 (not in the page tab order); the open menu focuses items\n // programmatically with the arrow keys, and Tab closes the menu\n // rather than moving between items.\n tabIndex: -1,\n \"aria-disabled\": input.disabled || undefined,\n };\n}\n\n/**\n * Which key, pressed on the CLOSED trigger, should open the menu and\n * where focus should land. Enter/Space/ArrowDown open focused on the\n * first item; ArrowUp opens focused on the last (the WAI-ARIA menu\n * button pattern). Returns null for any other key so the caller\n * leaves it to the browser (e.g. Tab moves on normally).\n */\nexport type OpenIntent = \"first\" | \"last\" | null;\n\nexport function getOpenIntent(key: string): OpenIntent {\n if (key === \"Enter\" || key === \" \" || key === \"ArrowDown\") return \"first\";\n if (key === \"ArrowUp\") return \"last\";\n return null;\n}\n","import { useEffect } from \"react\";\n\n// ============================================================\n// A small Rule 12 gap: DropdownMenu and Select each independently\n// wired up their own \"close when a pointer press lands outside the\n// trigger and the popup\" listener — the exact same ~10 lines,\n// written twice. core/collection.ts already gets this right for\n// arrow-key navigation and typeahead (both components import the\n// same functions); this hook does the same job for the one bit of\n// DOM-facing behavior that had drifted into being copy-pasted\n// instead of shared.\n//\n// Modal doesn't need this — a full-screen backdrop already sits\n// behind it, and clicking the backdrop is a click with a real\n// target inside the themed tree (see Modal's own backdrop-click\n// handler). DropdownMenu and Select have no such backdrop (the\n// rest of the page must stay interactive around them), so \"outside\"\n// has to be checked against specific elements instead.\n//\n// Listens on `pointerdown`, not `click`: closing has to happen\n// before a click on unrelated page content underneath ends up\n// firing on whatever's now revealed after the popup closes.\n// ============================================================\n\nexport function useClickOutside(\n isOpen: boolean,\n refs: Array<React.RefObject<HTMLElement | null>>,\n onOutsideClick: () => void\n): void {\n useEffect(() => {\n if (!isOpen) return;\n\n function onPointerDown(e: PointerEvent) {\n const target = e.target as Node;\n const isInside = refs.some((ref) => ref.current?.contains(target));\n if (!isInside) onOutsideClick();\n }\n\n document.addEventListener(\"pointerdown\", onPointerDown, true);\n return () => document.removeEventListener(\"pointerdown\", onPointerDown, true);\n // refs is a stable array of ref objects for the component's\n // lifetime; onOutsideClick is expected to be referentially\n // stable (a useCallback at the call site) the same way\n // useOverlayBehavior's onClose is.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpen, onOutsideClick]);\n}\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport {\n resolveSelectState,\n normalizeSelected,\n isSelected,\n toggleValue,\n getSelectedOptions,\n getTriggerLabel,\n initialActiveIndex,\n makeTriggerId,\n makeListboxId,\n makeOptionId,\n getTriggerClasses,\n getListboxClasses,\n getOptionClasses,\n getTriggerAriaProps,\n getListboxAriaProps,\n getOptionAriaProps,\n getOpenIntent,\n type SelectCoreProps,\n type SelectOptionItem,\n} from \"../core/select\";\nimport {\n getIndexForKey,\n matchTypeahead,\n nextTypeaheadQuery,\n} from \"../core/collection\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport { ThemedPortal } from \"../theme-engine/ThemedPortal\";\nimport { useOverlayBehavior } from \"../theme-engine/useOverlayBehavior\";\nimport { useFloatingPosition } from \"../theme-engine/useFloatingPosition\";\nimport { useClickOutside } from \"../theme-engine/useClickOutside\";\nimport { CheckIcon, ChevronDownIcon, CloseIcon } from \"../icons/react\";\nimport \"./Select.css\";\n\n// ============================================================\n// SELECT — React layer over core/select.ts (Category D).\n//\n// The select-only combobox pattern: DOM focus stays on the trigger\n// the whole time, and a visual \"active\" option moves via\n// aria-activedescendant — so, unlike the Dropdown menu, focus never\n// enters the popup. That's why the keyboard handler lives on the\n// trigger (which keeps focus) and the listbox has no focusable\n// items. It's data-driven (an `options` prop, not children) for one\n// concrete reason: the trigger must render the selected option's\n// LABEL while the listbox is closed and its option elements don't\n// exist — a value→label lookup only the options array can provide.\n//\n// Composes: ThemedPortal (Rule 6), useFloatingPosition +\n// core/floating (the positioning the old Popover lacked),\n// useOverlayBehavior (Rule 11, Escape), core/collection (Rule 12,\n// arrow nav + typeahead), and core/field (Category B field state).\n// ============================================================\n\nexport interface SelectProps\n extends SelectCoreProps,\n Omit<BaseComponentProps, \"children\"> {\n options: SelectOptionItem[];\n /** Allow selecting several values (renders removable chips). Default false. */\n multiple?: boolean;\n /** Selected value(s) (controlled). `string | null` single, `string[]` multiple. */\n value?: string | string[] | null;\n /** Initial selection (uncontrolled). */\n defaultValue?: string | string[] | null;\n /** Fires on change; payload is `string | null` for single, `string[]` for multiple. */\n onValueChange?: (value: string | string[] | null) => void;\n /** Shown when nothing is selected. Default \"Select…\". */\n placeholder?: string;\n /** Open state (controlled). */\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Emits hidden inputs so the Select participates in native form submission. */\n name?: string;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n}\n\nexport const Select = forwardRef<HTMLDivElement, SelectProps>(function Select(props, forwardedRef) {\n const {\n options,\n multiple = false,\n value,\n defaultValue,\n onValueChange,\n placeholder = \"Select…\",\n open,\n defaultOpen,\n onOpenChange,\n name,\n size,\n disabled,\n required,\n error,\n placement,\n align,\n theme,\n color,\n className,\n style,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n } = props;\n\n const state = resolveSelectState({ size, disabled, required, error, placement, align });\n const baseId = useId();\n const triggerId = makeTriggerId(baseId);\n const listboxId = makeListboxId(baseId);\n\n const triggerRef = useRef<HTMLDivElement | null>(null);\n const listboxRef = useRef<HTMLDivElement | null>(null);\n const typeaheadRef = useRef<{ query: string; time: number }>({ query: \"\", time: 0 });\n\n // ---- selection (controlled or uncontrolled), one string[] model ----\n const isValueControlled = value !== undefined;\n const [uncontrolledSelected, setUncontrolledSelected] = useState<string[]>(() =>\n normalizeSelected(defaultValue)\n );\n const selected = isValueControlled ? normalizeSelected(value) : uncontrolledSelected;\n\n const commitSelected = useCallback(\n (next: string[]) => {\n if (!isValueControlled) setUncontrolledSelected(next);\n // Report in the shape matching the mode (Accordion does the same).\n if (multiple) onValueChange?.(next);\n else onValueChange?.(next[0] ?? null);\n },\n [isValueControlled, multiple, onValueChange]\n );\n\n // ---- open (controlled or uncontrolled) ----\n const isOpenControlled = open !== undefined;\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen ?? false);\n const isOpen = isOpenControlled ? open! : uncontrolledOpen;\n\n const setOpenState = useCallback(\n (next: boolean) => {\n if (!isOpenControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n },\n [isOpenControlled, onOpenChange]\n );\n\n // ---- active option (aria-activedescendant target) ----\n const [activeIndex, setActiveIndex] = useState(-1);\n\n const openListbox = useCallback(\n (intent: \"first\" | \"last\") => {\n setActiveIndex(initialActiveIndex(options, selected, intent));\n setOpenState(true);\n },\n [options, selected, setOpenState]\n );\n\n const close = useCallback(() => {\n setOpenState(false);\n }, [setOpenState]);\n\n const selectIndex = useCallback(\n (index: number) => {\n const opt = options[index];\n if (!opt || opt.disabled) return;\n commitSelected(toggleValue(selected, opt.value, multiple));\n setActiveIndex(index);\n // Single-select commits and closes; multi stays open to keep picking.\n if (!multiple) close();\n },\n [options, selected, multiple, commitSelected, close]\n );\n\n const removeValue = useCallback(\n (value: string) => {\n commitSelected(selected.filter((v) => v !== value));\n },\n [selected, commitSelected]\n );\n\n // ---- positioning + shared overlay behavior (Escape) ----\n const position = useFloatingPosition({\n isOpen,\n triggerRef,\n floatingRef: listboxRef,\n placement: state.placement,\n align: state.align,\n offset: 6,\n });\n\n useOverlayBehavior({\n isOpen,\n onClose: close,\n containerRef: listboxRef,\n triggerRef,\n closeOnEscape: true,\n // Focus never leaves the trigger in this pattern, so there's\n // nothing in the listbox to trap or auto-focus, and no focus to\n // \"return\" — Escape just closes.\n trapFocus: false,\n autoFocus: false,\n returnFocus: false,\n });\n\n // Close on a pointer press outside the trigger and the listbox —\n // same shared hook DropdownMenu.tsx uses, not a second hand-rolled\n // copy of the same listener.\n useClickOutside(isOpen, [triggerRef, listboxRef], close);\n\n // Keep the active option scrolled into view as it moves.\n useEffect(() => {\n if (!isOpen || activeIndex < 0) return;\n const opt = options[activeIndex];\n if (!opt) return;\n const el = listboxRef.current?.querySelector<HTMLElement>(`#${CSS.escape(makeOptionId(baseId, opt.value))}`);\n el?.scrollIntoView({ block: \"nearest\" });\n }, [isOpen, activeIndex, options, baseId]);\n\n // ---- keyboard, all on the trigger (which holds focus) ----\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (state.isDisabled) return;\n\n // Multi-select: Backspace removes the last chosen value (a\n // common token-field affordance, and the only keyboard path to\n // deselect without reopening).\n if (multiple && e.key === \"Backspace\" && selected.length > 0) {\n e.preventDefault();\n commitSelected(selected.slice(0, -1));\n return;\n }\n\n if (!isOpen) {\n const intent = getOpenIntent(e.key);\n if (intent) {\n e.preventDefault();\n openListbox(intent);\n }\n return;\n }\n\n // Open:\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (activeIndex >= 0) selectIndex(activeIndex);\n return;\n }\n if (e.key === \"Tab\") {\n // Let focus move on; just close (Escape is handled by the hook).\n close();\n return;\n }\n\n const disabled = options.map((o) => !!o.disabled);\n const idx = getIndexForKey(e.key, activeIndex, disabled, { orientation: \"vertical\", loop: true });\n if (idx !== null) {\n e.preventDefault();\n setActiveIndex(idx);\n return;\n }\n\n // Typeahead — move the active option, don't select (native\n // <select> behavior); the shared collection primitive.\n if (e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey) {\n const now = Date.now();\n const q = nextTypeaheadQuery(typeaheadRef.current.query, typeaheadRef.current.time, e.key.toLowerCase(), now);\n typeaheadRef.current = { query: q, time: now };\n const labels = options.map((o) => o.label);\n const match = matchTypeahead(labels, q, activeIndex, disabled);\n if (match !== null) {\n e.preventDefault();\n setActiveIndex(match);\n }\n }\n },\n [state.isDisabled, multiple, selected, isOpen, activeIndex, options, openListbox, selectIndex, close, commitSelected]\n );\n\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLDivElement>) => {\n if (!isOpen) return;\n const next = e.relatedTarget as Node | null;\n if (next && (triggerRef.current?.contains(next) || listboxRef.current?.contains(next))) return;\n close();\n },\n [isOpen, close]\n );\n\n const setTriggerRef = useCallback(\n (node: HTMLDivElement | null) => {\n triggerRef.current = node;\n if (typeof forwardedRef === \"function\") forwardedRef(node);\n else if (forwardedRef) (forwardedRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n },\n [forwardedRef]\n );\n\n const activeOptionId =\n isOpen && activeIndex >= 0 && options[activeIndex]\n ? makeOptionId(baseId, options[activeIndex].value)\n : undefined;\n\n const triggerAria = getTriggerAriaProps({\n open: isOpen,\n triggerId,\n listboxId,\n activeOptionId,\n multiple,\n state,\n labelledBy: ariaLabelledBy,\n });\n\n const chosen = getSelectedOptions(options, selected);\n const single = getTriggerLabel(options, selected, placeholder, multiple);\n\n // ---- trigger value display ----\n const valueDisplay =\n multiple && chosen.length > 0 ? (\n <span className=\"nx-select__chips\">\n {chosen.map((opt) => (\n <span key={opt.value} className=\"nx-select__chip\">\n <span className=\"nx-select__chip-label\">{opt.label}</span>\n {!state.isDisabled && (\n <button\n type=\"button\"\n className=\"nx-select__chip-remove\"\n // Keep focus on the trigger and don't toggle the listbox.\n onMouseDown={(e) => e.preventDefault()}\n onClick={(e) => {\n e.stopPropagation();\n removeValue(opt.value);\n }}\n aria-label={`Remove ${opt.label}`}\n tabIndex={-1}\n >\n <CloseIcon className=\"nx-select__chip-remove-icon\" aria-hidden=\"true\" />\n </button>\n )}\n </span>\n ))}\n </span>\n ) : (\n <span className={[\"nx-select__value\", single.isPlaceholder && \"nx-select__value--placeholder\"].filter(Boolean).join(\" \")}>\n {single.text}\n </span>\n );\n\n // ---- listbox (portalled) ----\n const listbox = isOpen && (\n <ThemedPortal anchorRef={triggerRef}>\n {withThemeOverride(\n theme,\n withAccentOverride(\n color,\n <div\n ref={listboxRef}\n className={getListboxClasses(state.size)}\n style={{\n position: \"fixed\",\n top: position?.top ?? -9999,\n left: position?.left ?? -9999,\n opacity: position ? 1 : 0,\n pointerEvents: position ? undefined : \"none\",\n minInlineSize: triggerRef.current?.offsetWidth,\n }}\n // Clicking an option must not blur the trigger (keeps the\n // activedescendant focus model intact).\n onMouseDown={(e) => e.preventDefault()}\n {...getListboxAriaProps({ listboxId, labelledBy: ariaLabelledBy, multiple })}\n >\n {options.map((opt, index) => {\n const optSelected = isSelected(opt.value, selected);\n const optDisabled = !!opt.disabled;\n return (\n <div\n key={opt.value}\n className={getOptionClasses(optSelected, optDisabled, index === activeIndex)}\n onClick={() => selectIndex(index)}\n onMouseEnter={() => !optDisabled && setActiveIndex(index)}\n {...getOptionAriaProps({\n optionId: makeOptionId(baseId, opt.value),\n selected: optSelected,\n disabled: optDisabled,\n })}\n >\n <span className=\"nx-select__option-check\" aria-hidden=\"true\">\n {optSelected && <CheckIcon className=\"nx-select__check-icon\" />}\n </span>\n <span className=\"nx-select__option-label\">{opt.label}</span>\n </div>\n );\n })}\n </div>\n )\n )}\n </ThemedPortal>\n );\n\n const output = (\n <span className={[\"nx-select\", className].filter(Boolean).join(\" \")} style={style}>\n <div\n ref={setTriggerRef}\n className={getTriggerClasses(state, isOpen)}\n tabIndex={state.isDisabled ? -1 : 0}\n aria-label={ariaLabel}\n aria-disabled={state.isDisabled || undefined}\n onClick={() => {\n if (state.isDisabled) return;\n if (isOpen) close();\n else openListbox(\"first\");\n }}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n {...triggerAria}\n >\n {valueDisplay}\n <ChevronDownIcon className=\"nx-select__chevron\" aria-hidden=\"true\" />\n </div>\n\n {/* Native form participation: a hidden input per value. */}\n {name &&\n (multiple ? (\n selected.map((v) => <input key={v} type=\"hidden\" name={name} value={v} />)\n ) : (\n <input type=\"hidden\" name={name} value={selected[0] ?? \"\"} />\n ))}\n\n {listbox}\n </span>\n );\n\n // theme = shape, color = accent — independent overrides (Rule 5/5b).\n return withThemeOverride(theme, withAccentOverride(color, output));\n});\n","import type { Placement, Alignment } from \"./floating\";\nimport { resolveFieldState, getFieldAriaProps, type FieldProps, type FieldState } from \"./field\";\nimport { firstEnabledIndex, lastEnabledIndex } from \"./collection\";\n\n// ============================================================\n// SELECT — pure core (Category D: combobox + listbox)\n//\n// The library's roadmap calls Category D the real gap, and names\n// the trap to avoid: the old codebase reimplemented arrow-key list\n// navigation separately in Select, Combobox and Command. So the\n// navigation math is NOT here — it composes core/collection.ts\n// (Rule 12), the same primitive Tabs/Accordion/Dropdown use. The\n// field semantics (disabled/required/invalid/size) are NOT here\n// either — they compose core/field.ts (Category B's shared shape),\n// so Select can't drift from Input. Positioning composes\n// core/floating.ts through useFloatingPosition.\n//\n// What's genuinely unique to Select lives here: the single-vs-multi\n// selection model, the combobox/listbox/option ARIA wiring, and the\n// value→label lookup the closed trigger needs to render. This is\n// the \"select-only combobox\" WAI-ARIA pattern — DOM focus stays on\n// the trigger and a visual active option moves via\n// aria-activedescendant (not roving real focus like the menu).\n// ============================================================\n\nexport interface SelectOptionItem {\n value: string;\n label: string;\n /**\n * Optional shorter label for the closed trigger only. Falls back\n * to `label` when omitted. Exists for cases like PhoneInput's\n * country select, where the listbox row needs more context\n * (\"🇺🇸 US +1\") than the narrow, fixed-width trigger has room for\n * — rather than forcing one string to serve both and either\n * cramping the trigger or truncating it.\n */\n triggerLabel?: string;\n disabled?: boolean;\n}\n\nexport interface SelectCoreProps extends FieldProps {\n placement?: Placement;\n align?: Alignment;\n}\n\nexport interface SelectState extends FieldState {\n placement: Placement;\n align: Alignment;\n}\n\nexport function resolveSelectState(props: SelectCoreProps): SelectState {\n return {\n // Field state (isDisabled/isRequired/isInvalid/size) comes from\n // the shared resolver — same ?? discipline, no drift from Input.\n ...resolveFieldState(props),\n // A select opens downward by default, like the native control.\n placement: props.placement ?? \"bottom\",\n align: props.align ?? \"start\",\n };\n}\n\n// --- selection model ------------------------------------------\n// Both modes run on ONE internal representation: a string[] of the\n// selected values. Single mode is just \"an array that holds at most\n// one\". This mirrors how Accordion collapses single/multiple to one\n// code path, so there's a single toggle to reason about and test.\n\n/** Normalizes any incoming value/defaultValue to the internal string[] model. */\nexport function normalizeSelected(value: string | string[] | null | undefined): string[] {\n if (value == null) return [];\n return Array.isArray(value) ? [...value] : [value];\n}\n\nexport function isSelected(value: string, selected: readonly string[]): boolean {\n return selected.includes(value);\n}\n\n/**\n * The next selection after choosing `value`. Multiple → membership\n * toggle (add if absent, remove if present). Single → replace with\n * just this value; re-choosing the current value keeps it (closing\n * the listbox is the React layer's job, not a deselect).\n */\nexport function toggleValue(\n selected: readonly string[],\n value: string,\n multiple: boolean\n): string[] {\n if (!multiple) return [value];\n return selected.includes(value) ? selected.filter((v) => v !== value) : [...selected, value];\n}\n\n/** The option items currently selected, in options order (for chips / display). */\nexport function getSelectedOptions(\n options: readonly SelectOptionItem[],\n selected: readonly string[]\n): SelectOptionItem[] {\n return options.filter((o) => selected.includes(o.value));\n}\n\n/**\n * Text (and whether it's the placeholder) for the trigger. Single\n * shows the one label; multiple joins them; nothing selected shows\n * the placeholder. Multi UIs usually render chips from\n * getSelectedOptions instead, but this stays correct as a fallback\n * and keeps the display rule testable.\n */\nexport function getTriggerLabel(\n options: readonly SelectOptionItem[],\n selected: readonly string[],\n placeholder: string,\n multiple: boolean\n): { text: string; isPlaceholder: boolean } {\n const chosen = getSelectedOptions(options, selected);\n if (chosen.length === 0) return { text: placeholder, isPlaceholder: true };\n if (!multiple) return { text: chosen[0].triggerLabel ?? chosen[0].label, isPlaceholder: false };\n return { text: chosen.map((c) => c.triggerLabel ?? c.label).join(\", \"), isPlaceholder: false };\n}\n\n/**\n * Where the active highlight should start when the listbox opens:\n * the first selected+enabled option if there is one (so the list\n * opens \"on\" the current value), otherwise the first enabled option\n * — or the last, when opened with ArrowUp.\n */\nexport function initialActiveIndex(\n options: readonly SelectOptionItem[],\n selected: readonly string[],\n intent: \"first\" | \"last\"\n): number {\n const firstSelected = options.findIndex((o) => selected.includes(o.value) && !o.disabled);\n if (firstSelected >= 0) return firstSelected;\n const disabled = options.map((o) => !!o.disabled);\n return intent === \"last\" ? lastEnabledIndex(disabled) : firstEnabledIndex(disabled);\n}\n\n// --- id wiring ------------------------------------------------\n// The trigger, the listbox, and each option all need ids: the\n// trigger points at the listbox (aria-controls) and at the active\n// option (aria-activedescendant), and the listbox is labelled by the\n// trigger. Option ids must be derivable from (baseId, value) so the\n// activedescendant reference and the option element agree.\n\nfunction sanitizeValue(value: string): string {\n return value.replace(/[^a-zA-Z0-9_-]/g, \"_\");\n}\n\nexport function makeTriggerId(baseId: string): string {\n return `${baseId}-trigger`;\n}\nexport function makeListboxId(baseId: string): string {\n return `${baseId}-listbox`;\n}\nexport function makeOptionId(baseId: string, value: string): string {\n return `${baseId}-option-${sanitizeValue(value)}`;\n}\n\n// --- class helpers -------------------------------------------\n\nexport function getTriggerClasses(state: SelectState, open: boolean, className?: string): string {\n return [\n \"nx-select__trigger\",\n `nx-select__trigger--${state.size}`,\n state.isDisabled && \"nx-select__trigger--disabled\",\n state.isInvalid && \"nx-select__trigger--invalid\",\n open && \"nx-select__trigger--open\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\nexport function getListboxClasses(size: SelectState[\"size\"], className?: string): string {\n return [\"nx-select__listbox\", `nx-select__listbox--${size}`, className].filter(Boolean).join(\" \");\n}\n\nexport function getOptionClasses(selected: boolean, disabled: boolean, active: boolean): string {\n return [\n \"nx-select__option\",\n selected && \"nx-select__option--selected\",\n disabled && \"nx-select__option--disabled\",\n active && \"nx-select__option--active\",\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\n// --- ARIA -----------------------------------------------------\n\nexport interface TriggerAriaInput {\n open: boolean;\n triggerId: string;\n listboxId: string;\n activeOptionId?: string;\n multiple: boolean;\n state: FieldState;\n /** External label id, if the Select is labelled by a separate <label>/element. */\n labelledBy?: string;\n}\n\nexport function getTriggerAriaProps(input: TriggerAriaInput) {\n return {\n id: input.triggerId,\n role: \"combobox\" as const,\n // Select-only: no free text is typed into it.\n \"aria-autocomplete\": \"none\" as const,\n \"aria-haspopup\": \"listbox\" as const,\n \"aria-expanded\": input.open,\n // Only reference the listbox / active option while the listbox\n // actually exists in the DOM (open).\n \"aria-controls\": input.open ? input.listboxId : undefined,\n \"aria-activedescendant\": input.open ? input.activeOptionId : undefined,\n \"aria-labelledby\": input.labelledBy,\n // Category B accessibility baseline (aria-invalid / aria-required).\n ...getFieldAriaProps(input.state),\n };\n}\n\nexport interface ListboxAriaInput {\n listboxId: string;\n labelledBy?: string;\n multiple: boolean;\n}\n\nexport function getListboxAriaProps(input: ListboxAriaInput) {\n return {\n role: \"listbox\" as const,\n id: input.listboxId,\n \"aria-multiselectable\": input.multiple ? (true as const) : undefined,\n \"aria-labelledby\": input.labelledBy,\n };\n}\n\nexport interface OptionAriaInput {\n optionId: string;\n selected: boolean;\n disabled: boolean;\n}\n\nexport function getOptionAriaProps(input: OptionAriaInput) {\n return {\n role: \"option\" as const,\n id: input.optionId,\n \"aria-selected\": input.selected,\n \"aria-disabled\": input.disabled || undefined,\n };\n}\n\n/**\n * Which key on the CLOSED trigger opens the listbox, and where the\n * active highlight should land (before initialActiveIndex biases it\n * toward the current selection). Enter/Space/Down → first; Up →\n * last; anything else → null (not an opening key).\n */\nexport function getOpenIntent(key: string): \"first\" | \"last\" | null {\n if (key === \"Enter\" || key === \" \" || key === \"ArrowDown\") return \"first\";\n if (key === \"ArrowUp\") return \"last\";\n return null;\n}","import React, { forwardRef, useCallback, useId, useRef, useState } from \"react\";\nimport {\n resolveSliderState,\n isRangeValue,\n toThumbs,\n fromThumbs,\n clampAndSnap,\n clampRangeThumb,\n nearestThumbIndex,\n valueToPercent,\n percentToValue,\n getKeyboardValue,\n getRootClasses,\n getThumbAriaProps,\n type SliderCoreProps,\n type SliderValue,\n} from \"../core/slider\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport \"./Field.css\";\nimport \"./Slider.css\";\n\n// ============================================================\n// SLIDER — React layer over core/slider.ts (Category B).\n//\n// One component for both single-value and range sliders — see\n// core/slider.ts's header for why the VALUE's shape (a plain\n// number vs. a [number, number] tuple) is what selects the mode,\n// not a separate boolean prop.\n//\n// Dragging uses native Pointer Capture (thumb.setPointerCapture in\n// onPointerDown) rather than attaching window-level pointermove/up\n// listeners: a captured pointer keeps sending events to the thumb\n// element even once the cursor moves outside its bounds mid-drag,\n// so there's no manual document-listener add/remove/cleanup dance\n// to get wrong, and no risk of a dangling listener if the component\n// unmounts mid-drag.\n//\n// Ref forwarding targets the root container, the same convention\n// Tabs/Accordion use (BUILDING-COMPONENTS.md's table: ref forward\n// \"✅ (tabs)\" / \"✅ (items)\") for a component whose real focusable\n// targets are a collection of internal parts, not one single node —\n// here that's one or two thumbs, not the track.\n// ============================================================\n\ninterface SliderProps extends SliderCoreProps, BaseComponentProps {\n value?: SliderValue;\n defaultValue?: SliderValue;\n onChange?: (value: SliderValue) => void;\n label?: string;\n helperText?: string;\n errorText?: string;\n error?: boolean;\n /** A floating value readout above each thumb (e.g. while dragging). Default false. */\n showValueLabel?: boolean;\n /** Formats a thumb's value for both the value-label bubble and its aria-valuetext. Defaults to String(value). */\n formatValue?: (value: number) => string;\n /** Range mode only: the minimum value-unit gap enforced between the two thumbs, so they can be kept from ever touching. Default 0 (thumbs may meet but not cross). */\n minGap?: number;\n id?: string;\n}\n\nexport const Slider = forwardRef<HTMLDivElement, SliderProps>(function Slider(\n {\n value,\n defaultValue,\n onChange,\n label,\n helperText,\n errorText,\n error,\n showValueLabel = false,\n formatValue,\n minGap = 0,\n id,\n className,\n style,\n theme,\n color,\n ...rest\n },\n forwardedRef\n) {\n const state = resolveSliderState(rest);\n const uid = useId();\n const rootId = id ?? `nx-slider-${uid}`;\n const labelId = label ? `${rootId}-label` : undefined;\n const isInvalid = error ?? !!errorText;\n const helperMessage = errorText ?? helperText;\n const descId = helperMessage ? `${rootId}-desc` : undefined;\n\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<SliderValue>(defaultValue ?? state.min);\n const currentValue = isControlled ? value! : internalValue;\n const isRange = isRangeValue(currentValue);\n const thumbs = toThumbs(currentValue);\n\n const trackRef = useRef<HTMLDivElement>(null);\n const draggingIndexRef = useRef<number | null>(null);\n\n const commit = useCallback(\n (nextThumbs: number[]) => {\n const next = fromThumbs(nextThumbs, currentValue);\n if (!isControlled) setInternalValue(next);\n onChange?.(next);\n },\n [currentValue, isControlled, onChange]\n );\n\n const updateThumb = useCallback(\n (index: number, rawValue: number) => {\n if (state.isDisabled) return;\n let snapped = clampAndSnap(rawValue, state);\n if (isRange) {\n snapped = clampRangeThumb(thumbs, index as 0 | 1, snapped, minGap);\n }\n if (snapped === thumbs[index]) return;\n const next = [...thumbs];\n next[index] = snapped;\n commit(next);\n },\n [state, isRange, thumbs, minGap, commit]\n );\n\n const valueFromClientX = useCallback(\n (clientX: number): number => {\n const track = trackRef.current;\n if (!track) return state.min;\n const rect = track.getBoundingClientRect();\n const percent = rect.width === 0 ? 0 : ((clientX - rect.left) / rect.width) * 100;\n const clampedPercent = Math.min(Math.max(percent, 0), 100);\n return percentToValue(clampedPercent, state.min, state.max);\n },\n [state.min, state.max]\n );\n\n function handleThumbPointerDown(index: number) {\n return (e: React.PointerEvent<HTMLDivElement>) => {\n if (state.isDisabled) return;\n e.currentTarget.setPointerCapture(e.pointerId);\n draggingIndexRef.current = index;\n e.currentTarget.focus();\n };\n }\n\n function handleThumbPointerMove(index: number) {\n return (e: React.PointerEvent<HTMLDivElement>) => {\n if (draggingIndexRef.current !== index) return;\n updateThumb(index, valueFromClientX(e.clientX));\n };\n }\n\n function handleThumbPointerUp(e: React.PointerEvent<HTMLDivElement>) {\n draggingIndexRef.current = null;\n // Releasing capture is optional (it auto-releases on pointerup),\n // but explicit here so a synthetic/test-fired pointerup can't\n // leave a stale capture behind between tests.\n if (e.currentTarget.hasPointerCapture(e.pointerId)) e.currentTarget.releasePointerCapture(e.pointerId);\n }\n\n function handleTrackPointerDown(e: React.PointerEvent<HTMLDivElement>) {\n if (state.isDisabled) return;\n // Only the bare track, not a thumb — thumbs stop propagation\n // implicitly by handling their own pointerdown, but a thumb\n // click still bubbles to the track in React's synthetic event\n // system, so this guards against double-handling the same\n // press as both \"drag this thumb\" and \"jump the nearest thumb\n // to the click point\".\n if (e.target !== trackRef.current) return;\n const target = valueFromClientX(e.clientX);\n const index = isRange ? nearestThumbIndex(thumbs as [number, number], target) : 0;\n updateThumb(index, target);\n // Pressing on the bare track doesn't just jump the nearest\n // thumb there once — it also starts dragging it from that point,\n // the same way pressing directly on a thumb does (own pointer\n // capture, so the drag keeps tracking correctly even once the\n // pointer moves off the track's own bounds).\n draggingIndexRef.current = index;\n e.currentTarget.setPointerCapture(e.pointerId);\n }\n\n function handleTrackPointerMove(e: React.PointerEvent<HTMLDivElement>) {\n if (draggingIndexRef.current === null) return;\n updateThumb(draggingIndexRef.current, valueFromClientX(e.clientX));\n }\n\n function handleTrackPointerUp(e: React.PointerEvent<HTMLDivElement>) {\n draggingIndexRef.current = null;\n if (e.currentTarget.hasPointerCapture(e.pointerId)) e.currentTarget.releasePointerCapture(e.pointerId);\n }\n\n function handleThumbKeyDown(index: number) {\n return (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (state.isDisabled) return;\n const next = getKeyboardValue(e.key, thumbs[index], state);\n if (next === null) return;\n e.preventDefault();\n updateThumb(index, next);\n };\n }\n\n const slider = (\n <div className=\"nx-field\" style={style}>\n {label && (\n <span id={labelId} className=\"nx-field__label\">\n {label}\n </span>\n )}\n <div ref={forwardedRef} id={rootId} className={getRootClasses(state, isRange, className)}>\n <div\n ref={trackRef}\n className=\"nx-slider__track\"\n onPointerDown={handleTrackPointerDown}\n onPointerMove={handleTrackPointerMove}\n onPointerUp={handleTrackPointerUp}\n >\n <div\n className=\"nx-slider__range\"\n style={{\n left: `${valueToPercent(isRange ? thumbs[0] : state.min, state.min, state.max)}%`,\n right: `${100 - valueToPercent(thumbs[isRange ? 1 : 0], state.min, state.max)}%`,\n }}\n />\n {thumbs.map((thumbValue, index) => {\n const percent = valueToPercent(thumbValue, state.min, state.max);\n const valueText = formatValue?.(thumbValue);\n const aria = getThumbAriaProps({\n value: thumbValue,\n min: state.min,\n max: state.max,\n isDisabled: state.isDisabled,\n valueText,\n labelledBy: labelId,\n });\n return (\n <div\n key={index}\n className=\"nx-slider__thumb\"\n style={{ left: `${percent}%` }}\n onPointerDown={handleThumbPointerDown(index)}\n onPointerMove={handleThumbPointerMove(index)}\n onPointerUp={handleThumbPointerUp}\n onKeyDown={handleThumbKeyDown(index)}\n {...aria}\n >\n {showValueLabel && (\n <span className=\"nx-slider__value-label\">{valueText ?? thumbValue}</span>\n )}\n </div>\n );\n })}\n </div>\n </div>\n {helperMessage && (\n <span id={descId} className={`nx-field__helper${isInvalid ? \" nx-field__helper--error\" : \"\"}`}>\n {helperMessage}\n </span>\n )}\n </div>\n );\n\n return withThemeOverride(theme, withAccentOverride(color, slider));\n});\n","import type { Size } from \"./types\";\n\n// ============================================================\n// SLIDER — pure core (Category B: form/input primitive).\n//\n// One component handles both single-value and range (two-thumb)\n// sliders rather than being two components or needing a separate\n// `range` boolean prop: the VALUE's shape says which mode it's in\n// — a plain `number` is single-thumb, a `[number, number]` tuple is\n// a range — the same way core/select.ts infers single vs multiple\n// selection from whether `value` is a scalar or an array, rather\n// than a redundant `multiple` flag that could disagree with what\n// was actually passed.\n//\n// The index math for range mode (which thumb is closer to a click,\n// keeping the two thumbs from crossing) is the part most likely to\n// have an off-by-one, so it's pure and unit-tested here, same\n// reasoning as core/floating.ts and core/collection.ts.\n// ============================================================\n\nexport type SliderValue = number | readonly [number, number];\n\nexport function isRangeValue(value: SliderValue): value is readonly [number, number] {\n return Array.isArray(value);\n}\n\n/** Normalizes either shape into an array of thumb positions, in track order (low to high for a range). */\nexport function toThumbs(value: SliderValue): number[] {\n return isRangeValue(value) ? [value[0], value[1]] : [value];\n}\n\n/** The inverse of toThumbs — rebuilds the original shape (scalar or tuple) from a thumbs array, matching the shape of `like`. */\nexport function fromThumbs(thumbs: readonly number[], like: SliderValue): SliderValue {\n return isRangeValue(like) ? [thumbs[0], thumbs[1]] : thumbs[0];\n}\n\nexport interface SliderCoreProps {\n min?: number;\n max?: number;\n step?: number;\n disabled?: boolean;\n size?: Size;\n}\n\nexport interface SliderState {\n min: number;\n max: number;\n step: number;\n isDisabled: boolean;\n size: Size;\n}\n\nexport function resolveSliderState(props: SliderCoreProps): SliderState {\n return {\n // ?? not || (CONTRACT.md Rule 3) — an explicit min={0} must not\n // be discarded (it already is the default, but a future\n // negative-range default would make this the exact bug Rule 3\n // guards against).\n min: props.min ?? 0,\n max: props.max ?? 100,\n step: props.step ?? 1,\n isDisabled: props.disabled ?? false,\n size: props.size ?? \"md\",\n };\n}\n\n/** Clamps to [min, max] AND snaps to the nearest step boundary, measured from `min` so steps always land on min + n*step regardless of where min itself falls. */\nexport function clampAndSnap(value: number, state: Pick<SliderState, \"min\" | \"max\" | \"step\">): number {\n const { min, max, step } = state;\n const clamped = Math.min(Math.max(value, min), max);\n if (step <= 0) return clamped;\n const steps = Math.round((clamped - min) / step);\n const snapped = min + steps * step;\n // Rounding can push a value snapped near the top edge fractionally\n // past `max` (float error, not a logic error) — clamp once more.\n return Math.min(Math.max(snapped, min), max);\n}\n\nexport function valueToPercent(value: number, min: number, max: number): number {\n if (max === min) return 0;\n return ((value - min) / (max - min)) * 100;\n}\n\nexport function percentToValue(percent: number, min: number, max: number): number {\n return min + (percent / 100) * (max - min);\n}\n\n/**\n * Range mode only: applying a new value to one thumb must not let\n * it cross the other. `minGap` (default 0, i.e. thumbs may touch\n * but not pass) is in value units, not percent, so it scales\n * correctly regardless of the min/max range's size.\n */\nexport function clampRangeThumb(thumbs: readonly number[], index: 0 | 1, next: number, minGap = 0): number {\n if (index === 0) return Math.min(next, thumbs[1] - minGap);\n return Math.max(next, thumbs[0] + minGap);\n}\n\n/**\n * Range mode: which thumb (0 = low, 1 = high) a track click or\n * keyboard-on-track interaction nearest `targetValue` should move.\n * Ties go to the low thumb, matching most slider implementations'\n * convention (arbitrary but needs to be consistent, and low-first\n * matches reading order).\n */\nexport function nearestThumbIndex(thumbs: readonly [number, number], targetValue: number): 0 | 1 {\n const distLow = Math.abs(thumbs[0] - targetValue);\n const distHigh = Math.abs(thumbs[1] - targetValue);\n return distHigh < distLow ? 1 : 0;\n}\n\n// --- Keyboard ---------------------------------------------------\n\nconst STEP_KEYS_UP = new Set([\"ArrowRight\", \"ArrowUp\"]);\nconst STEP_KEYS_DOWN = new Set([\"ArrowLeft\", \"ArrowDown\"]);\n\n/**\n * Maps a keydown on a focused thumb to its new value, or null if\n * the key isn't one this widget handles (so the caller knows\n * whether to preventDefault). PageUp/PageDown move by a larger\n * \"big step\" (10 steps, the common slider convention — mirrors how\n * a native <input type=\"range\"> often pairs with a bigger keyboard\n * jump than the arrow-key step) capped so it never exceeds the\n * min/max span itself. Home/End jump to the bounds directly, not\n * relative to the current value — WAI-ARIA slider pattern.\n */\nexport function getKeyboardValue(\n key: string,\n current: number,\n state: Pick<SliderState, \"min\" | \"max\" | \"step\">\n): number | null {\n const bigStep = Math.min(state.step * 10, state.max - state.min);\n if (STEP_KEYS_UP.has(key)) return clampAndSnap(current + state.step, state);\n if (STEP_KEYS_DOWN.has(key)) return clampAndSnap(current - state.step, state);\n if (key === \"PageUp\") return clampAndSnap(current + bigStep, state);\n if (key === \"PageDown\") return clampAndSnap(current - bigStep, state);\n if (key === \"Home\") return state.min;\n if (key === \"End\") return state.max;\n return null;\n}\n\n// --- Classes ------------------------------------------------------\n\nexport function getRootClasses(state: SliderState, isRange: boolean, className?: string): string {\n return [\n \"nx-slider\",\n `nx-slider--${state.size}`,\n isRange && \"nx-slider--range\",\n state.isDisabled && \"nx-slider--disabled\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\n// --- ARIA -----------------------------------------------------\n\nexport interface ThumbAriaInput {\n value: number;\n min: number;\n max: number;\n isDisabled: boolean;\n /** A human-readable value string (e.g. \"$42\" or \"3 items\") when the raw number alone wouldn't be clear announced aloud. */\n valueText?: string;\n labelledBy?: string;\n}\n\nexport function getThumbAriaProps(input: ThumbAriaInput) {\n return {\n role: \"slider\" as const,\n \"aria-valuemin\": input.min,\n \"aria-valuemax\": input.max,\n \"aria-valuenow\": input.value,\n \"aria-valuetext\": input.valueText,\n \"aria-orientation\": \"horizontal\" as const,\n \"aria-disabled\": input.isDisabled || undefined,\n \"aria-labelledby\": input.labelledBy,\n tabIndex: input.isDisabled ? -1 : 0,\n };\n}\n","import React, { forwardRef, useCallback, useEffect, useId, useMemo, useRef, useState } from \"react\";\nimport {\n resolveComboboxState,\n filterOptions,\n findOptionByValue,\n findOptionByLabel,\n makeListboxId,\n makeOptionId,\n getInputClasses,\n getListboxClasses,\n getOptionClasses,\n getTriggerAriaProps,\n getListboxAriaProps,\n getOptionAriaProps,\n type ComboboxCoreProps,\n type ComboboxOption,\n} from \"../core/combobox\";\nimport { getIndexForKey, firstEnabledIndex } from \"../core/collection\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport { ThemedPortal } from \"../theme-engine/ThemedPortal\";\nimport { useOverlayBehavior } from \"../theme-engine/useOverlayBehavior\";\nimport { useFloatingPosition } from \"../theme-engine/useFloatingPosition\";\nimport { useClickOutside } from \"../theme-engine/useClickOutside\";\nimport { ChevronDownIcon, CloseIcon } from \"../icons/react\";\nimport \"./Field.css\";\nimport \"./Combobox.css\";\n\n// ============================================================\n// COMBOBOX — React layer over core/combobox.ts (Category D).\n//\n// Structurally this mirrors Select.tsx (ThemedPortal, Rule 6 theme\n// re-application inside the portal, useFloatingPosition,\n// useOverlayBehavior with trapFocus/autoFocus/returnFocus all false\n// since focus never leaves the field, useClickOutside) — the same\n// proven Category D shape. The genuine difference: Select's\n// \"typeahead\" (core/collection's matchTypeahead) exists because its\n// trigger can't receive typed text at all, so the letters you press\n// have to be buffered and matched separately. Combobox's field IS\n// real text input, so what's typed does its own filtering directly\n// — there's no separate typeahead buffer to maintain, and\n// core/collection is only used here for arrow-key movement through\n// whatever the current filtered list is.\n//\n// `hasTyped` (reset to false each time the list opens) is what lets\n// opening the list show every option first, the way clicking a\n// native <select> does, while still narrowing to matches the moment\n// a key is actually pressed — the field's current text (the\n// selected option's label) isn't itself treated as a filter until\n// the user changes it.\n// ============================================================\n\nexport interface ComboboxProps\n extends ComboboxCoreProps,\n Omit<BaseComponentProps, \"children\"> {\n options: ComboboxOption[];\n /** Selected value (controlled). `null` means nothing selected. */\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string | null) => void;\n /** Custom match predicate, replacing the default case-insensitive substring match. */\n filter?: (option: ComboboxOption, query: string) => boolean;\n placeholder?: string;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Emits a hidden input so the Combobox participates in native form submission. */\n name?: string;\n label?: string;\n helperText?: string;\n errorText?: string;\n id?: string;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n}\n\nexport const Combobox = forwardRef<HTMLInputElement, ComboboxProps>(function Combobox(props, forwardedRef) {\n const {\n options,\n value,\n defaultValue,\n onValueChange,\n filter,\n placeholder = \"Search…\",\n open,\n defaultOpen,\n onOpenChange,\n name,\n label,\n helperText,\n errorText,\n size,\n disabled,\n required,\n error,\n placement,\n align,\n allowCustomValue,\n theme,\n color,\n className,\n style,\n id,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n } = props;\n\n const isInvalid = error ?? !!errorText;\n const state = resolveComboboxState({ size, disabled, required, error: isInvalid, placement, align, allowCustomValue });\n const uid = useId();\n const inputId = id ?? `nx-combobox-${uid}`;\n const listboxId = makeListboxId(inputId);\n const helperMessage = errorText ?? helperText;\n const descId = helperMessage ? `${inputId}-desc` : undefined;\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n const listboxRef = useRef<HTMLDivElement | null>(null);\n\n // ---- committed value (controlled or uncontrolled) ----\n const isValueControlled = value !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState<string | null>(defaultValue ?? null);\n const committedValue = isValueControlled ? value ?? null : uncontrolledValue;\n\n function labelFor(v: string | null): string {\n if (v == null) return \"\";\n return findOptionByValue(options, v)?.label ?? (state.allowCustomValue ? v : \"\");\n }\n\n const [query, setQuery] = useState<string>(() => labelFor(committedValue));\n const [hasTyped, setHasTyped] = useState(false);\n\n // Resync the field's text ONLY when the controlled `value` prop\n // itself changes from outside — never from our own internal\n // commits (those set `query` directly, at the exact call site,\n // synchronously). Keying this on `value` (the prop) rather than\n // `committedValue` (which also changes for uncontrolled commits)\n // is what keeps this from clobbering in-progress typing on every\n // keystroke of an uncontrolled Combobox.\n useEffect(() => {\n if (!isValueControlled) return;\n setQuery(labelFor(value ?? null));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, isValueControlled]);\n\n const commitValue = useCallback(\n (nextValue: string | null, nextLabel: string) => {\n if (!isValueControlled) setUncontrolledValue(nextValue);\n setQuery(nextLabel);\n if (nextValue !== committedValue) onValueChange?.(nextValue);\n },\n [isValueControlled, committedValue, onValueChange]\n );\n\n // ---- open (controlled or uncontrolled) ----\n const isOpenControlled = open !== undefined;\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen ?? false);\n const isOpen = isOpenControlled ? open! : uncontrolledOpen;\n\n const setOpenState = useCallback(\n (next: boolean) => {\n if (!isOpenControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n },\n [isOpenControlled, onOpenChange]\n );\n\n const openList = useCallback(() => {\n setHasTyped(false);\n setOpenState(true);\n }, [setOpenState]);\n\n const close = useCallback(() => setOpenState(false), [setOpenState]);\n\n // ---- filtering ----\n const filteredOptions = useMemo(\n () => (hasTyped ? filterOptions(options, query, filter) : options),\n [hasTyped, options, query, filter]\n );\n\n const [activeIndex, setActiveIndex] = useState(-1);\n\n // Re-highlight the first match whenever the filtered set changes\n // while open — self-healing (never leaves activeIndex pointing\n // past the end of a shorter, newly-filtered list) and matches the\n // common \"first result highlighted as you type\" convention.\n useEffect(() => {\n if (!isOpen) return;\n setActiveIndex(firstEnabledIndex(filteredOptions.map((o) => !!o.disabled)));\n }, [filteredOptions, isOpen]);\n\n const selectOption = useCallback(\n (option: ComboboxOption) => {\n if (option.disabled) return;\n commitValue(option.value, option.label);\n close();\n inputRef.current?.focus();\n },\n [commitValue, close]\n );\n\n function clear() {\n commitValue(null, \"\");\n inputRef.current?.focus();\n }\n\n const commitFromBlurOrEnter = useCallback(() => {\n const trimmed = query.trim();\n if (trimmed === \"\") {\n commitValue(null, \"\");\n return;\n }\n const exact = findOptionByLabel(options, trimmed);\n if (exact) {\n commitValue(exact.value, exact.label);\n return;\n }\n if (state.allowCustomValue) {\n commitValue(trimmed, trimmed);\n return;\n }\n // No match, and custom text isn't allowed — revert to whatever\n // was last actually committed (Select enforces the same \"you\n // must pick a real option\" rule).\n commitValue(committedValue, labelFor(committedValue));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [query, options, state.allowCustomValue, commitValue, committedValue]);\n\n // ---- positioning + shared overlay behavior ----\n const position = useFloatingPosition({\n isOpen,\n triggerRef: inputRef,\n floatingRef: listboxRef,\n placement: state.placement,\n align: state.align,\n offset: 6,\n });\n\n useOverlayBehavior({\n isOpen,\n onClose: close,\n containerRef: listboxRef,\n triggerRef: inputRef,\n closeOnEscape: false, // Escape gets its own handling below (it also reverts the typed text, not just closes).\n // Focus stays on the input the whole time, same reasoning as\n // Select's trigger — nothing in the listbox to trap, autofocus,\n // or return focus to/from.\n trapFocus: false,\n autoFocus: false,\n returnFocus: false,\n });\n\n useClickOutside(isOpen, [inputRef, listboxRef], () => {\n close();\n commitFromBlurOrEnter();\n });\n\n useEffect(() => {\n if (!isOpen || activeIndex < 0) return;\n const opt = filteredOptions[activeIndex];\n if (!opt) return;\n listboxRef.current?.querySelector<HTMLElement>(`#${CSS.escape(makeOptionId(inputId, opt.value))}`)?.scrollIntoView({ block: \"nearest\" });\n }, [isOpen, activeIndex, filteredOptions, inputId]);\n\n function handleChange(e: React.ChangeEvent<HTMLInputElement>) {\n setQuery(e.target.value);\n setHasTyped(true);\n if (!isOpen) setOpenState(true);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (state.isDisabled) return;\n\n if (e.key === \"Escape\") {\n if (isOpen) {\n e.preventDefault();\n close();\n setQuery(labelFor(committedValue));\n }\n return;\n }\n\n if (e.key === \"Enter\") {\n e.preventDefault();\n if (isOpen && activeIndex >= 0 && filteredOptions[activeIndex]) {\n selectOption(filteredOptions[activeIndex]);\n } else {\n commitFromBlurOrEnter();\n close();\n }\n return;\n }\n\n if (!isOpen) {\n if (e.key === \"ArrowDown\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n openList();\n }\n return;\n }\n\n const disabled = filteredOptions.map((o) => !!o.disabled);\n const idx = getIndexForKey(e.key, activeIndex, disabled, { orientation: \"vertical\", loop: true });\n if (idx !== null) {\n e.preventDefault();\n setActiveIndex(idx);\n }\n }\n\n const setInputRef = useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node;\n if (typeof forwardedRef === \"function\") forwardedRef(node);\n else if (forwardedRef) (forwardedRef as React.MutableRefObject<HTMLInputElement | null>).current = node;\n },\n [forwardedRef]\n );\n\n const activeOptionId =\n isOpen && activeIndex >= 0 && filteredOptions[activeIndex]\n ? makeOptionId(inputId, filteredOptions[activeIndex].value)\n : undefined;\n\n const triggerAria = getTriggerAriaProps({\n open: isOpen,\n triggerId: inputId,\n listboxId,\n activeOptionId,\n state,\n labelledBy: ariaLabelledBy,\n describedBy: descId,\n });\n\n const listbox = isOpen && (\n <ThemedPortal anchorRef={inputRef}>\n {withThemeOverride(\n theme,\n withAccentOverride(\n color,\n <div\n ref={listboxRef}\n className={getListboxClasses(state.size)}\n style={{\n position: \"fixed\",\n top: position?.top ?? -9999,\n left: position?.left ?? -9999,\n opacity: position ? 1 : 0,\n pointerEvents: position ? undefined : \"none\",\n minInlineSize: inputRef.current?.offsetWidth,\n }}\n // A click inside the listbox must not blur the input —\n // same reasoning, same fix, as Select's listbox.\n onMouseDown={(e) => e.preventDefault()}\n {...getListboxAriaProps({ listboxId, labelledBy: ariaLabelledBy ?? (label ? inputId : undefined) })}\n >\n {filteredOptions.length === 0 && <div className=\"nx-combobox__empty\">No matches</div>}\n {filteredOptions.map((opt, index) => {\n const optSelected = opt.value === committedValue;\n const optDisabled = !!opt.disabled;\n return (\n <div\n key={opt.value}\n className={getOptionClasses(optSelected, optDisabled, index === activeIndex)}\n onClick={() => selectOption(opt)}\n onMouseEnter={() => !optDisabled && setActiveIndex(index)}\n {...getOptionAriaProps({\n optionId: makeOptionId(inputId, opt.value),\n selected: optSelected,\n disabled: optDisabled,\n })}\n >\n {opt.label}\n </div>\n );\n })}\n </div>\n )\n )}\n </ThemedPortal>\n );\n\n const output = (\n <div className={[\"nx-field\", className].filter(Boolean).join(\" \")} style={style}>\n {label && (\n <label htmlFor={inputId} className=\"nx-field__label\">\n {label}\n {state.isRequired && (\n <span className=\"nx-field__required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n <div className=\"nx-combobox__wrapper\">\n <input\n ref={setInputRef}\n type=\"text\"\n value={query}\n placeholder={placeholder}\n disabled={state.isDisabled}\n onChange={handleChange}\n onClick={() => {\n if (!isOpen) openList();\n }}\n onKeyDown={handleKeyDown}\n onBlur={() => {\n close();\n commitFromBlurOrEnter();\n }}\n className={getInputClasses(state, isOpen)}\n aria-label={ariaLabel}\n {...triggerAria}\n />\n {query && !state.isDisabled && (\n <button\n type=\"button\"\n className=\"nx-combobox__clear\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={clear}\n aria-label=\"Clear\"\n tabIndex={-1}\n >\n <CloseIcon className=\"nx-combobox__clear-icon\" aria-hidden=\"true\" />\n </button>\n )}\n <button\n type=\"button\"\n className=\"nx-combobox__toggle\"\n disabled={state.isDisabled}\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => {\n if (isOpen) close();\n else openList();\n inputRef.current?.focus();\n }}\n aria-label={isOpen ? \"Close options\" : \"Open options\"}\n tabIndex={-1}\n >\n <ChevronDownIcon className=\"nx-combobox__chevron\" aria-hidden=\"true\" />\n </button>\n </div>\n {name && <input type=\"hidden\" name={name} value={committedValue ?? \"\"} />}\n {helperMessage && (\n <span id={descId} className={`nx-field__helper${isInvalid ? \" nx-field__helper--error\" : \"\"}`}>\n {helperMessage}\n </span>\n )}\n {listbox}\n </div>\n );\n\n return withThemeOverride(theme, withAccentOverride(color, output));\n});\n","import type { Placement, Alignment } from \"./floating\";\nimport { resolveFieldState, getFieldAriaProps, type FieldProps, type FieldState } from \"./field\";\n\n// ============================================================\n// COMBOBOX — pure core (Category D: editable text field + filtered\n// listbox).\n//\n// The genuine difference from Select (core/select.ts), which this\n// module otherwise mirrors closely: Select's trigger is a button\n// that never accepts typed text (aria-autocomplete=\"none\"|), so its\n// only text-input-shaped behavior is the read-only label it\n// displays. Combobox's trigger IS a real, editable text input —\n// aria-autocomplete=\"list\", and what's typed both filters the\n// option list AND is itself the \"query\" the current selection may\n// or may not match. That one difference cascades into a few real\n// ones: there's a separate query-vs-committed-value distinction\n// Select never needs, a filter function, and (optionally)\n// `allowCustomValue` for accepting text that matches no option at\n// all.\n//\n// Field semantics (disabled/required/invalid/size) still compose\n// core/field.ts, positioning still composes core/floating.ts, and\n// arrow-key movement through the filtered list still composes\n// core/collection.ts in the React layer (Rule 12) — none of that is\n// re-derived here.\n// ============================================================\n\nexport interface ComboboxOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface ComboboxCoreProps extends FieldProps {\n placement?: Placement;\n align?: Alignment;\n /**\n * When the typed query matches no option and the field loses\n * focus or Enter is pressed, this controls what happens to it:\n * `false` (default) reverts the input back to the last committed\n * value's label (or clears it if nothing was ever selected) — the\n * same \"you must pick a real option\" behavior Select enforces.\n * `true` commits the typed text itself as the value, letting\n * Combobox double as a free-text field with suggestions rather\n * than a strict picker.\n */\n allowCustomValue?: boolean;\n}\n\nexport interface ComboboxState extends FieldState {\n placement: Placement;\n align: Alignment;\n allowCustomValue: boolean;\n}\n\nexport function resolveComboboxState(props: ComboboxCoreProps): ComboboxState {\n return {\n ...resolveFieldState(props),\n // ?? not || (Rule 3).\n placement: props.placement ?? \"bottom\",\n align: props.align ?? \"start\",\n allowCustomValue: props.allowCustomValue ?? false,\n };\n}\n\n// --- filtering --------------------------------------------------\n\n/** Default filter: case-insensitive substring match against the option's label. An empty query matches everything (the full list shows when the field is first focused). */\nexport function defaultFilter(option: ComboboxOption, query: string): boolean {\n if (!query.trim()) return true;\n return option.label.toLowerCase().includes(query.trim().toLowerCase());\n}\n\nexport function filterOptions(\n options: readonly ComboboxOption[],\n query: string,\n filterFn: (option: ComboboxOption, query: string) => boolean = defaultFilter\n): ComboboxOption[] {\n return options.filter((o) => filterFn(o, query));\n}\n\nexport function findOptionByValue(options: readonly ComboboxOption[], value: string): ComboboxOption | undefined {\n return options.find((o) => o.value === value);\n}\n\n/** Case-insensitive exact-label lookup — so committing what was typed still resolves to the real option (and its real `value`) even if the casing doesn't match exactly. */\nexport function findOptionByLabel(options: readonly ComboboxOption[], label: string): ComboboxOption | undefined {\n const target = label.trim().toLowerCase();\n return options.find((o) => o.label.toLowerCase() === target);\n}\n\n// --- id wiring (mirrors core/select.ts's scheme) -----------------\n\nfunction sanitizeValue(value: string): string {\n return value.replace(/[^a-zA-Z0-9_-]/g, \"_\");\n}\n\nexport function makeTriggerId(baseId: string): string {\n return `${baseId}-trigger`;\n}\nexport function makeListboxId(baseId: string): string {\n return `${baseId}-listbox`;\n}\nexport function makeOptionId(baseId: string, value: string): string {\n return `${baseId}-option-${sanitizeValue(value)}`;\n}\n\n// --- class helpers -----------------------------------------------\n\nexport function getInputClasses(state: ComboboxState, open: boolean, className?: string): string {\n return [\n \"nx-combobox__input\",\n `nx-combobox__input--${state.size}`,\n state.isDisabled && \"nx-combobox__input--disabled\",\n state.isInvalid && \"nx-combobox__input--invalid\",\n open && \"nx-combobox__input--open\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\nexport function getListboxClasses(size: ComboboxState[\"size\"], className?: string): string {\n return [\"nx-combobox__listbox\", `nx-combobox__listbox--${size}`, className].filter(Boolean).join(\" \");\n}\n\nexport function getOptionClasses(selected: boolean, disabled: boolean, active: boolean): string {\n return [\n \"nx-combobox__option\",\n selected && \"nx-combobox__option--selected\",\n disabled && \"nx-combobox__option--disabled\",\n active && \"nx-combobox__option--active\",\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\n// --- ARIA -----------------------------------------------------\n\nexport interface TriggerAriaInput {\n open: boolean;\n triggerId: string;\n listboxId: string;\n activeOptionId?: string;\n state: FieldState;\n labelledBy?: string;\n describedBy?: string;\n}\n\nexport function getTriggerAriaProps(input: TriggerAriaInput) {\n return {\n id: input.triggerId,\n role: \"combobox\" as const,\n // The one ARIA difference from Select's trigger: text really is\n // typed here, and it filters the list — \"list\" is the correct\n // aria-autocomplete value (vs. Select's \"none\").\n \"aria-autocomplete\": \"list\" as const,\n \"aria-expanded\": input.open,\n \"aria-controls\": input.open ? input.listboxId : undefined,\n \"aria-activedescendant\": input.open ? input.activeOptionId : undefined,\n \"aria-labelledby\": input.labelledBy,\n ...getFieldAriaProps(input.state, input.describedBy),\n };\n}\n\nexport interface ListboxAriaInput {\n listboxId: string;\n labelledBy?: string;\n}\n\nexport function getListboxAriaProps(input: ListboxAriaInput) {\n return {\n role: \"listbox\" as const,\n id: input.listboxId,\n \"aria-labelledby\": input.labelledBy,\n };\n}\n\nexport interface OptionAriaInput {\n optionId: string;\n selected: boolean;\n disabled: boolean;\n}\n\nexport function getOptionAriaProps(input: OptionAriaInput) {\n return {\n role: \"option\" as const,\n id: input.optionId,\n \"aria-selected\": input.selected,\n \"aria-disabled\": input.disabled || undefined,\n };\n}\n","import React, { forwardRef, useEffect, useId, useRef, useState } from \"react\";\nimport {\n getMonthGrid,\n getWeekdayLabels,\n getMonthLabel,\n getMonthGridLabels,\n getYearBlockStart,\n getYearGrid,\n getNextFocusDate,\n isSameDay,\n isSameMonth,\n addMonths,\n startOfDay,\n} from \"../core/calendar\";\nimport { getDayClasses, getGridAriaProps, getDayAriaProps, isDateSelectable } from \"../core/datepicker\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport { ChevronLeftIcon, ChevronRightIcon } from \"../icons/react\";\nimport \"./Calendar.css\";\n\n// ============================================================\n// CALENDAR — a standalone month-grid, built on core/calendar.ts's\n// pure grid/date math. Usable on its own (an inline date picker\n// that's always visible, e.g. in a sidebar) or embedded inside\n// DatePicker's Popover — DatePicker.tsx renders this exact\n// component rather than re-deriving a second grid.\n//\n// Three views, not one: clicking the header label zooms out from\n// the day grid to a 12-month grid for the year, and again to a grid\n// of years — picking at the coarser level jumps straight there\n// instead of walking one month/year at a time via the arrow\n// buttons. This is what keeps picking a date decades away from\n// requiring dozens of \"next month\" clicks.\n//\n// Keyboard model for the day grid follows the WAI-ARIA \"Date Picker\n// Dialog\" grid pattern: exactly one day is a real tab stop (roving\n// tabindex, the same underlying idea as Tabs/Accordion's\n// useRovingFocus, but the actual next-cell math is 2D date\n// arithmetic — see core/calendar.ts's getNextFocusDate for why that\n// lives there instead of core/collection.ts). Arrow keys move the\n// focused day (and cross month boundaries automatically when they\n// land outside the visible month); PageUp/PageDown move a whole\n// month; Home/End snap to the start/end of the focused day's week;\n// Enter/Space selects. The month/year picker grids are plain button\n// grids — real, natively focusable/activatable elements — rather\n// than a second roving-tabindex system, since they're transient\n// navigation screens, not the primary day-by-day interaction.\n// ============================================================\n\ntype CalendarView = \"days\" | \"months\" | \"years\";\n\nconst YEAR_BLOCK_SIZE = 12;\n\nexport interface CalendarProps extends BaseComponentProps {\n value?: Date | null;\n defaultValue?: Date | null;\n onChange?: (date: Date) => void;\n min?: Date;\n max?: Date;\n isDateDisabled?: (date: Date) => boolean;\n weekStartsOn?: 0 | 1;\n locale?: string;\n /** Which month is shown (controlled). Pair with onMonthChange. Defaults to the selected value's month, or today's. */\n month?: Date;\n onMonthChange?: (month: Date) => void;\n}\n\nexport const Calendar = forwardRef<HTMLDivElement, CalendarProps>(function Calendar(\n {\n value,\n defaultValue,\n onChange,\n min,\n max,\n isDateDisabled,\n weekStartsOn = 0,\n locale,\n month,\n onMonthChange,\n className,\n style,\n theme,\n color,\n },\n ref\n) {\n const uid = useId();\n const today = useRef(startOfDay(new Date())).current;\n\n const isValueControlled = value !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState<Date | null>(defaultValue ?? null);\n const selected = isValueControlled ? value : uncontrolledValue;\n\n const isMonthControlled = month !== undefined;\n const [uncontrolledMonth, setUncontrolledMonth] = useState<Date>(selected ?? today);\n const visibleMonth = isMonthControlled ? month! : uncontrolledMonth;\n\n const [view, setView] = useState<CalendarView>(\"days\");\n\n function setMonth(next: Date) {\n if (!isMonthControlled) setUncontrolledMonth(next);\n onMonthChange?.(next);\n }\n\n const [focusedDate, setFocusedDate] = useState<Date>(() => selected ?? today);\n\n // If the visible month changes (either navigation or the\n // controlled `month` prop), keep the roving-focus date inside it\n // — landing keyboard focus on a date from a month that's no\n // longer showing would be an invisible, unreachable focus target.\n useEffect(() => {\n if (!isSameMonth(focusedDate, visibleMonth)) {\n setFocusedDate(new Date(visibleMonth.getFullYear(), visibleMonth.getMonth(), 1));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [visibleMonth]);\n\n const state = { min, max, isDateDisabled: isDateDisabled ?? (() => false) };\n const grid = getMonthGrid(visibleMonth, weekStartsOn, today);\n const weekdayLabels = getWeekdayLabels(weekStartsOn, locale);\n const monthLabel = getMonthLabel(visibleMonth, locale);\n const gridId = `nx-calendar-grid-${uid}`;\n\n const yearBlockStart = getYearBlockStart(visibleMonth.getFullYear(), YEAR_BLOCK_SIZE);\n const yearGrid = getYearGrid(yearBlockStart, YEAR_BLOCK_SIZE);\n\n function selectDate(date: Date) {\n if (!isDateSelectable(date, state)) return;\n if (!isValueControlled) setUncontrolledValue(date);\n onChange?.(date);\n setFocusedDate(date);\n if (!isSameMonth(date, visibleMonth)) setMonth(date);\n }\n\n function selectMonth(monthIndex: number) {\n setMonth(new Date(visibleMonth.getFullYear(), monthIndex, 1));\n setView(\"days\");\n }\n\n function selectYear(year: number) {\n setMonth(new Date(year, visibleMonth.getMonth(), 1));\n setView(\"months\");\n }\n\n function handleDayKeyDown(date: Date) {\n return (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n selectDate(date);\n return;\n }\n const next = getNextFocusDate(date, e.key, weekStartsOn);\n if (!next) return;\n e.preventDefault();\n setFocusedDate(next);\n if (!isSameMonth(next, visibleMonth)) setMonth(next);\n };\n }\n\n // Move real DOM focus to the new focused cell once it's actually\n // rendered — necessary because PageUp/PageDown/an out-of-month\n // Arrow press changes `visibleMonth` first, and the target\n // button doesn't exist in the DOM until that re-render happens.\n const gridRef = useRef<HTMLDivElement | null>(null);\n useEffect(() => {\n if (view !== \"days\") return;\n const el = gridRef.current?.querySelector<HTMLButtonElement>('[data-focused=\"true\"]');\n el?.focus();\n }, [focusedDate, view]);\n\n function handlePrev() {\n if (view === \"days\") setMonth(addMonths(visibleMonth, -1));\n else if (view === \"months\") setMonth(new Date(visibleMonth.getFullYear() - 1, visibleMonth.getMonth(), 1));\n else setMonth(new Date(visibleMonth.getFullYear() - YEAR_BLOCK_SIZE, visibleMonth.getMonth(), 1));\n }\n\n function handleNext() {\n if (view === \"days\") setMonth(addMonths(visibleMonth, 1));\n else if (view === \"months\") setMonth(new Date(visibleMonth.getFullYear() + 1, visibleMonth.getMonth(), 1));\n else setMonth(new Date(visibleMonth.getFullYear() + YEAR_BLOCK_SIZE, visibleMonth.getMonth(), 1));\n }\n\n const headerLabel =\n view === \"days\"\n ? monthLabel\n : view === \"months\"\n ? String(visibleMonth.getFullYear())\n : `${yearGrid[0]} \\u2013 ${yearGrid[yearGrid.length - 1]}`;\n const prevLabel = view === \"days\" ? \"Previous month\" : view === \"months\" ? \"Previous year\" : `Previous ${YEAR_BLOCK_SIZE} years`;\n const nextLabel = view === \"days\" ? \"Next month\" : view === \"months\" ? \"Next year\" : `Next ${YEAR_BLOCK_SIZE} years`;\n\n const calendar = (\n <div ref={ref} className={[\"nx-calendar\", className].filter(Boolean).join(\" \")} style={style}>\n <div className=\"nx-calendar__header\">\n <button type=\"button\" className=\"nx-calendar__nav\" onClick={handlePrev} aria-label={prevLabel}>\n <ChevronLeftIcon size={16} aria-hidden=\"true\" />\n </button>\n {view === \"years\" ? (\n <span className=\"nx-calendar__month-label\" aria-live=\"polite\">\n {headerLabel}\n </span>\n ) : (\n <button\n type=\"button\"\n className=\"nx-calendar__month-label nx-calendar__month-label--button\"\n aria-live=\"polite\"\n onClick={() => setView(view === \"days\" ? \"months\" : \"years\")}\n >\n {headerLabel}\n </button>\n )}\n <button type=\"button\" className=\"nx-calendar__nav\" onClick={handleNext} aria-label={nextLabel}>\n <ChevronRightIcon size={16} aria-hidden=\"true\" />\n </button>\n </div>\n\n {view === \"days\" && (\n <>\n <div className=\"nx-calendar__weekdays\" aria-hidden=\"true\">\n {weekdayLabels.map((label, i) => (\n <span key={i} className=\"nx-calendar__weekday\">\n {label}\n </span>\n ))}\n </div>\n <div ref={gridRef} className=\"nx-calendar__grid\" id={gridId} {...getGridAriaProps(monthLabel)}>\n {grid.map((cell) => {\n const isSelected = !!selected && isSameDay(cell.date, selected);\n const isDisabled = !isDateSelectable(cell.date, state);\n const isFocused = isSameDay(cell.date, focusedDate);\n return (\n <button\n key={cell.date.toISOString()}\n type=\"button\"\n data-focused={isFocused || undefined}\n className={getDayClasses({\n isCurrentMonth: cell.isCurrentMonth,\n isToday: cell.isToday,\n isSelected,\n isDisabled,\n isFocused,\n })}\n onClick={() => selectDate(cell.date)}\n onKeyDown={handleDayKeyDown(cell.date)}\n disabled={isDisabled}\n {...getDayAriaProps({\n isSelected,\n isDisabled,\n isFocusable: isFocused,\n label: new Intl.DateTimeFormat(locale, { dateStyle: \"full\" }).format(cell.date),\n })}\n >\n {cell.date.getDate()}\n </button>\n );\n })}\n </div>\n </>\n )}\n\n {view === \"months\" && (\n <div className=\"nx-calendar__grid nx-calendar__grid--months\" role=\"grid\" aria-label={headerLabel}>\n {getMonthGridLabels(locale).map((label, i) => (\n <button\n key={i}\n type=\"button\"\n role=\"gridcell\"\n className={\n \"nx-calendar__cell\" + (i === visibleMonth.getMonth() ? \" nx-calendar__cell--selected\" : \"\")\n }\n onClick={() => selectMonth(i)}\n >\n {label}\n </button>\n ))}\n </div>\n )}\n\n {view === \"years\" && (\n <div className=\"nx-calendar__grid nx-calendar__grid--years\" role=\"grid\" aria-label={headerLabel}>\n {yearGrid.map((year) => (\n <button\n key={year}\n type=\"button\"\n role=\"gridcell\"\n className={\n \"nx-calendar__cell\" + (year === visibleMonth.getFullYear() ? \" nx-calendar__cell--selected\" : \"\")\n }\n onClick={() => selectYear(year)}\n >\n {year}\n </button>\n ))}\n </div>\n )}\n </div>\n );\n\n return withThemeOverride(theme, withAccentOverride(color, calendar));\n});\n","// ============================================================\n// CALENDAR — pure core (generic month-grid + date math).\n//\n// Deliberately its own module, separate from core/datepicker.ts:\n// \"generate a 6-week grid of days for a given month\" is useful on\n// its own (a standalone, non-popover Calendar component uses this\n// exact same math) and is exactly the kind of thing worth getting\n// right once and unit-testing directly — off-by-ones at month\n// boundaries (does Jan 31 correctly roll into a February grid? does\n// the leading week correctly pull in the right days from the\n// PREVIOUS month depending on weekStartsOn?) are easy to get wrong\n// and tedious to catch through a rendered component.\n//\n// No date library dependency — this project has zero runtime\n// dependencies (see package.json), and everything here is doable\n// with native `Date` and `Intl.DateTimeFormat`. `Date`'s own\n// month/day rollover (`new Date(y, m, d)` with an out-of-range `d`\n// or `m` correctly rolls into the adjacent month) is relied on\n// throughout rather than hand-rolled leap-year/days-in-month tables.\n// ============================================================\n\nexport type WeekStart = 0 | 1; // 0 = Sunday, 1 = Monday\n\nexport interface CalendarDay {\n date: Date;\n /** False for the leading/trailing days from adjacent months that fill out the grid. */\n isCurrentMonth: boolean;\n isToday: boolean;\n}\n\nexport function startOfDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nexport function isSameDay(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\n}\n\nexport function isSameMonth(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n}\n\nexport function addDays(date: Date, amount: number): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + amount);\n}\n\nexport function addMonths(date: Date, amount: number): Date {\n // Anchor on the 1st before adding months: adding a month to Jan\n // 31 via naive `setMonth` overflows into March in shorter months\n // (Date normalizes Feb 31 -> Mar 3) — anchoring on day 1 first and\n // only THEN restoring (a clamped) day-of-month avoids that,\n // matching how most calendar UIs expect \"next month\" from the\n // 31st to land in the last day of the following month, not spill\n // into the month after.\n const day = date.getDate();\n const firstOfTargetMonth = new Date(date.getFullYear(), date.getMonth() + amount, 1);\n const daysInTargetMonth = new Date(firstOfTargetMonth.getFullYear(), firstOfTargetMonth.getMonth() + 1, 0).getDate();\n return new Date(firstOfTargetMonth.getFullYear(), firstOfTargetMonth.getMonth(), Math.min(day, daysInTargetMonth));\n}\n\nexport function clampDate(date: Date, min?: Date, max?: Date): Date {\n let result = date;\n if (min && result < min) result = min;\n if (max && result > max) result = max;\n return result;\n}\n\nexport function isWithinRange(date: Date, min?: Date, max?: Date): boolean {\n const d = startOfDay(date).getTime();\n if (min && d < startOfDay(min).getTime()) return false;\n if (max && d > startOfDay(max).getTime()) return false;\n return true;\n}\n\n/**\n * A full 6-week (42-day) grid for the month containing `monthAnchor`\n * — always 42 cells regardless of how many weeks the month actually\n * spans, so a calendar's layout height never shifts between months\n * (a common, deliberate UI convention; a 4-or-5-or-6-week grid that\n * changes size month to month causes visible layout jumps in\n * whatever's positioned below it).\n */\nexport function getMonthGrid(monthAnchor: Date, weekStartsOn: WeekStart, today: Date = new Date()): CalendarDay[] {\n const year = monthAnchor.getFullYear();\n const month = monthAnchor.getMonth();\n const firstOfMonth = new Date(year, month, 1);\n\n // How far back the grid's first cell needs to start: the first\n // weekday-column of the week containing the 1st.\n const firstWeekday = firstOfMonth.getDay(); // 0=Sun..6=Sat\n const leadingDays = (firstWeekday - weekStartsOn + 7) % 7;\n const gridStart = addDays(firstOfMonth, -leadingDays);\n\n const todayNormalized = startOfDay(today);\n const days: CalendarDay[] = [];\n for (let i = 0; i < 42; i++) {\n const date = addDays(gridStart, i);\n days.push({\n date,\n isCurrentMonth: date.getMonth() === month,\n isToday: isSameDay(date, todayNormalized),\n });\n }\n return days;\n}\n\n/**\n * Weekday header labels (e.g. \"Su\", \"Mo\", ...), starting from\n * `weekStartsOn` and using the runtime's own locale data via\n * Intl.DateTimeFormat rather than a hardcoded English array — this\n * is genuinely correct for any locale, not just labeled as if it\n * were.\n */\nexport function getWeekdayLabels(weekStartsOn: WeekStart, locale?: string): string[] {\n const formatter = new Intl.DateTimeFormat(locale, { weekday: \"short\" });\n // Jan 4, 1970 was a Sunday — an arbitrary known Sunday to walk\n // forward from, not a magic number tied to \"today\".\n const knownSunday = new Date(1970, 0, 4);\n return Array.from({ length: 7 }, (_, i) => formatter.format(addDays(knownSunday, weekStartsOn + i)));\n}\n\nexport function getMonthLabel(monthAnchor: Date, locale?: string): string {\n return new Intl.DateTimeFormat(locale, { month: \"long\", year: \"numeric\" }).format(monthAnchor);\n}\n\n// --- month-grid and year-grid \"zoom out\" views ---------------------\n//\n// Jumping from, say, the current month to a birthdate 40 years ago\n// by clicking \"previous month\" 480 times is exactly the kind of\n// friction that makes a calendar picker feel broken rather than\n// merely basic. The standard fix (the same one virtually every real\n// calendar widget uses) is a third, faster axis: click the header\n// label to zoom out from a day grid to a 12-month grid for the\n// year, and again to a grid of years — picking at the coarser level\n// jumps straight to that month/year instead of walking there one\n// step at a time.\n\n/** Short month labels (Jan, Feb, ...) for a 12-cell month-picker grid, in calendar order (not reordered like weekdays — a year always starts in January regardless of locale). */\nexport function getMonthGridLabels(locale?: string): string[] {\n const formatter = new Intl.DateTimeFormat(locale, { month: \"short\" });\n return Array.from({ length: 12 }, (_, i) => formatter.format(new Date(2000, i, 1)));\n}\n\n/**\n * The first year of the aligned block containing `year`, for a\n * year-picker grid of `blockSize` years (default 12, matching the\n * 12-cell month grid's shape so both views lay out the same\n * 3-column/4-row grid). Blocks align to multiples of `blockSize`\n * (e.g. 2016, 2028, 2040 for size 12) — a fixed, predictable\n * alignment rather than one centered on whatever year happens to be\n * current, the same way a real \"decade view\" works.\n */\nexport function getYearBlockStart(year: number, blockSize = 12): number {\n return Math.floor(year / blockSize) * blockSize;\n}\n\n/** The `blockSize` consecutive years starting at `blockStartYear`. */\nexport function getYearGrid(blockStartYear: number, blockSize = 12): number[] {\n return Array.from({ length: blockSize }, (_, i) => blockStartYear + i);\n}\n\n/**\n * Where a keydown on a focused grid cell should move focus to, or\n * `null` if the key isn't one the grid handles. This is genuinely\n * different math from core/collection.ts's flat-list navigation —\n * a calendar is two-dimensional (7 columns), and \"next\" needs to\n * know the actual date arithmetic (±1 day, ±7 days, snap to the\n * start/end of the visible week, ±1 month), not just \"the next\n * index in an array\" — so it lives here instead of being forced\n * into collection.ts's shape.\n */\nexport function getNextFocusDate(current: Date, key: string, weekStartsOn: WeekStart): Date | null {\n switch (key) {\n case \"ArrowLeft\":\n return addDays(current, -1);\n case \"ArrowRight\":\n return addDays(current, 1);\n case \"ArrowUp\":\n return addDays(current, -7);\n case \"ArrowDown\":\n return addDays(current, 7);\n case \"Home\": {\n const offset = (current.getDay() - weekStartsOn + 7) % 7;\n return addDays(current, -offset);\n }\n case \"End\": {\n const offset = (current.getDay() - weekStartsOn + 7) % 7;\n return addDays(current, 6 - offset);\n }\n case \"PageUp\":\n return addMonths(current, -1);\n case \"PageDown\":\n return addMonths(current, 1);\n default:\n return null;\n }\n}\n","import { resolveFieldState, getFieldAriaProps, type FieldProps, type FieldState } from \"./field\";\nimport { isWithinRange, startOfDay } from \"./calendar\";\n\n// ============================================================\n// DATE PICKER — pure core (Category D: Input's field shape +\n// Popover + Calendar's grid, composed rather than reimplemented).\n//\n// This module owns the two things genuinely specific to a date\n// FIELD rather than the calendar widget itself: default\n// formatting/parsing (native Intl/Date, no date library — zero\n// runtime deps, matching the rest of this project), and whether a\n// given date is selectable at all (min/max + a consumer predicate).\n// The grid math itself is core/calendar.ts's job, not this\n// module's — DatePicker composes that the same way it composes\n// core/field.ts, rather than owning either.\n// ============================================================\n\nexport interface DatePickerCoreProps extends FieldProps {\n min?: Date;\n max?: Date;\n /** An extra predicate for one-off disabled dates (holidays, already-booked days) beyond the min/max range. */\n isDateDisabled?: (date: Date) => boolean;\n weekStartsOn?: 0 | 1;\n locale?: string;\n}\n\nexport interface DatePickerState extends FieldState {\n min?: Date;\n max?: Date;\n isDateDisabled: (date: Date) => boolean;\n weekStartsOn: 0 | 1;\n locale?: string;\n}\n\nexport function resolveDatePickerState(props: DatePickerCoreProps): DatePickerState {\n return {\n ...resolveFieldState(props),\n min: props.min,\n max: props.max,\n // A no-op default rather than `undefined` — every call site can\n // just call `state.isDateDisabled(date)` unconditionally instead\n // of an `isDateDisabled?.(date) ?? false` at every use.\n isDateDisabled: props.isDateDisabled ?? (() => false),\n weekStartsOn: props.weekStartsOn ?? 0,\n locale: props.locale,\n };\n}\n\n/** The single source of truth for \"can this date be picked at all\" — min/max range AND the consumer's own predicate, so every call site (grid cell rendering, keyboard navigation landing on a cell, typed-text validation) agrees. */\nexport function isDateSelectable(date: Date, state: Pick<DatePickerState, \"min\" | \"max\" | \"isDateDisabled\">): boolean {\n if (!isWithinRange(date, state.min, state.max)) return false;\n return !state.isDateDisabled(date);\n}\n\n// --- formatting / parsing -----------------------------------------\n\nexport function formatDate(date: Date, locale?: string): string {\n return new Intl.DateTimeFormat(locale, { year: \"numeric\", month: \"2-digit\", day: \"2-digit\" }).format(date);\n}\n\n/**\n * Parses free-typed text into a Date, or `null` if it isn't a valid\n * date at all. Deliberately permissive (delegates to the native\n * `Date` constructor rather than a hand-rolled format parser) —\n * this project has zero runtime dependencies, and native `Date`\n * already handles ISO (`2024-03-15`) and most common locale\n * formats (`03/15/2024`) without needing a date library pulled in\n * just for this. What it does NOT do is validate the result is\n * meaningfully \"typed as a date\" vs. some unrelated numeric string\n * `Date` happens to accept — `isDateSelectable` (min/max/disabled)\n * is a separate, deliberate check layered on top by the caller.\n */\nexport function parseDate(text: string): Date | null {\n const trimmed = text.trim();\n if (!trimmed) return null;\n const parsed = new Date(trimmed);\n if (Number.isNaN(parsed.getTime())) return null;\n return startOfDay(parsed);\n}\n\n// --- classes ------------------------------------------------------\n\nexport function getDayClasses(input: {\n isCurrentMonth: boolean;\n isToday: boolean;\n isSelected: boolean;\n isDisabled: boolean;\n isFocused: boolean;\n}): string {\n return [\n \"nx-calendar__day\",\n !input.isCurrentMonth && \"nx-calendar__day--outside\",\n input.isToday && \"nx-calendar__day--today\",\n input.isSelected && \"nx-calendar__day--selected\",\n input.isDisabled && \"nx-calendar__day--disabled\",\n input.isFocused && \"nx-calendar__day--focused\",\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\n// --- ARIA -----------------------------------------------------\n\nexport function getGridAriaProps(monthLabel: string) {\n return { role: \"grid\" as const, \"aria-label\": monthLabel };\n}\n\nexport function getDayAriaProps(input: { isSelected: boolean; isDisabled: boolean; isFocusable: boolean; label: string }) {\n return {\n role: \"gridcell\" as const,\n \"aria-selected\": input.isSelected,\n \"aria-disabled\": input.isDisabled || undefined,\n \"aria-label\": input.label,\n tabIndex: input.isFocusable ? 0 : -1,\n };\n}\n\nexport function getFieldTriggerAriaProps(state: FieldState, describedBy?: string) {\n return getFieldAriaProps(state, describedBy);\n}\n","import React, { forwardRef, useEffect, useId, useRef, useState } from \"react\";\nimport {\n resolveDatePickerState,\n isDateSelectable,\n formatDate,\n parseDate,\n getFieldTriggerAriaProps,\n type DatePickerCoreProps,\n} from \"../core/datepicker\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport { Popover, PopoverTrigger, PopoverContent } from \"./Popover\";\nimport { Calendar } from \"./Calendar\";\nimport { CalendarIcon } from \"../icons/react\";\nimport \"./Field.css\";\nimport \"./DatePicker.css\";\n\n// ============================================================\n// DATE PICKER — React layer (Category D). Composes three things\n// that already exist rather than rebuilding any of them:\n//\n// - Input's field shape (label/helper/error, the \"nx-field\"\n// wrapper) — a DatePicker is fundamentally a text field first.\n// - Popover (rebuilt properly with real anchor positioning — see\n// core/popover.ts's header) for the floating panel: ThemedPortal,\n// useFloatingPosition, useOverlayBehavior, useClickOutside all\n// come along for free by using <Popover>/<PopoverTrigger>/\n// <PopoverContent> rather than a fourth hand-rolled overlay.\n// - Calendar (react/Calendar.tsx) for the grid itself — DatePicker\n// renders the exact same component a standalone inline calendar\n// would, not a second grid implementation.\n//\n// Popover's `open`/`onOpenChange` are driven fully from here (not\n// left to Popover's own internal toggle) so that BOTH the calendar\n// icon button (via PopoverTrigger, which anchors positioning to\n// itself) and the field's own keyboard handling (ArrowDown, Escape)\n// can open/close the same state.\n//\n// autoFocus moving focus into the calendar's selected/today cell\n// the moment it opens is Popover's existing default (`modal=false`\n// still autofocuses) — that's also literally what the WAI-ARIA \"Date\n// Picker Dialog\" pattern recommends, not a side effect to work\n// around. Because of that, opening is deliberately NOT wired to the\n// input's onFocus (tabbing into the field to type a date manually\n// would otherwise have focus immediately yanked into the grid) —\n// only an explicit ArrowDown or a click on the calendar icon opens\n// it.\n// ============================================================\n\nexport interface DatePickerProps extends DatePickerCoreProps, Omit<BaseComponentProps, \"children\"> {\n value?: Date | null;\n defaultValue?: Date | null;\n onChange?: (date: Date | null) => void;\n placeholder?: string;\n label?: string;\n helperText?: string;\n errorText?: string;\n id?: string;\n name?: string;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport const DatePicker = forwardRef<HTMLInputElement, DatePickerProps>(function DatePicker(\n {\n value,\n defaultValue,\n onChange,\n min,\n max,\n isDateDisabled,\n weekStartsOn,\n locale,\n placeholder = \"Select a date\",\n label,\n helperText,\n errorText,\n id,\n name,\n open,\n defaultOpen,\n onOpenChange,\n size,\n disabled,\n required,\n error,\n className,\n style,\n theme,\n color,\n },\n forwardedRef\n) {\n const isInvalid = error ?? !!errorText;\n const state = resolveDatePickerState({ size, disabled, required, error: isInvalid, min, max, isDateDisabled, weekStartsOn, locale });\n const uid = useId();\n const inputId = id ?? `nx-datepicker-${uid}`;\n const helperMessage = errorText ?? helperText;\n const descId = helperMessage ? `${inputId}-desc` : undefined;\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n // ---- committed value ----\n const isValueControlled = value !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState<Date | null>(defaultValue ?? null);\n const committedValue = isValueControlled ? value ?? null : uncontrolledValue;\n\n function commitValue(next: Date | null) {\n if (!isValueControlled) setUncontrolledValue(next);\n if (next?.getTime() !== committedValue?.getTime()) onChange?.(next);\n }\n\n // ---- open state (fully controlled from here, see header comment) ----\n const isOpenControlled = open !== undefined;\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen ?? false);\n const isOpen = isOpenControlled ? open! : uncontrolledOpen;\n\n // ---- typed text ----\n const [query, setQuery] = useState<string>(() => (committedValue ? formatDate(committedValue, state.locale) : \"\"));\n\n // Resync only when the controlled `value` prop changes from\n // outside — same \"don't clobber in-progress typing\" reasoning as\n // Combobox's identical effect.\n useEffect(() => {\n if (!isValueControlled) return;\n setQuery(value ? formatDate(value, state.locale) : \"\");\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, isValueControlled]);\n\n function commitFromText() {\n const trimmed = query.trim();\n if (!trimmed) {\n commitValue(null);\n return;\n }\n const parsed = parseDate(trimmed);\n if (parsed && isDateSelectable(parsed, state)) {\n commitValue(parsed);\n setQuery(formatDate(parsed, state.locale));\n } else {\n // Unparseable, or parses to a date that's disabled/out of\n // range — revert, the same rule Combobox enforces for text\n // matching no real option.\n setQuery(committedValue ? formatDate(committedValue, state.locale) : \"\");\n }\n }\n\n // `rawSetOpen` — the mechanical part only (update state, notify\n // the consumer's onOpenChange). `handlePopoverOpenChange` below is\n // the one actually passed to <Popover>, and layers the\n // typed-text-reconciliation side effect on top for the paths that\n // truly need it (Escape, an outside click) — see its own comment\n // for why that split exists and isn't just done unconditionally\n // in `rawSetOpen` itself.\n function rawSetOpen(next: boolean) {\n if (!isOpenControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n }\n\n // Passed to <Popover onOpenChange={...}>. This is what actually\n // fires for Escape and an outside click — Popover's own Escape\n // handling (Rule 11) intercepts the keydown in the document\n // CAPTURE phase and calls stopPropagation() before it would ever\n // reach this input's own onKeyDown, so hanging the \"reconcile\n // typed text\" side effect off THIS callback (which Popover's\n // close path always routes through, regardless of cause) is what\n // actually fires reliably — a separate Escape handler on the\n // input itself would silently never run.\n //\n // handleCalendarChange (below) deliberately does NOT go through\n // this function — it calls rawSetOpen directly. It already\n // performed its own correct, fresh commitValue/setQuery calls a\n // line earlier; running commitFromText() again here would read\n // `query`/`committedValue` from THIS render's stale closure\n // (React state updates requested moments earlier in the same\n // synchronous handler aren't visible yet) and clobber the\n // just-set value right back to what it was before the selection.\n function handlePopoverOpenChange(next: boolean) {\n rawSetOpen(next);\n if (!next) commitFromText();\n }\n\n function handleCalendarChange(date: Date) {\n commitValue(date);\n setQuery(formatDate(date, state.locale));\n rawSetOpen(false);\n inputRef.current?.focus();\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (state.isDisabled) return;\n\n if (e.key === \"Enter\") {\n e.preventDefault();\n // Called directly (not via handlePopoverOpenChange) for the\n // same stale-closure reason as handleCalendarChange: `query`\n // is still fresh here since nothing else in this handler\n // changed it first.\n commitFromText();\n rawSetOpen(false);\n return;\n }\n if (!isOpen && (e.key === \"ArrowDown\" || e.key === \"ArrowUp\")) {\n e.preventDefault();\n rawSetOpen(true);\n }\n }\n\n const setInputRef = (node: HTMLInputElement | null) => {\n inputRef.current = node;\n if (typeof forwardedRef === \"function\") forwardedRef(node);\n else if (forwardedRef) (forwardedRef as React.MutableRefObject<HTMLInputElement | null>).current = node;\n };\n\n const triggerAria = getFieldTriggerAriaProps(state, descId);\n\n const content = (\n <Popover open={isOpen} onOpenChange={handlePopoverOpenChange} modal={false}>\n <div className=\"nx-field\" style={style}>\n {label && (\n <label htmlFor={inputId} className=\"nx-field__label\">\n {label}\n {state.isRequired && (\n <span className=\"nx-field__required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n <div className=\"nx-datepicker__wrapper\">\n <input\n ref={setInputRef}\n id={inputId}\n type=\"text\"\n value={query}\n placeholder={placeholder}\n disabled={state.isDisabled}\n onChange={(e) => setQuery(e.target.value)}\n onKeyDown={handleKeyDown}\n onBlur={() => {\n // Moving focus into the calendar (autoFocus, once it\n // opens) also fires a blur on the input — don't treat\n // that as \"the user is done typing\" and revert/close\n // out from under them.\n if (isOpen) return;\n commitFromText();\n }}\n className={`nx-datepicker__input${state.isInvalid ? \" nx-datepicker__input--invalid\" : \"\"}`}\n {...triggerAria}\n />\n <PopoverTrigger>\n <button\n type=\"button\"\n className=\"nx-datepicker__icon-button\"\n disabled={state.isDisabled}\n aria-label={isOpen ? \"Close calendar\" : \"Open calendar\"}\n >\n <CalendarIcon size={18} aria-hidden=\"true\" />\n </button>\n </PopoverTrigger>\n </div>\n {helperMessage && (\n <span id={descId} className={`nx-field__helper${state.isInvalid ? \" nx-field__helper--error\" : \"\"}`}>\n {helperMessage}\n </span>\n )}\n </div>\n <PopoverContent className=\"nx-datepicker__popover\">\n <Calendar\n value={committedValue}\n onChange={handleCalendarChange}\n min={min}\n max={max}\n isDateDisabled={isDateDisabled}\n weekStartsOn={state.weekStartsOn}\n locale={state.locale}\n />\n </PopoverContent>\n {name && <input type=\"hidden\" name={name} value={committedValue ? committedValue.toISOString().slice(0, 10) : \"\"} />}\n </Popover>\n );\n\n return withThemeOverride(theme, withAccentOverride(color, content));\n});\n","import React, {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useId,\n useMemo,\n useRef,\n useState,\n cloneElement,\n isValidElement,\n} from \"react\";\nimport {\n resolvePopoverState,\n makeTriggerId,\n makeContentId,\n getContentClasses,\n getTriggerAriaProps,\n getContentAriaProps,\n type PopoverCoreProps,\n} from \"../core/popover\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport { ThemedPortal } from \"../theme-engine/ThemedPortal\";\nimport { useOverlayBehavior } from \"../theme-engine/useOverlayBehavior\";\nimport { useFloatingPosition } from \"../theme-engine/useFloatingPosition\";\nimport { useClickOutside } from \"../theme-engine/useClickOutside\";\nimport \"./Popover.css\";\n\n// ============================================================\n// POPOVER — the rebuilt Category C component. Content is\n// arbitrary (a form, a swatch grid, a mini calendar) — see\n// core/popover.ts's header for what that means this module does\n// and doesn't own. Structurally this mirrors DropdownMenu.tsx\n// (context-based Root/Trigger/Content split, ThemedPortal,\n// useFloatingPosition, useOverlayBehavior, useClickOutside) because\n// that's the proven-correct Category C shape; the actual\n// differences are: no role=\"menu\"/menuitem roving-focus keyboard\n// handling (there's no fixed item list to navigate), and a `modal`\n// toggle that switches whether Tab is trapped inside.\n// ============================================================\n\nfunction mergeRefs<T>(...refs: Array<React.Ref<T> | null | undefined>) {\n return (value: T | null) => {\n for (const ref of refs) {\n if (!ref) continue;\n if (typeof ref === \"function\") ref(value);\n else (ref as React.MutableRefObject<T | null>).current = value;\n }\n };\n}\n\nfunction composeHandlers<E>(a?: (e: E) => void, b?: (e: E) => void) {\n return (e: E) => {\n a?.(e);\n if ((e as unknown as { defaultPrevented?: boolean }).defaultPrevented) return;\n b?.(e);\n };\n}\n\ninterface PopoverContextValue {\n open: boolean;\n toggle: () => void;\n /** `returnFocus` mirrors DropdownMenu's close(returnFocus): Escape and the built-in PopoverClose button return focus to the trigger; an outside click lets focus land where the user clicked instead of snapping back. */\n close: (returnFocus: boolean) => void;\n triggerId: string;\n contentId: string;\n triggerRef: React.RefObject<HTMLElement | null>;\n state: ReturnType<typeof resolvePopoverState>;\n theme?: string;\n color?: string;\n}\n\nconst PopoverContext = createContext<PopoverContextValue | null>(null);\n\nfunction usePopoverContext(component: string): PopoverContextValue {\n const ctx = useContext(PopoverContext);\n if (!ctx) throw new Error(`<${component}> must be rendered inside a <Popover>.`);\n return ctx;\n}\n\n// ---- Root ------------------------------------------------------\n\ninterface PopoverProps extends PopoverCoreProps, Pick<BaseComponentProps, \"theme\" | \"color\"> {\n /** Open state (controlled). Pair with onOpenChange. */\n open?: boolean;\n /** Initial open state (uncontrolled). Default false. */\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n children?: React.ReactNode;\n}\n\nexport function Popover(props: PopoverProps) {\n const { open: openProp, defaultOpen, onOpenChange, placement, align, modal, theme, color, children } = props;\n\n const state = resolvePopoverState({ placement, align, modal });\n const baseId = useId();\n const triggerId = makeTriggerId(baseId);\n const contentId = makeContentId(baseId);\n const triggerRef = useRef<HTMLElement | null>(null);\n\n const isControlled = openProp !== undefined;\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen ?? false);\n const open = isControlled ? openProp! : uncontrolledOpen;\n\n const setOpenState = useCallback(\n (next: boolean) => {\n if (!isControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n },\n [isControlled, onOpenChange]\n );\n\n const toggle = useCallback(() => setOpenState(!open), [setOpenState, open]);\n // Mirrors DropdownMenu's close(returnFocus) exactly — Escape and\n // an explicit \"Close\" action should hand focus back to the\n // trigger; an outside click should not (focus should land where\n // the user clicked, not snap back). rAF waits for the content to\n // unmount so the focus() call isn't stolen back by React's own\n // cleanup.\n const close = useCallback(\n (returnFocus: boolean) => {\n setOpenState(false);\n if (returnFocus) requestAnimationFrame(() => triggerRef.current?.focus());\n },\n [setOpenState]\n );\n\n const ctx = useMemo<PopoverContextValue>(\n () => ({ open, toggle, close, triggerId, contentId, triggerRef, state, theme, color }),\n [open, toggle, close, triggerId, contentId, state, theme, color]\n );\n\n return <PopoverContext.Provider value={ctx}>{children}</PopoverContext.Provider>;\n}\n\n// ---- Trigger -----------------------------------------------------\n\ninterface PopoverTriggerProps {\n /** A single element — cloned to attach the dialog-button ARIA, a ref, and the open/close click handler. */\n children: React.ReactElement;\n}\n\nexport const PopoverTrigger = forwardRef<HTMLElement, PopoverTriggerProps>(function PopoverTrigger(\n { children },\n forwardedRef\n) {\n const ctx = usePopoverContext(\"PopoverTrigger\");\n const aria = getTriggerAriaProps({ open: ctx.open, triggerId: ctx.triggerId, contentId: ctx.contentId });\n\n if (!isValidElement(children)) {\n throw new Error(\"<PopoverTrigger> expects a single React element child.\");\n }\n const child = children as React.ReactElement<Record<string, unknown>>;\n\n const handleClick = composeHandlers(child.props.onClick as ((e: React.MouseEvent) => void) | undefined, () =>\n ctx.toggle()\n );\n\n return cloneElement(child, {\n // React 19 moved `ref` into props; check props.ref first, fall\n // back to the legacy element.ref — covers 18 and 19 both.\n ref: mergeRefs(\n (child.props as { ref?: React.Ref<HTMLElement> }).ref ?? (child as unknown as { ref?: React.Ref<HTMLElement> }).ref,\n ctx.triggerRef,\n forwardedRef\n ),\n onClick: handleClick,\n ...aria,\n });\n});\n\n// ---- Content (the portalled panel) --------------------------------\n\ninterface PopoverContentProps extends BaseComponentProps {\n children?: React.ReactNode;\n}\n\nexport const PopoverContent = forwardRef<HTMLDivElement, PopoverContentProps>(function PopoverContent(\n { className, style, theme, color, children, ...rest },\n forwardedRef\n) {\n const ctx = usePopoverContext(\"PopoverContent\");\n if (!ctx.open) return null;\n return (\n <PopoverContentInner className={className} style={style} theme={theme} color={color} forwardedRef={forwardedRef} {...rest}>\n {children}\n </PopoverContentInner>\n );\n});\n\n// Split so all the open-only hooks (position, overlay behavior,\n// click-outside) mount and unmount cleanly with the popover, the\n// same reason DropdownMenuContentInner exists as its own function.\ninterface InnerProps extends BaseComponentProps {\n children?: React.ReactNode;\n forwardedRef: React.ForwardedRef<HTMLDivElement>;\n [key: `aria-${string}`]: string | undefined;\n}\n\nfunction PopoverContentInner({ className, style, theme, color, children, forwardedRef, ...rest }: InnerProps) {\n const ctx = usePopoverContext(\"PopoverContent\");\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n const setContentRef = useCallback(\n (node: HTMLDivElement | null) => {\n contentRef.current = node;\n if (typeof forwardedRef === \"function\") forwardedRef(node);\n else if (forwardedRef) (forwardedRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n },\n [forwardedRef]\n );\n\n const position = useFloatingPosition({\n isOpen: true,\n triggerRef: ctx.triggerRef,\n floatingRef: contentRef,\n placement: ctx.state.placement,\n align: ctx.state.align,\n offset: 8,\n });\n\n // Rule 11's baseline, tunable by `modal`: a modal popover traps\n // Tab, the same as Modal; a non-modal one (the default) still\n // moves real focus in on open and closes on Escape, but lets Tab\n // carry focus on out of the popover entirely rather than cycling\n // — the right behavior for something like DatePicker's calendar,\n // which sits beside an Input focus needs to be able to move back\n // to. returnFocus is handled manually below (ctx.close's own\n // param) rather than by the hook, so Escape and an outside click\n // can differ — the hook's own returnFocus is one fixed value for\n // the whole overlay, and DropdownMenu establishes the same split.\n useOverlayBehavior({\n isOpen: true,\n onClose: () => ctx.close(true),\n containerRef: contentRef,\n triggerRef: ctx.triggerRef,\n closeOnEscape: true,\n trapFocus: ctx.state.modal,\n returnFocus: false,\n autoFocus: true,\n });\n\n // Closes on an outside click regardless of modal — that's about\n // dismissing the popover, not about whether Tab is trapped inside\n // it while open. Same shared hook Dropdown/Select use (Rule 12).\n // returnFocus is false here specifically: focus should land where\n // the user clicked, not snap back to the trigger.\n useClickOutside(\n true,\n [contentRef, ctx.triggerRef],\n useCallback(() => ctx.close(false), [ctx])\n );\n\n const contentAria = getContentAriaProps({ contentId: ctx.contentId, modal: ctx.state.modal });\n\n const content = (\n <div\n ref={setContentRef}\n className={getContentClasses(className)}\n style={{\n ...style,\n position: \"fixed\",\n top: position?.top ?? -9999,\n left: position?.left ?? -9999,\n // opacity (not visibility) hides the panel until it's\n // measured and placed — visibility:hidden elements can't be\n // focused, and autoFocus focuses something inside the\n // instant this mounts.\n opacity: position ? 1 : 0,\n pointerEvents: position ? undefined : \"none\",\n }}\n data-placement={position?.placement ?? ctx.state.placement}\n {...contentAria}\n {...rest}\n >\n {children}\n </div>\n );\n\n // theme/accent re-applied INSIDE the portal (Rule 6) — the\n // Content props override the Root's, which override the ambient\n // provider — same precedence as every other overlay component.\n return (\n <ThemedPortal anchorRef={ctx.triggerRef}>\n {withThemeOverride(theme ?? ctx.theme, withAccentOverride(color ?? ctx.color, content))}\n </ThemedPortal>\n );\n}\n\n// ---- Close (optional convenience button) --------------------------\n\ninterface PopoverCloseProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n children?: React.ReactNode;\n}\n\n/**\n * Closes the popover on click — purely a convenience so consumers\n * don't have to reach back into context themselves for the common\n * \"X\" or \"Done\" action inside a popover's own content. Entirely\n * optional; PopoverContent's children can just as well call the\n * close behavior some other way (e.g. the trigger itself, or an\n * outside click).\n *\n * Same clone-a-single-element approach as PopoverTrigger, and for\n * the same reason: wrapping `children` in an unconditional `<button>`\n * of its own broke the instant someone passed an already-interactive\n * child (`<PopoverClose><Button>Done</Button></PopoverClose>`) —\n * nesting a real `<button>` inside another `<button>` is invalid\n * HTML and a real hydration error, not just a style nit. When\n * `children` is a single element, this clones it (merging the ref\n * and composing onClick) instead of adding a second wrapper element.\n * Plain text or icon content (nothing to clone) still gets its own\n * `<button>`, the same as before.\n */\nexport const PopoverClose = forwardRef<HTMLButtonElement, PopoverCloseProps>(function PopoverClose(\n { onClick, children, ...rest },\n forwardedRef\n) {\n const ctx = usePopoverContext(\"PopoverClose\");\n const handleClick = composeHandlers(onClick, () => ctx.close(true));\n\n if (isValidElement(children)) {\n const child = children as React.ReactElement<Record<string, unknown>>;\n return cloneElement(child, {\n ref: mergeRefs(\n (child.props as { ref?: React.Ref<HTMLButtonElement> }).ref ??\n (child as unknown as { ref?: React.Ref<HTMLButtonElement> }).ref,\n forwardedRef\n ),\n onClick: composeHandlers(child.props.onClick as ((e: React.MouseEvent) => void) | undefined, handleClick),\n ...rest,\n });\n }\n\n return (\n <button ref={forwardedRef} type=\"button\" onClick={handleClick} {...rest}>\n {children}\n </button>\n );\n});\n","import type { Placement, Alignment } from \"./floating\";\n\n// ============================================================\n// POPOVER — pure core.\n//\n// The component BUILDING-COMPONENTS.md's own notes call out by\n// name: \"Popover (row 2) was built once, then removed. It proved\n// ThemedPortal correctly but shipped with no anchor-positioning\n// logic — its floating panel opened at the bottom of the page\n// instead of near its trigger. Rebuild it properly, positioning\n// included.\" This module + the React layer's use of\n// useFloatingPosition/core/floating.ts is that fix: the exact same\n// tested positioning infrastructure Dropdown, Select, and Tooltip\n// already use, not a fourth hand-rolled version of it.\n//\n// Unlike DropdownMenu (fixed role=\"menu\" content, roving-focus\n// items) or Select (a value picker), Popover's content is\n// arbitrary — a form, a color swatch grid, a mini calendar. So this\n// module only owns the two things that are genuinely fixed\n// regardless of what's inside: placement/alignment defaults, and\n// the trigger<->content ARIA wiring. Everything about what's\n// INSIDE the popover is the consumer's job, same as Modal's\n// children.\n// ============================================================\n\nexport interface PopoverCoreProps {\n placement?: Placement;\n align?: Alignment;\n /**\n * Whether the popover behaves like a modal dialog — traps focus\n * inside (Tab cycles rather than leaving), sets aria-modal, and\n * is the right choice when the content is itself a small form the\n * user must finish or dismiss. Default false: a non-modal popup\n * that still receives real focus and closes on Escape or an\n * outside click, but doesn't trap Tab — the right default for\n * lighter content like a menu-adjacent info panel. This is\n * exactly the axis DatePicker's calendar panel needs to be false\n * on: focus must be able to move between the Input and the grid\n * without Tab getting trapped inside just the calendar.\n */\n modal?: boolean;\n}\n\nexport interface PopoverState {\n placement: Placement;\n align: Alignment;\n modal: boolean;\n}\n\nexport function resolvePopoverState(props: PopoverCoreProps): PopoverState {\n return {\n // ?? not || (CONTRACT.md Rule 3).\n placement: props.placement ?? \"bottom\",\n align: props.align ?? \"center\",\n modal: props.modal ?? false,\n };\n}\n\n// --- id wiring (same pattern as core/dropdown.ts's trigger<->menu ids) ---\n\nexport function makeTriggerId(baseId: string): string {\n return `${baseId}-trigger`;\n}\n\nexport function makeContentId(baseId: string): string {\n return `${baseId}-content`;\n}\n\n// --- class helpers ---\n\nexport function getContentClasses(className?: string): string {\n return [\"nx-popover__content\", className].filter(Boolean).join(\" \");\n}\n\n// --- ARIA ---\n\nexport interface TriggerAriaInput {\n open: boolean;\n triggerId: string;\n contentId: string;\n}\n\nexport function getTriggerAriaProps(input: TriggerAriaInput) {\n return {\n id: input.triggerId,\n \"aria-haspopup\": \"dialog\" as const,\n \"aria-expanded\": input.open,\n // Only claim to control an id that actually exists in the DOM\n // right now (same reasoning as core/dropdown.ts's trigger aria).\n \"aria-controls\": input.open ? input.contentId : undefined,\n };\n}\n\nexport interface ContentAriaInput {\n contentId: string;\n modal: boolean;\n}\n\nexport function getContentAriaProps(input: ContentAriaInput) {\n return {\n role: \"dialog\" as const,\n id: input.contentId,\n // aria-modal is only meaningful (and only set) for the modal\n // variant — a non-modal popup that leaves the rest of the page\n // reachable shouldn't claim to be one.\n \"aria-modal\": input.modal ? (true as const) : undefined,\n };\n}\n","import React, { forwardRef, useEffect, useId, useMemo, useRef, useState } from \"react\";\nimport {\n resolveTimePickerState,\n isTimeSelectable,\n isSameTime,\n formatTime,\n parseTime,\n getFieldTriggerAriaProps,\n getMeridiem,\n hour12ToHours24,\n hours24ToHour12,\n getHourDialTicks,\n getMinuteDialTicks,\n getDialTickPosition,\n angleToStep,\n clampHourInput,\n clampMinuteInput,\n getDialTickClasses,\n getDialGroupAriaProps,\n getDialTickAriaProps,\n getReadoutSegmentClasses,\n getMeridiemButtonClasses,\n getPanelModeButtonAriaProps,\n type TimeValue,\n type TimePickerCoreProps,\n type TimePanelMode,\n type DialField,\n type Meridiem,\n} from \"../core/timepicker\";\nimport { getIndexForKey } from \"../core/collection\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport { Popover, PopoverTrigger, PopoverContent } from \"./Popover\";\nimport { ClockIcon, KeyboardIcon } from \"../icons/react\";\nimport \"./Field.css\";\nimport \"./TimePicker.css\";\n\n// ============================================================\n// TIME PICKER — React layer (Category D, not one of the original\n// 42 — see core/timepicker.ts's header). Composes exactly what\n// DatePicker composes: Input's field shape, Popover for the floating\n// panel (ThemedPortal + useFloatingPosition + useOverlayBehavior +\n// useClickOutside all come for free through <Popover>/\n// <PopoverTrigger>/<PopoverContent>), and Popover's open/onOpenChange\n// being fully driven from here so both the clock icon and the\n// field's own ArrowDown/Escape handling can open/close the same\n// state — mirrors DatePicker.tsx exactly, including WHY (see that\n// file's own header comment).\n//\n// The panel (TimeClockPanel) has two view modes toggled by one icon\n// button — an analog dial and a digital HH:MM entry — not two\n// separate components (see core/timepicker.ts's header for why the\n// once-separate flat list is gone entirely rather than kept as a\n// third option). `defaultPanelMode` picks which of the two shows\n// first when the panel opens; the person can still toggle between\n// them from there.\n//\n// TimeClockPanel stages a DRAFT time and only calls back up through\n// onConfirm on an explicit \"OK\" — dial/digital interaction is\n// multi-step (pick an hour, then a minute, maybe switch to typing\n// instead), so there needs to be a \"still deciding\" state that isn't\n// committed to the field until the person says they're done. Escape/\n// outside-click still falls through to the existing\n// handlePopoverOpenChange → commitFromText path exactly as before,\n// which is exactly what makes it behave like a Cancel: the draft\n// simply gets discarded along with the panel.\n// ============================================================\n\nexport interface TimePickerProps extends TimePickerCoreProps, Omit<BaseComponentProps, \"children\"> {\n value?: TimeValue | null;\n defaultValue?: TimeValue | null;\n onChange?: (time: TimeValue | null) => void;\n placeholder?: string;\n label?: string;\n helperText?: string;\n errorText?: string;\n id?: string;\n name?: string;\n /** Which view the panel opens showing: the analog dial (default) or digital HH:MM entry. The person can still switch between them via the panel's own toggle button once it's open. */\n defaultPanelMode?: TimePanelMode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport const TimePicker = forwardRef<HTMLInputElement, TimePickerProps>(function TimePicker(\n {\n value,\n defaultValue,\n onChange,\n min,\n max,\n use12Hour,\n isTimeDisabled,\n locale,\n defaultPanelMode,\n placeholder = \"Select a time\",\n label,\n helperText,\n errorText,\n id,\n name,\n open,\n defaultOpen,\n onOpenChange,\n size,\n disabled,\n required,\n error,\n className,\n style,\n theme,\n color,\n },\n forwardedRef\n) {\n const isInvalid = error ?? !!errorText;\n const state = resolveTimePickerState({ size, disabled, required, error: isInvalid, min, max, use12Hour, isTimeDisabled, locale });\n const uid = useId();\n const inputId = id ?? `nx-timepicker-${uid}`;\n const helperMessage = errorText ?? helperText;\n const descId = helperMessage ? `${inputId}-desc` : undefined;\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n // ---- committed value ----\n const isValueControlled = value !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState<TimeValue | null>(defaultValue ?? null);\n const committedValue = isValueControlled ? value ?? null : uncontrolledValue;\n\n function commitValue(next: TimeValue | null) {\n if (!isValueControlled) setUncontrolledValue(next);\n if (!isSameTime(next, committedValue)) onChange?.(next);\n }\n\n // ---- open state (fully controlled from here, see header comment) ----\n const isOpenControlled = open !== undefined;\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen ?? false);\n const isOpen = isOpenControlled ? open! : uncontrolledOpen;\n\n // ---- typed text ----\n const [query, setQuery] = useState<string>(() => (committedValue ? formatTime(committedValue, state.use12Hour, state.locale) : \"\"));\n\n // Resync only when the controlled `value` prop changes from\n // outside — same \"don't clobber in-progress typing\" reasoning as\n // DatePicker/Combobox's identical effect.\n useEffect(() => {\n if (!isValueControlled) return;\n setQuery(value ? formatTime(value, state.use12Hour, state.locale) : \"\");\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, isValueControlled]);\n\n function commitFromText() {\n const trimmed = query.trim();\n if (!trimmed) {\n commitValue(null);\n return;\n }\n const parsed = parseTime(trimmed);\n if (parsed && isTimeSelectable(parsed, state)) {\n commitValue(parsed);\n setQuery(formatTime(parsed, state.use12Hour, state.locale));\n } else {\n // Unparseable, or parses to a time that's disabled/out of\n // range — revert, the same rule DatePicker/Combobox enforce\n // for text matching nothing real.\n setQuery(committedValue ? formatTime(committedValue, state.use12Hour, state.locale) : \"\");\n }\n }\n\n // Same rawSetOpen/handlePopoverOpenChange split as DatePicker, and\n // for the identical reason: Popover's Escape/outside-click close\n // path always routes through onOpenChange, so the\n // reconcile-typed-text side effect belongs there, not on a\n // separate handler that Escape's capture-phase stopPropagation\n // would prevent from ever firing.\n function rawSetOpen(next: boolean) {\n if (!isOpenControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n }\n\n function handlePopoverOpenChange(next: boolean) {\n rawSetOpen(next);\n if (!next) commitFromText();\n }\n\n // Deliberately does NOT go through handlePopoverOpenChange — same\n // stale-closure reason as DatePicker's handleCalendarChange: it\n // already performed its own fresh commitValue/setQuery a line\n // earlier, and commitFromText() here would read this render's\n // stale `query`/`committedValue` and clobber the just-set value.\n function handlePanelConfirm(time: TimeValue) {\n commitValue(time);\n setQuery(formatTime(time, state.use12Hour, state.locale));\n rawSetOpen(false);\n inputRef.current?.focus();\n }\n\n // A plain close, no commit — see this file's own header for why\n // \"Cancel\" and dismissing via Escape/outside-click both end up\n // here (the latter through handlePopoverOpenChange, which does its\n // own commitFromText but that only touches the typed-text value,\n // never the panel's in-progress draft).\n function handlePanelCancel() {\n rawSetOpen(false);\n inputRef.current?.focus();\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (state.isDisabled) return;\n\n if (e.key === \"Enter\") {\n e.preventDefault();\n commitFromText();\n rawSetOpen(false);\n return;\n }\n if (!isOpen && (e.key === \"ArrowDown\" || e.key === \"ArrowUp\")) {\n e.preventDefault();\n rawSetOpen(true);\n }\n }\n\n const setInputRef = (node: HTMLInputElement | null) => {\n inputRef.current = node;\n if (typeof forwardedRef === \"function\") forwardedRef(node);\n else if (forwardedRef) (forwardedRef as React.MutableRefObject<HTMLInputElement | null>).current = node;\n };\n\n const triggerAria = getFieldTriggerAriaProps(state, descId);\n\n const content = (\n <Popover open={isOpen} onOpenChange={handlePopoverOpenChange} modal={false}>\n <div className=\"nx-field\" style={style}>\n {label && (\n <label htmlFor={inputId} className=\"nx-field__label\">\n {label}\n {state.isRequired && (\n <span className=\"nx-field__required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n <div className=\"nx-timepicker__wrapper\">\n <input\n ref={setInputRef}\n id={inputId}\n type=\"text\"\n value={query}\n placeholder={placeholder}\n disabled={state.isDisabled}\n onChange={(e) => setQuery(e.target.value)}\n onKeyDown={handleKeyDown}\n onBlur={() => {\n // Same reasoning as DatePicker: autoFocus moving focus\n // into the panel when it opens also fires a blur on the\n // input — don't treat that as \"done typing\".\n if (isOpen) return;\n commitFromText();\n }}\n className={`nx-timepicker__input${state.isInvalid ? \" nx-timepicker__input--invalid\" : \"\"}`}\n {...triggerAria}\n />\n <PopoverTrigger>\n <button\n type=\"button\"\n className=\"nx-timepicker__icon-button\"\n disabled={state.isDisabled}\n aria-label={isOpen ? \"Close time picker\" : \"Open time picker\"}\n >\n <ClockIcon size={18} aria-hidden=\"true\" />\n </button>\n </PopoverTrigger>\n </div>\n {helperMessage && (\n <span id={descId} className={`nx-field__helper${state.isInvalid ? \" nx-field__helper--error\" : \"\"}`}>\n {helperMessage}\n </span>\n )}\n </div>\n <PopoverContent className=\"nx-timepicker__popover\">\n <TimeClockPanel\n value={committedValue}\n state={state}\n isOpen={isOpen}\n defaultMode={defaultPanelMode}\n onConfirm={handlePanelConfirm}\n onCancel={handlePanelCancel}\n />\n </PopoverContent>\n {name && (\n <input\n type=\"hidden\"\n name={name}\n value={committedValue ? `${String(committedValue.hours).padStart(2, \"0\")}:${String(committedValue.minutes).padStart(2, \"0\")}` : \"\"}\n />\n )}\n </Popover>\n );\n\n return withThemeOverride(theme, withAccentOverride(color, content));\n});\n\n// ---- the clock panel: dial + digital entry --------------------------\n\nconst DEFAULT_DRAFT: TimeValue = { hours: 12, minutes: 0 };\n\ninterface TimeClockPanelProps {\n value: TimeValue | null;\n state: ReturnType<typeof resolveTimePickerState>;\n isOpen: boolean;\n defaultMode?: TimePanelMode;\n onConfirm: (time: TimeValue) => void;\n onCancel: () => void;\n}\n\nfunction TimeClockPanel({ value, state, isOpen, defaultMode, onConfirm, onCancel }: TimeClockPanelProps) {\n const initialMode = defaultMode ?? \"dial\";\n const [mode, setMode] = useState<TimePanelMode>(initialMode);\n const [dialField, setDialField] = useState<DialField>(\"hour\");\n const [draft, setDraft] = useState<TimeValue>(value ?? DEFAULT_DRAFT);\n\n // Re-seed the draft from the committed value (or the neutral\n // default) every time the panel transitions closed -> open, so\n // re-opening never shows a half-finished draft left over from a\n // Cancel two opens ago.\n const wasOpenRef = useRef(isOpen);\n useEffect(() => {\n if (isOpen && !wasOpenRef.current) {\n setDraft(value ?? DEFAULT_DRAFT);\n setMode(initialMode);\n setDialField(\"hour\");\n }\n wasOpenRef.current = isOpen;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpen, value]);\n\n const canConfirm = isTimeSelectable(draft, state);\n\n function selectHour(hours24: number) {\n setDraft((d) => ({ ...d, hours: hours24 }));\n setDialField(\"minute\"); // auto-advance to minutes, same spirit as a day-grid pick auto-closing DatePicker\n }\n\n function selectMinute(minutes: number) {\n setDraft((d) => ({ ...d, minutes }));\n }\n\n function selectMeridiem(next: Meridiem) {\n setDraft((d) => ({ ...d, hours: hour12ToHours24(hours24ToHour12(d.hours), next) }));\n }\n\n return (\n <div className=\"nx-timepicker__clock-panel\">\n <div className=\"nx-timepicker__panel-title\">{mode === \"dial\" ? \"Select time\" : \"Enter time\"}</div>\n {mode === \"dial\" ? (\n <>\n <TimeReadout\n draft={draft}\n use12Hour={state.use12Hour}\n dialField={dialField}\n onSelectField={setDialField}\n onMeridiemChange={selectMeridiem}\n />\n <ClockDial field={dialField} draft={draft} state={state} onSelectHour={selectHour} onSelectMinute={selectMinute} />\n </>\n ) : (\n // Digital mode's own HH/MM boxes + AM/PM toggle (DigitalEntry,\n // below) already show and edit the current draft — rendering\n // TimeReadout here too would just duplicate the same HH:MM +\n // AM/PM a second time above it. TimeReadout's real job is\n // picking which half (hour/minute) the DIAL is currently\n // pointed at, which digital entry has no equivalent concept\n // of — there's nothing for it to do in this mode.\n <DigitalEntry draft={draft} use12Hour={state.use12Hour} onSelectHour={selectHour} onSelectMinute={selectMinute} />\n )}\n <div className=\"nx-timepicker__panel-footer\">\n <button\n type=\"button\"\n className=\"nx-timepicker__mode-button\"\n onClick={() => setMode((m) => (m === \"dial\" ? \"digital\" : \"dial\"))}\n {...getPanelModeButtonAriaProps(mode)}\n >\n {mode === \"dial\" ? <KeyboardIcon size={20} aria-hidden=\"true\" /> : <ClockIcon size={20} aria-hidden=\"true\" />}\n </button>\n <div className=\"nx-timepicker__panel-actions\">\n <button type=\"button\" className=\"nx-timepicker__text-button\" onClick={onCancel}>\n Cancel\n </button>\n <button\n type=\"button\"\n className=\"nx-timepicker__text-button nx-timepicker__text-button--primary\"\n disabled={!canConfirm}\n onClick={() => onConfirm(draft)}\n >\n OK\n </button>\n </div>\n </div>\n </div>\n );\n}\n\n// ---- readout: HH : MM (+ AM/PM) -------------------------------------\n\n// ---- readout: HH : MM (+ AM/PM) -------------------------------------\n// Only ever rendered in dial mode (TimeClockPanel skips it entirely\n// in digital mode — DigitalEntry's own HH/MM boxes + AM/PM toggle\n// already cover that, and having both on screen at once was the\n// original bug report this fixed). Its job here is specifically\n// picking which half — hour or minute — the dial below it is\n// currently pointed at.\n\ninterface TimeReadoutProps {\n draft: TimeValue;\n use12Hour: boolean;\n dialField: DialField;\n onSelectField: (field: DialField) => void;\n onMeridiemChange: (m: Meridiem) => void;\n}\n\nfunction TimeReadout({ draft, use12Hour, dialField, onSelectField, onMeridiemChange }: TimeReadoutProps) {\n const hourLabel = String(use12Hour ? hours24ToHour12(draft.hours) : draft.hours).padStart(2, \"0\");\n const minuteLabel = String(draft.minutes).padStart(2, \"0\");\n const meridiem = getMeridiem(draft.hours);\n\n return (\n <div className=\"nx-timepicker__readout\">\n <button\n type=\"button\"\n className={getReadoutSegmentClasses(dialField === \"hour\")}\n onClick={() => onSelectField(\"hour\")}\n aria-label={`Hour, ${hourLabel}`}\n >\n {hourLabel}\n </button>\n <span className=\"nx-timepicker__readout-colon\" aria-hidden=\"true\">\n :\n </span>\n <button\n type=\"button\"\n className={getReadoutSegmentClasses(dialField === \"minute\")}\n onClick={() => onSelectField(\"minute\")}\n aria-label={`Minute, ${minuteLabel}`}\n >\n {minuteLabel}\n </button>\n {use12Hour && (\n <div className=\"nx-timepicker__meridiem-group\" role=\"group\" aria-label=\"AM or PM\">\n <button type=\"button\" className={getMeridiemButtonClasses(meridiem === \"am\")} onClick={() => onMeridiemChange(\"am\")}>\n AM\n </button>\n <button type=\"button\" className={getMeridiemButtonClasses(meridiem === \"pm\")} onClick={() => onMeridiemChange(\"pm\")}>\n PM\n </button>\n </div>\n )}\n </div>\n );\n}\n\n// ---- the analog dial --------------------------------------------------\n\ninterface ClockDialProps {\n field: DialField;\n draft: TimeValue;\n state: ReturnType<typeof resolveTimePickerState>;\n onSelectHour: (hours24: number) => void;\n onSelectMinute: (minutes: number) => void;\n}\n\nfunction ClockDial({ field, draft, state, onSelectHour, onSelectMinute }: ClockDialProps) {\n const faceRef = useRef<HTMLDivElement>(null);\n const isDraggingRef = useRef(false);\n\n const hourTicks = useMemo(() => getHourDialTicks(state.use12Hour), [state.use12Hour]);\n // Always 12 LABELED marks (0, 5, 10, ... 55) — same as a real clock\n // face only ever prints 12 minute numbers even though the minute\n // hand itself can stop anywhere between them. `minuteTicks` below\n // is for rendering those 12 buttons only; it is NOT the resolution\n // minute selection is limited to (see `totalPositions`).\n const minuteTicks = useMemo(() => getMinuteDialTicks(), []);\n const ticks = field === \"hour\" ? hourTicks : minuteTicks;\n\n // hourTicks.length is 12 or 24 depending on use12Hour — an hour\n // genuinely only has that many valid positions, so ticks and\n // selectable positions are the same space. Minutes are different:\n // there are 60 real positions on the face even though only 12 are\n // labeled, so `totalPositions` (what dragging/arrow-keys resolve\n // against) and `ticks` (what's drawn as a numbered button) are\n // deliberately different sizes here. This is the fix for \"only\n // every 5 minutes was selectable\" — the drag/keyboard math now\n // works in the full 60-position space; the 12 labels are just\n // quick-jump shortcuts onto that same space, not the only stops on\n // it.\n const totalPositions = field === \"hour\" ? hourTicks.length : 60;\n\n // Maps an hour TICK's clock-face label (1-12 in 12-hour mode, or\n // its own 0-23 value in 24-hour mode) to the actual 24-hour `hours`\n // field it represents. Minutes need no equivalent map: a minute\n // \"position\" (0-59) already IS the `minutes` field value.\n const hourTickValues = hourTicks.map((t) => (state.use12Hour ? hour12ToHours24(t.label, getMeridiem(draft.hours)) : t.label));\n\n function isPositionDisabled(position: number): boolean {\n if (field === \"hour\") return !isTimeSelectable({ hours: hourTickValues[position], minutes: draft.minutes }, state);\n return !isTimeSelectable({ hours: draft.hours, minutes: position }, state);\n }\n\n const disabledPositions = useMemo(\n () => Array.from({ length: totalPositions }, (_, position) => isPositionDisabled(position)),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [field, totalPositions, draft.hours, draft.minutes, state]\n );\n\n const selectedPosition = field === \"hour\" ? hourTickValues.indexOf(draft.hours) : draft.minutes;\n const [focusedPosition, setFocusedPosition] = useState(Math.max(selectedPosition, 0));\n\n useEffect(() => {\n setFocusedPosition(Math.max(selectedPosition, 0));\n }, [field, selectedPosition]);\n\n function commitPosition(position: number) {\n if (disabledPositions[position]) return;\n if (field === \"hour\") onSelectHour(hourTickValues[position]);\n else onSelectMinute(position);\n }\n\n function angleFromPointer(clientX: number, clientY: number): number {\n const face = faceRef.current!;\n const rect = face.getBoundingClientRect();\n const cx = rect.left + rect.width / 2;\n const cy = rect.top + rect.height / 2;\n // atan2 measures from the 3 o'clock position counter-clockwise\n // negative-y-up; +Math.PI/2 rotates it to match\n // getDialTickPosition's \"0 at 12 o'clock, clockwise\" convention.\n return Math.atan2(clientY - cy, clientX - cx) + Math.PI / 2;\n }\n\n function handlePointerDown(e: React.PointerEvent<HTMLDivElement>) {\n e.currentTarget.setPointerCapture(e.pointerId);\n isDraggingRef.current = true;\n commitPosition(angleToStep(angleFromPointer(e.clientX, e.clientY), totalPositions));\n }\n\n function handlePointerMove(e: React.PointerEvent<HTMLDivElement>) {\n if (!isDraggingRef.current) return;\n commitPosition(angleToStep(angleFromPointer(e.clientX, e.clientY), totalPositions));\n }\n\n function handlePointerUp(e: React.PointerEvent<HTMLDivElement>) {\n isDraggingRef.current = false;\n if (e.currentTarget.hasPointerCapture(e.pointerId)) e.currentTarget.releasePointerCapture(e.pointerId);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLDivElement>) {\n // On the 60-position minute space this moves 1 minute per press\n // (not 1 labeled tick) — the keyboard-equivalent of dragging\n // between labels, same reasoning as the drag fix above.\n const nextPosition = getIndexForKey(e.key, focusedPosition, disabledPositions, { orientation: \"horizontal\", loop: true });\n if (nextPosition === null) return;\n e.preventDefault();\n setFocusedPosition(nextPosition);\n commitPosition(nextPosition);\n }\n\n return (\n <div\n ref={faceRef}\n className=\"nx-timepicker__dial-face\"\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onKeyDown={handleKeyDown}\n {...getDialGroupAriaProps(field)}\n >\n <div className=\"nx-timepicker__dial-hand\" style={dialHandStyle(selectedPosition, totalPositions)} aria-hidden=\"true\" />\n {/* The exact selected point, wherever it falls — the 12 labels\n below are shortcuts onto this same space, not the only\n places the hand can land (e.g. a minute between two\n labels shows here with no label of its own). */}\n <div className=\"nx-timepicker__dial-knob\" style={dialPointStyle(selectedPosition, totalPositions)} aria-hidden=\"true\" />\n <div className=\"nx-timepicker__dial-center\" aria-hidden=\"true\" />\n {ticks.map((tick) => {\n // A tick's OWN position in the shared position space: for\n // hours that's just its index (hourTicks and totalPositions\n // are the same space); for minutes it's the label itself\n // (0, 5, 10, ... already are the raw minute values).\n const position = field === \"hour\" ? tick.step : tick.label;\n const pos = getDialTickPosition(position, totalPositions);\n const isSelected = position === selectedPosition;\n const isDisabled = disabledPositions[position];\n return (\n <button\n key={tick.step}\n type=\"button\"\n className={getDialTickClasses({ isSelected, isDisabled })}\n style={{ insetInlineStart: `${pos.x * 100}%`, insetBlockStart: `${pos.y * 100}%` }}\n onFocus={() => setFocusedPosition(position)}\n onClick={() => commitPosition(position)}\n {...getDialTickAriaProps({ isSelected, isDisabled, isFocusable: position === focusedPosition, label: String(tick.label) })}\n >\n {String(tick.label).padStart(field === \"minute\" ? 2 : 1, \"0\")}\n </button>\n );\n })}\n </div>\n );\n}\n\nfunction dialAngleDeg(position: number, totalPositions: number): number {\n const pos = getDialTickPosition(position, totalPositions);\n return (Math.atan2(pos.y - 0.5, pos.x - 0.5) * 180) / Math.PI;\n}\n\nfunction dialHandStyle(position: number, totalPositions: number): React.CSSProperties {\n // The hand element is a vertical bar anchored at its own top edge\n // (see .nx-timepicker__dial-hand — a 0deg CSS rotation therefore\n // already points it straight down, i.e. a screen-space angle of\n // +90°, not 0°). Rotating it by the raw angle from\n // getDialTickPosition (which measures 0° as *up*, matching where\n // tick/step 0 sits) would leave every hand 90° short of its target\n // — this \"- 90\" corrects for the bar's own resting orientation, and\n // is the fix for the hand pointing the wrong way.\n return { transform: `translateX(-50%) rotate(${dialAngleDeg(position, totalPositions) - 90}deg)` };\n}\n\nfunction dialPointStyle(position: number, totalPositions: number): React.CSSProperties {\n const pos = getDialTickPosition(position, totalPositions);\n return { insetInlineStart: `${pos.x * 100}%`, insetBlockStart: `${pos.y * 100}%` };\n}\n\n// ---- digital (segmented) entry ----------------------------------------\n\ninterface DigitalEntryProps {\n draft: TimeValue;\n use12Hour: boolean;\n onSelectHour: (hours24: number) => void;\n onSelectMinute: (minutes: number) => void;\n}\n\nfunction DigitalEntry({ draft, use12Hour, onSelectHour, onSelectMinute }: DigitalEntryProps) {\n const minuteFieldRef = useRef<HTMLInputElement>(null);\n\n const [hourText, setHourText] = useState(String(use12Hour ? hours24ToHour12(draft.hours) : draft.hours).padStart(2, \"0\"));\n const [minuteText, setMinuteText] = useState(String(draft.minutes).padStart(2, \"0\"));\n\n useEffect(() => {\n setHourText(String(use12Hour ? hours24ToHour12(draft.hours) : draft.hours).padStart(2, \"0\"));\n }, [draft.hours, use12Hour]);\n useEffect(() => {\n setMinuteText(String(draft.minutes).padStart(2, \"0\"));\n }, [draft.minutes]);\n\n function commitHourText(raw: string) {\n const clamped = clampHourInput(Number(raw), use12Hour);\n onSelectHour(use12Hour ? hour12ToHours24(clamped, getMeridiem(draft.hours)) : clamped);\n }\n\n function commitMinuteText(raw: string) {\n onSelectMinute(clampMinuteInput(Number(raw)));\n }\n\n return (\n <div className=\"nx-timepicker__digital-entry\">\n <div className=\"nx-timepicker__digital-field\">\n <input\n type=\"text\"\n inputMode=\"numeric\"\n maxLength={2}\n className=\"nx-timepicker__digital-input\"\n value={hourText}\n aria-label=\"Hour\"\n onChange={(e) => {\n const digits = e.target.value.replace(/\\D/g, \"\").slice(0, 2);\n setHourText(digits);\n // Auto-advance to the minute field once two digits are\n // in — the standard segmented-entry behavior (and the\n // same \"don't make the person hit Tab for something this\n // predictable\" reasoning OTP inputs already use here).\n if (digits.length === 2) minuteFieldRef.current?.focus();\n }}\n onBlur={() => commitHourText(hourText)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") commitHourText(hourText);\n }}\n />\n <span className=\"nx-timepicker__digital-caption\">Hour</span>\n </div>\n <span className=\"nx-timepicker__digital-colon\" aria-hidden=\"true\">\n :\n </span>\n <div className=\"nx-timepicker__digital-field\">\n <input\n ref={minuteFieldRef}\n type=\"text\"\n inputMode=\"numeric\"\n maxLength={2}\n className=\"nx-timepicker__digital-input\"\n value={minuteText}\n aria-label=\"Minute\"\n onChange={(e) => setMinuteText(e.target.value.replace(/\\D/g, \"\").slice(0, 2))}\n onBlur={() => commitMinuteText(minuteText)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") commitMinuteText(minuteText);\n }}\n />\n <span className=\"nx-timepicker__digital-caption\">Minute</span>\n </div>\n {use12Hour && (\n <div className=\"nx-timepicker__meridiem-group\" role=\"group\" aria-label=\"AM or PM\">\n <button\n type=\"button\"\n className={getMeridiemButtonClasses(getMeridiem(draft.hours) === \"am\")}\n onClick={() => onSelectHour(hour12ToHours24(hours24ToHour12(draft.hours), \"am\"))}\n >\n AM\n </button>\n <button\n type=\"button\"\n className={getMeridiemButtonClasses(getMeridiem(draft.hours) === \"pm\")}\n onClick={() => onSelectHour(hour12ToHours24(hours24ToHour12(draft.hours), \"pm\"))}\n >\n PM\n </button>\n </div>\n )}\n </div>\n );\n}","import { resolveFieldState, getFieldAriaProps, type FieldProps, type FieldState } from \"./field\";\n\n// ============================================================\n// TIME PICKER — pure core (Category D: Input's field shape +\n// Popover + a clock panel, composed rather than reimplemented). Not\n// one of the original 42 components (see\n// NUVOX-COMPLETE-REFERENCE.md/BUILDING-COMPONENTS.md's table) — it's\n// a new addition, but it follows the exact shape DatePicker already\n// proved out for this category: this module owns formatting/parsing\n// and selectability for a time FIELD; the dial/digital panel's own\n// math lives here too, the same split datepicker.ts draws between\n// \"field concerns\" and Calendar's own grid math.\n//\n// There used to be a flat scrollable list here as a `variant=\"list\"`\n// alternative to the dial/digital panel. It's gone — a dropdown of\n// every time-of-day slot doesn't actually solve a problem the\n// dial/digital panel doesn't already solve better, so it wasn't worth\n// carrying as a second thing to maintain and document. If that\n// changes, it's a new addition, not a revival — no dead code for it\n// is kept around \"just in case\".\n// ============================================================\n\n/** A time of day, no date attached. `hours` is 0-23 (24-hour, locale-independent internally); `minutes` is 0-59. */\nexport interface TimeValue {\n hours: number;\n minutes: number;\n}\n\nexport interface TimePickerCoreProps extends FieldProps {\n min?: TimeValue;\n max?: TimeValue;\n /** 12-hour (AM/PM) vs 24-hour display and parsing. Default true. */\n use12Hour?: boolean;\n /** An extra predicate for one-off disabled slots (e.g. already-booked times) beyond min/max. */\n isTimeDisabled?: (time: TimeValue) => boolean;\n locale?: string;\n}\n\nexport interface TimePickerState extends FieldState {\n min?: TimeValue;\n max?: TimeValue;\n use12Hour: boolean;\n isTimeDisabled: (time: TimeValue) => boolean;\n locale?: string;\n}\n\nexport function resolveTimePickerState(props: TimePickerCoreProps): TimePickerState {\n return {\n ...resolveFieldState(props),\n min: props.min,\n max: props.max,\n use12Hour: props.use12Hour ?? true,\n // A no-op default, same reasoning as datepicker.ts's\n // isDateDisabled: every call site can call state.isTimeDisabled(t)\n // unconditionally instead of guarding at every use.\n isTimeDisabled: props.isTimeDisabled ?? (() => false),\n locale: props.locale,\n };\n}\n\n// --- time math ------------------------------------------------------\n\nexport function toMinutes(time: TimeValue): number {\n return time.hours * 60 + time.minutes;\n}\n\nexport function isSameTime(a: TimeValue | null | undefined, b: TimeValue | null | undefined): boolean {\n if (!a || !b) return a === b;\n return a.hours === b.hours && a.minutes === b.minutes;\n}\n\nfunction isWithinTimeRange(time: TimeValue, min?: TimeValue, max?: TimeValue): boolean {\n const m = toMinutes(time);\n if (min && m < toMinutes(min)) return false;\n if (max && m > toMinutes(max)) return false;\n return true;\n}\n\n/** The single source of truth for \"can this time be picked at all\" — mirrors isDateSelectable in datepicker.ts so grid rendering, keyboard nav, and typed-text validation all agree. */\nexport function isTimeSelectable(time: TimeValue, state: Pick<TimePickerState, \"min\" | \"max\" | \"isTimeDisabled\">): boolean {\n if (!isWithinTimeRange(time, state.min, state.max)) return false;\n return !state.isTimeDisabled(time);\n}\n\n// --- formatting / parsing -----------------------------------------\n\nfunction toDate(time: TimeValue): Date {\n const d = new Date(2000, 0, 1);\n d.setHours(time.hours, time.minutes, 0, 0);\n return d;\n}\n\nexport function formatTime(time: TimeValue, use12Hour: boolean, locale?: string): string {\n return new Intl.DateTimeFormat(locale, { hour: \"numeric\", minute: \"2-digit\", hour12: use12Hour }).format(toDate(time));\n}\n\n/**\n * Parses free-typed text into a TimeValue, or `null` if it isn't a\n * recognizable time. Deliberately permissive, same reasoning as\n * parseDate: handles \"14:30\", \"2:30 PM\", \"2:30pm\", \"2 pm\" — the\n * common typed shapes — without pulling in a date/time library\n * (zero runtime deps, matching the rest of this project).\n */\nexport function parseTime(text: string): TimeValue | null {\n const trimmed = text.trim().toLowerCase();\n if (!trimmed) return null;\n\n const match = trimmed.match(/^(\\d{1,2})(?::(\\d{2}))?\\s*(am|pm)?$/);\n if (!match) return null;\n\n let hours = parseInt(match[1], 10);\n const minutes = match[2] ? parseInt(match[2], 10) : 0;\n const meridiem = match[3];\n\n if (minutes > 59) return null;\n\n if (meridiem) {\n if (hours < 1 || hours > 12) return null;\n if (meridiem === \"am\") hours = hours === 12 ? 0 : hours;\n else hours = hours === 12 ? 12 : hours + 12;\n } else if (hours > 23) {\n return null;\n }\n\n return { hours, minutes };\n}\n\n// --- ARIA -----------------------------------------------------\n\nexport function getFieldTriggerAriaProps(state: FieldState, describedBy?: string) {\n return getFieldAriaProps(state, describedBy);\n}\n\n// --- clock panel: dial + digital-entry -------------------------------\n// The panel is ONE component with two view modes toggled by an icon\n// button (a keyboard glyph to switch dial->digital, a clock glyph to\n// switch back) — not two separate variants of TimePicker. That's the\n// shape every mainstream analog/digital time picker actually uses,\n// and it's what let the person's own two reference screenshots turn\n// out to be the same picker's two states rather than two different\n// components.\n//\n// The dial is drawn as absolutely-positioned buttons around a ring\n// rather than an SVG or a real drag-only slider: it's both simpler to\n// keep themeable (plain elements inherit the design tokens the way an\n// SVG's own fill/stroke wouldn't without extra plumbing) and more\n// accessible out of the box — screen reader users get a normal set of\n// labeled buttons instead of a control that only works by dragging.\n// Pointer dragging is layered on top in the React layer (same\n// pointer-capture pattern as Slider/ColorPicker's SV area) for anyone\n// who wants that interaction; clicking a tick works either way.\n//\n// 24-hour mode draws a single ring of 24 numbers rather than\n// Material's two concentric rings (inner PM / outer AM) — a real\n// simplification, called out here rather than pretended away: a\n// correct concentric layout is its own sub-project, and a single\n// wider-spaced ring is still a complete, honestly-simpler design many\n// non-Material time pickers actually ship, not a broken approximation\n// of the two-ring one.\n\nexport type TimePanelMode = \"dial\" | \"digital\";\nexport type DialField = \"hour\" | \"minute\";\nexport type Meridiem = \"am\" | \"pm\";\n\nexport function getMeridiem(hours: number): Meridiem {\n return hours < 12 ? \"am\" : \"pm\";\n}\n\n/** Rebuilds the 24-hour `hours` field from an hour-of-12 (1-12, clock-face numbering) and a meridiem — the dial and the AM/PM toggle's write side. */\nexport function hour12ToHours24(hour12: number, meridiem: Meridiem): number {\n const hourOf12 = hour12 % 12; // 12 o'clock is 0 for this math\n return meridiem === \"am\" ? hourOf12 : hourOf12 + 12;\n}\n\n/** 24-hour `hours` to the clock-face number (1-12) the hour dial shows in 12-hour mode. */\nexport function hours24ToHour12(hours: number): number {\n const hourOf12 = hours % 12;\n return hourOf12 === 0 ? 12 : hourOf12;\n}\n\nexport interface DialTick {\n /** 0-based position around the ring, clockwise from the top. */\n step: number;\n /** The number printed at this tick. */\n label: number;\n}\n\n/** The hour dial's ticks in clock order: 12 of them (1-12) for 12-hour mode, 24 (0-23) for 24-hour. */\nexport function getHourDialTicks(use12Hour: boolean): DialTick[] {\n if (use12Hour) {\n return Array.from({ length: 12 }, (_, step) => ({ step, label: step === 0 ? 12 : step }));\n }\n return Array.from({ length: 24 }, (_, step) => ({ step, label: step }));\n}\n\n/** The minute dial's labeled ticks: always 12 of them, one per 5 minutes (0, 5, 10, ... 55) — the same shortcut numbers a real analog clock face prints, even though the minute hand itself (and this dial's drag/keyboard handling) can land on any of the 60 raw minutes between them. See isTimeSelectable for what actually gates a minute (min/max/isTimeDisabled). */\nexport function getMinuteDialTicks(): DialTick[] {\n return Array.from({ length: 12 }, (_, step) => ({ step, label: step * 5 }));\n}\n\n/** Normalized (0-1 each axis, center at 0.5/0.5) position for a dial tick — the React layer turns this into a `left`/`top` percentage. */\nexport function getDialTickPosition(step: number, totalSteps: number): { x: number; y: number } {\n const angle = (step / totalSteps) * 2 * Math.PI - Math.PI / 2; // step 0 sits at 12 o'clock\n return { x: 0.5 + 0.42 * Math.cos(angle), y: 0.5 + 0.42 * Math.sin(angle) };\n}\n\n/** The ring step nearest a pointer's angle (radians, 0 = 12 o'clock, increasing clockwise — i.e. already in `getDialTickPosition`'s own convention) — the React layer computes this angle via `Math.atan2` on the pointer position relative to the dial's center and passes it straight in. */\nexport function angleToStep(angleRad: number, totalSteps: number): number {\n const twoPi = Math.PI * 2;\n const normalized = ((angleRad % twoPi) + twoPi) % twoPi;\n return Math.round(normalized / (twoPi / totalSteps)) % totalSteps;\n}\n\nexport function clampHourInput(raw: number, use12Hour: boolean): number {\n if (!Number.isFinite(raw)) return use12Hour ? 12 : 0;\n return use12Hour ? Math.min(Math.max(Math.round(raw), 1), 12) : Math.min(Math.max(Math.round(raw), 0), 23);\n}\n\nexport function clampMinuteInput(raw: number): number {\n if (!Number.isFinite(raw)) return 0;\n return Math.min(Math.max(Math.round(raw), 0), 59);\n}\n\n// --- clock panel: classes / ARIA -------------------------------------\n\nexport function getDialTickClasses(input: { isSelected: boolean; isDisabled: boolean }): string {\n return [\n \"nx-timepicker__dial-tick\",\n input.isSelected && \"nx-timepicker__dial-tick--selected\",\n input.isDisabled && \"nx-timepicker__dial-tick--disabled\",\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\nexport function getDialGroupAriaProps(field: DialField) {\n return { role: \"group\" as const, \"aria-label\": field === \"hour\" ? \"Hours\" : \"Minutes\" };\n}\n\nexport function getDialTickAriaProps(input: { isSelected: boolean; isDisabled: boolean; isFocusable: boolean; label: string }) {\n return {\n role: \"radio\" as const,\n \"aria-checked\": input.isSelected,\n \"aria-disabled\": input.isDisabled || undefined,\n \"aria-label\": input.label,\n tabIndex: input.isFocusable ? 0 : -1,\n };\n}\n\nexport function getReadoutSegmentClasses(isActive: boolean): string {\n return [\"nx-timepicker__readout-segment\", isActive && \"nx-timepicker__readout-segment--active\"].filter(Boolean).join(\" \");\n}\n\nexport function getMeridiemButtonClasses(isActive: boolean): string {\n return [\"nx-timepicker__meridiem-button\", isActive && \"nx-timepicker__meridiem-button--active\"].filter(Boolean).join(\" \");\n}\n\nexport function getPanelModeButtonAriaProps(mode: TimePanelMode) {\n return { \"aria-label\": mode === \"dial\" ? \"Switch to text entry\" : \"Switch to dial\" };\n}","import React, { forwardRef, useCallback, useEffect, useId, useMemo, useRef, useState } from \"react\";\nimport {\n resolveColorPickerState,\n normalizeHex,\n parseColorInput,\n formatColorValue,\n isSameColor,\n getFieldTriggerAriaProps,\n getSwatchGridAriaProps,\n getSwatchAriaProps,\n getSwatchClasses,\n hexToRgb,\n rgbToHex,\n hexToHsv,\n hsvToHex,\n rgbToHsl,\n hslToHex,\n getSvKeyboardDelta,\n clampPercent,\n getFormatTabClasses,\n getFormatTablistAriaProps,\n getFormatTabAriaProps,\n getSvThumbAriaProps,\n COLOR_FORMATS,\n type ColorFormat,\n type RGB,\n type HSL,\n type ColorPickerCoreProps,\n} from \"../core/colorpicker\";\nimport { getIndexForKey } from \"../core/collection\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport { Popover, PopoverTrigger, PopoverContent } from \"./Popover\";\nimport \"./Field.css\";\nimport \"./ColorPicker.css\";\n\n// ============================================================\n// COLOR PICKER — React layer (Category D). Composes Input's field\n// shape + Popover, the same way DatePicker/TimePicker do. The\n// popover panel composes two pickers rather than one: a preset\n// swatch grid (this project's own, keyboard navigable via\n// core/collection.ts — Rule 12, same primitive Select/Combobox/\n// TimePicker share) for the common case, and a real custom-color\n// panel — saturation/value area + hue slider (Slider.tsx's own\n// pointer-capture drag pattern, Rule 12 again) plus HEX/RGB/HSL\n// format tabs — for continuous/arbitrary picking. Both are shown by\n// default; `variant=\"presets\"`/`variant=\"custom\"` show just the one.\n//\n// hex stays the one canonical value this component's public\n// onChange emits (Rule 10) — RGB/HSV/HSL only ever exist transiently\n// for display/editing in their own format, and round-trip back\n// through hex (core/colorpicker.ts's conversion functions) on every\n// edit. What DOES follow the active format tab is the typed field's\n// own displayed text (`formatColorValue`/`parseColorInput` in core) —\n// `format` lives here, not inside the custom panel, specifically so\n// the field can react to it too, not just the panel's own fields.\n//\n// The typed hex field + Popover open/close wiring mirrors\n// DatePicker/TimePicker exactly, including the reasons documented\n// there (rawSetOpen/handlePopoverOpenChange split, autoFocus landing\n// on the roving-tabIndex swatch, blur-vs-autofocus race).\n// ============================================================\n\nexport interface ColorPickerProps extends ColorPickerCoreProps, Omit<BaseComponentProps, \"children\"> {\n value?: string | null;\n defaultValue?: string | null;\n onChange?: (hex: string | null) => void;\n placeholder?: string;\n label?: string;\n helperText?: string;\n errorText?: string;\n id?: string;\n name?: string;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport const ColorPicker = forwardRef<HTMLInputElement, ColorPickerProps>(function ColorPicker(\n {\n value,\n defaultValue,\n onChange,\n presets,\n variant,\n placeholder = \"#000000\",\n label,\n helperText,\n errorText,\n id,\n name,\n open,\n defaultOpen,\n onOpenChange,\n size,\n disabled,\n required,\n error,\n className,\n style,\n theme,\n color,\n },\n forwardedRef\n) {\n const isInvalid = error ?? !!errorText;\n const state = resolveColorPickerState({ size, disabled, required, error: isInvalid, presets, variant });\n const uid = useId();\n const inputId = id ?? `nx-colorpicker-${uid}`;\n const helperMessage = errorText ?? helperText;\n const descId = helperMessage ? `${inputId}-desc` : undefined;\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n // ---- committed value ----\n const isValueControlled = value !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState<string | null>(\n defaultValue !== undefined ? normalizeHex(defaultValue ?? \"\") ?? defaultValue ?? null : null\n );\n const committedValue = isValueControlled ? value ?? null : uncontrolledValue;\n\n function commitValue(next: string | null) {\n if (!isValueControlled) setUncontrolledValue(next);\n if (!isSameColor(next, committedValue)) onChange?.(next);\n }\n\n // ---- open state ----\n const isOpenControlled = open !== undefined;\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen ?? false);\n const isOpen = isOpenControlled ? open! : uncontrolledOpen;\n\n // ---- which format the field displays/parses, and the custom\n // panel's tabs show as active — lives here (not inside the custom\n // panel) specifically so the field's own typed text follows it too.\n const [format, setFormat] = useState<ColorFormat>(\"hex\");\n\n // ---- typed text ----\n const [query, setQuery] = useState<string>(() => (committedValue ? formatColorValue(committedValue, format) : \"\"));\n\n useEffect(() => {\n if (!isValueControlled) return;\n setQuery(value ? formatColorValue(value, format) : \"\");\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, isValueControlled]);\n\n // Re-render the field's displayed text in the newly-active format\n // whenever the person switches tabs — a mode change, not something\n // that should wait for the next color pick.\n useEffect(() => {\n setQuery(committedValue ? formatColorValue(committedValue, format) : \"\");\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [format]);\n\n function commitFromText() {\n const trimmed = query.trim();\n if (!trimmed) {\n commitValue(null);\n return;\n }\n const normalized = parseColorInput(trimmed);\n if (normalized) {\n commitValue(normalized);\n setQuery(formatColorValue(normalized, format));\n } else {\n setQuery(committedValue ? formatColorValue(committedValue, format) : \"\");\n }\n }\n\n function rawSetOpen(next: boolean) {\n if (!isOpenControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n }\n\n function handlePopoverOpenChange(next: boolean) {\n rawSetOpen(next);\n if (!next) commitFromText();\n }\n\n // Deliberately does NOT go through handlePopoverOpenChange — same\n // stale-closure reason as DatePicker/TimePicker's own select\n // handlers.\n function handleColorSelect(hex: string) {\n commitValue(hex);\n setQuery(formatColorValue(hex, format));\n rawSetOpen(false);\n inputRef.current?.focus();\n }\n\n // Distinct from handleColorSelect on purpose: a preset click is a\n // discrete, \"done\" choice that should close the popover, but the\n // custom panel is dragged/typed continuously (a hue-slider drag\n // fires many onChange calls in a row) — closing on the first one\n // would end the interaction the person was still in the middle of.\n function handleCustomColorChange(hex: string) {\n commitValue(hex);\n setQuery(formatColorValue(hex, format));\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (state.isDisabled) return;\n\n if (e.key === \"Enter\") {\n e.preventDefault();\n commitFromText();\n rawSetOpen(false);\n return;\n }\n if (!isOpen && (e.key === \"ArrowDown\" || e.key === \"ArrowUp\")) {\n e.preventDefault();\n rawSetOpen(true);\n }\n }\n\n const setInputRef = (node: HTMLInputElement | null) => {\n inputRef.current = node;\n if (typeof forwardedRef === \"function\") forwardedRef(node);\n else if (forwardedRef) (forwardedRef as React.MutableRefObject<HTMLInputElement | null>).current = node;\n };\n\n const triggerAria = getFieldTriggerAriaProps(state, descId);\n const swatchColor = parseColorInput(query) || committedValue || \"#ffffff\";\n\n const content = (\n <Popover open={isOpen} onOpenChange={handlePopoverOpenChange} modal={false}>\n <div className=\"nx-field\" style={style}>\n {label && (\n <label htmlFor={inputId} className=\"nx-field__label\">\n {label}\n {state.isRequired && (\n <span className=\"nx-field__required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n <div className=\"nx-colorpicker__wrapper\">\n <input\n ref={setInputRef}\n id={inputId}\n type=\"text\"\n value={query}\n placeholder={placeholder}\n disabled={state.isDisabled}\n onChange={(e) => setQuery(e.target.value)}\n onKeyDown={handleKeyDown}\n onBlur={() => {\n if (isOpen) return;\n commitFromText();\n }}\n className={`nx-colorpicker__input${state.isInvalid ? \" nx-colorpicker__input--invalid\" : \"\"}`}\n {...triggerAria}\n />\n <PopoverTrigger>\n <button\n type=\"button\"\n className=\"nx-colorpicker__swatch-button\"\n disabled={state.isDisabled}\n aria-label={isOpen ? \"Close color picker\" : \"Open color picker\"}\n >\n <span className=\"nx-colorpicker__swatch-preview\" style={{ backgroundColor: swatchColor }} aria-hidden=\"true\" />\n </button>\n </PopoverTrigger>\n </div>\n {helperMessage && (\n <span id={descId} className={`nx-field__helper${state.isInvalid ? \" nx-field__helper--error\" : \"\"}`}>\n {helperMessage}\n </span>\n )}\n </div>\n <PopoverContent className=\"nx-colorpicker__popover\">\n {state.variant !== \"custom\" && <SwatchGrid value={committedValue} presets={state.presets} onSelect={handleColorSelect} />}\n {state.variant !== \"presets\" && (\n <CustomColorPanel\n hex={swatchColor}\n onChange={handleCustomColorChange}\n disabled={state.isDisabled}\n format={format}\n onFormatChange={setFormat}\n standalone={state.variant === \"custom\"}\n />\n )}\n </PopoverContent>\n {name && <input type=\"hidden\" name={name} value={committedValue ?? \"\"} />}\n </Popover>\n );\n\n return withThemeOverride(theme, withAccentOverride(color, content));\n});\n\n// ---- preset swatch grid --------------------------------------------\n// Rendered as a flat, wrapping row — arrow-key nav treats it as a\n// single horizontal sequence (core/collection.ts, Rule 12), the same\n// simplification a native <select> menu with wrapping text would\n// make; there's no meaningful \"row above/below\" semantic the way a\n// calendar month grid has weeks.\n\ninterface SwatchGridProps {\n value: string | null;\n presets: string[];\n onSelect: (hex: string) => void;\n}\n\nfunction SwatchGrid({ value, presets, onSelect }: SwatchGridProps) {\n const selectedIndex = useMemo(() => presets.findIndex((hex) => isSameColor(hex, value)), [presets, value]);\n const [focusedIndex, setFocusedIndex] = useState<number>(() => (selectedIndex >= 0 ? selectedIndex : 0));\n\n const swatchRefs = useRef<Array<HTMLDivElement | null>>([]);\n const disabledFlags = useMemo(() => presets.map(() => false), [presets]);\n\n function moveFocus(nextIndex: number) {\n setFocusedIndex(nextIndex);\n swatchRefs.current[nextIndex]?.focus();\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLDivElement>) {\n const nextIndex = getIndexForKey(e.key, focusedIndex, disabledFlags, { orientation: \"horizontal\", loop: true });\n if (nextIndex !== null) {\n e.preventDefault();\n moveFocus(nextIndex);\n return;\n }\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onSelect(presets[focusedIndex]);\n }\n }\n\n return (\n <div className=\"nx-colorpicker__swatch-grid\" onKeyDown={handleKeyDown} {...getSwatchGridAriaProps(\"Preset colors\")}>\n {presets.map((hex, index) => {\n const isSelected = index === selectedIndex;\n const isFocusable = index === focusedIndex;\n return (\n <div\n key={hex}\n ref={(node) => {\n swatchRefs.current[index] = node;\n }}\n className={getSwatchClasses({ isSelected, isActive: isFocusable })}\n style={{ backgroundColor: hex }}\n onClick={() => {\n setFocusedIndex(index);\n onSelect(hex);\n }}\n {...getSwatchAriaProps({ isSelected, isFocusable, label: hex })}\n />\n );\n })}\n </div>\n );\n}\n\n// ---- custom color panel: SV area + hue slider + HEX/RGB/HSL fields --\n// Always rendered (not gated behind a \"custom\" toggle) — see this\n// file's own header for why. `hex` is the single source of truth\n// passed in; every field here is a controlled view onto it in a\n// different color space, converted via core/colorpicker.ts and\n// reported back up through the same `onChange(hex)`.\n\ninterface SvFieldProps {\n hue: number;\n saturation: number;\n value: number;\n onChange: (saturation: number, value: number) => void;\n disabled?: boolean;\n}\n\nfunction SvField({ hue, saturation, value, onChange, disabled }: SvFieldProps) {\n const areaRef = useRef<HTMLDivElement>(null);\n const isDraggingRef = useRef(false);\n\n // Same shape as Slider.tsx's own valueFromClientX + pointer-capture\n // drag (Rule 12) — a bounding-rect ratio computed fresh on every\n // move rather than tracked as an offset, so it stays correct\n // whether the pointer started on the thumb or jumped straight to a\n // point on the track/area.\n const updateFromPoint = useCallback(\n (clientX: number, clientY: number) => {\n const area = areaRef.current;\n if (!area) return;\n const rect = area.getBoundingClientRect();\n const x = rect.width === 0 ? 0 : ((clientX - rect.left) / rect.width) * 100;\n const y = rect.height === 0 ? 0 : ((clientY - rect.top) / rect.height) * 100;\n // Y is inverted: pointer at the top of the area is full value (100), not 0.\n onChange(clampPercent(x), clampPercent(100 - y));\n },\n [onChange]\n );\n\n function handlePointerDown(e: React.PointerEvent<HTMLDivElement>) {\n if (disabled) return;\n e.currentTarget.setPointerCapture(e.pointerId);\n isDraggingRef.current = true;\n updateFromPoint(e.clientX, e.clientY);\n }\n\n function handlePointerMove(e: React.PointerEvent<HTMLDivElement>) {\n if (!isDraggingRef.current) return;\n updateFromPoint(e.clientX, e.clientY);\n }\n\n function handlePointerUp(e: React.PointerEvent<HTMLDivElement>) {\n isDraggingRef.current = false;\n if (e.currentTarget.hasPointerCapture(e.pointerId)) e.currentTarget.releasePointerCapture(e.pointerId);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLDivElement>) {\n if (disabled) return;\n const delta = getSvKeyboardDelta(e.key, e.shiftKey);\n if (!delta) return;\n e.preventDefault();\n onChange(clampPercent(saturation + delta.ds), clampPercent(value + delta.dv));\n }\n\n return (\n <div\n ref={areaRef}\n className=\"nx-colorpicker__sv-area\"\n style={{ backgroundColor: `hsl(${hue}, 100%, 50%)` }}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n >\n <div\n className=\"nx-colorpicker__sv-thumb\"\n style={{ insetInlineStart: `${saturation}%`, insetBlockStart: `${100 - value}%` }}\n onKeyDown={handleKeyDown}\n {...getSvThumbAriaProps(saturation, value)}\n />\n </div>\n );\n}\n\nconst FORMAT_LABELS: Record<ColorFormat, string> = { hex: \"HEX\", rgb: \"RGB\", hsl: \"HSL\" };\n\ninterface CustomColorPanelProps {\n hex: string;\n onChange: (hex: string) => void;\n disabled?: boolean;\n format: ColorFormat;\n onFormatChange: (format: ColorFormat) => void;\n /** True when rendered as the popover's only content (variant=\"custom\") — drops the divider/top-spacing that only makes sense sitting below the swatch grid. */\n standalone?: boolean;\n}\n\nfunction CustomColorPanel({ hex, onChange, disabled, format, onFormatChange, standalone }: CustomColorPanelProps) {\n const fieldUid = useId();\n\n const rgb = useMemo<RGB>(() => hexToRgb(hex) ?? { r: 0, g: 0, b: 0 }, [hex]);\n const hsv = useMemo(() => hexToHsv(hex) ?? { h: 0, s: 0, v: 0 }, [hex]);\n const hsl = useMemo<HSL>(() => rgbToHsl(rgb), [rgb]);\n\n // Local text state for the hex field only — the same \"let the\n // person type a transient, momentarily-invalid string without it\n // being overwritten every keystroke, revert on blur if it never\n // became valid\" rule commitFromText already applies to the outer\n // field, needed again here because this is a second, independent\n // text input.\n const [hexText, setHexText] = useState(hex);\n useEffect(() => setHexText(hex), [hex]);\n\n function commitHexText() {\n const normalized = normalizeHex(hexText);\n if (normalized) onChange(normalized);\n else setHexText(hex);\n }\n\n function updateRgbChannel(channel: keyof RGB, raw: string) {\n const parsed = Number(raw);\n const n = Math.min(Math.max(Number.isNaN(parsed) ? 0 : parsed, 0), 255);\n onChange(rgbToHex({ ...rgb, [channel]: n }));\n }\n\n function updateHslChannel(channel: keyof HSL, raw: string, max: number) {\n const parsed = Number(raw);\n const n = Math.min(Math.max(Number.isNaN(parsed) ? 0 : parsed, 0), max);\n onChange(hslToHex({ ...hsl, [channel]: n }));\n }\n\n return (\n <div className={`nx-colorpicker__custom-panel${standalone ? \" nx-colorpicker__custom-panel--standalone\" : \"\"}`}>\n <SvField\n hue={hsv.h}\n saturation={hsv.s}\n value={hsv.v}\n disabled={disabled}\n onChange={(s, v) => onChange(hsvToHex({ h: hsv.h, s, v }))}\n />\n <input\n type=\"range\"\n className=\"nx-colorpicker__hue-slider\"\n min={0}\n max={360}\n step={1}\n value={Math.round(hsv.h)}\n disabled={disabled}\n aria-label=\"Hue\"\n onChange={(e) => onChange(hsvToHex({ ...hsv, h: Number(e.target.value) }))}\n />\n <div className=\"nx-colorpicker__format-tabs\" {...getFormatTablistAriaProps(\"Color format\")}>\n {COLOR_FORMATS.map((f) => (\n <button\n key={f}\n type=\"button\"\n className={getFormatTabClasses(f === format)}\n disabled={disabled}\n onClick={() => onFormatChange(f)}\n {...getFormatTabAriaProps(f === format)}\n >\n {FORMAT_LABELS[f]}\n </button>\n ))}\n </div>\n {format === \"hex\" && (\n <div className=\"nx-colorpicker__format-fields\">\n <div className=\"nx-colorpicker__format-field nx-colorpicker__format-field--wide\">\n <label htmlFor={`nx-colorpicker-hex-${fieldUid}`}>Hex</label>\n <input\n id={`nx-colorpicker-hex-${fieldUid}`}\n type=\"text\"\n value={hexText}\n disabled={disabled}\n onChange={(e) => setHexText(e.target.value)}\n onBlur={commitHexText}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") commitHexText();\n }}\n />\n </div>\n </div>\n )}\n {format === \"rgb\" && (\n <div className=\"nx-colorpicker__format-fields\">\n {([\"r\", \"g\", \"b\"] as const).map((channel) => (\n <div className=\"nx-colorpicker__format-field\" key={channel}>\n <label htmlFor={`nx-colorpicker-${channel}-${fieldUid}`}>{channel.toUpperCase()}</label>\n <input\n id={`nx-colorpicker-${channel}-${fieldUid}`}\n type=\"number\"\n min={0}\n max={255}\n value={Math.round(rgb[channel])}\n disabled={disabled}\n onChange={(e) => updateRgbChannel(channel, e.target.value)}\n />\n </div>\n ))}\n </div>\n )}\n {format === \"hsl\" && (\n <div className=\"nx-colorpicker__format-fields\">\n <div className=\"nx-colorpicker__format-field\">\n <label htmlFor={`nx-colorpicker-h-${fieldUid}`}>H</label>\n <input\n id={`nx-colorpicker-h-${fieldUid}`}\n type=\"number\"\n min={0}\n max={360}\n value={Math.round(hsl.h)}\n disabled={disabled}\n onChange={(e) => updateHslChannel(\"h\", e.target.value, 360)}\n />\n </div>\n <div className=\"nx-colorpicker__format-field\">\n <label htmlFor={`nx-colorpicker-s-${fieldUid}`}>S</label>\n <input\n id={`nx-colorpicker-s-${fieldUid}`}\n type=\"number\"\n min={0}\n max={100}\n value={Math.round(hsl.s)}\n disabled={disabled}\n onChange={(e) => updateHslChannel(\"s\", e.target.value, 100)}\n />\n </div>\n <div className=\"nx-colorpicker__format-field\">\n <label htmlFor={`nx-colorpicker-l-${fieldUid}`}>L</label>\n <input\n id={`nx-colorpicker-l-${fieldUid}`}\n type=\"number\"\n min={0}\n max={100}\n value={Math.round(hsl.l)}\n disabled={disabled}\n onChange={(e) => updateHslChannel(\"l\", e.target.value, 100)}\n />\n </div>\n </div>\n )}\n </div>\n );\n}","import { resolveFieldState, getFieldAriaProps, type FieldProps, type FieldState } from \"./field\";\n\n// ============================================================\n// COLOR PICKER — pure core (Category D: Input's field shape +\n// Popover, with the popover panel composing a preset swatch grid and\n// a custom saturation/hue panel — see react/ColorPicker.tsx's own\n// header for why both, rather than the native <input type=\"color\">\n// an earlier version of this file used). This module owns the field\n// concerns: hex normalization/parsing (now including `rgb(...)`/\n// `hsl(...)` function-notation strings, since the field can display\n// either depending on which format tab is active) and swatch/dial\n// classes and ARIA — the same split datepicker.ts draws between\n// \"field concerns\" and the grid widget's own math (there, Calendar's;\n// here, the swatch grid's and the custom panel's).\n// ============================================================\n\nexport type ColorPickerVariant = \"both\" | \"presets\" | \"custom\";\n\nexport interface ColorPickerCoreProps extends FieldProps {\n /** Preset swatches offered in the popover, as hex strings. Defaults to DEFAULT_PRESETS. */\n presets?: string[];\n /**\n * Which part(s) of the popover to show. `\"both\"` (default) is the\n * preset grid plus the custom saturation/hue panel underneath it.\n * `\"presets\"` shows only the grid — a fixed palette with no\n * arbitrary-color escape hatch. `\"custom\"` shows only the\n * saturation/hue panel — no preset shortcuts at all.\n */\n variant?: ColorPickerVariant;\n}\n\nexport interface ColorPickerState extends FieldState {\n presets: string[];\n variant: ColorPickerVariant;\n}\n\nexport const DEFAULT_PRESETS: string[] = [\n \"#ef4444\",\n \"#f97316\",\n \"#f59e0b\",\n \"#eab308\",\n \"#84cc16\",\n \"#22c55e\",\n \"#10b981\",\n \"#14b8a6\",\n \"#06b6d4\",\n \"#3b82f6\",\n \"#6366f1\",\n \"#8b5cf6\",\n \"#a855f7\",\n \"#d946ef\",\n \"#ec4899\",\n \"#6b7280\",\n \"#171717\",\n \"#ffffff\",\n];\n\nexport function resolveColorPickerState(props: ColorPickerCoreProps): ColorPickerState {\n return {\n ...resolveFieldState(props),\n presets: props.presets ?? DEFAULT_PRESETS,\n variant: props.variant ?? \"both\",\n };\n}\n\n// --- hex parsing / normalization -----------------------------------\n\nconst HEX_RE = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i;\n\n/** Whether `text` is a recognizable 3- or 6-digit hex color, with or without a leading `#`. */\nexport function isValidHex(text: string): boolean {\n return HEX_RE.test(text.trim());\n}\n\n/**\n * Normalizes any accepted hex input (`\"f00\"`, `\"#f00\"`, `\"ff0000\"`,\n * `\"#FF0000\"`) into a canonical lowercase `#rrggbb` string, or `null`\n * if it isn't a valid hex color at all. The single source of truth\n * every call site (typed-text commit, swatch click, the native color\n * input's own onChange) normalizes through, the same role\n * isDateSelectable/isTimeSelectable play for their fields.\n */\nexport function normalizeHex(text: string): string | null {\n const trimmed = text.trim();\n const match = trimmed.match(HEX_RE);\n if (!match) return null;\n let hex = match[1].toLowerCase();\n if (hex.length === 3) {\n hex = hex\n .split(\"\")\n .map((c) => c + c)\n .join(\"\");\n }\n return `#${hex}`;\n}\n\n/** Whether two hex strings (however formatted) represent the same color. */\nexport function isSameColor(a: string | null | undefined, b: string | null | undefined): boolean {\n if (!a || !b) return a === b;\n const na = normalizeHex(a);\n const nb = normalizeHex(b);\n return na !== null && na === nb;\n}\n\n/** Rough perceived-lightness check, used only to decide a checkmark's contrast color on a selected swatch — not a color-science API. */\nexport function isLightColor(hex: string): boolean {\n const normalized = normalizeHex(hex);\n if (!normalized) return true;\n const r = parseInt(normalized.slice(1, 3), 16);\n const g = parseInt(normalized.slice(3, 5), 16);\n const b = parseInt(normalized.slice(5, 7), 16);\n const luma = (0.299 * r + 0.587 * g + 0.114 * b) / 255;\n return luma > 0.6;\n}\n\n// --- classes ------------------------------------------------------\n\nexport function getSwatchClasses(input: { isSelected: boolean; isActive: boolean }): string {\n return [\n \"nx-colorpicker__swatch-option\",\n input.isSelected && \"nx-colorpicker__swatch-option--selected\",\n input.isActive && \"nx-colorpicker__swatch-option--active\",\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\n// --- ARIA -----------------------------------------------------\n\nexport function getSwatchGridAriaProps(label: string) {\n return { role: \"listbox\" as const, \"aria-label\": label };\n}\n\nexport function getSwatchAriaProps(input: { isSelected: boolean; isFocusable: boolean; label: string }) {\n return {\n role: \"option\" as const,\n \"aria-selected\": input.isSelected,\n \"aria-label\": input.label,\n tabIndex: input.isFocusable ? 0 : -1,\n };\n}\n\nexport function getFieldTriggerAriaProps(state: FieldState, describedBy?: string) {\n return getFieldAriaProps(state, describedBy);\n}\n\n// --- custom panel: color space conversions --------------------------\n// The typed hex field and preset grid only ever need hex in/out, but\n// the custom panel (saturation/value area + hue slider + RGB/HSL\n// fields) needs to move between hex, RGB, HSV, and HSL freely. HSV\n// drives the SV area/hue slider (the natural space for a \"pick a hue,\n// then a shade of it\" 2D control); RGB/HSL are only ever produced for\n// display in their own format tab and round-tripped back through hex\n// on edit, so hex stays the single canonical value ColorPicker's\n// public onChange emits (Rule 10 — the public shape doesn't change).\n\nexport interface RGB {\n r: number;\n g: number;\n b: number;\n}\n\nexport interface HSV {\n h: number;\n s: number;\n v: number;\n}\n\nexport interface HSL {\n h: number;\n s: number;\n l: number;\n}\n\nexport type ColorFormat = \"hex\" | \"rgb\" | \"hsl\";\n\nexport const COLOR_FORMATS: ColorFormat[] = [\"hex\", \"rgb\", \"hsl\"];\n\nfunction clampNum(n: number, min: number, max: number): number {\n return Math.min(Math.max(n, min), max);\n}\n\n/** Hex (any accepted shape, see `normalizeHex`) to 0-255 RGB channels, or `null` if not a valid hex color. */\nexport function hexToRgb(hex: string): RGB | null {\n const normalized = normalizeHex(hex);\n if (!normalized) return null;\n return {\n r: parseInt(normalized.slice(1, 3), 16),\n g: parseInt(normalized.slice(3, 5), 16),\n b: parseInt(normalized.slice(5, 7), 16),\n };\n}/** 0-255 RGB channels (rounded, clamped) to canonical lowercase `#rrggbb`. */\nexport function rgbToHex({ r, g, b }: RGB): string {\n const channel = (n: number) => clampNum(Math.round(n), 0, 255).toString(16).padStart(2, \"0\");\n return `#${channel(r)}${channel(g)}${channel(b)}`;\n}\n\n/** 0-255 RGB to HSV (`h` in 0-360, `s`/`v` in 0-100). */\nexport function rgbToHsv({ r, g, b }: RGB): HSV {\n const rn = r / 255,\n gn = g / 255,\n bn = b / 255;\n const max = Math.max(rn, gn, bn),\n min = Math.min(rn, gn, bn);\n const d = max - min;\n let h = 0;\n if (d !== 0) {\n if (max === rn) h = ((gn - bn) / d) % 6;\n else if (max === gn) h = (bn - rn) / d + 2;\n else h = (rn - gn) / d + 4;\n h *= 60;\n if (h < 0) h += 360;\n }\n const s = max === 0 ? 0 : d / max;\n return { h, s: s * 100, v: max * 100 };\n}\n\n/** HSV (`h` in 0-360, `s`/`v` in 0-100) to 0-255 RGB. */\nexport function hsvToRgb({ h, s, v }: HSV): RGB {\n const s1 = clampNum(s, 0, 100) / 100;\n const v1 = clampNum(v, 0, 100) / 100;\n const hh = (((h % 360) + 360) % 360) / 60;\n const c = v1 * s1;\n const x = c * (1 - Math.abs((hh % 2) - 1));\n const m = v1 - c;\n let [r1, g1, b1] = [0, 0, 0];\n if (hh < 1) [r1, g1, b1] = [c, x, 0];\n else if (hh < 2) [r1, g1, b1] = [x, c, 0];\n else if (hh < 3) [r1, g1, b1] = [0, c, x];\n else if (hh < 4) [r1, g1, b1] = [0, x, c];\n else if (hh < 5) [r1, g1, b1] = [x, 0, c];\n else [r1, g1, b1] = [c, 0, x];\n return { r: (r1 + m) * 255, g: (g1 + m) * 255, b: (b1 + m) * 255 };\n}\n\n/** 0-255 RGB to HSL (`h` in 0-360, `s`/`l` in 0-100). */\nexport function rgbToHsl({ r, g, b }: RGB): HSL {\n const rn = r / 255,\n gn = g / 255,\n bn = b / 255;\n const max = Math.max(rn, gn, bn),\n min = Math.min(rn, gn, bn);\n const l = (max + min) / 2;\n const d = max - min;\n let h = 0,\n s = 0;\n if (d !== 0) {\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n if (max === rn) h = ((gn - bn) / d) % 6;\n else if (max === gn) h = (bn - rn) / d + 2;\n else h = (rn - gn) / d + 4;\n h *= 60;\n if (h < 0) h += 360;\n }\n return { h, s: s * 100, l: l * 100 };\n}\n\n/** HSL (`h` in 0-360, `s`/`l` in 0-100) to 0-255 RGB. */\nexport function hslToRgb({ h, s, l }: HSL): RGB {\n const s1 = clampNum(s, 0, 100) / 100;\n const l1 = clampNum(l, 0, 100) / 100;\n const c = (1 - Math.abs(2 * l1 - 1)) * s1;\n const hh = (((h % 360) + 360) % 360) / 60;\n const x = c * (1 - Math.abs((hh % 2) - 1));\n const m = l1 - c / 2;\n let [r1, g1, b1] = [0, 0, 0];\n if (hh < 1) [r1, g1, b1] = [c, x, 0];\n else if (hh < 2) [r1, g1, b1] = [x, c, 0];\n else if (hh < 3) [r1, g1, b1] = [0, c, x];\n else if (hh < 4) [r1, g1, b1] = [0, x, c];\n else if (hh < 5) [r1, g1, b1] = [x, 0, c];\n else [r1, g1, b1] = [c, 0, x];\n return { r: (r1 + m) * 255, g: (g1 + m) * 255, b: (b1 + m) * 255 };\n}\n\n/** Hex to HSV, or `null` if not a valid hex color — the SV-area/hue-slider's read side. */\nexport function hexToHsv(hex: string): HSV | null {\n const rgb = hexToRgb(hex);\n return rgb ? rgbToHsv(rgb) : null;\n}\n\n/** HSV to canonical hex — the SV-area/hue-slider's write side. */\nexport function hsvToHex(hsv: HSV): string {\n return rgbToHex(hsvToRgb(hsv));\n}\n\n/** HSL to canonical hex — the HSL format tab's write side. */\nexport function hslToHex(hsl: HSL): string {\n return rgbToHex(hslToRgb(hsl));\n}\n\n// --- typed-field text: parsing whichever format is on screen, and\n// producing that format back out --------------------------------\n// The field's displayed text now follows whichever format tab is\n// active in the custom panel (hex/rgb/hsl) rather than always\n// showing hex, so it needs to accept typed `rgb(...)`/`hsla(...)`\n// text back, not just hex — otherwise a person editing the field\n// while \"RGB\" is selected would have their own format rejected.\n\nconst RGB_FUNCTION_RE = /^rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*[\\d.]+\\s*)?\\)$/i;\nconst HSL_FUNCTION_RE = /^hsla?\\(\\s*(-?\\d{1,3})\\s*,\\s*(\\d{1,3})%\\s*,\\s*(\\d{1,3})%\\s*(?:,\\s*[\\d.]+\\s*)?\\)$/i;\n\n/** Parses hex OR `rgb(a)(...)`/`hsl(a)(...)` function-notation text into normalized hex, or `null` if it's none of those. */\nexport function parseColorInput(text: string): string | null {\n const trimmed = text.trim();\n const hex = normalizeHex(trimmed);\n if (hex) return hex;\n\n const rgbMatch = trimmed.match(RGB_FUNCTION_RE);\n if (rgbMatch) {\n const [, r, g, b] = rgbMatch;\n return rgbToHex({ r: clampNum(Number(r), 0, 255), g: clampNum(Number(g), 0, 255), b: clampNum(Number(b), 0, 255) });\n }\n\n const hslMatch = trimmed.match(HSL_FUNCTION_RE);\n if (hslMatch) {\n const [, h, s, l] = hslMatch;\n return hslToHex({ h: clampNum(Number(h), 0, 360), s: clampNum(Number(s), 0, 100), l: clampNum(Number(l), 0, 100) });\n }\n\n return null;\n}\n\n/** Renders hex as text in the given format — the field's display-side counterpart to `parseColorInput`, so what's shown always matches whichever format tab is currently active. */\nexport function formatColorValue(hex: string, format: ColorFormat): string {\n if (format === \"hex\") return hex;\n const rgb = hexToRgb(hex);\n if (!rgb) return hex;\n if (format === \"rgb\") return `rgb(${Math.round(rgb.r)}, ${Math.round(rgb.g)}, ${Math.round(rgb.b)})`;\n const hsl = rgbToHsl(rgb);\n return `hsl(${Math.round(hsl.h)}, ${Math.round(hsl.s)}%, ${Math.round(hsl.l)}%)`;\n}\n\n/** Arrow-key deltas for the 2D saturation/value area (Shift for a larger step) — Home/End/PageUp/PageDown aren't meaningful on a 2D surface, so only the four arrows are handled, same spirit as Slider's own keyboard set restricted to what the control actually has. */\nexport function getSvKeyboardDelta(key: string, coarse: boolean): { ds: number; dv: number } | null {\n const step = coarse ? 10 : 2;\n switch (key) {\n case \"ArrowLeft\":\n return { ds: -step, dv: 0 };\n case \"ArrowRight\":\n return { ds: step, dv: 0 };\n case \"ArrowUp\":\n return { ds: 0, dv: step };\n case \"ArrowDown\":\n return { ds: 0, dv: -step };\n default:\n return null;\n }\n}\n\n/** Clamps a saturation or value percentage into 0-100. Exported so the SV area's pointer/keyboard handlers share one clamp rather than each re-deriving it. */\nexport function clampPercent(n: number): number {\n return clampNum(n, 0, 100);\n}\n\n// --- custom panel: classes / ARIA -----------------------------------\n\nexport function getFormatTabClasses(isActive: boolean): string {\n return [\"nx-colorpicker__format-tab\", isActive && \"nx-colorpicker__format-tab--active\"].filter(Boolean).join(\" \");\n}\n\nexport function getFormatTablistAriaProps(label: string) {\n return { role: \"tablist\" as const, \"aria-label\": label };\n}\n\nexport function getFormatTabAriaProps(isActive: boolean) {\n return { role: \"tab\" as const, \"aria-selected\": isActive, tabIndex: isActive ? 0 : -1 };\n}\n\nexport function getSvThumbAriaProps(saturation: number, value: number) {\n return {\n role: \"slider\" as const,\n \"aria-label\": \"Color saturation and brightness\",\n \"aria-valuetext\": `Saturation ${Math.round(saturation)}%, brightness ${Math.round(value)}%`,\n tabIndex: 0,\n };\n}","import React, {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n resolveCarouselState,\n getNextActiveIndex,\n clampIndex,\n getTrackTransform,\n getViewportClasses,\n getTrackClasses,\n getSlideClasses,\n getNavButtonClasses,\n getIndicatorClasses,\n getViewportAriaProps,\n getSlideAriaProps,\n getNavButtonAriaProps,\n getIndicatorAriaProps,\n type CarouselCoreProps,\n} from \"../core/carousel\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport { ChevronLeftIcon, ChevronRightIcon } from \"../icons/react\";\nimport \"./Carousel.css\";\n\n// ============================================================\n// CAROUSEL — React layer (Category F). See core/carousel.ts's\n// header for the on-paper decomposition. No portal, no\n// useOverlayBehavior (BUILDING-COMPONENTS.md's own table: Carousel's\n// baseline is arrow keys + pause-on-hover, not Rule 11's overlay\n// one) — this is closer in shape to Tabs/Accordion (Category E) than\n// to Modal, just with a slide index instead of a tab value.\n//\n// CarouselSlide gets its own index positionally (React.Children in\n// CarouselTrack, via a small per-slide context) rather than through\n// Tabs' value-based self-registration — slide ORDER is the only\n// identity a slide has (there's no separately meaningful \"value\" the\n// way a Tab's string value is), so deriving the index from JSX order\n// directly is simpler and avoids a registration effect entirely.\n// ============================================================\n\ninterface CarouselContextValue {\n activeIndex: number;\n totalSlides: number;\n setTotalSlides: (n: number) => void;\n goTo: (index: number) => void;\n next: () => void;\n prev: () => void;\n state: ReturnType<typeof resolveCarouselState>;\n viewportId: string;\n isPaused: boolean;\n setPaused: (paused: boolean) => void;\n}\n\nconst CarouselContext = createContext<CarouselContextValue | null>(null);\n\nfunction useCarouselContext(component: string): CarouselContextValue {\n const ctx = useContext(CarouselContext);\n if (!ctx) throw new Error(`<${component}> must be rendered inside a <Carousel>.`);\n return ctx;\n}\n\nconst SlideIndexContext = createContext<number>(0);\n\n// ---- Root ------------------------------------------------------\n\nexport interface CarouselProps extends CarouselCoreProps, BaseComponentProps {\n /** Active slide index (controlled). Pair with onChange. */\n value?: number;\n /** Initial active slide index (uncontrolled). Default 0. */\n defaultValue?: number;\n onChange?: (index: number) => void;\n children?: React.ReactNode;\n}\n\nexport const Carousel = forwardRef<HTMLDivElement, CarouselProps>(function Carousel(\n { value, defaultValue, onChange, loop, orientation, autoPlay, autoPlayInterval, pauseOnHover, className, style, theme, color, children },\n ref\n) {\n const state = resolveCarouselState({ loop, orientation, autoPlay, autoPlayInterval, pauseOnHover });\n const viewportId = `nx-carousel-${useId()}`;\n\n const [totalSlides, setTotalSlidesRaw] = useState(0);\n // Clamp the active index down whenever the slide count shrinks\n // below it (a consumer removing slides), rather than pointing at\n // nothing.\n const setTotalSlides = useCallback((n: number) => setTotalSlidesRaw(n), []);\n\n const isControlled = value !== undefined;\n const [uncontrolledIndex, setUncontrolledIndex] = useState(defaultValue ?? 0);\n const rawActiveIndex = isControlled ? value! : uncontrolledIndex;\n const activeIndex = clampIndex(rawActiveIndex, Math.max(totalSlides, 1));\n\n const goTo = useCallback(\n (index: number) => {\n const next = clampIndex(index, Math.max(totalSlides, 1));\n if (!isControlled) setUncontrolledIndex(next);\n if (next !== activeIndex) onChange?.(next);\n },\n [isControlled, totalSlides, activeIndex, onChange]\n );\n\n const next = useCallback(\n () => goTo(getNextActiveIndex(activeIndex, totalSlides, 1, state.loop)),\n [goTo, activeIndex, totalSlides, state.loop]\n );\n const prev = useCallback(\n () => goTo(getNextActiveIndex(activeIndex, totalSlides, -1, state.loop)),\n [goTo, activeIndex, totalSlides, state.loop]\n );\n\n const [isPaused, setPaused] = useState(false);\n\n // Autoplay timer. Cleared/re-armed whenever the interval, pause\n // state, slide count, or active index changes — restarting the\n // clock on manual navigation is deliberate (jumping to a slide\n // shouldn't have it immediately auto-advance again a moment\n // later).\n useEffect(() => {\n if (!state.autoPlay || isPaused || totalSlides <= 1) return;\n const id = window.setInterval(next, state.autoPlayInterval);\n return () => window.clearInterval(id);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [state.autoPlay, state.autoPlayInterval, isPaused, totalSlides, activeIndex]);\n\n const ctx = useMemo<CarouselContextValue>(\n () => ({ activeIndex, totalSlides, setTotalSlides, goTo, next, prev, state, viewportId, isPaused, setPaused }),\n [activeIndex, totalSlides, setTotalSlides, goTo, next, prev, state, viewportId, isPaused]\n );\n\n const content = (\n <div ref={ref} className={[\"nx-carousel\", className].filter(Boolean).join(\" \")} style={style}>\n <CarouselContext.Provider value={ctx}>{children}</CarouselContext.Provider>\n </div>\n );\n\n return withThemeOverride(theme, withAccentOverride(color, content));\n});\n\n// ---- Viewport (the clipped window; owns keyboard + pause-on-hover) --\n\nexport interface CarouselViewportProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Accessible label for the region (WAI-ARIA carousel pattern). Default \"Carousel\". */\n label?: string;\n children?: React.ReactNode;\n}\n\nexport const CarouselViewport = forwardRef<HTMLDivElement, CarouselViewportProps>(function CarouselViewport(\n { label = \"Carousel\", className, onKeyDown, onMouseEnter, onMouseLeave, children, ...rest },\n forwardedRef\n) {\n const ctx = useCarouselContext(\"CarouselViewport\");\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLDivElement>) {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n const isNext = ctx.state.orientation === \"vertical\" ? e.key === \"ArrowDown\" : e.key === \"ArrowRight\";\n const isPrev = ctx.state.orientation === \"vertical\" ? e.key === \"ArrowUp\" : e.key === \"ArrowLeft\";\n if (isNext) {\n e.preventDefault();\n ctx.next();\n } else if (isPrev) {\n e.preventDefault();\n ctx.prev();\n } else if (e.key === \"Home\") {\n e.preventDefault();\n ctx.goTo(0);\n } else if (e.key === \"End\") {\n e.preventDefault();\n ctx.goTo(ctx.totalSlides - 1);\n }\n }\n\n return (\n <div\n ref={forwardedRef}\n id={ctx.viewportId}\n className={getViewportClasses(ctx.state.orientation, className)}\n tabIndex={0}\n onKeyDown={handleKeyDown}\n onMouseEnter={(e) => {\n onMouseEnter?.(e);\n if (ctx.state.pauseOnHover) ctx.setPaused(true);\n }}\n onMouseLeave={(e) => {\n onMouseLeave?.(e);\n if (ctx.state.pauseOnHover) ctx.setPaused(false);\n }}\n {...getViewportAriaProps(label)}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\n// ---- Track (the sliding flex row) ----------------------------------\n\nexport interface CarouselTrackProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n children?: React.ReactNode;\n}\n\nexport const CarouselTrack = forwardRef<HTMLDivElement, CarouselTrackProps>(function CarouselTrack(\n { className, style, children, ...rest },\n forwardedRef\n) {\n const ctx = useCarouselContext(\"CarouselTrack\");\n const items = React.Children.toArray(children);\n\n useEffect(() => {\n ctx.setTotalSlides(items.length);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [items.length]);\n\n return (\n <div\n ref={forwardedRef}\n className={[getTrackClasses(ctx.state.orientation), className].filter(Boolean).join(\" \")}\n style={{ ...style, transform: getTrackTransform(ctx.activeIndex, ctx.state.orientation) }}\n {...rest}\n >\n {items.map((child, index) => (\n <SlideIndexContext.Provider key={index} value={index}>\n {child}\n </SlideIndexContext.Provider>\n ))}\n </div>\n );\n});\n\n// ---- Slide ---------------------------------------------------------\n\nexport interface CarouselSlideProps extends React.HTMLAttributes<HTMLDivElement> {\n children?: React.ReactNode;\n}\n\nexport const CarouselSlide = forwardRef<HTMLDivElement, CarouselSlideProps>(function CarouselSlide(\n { className, children, ...rest },\n forwardedRef\n) {\n const ctx = useCarouselContext(\"CarouselSlide\");\n const index = useContext(SlideIndexContext);\n const isActive = index === ctx.activeIndex;\n\n return (\n <div\n ref={forwardedRef}\n className={[getSlideClasses(isActive), className].filter(Boolean).join(\" \")}\n {...getSlideAriaProps(index, ctx.totalSlides, isActive)}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\n// ---- Previous / Next buttons ----------------------------------------\n\ninterface CarouselNavButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"children\"> {\n children?: React.ReactNode;\n}\n\nexport const CarouselPrevious = forwardRef<HTMLButtonElement, CarouselNavButtonProps>(function CarouselPrevious(\n { className, onClick, children, disabled, ...rest },\n forwardedRef\n) {\n const ctx = useCarouselContext(\"CarouselPrevious\");\n const atStart = !ctx.state.loop && ctx.activeIndex === 0;\n return (\n <button\n ref={forwardedRef}\n type=\"button\"\n className={[getNavButtonClasses(\"prev\"), className].filter(Boolean).join(\" \")}\n disabled={disabled ?? atStart}\n onClick={(e) => {\n onClick?.(e);\n if (!e.defaultPrevented) ctx.prev();\n }}\n {...getNavButtonAriaProps(\"prev\")}\n {...rest}\n >\n {children ?? <ChevronLeftIcon size={18} aria-hidden=\"true\" />}\n </button>\n );\n});\n\nexport const CarouselNext = forwardRef<HTMLButtonElement, CarouselNavButtonProps>(function CarouselNext(\n { className, onClick, children, disabled, ...rest },\n forwardedRef\n) {\n const ctx = useCarouselContext(\"CarouselNext\");\n const atEnd = !ctx.state.loop && ctx.activeIndex >= ctx.totalSlides - 1;\n return (\n <button\n ref={forwardedRef}\n type=\"button\"\n className={[getNavButtonClasses(\"next\"), className].filter(Boolean).join(\" \")}\n disabled={disabled ?? atEnd}\n onClick={(e) => {\n onClick?.(e);\n if (!e.defaultPrevented) ctx.next();\n }}\n {...getNavButtonAriaProps(\"next\")}\n {...rest}\n >\n {children ?? <ChevronRightIcon size={18} aria-hidden=\"true\" />}\n </button>\n );\n});\n\n// ---- Indicators (dots) ----------------------------------------------\n\nexport const CarouselIndicators = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CarouselIndicators({ className, ...rest }, forwardedRef) {\n const ctx = useCarouselContext(\"CarouselIndicators\");\n return (\n <div ref={forwardedRef} className={[\"nx-carousel__indicators\", className].filter(Boolean).join(\" \")} role=\"tablist\" {...rest}>\n {Array.from({ length: ctx.totalSlides }, (_, index) => {\n const isActive = index === ctx.activeIndex;\n return (\n <button\n key={index}\n type=\"button\"\n role=\"tab\"\n className={getIndicatorClasses(isActive)}\n aria-selected={isActive}\n onClick={() => ctx.goTo(index)}\n {...getIndicatorAriaProps(index, isActive)}\n />\n );\n })}\n </div>\n );\n }\n);\n","import { nextEnabledIndex } from \"./collection\";\n\n// ============================================================\n// CAROUSEL — pure core (Category F: complex/stateful).\n//\n// Decomposed on paper first, per BUILDING-COMPONENTS.md's Category F\n// guidance (\"Table is the reference now: several small pieces rather\n// than one component holding everything\"). Carousel's own pieces:\n// Carousel (root — controlled active-slide state, autoplay/pause\n// timer), CarouselViewport (the clipped window — owns arrow-key +\n// pause-on-hover, Carousel's \"own baseline\" instead of Rule 11's\n// overlay one, per BUILDING-COMPONENTS.md's own component table),\n// CarouselTrack (the sliding flex row), CarouselSlide,\n// CarouselPrevious/CarouselNext, CarouselIndicators.\n//\n// Index math is NOT reimplemented here — getNextActiveIndex is a\n// thin wrapper over core/collection.ts's nextEnabledIndex (Rule 12),\n// the exact function Select/Combobox/CommandPalette/Dropdown/\n// TimePicker's list all already share for \"move by one, skip\n// disabled, honor loop\". A carousel has no disabled slides, so it's\n// called with an all-false disabled array — the loop/no-loop\n// clamping behavior is identical to what a disabled-aware list needs\n// anyway, so there was no reason to hand-roll a second version of it.\n// ============================================================\n\nexport type CarouselOrientation = \"horizontal\" | \"vertical\";\n\nexport interface CarouselCoreProps {\n /** Wrap past the last slide back to the first (and vice versa). Default false. */\n loop?: boolean;\n orientation?: CarouselOrientation;\n /** Auto-advance on a timer. Default false. */\n autoPlay?: boolean;\n /** Milliseconds between auto-advances. Default 5000. */\n autoPlayInterval?: number;\n /** Pause the autoplay timer while the pointer is over the carousel. Default true. */\n pauseOnHover?: boolean;\n}\n\nexport interface CarouselState {\n loop: boolean;\n orientation: CarouselOrientation;\n autoPlay: boolean;\n autoPlayInterval: number;\n pauseOnHover: boolean;\n}\n\nexport function resolveCarouselState(props: CarouselCoreProps): CarouselState {\n return {\n loop: props.loop ?? false,\n orientation: props.orientation ?? \"horizontal\",\n autoPlay: props.autoPlay ?? false,\n autoPlayInterval: props.autoPlayInterval ?? 5000,\n pauseOnHover: props.pauseOnHover ?? true,\n };\n}\n\n/** The next active slide index, one step in `dir`, honoring `loop`. `total` slides, none ever disabled — see module header for why this composes core/collection.ts rather than reimplementing the same clamping/wrapping math. */\nexport function getNextActiveIndex(current: number, total: number, dir: 1 | -1, loop: boolean): number {\n if (total <= 0) return 0;\n return nextEnabledIndex(Array.from({ length: total }, () => false), current, dir, loop);\n}\n\n/** Clamps an arbitrary requested index into range, for `goTo(n)` calls with an out-of-range n. */\nexport function clampIndex(index: number, total: number): number {\n if (total <= 0) return 0;\n return Math.min(Math.max(index, 0), total - 1);\n}\n\n// --- track transform -------------------------------------------------\n\nexport function getTrackTransform(activeIndex: number, orientation: CarouselOrientation): string {\n const pct = activeIndex * 100;\n return orientation === \"vertical\" ? `translate3d(0, -${pct}%, 0)` : `translate3d(-${pct}%, 0, 0)`;\n}\n\n// --- classes ------------------------------------------------------\n\nexport function getViewportClasses(orientation: CarouselOrientation, className?: string): string {\n return [\"nx-carousel__viewport\", `nx-carousel__viewport--${orientation}`, className].filter(Boolean).join(\" \");\n}\n\nexport function getTrackClasses(orientation: CarouselOrientation): string {\n return [\"nx-carousel__track\", `nx-carousel__track--${orientation}`].filter(Boolean).join(\" \");\n}\n\nexport function getSlideClasses(isActive: boolean): string {\n return [\"nx-carousel__slide\", isActive && \"nx-carousel__slide--active\"].filter(Boolean).join(\" \");\n}\n\nexport function getNavButtonClasses(direction: \"prev\" | \"next\"): string {\n return [\"nx-carousel__button\", `nx-carousel__button--${direction}`].filter(Boolean).join(\" \");\n}\n\nexport function getIndicatorClasses(isActive: boolean): string {\n return [\"nx-carousel__indicator\", isActive && \"nx-carousel__indicator--active\"].filter(Boolean).join(\" \");\n}\n\n// --- ARIA -----------------------------------------------------\n// Follows the WAI-ARIA carousel pattern: a labeled region, each\n// slide a \"group\" with its own roledescription, live-off by default\n// (a consumer flips aria-live to \"polite\" via `live` if autoplay\n// should be announced — off by default since an auto-advancing\n// region announcing itself repeatedly is more disruptive than\n// helpful for most content).\n\nexport function getViewportAriaProps(label: string) {\n return { role: \"region\" as const, \"aria-roledescription\": \"carousel\", \"aria-label\": label };\n}\n\nexport function getSlideAriaProps(index: number, total: number, isActive: boolean) {\n return {\n role: \"group\" as const,\n \"aria-roledescription\": \"slide\",\n \"aria-label\": `Slide ${index + 1} of ${total}`,\n \"aria-hidden\": isActive ? undefined : (true as const),\n };\n}\n\nexport function getNavButtonAriaProps(direction: \"prev\" | \"next\") {\n return { \"aria-label\": direction === \"prev\" ? \"Previous slide\" : \"Next slide\" };\n}\n\nexport function getIndicatorAriaProps(index: number, isActive: boolean) {\n return { \"aria-label\": `Go to slide ${index + 1}`, \"aria-current\": isActive ? (true as const) : undefined };\n}\n","import React, { forwardRef } from \"react\";\nimport { resolveTimelineState, resolveTimelineItemState, getRootClasses, getItemClasses, getDotClasses, type TimelineCoreProps, type TimelineItemCoreProps } from \"../core/timeline\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport \"./Timeline.css\";\n\n// ============================================================\n// TIMELINE — React layer (Category A). See core/timeline.ts's\n// header for why this is A, not F, and why there's no index\n// tracking anywhere in either file — the connecting line hiding on\n// the last item, and side-alternation in `align=\"alternate\"`, are\n// both plain CSS (:last-child / :nth-child), the same way\n// Breadcrumb's separators are.\n// ============================================================\n\nexport interface TimelineProps extends TimelineCoreProps, BaseComponentProps {\n /** Accessible label for the list (e.g. \"Order history\"). Optional — most timelines sit under their own visible heading already. */\n label?: string;\n children?: React.ReactNode;\n}\n\nexport const Timeline = forwardRef<HTMLOListElement, TimelineProps>(function Timeline(\n { orientation, align, label, className, style, theme, color, children },\n forwardedRef\n) {\n const state = resolveTimelineState({ orientation, align });\n\n const list = (\n <ol ref={forwardedRef} className={getRootClasses(state, className)} style={style} aria-label={label}>\n {children}\n </ol>\n );\n\n return withThemeOverride(theme, withAccentOverride(color, list));\n});\n\n// ---- Item ------------------------------------------------------\n\nexport interface TimelineItemProps extends TimelineItemCoreProps, Omit<React.LiHTMLAttributes<HTMLLIElement>, \"title\"> {\n /** The event's headline. Also accepts arbitrary nodes, not just text. */\n title?: React.ReactNode;\n /** Supporting detail below the title. */\n description?: React.ReactNode;\n /** A date/time label, rendered opposite the title (e.g. \"2 hours ago\", \"Mar 4, 2026\"). */\n timestamp?: React.ReactNode;\n /** Replaces the default status dot entirely — an icon, an avatar, initials, anything. Not inspected or cloned (same philosophy as Button's iconLeft), just rendered in the dot's slot. */\n icon?: React.ReactNode;\n children?: React.ReactNode;\n}\n\nexport const TimelineItem = forwardRef<HTMLLIElement, TimelineItemProps>(function TimelineItem(\n { status, title, description, timestamp, icon, className, children, ...rest },\n forwardedRef\n) {\n const state = resolveTimelineItemState({ status });\n // `icon != null && icon !== false` — not `Boolean(icon)` — because\n // a genuinely falsy-but-valid icon node (0, though nobody would\n // really pass that) shouldn't be treated the same as \"no icon\" any\n // more than an empty string would; `false`/`null`/`undefined` are\n // React's own \"render nothing\" values, so those are the only ones\n // that mean \"no icon\" here.\n const hasIcon = icon !== undefined && icon !== null && icon !== false;\n\n return (\n <li ref={forwardedRef} className={getItemClasses(state, className)} {...rest}>\n <div className=\"nx-timeline__marker\">\n <span className={getDotClasses(state, hasIcon)}>{icon}</span>\n <span className=\"nx-timeline__connector\" aria-hidden=\"true\" />\n </div>\n <div className=\"nx-timeline__content\">\n {(title || timestamp) && (\n <div className=\"nx-timeline__header\">\n {title && <div className=\"nx-timeline__title\">{title}</div>}\n {timestamp && <div className=\"nx-timeline__timestamp\">{timestamp}</div>}\n </div>\n )}\n {description && <div className=\"nx-timeline__description\">{description}</div>}\n {children}\n </div>\n </li>\n );\n});","// ============================================================\n// TIMELINE — pure core (Category A: static/display primitive).\n//\n// Listed as a Category F example early in this doc's prose, but the\n// component table (and the progress notes right below it — \"the\n// rest of Category A: ChatBubble, Timeline\") settle it as Category A:\n// no controlled value, no portal, no interactivity at all — just an\n// ordered list of events with a connecting line. The table is what's\n// authoritative when it and the earlier example list disagree.\n//\n// No index/position tracking here or in the React layer at all —\n// \"is this the last item\" (hide the connector below it) and \"which\n// side does this item sit on in alternate layout\" are both pure\n// :first-child/:last-child/:nth-child CSS, the same reasoning\n// Breadcrumb's separator-between-items uses position-in-list rather\n// than JS bookkeeping.\n//\n// The dot's size (small/no-icon vs. large/icon) is decided in JS\n// (`hasIcon` below, threaded into getDotClasses), not via a\n// `:has(> :not(:empty))` CSS selector as an earlier version did.\n// That selector only matches when `icon` renders as an element (an\n// SVG icon component) — a plain string or number `icon` (an emoji,\n// initials, \"2\") renders as a bare text node with no wrapping\n// element, which `:has(> *)`-shaped selectors can never match no\n// matter how non-empty the text actually is. `icon != null` in JS,\n// which sees the prop directly rather than inferring presence from\n// the rendered DOM shape, doesn't have that blind spot.\n// ============================================================\n\nexport type TimelineOrientation = \"vertical\" | \"horizontal\";\n/** Vertical only — which side of the line each item's content sits on. \"alternate\" ignores this per-item and flips by list position (even/odd), in CSS. Ignored for horizontal orientation. */\nexport type TimelineAlign = \"start\" | \"end\" | \"alternate\";\nexport type TimelineStatus = \"default\" | \"success\" | \"warning\" | \"danger\" | \"info\";\n\nexport interface TimelineCoreProps {\n orientation?: TimelineOrientation;\n align?: TimelineAlign;\n}\n\nexport interface TimelineState {\n orientation: TimelineOrientation;\n align: TimelineAlign;\n}\n\nexport function resolveTimelineState(props: TimelineCoreProps): TimelineState {\n return {\n orientation: props.orientation ?? \"vertical\",\n align: props.align ?? \"start\",\n };\n}\n\nexport interface TimelineItemCoreProps {\n status?: TimelineStatus;\n}\n\nexport interface TimelineItemState {\n status: TimelineStatus;\n}\n\nexport function resolveTimelineItemState(props: TimelineItemCoreProps): TimelineItemState {\n return { status: props.status ?? \"default\" };\n}\n\n// --- classes ------------------------------------------------------\n\nexport function getRootClasses(state: TimelineState, className?: string): string {\n return [\n \"nx-timeline\",\n `nx-timeline--${state.orientation}`,\n state.orientation === \"vertical\" && `nx-timeline--align-${state.align}`,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\nexport function getItemClasses(state: TimelineItemState, className?: string): string {\n return [\"nx-timeline__item\", `nx-timeline__item--${state.status}`, className].filter(Boolean).join(\" \");\n}\n\nexport function getDotClasses(state: TimelineItemState, hasIcon: boolean): string {\n return [\"nx-timeline__dot\", `nx-timeline__dot--${state.status}`, hasIcon && \"nx-timeline__dot--icon\"]\n .filter(Boolean)\n .join(\" \");\n}","import React, { forwardRef, useCallback, useEffect, useId, useMemo, useRef, useState } from \"react\";\nimport {\n filterCommandItems,\n groupCommandItems,\n flattenGroups,\n makeInputId,\n makeListId,\n makeItemId,\n getItemClasses,\n getPaletteAriaProps,\n getInputAriaProps,\n getListAriaProps,\n getGroupAriaProps,\n getItemAriaProps,\n type CommandItem,\n} from \"../core/command\";\nimport { getIndexForKey, firstEnabledIndex } from \"../core/collection\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport { ThemedPortal } from \"../theme-engine/ThemedPortal\";\nimport { useOverlayBehavior } from \"../theme-engine/useOverlayBehavior\";\nimport { useClickOutside } from \"../theme-engine/useClickOutside\";\nimport { SearchIcon } from \"../icons/react\";\nimport \"./CommandPalette.css\";\n\n// ============================================================\n// COMMAND PALETTE — React layer (Category D).\n//\n// Structurally closest to Modal, not Popover: there's no natural\n// trigger element (a command palette is typically opened by a\n// global keyboard shortcut a consumer wires up themselves, the same\n// way Modal's `open` is driven from wherever the consumer wants),\n// so this uses the same `sentinelRef` trick Modal.tsx does — a\n// zero-size marker rendered where <CommandPalette> appears in the\n// tree, purely so ThemedPortal has a real node to read\n// data-theme/data-accent from. `trapFocus`/`autoFocus`/\n// `returnFocus` are all true, the same Modal defaults, since this\n// genuinely is a modal dialog (role=\"dialog\" aria-modal=\"true\"),\n// just one shaped like a search box + list instead of a form.\n//\n// The search input is the first focusable element in the DOM, so\n// useOverlayBehavior's autoFocus (which focuses the first focusable\n// element inside the container) lands on it without needing a\n// separate \"focus this specific element\" option.\n//\n// Filtering and arrow-key navigation reuse core/collection.ts\n// exactly the way Combobox does — BUILDING-COMPONENTS.md names\n// Command directly as one of that primitive's intended consumers.\n// The one real difference: navigation indexes into the GROUPED,\n// flattened render order (core/command.ts's flattenGroups), not the\n// raw filtered array — see that module's header for why those can\n// differ.\n// ============================================================\n\nexport interface CommandPaletteProps extends BaseComponentProps {\n open: boolean;\n onClose: () => void;\n items: CommandItem[];\n onSelect: (item: CommandItem) => void;\n placeholder?: string;\n emptyMessage?: string;\n /** Accessible label for the dialog itself. Default \"Command palette\". */\n label?: string;\n filter?: (item: CommandItem, query: string) => boolean;\n /** Calls onClose automatically right after onSelect fires. Default true — the overwhelmingly common case (running a command dismisses the palette); set false for a palette meant to stay open across multiple actions. */\n closeOnSelect?: boolean;\n /** Explicit element to return focus to on close. Defaults to whatever was focused right before opening. */\n triggerRef?: React.RefObject<HTMLElement | null>;\n}\n\nexport const CommandPalette = forwardRef<HTMLDivElement, CommandPaletteProps>(function CommandPalette(\n {\n open,\n onClose,\n items,\n onSelect,\n placeholder = \"Type a command or search…\",\n emptyMessage = \"No matching commands\",\n label = \"Command palette\",\n filter,\n closeOnSelect = true,\n triggerRef,\n className,\n style,\n theme,\n color,\n },\n forwardedRef\n) {\n const sentinelRef = useRef<HTMLSpanElement>(null);\n const dialogRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const listRef = useRef<HTMLDivElement | null>(null);\n\n const uid = useId();\n const baseId = `nx-command-${uid}`;\n const inputId = makeInputId(baseId);\n const listId = makeListId(baseId);\n\n const [query, setQuery] = useState(\"\");\n\n // Reset the search on every fresh open — reopening a palette with\n // yesterday's leftover query would show a filtered list before\n // the user has typed anything new this time, which reads as a\n // stale/broken result more than a helpful shortcut.\n useEffect(() => {\n if (open) setQuery(\"\");\n }, [open]);\n\n const groups = useMemo(() => groupCommandItems(filterCommandItems(items, query, filter)), [items, query, filter]);\n const visibleItems = useMemo(() => flattenGroups(groups), [groups]);\n\n const [activeIndex, setActiveIndex] = useState(0);\n useEffect(() => {\n setActiveIndex(firstEnabledIndex(visibleItems.map((i) => !!i.disabled)));\n }, [visibleItems]);\n\n React.useImperativeHandle(forwardedRef, () => dialogRef.current as HTMLDivElement);\n\n useOverlayBehavior({\n isOpen: open,\n onClose,\n containerRef: dialogRef,\n triggerRef,\n closeOnEscape: true,\n trapFocus: true,\n returnFocus: true,\n autoFocus: true,\n });\n\n useClickOutside(open, [dialogRef], onClose);\n\n useEffect(() => {\n if (activeIndex < 0) return;\n const item = visibleItems[activeIndex];\n if (!item) return;\n listRef.current\n ?.querySelector<HTMLElement>(`#${CSS.escape(makeItemId(baseId, item.id))}`)\n ?.scrollIntoView({ block: \"nearest\" });\n }, [activeIndex, visibleItems, baseId]);\n\n const selectItem = useCallback(\n (item: CommandItem) => {\n if (item.disabled) return;\n onSelect(item);\n if (closeOnSelect) onClose();\n },\n [onSelect, closeOnSelect, onClose]\n );\n\n function handleKeyDown(e: React.KeyboardEvent) {\n if (e.key === \"Enter\") {\n e.preventDefault();\n const item = visibleItems[activeIndex];\n if (item) selectItem(item);\n return;\n }\n const disabled = visibleItems.map((i) => !!i.disabled);\n const idx = getIndexForKey(e.key, activeIndex, disabled, { orientation: \"vertical\", loop: true });\n if (idx !== null) {\n e.preventDefault();\n setActiveIndex(idx);\n }\n }\n\n const activeItemId =\n activeIndex >= 0 && visibleItems[activeIndex] ? makeItemId(baseId, visibleItems[activeIndex].id) : undefined;\n\n const content = open && (\n <ThemedPortal anchorRef={sentinelRef}>\n <div className=\"nx-command__backdrop\">\n {withThemeOverride(\n theme,\n withAccentOverride(\n color,\n <div\n ref={dialogRef}\n className={[\"nx-command\", className].filter(Boolean).join(\" \")}\n style={style}\n {...getPaletteAriaProps(label)}\n >\n <div className=\"nx-command__search\">\n <SearchIcon size={18} className=\"nx-command__search-icon\" aria-hidden=\"true\" />\n <input\n ref={inputRef}\n className=\"nx-command__input\"\n value={query}\n placeholder={placeholder}\n onChange={(e) => setQuery(e.target.value)}\n onKeyDown={handleKeyDown}\n {...getInputAriaProps({ inputId, listId, activeItemId })}\n />\n </div>\n <div ref={listRef} className=\"nx-command__list\" {...getListAriaProps(listId, inputId)}>\n {visibleItems.length === 0 && <div className=\"nx-command__empty\">{emptyMessage}</div>}\n {groups.map((group, gi) => (\n <div\n key={group.group ?? `__ungrouped_${gi}`}\n className=\"nx-command__group\"\n {...getGroupAriaProps(group.group)}\n >\n {group.group && <div className=\"nx-command__group-label\">{group.group}</div>}\n {group.items.map((item) => {\n const overallIndex = visibleItems.indexOf(item);\n const isActive = overallIndex === activeIndex;\n return (\n <div\n key={item.id}\n className={getItemClasses(!!item.disabled, isActive)}\n onClick={() => selectItem(item)}\n onMouseEnter={() => !item.disabled && setActiveIndex(overallIndex)}\n {...getItemAriaProps(makeItemId(baseId, item.id), !!item.disabled, isActive)}\n >\n <span className=\"nx-command__item-label\">{item.label}</span>\n {item.description && <span className=\"nx-command__item-description\">{item.description}</span>}\n {item.shortcut && <span className=\"nx-command__item-shortcut\">{item.shortcut}</span>}\n </div>\n );\n })}\n </div>\n ))}\n </div>\n </div>\n )\n )}\n </div>\n </ThemedPortal>\n );\n\n return (\n <>\n <span ref={sentinelRef} style={{ display: \"none\" }} aria-hidden=\"true\" />\n {content}\n </>\n );\n});\n","// ============================================================\n// COMMAND PALETTE — pure core (Category D).\n//\n// BUILDING-COMPONENTS.md names Command directly as one of the\n// consumers core/collection.ts's shared list primitive was built\n// for (\"Select, Combobox, and Command all use it instead of each\n// implementing arrow-key handling separately\"). Filtering-as-you-\n// type is the same shape as Combobox's (core/combobox.ts) — real\n// editable text narrows a list — so this module mirrors that one's\n// filter/id/class/ARIA structure rather than re-deriving it, with\n// the one genuine difference grouping introduces: keyboard\n// navigation must move through items in the same order they're\n// actually RENDERED (grouped, group-by-group), not necessarily the\n// order they appear in the raw, ungrouped `items` array a consumer\n// might pass with groups interleaved. `groupItems` exists\n// specifically to make that reconciliation a pure, testable step\n// instead of something the React layer has to get right by\n// accident.\n// ============================================================\n\nexport interface CommandItem {\n id: string;\n label: string;\n description?: string;\n /** A short label for the keyboard shortcut, shown but not wired up — the consumer's own global key listener is what actually triggers `onSelect`, this is display only (e.g. \"⌘K\"). */\n shortcut?: string;\n disabled?: boolean;\n group?: string;\n /** Extra terms that count toward a match without being shown (e.g. \"settings\" also matching an item labeled \"Preferences\"). */\n keywords?: string[];\n}\n\nexport interface CommandGroup {\n /** `undefined` for items with no `group` set — still a real group (rendered without a header), not dropped. */\n group: string | undefined;\n items: CommandItem[];\n}\n\n/** Default filter: case-insensitive substring match against the label OR any keyword. Empty query matches everything. */\nexport function defaultCommandFilter(item: CommandItem, query: string): boolean {\n const trimmed = query.trim().toLowerCase();\n if (!trimmed) return true;\n if (item.label.toLowerCase().includes(trimmed)) return true;\n return !!item.keywords?.some((k) => k.toLowerCase().includes(trimmed));\n}\n\nexport function filterCommandItems(\n items: readonly CommandItem[],\n query: string,\n filterFn: (item: CommandItem, query: string) => boolean = defaultCommandFilter\n): CommandItem[] {\n return items.filter((item) => filterFn(item, query));\n}\n\n/**\n * Partitions a flat, filtered item list into groups, in\n * first-encountered-group order, preserving each item's relative\n * order within its group. This is the actual RENDER order — the\n * React layer's keyboard navigation indexes into\n * `flattenGroups(groupCommandItems(...))`, not the original\n * `items`/filtered array, specifically so a consumer whose `items`\n * interleaves groups (not pre-sorted contiguously) still gets\n * correct up/down navigation that matches what's on screen.\n */\nexport function groupCommandItems(items: readonly CommandItem[]): CommandGroup[] {\n const groups: CommandGroup[] = [];\n const indexByKey = new Map<string | undefined, number>();\n\n for (const item of items) {\n const key = item.group;\n let index = indexByKey.get(key);\n if (index === undefined) {\n index = groups.length;\n indexByKey.set(key, index);\n groups.push({ group: key, items: [] });\n }\n groups[index].items.push(item);\n }\n return groups;\n}\n\nexport function flattenGroups(groups: readonly CommandGroup[]): CommandItem[] {\n return groups.flatMap((g) => g.items);\n}\n\n// --- id wiring ------------------------------------------------\n\nexport function makeInputId(baseId: string): string {\n return `${baseId}-input`;\n}\nexport function makeListId(baseId: string): string {\n return `${baseId}-list`;\n}\nfunction sanitizeValue(value: string): string {\n return value.replace(/[^a-zA-Z0-9_-]/g, \"_\");\n}\nexport function makeItemId(baseId: string, itemId: string): string {\n return `${baseId}-item-${sanitizeValue(itemId)}`;\n}\n\n// --- classes ------------------------------------------------------\n\nexport function getItemClasses(disabled: boolean, active: boolean): string {\n return [\"nx-command__item\", disabled && \"nx-command__item--disabled\", active && \"nx-command__item--active\"]\n .filter(Boolean)\n .join(\" \");\n}\n\n// --- ARIA -----------------------------------------------------\n\nexport function getPaletteAriaProps(label: string) {\n return { role: \"dialog\" as const, \"aria-modal\": true as const, \"aria-label\": label };\n}\n\nexport interface InputAriaInput {\n inputId: string;\n listId: string;\n activeItemId?: string;\n}\n\nexport function getInputAriaProps(input: InputAriaInput) {\n return {\n id: input.inputId,\n role: \"combobox\" as const,\n \"aria-autocomplete\": \"list\" as const,\n \"aria-expanded\": true as const,\n \"aria-controls\": input.listId,\n \"aria-activedescendant\": input.activeItemId,\n };\n}\n\nexport function getListAriaProps(listId: string, labelledBy: string) {\n return { role: \"listbox\" as const, id: listId, \"aria-labelledby\": labelledBy };\n}\n\nexport function getGroupAriaProps(label: string | undefined) {\n return { role: \"group\" as const, \"aria-label\": label };\n}\n\nexport function getItemAriaProps(itemId: string, disabled: boolean, active: boolean) {\n // aria-selected mirrors aria-activedescendant here — the item\n // currently referenced by the input's aria-activedescendant is\n // the one that should carry aria-selected=\"true\" (the ARIA 1.2\n // combobox+listbox relationship). There's no separate persisted\n // \"selection\" the way Select/Combobox have one — a command\n // palette's only notion of \"selected\" IS whichever item is\n // currently highlighted for execution.\n return { role: \"option\" as const, id: itemId, \"aria-disabled\": disabled || undefined, \"aria-selected\": active };\n}\n","import React, { forwardRef, useEffect, useId, useState } from \"react\";\nimport {\n resolveNumberInputState,\n getWrapperClasses,\n getInputClasses,\n getNumberInputAriaProps,\n clampNumber,\n stepNumber,\n canStepNumber,\n parseNumberText,\n isValidPartialNumberText,\n type NumberInputCoreProps,\n} from \"../core/number-input\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport \"./Field.css\";\nimport \"./NumberInput.css\";\n\n// ============================================================\n// NUMBER INPUT — React layer over core/number-input.ts (Category B).\n//\n// Mirrors Input.tsx's field markup (label/wrapper/helper text) and\n// Slider.tsx's controlled/uncontrolled split (`value !== undefined`\n// selects controlled mode, same as every other value-holding\n// component here). The one deliberate divergence from a plain\n// <input type=\"number\">: typing is tracked as free text and only\n// parsed/clamped/committed on blur, Enter, or a stepper click — not\n// on every keystroke. Clamping \"12\" to \"1\" the instant a user types\n// the first digit of \"125\" would make it impossible to type past a\n// bound while still typing toward a valid in-range number.\n// ============================================================\n\ninterface NumberInputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"color\" | \"value\" | \"defaultValue\" | \"onChange\" | \"type\">,\n Omit<NumberInputCoreProps, \"min\" | \"max\" | \"step\" | \"hideStepper\">,\n BaseComponentProps {\n min?: number;\n max?: number;\n step?: number;\n hideStepper?: boolean;\n value?: number;\n defaultValue?: number;\n /** Fires once a typed/stepped value is committed (blur, Enter, or a stepper click) — not on every keystroke. See the module comment for why. */\n onChange?: (value: number) => void;\n label?: string;\n helperText?: string;\n errorText?: string;\n}\n\nexport const NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(function NumberInput(\n {\n min,\n max,\n step,\n hideStepper,\n value,\n defaultValue,\n onChange,\n label,\n helperText,\n errorText,\n className,\n style,\n theme,\n color,\n size,\n disabled,\n required,\n error,\n id,\n \"aria-describedby\": describedByProp,\n ...rest\n },\n ref\n) {\n const uid = useId();\n const inputId = id ?? `nx-number-input-${uid}`;\n const isInvalid = error ?? !!errorText;\n const helperMessage = errorText ?? helperText;\n const descId = helperMessage ? `nx-number-input-desc-${uid}` : undefined;\n const describedBy = [describedByProp, descId].filter(Boolean).join(\" \") || undefined;\n\n const state = resolveNumberInputState({ min, max, step, hideStepper, disabled, required, error: isInvalid, size });\n\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<number>(defaultValue ?? state.min ?? 0);\n const currentValue = isControlled ? value! : internalValue;\n const [text, setText] = useState<string>(String(currentValue));\n\n // Resync the text box when the CONTROLLED value prop changes from\n // outside (the consumer's own state update) — not on every\n // internal commit, which already sets `text` itself. This is what\n // lets someone type \"12.\" without the trailing dot being stripped\n // after every keystroke (see module comment).\n useEffect(() => {\n if (isControlled) setText(String(value));\n }, [isControlled, value]);\n\n function commit(nextRaw: number) {\n const clamped = clampNumber(nextRaw, state.min, state.max);\n if (!isControlled) setInternalValue(clamped);\n setText(String(clamped));\n onChange?.(clamped);\n }\n\n function handleInputChange(e: React.ChangeEvent<HTMLInputElement>) {\n const raw = e.target.value;\n if (!isValidPartialNumberText(raw)) return;\n setText(raw);\n }\n\n function handleBlur() {\n if (state.isDisabled) return;\n commit(parseNumberText(text) ?? currentValue);\n }\n\n function handleStep(direction: 1 | -1) {\n if (state.isDisabled) return;\n const base = parseNumberText(text) ?? currentValue;\n commit(stepNumber(base, direction, state.step, state.min, state.max));\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (e.key === \"Enter\") {\n commit(parseNumberText(text) ?? currentValue);\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n handleStep(1);\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n handleStep(-1);\n }\n }\n\n const wrapperClasses = getWrapperClasses(state);\n const inputClasses = [getInputClasses(state), className].filter(Boolean).join(\" \");\n const aria = getNumberInputAriaProps(state, describedBy);\n\n const canIncrement = !state.isDisabled && canStepNumber(parseNumberText(text) ?? currentValue, 1, state.step, state.min, state.max);\n const canDecrement = !state.isDisabled && canStepNumber(parseNumberText(text) ?? currentValue, -1, state.step, state.min, state.max);\n\n const field = (\n <div className=\"nx-field\" style={style}>\n {label && (\n <label htmlFor={inputId} className=\"nx-field__label\">\n {label}\n {state.isRequired && (\n <span className=\"nx-field__required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n <div className={wrapperClasses}>\n <input\n ref={ref}\n id={inputId}\n type=\"text\"\n inputMode=\"decimal\"\n className={inputClasses}\n value={text}\n disabled={state.isDisabled}\n required={state.isRequired}\n onChange={handleInputChange}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n {...aria}\n {...rest}\n />\n {!state.hideStepper && (\n <span className=\"nx-number-input__stepper\">\n <button\n type=\"button\"\n className=\"nx-number-input__stepper-btn\"\n disabled={!canIncrement}\n onClick={() => handleStep(1)}\n aria-label=\"Increase value\"\n >\n +\n </button>\n <button\n type=\"button\"\n className=\"nx-number-input__stepper-btn\"\n disabled={!canDecrement}\n onClick={() => handleStep(-1)}\n aria-label=\"Decrease value\"\n >\n −\n </button>\n </span>\n )}\n </div>\n {helperMessage && (\n <span id={descId} className={`nx-field__helper${isInvalid ? \" nx-field__helper--error\" : \"\"}`}>\n {helperMessage}\n </span>\n )}\n </div>\n );\n\n return withThemeOverride(theme, withAccentOverride(color, field));\n});\n","import { resolveFieldState, getFieldAriaProps, type FieldProps, type FieldState } from \"./field\";\n\n// ============================================================\n// NUMBER INPUT — pure core (Category B).\n//\n// Composes core/field.ts for the shared disabled/required/error/\n// size shape (CONTRACT.md's \"decide the shape once\" principle),\n// same as Input/Textarea/Slider. The number-specific pieces —\n// clamping into [min, max] and stepping by a decimal-safe amount —\n// live here so they're unit-testable without React or a DOM.\n// ============================================================\n\nexport interface NumberInputCoreProps extends FieldProps {\n min?: number;\n max?: number;\n /** Amount +/- buttons and Arrow keys move by. Default 1. */\n step?: number;\n /** Hides the increment/decrement buttons, leaving a plain numeric field. Default false. */\n hideStepper?: boolean;\n}\n\nexport interface NumberInputState extends FieldState {\n min: number | undefined;\n max: number | undefined;\n step: number;\n hideStepper: boolean;\n}\n\nexport function resolveNumberInputState(props: NumberInputCoreProps): NumberInputState {\n return {\n ...resolveFieldState(props),\n min: props.min,\n max: props.max,\n // ?? not || (CONTRACT.md Rule 3) — step={0} would be nonsensical\n // but shouldn't be silently rewritten if a caller ever passes it.\n step: props.step ?? 1,\n hideStepper: props.hideStepper ?? false,\n };\n}\n\n/** Clamps into [min, max] — either bound may be absent (no limit on that side). */\nexport function clampNumber(value: number, min?: number, max?: number): number {\n let v = value;\n if (min !== undefined) v = Math.max(v, min);\n if (max !== undefined) v = Math.min(v, max);\n return v;\n}\n\n/** How many decimal places `step` itself has, e.g. 0.25 -> 2. Used to round away floating-point drift (0.1 + 0.2 !== 0.3) after stepping. */\nfunction decimalPlaces(step: number): number {\n const s = String(step);\n const i = s.indexOf(\".\");\n return i === -1 ? 0 : s.length - i - 1;\n}\n\n/** current +/- one `step`, rounded to step's own precision, then clamped into [min, max]. */\nexport function stepNumber(current: number, direction: 1 | -1, step: number, min?: number, max?: number): number {\n const decimals = decimalPlaces(step);\n const raw = current + direction * step;\n const rounded = Number(raw.toFixed(decimals));\n return clampNumber(rounded, min, max);\n}\n\n/** Whether stepping in `direction` would actually move the value (false right at a bound — used to disable the +/- buttons there). */\nexport function canStepNumber(current: number, direction: 1 | -1, step: number, min?: number, max?: number): boolean {\n return stepNumber(current, direction, step, min, max) !== current;\n}\n\n/** Parses free-typed text into a number, or null for empty/incomplete/invalid input (e.g. \"\", \"-\", \".\", \"12.\"'s trailing dot is fine — Number(\"12.\") is 12). Kept separate from clamping: typing shouldn't be clamped keystroke-by-keystroke, only on commit. */\nexport function parseNumberText(raw: string): number | null {\n const trimmed = raw.trim();\n if (trimmed === \"\" || trimmed === \"-\" || trimmed === \".\" || trimmed === \"-.\") return null;\n const n = Number(trimmed);\n return Number.isNaN(n) ? null : n;\n}\n\n/** Characters allowed while typing (optional leading \"-\", digits, at most one \".\"). Rejecting anything else keystroke-by-keystroke is what lets the field stay type=\"text\" (full control over formatting) while still behaving like a numeric field. */\nexport function isValidPartialNumberText(raw: string): boolean {\n return /^-?\\d*\\.?\\d*$/.test(raw);\n}\n\nexport function getWrapperClasses(state: NumberInputState): string {\n return [\n \"nx-number-input-wrapper\",\n `nx-number-input-wrapper--${state.size}`,\n state.isDisabled && \"nx-number-input-wrapper--disabled\",\n state.isInvalid && \"nx-number-input-wrapper--invalid\",\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\nexport function getInputClasses(state: NumberInputState): string {\n return [\"nx-number-input\", `nx-number-input--${state.size}`].filter(Boolean).join(\" \");\n}\n\nexport function getNumberInputAriaProps(state: NumberInputState, describedBy?: string) {\n return getFieldAriaProps(state, describedBy);\n}\n","import React, { forwardRef, useId, useRef, useState } from \"react\";\nimport {\n resolveFileUploadState,\n classifyFiles,\n formatFileSize,\n getRootClasses,\n getFileUploadAriaProps,\n type FileUploadCoreProps,\n type FileVerdict,\n} from \"../core/file-upload\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport { Button } from \"./Button\";\nimport \"./Field.css\";\nimport \"./FileUpload.css\";\n\n// ============================================================\n// FILE UPLOAD — React layer over core/file-upload.ts (Category B).\n//\n// Composes the real Button component for the \"Browse\" trigger\n// (CONTRACT.md Rule 12 — a hand-styled <button> here would be a\n// second, drifting implementation of what Button already is; see\n// BUILDING-COMPONENTS.md's own note flagging FileUpload's internal\n// trigger button as a Rule 12 case). The dropzone itself is a plain\n// <div> (not a <label>) specifically so Button stays a real,\n// separately-focusable control rather than being nested inside one.\n//\n// Ref forwarding targets the hidden native <input type=\"file\"> —\n// the same convention Input/Textarea use — since that's the actual\n// form-registrable element a consumer's form library needs.\n// ============================================================\n\nexport interface FileUploadRejection {\n file: File;\n reason: Exclude<FileVerdict, \"ok\">;\n}\n\ninterface FileUploadProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"color\" | \"value\" | \"defaultValue\" | \"onChange\" | \"type\">,\n Omit<FileUploadCoreProps, \"accept\" | \"multiple\" | \"maxSizeBytes\">,\n BaseComponentProps {\n accept?: string;\n multiple?: boolean;\n maxSizeBytes?: number;\n /** Controlled file list. */\n files?: File[];\n defaultFiles?: File[];\n onFilesChange?: (files: File[]) => void;\n /** Files that failed the accept/size check — never added to the list, reported here instead. */\n onFilesRejected?: (rejected: FileUploadRejection[]) => void;\n label?: string;\n helperText?: string;\n errorText?: string;\n /** Replaces the default \"drag and drop / Browse\" prompt entirely. */\n children?: React.ReactNode;\n}\n\nfunction mergeRefs<T>(...refs: Array<React.Ref<T> | null | undefined>) {\n return (value: T | null) => {\n for (const ref of refs) {\n if (!ref) continue;\n if (typeof ref === \"function\") ref(value);\n else (ref as React.MutableRefObject<T | null>).current = value;\n }\n };\n}\n\nexport const FileUpload = forwardRef<HTMLInputElement, FileUploadProps>(function FileUpload(\n {\n accept,\n multiple,\n maxSizeBytes,\n files,\n defaultFiles,\n onFilesChange,\n onFilesRejected,\n label,\n helperText,\n errorText,\n children,\n className,\n style,\n theme,\n color,\n size,\n disabled,\n required,\n error,\n id,\n \"aria-describedby\": describedByProp,\n ...rest\n },\n forwardedRef\n) {\n const uid = useId();\n const inputId = id ?? `nx-file-upload-${uid}`;\n const isInvalid = error ?? !!errorText;\n const helperMessage = errorText ?? helperText;\n const descId = helperMessage ? `nx-file-upload-desc-${uid}` : undefined;\n const describedBy = [describedByProp, descId].filter(Boolean).join(\" \") || undefined;\n\n const state = resolveFileUploadState({ accept, multiple, maxSizeBytes, disabled, required, error: isInvalid, size });\n\n const isControlled = files !== undefined;\n const [internalFiles, setInternalFiles] = useState<File[]>(defaultFiles ?? []);\n const currentFiles = isControlled ? files! : internalFiles;\n const [isDragging, setIsDragging] = useState(false);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n function commitFiles(next: File[]) {\n if (!isControlled) setInternalFiles(next);\n onFilesChange?.(next);\n }\n\n function processFileList(list: FileList | null) {\n if (!list || state.isDisabled) return;\n const incoming = Array.from(list);\n const verdicts = classifyFiles(incoming, state.accept, state.maxSizeBytes);\n\n const accepted: File[] = [];\n const rejected: FileUploadRejection[] = [];\n incoming.forEach((file, i) => {\n const verdict = verdicts[i];\n if (verdict === \"ok\") accepted.push(file);\n else rejected.push({ file, reason: verdict });\n });\n\n if (accepted.length > 0) {\n const next = state.multiple ? [...currentFiles, ...accepted] : accepted.slice(0, 1);\n commitFiles(next);\n }\n if (rejected.length > 0) onFilesRejected?.(rejected);\n }\n\n function handleInputChange(e: React.ChangeEvent<HTMLInputElement>) {\n processFileList(e.target.files);\n // Reset so selecting the exact same file again still fires onChange.\n e.target.value = \"\";\n }\n\n function handleDrop(e: React.DragEvent<HTMLDivElement>) {\n e.preventDefault();\n setIsDragging(false);\n if (state.isDisabled) return;\n processFileList(e.dataTransfer.files);\n }\n\n function handleDragOver(e: React.DragEvent<HTMLDivElement>) {\n e.preventDefault();\n if (!state.isDisabled) setIsDragging(true);\n }\n\n function handleDragLeave() {\n setIsDragging(false);\n }\n\n function removeFile(index: number) {\n commitFiles(currentFiles.filter((_, i) => i !== index));\n }\n\n const aria = getFileUploadAriaProps(state, describedBy);\n\n const field = (\n <div className=\"nx-field\" style={style}>\n {label && (\n <label htmlFor={inputId} className=\"nx-field__label\">\n {label}\n {state.isRequired && (\n <span className=\"nx-field__required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n <div\n className={getRootClasses(state, isDragging, className)}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n >\n <input\n ref={mergeRefs(inputRef, forwardedRef)}\n id={inputId}\n type=\"file\"\n className=\"nx-file-upload__input\"\n accept={state.accept}\n multiple={state.multiple}\n disabled={state.isDisabled}\n required={state.isRequired}\n onChange={handleInputChange}\n {...aria}\n {...rest}\n />\n {children ?? (\n <div className=\"nx-file-upload__prompt\">\n <p className=\"nx-file-upload__hint\">\n Drag and drop {state.multiple ? \"files\" : \"a file\"} here, or\n </p>\n <Button\n type=\"button\"\n size={state.size}\n variant=\"outline\"\n disabled={state.isDisabled}\n onClick={() => inputRef.current?.click()}\n >\n Browse\n </Button>\n </div>\n )}\n </div>\n {currentFiles.length > 0 && (\n <ul className=\"nx-file-upload__list\">\n {currentFiles.map((file, index) => (\n <li key={`${file.name}-${file.size}-${index}`} className=\"nx-file-upload__item\">\n <span className=\"nx-file-upload__item-name\">{file.name}</span>\n <span className=\"nx-file-upload__item-size\">{formatFileSize(file.size)}</span>\n <button\n type=\"button\"\n className=\"nx-file-upload__item-remove\"\n onClick={() => removeFile(index)}\n disabled={state.isDisabled}\n aria-label={`Remove ${file.name}`}\n >\n ×\n </button>\n </li>\n ))}\n </ul>\n )}\n {helperMessage && (\n <span id={descId} className={`nx-field__helper${isInvalid ? \" nx-field__helper--error\" : \"\"}`}>\n {helperMessage}\n </span>\n )}\n </div>\n );\n\n return withThemeOverride(theme, withAccentOverride(color, field));\n});\n","import { resolveFieldState, getFieldAriaProps, type FieldProps, type FieldState } from \"./field\";\n\n// ============================================================\n// FILE UPLOAD — pure core (Category B).\n//\n// Same field shape every other Category B component shares\n// (core/field.ts). The file-specific pieces — deciding whether a\n// file is acceptable and formatting a byte count for display — are\n// pure functions operating on plain {name, type, size} shapes\n// rather than the real DOM File type, so they're unit-testable\n// without constructing actual File objects (tests/file-upload.test.tsx\n// still exercises real Files at the component level; this layer is\n// the framework/DOM-free half).\n// ============================================================\n\nexport interface FileUploadCoreProps extends FieldProps {\n /** Same syntax as the native <input accept>: comma-separated extensions (\".png\"), MIME types (\"image/png\"), or MIME wildcards (\"image/*\"). Undefined accepts anything. */\n accept?: string;\n multiple?: boolean;\n /** Files larger than this are rejected. Undefined means no limit. */\n maxSizeBytes?: number;\n}\n\nexport interface FileUploadState extends FieldState {\n accept: string | undefined;\n multiple: boolean;\n maxSizeBytes: number | undefined;\n}\n\nexport function resolveFileUploadState(props: FileUploadCoreProps): FileUploadState {\n return {\n ...resolveFieldState(props),\n accept: props.accept,\n multiple: props.multiple ?? false,\n maxSizeBytes: props.maxSizeBytes,\n };\n}\n\nexport interface FileLike {\n name: string;\n type: string;\n size: number;\n}\n\n/** Whether a file matches an `accept` pattern list. No `accept` means everything is accepted. */\nexport function isFileAccepted(file: Pick<FileLike, \"name\" | \"type\">, accept?: string): boolean {\n if (!accept) return true;\n const patterns = accept\n .split(\",\")\n .map((p) => p.trim())\n .filter(Boolean);\n if (patterns.length === 0) return true;\n\n const extension = \".\" + (file.name.split(\".\").pop() ?? \"\").toLowerCase();\n return patterns.some((pattern) => {\n if (pattern.startsWith(\".\")) return pattern.toLowerCase() === extension;\n if (pattern.endsWith(\"/*\")) return file.type.startsWith(pattern.slice(0, -1));\n return file.type === pattern;\n });\n}\n\nexport type FileVerdict = \"ok\" | \"type\" | \"size\";\n\n/**\n * One verdict per input file, index-aligned with the input array, so\n * the React layer can partition accepted vs. rejected files (and\n * report *why* each rejected one failed) without re-deriving the\n * accept/size logic itself.\n */\nexport function classifyFiles(files: readonly FileLike[], accept?: string, maxSizeBytes?: number): FileVerdict[] {\n return files.map((file) => {\n if (!isFileAccepted(file, accept)) return \"type\";\n if (maxSizeBytes !== undefined && file.size > maxSizeBytes) return \"size\";\n return \"ok\";\n });\n}\n\n/** Formats a byte count for display, e.g. 1536 -> \"1.5 KB\". */\nexport function formatFileSize(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n const units = [\"KB\", \"MB\", \"GB\", \"TB\"];\n let value = bytes / 1024;\n let unitIndex = 0;\n while (value >= 1024 && unitIndex < units.length - 1) {\n value /= 1024;\n unitIndex++;\n }\n return `${value.toFixed(value < 10 ? 1 : 0)} ${units[unitIndex]}`;\n}\n\nexport function getRootClasses(state: FileUploadState, isDragging: boolean, className?: string): string {\n return [\n \"nx-file-upload\",\n `nx-file-upload--${state.size}`,\n state.isDisabled && \"nx-file-upload--disabled\",\n state.isInvalid && \"nx-file-upload--invalid\",\n isDragging && \"nx-file-upload--dragging\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\nexport function getFileUploadAriaProps(state: FileUploadState, describedBy?: string) {\n return getFieldAriaProps(state, describedBy);\n}\n","import React, { forwardRef, useCallback, useState } from \"react\";\nimport {\n resolvePaginationState,\n getPaginationRange,\n clampPage,\n getRootClasses,\n getItemClasses,\n getNavAriaProps,\n getPageButtonAriaProps,\n type PaginationCoreProps,\n} from \"../core/pagination\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport \"./Pagination.css\";\n\n// ============================================================\n// PAGINATION — React layer over core/pagination.ts (Category E).\n//\n// Controlled/uncontrolled follows the same shape as every other\n// value-holding component (`page !== undefined` selects controlled\n// mode — see Slider.tsx, NumberInput.tsx). No portal, no overlay\n// behavior needed (BUILDING-COMPONENTS.md's Category E table: ❌ on\n// both for Breadcrumb/Pagination specifically) — this is plain\n// in-flow navigation, so native Tab order across the page buttons is\n// the right keyboard model rather than Tabs/Accordion's roving\n// tabindex (that pattern is for a *single* widget where only one\n// item should be in the tab order at a time; a pager's buttons are\n// each independently useful stops, the same way a native browser\n// pagination control's links are).\n// ============================================================\n\ninterface PaginationProps extends PaginationCoreProps, BaseComponentProps {\n page?: number;\n defaultPage?: number;\n onPageChange?: (page: number) => void;\n /** Accessible label for the <nav>. Default \"Pagination\". */\n \"aria-label\"?: string;\n id?: string;\n}\n\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(function Pagination(\n { page, defaultPage, onPageChange, className, style, theme, color, id, \"aria-label\": ariaLabel, ...rest },\n forwardedRef\n) {\n const state = resolvePaginationState(rest);\n\n const isControlled = page !== undefined;\n const [internalPage, setInternalPage] = useState(clampPage(defaultPage ?? 1, state.totalPages));\n const currentPage = clampPage(isControlled ? page! : internalPage, state.totalPages);\n\n const goTo = useCallback(\n (next: number) => {\n if (state.isDisabled) return;\n const clamped = clampPage(next, state.totalPages);\n if (clamped === currentPage) return;\n if (!isControlled) setInternalPage(clamped);\n onPageChange?.(clamped);\n },\n [state.isDisabled, state.totalPages, currentPage, isControlled, onPageChange]\n );\n\n const items = getPaginationRange(currentPage, state.totalPages, state.siblingCount, state.boundaryCount);\n const navAria = getNavAriaProps(ariaLabel);\n const isFirst = currentPage <= 1;\n const isLast = currentPage >= state.totalPages;\n\n const nav = (\n <nav ref={forwardedRef} id={id} className={getRootClasses(state, className)} style={style} {...navAria}>\n <ul className=\"nx-pagination__list\">\n {state.showFirstLast && (\n <li>\n <button\n type=\"button\"\n className={getItemClasses(false, state.isDisabled || isFirst)}\n disabled={state.isDisabled || isFirst}\n onClick={() => goTo(1)}\n aria-label=\"Go to first page\"\n >\n «\n </button>\n </li>\n )}\n {state.showPrevNext && (\n <li>\n <button\n type=\"button\"\n className={getItemClasses(false, state.isDisabled || isFirst)}\n disabled={state.isDisabled || isFirst}\n onClick={() => goTo(currentPage - 1)}\n aria-label=\"Go to previous page\"\n >\n ‹\n </button>\n </li>\n )}\n {items.map((item, index) =>\n item === \"ellipsis\" ? (\n <li key={`ellipsis-${index}`} className=\"nx-pagination__ellipsis\" aria-hidden=\"true\">\n …\n </li>\n ) : (\n <li key={item}>\n <button\n type=\"button\"\n className={getItemClasses(item === currentPage, state.isDisabled)}\n disabled={state.isDisabled}\n onClick={() => goTo(item)}\n {...getPageButtonAriaProps(item, item === currentPage)}\n >\n {item}\n </button>\n </li>\n )\n )}\n {state.showPrevNext && (\n <li>\n <button\n type=\"button\"\n className={getItemClasses(false, state.isDisabled || isLast)}\n disabled={state.isDisabled || isLast}\n onClick={() => goTo(currentPage + 1)}\n aria-label=\"Go to next page\"\n >\n ›\n </button>\n </li>\n )}\n {state.showFirstLast && (\n <li>\n <button\n type=\"button\"\n className={getItemClasses(false, state.isDisabled || isLast)}\n disabled={state.isDisabled || isLast}\n onClick={() => goTo(state.totalPages)}\n aria-label=\"Go to last page\"\n >\n »\n </button>\n </li>\n )}\n </ul>\n </nav>\n );\n\n return withThemeOverride(theme, withAccentOverride(color, nav));\n});\n","import type { Size } from \"./types\";\n\n// ============================================================\n// PAGINATION — pure core (Category E: navigation/structural).\n//\n// The one genuinely tricky piece — which page numbers to show and\n// where the \"…\" gaps go as the total grows — is a pure function of\n// (currentPage, totalPages, siblingCount, boundaryCount) with no\n// DOM or React involved, so the windowing math is fully\n// unit-testable (tests/pagination.test.ts) the same way\n// core/floating.ts's placement math and core/collection.ts's index\n// math are. The React layer (react/Pagination.tsx) only turns the\n// resulting list into buttons.\n// ============================================================\n\nexport type PaginationItem = number | \"ellipsis\";\n\nexport interface PaginationCoreProps {\n totalPages: number;\n /** How many page numbers show on each side of the current page. Default 1. */\n siblingCount?: number;\n /** How many page numbers are always pinned at the start and end. Default 1. */\n boundaryCount?: number;\n size?: Size;\n disabled?: boolean;\n /** Renders \"first page\" / \"last page\" jump buttons. Default false. */\n showFirstLast?: boolean;\n /** Renders previous/next buttons. Default true. */\n showPrevNext?: boolean;\n}\n\nexport interface PaginationState {\n totalPages: number;\n siblingCount: number;\n boundaryCount: number;\n size: Size;\n isDisabled: boolean;\n showFirstLast: boolean;\n showPrevNext: boolean;\n}\n\nexport function resolvePaginationState(props: PaginationCoreProps): PaginationState {\n return {\n totalPages: Math.max(0, Math.floor(props.totalPages ?? 0)),\n siblingCount: props.siblingCount ?? 1,\n boundaryCount: props.boundaryCount ?? 1,\n size: props.size ?? \"md\",\n isDisabled: props.disabled ?? false,\n showFirstLast: props.showFirstLast ?? false,\n showPrevNext: props.showPrevNext ?? true,\n };\n}\n\n/** Clamps a page number into [1, totalPages]; totalPages <= 0 always clamps to 1 (nothing to paginate, but never NaN/0). */\nexport function clampPage(page: number, totalPages: number): number {\n if (totalPages <= 0) return 1;\n return Math.min(Math.max(Math.floor(page), 1), Math.floor(totalPages));\n}\n\nfunction range(start: number, end: number): number[] {\n if (end < start) return [];\n const out: number[] = [];\n for (let i = start; i <= end; i++) out.push(i);\n return out;\n}\n\n/**\n * Computes the page numbers (and \"ellipsis\" gaps) to render. Always\n * keeps `boundaryCount` pages pinned at each end and `siblingCount`\n * pages around the current one; collapses everything else into a\n * single \"…\" per side once there's more than a one-page gap to\n * collapse (a gap of exactly one page is filled with the real\n * number instead — a lone \"…\" standing in for one page looks like a\n * bug, not a shortcut).\n */\nexport function getPaginationRange(\n currentPage: number,\n totalPages: number,\n siblingCount = 1,\n boundaryCount = 1\n): PaginationItem[] {\n const total = Math.max(0, Math.floor(totalPages));\n if (total <= 0) return [];\n const current = clampPage(currentPage, total);\n\n // Smallest total that can be shown in full without ever needing an\n // ellipsis: both boundaries + both sibling windows + the current\n // page + one page of slack on each side (where an ellipsis would\n // otherwise sit).\n const totalPageNumbers = boundaryCount * 2 + siblingCount * 2 + 3;\n if (total <= totalPageNumbers) {\n return range(1, total);\n }\n\n const leftSiblingIndex = Math.max(current - siblingCount, boundaryCount + 2);\n const rightSiblingIndex = Math.min(current + siblingCount, total - boundaryCount - 1);\n\n const showLeftEllipsis = leftSiblingIndex > boundaryCount + 2;\n const showRightEllipsis = rightSiblingIndex < total - boundaryCount - 1;\n\n const items: PaginationItem[] = [];\n items.push(...range(1, boundaryCount));\n\n if (showLeftEllipsis) {\n items.push(\"ellipsis\");\n } else {\n items.push(...range(boundaryCount + 1, leftSiblingIndex - 1));\n }\n\n items.push(...range(leftSiblingIndex, rightSiblingIndex));\n\n if (showRightEllipsis) {\n items.push(\"ellipsis\");\n } else {\n items.push(...range(rightSiblingIndex + 1, total - boundaryCount));\n }\n\n items.push(...range(total - boundaryCount + 1, total));\n\n return items;\n}\n\nexport function getRootClasses(state: PaginationState, className?: string): string {\n return [\n \"nx-pagination\",\n `nx-pagination--${state.size}`,\n state.isDisabled && \"nx-pagination--disabled\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\nexport function getItemClasses(isActive: boolean, isDisabled: boolean): string {\n return [\n \"nx-pagination__item\",\n isActive && \"nx-pagination__item--active\",\n isDisabled && \"nx-pagination__item--disabled\",\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\nexport function getNavAriaProps(label = \"Pagination\") {\n return { \"aria-label\": label };\n}\n\nexport function getPageButtonAriaProps(page: number, isActive: boolean) {\n return {\n \"aria-label\": `Go to page ${page}`,\n \"aria-current\": isActive ? (\"page\" as const) : undefined,\n };\n}\n","import React, { forwardRef } from \"react\";\nimport {\n resolveBreadcrumbState,\n collapseBreadcrumbIndices,\n getRootClasses,\n getListClasses,\n getItemClasses,\n getNavAriaProps,\n getCurrentItemAriaProps,\n type BreadcrumbCoreProps,\n} from \"../core/breadcrumb\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport \"./Breadcrumb.css\";\n\n// ============================================================\n// BREADCRUMB — React layer over core/breadcrumb.ts (Category E).\n//\n// Same reasoning as Pagination.tsx for why there's no roving\n// tabindex here: WAI-ARIA's breadcrumb pattern is just a labeled\n// <nav><ol> of real links in normal tab order, not a widget with a\n// single active item the way Tabs is. The one required ARIA piece —\n// aria-current=\"page\" on the trail's last item — comes from\n// core/breadcrumb.ts's getCurrentItemAriaProps.\n// ============================================================\n\nexport interface BreadcrumbItem {\n label: React.ReactNode;\n href?: string;\n onClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n disabled?: boolean;\n /** Anything renderable, same philosophy as Button's iconLeft/iconRight — not inspected or cloned, just rendered in a slot. */\n icon?: React.ReactNode;\n}\n\ninterface BreadcrumbProps extends BreadcrumbCoreProps, BaseComponentProps {\n items: BreadcrumbItem[];\n /** Rendered between items. Default \"/\". */\n separator?: React.ReactNode;\n /** Collapses a long trail to the first item + the last `maxItems - 1` items, with a \"…\" between. Undefined shows every item. */\n maxItems?: number;\n id?: string;\n}\n\nexport const Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>(function Breadcrumb(\n { items, separator = \"/\", maxItems, className, style, theme, color, id, size, ...rest },\n forwardedRef\n) {\n const state = resolveBreadcrumbState({ size });\n const navAria = getNavAriaProps();\n const slots = collapseBreadcrumbIndices(items.length, maxItems);\n\n const nav = (\n <nav\n ref={forwardedRef}\n id={id}\n className={getRootClasses(state, className)}\n style={style}\n {...navAria}\n {...rest}\n >\n <ol className={getListClasses()}>\n {slots.map((slot, position) => {\n if (slot === \"ellipsis\") {\n return (\n <li\n key={`ellipsis-${position}`}\n className=\"nx-breadcrumb__item nx-breadcrumb__item--ellipsis\"\n >\n <span aria-hidden=\"true\">…</span>\n <span className=\"nx-breadcrumb__separator\" aria-hidden=\"true\">\n {separator}\n </span>\n </li>\n );\n }\n\n const item = items[slot];\n const isCurrent = slot === items.length - 1;\n const isLastSlot = position === slots.length - 1;\n const currentAria = getCurrentItemAriaProps(isCurrent);\n\n return (\n <li key={slot} className={getItemClasses(isCurrent, !!item.disabled)} {...currentAria}>\n {item.disabled || isCurrent ? (\n <span className=\"nx-breadcrumb__label\">\n {item.icon && <span className=\"nx-breadcrumb__icon\">{item.icon}</span>}\n {item.label}\n </span>\n ) : (\n <a className=\"nx-breadcrumb__link\" href={item.href} onClick={item.onClick}>\n {item.icon && <span className=\"nx-breadcrumb__icon\">{item.icon}</span>}\n {item.label}\n </a>\n )}\n {!isLastSlot && (\n <span className=\"nx-breadcrumb__separator\" aria-hidden=\"true\">\n {separator}\n </span>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n\n return withThemeOverride(theme, withAccentOverride(color, nav));\n});\n","import type { Size } from \"./types\";\n\n// ============================================================\n// BREADCRUMB — pure core (Category E: navigation/structural).\n//\n// Deliberately doesn't model the item list's shape here (label,\n// href, icon — all React-facing concerns like ReactNode content\n// live in react/Breadcrumb.tsx's own prop type, same split\n// core/tabs.ts uses for id wiring vs. react/Tabs.tsx's actual\n// content). What's genuinely framework-agnostic — which index is\n// \"current\", and which indices survive collapsing when the trail is\n// longer than `maxItems` — is pure index arithmetic and lives here,\n// unit-tested without React or a DOM.\n// ============================================================\n\nexport interface BreadcrumbCoreProps {\n size?: Size;\n}\n\nexport interface BreadcrumbState {\n size: Size;\n}\n\nexport function resolveBreadcrumbState(props: BreadcrumbCoreProps): BreadcrumbState {\n return { size: props.size ?? \"md\" };\n}\n\nfunction range(start: number, end: number): number[] {\n if (end < start) return [];\n const out: number[] = [];\n for (let i = start; i <= end; i++) out.push(i);\n return out;\n}\n\nexport type BreadcrumbSlot = number | \"ellipsis\";\n\n/**\n * Which item indices to render, and where the \"…\" collapse point\n * goes, when the trail is longer than `maxItems`. Keeps the first\n * item (the root, e.g. \"Home\") and the last `maxItems - 1` items\n * (the path closest to the current page) — the standard breadcrumb\n * collapse shape. `maxItems` undefined, or a total that already\n * fits, returns every index with no collapsing.\n */\nexport function collapseBreadcrumbIndices(total: number, maxItems?: number): BreadcrumbSlot[] {\n if (total <= 0) return [];\n if (maxItems === undefined || total <= maxItems || maxItems < 2) {\n return range(0, total - 1);\n }\n const tailCount = maxItems - 1;\n const tailStart = total - tailCount;\n return [0, \"ellipsis\", ...range(tailStart, total - 1)];\n}\n\nexport function isLastIndex(index: number, total: number): boolean {\n return index === total - 1;\n}\n\nexport function getRootClasses(state: BreadcrumbState, className?: string): string {\n return [\"nx-breadcrumb\", `nx-breadcrumb--${state.size}`, className].filter(Boolean).join(\" \");\n}\n\nexport function getListClasses(): string {\n return \"nx-breadcrumb__list\";\n}\n\nexport function getItemClasses(isCurrent: boolean, isDisabled: boolean): string {\n return [\n \"nx-breadcrumb__item\",\n isCurrent && \"nx-breadcrumb__item--current\",\n isDisabled && \"nx-breadcrumb__item--disabled\",\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\nexport function getNavAriaProps(label = \"Breadcrumb\") {\n return { \"aria-label\": label };\n}\n\n/** aria-current=\"page\" on the trail's final item — the WAI-ARIA breadcrumb pattern's one required state attribute. */\nexport function getCurrentItemAriaProps(isCurrent: boolean) {\n return isCurrent ? { \"aria-current\": \"page\" as const } : {};\n}\n","import React, { forwardRef } from \"react\";\nimport {\n resolveSkeletonState,\n getSkeletonClasses,\n getSkeletonRadiusStyle,\n type SkeletonCoreProps,\n} from \"../core/skeleton\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport \"./Skeleton.css\";\n\n// ============================================================\n// SKELETON — React layer over core/skeleton.ts (Category A).\n//\n// Purely decorative — aria-hidden=\"true\" on every rendered node, so\n// assistive tech skips straight past a loading placeholder instead\n// of announcing something meaningless. Ref forwarding still applies\n// (Category A's rule per CONTRACT.md Rule 4: Badge/Avatar/Card\n// forward, only genuine layout-only exceptions like Divider don't) —\n// Skeleton renders a real DOM node a consumer might measure.\n// ============================================================\n\ninterface SkeletonProps extends SkeletonCoreProps, BaseComponentProps {\n width?: number | string;\n height?: number | string;\n /** Stacks this many lines when variant=\"text\" and no explicit height is set (the last line renders narrower, matching how paragraph placeholders usually taper). Default 1. */\n lines?: number;\n}\n\nexport const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(function Skeleton(\n { variant, animation, radius, width, height, lines = 1, className, style, theme, color, ...rest },\n ref\n) {\n const state = resolveSkeletonState({ variant, animation, radius });\n const classes = getSkeletonClasses(state, className);\n const radiusStyle = getSkeletonRadiusStyle(state);\n\n let skeleton: React.ReactElement;\n\n if (state.variant === \"text\" && lines > 1 && height === undefined) {\n skeleton = (\n <div ref={ref} className=\"nx-skeleton-group\" style={style} aria-hidden=\"true\" {...rest}>\n {Array.from({ length: lines }).map((_, i) => (\n <div\n key={i}\n className={classes}\n style={{\n width: i === lines - 1 ? \"70%\" : (width ?? \"100%\"),\n borderRadius: radiusStyle,\n }}\n />\n ))}\n </div>\n );\n } else {\n skeleton = (\n <div\n ref={ref}\n className={classes}\n style={{ ...style, width, height, borderRadius: radiusStyle }}\n aria-hidden=\"true\"\n {...rest}\n />\n );\n }\n\n return withThemeOverride(theme, withAccentOverride(color, skeleton));\n});\n","// ============================================================\n// SKELETON — pure core (Category A: static/display primitive).\n//\n// The simplest of the five: no controlled value, no ARIA state\n// beyond aria-hidden (a skeleton is decorative — assistive tech\n// should skip straight past it, not announce a meaningless\n// placeholder). Still gets the full core/react/css/test split per\n// BUILDING-COMPONENTS.md's universal build order — \"resist the urge\n// to inline the logic directly in the .tsx file. It costs nothing\n// today and is what makes a future Vue port free.\"\n// ============================================================\n\nexport type SkeletonVariant = \"text\" | \"circular\" | \"rectangular\";\n// Started at 2 (pulse, wave/shimmer). Expanded to 4 on request for\n// more variety — same bar as Spinner's variant expansion: each\n// addition has to be a genuinely different motion, not a\n// near-duplicate. \"shine\" is a diagonal glossy sweep baked into the\n// element's own background (distinct from \"wave\"'s horizontal\n// overlay translate); \"glow\" is a pulsing ambient shadow around the\n// shape's edge (distinct from \"pulse\"'s opacity fade — the shape\n// itself never dims, only the halo around it breathes).\nexport type SkeletonAnimation = \"pulse\" | \"wave\" | \"shine\" | \"glow\" | \"none\";\n\nexport interface SkeletonCoreProps {\n variant?: SkeletonVariant;\n animation?: SkeletonAnimation;\n /**\n * Category-A-specific radius override (BUILDING-COMPONENTS.md's\n * Category A note: \"radius as an extra override prop... display\n * primitives are the case where overriding a single shape\n * property without a full theme override makes sense\"). Only\n * meaningful for \"rectangular\" — \"circular\" always renders fully\n * round and \"text\" uses a small fixed radius regardless, the same\n * way Card's radius prop only affects Card's own corners.\n */\n radius?: string;\n}\n\nexport interface SkeletonState {\n variant: SkeletonVariant;\n animation: SkeletonAnimation;\n radius: string | undefined;\n}\n\nexport function resolveSkeletonState(props: SkeletonCoreProps): SkeletonState {\n return {\n variant: props.variant ?? \"text\",\n animation: props.animation ?? \"pulse\",\n radius: props.radius,\n };\n}\n\nexport function getSkeletonClasses(state: SkeletonState, className?: string): string {\n return [\n \"nx-skeleton\",\n `nx-skeleton--${state.variant}`,\n state.animation !== \"none\" && `nx-skeleton--${state.animation}`,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\n/** The radius inline-style override, if one was given — kept as its own function so \"does this state produce a radius override\" is directly testable rather than embedded in JSX. */\nexport function getSkeletonRadiusStyle(state: SkeletonState): string | undefined {\n return state.radius;\n}\n","import React, { forwardRef } from \"react\";\nimport {\n resolveTableState,\n getWrapperClasses,\n getTableClasses,\n getRowClasses,\n getHeadCellClasses,\n getCellClasses,\n getSortAriaProps,\n type TableCoreProps,\n type SortDirection,\n} from \"../core/table\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport \"./Table.css\";\n\n// ============================================================\n// TABLE — React layer over core/table.ts (Category F).\n//\n// Decomposed on paper first, per BUILDING-COMPONENTS.md's Category F\n// guidance: Table (wrapper + <table>), TableHeader (<thead>),\n// TableBody (<tbody>), TableRow (<tr>), TableHead (<th>, sortable),\n// TableCell (<td>), TableCaption (<caption>) — seven small pieces\n// instead of one component juggling all of it.\n//\n// No selection state lives here at all. A \"select all\" or per-row\n// checkbox is just a real Checkbox (Rule 12) placed in a TableCell/\n// TableHead like any other cell content — the consumer owns that\n// state themselves, the same way they own sort state (below). Table\n// doesn't import Checkbox; see the docs page for how the two compose.\n//\n// Sorting follows the same controlled shape as Input/Slider/\n// NumberInput: TableHead's `sortDirection` is a prop, not internal\n// state, and `onSort` just tells the consumer \"this column was\n// activated\" — core/table.ts's getNextSortDirection is there so the\n// consumer's handler doesn't reinvent the standard asc → desc →\n// unsorted cycle.\n// ============================================================\n\n// ---- Table (root) ------------------------------------------------\n\ninterface TableProps extends TableCoreProps, BaseComponentProps {\n children?: React.ReactNode;\n /** Caps the wrapper's height (enables vertical scroll, and gives stickyHeader something to stick within). Any CSS length. */\n maxHeight?: number | string;\n}\n\nexport const Table = forwardRef<HTMLTableElement, TableProps>(function Table(\n { children, className, style, theme, color, maxHeight, ...rest },\n ref\n) {\n const state = resolveTableState(rest);\n\n const table = (\n <div className={getWrapperClasses()} style={{ maxHeight }}>\n <table ref={ref} className={getTableClasses(state, className)} style={style}>\n {children}\n </table>\n </div>\n );\n\n return withThemeOverride(theme, withAccentOverride(color, table));\n});\n\n// ---- Header / Body -------------------------------------------------\n\nexport const TableHeader = forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n function TableHeader({ className, children, ...rest }, ref) {\n return (\n <thead ref={ref} className={[\"nx-table__header\", className].filter(Boolean).join(\" \")} {...rest}>\n {children}\n </thead>\n );\n }\n);\n\ninterface TableBodyProps extends React.HTMLAttributes<HTMLTableSectionElement> {\n /** Renders `emptyState` in a single full-width row instead of `children` when true. */\n isEmpty?: boolean;\n /** Content shown when isEmpty is true — typically a short message, optionally with an action. */\n emptyState?: React.ReactNode;\n /** How many columns the empty-state cell should span. Required for the empty row to render at full width; omit it and the cell just spans 1. */\n columnCount?: number;\n children?: React.ReactNode;\n}\n\nexport const TableBody = forwardRef<HTMLTableSectionElement, TableBodyProps>(function TableBody(\n { className, isEmpty = false, emptyState, columnCount = 1, children, ...rest },\n ref\n) {\n return (\n <tbody ref={ref} className={[\"nx-table__body\", className].filter(Boolean).join(\" \")} {...rest}>\n {isEmpty ? (\n <tr className=\"nx-table__row nx-table__row--empty\">\n <td className=\"nx-table__cell nx-table__empty-cell\" colSpan={columnCount}>\n {emptyState ?? \"No data\"}\n </td>\n </tr>\n ) : (\n children\n )}\n </tbody>\n );\n});\n\n// ---- Row -------------------------------------------------------\n\ninterface TableRowProps extends React.HTMLAttributes<HTMLTableRowElement> {\n selected?: boolean;\n children?: React.ReactNode;\n}\n\nexport const TableRow = forwardRef<HTMLTableRowElement, TableRowProps>(function TableRow(\n { selected = false, className, onClick, children, ...rest },\n ref\n) {\n return (\n <tr\n ref={ref}\n className={getRowClasses(selected, !!onClick, className)}\n onClick={onClick}\n aria-selected={selected || undefined}\n {...rest}\n >\n {children}\n </tr>\n );\n});\n\n// ---- Head cell (sortable) -----------------------------------------\n\ninterface TableHeadProps extends Omit<React.ThHTMLAttributes<HTMLTableCellElement>, \"onClick\"> {\n sortable?: boolean;\n /** Controlled sort state for this column — null/undefined means \"not the active sort column.\" */\n sortDirection?: SortDirection;\n /** Fires when this header is activated (click, or Enter/Space when sortable). Compute the next direction yourself, e.g. with `getNextSortDirection`. */\n onSort?: () => void;\n children?: React.ReactNode;\n}\n\nexport const TableHead = forwardRef<HTMLTableCellElement, TableHeadProps>(function TableHead(\n { sortable = false, sortDirection = null, onSort, className, children, ...rest },\n ref\n) {\n const sortAria = sortable ? getSortAriaProps(sortDirection) : {};\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLTableCellElement>) {\n if (!sortable) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onSort?.();\n }\n }\n\n return (\n <th\n ref={ref}\n scope=\"col\"\n className={getHeadCellClasses(sortable, className)}\n tabIndex={sortable ? 0 : undefined}\n role={sortable ? \"columnheader\" : undefined}\n onClick={sortable ? onSort : undefined}\n onKeyDown={handleKeyDown}\n {...sortAria}\n {...rest}\n >\n <span className=\"nx-table__head-cell-content\">\n {children}\n {sortable && (\n <span className=\"nx-table__sort-icon\" aria-hidden=\"true\" data-direction={sortDirection ?? \"none\"}>\n <svg width=\"10\" height=\"12\" viewBox=\"0 0 10 12\" fill=\"none\">\n <path d=\"M5 0L9 5H1L5 0Z\" fill=\"currentColor\" className=\"nx-table__sort-arrow-up\" />\n <path d=\"M5 12L1 7H9L5 12Z\" fill=\"currentColor\" className=\"nx-table__sort-arrow-down\" />\n </svg>\n </span>\n )}\n </span>\n </th>\n );\n});\n\n// ---- Cell / Caption -------------------------------------------------\n\nexport const TableCell = forwardRef<HTMLTableCellElement, React.TdHTMLAttributes<HTMLTableCellElement>>(\n function TableCell({ className, children, ...rest }, ref) {\n return (\n <td ref={ref} className={getCellClasses(className)} {...rest}>\n {children}\n </td>\n );\n }\n);\n\ninterface TableCaptionProps extends React.HTMLAttributes<HTMLTableCaptionElement> {\n /** Visually hidden but still announced by screen readers — for a caption that would be redundant next to a visible heading right above the table. Default false. */\n srOnly?: boolean;\n children?: React.ReactNode;\n}\n\nexport const TableCaption = forwardRef<HTMLTableCaptionElement, TableCaptionProps>(function TableCaption(\n { srOnly = false, className, children, ...rest },\n ref\n) {\n return (\n <caption\n ref={ref}\n className={[\"nx-table__caption\", srOnly && \"nx-table__caption--sr-only\", className].filter(Boolean).join(\" \")}\n {...rest}\n >\n {children}\n </caption>\n );\n});","import type { Size } from \"./types\";\n\n// ============================================================\n// TABLE — pure core (Category F: complex/stateful).\n//\n// Per BUILDING-COMPONENTS.md's own note for this component: \"sort\n// state should be lifted to props the consumer can control, not\n// trapped inside the component\" — the same controlled-value shape\n// Input/Slider/NumberInput already use. Table itself holds no sort\n// or selection state; TableHead's `sortDirection` is a prop the\n// consumer supplies, and getNextSortDirection is exported so the\n// consumer's onSort handler doesn't have to reinvent the standard\n// asc → desc → unsorted cycle. Row SELECTION is intentionally not\n// modeled here at all — TableRow just renders whatever `selected`\n// boolean it's given, and a table with checkboxes composes the real\n// Checkbox component (Rule 12) rather than Table reimplementing a\n// second one. getSelectAllState is the one piece of selection logic\n// that's genuinely shared/non-trivial (the tri-state \"select all\"\n// checkbox's own state, computed from a count) — pulled out here so\n// it's unit-tested the same way everything else pure is.\n// ============================================================\n\nexport interface TableCoreProps {\n size?: Size;\n /** Alternating row background. Default false. */\n striped?: boolean;\n /** Borders around every cell, not just horizontal row rules. Default false. */\n bordered?: boolean;\n /** Keeps the header visible while the body scrolls — only has something to stick within if an ancestor bounds the table's height (e.g. a wrapping div with max-height). Default false. */\n stickyHeader?: boolean;\n}\n\nexport interface TableState {\n size: Size;\n striped: boolean;\n bordered: boolean;\n stickyHeader: boolean;\n}\n\nexport function resolveTableState(props: TableCoreProps): TableState {\n return {\n size: props.size ?? \"md\",\n striped: props.striped ?? false,\n bordered: props.bordered ?? false,\n stickyHeader: props.stickyHeader ?? false,\n };\n}\n\nexport function getWrapperClasses(className?: string): string {\n return [\"nx-table-wrapper\", className].filter(Boolean).join(\" \");\n}\n\nexport function getTableClasses(state: TableState, className?: string): string {\n return [\n \"nx-table\",\n `nx-table--${state.size}`,\n state.striped && \"nx-table--striped\",\n state.bordered && \"nx-table--bordered\",\n state.stickyHeader && \"nx-table--sticky-header\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\nexport function getRowClasses(selected: boolean, clickable: boolean, className?: string): string {\n return [\n \"nx-table__row\",\n selected && \"nx-table__row--selected\",\n clickable && \"nx-table__row--clickable\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\nexport function getHeadCellClasses(sortable: boolean, className?: string): string {\n return [\"nx-table__head-cell\", sortable && \"nx-table__head-cell--sortable\", className].filter(Boolean).join(\" \");\n}\n\nexport function getCellClasses(className?: string): string {\n return [\"nx-table__cell\", className].filter(Boolean).join(\" \");\n}\n\n// --- Sorting ----------------------------------------------------\n\nexport type SortDirection = \"asc\" | \"desc\" | null;\n\n/** The conventional 3-state cycle a sortable header click steps through: unsorted → asc → desc → unsorted. */\nexport function getNextSortDirection(current: SortDirection): SortDirection {\n if (current === null) return \"asc\";\n if (current === \"asc\") return \"desc\";\n return null;\n}\n\nexport function getSortAriaProps(direction: SortDirection) {\n return {\n \"aria-sort\":\n direction === \"asc\" ? (\"ascending\" as const) : direction === \"desc\" ? (\"descending\" as const) : (\"none\" as const),\n };\n}\n\n// --- Selection ----------------------------------------------------\n\nexport type SelectAllState = \"none\" | \"some\" | \"all\";\n\n/** The tri-state a \"select all\" header checkbox should show, computed from how many of the total rows are currently selected. */\nexport function getSelectAllState(totalCount: number, selectedCount: number): SelectAllState {\n if (totalCount <= 0 || selectedCount <= 0) return \"none\";\n if (selectedCount >= totalCount) return \"all\";\n return \"some\";\n}","import React, { forwardRef, useRef, useId, useImperativeHandle } from \"react\";\nimport {\n resolveDrawerState,\n getDrawerClasses,\n getBackdropClasses,\n getDrawerAriaProps,\n type DrawerCoreProps,\n} from \"../core/drawer\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport { ThemedPortal } from \"../theme-engine/ThemedPortal\";\nimport { useOverlayBehavior } from \"../theme-engine/useOverlayBehavior\";\nimport \"./Drawer.css\";\n\n// ============================================================\n// DRAWER — React layer over core/drawer.ts (Category C).\n//\n// Deliberately built as a close copy of Modal.tsx rather than\n// something new — same sentinel-ref-for-ThemedPortal technique (a\n// drawer has no natural persistent trigger element either), same\n// useImperativeHandle merge for ref forwarding into a\n// portaled+focus-trapped node, same backdrop-click-only-on-direct-\n// target handling, same useOverlayBehavior wiring (Escape, full trap,\n// autofocus, return focus). The one deliberate simplification: no\n// delayed-unmount exit animation. A slide-in entrance is enough of a\n// distinct feel from Modal's fade+scale; adding a \"stay mounted\n// briefly while sliding out\" state machine would meaningfully\n// complicate this for a polish detail Modal itself doesn't have\n// either, and consistency with Modal's already-tested unmount timing\n// was judged more valuable than the extra animation.\n// ============================================================\n\ninterface DrawerProps extends DrawerCoreProps, BaseComponentProps {\n open: boolean;\n onClose: () => void;\n title?: React.ReactNode;\n children?: React.ReactNode;\n footer?: React.ReactNode;\n /** Explicit element to return focus to on close. Defaults to whatever was focused right before opening. */\n triggerRef?: React.RefObject<HTMLElement | null>;\n}\n\nexport const Drawer = forwardRef<HTMLDivElement, DrawerProps>(function Drawer(\n { open, onClose, title, children, footer, triggerRef, className, style, theme, color, ...rest },\n forwardedRef\n) {\n const sentinelRef = useRef<HTMLSpanElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n const titleId = `nx-drawer-title-${useId()}`;\n\n useImperativeHandle(forwardedRef, () => panelRef.current as HTMLDivElement);\n\n const state = resolveDrawerState({ ...rest, hasTitle: !!title });\n const classes = [getDrawerClasses(state), className].filter(Boolean).join(\" \");\n const aria = getDrawerAriaProps(state, titleId);\n\n useOverlayBehavior({\n isOpen: open,\n onClose,\n containerRef: panelRef,\n triggerRef,\n closeOnEscape: state.closeOnEscape,\n trapFocus: true,\n returnFocus: true,\n autoFocus: true,\n });\n\n function handleBackdropClick(e: React.MouseEvent<HTMLDivElement>) {\n if (e.target !== e.currentTarget) return;\n if (state.closeOnBackdropClick) onClose();\n }\n\n const drawerContent = open && (\n <ThemedPortal anchorRef={sentinelRef}>\n <div className={getBackdropClasses()} onMouseDown={handleBackdropClick}>\n {withThemeOverride(\n theme,\n withAccentOverride(\n color,\n <div\n ref={panelRef}\n className={classes}\n style={style}\n {...aria}\n aria-label={!state.hasTitle ? \"Dialog\" : undefined}\n >\n {title && (\n <div className=\"nx-drawer__header\">\n <div id={titleId} className=\"nx-drawer__title\">\n {title}\n </div>\n <button type=\"button\" className=\"nx-drawer__close\" onClick={onClose} aria-label=\"Close\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M4 4l10 10M14 4L4 14\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n )}\n <div className=\"nx-drawer__body\">{children}</div>\n {footer && <div className=\"nx-drawer__footer\">{footer}</div>}\n </div>\n )\n )}\n </div>\n </ThemedPortal>\n );\n\n return (\n <>\n <span ref={sentinelRef} style={{ display: \"none\" }} aria-hidden=\"true\" />\n {drawerContent}\n </>\n );\n});\n","import type { Size } from \"./types\";\n\n// ============================================================\n// DRAWER (a.k.a. \"Sheet\") — pure core (Category C: edge-anchored\n// overlay panel).\n//\n// Deliberately modeled on core/modal.ts rather than invented fresh —\n// a drawer IS a modal dialog (same role=\"dialog\"/aria-modal, same\n// backdrop, same closeOnEscape/closeOnBackdropClick shape), the only\n// real difference is *where* the panel sits and which axis \"size\"\n// measures. Same ModalSize-style divergence from the shared `Size`\n// scale for the same reason Modal's own comment gives: \"full\" is a\n// real, common drawer size (a full-height/full-width sheet), not a\n// speculative addition.\n// ============================================================\n\nexport type DrawerSide = \"left\" | \"right\" | \"top\" | \"bottom\";\nexport type DrawerSize = Size | \"full\";\n\nexport interface DrawerCoreProps {\n /** Which edge the panel slides in from. Default \"right\". */\n side?: DrawerSide;\n /**\n * For a left/right drawer this is the panel's width; for a\n * top/bottom drawer it's the panel's height — \"size\" always means\n * \"how far the panel extends from its edge,\" regardless of side.\n */\n size?: DrawerSize;\n closeOnBackdropClick?: boolean;\n closeOnEscape?: boolean;\n hasTitle?: boolean;\n}\n\nexport interface DrawerState {\n side: DrawerSide;\n size: DrawerSize;\n closeOnBackdropClick: boolean;\n closeOnEscape: boolean;\n hasTitle: boolean;\n}\n\nexport function resolveDrawerState(props: DrawerCoreProps): DrawerState {\n return {\n side: props.side ?? \"right\",\n size: props.size ?? \"md\",\n closeOnBackdropClick: props.closeOnBackdropClick ?? true,\n closeOnEscape: props.closeOnEscape ?? true,\n hasTitle: props.hasTitle ?? false,\n };\n}\n\nexport function getBackdropClasses(): string {\n return \"nx-drawer-backdrop\";\n}\n\nexport function getDrawerClasses(state: DrawerState): string {\n return [\"nx-drawer\", `nx-drawer--${state.side}`, `nx-drawer--${state.size}`].join(\" \");\n}\n\nexport function getDrawerAriaProps(state: DrawerState, titleId?: string) {\n return {\n role: \"dialog\" as const,\n \"aria-modal\": true as const,\n \"aria-labelledby\": state.hasTitle ? titleId : undefined,\n };\n}\n","import React, {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n cloneElement,\n isValidElement,\n} from \"react\";\nimport {\n resolveContextMenuState,\n getMenuClasses,\n getMenuAriaProps,\n getItemClasses,\n getSeparatorClasses,\n getLabelClasses,\n getItemAriaProps,\n type ContextMenuCoreProps,\n type ContextMenuItemVariant,\n type MenuPoint,\n} from \"../core/context-menu\";\nimport { getIndexForKey, firstEnabledIndex, matchTypeahead, nextTypeaheadQuery } from \"../core/collection\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport { ThemedPortal } from \"../theme-engine/ThemedPortal\";\nimport { useOverlayBehavior } from \"../theme-engine/useOverlayBehavior\";\nimport { useFloatingPosition } from \"../theme-engine/useFloatingPosition\";\nimport { useClickOutside } from \"../theme-engine/useClickOutside\";\nimport \"./DropdownMenu.css\";\n\n// ============================================================\n// CONTEXT MENU — compound React layer over core/context-menu.ts.\n//\n// Structurally a close sibling of DropdownMenu.tsx: same portal\n// (Rule 6), same useFloatingPosition/useOverlayBehavior/useClickOutside\n// infrastructure, same core/collection.ts-driven arrow-key + typeahead\n// navigation (Rule 12). The one real difference is what's being\n// positioned relative to: DropdownMenu anchors to a persistent\n// trigger element's own bounding rect; a context menu opens wherever\n// the user right-clicked, which has no natural \"element\" of its own.\n// The fix is a \"virtual anchor\" — a zero-size element moved to the\n// click point right before opening — which lets useFloatingPosition\n// work completely unmodified: it only ever needs *some* element with\n// a real getBoundingClientRect(), and a 0×0 rect at (clientX, clientY)\n// is exactly that.\n//\n// ContextMenuItem/Separator/Label are separate small components from\n// DropdownMenu's rather than literally reused — DropdownMenu's own\n// context is module-private, so sharing it would mean exporting\n// internal plumbing just for this. What genuinely IS reused (Rule\n// 12) is the pure logic underneath: getItemClasses, getItemAriaProps,\n// and DropdownMenu.css's own class names — a context menu item is\n// pixel-for-pixel the same rendered thing, just wired to its own\n// smaller context.\n// ============================================================\n\nfunction mergeRefs<T>(...refs: Array<React.Ref<T> | null | undefined>) {\n return (value: T | null) => {\n for (const ref of refs) {\n if (!ref) continue;\n if (typeof ref === \"function\") ref(value);\n else (ref as React.MutableRefObject<T | null>).current = value;\n }\n };\n}\n\nfunction getMenuItems(menu: HTMLElement): HTMLElement[] {\n return Array.from(menu.querySelectorAll<HTMLElement>('[role=\"menuitem\"]'));\n}\nfunction isItemDisabled(item: HTMLElement): boolean {\n return item.getAttribute(\"aria-disabled\") === \"true\";\n}\n\ninterface ContextMenuContextValue {\n open: boolean;\n point: MenuPoint | null;\n openAt: (point: MenuPoint, returnFocusTo: HTMLElement | null) => void;\n close: (returnFocus: boolean) => void;\n menuId: string;\n anchorRef: React.RefObject<HTMLElement | null>;\n triggerElRef: React.MutableRefObject<HTMLElement | null>;\n state: ReturnType<typeof resolveContextMenuState>;\n theme?: string;\n color?: string;\n}\n\nconst ContextMenuCtx = createContext<ContextMenuContextValue | null>(null);\n\nfunction useContextMenuCtx(component: string): ContextMenuContextValue {\n const ctx = useContext(ContextMenuCtx);\n if (!ctx) throw new Error(`<${component}> must be rendered inside a <ContextMenu>.`);\n return ctx;\n}\n\n// ---- Root ------------------------------------------------------\n\ninterface ContextMenuProps extends ContextMenuCoreProps, Pick<BaseComponentProps, \"theme\" | \"color\"> {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n children?: React.ReactNode;\n}\n\nexport function ContextMenu(props: ContextMenuProps) {\n const { open: openProp, onOpenChange, size, theme, color, children } = props;\n\n const state = resolveContextMenuState({ size });\n const menuId = `nx-context-menu-${useId()}`;\n const anchorRef = useRef<HTMLElement | null>(null);\n const triggerElRef = useRef<HTMLElement | null>(null);\n\n const isControlled = openProp !== undefined;\n const [uncontrolledOpen, setUncontrolledOpen] = useState(false);\n const [point, setPoint] = useState<MenuPoint | null>(null);\n const open = isControlled ? openProp! : uncontrolledOpen;\n\n const setOpenState = useCallback(\n (next: boolean) => {\n if (!isControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n },\n [isControlled, onOpenChange]\n );\n\n const openAt = useCallback(\n (nextPoint: MenuPoint, returnFocusTo: HTMLElement | null) => {\n triggerElRef.current = returnFocusTo;\n setPoint(nextPoint);\n setOpenState(true);\n },\n [setOpenState]\n );\n\n const close = useCallback(\n (returnFocus: boolean) => {\n setOpenState(false);\n if (returnFocus) requestAnimationFrame(() => triggerElRef.current?.focus());\n },\n [setOpenState]\n );\n\n const ctx = useMemo<ContextMenuContextValue>(\n () => ({ open, point, openAt, close, menuId, anchorRef, triggerElRef, state, theme, color }),\n [open, point, openAt, close, menuId, state, theme, color]\n );\n\n return <ContextMenuCtx.Provider value={ctx}>{children}</ContextMenuCtx.Provider>;\n}\n\n// ---- Trigger -----------------------------------------------------\n\ninterface ContextMenuTriggerProps {\n /** A single element — right-clicking it opens the menu at the cursor. Its own onContextMenu (if any) still runs first. */\n children: React.ReactElement;\n /** Disables the menu for this trigger without unmounting it. Default false. */\n disabled?: boolean;\n}\n\nexport const ContextMenuTrigger = forwardRef<HTMLElement, ContextMenuTriggerProps>(function ContextMenuTrigger(\n { children, disabled = false },\n forwardedRef\n) {\n const ctx = useContextMenuCtx(\"ContextMenuTrigger\");\n\n if (!isValidElement(children)) {\n throw new Error(\"<ContextMenuTrigger> expects a single React element child.\");\n }\n const child = children as React.ReactElement<Record<string, unknown>>;\n\n const handleContextMenu = useCallback(\n (e: React.MouseEvent) => {\n (child.props.onContextMenu as ((e: React.MouseEvent) => void) | undefined)?.(e);\n if (e.defaultPrevented || disabled) return;\n e.preventDefault();\n ctx.openAt({ x: e.clientX, y: e.clientY }, e.currentTarget as HTMLElement);\n },\n // child.props.onContextMenu intentionally excluded — reading the\n // latest child props each call, not re-subscribing every render.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [ctx, disabled]\n );\n\n return cloneElement(child, {\n ref: mergeRefs(\n (child.props as { ref?: React.Ref<HTMLElement> }).ref ??\n (child as unknown as { ref?: React.Ref<HTMLElement> }).ref,\n ctx.anchorRef,\n forwardedRef\n ),\n onContextMenu: handleContextMenu,\n });\n});\n\n// ---- Content (the portalled, cursor-anchored menu) ----------------\n\ninterface ContextMenuContentProps extends BaseComponentProps {\n children?: React.ReactNode;\n}\n\nexport const ContextMenuContent = forwardRef<HTMLDivElement, ContextMenuContentProps>(function ContextMenuContent(\n { className, style, theme, color, children },\n forwardedRef\n) {\n const ctx = useContextMenuCtx(\"ContextMenuContent\");\n if (!ctx.open || !ctx.point) return null;\n return (\n <ContextMenuContentInner\n point={ctx.point}\n className={className}\n style={style}\n theme={theme}\n color={color}\n forwardedRef={forwardedRef}\n >\n {children}\n </ContextMenuContentInner>\n );\n});\n\ninterface InnerProps extends BaseComponentProps {\n point: MenuPoint;\n children?: React.ReactNode;\n forwardedRef: React.ForwardedRef<HTMLDivElement>;\n}\n\nfunction ContextMenuContentInner({ point, className, style, theme, color, children, forwardedRef }: InnerProps) {\n const ctx = useContextMenuCtx(\"ContextMenuContent\");\n const menuRef = useRef<HTMLDivElement | null>(null);\n const virtualAnchorRef = useRef<HTMLSpanElement | null>(null);\n const typeaheadRef = useRef<{ query: string; time: number }>({ query: \"\", time: 0 });\n\n const setMenuRef = useCallback(\n (node: HTMLDivElement | null) => {\n menuRef.current = node;\n if (typeof forwardedRef === \"function\") forwardedRef(node);\n else if (forwardedRef) (forwardedRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n },\n [forwardedRef]\n );\n\n // The virtual anchor: a 0×0 fixed-position element sitting exactly\n // at the click point. useFloatingPosition only ever needs an\n // element with a real getBoundingClientRect() — it doesn't care\n // that this one has no size and isn't visible.\n const position = useFloatingPosition({\n isOpen: true,\n triggerRef: virtualAnchorRef,\n floatingRef: menuRef,\n placement: \"bottom\",\n align: \"start\",\n offset: 2,\n });\n\n useOverlayBehavior({\n isOpen: true,\n onClose: () => ctx.close(true),\n containerRef: menuRef,\n triggerRef: ctx.triggerElRef,\n closeOnEscape: true,\n trapFocus: false,\n returnFocus: false,\n autoFocus: false,\n });\n\n // First item gets focus on open — same WAI-ARIA menu-button focus\n // model DropdownMenu uses, even though there's no button here.\n useLayoutEffect(() => {\n const menu = menuRef.current;\n if (!menu) return;\n const items = getMenuItems(menu);\n const disabled = items.map(isItemDisabled);\n const idx = firstEnabledIndex(disabled);\n if (idx >= 0) items[idx].focus();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useClickOutside(true, [menuRef], useCallback(() => ctx.close(false), [ctx]));\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n const menu = menuRef.current;\n if (!menu) return;\n if (e.key === \"Enter\" || e.key === \" \") return;\n if (e.key === \"Tab\") {\n ctx.close(false);\n return;\n }\n\n const items = getMenuItems(menu);\n const disabled = items.map(isItemDisabled);\n const currentIndex = items.findIndex((it) => it === document.activeElement);\n\n const idx = getIndexForKey(e.key, currentIndex, disabled, { orientation: \"vertical\", loop: true });\n if (idx !== null) {\n e.preventDefault();\n items[idx]?.focus();\n return;\n }\n\n if (e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey) {\n const now = Date.now();\n const q = nextTypeaheadQuery(typeaheadRef.current.query, typeaheadRef.current.time, e.key.toLowerCase(), now);\n typeaheadRef.current = { query: q, time: now };\n const labels = items.map((it) => (it.textContent ?? \"\").trim());\n const match = matchTypeahead(labels, q, currentIndex, disabled);\n if (match !== null) {\n e.preventDefault();\n items[match].focus();\n }\n }\n },\n [ctx]\n );\n\n const menuAria = getMenuAriaProps({ menuId: ctx.menuId });\n\n const menu = (\n <>\n <span\n ref={virtualAnchorRef}\n aria-hidden=\"true\"\n style={{ position: \"fixed\", top: point.y, left: point.x, width: 0, height: 0 }}\n />\n <div\n ref={setMenuRef}\n className={getMenuClasses(ctx.state.size, className)}\n style={{\n ...style,\n position: \"fixed\",\n top: position?.top ?? -9999,\n left: position?.left ?? -9999,\n opacity: position ? 1 : 0,\n pointerEvents: position ? undefined : \"none\",\n }}\n onKeyDown={handleKeyDown}\n {...menuAria}\n >\n {children}\n </div>\n </>\n );\n\n return (\n <ThemedPortal anchorRef={ctx.anchorRef}>\n {withThemeOverride(theme ?? ctx.theme, withAccentOverride(color ?? ctx.color, menu))}\n </ThemedPortal>\n );\n}\n\n// ---- Item / Separator / Label -------------------------------------\n\ninterface ContextMenuItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onSelect\"> {\n variant?: ContextMenuItemVariant;\n disabled?: boolean;\n onSelect?: () => void;\n children?: React.ReactNode;\n}\n\nexport const ContextMenuItem = forwardRef<HTMLDivElement, ContextMenuItemProps>(function ContextMenuItem(\n { variant = \"default\", disabled = false, onSelect, className, onClick, onKeyDown, children, ...rest },\n ref\n) {\n const ctx = useContextMenuCtx(\"ContextMenuItem\");\n const aria = getItemAriaProps({ disabled });\n\n const activate = useCallback(() => {\n if (disabled) return;\n onSelect?.();\n ctx.close(true);\n }, [disabled, onSelect, ctx]);\n\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n activate();\n },\n [onClick, activate]\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n activate();\n }\n },\n [onKeyDown, activate]\n );\n\n return (\n <div\n ref={ref}\n className={getItemClasses(variant, disabled, className)}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...aria}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\nexport const ContextMenuSeparator = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function ContextMenuSeparator({ className, ...rest }, ref) {\n return <div ref={ref} role=\"separator\" className={getSeparatorClasses(className)} {...rest} />;\n }\n);\n\nexport const ContextMenuLabel = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function ContextMenuLabel({ className, children, ...rest }, ref) {\n return (\n <div ref={ref} className={getLabelClasses(className)} {...rest}>\n {children}\n </div>\n );\n }\n);\n","import type { Size } from \"./types\";\nimport {\n getMenuClasses as getDropdownMenuClasses,\n getItemClasses,\n getSeparatorClasses,\n getLabelClasses,\n getItemAriaProps,\n type DropdownItemVariant,\n} from \"./dropdown\";\n\n// ============================================================\n// CONTEXT MENU — pure core (Category C: cursor-anchored menu).\n//\n// Deliberately does NOT reimplement item/separator/label styling or\n// ARIA (Rule 12) — those are imported straight from core/dropdown.ts\n// and re-exported below, since a context menu's items are visually\n// and semantically identical to a dropdown menu's; the only thing\n// actually different about a context menu is what anchors it. Same\n// reasoning for getMenuClasses: it returns DropdownMenu's own\n// \".nx-dropdown__menu\" classes rather than inventing a parallel\n// \".nx-context-menu\" class that would need its own CSS to stay in\n// sync forever after.\n//\n// What IS genuinely new here: instead of a persistent trigger\n// element with its own bounding rect, a context menu opens at\n// whatever point the user right-clicked. core/floating.ts's existing\n// placement math handles that for free once the click point is\n// represented as a zero-size \"virtual anchor\" rect — see\n// react/ContextMenu.tsx for how that anchor is built.\n// ============================================================\n\nexport { getItemClasses, getSeparatorClasses, getLabelClasses, getItemAriaProps };\nexport type { DropdownItemVariant as ContextMenuItemVariant };\n\nexport interface ContextMenuCoreProps {\n size?: Size;\n}\n\nexport interface ContextMenuState {\n size: Size;\n}\n\nexport function resolveContextMenuState(props: ContextMenuCoreProps): ContextMenuState {\n return { size: props.size ?? \"md\" };\n}\n\nexport function getMenuClasses(size: Size, className?: string): string {\n return getDropdownMenuClasses(size, className);\n}\n\nexport interface MenuAriaInput {\n menuId: string;\n}\n\nexport function getMenuAriaProps(input: MenuAriaInput) {\n return {\n role: \"menu\" as const,\n id: input.menuId,\n \"aria-label\": \"Context menu\",\n };\n}\n\n/** A right-click position, in viewport coordinates. */\nexport interface MenuPoint {\n x: number;\n y: number;\n}\n","import React, { forwardRef, useId, useState } from \"react\";\nimport {\n resolveRatingState,\n roundRatingValue,\n getStarValue,\n isLeftHalf,\n getKeyboardValue,\n getStarFill,\n getRootClasses,\n getStarClasses,\n getRatingAriaProps,\n type RatingCoreProps,\n} from \"../core/rating\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport { StarIcon, StarHalfFilledIcon, StarFilledIcon } from \"../icons/react\";\nimport \"./Field.css\";\nimport \"./Rating.css\";\n\n// ============================================================\n// RATING — React layer over core/rating.ts (Category B).\n//\n// Mirrors Slider.tsx's controlled/uncontrolled split and its\n// \"ref forwards to the root interactive region, not a native form\n// element\" convention (see core/rating.ts's module comment for\n// why this follows Slider rather than Input). Pointer interaction\n// reads each star's own bounding rect on mouseMove/click to decide\n// half vs full (core/rating.ts's isLeftHalf) rather than sampling\n// the whole group's width, so half-star precision doesn't depend on\n// how many stars are on screen.\n// ============================================================\n\ninterface RatingProps extends RatingCoreProps, BaseComponentProps {\n value?: number;\n defaultValue?: number;\n onChange?: (value: number) => void;\n label?: string;\n helperText?: string;\n id?: string;\n \"aria-label\"?: string;\n}\n\nexport const Rating = forwardRef<HTMLDivElement, RatingProps>(function Rating(\n {\n value,\n defaultValue,\n onChange,\n label,\n helperText,\n id,\n className,\n style,\n theme,\n color,\n \"aria-label\": ariaLabel,\n ...rest\n },\n ref\n) {\n const state = resolveRatingState(rest);\n const uid = useId();\n const rootId = id ?? `nx-rating-${uid}`;\n const labelId = label ? `${rootId}-label` : undefined;\n const descId = helperText ? `${rootId}-desc` : undefined;\n\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<number>(\n roundRatingValue(defaultValue ?? 0, state)\n );\n const currentValue = isControlled ? value! : internalValue;\n\n const [hoverValue, setHoverValue] = useState<number | null>(null);\n const canInteract = !state.isDisabled && !state.isReadOnly;\n const displayValue = canInteract && hoverValue !== null ? hoverValue : currentValue;\n\n function commit(next: number) {\n if (!canInteract) return;\n const rounded = roundRatingValue(next, state);\n if (!isControlled) setInternalValue(rounded);\n onChange?.(rounded);\n }\n\n function handleStarPointer(e: React.MouseEvent<HTMLSpanElement>, starIndex: number) {\n if (!canInteract) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const offsetX = e.clientX - rect.left;\n const starVal = getStarValue(starIndex, isLeftHalf(offsetX, rect.width), state.allowHalf);\n setHoverValue(starVal);\n }\n\n function handleStarClick(e: React.MouseEvent<HTMLSpanElement>, starIndex: number) {\n if (!canInteract) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const offsetX = e.clientX - rect.left;\n commit(getStarValue(starIndex, isLeftHalf(offsetX, rect.width), state.allowHalf));\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLDivElement>) {\n if (!canInteract) return;\n const next = getKeyboardValue(e.key, currentValue, state);\n if (next !== null) {\n e.preventDefault();\n commit(next);\n }\n }\n\n const aria = getRatingAriaProps(state, currentValue, ariaLabel ? undefined : labelId);\n\n const rating = (\n <div className=\"nx-field\" style={style}>\n {label && (\n <span id={labelId} className=\"nx-field__label\">\n {label}\n </span>\n )}\n <div\n ref={ref}\n id={rootId}\n className={getRootClasses(state, className)}\n aria-label={ariaLabel}\n aria-describedby={descId}\n onKeyDown={handleKeyDown}\n onMouseLeave={() => setHoverValue(null)}\n {...aria}\n >\n {Array.from({ length: state.max }, (_, starIndex) => {\n const fill = getStarFill(starIndex, displayValue);\n const Icon = fill === \"full\" ? StarFilledIcon : fill === \"half\" ? StarHalfFilledIcon : StarIcon;\n return (\n <span\n key={starIndex}\n className={getStarClasses(fill)}\n onMouseMove={(e) => handleStarPointer(e, starIndex)}\n onClick={(e) => handleStarClick(e, starIndex)}\n >\n <Icon className=\"nx-rating__star-icon\" aria-hidden=\"true\" />\n </span>\n );\n })}\n </div>\n {helperText && (\n <span id={descId} className=\"nx-field__helper\">\n {helperText}\n </span>\n )}\n </div>\n );\n\n return withThemeOverride(theme, withAccentOverride(color, rating));\n});\n","import type { Size } from \"./types\";\n\n// ============================================================\n// RATING — pure core (Category B: form/input primitive).\n//\n// Not one of the original 42 (see BUILDING-COMPONENTS.md), but it\n// shares Category B's defining trait: a value the consumer cares\n// about, controlled/uncontrolled, disabled. It follows Slider's\n// precedent (the closest existing component) rather than Input's:\n// a single `role=\"slider\"` region — not a native form element, not\n// a radiogroup of N separately-tabbable stars — with the value read\n// off `aria-valuenow`, keyboard-adjustable, and one continuous\n// pointer interaction across all stars (same reasoning Slider gives\n// for one thumb: a rating is one value, not N independent choices).\n// ============================================================\n\nexport interface RatingCoreProps {\n /** Number of stars. Default 5. */\n max?: number;\n /** Allow half-star increments (0.5 steps) instead of whole stars only. Default false. */\n allowHalf?: boolean;\n disabled?: boolean;\n /** Displays the current value but blocks changing it — distinct from `disabled` (still focusable/announced, just not editable). Default false. */\n readOnly?: boolean;\n size?: Size;\n}\n\nexport interface RatingState {\n max: number;\n allowHalf: boolean;\n isDisabled: boolean;\n isReadOnly: boolean;\n size: Size;\n}\n\nexport function resolveRatingState(props: RatingCoreProps): RatingState {\n return {\n // ?? throughout, never || (CONTRACT.md Rule 3) — max={0} or an\n // explicit readOnly={false} must not be silently discarded.\n max: props.max ?? 5,\n allowHalf: props.allowHalf ?? false,\n isDisabled: props.disabled ?? false,\n isReadOnly: props.readOnly ?? false,\n size: props.size ?? \"md\",\n };\n}\n\n/** Rounds to the nearest step the rating supports (whole star, or half when allowHalf), then clamps into [0, max]. */\nexport function roundRatingValue(value: number, state: Pick<RatingState, \"max\" | \"allowHalf\">): number {\n const step = state.allowHalf ? 0.5 : 1;\n const stepped = Math.round(value / step) * step;\n return Math.min(Math.max(stepped, 0), state.max);\n}\n\n/** The value a single star contributes: its index (0-based) plus a full or half step, depending on which side of the star was interacted with. Ignores the side entirely (always a full step) when half-stars are off. */\nexport function getStarValue(starIndex: number, isLeftHalf: boolean, allowHalf: boolean): number {\n if (!allowHalf) return starIndex + 1;\n return starIndex + (isLeftHalf ? 0.5 : 1);\n}\n\n/** Whether an x offset within a star element (0..width) falls on its left half — used to decide half- vs full-star on hover/click. */\nexport function isLeftHalf(offsetX: number, width: number): boolean {\n if (width <= 0) return false;\n return offsetX < width / 2;\n}\n\nconst STEP_KEYS_UP = new Set([\"ArrowRight\", \"ArrowUp\"]);\nconst STEP_KEYS_DOWN = new Set([\"ArrowLeft\", \"ArrowDown\"]);\n\n/** Maps a keydown to the rating's new value, or null if the key isn't one this widget handles (mirrors core/slider.ts's getKeyboardValue). Home/End jump straight to the bounds. */\nexport function getKeyboardValue(\n key: string,\n current: number,\n state: Pick<RatingState, \"max\" | \"allowHalf\">\n): number | null {\n const step = state.allowHalf ? 0.5 : 1;\n if (STEP_KEYS_UP.has(key)) return roundRatingValue(current + step, state);\n if (STEP_KEYS_DOWN.has(key)) return roundRatingValue(current - step, state);\n if (key === \"Home\") return 0;\n if (key === \"End\") return state.max;\n return null;\n}\n\nexport type StarFill = \"empty\" | \"half\" | \"full\";\n\n/** Which way a single star should render given the value currently on display (the committed value, or a live hover preview overriding it). */\nexport function getStarFill(starIndex: number, displayValue: number): StarFill {\n const diff = displayValue - starIndex;\n if (diff >= 1) return \"full\";\n if (diff >= 0.5) return \"half\";\n return \"empty\";\n}\n\nexport function getRootClasses(state: RatingState, className?: string): string {\n return [\n \"nx-rating\",\n `nx-rating--${state.size}`,\n state.isDisabled && \"nx-rating--disabled\",\n state.isReadOnly && \"nx-rating--readonly\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\nexport function getStarClasses(fill: StarFill): string {\n return [\"nx-rating__star\", `nx-rating__star--${fill}`].filter(Boolean).join(\" \");\n}\n\nexport function getRatingAriaProps(state: RatingState, value: number, labelledBy?: string) {\n return {\n role: \"slider\" as const,\n \"aria-valuemin\": 0,\n \"aria-valuemax\": state.max,\n \"aria-valuenow\": value,\n \"aria-valuetext\": `${value} out of ${state.max}`,\n \"aria-disabled\": state.isDisabled || undefined,\n \"aria-readonly\": state.isReadOnly || undefined,\n \"aria-labelledby\": labelledBy,\n tabIndex: state.isDisabled ? -1 : 0,\n };\n}\n","import React, { forwardRef, useEffect, useId, useRef, useState } from \"react\";\nimport {\n resolveOTPInputState,\n valueToChars,\n charsToValue,\n sanitizeText,\n isCharValid,\n isComplete,\n getRootClasses,\n getBoxClasses,\n getBoxAriaProps,\n type OTPInputCoreProps,\n} from \"../core/otp-input\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { withThemeOverride, withAccentOverride } from \"../theme-engine/NuvoxProvider\";\nimport \"./Field.css\";\nimport \"./OTPInput.css\";\n\n// ============================================================\n// OTP INPUT — React layer over core/otp-input.ts (Category B).\n//\n// Ref forwarding targets the root container, the same convention\n// Slider.tsx uses (see its module comment): the real focusable\n// targets here are N separate boxes, not one node, so there's no\n// single element a forwarded ref could unambiguously mean. Each\n// box is still a real <input>, individually focusable/tabbable —\n// only the *forwarded* ref is the container.\n//\n// Typing a digit auto-advances focus to the next box; Backspace on\n// an empty box clears and moves back to the previous one (so\n// Backspace never has to be pressed twice to actually remove a\n// character); a paste anywhere fills from the first box, matching\n// how every OTP/PIN input users have seen before behaves.\n// ============================================================\n\ninterface OTPInputProps extends OTPInputCoreProps, BaseComponentProps {\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n /** Fires once when the value reaches `length` characters (e.g. to auto-submit). */\n onComplete?: (value: string) => void;\n label?: string;\n helperText?: string;\n errorText?: string;\n id?: string;\n}\n\nexport const OTPInput = forwardRef<HTMLDivElement, OTPInputProps>(function OTPInput(\n {\n value,\n defaultValue,\n onChange,\n onComplete,\n label,\n helperText,\n errorText,\n id,\n className,\n style,\n theme,\n color,\n ...rest\n },\n forwardedRef\n) {\n const isInvalid = rest.error ?? !!errorText;\n const state = resolveOTPInputState({ ...rest, error: isInvalid });\n const uid = useId();\n const rootId = id ?? `nx-otp-input-${uid}`;\n const helperMessage = errorText ?? helperText;\n const descId = helperMessage ? `${rootId}-desc` : undefined;\n\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<string>(\n sanitizeText(defaultValue ?? \"\", state.length, state.type)\n );\n const currentValue = isControlled ? value! : internalValue;\n const chars = valueToChars(currentValue, state.length);\n\n const boxRefs = useRef<Array<HTMLInputElement | null>>([]);\n const rootRef = useRef<HTMLDivElement | null>(null);\n\n function setRootRef(node: HTMLDivElement | null) {\n rootRef.current = node;\n if (typeof forwardedRef === \"function\") forwardedRef(node);\n else if (forwardedRef) (forwardedRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n\n function commit(next: string) {\n if (!isControlled) setInternalValue(next);\n onChange?.(next);\n return next;\n }\n\n // Fires onComplete exactly once per time the value newly reaches\n // full length (not on every render while it stays complete) —\n // matters most in controlled mode, where a re-render with the\n // same complete value is common (e.g. the consumer's own state\n // update round-tripping back in).\n const firedCompleteFor = useRef<string | null>(null);\n useEffect(() => {\n if (isComplete(currentValue, state.length) && firedCompleteFor.current !== currentValue) {\n firedCompleteFor.current = currentValue;\n onComplete?.(currentValue);\n } else if (!isComplete(currentValue, state.length)) {\n firedCompleteFor.current = null;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentValue, state.length]);\n\n function handleChange(index: number, raw: string) {\n if (state.isDisabled) return;\n // A native maxLength=1 box still delivers >1 char when the\n // browser replaces a selected character with a typed one on\n // some platforms — take the last character typed either way.\n const char = raw.slice(-1);\n const nextChars = [...chars];\n if (char === \"\") {\n nextChars[index] = \"\";\n commit(charsToValue(nextChars));\n return;\n }\n if (!isCharValid(char, state.type)) return;\n nextChars[index] = char;\n commit(charsToValue(nextChars));\n if (index < state.length - 1) boxRefs.current[index + 1]?.focus();\n }\n\n function handleKeyDown(index: number, e: React.KeyboardEvent<HTMLInputElement>) {\n if (state.isDisabled) return;\n if (e.key === \"Backspace\") {\n if (chars[index]) return; // let handleChange's empty-string path handle the clear\n if (index > 0) {\n e.preventDefault();\n const nextChars = [...chars];\n nextChars[index - 1] = \"\";\n commit(charsToValue(nextChars));\n boxRefs.current[index - 1]?.focus();\n }\n return;\n }\n if (e.key === \"ArrowLeft\" && index > 0) {\n e.preventDefault();\n boxRefs.current[index - 1]?.focus();\n } else if (e.key === \"ArrowRight\" && index < state.length - 1) {\n e.preventDefault();\n boxRefs.current[index + 1]?.focus();\n }\n }\n\n function handlePaste(e: React.ClipboardEvent<HTMLInputElement>) {\n if (state.isDisabled) return;\n e.preventDefault();\n const pasted = sanitizeText(e.clipboardData.getData(\"text\"), state.length, state.type);\n if (!pasted) return;\n commit(pasted);\n const focusIndex = Math.min(pasted.length, state.length - 1);\n boxRefs.current[focusIndex]?.focus();\n }\n\n const otp = (\n <div className=\"nx-field\" style={style}>\n {label && (\n <label className=\"nx-field__label\" id={`${rootId}-label`}>\n {label}\n </label>\n )}\n <div\n ref={setRootRef}\n id={rootId}\n className={getRootClasses(state, className)}\n role=\"group\"\n aria-labelledby={label ? `${rootId}-label` : undefined}\n >\n {chars.map((char, index) => (\n <input\n key={index}\n ref={(node) => {\n boxRefs.current[index] = node;\n }}\n type={state.isMasked ? \"password\" : state.type === \"numeric\" ? \"tel\" : \"text\"}\n inputMode={state.type === \"numeric\" ? \"numeric\" : \"text\"}\n autoComplete={index === 0 ? \"one-time-code\" : \"off\"}\n maxLength={1}\n disabled={state.isDisabled}\n className={getBoxClasses(!!char, isInvalid)}\n value={char}\n onChange={(e) => handleChange(index, e.target.value)}\n onKeyDown={(e) => handleKeyDown(index, e)}\n onPaste={handlePaste}\n onFocus={(e) => e.target.select()}\n {...getBoxAriaProps(state, index, descId)}\n />\n ))}\n </div>\n {helperMessage && (\n <span id={descId} className={`nx-field__helper${isInvalid ? \" nx-field__helper--error\" : \"\"}`}>\n {helperMessage}\n </span>\n )}\n </div>\n );\n\n return withThemeOverride(theme, withAccentOverride(color, otp));\n});\n","import { resolveFieldState, getFieldAriaProps, type FieldProps, type FieldState } from \"./field\";\n\n// ============================================================\n// OTP INPUT — pure core (Category B: form/input primitive).\n//\n// Covers both \"OTP Input\" and \"Pin Input\" from BUILDING-COMPONENTS.md's\n// build list: they're the same segmented-box-of-characters pattern\n// under two names, so this is one component with a `mask` prop\n// (renders entered characters as dots, the PIN-entry look) instead\n// of two near-duplicate components maintaining the same box-focus/\n// paste/backspace logic twice.\n//\n// Value is modeled as one plain string (not a char array) at the\n// public prop boundary — the same \"one value, not N independent\n// pieces\" reasoning core/rating.ts's module comment gives for\n// Rating — with valueToChars/charsToValue as the pure conversion to\n// and from the fixed-length array the boxes render from.\n// ============================================================\n\nexport type OTPInputType = \"numeric\" | \"alphanumeric\";\n\nexport interface OTPInputCoreProps extends FieldProps {\n /** Number of boxes. Default 6. */\n length?: number;\n /** Which characters are accepted. Default \"numeric\". */\n type?: OTPInputType;\n /** Renders each filled box as a dot instead of the character — the \"Pin Input\" variant of this same component. Default false. */\n mask?: boolean;\n}\n\nexport interface OTPInputState extends FieldState {\n length: number;\n type: OTPInputType;\n isMasked: boolean;\n}\n\nexport function resolveOTPInputState(props: OTPInputCoreProps): OTPInputState {\n return {\n ...resolveFieldState(props),\n // ?? throughout, never || (CONTRACT.md Rule 3).\n length: props.length ?? 6,\n type: props.type ?? \"numeric\",\n isMasked: props.mask ?? false,\n };\n}\n\nconst NUMERIC_RE = /^[0-9]$/;\nconst ALPHANUMERIC_RE = /^[a-zA-Z0-9]$/;\n\n/** Whether a single character is acceptable for the given type. Deliberately rejects anything but a single character — multi-character strings go through sanitizeText instead. */\nexport function isCharValid(char: string, type: OTPInputType): boolean {\n if (char.length !== 1) return false;\n return type === \"numeric\" ? NUMERIC_RE.test(char) : ALPHANUMERIC_RE.test(char);\n}\n\n/** Splits a value string into a fixed-length array of single characters, padded with \"\" for unfilled slots and truncated if longer than `length` — what each box renders from. */\nexport function valueToChars(value: string, length: number): string[] {\n const chars = value.split(\"\").slice(0, length);\n while (chars.length < length) chars.push(\"\");\n return chars;\n}\n\n/** Inverse of valueToChars. Empty slots contribute nothing, so a gap left by clearing a middle box collapses the value — the same simplifying assumption most segmented OTP widgets make, since the box-focus/backspace flow in the React layer is written to never leave a gap in normal use. */\nexport function charsToValue(chars: readonly string[]): string {\n return chars.join(\"\");\n}\n\n/** Filters arbitrary text (a paste, or a multi-character IME commit) down to only the characters this OTPInput's `type` accepts, in order, capped at `length`. */\nexport function sanitizeText(text: string, length: number, type: OTPInputType): string {\n let result = \"\";\n for (const char of text) {\n if (result.length >= length) break;\n if (isCharValid(char, type)) result += char;\n }\n return result;\n}\n\nexport function isComplete(value: string, length: number): boolean {\n return value.length === length;\n}\n\nexport function getRootClasses(state: OTPInputState, className?: string): string {\n return [\n \"nx-otp-input\",\n `nx-otp-input--${state.size}`,\n state.isDisabled && \"nx-otp-input--disabled\",\n state.isInvalid && \"nx-otp-input--invalid\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\nexport function getBoxClasses(filled: boolean, isInvalid: boolean): string {\n return [\n \"nx-otp-input__box\",\n filled && \"nx-otp-input__box--filled\",\n isInvalid && \"nx-otp-input__box--invalid\",\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\nexport function getBoxAriaProps(state: OTPInputState, index: number, describedBy?: string) {\n return {\n ...getFieldAriaProps(state, describedBy),\n \"aria-label\": `${state.isMasked ? \"PIN digit\" : \"Code character\"} ${index + 1} of ${state.length}`,\n };\n}\n","import React, { forwardRef, useId, useState } from \"react\";\nimport {\n resolvePhoneInputState,\n parsePhoneValue,\n formatPhoneValue,\n sanitizeDigits,\n toSelectOptions,\n type PhoneInputCoreProps,\n} from \"../core/phone-input\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { Input } from \"./Input\";\nimport { Select } from \"./Select\";\nimport \"./PhoneInput.css\";\n\n// ============================================================\n// PHONE INPUT — React layer over core/phone-input.ts (Category B).\n//\n// Composes the real Input (for the local-number field, label,\n// helper/error text) and the real Select (for the country/dial-code\n// picker, placed in Input's own `prefix` slot) rather than\n// reimplementing either — CONTRACT.md Rule 12. Both already carry\n// their own theme/color override machinery, ref forwarding, and (for\n// Select) ThemedPortal, so PhoneInput doesn't re-wrap any of that\n// itself: forwarding `theme`/`color` straight to Input is enough,\n// because Select renders inside the same subtree Input's own\n// withThemeOverride/withAccentOverride wraps, and inherits via the\n// normal CSS cascade — including through Select's portal, since\n// ThemedPortal reads the nearest data-theme/data-accent ancestor at\n// the anchor, which is exactly the node Input's wrapper set. This is\n// also what resolves the CONTRACT.md Rule 6 vs. BUILDING-COMPONENTS.md\n// table discrepancy over whether PhoneInput needs ThemedPortal: it\n// never calls ThemedPortal directly (matching the table's ❌ on that\n// column), but it portals anyway, transitively, through Select\n// (matching Rule 6 listing PhoneInput among the portal components).\n//\n// The country selector's position is local UI state, independent of\n// the controlled/uncontrolled `value` string: picking a country\n// before typing any digits has nothing to persist into \"+<dialCode>\"\n// yet (core/phone-input.ts's formatPhoneValue deliberately returns \"\"\n// for empty local digits, so a value round-trip can't be used to\n// remember it) — so it's tracked here directly and only overridden\n// by whatever the current value's own dial code parses to once\n// digits exist, which is what lets a parent setting a full E.164\n// value still correctly flip the selector.\n//\n// Ref forwarding goes straight to Input's own forwarded ref (the\n// real local-number <input>) — the one element in this component a\n// consumer would plausibly focus imperatively.\n// ============================================================\n\ninterface PhoneInputProps extends PhoneInputCoreProps, BaseComponentProps {\n value?: string;\n defaultValue?: string;\n /** Fires with the recombined E.164-ish value (\"+<dialCode><digits>\") on every change to either the country or the digits. */\n onChange?: (value: string) => void;\n /** Fires whenever the selected country changes, independent of onChange. */\n onCountryChange?: (iso2: string) => void;\n label?: string;\n helperText?: string;\n errorText?: string;\n error?: boolean;\n placeholder?: string;\n id?: string;\n}\n\nexport const PhoneInput = forwardRef<HTMLInputElement, PhoneInputProps>(function PhoneInput(\n {\n value,\n defaultValue,\n onChange,\n onCountryChange,\n label,\n helperText,\n errorText,\n error,\n placeholder,\n id,\n className,\n style,\n theme,\n color,\n ...rest\n },\n forwardedRef\n) {\n const state = resolvePhoneInputState(rest);\n const uid = useId();\n const inputId = id ?? `nx-phone-input-${uid}`;\n\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<string>(defaultValue ?? \"\");\n const currentValue = isControlled ? value! : internalValue;\n\n const [localIso2, setLocalIso2] = useState<string>(\n () => parsePhoneValue(defaultValue ?? value, state.countries, state.defaultCountry).iso2\n );\n\n const parsed = parsePhoneValue(currentValue, state.countries, state.defaultCountry);\n // The value's own dial code wins once digits exist (so an\n // externally-set full number always shows the right country);\n // below that, the locally-selected country persists (see module\n // comment on why a value round-trip can't carry it).\n const iso2 = parsed.localDigits ? parsed.iso2 : localIso2;\n const localDigits = parsed.localDigits;\n\n function commit(next: string) {\n if (!isControlled) setInternalValue(next);\n onChange?.(next);\n }\n\n function handleNumberChange(raw: string) {\n if (state.isDisabled) return;\n commit(formatPhoneValue(iso2, sanitizeDigits(raw), state.countries));\n }\n\n function handleCountryChange(nextValue: string | string[] | null) {\n if (state.isDisabled || typeof nextValue !== \"string\") return;\n setLocalIso2(nextValue);\n onCountryChange?.(nextValue);\n commit(formatPhoneValue(nextValue, localDigits, state.countries));\n }\n\n return (\n <Input\n ref={forwardedRef}\n id={inputId}\n type=\"tel\"\n inputMode=\"tel\"\n label={label}\n helperText={helperText}\n errorText={errorText}\n error={error}\n disabled={state.isDisabled}\n required={state.isRequired}\n size={state.size}\n placeholder={placeholder}\n value={localDigits}\n onChange={(e) => handleNumberChange(e.target.value)}\n className={className}\n style={style}\n theme={theme}\n color={color}\n prefix={\n <Select\n aria-label=\"Country code\"\n options={toSelectOptions(state.countries)}\n value={iso2}\n onValueChange={handleCountryChange}\n disabled={state.isDisabled}\n size={state.size}\n className=\"nx-phone-input__country-select\"\n />\n }\n />\n );\n});\n","import { resolveFieldState, type FieldProps, type FieldState } from \"./field\";\nimport type { SelectOptionItem } from \"./select\";\n\n// ============================================================\n// PHONE INPUT — pure core (Category B: form/input primitive).\n//\n// CONTRACT.md Rule 6 lists PhoneInput among the components that\n// \"render outside their own DOM subtree\" and must go through\n// ThemedPortal — but BUILDING-COMPONENTS.md's own build table marks\n// PhoneInput's ThemedPortal column ❌ (row 21). Both are right at\n// once, resolved by Rule 12 (compose, don't reimplement): the React\n// layer composes the real `Select` (Category D) for the country/\n// dial-code picker inside `Input`'s own `prefix` slot, rather than\n// hand-rolling a second country dropdown. PhoneInput itself never\n// calls ThemedPortal directly (matching the table's ❌) — but it\n// portals anyway, transitively, because Select does (matching the\n// contract's listing). Worth a doc note on the component itself, not\n// just here, since a future reader hitting the same discrepancy\n// shouldn't have to re-derive this.\n//\n// The public value is one E.164-ish string (\"+14155552671\") rather\n// than a {country, number} object — the same \"one value at the\n// prop boundary\" choice core/otp-input.ts makes — with\n// parsePhoneValue/formatPhoneValue as the pure conversion to and\n// from the country + local-digits pair the UI actually edits.\n// ============================================================\n\nexport interface PhoneCountry {\n iso2: string;\n name: string;\n /** Digits only, no \"+\". */\n dialCode: string;\n /** Emoji flag — zero-dependency, no icon/image asset needed. */\n flag: string;\n}\n\n/**\n * Builds a flag emoji from an ISO 3166-1 alpha-2 code via Unicode\n * regional indicator symbols — computed rather than hand-typed for\n * DEFAULT_COUNTRIES' 240 entries, so there's no per-entry emoji to\n * transcribe (and get wrong). A consumer's own `countries` list can\n * still supply any string it wants for `flag`, including this same\n * helper if useful.\n */\nexport function isoToFlagEmoji(iso2: string): string {\n const codePoints = [...iso2.toUpperCase()].map((char) => 127397 + char.charCodeAt(0));\n return String.fromCodePoint(...codePoints);\n}\n\n// Name + ISO 3166-1 alpha-2 + calling code for 240 countries and\n// territories, transcribed from the person's own reference list\n// (not researched independently). Where a territory shares its\n// region's calling code plus an area code (American Samoa \"1-684\",\n// Guernsey \"44-1481\", etc.), the area code is folded into `dialCode`\n// with the dash stripped (\"1684\", \"441481\") — the same encoding the\n// source list itself uses — which is also what correctly\n// distinguishes it from its parent region in\n// findCountryByDialCode's longest-prefix match. Three territories\n// in the source list carry more than one area code (Dominican\n// Republic: 809/829/849; Puerto Rico: 787/939) — only the first is\n// kept as `dialCode`, a simplification most phone-input libraries\n// make in the same spot, since one country entry can only carry one\n// dial code here.\nconst RAW_COUNTRIES: Array<[iso2: string, name: string, dialCode: string]> = [\n [\"AF\", \"Afghanistan\", \"93\"],\n [\"AL\", \"Albania\", \"355\"],\n [\"DZ\", \"Algeria\", \"213\"],\n [\"AS\", \"American Samoa\", \"1684\"],\n [\"AD\", \"Andorra\", \"376\"],\n [\"AO\", \"Angola\", \"244\"],\n [\"AI\", \"Anguilla\", \"1264\"],\n [\"AQ\", \"Antarctica\", \"672\"],\n [\"AG\", \"Antigua and Barbuda\", \"1268\"],\n [\"AR\", \"Argentina\", \"54\"],\n [\"AM\", \"Armenia\", \"374\"],\n [\"AW\", \"Aruba\", \"297\"],\n [\"AU\", \"Australia\", \"61\"],\n [\"AT\", \"Austria\", \"43\"],\n [\"AZ\", \"Azerbaijan\", \"994\"],\n [\"BS\", \"Bahamas\", \"1242\"],\n [\"BH\", \"Bahrain\", \"973\"],\n [\"BD\", \"Bangladesh\", \"880\"],\n [\"BB\", \"Barbados\", \"1246\"],\n [\"BY\", \"Belarus\", \"375\"],\n [\"BE\", \"Belgium\", \"32\"],\n [\"BZ\", \"Belize\", \"501\"],\n [\"BJ\", \"Benin\", \"229\"],\n [\"BM\", \"Bermuda\", \"1441\"],\n [\"BT\", \"Bhutan\", \"975\"],\n [\"BO\", \"Bolivia\", \"591\"],\n [\"BA\", \"Bosnia and Herzegovina\", \"387\"],\n [\"BW\", \"Botswana\", \"267\"],\n [\"BR\", \"Brazil\", \"55\"],\n [\"IO\", \"British Indian Ocean Territory\", \"246\"],\n [\"VG\", \"British Virgin Islands\", \"1284\"],\n [\"BN\", \"Brunei\", \"673\"],\n [\"BG\", \"Bulgaria\", \"359\"],\n [\"BF\", \"Burkina Faso\", \"226\"],\n [\"BI\", \"Burundi\", \"257\"],\n [\"KH\", \"Cambodia\", \"855\"],\n [\"CM\", \"Cameroon\", \"237\"],\n [\"US\", \"United States\", \"1\"],\n [\"CA\", \"Canada\", \"1\"],\n [\"CV\", \"Cape Verde\", \"238\"],\n [\"KY\", \"Cayman Islands\", \"1345\"],\n [\"CF\", \"Central African Republic\", \"236\"],\n [\"TD\", \"Chad\", \"235\"],\n [\"CL\", \"Chile\", \"56\"],\n [\"CN\", \"China\", \"86\"],\n [\"CX\", \"Christmas Island\", \"61\"],\n [\"CC\", \"Cocos Islands\", \"61\"],\n [\"CO\", \"Colombia\", \"57\"],\n [\"KM\", \"Comoros\", \"269\"],\n [\"CK\", \"Cook Islands\", \"682\"],\n [\"CR\", \"Costa Rica\", \"506\"],\n [\"HR\", \"Croatia\", \"385\"],\n [\"CU\", \"Cuba\", \"53\"],\n [\"CW\", \"Curacao\", \"599\"],\n [\"CY\", \"Cyprus\", \"357\"],\n [\"CZ\", \"Czech Republic\", \"420\"],\n [\"CD\", \"Democratic Republic of the Congo\", \"243\"],\n [\"DK\", \"Denmark\", \"45\"],\n [\"DJ\", \"Djibouti\", \"253\"],\n [\"DM\", \"Dominica\", \"1767\"],\n [\"DO\", \"Dominican Republic\", \"1809\"],\n [\"TL\", \"East Timor\", \"670\"],\n [\"EC\", \"Ecuador\", \"593\"],\n [\"EG\", \"Egypt\", \"20\"],\n [\"SV\", \"El Salvador\", \"503\"],\n [\"GQ\", \"Equatorial Guinea\", \"240\"],\n [\"ER\", \"Eritrea\", \"291\"],\n [\"EE\", \"Estonia\", \"372\"],\n [\"ET\", \"Ethiopia\", \"251\"],\n [\"FK\", \"Falkland Islands\", \"500\"],\n [\"FO\", \"Faroe Islands\", \"298\"],\n [\"FJ\", \"Fiji\", \"679\"],\n [\"FI\", \"Finland\", \"358\"],\n [\"FR\", \"France\", \"33\"],\n [\"PF\", \"French Polynesia\", \"689\"],\n [\"GA\", \"Gabon\", \"241\"],\n [\"GM\", \"Gambia\", \"220\"],\n [\"GE\", \"Georgia\", \"995\"],\n [\"DE\", \"Germany\", \"49\"],\n [\"GH\", \"Ghana\", \"233\"],\n [\"GI\", \"Gibraltar\", \"350\"],\n [\"GR\", \"Greece\", \"30\"],\n [\"GL\", \"Greenland\", \"299\"],\n [\"GD\", \"Grenada\", \"1473\"],\n [\"GU\", \"Guam\", \"1671\"],\n [\"GT\", \"Guatemala\", \"502\"],\n [\"GG\", \"Guernsey\", \"441481\"],\n [\"GN\", \"Guinea\", \"224\"],\n [\"GW\", \"Guinea-Bissau\", \"245\"],\n [\"GY\", \"Guyana\", \"592\"],\n [\"HT\", \"Haiti\", \"509\"],\n [\"HN\", \"Honduras\", \"504\"],\n [\"HK\", \"Hong Kong\", \"852\"],\n [\"HU\", \"Hungary\", \"36\"],\n [\"IS\", \"Iceland\", \"354\"],\n [\"IN\", \"India\", \"91\"],\n [\"ID\", \"Indonesia\", \"62\"],\n [\"IR\", \"Iran\", \"98\"],\n [\"IQ\", \"Iraq\", \"964\"],\n [\"IE\", \"Ireland\", \"353\"],\n [\"IM\", \"Isle of Man\", \"441624\"],\n [\"IL\", \"Israel\", \"972\"],\n [\"IT\", \"Italy\", \"39\"],\n [\"CI\", \"Ivory Coast\", \"225\"],\n [\"JM\", \"Jamaica\", \"1876\"],\n [\"JP\", \"Japan\", \"81\"],\n [\"JE\", \"Jersey\", \"441534\"],\n [\"JO\", \"Jordan\", \"962\"],\n [\"KZ\", \"Kazakhstan\", \"7\"],\n [\"KE\", \"Kenya\", \"254\"],\n [\"KI\", \"Kiribati\", \"686\"],\n [\"XK\", \"Kosovo\", \"383\"],\n [\"KW\", \"Kuwait\", \"965\"],\n [\"KG\", \"Kyrgyzstan\", \"996\"],\n [\"LA\", \"Laos\", \"856\"],\n [\"LV\", \"Latvia\", \"371\"],\n [\"LB\", \"Lebanon\", \"961\"],\n [\"LS\", \"Lesotho\", \"266\"],\n [\"LR\", \"Liberia\", \"231\"],\n [\"LY\", \"Libya\", \"218\"],\n [\"LI\", \"Liechtenstein\", \"423\"],\n [\"LT\", \"Lithuania\", \"370\"],\n [\"LU\", \"Luxembourg\", \"352\"],\n [\"MO\", \"Macau\", \"853\"],\n [\"MK\", \"Macedonia\", \"389\"],\n [\"MG\", \"Madagascar\", \"261\"],\n [\"MW\", \"Malawi\", \"265\"],\n [\"MY\", \"Malaysia\", \"60\"],\n [\"MV\", \"Maldives\", \"960\"],\n [\"ML\", \"Mali\", \"223\"],\n [\"MT\", \"Malta\", \"356\"],\n [\"MH\", \"Marshall Islands\", \"692\"],\n [\"MR\", \"Mauritania\", \"222\"],\n [\"MU\", \"Mauritius\", \"230\"],\n [\"YT\", \"Mayotte\", \"262\"],\n [\"MX\", \"Mexico\", \"52\"],\n [\"FM\", \"Micronesia\", \"691\"],\n [\"MD\", \"Moldova\", \"373\"],\n [\"MC\", \"Monaco\", \"377\"],\n [\"MN\", \"Mongolia\", \"976\"],\n [\"ME\", \"Montenegro\", \"382\"],\n [\"MS\", \"Montserrat\", \"1664\"],\n [\"MA\", \"Morocco\", \"212\"],\n [\"MZ\", \"Mozambique\", \"258\"],\n [\"MM\", \"Myanmar\", \"95\"],\n [\"NA\", \"Namibia\", \"264\"],\n [\"NR\", \"Nauru\", \"674\"],\n [\"NP\", \"Nepal\", \"977\"],\n [\"NL\", \"Netherlands\", \"31\"],\n [\"AN\", \"Netherlands Antilles\", \"599\"],\n [\"NC\", \"New Caledonia\", \"687\"],\n [\"NZ\", \"New Zealand\", \"64\"],\n [\"NI\", \"Nicaragua\", \"505\"],\n [\"NE\", \"Niger\", \"227\"],\n [\"NG\", \"Nigeria\", \"234\"],\n [\"NU\", \"Niue\", \"683\"],\n [\"KP\", \"North Korea\", \"850\"],\n [\"MP\", \"Northern Mariana Islands\", \"1670\"],\n [\"NO\", \"Norway\", \"47\"],\n [\"OM\", \"Oman\", \"968\"],\n [\"PK\", \"Pakistan\", \"92\"],\n [\"PW\", \"Palau\", \"680\"],\n [\"PS\", \"Palestine\", \"970\"],\n [\"PA\", \"Panama\", \"507\"],\n [\"PG\", \"Papua New Guinea\", \"675\"],\n [\"PY\", \"Paraguay\", \"595\"],\n [\"PE\", \"Peru\", \"51\"],\n [\"PH\", \"Philippines\", \"63\"],\n [\"PN\", \"Pitcairn\", \"64\"],\n [\"PL\", \"Poland\", \"48\"],\n [\"PT\", \"Portugal\", \"351\"],\n [\"PR\", \"Puerto Rico\", \"1787\"],\n [\"QA\", \"Qatar\", \"974\"],\n [\"CG\", \"Republic of the Congo\", \"242\"],\n [\"RE\", \"Reunion\", \"262\"],\n [\"RO\", \"Romania\", \"40\"],\n [\"RU\", \"Russia\", \"7\"],\n [\"RW\", \"Rwanda\", \"250\"],\n [\"BL\", \"Saint Barthelemy\", \"590\"],\n [\"SH\", \"Saint Helena\", \"290\"],\n [\"KN\", \"Saint Kitts and Nevis\", \"1869\"],\n [\"LC\", \"Saint Lucia\", \"1758\"],\n [\"MF\", \"Saint Martin\", \"590\"],\n [\"PM\", \"Saint Pierre and Miquelon\", \"508\"],\n [\"VC\", \"Saint Vincent and the Grenadines\", \"1784\"],\n [\"WS\", \"Samoa\", \"685\"],\n [\"SM\", \"San Marino\", \"378\"],\n [\"ST\", \"Sao Tome and Principe\", \"239\"],\n [\"SA\", \"Saudi Arabia\", \"966\"],\n [\"SN\", \"Senegal\", \"221\"],\n [\"RS\", \"Serbia\", \"381\"],\n [\"SC\", \"Seychelles\", \"248\"],\n [\"SL\", \"Sierra Leone\", \"232\"],\n [\"SG\", \"Singapore\", \"65\"],\n [\"SX\", \"Sint Maarten\", \"1721\"],\n [\"SK\", \"Slovakia\", \"421\"],\n [\"SI\", \"Slovenia\", \"386\"],\n [\"SB\", \"Solomon Islands\", \"677\"],\n [\"SO\", \"Somalia\", \"252\"],\n [\"ZA\", \"South Africa\", \"27\"],\n [\"KR\", \"South Korea\", \"82\"],\n [\"SS\", \"South Sudan\", \"211\"],\n [\"ES\", \"Spain\", \"34\"],\n [\"LK\", \"Sri Lanka\", \"94\"],\n [\"SD\", \"Sudan\", \"249\"],\n [\"SR\", \"Suriname\", \"597\"],\n [\"SJ\", \"Svalbard and Jan Mayen\", \"47\"],\n [\"SZ\", \"Swaziland\", \"268\"],\n [\"SE\", \"Sweden\", \"46\"],\n [\"CH\", \"Switzerland\", \"41\"],\n [\"SY\", \"Syria\", \"963\"],\n [\"TW\", \"Taiwan\", \"886\"],\n [\"TJ\", \"Tajikistan\", \"992\"],\n [\"TZ\", \"Tanzania\", \"255\"],\n [\"TH\", \"Thailand\", \"66\"],\n [\"TG\", \"Togo\", \"228\"],\n [\"TK\", \"Tokelau\", \"690\"],\n [\"TO\", \"Tonga\", \"676\"],\n [\"TT\", \"Trinidad and Tobago\", \"1868\"],\n [\"TN\", \"Tunisia\", \"216\"],\n [\"TR\", \"Turkey\", \"90\"],\n [\"TM\", \"Turkmenistan\", \"993\"],\n [\"TC\", \"Turks and Caicos Islands\", \"1649\"],\n [\"TV\", \"Tuvalu\", \"688\"],\n [\"VI\", \"U.S. Virgin Islands\", \"1340\"],\n [\"UG\", \"Uganda\", \"256\"],\n [\"UA\", \"Ukraine\", \"380\"],\n [\"AE\", \"United Arab Emirates\", \"971\"],\n [\"GB\", \"United Kingdom\", \"44\"],\n [\"UY\", \"Uruguay\", \"598\"],\n [\"UZ\", \"Uzbekistan\", \"998\"],\n [\"VU\", \"Vanuatu\", \"678\"],\n [\"VA\", \"Vatican\", \"379\"],\n [\"VE\", \"Venezuela\", \"58\"],\n [\"VN\", \"Vietnam\", \"84\"],\n [\"WF\", \"Wallis and Futuna\", \"681\"],\n [\"EH\", \"Western Sahara\", \"212\"],\n [\"YE\", \"Yemen\", \"967\"],\n [\"ZM\", \"Zambia\", \"260\"],\n [\"ZW\", \"Zimbabwe\", \"263\"],\n];\n\nexport const DEFAULT_COUNTRIES: PhoneCountry[] = RAW_COUNTRIES.map(([iso2, name, dialCode]) => ({\n iso2,\n name,\n dialCode,\n flag: isoToFlagEmoji(iso2),\n}));\n\nexport interface PhoneInputCoreProps extends FieldProps {\n /** Overrides DEFAULT_COUNTRIES with a consumer-supplied list. */\n countries?: PhoneCountry[];\n /** ISO 3166-1 alpha-2 code to preselect when the value has no recognizable dial code yet. Default \"US\". */\n defaultCountry?: string;\n}\n\nexport interface PhoneInputState extends FieldState {\n countries: PhoneCountry[];\n defaultCountry: string;\n}\n\nexport function resolvePhoneInputState(props: PhoneInputCoreProps): PhoneInputState {\n return {\n ...resolveFieldState(props),\n countries: props.countries ?? DEFAULT_COUNTRIES,\n // ?? not || (CONTRACT.md Rule 3).\n defaultCountry: props.defaultCountry ?? \"US\",\n };\n}\n\nexport function findCountryByIso2(countries: readonly PhoneCountry[], iso2: string): PhoneCountry | undefined {\n return countries.find((c) => c.iso2 === iso2);\n}\n\n/**\n * Finds the country whose dial code is the longest prefix of `digits`\n * — longest first, since dial codes overlap in length (e.g. \"1\" for\n * US/CA vs \"1684\" for American Samoa) and the longest match is\n * always the correct one for a well-formed E.164 number. Where two\n * countries share the exact same dial code length (US and Canada\n * both plain \"1\"), whichever comes first in the `countries` array\n * wins — DEFAULT_COUNTRIES lists United States before Canada for\n * this reason, but a custom `countries` list controls its own order.\n */\nexport function findCountryByDialCode(countries: readonly PhoneCountry[], digits: string): PhoneCountry | undefined {\n const sorted = [...countries].sort((a, b) => b.dialCode.length - a.dialCode.length);\n return sorted.find((c) => digits.startsWith(c.dialCode));\n}\n\n/** Strips everything but digits — used both for the local-number field's keystroke filter and for parsing a pasted/incoming value. */\nexport function sanitizeDigits(raw: string): string {\n return raw.replace(/\\D/g, \"\");\n}\n\n/**\n * Splits a public E.164-ish value (\"+14155552671\") into the country\n * it identifies plus the remaining local digits. A value with no\n * recognizable dial code (including \"\" / undefined) falls back to\n * `fallbackIso2`, treating the whole thing as local digits.\n */\nexport function parsePhoneValue(\n value: string | undefined,\n countries: readonly PhoneCountry[],\n fallbackIso2: string\n): { iso2: string; localDigits: string } {\n const digits = sanitizeDigits(value ?? \"\");\n const match = findCountryByDialCode(countries, digits);\n if (match) {\n return { iso2: match.iso2, localDigits: digits.slice(match.dialCode.length) };\n }\n const fallback = findCountryByIso2(countries, fallbackIso2) ?? countries[0];\n return { iso2: fallback?.iso2 ?? fallbackIso2, localDigits: digits };\n}\n\n/** Inverse of parsePhoneValue's split — recombines a country + local digits into the public E.164-ish string. Empty local digits yields \"\" (no dangling \"+1\" with nothing typed yet). */\nexport function formatPhoneValue(iso2: string, localDigits: string, countries: readonly PhoneCountry[]): string {\n if (!localDigits) return \"\";\n const country = findCountryByIso2(countries, iso2);\n return country ? `+${country.dialCode}${localDigits}` : localDigits;\n}\n\n/**\n * A generic length check (4–14 local digits), not real per-country\n * numbering-plan validation — the same \"good enough without a data\n * dependency\" tradeoff DEFAULT_COUNTRIES makes. A consumer needing\n * exact validation composes their own check (e.g. via a libphonenumber\n * import) against the parsed value.\n */\nexport function isValidLocalNumber(localDigits: string): boolean {\n return localDigits.length >= 4 && localDigits.length <= 14;\n}\n\n/**\n * `label` is what the open listbox shows per row: the full country\n * `name` + dial code (\"United States +1\"), no flag. `triggerLabel`\n * is what the closed, fixed-width trigger shows instead: ISO2 +\n * dial code, also no flag (\"US +1\"). Neither includes the flag\n * emoji, and deliberately so — it has no reliable fallback glyph, so\n * on a system without a color-emoji font it renders as its two bare\n * regional-indicator letters (e.g. \"us\"). That sits right next to\n * the ISO2/name text right after it and reads as the country printed\n * twice — confirmed to happen in both the trigger AND the listbox\n * rows, not just the trigger as originally assumed, so it's left out\n * of both rather than just the trigger. Using the full `name` (not\n * just ISO2) in the listbox is also what makes the per-option\n * typeahead in Select actually match on country name.\n */\nexport function toSelectOptions(countries: readonly PhoneCountry[]): SelectOptionItem[] {\n return countries.map((c) => ({\n value: c.iso2,\n label: `${c.name} +${c.dialCode}`,\n triggerLabel: `${c.iso2} +${c.dialCode}`,\n }));\n}\n\nexport function getRootClasses(className?: string): string {\n return [\"nx-phone-input\", className].filter(Boolean).join(\" \");\n}","import React, { forwardRef } from \"react\";\nimport { getTrendDirection, formatTrend, getTrendClasses } from \"../core/stat-card\";\nimport type { CardVariant, CardPadding } from \"../core/card\";\nimport type { BaseComponentProps } from \"../core/types\";\nimport { Card } from \"./Card\";\nimport { TrendingUpIcon, TrendingDownIcon, MinusIcon } from \"../icons/react\";\nimport \"./StatCard.css\";\n\n// ============================================================\n// STAT CARD — React layer over core/stat-card.ts (Category A).\n//\n// Composes the real Card for all chrome (elevation/border/padding —\n// CONTRACT.md Rule 12) instead of reimplementing it; StatCard's own\n// markup is just the label/value/trend content passed as Card's\n// children. Ref forwarding, theme/color overrides, and disabled\n// styling are all Card's own — StatCard forwards `ref`/`theme`/\n// `color` straight through rather than re-wrapping any of it (same\n// reasoning as react/PhoneInput.tsx forwarding to Input/Select).\n// ============================================================\n\nconst TREND_ICONS = {\n up: TrendingUpIcon,\n down: TrendingDownIcon,\n flat: MinusIcon,\n} as const;\n\ninterface StatCardProps extends BaseComponentProps {\n label: string;\n value: string | number;\n /** Percentage change, e.g. 12.5 or -3. Omit to render no trend indicator at all. */\n trend?: number;\n /** Context for the trend, e.g. \"vs last month\". Only rendered alongside a trend. */\n trendLabel?: string;\n icon?: React.ReactNode;\n variant?: CardVariant;\n padding?: CardPadding;\n disabled?: boolean;\n}\n\nexport const StatCard = forwardRef<HTMLDivElement, StatCardProps>(function StatCard(\n { label, value, trend, trendLabel, icon, variant, padding, disabled, className, style, theme, color },\n ref\n) {\n const direction = getTrendDirection(trend);\n const TrendIcon = direction !== \"none\" ? TREND_ICONS[direction] : null;\n\n return (\n <Card\n ref={ref}\n variant={variant}\n padding={padding}\n disabled={disabled}\n className={className}\n style={style}\n theme={theme}\n color={color}\n >\n <div className=\"nx-stat-card\">\n <div className=\"nx-stat-card__header\">\n {icon && <span className=\"nx-stat-card__icon\">{icon}</span>}\n <span className=\"nx-stat-card__label\">{label}</span>\n </div>\n <div className=\"nx-stat-card__value\">{value}</div>\n {TrendIcon && trend !== undefined && (\n <div className={getTrendClasses(direction)}>\n <TrendIcon className=\"nx-stat-card__trend-icon\" aria-hidden=\"true\" />\n <span>{formatTrend(trend)}</span>\n {trendLabel && <span className=\"nx-stat-card__trend-label\">{trendLabel}</span>}\n </div>\n )}\n </div>\n </Card>\n );\n});\n","// ============================================================\n// STAT CARD — pure core (Category A: display/surface).\n//\n// Not one of the original 42, but shares Category A's defining\n// trait: nothing here reads back a value the consumer set (no\n// controlled/uncontrolled state, no onChange) — it's read-only\n// display, composed on top of the real Card (CONTRACT.md Rule 12)\n// rather than reimplementing card chrome (elevation/border/padding\n// variants) a second time.\n//\n// The up/down/flat trend indicator is semantic (good vs. bad\n// movement), not brand identity, so it's colored from\n// --color-success-*/--color-danger-* — never the accent system\n// (CONTRACT.md Rule 5b: success/danger/warning/info stay\n// theme-defined so their meaning can't be redefined by a color prop).\n// ============================================================\n\nexport type TrendDirection = \"up\" | \"down\" | \"flat\" | \"none\";\n\n/** \"none\" when no trend was given at all — distinct from \"flat\" (a trend of exactly 0), which still renders a neutral indicator rather than omitting it. */\nexport function getTrendDirection(trend: number | undefined): TrendDirection {\n if (trend === undefined) return \"none\";\n if (trend > 0) return \"up\";\n if (trend < 0) return \"down\";\n return \"flat\";\n}\n\n/** Formats a trend number as a signed percentage string (\"+12.5%\", \"-3%\", \"0%\"), trimming a trailing \".0\". */\nexport function formatTrend(trend: number): string {\n const rounded = Math.round(trend * 10) / 10;\n const sign = rounded > 0 ? \"+\" : \"\";\n const text = Number.isInteger(rounded) ? String(rounded) : rounded.toFixed(1);\n return `${sign}${text}%`;\n}\n\nexport function getTrendClasses(direction: TrendDirection): string {\n return [\"nx-stat-card__trend\", `nx-stat-card__trend--${direction}`].filter(Boolean).join(\" \");\n}\n","// AUTO-GENERATED by scripts/generate-icons.mjs — do not hand-edit.\n// Re-run the script after adding/removing SVGs in the source directory.\nimport type { ComponentType } from \"react\";\nimport type { IconProps } from \"./types\";\nimport { AlarmCheckIcon } from \"./AlarmCheckIcon\";\nimport { AlarmClockIcon } from \"./AlarmClockIcon\";\nimport { AlarmMinusIcon } from \"./AlarmMinusIcon\";\nimport { AlarmOffIcon } from \"./AlarmOffIcon\";\nimport { AlarmPlusIcon } from \"./AlarmPlusIcon\";\nimport { AlertIcon } from \"./AlertIcon\";\nimport { AlignBottomIcon } from \"./AlignBottomIcon\";\nimport { AlignCenterIcon } from \"./AlignCenterIcon\";\nimport { AlignJustifyIcon } from \"./AlignJustifyIcon\";\nimport { AlignLeftIcon } from \"./AlignLeftIcon\";\nimport { AlignRightIcon } from \"./AlignRightIcon\";\nimport { AlignTopIcon } from \"./AlignTopIcon\";\nimport { AnchorIcon } from \"./AnchorIcon\";\nimport { AngryIcon } from \"./AngryIcon\";\nimport { AnnoyedIcon } from \"./AnnoyedIcon\";\nimport { AntennaIcon } from \"./AntennaIcon\";\nimport { ArrowDownIcon } from \"./ArrowDownIcon\";\nimport { ArrowDownLeftIcon } from \"./ArrowDownLeftIcon\";\nimport { ArrowDownRightIcon } from \"./ArrowDownRightIcon\";\nimport { ArrowLeftIcon } from \"./ArrowLeftIcon\";\nimport { ArrowLeftRightIcon } from \"./ArrowLeftRightIcon\";\nimport { ArrowRightIcon } from \"./ArrowRightIcon\";\nimport { ArrowUpDownIcon } from \"./ArrowUpDownIcon\";\nimport { ArrowUpIcon } from \"./ArrowUpIcon\";\nimport { ArrowUpLeftIcon } from \"./ArrowUpLeftIcon\";\nimport { ArrowUpRightIcon } from \"./ArrowUpRightIcon\";\nimport { AtSignIcon } from \"./AtSignIcon\";\nimport { AwardIcon } from \"./AwardIcon\";\nimport { BabyIcon } from \"./BabyIcon\";\nimport { BadgeIcon } from \"./BadgeIcon\";\nimport { BanIcon } from \"./BanIcon\";\nimport { BankIcon } from \"./BankIcon\";\nimport { BatteryChargeIcon } from \"./BatteryChargeIcon\";\nimport { BatteryFullIcon } from \"./BatteryFullIcon\";\nimport { BatteryIcon } from \"./BatteryIcon\";\nimport { BatteryLowIcon } from \"./BatteryLowIcon\";\nimport { BellDotIcon } from \"./BellDotIcon\";\nimport { BellIcon } from \"./BellIcon\";\nimport { BellOffIcon } from \"./BellOffIcon\";\nimport { BikeIcon } from \"./BikeIcon\";\nimport { BirdIcon } from \"./BirdIcon\";\nimport { BitcoinIcon } from \"./BitcoinIcon\";\nimport { BluetoothIcon } from \"./BluetoothIcon\";\nimport { BluetoothOffIcon } from \"./BluetoothOffIcon\";\nimport { BoatIcon } from \"./BoatIcon\";\nimport { BoltIcon } from \"./BoltIcon\";\nimport { BombIcon } from \"./BombIcon\";\nimport { BookIcon } from \"./BookIcon\";\nimport { BookmarkFilledIcon } from \"./BookmarkFilledIcon\";\nimport { BookmarkIcon } from \"./BookmarkIcon\";\nimport { BotIcon } from \"./BotIcon\";\nimport { BoxIcon } from \"./BoxIcon\";\nimport { BrainIcon } from \"./BrainIcon\";\nimport { BriefcaseIcon } from \"./BriefcaseIcon\";\nimport { BugIcon } from \"./BugIcon\";\nimport { BuildingIcon } from \"./BuildingIcon\";\nimport { BusIcon } from \"./BusIcon\";\nimport { CalculatorIcon } from \"./CalculatorIcon\";\nimport { CalendarAddIcon } from \"./CalendarAddIcon\";\nimport { CalendarIcon } from \"./CalendarIcon\";\nimport { CameraIcon } from \"./CameraIcon\";\nimport { CameraOffIcon } from \"./CameraOffIcon\";\nimport { CameraSwitchIcon } from \"./CameraSwitchIcon\";\nimport { CandlestickIcon } from \"./CandlestickIcon\";\nimport { CaptionsIcon } from \"./CaptionsIcon\";\nimport { CaptionsOffIcon } from \"./CaptionsOffIcon\";\nimport { CarIcon } from \"./CarIcon\";\nimport { CashIcon } from \"./CashIcon\";\nimport { CastIcon } from \"./CastIcon\";\nimport { CatIcon } from \"./CatIcon\";\nimport { CctvIcon } from \"./CctvIcon\";\nimport { CentIcon } from \"./CentIcon\";\nimport { CentSymbolIcon } from \"./CentSymbolIcon\";\nimport { ChartDownIcon } from \"./ChartDownIcon\";\nimport { ChartUpIcon } from \"./ChartUpIcon\";\nimport { CheckCircleIcon } from \"./CheckCircleIcon\";\nimport { CheckIcon } from \"./CheckIcon\";\nimport { ChevronDownIcon } from \"./ChevronDownIcon\";\nimport { ChevronFirstIcon } from \"./ChevronFirstIcon\";\nimport { ChevronLastIcon } from \"./ChevronLastIcon\";\nimport { ChevronLeftIcon } from \"./ChevronLeftIcon\";\nimport { ChevronRightIcon } from \"./ChevronRightIcon\";\nimport { ChevronsDownIcon } from \"./ChevronsDownIcon\";\nimport { ChevronsLeftIcon } from \"./ChevronsLeftIcon\";\nimport { ChevronsRightIcon } from \"./ChevronsRightIcon\";\nimport { ChevronsUpIcon } from \"./ChevronsUpIcon\";\nimport { ChevronUpIcon } from \"./ChevronUpIcon\";\nimport { CigaretteIcon } from \"./CigaretteIcon\";\nimport { CigaretteOffIcon } from \"./CigaretteOffIcon\";\nimport { CircleIcon } from \"./CircleIcon\";\nimport { ClapperboardIcon } from \"./ClapperboardIcon\";\nimport { ClipboardIcon } from \"./ClipboardIcon\";\nimport { ClockIcon } from \"./ClockIcon\";\nimport { CloseIcon } from \"./CloseIcon\";\nimport { CloudDownloadIcon } from \"./CloudDownloadIcon\";\nimport { CloudIcon } from \"./CloudIcon\";\nimport { CloudLightningIcon } from \"./CloudLightningIcon\";\nimport { CloudMoonIcon } from \"./CloudMoonIcon\";\nimport { CloudRainIcon } from \"./CloudRainIcon\";\nimport { CloudSnowIcon } from \"./CloudSnowIcon\";\nimport { CloudSunIcon } from \"./CloudSunIcon\";\nimport { CloudUploadIcon } from \"./CloudUploadIcon\";\nimport { CloudyIcon } from \"./CloudyIcon\";\nimport { CodeIcon } from \"./CodeIcon\";\nimport { CoinIcon } from \"./CoinIcon\";\nimport { ColumnIcon } from \"./ColumnIcon\";\nimport { CompassIcon } from \"./CompassIcon\";\nimport { ContactIcon } from \"./ContactIcon\";\nimport { CopyIcon } from \"./CopyIcon\";\nimport { CornerDownLeftIcon } from \"./CornerDownLeftIcon\";\nimport { CornerDownRightIcon } from \"./CornerDownRightIcon\";\nimport { CornerUpLeftIcon } from \"./CornerUpLeftIcon\";\nimport { CornerUpRightIcon } from \"./CornerUpRightIcon\";\nimport { CpuIcon } from \"./CpuIcon\";\nimport { CreativeCommonsIcon } from \"./CreativeCommonsIcon\";\nimport { CreditCardIcon } from \"./CreditCardIcon\";\nimport { CropIcon } from \"./CropIcon\";\nimport { CrossCircleIcon } from \"./CrossCircleIcon\";\nimport { CrownIcon } from \"./CrownIcon\";\nimport { CutIcon } from \"./CutIcon\";\nimport { CycleIcon } from \"./CycleIcon\";\nimport { DatabaseIcon } from \"./DatabaseIcon\";\nimport { DiaryIcon } from \"./DiaryIcon\";\nimport { DiceFiveIcon } from \"./DiceFiveIcon\";\nimport { DiceFourIcon } from \"./DiceFourIcon\";\nimport { DiceOneIcon } from \"./DiceOneIcon\";\nimport { DiceSixIcon } from \"./DiceSixIcon\";\nimport { DiceThreeIcon } from \"./DiceThreeIcon\";\nimport { DiceTwoIcon } from \"./DiceTwoIcon\";\nimport { DirectionDownIcon } from \"./DirectionDownIcon\";\nimport { DirectionLeftIcon } from \"./DirectionLeftIcon\";\nimport { DirectionRightIcon } from \"./DirectionRightIcon\";\nimport { DirectionUpIcon } from \"./DirectionUpIcon\";\nimport { DiscordFilledIcon } from \"./DiscordFilledIcon\";\nimport { DiscordIcon } from \"./DiscordIcon\";\nimport { DislikeIcon } from \"./DislikeIcon\";\nimport { DogIcon } from \"./DogIcon\";\nimport { DollarIcon } from \"./DollarIcon\";\nimport { DollarSymbolIcon } from \"./DollarSymbolIcon\";\nimport { DotIcon } from \"./DotIcon\";\nimport { DownloadIcon } from \"./DownloadIcon\";\nimport { DragIcon } from \"./DragIcon\";\nimport { DribbbleFilledIcon } from \"./DribbbleFilledIcon\";\nimport { DribbbleIcon } from \"./DribbbleIcon\";\nimport { DropletIcon } from \"./DropletIcon\";\nimport { DropletOffIcon } from \"./DropletOffIcon\";\nimport { EditIcon } from \"./EditIcon\";\nimport { EmergencyIcon } from \"./EmergencyIcon\";\nimport { EqualIcon } from \"./EqualIcon\";\nimport { EraserIcon } from \"./EraserIcon\";\nimport { EthernetIcon } from \"./EthernetIcon\";\nimport { EuroIcon } from \"./EuroIcon\";\nimport { EuroSymbolIcon } from \"./EuroSymbolIcon\";\nimport { ExpandIcon } from \"./ExpandIcon\";\nimport { ExternalLinkIcon } from \"./ExternalLinkIcon\";\nimport { EyeClosedIcon } from \"./EyeClosedIcon\";\nimport { EyeIcon } from \"./EyeIcon\";\nimport { EyeOffIcon } from \"./EyeOffIcon\";\nimport { FacebookFilledIcon } from \"./FacebookFilledIcon\";\nimport { FacebookIcon } from \"./FacebookIcon\";\nimport { FactoryIcon } from \"./FactoryIcon\";\nimport { FastForwardIcon } from \"./FastForwardIcon\";\nimport { FemaleGenderIcon } from \"./FemaleGenderIcon\";\nimport { FigmaFilledIcon } from \"./FigmaFilledIcon\";\nimport { FigmaIcon } from \"./FigmaIcon\";\nimport { FileArchiveIcon } from \"./FileArchiveIcon\";\nimport { FileAudioIcon } from \"./FileAudioIcon\";\nimport { FileChartIcon } from \"./FileChartIcon\";\nimport { FileCheckIcon } from \"./FileCheckIcon\";\nimport { FileCodeIcon } from \"./FileCodeIcon\";\nimport { FileCogIcon } from \"./FileCogIcon\";\nimport { FileCssIcon } from \"./FileCssIcon\";\nimport { FileDatabaseIcon } from \"./FileDatabaseIcon\";\nimport { FileDownloadIcon } from \"./FileDownloadIcon\";\nimport { FileEditIcon } from \"./FileEditIcon\";\nimport { FileEnvIcon } from \"./FileEnvIcon\";\nimport { FileHeartIcon } from \"./FileHeartIcon\";\nimport { FileHtmlIcon } from \"./FileHtmlIcon\";\nimport { FileIcon } from \"./FileIcon\";\nimport { FileImageIcon } from \"./FileImageIcon\";\nimport { FileJsIcon } from \"./FileJsIcon\";\nimport { FileJsonIcon } from \"./FileJsonIcon\";\nimport { FileJsxIcon } from \"./FileJsxIcon\";\nimport { FileLockIcon } from \"./FileLockIcon\";\nimport { FileMdIcon } from \"./FileMdIcon\";\nimport { FileMinusIcon } from \"./FileMinusIcon\";\nimport { FilePdfIcon } from \"./FilePdfIcon\";\nimport { FilePlusIcon } from \"./FilePlusIcon\";\nimport { FilePresentationIcon } from \"./FilePresentationIcon\";\nimport { FileSearchIcon } from \"./FileSearchIcon\";\nimport { FileSpreadsheetIcon } from \"./FileSpreadsheetIcon\";\nimport { FileTextIcon } from \"./FileTextIcon\";\nimport { FileTsIcon } from \"./FileTsIcon\";\nimport { FileTsxIcon } from \"./FileTsxIcon\";\nimport { FileUserIcon } from \"./FileUserIcon\";\nimport { FileVideoIcon } from \"./FileVideoIcon\";\nimport { FileXIcon } from \"./FileXIcon\";\nimport { FilmIcon } from \"./FilmIcon\";\nimport { FilterIcon } from \"./FilterIcon\";\nimport { FingerprintIcon } from \"./FingerprintIcon\";\nimport { FireExtinguisherIcon } from \"./FireExtinguisherIcon\";\nimport { FishIcon } from \"./FishIcon\";\nimport { FlagIcon } from \"./FlagIcon\";\nimport { FlagOffIcon } from \"./FlagOffIcon\";\nimport { FlameIcon } from \"./FlameIcon\";\nimport { FlipHorizontalIcon } from \"./FlipHorizontalIcon\";\nimport { FlipVerticalIcon } from \"./FlipVerticalIcon\";\nimport { FlowerIcon } from \"./FlowerIcon\";\nimport { FolderArchiveIcon } from \"./FolderArchiveIcon\";\nimport { FolderCheckIcon } from \"./FolderCheckIcon\";\nimport { FolderCogIcon } from \"./FolderCogIcon\";\nimport { FolderDownIcon } from \"./FolderDownIcon\";\nimport { FolderDownloadIcon } from \"./FolderDownloadIcon\";\nimport { FolderEditIcon } from \"./FolderEditIcon\";\nimport { FolderHeartIcon } from \"./FolderHeartIcon\";\nimport { FolderIcon } from \"./FolderIcon\";\nimport { FolderLockIcon } from \"./FolderLockIcon\";\nimport { FolderMinusIcon } from \"./FolderMinusIcon\";\nimport { FolderOpenIcon } from \"./FolderOpenIcon\";\nimport { FolderPlusIcon } from \"./FolderPlusIcon\";\nimport { FolderSearchIcon } from \"./FolderSearchIcon\";\nimport { FolderXIcon } from \"./FolderXIcon\";\nimport { FrancIcon } from \"./FrancIcon\";\nimport { FrancSymbolIcon } from \"./FrancSymbolIcon\";\nimport { FrownIcon } from \"./FrownIcon\";\nimport { GamepadIcon } from \"./GamepadIcon\";\nimport { GemIcon } from \"./GemIcon\";\nimport { GhostIcon } from \"./GhostIcon\";\nimport { GiftIcon } from \"./GiftIcon\";\nimport { GithubFilledIcon } from \"./GithubFilledIcon\";\nimport { GithubIcon } from \"./GithubIcon\";\nimport { GlobeIcon } from \"./GlobeIcon\";\nimport { GpuIcon } from \"./GpuIcon\";\nimport { GraduationCapIcon } from \"./GraduationCapIcon\";\nimport { GridIcon } from \"./GridIcon\";\nimport { GroupIcon } from \"./GroupIcon\";\nimport { HandshakeIcon } from \"./HandshakeIcon\";\nimport { HardDriveIcon } from \"./HardDriveIcon\";\nimport { HdmiIcon } from \"./HdmiIcon\";\nimport { HeadphonesIcon } from \"./HeadphonesIcon\";\nimport { HeadphonesOffIcon } from \"./HeadphonesOffIcon\";\nimport { HeartBrokenIcon } from \"./HeartBrokenIcon\";\nimport { HeartFilledIcon } from \"./HeartFilledIcon\";\nimport { HeartIcon } from \"./HeartIcon\";\nimport { HelicopterIcon } from \"./HelicopterIcon\";\nimport { HelpIcon } from \"./HelpIcon\";\nimport { HeptagonIcon } from \"./HeptagonIcon\";\nimport { HexagonIcon } from \"./HexagonIcon\";\nimport { HighlighterIcon } from \"./HighlighterIcon\";\nimport { HistoryIcon } from \"./HistoryIcon\";\nimport { HomeIcon } from \"./HomeIcon\";\nimport { HospitalIcon } from \"./HospitalIcon\";\nimport { HourglassIcon } from \"./HourglassIcon\";\nimport { IdCardIcon } from \"./IdCardIcon\";\nimport { ImageIcon } from \"./ImageIcon\";\nimport { InboxIcon } from \"./InboxIcon\";\nimport { IndentIcon } from \"./IndentIcon\";\nimport { InfoIcon } from \"./InfoIcon\";\nimport { InstagramFilledIcon } from \"./InstagramFilledIcon\";\nimport { InstagramIcon } from \"./InstagramIcon\";\nimport { JoystickIcon } from \"./JoystickIcon\";\nimport { KeyboardIcon } from \"./KeyboardIcon\";\nimport { KeyIcon } from \"./KeyIcon\";\nimport { LaptopIcon } from \"./LaptopIcon\";\nimport { LaughIcon } from \"./LaughIcon\";\nimport { LayersIcon } from \"./LayersIcon\";\nimport { LayersPlusIcon } from \"./LayersPlusIcon\";\nimport { LayoutGridIcon } from \"./LayoutGridIcon\";\nimport { LayoutKanbanIcon } from \"./LayoutKanbanIcon\";\nimport { LayoutListIcon } from \"./LayoutListIcon\";\nimport { LeafIcon } from \"./LeafIcon\";\nimport { LightbulbIcon } from \"./LightbulbIcon\";\nimport { LightbulbOffIcon } from \"./LightbulbOffIcon\";\nimport { LikeIcon } from \"./LikeIcon\";\nimport { LineIcon } from \"./LineIcon\";\nimport { LinkedinFilledIcon } from \"./LinkedinFilledIcon\";\nimport { LinkedinIcon } from \"./LinkedinIcon\";\nimport { LinkIcon } from \"./LinkIcon\";\nimport { LiraIcon } from \"./LiraIcon\";\nimport { LiraSymbolIcon } from \"./LiraSymbolIcon\";\nimport { ListIcon } from \"./ListIcon\";\nimport { LoaderIcon } from \"./LoaderIcon\";\nimport { LoaderSpinnerIcon } from \"./LoaderSpinnerIcon\";\nimport { LockIcon } from \"./LockIcon\";\nimport { MagicIcon } from \"./MagicIcon\";\nimport { MailIcon } from \"./MailIcon\";\nimport { MaleGenderIcon } from \"./MaleGenderIcon\";\nimport { MapPinIcon } from \"./MapPinIcon\";\nimport { MaximizeIcon } from \"./MaximizeIcon\";\nimport { MedalIcon } from \"./MedalIcon\";\nimport { MedicineIcon } from \"./MedicineIcon\";\nimport { MehIcon } from \"./MehIcon\";\nimport { MenuIcon } from \"./MenuIcon\";\nimport { MergeIcon } from \"./MergeIcon\";\nimport { MessageCircleIcon } from \"./MessageCircleIcon\";\nimport { MessageSquareIcon } from \"./MessageSquareIcon\";\nimport { MicIcon } from \"./MicIcon\";\nimport { MicOffIcon } from \"./MicOffIcon\";\nimport { MinimizeIcon } from \"./MinimizeIcon\";\nimport { MinusIcon } from \"./MinusIcon\";\nimport { MonitorIcon } from \"./MonitorIcon\";\nimport { MoonIcon } from \"./MoonIcon\";\nimport { MoreHorizontalIcon } from \"./MoreHorizontalIcon\";\nimport { MoreVerticalIcon } from \"./MoreVerticalIcon\";\nimport { MountainIcon } from \"./MountainIcon\";\nimport { MouseIcon } from \"./MouseIcon\";\nimport { MoveIcon } from \"./MoveIcon\";\nimport { MusicIcon } from \"./MusicIcon\";\nimport { OctagonIcon } from \"./OctagonIcon\";\nimport { OutboxIcon } from \"./OutboxIcon\";\nimport { OutdentIcon } from \"./OutdentIcon\";\nimport { PackageIcon } from \"./PackageIcon\";\nimport { PackageOpenIcon } from \"./PackageOpenIcon\";\nimport { PaintbrushIcon } from \"./PaintbrushIcon\";\nimport { PaletteIcon } from \"./PaletteIcon\";\nimport { PanelBottomIcon } from \"./PanelBottomIcon\";\nimport { PanelLeftIcon } from \"./PanelLeftIcon\";\nimport { PanelRightIcon } from \"./PanelRightIcon\";\nimport { PanelTopIcon } from \"./PanelTopIcon\";\nimport { PaperclipIcon } from \"./PaperclipIcon\";\nimport { PassportIcon } from \"./PassportIcon\";\nimport { PauseIcon } from \"./PauseIcon\";\nimport { PawIcon } from \"./PawIcon\";\nimport { PencilIcon } from \"./PencilIcon\";\nimport { PentagonIcon } from \"./PentagonIcon\";\nimport { PhoneCallIcon } from \"./PhoneCallIcon\";\nimport { PhoneIcon } from \"./PhoneIcon\";\nimport { PhoneMissedIcon } from \"./PhoneMissedIcon\";\nimport { PhoneOffIcon } from \"./PhoneOffIcon\";\nimport { PictureInPictureIcon } from \"./PictureInPictureIcon\";\nimport { PiggyBankIcon } from \"./PiggyBankIcon\";\nimport { PinIcon } from \"./PinIcon\";\nimport { PlayIcon } from \"./PlayIcon\";\nimport { PlaylistIcon } from \"./PlaylistIcon\";\nimport { PlusIcon } from \"./PlusIcon\";\nimport { PoundIcon } from \"./PoundIcon\";\nimport { PoundSymbolIcon } from \"./PoundSymbolIcon\";\nimport { PowerIcon } from \"./PowerIcon\";\nimport { PowerOffIcon } from \"./PowerOffIcon\";\nimport { PrinterIcon } from \"./PrinterIcon\";\nimport { PrintIcon } from \"./PrintIcon\";\nimport { ProjectorIcon } from \"./ProjectorIcon\";\nimport { QrIcon } from \"./QrIcon\";\nimport { RadioIcon } from \"./RadioIcon\";\nimport { RadioOffIcon } from \"./RadioOffIcon\";\nimport { RadioTowerIcon } from \"./RadioTowerIcon\";\nimport { RainbowIcon } from \"./RainbowIcon\";\nimport { RectangleIcon } from \"./RectangleIcon\";\nimport { RecycleIcon } from \"./RecycleIcon\";\nimport { RedditFilledIcon } from \"./RedditFilledIcon\";\nimport { RedditIcon } from \"./RedditIcon\";\nimport { RedoIcon } from \"./RedoIcon\";\nimport { RefreshIcon } from \"./RefreshIcon\";\nimport { RepeatIcon } from \"./RepeatIcon\";\nimport { RepeatOnceIcon } from \"./RepeatOnceIcon\";\nimport { ReplyAllIcon } from \"./ReplyAllIcon\";\nimport { ReplyIcon } from \"./ReplyIcon\";\nimport { ResizeIcon } from \"./ResizeIcon\";\nimport { RibbonIcon } from \"./RibbonIcon\";\nimport { RocketIcon } from \"./RocketIcon\";\nimport { RotateCcwIcon } from \"./RotateCcwIcon\";\nimport { RotateCwIcon } from \"./RotateCwIcon\";\nimport { RouterIcon } from \"./RouterIcon\";\nimport { RowIcon } from \"./RowIcon\";\nimport { RubleIcon } from \"./RubleIcon\";\nimport { RubleSymbolIcon } from \"./RubleSymbolIcon\";\nimport { RupeeIcon } from \"./RupeeIcon\";\nimport { RupeeSymbolIcon } from \"./RupeeSymbolIcon\";\nimport { SatelliteIcon } from \"./SatelliteIcon\";\nimport { SaveIcon } from \"./SaveIcon\";\nimport { ScanEyeIcon } from \"./ScanEyeIcon\";\nimport { ScanIcon } from \"./ScanIcon\";\nimport { SchoolIcon } from \"./SchoolIcon\";\nimport { ScreenShareIcon } from \"./ScreenShareIcon\";\nimport { ScreenShareOffIcon } from \"./ScreenShareOffIcon\";\nimport { SearchIcon } from \"./SearchIcon\";\nimport { SendAngledIcon } from \"./SendAngledIcon\";\nimport { SendDiagonalIcon } from \"./SendDiagonalIcon\";\nimport { ServerIcon } from \"./ServerIcon\";\nimport { SettingsIcon } from \"./SettingsIcon\";\nimport { ShareIcon } from \"./ShareIcon\";\nimport { ShieldCheckIcon } from \"./ShieldCheckIcon\";\nimport { ShieldOffIcon } from \"./ShieldOffIcon\";\nimport { ShieldUserIcon } from \"./ShieldUserIcon\";\nimport { ShoppingBagIcon } from \"./ShoppingBagIcon\";\nimport { ShoppingCartIcon } from \"./ShoppingCartIcon\";\nimport { ShrinkIcon } from \"./ShrinkIcon\";\nimport { SidebarLeftIcon } from \"./SidebarLeftIcon\";\nimport { SidebarRightIcon } from \"./SidebarRightIcon\";\nimport { SignatureIcon } from \"./SignatureIcon\";\nimport { SmartphoneChargingIcon } from \"./SmartphoneChargingIcon\";\nimport { SmartphoneIcon } from \"./SmartphoneIcon\";\nimport { SmileIcon } from \"./SmileIcon\";\nimport { SnowflakeIcon } from \"./SnowflakeIcon\";\nimport { SortAscIcon } from \"./SortAscIcon\";\nimport { SortDescIcon } from \"./SortDescIcon\";\nimport { SparkleIcon } from \"./SparkleIcon\";\nimport { SpeakerIcon } from \"./SpeakerIcon\";\nimport { SplitHorizontalIcon } from \"./SplitHorizontalIcon\";\nimport { SplitVerticalIcon } from \"./SplitVerticalIcon\";\nimport { SquareIcon } from \"./SquareIcon\";\nimport { StampIcon } from \"./StampIcon\";\nimport { StarFilledIcon } from \"./StarFilledIcon\";\nimport { StarHalfFilledIcon } from \"./StarHalfFilledIcon\";\nimport { StarHalfIcon } from \"./StarHalfIcon\";\nimport { StarIcon } from \"./StarIcon\";\nimport { StepBackIcon } from \"./StepBackIcon\";\nimport { StepForwardIcon } from \"./StepForwardIcon\";\nimport { StickyNoteIcon } from \"./StickyNoteIcon\";\nimport { StopIcon } from \"./StopIcon\";\nimport { StopwatchIcon } from \"./StopwatchIcon\";\nimport { StoreIcon } from \"./StoreIcon\";\nimport { SunIcon } from \"./SunIcon\";\nimport { TableOfContentsIcon } from \"./TableOfContentsIcon\";\nimport { TabletIcon } from \"./TabletIcon\";\nimport { TagIcon } from \"./TagIcon\";\nimport { TelegramFilledIcon } from \"./TelegramFilledIcon\";\nimport { TelegramIcon } from \"./TelegramIcon\";\nimport { TerminalIcon } from \"./TerminalIcon\";\nimport { TerminalSquareIcon } from \"./TerminalSquareIcon\";\nimport { ThermometerIcon } from \"./ThermometerIcon\";\nimport { ThermometerSnowflakeIcon } from \"./ThermometerSnowflakeIcon\";\nimport { ThermometerSunIcon } from \"./ThermometerSunIcon\";\nimport { TicketAddIcon } from \"./TicketAddIcon\";\nimport { TicketCancelIcon } from \"./TicketCancelIcon\";\nimport { TicketCheckIcon } from \"./TicketCheckIcon\";\nimport { TicketDiscountIcon } from \"./TicketDiscountIcon\";\nimport { TicketIcon } from \"./TicketIcon\";\nimport { TimerIcon } from \"./TimerIcon\";\nimport { ToggleLeftIcon } from \"./ToggleLeftIcon\";\nimport { ToggleRightIcon } from \"./ToggleRightIcon\";\nimport { ToiletIcon } from \"./ToiletIcon\";\nimport { TorchIcon } from \"./TorchIcon\";\nimport { TorchOffIcon } from \"./TorchOffIcon\";\nimport { TornadoIcon } from \"./TornadoIcon\";\nimport { TrademarkIcon } from \"./TrademarkIcon\";\nimport { TrainIcon } from \"./TrainIcon\";\nimport { TransgenderIcon } from \"./TransgenderIcon\";\nimport { TrashIcon } from \"./TrashIcon\";\nimport { TreeIcon } from \"./TreeIcon\";\nimport { TrendingDownIcon } from \"./TrendingDownIcon\";\nimport { TrendingUpDownIcon } from \"./TrendingUpDownIcon\";\nimport { TrendingUpIcon } from \"./TrendingUpIcon\";\nimport { TriangleIcon } from \"./TriangleIcon\";\nimport { TrophyIcon } from \"./TrophyIcon\";\nimport { TruckIcon } from \"./TruckIcon\";\nimport { TvIcon } from \"./TvIcon\";\nimport { UmbrellaIcon } from \"./UmbrellaIcon\";\nimport { UmbrellaOffIcon } from \"./UmbrellaOffIcon\";\nimport { UndoIcon } from \"./UndoIcon\";\nimport { UngroupIcon } from \"./UngroupIcon\";\nimport { UnlinkIcon } from \"./UnlinkIcon\";\nimport { UnlockIcon } from \"./UnlockIcon\";\nimport { UploadIcon } from \"./UploadIcon\";\nimport { UsbIcon } from \"./UsbIcon\";\nimport { UserCheckIcon } from \"./UserCheckIcon\";\nimport { UserCircleIcon } from \"./UserCircleIcon\";\nimport { UserCogIcon } from \"./UserCogIcon\";\nimport { UserEditIcon } from \"./UserEditIcon\";\nimport { UserIcon } from \"./UserIcon\";\nimport { UserLockIcon } from \"./UserLockIcon\";\nimport { UserMinusIcon } from \"./UserMinusIcon\";\nimport { UserPlusIcon } from \"./UserPlusIcon\";\nimport { UserSearchIcon } from \"./UserSearchIcon\";\nimport { UsersIcon } from \"./UsersIcon\";\nimport { UserSquareIcon } from \"./UserSquareIcon\";\nimport { UserStarIcon } from \"./UserStarIcon\";\nimport { VideoIcon } from \"./VideoIcon\";\nimport { VideoOffIcon } from \"./VideoOffIcon\";\nimport { VolumeIcon } from \"./VolumeIcon\";\nimport { VolumeOffIcon } from \"./VolumeOffIcon\";\nimport { WalletIcon } from \"./WalletIcon\";\nimport { WandIcon } from \"./WandIcon\";\nimport { WatchIcon } from \"./WatchIcon\";\nimport { WebcamIcon } from \"./WebcamIcon\";\nimport { WhatsappFilledIcon } from \"./WhatsappFilledIcon\";\nimport { WhatsappIcon } from \"./WhatsappIcon\";\nimport { WifiIcon } from \"./WifiIcon\";\nimport { WindIcon } from \"./WindIcon\";\nimport { WorkflowIcon } from \"./WorkflowIcon\";\nimport { WrapTextIcon } from \"./WrapTextIcon\";\nimport { WrenchIcon } from \"./WrenchIcon\";\nimport { XFilledIcon } from \"./XFilledIcon\";\nimport { XIcon } from \"./XIcon\";\nimport { YenIcon } from \"./YenIcon\";\nimport { YenSymbolIcon } from \"./YenSymbolIcon\";\nimport { YoutubeFilledIcon } from \"./YoutubeFilledIcon\";\nimport { YoutubeIcon } from \"./YoutubeIcon\";\nimport { ZapIcon } from \"./ZapIcon\";\nimport { ZapOffIcon } from \"./ZapOffIcon\";\nimport { ZoomInIcon } from \"./ZoomInIcon\";\nimport { ZoomOutIcon } from \"./ZoomOutIcon\";\n\nexport interface IconRegistryEntry {\n name: string;\n kebabName: string;\n Component: ComponentType<IconProps>;\n}\n\nexport const ICON_REGISTRY: IconRegistryEntry[] = [\n { name: \"AlarmCheckIcon\", kebabName: \"alarm-check\", Component: AlarmCheckIcon },\n { name: \"AlarmClockIcon\", kebabName: \"alarm-clock\", Component: AlarmClockIcon },\n { name: \"AlarmMinusIcon\", kebabName: \"alarm-minus\", Component: AlarmMinusIcon },\n { name: \"AlarmOffIcon\", kebabName: \"alarm-off\", Component: AlarmOffIcon },\n { name: \"AlarmPlusIcon\", kebabName: \"alarm-plus\", Component: AlarmPlusIcon },\n { name: \"AlertIcon\", kebabName: \"alert\", Component: AlertIcon },\n { name: \"AlignBottomIcon\", kebabName: \"align-bottom\", Component: AlignBottomIcon },\n { name: \"AlignCenterIcon\", kebabName: \"align-center\", Component: AlignCenterIcon },\n { name: \"AlignJustifyIcon\", kebabName: \"align-justify\", Component: AlignJustifyIcon },\n { name: \"AlignLeftIcon\", kebabName: \"align-left\", Component: AlignLeftIcon },\n { name: \"AlignRightIcon\", kebabName: \"align-right\", Component: AlignRightIcon },\n { name: \"AlignTopIcon\", kebabName: \"align-top\", Component: AlignTopIcon },\n { name: \"AnchorIcon\", kebabName: \"anchor\", Component: AnchorIcon },\n { name: \"AngryIcon\", kebabName: \"angry\", Component: AngryIcon },\n { name: \"AnnoyedIcon\", kebabName: \"annoyed\", Component: AnnoyedIcon },\n { name: \"AntennaIcon\", kebabName: \"antenna\", Component: AntennaIcon },\n { name: \"ArrowDownIcon\", kebabName: \"arrow-down\", Component: ArrowDownIcon },\n { name: \"ArrowDownLeftIcon\", kebabName: \"arrow-down-left\", Component: ArrowDownLeftIcon },\n { name: \"ArrowDownRightIcon\", kebabName: \"arrow-down-right\", Component: ArrowDownRightIcon },\n { name: \"ArrowLeftIcon\", kebabName: \"arrow-left\", Component: ArrowLeftIcon },\n { name: \"ArrowLeftRightIcon\", kebabName: \"arrow-left-right\", Component: ArrowLeftRightIcon },\n { name: \"ArrowRightIcon\", kebabName: \"arrow-right\", Component: ArrowRightIcon },\n { name: \"ArrowUpDownIcon\", kebabName: \"arrow-up-down\", Component: ArrowUpDownIcon },\n { name: \"ArrowUpIcon\", kebabName: \"arrow-up\", Component: ArrowUpIcon },\n { name: \"ArrowUpLeftIcon\", kebabName: \"arrow-up-left\", Component: ArrowUpLeftIcon },\n { name: \"ArrowUpRightIcon\", kebabName: \"arrow-up-right\", Component: ArrowUpRightIcon },\n { name: \"AtSignIcon\", kebabName: \"at-sign\", Component: AtSignIcon },\n { name: \"AwardIcon\", kebabName: \"award\", Component: AwardIcon },\n { name: \"BabyIcon\", kebabName: \"baby\", Component: BabyIcon },\n { name: \"BadgeIcon\", kebabName: \"badge\", Component: BadgeIcon },\n { name: \"BanIcon\", kebabName: \"ban\", Component: BanIcon },\n { name: \"BankIcon\", kebabName: \"bank\", Component: BankIcon },\n { name: \"BatteryChargeIcon\", kebabName: \"battery-charge\", Component: BatteryChargeIcon },\n { name: \"BatteryFullIcon\", kebabName: \"battery-full\", Component: BatteryFullIcon },\n { name: \"BatteryIcon\", kebabName: \"battery\", Component: BatteryIcon },\n { name: \"BatteryLowIcon\", kebabName: \"battery-low\", Component: BatteryLowIcon },\n { name: \"BellDotIcon\", kebabName: \"bell-dot\", Component: BellDotIcon },\n { name: \"BellIcon\", kebabName: \"bell\", Component: BellIcon },\n { name: \"BellOffIcon\", kebabName: \"bell-off\", Component: BellOffIcon },\n { name: \"BikeIcon\", kebabName: \"bike\", Component: BikeIcon },\n { name: \"BirdIcon\", kebabName: \"bird\", Component: BirdIcon },\n { name: \"BitcoinIcon\", kebabName: \"bitcoin\", Component: BitcoinIcon },\n { name: \"BluetoothIcon\", kebabName: \"bluetooth\", Component: BluetoothIcon },\n { name: \"BluetoothOffIcon\", kebabName: \"bluetooth-off\", Component: BluetoothOffIcon },\n { name: \"BoatIcon\", kebabName: \"boat\", Component: BoatIcon },\n { name: \"BoltIcon\", kebabName: \"bolt\", Component: BoltIcon },\n { name: \"BombIcon\", kebabName: \"bomb\", Component: BombIcon },\n { name: \"BookIcon\", kebabName: \"book\", Component: BookIcon },\n { name: \"BookmarkFilledIcon\", kebabName: \"bookmark-filled\", Component: BookmarkFilledIcon },\n { name: \"BookmarkIcon\", kebabName: \"bookmark\", Component: BookmarkIcon },\n { name: \"BotIcon\", kebabName: \"bot\", Component: BotIcon },\n { name: \"BoxIcon\", kebabName: \"box\", Component: BoxIcon },\n { name: \"BrainIcon\", kebabName: \"brain\", Component: BrainIcon },\n { name: \"BriefcaseIcon\", kebabName: \"briefcase\", Component: BriefcaseIcon },\n { name: \"BugIcon\", kebabName: \"bug\", Component: BugIcon },\n { name: \"BuildingIcon\", kebabName: \"building\", Component: BuildingIcon },\n { name: \"BusIcon\", kebabName: \"bus\", Component: BusIcon },\n { name: \"CalculatorIcon\", kebabName: \"calculator\", Component: CalculatorIcon },\n { name: \"CalendarAddIcon\", kebabName: \"calendar-add\", Component: CalendarAddIcon },\n { name: \"CalendarIcon\", kebabName: \"calendar\", Component: CalendarIcon },\n { name: \"CameraIcon\", kebabName: \"camera\", Component: CameraIcon },\n { name: \"CameraOffIcon\", kebabName: \"camera-off\", Component: CameraOffIcon },\n { name: \"CameraSwitchIcon\", kebabName: \"camera-switch\", Component: CameraSwitchIcon },\n { name: \"CandlestickIcon\", kebabName: \"candlestick\", Component: CandlestickIcon },\n { name: \"CaptionsIcon\", kebabName: \"captions\", Component: CaptionsIcon },\n { name: \"CaptionsOffIcon\", kebabName: \"captions-off\", Component: CaptionsOffIcon },\n { name: \"CarIcon\", kebabName: \"car\", Component: CarIcon },\n { name: \"CashIcon\", kebabName: \"cash\", Component: CashIcon },\n { name: \"CastIcon\", kebabName: \"cast\", Component: CastIcon },\n { name: \"CatIcon\", kebabName: \"cat\", Component: CatIcon },\n { name: \"CctvIcon\", kebabName: \"cctv\", Component: CctvIcon },\n { name: \"CentIcon\", kebabName: \"cent\", Component: CentIcon },\n { name: \"CentSymbolIcon\", kebabName: \"cent-symbol\", Component: CentSymbolIcon },\n { name: \"ChartDownIcon\", kebabName: \"chart-down\", Component: ChartDownIcon },\n { name: \"ChartUpIcon\", kebabName: \"chart-up\", Component: ChartUpIcon },\n { name: \"CheckCircleIcon\", kebabName: \"check-circle\", Component: CheckCircleIcon },\n { name: \"CheckIcon\", kebabName: \"check\", Component: CheckIcon },\n { name: \"ChevronDownIcon\", kebabName: \"chevron-down\", Component: ChevronDownIcon },\n { name: \"ChevronFirstIcon\", kebabName: \"chevron-first\", Component: ChevronFirstIcon },\n { name: \"ChevronLastIcon\", kebabName: \"chevron-last\", Component: ChevronLastIcon },\n { name: \"ChevronLeftIcon\", kebabName: \"chevron-left\", Component: ChevronLeftIcon },\n { name: \"ChevronRightIcon\", kebabName: \"chevron-right\", Component: ChevronRightIcon },\n { name: \"ChevronsDownIcon\", kebabName: \"chevrons-down\", Component: ChevronsDownIcon },\n { name: \"ChevronsLeftIcon\", kebabName: \"chevrons-left\", Component: ChevronsLeftIcon },\n { name: \"ChevronsRightIcon\", kebabName: \"chevrons-right\", Component: ChevronsRightIcon },\n { name: \"ChevronsUpIcon\", kebabName: \"chevrons-up\", Component: ChevronsUpIcon },\n { name: \"ChevronUpIcon\", kebabName: \"chevron-up\", Component: ChevronUpIcon },\n { name: \"CigaretteIcon\", kebabName: \"cigarette\", Component: CigaretteIcon },\n { name: \"CigaretteOffIcon\", kebabName: \"cigarette-off\", Component: CigaretteOffIcon },\n { name: \"CircleIcon\", kebabName: \"circle\", Component: CircleIcon },\n { name: \"ClapperboardIcon\", kebabName: \"clapperboard\", Component: ClapperboardIcon },\n { name: \"ClipboardIcon\", kebabName: \"clipboard\", Component: ClipboardIcon },\n { name: \"ClockIcon\", kebabName: \"clock\", Component: ClockIcon },\n { name: \"CloseIcon\", kebabName: \"close\", Component: CloseIcon },\n { name: \"CloudDownloadIcon\", kebabName: \"cloud-download\", Component: CloudDownloadIcon },\n { name: \"CloudIcon\", kebabName: \"cloud\", Component: CloudIcon },\n { name: \"CloudLightningIcon\", kebabName: \"cloud-lightning\", Component: CloudLightningIcon },\n { name: \"CloudMoonIcon\", kebabName: \"cloud-moon\", Component: CloudMoonIcon },\n { name: \"CloudRainIcon\", kebabName: \"cloud-rain\", Component: CloudRainIcon },\n { name: \"CloudSnowIcon\", kebabName: \"cloud-snow\", Component: CloudSnowIcon },\n { name: \"CloudSunIcon\", kebabName: \"cloud-sun\", Component: CloudSunIcon },\n { name: \"CloudUploadIcon\", kebabName: \"cloud-upload\", Component: CloudUploadIcon },\n { name: \"CloudyIcon\", kebabName: \"cloudy\", Component: CloudyIcon },\n { name: \"CodeIcon\", kebabName: \"code\", Component: CodeIcon },\n { name: \"CoinIcon\", kebabName: \"coin\", Component: CoinIcon },\n { name: \"ColumnIcon\", kebabName: \"column\", Component: ColumnIcon },\n { name: \"CompassIcon\", kebabName: \"compass\", Component: CompassIcon },\n { name: \"ContactIcon\", kebabName: \"contact\", Component: ContactIcon },\n { name: \"CopyIcon\", kebabName: \"copy\", Component: CopyIcon },\n { name: \"CornerDownLeftIcon\", kebabName: \"corner-down-left\", Component: CornerDownLeftIcon },\n { name: \"CornerDownRightIcon\", kebabName: \"corner-down-right\", Component: CornerDownRightIcon },\n { name: \"CornerUpLeftIcon\", kebabName: \"corner-up-left\", Component: CornerUpLeftIcon },\n { name: \"CornerUpRightIcon\", kebabName: \"corner-up-right\", Component: CornerUpRightIcon },\n { name: \"CpuIcon\", kebabName: \"cpu\", Component: CpuIcon },\n { name: \"CreativeCommonsIcon\", kebabName: \"creative-commons\", Component: CreativeCommonsIcon },\n { name: \"CreditCardIcon\", kebabName: \"credit-card\", Component: CreditCardIcon },\n { name: \"CropIcon\", kebabName: \"crop\", Component: CropIcon },\n { name: \"CrossCircleIcon\", kebabName: \"cross-circle\", Component: CrossCircleIcon },\n { name: \"CrownIcon\", kebabName: \"crown\", Component: CrownIcon },\n { name: \"CutIcon\", kebabName: \"cut\", Component: CutIcon },\n { name: \"CycleIcon\", kebabName: \"cycle\", Component: CycleIcon },\n { name: \"DatabaseIcon\", kebabName: \"database\", Component: DatabaseIcon },\n { name: \"DiaryIcon\", kebabName: \"diary\", Component: DiaryIcon },\n { name: \"DiceFiveIcon\", kebabName: \"dice-five\", Component: DiceFiveIcon },\n { name: \"DiceFourIcon\", kebabName: \"dice-four\", Component: DiceFourIcon },\n { name: \"DiceOneIcon\", kebabName: \"dice-one\", Component: DiceOneIcon },\n { name: \"DiceSixIcon\", kebabName: \"dice-six\", Component: DiceSixIcon },\n { name: \"DiceThreeIcon\", kebabName: \"dice-three\", Component: DiceThreeIcon },\n { name: \"DiceTwoIcon\", kebabName: \"dice-two\", Component: DiceTwoIcon },\n { name: \"DirectionDownIcon\", kebabName: \"direction-down\", Component: DirectionDownIcon },\n { name: \"DirectionLeftIcon\", kebabName: \"direction-left\", Component: DirectionLeftIcon },\n { name: \"DirectionRightIcon\", kebabName: \"direction-right\", Component: DirectionRightIcon },\n { name: \"DirectionUpIcon\", kebabName: \"direction-up\", Component: DirectionUpIcon },\n { name: \"DiscordFilledIcon\", kebabName: \"discord-filled\", Component: DiscordFilledIcon },\n { name: \"DiscordIcon\", kebabName: \"discord\", Component: DiscordIcon },\n { name: \"DislikeIcon\", kebabName: \"dislike\", Component: DislikeIcon },\n { name: \"DogIcon\", kebabName: \"dog\", Component: DogIcon },\n { name: \"DollarIcon\", kebabName: \"dollar\", Component: DollarIcon },\n { name: \"DollarSymbolIcon\", kebabName: \"dollar-symbol\", Component: DollarSymbolIcon },\n { name: \"DotIcon\", kebabName: \"dot\", Component: DotIcon },\n { name: \"DownloadIcon\", kebabName: \"download\", Component: DownloadIcon },\n { name: \"DragIcon\", kebabName: \"drag\", Component: DragIcon },\n { name: \"DribbbleFilledIcon\", kebabName: \"dribbble-filled\", Component: DribbbleFilledIcon },\n { name: \"DribbbleIcon\", kebabName: \"dribbble\", Component: DribbbleIcon },\n { name: \"DropletIcon\", kebabName: \"droplet\", Component: DropletIcon },\n { name: \"DropletOffIcon\", kebabName: \"droplet-off\", Component: DropletOffIcon },\n { name: \"EditIcon\", kebabName: \"edit\", Component: EditIcon },\n { name: \"EmergencyIcon\", kebabName: \"emergency\", Component: EmergencyIcon },\n { name: \"EqualIcon\", kebabName: \"equal\", Component: EqualIcon },\n { name: \"EraserIcon\", kebabName: \"eraser\", Component: EraserIcon },\n { name: \"EthernetIcon\", kebabName: \"ethernet\", Component: EthernetIcon },\n { name: \"EuroIcon\", kebabName: \"euro\", Component: EuroIcon },\n { name: \"EuroSymbolIcon\", kebabName: \"euro-symbol\", Component: EuroSymbolIcon },\n { name: \"ExpandIcon\", kebabName: \"expand\", Component: ExpandIcon },\n { name: \"ExternalLinkIcon\", kebabName: \"external-link\", Component: ExternalLinkIcon },\n { name: \"EyeClosedIcon\", kebabName: \"eye-closed\", Component: EyeClosedIcon },\n { name: \"EyeIcon\", kebabName: \"eye\", Component: EyeIcon },\n { name: \"EyeOffIcon\", kebabName: \"eye-off\", Component: EyeOffIcon },\n { name: \"FacebookFilledIcon\", kebabName: \"facebook-filled\", Component: FacebookFilledIcon },\n { name: \"FacebookIcon\", kebabName: \"facebook\", Component: FacebookIcon },\n { name: \"FactoryIcon\", kebabName: \"factory\", Component: FactoryIcon },\n { name: \"FastForwardIcon\", kebabName: \"fast-forward\", Component: FastForwardIcon },\n { name: \"FemaleGenderIcon\", kebabName: \"female-gender\", Component: FemaleGenderIcon },\n { name: \"FigmaFilledIcon\", kebabName: \"figma-filled\", Component: FigmaFilledIcon },\n { name: \"FigmaIcon\", kebabName: \"figma\", Component: FigmaIcon },\n { name: \"FileArchiveIcon\", kebabName: \"file-archive\", Component: FileArchiveIcon },\n { name: \"FileAudioIcon\", kebabName: \"file-audio\", Component: FileAudioIcon },\n { name: \"FileChartIcon\", kebabName: \"file-chart\", Component: FileChartIcon },\n { name: \"FileCheckIcon\", kebabName: \"file-check\", Component: FileCheckIcon },\n { name: \"FileCodeIcon\", kebabName: \"file-code\", Component: FileCodeIcon },\n { name: \"FileCogIcon\", kebabName: \"file-cog\", Component: FileCogIcon },\n { name: \"FileCssIcon\", kebabName: \"file-css\", Component: FileCssIcon },\n { name: \"FileDatabaseIcon\", kebabName: \"file-database\", Component: FileDatabaseIcon },\n { name: \"FileDownloadIcon\", kebabName: \"file-download\", Component: FileDownloadIcon },\n { name: \"FileEditIcon\", kebabName: \"file-edit\", Component: FileEditIcon },\n { name: \"FileEnvIcon\", kebabName: \"file-env\", Component: FileEnvIcon },\n { name: \"FileHeartIcon\", kebabName: \"file-heart\", Component: FileHeartIcon },\n { name: \"FileHtmlIcon\", kebabName: \"file-html\", Component: FileHtmlIcon },\n { name: \"FileIcon\", kebabName: \"file\", Component: FileIcon },\n { name: \"FileImageIcon\", kebabName: \"file-image\", Component: FileImageIcon },\n { name: \"FileJsIcon\", kebabName: \"file-js\", Component: FileJsIcon },\n { name: \"FileJsonIcon\", kebabName: \"file-json\", Component: FileJsonIcon },\n { name: \"FileJsxIcon\", kebabName: \"file-jsx\", Component: FileJsxIcon },\n { name: \"FileLockIcon\", kebabName: \"file-lock\", Component: FileLockIcon },\n { name: \"FileMdIcon\", kebabName: \"file-md\", Component: FileMdIcon },\n { name: \"FileMinusIcon\", kebabName: \"file-minus\", Component: FileMinusIcon },\n { name: \"FilePdfIcon\", kebabName: \"file-pdf\", Component: FilePdfIcon },\n { name: \"FilePlusIcon\", kebabName: \"file-plus\", Component: FilePlusIcon },\n { name: \"FilePresentationIcon\", kebabName: \"file-presentation\", Component: FilePresentationIcon },\n { name: \"FileSearchIcon\", kebabName: \"file-search\", Component: FileSearchIcon },\n { name: \"FileSpreadsheetIcon\", kebabName: \"file-spreadsheet\", Component: FileSpreadsheetIcon },\n { name: \"FileTextIcon\", kebabName: \"file-text\", Component: FileTextIcon },\n { name: \"FileTsIcon\", kebabName: \"file-ts\", Component: FileTsIcon },\n { name: \"FileTsxIcon\", kebabName: \"file-tsx\", Component: FileTsxIcon },\n { name: \"FileUserIcon\", kebabName: \"file-user\", Component: FileUserIcon },\n { name: \"FileVideoIcon\", kebabName: \"file-video\", Component: FileVideoIcon },\n { name: \"FileXIcon\", kebabName: \"file-x\", Component: FileXIcon },\n { name: \"FilmIcon\", kebabName: \"film\", Component: FilmIcon },\n { name: \"FilterIcon\", kebabName: \"filter\", Component: FilterIcon },\n { name: \"FingerprintIcon\", kebabName: \"fingerprint\", Component: FingerprintIcon },\n { name: \"FireExtinguisherIcon\", kebabName: \"fire-extinguisher\", Component: FireExtinguisherIcon },\n { name: \"FishIcon\", kebabName: \"fish\", Component: FishIcon },\n { name: \"FlagIcon\", kebabName: \"flag\", Component: FlagIcon },\n { name: \"FlagOffIcon\", kebabName: \"flag-off\", Component: FlagOffIcon },\n { name: \"FlameIcon\", kebabName: \"flame\", Component: FlameIcon },\n { name: \"FlipHorizontalIcon\", kebabName: \"flip-horizontal\", Component: FlipHorizontalIcon },\n { name: \"FlipVerticalIcon\", kebabName: \"flip-vertical\", Component: FlipVerticalIcon },\n { name: \"FlowerIcon\", kebabName: \"flower\", Component: FlowerIcon },\n { name: \"FolderArchiveIcon\", kebabName: \"folder-archive\", Component: FolderArchiveIcon },\n { name: \"FolderCheckIcon\", kebabName: \"folder-check\", Component: FolderCheckIcon },\n { name: \"FolderCogIcon\", kebabName: \"folder-cog\", Component: FolderCogIcon },\n { name: \"FolderDownIcon\", kebabName: \"folder-down\", Component: FolderDownIcon },\n { name: \"FolderDownloadIcon\", kebabName: \"folder-download\", Component: FolderDownloadIcon },\n { name: \"FolderEditIcon\", kebabName: \"folder-edit\", Component: FolderEditIcon },\n { name: \"FolderHeartIcon\", kebabName: \"folder-heart\", Component: FolderHeartIcon },\n { name: \"FolderIcon\", kebabName: \"folder\", Component: FolderIcon },\n { name: \"FolderLockIcon\", kebabName: \"folder-lock\", Component: FolderLockIcon },\n { name: \"FolderMinusIcon\", kebabName: \"folder-minus\", Component: FolderMinusIcon },\n { name: \"FolderOpenIcon\", kebabName: \"folder-open\", Component: FolderOpenIcon },\n { name: \"FolderPlusIcon\", kebabName: \"folder-plus\", Component: FolderPlusIcon },\n { name: \"FolderSearchIcon\", kebabName: \"folder-search\", Component: FolderSearchIcon },\n { name: \"FolderXIcon\", kebabName: \"folder-x\", Component: FolderXIcon },\n { name: \"FrancIcon\", kebabName: \"franc\", Component: FrancIcon },\n { name: \"FrancSymbolIcon\", kebabName: \"franc-symbol\", Component: FrancSymbolIcon },\n { name: \"FrownIcon\", kebabName: \"frown\", Component: FrownIcon },\n { name: \"GamepadIcon\", kebabName: \"gamepad\", Component: GamepadIcon },\n { name: \"GemIcon\", kebabName: \"gem\", Component: GemIcon },\n { name: \"GhostIcon\", kebabName: \"ghost\", Component: GhostIcon },\n { name: \"GiftIcon\", kebabName: \"gift\", Component: GiftIcon },\n { name: \"GithubFilledIcon\", kebabName: \"github-filled\", Component: GithubFilledIcon },\n { name: \"GithubIcon\", kebabName: \"github\", Component: GithubIcon },\n { name: \"GlobeIcon\", kebabName: \"globe\", Component: GlobeIcon },\n { name: \"GpuIcon\", kebabName: \"gpu\", Component: GpuIcon },\n { name: \"GraduationCapIcon\", kebabName: \"graduation-cap\", Component: GraduationCapIcon },\n { name: \"GridIcon\", kebabName: \"grid\", Component: GridIcon },\n { name: \"GroupIcon\", kebabName: \"group\", Component: GroupIcon },\n { name: \"HandshakeIcon\", kebabName: \"handshake\", Component: HandshakeIcon },\n { name: \"HardDriveIcon\", kebabName: \"hard-drive\", Component: HardDriveIcon },\n { name: \"HdmiIcon\", kebabName: \"hdmi\", Component: HdmiIcon },\n { name: \"HeadphonesIcon\", kebabName: \"headphones\", Component: HeadphonesIcon },\n { name: \"HeadphonesOffIcon\", kebabName: \"headphones-off\", Component: HeadphonesOffIcon },\n { name: \"HeartBrokenIcon\", kebabName: \"heart-broken\", Component: HeartBrokenIcon },\n { name: \"HeartFilledIcon\", kebabName: \"heart-filled\", Component: HeartFilledIcon },\n { name: \"HeartIcon\", kebabName: \"heart\", Component: HeartIcon },\n { name: \"HelicopterIcon\", kebabName: \"helicopter\", Component: HelicopterIcon },\n { name: \"HelpIcon\", kebabName: \"help\", Component: HelpIcon },\n { name: \"HeptagonIcon\", kebabName: \"heptagon\", Component: HeptagonIcon },\n { name: \"HexagonIcon\", kebabName: \"hexagon\", Component: HexagonIcon },\n { name: \"HighlighterIcon\", kebabName: \"highlighter\", Component: HighlighterIcon },\n { name: \"HistoryIcon\", kebabName: \"history\", Component: HistoryIcon },\n { name: \"HomeIcon\", kebabName: \"home\", Component: HomeIcon },\n { name: \"HospitalIcon\", kebabName: \"hospital\", Component: HospitalIcon },\n { name: \"HourglassIcon\", kebabName: \"hourglass\", Component: HourglassIcon },\n { name: \"IdCardIcon\", kebabName: \"id-card\", Component: IdCardIcon },\n { name: \"ImageIcon\", kebabName: \"image\", Component: ImageIcon },\n { name: \"InboxIcon\", kebabName: \"inbox\", Component: InboxIcon },\n { name: \"IndentIcon\", kebabName: \"indent\", Component: IndentIcon },\n { name: \"InfoIcon\", kebabName: \"info\", Component: InfoIcon },\n { name: \"InstagramFilledIcon\", kebabName: \"instagram-filled\", Component: InstagramFilledIcon },\n { name: \"InstagramIcon\", kebabName: \"instagram\", Component: InstagramIcon },\n { name: \"JoystickIcon\", kebabName: \"joystick\", Component: JoystickIcon },\n { name: \"KeyboardIcon\", kebabName: \"keyboard\", Component: KeyboardIcon },\n { name: \"KeyIcon\", kebabName: \"key\", Component: KeyIcon },\n { name: \"LaptopIcon\", kebabName: \"laptop\", Component: LaptopIcon },\n { name: \"LaughIcon\", kebabName: \"laugh\", Component: LaughIcon },\n { name: \"LayersIcon\", kebabName: \"layers\", Component: LayersIcon },\n { name: \"LayersPlusIcon\", kebabName: \"layers-plus\", Component: LayersPlusIcon },\n { name: \"LayoutGridIcon\", kebabName: \"layout-grid\", Component: LayoutGridIcon },\n { name: \"LayoutKanbanIcon\", kebabName: \"layout-kanban\", Component: LayoutKanbanIcon },\n { name: \"LayoutListIcon\", kebabName: \"layout-list\", Component: LayoutListIcon },\n { name: \"LeafIcon\", kebabName: \"leaf\", Component: LeafIcon },\n { name: \"LightbulbIcon\", kebabName: \"lightbulb\", Component: LightbulbIcon },\n { name: \"LightbulbOffIcon\", kebabName: \"lightbulb-off\", Component: LightbulbOffIcon },\n { name: \"LikeIcon\", kebabName: \"like\", Component: LikeIcon },\n { name: \"LineIcon\", kebabName: \"line\", Component: LineIcon },\n { name: \"LinkedinFilledIcon\", kebabName: \"linkedin-filled\", Component: LinkedinFilledIcon },\n { name: \"LinkedinIcon\", kebabName: \"linkedin\", Component: LinkedinIcon },\n { name: \"LinkIcon\", kebabName: \"link\", Component: LinkIcon },\n { name: \"LiraIcon\", kebabName: \"lira\", Component: LiraIcon },\n { name: \"LiraSymbolIcon\", kebabName: \"lira-symbol\", Component: LiraSymbolIcon },\n { name: \"ListIcon\", kebabName: \"list\", Component: ListIcon },\n { name: \"LoaderIcon\", kebabName: \"loader\", Component: LoaderIcon },\n { name: \"LoaderSpinnerIcon\", kebabName: \"loader-spinner\", Component: LoaderSpinnerIcon },\n { name: \"LockIcon\", kebabName: \"lock\", Component: LockIcon },\n { name: \"MagicIcon\", kebabName: \"magic\", Component: MagicIcon },\n { name: \"MailIcon\", kebabName: \"mail\", Component: MailIcon },\n { name: \"MaleGenderIcon\", kebabName: \"male-gender\", Component: MaleGenderIcon },\n { name: \"MapPinIcon\", kebabName: \"map-pin\", Component: MapPinIcon },\n { name: \"MaximizeIcon\", kebabName: \"maximize\", Component: MaximizeIcon },\n { name: \"MedalIcon\", kebabName: \"medal\", Component: MedalIcon },\n { name: \"MedicineIcon\", kebabName: \"medicine\", Component: MedicineIcon },\n { name: \"MehIcon\", kebabName: \"meh\", Component: MehIcon },\n { name: \"MenuIcon\", kebabName: \"menu\", Component: MenuIcon },\n { name: \"MergeIcon\", kebabName: \"merge\", Component: MergeIcon },\n { name: \"MessageCircleIcon\", kebabName: \"message-circle\", Component: MessageCircleIcon },\n { name: \"MessageSquareIcon\", kebabName: \"message-square\", Component: MessageSquareIcon },\n { name: \"MicIcon\", kebabName: \"mic\", Component: MicIcon },\n { name: \"MicOffIcon\", kebabName: \"mic-off\", Component: MicOffIcon },\n { name: \"MinimizeIcon\", kebabName: \"minimize\", Component: MinimizeIcon },\n { name: \"MinusIcon\", kebabName: \"minus\", Component: MinusIcon },\n { name: \"MonitorIcon\", kebabName: \"monitor\", Component: MonitorIcon },\n { name: \"MoonIcon\", kebabName: \"moon\", Component: MoonIcon },\n { name: \"MoreHorizontalIcon\", kebabName: \"more-horizontal\", Component: MoreHorizontalIcon },\n { name: \"MoreVerticalIcon\", kebabName: \"more-vertical\", Component: MoreVerticalIcon },\n { name: \"MountainIcon\", kebabName: \"mountain\", Component: MountainIcon },\n { name: \"MouseIcon\", kebabName: \"mouse\", Component: MouseIcon },\n { name: \"MoveIcon\", kebabName: \"move\", Component: MoveIcon },\n { name: \"MusicIcon\", kebabName: \"music\", Component: MusicIcon },\n { name: \"OctagonIcon\", kebabName: \"octagon\", Component: OctagonIcon },\n { name: \"OutboxIcon\", kebabName: \"outbox\", Component: OutboxIcon },\n { name: \"OutdentIcon\", kebabName: \"outdent\", Component: OutdentIcon },\n { name: \"PackageIcon\", kebabName: \"package\", Component: PackageIcon },\n { name: \"PackageOpenIcon\", kebabName: \"package-open\", Component: PackageOpenIcon },\n { name: \"PaintbrushIcon\", kebabName: \"paintbrush\", Component: PaintbrushIcon },\n { name: \"PaletteIcon\", kebabName: \"palette\", Component: PaletteIcon },\n { name: \"PanelBottomIcon\", kebabName: \"panel-bottom\", Component: PanelBottomIcon },\n { name: \"PanelLeftIcon\", kebabName: \"panel-left\", Component: PanelLeftIcon },\n { name: \"PanelRightIcon\", kebabName: \"panel-right\", Component: PanelRightIcon },\n { name: \"PanelTopIcon\", kebabName: \"panel-top\", Component: PanelTopIcon },\n { name: \"PaperclipIcon\", kebabName: \"paperclip\", Component: PaperclipIcon },\n { name: \"PassportIcon\", kebabName: \"passport\", Component: PassportIcon },\n { name: \"PauseIcon\", kebabName: \"pause\", Component: PauseIcon },\n { name: \"PawIcon\", kebabName: \"paw\", Component: PawIcon },\n { name: \"PencilIcon\", kebabName: \"pencil\", Component: PencilIcon },\n { name: \"PentagonIcon\", kebabName: \"pentagon\", Component: PentagonIcon },\n { name: \"PhoneCallIcon\", kebabName: \"phone-call\", Component: PhoneCallIcon },\n { name: \"PhoneIcon\", kebabName: \"phone\", Component: PhoneIcon },\n { name: \"PhoneMissedIcon\", kebabName: \"phone-missed\", Component: PhoneMissedIcon },\n { name: \"PhoneOffIcon\", kebabName: \"phone-off\", Component: PhoneOffIcon },\n { name: \"PictureInPictureIcon\", kebabName: \"picture-in-picture\", Component: PictureInPictureIcon },\n { name: \"PiggyBankIcon\", kebabName: \"piggy-bank\", Component: PiggyBankIcon },\n { name: \"PinIcon\", kebabName: \"pin\", Component: PinIcon },\n { name: \"PlayIcon\", kebabName: \"play\", Component: PlayIcon },\n { name: \"PlaylistIcon\", kebabName: \"playlist\", Component: PlaylistIcon },\n { name: \"PlusIcon\", kebabName: \"plus\", Component: PlusIcon },\n { name: \"PoundIcon\", kebabName: \"pound\", Component: PoundIcon },\n { name: \"PoundSymbolIcon\", kebabName: \"pound-symbol\", Component: PoundSymbolIcon },\n { name: \"PowerIcon\", kebabName: \"power\", Component: PowerIcon },\n { name: \"PowerOffIcon\", kebabName: \"power-off\", Component: PowerOffIcon },\n { name: \"PrinterIcon\", kebabName: \"printer\", Component: PrinterIcon },\n { name: \"PrintIcon\", kebabName: \"print\", Component: PrintIcon },\n { name: \"ProjectorIcon\", kebabName: \"projector\", Component: ProjectorIcon },\n { name: \"QrIcon\", kebabName: \"qr\", Component: QrIcon },\n { name: \"RadioIcon\", kebabName: \"radio\", Component: RadioIcon },\n { name: \"RadioOffIcon\", kebabName: \"radio-off\", Component: RadioOffIcon },\n { name: \"RadioTowerIcon\", kebabName: \"radio-tower\", Component: RadioTowerIcon },\n { name: \"RainbowIcon\", kebabName: \"rainbow\", Component: RainbowIcon },\n { name: \"RectangleIcon\", kebabName: \"rectangle\", Component: RectangleIcon },\n { name: \"RecycleIcon\", kebabName: \"recycle\", Component: RecycleIcon },\n { name: \"RedditFilledIcon\", kebabName: \"reddit-filled\", Component: RedditFilledIcon },\n { name: \"RedditIcon\", kebabName: \"reddit\", Component: RedditIcon },\n { name: \"RedoIcon\", kebabName: \"redo\", Component: RedoIcon },\n { name: \"RefreshIcon\", kebabName: \"refresh\", Component: RefreshIcon },\n { name: \"RepeatIcon\", kebabName: \"repeat\", Component: RepeatIcon },\n { name: \"RepeatOnceIcon\", kebabName: \"repeat-once\", Component: RepeatOnceIcon },\n { name: \"ReplyAllIcon\", kebabName: \"reply-all\", Component: ReplyAllIcon },\n { name: \"ReplyIcon\", kebabName: \"reply\", Component: ReplyIcon },\n { name: \"ResizeIcon\", kebabName: \"resize\", Component: ResizeIcon },\n { name: \"RibbonIcon\", kebabName: \"ribbon\", Component: RibbonIcon },\n { name: \"RocketIcon\", kebabName: \"rocket\", Component: RocketIcon },\n { name: \"RotateCcwIcon\", kebabName: \"rotate-ccw\", Component: RotateCcwIcon },\n { name: \"RotateCwIcon\", kebabName: \"rotate-cw\", Component: RotateCwIcon },\n { name: \"RouterIcon\", kebabName: \"router\", Component: RouterIcon },\n { name: \"RowIcon\", kebabName: \"row\", Component: RowIcon },\n { name: \"RubleIcon\", kebabName: \"ruble\", Component: RubleIcon },\n { name: \"RubleSymbolIcon\", kebabName: \"ruble-symbol\", Component: RubleSymbolIcon },\n { name: \"RupeeIcon\", kebabName: \"rupee\", Component: RupeeIcon },\n { name: \"RupeeSymbolIcon\", kebabName: \"rupee-symbol\", Component: RupeeSymbolIcon },\n { name: \"SatelliteIcon\", kebabName: \"satellite\", Component: SatelliteIcon },\n { name: \"SaveIcon\", kebabName: \"save\", Component: SaveIcon },\n { name: \"ScanEyeIcon\", kebabName: \"scan-eye\", Component: ScanEyeIcon },\n { name: \"ScanIcon\", kebabName: \"scan\", Component: ScanIcon },\n { name: \"SchoolIcon\", kebabName: \"school\", Component: SchoolIcon },\n { name: \"ScreenShareIcon\", kebabName: \"screen-share\", Component: ScreenShareIcon },\n { name: \"ScreenShareOffIcon\", kebabName: \"screen-share-off\", Component: ScreenShareOffIcon },\n { name: \"SearchIcon\", kebabName: \"search\", Component: SearchIcon },\n { name: \"SendAngledIcon\", kebabName: \"send-angled\", Component: SendAngledIcon },\n { name: \"SendDiagonalIcon\", kebabName: \"send-diagonal\", Component: SendDiagonalIcon },\n { name: \"ServerIcon\", kebabName: \"server\", Component: ServerIcon },\n { name: \"SettingsIcon\", kebabName: \"settings\", Component: SettingsIcon },\n { name: \"ShareIcon\", kebabName: \"share\", Component: ShareIcon },\n { name: \"ShieldCheckIcon\", kebabName: \"shield-check\", Component: ShieldCheckIcon },\n { name: \"ShieldOffIcon\", kebabName: \"shield-off\", Component: ShieldOffIcon },\n { name: \"ShieldUserIcon\", kebabName: \"shield-user\", Component: ShieldUserIcon },\n { name: \"ShoppingBagIcon\", kebabName: \"shopping-bag\", Component: ShoppingBagIcon },\n { name: \"ShoppingCartIcon\", kebabName: \"shopping-cart\", Component: ShoppingCartIcon },\n { name: \"ShrinkIcon\", kebabName: \"shrink\", Component: ShrinkIcon },\n { name: \"SidebarLeftIcon\", kebabName: \"sidebar-left\", Component: SidebarLeftIcon },\n { name: \"SidebarRightIcon\", kebabName: \"sidebar-right\", Component: SidebarRightIcon },\n { name: \"SignatureIcon\", kebabName: \"signature\", Component: SignatureIcon },\n { name: \"SmartphoneChargingIcon\", kebabName: \"smartphone-charging\", Component: SmartphoneChargingIcon },\n { name: \"SmartphoneIcon\", kebabName: \"smartphone\", Component: SmartphoneIcon },\n { name: \"SmileIcon\", kebabName: \"smile\", Component: SmileIcon },\n { name: \"SnowflakeIcon\", kebabName: \"snowflake\", Component: SnowflakeIcon },\n { name: \"SortAscIcon\", kebabName: \"sort-asc\", Component: SortAscIcon },\n { name: \"SortDescIcon\", kebabName: \"sort-desc\", Component: SortDescIcon },\n { name: \"SparkleIcon\", kebabName: \"sparkle\", Component: SparkleIcon },\n { name: \"SpeakerIcon\", kebabName: \"speaker\", Component: SpeakerIcon },\n { name: \"SplitHorizontalIcon\", kebabName: \"split-horizontal\", Component: SplitHorizontalIcon },\n { name: \"SplitVerticalIcon\", kebabName: \"split-vertical\", Component: SplitVerticalIcon },\n { name: \"SquareIcon\", kebabName: \"square\", Component: SquareIcon },\n { name: \"StampIcon\", kebabName: \"stamp\", Component: StampIcon },\n { name: \"StarFilledIcon\", kebabName: \"star-filled\", Component: StarFilledIcon },\n { name: \"StarHalfFilledIcon\", kebabName: \"star-half-filled\", Component: StarHalfFilledIcon },\n { name: \"StarHalfIcon\", kebabName: \"star-half\", Component: StarHalfIcon },\n { name: \"StarIcon\", kebabName: \"star\", Component: StarIcon },\n { name: \"StepBackIcon\", kebabName: \"step-back\", Component: StepBackIcon },\n { name: \"StepForwardIcon\", kebabName: \"step-forward\", Component: StepForwardIcon },\n { name: \"StickyNoteIcon\", kebabName: \"sticky-note\", Component: StickyNoteIcon },\n { name: \"StopIcon\", kebabName: \"stop\", Component: StopIcon },\n { name: \"StopwatchIcon\", kebabName: \"stopwatch\", Component: StopwatchIcon },\n { name: \"StoreIcon\", kebabName: \"store\", Component: StoreIcon },\n { name: \"SunIcon\", kebabName: \"sun\", Component: SunIcon },\n { name: \"TableOfContentsIcon\", kebabName: \"table-of-contents\", Component: TableOfContentsIcon },\n { name: \"TabletIcon\", kebabName: \"tablet\", Component: TabletIcon },\n { name: \"TagIcon\", kebabName: \"tag\", Component: TagIcon },\n { name: \"TelegramFilledIcon\", kebabName: \"telegram-filled\", Component: TelegramFilledIcon },\n { name: \"TelegramIcon\", kebabName: \"telegram\", Component: TelegramIcon },\n { name: \"TerminalIcon\", kebabName: \"terminal\", Component: TerminalIcon },\n { name: \"TerminalSquareIcon\", kebabName: \"terminal-square\", Component: TerminalSquareIcon },\n { name: \"ThermometerIcon\", kebabName: \"thermometer\", Component: ThermometerIcon },\n { name: \"ThermometerSnowflakeIcon\", kebabName: \"thermometer-snowflake\", Component: ThermometerSnowflakeIcon },\n { name: \"ThermometerSunIcon\", kebabName: \"thermometer-sun\", Component: ThermometerSunIcon },\n { name: \"TicketAddIcon\", kebabName: \"ticket-add\", Component: TicketAddIcon },\n { name: \"TicketCancelIcon\", kebabName: \"ticket-cancel\", Component: TicketCancelIcon },\n { name: \"TicketCheckIcon\", kebabName: \"ticket-check\", Component: TicketCheckIcon },\n { name: \"TicketDiscountIcon\", kebabName: \"ticket-discount\", Component: TicketDiscountIcon },\n { name: \"TicketIcon\", kebabName: \"ticket\", Component: TicketIcon },\n { name: \"TimerIcon\", kebabName: \"timer\", Component: TimerIcon },\n { name: \"ToggleLeftIcon\", kebabName: \"toggle-left\", Component: ToggleLeftIcon },\n { name: \"ToggleRightIcon\", kebabName: \"toggle-right\", Component: ToggleRightIcon },\n { name: \"ToiletIcon\", kebabName: \"toilet\", Component: ToiletIcon },\n { name: \"TorchIcon\", kebabName: \"torch\", Component: TorchIcon },\n { name: \"TorchOffIcon\", kebabName: \"torch-off\", Component: TorchOffIcon },\n { name: \"TornadoIcon\", kebabName: \"tornado\", Component: TornadoIcon },\n { name: \"TrademarkIcon\", kebabName: \"trademark\", Component: TrademarkIcon },\n { name: \"TrainIcon\", kebabName: \"train\", Component: TrainIcon },\n { name: \"TransgenderIcon\", kebabName: \"transgender\", Component: TransgenderIcon },\n { name: \"TrashIcon\", kebabName: \"trash\", Component: TrashIcon },\n { name: \"TreeIcon\", kebabName: \"tree\", Component: TreeIcon },\n { name: \"TrendingDownIcon\", kebabName: \"trending-down\", Component: TrendingDownIcon },\n { name: \"TrendingUpDownIcon\", kebabName: \"trending-up-down\", Component: TrendingUpDownIcon },\n { name: \"TrendingUpIcon\", kebabName: \"trending-up\", Component: TrendingUpIcon },\n { name: \"TriangleIcon\", kebabName: \"triangle\", Component: TriangleIcon },\n { name: \"TrophyIcon\", kebabName: \"trophy\", Component: TrophyIcon },\n { name: \"TruckIcon\", kebabName: \"truck\", Component: TruckIcon },\n { name: \"TvIcon\", kebabName: \"tv\", Component: TvIcon },\n { name: \"UmbrellaIcon\", kebabName: \"umbrella\", Component: UmbrellaIcon },\n { name: \"UmbrellaOffIcon\", kebabName: \"umbrella-off\", Component: UmbrellaOffIcon },\n { name: \"UndoIcon\", kebabName: \"undo\", Component: UndoIcon },\n { name: \"UngroupIcon\", kebabName: \"ungroup\", Component: UngroupIcon },\n { name: \"UnlinkIcon\", kebabName: \"unlink\", Component: UnlinkIcon },\n { name: \"UnlockIcon\", kebabName: \"unlock\", Component: UnlockIcon },\n { name: \"UploadIcon\", kebabName: \"upload\", Component: UploadIcon },\n { name: \"UsbIcon\", kebabName: \"usb\", Component: UsbIcon },\n { name: \"UserCheckIcon\", kebabName: \"user-check\", Component: UserCheckIcon },\n { name: \"UserCircleIcon\", kebabName: \"user-circle\", Component: UserCircleIcon },\n { name: \"UserCogIcon\", kebabName: \"user-cog\", Component: UserCogIcon },\n { name: \"UserEditIcon\", kebabName: \"user-edit\", Component: UserEditIcon },\n { name: \"UserIcon\", kebabName: \"user\", Component: UserIcon },\n { name: \"UserLockIcon\", kebabName: \"user-lock\", Component: UserLockIcon },\n { name: \"UserMinusIcon\", kebabName: \"user-minus\", Component: UserMinusIcon },\n { name: \"UserPlusIcon\", kebabName: \"user-plus\", Component: UserPlusIcon },\n { name: \"UserSearchIcon\", kebabName: \"user-search\", Component: UserSearchIcon },\n { name: \"UsersIcon\", kebabName: \"users\", Component: UsersIcon },\n { name: \"UserSquareIcon\", kebabName: \"user-square\", Component: UserSquareIcon },\n { name: \"UserStarIcon\", kebabName: \"user-star\", Component: UserStarIcon },\n { name: \"VideoIcon\", kebabName: \"video\", Component: VideoIcon },\n { name: \"VideoOffIcon\", kebabName: \"video-off\", Component: VideoOffIcon },\n { name: \"VolumeIcon\", kebabName: \"volume\", Component: VolumeIcon },\n { name: \"VolumeOffIcon\", kebabName: \"volume-off\", Component: VolumeOffIcon },\n { name: \"WalletIcon\", kebabName: \"wallet\", Component: WalletIcon },\n { name: \"WandIcon\", kebabName: \"wand\", Component: WandIcon },\n { name: \"WatchIcon\", kebabName: \"watch\", Component: WatchIcon },\n { name: \"WebcamIcon\", kebabName: \"webcam\", Component: WebcamIcon },\n { name: \"WhatsappFilledIcon\", kebabName: \"whatsapp-filled\", Component: WhatsappFilledIcon },\n { name: \"WhatsappIcon\", kebabName: \"whatsapp\", Component: WhatsappIcon },\n { name: \"WifiIcon\", kebabName: \"wifi\", Component: WifiIcon },\n { name: \"WindIcon\", kebabName: \"wind\", Component: WindIcon },\n { name: \"WorkflowIcon\", kebabName: \"workflow\", Component: WorkflowIcon },\n { name: \"WrapTextIcon\", kebabName: \"wrap-text\", Component: WrapTextIcon },\n { name: \"WrenchIcon\", kebabName: \"wrench\", Component: WrenchIcon },\n { name: \"XFilledIcon\", kebabName: \"x-filled\", Component: XFilledIcon },\n { name: \"XIcon\", kebabName: \"x\", Component: XIcon },\n { name: \"YenIcon\", kebabName: \"yen\", Component: YenIcon },\n { name: \"YenSymbolIcon\", kebabName: \"yen-symbol\", Component: YenSymbolIcon },\n { name: \"YoutubeFilledIcon\", kebabName: \"youtube-filled\", Component: YoutubeFilledIcon },\n { name: \"YoutubeIcon\", kebabName: \"youtube\", Component: YoutubeIcon },\n { name: \"ZapIcon\", kebabName: \"zap\", Component: ZapIcon },\n { name: \"ZapOffIcon\", kebabName: \"zap-off\", Component: ZapOffIcon },\n { name: \"ZoomInIcon\", kebabName: \"zoom-in\", Component: ZoomInIcon },\n { name: \"ZoomOutIcon\", kebabName: \"zoom-out\", Component: ZoomOutIcon },\n];\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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","names":["registry","anchor","import_react","import_jsx_runtime","Button","import_react","import_jsx_runtime","Input","import_react","import_jsx_runtime","Textarea","React","import_react","import_jsx_runtime","Checkbox","import_react","import_jsx_runtime","Radio","import_react","import_jsx_runtime","Toggle","import_react","import_jsx_runtime","Badge","import_react","import_jsx_runtime","Avatar","import_react","import_jsx_runtime","Spinner","import_react","import_jsx_runtime","Divider","import_react","import_jsx_runtime","Card","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","Alert","import_react","import_react","import_jsx_runtime","Modal","import_react","import_react","clamp","import_jsx_runtime","Tooltip","import_react","import_jsx_runtime","DEFAULT_ICONS","import_react","import_jsx_runtime","Progress","import_react","import_jsx_runtime","Tabs","TabList","Tab","TabPanel","import_react","sanitizeValue","makePanelId","getRootClasses","import_jsx_runtime","Accordion","getRootClasses","AccordionItem","makePanelId","AccordionTrigger","AccordionPanel","import_react","makeTriggerId","getItemClasses","getTriggerAriaProps","import_react","import_jsx_runtime","mergeRefs","composeHandlers","makeTriggerId","DropdownMenuTrigger","getTriggerAriaProps","DropdownMenuContent","menu","DropdownMenuItem","getItemClasses","DropdownMenuSeparator","DropdownMenuLabel","import_react","sanitizeValue","makeTriggerId","getTriggerClasses","getTriggerAriaProps","getOpenIntent","import_jsx_runtime","Select","makeTriggerId","value","getOpenIntent","disabled","getTriggerAriaProps","getTriggerClasses","import_react","getRootClasses","import_jsx_runtime","Slider","getRootClasses","import_react","sanitizeValue","makeListboxId","makeOptionId","sanitizeValue","getInputClasses","getListboxClasses","getOptionClasses","getTriggerAriaProps","getListboxAriaProps","getOptionAriaProps","import_jsx_runtime","Combobox","makeListboxId","makeOptionId","disabled","getTriggerAriaProps","getListboxClasses","getListboxAriaProps","getOptionClasses","getOptionAriaProps","getInputClasses","import_react","import_jsx_runtime","Calendar","isSelected","import_react","import_react","makeTriggerId","getTriggerAriaProps","import_jsx_runtime","mergeRefs","composeHandlers","makeTriggerId","PopoverTrigger","getTriggerAriaProps","PopoverContent","PopoverClose","import_jsx_runtime","DatePicker","import_react","getFieldTriggerAriaProps","import_jsx_runtime","TimePicker","getFieldTriggerAriaProps","isSelected","import_react","getFieldTriggerAriaProps","import_jsx_runtime","ColorPicker","getFieldTriggerAriaProps","isSelected","import_react","import_jsx_runtime","Carousel","next","CarouselViewport","CarouselTrack","React","CarouselSlide","CarouselPrevious","CarouselNext","CarouselIndicators","import_react","getRootClasses","getItemClasses","import_jsx_runtime","Timeline","getRootClasses","TimelineItem","getItemClasses","import_react","sanitizeValue","getItemClasses","getInputAriaProps","getItemAriaProps","import_jsx_runtime","CommandPalette","React","getInputAriaProps","getItemClasses","getItemAriaProps","import_react","getInputClasses","import_jsx_runtime","NumberInput","getInputClasses","import_react","getRootClasses","import_jsx_runtime","mergeRefs","FileUpload","getRootClasses","import_react","getRootClasses","getItemClasses","import_jsx_runtime","Pagination","getRootClasses","getItemClasses","import_react","range","getRootClasses","getItemClasses","getNavAriaProps","import_jsx_runtime","Breadcrumb","getNavAriaProps","getRootClasses","getItemClasses","import_react","import_jsx_runtime","Skeleton","import_react","getWrapperClasses","import_jsx_runtime","Table","getWrapperClasses","TableHeader","TableBody","TableRow","TableHead","TableCell","TableCaption","import_react","import_jsx_runtime","Drawer","import_react","getMenuClasses","getMenuAriaProps","import_jsx_runtime","mergeRefs","getMenuItems","isItemDisabled","ContextMenuTrigger","ContextMenuContent","menu","getMenuAriaProps","getMenuClasses","ContextMenuItem","getItemClasses","ContextMenuSeparator","ContextMenuLabel","import_react","isLeftHalf","STEP_KEYS_UP","STEP_KEYS_DOWN","getKeyboardValue","getRootClasses","import_jsx_runtime","Rating","getKeyboardValue","getRootClasses","import_react","getRootClasses","import_jsx_runtime","OTPInput","getRootClasses","import_react","import_jsx_runtime","PhoneInput","import_react","import_jsx_runtime","StatCard"]}