@ekkolyth/ui 0.1.18 → 0.2.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.
@@ -1,14 +1,16 @@
1
1
  import { t as cn } from "./utils-C_uf36nf.js";
2
- import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
3
  import { Slot } from "@radix-ui/react-slot";
4
4
  import { cva } from "class-variance-authority";
5
- import { Activity, Airplay, AlarmClock, AlarmClockCheck, AlarmClockMinus, AlarmClockOff, AlarmClockPlus, AlarmSmoke, Album, AlertCircle, Amphora, Anchor, Anvil, Aperture, AppWindow, AppWindowMac, Apple, Archive, ArchiveRestore, ArchiveX, ArrowBigDown, ArrowBigDownDash, ArrowBigLeft, ArrowBigLeftDash, ArrowBigRight, ArrowBigRightDash, ArrowBigUp, ArrowBigUpDash, ArrowDownFromLine, ArrowDownToLine, ArrowLeft, ArrowRight, ArrowUpFromLine, ArrowUpToLine, AtSign, Atom, Award, Axe, Baby, Backpack, Badge, BadgeAlert, BadgeCent, BadgeCheck, BadgeDollarSign, BadgeEuro, BadgeIndianRupee, BadgeInfo, BadgeJapaneseYen, BadgeMinus, BadgePercent, BadgePlus, BadgePoundSterling, BadgeQuestionMark, BadgeRussianRuble, BadgeSwissFranc, BadgeTurkishLira, BadgeX, BaggageClaim, Banana, Banknote, BanknoteArrowDown, BanknoteArrowUp, BanknoteX, BarChartHorizontalBig, Barcode, Barrel, Bath, Beaker, Bean, BeanOff, Beef, Beer, BeerOff, Bell, BellDot, BetweenHorizontalEnd, BetweenHorizontalStart, BetweenVerticalEnd, BetweenVerticalStart, Bike, Binoculars, Biohazard, Bird, Birdhouse, Bitcoin, Blend, BluetoothConnected, Bolt, Bomb, Bone, Book, BookA, BookAlert, BookCheck, BookCopy, BookHeart, BookImage, BookKey, BookLock, BookMarked, BookMinus, BookOpen, BookOpenCheck, BookPlus, BookSearch, BookText, BookType, BookUser, BookX, Bookmark, BookmarkCheck, BoomBox, Bot, BotMessageSquare, BotOff, BottleWine, BowArrow, Box, Boxes, Braces, Brackets, Brain, BrainCircuit, BrainCog, BriefcaseBusiness, BriefcaseConveyorBelt, Brush, BrushCleaning, Bug, BugOff, BugPlay, Building2, BusFront, CableCar, Cake, CakeSlice, Calculator, Calendar, Calendar1, CalendarArrowDown, CalendarArrowUp, CalendarCheck, CalendarCheck2, CalendarClock, CalendarCog, CalendarDays, CalendarFold, CalendarHeart, CalendarIcon, CalendarMinus, CalendarMinus2, CalendarOff, CalendarPlus, CalendarPlus2, CalendarRange, CalendarSearch, CalendarSync, CalendarX, CalendarX2, Calendars, Camera, CameraOff, Candy, CandyCane, CandyOff, CarFront, Caravan, Carrot, CassetteTape, Castle, Cat, Cctv, ChartArea, ChartCandlestick, ChartNoAxesGantt, ChartPie, Check, CheckCheck, ChefHat, Cherry, ChessBishop, ChessKing, ChessKnight, ChessPawn, ChessQueen, ChessRook, ChevronDown, ChevronDownIcon, ChevronLeftIcon, ChevronRight, ChevronRightIcon, ChevronUp, ChevronsDown, ChevronsLeft, ChevronsLeftRightEllipsis, ChevronsRight, ChevronsUp, Cigarette, CigaretteOff, Circle, CircleAlert, CircleArrowDown, CircleArrowLeft, CircleArrowOutDownLeft, CircleArrowOutDownRight, CircleArrowOutUpLeft, CircleArrowOutUpRight, CircleArrowRight, CircleArrowUp, CircleCheck, CircleCheckBig, CircleChevronDown, CircleChevronLeft, CircleChevronRight, CircleChevronUp, CircleDashed, CircleDivide, CircleDollarSign, CircleDot, CircleDotDashed, CircleEllipsis, CircleEqual, CircleFadingArrowUp, CircleFadingPlus, CircleGauge, CircleHelp, CircleMinus, CircleOff, CircleParking, CircleParkingOff, CirclePause, CirclePercent, CirclePile, CirclePlay, CirclePlus, CirclePoundSterling, CirclePower, CircleQuestionMark, CircleSlash, CircleSlash2, CircleSlashed, CircleSmall, CircleStar, CircleStop, CircleUser, CircleUserRound, CircleX, CircuitBoard, Citrus, Clapperboard, ClipboardCheck, ClipboardClock, Clock, Clock1, Clock10, Clock11, Clock12, Clock2, Clock3, Clock4, Clock5, Clock6, Clock7, Clock8, Clock9, ClockAlert, ClockArrowDown, ClockArrowUp, ClockCheck, ClockFading, ClockPlus, Cloud, CloudAlert, CloudBackup, CloudDownload, CloudSync, CloudUpload, Cloudy, Clover, Club, Code, CodeXml, Coffee, Cog, Coins, Combine, Compass, Computer, ConciergeBell, Contact, ContactRound, Contrast, Cookie, CookingPot, CopyCheck, Cpu, CreditCard, Croissant, Crop, Crosshair, Crown, Cuboid, CupSoda, Currency, Database, DatabaseBackup, Dessert, Diameter, Diamond, DiamondMinus, DiamondPercent, DiamondPlus, Dice1, Dice2, Dice3, Dice4, Dice5, Dice6, Dices, Diff, Disc2, DivideCircle, DnaOff, Dock, Dog, DollarSign, Donut, DoorClosed, DoorClosedLocked, DoorOpen, Download, DownloadCloud, DraftingCompass, Drill, Droplet, DropletOff, Drum, Drumstick, Eclipse, Edit, Edit3, Egg, EggFried, EggOff, EthernetPort, Euro, ExternalLink, Eye, EyeClosed, EyeOff, FastForward, Feather, File, FileArchive, FileAxis3d, FileBadge, FileBox, FileBraces, FileBracesCorner, FileChartColumn, FileChartColumnIncreasing, FileChartLine, FileChartPie, FileCheck, FileCheckCorner, FileClock, FileCode, FileCodeCorner, FileCog, FileDiff, FileDigit, FileDown, FileExclamationPoint, FileHeadphone, FileHeart, FileImage, FileInput, FileKey, FileLock, FileMinus, FileMinusCorner, FileMusic, FileOutput, FilePen, FilePenLine, FilePlay, FilePlus, FilePlusCorner, FileQuestionMark, FileScan, FileSearch, FileSearchCorner, FileSignal, FileSliders, FileSpreadsheet, FileStack, FileSymlink, FileTerminal, FileText, FileType, FileTypeCorner, FileUp, FileUser, FileVideoCamera, FileVolume, FileX, FileXCorner, Files, Film, Filter, FireExtinguisher, Fish, FishOff, FishSymbol, FishingHook, Flag, FlagOff, Flame, FlameKindling, Flashlight, FlashlightOff, FlaskConical, FlaskConicalOff, FlaskRound, FlipHorizontal2, FlipVertical2, Flower, Focus, Folder, FolderArchive, FolderCheck, FolderClock, FolderClosed, FolderCode, FolderCog, FolderDot, FolderDown, FolderGit, FolderGit2, FolderHeart, FolderInput, FolderKanban, FolderKey, FolderLock, FolderMinus, FolderOpen, FolderOpenDot, FolderOutput, FolderPen, FolderPlus, FolderRoot, FolderSearch, FolderSearch2, FolderSymlink, FolderSync, FolderTree, FolderUp, FolderX, Folders, Footprints, Forward, Frame, Fullscreen, GalleryHorizontal, GalleryHorizontalEnd, GalleryThumbnails, GalleryVertical, GalleryVerticalEnd, Gamepad, Gamepad2, GamepadDirectional, GanttChart, Gauge, GaugeCircle, Gavel, Gem, GeorgianLari, Ghost, Gift, GitBranch, GitMerge, GitPullRequest, GlassWater, Globe2, Goal, Gpu, GraduationCap, Grape, Grid2x2Check, Group, Guitar, Ham, Hamburger, Hammer, HandCoins, HandFist, HandHeart, HandPlatter, Handbag, Handshake, HardDriveDownload, HardDriveUpload, HardHat, Hash, HatGlasses, HdmiPort, HeadphoneOff, Headphones, Headset, Heart, HeartCrack, HeartMinus, HeartOff, HeartPlus, Heater, Helicopter, HelpCircle, Hexagon, History, Home, Hop, HopOff, Hospital, Hotel, Hourglass, HouseHeart, IceCreamBowl, IceCreamCone, Image, ImageDown, ImageMinus, ImageOff, ImagePlay, ImagePlus, ImageUp, ImageUpscale, Images, Import, Inbox, IndianRupee, Info, InspectionPanel, JapaneseYen, Joystick, Key, KeyboardMusic, LampCeiling, LandPlot, Landmark, LaptopMinimalCheck, Layers2, LayoutList, Leaf, LeafyGreen, Library, LibraryBig, LifeBuoy, Lightbulb, LightbulbOff, LineChart, Link, ListCheck, ListMusic, ListTree, LoaderCircle, Lock, Lollipop, Luggage, Mail, MailCheck, Mailbox, Mails, Map, MapMinus, MapPin, MapPinCheck, MapPinCheckInside, MapPinHouse, MapPinMinus, MapPinMinusInside, MapPinOff, MapPinPen, MapPinPlus, MapPinPlusInside, MapPinX, MapPinXInside, MapPinned, Martini, Medal, MemoryStick, Menu, Merge, MessageCircle, MessageCircleCode, MessageCircleDashed, MessageCircleHeart, MessageCircleMore, MessageCircleOff, MessageCirclePlus, MessageCircleQuestionMark, MessageCircleReply, MessageCircleWarning, MessageCircleX, MessageSquare, MessageSquareCode, MessageSquareDashed, MessageSquareDiff, MessageSquareDot, MessageSquareHeart, MessageSquareLock, MessageSquareMore, MessageSquareOff, MessageSquarePlus, MessageSquareQuote, MessageSquareReply, MessageSquareShare, MessageSquareText, MessageSquareWarning, MessageSquareX, MessagesSquare, Mic, Microscope, Microwave, Milestone, Milk, MilkOff, Minus, MinusCircle, MonitorCheck, Moon, MoreHorizontal, Mountain, Music, Music2, Music3, Music4, Newspaper, Nfc, Notebook, NotebookPen, NotebookTabs, NotebookText, NotepadText, NotepadTextDashed, Nut, NutOff, Omega, Orbit, Origami, Package, Package2, PackageOpen, PackageSearch, PaintBucket, PaintRoller, Paintbrush, PaintbrushVertical, Palette, Panda, Paperclip, Parentheses, PartyPopper, PauseCircle, PawPrint, PcCase, Pen, PenLine, PenOff, Pencil, PencilLine, PencilOff, PencilRuler, Percent, PercentCircle, PersonStanding, PhilippinePeso, Phone, Pickaxe, PieChart, PiggyBank, Pin, Pipette, Pizza, Plane, PlaneLanding, PlaneTakeoff, PlayCircle, Plug2, Plus, PlusCircle, PocketKnife, Podcast, Popcorn, Popsicle, PoundSterling, PowerCircle, Presentation, Projector, Proportions, Puzzle, Pyramid, QrCode, Rabbit, Radiation, Radio, RadioReceiver, RadioTower, Radius, Rainbow, Rat, Ratio, Receipt, ReceiptCent, ReceiptEuro, ReceiptIndianRupee, ReceiptJapaneseYen, ReceiptPoundSterling, ReceiptRussianRuble, ReceiptSwissFranc, ReceiptText, ReceiptTurkishLira, RectangleGoggles, Recycle, Redo2, RefreshCcwDot, Refrigerator, Repeat1, Repeat2, Rewind, Ribbon, Rocket, Rose, RotateCcw, RotateCcwSquare, RotateCw, RotateCwSquare, Rss, Ruler, RulerDimensionLine, RussianRuble, Sailboat, Salad, Sandwich, Satellite, SaudiRiyal, Save, SaveAll, SaveOff, Scale, Scan, ScanBarcode, ScanEye, ScanFace, ScanLine, ScanQrCode, ScanSearch, School, Scissors, ScissorsLineDashed, Scroll, ScrollText, Search, SearchAlert, SearchCheck, SearchCode, SearchSlash, SearchX, ServerCog, Settings, Settings2, Shapes, Share, Share2, Sheet, Shell, Shield, ShieldAlert, ShieldBan, ShieldCheck, ShieldEllipsis, ShieldHalf, ShieldMinus, ShieldOff, ShieldPlus, ShieldQuestionMark, ShieldX, Ship, ShipWheel, Shirt, ShoppingBag, ShoppingBasket, ShoppingCart, Shovel, ShowerHead, Shredder, Shrimp, Shuffle, Sigma, Signpost, SignpostBig, SkipBack, Skull, SlidersHorizontal, SmartphoneCharging, SmartphoneNfc, SmilePlus, Snail, Snowflake, SoapDispenserDroplet, Sofa, SolarPanel, Soup, Spade, Sparkle, Sparkles, Speaker, SplinePointer, Spool, Spotlight, SprayCan, Sprout, Square, SquareActivity, SquareArrowDown, SquareArrowDownLeft, SquareArrowDownRight, SquareArrowOutUpRight, SquareArrowUpRight, SquareBottomDashedScissors, SquareChartGantt, SquareCheck, SquareDashedBottom, SquareDashedBottomCode, SquareDashedMousePointer, SquareLibrary, SquareMinus, SquareMousePointer, SquarePercent, SquarePlay, SquarePlus, SquareScissors, SquareStack, SquareStar, Squirrel, Stamp, Star, StarHalf, StarOff, Stars, Stethoscope, Sticker, StickyNote, StopCircle, Store, Sun, SunDim, Sunrise, Sunset, SwatchBook, SwissFranc, Sword, Swords, Syringe, Table, Table2, TableCellsMerge, TableCellsSplit, TableColumnsSplit, TableProperties, TableRowsSplit, TabletSmartphone, Tag, Tags, Tally1, Tally2, Tally3, Tally4, Tally5, Tangent, Target, Telescope, Tent, TentTree, Terminal, TerminalSquare, TestTube, TestTubeDiagonal, TestTubes, Text, Theater, ThumbsDown, ThumbsUp, TicketPercent, Tickets, TicketsPlane, Timer, TimerOff, TimerReset, ToolCase, Toolbox, Torus, TowerControl, ToyBrick, Tractor, TrainFrontTunnel, Trash, Trash2, Trees, TrendingDown, Trophy, TurkishLira, Turtle, TvMinimalPlay, Undo2, Ungroup, Upload, UploadCloud, Usb, User, UserCircle2, UserRoundSearch, UserSearch, Users, UsersRound, Utensils, UtensilsCrossed, Vault, VectorSquare, Vegan, VenetianMask, Video, VideoOff, Videotape, View, Voicemail, Volleyball, Volume1, Vote, Wallet, WalletCards, WalletMinimal, Wand, WandSparkles, WashingMachine, Watch, Waypoints, Webcam, Webhook, WebhookOff, Wheat, WheatOff, Wifi, WifiCog, Wine, WineOff, Worm, Wrench, XCircle, Zap, ZapOff, ZoomIn, ZoomOut } from "lucide-react";
5
+ import { Combobox } from "@base-ui/react";
6
6
  import * as React from "react";
