@ekkolyth/ui 0.1.17 → 0.1.18

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.
Files changed (67) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +153 -97
  3. package/dist/base.css +263 -0
  4. package/dist/blocks.d.ts +4 -0
  5. package/dist/blocks.js +4 -0
  6. package/dist/container-BBg21poC.js +10 -0
  7. package/dist/convex.d.ts +2 -0
  8. package/dist/convex.js +2 -0
  9. package/dist/hooks.d.ts +2 -0
  10. package/dist/hooks.js +2 -0
  11. package/dist/icon-picker-ByfHyJ7i.js +4078 -0
  12. package/dist/index-Bwp0YMmG.d.ts +5 -0
  13. package/dist/index-BxcqwZNT.d.ts +30 -0
  14. package/dist/index-DHF8OR1R.d.ts +60 -0
  15. package/dist/index-DsLGf2HX.d.ts +9 -0
  16. package/dist/index-qji4ohJZ.d.ts +24 -0
  17. package/dist/index.d.ts +793 -533
  18. package/dist/index.js +3236 -5578
  19. package/dist/layout.d.ts +2 -0
  20. package/dist/layout.js +2 -0
  21. package/dist/loading-screen-DB3youyT.js +63 -0
  22. package/dist/shiki-code-Bg__Vnt1.js +29 -0
  23. package/dist/text.d.ts +17 -0
  24. package/dist/text.js +177 -0
  25. package/dist/themes/catpuccin/frappe.css +33 -33
  26. package/dist/themes/catpuccin/latte.css +33 -33
  27. package/dist/themes/catpuccin/macchiato.css +33 -33
  28. package/dist/themes/catpuccin/mocha.css +33 -33
  29. package/dist/themes/ekko-os.css +92 -37
  30. package/dist/themes/ekkolyth.css +2 -2
  31. package/dist/themes/index.css +7 -66
  32. package/dist/themes/provider.d.ts +62 -0
  33. package/dist/themes/provider.js +271 -0
  34. package/dist/themes/tokyo-night.css +33 -33
  35. package/dist/themes.css +7 -66
  36. package/dist/toggle-B2PFPImC.js +182 -0
  37. package/dist/use-mobile-BVGje-2e.d.ts +4 -0
  38. package/dist/use-mobile-CqHXB_Nc.js +18 -0
  39. package/dist/utils-C_uf36nf.js +8 -0
  40. package/dist/widget-C2vjxQms.js +94 -0
  41. package/dist/widget.d.ts +6 -0
  42. package/dist/widget.js +19 -0
  43. package/package.json +125 -170
  44. package/dist/catpuccin/frappe.css +0 -35
  45. package/dist/catpuccin/latte.css +0 -35
  46. package/dist/catpuccin/macchiato.css +0 -35
  47. package/dist/catpuccin/mocha.css +0 -35
  48. package/dist/ekko-os.css +0 -71
  49. package/dist/ekko-playlist.css +0 -71
  50. package/dist/ekkolyth.css +0 -70
  51. package/dist/index-C3ceanPz.d.ts +0 -18
  52. package/dist/index-C7t_lwpi.d.ts +0 -13
  53. package/dist/next.d.ts +0 -13
  54. package/dist/next.js +0 -271
  55. package/dist/providers/next.d.ts +0 -25
  56. package/dist/providers/next.js +0 -216
  57. package/dist/providers/tanstack.d.ts +0 -24
  58. package/dist/providers/tanstack.js +0 -120
  59. package/dist/tanstack.d.ts +0 -12
  60. package/dist/tanstack.js +0 -203
  61. package/dist/themes/ekko-playlist.css +0 -71
  62. package/dist/themes/theme-select.d.ts +0 -12
  63. package/dist/themes/theme-select.js +0 -357
  64. package/dist/themes/theme-toggle.d.ts +0 -15
  65. package/dist/themes/theme-toggle.js +0 -179
  66. package/dist/tokyo-night.css +0 -35
  67. package/dist/types-fUfvw1Mz.d.ts +0 -8