7
+ import { useRef } from "react";
8
+ import { Activity, Airplay, AlarmClock, AlarmClockCheck, AlarmClockMinus, AlarmClockOff, AlarmClockPlus, AlarmSmoke, Album, AlertCircle, Ampersand, Ampersands, Amphora, Anchor, Anvil, Aperture, AppWindow, AppWindowMac, Apple, Archive, ArchiveRestore, ArchiveX, ArrowBigDown, ArrowBigDownDash, ArrowBigLeft, ArrowBigLeftDash, ArrowBigRight, ArrowBigRightDash, ArrowBigUp, ArrowBigUpDash, ArrowDownFromLine, ArrowDownToLine, ArrowLeft, ArrowRight, ArrowRightToLine, ArrowUpFromLine, ArrowUpToLine, Asterisk, AtSign, Atom, Award, Axe, Baby, Backpack, Badge, BadgeAlert, BadgeCent, BadgeCheck, BadgeDollarSign, BadgeEuro, BadgeIndianRupee, BadgeInfo, BadgeJapaneseYen, BadgeMinus, BadgePercent, BadgePlus, BadgePoundSterling, BadgeQuestionMark, BadgeRussianRuble, BadgeSwissFranc, BadgeTurkishLira, BadgeX, BaggageClaim, Banana, Banknote, BanknoteArrowDown, BanknoteArrowUp, BanknoteX, BarChartHorizontalBig, Barcode, Barrel, Bath, Beaker, Bean, BeanOff, Beef, Beer, BeerOff, Bell, BellDot, BetweenHorizontalEnd, BetweenHorizontalStart, BetweenVerticalEnd, BetweenVerticalStart, Bike, Binary, Binoculars, Biohazard, Bird, Birdhouse, Bitcoin, Blend, Blocks, BluetoothConnected, Bolt, Bomb, Bone, Book, BookA, BookAlert, BookCheck, BookCopy, BookDashed, BookDown, BookHeart, BookImage, BookKey, BookLock, BookMarked, BookMinus, BookOpen, BookOpenCheck, BookOpenText, BookPlus, BookSearch, BookText, BookType, BookUp, BookUp2, BookUser, BookX, Bookmark, BookmarkCheck, BoomBox, Bot, BotMessageSquare, BotOff, BottleWine, BowArrow, Box, Boxes, Braces, Brackets, Brain, BrainCircuit, BrainCog, BriefcaseBusiness, BriefcaseConveyorBelt, Brush, BrushCleaning, Bug, BugOff, BugPlay, Building2, BusFront, CableCar, Cake, CakeSlice, Calculator, Calendar, Calendar1, CalendarArrowDown, CalendarArrowUp, CalendarCheck, CalendarCheck2, CalendarClock, CalendarCog, CalendarDays, CalendarFold, CalendarHeart, CalendarIcon, CalendarMinus, CalendarMinus2, CalendarOff, CalendarPlus, CalendarPlus2, CalendarRange, CalendarSearch, CalendarSync, CalendarX, CalendarX2, Calendars, Camera, CameraOff, Candy, CandyCane, CandyOff, CarFront, Caravan, Carrot, CaseLower, CaseUpper, CassetteTape, Castle, Cat, Cctv, ChartArea, ChartCandlestick, ChartNoAxesGantt, ChartPie, Check, CheckCheck, CheckIcon, ChefHat, Cherry, ChessBishop, ChessKing, ChessKnight, ChessPawn, ChessQueen, ChessRook, ChevronDown, ChevronDownIcon, ChevronLeftIcon, ChevronRight, ChevronRightIcon, ChevronUp, ChevronsDown, ChevronsLeft, ChevronsLeftRightEllipsis, ChevronsRight, ChevronsUp, Cigarette, CigaretteOff, Circle, CircleAlert, CircleArrowDown, CircleArrowLeft, CircleArrowOutDownLeft, CircleArrowOutDownRight, CircleArrowOutUpLeft, CircleArrowOutUpRight, CircleArrowRight, CircleArrowUp, CircleCheck, CircleCheckBig, CircleChevronDown, CircleChevronLeft, CircleChevronRight, CircleChevronUp, CircleDashed, CircleDivide, CircleDollarSign, CircleDot, CircleDotDashed, CircleEllipsis, CircleEqual, CircleFadingArrowUp, CircleFadingPlus, CircleGauge, CircleHelp, CircleMinus, CircleOff, CircleParking, CircleParkingOff, CirclePause, CirclePercent, CirclePile, CirclePlay, CirclePlus, CirclePoundSterling, CirclePower, CircleQuestionMark, CircleSlash, CircleSlash2, CircleSlashed, CircleSmall, CircleStar, CircleStop, CircleUser, CircleUserRound, CircleX, CircuitBoard, Citrus, Clapperboard, ClipboardCheck, ClipboardClock, Clock, Clock1, Clock10, Clock11, Clock12, Clock2, Clock3, Clock4, Clock5, Clock6, Clock7, Clock8, Clock9, ClockAlert, ClockArrowDown, ClockArrowUp, ClockCheck, ClockFading, ClockPlus, Cloud, CloudAlert, CloudBackup, CloudCheck, CloudCog, CloudDownload, CloudSync, CloudUpload, Cloudy, Clover, Club, Code, CodeXml, Coffee, Cog, Coins, Combine, Command, Compass, Component, Computer, ConciergeBell, Construction, Contact, ContactRound, Container, Contrast, Cookie, CookingPot, CopyCheck, CopySlash, CornerDownRight, Cpu, CreditCard, Croissant, Crop, Crosshair, Crown, Cuboid, CupSoda, Currency, Database, DatabaseBackup, DatabaseZap, Dessert, Diameter, Diamond, DiamondMinus, DiamondPercent, DiamondPlus, Dice1, Dice2, Dice3, Dice4, Dice5, Dice6, Dices, Diff, Disc2, Divide, DivideCircle, DnaOff, Dock, Dog, DollarSign, Donut, DoorClosed, DoorClosedLocked, DoorOpen, Download, DownloadCloud, DraftingCompass, Drill, Droplet, DropletOff, Drum, Drumstick, Dumbbell, EarthLock, Eclipse, Edit, Edit3, Egg, EggFried, EggOff, Ellipsis, Equal, EqualNot, EthernetPort, Euro, ExternalLink, Eye, EyeClosed, EyeOff, FastForward, Feather, File, FileArchive, FileAxis3d, FileBadge, FileBox, FileBraces, FileBracesCorner, FileChartColumn, FileChartColumnIncreasing, FileChartLine, FileChartPie, FileCheck, FileCheckCorner, FileClock, FileCode, FileCodeCorner, FileCog, FileDiff, FileDigit, FileDown, FileExclamationPoint, FileHeadphone, FileHeart, FileImage, FileInput, FileKey, FileLock, FileMinus, FileMinusCorner, FileMusic, FileOutput, FilePen, FilePenLine, FilePlay, FilePlus, FilePlusCorner, FileQuestionMark, FileScan, FileSearch, FileSearchCorner, FileSignal, FileSliders, FileSpreadsheet, FileStack, FileSymlink, FileTerminal, FileText, FileType, FileTypeCorner, FileUp, FileUser, FileVideoCamera, FileVolume, FileX, FileXCorner, Files, Film, Filter, FireExtinguisher, Fish, FishOff, FishSymbol, FishingHook, Flag, FlagOff, FlagTriangleLeft, FlagTriangleRight, Flame, FlameKindling, Flashlight, FlashlightOff, FlaskConical, FlaskConicalOff, FlaskRound, FlipHorizontal2, FlipVertical2, Flower, Focus, Folder, FolderArchive, FolderCheck, FolderClock, FolderClosed, FolderCode, FolderCog, FolderDot, FolderDown, FolderGit, FolderGit2, FolderHeart, FolderInput, FolderKanban, FolderKey, FolderLock, FolderMinus, FolderOpen, FolderOpenDot, FolderOutput, FolderPen, FolderPlus, FolderRoot, FolderSearch, FolderSearch2, FolderSymlink, FolderSync, FolderTree, FolderUp, FolderX, Folders, Footprints, Form, Forward, Frame, Fullscreen, GalleryHorizontal, GalleryHorizontalEnd, GalleryThumbnails, GalleryVertical, GalleryVerticalEnd, Gamepad, Gamepad2, GamepadDirectional, GanttChart, Gauge, GaugeCircle, Gavel, Gem, GeorgianLari, Ghost, Gift, GitBranch, GitBranchMinus, GitBranchPlus, GitCommitHorizontal, GitCommitVertical, GitCompare, GitCompareArrows, GitFork, GitGraph, GitMerge, GitPullRequest, GitPullRequestArrow, GitPullRequestClosed, GitPullRequestCreate, GitPullRequestCreateArrow, GitPullRequestDraft, GlassWater, Globe2, GlobeLock, Goal, Gpu, GraduationCap, Grape, Grid2x2Check, Group, Guitar, Ham, Hamburger, Hammer, HandCoins, HandFist, HandHeart, HandPlatter, Handbag, Handshake, HardDrive, HardDriveDownload, HardDriveUpload, HardHat, Hash, HatGlasses, HdmiPort, HeadphoneOff, Headphones, Headset, Heart, HeartCrack, HeartMinus, HeartOff, HeartPlus, Heater, Helicopter, HelpCircle, Hexagon, History, Home, Hop, HopOff, Hospital, Hotel, Hourglass, HouseHeart, IceCreamBowl, IceCreamCone, Image, ImageDown, ImageIcon, ImageMinus, ImageOff, ImagePlay, ImagePlus, ImageUp, ImageUpscale, Images, Import, Inbox, IndianRupee, Info, InspectionPanel, JapaneseYen, Joystick, Kanban, Key, Keyboard, KeyboardMusic, KeyboardOff, LampCeiling, LandPlot, Landmark, LaptopMinimalCheck, Layers2, LayoutList, Leaf, LeafyGreen, Library, LibraryBig, LifeBuoy, Lightbulb, LightbulbOff, LineChart, Link, ListCheck, ListIndentDecrease, ListIndentIncrease, ListMusic, ListTree, Loader2Icon, LoaderCircle, Lock, Lollipop, Luggage, Mail, MailCheck, Mailbox, Mails, Map, MapMinus, MapPin, MapPinCheck, MapPinCheckInside, MapPinHouse, MapPinMinus, MapPinMinusInside, MapPinOff, MapPinPen, MapPinPlus, MapPinPlusInside, MapPinX, MapPinXInside, MapPinned, Martini, Medal, MemoryStick, Menu, Merge, MessageCircle, MessageCircleCode, MessageCircleDashed, MessageCircleHeart, MessageCircleMore, MessageCircleOff, MessageCirclePlus, MessageCircleQuestionMark, MessageCircleReply, MessageCircleWarning, MessageCircleX, MessageSquare, MessageSquareCode, MessageSquareDashed, MessageSquareDiff, MessageSquareDot, MessageSquareHeart, MessageSquareLock, MessageSquareMore, MessageSquareOff, MessageSquarePlus, MessageSquareQuote, MessageSquareReply, MessageSquareShare, MessageSquareText, MessageSquareWarning, MessageSquareX, MessagesSquare, Mic, Microscope, Microwave, Milestone, Milk, MilkOff, Minus, MinusCircle, MonitorCheck, MonitorCloud, Moon, MoreHorizontal, Mountain, Music, Music2, Music3, Music4, Network, Newspaper, Nfc, Notebook, NotebookPen, NotebookTabs, NotebookText, NotepadText, NotepadTextDashed, Nut, NutOff, Omega, Option, Orbit, Origami, Package, Package2, PackageCheck, PackageMinus, PackageOpen, PackagePlus, PackageSearch, PackageX, PaintBucket, PaintRoller, Paintbrush, PaintbrushVertical, Palette, Panda, PanelTop, PanelsTopLeft, Paperclip, Parentheses, PartyPopper, PauseCircle, PawPrint, PcCase, Pen, PenLine, PenOff, Pencil, PencilLine, PencilOff, PencilRuler, Percent, PercentCircle, PersonStanding, PhilippinePeso, Phone, Pi, Pickaxe, PieChart, PiggyBank, Pin, Pipette, Pizza, Plane, PlaneLanding, PlaneTakeoff, PlayCircle, Plug, Plug2, Plus, PlusCircle, PocketKnife, Podcast, Popcorn, Popsicle, PoundSterling, PowerCircle, Presentation, Projector, Proportions, Puzzle, Pyramid, QrCode, Rabbit, Radiation, Radical, Radio, RadioReceiver, RadioTower, Radius, Rainbow, Rat, Ratio, Receipt, ReceiptCent, ReceiptEuro, ReceiptIndianRupee, ReceiptJapaneseYen, ReceiptPoundSterling, ReceiptRussianRuble, ReceiptSwissFranc, ReceiptText, ReceiptTurkishLira, RectangleCircle, RectangleEllipsis, RectangleGoggles, Recycle, Redo2, RefreshCcwDot, Refrigerator, Regex, Repeat1, Repeat2, Rewind, Ribbon, Rocket, Rose, RotateCcw, RotateCcwSquare, RotateCw, RotateCwSquare, Router, Rss, Ruler, RulerDimensionLine, RussianRuble, Sailboat, Salad, Sandwich, Satellite, SaudiRiyal, Save, SaveAll, SaveOff, Scale, Scan, ScanBarcode, ScanEye, ScanFace, ScanLine, ScanQrCode, ScanSearch, School, Scissors, ScissorsLineDashed, Scroll, ScrollText, Search, SearchAlert, SearchCheck, SearchCode, SearchSlash, SearchX, Server, ServerCog, ServerCrash, ServerOff, Settings, Settings2, Shapes, Share, Share2, Sheet, Shell, Shield, ShieldAlert, ShieldBan, ShieldCheck, ShieldEllipsis, ShieldHalf, ShieldMinus, ShieldOff, ShieldPlus, ShieldQuestionMark, ShieldUser, ShieldX, Ship, ShipWheel, Shirt, ShoppingBag, ShoppingBasket, ShoppingCart, Shovel, ShowerHead, Shredder, Shrimp, Shuffle, Sigma, Signpost, SignpostBig, SkipBack, Skull, Slash, SlidersHorizontal, SmartphoneCharging, SmartphoneNfc, SmilePlus, Snail, Snowflake, SoapDispenserDroplet, Sofa, SolarPanel, Soup, Spade, Sparkle, Sparkles, Speaker, SpellCheck, SpellCheck2, SplinePointer, Split, Spool, Spotlight, SprayCan, Sprout, Square, SquareActivity, SquareArrowDown, SquareArrowDownLeft, SquareArrowDownRight, SquareArrowOutUpRight, SquareArrowUpRight, SquareAsterisk, SquareBottomDashedScissors, SquareChartGantt, SquareCheck, SquareChevronRight, SquareCode, SquareDashedBottom, SquareDashedBottomCode, SquareDashedKanban, SquareDashedMousePointer, SquareDashedTopSolid, SquareDot, SquareFunction, SquareKanban, SquareLibrary, SquareMinus, SquareMousePointer, SquarePercent, SquarePi, SquarePlay, SquarePlus, SquareRadical, SquareRoundCorner, SquareScissors, SquareSlash, SquareStack, SquareStar, SquareTerminal, SquircleDashed, Squirrel, Stamp, Star, StarHalf, StarOff, Stars, Stethoscope, Sticker, StickyNote, StopCircle, Store, Sun, SunDim, Sunrise, Sunset, SwatchBook, SwissFranc, Sword, Swords, Syringe, Table, Table2, TableCellsMerge, TableCellsSplit, TableColumnsSplit, TableProperties, TableRowsSplit, TabletSmartphone, Tag, Tags, Tally1, Tally2, Tally3, Tally4, Tally5, Tangent, Target, Telescope, Tent, TentTree, Terminal, TerminalSquare, TestTube, TestTubeDiagonal, TestTubes, Text, Theater, ThumbsDown, ThumbsUp, TicketPercent, Tickets, TicketsPlane, Timer, TimerOff, TimerReset, ToggleLeft, ToggleRight, ToolCase, Toolbox, Torus, TowerControl, ToyBrick, Tractor, TrainFrontTunnel, Trash, Trash2, Trees, TrendingDown, TriangleAlert, Trophy, TurkishLira, Turtle, TvMinimalPlay, Undo2, Ungroup, Unplug, Upload, UploadCloud, Usb, User, UserCircle2, UserRoundSearch, UserSearch, Users, UsersRound, Utensils, UtensilsCrossed, Variable, Vault, VectorSquare, Vegan, VenetianMask, Video, VideoOff, Videotape, View, Voicemail, Volleyball, Volume1, Vote, Wallet, WalletCards, WalletMinimal, Wand, WandSparkles, WashingMachine, Watch, Waypoints, Webcam, Webhook, WebhookOff, Wheat, WheatOff, Wifi, WifiCog, Wine, WineOff, Workflow, Worm, Wrench, XCircle, XIcon, Zap, ZapOff, ZoomIn, ZoomOut } from "lucide-react";
9
+ import * as ProgressPrimitive from "@radix-ui/react-progress";
7
10
  import { DayPicker, getDefaultClassNames } from "react-day-picker";
8
11
  import * as PopoverPrimitive from "@radix-ui/react-popover";
9
12
  import { useDebouncedCallback } from "@tanstack/react-pacer";
10
13
  import * as LabelPrimitive from "@radix-ui/react-label";
11
- import * as ProgressPrimitive from "@radix-ui/react-progress";
12
14
  import * as TabsPrimitive from "@radix-ui/react-tabs";
13
15
  //#region ../core/src/utils/theme-color.ts
14
16
  const THEME_COLORS = [
@@ -105,12 +107,6 @@ function ColorPicker({ value, onValueChange, className }) {
105
107
  });
106
108
  }
107
109
  //#endregion
108
- //#region ../core/src/forms/validate.ts
109
- const validate = (schema) => ({ value }) => {
110
- const result = schema.safeParse(value);
111
- return result.success ? void 0 : result.error.issues[0]?.message;
112
- };
113
- //#endregion
114
110
  //#region src/components/ui/button/index.tsx
115
111
  const buttonVariants = cva("inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-hidden focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
116
112
  variants: {
@@ -152,103 +148,264 @@ function Button({ className, variant = "default", size = "default", asChild = fa
152
148
  });
153
149
  }
154
150
  //#endregion
155
- //#region src/components/ui/calendar/index.tsx
156
- function Calendar$1({ className, classNames, showOutsideDays = true, captionLayout = "label", buttonVariant = "ghost", formatters, components, ...props }) {
157
- const defaultClassNames = getDefaultClassNames();
158
- return /* @__PURE__ */ jsx(DayPicker, {
159
- captionLayout,
160
- className: cn("bg-background group/calendar p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent", String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`, String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`, className),
161
- classNames: {
162
- root: cn("w-fit", defaultClassNames.root),
163
- months: cn("flex gap-4 flex-col md:flex-row relative", defaultClassNames.months),
164
- month: cn("flex flex-col w-full gap-4", defaultClassNames.month),
165
- nav: cn("flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between", defaultClassNames.nav),
166
- button_previous: cn(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none", defaultClassNames.button_previous),
167
- button_next: cn(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none", defaultClassNames.button_next),
168
- month_caption: cn("flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)", defaultClassNames.month_caption),
169
- dropdowns: cn("w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5", defaultClassNames.dropdowns),
170
- dropdown_root: cn("relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md", defaultClassNames.dropdown_root),
171
- dropdown: cn("absolute bg-popover inset-0 opacity-0", defaultClassNames.dropdown),
172
- caption_label: cn("select-none font-medium", captionLayout === "label" ? "text-sm" : "rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5", defaultClassNames.caption_label),
173
- table: "w-full border-collapse",
174
- weekdays: cn("flex", defaultClassNames.weekdays),
175
- weekday: cn("text-muted-foreground rounded-md flex-1 font-normal text-[0.8rem] select-none", defaultClassNames.weekday),
176
- week: cn("flex w-full mt-2", defaultClassNames.week),
177
- week_number_header: cn("select-none w-(--cell-size)", defaultClassNames.week_number_header),
178
- week_number: cn("text-[0.8rem] select-none text-muted-foreground", defaultClassNames.week_number),
179
- day: cn("relative w-full h-full p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none", defaultClassNames.day),
180
- range_start: cn("rounded-l-md bg-accent", defaultClassNames.range_start),
181
- range_middle: cn("rounded-none", defaultClassNames.range_middle),
182
- range_end: cn("rounded-r-md bg-accent", defaultClassNames.range_end),
183
- today: cn("bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none", defaultClassNames.today),
184
- outside: cn("text-muted-foreground aria-selected:text-muted-foreground", defaultClassNames.outside),
185
- disabled: cn("text-muted-foreground opacity-50", defaultClassNames.disabled),
186
- hidden: cn("invisible", defaultClassNames.hidden),
187
- ...classNames
188
- },
189
- components: {
190
- Root: ({ className, rootRef, ...props }) => {
191
- return /* @__PURE__ */ jsx("div", {
192
- className: cn(className),
193
- "data-slot": "calendar",
194
- ref: rootRef,
195
- ...props
196
- });
197
- },
198
- Chevron: ({ className, orientation, ...props }) => {
199
- if (orientation === "left") return /* @__PURE__ */ jsx(ChevronLeftIcon, {
200
- className: cn("size-4", className),
201
- ...props
202
- });
203
- if (orientation === "right") return /* @__PURE__ */ jsx(ChevronRightIcon, {
204
- className: cn("size-4", className),
205
- ...props
206
- });
207
- return /* @__PURE__ */ jsx(ChevronDownIcon, {
208
- className: cn("size-4", className),
209
- ...props
210
- });
211
- },
212
- DayButton: CalendarDayButton,
213
- WeekNumber: ({ children, ...props }) => {
214
- return /* @__PURE__ */ jsx("td", {
215
- ...props,
216
- children: /* @__PURE__ */ jsx("div", {
217
- className: "flex size-(--cell-size) items-center justify-center text-center",
218
- children
219
- })
220
- });
221
- },
222
- ...components
223
- },
224
- formatters: {
225
- formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" }),
226
- ...formatters
151
+ //#region src/components/ui/input/index.tsx
152
+ function Input({ className, type, ...props }) {
153
+ return /* @__PURE__ */ jsx("input", {
154
+ className: cn("h-9 w-full min-w-0 rounded-md bg-input px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", "focus-visible:ring-[3px] focus-visible:ring-ring/50", "aria-invalid:ring-[3px] aria-invalid:ring-destructive/40", className),
155
+ "data-slot": "input",
156
+ type,
157
+ ...props
158
+ });
159
+ }
160
+ //#endregion
161
+ //#region src/components/ui/textarea/index.tsx
162
+ function Textarea({ className, ...props }) {
163
+ return /* @__PURE__ */ jsx("textarea", {
164
+ className: cn("flex field-sizing-content min-h-16 w-full rounded-md bg-input px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:ring-[3px] aria-invalid:ring-destructive/40 md:text-sm", className),
165
+ "data-slot": "textarea",
166
+ ...props
167
+ });
168
+ }
169
+ //#endregion
170
+ //#region src/components/ui/input-group/index.tsx
171
+ function InputGroup({ className, ...props }) {
172
+ return /* @__PURE__ */ jsx("div", {
173
+ className: cn("group/input-group relative flex w-full items-center rounded-md bg-input shadow-xs transition-[color,box-shadow] outline-none", "h-9 min-w-0 has-[>textarea]:h-auto", "has-[>[data-align=inline-start]]:[&>input]:pl-2", "has-[>[data-align=inline-end]]:[&>input]:pr-2", "has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3", "has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3", "has-[[data-slot=input-group-control]:focus-visible]:ring-[3px] has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50", "has-[[data-slot][aria-invalid=true]]:ring-[3px] has-[[data-slot][aria-invalid=true]]:ring-destructive/40", className),
174
+ "data-slot": "input-group",
175
+ role: "group",
176
+ ...props
177
+ });
178
+ }
179
+ const inputGroupAddonVariants = cva("flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4", {
180
+ variants: { align: {
181
+ "inline-start": "order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]",
182
+ "inline-end": "order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]",
183
+ "block-start": "order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5 [.border-b]:pb-3",
184
+ "block-end": "order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5 [.border-t]:pt-3"
185
+ } },
186
+ defaultVariants: { align: "inline-start" }
187
+ });
188
+ function InputGroupAddon({ className, align = "inline-start", ...props }) {
189
+ return /* @__PURE__ */ jsx("div", {
190
+ className: cn(inputGroupAddonVariants({ align }), className),
191
+ "data-align": align,
192
+ "data-slot": "input-group-addon",
193
+ onClick: (e) => {
194
+ if (e.target.closest("button")) return;
195
+ e.currentTarget.parentElement?.querySelector("input")?.focus();
227
196
  },
228
- showOutsideDays,
197
+ role: "group",
229
198
  ...props
230
199
  });
231
200
  }
232
- function CalendarDayButton({ className, day, modifiers, ...props }) {
233
- const defaultClassNames = getDefaultClassNames();
234
- const ref = React.useRef(null);
235
- React.useEffect(() => {
236
- if (modifiers.focused) ref.current?.focus();
237
- }, [modifiers.focused]);
201
+ const inputGroupButtonVariants = cva("flex items-center gap-2 text-sm shadow-none", {
202
+ variants: { size: {
203
+ xs: "h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5",
204
+ sm: "h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5",
205
+ "icon-xs": "size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0",
206
+ "icon-sm": "size-8 p-0 has-[>svg]:p-0"
207
+ } },
208
+ defaultVariants: { size: "xs" }
209
+ });
210
+ function InputGroupButton({ className, type = "button", variant = "ghost", size = "xs", ...props }) {
238
211
  return /* @__PURE__ */ jsx(Button, {
239
- className: cn("data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70", defaultClassNames.day, className),
240
- "data-day": day.date.toLocaleDateString(),
241
- "data-range-end": modifiers.range_end,
242
- "data-range-middle": modifiers.range_middle,
243
- "data-range-start": modifiers.range_start,
244
- "data-selected-single": modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle,
245
- ref,
246
- size: "icon",
247
- variant: "ghost",
212
+ className: cn(inputGroupButtonVariants({ size }), className),
213
+ "data-size": size,
214
+ type,
215
+ variant,
216
+ ...props
217
+ });
218
+ }
219
+ function InputGroupText({ className, ...props }) {
220
+ return /* @__PURE__ */ jsx("span", {
221
+ className: cn("flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", className),
222
+ ...props
223
+ });
224
+ }
225
+ function InputGroupInput({ className, ...props }) {
226
+ return /* @__PURE__ */ jsx(Input, {
227
+ className: cn("flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent", className),
228
+ "data-slot": "input-group-control",
229
+ ...props
230
+ });
231
+ }
232
+ function InputGroupTextarea({ className, ...props }) {
233
+ return /* @__PURE__ */ jsx(Textarea, {
234
+ className: cn("flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent", className),
235
+ "data-slot": "input-group-control",
248
236
  ...props
249
237
  });
250
238
  }
251
239
  //#endregion
240
+ //#region src/lib/portal-container.ts
241
+ const PortalContainerContext = React.createContext(null);
242
+ function usePortalContainer() {
243
+ return React.useContext(PortalContainerContext);
244
+ }
245
+ //#endregion
246
+ //#region src/components/ui/combobox/index.tsx
247
+ const Combobox$1 = Combobox.Root;
248
+ function ComboboxValue({ ...props }) {
249
+ return /* @__PURE__ */ jsx(Combobox.Value, {
250
+ "data-slot": "combobox-value",
251
+ ...props
252
+ });
253
+ }
254
+ function ComboboxTrigger({ className, children, showChevron = true, ...props }) {
255
+ return /* @__PURE__ */ jsxs(Combobox.Trigger, {
256
+ className: cn("[&_svg:not([class*='size-'])]:size-4", className),
257
+ "data-slot": "combobox-trigger",
258
+ ...props,
259
+ children: [children, showChevron && /* @__PURE__ */ jsx(ChevronDownIcon, {
260
+ className: "pointer-events-none size-4 shrink-0 text-muted-foreground",
261
+ "data-slot": "combobox-trigger-icon"
262
+ })]
263
+ });
264
+ }
265
+ function ComboboxClear({ className, ...props }) {
266
+ return /* @__PURE__ */ jsx(Combobox.Clear, {
267
+ className: cn(className),
268
+ "data-slot": "combobox-clear",
269
+ render: /* @__PURE__ */ jsx(InputGroupButton, {
270
+ size: "icon-xs",
271
+ variant: "ghost"
272
+ }),
273
+ ...props,
274
+ children: /* @__PURE__ */ jsx(XIcon, { className: "pointer-events-none" })
275
+ });
276
+ }
277
+ function ComboboxInput({ className, children, disabled = false, showTrigger = true, showClear = false, ...props }) {
278
+ return /* @__PURE__ */ jsxs(InputGroup, {
279
+ className: cn("w-auto", className),
280
+ children: [
281
+ /* @__PURE__ */ jsx(Combobox.Input, {
282
+ render: /* @__PURE__ */ jsx(InputGroupInput, { disabled }),
283
+ ...props
284
+ }),
285
+ /* @__PURE__ */ jsxs(InputGroupAddon, {
286
+ align: "inline-end",
287
+ children: [showTrigger && /* @__PURE__ */ jsx(InputGroupButton, {
288
+ asChild: true,
289
+ className: "group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent",
290
+ "data-slot": "input-group-button",
291
+ disabled,
292
+ size: "icon-xs",
293
+ variant: "ghost",
294
+ children: /* @__PURE__ */ jsx(ComboboxTrigger, {})
295
+ }), showClear && /* @__PURE__ */ jsx(ComboboxClear, { disabled })]
296
+ }),
297
+ children
298
+ ]
299
+ });
300
+ }
301
+ function ComboboxContent({ className, side = "bottom", sideOffset = 6, align = "start", alignOffset = 0, anchor, ...props }) {
302
+ const portalContainer = usePortalContainer();
303
+ return /* @__PURE__ */ jsx(Combobox.Portal, {
304
+ className: "contents",
305
+ container: portalContainer ?? void 0,
306
+ children: /* @__PURE__ */ jsx(Combobox.Positioner, {
307
+ align,
308
+ alignOffset,
309
+ anchor,
310
+ className: "pointer-events-auto isolate z-50",
311
+ side,
312
+ sideOffset,
313
+ children: /* @__PURE__ */ jsx(Combobox.Popup, {
314
+ className: cn("group/combobox-content relative max-h-96 w-fit max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-md bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className),
315
+ "data-chips": !!anchor,
316
+ "data-slot": "combobox-content",
317
+ ...props
318
+ })
319
+ })
320
+ });
321
+ }
322
+ function ComboboxList({ className, ...props }) {
323
+ return /* @__PURE__ */ jsx(Combobox.List, {
324
+ className: cn("max-h-[min(calc(--spacing(96)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto p-1 data-empty:p-0", className),
325
+ "data-slot": "combobox-list",
326
+ ...props
327
+ });
328
+ }
329
+ function ComboboxItem({ className, children, ...props }) {
330
+ return /* @__PURE__ */ jsxs(Combobox.Item, {
331
+ className: cn("relative flex w-full cursor-pointer items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
332
+ "data-slot": "combobox-item",
333
+ ...props,
334
+ children: [children, /* @__PURE__ */ jsx(Combobox.ItemIndicator, {
335
+ "data-slot": "combobox-item-indicator",
336
+ render: /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center" }),
337
+ children: /* @__PURE__ */ jsx(CheckIcon, { className: "pointer-events-none size-4 pointer-coarse:size-5" })
338
+ })]
339
+ });
340
+ }
341
+ function ComboboxGroup({ className, ...props }) {
342
+ return /* @__PURE__ */ jsx(Combobox.Group, {
343
+ className: cn(className),
344
+ "data-slot": "combobox-group",
345
+ ...props
346
+ });
347
+ }
348
+ function ComboboxLabel({ className, ...props }) {
349
+ return /* @__PURE__ */ jsx(Combobox.GroupLabel, {
350
+ className: cn("px-2 py-1.5 text-xs text-muted-foreground pointer-coarse:px-3 pointer-coarse:py-2 pointer-coarse:text-sm", className),
351
+ "data-slot": "combobox-label",
352
+ ...props
353
+ });
354
+ }
355
+ function ComboboxCollection({ ...props }) {
356
+ return /* @__PURE__ */ jsx(Combobox.Collection, {
357
+ "data-slot": "combobox-collection",
358
+ ...props
359
+ });
360
+ }
361
+ function ComboboxEmpty({ className, ...props }) {
362
+ return /* @__PURE__ */ jsx(Combobox.Empty, {
363
+ className: cn("hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex", className),
364
+ "data-slot": "combobox-empty",
365
+ ...props
366
+ });
367
+ }
368
+ function ComboboxSeparator({ className, ...props }) {
369
+ return /* @__PURE__ */ jsx(Combobox.Separator, {
370
+ className: cn("-mx-1 my-1 h-px bg-border", className),
371
+ "data-slot": "combobox-separator",
372
+ ...props
373
+ });
374
+ }
375
+ function ComboboxChips({ className, ...props }) {
376
+ return /* @__PURE__ */ jsx(Combobox.Chips, {
377
+ className: cn("flex min-h-9 flex-wrap items-center gap-1.5 rounded-md border border-transparent bg-input bg-clip-padding px-2.5 py-1.5 text-sm shadow-xs transition-[color,box-shadow] focus-within:border-ring focus-within:ring-[3px] focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-[3px] has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1.5 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40", className),
378
+ "data-slot": "combobox-chips",
379
+ ...props
380
+ });
381
+ }
382
+ function ComboboxChip({ className, children, showRemove = true, ...props }) {
383
+ return /* @__PURE__ */ jsxs(Combobox.Chip, {
384
+ className: cn("group inline-flex w-fit shrink-0 items-center gap-1 overflow-hidden rounded-md border py-0.5 pr-0.5 pl-2 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 [&>svg]:pointer-events-none [&>svg]:size-3", className),
385
+ "data-slot": "combobox-chip",
386
+ ...props,
387
+ children: [children, showRemove && /* @__PURE__ */ jsx(Combobox.ChipRemove, {
388
+ className: "-ml-1 opacity-0 group-hover:opacity-100 focus:opacity-100",
389
+ "data-slot": "combobox-chip-remove",
390
+ render: /* @__PURE__ */ jsx(Button, {
391
+ size: "icon-xs",
392
+ variant: "ghost"
393
+ }),
394
+ children: /* @__PURE__ */ jsx(XIcon, { className: "pointer-events-none" })
395
+ })]
396
+ });
397
+ }
398
+ function ComboboxChipsInput({ className, children, ...props }) {
399
+ return /* @__PURE__ */ jsx(Combobox.Input, {
400
+ className: cn("min-w-16 flex-1 outline-none", className),
401
+ "data-slot": "combobox-chip-input",
402
+ ...props
403
+ });
404
+ }
405
+ function useComboboxAnchor() {
406
+ return React.useRef(null);
407
+ }
408
+ //#endregion
252
409
  //#region src/components/ui/field/index.tsx
253
410
  const BasicField = React.forwardRef(({ className, orientation = "vertical", "data-invalid": dataInvalid, ...props }, ref) => /* @__PURE__ */ jsx("div", {
254
411
  className: cn("grid gap-2", orientation === "vertical" && "grid-cols-1", orientation === "horizontal" && "grid-cols-[auto_minmax(0,1fr)] items-center gap-x-4", orientation === "responsive" && "grid-cols-1 @sm:grid-cols-[auto_minmax(0,1fr)] @sm:items-center @sm:gap-x-4", className),
@@ -343,91 +500,546 @@ const FieldTitle = React.forwardRef(({ className, ...props }, ref) => /* @__PURE
343
500
  }));
344
501
  FieldTitle.displayName = "FieldTitle";
345
502
  //#endregion
346
- //#region src/components/ui/input/index.tsx
347
- function Input({ className, type, ...props }) {
348
- return /* @__PURE__ */ jsx("input", {
349
- className: cn("h-9 w-full min-w-0 rounded-md bg-input px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", "focus-visible:ring-[3px] focus-visible:ring-ring/50", "aria-invalid:ring-[3px] aria-invalid:ring-destructive/40", className),
350
- "data-slot": "input",
351
- type,
352
- ...props
353
- });
354
- }
355
- //#endregion
356
- //#region src/components/ui/textarea/index.tsx
357
- function Textarea({ className, ...props }) {
358
- return /* @__PURE__ */ jsx("textarea", {
359
- className: cn("flex field-sizing-content min-h-16 w-full rounded-md bg-input px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:ring-[3px] aria-invalid:ring-destructive/40 md:text-sm", className),
360
- "data-slot": "textarea",
503
+ //#region src/components/ui/spinner/index.tsx
504
+ function Spinner({ className, ...props }) {
505
+ return /* @__PURE__ */ jsx(Loader2Icon, {
506
+ "aria-label": "Loading",
507
+ className: cn("size-4 animate-spin", className),
508
+ role: "status",
361
509
  ...props
362
510
  });
363
511
  }
364
512
  //#endregion
365
- //#region src/components/ui/input-group/index.tsx
366
- function InputGroup({ className, ...props }) {
367
- return /* @__PURE__ */ jsx("div", {
368
- className: cn("group/input-group relative flex w-full items-center rounded-md bg-input shadow-xs transition-[color,box-shadow] outline-none", "h-9 min-w-0 has-[>textarea]:h-auto", "has-[>[data-align=inline-start]]:[&>input]:pl-2", "has-[>[data-align=inline-end]]:[&>input]:pr-2", "has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3", "has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3", "has-[[data-slot=input-group-control]:focus-visible]:ring-[3px] has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50", "has-[[data-slot][aria-invalid=true]]:ring-[3px] has-[[data-slot][aria-invalid=true]]:ring-destructive/40", className),
369
- "data-slot": "input-group",
370
- role: "group",
371
- ...props
372
- });
373
- }
374
- const inputGroupAddonVariants = cva("flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4", {
375
- variants: { align: {
376
- "inline-start": "order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]",
377
- "inline-end": "order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]",
378
- "block-start": "order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5 [.border-b]:pb-3",
379
- "block-end": "order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5 [.border-t]:pt-3"
380
- } },
381
- defaultVariants: { align: "inline-start" }
382
- });
383
- function InputGroupAddon({ className, align = "inline-start", ...props }) {
384
- return /* @__PURE__ */ jsx("div", {
385
- className: cn(inputGroupAddonVariants({ align }), className),
386
- "data-align": align,
387
- "data-slot": "input-group-addon",
388
- onClick: (e) => {
389
- if (e.target.closest("button")) return;
390
- e.currentTarget.parentElement?.querySelector("input")?.focus();
513
+ //#region src/components/blocks/combobox-field/index.tsx
514
+ const COMMIT_ON_BLUR_REASONS = /* @__PURE__ */ new Set(["outside-press", "focus-out"]);
515
+ const anchorVariants = cva("", {
516
+ variants: {
517
+ anchor: {
518
+ button: "w-full justify-between font-normal",
519
+ ghost: "w-fit",
520
+ input: "",
521
+ chips: ""
391
522
  },
392
- role: "group",
393
- ...props
394
- });
395
- }
396
- const inputGroupButtonVariants = cva("flex items-center gap-2 text-sm shadow-none", {
397
- variants: { size: {
398
- xs: "h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5",
399
- sm: "h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5",
400
- "icon-xs": "size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0",
401
- "icon-sm": "size-8 p-0 has-[>svg]:p-0"
402
- } },
403
- defaultVariants: { size: "xs" }
523
+ size: {
524
+ sm: "",
525
+ default: ""
526
+ }
527
+ },
528
+ defaultVariants: {
529
+ anchor: "button",
530
+ size: "default"
531
+ }
404
532
  });
405
- function InputGroupButton({ className, type = "button", variant = "ghost", size = "xs", ...props }) {
406
- return /* @__PURE__ */ jsx(Button, {
407
- className: cn(inputGroupButtonVariants({ size }), className),
408
- "data-size": size,
409
- type,
410
- variant,
411
- ...props
533
+ function toChipItems(picked) {
534
+ if (picked == null) return [];
535
+ const entries = Array.isArray(picked) ? picked : [picked];
536
+ const out = [];
537
+ for (const entry of entries) if (entry.kind === "item") out.push(entry.item);
538
+ return out;
539
+ }
540
+ function ComboboxField(props) {
541
+ const { anchor, chipClassName, chipStyle, commitOnBlur, externallyFiltered, splitOn, items, itemToLabel, itemToKey, label, description, error, onBlur, placeholder, searchPlaceholder, emptyText = "No results.", creatable, className, renderChip, renderItem, inputId: inputIdProp, onQueryChange, showTriggerChevron, triggerClassName, triggerIcon, triggerLabel, size, clearable, loading, disabled } = props;
542
+ const multiple = props.multiple === true;
543
+ const selected = React.useMemo(() => {
544
+ if (props.multiple) return props.value;
545
+ return props.value == null ? [] : [props.value];
546
+ }, [props.multiple, props.value]);
547
+ const isSingleInputAnchor = anchor === "input" && !multiple;
548
+ const emitChange = (next) => {
549
+ if (props.multiple) {
550
+ props.onChange([...next]);
551
+ return;
552
+ }
553
+ const [first] = next;
554
+ props.onChange(first ?? null);
555
+ };
556
+ const chipsAnchor = useComboboxAnchor();
557
+ const generatedId = React.useId();
558
+ const inputId = inputIdProp ?? generatedId;
559
+ const errorId = `${inputId}-error`;
560
+ const descId = description ? `${inputId}-desc` : void 0;
561
+ const describedBy = [descId, error ? errorId : void 0].filter(Boolean).join(" ") || void 0;
562
+ const [query, setQuery] = React.useState(() => isSingleInputAnchor && selected[0] !== void 0 ? itemToLabel(selected[0]) : "");
563
+ const [open, setOpen] = React.useState(false);
564
+ const keepOpenForCreateRef = React.useRef(false);
565
+ const createQueueRef = React.useRef(Promise.resolve());
566
+ const lastSyncedValueKeyRef = React.useRef(isSingleInputAnchor && selected[0] !== void 0 ? itemToKey(selected[0]) : null);
567
+ React.useEffect(() => {
568
+ if (!isSingleInputAnchor) return;
569
+ const nextKey = selected[0] !== void 0 ? itemToKey(selected[0]) : null;
570
+ if (nextKey === lastSyncedValueKeyRef.current) return;
571
+ lastSyncedValueKeyRef.current = nextKey;
572
+ setQuery(selected[0] !== void 0 ? itemToLabel(selected[0]) : "");
573
+ }, [
574
+ isSingleInputAnchor,
575
+ itemToKey,
576
+ itemToLabel,
577
+ selected
578
+ ]);
579
+ const trimmed = query.trim();
580
+ const exact = items.some((item) => itemToLabel(item).toLowerCase() === trimmed.toLowerCase());
581
+ const showCreate = Boolean(creatable && !exact && (trimmed || creatable.showWhenEmpty));
582
+ const createLabel = React.useCallback((q) => creatable?.label?.(q) ?? `Create "${q}"`, [creatable]);
583
+ const wrappedItems = React.useMemo(() => {
584
+ const real = items.map((item) => ({
585
+ item,
586
+ kind: "item"
587
+ }));
588
+ if (!showCreate) return real;
589
+ return [{
590
+ kind: "create",
591
+ query: trimmed
592
+ }, ...real];
593
+ }, [
594
+ items,
595
+ showCreate,
596
+ trimmed
597
+ ]);
598
+ const selectedInternal = React.useMemo(() => {
599
+ const wrapped = selected.map((item) => ({
600
+ item,
601
+ kind: "item"
602
+ }));
603
+ if (multiple) return wrapped;
604
+ return wrapped[0] ?? null;
605
+ }, [multiple, selected]);
606
+ const itemToStringLabel = React.useCallback((wrapped) => wrapped.kind === "create" ? createLabel(wrapped.query) : itemToLabel(wrapped.item), [createLabel, itemToLabel]);
607
+ const isItemEqualToValue = React.useCallback((a, b) => a.kind === "item" && b.kind === "item" && itemToKey(a.item) === itemToKey(b.item), [itemToKey]);
608
+ const enqueueCreate = (parts) => {
609
+ if (!creatable) return;
610
+ for (const part of parts) {
611
+ const name = part.trim();
612
+ if (!name) continue;
613
+ createQueueRef.current = createQueueRef.current.then(() => creatable.onCreate(name).catch(() => {}));
614
+ }
615
+ };
616
+ const setInputValue = (nextQuery) => {
617
+ setQuery(nextQuery);
618
+ onQueryChange?.(nextQuery);
619
+ };
620
+ const handleInputValueChange = (nextQuery) => {
621
+ if (splitOn && creatable && nextQuery.includes(splitOn)) {
622
+ const parts = nextQuery.split(splitOn);
623
+ const remainder = parts.pop() ?? "";
624
+ setInputValue(remainder);
625
+ enqueueCreate(parts);
626
+ return;
627
+ }
628
+ setInputValue(nextQuery);
629
+ };
630
+ const handleCommitOnBlur = () => {
631
+ const trimmedQuery = query.trim();
632
+ if (!trimmedQuery) return;
633
+ if (isSingleInputAnchor && selected[0] !== void 0 && trimmedQuery === itemToStringLabel({
634
+ item: selected[0],
635
+ kind: "item"
636
+ })) return;
637
+ enqueueCreate([query]);
638
+ setQuery("");
639
+ };
640
+ const closePopup = () => {
641
+ setOpen(false);
642
+ onBlur?.();
643
+ };
644
+ const handleOpenChange = (nextOpen, eventDetails) => {
645
+ if (!nextOpen && keepOpenForCreateRef.current) {
646
+ eventDetails.cancel();
647
+ return;
648
+ }
649
+ if (!nextOpen) {
650
+ if (isSingleInputAnchor && commitOnBlur && creatable && COMMIT_ON_BLUR_REASONS.has(eventDetails.reason)) handleCommitOnBlur();
651
+ closePopup();
652
+ return;
653
+ }
654
+ setOpen(nextOpen);
655
+ };
656
+ const runCreate = (created, closeWhenDone) => {
657
+ if (!creatable) return;
658
+ keepOpenForCreateRef.current = true;
659
+ creatable.onCreate(created).then(() => {
660
+ keepOpenForCreateRef.current = false;
661
+ setQuery("");
662
+ if (closeWhenDone) closePopup();
663
+ }, () => {
664
+ keepOpenForCreateRef.current = false;
665
+ });
666
+ };
667
+ const handleValueChange = (next, eventDetails) => {
668
+ if (Array.isArray(next)) {
669
+ const creating = next.find((entry) => entry.kind === "create");
670
+ if (creating?.kind === "create") {
671
+ runCreate(creating.query, false);
672
+ setQuery("");
673
+ return;
674
+ }
675
+ const picked = [];
676
+ for (const entry of next) if (entry.kind === "item") picked.push(entry.item);
677
+ emitChange(picked);
678
+ setQuery("");
679
+ return;
680
+ }
681
+ if (next?.kind === "create") {
682
+ eventDetails.cancel();
683
+ runCreate(next.query, true);
684
+ return;
685
+ }
686
+ if (next == null) {
687
+ emitChange([]);
688
+ setQuery("");
689
+ closePopup();
690
+ return;
691
+ }
692
+ emitChange([next.item]);
693
+ setQuery("");
694
+ setOpen(false);
695
+ };
696
+ const triggerLabelText = typeof triggerLabel === "string" ? triggerLabel : void 0;
697
+ const [firstSelected] = selected;
698
+ const selectedLabel = firstSelected === void 0 ? void 0 : itemToLabel(firstSelected);
699
+ const chipFill = (item) => renderChip ? renderChip(item) : /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", {
700
+ "aria-hidden": true,
701
+ className: "size-2 shrink-0 rounded-full bg-current"
702
+ }), /* @__PURE__ */ jsx("span", {
703
+ className: "truncate",
704
+ children: itemToLabel(item)
705
+ })] });
706
+ const popupList = loading ? /* @__PURE__ */ jsx("div", {
707
+ className: "flex w-full items-center justify-center py-2",
708
+ children: /* @__PURE__ */ jsx(Spinner, {})
709
+ }) : /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(ComboboxEmpty, { children: emptyText }), /* @__PURE__ */ jsx(ComboboxList, { children: (wrapped) => wrapped.kind === "create" ? /* @__PURE__ */ jsx(ComboboxItem, {
710
+ value: wrapped,
711
+ children: createLabel(wrapped.query)
712
+ }, "__combobox-field-create__") : /* @__PURE__ */ jsx(ComboboxItem, {
713
+ value: wrapped,
714
+ children: renderItem ? renderItem(wrapped.item) : itemToLabel(wrapped.item)
715
+ }, itemToKey(wrapped.item)) })] });
716
+ return /* @__PURE__ */ jsxs(BasicField, {
717
+ className,
718
+ "data-invalid": error ? true : void 0,
719
+ children: [
720
+ label && /* @__PURE__ */ jsx(FieldLabel, {
721
+ htmlFor: inputId,
722
+ children: label
723
+ }),
724
+ /* @__PURE__ */ jsxs(Combobox$1, {
725
+ autoHighlight: true,
726
+ disabled,
727
+ filter: externallyFiltered ? null : void 0,
728
+ inputValue: query,
729
+ isItemEqualToValue,
730
+ items: wrappedItems,
731
+ itemToStringLabel,
732
+ multiple,
733
+ onInputValueChange: handleInputValueChange,
734
+ onOpenChange: handleOpenChange,
735
+ onValueChange: handleValueChange,
736
+ open,
737
+ value: selectedInternal,
738
+ children: [
739
+ (anchor === "button" || anchor === "ghost") && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs(ComboboxTrigger, {
740
+ "aria-describedby": describedBy,
741
+ "aria-invalid": error ? true : void 0,
742
+ "aria-label": label ? void 0 : triggerLabelText ?? placeholder ?? searchPlaceholder,
743
+ className: cn(anchorVariants({
744
+ anchor,
745
+ size
746
+ }), triggerClassName),
747
+ disabled,
748
+ id: inputId,
749
+ render: /* @__PURE__ */ jsx(Button, {
750
+ size,
751
+ variant: anchor === "ghost" ? "ghost" : "outline"
752
+ }),
753
+ showChevron: showTriggerChevron ?? anchor === "button",
754
+ children: [triggerIcon, /* @__PURE__ */ jsx("span", {
755
+ className: "min-w-0 truncate",
756
+ children: triggerLabel ?? selectedLabel ?? placeholder
757
+ })]
758
+ }), /* @__PURE__ */ jsxs(ComboboxContent, {
759
+ className: "flex max-h-none flex-col-reverse gap-2 overflow-visible bg-transparent shadow-none ring-0",
760
+ side: "top",
761
+ children: [/* @__PURE__ */ jsx("div", {
762
+ className: "rounded-md bg-popover shadow-md ring-1 ring-foreground/10",
763
+ children: /* @__PURE__ */ jsx(ComboboxInput, {
764
+ "aria-label": searchPlaceholder ?? label ?? placeholder,
765
+ disabled,
766
+ placeholder: searchPlaceholder,
767
+ showTrigger: false
768
+ })
769
+ }), /* @__PURE__ */ jsx("div", {
770
+ className: "max-h-96 overflow-hidden rounded-md bg-popover shadow-md ring-1 ring-foreground/10",
771
+ children: popupList
772
+ })]
773
+ })] }),
774
+ anchor === "input" && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(ComboboxInput, {
775
+ "aria-describedby": describedBy,
776
+ "aria-invalid": error ? true : void 0,
777
+ "aria-label": label ? void 0 : placeholder ?? searchPlaceholder,
778
+ className: anchorVariants({
779
+ anchor,
780
+ size
781
+ }),
782
+ disabled,
783
+ id: inputId,
784
+ onBlur: commitOnBlur && creatable ? handleCommitOnBlur : void 0,
785
+ placeholder,
786
+ showClear: clearable
787
+ }), /* @__PURE__ */ jsx(ComboboxContent, { children: popupList })] }),
788
+ anchor === "chips" && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs(ComboboxChips, {
789
+ className: anchorVariants({
790
+ anchor,
791
+ size
792
+ }),
793
+ ref: chipsAnchor,
794
+ children: [/* @__PURE__ */ jsx(ComboboxValue, { children: (picked) => {
795
+ const chips = toChipItems(picked);
796
+ return /* @__PURE__ */ jsxs(Fragment, { children: [chips.map((item) => /* @__PURE__ */ jsx(ComboboxChip, {
797
+ className: chipClassName?.(item),
798
+ style: chipStyle?.(item),
799
+ children: chipFill(item)
800
+ }, itemToKey(item))), /* @__PURE__ */ jsx(ComboboxChipsInput, {
801
+ "aria-describedby": describedBy,
802
+ "aria-invalid": error ? true : void 0,
803
+ "aria-label": label ? void 0 : placeholder ?? searchPlaceholder,
804
+ disabled,
805
+ id: inputId,
806
+ onBlur: commitOnBlur && creatable ? handleCommitOnBlur : void 0,
807
+ placeholder: chips.length > 0 ? "" : placeholder
808
+ })] });
809
+ } }), /* @__PURE__ */ jsx(ComboboxTrigger, {
810
+ className: "ml-auto",
811
+ disabled,
812
+ render: /* @__PURE__ */ jsx(Button, {
813
+ size: "icon-xs",
814
+ variant: "ghost"
815
+ })
816
+ })]
817
+ }), /* @__PURE__ */ jsx(ComboboxContent, {
818
+ anchor: chipsAnchor,
819
+ children: popupList
820
+ })] })
821
+ ]
822
+ }),
823
+ description && /* @__PURE__ */ jsx(FieldDescription, {
824
+ id: descId,
825
+ children: description
826
+ }),
827
+ error && /* @__PURE__ */ jsx("div", {
828
+ className: "text-destructive text-sm font-normal",
829
+ id: errorId,
830
+ children: error
831
+ })
832
+ ]
412
833
  });
413
834
  }
414
- function InputGroupText({ className, ...props }) {
415
- return /* @__PURE__ */ jsx("span", {
416
- className: cn("flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", className),
417
- ...props
835
+ //#endregion
836
+ //#region src/components/ui/progress/index.tsx
837
+ function Progress({ className, value, ...props }) {
838
+ return /* @__PURE__ */ jsx(ProgressPrimitive.Root, {
839
+ className: cn("bg-primary/20 relative h-2 w-full overflow-hidden rounded-full", className),
840
+ "data-slot": "progress",
841
+ value,
842
+ ...props,
843
+ children: /* @__PURE__ */ jsx(ProgressPrimitive.Indicator, {
844
+ className: "bg-primary h-full w-full flex-1 transition-all",
845
+ "data-slot": "progress-indicator",
846
+ style: { transform: `translateX(-${100 - (value || 0)}%)` }
847
+ })
418
848
  });
419
849
  }
420
- function InputGroupInput({ className, ...props }) {
421
- return /* @__PURE__ */ jsx(Input, {
422
- className: cn("flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent", className),
423
- "data-slot": "input-group-control",
850
+ //#endregion
851
+ //#region src/components/blocks/dropzone/index.tsx
852
+ function Dropzone({ accept, multiple = false, variant = "file", onFiles, progress, fileName, previewUrl, error, invalid, className }) {
853
+ const inputRef = useRef(null);
854
+ const selectFiles = (files) => {
855
+ const accepted = files.filter((file) => {
856
+ const rules = (accept ?? (variant === "image" ? "image/*" : "")).split(",").map((rule) => rule.trim().toLowerCase()).filter(Boolean);
857
+ return rules.length === 0 || rules.some((rule) => {
858
+ if (rule.startsWith(".")) return file.name.toLowerCase().endsWith(rule);
859
+ if (rule.endsWith("/*")) return file.type.toLowerCase().startsWith(rule.slice(0, -1));
860
+ return file.type.toLowerCase() === rule;
861
+ });
862
+ });
863
+ if (accepted.length) onFiles(multiple ? accepted : accepted.slice(0, 1));
864
+ };
865
+ const Icon = variant === "image" ? ImageIcon : Upload;
866
+ const dropCopy = multiple ? "Drop files or click to upload" : variant === "image" ? "Drop an image or click to upload" : "Drop a file or click to upload";
867
+ return /* @__PURE__ */ jsxs("div", {
868
+ className: "space-y-2",
869
+ children: [
870
+ /* @__PURE__ */ jsx("input", {
871
+ accept: accept ?? (variant === "image" ? "image/*" : void 0),
872
+ "aria-label": dropCopy,
873
+ className: "sr-only",
874
+ multiple,
875
+ name: "files",
876
+ onChange: (event) => {
877
+ selectFiles(Array.from(event.currentTarget.files ?? []));
878
+ event.currentTarget.value = "";
879
+ },
880
+ ref: inputRef,
881
+ tabIndex: -1,
882
+ type: "file"
883
+ }),
884
+ /* @__PURE__ */ jsxs("button", {
885
+ "aria-invalid": invalid,
886
+ className: cn("flex w-full flex-col items-center justify-center gap-2 rounded-lg border p-6 transition-colors hover:bg-muted/50", className),
887
+ "data-invalid": invalid,
888
+ onClick: () => inputRef.current?.click(),
889
+ onDragOver: (event) => event.preventDefault(),
890
+ onDrop: (event) => {
891
+ event.preventDefault();
892
+ selectFiles(Array.from(event.dataTransfer.files));
893
+ },
894
+ type: "button",
895
+ children: [/* @__PURE__ */ jsx(Icon, { className: "size-8 text-muted-foreground" }), /* @__PURE__ */ jsx("span", {
896
+ className: "text-sm text-muted-foreground",
897
+ children: dropCopy
898
+ })]
899
+ }),
900
+ fileName && /* @__PURE__ */ jsx("span", {
901
+ className: "block text-xs text-muted-foreground truncate max-w-52",
902
+ children: fileName
903
+ }),
904
+ previewUrl && variant === "image" && /* @__PURE__ */ jsxs("div", {
905
+ className: "flex items-center gap-2",
906
+ children: [/* @__PURE__ */ jsx("img", {
907
+ alt: "Preview",
908
+ className: "size-10 rounded object-cover",
909
+ src: previewUrl
910
+ }), /* @__PURE__ */ jsx("span", {
911
+ className: "text-xs text-muted-foreground truncate max-w-52",
912
+ children: previewUrl
913
+ })]
914
+ }),
915
+ previewUrl && variant === "file" && /* @__PURE__ */ jsx("div", {
916
+ className: "flex items-center gap-2",
917
+ children: /* @__PURE__ */ jsx("span", {
918
+ className: "text-xs text-muted-foreground truncate max-w-52",
919
+ children: fileName ?? "Uploaded file"
920
+ })
921
+ }),
922
+ progress != null && /* @__PURE__ */ jsxs("div", {
923
+ className: "space-y-1",
924
+ children: [/* @__PURE__ */ jsx(Progress, {
925
+ className: "h-2",
926
+ value: progress
927
+ }), /* @__PURE__ */ jsxs("span", {
928
+ className: "text-xs text-muted-foreground",
929
+ children: [
930
+ "Uploading: ",
931
+ progress,
932
+ "%"
933
+ ]
934
+ })]
935
+ }),
936
+ error && /* @__PURE__ */ jsx("div", {
937
+ className: "text-destructive text-sm font-normal",
938
+ children: error
939
+ })
940
+ ]
941
+ });
942
+ }
943
+ //#endregion
944
+ //#region ../core/src/forms/validate.ts
945
+ const validate = (schema) => ({ value }) => {
946
+ const result = schema.safeParse(value);
947
+ return result.success ? void 0 : result.error.issues[0]?.message;
948
+ };
949
+ //#endregion
950
+ //#region src/components/ui/calendar/index.tsx
951
+ function Calendar$1({ className, classNames, showOutsideDays = true, captionLayout = "label", buttonVariant = "ghost", formatters, components, ...props }) {
952
+ const defaultClassNames = getDefaultClassNames();
953
+ return /* @__PURE__ */ jsx(DayPicker, {
954
+ captionLayout,
955
+ className: cn("bg-background group/calendar p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent", String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`, String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`, className),
956
+ classNames: {
957
+ root: cn("w-fit", defaultClassNames.root),
958
+ months: cn("flex gap-4 flex-col md:flex-row relative", defaultClassNames.months),
959
+ month: cn("flex flex-col w-full gap-4", defaultClassNames.month),
960
+ nav: cn("flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between", defaultClassNames.nav),
961
+ button_previous: cn(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none", defaultClassNames.button_previous),
962
+ button_next: cn(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none", defaultClassNames.button_next),
963
+ month_caption: cn("flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)", defaultClassNames.month_caption),
964
+ dropdowns: cn("w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5", defaultClassNames.dropdowns),
965
+ dropdown_root: cn("relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md", defaultClassNames.dropdown_root),
966
+ dropdown: cn("absolute bg-popover inset-0 opacity-0", defaultClassNames.dropdown),
967
+ caption_label: cn("select-none font-medium", captionLayout === "label" ? "text-sm" : "rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5", defaultClassNames.caption_label),
968
+ table: "w-full border-collapse",
969
+ weekdays: cn("flex", defaultClassNames.weekdays),
970
+ weekday: cn("text-muted-foreground rounded-md flex-1 font-normal text-[0.8rem] select-none", defaultClassNames.weekday),
971
+ week: cn("flex w-full mt-2", defaultClassNames.week),
972
+ week_number_header: cn("select-none w-(--cell-size)", defaultClassNames.week_number_header),
973
+ week_number: cn("text-[0.8rem] select-none text-muted-foreground", defaultClassNames.week_number),
974
+ day: cn("relative w-full h-full p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none", defaultClassNames.day),
975
+ range_start: cn("rounded-l-md bg-accent", defaultClassNames.range_start),
976
+ range_middle: cn("rounded-none", defaultClassNames.range_middle),
977
+ range_end: cn("rounded-r-md bg-accent", defaultClassNames.range_end),
978
+ today: cn("bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none", defaultClassNames.today),
979
+ outside: cn("text-muted-foreground aria-selected:text-muted-foreground", defaultClassNames.outside),
980
+ disabled: cn("text-muted-foreground opacity-50", defaultClassNames.disabled),
981
+ hidden: cn("invisible", defaultClassNames.hidden),
982
+ ...classNames
983
+ },
984
+ components: {
985
+ Root: ({ className, rootRef, ...props }) => {
986
+ return /* @__PURE__ */ jsx("div", {
987
+ className: cn(className),
988
+ "data-slot": "calendar",
989
+ ref: rootRef,
990
+ ...props
991
+ });
992
+ },
993
+ Chevron: ({ className, orientation, ...props }) => {
994
+ if (orientation === "left") return /* @__PURE__ */ jsx(ChevronLeftIcon, {
995
+ className: cn("size-4", className),
996
+ ...props
997
+ });
998
+ if (orientation === "right") return /* @__PURE__ */ jsx(ChevronRightIcon, {
999
+ className: cn("size-4", className),
1000
+ ...props
1001
+ });
1002
+ return /* @__PURE__ */ jsx(ChevronDownIcon, {
1003
+ className: cn("size-4", className),
1004
+ ...props
1005
+ });
1006
+ },
1007
+ DayButton: CalendarDayButton,
1008
+ WeekNumber: ({ children, ...props }) => {
1009
+ return /* @__PURE__ */ jsx("td", {
1010
+ ...props,
1011
+ children: /* @__PURE__ */ jsx("div", {
1012
+ className: "flex size-(--cell-size) items-center justify-center text-center",
1013
+ children
1014
+ })
1015
+ });
1016
+ },
1017
+ ...components
1018
+ },
1019
+ formatters: {
1020
+ formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" }),
1021
+ ...formatters
1022
+ },
1023
+ showOutsideDays,
424
1024
  ...props
425
1025
  });
426
1026
  }
427
- function InputGroupTextarea({ className, ...props }) {
428
- return /* @__PURE__ */ jsx(Textarea, {
429
- className: cn("flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent", className),
430
- "data-slot": "input-group-control",
1027
+ function CalendarDayButton({ className, day, modifiers, ...props }) {
1028
+ const defaultClassNames = getDefaultClassNames();
1029
+ const ref = React.useRef(null);
1030
+ React.useEffect(() => {
1031
+ if (modifiers.focused) ref.current?.focus();
1032
+ }, [modifiers.focused]);
1033
+ return /* @__PURE__ */ jsx(Button, {
1034
+ className: cn("data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70", defaultClassNames.day, className),
1035
+ "data-day": day.date.toLocaleDateString(),
1036
+ "data-range-end": modifiers.range_end,
1037
+ "data-range-middle": modifiers.range_middle,
1038
+ "data-range-start": modifiers.range_start,
1039
+ "data-selected-single": modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle,
1040
+ ref,
1041
+ size: "icon",
1042
+ variant: "ghost",
431
1043
  ...props
432
1044
  });
433
1045
  }
@@ -609,21 +1221,6 @@ function Label({ className, ...props }) {
609
1221
  });
610
1222
  }
611
1223
  //#endregion
612
- //#region src/components/ui/progress/index.tsx
613
- function Progress({ className, value, ...props }) {
614
- return /* @__PURE__ */ jsx(ProgressPrimitive.Root, {
615
- className: cn("bg-primary/20 relative h-2 w-full overflow-hidden rounded-full", className),
616
- "data-slot": "progress",
617
- value,
618
- ...props,
619
- children: /* @__PURE__ */ jsx(ProgressPrimitive.Indicator, {
620
- className: "bg-primary h-full w-full flex-1 transition-all",
621
- "data-slot": "progress-indicator",
622
- style: { transform: `translateX(-${100 - (value || 0)}%)` }
623
- })
624
- });
625
- }
626
- //#endregion
627
1224
  //#region src/components/ui/tabs/index.tsx
628
1225
  function Tabs({ className, ...props }) {
629
1226
  return /* @__PURE__ */ jsx(TabsPrimitive.Root, {
@@ -654,7 +1251,7 @@ function TabsContent({ className, ...props }) {
654
1251
  });
655
1252
  }
656
1253
  //#endregion
657
- //#region ../core/src/icons/picker-icons.ts
1254
+ //#region ../core/src/utils/picker-icons.ts
658
1255
  const CATEGORIES = {
659
1256
  ListMusic: ["multimedia"],
660
1257
  Activity: [
@@ -697,6 +1294,8 @@ const CATEGORIES = {
697
1294
  ],
698
1295
  Album: ["photography", "multimedia"],
699
1296
  AlertCircle: ["notifications"],
1297
+ Ampersand: ["text", "development"],
1298
+ Ampersands: ["text", "development"],
700
1299
  Amphora: ["food-beverage", "gaming"],
701
1300
  Anchor: ["transportation", "text"],
702
1301
  Anvil: [
@@ -751,12 +1350,18 @@ const CATEGORIES = {
751
1350
  ],
752
1351
  ArrowLeft: ["arrows"],
753
1352
  ArrowRight: ["arrows"],
1353
+ ArrowRightToLine: ["arrows", "development"],
754
1354
  ArrowUpFromLine: [
755
1355
  "arrows",
756
1356
  "files",
757
1357
  "development"
758
1358
  ],
759
1359
  ArrowUpToLine: ["arrows", "files"],
1360
+ Asterisk: [
1361
+ "text",
1362
+ "math",
1363
+ "development"
1364
+ ],
760
1365
  AtSign: ["text", "account"],
761
1366
  Atom: ["science"],
762
1367
  Award: [
@@ -845,6 +1450,7 @@ const CATEGORIES = {
845
1450
  "tools"
846
1451
  ],
847
1452
  Bike: ["transportation"],
1453
+ Binary: ["text", "development"],
848
1454
  Binoculars: [
849
1455
  "navigation",
850
1456
  "nature",
@@ -868,6 +1474,11 @@ const CATEGORIES = {
868
1474
  "tools",
869
1475
  "development"
870
1476
  ],
1477
+ Blocks: [
1478
+ "development",
1479
+ "layout",
1480
+ "shapes"
1481
+ ],
871
1482
  BluetoothConnected: ["connectivity", "devices"],
872
1483
  Bolt: ["tools", "home"],
873
1484
  Bomb: ["security", "tools"],
@@ -897,6 +1508,8 @@ const CATEGORIES = {
897
1508
  "text",
898
1509
  "gaming"
899
1510
  ],
1511
+ BookDashed: ["development"],
1512
+ BookDown: ["development"],
900
1513
  BookHeart: [
901
1514
  "social",
902
1515
  "text",
@@ -941,6 +1554,7 @@ const CATEGORIES = {
941
1554
  "development",
942
1555
  "gaming"
943
1556
  ],
1557
+ BookOpenText: ["text", "development"],
944
1558
  BookPlus: [
945
1559
  "development",
946
1560
  "text",
@@ -957,6 +1571,8 @@ const CATEGORIES = {
957
1571
  "design",
958
1572
  "gaming"
959
1573
  ],
1574
+ BookUp: ["development"],
1575
+ BookUp2: ["development"],
960
1576
  BookUser: [
961
1577
  "account",
962
1578
  "connectivity",
@@ -1059,6 +1675,8 @@ const CATEGORIES = {
1059
1675
  "nature"
1060
1676
  ],
1061
1677
  Carrot: ["food-beverage"],
1678
+ CaseLower: ["text", "development"],
1679
+ CaseUpper: ["text", "development"],
1062
1680
  CassetteTape: [
1063
1681
  "connectivity",
1064
1682
  "devices",
@@ -1234,6 +1852,8 @@ const CATEGORIES = {
1234
1852
  Cloud: ["weather"],
1235
1853
  CloudAlert: ["development"],
1236
1854
  CloudBackup: ["arrows", "files"],
1855
+ CloudCheck: ["development"],
1856
+ CloudCog: ["development"],
1237
1857
  CloudDownload: ["arrows", "files"],
1238
1858
  CloudSync: ["arrows", "files"],
1239
1859
  CloudUpload: ["arrows", "files"],
@@ -1246,13 +1866,16 @@ const CATEGORIES = {
1246
1866
  Cog: ["account"],
1247
1867
  Coins: ["gaming"],
1248
1868
  Combine: ["development", "files"],
1869
+ Command: ["development"],
1249
1870
  Compass: ["navigation", "travel"],
1871
+ Component: ["design", "development"],
1250
1872
  Computer: [
1251
1873
  "devices",
1252
1874
  "development",
1253
1875
  "gaming"
1254
1876
  ],
1255
1877
  ConciergeBell: ["travel"],
1878
+ Construction: ["development"],
1256
1879
  Contact: [
1257
1880
  "account",
1258
1881
  "connectivity",
@@ -1265,6 +1888,11 @@ const CATEGORIES = {
1265
1888
  "communication",
1266
1889
  "social"
1267
1890
  ],
1891
+ Container: [
1892
+ "development",
1893
+ "transportation",
1894
+ "mail"
1895
+ ],
1268
1896
  Contrast: [
1269
1897
  "photography",
1270
1898
  "accessibility",
@@ -1273,6 +1901,16 @@ const CATEGORIES = {
1273
1901
  Cookie: ["account", "food-beverage"],
1274
1902
  CookingPot: ["food-beverage", "home"],
1275
1903
  CopyCheck: ["text", "notifications"],
1904
+ CopySlash: [
1905
+ "text",
1906
+ "development",
1907
+ "math"
1908
+ ],
1909
+ CornerDownRight: [
1910
+ "arrows",
1911
+ "text",
1912
+ "development"
1913
+ ],
1276
1914
  Cpu: ["devices"],
1277
1915
  CreditCard: ["account", "finance"],
1278
1916
  Croissant: ["food-beverage"],
@@ -1294,6 +1932,7 @@ const CATEGORIES = {
1294
1932
  "development",
1295
1933
  "photography"
1296
1934
  ],
1935
+ DatabaseZap: ["devices", "development"],
1297
1936
  Dessert: ["food-beverage"],
1298
1937
  Diameter: [
1299
1938
  "shapes",
@@ -1329,6 +1968,7 @@ const CATEGORIES = {
1329
1968
  Dices: ["gaming"],
1330
1969
  Diff: ["development", "files"],
1331
1970
  Disc2: ["devices", "multimedia"],
1971
+ Divide: ["math", "development"],
1332
1972
  DivideCircle: ["math"],
1333
1973
  DnaOff: ["medical", "food-beverage"],
1334
1974
  Dock: [
@@ -1371,6 +2011,12 @@ const CATEGORIES = {
1371
2011
  DropletOff: ["weather", "gaming"],
1372
2012
  Drum: ["multimedia", "devices"],
1373
2013
  Drumstick: ["food-beverage"],
2014
+ Dumbbell: ["navigation", "sports"],
2015
+ EarthLock: [
2016
+ "security",
2017
+ "development",
2018
+ "devices"
2019
+ ],
1374
2020
  Eclipse: [
1375
2021
  "science",
1376
2022
  "design",
@@ -1387,6 +2033,9 @@ const CATEGORIES = {
1387
2033
  Egg: ["food-beverage", "animals"],
1388
2034
  EggFried: ["food-beverage"],
1389
2035
  EggOff: ["food-beverage"],
2036
+ Ellipsis: ["layout", "development"],
2037
+ Equal: ["math", "development"],
2038
+ EqualNot: ["math", "development"],
1390
2039
  EthernetPort: [
1391
2040
  "communication",
1392
2041
  "devices",
@@ -1488,6 +2137,8 @@ const CATEGORIES = {
1488
2137
  FishingHook: ["sports", "travel"],
1489
2138
  Flag: ["account", "social"],
1490
2139
  FlagOff: ["account", "social"],
2140
+ FlagTriangleLeft: ["development", "navigation"],
2141
+ FlagTriangleRight: ["development", "navigation"],
1491
2142
  Flame: [
1492
2143
  "weather",
1493
2144
  "social",
@@ -1548,6 +2199,7 @@ const CATEGORIES = {
1548
2199
  FolderX: ["files"],
1549
2200
  Folders: ["files"],
1550
2201
  Footprints: ["navigation"],
2202
+ Form: ["development"],
1551
2203
  Forward: ["mail"],
1552
2204
  Frame: ["design", "photography"],
1553
2205
  Fullscreen: [
@@ -1622,10 +2274,28 @@ const CATEGORIES = {
1622
2274
  Ghost: ["gaming"],
1623
2275
  Gift: ["gaming", "account"],
1624
2276
  GitBranch: ["development"],
2277
+ GitBranchMinus: ["development"],
2278
+ GitBranchPlus: ["development"],
2279
+ GitCommitHorizontal: ["development", "navigation"],
2280
+ GitCommitVertical: ["development", "navigation"],
2281
+ GitCompare: ["development"],
2282
+ GitCompareArrows: ["development", "arrows"],
2283
+ GitFork: ["development"],
2284
+ GitGraph: ["development"],
1625
2285
  GitMerge: ["development"],
1626
2286
  GitPullRequest: ["development"],
2287
+ GitPullRequestArrow: ["development", "arrows"],
2288
+ GitPullRequestClosed: ["development"],
2289
+ GitPullRequestCreate: ["development"],
2290
+ GitPullRequestCreateArrow: ["development", "arrows"],
2291
+ GitPullRequestDraft: ["development"],
1627
2292
  GlassWater: ["food-beverage"],
1628
2293
  Globe2: ["navigation"],
2294
+ GlobeLock: [
2295
+ "security",
2296
+ "development",
2297
+ "devices"
2298
+ ],
1629
2299
  Goal: ["gaming"],
1630
2300
  Gpu: ["devices", "gaming"],
1631
2301
  GraduationCap: ["buildings"],
@@ -1657,6 +2327,7 @@ const CATEGORIES = {
1657
2327
  "finance",
1658
2328
  "security"
1659
2329
  ],
2330
+ HardDrive: ["development", "devices"],
1660
2331
  HardDriveDownload: [
1661
2332
  "development",
1662
2333
  "devices",
@@ -1818,8 +2489,23 @@ const CATEGORIES = {
1818
2489
  InspectionPanel: ["tools"],
1819
2490
  JapaneseYen: ["finance"],
1820
2491
  Joystick: ["gaming", "devices"],
2492
+ Kanban: [
2493
+ "charts",
2494
+ "development",
2495
+ "design"
2496
+ ],
1821
2497
  Key: ["security", "account"],
2498
+ Keyboard: [
2499
+ "text",
2500
+ "devices",
2501
+ "development"
2502
+ ],
1822
2503
  KeyboardMusic: ["multimedia", "devices"],
2504
+ KeyboardOff: [
2505
+ "devices",
2506
+ "text",
2507
+ "development"
2508
+ ],
1823
2509
  LampCeiling: ["home"],
1824
2510
  LandPlot: [
1825
2511
  "design",
@@ -1871,6 +2557,8 @@ const CATEGORIES = {
1871
2557
  LineChart: ["charts"],
1872
2558
  Link: ["text", "account"],
1873
2559
  ListCheck: ["text"],
2560
+ ListIndentDecrease: ["text", "development"],
2561
+ ListIndentIncrease: ["text", "development"],
1874
2562
  ListTree: [
1875
2563
  "files",
1876
2564
  "text",
@@ -2016,6 +2704,11 @@ const CATEGORIES = {
2016
2704
  ],
2017
2705
  MinusCircle: ["math"],
2018
2706
  MonitorCheck: ["connectivity", "devices"],
2707
+ MonitorCloud: [
2708
+ "connectivity",
2709
+ "devices",
2710
+ "development"
2711
+ ],
2019
2712
  Moon: ["accessibility"],
2020
2713
  MoreHorizontal: ["layout", "development"],
2021
2714
  Mountain: ["nature", "gaming"],
@@ -2023,6 +2716,7 @@ const CATEGORIES = {
2023
2716
  Music2: ["multimedia", "files"],
2024
2717
  Music3: ["multimedia", "files"],
2025
2718
  Music4: ["multimedia", "files"],
2719
+ Network: ["development"],
2026
2720
  Newspaper: ["multimedia", "communication"],
2027
2721
  Nfc: [
2028
2722
  "communication",
@@ -2052,12 +2746,17 @@ const CATEGORIES = {
2052
2746
  "text",
2053
2747
  "science"
2054
2748
  ],
2749
+ Option: ["development"],
2055
2750
  Orbit: ["science"],
2056
2751
  Origami: ["animals", "design"],
2057
2752
  Package: ["files", "development"],
2058
2753
  Package2: ["files", "development"],
2754
+ PackageCheck: ["development"],
2755
+ PackageMinus: ["development"],
2059
2756
  PackageOpen: ["files", "development"],
2757
+ PackagePlus: ["development"],
2060
2758
  PackageSearch: ["files", "development"],
2759
+ PackageX: ["development"],
2061
2760
  PaintBucket: ["design", "tools"],
2062
2761
  PaintRoller: [
2063
2762
  "text",
@@ -2085,6 +2784,16 @@ const CATEGORIES = {
2085
2784
  "photography"
2086
2785
  ],
2087
2786
  Panda: ["animals"],
2787
+ PanelsTopLeft: [
2788
+ "layout",
2789
+ "design",
2790
+ "development"
2791
+ ],
2792
+ PanelTop: [
2793
+ "layout",
2794
+ "design",
2795
+ "development"
2796
+ ],
2088
2797
  Paperclip: [
2089
2798
  "text",
2090
2799
  "design",
@@ -2158,6 +2867,7 @@ const CATEGORIES = {
2158
2867
  "devices",
2159
2868
  "communication"
2160
2869
  ],
2870
+ Pi: ["development", "math"],
2161
2871
  Pickaxe: ["tools", "gaming"],
2162
2872
  PieChart: ["charts", "files"],
2163
2873
  PiggyBank: ["finance"],
@@ -2176,6 +2886,7 @@ const CATEGORIES = {
2176
2886
  PlaneLanding: ["transportation", "travel"],
2177
2887
  PlaneTakeoff: ["transportation", "travel"],
2178
2888
  PlayCircle: ["multimedia"],
2889
+ Plug: ["devices", "development"],
2179
2890
  Plug2: ["devices", "development"],
2180
2891
  Plus: [
2181
2892
  "math",
@@ -2225,6 +2936,7 @@ const CATEGORIES = {
2225
2936
  QrCode: ["development", "social"],
2226
2937
  Rabbit: ["animals"],
2227
2938
  Radiation: ["science"],
2939
+ Radical: ["development", "math"],
2228
2940
  Radio: [
2229
2941
  "devices",
2230
2942
  "multimedia",
@@ -2259,6 +2971,8 @@ const CATEGORIES = {
2259
2971
  ReceiptSwissFranc: ["finance", "travel"],
2260
2972
  ReceiptText: ["finance", "travel"],
2261
2973
  ReceiptTurkishLira: ["finance", "travel"],
2974
+ RectangleCircle: ["development", "text"],
2975
+ RectangleEllipsis: ["text", "development"],
2262
2976
  RectangleGoggles: [
2263
2977
  "devices",
2264
2978
  "gaming",
@@ -2269,6 +2983,7 @@ const CATEGORIES = {
2269
2983
  Redo2: ["text", "arrows"],
2270
2984
  RefreshCcwDot: ["arrows", "development"],
2271
2985
  Refrigerator: ["food-beverage", "home"],
2986
+ Regex: ["text", "development"],
2272
2987
  Repeat1: ["multimedia"],
2273
2988
  Repeat2: [
2274
2989
  "arrows",
@@ -2313,6 +3028,12 @@ const CATEGORIES = {
2313
3028
  "tools",
2314
3029
  "arrows"
2315
3030
  ],
3031
+ Router: [
3032
+ "development",
3033
+ "devices",
3034
+ "connectivity",
3035
+ "home"
3036
+ ],
2316
3037
  Rss: ["development", "social"],
2317
3038
  Ruler: [
2318
3039
  "tools",
@@ -2399,7 +3120,10 @@ const CATEGORIES = {
2399
3120
  ],
2400
3121
  SearchSlash: ["text", "social"],
2401
3122
  SearchX: ["text", "social"],
3123
+ Server: ["development", "devices"],
2402
3124
  ServerCog: ["development", "devices"],
3125
+ ServerCrash: ["development", "devices"],
3126
+ ServerOff: ["development", "devices"],
2403
3127
  Settings: ["account"],
2404
3128
  Settings2: ["account"],
2405
3129
  Shapes: ["shapes", "gaming"],
@@ -2478,6 +3202,11 @@ const CATEGORIES = {
2478
3202
  "development",
2479
3203
  "gaming"
2480
3204
  ],
3205
+ ShieldUser: [
3206
+ "account",
3207
+ "security",
3208
+ "development"
3209
+ ],
2481
3210
  ShieldX: [
2482
3211
  "account",
2483
3212
  "security",
@@ -2526,6 +3255,7 @@ const CATEGORIES = {
2526
3255
  ],
2527
3256
  SkipBack: ["multimedia", "arrows"],
2528
3257
  Skull: ["gaming"],
3258
+ Slash: ["development", "math"],
2529
3259
  SlidersHorizontal: ["account"],
2530
3260
  SmartphoneCharging: ["connectivity", "devices"],
2531
3261
  SmartphoneNfc: [
@@ -2559,12 +3289,15 @@ const CATEGORIES = {
2559
3289
  "weather"
2560
3290
  ],
2561
3291
  Speaker: ["multimedia", "devices"],
3292
+ SpellCheck: ["text", "development"],
3293
+ SpellCheck2: ["text", "development"],
2562
3294
  SplinePointer: [
2563
3295
  "arrows",
2564
3296
  "cursors",
2565
3297
  "design",
2566
3298
  "tools"
2567
3299
  ],
3300
+ Split: ["development", "arrows"],
2568
3301
  Spool: [
2569
3302
  "communication",
2570
3303
  "tools",
@@ -2594,6 +3327,12 @@ const CATEGORIES = {
2594
3327
  SquareArrowDownRight: ["arrows", "gaming"],
2595
3328
  SquareArrowOutUpRight: ["arrows", "social"],
2596
3329
  SquareArrowUpRight: ["arrows", "social"],
3330
+ SquareAsterisk: [
3331
+ "text",
3332
+ "security",
3333
+ "math",
3334
+ "development"
3335
+ ],
2597
3336
  SquareBottomDashedScissors: [
2598
3337
  "text",
2599
3338
  "design",
@@ -2608,14 +3347,37 @@ const CATEGORIES = {
2608
3347
  "design"
2609
3348
  ],
2610
3349
  SquareCheck: ["notifications"],
3350
+ SquareChevronRight: [
3351
+ "arrows",
3352
+ "navigation",
3353
+ "development"
3354
+ ],
3355
+ SquareCode: ["text", "development"],
2611
3356
  SquareDashedBottom: ["development", "files"],
2612
3357
  SquareDashedBottomCode: ["development", "files"],
3358
+ SquareDashedKanban: [
3359
+ "charts",
3360
+ "development",
3361
+ "design"
3362
+ ],
2613
3363
  SquareDashedMousePointer: [
2614
3364
  "arrows",
2615
3365
  "cursors",
2616
3366
  "development",
2617
3367
  "tools"
2618
3368
  ],
3369
+ SquareDashedTopSolid: [
3370
+ "design",
3371
+ "development",
3372
+ "layout"
3373
+ ],
3374
+ SquareDot: ["development"],
3375
+ SquareFunction: ["development", "math"],
3376
+ SquareKanban: [
3377
+ "charts",
3378
+ "development",
3379
+ "design"
3380
+ ],
2619
3381
  SquareLibrary: [
2620
3382
  "text",
2621
3383
  "photography",
@@ -2642,6 +3404,7 @@ const CATEGORIES = {
2642
3404
  "shopping",
2643
3405
  "math"
2644
3406
  ],
3407
+ SquarePi: ["development", "math"],
2645
3408
  SquarePlay: ["arrows", "multimedia"],
2646
3409
  SquarePlus: [
2647
3410
  "math",
@@ -2649,6 +3412,12 @@ const CATEGORIES = {
2649
3412
  "development",
2650
3413
  "text"
2651
3414
  ],
3415
+ SquareRadical: ["development", "math"],
3416
+ SquareRoundCorner: [
3417
+ "design",
3418
+ "development",
3419
+ "layout"
3420
+ ],
2652
3421
  SquareScissors: [
2653
3422
  "text",
2654
3423
  "design",
@@ -2656,12 +3425,19 @@ const CATEGORIES = {
2656
3425
  "files",
2657
3426
  "development"
2658
3427
  ],
3428
+ SquareSlash: ["development", "math"],
2659
3429
  SquareStack: [
2660
3430
  "text",
2661
3431
  "files",
2662
3432
  "development"
2663
3433
  ],
2664
3434
  SquareStar: ["sports", "gaming"],
3435
+ SquareTerminal: ["development"],
3436
+ SquircleDashed: [
3437
+ "development",
3438
+ "shapes",
3439
+ "design"
3440
+ ],
2665
3441
  Squirrel: ["animals"],
2666
3442
  Stamp: [
2667
3443
  "design",
@@ -2785,6 +3561,16 @@ const CATEGORIES = {
2785
3561
  Timer: ["time"],
2786
3562
  TimerOff: ["time"],
2787
3563
  TimerReset: ["time"],
3564
+ ToggleLeft: [
3565
+ "layout",
3566
+ "account",
3567
+ "development"
3568
+ ],
3569
+ ToggleRight: [
3570
+ "layout",
3571
+ "account",
3572
+ "development"
3573
+ ],
2788
3574
  ToolCase: [
2789
3575
  "tools",
2790
3576
  "development",
@@ -2809,12 +3595,18 @@ const CATEGORIES = {
2809
3595
  Trash2: ["files", "mail"],
2810
3596
  Trees: ["nature", "sustainability"],
2811
3597
  TrendingDown: ["charts", "arrows"],
3598
+ TriangleAlert: [
3599
+ "notifications",
3600
+ "shapes",
3601
+ "development"
3602
+ ],
2812
3603
  Trophy: ["sports", "gaming"],
2813
3604
  TurkishLira: ["finance"],
2814
3605
  Turtle: ["animals"],
2815
3606
  TvMinimalPlay: ["devices", "multimedia"],
2816
3607
  Undo2: ["text", "arrows"],
2817
3608
  Ungroup: ["shapes", "files"],
3609
+ Unplug: ["devices", "development"],
2818
3610
  Upload: ["arrows", "files"],
2819
3611
  UploadCloud: ["arrows", "files"],
2820
3612
  Usb: [
@@ -2838,6 +3630,7 @@ const CATEGORIES = {
2838
3630
  "travel",
2839
3631
  "navigation"
2840
3632
  ],
3633
+ Variable: ["development", "math"],
2841
3634
  Vault: [
2842
3635
  "security",
2843
3636
  "travel",
@@ -2940,6 +3733,7 @@ const CATEGORIES = {
2940
3733
  ],
2941
3734
  Wine: ["food-beverage"],
2942
3735
  WineOff: ["food-beverage"],
3736
+ Workflow: ["development"],
2943
3737
  Worm: ["animals", "security"],
2944
3738
  Wrench: [
2945
3739
  "account",
@@ -2992,6 +3786,8 @@ const MAP = {
2992
3786
  AlarmSmoke,
2993
3787
  Album,
2994
3788
  AlertCircle,
3789
+ Ampersand,
3790
+ Ampersands,
2995
3791
  Amphora,
2996
3792
  Anchor,
2997
3793
  Anvil,
@@ -3014,8 +3810,10 @@ const MAP = {
3014
3810
  ArrowDownToLine,
3015
3811
  ArrowLeft,
3016
3812
  ArrowRight,
3813
+ ArrowRightToLine,
3017
3814
  ArrowUpFromLine,
3018
3815
  ArrowUpToLine,
3816
+ Asterisk,
3019
3817
  AtSign,
3020
3818
  Atom,
3021
3819
  Award,
@@ -3063,12 +3861,14 @@ const MAP = {
3063
3861
  BetweenVerticalEnd,
3064
3862
  BetweenVerticalStart,
3065
3863
  Bike,
3864
+ Binary,
3066
3865
  Binoculars,
3067
3866
  Biohazard,
3068
3867
  Bird,
3069
3868
  Birdhouse,
3070
3869
  Bitcoin,
3071
3870
  Blend,
3871
+ Blocks,
3072
3872
  BluetoothConnected,
3073
3873
  Bolt,
3074
3874
  Bomb,
@@ -3078,6 +3878,8 @@ const MAP = {
3078
3878
  BookAlert,
3079
3879
  BookCheck,
3080
3880
  BookCopy,
3881
+ BookDashed,
3882
+ BookDown,
3081
3883
  BookHeart,
3082
3884
  BookImage,
3083
3885
  BookKey,
@@ -3086,10 +3888,13 @@ const MAP = {
3086
3888
  BookMinus,
3087
3889
  BookOpen,
3088
3890
  BookOpenCheck,
3891
+ BookOpenText,
3089
3892
  BookPlus,
3090
3893
  BookSearch,
3091
3894
  BookText,
3092
3895
  BookType,
3896
+ BookUp,
3897
+ BookUp2,
3093
3898
  BookUser,
3094
3899
  BookX,
3095
3900
  Bookmark,
@@ -3150,6 +3955,8 @@ const MAP = {
3150
3955
  CarFront,
3151
3956
  Caravan,
3152
3957
  Carrot,
3958
+ CaseLower,
3959
+ CaseUpper,
3153
3960
  CassetteTape,
3154
3961
  Castle,
3155
3962
  Cat,
@@ -3253,6 +4060,8 @@ const MAP = {
3253
4060
  Cloud,
3254
4061
  CloudAlert,
3255
4062
  CloudBackup,
4063
+ CloudCheck,
4064
+ CloudCog,
3256
4065
  CloudDownload,
3257
4066
  CloudSync,
3258
4067
  CloudUpload,
@@ -3265,15 +4074,21 @@ const MAP = {
3265
4074
  Cog,
3266
4075
  Coins,
3267
4076
  Combine,
4077
+ Command,
3268
4078
  Compass,
4079
+ Component,
3269
4080
  Computer,
3270
4081
  ConciergeBell,
4082
+ Construction,
3271
4083
  Contact,
3272
4084
  ContactRound,
4085
+ Container,
3273
4086
  Contrast,
3274
4087
  Cookie,
3275
4088
  CookingPot,
3276
4089
  CopyCheck,
4090
+ CopySlash,
4091
+ CornerDownRight,
3277
4092
  Cpu,
3278
4093
  CreditCard,
3279
4094
  Croissant,
@@ -3285,6 +4100,7 @@ const MAP = {
3285
4100
  Currency,
3286
4101
  Database,
3287
4102
  DatabaseBackup,
4103
+ DatabaseZap,
3288
4104
  Dessert,
3289
4105
  Diameter,
3290
4106
  Diamond,
@@ -3300,6 +4116,7 @@ const MAP = {
3300
4116
  Dices,
3301
4117
  Diff,
3302
4118
  Disc2,
4119
+ Divide,
3303
4120
  DivideCircle,
3304
4121
  DnaOff,
3305
4122
  Dock,
@@ -3317,12 +4134,17 @@ const MAP = {
3317
4134
  DropletOff,
3318
4135
  Drum,
3319
4136
  Drumstick,
4137
+ Dumbbell,
4138
+ EarthLock,
3320
4139
  Eclipse,
3321
4140
  Edit,
3322
4141
  Edit3,
3323
4142
  Egg,
3324
4143
  EggFried,
3325
4144
  EggOff,
4145
+ Ellipsis,
4146
+ Equal,
4147
+ EqualNot,
3326
4148
  EthernetPort,
3327
4149
  Euro,
3328
4150
  ExternalLink,
@@ -3396,6 +4218,8 @@ const MAP = {
3396
4218
  FishingHook,
3397
4219
  Flag,
3398
4220
  FlagOff,
4221
+ FlagTriangleLeft,
4222
+ FlagTriangleRight,
3399
4223
  Flame,
3400
4224
  FlameKindling,
3401
4225
  Flashlight,
@@ -3439,6 +4263,7 @@ const MAP = {
3439
4263
  FolderX,
3440
4264
  Folders,
3441
4265
  Footprints,
4266
+ Form,
3442
4267
  Forward,
3443
4268
  Frame,
3444
4269
  Fullscreen,
@@ -3459,10 +4284,24 @@ const MAP = {
3459
4284
  Ghost,
3460
4285
  Gift,
3461
4286
  GitBranch,
4287
+ GitBranchMinus,
4288
+ GitBranchPlus,
4289
+ GitCommitHorizontal,
4290
+ GitCommitVertical,
4291
+ GitCompare,
4292
+ GitCompareArrows,
4293
+ GitFork,
4294
+ GitGraph,
3462
4295
  GitMerge,
3463
4296
  GitPullRequest,
4297
+ GitPullRequestArrow,
4298
+ GitPullRequestClosed,
4299
+ GitPullRequestCreate,
4300
+ GitPullRequestCreateArrow,
4301
+ GitPullRequestDraft,
3464
4302
  GlassWater,
3465
4303
  Globe2,
4304
+ GlobeLock,
3466
4305
  Goal,
3467
4306
  Gpu,
3468
4307
  GraduationCap,
@@ -3479,6 +4318,7 @@ const MAP = {
3479
4318
  HandPlatter,
3480
4319
  Handbag,
3481
4320
  Handshake,
4321
+ HardDrive,
3482
4322
  HardDriveDownload,
3483
4323
  HardDriveUpload,
3484
4324
  HardHat,
@@ -3523,8 +4363,11 @@ const MAP = {
3523
4363
  InspectionPanel,
3524
4364
  JapaneseYen,
3525
4365
  Joystick,
4366
+ Kanban,
3526
4367
  Key,
4368
+ Keyboard,
3527
4369
  KeyboardMusic,
4370
+ KeyboardOff,
3528
4371
  LampCeiling,
3529
4372
  LandPlot,
3530
4373
  Landmark,
@@ -3541,6 +4384,8 @@ const MAP = {
3541
4384
  LineChart,
3542
4385
  Link,
3543
4386
  ListCheck,
4387
+ ListIndentDecrease,
4388
+ ListIndentIncrease,
3544
4389
  ListTree,
3545
4390
  LoaderCircle,
3546
4391
  Lock,
@@ -3607,6 +4452,7 @@ const MAP = {
3607
4452
  Minus,
3608
4453
  MinusCircle,
3609
4454
  MonitorCheck,
4455
+ MonitorCloud,
3610
4456
  Moon,
3611
4457
  MoreHorizontal,
3612
4458
  Mountain,
@@ -3614,6 +4460,7 @@ const MAP = {
3614
4460
  Music2,
3615
4461
  Music3,
3616
4462
  Music4,
4463
+ Network,
3617
4464
  Newspaper,
3618
4465
  Nfc,
3619
4466
  Notebook,
@@ -3625,18 +4472,25 @@ const MAP = {
3625
4472
  Nut,
3626
4473
  NutOff,
3627
4474
  Omega,
4475
+ Option,
3628
4476
  Orbit,
3629
4477
  Origami,
3630
4478
  Package,
3631
4479
  Package2,
4480
+ PackageCheck,
4481
+ PackageMinus,
3632
4482
  PackageOpen,
4483
+ PackagePlus,
3633
4484
  PackageSearch,
4485
+ PackageX,
3634
4486
  PaintBucket,
3635
4487
  PaintRoller,
3636
4488
  Paintbrush,
3637
4489
  PaintbrushVertical,
3638
4490
  Palette,
3639
4491
  Panda,
4492
+ PanelsTopLeft,
4493
+ PanelTop,
3640
4494
  Paperclip,
3641
4495
  Parentheses,
3642
4496
  PartyPopper,
@@ -3655,6 +4509,7 @@ const MAP = {
3655
4509
  PersonStanding,
3656
4510
  PhilippinePeso,
3657
4511
  Phone,
4512
+ Pi,
3658
4513
  Pickaxe,
3659
4514
  PieChart,
3660
4515
  PiggyBank,
@@ -3665,6 +4520,7 @@ const MAP = {
3665
4520
  PlaneLanding,
3666
4521
  PlaneTakeoff,
3667
4522
  PlayCircle,
4523
+ Plug,
3668
4524
  Plug2,
3669
4525
  Plus,
3670
4526
  PlusCircle,
@@ -3682,6 +4538,7 @@ const MAP = {
3682
4538
  QrCode,
3683
4539
  Rabbit,
3684
4540
  Radiation,
4541
+ Radical,
3685
4542
  Radio,
3686
4543
  RadioReceiver,
3687
4544
  RadioTower,
@@ -3699,11 +4556,14 @@ const MAP = {
3699
4556
  ReceiptSwissFranc,
3700
4557
  ReceiptText,
3701
4558
  ReceiptTurkishLira,
4559
+ RectangleCircle,
4560
+ RectangleEllipsis,
3702
4561
  RectangleGoggles,
3703
4562
  Recycle,
3704
4563
  Redo2,
3705
4564
  RefreshCcwDot,
3706
4565
  Refrigerator,
4566
+ Regex,
3707
4567
  Repeat1,
3708
4568
  Repeat2,
3709
4569
  Rewind,
@@ -3714,6 +4574,7 @@ const MAP = {
3714
4574
  RotateCcwSquare,
3715
4575
  RotateCw,
3716
4576
  RotateCwSquare,
4577
+ Router,
3717
4578
  Rss,
3718
4579
  Ruler,
3719
4580
  RulerDimensionLine,
@@ -3745,7 +4606,10 @@ const MAP = {
3745
4606
  SearchCode,
3746
4607
  SearchSlash,
3747
4608
  SearchX,
4609
+ Server,
3748
4610
  ServerCog,
4611
+ ServerCrash,
4612
+ ServerOff,
3749
4613
  Settings,
3750
4614
  Settings2,
3751
4615
  Shapes,
@@ -3763,6 +4627,7 @@ const MAP = {
3763
4627
  ShieldOff,
3764
4628
  ShieldPlus,
3765
4629
  ShieldQuestionMark,
4630
+ ShieldUser,
3766
4631
  ShieldX,
3767
4632
  Ship,
3768
4633
  ShipWheel,
@@ -3780,6 +4645,7 @@ const MAP = {
3780
4645
  SignpostBig,
3781
4646
  SkipBack,
3782
4647
  Skull,
4648
+ Slash,
3783
4649
  SlidersHorizontal,
3784
4650
  SmartphoneCharging,
3785
4651
  SmartphoneNfc,
@@ -3794,7 +4660,10 @@ const MAP = {
3794
4660
  Sparkle,
3795
4661
  Sparkles,
3796
4662
  Speaker,
4663
+ SpellCheck,
4664
+ SpellCheck2,
3797
4665
  SplinePointer,
4666
+ Split,
3798
4667
  Spool,
3799
4668
  Spotlight,
3800
4669
  SprayCan,
@@ -3806,21 +4675,35 @@ const MAP = {
3806
4675
  SquareArrowDownRight,
3807
4676
  SquareArrowOutUpRight,
3808
4677
  SquareArrowUpRight,
4678
+ SquareAsterisk,
3809
4679
  SquareBottomDashedScissors,
3810
4680
  SquareChartGantt,
3811
4681
  SquareCheck,
4682
+ SquareChevronRight,
4683
+ SquareCode,
3812
4684
  SquareDashedBottom,
3813
4685
  SquareDashedBottomCode,
4686
+ SquareDashedKanban,
3814
4687
  SquareDashedMousePointer,
4688
+ SquareDashedTopSolid,
4689
+ SquareDot,
4690
+ SquareFunction,
4691
+ SquareKanban,
3815
4692
  SquareLibrary,
3816
4693
  SquareMinus,
3817
4694
  SquareMousePointer,
3818
4695
  SquarePercent,
4696
+ SquarePi,
3819
4697
  SquarePlay,
3820
4698
  SquarePlus,
4699
+ SquareRadical,
4700
+ SquareRoundCorner,
3821
4701
  SquareScissors,
4702
+ SquareSlash,
3822
4703
  SquareStack,
3823
4704
  SquareStar,
4705
+ SquareTerminal,
4706
+ SquircleDashed,
3824
4707
  Squirrel,
3825
4708
  Stamp,
3826
4709
  Star,
@@ -3876,6 +4759,8 @@ const MAP = {
3876
4759
  Timer,
3877
4760
  TimerOff,
3878
4761
  TimerReset,
4762
+ ToggleLeft,
4763
+ ToggleRight,
3879
4764
  ToolCase,
3880
4765
  Toolbox,
3881
4766
  Torus,
@@ -3887,12 +4772,14 @@ const MAP = {
3887
4772
  Trash2,
3888
4773
  Trees,
3889
4774
  TrendingDown,
4775
+ TriangleAlert,
3890
4776
  Trophy,
3891
4777
  TurkishLira,
3892
4778
  Turtle,
3893
4779
  TvMinimalPlay,
3894
4780
  Undo2,
3895
4781
  Ungroup,
4782
+ Unplug,
3896
4783
  Upload,
3897
4784
  UploadCloud,
3898
4785
  Usb,
@@ -3904,6 +4791,7 @@ const MAP = {
3904
4791
  UsersRound,
3905
4792
  Utensils,
3906
4793
  UtensilsCrossed,
4794
+ Variable,
3907
4795
  Vault,
3908
4796
  VectorSquare,
3909
4797
  Vegan,
@@ -3933,6 +4821,7 @@ const MAP = {
3933
4821
  WifiCog,
3934
4822
  Wine,
3935
4823
  WineOff,
4824
+ Workflow,
3936
4825
  Worm,
3937
4826
  Wrench,
3938
4827
  XCircle,
@@ -4075,4 +4964,4 @@ function IconPicker({ value, onValueChange, valueColor = "white", onColorChange,
4075
4964
  });
4076
4965
  }
4077
4966
  //#endregion
4078
- export { FieldLegend as A, THEME_COLORS as B, Input as C, FieldError as D, FieldDescription as E, CalendarDayButton as F, colorPalette as H, Button as I, buttonVariants as L, FieldSet as M, FieldTitle as N, FieldGroup as O, Calendar$1 as P, validate as R, Textarea as S, FieldContent as T, getContrastForeground as U, coerceThemeColor as V, resolveColorHex as W, InputGroupAddon as _, Tabs as a, InputGroupText as b, TabsTrigger as c, Field as d, Popover as f, InputGroup as g, PopoverTrigger as h, getIconCategories as i, FieldSeparator as j, FieldLabel as k, Progress as l, PopoverContent as m, getStaticIcon as n, TabsContent as o, PopoverAnchor as p, PICKER_ICON_NAMES as r, TabsList as s, IconPicker as t, Label as u, InputGroupButton as v, BasicField as w, InputGroupTextarea as x, InputGroupInput as y, ColorPicker as z };
4967
+ export { InputGroupText as $, FieldSet as A, ComboboxInput as B, FieldContent as C, FieldLabel as D, FieldGroup as E, ComboboxChipsInput as F, ComboboxTrigger as G, ComboboxLabel as H, ComboboxCollection as I, PortalContainerContext as J, ComboboxValue as K, ComboboxContent as L, Combobox$1 as M, ComboboxChip as N, FieldLegend as O, ComboboxChips as P, InputGroupInput as Q, ComboboxEmpty as R, BasicField as S, FieldError as T, ComboboxList as U, ComboboxItem as V, ComboboxSeparator as W, InputGroupAddon as X, InputGroup as Y, InputGroupButton as Z, validate as _, Tabs as a, ColorPicker as at, ComboboxField as b, TabsTrigger as c, colorPalette as ct, Popover as d, InputGroupTextarea as et, PopoverAnchor as f, CalendarDayButton as g, Calendar$1 as h, getIconCategories as i, buttonVariants as it, FieldTitle as j, FieldSeparator as k, Label as l, getContrastForeground as lt, PopoverTrigger as m, getStaticIcon as n, Input as nt, TabsContent as o, THEME_COLORS as ot, PopoverContent as p, useComboboxAnchor as q, PICKER_ICON_NAMES as r, Button as rt, TabsList as s, coerceThemeColor as st, IconPicker as t, Textarea as tt, Field as u, resolveColorHex as ut, Dropzone as v, FieldDescription as w, Spinner as x, Progress as y, ComboboxGroup as z };