@@ -0,0 +1,4078 @@
1
+ import { t as cn } from "./utils-C_uf36nf.js";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { Slot } from "@radix-ui/react-slot";
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";
6
+ import * as React from "react";
7
+ import { DayPicker, getDefaultClassNames } from "react-day-picker";
8
+ import * as PopoverPrimitive from "@radix-ui/react-popover";
9
+ import { useDebouncedCallback } from "@tanstack/react-pacer";
10
+ import * as LabelPrimitive from "@radix-ui/react-label";
11
+ import * as ProgressPrimitive from "@radix-ui/react-progress";
12
+ import * as TabsPrimitive from "@radix-ui/react-tabs";
13
+ //#region ../core/src/utils/theme-color.ts
14
+ const THEME_COLORS = [
15
+ "amber",
16
+ "blue",
17
+ "cyan",
18
+ "emerald",
19
+ "fuchsia",
20
+ "green",
21
+ "indigo",
22
+ "lime",
23
+ "orange",
24
+ "pink",
25
+ "purple",
26
+ "red",
27
+ "violet"
28
+ ];
29
+ const colorPalette = {
30
+ amber: "#f59e0b",
31
+ blue: "#3b82f6",
32
+ cyan: "#06b6d4",
33
+ emerald: "#10b981",
34
+ fuchsia: "#d946ef",
35
+ green: "#22c55e",
36
+ indigo: "#6366f1",
37
+ lime: "#84cc16",
38
+ orange: "#f97316",
39
+ pink: "#ec4899",
40
+ purple: "#a855f7",
41
+ red: "#ef4444",
42
+ violet: "#8b5cf6"
43
+ };
44
+ const colorPalette400 = {
45
+ amber: "#fbbf24",
46
+ blue: "#60a5fa",
47
+ cyan: "#22d3ee",
48
+ emerald: "#34d399",
49
+ fuchsia: "#e879f9",
50
+ green: "#4ade80",
51
+ indigo: "#818cf8",
52
+ lime: "#a3e635",
53
+ orange: "#fb923c",
54
+ pink: "#f472b6",
55
+ purple: "#c084fc",
56
+ red: "#f87171",
57
+ violet: "#a78bfa"
58
+ };
59
+ function getContrastForeground(hex) {
60
+ const match = hex.match(/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i);
61
+ if (!match) return "#ffffff";
62
+ const [, redHex, greenHex, blueHex] = match;
63
+ if (!redHex || !greenHex || !blueHex) return "#ffffff";
64
+ const red = parseInt(redHex, 16) / 255;
65
+ const green = parseInt(greenHex, 16) / 255;
66
+ const blue = parseInt(blueHex, 16) / 255;
67
+ const toLinear = (channel) => channel <= .03928 ? channel / 12.92 : ((channel + .055) / 1.055) ** 2.4;
68
+ return .2126 * toLinear(red) + .7152 * toLinear(green) + .0722 * toLinear(blue) > .5 ? "#000000" : "#ffffff";
69
+ }
70
+ const THEME_COLOR_SET = new Set(THEME_COLORS);
71
+ function resolveColorHex(color, fallback) {
72
+ if (!color) return fallback;
73
+ if (color.startsWith("#")) return color;
74
+ if (THEME_COLOR_SET.has(color)) return colorPalette[color];
75
+ return fallback;
76
+ }
77
+ function coerceThemeColor(color) {
78
+ if (!color || color === "white") return "white";
79
+ if (THEME_COLOR_SET.has(color)) return color;
80
+ return "white";
81
+ }
82
+ [
83
+ "blue",
84
+ "emerald",
85
+ "amber",
86
+ "red",
87
+ "violet",
88
+ "pink",
89
+ "cyan",
90
+ "orange"
91
+ ].map((color) => colorPalette400[color]);
92
+ //#endregion
93
+ //#region src/components/blocks/color-picker/index.tsx
94
+ function ColorPicker({ value, onValueChange, className }) {
95
+ const colors = THEME_COLORS;
96
+ return /* @__PURE__ */ jsx("div", {
97
+ className: cn("grid grid-cols-4 gap-3", className),
98
+ children: colors.map((color) => /* @__PURE__ */ jsx("button", {
99
+ "aria-label": `Select ${color} color`,
100
+ className: cn("h-10 w-10 rounded-full border-2 transition-all hover:scale-110", value === color ? "border-foreground ring-2 ring-ring ring-offset-2" : "border-border hover:border-foreground/50"),
101
+ onClick: () => onValueChange(color),
102
+ style: { backgroundColor: colorPalette[color] },
103
+ type: "button"
104
+ }, color))
105
+ });
106
+ }
107
+ //#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
+ //#region src/components/ui/button/index.tsx
115
+ 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
+ variants: {
117
+ variant: {
118
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
119
+ destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",
120
+ outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
121
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
122
+ ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
123
+ link: "text-primary underline-offset-4 hover:underline"
124
+ },
125
+ size: {
126
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
127
+ xs: "h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",
128
+ sm: "h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",
129
+ lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
130
+ icon: "size-9",
131
+ "icon-xs": "size-6 rounded-md [&_svg:not([class*='size-'])]:size-3",
132
+ "icon-sm": "size-8",
133
+ "icon-lg": "size-10"
134
+ }
135
+ },
136
+ defaultVariants: {
137
+ variant: "default",
138
+ size: "default"
139
+ }
140
+ });
141
+ function Button({ className, variant = "default", size = "default", asChild = false, ...props }) {
142
+ return /* @__PURE__ */ jsx(asChild ? Slot : "button", {
143
+ className: cn(buttonVariants({
144
+ variant,
145
+ size,
146
+ className
147
+ })),
148
+ "data-size": size,
149
+ "data-slot": "button",
150
+ "data-variant": variant,
151
+ ...props
152
+ });
153
+ }
154
+ //#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
227
+ },
228
+ showOutsideDays,
229
+ ...props
230
+ });
231
+ }
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]);
238
+ 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",
248
+ ...props
249
+ });
250
+ }
251
+ //#endregion
252
+ //#region src/components/ui/field/index.tsx
253
+ const BasicField = React.forwardRef(({ className, orientation = "vertical", "data-invalid": dataInvalid, ...props }, ref) => /* @__PURE__ */ jsx("div", {
254
+ 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),
255
+ "data-invalid": dataInvalid,
256
+ "data-slot": "field",
257
+ ref,
258
+ role: "group",
259
+ ...props
260
+ }));
261
+ BasicField.displayName = "BasicField";
262
+ const FieldGroup = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", {
263
+ className: cn("flex flex-col gap-6", className),
264
+ "data-slot": "field-group",
265
+ ref,
266
+ ...props
267
+ }));
268
+ FieldGroup.displayName = "FieldGroup";
269
+ const FieldSet = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("fieldset", {
270
+ className: cn("space-y-6", className),
271
+ "data-slot": "field-set",
272
+ ref,
273
+ ...props
274
+ }));
275
+ FieldSet.displayName = "FieldSet";
276
+ const FieldLegend = React.forwardRef(({ className, variant = "legend", ...props }, ref) => /* @__PURE__ */ jsx("legend", {
277
+ className: cn(variant === "legend" && "text-base font-medium", variant === "label" && "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", className),
278
+ "data-slot": "field-legend",
279
+ ref,
280
+ ...props
281
+ }));
282
+ FieldLegend.displayName = "FieldLegend";
283
+ const FieldLabel = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("label", {
284
+ className: cn("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", className),
285
+ "data-slot": "field-label",
286
+ ref,
287
+ ...props
288
+ }));
289
+ FieldLabel.displayName = "FieldLabel";
290
+ const FieldDescription = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("p", {
291
+ className: cn("text-sm text-muted-foreground", className),
292
+ "data-slot": "field-description",
293
+ ref,
294
+ ...props
295
+ }));
296
+ FieldDescription.displayName = "FieldDescription";
297
+ const FieldError = React.forwardRef(({ className, errors, children, ...props }, ref) => {
298
+ const messages = errors?.map((e) => e?.message).filter(Boolean);
299
+ const content = messages?.length ? messages : children;
300
+ if (!content) return null;
301
+ return /* @__PURE__ */ jsx("p", {
302
+ className: cn("text-sm font-medium text-destructive", className),
303
+ "data-slot": "field-error",
304
+ ref,
305
+ role: "alert",
306
+ ...props,
307
+ children: Array.isArray(content) ? /* @__PURE__ */ jsx("ul", {
308
+ className: "list-disc pl-4 space-y-1",
309
+ children: content.map((m, i) => /* @__PURE__ */ jsx("li", { children: m }, i))
310
+ }) : content
311
+ });
312
+ });
313
+ FieldError.displayName = "FieldError";
314
+ const FieldSeparator = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs("div", {
315
+ className: cn("relative my-4", className),
316
+ "data-slot": "field-separator",
317
+ ref,
318
+ ...props,
319
+ children: [/* @__PURE__ */ jsx("div", {
320
+ className: "absolute inset-0 flex items-center",
321
+ children: /* @__PURE__ */ jsx("span", { className: "w-full border-t" })
322
+ }), props.children && /* @__PURE__ */ jsx("div", {
323
+ className: "relative flex justify-center text-xs uppercase",
324
+ children: /* @__PURE__ */ jsx("span", {
325
+ className: "bg-background px-2 text-muted-foreground",
326
+ children: props.children
327
+ })
328
+ })]
329
+ }));
330
+ FieldSeparator.displayName = "FieldSeparator";
331
+ const FieldContent = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", {
332
+ className: cn("flex flex-col gap-6", className),
333
+ "data-slot": "field-content",
334
+ ref,
335
+ ...props
336
+ }));
337
+ FieldContent.displayName = "FieldContent";
338
+ const FieldTitle = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", {
339
+ className: cn("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", className),
340
+ "data-slot": "field-title",
341
+ ref,
342
+ ...props
343
+ }));
344
+ FieldTitle.displayName = "FieldTitle";
345
+ //#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",
361
+ ...props
362
+ });
363
+ }
364
+ //#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();
391
+ },
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" }
404
+ });
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
412
+ });
413
+ }
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
418
+ });
419
+ }
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",
424
+ ...props
425
+ });
426
+ }
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",
431
+ ...props
432
+ });
433
+ }
434
+ //#endregion
435
+ //#region src/components/ui/popover/index.tsx
436
+ function Popover({ ...props }) {
437
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Root, {
438
+ "data-slot": "popover",
439
+ ...props
440
+ });
441
+ }
442
+ function PopoverTrigger({ ...props }) {
443
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Trigger, {
444
+ "data-slot": "popover-trigger",
445
+ ...props
446
+ });
447
+ }
448
+ function PopoverContent({ className, align = "center", sideOffset = 4, ...props }) {
449
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(PopoverPrimitive.Content, {
450
+ align,
451
+ className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden", className),
452
+ "data-slot": "popover-content",
453
+ sideOffset,
454
+ ...props
455
+ }) });
456
+ }
457
+ function PopoverAnchor({ ...props }) {
458
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Anchor, {
459
+ "data-slot": "popover-anchor",
460
+ ...props
461
+ });
462
+ }
463
+ //#endregion
464
+ //#region src/components/blocks/field/index.tsx
465
+ /** Parse YYYY-MM-DD into a local-timezone Date. Returns undefined for empty/malformed input. */
466
+ function parseDateInput(value) {
467
+ if (!value) return void 0;
468
+ const parts = value.split("-");
469
+ if (parts.length !== 3) return void 0;
470
+ const [y, m, d] = parts.map(Number);
471
+ if (!Number.isFinite(y) || !Number.isFinite(m) || !Number.isFinite(d)) return;
472
+ const date = new Date(y, m - 1, d);
473
+ return Number.isNaN(date.getTime()) ? void 0 : date;
474
+ }
475
+ /** Format a Date as YYYY-MM-DD using local components (no UTC shift). */
476
+ function formatDateInput(date) {
477
+ return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, "0")}-${String(date.getDate()).padStart(2, "0")}`;
478
+ }
479
+ /** Human display: "Apr 4, 2026". */
480
+ const DATE_LABEL_FORMATTER = new Intl.DateTimeFormat(void 0, {
481
+ month: "short",
482
+ day: "numeric",
483
+ year: "numeric"
484
+ });
485
+ function formatCurrencyValue(value) {
486
+ const trimmed = value.trim();
487
+ if (!trimmed) return "";
488
+ const n = Number(trimmed);
489
+ if (!Number.isFinite(n)) return trimmed;
490
+ return n.toFixed(2);
491
+ }
492
+ function Field({ form, name, label, description, schema, type = "text", placeholder, autoComplete, disabled, debounceMs, inputId: inputIdProp, className }) {
493
+ const inputId = inputIdProp ?? `field-${name}`;
494
+ const errorId = `${inputId}-error`;
495
+ const descId = description ? `${inputId}-desc` : void 0;
496
+ const rawValidator = React.useMemo(() => schema ? validate(schema) : void 0, [schema]);
497
+ const debouncedValidator = useDebouncedCallback(rawValidator ?? (() => void 0), { wait: debounceMs ?? 0 });
498
+ const onChangeValidator = debounceMs && rawValidator ? debouncedValidator : rawValidator;
499
+ const validators = rawValidator ? {
500
+ onBlur: rawValidator,
501
+ onChange: (args) => {
502
+ if (!args.fieldApi.state.meta.isBlurred) return;
503
+ args.fieldApi.setErrorMap({ onBlur: void 0 });
504
+ return onChangeValidator?.(args);
505
+ }
506
+ } : void 0;
507
+ return /* @__PURE__ */ jsx(form.Field, {
508
+ name,
509
+ validators,
510
+ children: (field) => {
511
+ const hasError = field.state.meta.isBlurred && field.state.meta.errors.length > 0;
512
+ const errorMessage = hasError ? field.state.meta.errors[0] : void 0;
513
+ const describedBy = [descId, hasError ? errorId : void 0].filter(Boolean).join(" ") || void 0;
514
+ const commonInputProps = {
515
+ id: inputId,
516
+ value: field.state.value ?? "",
517
+ placeholder,
518
+ autoComplete,
519
+ disabled,
520
+ onChange: (e) => field.handleChange(e.target.value),
521
+ onBlur: () => field.handleBlur(),
522
+ "aria-invalid": hasError,
523
+ "aria-describedby": describedBy
524
+ };
525
+ const renderControl = () => {
526
+ if (type === "textarea") return /* @__PURE__ */ jsx(Textarea, { ...commonInputProps });
527
+ if (type === "currency") {
528
+ const { onBlur: baseOnBlur, value, ...rest } = commonInputProps;
529
+ return /* @__PURE__ */ jsxs(InputGroup, { children: [/* @__PURE__ */ jsx(InputGroupAddon, { children: "$" }), /* @__PURE__ */ jsx(InputGroupInput, {
530
+ ...rest,
531
+ inputMode: "decimal",
532
+ onBlur: () => {
533
+ const formatted = formatCurrencyValue(field.state.value ?? "");
534
+ if (formatted !== field.state.value) field.handleChange(formatted);
535
+ baseOnBlur();
536
+ },
537
+ type: "text",
538
+ value
539
+ })] });
540
+ }
541
+ if (type === "date") {
542
+ const selected = parseDateInput(field.state.value ?? "");
543
+ const buttonLabel = selected ? DATE_LABEL_FORMATTER.format(selected) : placeholder ?? "Pick a date";
544
+ return /* @__PURE__ */ jsxs(Popover, {
545
+ onOpenChange: (open) => {
546
+ if (!open) field.handleBlur();
547
+ },
548
+ children: [/* @__PURE__ */ jsx(PopoverTrigger, {
549
+ asChild: true,
550
+ children: /* @__PURE__ */ jsxs(Button, {
551
+ "aria-describedby": describedBy,
552
+ "aria-invalid": hasError,
553
+ className: cn("w-full justify-start gap-2 font-normal", !selected && "text-muted-foreground"),
554
+ disabled,
555
+ id: inputId,
556
+ type: "button",
557
+ variant: "outline",
558
+ children: [/* @__PURE__ */ jsx(CalendarIcon, { className: "size-4" }), buttonLabel]
559
+ })
560
+ }), /* @__PURE__ */ jsx(PopoverContent, {
561
+ align: "start",
562
+ className: "w-auto p-0",
563
+ children: /* @__PURE__ */ jsx(Calendar$1, {
564
+ initialFocus: true,
565
+ mode: "single",
566
+ onSelect: (date) => {
567
+ field.handleChange(date ? formatDateInput(date) : "");
568
+ },
569
+ selected
570
+ })
571
+ })]
572
+ });
573
+ }
574
+ return /* @__PURE__ */ jsx(Input, {
575
+ type,
576
+ ...commonInputProps
577
+ });
578
+ };
579
+ return /* @__PURE__ */ jsxs(BasicField, {
580
+ className,
581
+ "data-invalid": hasError,
582
+ children: [
583
+ label && /* @__PURE__ */ jsx(FieldLabel, {
584
+ htmlFor: inputId,
585
+ children: label
586
+ }),
587
+ renderControl(),
588
+ description && /* @__PURE__ */ jsx(FieldDescription, {
589
+ id: descId,
590
+ children: description
591
+ }),
592
+ hasError && /* @__PURE__ */ jsx("div", {
593
+ className: "text-destructive text-sm font-normal",
594
+ id: errorId,
595
+ children: errorMessage
596
+ })
597
+ ]
598
+ });
599
+ }
600
+ });
601
+ }
602
+ //#endregion
603
+ //#region src/components/ui/label/index.tsx
604
+ function Label({ className, ...props }) {
605
+ return /* @__PURE__ */ jsx(LabelPrimitive.Root, {
606
+ className: cn("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50", className),
607
+ "data-slot": "label",
608
+ ...props
609
+ });
610
+ }
611
+ //#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
+ //#region src/components/ui/tabs/index.tsx
628
+ function Tabs({ className, ...props }) {
629
+ return /* @__PURE__ */ jsx(TabsPrimitive.Root, {
630
+ className: cn("flex flex-col gap-2", className),
631
+ "data-slot": "tabs",
632
+ ...props
633
+ });
634
+ }
635
+ function TabsList({ className, ...props }) {
636
+ return /* @__PURE__ */ jsx(TabsPrimitive.List, {
637
+ className: cn("bg-muted-foreground/10 text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]", className),
638
+ "data-slot": "tabs-list",
639
+ ...props
640
+ });
641
+ }
642
+ function TabsTrigger({ className, ...props }) {
643
+ return /* @__PURE__ */ jsx(TabsPrimitive.Trigger, {
644
+ className: cn("cursor-pointer data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-border/70 dark:data-[state=active]:bg-input/50 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
645
+ "data-slot": "tabs-trigger",
646
+ ...props
647
+ });
648
+ }
649
+ function TabsContent({ className, ...props }) {
650
+ return /* @__PURE__ */ jsx(TabsPrimitive.Content, {
651
+ className: cn("flex-1 outline-none", className),
652
+ "data-slot": "tabs-content",
653
+ ...props
654
+ });
655
+ }
656
+ //#endregion
657
+ //#region ../core/src/icons/picker-icons.ts
658
+ const CATEGORIES = {
659
+ ListMusic: ["multimedia"],
660
+ Activity: [
661
+ "medical",
662
+ "account",
663
+ "social",
664
+ "science",
665
+ "multimedia"
666
+ ],
667
+ Airplay: ["multimedia", "connectivity"],
668
+ AlarmClock: [
669
+ "devices",
670
+ "notifications",
671
+ "time"
672
+ ],
673
+ AlarmClockCheck: [
674
+ "devices",
675
+ "notifications",
676
+ "time"
677
+ ],
678
+ AlarmClockMinus: [
679
+ "devices",
680
+ "notifications",
681
+ "time"
682
+ ],
683
+ AlarmClockOff: [
684
+ "devices",
685
+ "notifications",
686
+ "time"
687
+ ],
688
+ AlarmClockPlus: [
689
+ "devices",
690
+ "notifications",
691
+ "time"
692
+ ],
693
+ AlarmSmoke: [
694
+ "home",
695
+ "devices",
696
+ "travel"
697
+ ],
698
+ Album: ["photography", "multimedia"],
699
+ AlertCircle: ["notifications"],
700
+ Amphora: ["food-beverage", "gaming"],
701
+ Anchor: ["transportation", "text"],
702
+ Anvil: [
703
+ "buildings",
704
+ "tools",
705
+ "gaming"
706
+ ],
707
+ Aperture: ["photography"],
708
+ AppWindow: [
709
+ "layout",
710
+ "design",
711
+ "development",
712
+ "files"
713
+ ],
714
+ AppWindowMac: [
715
+ "layout",
716
+ "design",
717
+ "development",
718
+ "files"
719
+ ],
720
+ Apple: ["food-beverage"],
721
+ Archive: ["files", "mail"],
722
+ ArchiveRestore: ["files", "mail"],
723
+ ArchiveX: ["files", "mail"],
724
+ ArrowBigDown: ["arrows", "gaming"],
725
+ ArrowBigDownDash: [
726
+ "arrows",
727
+ "gaming",
728
+ "files"
729
+ ],
730
+ ArrowBigLeft: ["arrows", "gaming"],
731
+ ArrowBigLeftDash: ["arrows", "gaming"],
732
+ ArrowBigRight: ["arrows", "gaming"],
733
+ ArrowBigRightDash: ["arrows", "gaming"],
734
+ ArrowBigUp: [
735
+ "arrows",
736
+ "text",
737
+ "development",
738
+ "gaming"
739
+ ],
740
+ ArrowBigUpDash: [
741
+ "arrows",
742
+ "text",
743
+ "development",
744
+ "gaming"
745
+ ],
746
+ ArrowDownFromLine: ["arrows", "files"],
747
+ ArrowDownToLine: [
748
+ "arrows",
749
+ "files",
750
+ "development"
751
+ ],
752
+ ArrowLeft: ["arrows"],
753
+ ArrowRight: ["arrows"],
754
+ ArrowUpFromLine: [
755
+ "arrows",
756
+ "files",
757
+ "development"
758
+ ],
759
+ ArrowUpToLine: ["arrows", "files"],
760
+ AtSign: ["text", "account"],
761
+ Atom: ["science"],
762
+ Award: [
763
+ "account",
764
+ "sports",
765
+ "gaming"
766
+ ],
767
+ Axe: ["tools", "gaming"],
768
+ Baby: ["accessibility", "people"],
769
+ Backpack: [
770
+ "gaming",
771
+ "photography",
772
+ "travel"
773
+ ],
774
+ Badge: [
775
+ "account",
776
+ "social",
777
+ "shapes"
778
+ ],
779
+ BadgeAlert: ["account", "social"],
780
+ BadgeCent: ["shopping", "finance"],
781
+ BadgeCheck: ["social"],
782
+ BadgeDollarSign: ["shopping", "finance"],
783
+ BadgeEuro: ["shopping", "finance"],
784
+ BadgeIndianRupee: ["shopping", "finance"],
785
+ BadgeInfo: [
786
+ "account",
787
+ "accessibility",
788
+ "social"
789
+ ],
790
+ BadgeJapaneseYen: ["shopping", "finance"],
791
+ BadgeMinus: ["social"],
792
+ BadgePercent: [
793
+ "social",
794
+ "finance",
795
+ "shopping",
796
+ "math"
797
+ ],
798
+ BadgePlus: ["social"],
799
+ BadgePoundSterling: ["shopping", "finance"],
800
+ BadgeQuestionMark: [
801
+ "accessibility",
802
+ "social",
803
+ "shapes"
804
+ ],
805
+ BadgeRussianRuble: ["shopping", "finance"],
806
+ BadgeSwissFranc: ["shopping", "finance"],
807
+ BadgeTurkishLira: ["shopping", "finance"],
808
+ BadgeX: ["social"],
809
+ BaggageClaim: ["transportation", "travel"],
810
+ Banana: ["food-beverage"],
811
+ Banknote: ["finance"],
812
+ BanknoteArrowDown: ["finance"],
813
+ BanknoteArrowUp: ["finance"],
814
+ BanknoteX: ["finance"],
815
+ BarChartHorizontalBig: ["charts"],
816
+ Barcode: ["shopping"],
817
+ Barrel: ["food-beverage", "navigation"],
818
+ Bath: ["travel"],
819
+ Beaker: ["science", "gaming"],
820
+ Bean: ["food-beverage"],
821
+ BeanOff: ["food-beverage"],
822
+ Beef: ["food-beverage"],
823
+ Beer: ["food-beverage"],
824
+ BeerOff: ["food-beverage"],
825
+ Bell: ["account", "notifications"],
826
+ BellDot: ["account", "notifications"],
827
+ BetweenHorizontalEnd: [
828
+ "layout",
829
+ "design",
830
+ "tools"
831
+ ],
832
+ BetweenHorizontalStart: [
833
+ "layout",
834
+ "design",
835
+ "tools"
836
+ ],
837
+ BetweenVerticalEnd: [
838
+ "layout",
839
+ "design",
840
+ "tools"
841
+ ],
842
+ BetweenVerticalStart: [
843
+ "layout",
844
+ "design",
845
+ "tools"
846
+ ],
847
+ Bike: ["transportation"],
848
+ Binoculars: [
849
+ "navigation",
850
+ "nature",
851
+ "photography",
852
+ "science",
853
+ "travel",
854
+ "development"
855
+ ],
856
+ Biohazard: ["science"],
857
+ Bird: ["animals"],
858
+ Birdhouse: [
859
+ "nature",
860
+ "animals",
861
+ "navigation",
862
+ "home"
863
+ ],
864
+ Bitcoin: ["development", "finance"],
865
+ Blend: [
866
+ "design",
867
+ "photography",
868
+ "tools",
869
+ "development"
870
+ ],
871
+ BluetoothConnected: ["connectivity", "devices"],
872
+ Bolt: ["tools", "home"],
873
+ Bomb: ["security", "tools"],
874
+ Bone: [
875
+ "animals",
876
+ "medical",
877
+ "gaming"
878
+ ],
879
+ Book: [
880
+ "text",
881
+ "development",
882
+ "gaming"
883
+ ],
884
+ BookA: ["text", "gaming"],
885
+ BookAlert: [
886
+ "text",
887
+ "development",
888
+ "gaming"
889
+ ],
890
+ BookCheck: [
891
+ "text",
892
+ "development",
893
+ "gaming"
894
+ ],
895
+ BookCopy: [
896
+ "development",
897
+ "text",
898
+ "gaming"
899
+ ],
900
+ BookHeart: [
901
+ "social",
902
+ "text",
903
+ "gaming"
904
+ ],
905
+ BookImage: [
906
+ "photography",
907
+ "text",
908
+ "multimedia",
909
+ "files",
910
+ "social",
911
+ "shopping",
912
+ "travel"
913
+ ],
914
+ BookKey: [
915
+ "development",
916
+ "security",
917
+ "gaming"
918
+ ],
919
+ BookLock: [
920
+ "development",
921
+ "security",
922
+ "gaming"
923
+ ],
924
+ BookMarked: [
925
+ "text",
926
+ "development",
927
+ "gaming"
928
+ ],
929
+ BookMinus: [
930
+ "development",
931
+ "text",
932
+ "gaming"
933
+ ],
934
+ BookOpen: [
935
+ "text",
936
+ "development",
937
+ "gaming"
938
+ ],
939
+ BookOpenCheck: [
940
+ "text",
941
+ "development",
942
+ "gaming"
943
+ ],
944
+ BookPlus: [
945
+ "development",
946
+ "text",
947
+ "gaming"
948
+ ],
949
+ BookSearch: [
950
+ "text",
951
+ "development",
952
+ "gaming"
953
+ ],
954
+ BookText: ["text", "gaming"],
955
+ BookType: [
956
+ "text",
957
+ "design",
958
+ "gaming"
959
+ ],
960
+ BookUser: [
961
+ "account",
962
+ "connectivity",
963
+ "communication",
964
+ "social"
965
+ ],
966
+ BookX: ["text", "gaming"],
967
+ Bookmark: ["account"],
968
+ BookmarkCheck: ["account"],
969
+ BoomBox: [
970
+ "devices",
971
+ "multimedia",
972
+ "social"
973
+ ],
974
+ Bot: ["development", "social"],
975
+ BotMessageSquare: ["development", "social"],
976
+ BotOff: ["development", "social"],
977
+ BottleWine: ["food-beverage"],
978
+ BowArrow: ["gaming", "tools"],
979
+ Box: [
980
+ "shapes",
981
+ "gaming",
982
+ "development",
983
+ "math"
984
+ ],
985
+ Boxes: [
986
+ "shapes",
987
+ "gaming",
988
+ "development"
989
+ ],
990
+ Braces: ["development", "files"],
991
+ Brackets: ["development", "files"],
992
+ Brain: ["medical", "science"],
993
+ BrainCircuit: ["science", "development"],
994
+ BrainCog: ["science", "development"],
995
+ BriefcaseBusiness: ["transportation"],
996
+ BriefcaseConveyorBelt: ["travel", "transportation"],
997
+ Brush: [
998
+ "text",
999
+ "design",
1000
+ "tools"
1001
+ ],
1002
+ BrushCleaning: [
1003
+ "home",
1004
+ "tools",
1005
+ "design"
1006
+ ],
1007
+ Bug: ["development", "animals"],
1008
+ BugOff: ["development", "animals"],
1009
+ BugPlay: ["development", "animals"],
1010
+ Building2: ["account", "buildings"],
1011
+ BusFront: ["transportation"],
1012
+ CableCar: ["transportation", "travel"],
1013
+ Cake: [
1014
+ "food-beverage",
1015
+ "social",
1016
+ "account"
1017
+ ],
1018
+ CakeSlice: ["food-beverage", "social"],
1019
+ Calculator: ["math", "devices"],
1020
+ Calendar: ["time"],
1021
+ Calendar1: ["time"],
1022
+ CalendarArrowDown: ["time"],
1023
+ CalendarArrowUp: ["time"],
1024
+ CalendarCheck: ["time"],
1025
+ CalendarCheck2: ["time"],
1026
+ CalendarClock: ["time"],
1027
+ CalendarCog: ["time"],
1028
+ CalendarDays: ["time"],
1029
+ CalendarFold: ["time", "files"],
1030
+ CalendarHeart: ["time"],
1031
+ CalendarMinus: ["time"],
1032
+ CalendarMinus2: ["time"],
1033
+ CalendarOff: ["time"],
1034
+ CalendarPlus: ["time"],
1035
+ CalendarPlus2: ["time"],
1036
+ CalendarRange: ["time"],
1037
+ CalendarSearch: ["time"],
1038
+ CalendarSync: ["arrows", "time"],
1039
+ CalendarX: ["time"],
1040
+ CalendarX2: ["time"],
1041
+ Calendars: ["time"],
1042
+ Camera: [
1043
+ "photography",
1044
+ "devices",
1045
+ "communication"
1046
+ ],
1047
+ CameraOff: [
1048
+ "photography",
1049
+ "devices",
1050
+ "communication"
1051
+ ],
1052
+ Candy: ["food-beverage"],
1053
+ CandyCane: ["food-beverage"],
1054
+ CandyOff: ["food-beverage"],
1055
+ CarFront: ["transportation"],
1056
+ Caravan: [
1057
+ "transportation",
1058
+ "travel",
1059
+ "nature"
1060
+ ],
1061
+ Carrot: ["food-beverage"],
1062
+ CassetteTape: [
1063
+ "connectivity",
1064
+ "devices",
1065
+ "multimedia",
1066
+ "communication",
1067
+ "files"
1068
+ ],
1069
+ Castle: [
1070
+ "buildings",
1071
+ "gaming",
1072
+ "navigation"
1073
+ ],
1074
+ Cat: ["animals"],
1075
+ Cctv: [
1076
+ "security",
1077
+ "devices",
1078
+ "communication",
1079
+ "connectivity",
1080
+ "photography"
1081
+ ],
1082
+ ChartArea: ["charts"],
1083
+ ChartCandlestick: ["charts", "finance"],
1084
+ ChartNoAxesGantt: [
1085
+ "charts",
1086
+ "time",
1087
+ "development",
1088
+ "design"
1089
+ ],
1090
+ ChartPie: ["charts", "files"],
1091
+ Check: ["notifications"],
1092
+ CheckCheck: ["notifications"],
1093
+ ChefHat: ["food-beverage"],
1094
+ Cherry: ["food-beverage"],
1095
+ ChessBishop: ["gaming", "emoji"],
1096
+ ChessKing: ["gaming", "emoji"],
1097
+ ChessKnight: ["gaming", "emoji"],
1098
+ ChessPawn: ["gaming", "emoji"],
1099
+ ChessQueen: ["gaming", "emoji"],
1100
+ ChessRook: ["gaming", "emoji"],
1101
+ ChevronDown: ["arrows", "gaming"],
1102
+ ChevronRight: [
1103
+ "arrows",
1104
+ "math",
1105
+ "development"
1106
+ ],
1107
+ ChevronUp: [
1108
+ "arrows",
1109
+ "math",
1110
+ "gaming"
1111
+ ],
1112
+ ChevronsDown: ["arrows", "gaming"],
1113
+ ChevronsLeft: ["arrows", "gaming"],
1114
+ ChevronsLeftRightEllipsis: [
1115
+ "communication",
1116
+ "devices",
1117
+ "multimedia",
1118
+ "gaming"
1119
+ ],
1120
+ ChevronsRight: ["arrows", "gaming"],
1121
+ ChevronsUp: ["arrows", "gaming"],
1122
+ Cigarette: [
1123
+ "travel",
1124
+ "transportation",
1125
+ "medical"
1126
+ ],
1127
+ CigaretteOff: [
1128
+ "travel",
1129
+ "transportation",
1130
+ "medical"
1131
+ ],
1132
+ Circle: ["shapes"],
1133
+ CircleAlert: ["notifications"],
1134
+ CircleArrowDown: ["arrows", "gaming"],
1135
+ CircleArrowLeft: ["arrows", "gaming"],
1136
+ CircleArrowOutDownLeft: ["arrows"],
1137
+ CircleArrowOutDownRight: ["arrows"],
1138
+ CircleArrowOutUpLeft: ["arrows", "development"],
1139
+ CircleArrowOutUpRight: ["arrows"],
1140
+ CircleArrowRight: ["arrows", "gaming"],
1141
+ CircleArrowUp: ["arrows", "gaming"],
1142
+ CircleCheck: ["notifications"],
1143
+ CircleCheckBig: ["notifications"],
1144
+ CircleChevronDown: ["arrows"],
1145
+ CircleChevronLeft: ["arrows"],
1146
+ CircleChevronRight: ["arrows"],
1147
+ CircleChevronUp: ["arrows"],
1148
+ CircleDashed: ["development", "shapes"],
1149
+ CircleDivide: ["math"],
1150
+ CircleDollarSign: ["finance"],
1151
+ CircleDot: ["development", "shapes"],
1152
+ CircleDotDashed: ["development", "shapes"],
1153
+ CircleEllipsis: ["layout", "development"],
1154
+ CircleEqual: ["math"],
1155
+ CircleFadingArrowUp: ["arrows", "development"],
1156
+ CircleFadingPlus: ["communication", "social"],
1157
+ CircleGauge: [
1158
+ "transportation",
1159
+ "sports",
1160
+ "science"
1161
+ ],
1162
+ CircleHelp: [
1163
+ "accessibility",
1164
+ "text",
1165
+ "notifications"
1166
+ ],
1167
+ CircleMinus: ["math"],
1168
+ CircleOff: ["shapes"],
1169
+ CircleParking: ["transportation", "navigation"],
1170
+ CircleParkingOff: ["transportation", "navigation"],
1171
+ CirclePause: ["multimedia"],
1172
+ CirclePercent: [
1173
+ "social",
1174
+ "finance",
1175
+ "shopping",
1176
+ "math"
1177
+ ],
1178
+ CirclePile: ["shapes"],
1179
+ CirclePlay: ["multimedia"],
1180
+ CirclePlus: [
1181
+ "math",
1182
+ "development",
1183
+ "cursors",
1184
+ "gaming"
1185
+ ],
1186
+ CirclePoundSterling: ["finance"],
1187
+ CirclePower: ["connectivity"],
1188
+ CircleQuestionMark: [
1189
+ "accessibility",
1190
+ "text",
1191
+ "notifications"
1192
+ ],
1193
+ CircleSlash: ["development", "math"],
1194
+ CircleSlash2: [
1195
+ "shapes",
1196
+ "math",
1197
+ "development"
1198
+ ],
1199
+ CircleSlashed: [
1200
+ "shapes",
1201
+ "math",
1202
+ "development"
1203
+ ],
1204
+ CircleSmall: ["shapes", "medical"],
1205
+ CircleStar: ["sports", "gaming"],
1206
+ CircleStop: ["multimedia"],
1207
+ CircleUser: ["account"],
1208
+ CircleUserRound: ["account"],
1209
+ CircleX: ["math", "development"],
1210
+ CircuitBoard: ["science", "development"],
1211
+ Citrus: ["food-beverage"],
1212
+ Clapperboard: ["multimedia"],
1213
+ ClipboardCheck: ["text"],
1214
+ ClipboardClock: ["time", "text"],
1215
+ Clock: ["time"],
1216
+ Clock1: ["time"],
1217
+ Clock10: ["time"],
1218
+ Clock11: ["time"],
1219
+ Clock12: ["time"],
1220
+ Clock2: ["time"],
1221
+ Clock3: ["time"],
1222
+ Clock4: ["time"],
1223
+ Clock5: ["time"],
1224
+ Clock6: ["time"],
1225
+ Clock7: ["time"],
1226
+ Clock8: ["time"],
1227
+ Clock9: ["time"],
1228
+ ClockAlert: ["time"],
1229
+ ClockArrowDown: ["time"],
1230
+ ClockArrowUp: ["time"],
1231
+ ClockCheck: ["time"],
1232
+ ClockFading: ["time"],
1233
+ ClockPlus: ["time"],
1234
+ Cloud: ["weather"],
1235
+ CloudAlert: ["development"],
1236
+ CloudBackup: ["arrows", "files"],
1237
+ CloudDownload: ["arrows", "files"],
1238
+ CloudSync: ["arrows", "files"],
1239
+ CloudUpload: ["arrows", "files"],
1240
+ Cloudy: ["weather"],
1241
+ Clover: ["gaming"],
1242
+ Club: ["shapes", "gaming"],
1243
+ Code: ["development", "files"],
1244
+ CodeXml: ["development", "files"],
1245
+ Coffee: ["food-beverage"],
1246
+ Cog: ["account"],
1247
+ Coins: ["gaming"],
1248
+ Combine: ["development", "files"],
1249
+ Compass: ["navigation", "travel"],
1250
+ Computer: [
1251
+ "devices",
1252
+ "development",
1253
+ "gaming"
1254
+ ],
1255
+ ConciergeBell: ["travel"],
1256
+ Contact: [
1257
+ "account",
1258
+ "connectivity",
1259
+ "communication",
1260
+ "social"
1261
+ ],
1262
+ ContactRound: [
1263
+ "account",
1264
+ "connectivity",
1265
+ "communication",
1266
+ "social"
1267
+ ],
1268
+ Contrast: [
1269
+ "photography",
1270
+ "accessibility",
1271
+ "design"
1272
+ ],
1273
+ Cookie: ["account", "food-beverage"],
1274
+ CookingPot: ["food-beverage", "home"],
1275
+ CopyCheck: ["text", "notifications"],
1276
+ Cpu: ["devices"],
1277
+ CreditCard: ["account", "finance"],
1278
+ Croissant: ["food-beverage"],
1279
+ Crop: ["photography", "design"],
1280
+ Crosshair: ["photography"],
1281
+ Crown: ["gaming"],
1282
+ Cuboid: [
1283
+ "shapes",
1284
+ "math",
1285
+ "food-beverage"
1286
+ ],
1287
+ CupSoda: ["food-beverage"],
1288
+ Currency: ["finance"],
1289
+ Database: ["development", "files"],
1290
+ DatabaseBackup: [
1291
+ "devices",
1292
+ "arrows",
1293
+ "design",
1294
+ "development",
1295
+ "photography"
1296
+ ],
1297
+ Dessert: ["food-beverage"],
1298
+ Diameter: [
1299
+ "shapes",
1300
+ "math",
1301
+ "design",
1302
+ "tools"
1303
+ ],
1304
+ Diamond: ["shapes", "gaming"],
1305
+ DiamondMinus: [
1306
+ "multimedia",
1307
+ "photography",
1308
+ "tools",
1309
+ "devices"
1310
+ ],
1311
+ DiamondPercent: [
1312
+ "social",
1313
+ "finance",
1314
+ "shopping",
1315
+ "math"
1316
+ ],
1317
+ DiamondPlus: [
1318
+ "multimedia",
1319
+ "photography",
1320
+ "tools",
1321
+ "devices"
1322
+ ],
1323
+ Dice1: ["gaming"],
1324
+ Dice2: ["gaming"],
1325
+ Dice3: ["gaming"],
1326
+ Dice4: ["gaming"],
1327
+ Dice5: ["gaming"],
1328
+ Dice6: ["gaming"],
1329
+ Dices: ["gaming"],
1330
+ Diff: ["development", "files"],
1331
+ Disc2: ["devices", "multimedia"],
1332
+ DivideCircle: ["math"],
1333
+ DnaOff: ["medical", "food-beverage"],
1334
+ Dock: [
1335
+ "layout",
1336
+ "design",
1337
+ "development",
1338
+ "files"
1339
+ ],
1340
+ Dog: ["animals"],
1341
+ DollarSign: ["finance"],
1342
+ Donut: ["food-beverage"],
1343
+ DoorClosed: [
1344
+ "home",
1345
+ "travel",
1346
+ "security"
1347
+ ],
1348
+ DoorClosedLocked: [
1349
+ "home",
1350
+ "travel",
1351
+ "security"
1352
+ ],
1353
+ DoorOpen: [
1354
+ "home",
1355
+ "travel",
1356
+ "security"
1357
+ ],
1358
+ Download: ["arrows", "files"],
1359
+ DownloadCloud: ["arrows", "files"],
1360
+ DraftingCompass: [
1361
+ "math",
1362
+ "design",
1363
+ "tools"
1364
+ ],
1365
+ Drill: [
1366
+ "tools",
1367
+ "home",
1368
+ "devices"
1369
+ ],
1370
+ Droplet: ["weather", "gaming"],
1371
+ DropletOff: ["weather", "gaming"],
1372
+ Drum: ["multimedia", "devices"],
1373
+ Drumstick: ["food-beverage"],
1374
+ Eclipse: [
1375
+ "science",
1376
+ "design",
1377
+ "development",
1378
+ "accessibility",
1379
+ "photography"
1380
+ ],
1381
+ Edit: ["text"],
1382
+ Edit3: [
1383
+ "text",
1384
+ "design",
1385
+ "tools"
1386
+ ],
1387
+ Egg: ["food-beverage", "animals"],
1388
+ EggFried: ["food-beverage"],
1389
+ EggOff: ["food-beverage"],
1390
+ EthernetPort: [
1391
+ "communication",
1392
+ "devices",
1393
+ "multimedia",
1394
+ "gaming"
1395
+ ],
1396
+ Euro: ["finance"],
1397
+ ExternalLink: [
1398
+ "arrows",
1399
+ "text",
1400
+ "social"
1401
+ ],
1402
+ Eye: [
1403
+ "accessibility",
1404
+ "photography",
1405
+ "design",
1406
+ "security"
1407
+ ],
1408
+ EyeClosed: [
1409
+ "accessibility",
1410
+ "photography",
1411
+ "design",
1412
+ "security"
1413
+ ],
1414
+ EyeOff: [
1415
+ "accessibility",
1416
+ "photography",
1417
+ "design",
1418
+ "security"
1419
+ ],
1420
+ FastForward: ["multimedia", "arrows"],
1421
+ Feather: ["gaming"],
1422
+ File: ["files"],
1423
+ FileArchive: ["files"],
1424
+ FileAxis3d: ["design", "files"],
1425
+ FileBadge: ["files"],
1426
+ FileBox: ["files"],
1427
+ FileBraces: ["files", "development"],
1428
+ FileBracesCorner: ["files", "development"],
1429
+ FileChartColumn: ["files"],
1430
+ FileChartColumnIncreasing: ["files"],
1431
+ FileChartLine: ["files"],
1432
+ FileChartPie: ["files"],
1433
+ FileCheck: ["files"],
1434
+ FileCheckCorner: ["files"],
1435
+ FileClock: ["files", "time"],
1436
+ FileCode: ["files", "development"],
1437
+ FileCodeCorner: ["files", "development"],
1438
+ FileCog: ["files"],
1439
+ FileDiff: ["files", "development"],
1440
+ FileDigit: ["files", "development"],
1441
+ FileDown: ["files", "arrows"],
1442
+ FileExclamationPoint: ["files", "notifications"],
1443
+ FileHeadphone: ["files"],
1444
+ FileHeart: ["files"],
1445
+ FileImage: ["files"],
1446
+ FileInput: ["files", "arrows"],
1447
+ FileKey: ["files", "security"],
1448
+ FileLock: ["files", "security"],
1449
+ FileMinus: ["files"],
1450
+ FileMinusCorner: ["files"],
1451
+ FileMusic: ["files", "multimedia"],
1452
+ FileOutput: ["files", "arrows"],
1453
+ FilePen: ["files"],
1454
+ FilePenLine: ["files"],
1455
+ FilePlay: ["files"],
1456
+ FilePlus: ["files"],
1457
+ FilePlusCorner: ["files"],
1458
+ FileQuestionMark: ["files"],
1459
+ FileScan: ["files"],
1460
+ FileSearch: ["files"],
1461
+ FileSearchCorner: ["files"],
1462
+ FileSignal: ["files"],
1463
+ FileSliders: ["files", "development"],
1464
+ FileSpreadsheet: ["files"],
1465
+ FileStack: ["files", "development"],
1466
+ FileSymlink: ["files"],
1467
+ FileTerminal: ["files", "development"],
1468
+ FileText: ["files", "text"],
1469
+ FileType: ["files", "text"],
1470
+ FileTypeCorner: ["files", "text"],
1471
+ FileUp: ["files", "arrows"],
1472
+ FileUser: ["account", "files"],
1473
+ FileVideoCamera: ["files"],
1474
+ FileVolume: ["files"],
1475
+ FileX: ["files"],
1476
+ FileXCorner: ["files"],
1477
+ Files: ["files"],
1478
+ Film: ["photography", "multimedia"],
1479
+ Filter: ["layout"],
1480
+ FireExtinguisher: [
1481
+ "home",
1482
+ "tools",
1483
+ "travel"
1484
+ ],
1485
+ Fish: ["food-beverage", "animals"],
1486
+ FishOff: ["food-beverage", "animals"],
1487
+ FishSymbol: ["food-beverage", "animals"],
1488
+ FishingHook: ["sports", "travel"],
1489
+ Flag: ["account", "social"],
1490
+ FlagOff: ["account", "social"],
1491
+ Flame: [
1492
+ "weather",
1493
+ "social",
1494
+ "gaming"
1495
+ ],
1496
+ FlameKindling: [
1497
+ "nature",
1498
+ "social",
1499
+ "gaming"
1500
+ ],
1501
+ Flashlight: ["photography", "devices"],
1502
+ FlashlightOff: ["photography", "devices"],
1503
+ FlaskConical: ["science", "gaming"],
1504
+ FlaskConicalOff: ["science", "gaming"],
1505
+ FlaskRound: ["science", "gaming"],
1506
+ FlipHorizontal2: ["design", "photography"],
1507
+ FlipVertical2: ["design", "photography"],
1508
+ Flower: [
1509
+ "nature",
1510
+ "gaming",
1511
+ "sustainability"
1512
+ ],
1513
+ Focus: ["photography"],
1514
+ Folder: ["files"],
1515
+ FolderArchive: ["files"],
1516
+ FolderCheck: ["files"],
1517
+ FolderClock: ["files", "time"],
1518
+ FolderClosed: ["files"],
1519
+ FolderCode: ["files", "development"],
1520
+ FolderCog: ["files"],
1521
+ FolderDot: ["files", "development"],
1522
+ FolderDown: ["files", "arrows"],
1523
+ FolderGit: ["files"],
1524
+ FolderGit2: ["files"],
1525
+ FolderHeart: ["files"],
1526
+ FolderInput: ["files", "arrows"],
1527
+ FolderKanban: [
1528
+ "charts",
1529
+ "development",
1530
+ "design",
1531
+ "files"
1532
+ ],
1533
+ FolderKey: ["files", "security"],
1534
+ FolderLock: ["files", "security"],
1535
+ FolderMinus: ["files"],
1536
+ FolderOpen: ["files"],
1537
+ FolderOpenDot: ["files", "development"],
1538
+ FolderOutput: ["files", "arrows"],
1539
+ FolderPen: ["files"],
1540
+ FolderPlus: ["files"],
1541
+ FolderRoot: ["files", "development"],
1542
+ FolderSearch: ["files"],
1543
+ FolderSearch2: ["files"],
1544
+ FolderSymlink: ["files"],
1545
+ FolderSync: ["files", "arrows"],
1546
+ FolderTree: ["files"],
1547
+ FolderUp: ["files", "arrows"],
1548
+ FolderX: ["files"],
1549
+ Folders: ["files"],
1550
+ Footprints: ["navigation"],
1551
+ Forward: ["mail"],
1552
+ Frame: ["design", "photography"],
1553
+ Fullscreen: [
1554
+ "layout",
1555
+ "multimedia",
1556
+ "design",
1557
+ "photography"
1558
+ ],
1559
+ GalleryHorizontal: [
1560
+ "layout",
1561
+ "design",
1562
+ "development",
1563
+ "photography",
1564
+ "multimedia"
1565
+ ],
1566
+ GalleryHorizontalEnd: [
1567
+ "layout",
1568
+ "design",
1569
+ "development",
1570
+ "photography",
1571
+ "multimedia",
1572
+ "files"
1573
+ ],
1574
+ GalleryThumbnails: [
1575
+ "layout",
1576
+ "design",
1577
+ "development",
1578
+ "photography",
1579
+ "multimedia"
1580
+ ],
1581
+ GalleryVertical: [
1582
+ "layout",
1583
+ "design",
1584
+ "development",
1585
+ "photography",
1586
+ "multimedia"
1587
+ ],
1588
+ GalleryVerticalEnd: [
1589
+ "layout",
1590
+ "design",
1591
+ "development",
1592
+ "photography",
1593
+ "multimedia",
1594
+ "files"
1595
+ ],
1596
+ Gamepad: ["gaming", "devices"],
1597
+ Gamepad2: ["gaming", "devices"],
1598
+ GamepadDirectional: ["gaming", "devices"],
1599
+ GanttChart: [
1600
+ "charts",
1601
+ "time",
1602
+ "development",
1603
+ "design"
1604
+ ],
1605
+ Gauge: [
1606
+ "transportation",
1607
+ "sports",
1608
+ "science"
1609
+ ],
1610
+ GaugeCircle: [
1611
+ "transportation",
1612
+ "sports",
1613
+ "science"
1614
+ ],
1615
+ Gavel: ["navigation", "tools"],
1616
+ Gem: [
1617
+ "gaming",
1618
+ "development",
1619
+ "finance"
1620
+ ],
1621
+ GeorgianLari: ["finance"],
1622
+ Ghost: ["gaming"],
1623
+ Gift: ["gaming", "account"],
1624
+ GitBranch: ["development"],
1625
+ GitMerge: ["development"],
1626
+ GitPullRequest: ["development"],
1627
+ GlassWater: ["food-beverage"],
1628
+ Globe2: ["navigation"],
1629
+ Goal: ["gaming"],
1630
+ Gpu: ["devices", "gaming"],
1631
+ GraduationCap: ["buildings"],
1632
+ Grape: ["food-beverage"],
1633
+ Grid2x2Check: [
1634
+ "text",
1635
+ "layout",
1636
+ "math"
1637
+ ],
1638
+ Group: ["files"],
1639
+ Guitar: ["multimedia"],
1640
+ Ham: ["food-beverage"],
1641
+ Hamburger: ["food-beverage"],
1642
+ Hammer: ["tools", "home"],
1643
+ HandCoins: ["finance", "account"],
1644
+ HandFist: [
1645
+ "social",
1646
+ "emoji",
1647
+ "communication",
1648
+ "sports"
1649
+ ],
1650
+ HandHeart: ["social"],
1651
+ HandPlatter: ["food-beverage", "people"],
1652
+ Handbag: ["shopping", "transportation"],
1653
+ Handshake: [
1654
+ "account",
1655
+ "social",
1656
+ "communication",
1657
+ "finance",
1658
+ "security"
1659
+ ],
1660
+ HardDriveDownload: [
1661
+ "development",
1662
+ "devices",
1663
+ "arrows",
1664
+ "files"
1665
+ ],
1666
+ HardDriveUpload: [
1667
+ "development",
1668
+ "devices",
1669
+ "arrows",
1670
+ "files"
1671
+ ],
1672
+ HardHat: ["tools"],
1673
+ Hash: ["text", "social"],
1674
+ HatGlasses: [
1675
+ "social",
1676
+ "account",
1677
+ "security"
1678
+ ],
1679
+ HdmiPort: [
1680
+ "devices",
1681
+ "multimedia",
1682
+ "gaming"
1683
+ ],
1684
+ HeadphoneOff: [
1685
+ "multimedia",
1686
+ "connectivity",
1687
+ "communication",
1688
+ "devices",
1689
+ "gaming"
1690
+ ],
1691
+ Headphones: [
1692
+ "multimedia",
1693
+ "connectivity",
1694
+ "devices",
1695
+ "files",
1696
+ "gaming"
1697
+ ],
1698
+ Headset: [
1699
+ "multimedia",
1700
+ "connectivity",
1701
+ "devices",
1702
+ "files",
1703
+ "gaming"
1704
+ ],
1705
+ Heart: [
1706
+ "medical",
1707
+ "social",
1708
+ "multimedia",
1709
+ "emoji",
1710
+ "gaming",
1711
+ "shapes"
1712
+ ],
1713
+ HeartCrack: ["emoji"],
1714
+ HeartMinus: [
1715
+ "medical",
1716
+ "account",
1717
+ "multimedia",
1718
+ "gaming",
1719
+ "social"
1720
+ ],
1721
+ HeartOff: ["social", "multimedia"],
1722
+ HeartPlus: [
1723
+ "medical",
1724
+ "account",
1725
+ "multimedia",
1726
+ "gaming",
1727
+ "social"
1728
+ ],
1729
+ Heater: [
1730
+ "home",
1731
+ "devices",
1732
+ "travel"
1733
+ ],
1734
+ Helicopter: ["transportation", "travel"],
1735
+ HelpCircle: [
1736
+ "accessibility",
1737
+ "text",
1738
+ "notifications"
1739
+ ],
1740
+ Hexagon: ["shapes", "development"],
1741
+ History: ["arrows", "time"],
1742
+ Home: [
1743
+ "buildings",
1744
+ "home",
1745
+ "navigation"
1746
+ ],
1747
+ Hop: ["food-beverage"],
1748
+ HopOff: ["food-beverage"],
1749
+ Hospital: [
1750
+ "medical",
1751
+ "buildings",
1752
+ "navigation",
1753
+ "travel"
1754
+ ],
1755
+ Hotel: [
1756
+ "buildings",
1757
+ "navigation",
1758
+ "travel"
1759
+ ],
1760
+ Hourglass: ["time", "gaming"],
1761
+ HouseHeart: [
1762
+ "home",
1763
+ "buildings",
1764
+ "medical"
1765
+ ],
1766
+ IceCreamBowl: ["food-beverage"],
1767
+ IceCreamCone: ["food-beverage"],
1768
+ Image: [
1769
+ "photography",
1770
+ "text",
1771
+ "multimedia",
1772
+ "files"
1773
+ ],
1774
+ ImageDown: [
1775
+ "photography",
1776
+ "text",
1777
+ "multimedia",
1778
+ "files"
1779
+ ],
1780
+ ImageMinus: [
1781
+ "photography",
1782
+ "multimedia",
1783
+ "files"
1784
+ ],
1785
+ ImageOff: [
1786
+ "photography",
1787
+ "multimedia",
1788
+ "files"
1789
+ ],
1790
+ ImagePlay: [
1791
+ "photography",
1792
+ "text",
1793
+ "multimedia",
1794
+ "files"
1795
+ ],
1796
+ ImagePlus: [
1797
+ "photography",
1798
+ "multimedia",
1799
+ "files"
1800
+ ],
1801
+ ImageUp: [
1802
+ "photography",
1803
+ "text",
1804
+ "multimedia",
1805
+ "files"
1806
+ ],
1807
+ ImageUpscale: ["photography", "multimedia"],
1808
+ Images: [
1809
+ "photography",
1810
+ "text",
1811
+ "multimedia",
1812
+ "files"
1813
+ ],
1814
+ Import: ["arrows", "files"],
1815
+ Inbox: ["account", "mail"],
1816
+ IndianRupee: ["finance"],
1817
+ Info: ["accessibility", "notifications"],
1818
+ InspectionPanel: ["tools"],
1819
+ JapaneseYen: ["finance"],
1820
+ Joystick: ["gaming", "devices"],
1821
+ Key: ["security", "account"],
1822
+ KeyboardMusic: ["multimedia", "devices"],
1823
+ LampCeiling: ["home"],
1824
+ LandPlot: [
1825
+ "design",
1826
+ "tools",
1827
+ "math",
1828
+ "sports",
1829
+ "gaming"
1830
+ ],
1831
+ Landmark: [
1832
+ "finance",
1833
+ "navigation",
1834
+ "buildings"
1835
+ ],
1836
+ LaptopMinimalCheck: ["devices", "notifications"],
1837
+ Layers2: ["design", "layout"],
1838
+ LayoutList: [
1839
+ "design",
1840
+ "layout",
1841
+ "photography",
1842
+ "text"
1843
+ ],
1844
+ Leaf: [
1845
+ "nature",
1846
+ "sustainability",
1847
+ "seasons"
1848
+ ],
1849
+ LeafyGreen: [
1850
+ "food-beverage",
1851
+ "emoji",
1852
+ "sustainability"
1853
+ ],
1854
+ Library: [
1855
+ "text",
1856
+ "photography",
1857
+ "multimedia",
1858
+ "navigation",
1859
+ "development"
1860
+ ],
1861
+ LibraryBig: [
1862
+ "text",
1863
+ "photography",
1864
+ "multimedia",
1865
+ "navigation",
1866
+ "development"
1867
+ ],
1868
+ LifeBuoy: ["accessibility", "medical"],
1869
+ Lightbulb: ["photography"],
1870
+ LightbulbOff: ["photography"],
1871
+ LineChart: ["charts"],
1872
+ Link: ["text", "account"],
1873
+ ListCheck: ["text"],
1874
+ ListTree: [
1875
+ "files",
1876
+ "text",
1877
+ "layout"
1878
+ ],
1879
+ LoaderCircle: [
1880
+ "cursors",
1881
+ "multimedia",
1882
+ "layout"
1883
+ ],
1884
+ Lock: ["security"],
1885
+ Lollipop: ["food-beverage"],
1886
+ Luggage: ["travel", "transportation"],
1887
+ Mail: [
1888
+ "text",
1889
+ "account",
1890
+ "mail"
1891
+ ],
1892
+ MailCheck: ["mail"],
1893
+ Mailbox: ["mail"],
1894
+ Mails: ["mail"],
1895
+ Map: ["text", "navigation"],
1896
+ MapMinus: ["navigation", "travel"],
1897
+ MapPin: [
1898
+ "navigation",
1899
+ "travel",
1900
+ "account"
1901
+ ],
1902
+ MapPinCheck: [
1903
+ "navigation",
1904
+ "travel",
1905
+ "account"
1906
+ ],
1907
+ MapPinCheckInside: [
1908
+ "navigation",
1909
+ "travel",
1910
+ "account"
1911
+ ],
1912
+ MapPinHouse: [
1913
+ "navigation",
1914
+ "travel",
1915
+ "account"
1916
+ ],
1917
+ MapPinMinus: [
1918
+ "navigation",
1919
+ "travel",
1920
+ "account"
1921
+ ],
1922
+ MapPinMinusInside: [
1923
+ "navigation",
1924
+ "travel",
1925
+ "account"
1926
+ ],
1927
+ MapPinOff: ["navigation", "travel"],
1928
+ MapPinPen: [
1929
+ "navigation",
1930
+ "travel",
1931
+ "account"
1932
+ ],
1933
+ MapPinPlus: [
1934
+ "navigation",
1935
+ "travel",
1936
+ "account"
1937
+ ],
1938
+ MapPinPlusInside: [
1939
+ "navigation",
1940
+ "travel",
1941
+ "account"
1942
+ ],
1943
+ MapPinX: [
1944
+ "navigation",
1945
+ "travel",
1946
+ "account"
1947
+ ],
1948
+ MapPinXInside: [
1949
+ "navigation",
1950
+ "travel",
1951
+ "account"
1952
+ ],
1953
+ MapPinned: [
1954
+ "navigation",
1955
+ "travel",
1956
+ "account"
1957
+ ],
1958
+ Martini: ["food-beverage"],
1959
+ Medal: ["sports", "gaming"],
1960
+ MemoryStick: ["devices", "gaming"],
1961
+ Menu: ["layout", "account"],
1962
+ Merge: ["development", "arrows"],
1963
+ MessageCircle: ["social"],
1964
+ MessageCircleCode: ["development", "social"],
1965
+ MessageCircleDashed: ["social"],
1966
+ MessageCircleHeart: ["social"],
1967
+ MessageCircleMore: ["social"],
1968
+ MessageCircleOff: ["social"],
1969
+ MessageCirclePlus: ["social"],
1970
+ MessageCircleQuestionMark: ["social"],
1971
+ MessageCircleReply: ["social"],
1972
+ MessageCircleWarning: ["social", "notifications"],
1973
+ MessageCircleX: ["account", "social"],
1974
+ MessageSquare: ["social"],
1975
+ MessageSquareCode: ["development", "social"],
1976
+ MessageSquareDashed: ["social"],
1977
+ MessageSquareDiff: [
1978
+ "development",
1979
+ "files",
1980
+ "social"
1981
+ ],
1982
+ MessageSquareDot: ["social", "notifications"],
1983
+ MessageSquareHeart: ["social"],
1984
+ MessageSquareLock: ["social"],
1985
+ MessageSquareMore: ["social"],
1986
+ MessageSquareOff: ["social"],
1987
+ MessageSquarePlus: ["social"],
1988
+ MessageSquareQuote: ["social", "text"],
1989
+ MessageSquareReply: ["social"],
1990
+ MessageSquareShare: ["social"],
1991
+ MessageSquareText: ["social"],
1992
+ MessageSquareWarning: ["social", "notifications"],
1993
+ MessageSquareX: ["social"],
1994
+ MessagesSquare: ["social"],
1995
+ Mic: [
1996
+ "devices",
1997
+ "communication",
1998
+ "connectivity",
1999
+ "multimedia"
2000
+ ],
2001
+ Microscope: ["science", "medical"],
2002
+ Microwave: ["food-beverage", "home"],
2003
+ Milestone: [
2004
+ "arrows",
2005
+ "navigation",
2006
+ "development",
2007
+ "gaming"
2008
+ ],
2009
+ Milk: ["food-beverage"],
2010
+ MilkOff: ["food-beverage"],
2011
+ Minus: [
2012
+ "math",
2013
+ "development",
2014
+ "text",
2015
+ "tools"
2016
+ ],
2017
+ MinusCircle: ["math"],
2018
+ MonitorCheck: ["connectivity", "devices"],
2019
+ Moon: ["accessibility"],
2020
+ MoreHorizontal: ["layout", "development"],
2021
+ Mountain: ["nature", "gaming"],
2022
+ Music: ["multimedia", "files"],
2023
+ Music2: ["multimedia", "files"],
2024
+ Music3: ["multimedia", "files"],
2025
+ Music4: ["multimedia", "files"],
2026
+ Newspaper: ["multimedia", "communication"],
2027
+ Nfc: [
2028
+ "communication",
2029
+ "finance",
2030
+ "devices"
2031
+ ],
2032
+ Notebook: [
2033
+ "text",
2034
+ "communication",
2035
+ "social",
2036
+ "design"
2037
+ ],
2038
+ NotebookPen: ["text", "social"],
2039
+ NotebookTabs: [
2040
+ "account",
2041
+ "communication",
2042
+ "social"
2043
+ ],
2044
+ NotebookText: ["text", "social"],
2045
+ NotepadText: ["text", "social"],
2046
+ NotepadTextDashed: ["text", "social"],
2047
+ Nut: ["food-beverage"],
2048
+ NutOff: ["food-beverage"],
2049
+ Omega: [
2050
+ "math",
2051
+ "development",
2052
+ "text",
2053
+ "science"
2054
+ ],
2055
+ Orbit: ["science"],
2056
+ Origami: ["animals", "design"],
2057
+ Package: ["files", "development"],
2058
+ Package2: ["files", "development"],
2059
+ PackageOpen: ["files", "development"],
2060
+ PackageSearch: ["files", "development"],
2061
+ PaintBucket: ["design", "tools"],
2062
+ PaintRoller: [
2063
+ "text",
2064
+ "design",
2065
+ "home",
2066
+ "tools"
2067
+ ],
2068
+ Paintbrush: [
2069
+ "text",
2070
+ "design",
2071
+ "photography",
2072
+ "home",
2073
+ "tools"
2074
+ ],
2075
+ PaintbrushVertical: [
2076
+ "text",
2077
+ "design",
2078
+ "photography",
2079
+ "home",
2080
+ "tools"
2081
+ ],
2082
+ Palette: [
2083
+ "text",
2084
+ "design",
2085
+ "photography"
2086
+ ],
2087
+ Panda: ["animals"],
2088
+ Paperclip: [
2089
+ "text",
2090
+ "design",
2091
+ "files",
2092
+ "mail"
2093
+ ],
2094
+ Parentheses: [
2095
+ "development",
2096
+ "files",
2097
+ "math"
2098
+ ],
2099
+ PartyPopper: ["emoji"],
2100
+ PauseCircle: ["multimedia"],
2101
+ PawPrint: ["animals"],
2102
+ PcCase: ["devices", "gaming"],
2103
+ Pen: [
2104
+ "text",
2105
+ "design",
2106
+ "tools"
2107
+ ],
2108
+ PenLine: [
2109
+ "text",
2110
+ "design",
2111
+ "tools"
2112
+ ],
2113
+ PenOff: [
2114
+ "text",
2115
+ "design",
2116
+ "tools"
2117
+ ],
2118
+ Pencil: [
2119
+ "design",
2120
+ "cursors",
2121
+ "tools",
2122
+ "text"
2123
+ ],
2124
+ PencilLine: [
2125
+ "text",
2126
+ "design",
2127
+ "tools"
2128
+ ],
2129
+ PencilOff: [
2130
+ "design",
2131
+ "cursors",
2132
+ "tools",
2133
+ "text"
2134
+ ],
2135
+ PencilRuler: [
2136
+ "tools",
2137
+ "design",
2138
+ "layout",
2139
+ "text"
2140
+ ],
2141
+ Percent: [
2142
+ "math",
2143
+ "development",
2144
+ "finance",
2145
+ "shopping"
2146
+ ],
2147
+ PercentCircle: [
2148
+ "social",
2149
+ "finance",
2150
+ "shopping",
2151
+ "math"
2152
+ ],
2153
+ PersonStanding: ["accessibility", "people"],
2154
+ PhilippinePeso: ["finance"],
2155
+ Phone: [
2156
+ "text",
2157
+ "connectivity",
2158
+ "devices",
2159
+ "communication"
2160
+ ],
2161
+ Pickaxe: ["tools", "gaming"],
2162
+ PieChart: ["charts", "files"],
2163
+ PiggyBank: ["finance"],
2164
+ Pin: ["navigation", "account"],
2165
+ Pipette: [
2166
+ "text",
2167
+ "design",
2168
+ "science"
2169
+ ],
2170
+ Pizza: ["food-beverage"],
2171
+ Plane: [
2172
+ "transportation",
2173
+ "travel",
2174
+ "navigation"
2175
+ ],
2176
+ PlaneLanding: ["transportation", "travel"],
2177
+ PlaneTakeoff: ["transportation", "travel"],
2178
+ PlayCircle: ["multimedia"],
2179
+ Plug2: ["devices", "development"],
2180
+ Plus: [
2181
+ "math",
2182
+ "tools",
2183
+ "development",
2184
+ "text",
2185
+ "cursors",
2186
+ "gaming"
2187
+ ],
2188
+ PlusCircle: [
2189
+ "math",
2190
+ "development",
2191
+ "cursors",
2192
+ "gaming"
2193
+ ],
2194
+ PocketKnife: ["tools"],
2195
+ Podcast: ["multimedia", "social"],
2196
+ Popcorn: ["food-beverage", "multimedia"],
2197
+ Popsicle: ["food-beverage"],
2198
+ PoundSterling: ["finance"],
2199
+ PowerCircle: ["connectivity"],
2200
+ Presentation: [
2201
+ "multimedia",
2202
+ "photography",
2203
+ "devices",
2204
+ "communication",
2205
+ "design"
2206
+ ],
2207
+ Projector: [
2208
+ "multimedia",
2209
+ "photography",
2210
+ "devices",
2211
+ "communication"
2212
+ ],
2213
+ Proportions: [
2214
+ "layout",
2215
+ "design",
2216
+ "photography",
2217
+ "devices"
2218
+ ],
2219
+ Puzzle: ["development", "gaming"],
2220
+ Pyramid: [
2221
+ "shapes",
2222
+ "math",
2223
+ "travel"
2224
+ ],
2225
+ QrCode: ["development", "social"],
2226
+ Rabbit: ["animals"],
2227
+ Radiation: ["science"],
2228
+ Radio: [
2229
+ "devices",
2230
+ "multimedia",
2231
+ "social"
2232
+ ],
2233
+ RadioReceiver: ["devices"],
2234
+ RadioTower: [
2235
+ "devices",
2236
+ "multimedia",
2237
+ "social"
2238
+ ],
2239
+ Radius: [
2240
+ "shapes",
2241
+ "math",
2242
+ "design",
2243
+ "tools"
2244
+ ],
2245
+ Rainbow: ["weather"],
2246
+ Rat: ["animals"],
2247
+ Ratio: [
2248
+ "layout",
2249
+ "design",
2250
+ "photography"
2251
+ ],
2252
+ Receipt: ["finance", "travel"],
2253
+ ReceiptCent: ["finance", "travel"],
2254
+ ReceiptEuro: ["finance", "travel"],
2255
+ ReceiptIndianRupee: ["finance", "travel"],
2256
+ ReceiptJapaneseYen: ["finance", "travel"],
2257
+ ReceiptPoundSterling: ["finance", "travel"],
2258
+ ReceiptRussianRuble: ["finance", "travel"],
2259
+ ReceiptSwissFranc: ["finance", "travel"],
2260
+ ReceiptText: ["finance", "travel"],
2261
+ ReceiptTurkishLira: ["finance", "travel"],
2262
+ RectangleGoggles: [
2263
+ "devices",
2264
+ "gaming",
2265
+ "multimedia",
2266
+ "connectivity"
2267
+ ],
2268
+ Recycle: ["sustainability"],
2269
+ Redo2: ["text", "arrows"],
2270
+ RefreshCcwDot: ["arrows", "development"],
2271
+ Refrigerator: ["food-beverage", "home"],
2272
+ Repeat1: ["multimedia"],
2273
+ Repeat2: [
2274
+ "arrows",
2275
+ "social",
2276
+ "multimedia"
2277
+ ],
2278
+ Rewind: ["arrows", "multimedia"],
2279
+ Ribbon: [
2280
+ "social",
2281
+ "medical",
2282
+ "emoji"
2283
+ ],
2284
+ Rocket: ["gaming", "development"],
2285
+ Rose: [
2286
+ "nature",
2287
+ "seasons",
2288
+ "sustainability",
2289
+ "home",
2290
+ "social"
2291
+ ],
2292
+ RotateCcw: [
2293
+ "arrows",
2294
+ "design",
2295
+ "photography"
2296
+ ],
2297
+ RotateCcwSquare: [
2298
+ "layout",
2299
+ "design",
2300
+ "photography",
2301
+ "tools",
2302
+ "arrows"
2303
+ ],
2304
+ RotateCw: [
2305
+ "arrows",
2306
+ "design",
2307
+ "photography"
2308
+ ],
2309
+ RotateCwSquare: [
2310
+ "layout",
2311
+ "design",
2312
+ "photography",
2313
+ "tools",
2314
+ "arrows"
2315
+ ],
2316
+ Rss: ["development", "social"],
2317
+ Ruler: [
2318
+ "tools",
2319
+ "design",
2320
+ "layout"
2321
+ ],
2322
+ RulerDimensionLine: [
2323
+ "tools",
2324
+ "design",
2325
+ "layout"
2326
+ ],
2327
+ RussianRuble: ["finance"],
2328
+ Sailboat: ["transportation", "travel"],
2329
+ Salad: ["food-beverage", "emoji"],
2330
+ Sandwich: ["food-beverage"],
2331
+ Satellite: ["connectivity", "science"],
2332
+ SaudiRiyal: ["finance"],
2333
+ Save: ["text", "files"],
2334
+ SaveAll: ["text", "files"],
2335
+ SaveOff: ["text", "files"],
2336
+ Scale: [
2337
+ "navigation",
2338
+ "science",
2339
+ "finance"
2340
+ ],
2341
+ Scan: [
2342
+ "devices",
2343
+ "shopping",
2344
+ "security",
2345
+ "social",
2346
+ "gaming"
2347
+ ],
2348
+ ScanBarcode: ["shopping", "devices"],
2349
+ ScanEye: [
2350
+ "photography",
2351
+ "multimedia",
2352
+ "accessibility",
2353
+ "security",
2354
+ "devices",
2355
+ "account"
2356
+ ],
2357
+ ScanFace: [
2358
+ "account",
2359
+ "security",
2360
+ "devices",
2361
+ "social"
2362
+ ],
2363
+ ScanLine: ["devices", "shopping"],
2364
+ ScanQrCode: [
2365
+ "account",
2366
+ "shopping",
2367
+ "devices",
2368
+ "security"
2369
+ ],
2370
+ ScanSearch: [
2371
+ "photography",
2372
+ "multimedia",
2373
+ "accessibility"
2374
+ ],
2375
+ School: ["buildings", "navigation"],
2376
+ Scissors: [
2377
+ "text",
2378
+ "design",
2379
+ "tools"
2380
+ ],
2381
+ ScissorsLineDashed: ["design", "tools"],
2382
+ Scroll: [
2383
+ "gaming",
2384
+ "development",
2385
+ "text"
2386
+ ],
2387
+ ScrollText: [
2388
+ "gaming",
2389
+ "development",
2390
+ "text"
2391
+ ],
2392
+ Search: ["text", "social"],
2393
+ SearchAlert: ["text", "social"],
2394
+ SearchCheck: ["text", "social"],
2395
+ SearchCode: [
2396
+ "text",
2397
+ "social",
2398
+ "development"
2399
+ ],
2400
+ SearchSlash: ["text", "social"],
2401
+ SearchX: ["text", "social"],
2402
+ ServerCog: ["development", "devices"],
2403
+ Settings: ["account"],
2404
+ Settings2: ["account"],
2405
+ Shapes: ["shapes", "gaming"],
2406
+ Share: ["account", "social"],
2407
+ Share2: ["account", "social"],
2408
+ Sheet: ["text", "files"],
2409
+ Shell: [
2410
+ "animals",
2411
+ "development",
2412
+ "nature",
2413
+ "science",
2414
+ "travel",
2415
+ "food-beverage",
2416
+ "home"
2417
+ ],
2418
+ Shield: [
2419
+ "account",
2420
+ "security",
2421
+ "development",
2422
+ "gaming",
2423
+ "shapes"
2424
+ ],
2425
+ ShieldAlert: [
2426
+ "account",
2427
+ "security",
2428
+ "development",
2429
+ "notifications",
2430
+ "gaming"
2431
+ ],
2432
+ ShieldBan: [
2433
+ "account",
2434
+ "security",
2435
+ "development",
2436
+ "gaming"
2437
+ ],
2438
+ ShieldCheck: [
2439
+ "account",
2440
+ "security",
2441
+ "development",
2442
+ "gaming"
2443
+ ],
2444
+ ShieldEllipsis: [
2445
+ "account",
2446
+ "security",
2447
+ "development",
2448
+ "gaming"
2449
+ ],
2450
+ ShieldHalf: [
2451
+ "account",
2452
+ "security",
2453
+ "development",
2454
+ "gaming"
2455
+ ],
2456
+ ShieldMinus: [
2457
+ "account",
2458
+ "security",
2459
+ "development",
2460
+ "gaming"
2461
+ ],
2462
+ ShieldOff: [
2463
+ "account",
2464
+ "security",
2465
+ "development",
2466
+ "gaming"
2467
+ ],
2468
+ ShieldPlus: [
2469
+ "account",
2470
+ "security",
2471
+ "development",
2472
+ "gaming",
2473
+ "medical"
2474
+ ],
2475
+ ShieldQuestionMark: [
2476
+ "account",
2477
+ "security",
2478
+ "development",
2479
+ "gaming"
2480
+ ],
2481
+ ShieldX: [
2482
+ "account",
2483
+ "security",
2484
+ "development",
2485
+ "gaming"
2486
+ ],
2487
+ Ship: [
2488
+ "transportation",
2489
+ "navigation",
2490
+ "travel"
2491
+ ],
2492
+ ShipWheel: [
2493
+ "transportation",
2494
+ "navigation",
2495
+ "travel"
2496
+ ],
2497
+ Shirt: ["shopping"],
2498
+ ShoppingBag: ["shopping"],
2499
+ ShoppingBasket: ["shopping"],
2500
+ ShoppingCart: ["shopping"],
2501
+ Shovel: [
2502
+ "nature",
2503
+ "tools",
2504
+ "gaming"
2505
+ ],
2506
+ ShowerHead: ["home", "travel"],
2507
+ Shredder: ["mail", "files"],
2508
+ Shrimp: ["animals"],
2509
+ Shuffle: ["multimedia", "arrows"],
2510
+ Sigma: [
2511
+ "text",
2512
+ "math",
2513
+ "science"
2514
+ ],
2515
+ Signpost: [
2516
+ "arrows",
2517
+ "navigation",
2518
+ "development",
2519
+ "gaming"
2520
+ ],
2521
+ SignpostBig: [
2522
+ "arrows",
2523
+ "navigation",
2524
+ "development",
2525
+ "gaming"
2526
+ ],
2527
+ SkipBack: ["multimedia", "arrows"],
2528
+ Skull: ["gaming"],
2529
+ SlidersHorizontal: ["account"],
2530
+ SmartphoneCharging: ["connectivity", "devices"],
2531
+ SmartphoneNfc: [
2532
+ "communication",
2533
+ "finance",
2534
+ "devices"
2535
+ ],
2536
+ SmilePlus: [
2537
+ "emoji",
2538
+ "social",
2539
+ "notifications",
2540
+ "communication"
2541
+ ],
2542
+ Snail: ["animals", "food-beverage"],
2543
+ Snowflake: ["weather", "seasons"],
2544
+ SoapDispenserDroplet: ["home", "travel"],
2545
+ Sofa: ["home"],
2546
+ SolarPanel: [
2547
+ "home",
2548
+ "science",
2549
+ "sustainability",
2550
+ "weather"
2551
+ ],
2552
+ Soup: ["food-beverage"],
2553
+ Spade: ["shapes", "gaming"],
2554
+ Sparkle: ["shapes"],
2555
+ Sparkles: [
2556
+ "cursors",
2557
+ "multimedia",
2558
+ "gaming",
2559
+ "weather"
2560
+ ],
2561
+ Speaker: ["multimedia", "devices"],
2562
+ SplinePointer: [
2563
+ "arrows",
2564
+ "cursors",
2565
+ "design",
2566
+ "tools"
2567
+ ],
2568
+ Spool: [
2569
+ "communication",
2570
+ "tools",
2571
+ "social"
2572
+ ],
2573
+ Spotlight: [
2574
+ "devices",
2575
+ "photography",
2576
+ "multimedia",
2577
+ "communication"
2578
+ ],
2579
+ SprayCan: ["design", "tools"],
2580
+ Sprout: [
2581
+ "nature",
2582
+ "gaming",
2583
+ "sustainability"
2584
+ ],
2585
+ Square: ["shapes", "multimedia"],
2586
+ SquareActivity: [
2587
+ "medical",
2588
+ "social",
2589
+ "science",
2590
+ "multimedia"
2591
+ ],
2592
+ SquareArrowDown: ["arrows", "gaming"],
2593
+ SquareArrowDownLeft: ["arrows", "gaming"],
2594
+ SquareArrowDownRight: ["arrows", "gaming"],
2595
+ SquareArrowOutUpRight: ["arrows", "social"],
2596
+ SquareArrowUpRight: ["arrows", "social"],
2597
+ SquareBottomDashedScissors: [
2598
+ "text",
2599
+ "design",
2600
+ "tools",
2601
+ "files",
2602
+ "development"
2603
+ ],
2604
+ SquareChartGantt: [
2605
+ "charts",
2606
+ "time",
2607
+ "development",
2608
+ "design"
2609
+ ],
2610
+ SquareCheck: ["notifications"],
2611
+ SquareDashedBottom: ["development", "files"],
2612
+ SquareDashedBottomCode: ["development", "files"],
2613
+ SquareDashedMousePointer: [
2614
+ "arrows",
2615
+ "cursors",
2616
+ "development",
2617
+ "tools"
2618
+ ],
2619
+ SquareLibrary: [
2620
+ "text",
2621
+ "photography",
2622
+ "multimedia",
2623
+ "navigation",
2624
+ "development"
2625
+ ],
2626
+ SquareMinus: [
2627
+ "math",
2628
+ "development",
2629
+ "text",
2630
+ "tools",
2631
+ "devices"
2632
+ ],
2633
+ SquareMousePointer: [
2634
+ "arrows",
2635
+ "cursors",
2636
+ "development",
2637
+ "tools"
2638
+ ],
2639
+ SquarePercent: [
2640
+ "social",
2641
+ "finance",
2642
+ "shopping",
2643
+ "math"
2644
+ ],
2645
+ SquarePlay: ["arrows", "multimedia"],
2646
+ SquarePlus: [
2647
+ "math",
2648
+ "tools",
2649
+ "development",
2650
+ "text"
2651
+ ],
2652
+ SquareScissors: [
2653
+ "text",
2654
+ "design",
2655
+ "tools",
2656
+ "files",
2657
+ "development"
2658
+ ],
2659
+ SquareStack: [
2660
+ "text",
2661
+ "files",
2662
+ "development"
2663
+ ],
2664
+ SquareStar: ["sports", "gaming"],
2665
+ Squirrel: ["animals"],
2666
+ Stamp: [
2667
+ "design",
2668
+ "cursors",
2669
+ "tools"
2670
+ ],
2671
+ Star: [
2672
+ "account",
2673
+ "social",
2674
+ "shapes",
2675
+ "multimedia",
2676
+ "weather",
2677
+ "emoji",
2678
+ "gaming"
2679
+ ],
2680
+ StarHalf: ["social", "multimedia"],
2681
+ StarOff: ["multimedia", "social"],
2682
+ Stars: [
2683
+ "cursors",
2684
+ "multimedia",
2685
+ "gaming",
2686
+ "weather"
2687
+ ],
2688
+ Stethoscope: ["science", "medical"],
2689
+ Sticker: ["social"],
2690
+ StickyNote: ["text", "social"],
2691
+ StopCircle: ["multimedia"],
2692
+ Store: [
2693
+ "buildings",
2694
+ "navigation",
2695
+ "shopping"
2696
+ ],
2697
+ Sun: [
2698
+ "accessibility",
2699
+ "weather",
2700
+ "seasons",
2701
+ "sustainability"
2702
+ ],
2703
+ SunDim: ["accessibility", "weather"],
2704
+ Sunrise: [
2705
+ "arrows",
2706
+ "weather",
2707
+ "time"
2708
+ ],
2709
+ Sunset: ["arrows", "weather"],
2710
+ SwatchBook: [
2711
+ "design",
2712
+ "home",
2713
+ "photography"
2714
+ ],
2715
+ SwissFranc: ["finance"],
2716
+ Sword: ["gaming", "tools"],
2717
+ Swords: ["gaming", "tools"],
2718
+ Syringe: ["science", "medical"],
2719
+ Table: ["text", "files"],
2720
+ Table2: ["text", "files"],
2721
+ TableCellsMerge: ["text", "files"],
2722
+ TableCellsSplit: ["text", "files"],
2723
+ TableColumnsSplit: ["text", "files"],
2724
+ TableProperties: [
2725
+ "text",
2726
+ "development",
2727
+ "files"
2728
+ ],
2729
+ TableRowsSplit: ["text", "files"],
2730
+ TabletSmartphone: [
2731
+ "devices",
2732
+ "design",
2733
+ "development",
2734
+ "tools"
2735
+ ],
2736
+ Tag: ["account"],
2737
+ Tags: ["account"],
2738
+ Tally1: ["math", "gaming"],
2739
+ Tally2: ["math", "gaming"],
2740
+ Tally3: ["math", "gaming"],
2741
+ Tally4: ["math", "gaming"],
2742
+ Tally5: ["math", "gaming"],
2743
+ Tangent: [
2744
+ "shapes",
2745
+ "math",
2746
+ "design",
2747
+ "tools"
2748
+ ],
2749
+ Target: ["gaming"],
2750
+ Telescope: [
2751
+ "science",
2752
+ "development",
2753
+ "tools"
2754
+ ],
2755
+ Tent: [
2756
+ "travel",
2757
+ "nature",
2758
+ "sustainability"
2759
+ ],
2760
+ TentTree: ["travel", "nature"],
2761
+ Terminal: ["development"],
2762
+ TerminalSquare: ["development"],
2763
+ TestTube: ["science"],
2764
+ TestTubeDiagonal: ["science"],
2765
+ TestTubes: ["science"],
2766
+ Text: ["text"],
2767
+ Theater: ["buildings", "social"],
2768
+ ThumbsDown: [
2769
+ "account",
2770
+ "social",
2771
+ "emoji"
2772
+ ],
2773
+ ThumbsUp: [
2774
+ "account",
2775
+ "social",
2776
+ "emoji"
2777
+ ],
2778
+ TicketPercent: ["transportation", "shopping"],
2779
+ Tickets: [
2780
+ "travel",
2781
+ "account",
2782
+ "transportation"
2783
+ ],
2784
+ TicketsPlane: ["transportation", "travel"],
2785
+ Timer: ["time"],
2786
+ TimerOff: ["time"],
2787
+ TimerReset: ["time"],
2788
+ ToolCase: [
2789
+ "tools",
2790
+ "development",
2791
+ "home"
2792
+ ],
2793
+ Toolbox: ["tools", "home"],
2794
+ Torus: [
2795
+ "shapes",
2796
+ "design",
2797
+ "tools",
2798
+ "food-beverage"
2799
+ ],
2800
+ TowerControl: ["travel", "transportation"],
2801
+ ToyBrick: ["gaming", "development"],
2802
+ Tractor: [
2803
+ "transportation",
2804
+ "sustainability",
2805
+ "food-beverage"
2806
+ ],
2807
+ TrainFrontTunnel: ["transportation", "navigation"],
2808
+ Trash: ["files", "mail"],
2809
+ Trash2: ["files", "mail"],
2810
+ Trees: ["nature", "sustainability"],
2811
+ TrendingDown: ["charts", "arrows"],
2812
+ Trophy: ["sports", "gaming"],
2813
+ TurkishLira: ["finance"],
2814
+ Turtle: ["animals"],
2815
+ TvMinimalPlay: ["devices", "multimedia"],
2816
+ Undo2: ["text", "arrows"],
2817
+ Ungroup: ["shapes", "files"],
2818
+ Upload: ["arrows", "files"],
2819
+ UploadCloud: ["arrows", "files"],
2820
+ Usb: [
2821
+ "devices",
2822
+ "multimedia",
2823
+ "home"
2824
+ ],
2825
+ User: ["account"],
2826
+ UserCircle2: ["account"],
2827
+ UserRoundSearch: ["account", "social"],
2828
+ UserSearch: ["account", "social"],
2829
+ Users: ["account"],
2830
+ UsersRound: ["account"],
2831
+ Utensils: [
2832
+ "food-beverage",
2833
+ "travel",
2834
+ "navigation"
2835
+ ],
2836
+ UtensilsCrossed: [
2837
+ "food-beverage",
2838
+ "travel",
2839
+ "navigation"
2840
+ ],
2841
+ Vault: [
2842
+ "security",
2843
+ "travel",
2844
+ "home"
2845
+ ],
2846
+ VectorSquare: [
2847
+ "shapes",
2848
+ "math",
2849
+ "design",
2850
+ "tools"
2851
+ ],
2852
+ Vegan: ["food-beverage", "sustainability"],
2853
+ VenetianMask: ["account", "gaming"],
2854
+ Video: [
2855
+ "devices",
2856
+ "communication",
2857
+ "connectivity",
2858
+ "photography"
2859
+ ],
2860
+ VideoOff: [
2861
+ "devices",
2862
+ "communication",
2863
+ "connectivity",
2864
+ "photography"
2865
+ ],
2866
+ Videotape: [
2867
+ "devices",
2868
+ "communication",
2869
+ "connectivity",
2870
+ "photography",
2871
+ "files"
2872
+ ],
2873
+ View: ["design", "photography"],
2874
+ Voicemail: [
2875
+ "connectivity",
2876
+ "devices",
2877
+ "social"
2878
+ ],
2879
+ Volleyball: [
2880
+ "sports",
2881
+ "gaming",
2882
+ "travel"
2883
+ ],
2884
+ Volume1: [
2885
+ "connectivity",
2886
+ "communication",
2887
+ "multimedia"
2888
+ ],
2889
+ Vote: ["social"],
2890
+ Wallet: ["account", "finance"],
2891
+ WalletCards: ["account", "finance"],
2892
+ WalletMinimal: ["account", "finance"],
2893
+ Wand: [
2894
+ "design",
2895
+ "gaming",
2896
+ "cursors",
2897
+ "photography"
2898
+ ],
2899
+ WandSparkles: [
2900
+ "design",
2901
+ "gaming",
2902
+ "cursors",
2903
+ "photography"
2904
+ ],
2905
+ WashingMachine: [
2906
+ "home",
2907
+ "devices",
2908
+ "travel"
2909
+ ],
2910
+ Watch: ["time"],
2911
+ Waypoints: [
2912
+ "security",
2913
+ "account",
2914
+ "navigation",
2915
+ "development",
2916
+ "social"
2917
+ ],
2918
+ Webcam: [
2919
+ "connectivity",
2920
+ "devices",
2921
+ "communication"
2922
+ ],
2923
+ Webhook: [
2924
+ "development",
2925
+ "social",
2926
+ "account"
2927
+ ],
2928
+ WebhookOff: [
2929
+ "development",
2930
+ "social",
2931
+ "account"
2932
+ ],
2933
+ Wheat: ["food-beverage"],
2934
+ WheatOff: ["food-beverage"],
2935
+ Wifi: ["connectivity", "devices"],
2936
+ WifiCog: [
2937
+ "connectivity",
2938
+ "devices",
2939
+ "files"
2940
+ ],
2941
+ Wine: ["food-beverage"],
2942
+ WineOff: ["food-beverage"],
2943
+ Worm: ["animals", "security"],
2944
+ Wrench: [
2945
+ "account",
2946
+ "development",
2947
+ "tools"
2948
+ ],
2949
+ XCircle: ["math", "development"],
2950
+ Zap: [
2951
+ "connectivity",
2952
+ "devices",
2953
+ "photography",
2954
+ "weather"
2955
+ ],
2956
+ ZapOff: [
2957
+ "connectivity",
2958
+ "devices",
2959
+ "photography",
2960
+ "weather"
2961
+ ],
2962
+ ZoomIn: [
2963
+ "accessibility",
2964
+ "layout",
2965
+ "design",
2966
+ "text",
2967
+ "photography"
2968
+ ],
2969
+ ZoomOut: [
2970
+ "accessibility",
2971
+ "layout",
2972
+ "design",
2973
+ "text",
2974
+ "photography"
2975
+ ]
2976
+ };
2977
+ const PICKER_ICON_NAMES = Object.keys(CATEGORIES).sort((left, right) => left.localeCompare(right));
2978
+ function getIconCategories(name) {
2979
+ return CATEGORIES[name] ?? [];
2980
+ }
2981
+ //#endregion
2982
+ //#region src/lib/icon-map.tsx
2983
+ const MAP = {
2984
+ ListMusic,
2985
+ Activity,
2986
+ Airplay,
2987
+ AlarmClock,
2988
+ AlarmClockCheck,
2989
+ AlarmClockMinus,
2990
+ AlarmClockOff,
2991
+ AlarmClockPlus,
2992
+ AlarmSmoke,
2993
+ Album,
2994
+ AlertCircle,
2995
+ Amphora,
2996
+ Anchor,
2997
+ Anvil,
2998
+ Aperture,
2999
+ AppWindow,
3000
+ AppWindowMac,
3001
+ Apple,
3002
+ Archive,
3003
+ ArchiveRestore,
3004
+ ArchiveX,
3005
+ ArrowBigDown,
3006
+ ArrowBigDownDash,
3007
+ ArrowBigLeft,
3008
+ ArrowBigLeftDash,
3009
+ ArrowBigRight,
3010
+ ArrowBigRightDash,
3011
+ ArrowBigUp,
3012
+ ArrowBigUpDash,
3013
+ ArrowDownFromLine,
3014
+ ArrowDownToLine,
3015
+ ArrowLeft,
3016
+ ArrowRight,
3017
+ ArrowUpFromLine,
3018
+ ArrowUpToLine,
3019
+ AtSign,
3020
+ Atom,
3021
+ Award,
3022
+ Axe,
3023
+ Baby,
3024
+ Backpack,
3025
+ Badge,
3026
+ BadgeAlert,
3027
+ BadgeCent,
3028
+ BadgeCheck,
3029
+ BadgeDollarSign,
3030
+ BadgeEuro,
3031
+ BadgeIndianRupee,
3032
+ BadgeInfo,
3033
+ BadgeJapaneseYen,
3034
+ BadgeMinus,
3035
+ BadgePercent,
3036
+ BadgePlus,
3037
+ BadgePoundSterling,
3038
+ BadgeQuestionMark,
3039
+ BadgeRussianRuble,
3040
+ BadgeSwissFranc,
3041
+ BadgeTurkishLira,
3042
+ BadgeX,
3043
+ BaggageClaim,
3044
+ Banana,
3045
+ Banknote,
3046
+ BanknoteArrowDown,
3047
+ BanknoteArrowUp,
3048
+ BanknoteX,
3049
+ BarChartHorizontalBig,
3050
+ Barcode,
3051
+ Barrel,
3052
+ Bath,
3053
+ Beaker,
3054
+ Bean,
3055
+ BeanOff,
3056
+ Beef,
3057
+ Beer,
3058
+ BeerOff,
3059
+ Bell,
3060
+ BellDot,
3061
+ BetweenHorizontalEnd,
3062
+ BetweenHorizontalStart,
3063
+ BetweenVerticalEnd,
3064
+ BetweenVerticalStart,
3065
+ Bike,
3066
+ Binoculars,
3067
+ Biohazard,
3068
+ Bird,
3069
+ Birdhouse,
3070
+ Bitcoin,
3071
+ Blend,
3072
+ BluetoothConnected,
3073
+ Bolt,
3074
+ Bomb,
3075
+ Bone,
3076
+ Book,
3077
+ BookA,
3078
+ BookAlert,
3079
+ BookCheck,
3080
+ BookCopy,
3081
+ BookHeart,
3082
+ BookImage,
3083
+ BookKey,
3084
+ BookLock,
3085
+ BookMarked,
3086
+ BookMinus,
3087
+ BookOpen,
3088
+ BookOpenCheck,
3089
+ BookPlus,
3090
+ BookSearch,
3091
+ BookText,
3092
+ BookType,
3093
+ BookUser,
3094
+ BookX,
3095
+ Bookmark,
3096
+ BookmarkCheck,
3097
+ BoomBox,
3098
+ Bot,
3099
+ BotMessageSquare,
3100
+ BotOff,
3101
+ BottleWine,
3102
+ BowArrow,
3103
+ Box,
3104
+ Boxes,
3105
+ Braces,
3106
+ Brackets,
3107
+ Brain,
3108
+ BrainCircuit,
3109
+ BrainCog,
3110
+ BriefcaseBusiness,
3111
+ BriefcaseConveyorBelt,
3112
+ Brush,
3113
+ BrushCleaning,
3114
+ Bug,
3115
+ BugOff,
3116
+ BugPlay,
3117
+ Building2,
3118
+ BusFront,
3119
+ CableCar,
3120
+ Cake,
3121
+ CakeSlice,
3122
+ Calculator,
3123
+ Calendar,
3124
+ Calendar1,
3125
+ CalendarArrowDown,
3126
+ CalendarArrowUp,
3127
+ CalendarCheck,
3128
+ CalendarCheck2,
3129
+ CalendarClock,
3130
+ CalendarCog,
3131
+ CalendarDays,
3132
+ CalendarFold,
3133
+ CalendarHeart,
3134
+ CalendarMinus,
3135
+ CalendarMinus2,
3136
+ CalendarOff,
3137
+ CalendarPlus,
3138
+ CalendarPlus2,
3139
+ CalendarRange,
3140
+ CalendarSearch,
3141
+ CalendarSync,
3142
+ CalendarX,
3143
+ CalendarX2,
3144
+ Calendars,
3145
+ Camera,
3146
+ CameraOff,
3147
+ Candy,
3148
+ CandyCane,
3149
+ CandyOff,
3150
+ CarFront,
3151
+ Caravan,
3152
+ Carrot,
3153
+ CassetteTape,
3154
+ Castle,
3155
+ Cat,
3156
+ Cctv,
3157
+ ChartArea,
3158
+ ChartCandlestick,
3159
+ ChartNoAxesGantt,
3160
+ ChartPie,
3161
+ Check,
3162
+ CheckCheck,
3163
+ ChefHat,
3164
+ Cherry,
3165
+ ChessBishop,
3166
+ ChessKing,
3167
+ ChessKnight,
3168
+ ChessPawn,
3169
+ ChessQueen,
3170
+ ChessRook,
3171
+ ChevronDown,
3172
+ ChevronRight,
3173
+ ChevronUp,
3174
+ ChevronsDown,
3175
+ ChevronsLeft,
3176
+ ChevronsLeftRightEllipsis,
3177
+ ChevronsRight,
3178
+ ChevronsUp,
3179
+ Cigarette,
3180
+ CigaretteOff,
3181
+ Circle,
3182
+ CircleAlert,
3183
+ CircleArrowDown,
3184
+ CircleArrowLeft,
3185
+ CircleArrowOutDownLeft,
3186
+ CircleArrowOutDownRight,
3187
+ CircleArrowOutUpLeft,
3188
+ CircleArrowOutUpRight,
3189
+ CircleArrowRight,
3190
+ CircleArrowUp,
3191
+ CircleCheck,
3192
+ CircleCheckBig,
3193
+ CircleChevronDown,
3194
+ CircleChevronLeft,
3195
+ CircleChevronRight,
3196
+ CircleChevronUp,
3197
+ CircleDashed,
3198
+ CircleDivide,
3199
+ CircleDollarSign,
3200
+ CircleDot,
3201
+ CircleDotDashed,
3202
+ CircleEllipsis,
3203
+ CircleEqual,
3204
+ CircleFadingArrowUp,
3205
+ CircleFadingPlus,
3206
+ CircleGauge,
3207
+ CircleHelp,
3208
+ CircleMinus,
3209
+ CircleOff,
3210
+ CircleParking,
3211
+ CircleParkingOff,
3212
+ CirclePause,
3213
+ CirclePercent,
3214
+ CirclePile,
3215
+ CirclePlay,
3216
+ CirclePlus,
3217
+ CirclePoundSterling,
3218
+ CirclePower,
3219
+ CircleQuestionMark,
3220
+ CircleSlash,
3221
+ CircleSlash2,
3222
+ CircleSlashed,
3223
+ CircleSmall,
3224
+ CircleStar,
3225
+ CircleStop,
3226
+ CircleUser,
3227
+ CircleUserRound,
3228
+ CircleX,
3229
+ CircuitBoard,
3230
+ Citrus,
3231
+ Clapperboard,
3232
+ ClipboardCheck,
3233
+ ClipboardClock,
3234
+ Clock,
3235
+ Clock1,
3236
+ Clock10,
3237
+ Clock11,
3238
+ Clock12,
3239
+ Clock2,
3240
+ Clock3,
3241
+ Clock4,
3242
+ Clock5,
3243
+ Clock6,
3244
+ Clock7,
3245
+ Clock8,
3246
+ Clock9,
3247
+ ClockAlert,
3248
+ ClockArrowDown,
3249
+ ClockArrowUp,
3250
+ ClockCheck,
3251
+ ClockFading,
3252
+ ClockPlus,
3253
+ Cloud,
3254
+ CloudAlert,
3255
+ CloudBackup,
3256
+ CloudDownload,
3257
+ CloudSync,
3258
+ CloudUpload,
3259
+ Cloudy,
3260
+ Clover,
3261
+ Club,
3262
+ Code,
3263
+ CodeXml,
3264
+ Coffee,
3265
+ Cog,
3266
+ Coins,
3267
+ Combine,
3268
+ Compass,
3269
+ Computer,
3270
+ ConciergeBell,
3271
+ Contact,
3272
+ ContactRound,
3273
+ Contrast,
3274
+ Cookie,
3275
+ CookingPot,
3276
+ CopyCheck,
3277
+ Cpu,
3278
+ CreditCard,
3279
+ Croissant,
3280
+ Crop,
3281
+ Crosshair,
3282
+ Crown,
3283
+ Cuboid,
3284
+ CupSoda,
3285
+ Currency,
3286
+ Database,
3287
+ DatabaseBackup,
3288
+ Dessert,
3289
+ Diameter,
3290
+ Diamond,
3291
+ DiamondMinus,
3292
+ DiamondPercent,
3293
+ DiamondPlus,
3294
+ Dice1,
3295
+ Dice2,
3296
+ Dice3,
3297
+ Dice4,
3298
+ Dice5,
3299
+ Dice6,
3300
+ Dices,
3301
+ Diff,
3302
+ Disc2,
3303
+ DivideCircle,
3304
+ DnaOff,
3305
+ Dock,
3306
+ Dog,
3307
+ DollarSign,
3308
+ Donut,
3309
+ DoorClosed,
3310
+ DoorClosedLocked,
3311
+ DoorOpen,
3312
+ Download,
3313
+ DownloadCloud,
3314
+ DraftingCompass,
3315
+ Drill,
3316
+ Droplet,
3317
+ DropletOff,
3318
+ Drum,
3319
+ Drumstick,
3320
+ Eclipse,
3321
+ Edit,
3322
+ Edit3,
3323
+ Egg,
3324
+ EggFried,
3325
+ EggOff,
3326
+ EthernetPort,
3327
+ Euro,
3328
+ ExternalLink,
3329
+ Eye,
3330
+ EyeClosed,
3331
+ EyeOff,
3332
+ FastForward,
3333
+ Feather,
3334
+ File,
3335
+ FileArchive,
3336
+ FileAxis3d,
3337
+ FileBadge,
3338
+ FileBox,
3339
+ FileBraces,
3340
+ FileBracesCorner,
3341
+ FileChartColumn,
3342
+ FileChartColumnIncreasing,
3343
+ FileChartLine,
3344
+ FileChartPie,
3345
+ FileCheck,
3346
+ FileCheckCorner,
3347
+ FileClock,
3348
+ FileCode,
3349
+ FileCodeCorner,
3350
+ FileCog,
3351
+ FileDiff,
3352
+ FileDigit,
3353
+ FileDown,
3354
+ FileExclamationPoint,
3355
+ FileHeadphone,
3356
+ FileHeart,
3357
+ FileImage,
3358
+ FileInput,
3359
+ FileKey,
3360
+ FileLock,
3361
+ FileMinus,
3362
+ FileMinusCorner,
3363
+ FileMusic,
3364
+ FileOutput,
3365
+ FilePen,
3366
+ FilePenLine,
3367
+ FilePlay,
3368
+ FilePlus,
3369
+ FilePlusCorner,
3370
+ FileQuestionMark,
3371
+ FileScan,
3372
+ FileSearch,
3373
+ FileSearchCorner,
3374
+ FileSignal,
3375
+ FileSliders,
3376
+ FileSpreadsheet,
3377
+ FileStack,
3378
+ FileSymlink,
3379
+ FileTerminal,
3380
+ FileText,
3381
+ FileType,
3382
+ FileTypeCorner,
3383
+ FileUp,
3384
+ FileUser,
3385
+ FileVideoCamera,
3386
+ FileVolume,
3387
+ FileX,
3388
+ FileXCorner,
3389
+ Files,
3390
+ Film,
3391
+ Filter,
3392
+ FireExtinguisher,
3393
+ Fish,
3394
+ FishOff,
3395
+ FishSymbol,
3396
+ FishingHook,
3397
+ Flag,
3398
+ FlagOff,
3399
+ Flame,
3400
+ FlameKindling,
3401
+ Flashlight,
3402
+ FlashlightOff,
3403
+ FlaskConical,
3404
+ FlaskConicalOff,
3405
+ FlaskRound,
3406
+ FlipHorizontal2,
3407
+ FlipVertical2,
3408
+ Flower,
3409
+ Focus,
3410
+ Folder,
3411
+ FolderArchive,
3412
+ FolderCheck,
3413
+ FolderClock,
3414
+ FolderClosed,
3415
+ FolderCode,
3416
+ FolderCog,
3417
+ FolderDot,
3418
+ FolderDown,
3419
+ FolderGit,
3420
+ FolderGit2,
3421
+ FolderHeart,
3422
+ FolderInput,
3423
+ FolderKanban,
3424
+ FolderKey,
3425
+ FolderLock,
3426
+ FolderMinus,
3427
+ FolderOpen,
3428
+ FolderOpenDot,
3429
+ FolderOutput,
3430
+ FolderPen,
3431
+ FolderPlus,
3432
+ FolderRoot,
3433
+ FolderSearch,
3434
+ FolderSearch2,
3435
+ FolderSymlink,
3436
+ FolderSync,
3437
+ FolderTree,
3438
+ FolderUp,
3439
+ FolderX,
3440
+ Folders,
3441
+ Footprints,
3442
+ Forward,
3443
+ Frame,
3444
+ Fullscreen,
3445
+ GalleryHorizontal,
3446
+ GalleryHorizontalEnd,
3447
+ GalleryThumbnails,
3448
+ GalleryVertical,
3449
+ GalleryVerticalEnd,
3450
+ Gamepad,
3451
+ Gamepad2,
3452
+ GamepadDirectional,
3453
+ GanttChart,
3454
+ Gauge,
3455
+ GaugeCircle,
3456
+ Gavel,
3457
+ Gem,
3458
+ GeorgianLari,
3459
+ Ghost,
3460
+ Gift,
3461
+ GitBranch,
3462
+ GitMerge,
3463
+ GitPullRequest,
3464
+ GlassWater,
3465
+ Globe2,
3466
+ Goal,
3467
+ Gpu,
3468
+ GraduationCap,
3469
+ Grape,
3470
+ Grid2x2Check,
3471
+ Group,
3472
+ Guitar,
3473
+ Ham,
3474
+ Hamburger,
3475
+ Hammer,
3476
+ HandCoins,
3477
+ HandFist,
3478
+ HandHeart,
3479
+ HandPlatter,
3480
+ Handbag,
3481
+ Handshake,
3482
+ HardDriveDownload,
3483
+ HardDriveUpload,
3484
+ HardHat,
3485
+ Hash,
3486
+ HatGlasses,
3487
+ HdmiPort,
3488
+ HeadphoneOff,
3489
+ Headphones,
3490
+ Headset,
3491
+ Heart,
3492
+ HeartCrack,
3493
+ HeartMinus,
3494
+ HeartOff,
3495
+ HeartPlus,
3496
+ Heater,
3497
+ Helicopter,
3498
+ HelpCircle,
3499
+ Hexagon,
3500
+ History,
3501
+ Home,
3502
+ Hop,
3503
+ HopOff,
3504
+ Hospital,
3505
+ Hotel,
3506
+ Hourglass,
3507
+ HouseHeart,
3508
+ IceCreamBowl,
3509
+ IceCreamCone,
3510
+ Image,
3511
+ ImageDown,
3512
+ ImageMinus,
3513
+ ImageOff,
3514
+ ImagePlay,
3515
+ ImagePlus,
3516
+ ImageUp,
3517
+ ImageUpscale,
3518
+ Images,
3519
+ Import,
3520
+ Inbox,
3521
+ IndianRupee,
3522
+ Info,
3523
+ InspectionPanel,
3524
+ JapaneseYen,
3525
+ Joystick,
3526
+ Key,
3527
+ KeyboardMusic,
3528
+ LampCeiling,
3529
+ LandPlot,
3530
+ Landmark,
3531
+ LaptopMinimalCheck,
3532
+ Layers2,
3533
+ LayoutList,
3534
+ Leaf,
3535
+ LeafyGreen,
3536
+ Library,
3537
+ LibraryBig,
3538
+ LifeBuoy,
3539
+ Lightbulb,
3540
+ LightbulbOff,
3541
+ LineChart,
3542
+ Link,
3543
+ ListCheck,
3544
+ ListTree,
3545
+ LoaderCircle,
3546
+ Lock,
3547
+ Lollipop,
3548
+ Luggage,
3549
+ Mail,
3550
+ MailCheck,
3551
+ Mailbox,
3552
+ Mails,
3553
+ Map,
3554
+ MapMinus,
3555
+ MapPin,
3556
+ MapPinCheck,
3557
+ MapPinCheckInside,
3558
+ MapPinHouse,
3559
+ MapPinMinus,
3560
+ MapPinMinusInside,
3561
+ MapPinOff,
3562
+ MapPinPen,
3563
+ MapPinPlus,
3564
+ MapPinPlusInside,
3565
+ MapPinX,
3566
+ MapPinXInside,
3567
+ MapPinned,
3568
+ Martini,
3569
+ Medal,
3570
+ MemoryStick,
3571
+ Menu,
3572
+ Merge,
3573
+ MessageCircle,
3574
+ MessageCircleCode,
3575
+ MessageCircleDashed,
3576
+ MessageCircleHeart,
3577
+ MessageCircleMore,
3578
+ MessageCircleOff,
3579
+ MessageCirclePlus,
3580
+ MessageCircleQuestionMark,
3581
+ MessageCircleReply,
3582
+ MessageCircleWarning,
3583
+ MessageCircleX,
3584
+ MessageSquare,
3585
+ MessageSquareCode,
3586
+ MessageSquareDashed,
3587
+ MessageSquareDiff,
3588
+ MessageSquareDot,
3589
+ MessageSquareHeart,
3590
+ MessageSquareLock,
3591
+ MessageSquareMore,
3592
+ MessageSquareOff,
3593
+ MessageSquarePlus,
3594
+ MessageSquareQuote,
3595
+ MessageSquareReply,
3596
+ MessageSquareShare,
3597
+ MessageSquareText,
3598
+ MessageSquareWarning,
3599
+ MessageSquareX,
3600
+ MessagesSquare,
3601
+ Mic,
3602
+ Microscope,
3603
+ Microwave,
3604
+ Milestone,
3605
+ Milk,
3606
+ MilkOff,
3607
+ Minus,
3608
+ MinusCircle,
3609
+ MonitorCheck,
3610
+ Moon,
3611
+ MoreHorizontal,
3612
+ Mountain,
3613
+ Music,
3614
+ Music2,
3615
+ Music3,
3616
+ Music4,
3617
+ Newspaper,
3618
+ Nfc,
3619
+ Notebook,
3620
+ NotebookPen,
3621
+ NotebookTabs,
3622
+ NotebookText,
3623
+ NotepadText,
3624
+ NotepadTextDashed,
3625
+ Nut,
3626
+ NutOff,
3627
+ Omega,
3628
+ Orbit,
3629
+ Origami,
3630
+ Package,
3631
+ Package2,
3632
+ PackageOpen,
3633
+ PackageSearch,
3634
+ PaintBucket,
3635
+ PaintRoller,
3636
+ Paintbrush,
3637
+ PaintbrushVertical,
3638
+ Palette,
3639
+ Panda,
3640
+ Paperclip,
3641
+ Parentheses,
3642
+ PartyPopper,
3643
+ PauseCircle,
3644
+ PawPrint,
3645
+ PcCase,
3646
+ Pen,
3647
+ PenLine,
3648
+ PenOff,
3649
+ Pencil,
3650
+ PencilLine,
3651
+ PencilOff,
3652
+ PencilRuler,
3653
+ Percent,
3654
+ PercentCircle,
3655
+ PersonStanding,
3656
+ PhilippinePeso,
3657
+ Phone,
3658
+ Pickaxe,
3659
+ PieChart,
3660
+ PiggyBank,
3661
+ Pin,
3662
+ Pipette,
3663
+ Pizza,
3664
+ Plane,
3665
+ PlaneLanding,
3666
+ PlaneTakeoff,
3667
+ PlayCircle,
3668
+ Plug2,
3669
+ Plus,
3670
+ PlusCircle,
3671
+ PocketKnife,
3672
+ Podcast,
3673
+ Popcorn,
3674
+ Popsicle,
3675
+ PoundSterling,
3676
+ PowerCircle,
3677
+ Presentation,
3678
+ Projector,
3679
+ Proportions,
3680
+ Puzzle,
3681
+ Pyramid,
3682
+ QrCode,
3683
+ Rabbit,
3684
+ Radiation,
3685
+ Radio,
3686
+ RadioReceiver,
3687
+ RadioTower,
3688
+ Radius,
3689
+ Rainbow,
3690
+ Rat,
3691
+ Ratio,
3692
+ Receipt,
3693
+ ReceiptCent,
3694
+ ReceiptEuro,
3695
+ ReceiptIndianRupee,
3696
+ ReceiptJapaneseYen,
3697
+ ReceiptPoundSterling,
3698
+ ReceiptRussianRuble,
3699
+ ReceiptSwissFranc,
3700
+ ReceiptText,
3701
+ ReceiptTurkishLira,
3702
+ RectangleGoggles,
3703
+ Recycle,
3704
+ Redo2,
3705
+ RefreshCcwDot,
3706
+ Refrigerator,
3707
+ Repeat1,
3708
+ Repeat2,
3709
+ Rewind,
3710
+ Ribbon,
3711
+ Rocket,
3712
+ Rose,
3713
+ RotateCcw,
3714
+ RotateCcwSquare,
3715
+ RotateCw,
3716
+ RotateCwSquare,
3717
+ Rss,
3718
+ Ruler,
3719
+ RulerDimensionLine,
3720
+ RussianRuble,
3721
+ Sailboat,
3722
+ Salad,
3723
+ Sandwich,
3724
+ Satellite,
3725
+ SaudiRiyal,
3726
+ Save,
3727
+ SaveAll,
3728
+ SaveOff,
3729
+ Scale,
3730
+ Scan,
3731
+ ScanBarcode,
3732
+ ScanEye,
3733
+ ScanFace,
3734
+ ScanLine,
3735
+ ScanQrCode,
3736
+ ScanSearch,
3737
+ School,
3738
+ Scissors,
3739
+ ScissorsLineDashed,
3740
+ Scroll,
3741
+ ScrollText,
3742
+ Search,
3743
+ SearchAlert,
3744
+ SearchCheck,
3745
+ SearchCode,
3746
+ SearchSlash,
3747
+ SearchX,
3748
+ ServerCog,
3749
+ Settings,
3750
+ Settings2,
3751
+ Shapes,
3752
+ Share,
3753
+ Share2,
3754
+ Sheet,
3755
+ Shell,
3756
+ Shield,
3757
+ ShieldAlert,
3758
+ ShieldBan,
3759
+ ShieldCheck,
3760
+ ShieldEllipsis,
3761
+ ShieldHalf,
3762
+ ShieldMinus,
3763
+ ShieldOff,
3764
+ ShieldPlus,
3765
+ ShieldQuestionMark,
3766
+ ShieldX,
3767
+ Ship,
3768
+ ShipWheel,
3769
+ Shirt,
3770
+ ShoppingBag,
3771
+ ShoppingBasket,
3772
+ ShoppingCart,
3773
+ Shovel,
3774
+ ShowerHead,
3775
+ Shredder,
3776
+ Shrimp,
3777
+ Shuffle,
3778
+ Sigma,
3779
+ Signpost,
3780
+ SignpostBig,
3781
+ SkipBack,
3782
+ Skull,
3783
+ SlidersHorizontal,
3784
+ SmartphoneCharging,
3785
+ SmartphoneNfc,
3786
+ SmilePlus,
3787
+ Snail,
3788
+ Snowflake,
3789
+ SoapDispenserDroplet,
3790
+ Sofa,
3791
+ SolarPanel,
3792
+ Soup,
3793
+ Spade,
3794
+ Sparkle,
3795
+ Sparkles,
3796
+ Speaker,
3797
+ SplinePointer,
3798
+ Spool,
3799
+ Spotlight,
3800
+ SprayCan,
3801
+ Sprout,
3802
+ Square,
3803
+ SquareActivity,
3804
+ SquareArrowDown,
3805
+ SquareArrowDownLeft,
3806
+ SquareArrowDownRight,
3807
+ SquareArrowOutUpRight,
3808
+ SquareArrowUpRight,
3809
+ SquareBottomDashedScissors,
3810
+ SquareChartGantt,
3811
+ SquareCheck,
3812
+ SquareDashedBottom,
3813
+ SquareDashedBottomCode,
3814
+ SquareDashedMousePointer,
3815
+ SquareLibrary,
3816
+ SquareMinus,
3817
+ SquareMousePointer,
3818
+ SquarePercent,
3819
+ SquarePlay,
3820
+ SquarePlus,
3821
+ SquareScissors,
3822
+ SquareStack,
3823
+ SquareStar,
3824
+ Squirrel,
3825
+ Stamp,
3826
+ Star,
3827
+ StarHalf,
3828
+ StarOff,
3829
+ Stars,
3830
+ Stethoscope,
3831
+ Sticker,
3832
+ StickyNote,
3833
+ StopCircle,
3834
+ Store,
3835
+ Sun,
3836
+ SunDim,
3837
+ Sunrise,
3838
+ Sunset,
3839
+ SwatchBook,
3840
+ SwissFranc,
3841
+ Sword,
3842
+ Swords,
3843
+ Syringe,
3844
+ Table,
3845
+ Table2,
3846
+ TableCellsMerge,
3847
+ TableCellsSplit,
3848
+ TableColumnsSplit,
3849
+ TableProperties,
3850
+ TableRowsSplit,
3851
+ TabletSmartphone,
3852
+ Tag,
3853
+ Tags,
3854
+ Tally1,
3855
+ Tally2,
3856
+ Tally3,
3857
+ Tally4,
3858
+ Tally5,
3859
+ Tangent,
3860
+ Target,
3861
+ Telescope,
3862
+ Tent,
3863
+ TentTree,
3864
+ Terminal,
3865
+ TerminalSquare,
3866
+ TestTube,
3867
+ TestTubeDiagonal,
3868
+ TestTubes,
3869
+ Text,
3870
+ Theater,
3871
+ ThumbsDown,
3872
+ ThumbsUp,
3873
+ TicketPercent,
3874
+ Tickets,
3875
+ TicketsPlane,
3876
+ Timer,
3877
+ TimerOff,
3878
+ TimerReset,
3879
+ ToolCase,
3880
+ Toolbox,
3881
+ Torus,
3882
+ TowerControl,
3883
+ ToyBrick,
3884
+ Tractor,
3885
+ TrainFrontTunnel,
3886
+ Trash,
3887
+ Trash2,
3888
+ Trees,
3889
+ TrendingDown,
3890
+ Trophy,
3891
+ TurkishLira,
3892
+ Turtle,
3893
+ TvMinimalPlay,
3894
+ Undo2,
3895
+ Ungroup,
3896
+ Upload,
3897
+ UploadCloud,
3898
+ Usb,
3899
+ User,
3900
+ UserCircle2,
3901
+ UserRoundSearch,
3902
+ UserSearch,
3903
+ Users,
3904
+ UsersRound,
3905
+ Utensils,
3906
+ UtensilsCrossed,
3907
+ Vault,
3908
+ VectorSquare,
3909
+ Vegan,
3910
+ VenetianMask,
3911
+ Video,
3912
+ VideoOff,
3913
+ Videotape,
3914
+ View,
3915
+ Voicemail,
3916
+ Volleyball,
3917
+ Volume1,
3918
+ Vote,
3919
+ Wallet,
3920
+ WalletCards,
3921
+ WalletMinimal,
3922
+ Wand,
3923
+ WandSparkles,
3924
+ WashingMachine,
3925
+ Watch,
3926
+ Waypoints,
3927
+ Webcam,
3928
+ Webhook,
3929
+ WebhookOff,
3930
+ Wheat,
3931
+ WheatOff,
3932
+ Wifi,
3933
+ WifiCog,
3934
+ Wine,
3935
+ WineOff,
3936
+ Worm,
3937
+ Wrench,
3938
+ XCircle,
3939
+ Zap,
3940
+ ZapOff,
3941
+ ZoomIn,
3942
+ ZoomOut
3943
+ };
3944
+ function getStaticIcon(name) {
3945
+ return MAP[name] ?? null;
3946
+ }
3947
+ //#endregion
3948
+ //#region src/components/blocks/icon-picker/index.tsx
3949
+ const ICON_COLORS = ["white", ...THEME_COLORS];
3950
+ function IconPicker({ value, onValueChange, valueColor = "white", onColorChange, className, imagePreviewSrc, onImageSelect, onImageClear, imageUploadState, imageUploadError, imageUploadProgress }) {
3951
+ const [search, setSearch] = React.useState("");
3952
+ const imageUploadId = React.useId();
3953
+ const filteredIcons = React.useMemo(() => {
3954
+ if (!search.trim()) return PICKER_ICON_NAMES;
3955
+ const lower = search.toLowerCase();
3956
+ return PICKER_ICON_NAMES.filter((name) => {
3957
+ if (name.toLowerCase().includes(lower)) return true;
3958
+ return getIconCategories(name).some((cat) => cat.includes(lower));
3959
+ }).sort((a, b) => a.localeCompare(b));
3960
+ }, [search]);
3961
+ const iconColor = valueColor === "white" ? "white" : colorPalette[valueColor];
3962
+ const colorPicker = onColorChange && /* @__PURE__ */ jsxs("div", {
3963
+ className: "space-y-2",
3964
+ children: [/* @__PURE__ */ jsx(Label, { children: "Icon Color" }), /* @__PURE__ */ jsx("div", {
3965
+ className: "flex flex-wrap gap-2",
3966
+ children: ICON_COLORS.map((c) => /* @__PURE__ */ jsx("button", {
3967
+ "aria-label": `Select ${c} color`,
3968
+ className: cn("flex h-4 w-4 items-center justify-center rounded-full border-2 transition-all hover:scale-110", valueColor === c ? "border-foreground ring-2 ring-ring ring-offset-2" : "border-border hover:border-foreground/50"),
3969
+ onClick: () => onColorChange(c),
3970
+ style: c === "white" ? { backgroundColor: "#94a3b8" } : { backgroundColor: colorPalette[c] },
3971
+ type: "button",
3972
+ children: valueColor === c && /* @__PURE__ */ jsx(Check, {
3973
+ className: "h-2 w-2 text-white drop-shadow-sm",
3974
+ strokeWidth: 3
3975
+ })
3976
+ }, c))
3977
+ })]
3978
+ });
3979
+ const iconGrid = /* @__PURE__ */ jsxs("div", {
3980
+ className: "space-y-2",
3981
+ children: [
3982
+ /* @__PURE__ */ jsx(Label, { children: "Icon" }),
3983
+ /* @__PURE__ */ jsx(Input, {
3984
+ className: "h-9",
3985
+ onChange: (e) => setSearch(e.target.value),
3986
+ placeholder: "Search icons...",
3987
+ value: search
3988
+ }),
3989
+ /* @__PURE__ */ jsx("div", {
3990
+ className: "h-64 overflow-auto rounded-md border p-2",
3991
+ "data-icon-grid": true,
3992
+ children: /* @__PURE__ */ jsx("div", {
3993
+ className: "grid grid-cols-8 gap-1",
3994
+ children: filteredIcons.map((iconName) => /* @__PURE__ */ jsx("button", {
3995
+ "aria-label": `Select ${iconName} icon`,
3996
+ className: cn("flex aspect-square w-full items-center justify-center rounded-md transition-colors", value === iconName ? "bg-primary text-primary-foreground" : "hover:bg-muted"),
3997
+ onClick: () => onValueChange(iconName),
3998
+ title: iconName,
3999
+ type: "button",
4000
+ children: (() => {
4001
+ const Icon = getStaticIcon(iconName) ?? ListMusic;
4002
+ return /* @__PURE__ */ jsx(Icon, {
4003
+ size: 18,
4004
+ style: { color: value === iconName ? "white" : iconColor }
4005
+ });
4006
+ })()
4007
+ }, iconName))
4008
+ })
4009
+ })
4010
+ ]
4011
+ });
4012
+ if (!onImageSelect) return /* @__PURE__ */ jsxs("div", {
4013
+ className: cn("space-y-3", className),
4014
+ children: [colorPicker, iconGrid]
4015
+ });
4016
+ const uploadStatusMessage = imageUploadState === "uploading" ? "Uploading…" : imageUploadState === "complete" ? "Upload complete" : imageUploadState === "error" ? imageUploadError ?? "Upload failed" : null;
4017
+ return /* @__PURE__ */ jsxs("div", {
4018
+ className: cn("space-y-3", className),
4019
+ children: [colorPicker, /* @__PURE__ */ jsxs(Tabs, {
4020
+ defaultValue: "icon",
4021
+ children: [
4022
+ /* @__PURE__ */ jsxs(TabsList, { children: [/* @__PURE__ */ jsx(TabsTrigger, {
4023
+ value: "icon",
4024
+ children: "Icon"
4025
+ }), /* @__PURE__ */ jsx(TabsTrigger, {
4026
+ value: "image",
4027
+ children: "Image"
4028
+ })] }),
4029
+ /* @__PURE__ */ jsx(TabsContent, {
4030
+ value: "icon",
4031
+ children: iconGrid
4032
+ }),
4033
+ /* @__PURE__ */ jsx(TabsContent, {
4034
+ value: "image",
4035
+ children: /* @__PURE__ */ jsxs("div", {
4036
+ className: "space-y-2",
4037
+ children: [
4038
+ /* @__PURE__ */ jsx(Label, {
4039
+ htmlFor: imageUploadId,
4040
+ children: "Upload image"
4041
+ }),
4042
+ /* @__PURE__ */ jsx(Input, {
4043
+ accept: "image/*",
4044
+ id: imageUploadId,
4045
+ onChange: (e) => {
4046
+ const file = e.target.files?.[0];
4047
+ if (file) onImageSelect(file);
4048
+ },
4049
+ type: "file"
4050
+ }),
4051
+ imagePreviewSrc && /* @__PURE__ */ jsxs("div", {
4052
+ className: "flex items-center gap-3",
4053
+ children: [/* @__PURE__ */ jsx("img", {
4054
+ alt: "Selected upload preview",
4055
+ className: "h-16 w-16 rounded-md border object-cover",
4056
+ src: imagePreviewSrc
4057
+ }), onImageClear && /* @__PURE__ */ jsx("button", {
4058
+ className: "text-muted-foreground hover:text-foreground text-sm font-normal",
4059
+ onClick: onImageClear,
4060
+ type: "button",
4061
+ children: "Clear"
4062
+ })]
4063
+ }),
4064
+ imageUploadState === "uploading" && imageUploadProgress !== void 0 && /* @__PURE__ */ jsx(Progress, { value: imageUploadProgress }),
4065
+ uploadStatusMessage && /* @__PURE__ */ jsx("p", {
4066
+ "aria-live": "polite",
4067
+ className: imageUploadState === "error" ? "text-destructive text-sm font-normal" : "text-muted-foreground text-sm font-normal",
4068
+ children: uploadStatusMessage
4069
+ })
4070
+ ]
4071
+ })
4072
+ })
4073
+ ]
4074
+ })]
4075
+ });
4076
+ }
4077
+ //#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 };