@moontra/moonui-pro 2.24.12 → 2.25.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.global.js +140 -132
- package/dist/index.global.js.map +1 -1
- package/dist/index.mjs +1421 -551
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -4,7 +4,7 @@ import { twMerge } from 'tailwind-merge';
|
|
|
4
4
|
import * as t from 'react';
|
|
5
5
|
import t__default, { useState, useMemo, useCallback, useRef, useEffect, forwardRef, createContext, useContext, useLayoutEffect, useDebugValue, Component } from 'react';
|
|
6
6
|
import * as AccordionPrimitive2 from '@radix-ui/react-accordion';
|
|
7
|
-
import { Loader2, Play, ExternalLink, ChevronDown, Info, AlertCircle, AlertTriangle, Check, X, MoreHorizontal, Minus, Clock, ChevronUp, Search, Mic, MicOff, Settings, RefreshCw, Zap, ChevronRight, Crown, Circle, ChevronLeft, Plus, Lock, Sparkles, ZoomOut, ZoomIn, Pause, VolumeX, Volume2, Download, Maximize2, Filter, Image as Image$1, Video, RotateCw, Minimize2, BarChart3, Menu, Bell, CheckCheck, CheckCircle, Palette, User, Settings2, LogOut, Edit3, LayoutGrid, Upload, Share2, Save, Phone, Globe, Eye, CheckCircle2, RotateCcw, Copy, Share, Trash2, CreditCard, XCircle, HelpCircle, Bold as Bold$1, Italic as Italic$1, Underline as Underline$1, Strikethrough, AlignLeft, AlignCenter, AlignRight, AlignJustify, List, ListOrdered, Quote, Code as Code$1, Link as Link$1, Undo, Redo, Edit, GripVertical, Type, Heading1, Heading2, Heading3, CheckSquare, Highlighter, Link2, Table as Table$1, Wand2, Maximize, FileText, Briefcase, MessageSquare, Heart, GraduationCap, Languages, Lightbulb, MoreVertical, TrendingUp, Activity, BellOff, CalendarIcon,
|
|
7
|
+
import { Loader2, Play, ExternalLink, ChevronDown, Info, AlertCircle, AlertTriangle, Check, X, MoreHorizontal, Minus, Clock, ChevronUp, Search, Mic, MicOff, Settings, RefreshCw, Zap, ChevronRight, Crown, Circle, ChevronLeft, Plus, Lock, Sparkles, ZoomOut, ZoomIn, Pause, VolumeX, Volume2, Download, Maximize2, Filter, Image as Image$1, Video, RotateCw, Minimize2, BarChart3, Menu, Bell, CheckCheck, CheckCircle, Palette, User, Settings2, LogOut, Edit3, LayoutGrid, Upload, Share2, Save, Phone, Globe, Eye, CheckCircle2, RotateCcw, Copy, Share, Trash2, CreditCard, XCircle, HelpCircle, Bold as Bold$1, Italic as Italic$1, Underline as Underline$1, Strikethrough, AlignLeft, AlignCenter, AlignRight, AlignJustify, List, ListOrdered, Quote, Code as Code$1, Link as Link$1, Undo, Redo, Edit, GripVertical, Type, Heading1, Heading2, Heading3, CheckSquare, Highlighter, Link2, Table as Table$1, Wand2, Maximize, FileText, Briefcase, MessageSquare, Heart, GraduationCap, Languages, Lightbulb, MoreVertical, TrendingUp, Activity, BellOff, Target, ArrowUpRight, ArrowDownRight, CalendarIcon, MapPin, Navigation, ArrowUp, ArrowDown, ArrowUpDown, Calendar as Calendar$1, DollarSign, Users, Map as Map$1, Music, Archive, File, FileSpreadsheet, FileJson, FileDown, ChevronsLeft, ChevronsRight, Star, Shield, Award, Gem, Flame, Repeat, Move, EyeOff, Timer, Square, Cpu, GitBranch, ArrowRight, Trash, MessageCircle, Paperclip, Printer, TrendingDown, Grip, Unlock, Github, Server, Monitor, MemoryStick, HardDrive, Network, Columns, Pin, Sun, Moon, Send, Tag, Flag, Trophy, GitFork, Package } from 'lucide-react';
|
|
8
8
|
import { cva } from 'class-variance-authority';
|
|
9
9
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
10
10
|
import * as AvatarPrimitive from '@radix-ui/react-avatar';
|
|
@@ -1725,32 +1725,6 @@ var require_core = __commonJS({
|
|
|
1725
1725
|
highlight.default = highlight;
|
|
1726
1726
|
}
|
|
1727
1727
|
});
|
|
1728
|
-
|
|
1729
|
-
// #style-inject:#style-inject
|
|
1730
|
-
function styleInject(css2, { insertAt } = {}) {
|
|
1731
|
-
if (!css2 || typeof document === "undefined")
|
|
1732
|
-
return;
|
|
1733
|
-
const head = document.head || document.getElementsByTagName("head")[0];
|
|
1734
|
-
const style2 = document.createElement("style");
|
|
1735
|
-
style2.type = "text/css";
|
|
1736
|
-
if (insertAt === "top") {
|
|
1737
|
-
if (head.firstChild) {
|
|
1738
|
-
head.insertBefore(style2, head.firstChild);
|
|
1739
|
-
} else {
|
|
1740
|
-
head.appendChild(style2);
|
|
1741
|
-
}
|
|
1742
|
-
} else {
|
|
1743
|
-
head.appendChild(style2);
|
|
1744
|
-
}
|
|
1745
|
-
if (style2.styleSheet) {
|
|
1746
|
-
style2.styleSheet.cssText = css2;
|
|
1747
|
-
} else {
|
|
1748
|
-
style2.appendChild(document.createTextNode(css2));
|
|
1749
|
-
}
|
|
1750
|
-
}
|
|
1751
|
-
|
|
1752
|
-
// src/styles/index.css
|
|
1753
|
-
styleInject('*,\n::before,\n::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n --tw-contain-size: ;\n --tw-contain-layout: ;\n --tw-contain-paint: ;\n --tw-contain-style: ;\n}\n::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n --tw-contain-size: ;\n --tw-contain-layout: ;\n --tw-contain-paint: ;\n --tw-contain-style: ;\n}\n*,\n::before,\n::after {\n box-sizing: border-box;\n border-width: 0;\n border-style: solid;\n border-color: #e5e7eb;\n}\n::before,\n::after {\n --tw-content: "";\n}\nhtml,\n:host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n -moz-tab-size: 4;\n -o-tab-size: 4;\n tab-size: 4;\n font-family: var(--font-sans);\n font-feature-settings: normal;\n font-variation-settings: normal;\n -webkit-tap-highlight-color: transparent;\n}\nbody {\n margin: 0;\n line-height: inherit;\n}\nhr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n}\nabbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\na {\n color: inherit;\n text-decoration: inherit;\n}\nb,\nstrong {\n font-weight: bolder;\n}\ncode,\nkbd,\nsamp,\npre {\n font-family: var(--font-mono);\n font-feature-settings: normal;\n font-variation-settings: normal;\n font-size: 1em;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsub {\n bottom: -0.25em;\n}\nsup {\n top: -0.5em;\n}\ntable {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n font-size: 100%;\n font-weight: inherit;\n line-height: inherit;\n letter-spacing: inherit;\n color: inherit;\n margin: 0;\n padding: 0;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\ninput:where([type="button"]),\ninput:where([type="reset"]),\ninput:where([type="submit"]) {\n -webkit-appearance: button;\n background-color: transparent;\n background-image: none;\n}\n:-moz-focusring {\n outline: auto;\n}\n:-moz-ui-invalid {\n box-shadow: none;\n}\nprogress {\n vertical-align: baseline;\n}\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n[type=search] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n::-webkit-file-upload-button {\n -webkit-appearance: button;\n font: inherit;\n}\nsummary {\n display: list-item;\n}\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n margin: 0;\n}\nfieldset {\n margin: 0;\n padding: 0;\n}\nlegend {\n padding: 0;\n}\nol,\nul,\nmenu {\n list-style: none;\n margin: 0;\n padding: 0;\n}\ndialog {\n padding: 0;\n}\ntextarea {\n resize: vertical;\n}\ninput::-moz-placeholder,\ntextarea::-moz-placeholder {\n opacity: 1;\n color: #9ca3af;\n}\ninput::placeholder,\ntextarea::placeholder {\n opacity: 1;\n color: #9ca3af;\n}\nbutton,\n[role=button] {\n cursor: pointer;\n}\n:disabled {\n cursor: default;\n}\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block;\n vertical-align: middle;\n}\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n[hidden]:where(:not([hidden="until-found"])) {\n display: none;\n}\n.\\!container {\n width: 100% !important;\n margin-right: auto !important;\n margin-left: auto !important;\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n.container {\n width: 100%;\n margin-right: auto;\n margin-left: auto;\n padding-right: 1rem;\n padding-left: 1rem;\n}\n@media (min-width: 640px) {\n .\\!container {\n max-width: 640px !important;\n padding-right: 2rem !important;\n padding-left: 2rem !important;\n }\n .container {\n max-width: 640px;\n padding-right: 2rem;\n padding-left: 2rem;\n }\n}\n@media (min-width: 768px) {\n .\\!container {\n max-width: 768px !important;\n }\n .container {\n max-width: 768px;\n }\n}\n@media (min-width: 1024px) {\n .\\!container {\n max-width: 1024px !important;\n padding-right: 4rem !important;\n padding-left: 4rem !important;\n }\n .container {\n max-width: 1024px;\n padding-right: 4rem;\n padding-left: 4rem;\n }\n}\n@media (min-width: 1280px) {\n .\\!container {\n max-width: 1280px !important;\n padding-right: 5rem !important;\n padding-left: 5rem !important;\n }\n .container {\n max-width: 1280px;\n padding-right: 5rem;\n padding-left: 5rem;\n }\n}\n@media (min-width: 1536px) {\n .\\!container {\n max-width: 1536px !important;\n padding-right: 6rem !important;\n padding-left: 6rem !important;\n }\n .container {\n max-width: 1536px;\n padding-right: 6rem;\n padding-left: 6rem;\n }\n}\n.dark .moonui-toggle-base {\n color: hsl(var(--foreground));\n}\n.dark .moonui-toggle-default:hover {\n background-color: hsl(var(--muted));\n color: hsl(var(--muted-foreground));\n}\n.dark .moonui-toggle-default[data-state=on] {\n background-color: hsl(var(--accent));\n color: hsl(var(--accent-foreground));\n}\n.dark .moonui-toggle-secondary:hover {\n background-color: hsl(var(--accent) / 0.2);\n color: hsl(var(--accent-foreground));\n}\n.dark .moonui-toggle-secondary[data-state=on] {\n background-color: hsl(var(--accent));\n color: hsl(var(--accent-foreground));\n}\n.moonui-data-table-header {\n border-bottom-width: 1px;\n background-color: hsl(var(--muted) / 0.5);\n}\n.moonui-data-table-row {\n border-bottom-width: 1px;\n transition-property:\n color,\n background-color,\n border-color,\n text-decoration-color,\n fill,\n stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.moonui-data-table-row:hover {\n background-color: hsl(var(--muted) / 0.5);\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n.pointer-events-none {\n pointer-events: none;\n}\n.pointer-events-auto {\n pointer-events: auto;\n}\n.visible {\n visibility: visible;\n}\n.invisible {\n visibility: hidden;\n}\n.collapse {\n visibility: collapse;\n}\n.static {\n position: static;\n}\n.\\!fixed {\n position: fixed !important;\n}\n.fixed {\n position: fixed;\n}\n.absolute {\n position: absolute;\n}\n.relative {\n position: relative;\n}\n.\\!sticky {\n position: sticky !important;\n}\n.sticky {\n position: sticky;\n}\n.\\!inset-4 {\n inset: 1rem !important;\n}\n.-inset-\\[2px\\] {\n inset: -2px;\n}\n.inset-0 {\n inset: 0px;\n}\n.inset-4 {\n inset: 1rem;\n}\n.inset-x-0 {\n left: 0px;\n right: 0px;\n}\n.inset-y-0 {\n top: 0px;\n bottom: 0px;\n}\n.-bottom-1 {\n bottom: -0.25rem;\n}\n.-bottom-3 {\n bottom: -0.75rem;\n}\n.-left-1 {\n left: -0.25rem;\n}\n.-left-12 {\n left: -3rem;\n}\n.-left-2 {\n left: -0.5rem;\n}\n.-right-1 {\n right: -0.25rem;\n}\n.-right-2 {\n right: -0.5rem;\n}\n.-top-1 {\n top: -0.25rem;\n}\n.-top-3 {\n top: -0.75rem;\n}\n.-top-8 {\n top: -2rem;\n}\n.bottom-0 {\n bottom: 0px;\n}\n.bottom-2 {\n bottom: 0.5rem;\n}\n.bottom-20 {\n bottom: 5rem;\n}\n.bottom-3 {\n bottom: 0.75rem;\n}\n.bottom-4 {\n bottom: 1rem;\n}\n.bottom-8 {\n bottom: 2rem;\n}\n.bottom-\\[5\\%\\] {\n bottom: 5%;\n}\n.left-0 {\n left: 0px;\n}\n.left-1\\/2 {\n left: 50%;\n}\n.left-2 {\n left: 0.5rem;\n}\n.left-3 {\n left: 0.75rem;\n}\n.left-4 {\n left: 1rem;\n}\n.left-6 {\n left: 1.5rem;\n}\n.left-7 {\n left: 1.75rem;\n}\n.left-\\[50\\%\\] {\n left: 50%;\n}\n.right-0 {\n right: 0px;\n}\n.right-1 {\n right: 0.25rem;\n}\n.right-2 {\n right: 0.5rem;\n}\n.right-3 {\n right: 0.75rem;\n}\n.right-4 {\n right: 1rem;\n}\n.top-0 {\n top: 0px;\n}\n.top-1 {\n top: 0.25rem;\n}\n.top-1\\/2 {\n top: 50%;\n}\n.top-12 {\n top: 3rem;\n}\n.top-2 {\n top: 0.5rem;\n}\n.top-2\\.5 {\n top: 0.625rem;\n}\n.top-3 {\n top: 0.75rem;\n}\n.top-4 {\n top: 1rem;\n}\n.top-8 {\n top: 2rem;\n}\n.top-\\[1px\\] {\n top: 1px;\n}\n.top-\\[5\\%\\] {\n top: 5%;\n}\n.top-\\[50\\%\\] {\n top: 50%;\n}\n.top-\\[60\\%\\] {\n top: 60%;\n}\n.top-auto {\n top: auto;\n}\n.top-full {\n top: 100%;\n}\n.isolate {\n isolation: isolate;\n}\n.\\!z-50 {\n z-index: 50 !important;\n}\n.-z-10 {\n z-index: -10;\n}\n.z-0 {\n z-index: 0;\n}\n.z-10 {\n z-index: 10;\n}\n.z-20 {\n z-index: 20;\n}\n.z-30 {\n z-index: 30;\n}\n.z-40 {\n z-index: 40;\n}\n.z-50 {\n z-index: 50;\n}\n.z-\\[-1\\] {\n z-index: -1;\n}\n.z-\\[100\\] {\n z-index: 100;\n}\n.z-\\[1\\] {\n z-index: 1;\n}\n.z-\\[9999\\] {\n z-index: 9999;\n}\n.col-span-full {\n grid-column: 1 / -1;\n}\n.float-left {\n float: left;\n}\n.clear-both {\n clear: both;\n}\n.-mx-1 {\n margin-left: -0.25rem;\n margin-right: -0.25rem;\n}\n.-mx-2 {\n margin-left: -0.5rem;\n margin-right: -0.5rem;\n}\n.-mx-4 {\n margin-left: -1rem;\n margin-right: -1rem;\n}\n.-mx-6 {\n margin-left: -1.5rem;\n margin-right: -1.5rem;\n}\n.-mx-px {\n margin-left: -1px;\n margin-right: -1px;\n}\n.mx-1 {\n margin-left: 0.25rem;\n margin-right: 0.25rem;\n}\n.mx-10 {\n margin-left: 2.5rem;\n margin-right: 2.5rem;\n}\n.mx-3 {\n margin-left: 0.75rem;\n margin-right: 0.75rem;\n}\n.mx-4 {\n margin-left: 1rem;\n margin-right: 1rem;\n}\n.mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n.my-1 {\n margin-top: 0.25rem;\n margin-bottom: 0.25rem;\n}\n.my-2 {\n margin-top: 0.5rem;\n margin-bottom: 0.5rem;\n}\n.my-6 {\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n}\n.-mb-4 {\n margin-bottom: -1rem;\n}\n.-ml-0\\.5 {\n margin-left: -0.125rem;\n}\n.-mr-1 {\n margin-right: -0.25rem;\n}\n.-mr-2 {\n margin-right: -0.5rem;\n}\n.-mt-4 {\n margin-top: -1rem;\n}\n.-mt-px {\n margin-top: -1px;\n}\n.mb-1 {\n margin-bottom: 0.25rem;\n}\n.mb-12 {\n margin-bottom: 3rem;\n}\n.mb-2 {\n margin-bottom: 0.5rem;\n}\n.mb-3 {\n margin-bottom: 0.75rem;\n}\n.mb-4 {\n margin-bottom: 1rem;\n}\n.mb-6 {\n margin-bottom: 1.5rem;\n}\n.mb-8 {\n margin-bottom: 2rem;\n}\n.ml-1 {\n margin-left: 0.25rem;\n}\n.ml-16 {\n margin-left: 4rem;\n}\n.ml-2 {\n margin-left: 0.5rem;\n}\n.ml-3 {\n margin-left: 0.75rem;\n}\n.ml-4 {\n margin-left: 1rem;\n}\n.ml-6 {\n margin-left: 1.5rem;\n}\n.ml-auto {\n margin-left: auto;\n}\n.mr-1 {\n margin-right: 0.25rem;\n}\n.mr-2 {\n margin-right: 0.5rem;\n}\n.mr-3 {\n margin-right: 0.75rem;\n}\n.mr-4 {\n margin-right: 1rem;\n}\n.mr-8 {\n margin-right: 2rem;\n}\n.mr-auto {\n margin-right: auto;\n}\n.mt-0 {\n margin-top: 0px;\n}\n.mt-0\\.5 {\n margin-top: 0.125rem;\n}\n.mt-1 {\n margin-top: 0.25rem;\n}\n.mt-1\\.5 {\n margin-top: 0.375rem;\n}\n.mt-2 {\n margin-top: 0.5rem;\n}\n.mt-3 {\n margin-top: 0.75rem;\n}\n.mt-4 {\n margin-top: 1rem;\n}\n.mt-6 {\n margin-top: 1.5rem;\n}\n.mt-8 {\n margin-top: 2rem;\n}\n.line-clamp-2 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n}\n.block {\n display: block;\n}\n.inline-block {\n display: inline-block;\n}\n.inline {\n display: inline;\n}\n.flex {\n display: flex;\n}\n.inline-flex {\n display: inline-flex;\n}\n.\\!table {\n display: table !important;\n}\n.table {\n display: table;\n}\n.grid {\n display: grid;\n}\n.contents {\n display: contents;\n}\n.hidden {\n display: none;\n}\n.aspect-\\[3\\/4\\] {\n aspect-ratio: 3/4;\n}\n.aspect-square {\n aspect-ratio: 1 / 1;\n}\n.aspect-video {\n aspect-ratio: 16 / 9;\n}\n.\\!h-auto {\n height: auto !important;\n}\n.h-0 {\n height: 0px;\n}\n.h-0\\.5 {\n height: 0.125rem;\n}\n.h-1 {\n height: 0.25rem;\n}\n.h-1\\.5 {\n height: 0.375rem;\n}\n.h-1\\/2 {\n height: 50%;\n}\n.h-10 {\n height: 2.5rem;\n}\n.h-11 {\n height: 2.75rem;\n}\n.h-12 {\n height: 3rem;\n}\n.h-14 {\n height: 3.5rem;\n}\n.h-16 {\n height: 4rem;\n}\n.h-2 {\n height: 0.5rem;\n}\n.h-2\\.5 {\n height: 0.625rem;\n}\n.h-20 {\n height: 5rem;\n}\n.h-24 {\n height: 6rem;\n}\n.h-3 {\n height: 0.75rem;\n}\n.h-3\\.5 {\n height: 0.875rem;\n}\n.h-32 {\n height: 8rem;\n}\n.h-36 {\n height: 9rem;\n}\n.h-4 {\n height: 1rem;\n}\n.h-48 {\n height: 12rem;\n}\n.h-5 {\n height: 1.25rem;\n}\n.h-6 {\n height: 1.5rem;\n}\n.h-64 {\n height: 16rem;\n}\n.h-7 {\n height: 1.75rem;\n}\n.h-8 {\n height: 2rem;\n}\n.h-9 {\n height: 2.25rem;\n}\n.h-96 {\n height: 24rem;\n}\n.h-\\[0\\.5px\\] {\n height: 0.5px;\n}\n.h-\\[1px\\] {\n height: 1px;\n}\n.h-\\[2px\\] {\n height: 2px;\n}\n.h-\\[30vh\\] {\n height: 30vh;\n}\n.h-\\[400px\\] {\n height: 400px;\n}\n.h-\\[50vh\\] {\n height: 50vh;\n}\n.h-\\[60\\%\\] {\n height: 60%;\n}\n.h-\\[600px\\] {\n height: 600px;\n}\n.h-\\[65\\%\\] {\n height: 65%;\n}\n.h-\\[70vh\\] {\n height: 70vh;\n}\n.h-\\[95vh\\] {\n height: 95vh;\n}\n.h-\\[calc\\(100vh-200px\\)\\] {\n height: calc(100vh - 200px);\n}\n.h-\\[calc\\(100vh-300px\\)\\] {\n height: calc(100vh - 300px);\n}\n.h-\\[var\\(--radix-navigation-menu-viewport-height\\)\\] {\n height: var(--radix-navigation-menu-viewport-height);\n}\n.h-\\[var\\(--radix-select-trigger-height\\)\\] {\n height: var(--radix-select-trigger-height);\n}\n.h-auto {\n height: auto;\n}\n.h-full {\n height: 100%;\n}\n.h-px {\n height: 1px;\n}\n.h-screen {\n height: 100vh;\n}\n.max-h-32 {\n max-height: 8rem;\n}\n.max-h-64 {\n max-height: 16rem;\n}\n.max-h-96 {\n max-height: 24rem;\n}\n.max-h-\\[300px\\] {\n max-height: 300px;\n}\n.max-h-\\[400px\\] {\n max-height: 400px;\n}\n.max-h-\\[500px\\] {\n max-height: 500px;\n}\n.max-h-\\[600px\\] {\n max-height: 600px;\n}\n.max-h-\\[60vh\\] {\n max-height: 60vh;\n}\n.max-h-\\[700px\\] {\n max-height: 700px;\n}\n.max-h-\\[80vh\\] {\n max-height: 80vh;\n}\n.max-h-\\[90vh\\] {\n max-height: 90vh;\n}\n.max-h-\\[95vh\\] {\n max-height: 95vh;\n}\n.max-h-\\[calc\\(90vh-200px\\)\\] {\n max-height: calc(90vh - 200px);\n}\n.max-h-full {\n max-height: 100%;\n}\n.max-h-none {\n max-height: none;\n}\n.max-h-screen {\n max-height: 100vh;\n}\n.min-h-0 {\n min-height: 0px;\n}\n.min-h-10 {\n min-height: 2.5rem;\n}\n.min-h-11 {\n min-height: 2.75rem;\n}\n.min-h-12 {\n min-height: 3rem;\n}\n.min-h-7 {\n min-height: 1.75rem;\n}\n.min-h-8 {\n min-height: 2rem;\n}\n.min-h-9 {\n min-height: 2.25rem;\n}\n.min-h-\\[100px\\] {\n min-height: 100px;\n}\n.min-h-\\[120px\\] {\n min-height: 120px;\n}\n.min-h-\\[2\\.5rem\\] {\n min-height: 2.5rem;\n}\n.min-h-\\[200px\\] {\n min-height: 200px;\n}\n.min-h-\\[20px\\] {\n min-height: 20px;\n}\n.min-h-\\[3\\.5rem\\] {\n min-height: 3.5rem;\n}\n.min-h-\\[300px\\] {\n min-height: 300px;\n}\n.min-h-\\[3rem\\] {\n min-height: 3rem;\n}\n.min-h-\\[4\\.5rem\\] {\n min-height: 4.5rem;\n}\n.min-h-\\[400px\\] {\n min-height: 400px;\n}\n.min-h-\\[40px\\] {\n min-height: 40px;\n}\n.min-h-\\[4rem\\] {\n min-height: 4rem;\n}\n.min-h-\\[500px\\] {\n min-height: 500px;\n}\n.min-h-\\[50px\\] {\n min-height: 50px;\n}\n.min-h-\\[600px\\] {\n min-height: 600px;\n}\n.min-h-\\[60px\\] {\n min-height: 60px;\n}\n.min-h-\\[80px\\] {\n min-height: 80px;\n}\n.min-h-full {\n min-height: 100%;\n}\n.min-h-screen {\n min-height: 100vh;\n}\n.\\!w-auto {\n width: auto !important;\n}\n.w-0 {\n width: 0px;\n}\n.w-0\\.5 {\n width: 0.125rem;\n}\n.w-1 {\n width: 0.25rem;\n}\n.w-1\\.5 {\n width: 0.375rem;\n}\n.w-1\\/2 {\n width: 50%;\n}\n.w-10 {\n width: 2.5rem;\n}\n.w-11 {\n width: 2.75rem;\n}\n.w-12 {\n width: 3rem;\n}\n.w-14 {\n width: 3.5rem;\n}\n.w-16 {\n width: 4rem;\n}\n.w-2 {\n width: 0.5rem;\n}\n.w-2\\.5 {\n width: 0.625rem;\n}\n.w-2\\/3 {\n width: 66.666667%;\n}\n.w-20 {\n width: 5rem;\n}\n.w-24 {\n width: 6rem;\n}\n.w-28 {\n width: 7rem;\n}\n.w-3 {\n width: 0.75rem;\n}\n.w-3\\.5 {\n width: 0.875rem;\n}\n.w-3\\/4 {\n width: 75%;\n}\n.w-32 {\n width: 8rem;\n}\n.w-36 {\n width: 9rem;\n}\n.w-4 {\n width: 1rem;\n}\n.w-48 {\n width: 12rem;\n}\n.w-5 {\n width: 1.25rem;\n}\n.w-56 {\n width: 14rem;\n}\n.w-6 {\n width: 1.5rem;\n}\n.w-64 {\n width: 16rem;\n}\n.w-7 {\n width: 1.75rem;\n}\n.w-72 {\n width: 18rem;\n}\n.w-8 {\n width: 2rem;\n}\n.w-80 {\n width: 20rem;\n}\n.w-9 {\n width: 2.25rem;\n}\n.w-96 {\n width: 24rem;\n}\n.w-\\[0\\.5px\\] {\n width: 0.5px;\n}\n.w-\\[100px\\] {\n width: 100px;\n}\n.w-\\[140px\\] {\n width: 140px;\n}\n.w-\\[150px\\] {\n width: 150px;\n}\n.w-\\[1px\\] {\n width: 1px;\n}\n.w-\\[280px\\] {\n width: 280px;\n}\n.w-\\[2px\\] {\n width: 2px;\n}\n.w-\\[380px\\] {\n width: 380px;\n}\n.w-\\[400px\\] {\n width: 400px;\n}\n.w-\\[480px\\] {\n width: 480px;\n}\n.w-\\[60\\%\\] {\n width: 60%;\n}\n.w-\\[65\\%\\] {\n width: 65%;\n}\n.w-\\[70px\\] {\n width: 70px;\n}\n.w-\\[90vw\\] {\n width: 90vw;\n}\n.w-\\[calc\\(100\\%-1\\.5rem\\)\\] {\n width: calc(100% - 1.5rem);\n}\n.w-auto {\n width: auto;\n}\n.w-fit {\n width: -moz-fit-content;\n width: fit-content;\n}\n.w-full {\n width: 100%;\n}\n.w-max {\n width: -moz-max-content;\n width: max-content;\n}\n.w-px {\n width: 1px;\n}\n.w-screen {\n width: 100vw;\n}\n.min-w-0 {\n min-width: 0px;\n}\n.min-w-32 {\n min-width: 8rem;\n}\n.min-w-\\[120px\\] {\n min-width: 120px;\n}\n.min-w-\\[12rem\\] {\n min-width: 12rem;\n}\n.min-w-\\[140px\\] {\n min-width: 140px;\n}\n.min-w-\\[16rem\\] {\n min-width: 16rem;\n}\n.min-w-\\[1rem\\] {\n min-width: 1rem;\n}\n.min-w-\\[200px\\] {\n min-width: 200px;\n}\n.min-w-\\[20rem\\] {\n min-width: 20rem;\n}\n.min-w-\\[300px\\] {\n min-width: 300px;\n}\n.min-w-\\[4px\\] {\n min-width: 4px;\n}\n.min-w-\\[6rem\\] {\n min-width: 6rem;\n}\n.min-w-\\[8rem\\] {\n min-width: 8rem;\n}\n.min-w-\\[95vw\\] {\n min-width: 95vw;\n}\n.min-w-\\[var\\(--radix-select-trigger-width\\)\\] {\n min-width: var(--radix-select-trigger-width);\n}\n.min-w-fit {\n min-width: -moz-fit-content;\n min-width: fit-content;\n}\n.max-w-2xl {\n max-width: 42rem;\n}\n.max-w-4xl {\n max-width: 56rem;\n}\n.max-w-6xl {\n max-width: 72rem;\n}\n.max-w-\\[1024px\\] {\n max-width: 1024px;\n}\n.max-w-\\[1280px\\] {\n max-width: 1280px;\n}\n.max-w-\\[1536px\\] {\n max-width: 1536px;\n}\n.max-w-\\[20px\\] {\n max-width: 20px;\n}\n.max-w-\\[280px\\] {\n max-width: 280px;\n}\n.max-w-\\[360px\\] {\n max-width: 360px;\n}\n.max-w-\\[480px\\] {\n max-width: 480px;\n}\n.max-w-\\[520px\\] {\n max-width: 520px;\n}\n.max-w-\\[680px\\] {\n max-width: 680px;\n}\n.max-w-\\[80vw\\] {\n max-width: 80vw;\n}\n.max-w-\\[860px\\] {\n max-width: 860px;\n}\n.max-w-\\[90vw\\] {\n max-width: 90vw;\n}\n.max-w-\\[95vw\\] {\n max-width: 95vw;\n}\n.max-w-full {\n max-width: 100%;\n}\n.max-w-lg {\n max-width: 32rem;\n}\n.max-w-max {\n max-width: -moz-max-content;\n max-width: max-content;\n}\n.max-w-md {\n max-width: 28rem;\n}\n.max-w-none {\n max-width: none;\n}\n.max-w-screen-2xl {\n max-width: 1536px;\n}\n.max-w-screen-lg {\n max-width: 1024px;\n}\n.max-w-screen-md {\n max-width: 768px;\n}\n.max-w-screen-sm {\n max-width: 640px;\n}\n.max-w-screen-xl {\n max-width: 1280px;\n}\n.max-w-sm {\n max-width: 24rem;\n}\n.max-w-xs {\n max-width: 20rem;\n}\n.flex-1 {\n flex: 1 1 0%;\n}\n.flex-shrink-0 {\n flex-shrink: 0;\n}\n.shrink-0 {\n flex-shrink: 0;\n}\n.flex-grow {\n flex-grow: 1;\n}\n.grow {\n flex-grow: 1;\n}\n.caption-bottom {\n caption-side: bottom;\n}\n.-translate-x-1\\/2 {\n --tw-translate-x: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.-translate-x-2 {\n --tw-translate-x: -0.5rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.-translate-x-full {\n --tw-translate-x: -100%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.-translate-y-0 {\n --tw-translate-y: -0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.-translate-y-1\\/2 {\n --tw-translate-y: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.-translate-y-2 {\n --tw-translate-y: -0.5rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.-translate-y-3 {\n --tw-translate-y: -0.75rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.-translate-y-full {\n --tw-translate-y: -100%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-x-0 {\n --tw-translate-x: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-x-\\[-50\\%\\] {\n --tw-translate-x: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-y-0 {\n --tw-translate-y: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-y-3 {\n --tw-translate-y: 0.75rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.translate-y-\\[-50\\%\\] {\n --tw-translate-y: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.-rotate-90 {\n --tw-rotate: -90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.rotate-180 {\n --tw-rotate: 180deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.rotate-45 {\n --tw-rotate: 45deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.rotate-\\[-15deg\\] {\n --tw-rotate: -15deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.rotate-\\[15deg\\] {\n --tw-rotate: 15deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.scale-105 {\n --tw-scale-x: 1.05;\n --tw-scale-y: 1.05;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.scale-110 {\n --tw-scale-x: 1.1;\n --tw-scale-y: 1.1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.scale-\\[1\\.02\\] {\n --tw-scale-x: 1.02;\n --tw-scale-y: 1.02;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.scale-x-150 {\n --tw-scale-x: 1.5;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n@keyframes bounce {\n 0%, 100% {\n transform: translateY(-25%);\n animation-timing-function: cubic-bezier(0.8, 0, 1, 1);\n }\n 50% {\n transform: none;\n animation-timing-function: cubic-bezier(0, 0, 0.2, 1);\n }\n}\n.animate-bounce {\n animation: bounce 1s infinite;\n}\n@keyframes ping {\n 75%, 100% {\n transform: scale(2);\n opacity: 0;\n }\n}\n.animate-ping {\n animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;\n}\n@keyframes pulse {\n 50% {\n opacity: .5;\n }\n}\n.animate-pulse {\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n.animate-spin {\n animation: spin 1s linear infinite;\n}\n.cursor-crosshair {\n cursor: crosshair;\n}\n.cursor-default {\n cursor: default;\n}\n.cursor-grab {\n cursor: grab;\n}\n.cursor-grabbing {\n cursor: grabbing;\n}\n.cursor-help {\n cursor: help;\n}\n.cursor-move {\n cursor: move;\n}\n.cursor-not-allowed {\n cursor: not-allowed;\n}\n.cursor-pointer {\n cursor: pointer;\n}\n.cursor-text {\n cursor: text;\n}\n.cursor-wait {\n cursor: wait;\n}\n.touch-none {\n touch-action: none;\n}\n.touch-pan-y {\n --tw-pan-y: pan-y;\n touch-action: var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom);\n}\n.select-none {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.resize-none {\n resize: none;\n}\n.resize {\n resize: both;\n}\n.snap-x {\n scroll-snap-type: x var(--tw-scroll-snap-strictness);\n}\n.snap-mandatory {\n --tw-scroll-snap-strictness: mandatory;\n}\n.list-none {\n list-style-type: none;\n}\n.columns-1 {\n -moz-columns: 1;\n columns: 1;\n}\n.break-inside-avoid {\n -moz-column-break-inside: avoid;\n break-inside: avoid;\n}\n.grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n}\n.grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n.grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n}\n.grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n}\n.grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n}\n.grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n}\n.flex-row {\n flex-direction: row;\n}\n.flex-row-reverse {\n flex-direction: row-reverse;\n}\n.flex-col {\n flex-direction: column;\n}\n.flex-col-reverse {\n flex-direction: column-reverse;\n}\n.flex-wrap {\n flex-wrap: wrap;\n}\n.items-start {\n align-items: flex-start;\n}\n.items-end {\n align-items: flex-end;\n}\n.items-center {\n align-items: center;\n}\n.justify-start {\n justify-content: flex-start;\n}\n.justify-end {\n justify-content: flex-end;\n}\n.justify-center {\n justify-content: center;\n}\n.justify-between {\n justify-content: space-between;\n}\n.gap-0 {\n gap: 0px;\n}\n.gap-0\\.5 {\n gap: 0.125rem;\n}\n.gap-1 {\n gap: 0.25rem;\n}\n.gap-1\\.5 {\n gap: 0.375rem;\n}\n.gap-2 {\n gap: 0.5rem;\n}\n.gap-3 {\n gap: 0.75rem;\n}\n.gap-4 {\n gap: 1rem;\n}\n.gap-6 {\n gap: 1.5rem;\n}\n.gap-8 {\n gap: 2rem;\n}\n.gap-px {\n gap: 1px;\n}\n.-space-x-1 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(-0.25rem * var(--tw-space-x-reverse));\n margin-left: calc(-0.25rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.-space-x-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(-0.5rem * var(--tw-space-x-reverse));\n margin-left: calc(-0.5rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.-space-x-3 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(-0.75rem * var(--tw-space-x-reverse));\n margin-left: calc(-0.75rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.space-x-1 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.25rem * var(--tw-space-x-reverse));\n margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.space-x-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.5rem * var(--tw-space-x-reverse));\n margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.space-x-6 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(1.5rem * var(--tw-space-x-reverse));\n margin-left: calc(1.5rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.space-y-0 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0px * var(--tw-space-y-reverse));\n}\n.space-y-0\\.5 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.125rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.125rem * var(--tw-space-y-reverse));\n}\n.space-y-1 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.25rem * var(--tw-space-y-reverse));\n}\n.space-y-1\\.5 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.375rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.375rem * var(--tw-space-y-reverse));\n}\n.space-y-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));\n}\n.space-y-2\\.5 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.625rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.625rem * var(--tw-space-y-reverse));\n}\n.space-y-3 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.75rem * var(--tw-space-y-reverse));\n}\n.space-y-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1rem * var(--tw-space-y-reverse));\n}\n.space-y-6 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1.5rem * var(--tw-space-y-reverse));\n}\n.space-y-8 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(2rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(2rem * var(--tw-space-y-reverse));\n}\n.overflow-auto {\n overflow: auto;\n}\n.overflow-hidden {\n overflow: hidden;\n}\n.overflow-visible {\n overflow: visible;\n}\n.overflow-x-auto {\n overflow-x: auto;\n}\n.overflow-y-auto {\n overflow-y: auto;\n}\n.overflow-x-hidden {\n overflow-x: hidden;\n}\n.overscroll-contain {\n overscroll-behavior: contain;\n}\n.scroll-smooth {\n scroll-behavior: smooth;\n}\n.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.whitespace-nowrap {\n white-space: nowrap;\n}\n.whitespace-pre-wrap {\n white-space: pre-wrap;\n}\n.rounded {\n border-radius: 0.25rem;\n}\n.rounded-2xl {\n border-radius: 1rem;\n}\n.rounded-3xl {\n border-radius: 1.5rem;\n}\n.rounded-\\[inherit\\] {\n border-radius: inherit;\n}\n.rounded-\\[var\\(--login-border-radius\\)\\] {\n border-radius: var(--login-border-radius);\n}\n.rounded-full {\n border-radius: 9999px;\n}\n.rounded-lg {\n border-radius: var(--radius);\n}\n.rounded-md {\n border-radius: calc(var(--radius) - 2px);\n}\n.rounded-none {\n border-radius: 0px;\n}\n.rounded-sm {\n border-radius: calc(var(--radius) - 4px);\n}\n.rounded-xl {\n border-radius: 0.75rem;\n}\n.rounded-b-\\[20px\\] {\n border-bottom-right-radius: 20px;\n border-bottom-left-radius: 20px;\n}\n.rounded-b-lg {\n border-bottom-right-radius: var(--radius);\n border-bottom-left-radius: var(--radius);\n}\n.rounded-l-\\[20px\\] {\n border-top-left-radius: 20px;\n border-bottom-left-radius: 20px;\n}\n.rounded-l-none {\n border-top-left-radius: 0px;\n border-bottom-left-radius: 0px;\n}\n.rounded-r-\\[20px\\] {\n border-top-right-radius: 20px;\n border-bottom-right-radius: 20px;\n}\n.rounded-r-none {\n border-top-right-radius: 0px;\n border-bottom-right-radius: 0px;\n}\n.rounded-t {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n.rounded-t-\\[20px\\] {\n border-top-left-radius: 20px;\n border-top-right-radius: 20px;\n}\n.rounded-t-lg {\n border-top-left-radius: var(--radius);\n border-top-right-radius: var(--radius);\n}\n.rounded-t-sm {\n border-top-left-radius: calc(var(--radius) - 4px);\n border-top-right-radius: calc(var(--radius) - 4px);\n}\n.rounded-tl-sm {\n border-top-left-radius: calc(var(--radius) - 4px);\n}\n.border {\n border-width: 1px;\n}\n.border-0 {\n border-width: 0px;\n}\n.border-2 {\n border-width: 2px;\n}\n.border-4 {\n border-width: 4px;\n}\n.border-x {\n border-left-width: 1px;\n border-right-width: 1px;\n}\n.border-b {\n border-bottom-width: 1px;\n}\n.border-b-0 {\n border-bottom-width: 0px;\n}\n.border-b-2 {\n border-bottom-width: 2px;\n}\n.border-l {\n border-left-width: 1px;\n}\n.border-l-0 {\n border-left-width: 0px;\n}\n.border-l-2 {\n border-left-width: 2px;\n}\n.border-l-4 {\n border-left-width: 4px;\n}\n.border-l-\\[0\\.5px\\] {\n border-left-width: 0.5px;\n}\n.border-r {\n border-right-width: 1px;\n}\n.border-r-0 {\n border-right-width: 0px;\n}\n.border-t {\n border-top-width: 1px;\n}\n.border-t-0 {\n border-top-width: 0px;\n}\n.border-t-2 {\n border-top-width: 2px;\n}\n.border-t-\\[0\\.5px\\] {\n border-top-width: 0.5px;\n}\n.border-dashed {\n border-style: dashed;\n}\n.border-dotted {\n border-style: dotted;\n}\n.border-none {\n border-style: none;\n}\n.border-accent {\n --tw-border-opacity: 1;\n border-color: hsl(var(--accent) / var(--tw-border-opacity, 1));\n}\n.border-background {\n --tw-border-opacity: 1;\n border-color: hsl(var(--background) / var(--tw-border-opacity, 1));\n}\n.border-blue-200 {\n --tw-border-opacity: 1;\n border-color: rgb(191 219 254 / var(--tw-border-opacity, 1));\n}\n.border-blue-500\\/30 {\n border-color: rgb(59 130 246 / 0.3);\n}\n.border-blue-600 {\n --tw-border-opacity: 1;\n border-color: rgb(37 99 235 / var(--tw-border-opacity, 1));\n}\n.border-border {\n --tw-border-opacity: 1;\n border-color: hsl(var(--border) / var(--tw-border-opacity, 1));\n}\n.border-border\\/40 {\n border-color: hsl(var(--border) / 0.4);\n}\n.border-border\\/50 {\n border-color: hsl(var(--border) / 0.5);\n}\n.border-border\\/60 {\n border-color: hsl(var(--border) / 0.6);\n}\n.border-current {\n border-color: currentColor;\n}\n.border-destructive {\n --tw-border-opacity: 1;\n border-color: hsl(var(--destructive) / var(--tw-border-opacity, 1));\n}\n.border-destructive\\/20 {\n border-color: hsl(var(--destructive) / 0.2);\n}\n.border-destructive\\/30 {\n border-color: hsl(var(--destructive) / 0.3);\n}\n.border-destructive\\/50 {\n border-color: hsl(var(--destructive) / 0.5);\n}\n.border-error {\n --tw-border-opacity: 1;\n border-color: hsl(var(--error) / var(--tw-border-opacity, 1));\n}\n.border-error\\/20 {\n border-color: hsl(var(--error) / 0.2);\n}\n.border-foreground {\n --tw-border-opacity: 1;\n border-color: hsl(var(--foreground) / var(--tw-border-opacity, 1));\n}\n.border-gray-200 {\n --tw-border-opacity: 1;\n border-color: rgb(229 231 235 / var(--tw-border-opacity, 1));\n}\n.border-gray-300 {\n --tw-border-opacity: 1;\n border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));\n}\n.border-gray-500 {\n --tw-border-opacity: 1;\n border-color: rgb(107 114 128 / var(--tw-border-opacity, 1));\n}\n.border-gray-900 {\n --tw-border-opacity: 1;\n border-color: rgb(17 24 39 / var(--tw-border-opacity, 1));\n}\n.border-green-200 {\n --tw-border-opacity: 1;\n border-color: rgb(187 247 208 / var(--tw-border-opacity, 1));\n}\n.border-green-400 {\n --tw-border-opacity: 1;\n border-color: rgb(74 222 128 / var(--tw-border-opacity, 1));\n}\n.border-green-500\\/20 {\n border-color: rgb(34 197 94 / 0.2);\n}\n.border-green-600 {\n --tw-border-opacity: 1;\n border-color: rgb(22 163 74 / var(--tw-border-opacity, 1));\n}\n.border-input {\n --tw-border-opacity: 1;\n border-color: hsl(var(--input) / var(--tw-border-opacity, 1));\n}\n.border-muted {\n --tw-border-opacity: 1;\n border-color: hsl(var(--muted) / var(--tw-border-opacity, 1));\n}\n.border-muted-foreground {\n --tw-border-opacity: 1;\n border-color: hsl(var(--muted-foreground) / var(--tw-border-opacity, 1));\n}\n.border-muted-foreground\\/20 {\n border-color: hsl(var(--muted-foreground) / 0.2);\n}\n.border-muted-foreground\\/25 {\n border-color: hsl(var(--muted-foreground) / 0.25);\n}\n.border-muted-foreground\\/50 {\n border-color: hsl(var(--muted-foreground) / 0.5);\n}\n.border-orange-200 {\n --tw-border-opacity: 1;\n border-color: rgb(254 215 170 / var(--tw-border-opacity, 1));\n}\n.border-primary {\n --tw-border-opacity: 1;\n border-color: hsl(var(--primary) / var(--tw-border-opacity, 1));\n}\n.border-primary\\/20 {\n border-color: hsl(var(--primary) / 0.2);\n}\n.border-primary\\/30 {\n border-color: hsl(var(--primary) / 0.3);\n}\n.border-primary\\/50 {\n border-color: hsl(var(--primary) / 0.5);\n}\n.border-purple-200 {\n --tw-border-opacity: 1;\n border-color: rgb(233 213 255 / var(--tw-border-opacity, 1));\n}\n.border-purple-600 {\n --tw-border-opacity: 1;\n border-color: rgb(147 51 234 / var(--tw-border-opacity, 1));\n}\n.border-red-200 {\n --tw-border-opacity: 1;\n border-color: rgb(254 202 202 / var(--tw-border-opacity, 1));\n}\n.border-red-500 {\n --tw-border-opacity: 1;\n border-color: rgb(239 68 68 / var(--tw-border-opacity, 1));\n}\n.border-red-500\\/20 {\n border-color: rgb(239 68 68 / 0.2);\n}\n.border-red-600 {\n --tw-border-opacity: 1;\n border-color: rgb(220 38 38 / var(--tw-border-opacity, 1));\n}\n.border-secondary {\n --tw-border-opacity: 1;\n border-color: hsl(var(--secondary) / var(--tw-border-opacity, 1));\n}\n.border-secondary\\/20 {\n border-color: hsl(var(--secondary) / 0.2);\n}\n.border-slate-600 {\n --tw-border-opacity: 1;\n border-color: rgb(71 85 105 / var(--tw-border-opacity, 1));\n}\n.border-success {\n --tw-border-opacity: 1;\n border-color: hsl(var(--success) / var(--tw-border-opacity, 1));\n}\n.border-success\\/30 {\n border-color: hsl(var(--success) / 0.3);\n}\n.border-success\\/40 {\n border-color: hsl(var(--success) / 0.4);\n}\n.border-transparent {\n border-color: transparent;\n}\n.border-warning {\n --tw-border-opacity: 1;\n border-color: hsl(var(--warning) / var(--tw-border-opacity, 1));\n}\n.border-warning\\/30 {\n border-color: hsl(var(--warning) / 0.3);\n}\n.border-white {\n --tw-border-opacity: 1;\n border-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\n}\n.border-white\\/10 {\n border-color: rgb(255 255 255 / 0.1);\n}\n.border-white\\/20 {\n border-color: rgb(255 255 255 / 0.2);\n}\n.border-yellow-200 {\n --tw-border-opacity: 1;\n border-color: rgb(254 240 138 / var(--tw-border-opacity, 1));\n}\n.border-yellow-500\\/20 {\n border-color: rgb(234 179 8 / 0.2);\n}\n.border-yellow-600 {\n --tw-border-opacity: 1;\n border-color: rgb(202 138 4 / var(--tw-border-opacity, 1));\n}\n.border-l-muted-foreground {\n --tw-border-opacity: 1;\n border-left-color: hsl(var(--muted-foreground) / var(--tw-border-opacity, 1));\n}\n.border-l-red-500 {\n --tw-border-opacity: 1;\n border-left-color: rgb(239 68 68 / var(--tw-border-opacity, 1));\n}\n.border-l-transparent {\n border-left-color: transparent;\n}\n.border-l-yellow-500 {\n --tw-border-opacity: 1;\n border-left-color: rgb(234 179 8 / var(--tw-border-opacity, 1));\n}\n.border-t-primary {\n --tw-border-opacity: 1;\n border-top-color: hsl(var(--primary) / var(--tw-border-opacity, 1));\n}\n.border-t-transparent {\n border-top-color: transparent;\n}\n.bg-\\[var\\(--login-background\\)\\] {\n background-color: var(--login-background);\n}\n.bg-\\[var\\(--login-primary\\)\\] {\n background-color: var(--login-primary);\n}\n.bg-accent {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--accent) / var(--tw-bg-opacity, 1));\n}\n.bg-accent\\/20 {\n background-color: hsl(var(--accent) / 0.2);\n}\n.bg-accent\\/30 {\n background-color: hsl(var(--accent) / 0.3);\n}\n.bg-amber-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(245 158 11 / var(--tw-bg-opacity, 1));\n}\n.bg-background {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--background) / var(--tw-bg-opacity, 1));\n}\n.bg-background\\/50 {\n background-color: hsl(var(--background) / 0.5);\n}\n.bg-background\\/60 {\n background-color: hsl(var(--background) / 0.6);\n}\n.bg-background\\/80 {\n background-color: hsl(var(--background) / 0.8);\n}\n.bg-background\\/90 {\n background-color: hsl(var(--background) / 0.9);\n}\n.bg-background\\/95 {\n background-color: hsl(var(--background) / 0.95);\n}\n.bg-black {\n --tw-bg-opacity: 1;\n background-color: rgb(0 0 0 / var(--tw-bg-opacity, 1));\n}\n.bg-black\\/0 {\n background-color: rgb(0 0 0 / 0);\n}\n.bg-black\\/20 {\n background-color: rgb(0 0 0 / 0.2);\n}\n.bg-black\\/40 {\n background-color: rgb(0 0 0 / 0.4);\n}\n.bg-black\\/50 {\n background-color: rgb(0 0 0 / 0.5);\n}\n.bg-black\\/60 {\n background-color: rgb(0 0 0 / 0.6);\n}\n.bg-black\\/70 {\n background-color: rgb(0 0 0 / 0.7);\n}\n.bg-black\\/80 {\n background-color: rgb(0 0 0 / 0.8);\n}\n.bg-black\\/90 {\n background-color: rgb(0 0 0 / 0.9);\n}\n.bg-black\\/95 {\n background-color: rgb(0 0 0 / 0.95);\n}\n.bg-blue-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(219 234 254 / var(--tw-bg-opacity, 1));\n}\n.bg-blue-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(239 246 255 / var(--tw-bg-opacity, 1));\n}\n.bg-blue-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(59 130 246 / var(--tw-bg-opacity, 1));\n}\n.bg-blue-500\\/10 {\n background-color: rgb(59 130 246 / 0.1);\n}\n.bg-border {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--border) / var(--tw-bg-opacity, 1));\n}\n.bg-card {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--card) / var(--tw-bg-opacity, 1));\n}\n.bg-card\\/50 {\n background-color: hsl(var(--card) / 0.5);\n}\n.bg-destructive {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--destructive) / var(--tw-bg-opacity, 1));\n}\n.bg-destructive\\/10 {\n background-color: hsl(var(--destructive) / 0.1);\n}\n.bg-destructive\\/5 {\n background-color: hsl(var(--destructive) / 0.05);\n}\n.bg-error {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--error) / var(--tw-bg-opacity, 1));\n}\n.bg-error\\/20 {\n background-color: hsl(var(--error) / 0.2);\n}\n.bg-foreground {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--foreground) / var(--tw-bg-opacity, 1));\n}\n.bg-gray-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));\n}\n.bg-gray-400 {\n --tw-bg-opacity: 1;\n background-color: rgb(156 163 175 / var(--tw-bg-opacity, 1));\n}\n.bg-gray-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1));\n}\n.bg-gray-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(107 114 128 / var(--tw-bg-opacity, 1));\n}\n.bg-green-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(220 252 231 / var(--tw-bg-opacity, 1));\n}\n.bg-green-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(240 253 244 / var(--tw-bg-opacity, 1));\n}\n.bg-green-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(34 197 94 / var(--tw-bg-opacity, 1));\n}\n.bg-green-500\\/10 {\n background-color: rgb(34 197 94 / 0.1);\n}\n.bg-green-600 {\n --tw-bg-opacity: 1;\n background-color: rgb(22 163 74 / var(--tw-bg-opacity, 1));\n}\n.bg-indigo-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(99 102 241 / var(--tw-bg-opacity, 1));\n}\n.bg-muted {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--muted) / var(--tw-bg-opacity, 1));\n}\n.bg-muted-foreground {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--muted-foreground) / var(--tw-bg-opacity, 1));\n}\n.bg-muted-foreground\\/20 {\n background-color: hsl(var(--muted-foreground) / 0.2);\n}\n.bg-muted-foreground\\/40 {\n background-color: hsl(var(--muted-foreground) / 0.4);\n}\n.bg-muted\\/10 {\n background-color: hsl(var(--muted) / 0.1);\n}\n.bg-muted\\/20 {\n background-color: hsl(var(--muted) / 0.2);\n}\n.bg-muted\\/30 {\n background-color: hsl(var(--muted) / 0.3);\n}\n.bg-muted\\/5 {\n background-color: hsl(var(--muted) / 0.05);\n}\n.bg-muted\\/50 {\n background-color: hsl(var(--muted) / 0.5);\n}\n.bg-muted\\/80 {\n background-color: hsl(var(--muted) / 0.8);\n}\n.bg-orange-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(255 237 213 / var(--tw-bg-opacity, 1));\n}\n.bg-orange-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(255 247 237 / var(--tw-bg-opacity, 1));\n}\n.bg-orange-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(249 115 22 / var(--tw-bg-opacity, 1));\n}\n.bg-pink-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(236 72 153 / var(--tw-bg-opacity, 1));\n}\n.bg-popover {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--popover) / var(--tw-bg-opacity, 1));\n}\n.bg-primary {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--primary) / var(--tw-bg-opacity, 1));\n}\n.bg-primary-foreground {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--primary-foreground) / var(--tw-bg-opacity, 1));\n}\n.bg-primary-foreground\\/20 {\n background-color: hsl(var(--primary-foreground) / 0.2);\n}\n.bg-primary\\/10 {\n background-color: hsl(var(--primary) / 0.1);\n}\n.bg-primary\\/20 {\n background-color: hsl(var(--primary) / 0.2);\n}\n.bg-primary\\/30 {\n background-color: hsl(var(--primary) / 0.3);\n}\n.bg-primary\\/40 {\n background-color: hsl(var(--primary) / 0.4);\n}\n.bg-primary\\/5 {\n background-color: hsl(var(--primary) / 0.05);\n}\n.bg-primary\\/60 {\n background-color: hsl(var(--primary) / 0.6);\n}\n.bg-purple-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(243 232 255 / var(--tw-bg-opacity, 1));\n}\n.bg-purple-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(250 245 255 / var(--tw-bg-opacity, 1));\n}\n.bg-purple-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(168 85 247 / var(--tw-bg-opacity, 1));\n}\n.bg-purple-600 {\n --tw-bg-opacity: 1;\n background-color: rgb(147 51 234 / var(--tw-bg-opacity, 1));\n}\n.bg-red-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(254 226 226 / var(--tw-bg-opacity, 1));\n}\n.bg-red-50\\/5 {\n background-color: rgb(254 242 242 / 0.05);\n}\n.bg-red-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(239 68 68 / var(--tw-bg-opacity, 1));\n}\n.bg-red-500\\/10 {\n background-color: rgb(239 68 68 / 0.1);\n}\n.bg-red-600 {\n --tw-bg-opacity: 1;\n background-color: rgb(220 38 38 / var(--tw-bg-opacity, 1));\n}\n.bg-secondary {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--secondary) / var(--tw-bg-opacity, 1));\n}\n.bg-secondary-foreground {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--secondary-foreground) / var(--tw-bg-opacity, 1));\n}\n.bg-secondary\\/20 {\n background-color: hsl(var(--secondary) / 0.2);\n}\n.bg-secondary\\/5 {\n background-color: hsl(var(--secondary) / 0.05);\n}\n.bg-slate-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(100 116 139 / var(--tw-bg-opacity, 1));\n}\n.bg-success {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--success) / var(--tw-bg-opacity, 1));\n}\n.bg-success\\/10 {\n background-color: hsl(var(--success) / 0.1);\n}\n.bg-success\\/20 {\n background-color: hsl(var(--success) / 0.2);\n}\n.bg-success\\/5 {\n background-color: hsl(var(--success) / 0.05);\n}\n.bg-transparent {\n background-color: transparent;\n}\n.bg-warning {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--warning) / var(--tw-bg-opacity, 1));\n}\n.bg-warning\\/10 {\n background-color: hsl(var(--warning) / 0.1);\n}\n.bg-warning\\/20 {\n background-color: hsl(var(--warning) / 0.2);\n}\n.bg-white {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));\n}\n.bg-white\\/10 {\n background-color: rgb(255 255 255 / 0.1);\n}\n.bg-white\\/20 {\n background-color: rgb(255 255 255 / 0.2);\n}\n.bg-white\\/5 {\n background-color: rgb(255 255 255 / 0.05);\n}\n.bg-white\\/90 {\n background-color: rgb(255 255 255 / 0.9);\n}\n.bg-yellow-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(254 249 195 / var(--tw-bg-opacity, 1));\n}\n.bg-yellow-200 {\n --tw-bg-opacity: 1;\n background-color: rgb(254 240 138 / var(--tw-bg-opacity, 1));\n}\n.bg-yellow-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(254 252 232 / var(--tw-bg-opacity, 1));\n}\n.bg-yellow-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(234 179 8 / var(--tw-bg-opacity, 1));\n}\n.bg-yellow-500\\/10 {\n background-color: rgb(234 179 8 / 0.1);\n}\n.bg-yellow-500\\/90 {\n background-color: rgb(234 179 8 / 0.9);\n}\n.bg-opacity-80 {\n --tw-bg-opacity: 0.8;\n}\n.bg-gradient-to-b {\n background-image: linear-gradient(to bottom, var(--tw-gradient-stops));\n}\n.bg-gradient-to-br {\n background-image: linear-gradient(to bottom right, var(--tw-gradient-stops));\n}\n.bg-gradient-to-r {\n background-image: linear-gradient(to right, var(--tw-gradient-stops));\n}\n.bg-gradient-to-t {\n background-image: linear-gradient(to top, var(--tw-gradient-stops));\n}\n.from-background {\n --tw-gradient-from: hsl(var(--background) / 1) var(--tw-gradient-from-position);\n --tw-gradient-to: hsl(var(--background) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-background\\/90 {\n --tw-gradient-from: hsl(var(--background) / 0.9) var(--tw-gradient-from-position);\n --tw-gradient-to: hsl(var(--background) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-background\\/95 {\n --tw-gradient-from: hsl(var(--background) / 0.95) var(--tw-gradient-from-position);\n --tw-gradient-to: hsl(var(--background) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-black\\/50 {\n --tw-gradient-from: rgb(0 0 0 / 0.5) var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-black\\/70 {\n --tw-gradient-from: rgb(0 0 0 / 0.7) var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-black\\/80 {\n --tw-gradient-from: rgb(0 0 0 / 0.8) var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-black\\/95 {\n --tw-gradient-from: rgb(0 0 0 / 0.95) var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-blue-500 {\n --tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-blue-500\\/10 {\n --tw-gradient-from: rgb(59 130 246 / 0.1) var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-blue-600 {\n --tw-gradient-from: #2563eb var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(37 99 235 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-border {\n --tw-gradient-from: hsl(var(--border) / 1) var(--tw-gradient-from-position);\n --tw-gradient-to: hsl(var(--border) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-gray-500\\/10 {\n --tw-gradient-from: rgb(107 114 128 / 0.1) var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(107 114 128 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-green-500 {\n --tw-gradient-from: #22c55e var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(34 197 94 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-green-500\\/10 {\n --tw-gradient-from: rgb(34 197 94 / 0.1) var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(34 197 94 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-indigo-500\\/10 {\n --tw-gradient-from: rgb(99 102 241 / 0.1) var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-orange-500 {\n --tw-gradient-from: #f97316 var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-orange-500\\/10 {\n --tw-gradient-from: rgb(249 115 22 / 0.1) var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-primary {\n --tw-gradient-from: hsl(var(--primary) / 1) var(--tw-gradient-from-position);\n --tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-primary\\/10 {\n --tw-gradient-from: hsl(var(--primary) / 0.1) var(--tw-gradient-from-position);\n --tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-primary\\/20 {\n --tw-gradient-from: hsl(var(--primary) / 0.2) var(--tw-gradient-from-position);\n --tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-primary\\/5 {\n --tw-gradient-from: hsl(var(--primary) / 0.05) var(--tw-gradient-from-position);\n --tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-primary\\/60 {\n --tw-gradient-from: hsl(var(--primary) / 0.6) var(--tw-gradient-from-position);\n --tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-purple-50 {\n --tw-gradient-from: #faf5ff var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(250 245 255 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-purple-500 {\n --tw-gradient-from: #a855f7 var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-purple-500\\/10 {\n --tw-gradient-from: rgb(168 85 247 / 0.1) var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-purple-600 {\n --tw-gradient-from: #9333ea var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(147 51 234 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-transparent {\n --tw-gradient-from: transparent var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-white\\/10 {\n --tw-gradient-from: rgb(255 255 255 / 0.1) var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-white\\/5 {\n --tw-gradient-from: rgb(255 255 255 / 0.05) var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-yellow-400 {\n --tw-gradient-from: #facc15 var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(250 204 21 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-yellow-50\\/10 {\n --tw-gradient-from: rgb(254 252 232 / 0.1) var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(254 252 232 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.from-yellow-50\\/5 {\n --tw-gradient-from: rgb(254 252 232 / 0.05) var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(254 252 232 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.via-accent\\/5 {\n --tw-gradient-to: hsl(var(--accent) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops:\n var(--tw-gradient-from),\n hsl(var(--accent) / 0.05) var(--tw-gradient-via-position),\n var(--tw-gradient-to);\n}\n.via-background {\n --tw-gradient-to: hsl(var(--background) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops:\n var(--tw-gradient-from),\n hsl(var(--background) / 1) var(--tw-gradient-via-position),\n var(--tw-gradient-to);\n}\n.via-border {\n --tw-gradient-to: hsl(var(--border) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops:\n var(--tw-gradient-from),\n hsl(var(--border) / 1) var(--tw-gradient-via-position),\n var(--tw-gradient-to);\n}\n.via-border\\/60 {\n --tw-gradient-to: hsl(var(--border) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops:\n var(--tw-gradient-from),\n hsl(var(--border) / 0.6) var(--tw-gradient-via-position),\n var(--tw-gradient-to);\n}\n.via-primary\\/30 {\n --tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops:\n var(--tw-gradient-from),\n hsl(var(--primary) / 0.3) var(--tw-gradient-via-position),\n var(--tw-gradient-to);\n}\n.via-primary\\/5 {\n --tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops:\n var(--tw-gradient-from),\n hsl(var(--primary) / 0.05) var(--tw-gradient-via-position),\n var(--tw-gradient-to);\n}\n.via-primary\\/50 {\n --tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops:\n var(--tw-gradient-from),\n hsl(var(--primary) / 0.5) var(--tw-gradient-via-position),\n var(--tw-gradient-to);\n}\n.via-purple-900\\/20 {\n --tw-gradient-to: rgb(88 28 135 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops:\n var(--tw-gradient-from),\n rgb(88 28 135 / 0.2) var(--tw-gradient-via-position),\n var(--tw-gradient-to);\n}\n.via-transparent {\n --tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops:\n var(--tw-gradient-from),\n transparent var(--tw-gradient-via-position),\n var(--tw-gradient-to);\n}\n.via-white\\/20 {\n --tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops:\n var(--tw-gradient-from),\n rgb(255 255 255 / 0.2) var(--tw-gradient-via-position),\n var(--tw-gradient-to);\n}\n.to-amber-500 {\n --tw-gradient-to: #f59e0b var(--tw-gradient-to-position);\n}\n.to-background\\/90 {\n --tw-gradient-to: hsl(var(--background) / 0.9) var(--tw-gradient-to-position);\n}\n.to-background\\/95 {\n --tw-gradient-to: hsl(var(--background) / 0.95) var(--tw-gradient-to-position);\n}\n.to-black\\/10 {\n --tw-gradient-to: rgb(0 0 0 / 0.1) var(--tw-gradient-to-position);\n}\n.to-black\\/5 {\n --tw-gradient-to: rgb(0 0 0 / 0.05) var(--tw-gradient-to-position);\n}\n.to-black\\/80 {\n --tw-gradient-to: rgb(0 0 0 / 0.8) var(--tw-gradient-to-position);\n}\n.to-blue-50 {\n --tw-gradient-to: #eff6ff var(--tw-gradient-to-position);\n}\n.to-blue-500\\/10 {\n --tw-gradient-to: rgb(59 130 246 / 0.1) var(--tw-gradient-to-position);\n}\n.to-blue-600 {\n --tw-gradient-to: #2563eb var(--tw-gradient-to-position);\n}\n.to-border\\/30 {\n --tw-gradient-to: hsl(var(--border) / 0.3) var(--tw-gradient-to-position);\n}\n.to-emerald-500 {\n --tw-gradient-to: #10b981 var(--tw-gradient-to-position);\n}\n.to-emerald-500\\/10 {\n --tw-gradient-to: rgb(16 185 129 / 0.1) var(--tw-gradient-to-position);\n}\n.to-gray-600\\/10 {\n --tw-gradient-to: rgb(75 85 99 / 0.1) var(--tw-gradient-to-position);\n}\n.to-pink-500 {\n --tw-gradient-to: #ec4899 var(--tw-gradient-to-position);\n}\n.to-pink-500\\/10 {\n --tw-gradient-to: rgb(236 72 153 / 0.1) var(--tw-gradient-to-position);\n}\n.to-pink-600 {\n --tw-gradient-to: #db2777 var(--tw-gradient-to-position);\n}\n.to-primary {\n --tw-gradient-to: hsl(var(--primary) / 1) var(--tw-gradient-to-position);\n}\n.to-primary\\/10 {\n --tw-gradient-to: hsl(var(--primary) / 0.1) var(--tw-gradient-to-position);\n}\n.to-primary\\/5 {\n --tw-gradient-to: hsl(var(--primary) / 0.05) var(--tw-gradient-to-position);\n}\n.to-purple-500 {\n --tw-gradient-to: #a855f7 var(--tw-gradient-to-position);\n}\n.to-purple-500\\/10 {\n --tw-gradient-to: rgb(168 85 247 / 0.1) var(--tw-gradient-to-position);\n}\n.to-purple-600 {\n --tw-gradient-to: #9333ea var(--tw-gradient-to-position);\n}\n.to-red-500 {\n --tw-gradient-to: #ef4444 var(--tw-gradient-to-position);\n}\n.to-red-500\\/10 {\n --tw-gradient-to: rgb(239 68 68 / 0.1) var(--tw-gradient-to-position);\n}\n.to-secondary\\/10 {\n --tw-gradient-to: hsl(var(--secondary) / 0.1) var(--tw-gradient-to-position);\n}\n.to-secondary\\/5 {\n --tw-gradient-to: hsl(var(--secondary) / 0.05) var(--tw-gradient-to-position);\n}\n.to-transparent {\n --tw-gradient-to: transparent var(--tw-gradient-to-position);\n}\n.to-yellow-50\\/5 {\n --tw-gradient-to: rgb(254 252 232 / 0.05) var(--tw-gradient-to-position);\n}\n.fill-current {\n fill: currentColor;\n}\n.fill-yellow-500 {\n fill: #eab308;\n}\n.object-contain {\n -o-object-fit: contain;\n object-fit: contain;\n}\n.object-cover {\n -o-object-fit: cover;\n object-fit: cover;\n}\n.p-0 {\n padding: 0px;\n}\n.p-0\\.5 {\n padding: 0.125rem;\n}\n.p-1 {\n padding: 0.25rem;\n}\n.p-1\\.5 {\n padding: 0.375rem;\n}\n.p-10 {\n padding: 2.5rem;\n}\n.p-2 {\n padding: 0.5rem;\n}\n.p-3 {\n padding: 0.75rem;\n}\n.p-3\\.5 {\n padding: 0.875rem;\n}\n.p-4 {\n padding: 1rem;\n}\n.p-5 {\n padding: 1.25rem;\n}\n.p-6 {\n padding: 1.5rem;\n}\n.p-8 {\n padding: 2rem;\n}\n.p-\\[1px\\] {\n padding: 1px;\n}\n.px-0 {\n padding-left: 0px;\n padding-right: 0px;\n}\n.px-0\\.5 {\n padding-left: 0.125rem;\n padding-right: 0.125rem;\n}\n.px-1 {\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n}\n.px-1\\.5 {\n padding-left: 0.375rem;\n padding-right: 0.375rem;\n}\n.px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.px-2\\.5 {\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n}\n.px-3 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n.px-3\\.5 {\n padding-left: 0.875rem;\n padding-right: 0.875rem;\n}\n.px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n.px-5 {\n padding-left: 1.25rem;\n padding-right: 1.25rem;\n}\n.px-6 {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n.px-8 {\n padding-left: 2rem;\n padding-right: 2rem;\n}\n.py-0 {\n padding-top: 0px;\n padding-bottom: 0px;\n}\n.py-0\\.5 {\n padding-top: 0.125rem;\n padding-bottom: 0.125rem;\n}\n.py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n.py-1\\.5 {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n.py-12 {\n padding-top: 3rem;\n padding-bottom: 3rem;\n}\n.py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.py-2\\.5 {\n padding-top: 0.625rem;\n padding-bottom: 0.625rem;\n}\n.py-3 {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n.py-3\\.5 {\n padding-top: 0.875rem;\n padding-bottom: 0.875rem;\n}\n.py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n.py-5 {\n padding-top: 1.25rem;\n padding-bottom: 1.25rem;\n}\n.py-6 {\n padding-top: 1.5rem;\n padding-bottom: 1.5rem;\n}\n.py-8 {\n padding-top: 2rem;\n padding-bottom: 2rem;\n}\n.pb-0 {\n padding-bottom: 0px;\n}\n.pb-1 {\n padding-bottom: 0.25rem;\n}\n.pb-10 {\n padding-bottom: 2.5rem;\n}\n.pb-2 {\n padding-bottom: 0.5rem;\n}\n.pb-3 {\n padding-bottom: 0.75rem;\n}\n.pb-4 {\n padding-bottom: 1rem;\n}\n.pb-5 {\n padding-bottom: 1.25rem;\n}\n.pb-6 {\n padding-bottom: 1.5rem;\n}\n.pl-10 {\n padding-left: 2.5rem;\n}\n.pl-12 {\n padding-left: 3rem;\n}\n.pl-14 {\n padding-left: 3.5rem;\n}\n.pl-2 {\n padding-left: 0.5rem;\n}\n.pl-2\\.5 {\n padding-left: 0.625rem;\n}\n.pl-4 {\n padding-left: 1rem;\n}\n.pl-7 {\n padding-left: 1.75rem;\n}\n.pl-8 {\n padding-left: 2rem;\n}\n.pl-9 {\n padding-left: 2.25rem;\n}\n.pr-10 {\n padding-right: 2.5rem;\n}\n.pr-2 {\n padding-right: 0.5rem;\n}\n.pr-2\\.5 {\n padding-right: 0.625rem;\n}\n.pr-20 {\n padding-right: 5rem;\n}\n.pr-3 {\n padding-right: 0.75rem;\n}\n.pr-4 {\n padding-right: 1rem;\n}\n.pr-8 {\n padding-right: 2rem;\n}\n.pr-9 {\n padding-right: 2.25rem;\n}\n.pt-0 {\n padding-top: 0px;\n}\n.pt-1 {\n padding-top: 0.25rem;\n}\n.pt-2 {\n padding-top: 0.5rem;\n}\n.pt-3 {\n padding-top: 0.75rem;\n}\n.pt-4 {\n padding-top: 1rem;\n}\n.pt-5 {\n padding-top: 1.25rem;\n}\n.pt-6 {\n padding-top: 1.5rem;\n}\n.pt-8 {\n padding-top: 2rem;\n}\n.text-left {\n text-align: left;\n}\n.text-center {\n text-align: center;\n}\n.text-right {\n text-align: right;\n}\n.align-middle {\n vertical-align: middle;\n}\n.font-mono {\n font-family: var(--font-mono);\n}\n.text-2xl {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n.text-3xl {\n font-size: 1.875rem;\n line-height: 2.25rem;\n}\n.text-5xl {\n font-size: 3rem;\n line-height: 1;\n}\n.text-\\[0\\.65rem\\] {\n font-size: 0.65rem;\n}\n.text-\\[10px\\] {\n font-size: 10px;\n}\n.text-\\[11px\\] {\n font-size: 11px;\n}\n.text-\\[8px\\] {\n font-size: 8px;\n}\n.text-\\[9px\\] {\n font-size: 9px;\n}\n.text-base {\n font-size: 1rem;\n line-height: 1.5rem;\n}\n.text-lg {\n font-size: 1.125rem;\n line-height: 1.75rem;\n}\n.text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.text-xl {\n font-size: 1.25rem;\n line-height: 1.75rem;\n}\n.text-xs {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.font-bold {\n font-weight: 700;\n}\n.font-medium {\n font-weight: 500;\n}\n.font-normal {\n font-weight: 400;\n}\n.font-semibold {\n font-weight: 600;\n}\n.uppercase {\n text-transform: uppercase;\n}\n.capitalize {\n text-transform: capitalize;\n}\n.italic {\n font-style: italic;\n}\n.tabular-nums {\n --tw-numeric-spacing: tabular-nums;\n font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);\n}\n.leading-5 {\n line-height: 1.25rem;\n}\n.leading-none {\n line-height: 1;\n}\n.leading-normal {\n line-height: 1.5;\n}\n.leading-relaxed {\n line-height: 1.625;\n}\n.leading-snug {\n line-height: 1.375;\n}\n.leading-tight {\n line-height: 1.25;\n}\n.tracking-tight {\n letter-spacing: -0.025em;\n}\n.tracking-wider {\n letter-spacing: 0.05em;\n}\n.tracking-widest {\n letter-spacing: 0.1em;\n}\n.text-\\[var\\(--login-primary\\)\\] {\n color: var(--login-primary);\n}\n.text-\\[var\\(--login-text\\)\\] {\n color: var(--login-text);\n}\n.text-accent-foreground {\n --tw-text-opacity: 1;\n color: hsl(var(--accent-foreground) / var(--tw-text-opacity, 1));\n}\n.text-amber-500 {\n --tw-text-opacity: 1;\n color: rgb(245 158 11 / var(--tw-text-opacity, 1));\n}\n.text-blue-500 {\n --tw-text-opacity: 1;\n color: rgb(59 130 246 / var(--tw-text-opacity, 1));\n}\n.text-blue-600 {\n --tw-text-opacity: 1;\n color: rgb(37 99 235 / var(--tw-text-opacity, 1));\n}\n.text-blue-700 {\n --tw-text-opacity: 1;\n color: rgb(29 78 216 / var(--tw-text-opacity, 1));\n}\n.text-blue-900 {\n --tw-text-opacity: 1;\n color: rgb(30 58 138 / var(--tw-text-opacity, 1));\n}\n.text-border {\n --tw-text-opacity: 1;\n color: hsl(var(--border) / var(--tw-text-opacity, 1));\n}\n.text-card-foreground {\n --tw-text-opacity: 1;\n color: hsl(var(--card-foreground) / var(--tw-text-opacity, 1));\n}\n.text-current {\n color: currentColor;\n}\n.text-destructive {\n --tw-text-opacity: 1;\n color: hsl(var(--destructive) / var(--tw-text-opacity, 1));\n}\n.text-destructive-foreground {\n --tw-text-opacity: 1;\n color: hsl(var(--destructive-foreground) / var(--tw-text-opacity, 1));\n}\n.text-error {\n --tw-text-opacity: 1;\n color: hsl(var(--error) / var(--tw-text-opacity, 1));\n}\n.text-foreground {\n --tw-text-opacity: 1;\n color: hsl(var(--foreground) / var(--tw-text-opacity, 1));\n}\n.text-foreground\\/50 {\n color: hsl(var(--foreground) / 0.5);\n}\n.text-foreground\\/60 {\n color: hsl(var(--foreground) / 0.6);\n}\n.text-gray-400 {\n --tw-text-opacity: 1;\n color: rgb(156 163 175 / var(--tw-text-opacity, 1));\n}\n.text-gray-500 {\n --tw-text-opacity: 1;\n color: rgb(107 114 128 / var(--tw-text-opacity, 1));\n}\n.text-gray-600 {\n --tw-text-opacity: 1;\n color: rgb(75 85 99 / var(--tw-text-opacity, 1));\n}\n.text-gray-700 {\n --tw-text-opacity: 1;\n color: rgb(55 65 81 / var(--tw-text-opacity, 1));\n}\n.text-gray-900 {\n --tw-text-opacity: 1;\n color: rgb(17 24 39 / var(--tw-text-opacity, 1));\n}\n.text-green-400 {\n --tw-text-opacity: 1;\n color: rgb(74 222 128 / var(--tw-text-opacity, 1));\n}\n.text-green-500 {\n --tw-text-opacity: 1;\n color: rgb(34 197 94 / var(--tw-text-opacity, 1));\n}\n.text-green-600 {\n --tw-text-opacity: 1;\n color: rgb(22 163 74 / var(--tw-text-opacity, 1));\n}\n.text-green-700 {\n --tw-text-opacity: 1;\n color: rgb(21 128 61 / var(--tw-text-opacity, 1));\n}\n.text-green-800 {\n --tw-text-opacity: 1;\n color: rgb(22 101 52 / var(--tw-text-opacity, 1));\n}\n.text-green-900 {\n --tw-text-opacity: 1;\n color: rgb(20 83 45 / var(--tw-text-opacity, 1));\n}\n.text-muted-foreground {\n --tw-text-opacity: 1;\n color: hsl(var(--muted-foreground) / var(--tw-text-opacity, 1));\n}\n.text-muted-foreground\\/20 {\n color: hsl(var(--muted-foreground) / 0.2);\n}\n.text-muted-foreground\\/30 {\n color: hsl(var(--muted-foreground) / 0.3);\n}\n.text-muted-foreground\\/50 {\n color: hsl(var(--muted-foreground) / 0.5);\n}\n.text-orange-500 {\n --tw-text-opacity: 1;\n color: rgb(249 115 22 / var(--tw-text-opacity, 1));\n}\n.text-orange-600 {\n --tw-text-opacity: 1;\n color: rgb(234 88 12 / var(--tw-text-opacity, 1));\n}\n.text-orange-800 {\n --tw-text-opacity: 1;\n color: rgb(154 52 18 / var(--tw-text-opacity, 1));\n}\n.text-orange-900 {\n --tw-text-opacity: 1;\n color: rgb(124 45 18 / var(--tw-text-opacity, 1));\n}\n.text-popover-foreground {\n --tw-text-opacity: 1;\n color: hsl(var(--popover-foreground) / var(--tw-text-opacity, 1));\n}\n.text-primary {\n --tw-text-opacity: 1;\n color: hsl(var(--primary) / var(--tw-text-opacity, 1));\n}\n.text-primary-foreground {\n --tw-text-opacity: 1;\n color: hsl(var(--primary-foreground) / var(--tw-text-opacity, 1));\n}\n.text-purple-400 {\n --tw-text-opacity: 1;\n color: rgb(192 132 252 / var(--tw-text-opacity, 1));\n}\n.text-purple-500 {\n --tw-text-opacity: 1;\n color: rgb(168 85 247 / var(--tw-text-opacity, 1));\n}\n.text-purple-600 {\n --tw-text-opacity: 1;\n color: rgb(147 51 234 / var(--tw-text-opacity, 1));\n}\n.text-purple-700 {\n --tw-text-opacity: 1;\n color: rgb(126 34 206 / var(--tw-text-opacity, 1));\n}\n.text-red-500 {\n --tw-text-opacity: 1;\n color: rgb(239 68 68 / var(--tw-text-opacity, 1));\n}\n.text-red-600 {\n --tw-text-opacity: 1;\n color: rgb(220 38 38 / var(--tw-text-opacity, 1));\n}\n.text-red-700 {\n --tw-text-opacity: 1;\n color: rgb(185 28 28 / var(--tw-text-opacity, 1));\n}\n.text-red-800 {\n --tw-text-opacity: 1;\n color: rgb(153 27 27 / var(--tw-text-opacity, 1));\n}\n.text-secondary-foreground {\n --tw-text-opacity: 1;\n color: hsl(var(--secondary-foreground) / var(--tw-text-opacity, 1));\n}\n.text-slate-700 {\n --tw-text-opacity: 1;\n color: rgb(51 65 85 / var(--tw-text-opacity, 1));\n}\n.text-success {\n --tw-text-opacity: 1;\n color: hsl(var(--success) / var(--tw-text-opacity, 1));\n}\n.text-success-foreground {\n --tw-text-opacity: 1;\n color: hsl(var(--success-foreground) / var(--tw-text-opacity, 1));\n}\n.text-warning {\n --tw-text-opacity: 1;\n color: hsl(var(--warning) / var(--tw-text-opacity, 1));\n}\n.text-warning-foreground {\n --tw-text-opacity: 1;\n color: hsl(var(--warning-foreground) / var(--tw-text-opacity, 1));\n}\n.text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\n}\n.text-white\\/70 {\n color: rgb(255 255 255 / 0.7);\n}\n.text-white\\/80 {\n color: rgb(255 255 255 / 0.8);\n}\n.text-yellow-400 {\n --tw-text-opacity: 1;\n color: rgb(250 204 21 / var(--tw-text-opacity, 1));\n}\n.text-yellow-500 {\n --tw-text-opacity: 1;\n color: rgb(234 179 8 / var(--tw-text-opacity, 1));\n}\n.text-yellow-600 {\n --tw-text-opacity: 1;\n color: rgb(202 138 4 / var(--tw-text-opacity, 1));\n}\n.text-yellow-700 {\n --tw-text-opacity: 1;\n color: rgb(161 98 7 / var(--tw-text-opacity, 1));\n}\n.text-yellow-800 {\n --tw-text-opacity: 1;\n color: rgb(133 77 14 / var(--tw-text-opacity, 1));\n}\n.text-yellow-900 {\n --tw-text-opacity: 1;\n color: rgb(113 63 18 / var(--tw-text-opacity, 1));\n}\n.underline {\n text-decoration-line: underline;\n}\n.line-through {\n text-decoration-line: line-through;\n}\n.no-underline {\n text-decoration-line: none;\n}\n.underline-offset-4 {\n text-underline-offset: 4px;\n}\n.opacity-0 {\n opacity: 0;\n}\n.opacity-100 {\n opacity: 1;\n}\n.opacity-20 {\n opacity: 0.2;\n}\n.opacity-30 {\n opacity: 0.3;\n}\n.opacity-50 {\n opacity: 0.5;\n}\n.opacity-60 {\n opacity: 0.6;\n}\n.opacity-70 {\n opacity: 0.7;\n}\n.opacity-75 {\n opacity: 0.75;\n}\n.opacity-80 {\n opacity: 0.8;\n}\n.opacity-90 {\n opacity: 0.9;\n}\n.shadow {\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.shadow-2xl {\n --tw-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);\n --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.shadow-\\[0_0_15px_rgba\\(59\\,130\\,246\\,0\\.3\\)\\] {\n --tw-shadow: 0 0 15px rgba(59,130,246,0.3);\n --tw-shadow-colored: 0 0 15px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.shadow-\\[0_0_15px_rgba\\(var\\(--primary\\)\\,0\\.5\\)\\] {\n --tw-shadow: 0 0 15px rgba(var(--primary),0.5);\n --tw-shadow-colored: 0 0 15px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.shadow-\\[0_0_20px_rgba\\(139\\,92\\,246\\,0\\.3\\)\\] {\n --tw-shadow: 0 0 20px rgba(139,92,246,0.3);\n --tw-shadow-colored: 0 0 20px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.shadow-\\[0_0_20px_rgba\\(59\\,130\\,246\\,0\\.3\\)\\] {\n --tw-shadow: 0 0 20px rgba(59,130,246,0.3);\n --tw-shadow-colored: 0 0 20px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.shadow-\\[0_0_20px_rgba\\(var\\(--primary\\)\\,0\\.3\\)\\] {\n --tw-shadow: 0 0 20px rgba(var(--primary),0.3);\n --tw-shadow-colored: 0 0 20px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.shadow-\\[0_0_30px_rgba\\(59\\,130\\,246\\,0\\.5\\)\\] {\n --tw-shadow: 0 0 30px rgba(59,130,246,0.5);\n --tw-shadow-colored: 0 0 30px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.shadow-\\[0_0_30px_rgba\\(var\\(--primary\\)\\,0\\.15\\)\\] {\n --tw-shadow: 0 0 30px rgba(var(--primary),0.15);\n --tw-shadow-colored: 0 0 30px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.shadow-inner {\n --tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.shadow-lg {\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.shadow-md {\n --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.shadow-none {\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.shadow-sm {\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.shadow-xl {\n --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.shadow-primary\\/20 {\n --tw-shadow-color: hsl(var(--primary) / 0.2);\n --tw-shadow: var(--tw-shadow-colored);\n}\n.shadow-purple-500\\/40 {\n --tw-shadow-color: rgb(168 85 247 / 0.4);\n --tw-shadow: var(--tw-shadow-colored);\n}\n.outline-none {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.outline {\n outline-style: solid;\n}\n.ring {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow:\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow, 0 0 #0000);\n}\n.ring-0 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow:\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow, 0 0 #0000);\n}\n.ring-2 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow:\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow, 0 0 #0000);\n}\n.ring-4 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow:\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow, 0 0 #0000);\n}\n.ring-background {\n --tw-ring-opacity: 1;\n --tw-ring-color: hsl(var(--background) / var(--tw-ring-opacity, 1));\n}\n.ring-gray-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(209 213 219 / var(--tw-ring-opacity, 1));\n}\n.ring-primary {\n --tw-ring-opacity: 1;\n --tw-ring-color: hsl(var(--primary) / var(--tw-ring-opacity, 1));\n}\n.ring-ring {\n --tw-ring-opacity: 1;\n --tw-ring-color: hsl(var(--ring) / var(--tw-ring-opacity, 1));\n}\n.ring-white {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(255 255 255 / var(--tw-ring-opacity, 1));\n}\n.ring-offset-2 {\n --tw-ring-offset-width: 2px;\n}\n.ring-offset-background {\n --tw-ring-offset-color: hsl(var(--background) / 1);\n}\n.blur {\n --tw-blur: blur(8px);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.blur-md {\n --tw-blur: blur(12px);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.blur-xl {\n --tw-blur: blur(24px);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.grayscale {\n --tw-grayscale: grayscale(100%);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.\\!filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) !important;\n}\n.filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.backdrop-blur {\n --tw-backdrop-blur: blur(8px);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.backdrop-blur-lg {\n --tw-backdrop-blur: blur(16px);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.backdrop-blur-md {\n --tw-backdrop-blur: blur(12px);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.backdrop-blur-sm {\n --tw-backdrop-blur: blur(4px);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.backdrop-blur-xl {\n --tw-backdrop-blur: blur(24px);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.backdrop-filter {\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.transition {\n transition-property:\n color,\n background-color,\n border-color,\n text-decoration-color,\n fill,\n stroke,\n opacity,\n box-shadow,\n transform,\n filter,\n backdrop-filter;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-colors {\n transition-property:\n color,\n background-color,\n border-color,\n text-decoration-color,\n fill,\n stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-opacity {\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-shadow {\n transition-property: box-shadow;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-transform {\n transition-property: transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.duration-100 {\n transition-duration: 100ms;\n}\n.duration-1000 {\n transition-duration: 1000ms;\n}\n.duration-150 {\n transition-duration: 150ms;\n}\n.duration-200 {\n transition-duration: 200ms;\n}\n.duration-300 {\n transition-duration: 300ms;\n}\n.duration-500 {\n transition-duration: 500ms;\n}\n.ease-in-out {\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ease-out {\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n}\n.will-change-transform {\n will-change: transform;\n}\n@keyframes enter {\n from {\n opacity: var(--tw-enter-opacity, 1);\n transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));\n }\n}\n@keyframes exit {\n to {\n opacity: var(--tw-exit-opacity, 1);\n transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));\n }\n}\n.animate-in {\n animation-name: enter;\n animation-duration: 150ms;\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n}\n.fade-in-0 {\n --tw-enter-opacity: 0;\n}\n.zoom-in-95 {\n --tw-enter-scale: .95;\n}\n.duration-100 {\n animation-duration: 100ms;\n}\n.duration-1000 {\n animation-duration: 1000ms;\n}\n.duration-150 {\n animation-duration: 150ms;\n}\n.duration-200 {\n animation-duration: 200ms;\n}\n.duration-300 {\n animation-duration: 300ms;\n}\n.duration-500 {\n animation-duration: 500ms;\n}\n.ease-in-out {\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n.ease-out {\n animation-timing-function: cubic-bezier(0, 0, 0.2, 1);\n}\n.running {\n animation-play-state: running;\n}\n.paused {\n animation-play-state: paused;\n}\n@keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes bounce-in {\n 0% {\n transform: scale(0.8);\n opacity: 0;\n }\n 50% {\n transform: scale(1.1);\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n}\n@keyframes bounce-out {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 100% {\n transform: scale(0.8);\n opacity: 0;\n }\n}\n@keyframes rotate-in-90 {\n from {\n transform: rotate(-90deg) scale(0.9);\n opacity: 0;\n }\n to {\n transform: rotate(0) scale(1);\n opacity: 1;\n }\n}\n@keyframes rotate-out-90 {\n from {\n transform: rotate(0) scale(1);\n opacity: 1;\n }\n to {\n transform: rotate(90deg) scale(0.9);\n opacity: 0;\n }\n}\n@keyframes rotate-x-90 {\n from {\n transform: perspective(800px) rotateX(-90deg);\n opacity: 0;\n }\n to {\n transform: perspective(800px) rotateX(0);\n opacity: 1;\n }\n}\n@keyframes spin-in-180 {\n from {\n transform: rotate(-540deg) scale(0);\n opacity: 0;\n }\n to {\n transform: rotate(0) scale(1);\n opacity: 1;\n }\n}\n@keyframes spin-out-180 {\n from {\n transform: rotate(0) scale(1);\n opacity: 1;\n }\n to {\n transform: rotate(540deg) scale(0);\n opacity: 0;\n }\n}\n@keyframes zoom-in-110 {\n from {\n transform: scale(0);\n opacity: 0;\n }\n 50% {\n transform: scale(1.1);\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n}\n@keyframes elastic-in {\n 0% {\n transform: scale(0.3);\n opacity: 0;\n }\n 50% {\n transform: scale(1.15);\n }\n 75% {\n transform: scale(0.95);\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n}\n@keyframes elastic-out {\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 100% {\n transform: scale(0.3);\n opacity: 0;\n }\n}\n@keyframes spring-in {\n 0% {\n transform: scale(0.9) translateY(20px);\n opacity: 0;\n }\n 50% {\n transform: scale(1.05) translateY(-10px);\n }\n 100% {\n transform: scale(1) translateY(0);\n opacity: 1;\n }\n}\n@keyframes spring-out {\n 0% {\n transform: scale(1) translateY(0);\n opacity: 1;\n }\n 100% {\n transform: scale(0.9) translateY(20px);\n opacity: 0;\n }\n}\n.react-grid-layout {\n position: relative !important;\n transition: height 200ms ease;\n}\n.react-grid-item {\n transition: all 200ms ease;\n transition-property:\n left,\n top,\n width,\n height;\n}\n.react-grid-item > div {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n.react-grid-item.cssTransforms {\n transition-property:\n transform,\n width,\n height;\n}\n.react-grid-item.resizing {\n transition: none;\n z-index: 1;\n will-change: width, height;\n}\n.react-grid-item.react-draggable-dragging {\n transition: none;\n z-index: 3;\n will-change: transform;\n}\n@media (max-width: 768px) {\n .react-grid-layout {\n overflow-x: hidden !important;\n height: auto !important;\n }\n .react-grid-item {\n position: relative !important;\n transform: none !important;\n margin-bottom: 24px !important;\n width: 100% !important;\n left: 0 !important;\n right: 0 !important;\n }\n .react-grid-item:last-child {\n margin-bottom: 0 !important;\n }\n .react-grid-item.cssTransforms {\n position: relative !important;\n transform: none !important;\n }\n .react-grid-placeholder {\n display: none !important;\n }\n}\n.file\\:border-0::file-selector-button {\n border-width: 0px;\n}\n.file\\:bg-transparent::file-selector-button {\n background-color: transparent;\n}\n.file\\:font-medium::file-selector-button {\n font-weight: 500;\n}\n.placeholder\\:text-gray-500::-moz-placeholder {\n --tw-text-opacity: 1;\n color: rgb(107 114 128 / var(--tw-text-opacity, 1));\n}\n.placeholder\\:text-gray-500::placeholder {\n --tw-text-opacity: 1;\n color: rgb(107 114 128 / var(--tw-text-opacity, 1));\n}\n.placeholder\\:text-muted-foreground::-moz-placeholder {\n --tw-text-opacity: 1;\n color: hsl(var(--muted-foreground) / var(--tw-text-opacity, 1));\n}\n.placeholder\\:text-muted-foreground::placeholder {\n --tw-text-opacity: 1;\n color: hsl(var(--muted-foreground) / var(--tw-text-opacity, 1));\n}\n.before\\:absolute::before {\n content: var(--tw-content);\n position: absolute;\n}\n.before\\:inset-0::before {\n content: var(--tw-content);\n inset: 0px;\n}\n.before\\:bg-gradient-to-br::before {\n content: var(--tw-content);\n background-image: linear-gradient(to bottom right, var(--tw-gradient-stops));\n}\n.before\\:from-transparent::before {\n content: var(--tw-content);\n --tw-gradient-from: transparent var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.before\\:via-primary\\/10::before {\n content: var(--tw-content);\n --tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops:\n var(--tw-gradient-from),\n hsl(var(--primary) / 0.1) var(--tw-gradient-via-position),\n var(--tw-gradient-to);\n}\n.before\\:to-transparent::before {\n content: var(--tw-content);\n --tw-gradient-to: transparent var(--tw-gradient-to-position);\n}\n.last\\:mb-0:last-child {\n margin-bottom: 0px;\n}\n.last\\:border-b-0:last-child {\n border-bottom-width: 0px;\n}\n.last\\:border-r-0:last-child {\n border-right-width: 0px;\n}\n.hover\\:-translate-y-0\\.5:hover {\n --tw-translate-y: -0.125rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.hover\\:-translate-y-1:hover {\n --tw-translate-y: -0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.hover\\:scale-105:hover {\n --tw-scale-x: 1.05;\n --tw-scale-y: 1.05;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.hover\\:scale-110:hover {\n --tw-scale-x: 1.1;\n --tw-scale-y: 1.1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.hover\\:scale-\\[1\\.02\\]:hover {\n --tw-scale-x: 1.02;\n --tw-scale-y: 1.02;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.hover\\:border-accent:hover {\n --tw-border-opacity: 1;\n border-color: hsl(var(--accent) / var(--tw-border-opacity, 1));\n}\n.hover\\:border-border\\/50:hover {\n border-color: hsl(var(--border) / 0.5);\n}\n.hover\\:border-border\\/80:hover {\n border-color: hsl(var(--border) / 0.8);\n}\n.hover\\:border-error\\/80:hover {\n border-color: hsl(var(--error) / 0.8);\n}\n.hover\\:border-gray-300:hover {\n --tw-border-opacity: 1;\n border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));\n}\n.hover\\:border-gray-400:hover {\n --tw-border-opacity: 1;\n border-color: rgb(156 163 175 / var(--tw-border-opacity, 1));\n}\n.hover\\:border-muted-foreground\\/20:hover {\n border-color: hsl(var(--muted-foreground) / 0.2);\n}\n.hover\\:border-muted-foreground\\/40:hover {\n border-color: hsl(var(--muted-foreground) / 0.4);\n}\n.hover\\:border-primary:hover {\n --tw-border-opacity: 1;\n border-color: hsl(var(--primary) / var(--tw-border-opacity, 1));\n}\n.hover\\:border-primary\\/20:hover {\n border-color: hsl(var(--primary) / 0.2);\n}\n.hover\\:border-primary\\/30:hover {\n border-color: hsl(var(--primary) / 0.3);\n}\n.hover\\:border-primary\\/50:hover {\n border-color: hsl(var(--primary) / 0.5);\n}\n.hover\\:border-success\\/80:hover {\n border-color: hsl(var(--success) / 0.8);\n}\n.hover\\:border-white\\/30:hover {\n border-color: rgb(255 255 255 / 0.3);\n}\n.hover\\:bg-accent:hover {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--accent) / var(--tw-bg-opacity, 1));\n}\n.hover\\:bg-accent\\/10:hover {\n background-color: hsl(var(--accent) / 0.1);\n}\n.hover\\:bg-accent\\/5:hover {\n background-color: hsl(var(--accent) / 0.05);\n}\n.hover\\:bg-accent\\/50:hover {\n background-color: hsl(var(--accent) / 0.5);\n}\n.hover\\:bg-background:hover {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--background) / var(--tw-bg-opacity, 1));\n}\n.hover\\:bg-background\\/90:hover {\n background-color: hsl(var(--background) / 0.9);\n}\n.hover\\:bg-black\\/10:hover {\n background-color: rgb(0 0 0 / 0.1);\n}\n.hover\\:bg-black\\/70:hover {\n background-color: rgb(0 0 0 / 0.7);\n}\n.hover\\:bg-blue-600:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(37 99 235 / var(--tw-bg-opacity, 1));\n}\n.hover\\:bg-card\\/95:hover {\n background-color: hsl(var(--card) / 0.95);\n}\n.hover\\:bg-destructive\\/10:hover {\n background-color: hsl(var(--destructive) / 0.1);\n}\n.hover\\:bg-destructive\\/90:hover {\n background-color: hsl(var(--destructive) / 0.9);\n}\n.hover\\:bg-error\\/90:hover {\n background-color: hsl(var(--error) / 0.9);\n}\n.hover\\:bg-gray-100:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));\n}\n.hover\\:bg-gray-100\\/50:hover {\n background-color: rgb(243 244 246 / 0.5);\n}\n.hover\\:bg-gray-200:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1));\n}\n.hover\\:bg-gray-50:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1));\n}\n.hover\\:bg-green-100:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(220 252 231 / var(--tw-bg-opacity, 1));\n}\n.hover\\:bg-green-400:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(74 222 128 / var(--tw-bg-opacity, 1));\n}\n.hover\\:bg-green-500\\/20:hover {\n background-color: rgb(34 197 94 / 0.2);\n}\n.hover\\:bg-green-600:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(22 163 74 / var(--tw-bg-opacity, 1));\n}\n.hover\\:bg-muted:hover {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--muted) / var(--tw-bg-opacity, 1));\n}\n.hover\\:bg-muted\\/20:hover {\n background-color: hsl(var(--muted) / 0.2);\n}\n.hover\\:bg-muted\\/50:hover {\n background-color: hsl(var(--muted) / 0.5);\n}\n.hover\\:bg-muted\\/80:hover {\n background-color: hsl(var(--muted) / 0.8);\n}\n.hover\\:bg-primary:hover {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--primary) / var(--tw-bg-opacity, 1));\n}\n.hover\\:bg-primary\\/10:hover {\n background-color: hsl(var(--primary) / 0.1);\n}\n.hover\\:bg-primary\\/20:hover {\n background-color: hsl(var(--primary) / 0.2);\n}\n.hover\\:bg-primary\\/5:hover {\n background-color: hsl(var(--primary) / 0.05);\n}\n.hover\\:bg-primary\\/90:hover {\n background-color: hsl(var(--primary) / 0.9);\n}\n.hover\\:bg-purple-200:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(233 213 255 / var(--tw-bg-opacity, 1));\n}\n.hover\\:bg-red-100:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(254 226 226 / var(--tw-bg-opacity, 1));\n}\n.hover\\:bg-secondary:hover {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--secondary) / var(--tw-bg-opacity, 1));\n}\n.hover\\:bg-secondary\\/10:hover {\n background-color: hsl(var(--secondary) / 0.1);\n}\n.hover\\:bg-secondary\\/80:hover {\n background-color: hsl(var(--secondary) / 0.8);\n}\n.hover\\:bg-success\\/10:hover {\n background-color: hsl(var(--success) / 0.1);\n}\n.hover\\:bg-success\\/90:hover {\n background-color: hsl(var(--success) / 0.9);\n}\n.hover\\:bg-transparent:hover {\n background-color: transparent;\n}\n.hover\\:bg-warning\\/10:hover {\n background-color: hsl(var(--warning) / 0.1);\n}\n.hover\\:bg-warning\\/90:hover {\n background-color: hsl(var(--warning) / 0.9);\n}\n.hover\\:bg-white\\/10:hover {\n background-color: rgb(255 255 255 / 0.1);\n}\n.hover\\:bg-white\\/20:hover {\n background-color: rgb(255 255 255 / 0.2);\n}\n.hover\\:bg-yellow-100:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(254 249 195 / var(--tw-bg-opacity, 1));\n}\n.hover\\:bg-gradient-to-br:hover {\n background-image: linear-gradient(to bottom right, var(--tw-gradient-stops));\n}\n.hover\\:bg-gradient-to-r:hover {\n background-image: linear-gradient(to right, var(--tw-gradient-stops));\n}\n.hover\\:from-card:hover {\n --tw-gradient-from: hsl(var(--card) / 1) var(--tw-gradient-from-position);\n --tw-gradient-to: hsl(var(--card) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.hover\\:from-purple-500\\/10:hover {\n --tw-gradient-from: rgb(168 85 247 / 0.1) var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.hover\\:from-purple-600:hover {\n --tw-gradient-from: #9333ea var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(147 51 234 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.hover\\:from-purple-700:hover {\n --tw-gradient-from: #7e22ce var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(126 34 206 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.hover\\:from-yellow-50\\/20:hover {\n --tw-gradient-from: rgb(254 252 232 / 0.2) var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(254 252 232 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.hover\\:via-card\\/95:hover {\n --tw-gradient-to: hsl(var(--card) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops:\n var(--tw-gradient-from),\n hsl(var(--card) / 0.95) var(--tw-gradient-via-position),\n var(--tw-gradient-to);\n}\n.hover\\:to-blue-700:hover {\n --tw-gradient-to: #1d4ed8 var(--tw-gradient-to-position);\n}\n.hover\\:to-card\\/80:hover {\n --tw-gradient-to: hsl(var(--card) / 0.8) var(--tw-gradient-to-position);\n}\n.hover\\:to-card\\/90:hover {\n --tw-gradient-to: hsl(var(--card) / 0.9) var(--tw-gradient-to-position);\n}\n.hover\\:to-pink-500\\/10:hover {\n --tw-gradient-to: rgb(236 72 153 / 0.1) var(--tw-gradient-to-position);\n}\n.hover\\:to-pink-600:hover {\n --tw-gradient-to: #db2777 var(--tw-gradient-to-position);\n}\n.hover\\:to-pink-700:hover {\n --tw-gradient-to: #be185d var(--tw-gradient-to-position);\n}\n.hover\\:to-yellow-50\\/10:hover {\n --tw-gradient-to: rgb(254 252 232 / 0.1) var(--tw-gradient-to-position);\n}\n.hover\\:pl-9:hover {\n padding-left: 2.25rem;\n}\n.hover\\:text-accent-foreground:hover {\n --tw-text-opacity: 1;\n color: hsl(var(--accent-foreground) / var(--tw-text-opacity, 1));\n}\n.hover\\:text-blue-600:hover {\n --tw-text-opacity: 1;\n color: rgb(37 99 235 / var(--tw-text-opacity, 1));\n}\n.hover\\:text-destructive:hover {\n --tw-text-opacity: 1;\n color: hsl(var(--destructive) / var(--tw-text-opacity, 1));\n}\n.hover\\:text-foreground:hover {\n --tw-text-opacity: 1;\n color: hsl(var(--foreground) / var(--tw-text-opacity, 1));\n}\n.hover\\:text-gray-700:hover {\n --tw-text-opacity: 1;\n color: rgb(55 65 81 / var(--tw-text-opacity, 1));\n}\n.hover\\:text-gray-900:hover {\n --tw-text-opacity: 1;\n color: rgb(17 24 39 / var(--tw-text-opacity, 1));\n}\n.hover\\:text-green-900:hover {\n --tw-text-opacity: 1;\n color: rgb(20 83 45 / var(--tw-text-opacity, 1));\n}\n.hover\\:text-muted-foreground:hover {\n --tw-text-opacity: 1;\n color: hsl(var(--muted-foreground) / var(--tw-text-opacity, 1));\n}\n.hover\\:text-primary:hover {\n --tw-text-opacity: 1;\n color: hsl(var(--primary) / var(--tw-text-opacity, 1));\n}\n.hover\\:text-primary-foreground:hover {\n --tw-text-opacity: 1;\n color: hsl(var(--primary-foreground) / var(--tw-text-opacity, 1));\n}\n.hover\\:text-primary\\/80:hover {\n color: hsl(var(--primary) / 0.8);\n}\n.hover\\:text-purple-600:hover {\n --tw-text-opacity: 1;\n color: rgb(147 51 234 / var(--tw-text-opacity, 1));\n}\n.hover\\:text-red-900:hover {\n --tw-text-opacity: 1;\n color: rgb(127 29 29 / var(--tw-text-opacity, 1));\n}\n.hover\\:text-secondary:hover {\n --tw-text-opacity: 1;\n color: hsl(var(--secondary) / var(--tw-text-opacity, 1));\n}\n.hover\\:text-success:hover {\n --tw-text-opacity: 1;\n color: hsl(var(--success) / var(--tw-text-opacity, 1));\n}\n.hover\\:text-warning:hover {\n --tw-text-opacity: 1;\n color: hsl(var(--warning) / var(--tw-text-opacity, 1));\n}\n.hover\\:text-white:hover {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\n}\n.hover\\:text-yellow-600:hover {\n --tw-text-opacity: 1;\n color: rgb(202 138 4 / var(--tw-text-opacity, 1));\n}\n.hover\\:text-yellow-900:hover {\n --tw-text-opacity: 1;\n color: rgb(113 63 18 / var(--tw-text-opacity, 1));\n}\n.hover\\:underline:hover {\n text-decoration-line: underline;\n}\n.hover\\:decoration-gray-300\\/30:hover {\n text-decoration-color: rgb(209 213 219 / 0.3);\n}\n.hover\\:underline-offset-4:hover {\n text-underline-offset: 4px;\n}\n.hover\\:opacity-100:hover {\n opacity: 1;\n}\n.hover\\:opacity-80:hover {\n opacity: 0.8;\n}\n.hover\\:opacity-90:hover {\n opacity: 0.9;\n}\n.hover\\:shadow-2xl:hover {\n --tw-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);\n --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.hover\\:shadow-\\[0_0_30px_rgba\\(74\\,222\\,128\\,0\\.6\\)\\]:hover {\n --tw-shadow: 0 0 30px rgba(74,222,128,0.6);\n --tw-shadow-colored: 0 0 30px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.hover\\:shadow-\\[0_0_30px_rgba\\(var\\(--primary\\)\\,0\\.3\\)\\]:hover {\n --tw-shadow: 0 0 30px rgba(var(--primary),0.3);\n --tw-shadow-colored: 0 0 30px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.hover\\:shadow-\\[0_0_40px_rgba\\(59\\,130\\,246\\,0\\.7\\)\\]:hover {\n --tw-shadow: 0 0 40px rgba(59,130,246,0.7);\n --tw-shadow-colored: 0 0 40px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.hover\\:shadow-lg:hover {\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.hover\\:shadow-md:hover {\n --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.hover\\:shadow-xl:hover {\n --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.hover\\:shadow-primary\\/20:hover {\n --tw-shadow-color: hsl(var(--primary) / 0.2);\n --tw-shadow: var(--tw-shadow-colored);\n}\n.hover\\:shadow-primary\\/25:hover {\n --tw-shadow-color: hsl(var(--primary) / 0.25);\n --tw-shadow: var(--tw-shadow-colored);\n}\n.hover\\:shadow-primary\\/5:hover {\n --tw-shadow-color: hsl(var(--primary) / 0.05);\n --tw-shadow: var(--tw-shadow-colored);\n}\n.hover\\:shadow-purple-500\\/50:hover {\n --tw-shadow-color: rgb(168 85 247 / 0.5);\n --tw-shadow: var(--tw-shadow-colored);\n}\n.hover\\:brightness-110:hover {\n --tw-brightness: brightness(1.1);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.focus\\:border-primary:focus {\n --tw-border-opacity: 1;\n border-color: hsl(var(--primary) / var(--tw-border-opacity, 1));\n}\n.focus\\:bg-accent:focus {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--accent) / var(--tw-bg-opacity, 1));\n}\n.focus\\:bg-error\\/10:focus {\n background-color: hsl(var(--error) / 0.1);\n}\n.focus\\:bg-gray-100:focus {\n --tw-bg-opacity: 1;\n background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));\n}\n.focus\\:bg-green-100:focus {\n --tw-bg-opacity: 1;\n background-color: rgb(220 252 231 / var(--tw-bg-opacity, 1));\n}\n.focus\\:bg-red-100:focus {\n --tw-bg-opacity: 1;\n background-color: rgb(254 226 226 / var(--tw-bg-opacity, 1));\n}\n.focus\\:bg-success\\/10:focus {\n background-color: hsl(var(--success) / 0.1);\n}\n.focus\\:bg-warning\\/10:focus {\n background-color: hsl(var(--warning) / 0.1);\n}\n.focus\\:bg-yellow-100:focus {\n --tw-bg-opacity: 1;\n background-color: rgb(254 249 195 / var(--tw-bg-opacity, 1));\n}\n.focus\\:text-accent-foreground:focus {\n --tw-text-opacity: 1;\n color: hsl(var(--accent-foreground) / var(--tw-text-opacity, 1));\n}\n.focus\\:text-destructive:focus {\n --tw-text-opacity: 1;\n color: hsl(var(--destructive) / var(--tw-text-opacity, 1));\n}\n.focus\\:text-error:focus {\n --tw-text-opacity: 1;\n color: hsl(var(--error) / var(--tw-text-opacity, 1));\n}\n.focus\\:text-foreground:focus {\n --tw-text-opacity: 1;\n color: hsl(var(--foreground) / var(--tw-text-opacity, 1));\n}\n.focus\\:text-green-900:focus {\n --tw-text-opacity: 1;\n color: rgb(20 83 45 / var(--tw-text-opacity, 1));\n}\n.focus\\:text-red-900:focus {\n --tw-text-opacity: 1;\n color: rgb(127 29 29 / var(--tw-text-opacity, 1));\n}\n.focus\\:text-success:focus {\n --tw-text-opacity: 1;\n color: hsl(var(--success) / var(--tw-text-opacity, 1));\n}\n.focus\\:text-warning:focus {\n --tw-text-opacity: 1;\n color: hsl(var(--warning) / var(--tw-text-opacity, 1));\n}\n.focus\\:text-yellow-900:focus {\n --tw-text-opacity: 1;\n color: rgb(113 63 18 / var(--tw-text-opacity, 1));\n}\n.focus\\:opacity-100:focus {\n opacity: 1;\n}\n.focus\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.focus\\:ring-1:focus {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow:\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow, 0 0 #0000);\n}\n.focus\\:ring-2:focus {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow:\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow, 0 0 #0000);\n}\n.focus\\:ring-\\[var\\(--login-primary\\)\\]:focus {\n --tw-ring-color: var(--login-primary);\n}\n.focus\\:ring-primary\\/20:focus {\n --tw-ring-color: hsl(var(--primary) / 0.2);\n}\n.focus\\:ring-primary\\/30:focus {\n --tw-ring-color: hsl(var(--primary) / 0.3);\n}\n.focus\\:ring-ring:focus {\n --tw-ring-opacity: 1;\n --tw-ring-color: hsl(var(--ring) / var(--tw-ring-opacity, 1));\n}\n.focus\\:ring-offset-2:focus {\n --tw-ring-offset-width: 2px;\n}\n.focus-visible\\:border-2:focus-visible {\n border-width: 2px;\n}\n.focus-visible\\:border-b-2:focus-visible {\n border-bottom-width: 2px;\n}\n.focus-visible\\:border-error:focus-visible {\n --tw-border-opacity: 1;\n border-color: hsl(var(--error) / var(--tw-border-opacity, 1));\n}\n.focus-visible\\:border-primary:focus-visible {\n --tw-border-opacity: 1;\n border-color: hsl(var(--primary) / var(--tw-border-opacity, 1));\n}\n.focus-visible\\:border-success:focus-visible {\n --tw-border-opacity: 1;\n border-color: hsl(var(--success) / var(--tw-border-opacity, 1));\n}\n.focus-visible\\:bg-transparent:focus-visible {\n background-color: transparent;\n}\n.focus-visible\\:shadow-lg:focus-visible {\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.focus-visible\\:shadow-primary\\/30:focus-visible {\n --tw-shadow-color: hsl(var(--primary) / 0.3);\n --tw-shadow: var(--tw-shadow-colored);\n}\n.focus-visible\\:outline-none:focus-visible {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.focus-visible\\:ring-0:focus-visible {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow:\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow, 0 0 #0000);\n}\n.focus-visible\\:ring-1:focus-visible {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow:\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow, 0 0 #0000);\n}\n.focus-visible\\:ring-2:focus-visible {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow:\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow, 0 0 #0000);\n}\n.focus-visible\\:ring-blue-500\\/50:focus-visible {\n --tw-ring-color: rgb(59 130 246 / 0.5);\n}\n.focus-visible\\:ring-error\\/30:focus-visible {\n --tw-ring-color: hsl(var(--error) / 0.3);\n}\n.focus-visible\\:ring-gray-400\\/30:focus-visible {\n --tw-ring-color: rgb(156 163 175 / 0.3);\n}\n.focus-visible\\:ring-green-400\\/50:focus-visible {\n --tw-ring-color: rgb(74 222 128 / 0.5);\n}\n.focus-visible\\:ring-primary\\/30:focus-visible {\n --tw-ring-color: hsl(var(--primary) / 0.3);\n}\n.focus-visible\\:ring-primary\\/50:focus-visible {\n --tw-ring-color: hsl(var(--primary) / 0.5);\n}\n.focus-visible\\:ring-purple-400\\/30:focus-visible {\n --tw-ring-color: rgb(192 132 252 / 0.3);\n}\n.focus-visible\\:ring-purple-500\\/50:focus-visible {\n --tw-ring-color: rgb(168 85 247 / 0.5);\n}\n.focus-visible\\:ring-ring:focus-visible {\n --tw-ring-opacity: 1;\n --tw-ring-color: hsl(var(--ring) / var(--tw-ring-opacity, 1));\n}\n.focus-visible\\:ring-success\\/30:focus-visible {\n --tw-ring-color: hsl(var(--success) / 0.3);\n}\n.focus-visible\\:ring-warning\\/30:focus-visible {\n --tw-ring-color: hsl(var(--warning) / 0.3);\n}\n.focus-visible\\:ring-white\\/50:focus-visible {\n --tw-ring-color: rgb(255 255 255 / 0.5);\n}\n.focus-visible\\:ring-offset-1:focus-visible {\n --tw-ring-offset-width: 1px;\n}\n.focus-visible\\:ring-offset-2:focus-visible {\n --tw-ring-offset-width: 2px;\n}\n.focus-visible\\:ring-offset-background:focus-visible {\n --tw-ring-offset-color: hsl(var(--background) / 1);\n}\n.active\\:translate-y-0:active {\n --tw-translate-y: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.active\\:translate-y-0\\.5:active {\n --tw-translate-y: 0.125rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.active\\:scale-95:active {\n --tw-scale-x: .95;\n --tw-scale-y: .95;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.active\\:scale-\\[0\\.98\\]:active {\n --tw-scale-x: 0.98;\n --tw-scale-y: 0.98;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.active\\:cursor-grabbing:active {\n cursor: grabbing;\n}\n.active\\:bg-accent\\/80:active {\n background-color: hsl(var(--accent) / 0.8);\n}\n.active\\:bg-destructive\\/80:active {\n background-color: hsl(var(--destructive) / 0.8);\n}\n.active\\:bg-gray-200:active {\n --tw-bg-opacity: 1;\n background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1));\n}\n.active\\:bg-gray-300:active {\n --tw-bg-opacity: 1;\n background-color: rgb(209 213 219 / var(--tw-bg-opacity, 1));\n}\n.active\\:bg-primary\\/30:active {\n background-color: hsl(var(--primary) / 0.3);\n}\n.active\\:bg-primary\\/80:active {\n background-color: hsl(var(--primary) / 0.8);\n}\n.active\\:bg-success\\/80:active {\n background-color: hsl(var(--success) / 0.8);\n}\n.active\\:bg-white\\/30:active {\n background-color: rgb(255 255 255 / 0.3);\n}\n.active\\:from-purple-700:active {\n --tw-gradient-from: #7e22ce var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(126 34 206 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.active\\:to-pink-700:active {\n --tw-gradient-to: #be185d var(--tw-gradient-to-position);\n}\n.active\\:text-primary\\/70:active {\n color: hsl(var(--primary) / 0.7);\n}\n.active\\:shadow-\\[0_0_15px_rgba\\(74\\,222\\,128\\,0\\.4\\)\\]:active {\n --tw-shadow: 0 0 15px rgba(74,222,128,0.4);\n --tw-shadow-colored: 0 0 15px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.active\\:shadow-\\[0_0_20px_rgba\\(59\\,130\\,246\\,0\\.4\\)\\]:active {\n --tw-shadow: 0 0 20px rgba(59,130,246,0.4);\n --tw-shadow-colored: 0 0 20px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.active\\:shadow-sm:active {\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.active\\:brightness-90:active {\n --tw-brightness: brightness(.9);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.active\\:brightness-95:active {\n --tw-brightness: brightness(.95);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.disabled\\:pointer-events-none:disabled {\n pointer-events: none;\n}\n.disabled\\:transform-none:disabled {\n transform: none;\n}\n.disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n}\n.disabled\\:opacity-50:disabled {\n opacity: 0.5;\n}\n.group:hover .group-hover\\:flex {\n display: flex;\n}\n.group:hover .group-hover\\:rotate-180 {\n --tw-rotate: 180deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.group:hover .group-hover\\:bg-black\\/20 {\n background-color: rgb(0 0 0 / 0.2);\n}\n.group:hover .group-hover\\:text-primary {\n --tw-text-opacity: 1;\n color: hsl(var(--primary) / var(--tw-text-opacity, 1));\n}\n.group:hover .group-hover\\:opacity-100 {\n opacity: 1;\n}\n.group.destructive .group-\\[\\.destructive\\]\\:border-muted\\/40 {\n border-color: hsl(var(--muted) / 0.4);\n}\n.group.destructive .group-\\[\\.destructive\\]\\:text-red-300 {\n --tw-text-opacity: 1;\n color: rgb(252 165 165 / var(--tw-text-opacity, 1));\n}\n.group.destructive .group-\\[\\.destructive\\]\\:hover\\:border-destructive\\/30:hover {\n border-color: hsl(var(--destructive) / 0.3);\n}\n.group.destructive .group-\\[\\.destructive\\]\\:hover\\:bg-destructive:hover {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--destructive) / var(--tw-bg-opacity, 1));\n}\n.group.destructive .group-\\[\\.destructive\\]\\:hover\\:text-destructive-foreground:hover {\n --tw-text-opacity: 1;\n color: hsl(var(--destructive-foreground) / var(--tw-text-opacity, 1));\n}\n.group.destructive .group-\\[\\.destructive\\]\\:hover\\:text-red-50:hover {\n --tw-text-opacity: 1;\n color: rgb(254 242 242 / var(--tw-text-opacity, 1));\n}\n.group.destructive .group-\\[\\.destructive\\]\\:focus\\:ring-destructive:focus {\n --tw-ring-opacity: 1;\n --tw-ring-color: hsl(var(--destructive) / var(--tw-ring-opacity, 1));\n}\n.group.destructive .group-\\[\\.destructive\\]\\:focus\\:ring-red-400:focus {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(248 113 113 / var(--tw-ring-opacity, 1));\n}\n.group.destructive .group-\\[\\.destructive\\]\\:focus\\:ring-offset-red-600:focus {\n --tw-ring-offset-color: #dc2626;\n}\n.peer:disabled ~ .peer-disabled\\:cursor-not-allowed {\n cursor: not-allowed;\n}\n.peer:disabled ~ .peer-disabled\\:opacity-70 {\n opacity: 0.7;\n}\n.aria-selected\\:bg-accent[aria-selected=true] {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--accent) / var(--tw-bg-opacity, 1));\n}\n.aria-selected\\:text-accent-foreground[aria-selected=true] {\n --tw-text-opacity: 1;\n color: hsl(var(--accent-foreground) / var(--tw-text-opacity, 1));\n}\n.data-\\[disabled\\=true\\]\\:pointer-events-none[data-disabled=true] {\n pointer-events: none;\n}\n.data-\\[disabled\\]\\:pointer-events-none[data-disabled] {\n pointer-events: none;\n}\n.data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom] {\n --tw-translate-y: 0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[side\\=left\\]\\:-translate-x-1[data-side=left] {\n --tw-translate-x: -0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[side\\=right\\]\\:translate-x-1[data-side=right] {\n --tw-translate-x: 0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[side\\=top\\]\\:-translate-y-1[data-side=top] {\n --tw-translate-y: -0.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[state\\=checked\\]\\:translate-x-4[data-state=checked] {\n --tw-translate-x: 1rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[state\\=checked\\]\\:translate-x-5[data-state=checked] {\n --tw-translate-x: 1.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[state\\=checked\\]\\:translate-x-7[data-state=checked] {\n --tw-translate-x: 1.75rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[state\\=unchecked\\]\\:translate-x-0[data-state=unchecked] {\n --tw-translate-x: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[swipe\\=cancel\\]\\:translate-x-0[data-swipe=cancel] {\n --tw-translate-x: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[swipe\\=end\\]\\:translate-x-\\[var\\(--radix-toast-swipe-end-x\\)\\][data-swipe=end] {\n --tw-translate-x: var(--radix-toast-swipe-end-x);\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.data-\\[swipe\\=move\\]\\:translate-x-\\[var\\(--radix-toast-swipe-move-x\\)\\][data-swipe=move] {\n --tw-translate-x: var(--radix-toast-swipe-move-x);\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n@keyframes bounce {\n 0%, 100% {\n transform: translateY(-25%);\n animation-timing-function: cubic-bezier(0.8, 0, 1, 1);\n }\n 50% {\n transform: none;\n animation-timing-function: cubic-bezier(0, 0, 0.2, 1);\n }\n}\n.data-\\[state\\=checked\\]\\:animate-bounce[data-state=checked] {\n animation: bounce 1s infinite;\n}\n@keyframes accordion-up {\n from {\n height: var(--radix-accordion-content-height);\n }\n to {\n height: 0;\n }\n}\n.data-\\[state\\=closed\\]\\:animate-\\[accordion-up_0\\.2s_ease-in-out\\][data-state=closed] {\n animation: accordion-up 0.2s ease-in-out;\n}\n@keyframes accordion-up {\n from {\n height: var(--radix-accordion-content-height);\n }\n to {\n height: 0;\n }\n}\n.data-\\[state\\=closed\\]\\:animate-\\[accordion-up_0\\.3s_cubic-bezier\\(0\\.34\\,1\\.56\\,0\\.64\\,1\\)\\][data-state=closed] {\n animation: accordion-up 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);\n}\n@keyframes accordion-up {\n from {\n height: var(--radix-accordion-content-height);\n }\n to {\n height: 0;\n }\n}\n.data-\\[state\\=closed\\]\\:animate-\\[accordion-up_0\\.4s_cubic-bezier\\(0\\.68\\,-0\\.55\\,0\\.265\\,1\\.55\\)\\][data-state=closed] {\n animation: accordion-up 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55);\n}\n.data-\\[state\\=closed\\]\\:animate-\\[collapsible-up_0\\.2s_ease-in-out\\][data-state=closed] {\n animation: collapsible-up 0.2s ease-in-out;\n}\n.data-\\[state\\=closed\\]\\:animate-\\[collapsible-up_0\\.3s_cubic-bezier\\(0\\.34\\,1\\.56\\,0\\.64\\,1\\)\\][data-state=closed] {\n animation: collapsible-up 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);\n}\n.data-\\[state\\=closed\\]\\:animate-\\[collapsible-up_0\\.4s_cubic-bezier\\(0\\.68\\,-0\\.55\\,0\\.265\\,1\\.55\\)\\][data-state=closed] {\n animation: collapsible-up 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55);\n}\n.data-\\[state\\=closed\\]\\:animate-\\[slide-up_0\\.3s_ease-out\\][data-state=closed] {\n animation: slide-up 0.3s ease-out;\n}\n@keyframes accordion-up {\n from {\n height: var(--radix-accordion-content-height);\n }\n to {\n height: 0;\n }\n}\n.data-\\[state\\=closed\\]\\:animate-accordion-up[data-state=closed] {\n animation: accordion-up 0.2s ease-out;\n}\n@keyframes accordion-down {\n from {\n height: 0;\n }\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n.data-\\[state\\=open\\]\\:animate-\\[accordion-down_0\\.2s_ease-in-out\\][data-state=open] {\n animation: accordion-down 0.2s ease-in-out;\n}\n@keyframes accordion-down {\n from {\n height: 0;\n }\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n.data-\\[state\\=open\\]\\:animate-\\[accordion-down_0\\.3s_cubic-bezier\\(0\\.34\\,1\\.56\\,0\\.64\\,1\\)\\][data-state=open] {\n animation: accordion-down 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);\n}\n@keyframes accordion-down {\n from {\n height: 0;\n }\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n.data-\\[state\\=open\\]\\:animate-\\[accordion-down_0\\.4s_cubic-bezier\\(0\\.68\\,-0\\.55\\,0\\.265\\,1\\.55\\)\\][data-state=open] {\n animation: accordion-down 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55);\n}\n.data-\\[state\\=open\\]\\:animate-\\[collapsible-down_0\\.2s_ease-in-out\\][data-state=open] {\n animation: collapsible-down 0.2s ease-in-out;\n}\n.data-\\[state\\=open\\]\\:animate-\\[collapsible-down_0\\.3s_cubic-bezier\\(0\\.34\\,1\\.56\\,0\\.64\\,1\\)\\][data-state=open] {\n animation: collapsible-down 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);\n}\n.data-\\[state\\=open\\]\\:animate-\\[collapsible-down_0\\.4s_cubic-bezier\\(0\\.68\\,-0\\.55\\,0\\.265\\,1\\.55\\)\\][data-state=open] {\n animation: collapsible-down 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55);\n}\n.data-\\[state\\=open\\]\\:animate-\\[slide-down_0\\.3s_ease-out\\][data-state=open] {\n animation: slide-down 0.3s ease-out;\n}\n@keyframes accordion-down {\n from {\n height: 0;\n }\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n.data-\\[state\\=open\\]\\:animate-accordion-down[data-state=open] {\n animation: accordion-down 0.2s ease-out;\n}\n.data-\\[state\\=active\\]\\:border-primary[data-state=active] {\n --tw-border-opacity: 1;\n border-color: hsl(var(--primary) / var(--tw-border-opacity, 1));\n}\n.data-\\[state\\=checked\\]\\:border-primary[data-state=checked] {\n --tw-border-opacity: 1;\n border-color: hsl(var(--primary) / var(--tw-border-opacity, 1));\n}\n.data-\\[active\\]\\:bg-accent\\/50[data-active] {\n background-color: hsl(var(--accent) / 0.5);\n}\n.data-\\[state\\=active\\]\\:bg-background[data-state=active] {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--background) / var(--tw-bg-opacity, 1));\n}\n.data-\\[state\\=active\\]\\:bg-primary[data-state=active] {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--primary) / var(--tw-bg-opacity, 1));\n}\n.data-\\[state\\=active\\]\\:bg-transparent[data-state=active] {\n background-color: transparent;\n}\n.data-\\[state\\=active\\]\\:bg-white\\/20[data-state=active] {\n background-color: rgb(255 255 255 / 0.2);\n}\n.data-\\[state\\=checked\\]\\:bg-accent[data-state=checked] {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--accent) / var(--tw-bg-opacity, 1));\n}\n.data-\\[state\\=checked\\]\\:bg-error[data-state=checked] {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--error) / var(--tw-bg-opacity, 1));\n}\n.data-\\[state\\=checked\\]\\:bg-primary[data-state=checked] {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--primary) / var(--tw-bg-opacity, 1));\n}\n.data-\\[state\\=checked\\]\\:bg-success[data-state=checked] {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--success) / var(--tw-bg-opacity, 1));\n}\n.data-\\[state\\=checked\\]\\:bg-warning[data-state=checked] {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--warning) / var(--tw-bg-opacity, 1));\n}\n.data-\\[state\\=on\\]\\:bg-accent[data-state=on] {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--accent) / var(--tw-bg-opacity, 1));\n}\n.data-\\[state\\=on\\]\\:bg-destructive[data-state=on] {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--destructive) / var(--tw-bg-opacity, 1));\n}\n.data-\\[state\\=on\\]\\:bg-primary[data-state=on] {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--primary) / var(--tw-bg-opacity, 1));\n}\n.data-\\[state\\=on\\]\\:bg-secondary[data-state=on] {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--secondary) / var(--tw-bg-opacity, 1));\n}\n.data-\\[state\\=on\\]\\:bg-success[data-state=on] {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--success) / var(--tw-bg-opacity, 1));\n}\n.data-\\[state\\=on\\]\\:bg-transparent[data-state=on] {\n background-color: transparent;\n}\n.data-\\[state\\=on\\]\\:bg-warning[data-state=on] {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--warning) / var(--tw-bg-opacity, 1));\n}\n.data-\\[state\\=open\\]\\:bg-accent[data-state=open] {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--accent) / var(--tw-bg-opacity, 1));\n}\n.data-\\[state\\=open\\]\\:bg-accent\\/50[data-state=open] {\n background-color: hsl(var(--accent) / 0.5);\n}\n.data-\\[state\\=open\\]\\:bg-secondary[data-state=open] {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--secondary) / var(--tw-bg-opacity, 1));\n}\n.data-\\[state\\=selected\\]\\:bg-muted[data-state=selected] {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--muted) / var(--tw-bg-opacity, 1));\n}\n.data-\\[state\\=unchecked\\]\\:bg-input[data-state=unchecked] {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--input) / var(--tw-bg-opacity, 1));\n}\n.data-\\[state\\=active\\]\\:bg-gradient-to-r[data-state=active] {\n background-image: linear-gradient(to right, var(--tw-gradient-stops));\n}\n.data-\\[state\\=on\\]\\:bg-gradient-to-r[data-state=on] {\n background-image: linear-gradient(to right, var(--tw-gradient-stops));\n}\n.data-\\[state\\=active\\]\\:from-primary[data-state=active] {\n --tw-gradient-from: hsl(var(--primary) / 1) var(--tw-gradient-from-position);\n --tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.data-\\[state\\=on\\]\\:from-purple-600[data-state=on] {\n --tw-gradient-from: #9333ea var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(147 51 234 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.data-\\[state\\=active\\]\\:to-secondary[data-state=active] {\n --tw-gradient-to: hsl(var(--secondary) / 1) var(--tw-gradient-to-position);\n}\n.data-\\[state\\=on\\]\\:to-pink-600[data-state=on] {\n --tw-gradient-to: #db2777 var(--tw-gradient-to-position);\n}\n.data-\\[state\\=active\\]\\:text-foreground[data-state=active] {\n --tw-text-opacity: 1;\n color: hsl(var(--foreground) / var(--tw-text-opacity, 1));\n}\n.data-\\[state\\=active\\]\\:text-primary-foreground[data-state=active] {\n --tw-text-opacity: 1;\n color: hsl(var(--primary-foreground) / var(--tw-text-opacity, 1));\n}\n.data-\\[state\\=active\\]\\:text-white[data-state=active] {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\n}\n.data-\\[state\\=checked\\]\\:text-primary-foreground[data-state=checked] {\n --tw-text-opacity: 1;\n color: hsl(var(--primary-foreground) / var(--tw-text-opacity, 1));\n}\n.data-\\[state\\=on\\]\\:text-accent-foreground[data-state=on] {\n --tw-text-opacity: 1;\n color: hsl(var(--accent-foreground) / var(--tw-text-opacity, 1));\n}\n.data-\\[state\\=on\\]\\:text-destructive-foreground[data-state=on] {\n --tw-text-opacity: 1;\n color: hsl(var(--destructive-foreground) / var(--tw-text-opacity, 1));\n}\n.data-\\[state\\=on\\]\\:text-primary-foreground[data-state=on] {\n --tw-text-opacity: 1;\n color: hsl(var(--primary-foreground) / var(--tw-text-opacity, 1));\n}\n.data-\\[state\\=on\\]\\:text-secondary-foreground[data-state=on] {\n --tw-text-opacity: 1;\n color: hsl(var(--secondary-foreground) / var(--tw-text-opacity, 1));\n}\n.data-\\[state\\=on\\]\\:text-success-foreground[data-state=on] {\n --tw-text-opacity: 1;\n color: hsl(var(--success-foreground) / var(--tw-text-opacity, 1));\n}\n.data-\\[state\\=on\\]\\:text-warning-foreground[data-state=on] {\n --tw-text-opacity: 1;\n color: hsl(var(--warning-foreground) / var(--tw-text-opacity, 1));\n}\n.data-\\[state\\=on\\]\\:text-white[data-state=on] {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\n}\n.data-\\[state\\=open\\]\\:text-accent-foreground[data-state=open] {\n --tw-text-opacity: 1;\n color: hsl(var(--accent-foreground) / var(--tw-text-opacity, 1));\n}\n.data-\\[state\\=active\\]\\:underline[data-state=active] {\n text-decoration-line: underline;\n}\n.data-\\[disabled\\=true\\]\\:opacity-50[data-disabled=true] {\n opacity: 0.5;\n}\n.data-\\[disabled\\]\\:opacity-50[data-disabled] {\n opacity: 0.5;\n}\n.data-\\[state\\=active\\]\\:shadow-\\[0_0_10px_rgba\\(139\\,92\\,246\\,0\\.8\\)\\][data-state=active] {\n --tw-shadow: 0 0 10px rgba(139,92,246,0.8);\n --tw-shadow-colored: 0 0 10px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.data-\\[state\\=active\\]\\:shadow-md[data-state=active] {\n --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.data-\\[state\\=active\\]\\:shadow-sm[data-state=active] {\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.data-\\[swipe\\=move\\]\\:transition-none[data-swipe=move] {\n transition-property: none;\n}\n.data-\\[state\\=closed\\]\\:duration-300[data-state=closed] {\n transition-duration: 300ms;\n}\n.data-\\[state\\=open\\]\\:duration-150[data-state=open] {\n transition-duration: 150ms;\n}\n.data-\\[state\\=open\\]\\:duration-500[data-state=open] {\n transition-duration: 500ms;\n}\n.data-\\[motion\\^\\=from-\\]\\:animate-in[data-motion^=from-] {\n animation-name: enter;\n animation-duration: 150ms;\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n}\n.data-\\[state\\=open\\]\\:animate-in[data-state=open] {\n animation-name: enter;\n animation-duration: 150ms;\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n}\n.data-\\[state\\=visible\\]\\:animate-in[data-state=visible] {\n animation-name: enter;\n animation-duration: 150ms;\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n}\n.data-\\[motion\\^\\=to-\\]\\:animate-out[data-motion^=to-] {\n animation-name: exit;\n animation-duration: 150ms;\n --tw-exit-opacity: initial;\n --tw-exit-scale: initial;\n --tw-exit-rotate: initial;\n --tw-exit-translate-x: initial;\n --tw-exit-translate-y: initial;\n}\n.data-\\[state\\=closed\\]\\:animate-out[data-state=closed] {\n animation-name: exit;\n animation-duration: 150ms;\n --tw-exit-opacity: initial;\n --tw-exit-scale: initial;\n --tw-exit-rotate: initial;\n --tw-exit-translate-x: initial;\n --tw-exit-translate-y: initial;\n}\n.data-\\[state\\=hidden\\]\\:animate-out[data-state=hidden] {\n animation-name: exit;\n animation-duration: 150ms;\n --tw-exit-opacity: initial;\n --tw-exit-scale: initial;\n --tw-exit-rotate: initial;\n --tw-exit-translate-x: initial;\n --tw-exit-translate-y: initial;\n}\n.data-\\[swipe\\=end\\]\\:animate-out[data-swipe=end] {\n animation-name: exit;\n animation-duration: 150ms;\n --tw-exit-opacity: initial;\n --tw-exit-scale: initial;\n --tw-exit-rotate: initial;\n --tw-exit-translate-x: initial;\n --tw-exit-translate-y: initial;\n}\n.data-\\[motion\\^\\=from-\\]\\:fade-in[data-motion^=from-] {\n --tw-enter-opacity: 0;\n}\n.data-\\[motion\\^\\=to-\\]\\:fade-out[data-motion^=to-] {\n --tw-exit-opacity: 0;\n}\n.data-\\[state\\=closed\\]\\:fade-out-0[data-state=closed] {\n --tw-exit-opacity: 0;\n}\n.data-\\[state\\=closed\\]\\:fade-out-80[data-state=closed] {\n --tw-exit-opacity: 0.8;\n}\n.data-\\[state\\=hidden\\]\\:fade-out[data-state=hidden] {\n --tw-exit-opacity: 0;\n}\n.data-\\[state\\=open\\]\\:fade-in-0[data-state=open] {\n --tw-enter-opacity: 0;\n}\n.data-\\[state\\=visible\\]\\:fade-in[data-state=visible] {\n --tw-enter-opacity: 0;\n}\n.data-\\[state\\=closed\\]\\:zoom-out-95[data-state=closed] {\n --tw-exit-scale: .95;\n}\n.data-\\[state\\=open\\]\\:zoom-in-90[data-state=open] {\n --tw-enter-scale: .9;\n}\n.data-\\[state\\=open\\]\\:zoom-in-95[data-state=open] {\n --tw-enter-scale: .95;\n}\n.data-\\[motion\\=from-end\\]\\:slide-in-from-right-52[data-motion=from-end] {\n --tw-enter-translate-x: 13rem;\n}\n.data-\\[motion\\=from-start\\]\\:slide-in-from-left-52[data-motion=from-start] {\n --tw-enter-translate-x: -13rem;\n}\n.data-\\[motion\\=to-end\\]\\:slide-out-to-right-52[data-motion=to-end] {\n --tw-exit-translate-x: 13rem;\n}\n.data-\\[motion\\=to-start\\]\\:slide-out-to-left-52[data-motion=to-start] {\n --tw-exit-translate-x: -13rem;\n}\n.data-\\[side\\=bottom\\]\\:slide-in-from-top-2[data-side=bottom] {\n --tw-enter-translate-y: -0.5rem;\n}\n.data-\\[side\\=left\\]\\:slide-in-from-right-2[data-side=left] {\n --tw-enter-translate-x: 0.5rem;\n}\n.data-\\[side\\=right\\]\\:slide-in-from-left-2[data-side=right] {\n --tw-enter-translate-x: -0.5rem;\n}\n.data-\\[side\\=top\\]\\:slide-in-from-bottom-2[data-side=top] {\n --tw-enter-translate-y: 0.5rem;\n}\n.data-\\[state\\=closed\\]\\:slide-out-to-bottom[data-state=closed] {\n --tw-exit-translate-y: 100%;\n}\n.data-\\[state\\=closed\\]\\:slide-out-to-left[data-state=closed] {\n --tw-exit-translate-x: -100%;\n}\n.data-\\[state\\=closed\\]\\:slide-out-to-left-1\\/2[data-state=closed] {\n --tw-exit-translate-x: -50%;\n}\n.data-\\[state\\=closed\\]\\:slide-out-to-right[data-state=closed] {\n --tw-exit-translate-x: 100%;\n}\n.data-\\[state\\=closed\\]\\:slide-out-to-right-full[data-state=closed] {\n --tw-exit-translate-x: 100%;\n}\n.data-\\[state\\=closed\\]\\:slide-out-to-top[data-state=closed] {\n --tw-exit-translate-y: -100%;\n}\n.data-\\[state\\=closed\\]\\:slide-out-to-top-\\[48\\%\\][data-state=closed] {\n --tw-exit-translate-y: -48%;\n}\n.data-\\[state\\=open\\]\\:slide-in-from-bottom[data-state=open] {\n --tw-enter-translate-y: 100%;\n}\n.data-\\[state\\=open\\]\\:slide-in-from-left[data-state=open] {\n --tw-enter-translate-x: -100%;\n}\n.data-\\[state\\=open\\]\\:slide-in-from-left-1\\/2[data-state=open] {\n --tw-enter-translate-x: -50%;\n}\n.data-\\[state\\=open\\]\\:slide-in-from-right[data-state=open] {\n --tw-enter-translate-x: 100%;\n}\n.data-\\[state\\=open\\]\\:slide-in-from-top[data-state=open] {\n --tw-enter-translate-y: -100%;\n}\n.data-\\[state\\=open\\]\\:slide-in-from-top-\\[48\\%\\][data-state=open] {\n --tw-enter-translate-y: -48%;\n}\n.data-\\[state\\=open\\]\\:slide-in-from-top-full[data-state=open] {\n --tw-enter-translate-y: -100%;\n}\n.data-\\[state\\=closed\\]\\:duration-300[data-state=closed] {\n animation-duration: 300ms;\n}\n.data-\\[state\\=open\\]\\:duration-150[data-state=open] {\n animation-duration: 150ms;\n}\n.data-\\[state\\=open\\]\\:duration-500[data-state=open] {\n animation-duration: 500ms;\n}\n.group[data-state=open] .group-data-\\[state\\=open\\]\\:rotate-180 {\n --tw-rotate: 180deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n@supports (backdrop-filter: var(--tw)) {\n .supports-\\[backdrop-filter\\]\\:bg-background\\/60 {\n background-color: hsl(var(--background) / 0.6);\n }\n}\n.dark\\:border-blue-800:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(30 64 175 / var(--tw-border-opacity, 1));\n}\n.dark\\:border-border:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: hsl(var(--border) / var(--tw-border-opacity, 1));\n}\n.dark\\:border-border\\/30:is(.dark *) {\n border-color: hsl(var(--border) / 0.3);\n}\n.dark\\:border-border\\/40:is(.dark *) {\n border-color: hsl(var(--border) / 0.4);\n}\n.dark\\:border-error\\/30:is(.dark *) {\n border-color: hsl(var(--error) / 0.3);\n}\n.dark\\:border-gray-100:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(243 244 246 / var(--tw-border-opacity, 1));\n}\n.dark\\:border-gray-600:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(75 85 99 / var(--tw-border-opacity, 1));\n}\n.dark\\:border-gray-700:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(55 65 81 / var(--tw-border-opacity, 1));\n}\n.dark\\:border-gray-700\\/20:is(.dark *) {\n border-color: rgb(55 65 81 / 0.2);\n}\n.dark\\:border-gray-800:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(31 41 55 / var(--tw-border-opacity, 1));\n}\n.dark\\:border-green-800:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(22 101 52 / var(--tw-border-opacity, 1));\n}\n.dark\\:border-input:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: hsl(var(--input) / var(--tw-border-opacity, 1));\n}\n.dark\\:border-orange-800:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(154 52 18 / var(--tw-border-opacity, 1));\n}\n.dark\\:border-primary\\/30:is(.dark *) {\n border-color: hsl(var(--primary) / 0.3);\n}\n.dark\\:border-purple-800:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(107 33 168 / var(--tw-border-opacity, 1));\n}\n.dark\\:border-success\\/30:is(.dark *) {\n border-color: hsl(var(--success) / 0.3);\n}\n.dark\\:border-white\\/10:is(.dark *) {\n border-color: rgb(255 255 255 / 0.1);\n}\n.dark\\:border-yellow-800:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(133 77 14 / var(--tw-border-opacity, 1));\n}\n.dark\\:bg-accent:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--accent) / var(--tw-bg-opacity, 1));\n}\n.dark\\:bg-amber-600:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(217 119 6 / var(--tw-bg-opacity, 1));\n}\n.dark\\:bg-background:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--background) / var(--tw-bg-opacity, 1));\n}\n.dark\\:bg-black\\/10:is(.dark *) {\n background-color: rgb(0 0 0 / 0.1);\n}\n.dark\\:bg-black\\/5:is(.dark *) {\n background-color: rgb(0 0 0 / 0.05);\n}\n.dark\\:bg-blue-900\\/20:is(.dark *) {\n background-color: rgb(30 58 138 / 0.2);\n}\n.dark\\:bg-destructive:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--destructive) / var(--tw-bg-opacity, 1));\n}\n.dark\\:bg-destructive\\/20:is(.dark *) {\n background-color: hsl(var(--destructive) / 0.2);\n}\n.dark\\:bg-error\\/90:is(.dark *) {\n background-color: hsl(var(--error) / 0.9);\n}\n.dark\\:bg-gray-700:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1));\n}\n.dark\\:bg-gray-800:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1));\n}\n.dark\\:bg-gray-800\\/10:is(.dark *) {\n background-color: rgb(31 41 55 / 0.1);\n}\n.dark\\:bg-gray-800\\/50:is(.dark *) {\n background-color: rgb(31 41 55 / 0.5);\n}\n.dark\\:bg-gray-800\\/90:is(.dark *) {\n background-color: rgb(31 41 55 / 0.9);\n}\n.dark\\:bg-gray-900:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(17 24 39 / var(--tw-bg-opacity, 1));\n}\n.dark\\:bg-gray-900\\/60:is(.dark *) {\n background-color: rgb(17 24 39 / 0.6);\n}\n.dark\\:bg-green-600:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(22 163 74 / var(--tw-bg-opacity, 1));\n}\n.dark\\:bg-green-900\\/20:is(.dark *) {\n background-color: rgb(20 83 45 / 0.2);\n}\n.dark\\:bg-orange-900\\/20:is(.dark *) {\n background-color: rgb(124 45 18 / 0.2);\n}\n.dark\\:bg-primary:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--primary) / var(--tw-bg-opacity, 1));\n}\n.dark\\:bg-primary\\/20:is(.dark *) {\n background-color: hsl(var(--primary) / 0.2);\n}\n.dark\\:bg-primary\\/90:is(.dark *) {\n background-color: hsl(var(--primary) / 0.9);\n}\n.dark\\:bg-purple-400:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(192 132 252 / var(--tw-bg-opacity, 1));\n}\n.dark\\:bg-purple-900:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(88 28 135 / var(--tw-bg-opacity, 1));\n}\n.dark\\:bg-purple-900\\/30:is(.dark *) {\n background-color: rgb(88 28 135 / 0.3);\n}\n.dark\\:bg-purple-950\\/20:is(.dark *) {\n background-color: rgb(59 7 100 / 0.2);\n}\n.dark\\:bg-red-600:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(220 38 38 / var(--tw-bg-opacity, 1));\n}\n.dark\\:bg-red-900\\/20:is(.dark *) {\n background-color: rgb(127 29 29 / 0.2);\n}\n.dark\\:bg-secondary:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--secondary) / var(--tw-bg-opacity, 1));\n}\n.dark\\:bg-success:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--success) / var(--tw-bg-opacity, 1));\n}\n.dark\\:bg-success\\/10:is(.dark *) {\n background-color: hsl(var(--success) / 0.1);\n}\n.dark\\:bg-success\\/90:is(.dark *) {\n background-color: hsl(var(--success) / 0.9);\n}\n.dark\\:bg-transparent:is(.dark *) {\n background-color: transparent;\n}\n.dark\\:bg-warning\\/90:is(.dark *) {\n background-color: hsl(var(--warning) / 0.9);\n}\n.dark\\:bg-white\\/80:is(.dark *) {\n background-color: rgb(255 255 255 / 0.8);\n}\n.dark\\:bg-yellow-800:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(133 77 14 / var(--tw-bg-opacity, 1));\n}\n.dark\\:bg-yellow-900\\/10:is(.dark *) {\n background-color: rgb(113 63 18 / 0.1);\n}\n.dark\\:bg-yellow-900\\/20:is(.dark *) {\n background-color: rgb(113 63 18 / 0.2);\n}\n.dark\\:from-blue-700:is(.dark *) {\n --tw-gradient-from: #1d4ed8 var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(29 78 216 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.dark\\:from-primary\\/10:is(.dark *) {\n --tw-gradient-from: hsl(var(--primary) / 0.1) var(--tw-gradient-from-position);\n --tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.dark\\:from-purple-950\\/50:is(.dark *) {\n --tw-gradient-from: rgb(59 7 100 / 0.5) var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(59 7 100 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.dark\\:from-yellow-900\\/10:is(.dark *) {\n --tw-gradient-from: rgb(113 63 18 / 0.1) var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(113 63 18 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.dark\\:from-yellow-900\\/5:is(.dark *) {\n --tw-gradient-from: rgb(113 63 18 / 0.05) var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(113 63 18 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.dark\\:via-accent\\/10:is(.dark *) {\n --tw-gradient-to: hsl(var(--accent) / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops:\n var(--tw-gradient-from),\n hsl(var(--accent) / 0.1) var(--tw-gradient-via-position),\n var(--tw-gradient-to);\n}\n.dark\\:to-blue-950\\/50:is(.dark *) {\n --tw-gradient-to: rgb(23 37 84 / 0.5) var(--tw-gradient-to-position);\n}\n.dark\\:to-primary\\/20:is(.dark *) {\n --tw-gradient-to: hsl(var(--primary) / 0.2) var(--tw-gradient-to-position);\n}\n.dark\\:to-purple-700:is(.dark *) {\n --tw-gradient-to: #7e22ce var(--tw-gradient-to-position);\n}\n.dark\\:to-secondary\\/10:is(.dark *) {\n --tw-gradient-to: hsl(var(--secondary) / 0.1) var(--tw-gradient-to-position);\n}\n.dark\\:to-yellow-900\\/5:is(.dark *) {\n --tw-gradient-to: rgb(113 63 18 / 0.05) var(--tw-gradient-to-position);\n}\n.dark\\:text-accent-foreground:is(.dark *) {\n --tw-text-opacity: 1;\n color: hsl(var(--accent-foreground) / var(--tw-text-opacity, 1));\n}\n.dark\\:text-black:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(0 0 0 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-blue-100:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(219 234 254 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-blue-400:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(96 165 250 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-blue-500:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(59 130 246 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-destructive-foreground:is(.dark *) {\n --tw-text-opacity: 1;\n color: hsl(var(--destructive-foreground) / var(--tw-text-opacity, 1));\n}\n.dark\\:text-foreground:is(.dark *) {\n --tw-text-opacity: 1;\n color: hsl(var(--foreground) / var(--tw-text-opacity, 1));\n}\n.dark\\:text-gray-100:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(243 244 246 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-gray-200:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(229 231 235 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-gray-300:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(209 213 219 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-gray-300\\/60:is(.dark *) {\n color: rgb(209 213 219 / 0.6);\n}\n.dark\\:text-gray-400:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(156 163 175 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-gray-500:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(107 114 128 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-gray-900:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(17 24 39 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-green-100:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(220 252 231 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-green-400:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(74 222 128 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-green-500:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(34 197 94 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-orange-100:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(255 237 213 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-orange-400:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(251 146 60 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-primary-foreground:is(.dark *) {\n --tw-text-opacity: 1;\n color: hsl(var(--primary-foreground) / var(--tw-text-opacity, 1));\n}\n.dark\\:text-purple-300:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(216 180 254 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-purple-400:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(192 132 252 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-red-400:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(248 113 113 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-slate-400:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(148 163 184 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-success-foreground:is(.dark *) {\n --tw-text-opacity: 1;\n color: hsl(var(--success-foreground) / var(--tw-text-opacity, 1));\n}\n.dark\\:text-white:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-yellow-200:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(254 240 138 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-yellow-300:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(253 224 71 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-yellow-400:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(250 204 21 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-yellow-500:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(234 179 8 / var(--tw-text-opacity, 1));\n}\n.dark\\:text-opacity-95:is(.dark *) {\n --tw-text-opacity: 0.95;\n}\n.dark\\:shadow-\\[0_0_20px_rgba\\(59\\,130\\,246\\,0\\.5\\)\\]:is(.dark *) {\n --tw-shadow: 0 0 20px rgba(59,130,246,0.5);\n --tw-shadow-colored: 0 0 20px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.dark\\:shadow-\\[0_0_20px_rgba\\(var\\(--primary\\)\\,0\\.7\\)\\]:is(.dark *) {\n --tw-shadow: 0 0 20px rgba(var(--primary),0.7);\n --tw-shadow-colored: 0 0 20px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.dark\\:shadow-\\[0_0_40px_rgba\\(var\\(--primary\\)\\,0\\.25\\)\\]:is(.dark *) {\n --tw-shadow: 0 0 40px rgba(var(--primary),0.25);\n --tw-shadow-colored: 0 0 40px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.dark\\:shadow-inner:is(.dark *) {\n --tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.dark\\:shadow-lg:is(.dark *) {\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.dark\\:shadow-xl:is(.dark *) {\n --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.dark\\:shadow-black\\/20:is(.dark *) {\n --tw-shadow-color: rgb(0 0 0 / 0.2);\n --tw-shadow: var(--tw-shadow-colored);\n}\n.dark\\:shadow-error\\/10:is(.dark *) {\n --tw-shadow-color: hsl(var(--error) / 0.1);\n --tw-shadow: var(--tw-shadow-colored);\n}\n.dark\\:shadow-gray-900\\/20:is(.dark *) {\n --tw-shadow-color: rgb(17 24 39 / 0.2);\n --tw-shadow: var(--tw-shadow-colored);\n}\n.dark\\:shadow-gray-950\\/10:is(.dark *) {\n --tw-shadow-color: rgb(3 7 18 / 0.1);\n --tw-shadow: var(--tw-shadow-colored);\n}\n.dark\\:shadow-primary\\/10:is(.dark *) {\n --tw-shadow-color: hsl(var(--primary) / 0.1);\n --tw-shadow: var(--tw-shadow-colored);\n}\n.dark\\:shadow-purple-500\\/10:is(.dark *) {\n --tw-shadow-color: rgb(168 85 247 / 0.1);\n --tw-shadow: var(--tw-shadow-colored);\n}\n.dark\\:shadow-success\\/10:is(.dark *) {\n --tw-shadow-color: hsl(var(--success) / 0.1);\n --tw-shadow: var(--tw-shadow-colored);\n}\n.dark\\:shadow-warning\\/10:is(.dark *) {\n --tw-shadow-color: hsl(var(--warning) / 0.1);\n --tw-shadow: var(--tw-shadow-colored);\n}\n.dark\\:ring-gray-600:is(.dark *) {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(75 85 99 / var(--tw-ring-opacity, 1));\n}\n.dark\\:ring-offset-gray-950:is(.dark *) {\n --tw-ring-offset-color: #030712;\n}\n.dark\\:backdrop-blur-sm:is(.dark *) {\n --tw-backdrop-blur: blur(4px);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.dark\\:placeholder\\:text-gray-400:is(.dark *)::-moz-placeholder {\n --tw-text-opacity: 1;\n color: rgb(156 163 175 / var(--tw-text-opacity, 1));\n}\n.dark\\:placeholder\\:text-gray-400:is(.dark *)::placeholder {\n --tw-text-opacity: 1;\n color: rgb(156 163 175 / var(--tw-text-opacity, 1));\n}\n.dark\\:placeholder\\:text-gray-500:is(.dark *)::-moz-placeholder {\n --tw-text-opacity: 1;\n color: rgb(107 114 128 / var(--tw-text-opacity, 1));\n}\n.dark\\:placeholder\\:text-gray-500:is(.dark *)::placeholder {\n --tw-text-opacity: 1;\n color: rgb(107 114 128 / var(--tw-text-opacity, 1));\n}\n.dark\\:hover\\:border-error\\/80:hover:is(.dark *) {\n border-color: hsl(var(--error) / 0.8);\n}\n.dark\\:hover\\:border-gray-500:hover:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(107 114 128 / var(--tw-border-opacity, 1));\n}\n.dark\\:hover\\:border-gray-600:hover:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(75 85 99 / var(--tw-border-opacity, 1));\n}\n.dark\\:hover\\:border-gray-700\\/30:hover:is(.dark *) {\n border-color: rgb(55 65 81 / 0.3);\n}\n.dark\\:hover\\:border-primary\\/30:hover:is(.dark *) {\n border-color: hsl(var(--primary) / 0.3);\n}\n.dark\\:hover\\:border-success\\/80:hover:is(.dark *) {\n border-color: hsl(var(--success) / 0.8);\n}\n.dark\\:hover\\:bg-accent:hover:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--accent) / var(--tw-bg-opacity, 1));\n}\n.dark\\:hover\\:bg-destructive\\/20:hover:is(.dark *) {\n background-color: hsl(var(--destructive) / 0.2);\n}\n.dark\\:hover\\:bg-destructive\\/90:hover:is(.dark *) {\n background-color: hsl(var(--destructive) / 0.9);\n}\n.dark\\:hover\\:bg-error\\/80:hover:is(.dark *) {\n background-color: hsl(var(--error) / 0.8);\n}\n.dark\\:hover\\:bg-gray-700:hover:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1));\n}\n.dark\\:hover\\:bg-gray-700\\/90:hover:is(.dark *) {\n background-color: rgb(55 65 81 / 0.9);\n}\n.dark\\:hover\\:bg-gray-800:hover:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1));\n}\n.dark\\:hover\\:bg-gray-800\\/20:hover:is(.dark *) {\n background-color: rgb(31 41 55 / 0.2);\n}\n.dark\\:hover\\:bg-gray-800\\/30:hover:is(.dark *) {\n background-color: rgb(31 41 55 / 0.3);\n}\n.dark\\:hover\\:bg-gray-800\\/80:hover:is(.dark *) {\n background-color: rgb(31 41 55 / 0.8);\n}\n.dark\\:hover\\:bg-green-900\\/20:hover:is(.dark *) {\n background-color: rgb(20 83 45 / 0.2);\n}\n.dark\\:hover\\:bg-primary\\/10:hover:is(.dark *) {\n background-color: hsl(var(--primary) / 0.1);\n}\n.dark\\:hover\\:bg-primary\\/20:hover:is(.dark *) {\n background-color: hsl(var(--primary) / 0.2);\n}\n.dark\\:hover\\:bg-primary\\/30:hover:is(.dark *) {\n background-color: hsl(var(--primary) / 0.3);\n}\n.dark\\:hover\\:bg-primary\\/90:hover:is(.dark *) {\n background-color: hsl(var(--primary) / 0.9);\n}\n.dark\\:hover\\:bg-purple-800:hover:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(107 33 168 / var(--tw-bg-opacity, 1));\n}\n.dark\\:hover\\:bg-red-900\\/20:hover:is(.dark *) {\n background-color: rgb(127 29 29 / 0.2);\n}\n.dark\\:hover\\:bg-success\\/20:hover:is(.dark *) {\n background-color: hsl(var(--success) / 0.2);\n}\n.dark\\:hover\\:bg-success\\/80:hover:is(.dark *) {\n background-color: hsl(var(--success) / 0.8);\n}\n.dark\\:hover\\:bg-success\\/90:hover:is(.dark *) {\n background-color: hsl(var(--success) / 0.9);\n}\n.dark\\:hover\\:bg-warning\\/20:hover:is(.dark *) {\n background-color: hsl(var(--warning) / 0.2);\n}\n.dark\\:hover\\:bg-warning\\/80:hover:is(.dark *) {\n background-color: hsl(var(--warning) / 0.8);\n}\n.dark\\:hover\\:bg-white\\/10:hover:is(.dark *) {\n background-color: rgb(255 255 255 / 0.1);\n}\n.dark\\:hover\\:bg-white\\/5:hover:is(.dark *) {\n background-color: rgb(255 255 255 / 0.05);\n}\n.dark\\:hover\\:bg-yellow-900\\/20:hover:is(.dark *) {\n background-color: rgb(113 63 18 / 0.2);\n}\n.dark\\:hover\\:from-purple-500\\/20:hover:is(.dark *) {\n --tw-gradient-from: rgb(168 85 247 / 0.2) var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.dark\\:hover\\:to-pink-500\\/20:hover:is(.dark *) {\n --tw-gradient-to: rgb(236 72 153 / 0.2) var(--tw-gradient-to-position);\n}\n.dark\\:hover\\:text-accent-foreground:hover:is(.dark *) {\n --tw-text-opacity: 1;\n color: hsl(var(--accent-foreground) / var(--tw-text-opacity, 1));\n}\n.dark\\:hover\\:text-destructive:hover:is(.dark *) {\n --tw-text-opacity: 1;\n color: hsl(var(--destructive) / var(--tw-text-opacity, 1));\n}\n.dark\\:hover\\:text-gray-100:hover:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(243 244 246 / var(--tw-text-opacity, 1));\n}\n.dark\\:hover\\:text-gray-200:hover:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(229 231 235 / var(--tw-text-opacity, 1));\n}\n.dark\\:hover\\:text-gray-400:hover:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(156 163 175 / var(--tw-text-opacity, 1));\n}\n.dark\\:hover\\:text-green-400:hover:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(74 222 128 / var(--tw-text-opacity, 1));\n}\n.dark\\:hover\\:text-primary:hover:is(.dark *) {\n --tw-text-opacity: 1;\n color: hsl(var(--primary) / var(--tw-text-opacity, 1));\n}\n.dark\\:hover\\:text-primary\\/90:hover:is(.dark *) {\n color: hsl(var(--primary) / 0.9);\n}\n.dark\\:hover\\:text-purple-400:hover:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(192 132 252 / var(--tw-text-opacity, 1));\n}\n.dark\\:hover\\:text-red-400:hover:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(248 113 113 / var(--tw-text-opacity, 1));\n}\n.dark\\:hover\\:text-success:hover:is(.dark *) {\n --tw-text-opacity: 1;\n color: hsl(var(--success) / var(--tw-text-opacity, 1));\n}\n.dark\\:hover\\:text-warning:hover:is(.dark *) {\n --tw-text-opacity: 1;\n color: hsl(var(--warning) / var(--tw-text-opacity, 1));\n}\n.dark\\:hover\\:text-white:hover:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\n}\n.dark\\:hover\\:text-yellow-400:hover:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(250 204 21 / var(--tw-text-opacity, 1));\n}\n.dark\\:hover\\:text-opacity-95:hover:is(.dark *) {\n --tw-text-opacity: 0.95;\n}\n.dark\\:focus\\:bg-gray-700:focus:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1));\n}\n.dark\\:focus\\:bg-gray-800:focus:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1));\n}\n.dark\\:focus\\:bg-green-900\\/20:focus:is(.dark *) {\n background-color: rgb(20 83 45 / 0.2);\n}\n.dark\\:focus\\:bg-red-900\\/20:focus:is(.dark *) {\n background-color: rgb(127 29 29 / 0.2);\n}\n.dark\\:focus\\:bg-yellow-900\\/20:focus:is(.dark *) {\n background-color: rgb(113 63 18 / 0.2);\n}\n.dark\\:focus\\:text-gray-100:focus:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(243 244 246 / var(--tw-text-opacity, 1));\n}\n.dark\\:focus\\:text-gray-200:focus:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(229 231 235 / var(--tw-text-opacity, 1));\n}\n.dark\\:focus\\:text-green-300:focus:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(134 239 172 / var(--tw-text-opacity, 1));\n}\n.dark\\:focus\\:text-green-400:focus:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(74 222 128 / var(--tw-text-opacity, 1));\n}\n.dark\\:focus\\:text-red-300:focus:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(252 165 165 / var(--tw-text-opacity, 1));\n}\n.dark\\:focus\\:text-red-400:focus:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(248 113 113 / var(--tw-text-opacity, 1));\n}\n.dark\\:focus\\:text-yellow-300:focus:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(253 224 71 / var(--tw-text-opacity, 1));\n}\n.dark\\:focus\\:text-yellow-400:focus:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(250 204 21 / var(--tw-text-opacity, 1));\n}\n.dark\\:focus-visible\\:border-primary:focus-visible:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: hsl(var(--primary) / var(--tw-border-opacity, 1));\n}\n.dark\\:focus-visible\\:border-primary\\/80:focus-visible:is(.dark *) {\n border-color: hsl(var(--primary) / 0.8);\n}\n.dark\\:focus-visible\\:ring-error\\/25:focus-visible:is(.dark *) {\n --tw-ring-color: hsl(var(--error) / 0.25);\n}\n.dark\\:focus-visible\\:ring-gray-500\\/40:focus-visible:is(.dark *) {\n --tw-ring-color: rgb(107 114 128 / 0.4);\n}\n.dark\\:focus-visible\\:ring-primary\\/20:focus-visible:is(.dark *) {\n --tw-ring-color: hsl(var(--primary) / 0.2);\n}\n.dark\\:focus-visible\\:ring-primary\\/40:focus-visible:is(.dark *) {\n --tw-ring-color: hsl(var(--primary) / 0.4);\n}\n.dark\\:focus-visible\\:ring-primary\\/50:focus-visible:is(.dark *) {\n --tw-ring-color: hsl(var(--primary) / 0.5);\n}\n.dark\\:focus-visible\\:ring-purple-500\\/40:focus-visible:is(.dark *) {\n --tw-ring-color: rgb(168 85 247 / 0.4);\n}\n.dark\\:focus-visible\\:ring-success\\/25:focus-visible:is(.dark *) {\n --tw-ring-color: hsl(var(--success) / 0.25);\n}\n.dark\\:focus-visible\\:ring-warning\\/25:focus-visible:is(.dark *) {\n --tw-ring-color: hsl(var(--warning) / 0.25);\n}\n.dark\\:focus-visible\\:ring-offset-gray-950:focus-visible:is(.dark *) {\n --tw-ring-offset-color: #030712;\n}\n.dark\\:active\\:bg-accent\\/80:active:is(.dark *) {\n background-color: hsl(var(--accent) / 0.8);\n}\n.dark\\:active\\:bg-destructive\\/80:active:is(.dark *) {\n background-color: hsl(var(--destructive) / 0.8);\n}\n.dark\\:active\\:bg-gray-600:active:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(75 85 99 / var(--tw-bg-opacity, 1));\n}\n.dark\\:active\\:bg-gray-700:active:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1));\n}\n.dark\\:active\\:bg-primary\\/40:active:is(.dark *) {\n background-color: hsl(var(--primary) / 0.4);\n}\n.dark\\:active\\:bg-primary\\/80:active:is(.dark *) {\n background-color: hsl(var(--primary) / 0.8);\n}\n.dark\\:active\\:bg-success\\/80:active:is(.dark *) {\n background-color: hsl(var(--success) / 0.8);\n}\n.peer:disabled ~ .dark\\:peer-disabled\\:opacity-60:is(.dark *) {\n opacity: 0.6;\n}\n.dark\\:data-\\[state\\=active\\]\\:bg-white\\/10[data-state=active]:is(.dark *) {\n background-color: rgb(255 255 255 / 0.1);\n}\n.dark\\:data-\\[state\\=on\\]\\:bg-accent[data-state=on]:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--accent) / var(--tw-bg-opacity, 1));\n}\n.dark\\:data-\\[state\\=on\\]\\:bg-destructive[data-state=on]:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--destructive) / var(--tw-bg-opacity, 1));\n}\n.dark\\:data-\\[state\\=on\\]\\:bg-primary[data-state=on]:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--primary) / var(--tw-bg-opacity, 1));\n}\n.dark\\:data-\\[state\\=on\\]\\:bg-success[data-state=on]:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--success) / var(--tw-bg-opacity, 1));\n}\n.dark\\:data-\\[state\\=on\\]\\:bg-warning[data-state=on]:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--warning) / var(--tw-bg-opacity, 1));\n}\n.dark\\:data-\\[state\\=unchecked\\]\\:bg-gray-700\\/70[data-state=unchecked]:is(.dark *) {\n background-color: rgb(55 65 81 / 0.7);\n}\n.dark\\:data-\\[state\\=on\\]\\:from-purple-600[data-state=on]:is(.dark *) {\n --tw-gradient-from: #9333ea var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(147 51 234 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.dark\\:data-\\[state\\=on\\]\\:to-pink-600[data-state=on]:is(.dark *) {\n --tw-gradient-to: #db2777 var(--tw-gradient-to-position);\n}\n.dark\\:data-\\[state\\=on\\]\\:text-accent-foreground[data-state=on]:is(.dark *) {\n --tw-text-opacity: 1;\n color: hsl(var(--accent-foreground) / var(--tw-text-opacity, 1));\n}\n.dark\\:data-\\[state\\=on\\]\\:text-destructive-foreground[data-state=on]:is(.dark *) {\n --tw-text-opacity: 1;\n color: hsl(var(--destructive-foreground) / var(--tw-text-opacity, 1));\n}\n.dark\\:data-\\[state\\=on\\]\\:text-primary-foreground[data-state=on]:is(.dark *) {\n --tw-text-opacity: 1;\n color: hsl(var(--primary-foreground) / var(--tw-text-opacity, 1));\n}\n.dark\\:data-\\[state\\=on\\]\\:text-success-foreground[data-state=on]:is(.dark *) {\n --tw-text-opacity: 1;\n color: hsl(var(--success-foreground) / var(--tw-text-opacity, 1));\n}\n.dark\\:data-\\[state\\=on\\]\\:text-warning-foreground[data-state=on]:is(.dark *) {\n --tw-text-opacity: 1;\n color: hsl(var(--warning-foreground) / var(--tw-text-opacity, 1));\n}\n.dark\\:data-\\[state\\=on\\]\\:text-white[data-state=on]:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\n}\n@media (min-width: 640px) {\n .sm\\:bottom-0 {\n bottom: 0px;\n }\n .sm\\:right-0 {\n right: 0px;\n }\n .sm\\:top-auto {\n top: auto;\n }\n .sm\\:mt-0 {\n margin-top: 0px;\n }\n .sm\\:flex {\n display: flex;\n }\n .sm\\:inline-flex {\n display: inline-flex;\n }\n .sm\\:hidden {\n display: none;\n }\n .sm\\:h-2 {\n height: 0.5rem;\n }\n .sm\\:h-4 {\n height: 1rem;\n }\n .sm\\:h-7 {\n height: 1.75rem;\n }\n .sm\\:h-9 {\n height: 2.25rem;\n }\n .sm\\:w-\\[540px\\] {\n width: 540px;\n }\n .sm\\:min-w-\\[24rem\\] {\n min-width: 24rem;\n }\n .sm\\:max-w-4xl {\n max-width: 56rem;\n }\n .sm\\:max-w-\\[425px\\] {\n max-width: 425px;\n }\n .sm\\:max-w-\\[480px\\] {\n max-width: 480px;\n }\n .sm\\:max-w-\\[500px\\] {\n max-width: 500px;\n }\n .sm\\:max-w-\\[600px\\] {\n max-width: 600px;\n }\n .sm\\:max-w-md {\n max-width: 28rem;\n }\n .sm\\:max-w-sm {\n max-width: 24rem;\n }\n .sm\\:columns-2 {\n -moz-columns: 2;\n columns: 2;\n }\n .sm\\:grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .sm\\:grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .sm\\:flex-row {\n flex-direction: row;\n }\n .sm\\:flex-col {\n flex-direction: column;\n }\n .sm\\:justify-end {\n justify-content: flex-end;\n }\n .sm\\:justify-between {\n justify-content: space-between;\n }\n .sm\\:gap-2 {\n gap: 0.5rem;\n }\n .sm\\:gap-2\\.5 {\n gap: 0.625rem;\n }\n .sm\\:gap-4 {\n gap: 1rem;\n }\n .sm\\:space-x-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.5rem * var(--tw-space-x-reverse));\n margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));\n }\n .sm\\:rounded-lg {\n border-radius: var(--radius);\n }\n .sm\\:p-3 {\n padding: 0.75rem;\n }\n .sm\\:p-6 {\n padding: 1.5rem;\n }\n .sm\\:px-6 {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n }\n .sm\\:text-left {\n text-align: left;\n }\n .sm\\:text-right {\n text-align: right;\n }\n .sm\\:text-\\[0\\.75rem\\] {\n font-size: 0.75rem;\n }\n .sm\\:text-base {\n font-size: 1rem;\n line-height: 1.5rem;\n }\n .sm\\:text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n }\n .data-\\[state\\=open\\]\\:sm\\:slide-in-from-bottom-full[data-state=open] {\n --tw-enter-translate-y: 100%;\n }\n}\n@media (min-width: 768px) {\n .md\\:absolute {\n position: absolute;\n }\n .md\\:flex {\n display: flex;\n }\n .md\\:hidden {\n display: none;\n }\n .md\\:w-\\[400px\\] {\n width: 400px;\n }\n .md\\:w-\\[var\\(--radix-navigation-menu-viewport-width\\)\\] {\n width: var(--radix-navigation-menu-viewport-width);\n }\n .md\\:w-auto {\n width: auto;\n }\n .md\\:max-w-\\[420px\\] {\n max-width: 420px;\n }\n .md\\:max-w-\\[640px\\] {\n max-width: 640px;\n }\n .md\\:columns-3 {\n -moz-columns: 3;\n columns: 3;\n }\n .md\\:grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .md\\:grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .md\\:grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n}\n@media (min-width: 1024px) {\n .lg\\:relative {\n position: relative;\n }\n .lg\\:inset-auto {\n inset: auto;\n }\n .lg\\:block {\n display: block;\n }\n .lg\\:flex {\n display: flex;\n }\n .lg\\:hidden {\n display: none;\n }\n .lg\\:w-0 {\n width: 0px;\n }\n .lg\\:w-64 {\n width: 16rem;\n }\n .lg\\:w-\\[500px\\] {\n width: 500px;\n }\n .lg\\:max-w-\\[768px\\] {\n max-width: 768px;\n }\n .lg\\:translate-x-0 {\n --tw-translate-x: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n }\n .lg\\:columns-4 {\n -moz-columns: 4;\n columns: 4;\n }\n .lg\\:grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .lg\\:grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n .lg\\:grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n .lg\\:grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n }\n .lg\\:grid-cols-\\[\\.75fr_1fr\\] {\n grid-template-columns: .75fr 1fr;\n }\n .lg\\:space-x-8 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(2rem * var(--tw-space-x-reverse));\n margin-left: calc(2rem * calc(1 - var(--tw-space-x-reverse)));\n }\n .lg\\:px-8 {\n padding-left: 2rem;\n padding-right: 2rem;\n }\n}\n@media (min-width: 1280px) {\n .xl\\:max-w-\\[1024px\\] {\n max-width: 1024px;\n }\n .xl\\:grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n }\n}\n@media print {\n .print\\:relative {\n position: relative;\n }\n .print\\:hidden {\n display: none;\n }\n .print\\:break-inside-avoid {\n -moz-column-break-inside: avoid;\n break-inside: avoid;\n }\n .print\\:border-0 {\n border-width: 0px;\n }\n .print\\:bg-transparent {\n background-color: transparent;\n }\n .print\\:pb-2 {\n padding-bottom: 0.5rem;\n }\n .print\\:shadow-none {\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n }\n}\n.\\[\\&\\+div\\]\\:text-xs + div {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.\\[\\&\\:has\\(\\[role\\=checkbox\\]\\)\\]\\:pr-0:has([role=checkbox]) {\n padding-right: 0px;\n}\n.\\[\\&\\>div\\]\\:bg-destructive > div {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--destructive) / var(--tw-bg-opacity, 1));\n}\n.\\[\\&\\>span\\]\\:line-clamp-1 > span {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n}\n.\\[\\&\\>svg\\]\\:shrink-0 > svg {\n flex-shrink: 0;\n}\n.even\\:\\[\\&\\>tr\\]\\:bg-muted\\/50 > tr:nth-child(even) {\n background-color: hsl(var(--muted) / 0.5);\n}\n.\\[\\&\\[data-state\\=open\\]\\>\\.chevron\\]\\:rotate-180[data-state=open] > .chevron {\n --tw-rotate: 180deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.\\[\\&\\[data-state\\=open\\]\\]\\:text-primary[data-state=open] {\n --tw-text-opacity: 1;\n color: hsl(var(--primary) / var(--tw-text-opacity, 1));\n}\n.dark\\:\\[\\&\\[data-state\\=open\\]\\]\\:text-primary\\/90[data-state=open]:is(.dark *) {\n color: hsl(var(--primary) / 0.9);\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 [cmdk-group-heading] {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 [cmdk-group-heading] {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-xs [cmdk-group-heading] {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium [cmdk-group-heading] {\n font-weight: 500;\n}\n.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-muted-foreground [cmdk-group-heading] {\n --tw-text-opacity: 1;\n color: hsl(var(--muted-foreground) / var(--tw-text-opacity, 1));\n}\n@keyframes accordion-down {\n from {\n height: 0;\n }\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n.\\[\\&_\\[data-state\\=open\\]\\]\\:animate-\\[accordion-down_0\\.2s_ease-in-out\\] [data-state=open] {\n animation: accordion-down 0.2s ease-in-out;\n}\n@keyframes accordion-down {\n from {\n height: 0;\n }\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n.\\[\\&_\\[data-state\\=open\\]\\]\\:animate-\\[accordion-down_0\\.3s_cubic-bezier\\(0\\.34\\,1\\.56\\,0\\.64\\,1\\)\\] [data-state=open] {\n animation: accordion-down 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);\n}\n@keyframes accordion-down {\n from {\n height: 0;\n }\n to {\n height: var(--radix-accordion-content-height);\n }\n}\n.\\[\\&_\\[data-state\\=open\\]\\]\\:animate-\\[accordion-down_0\\.4s_cubic-bezier\\(0\\.68\\,-0\\.55\\,0\\.265\\,1\\.55\\)\\] [data-state=open] {\n animation: accordion-down 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55);\n}\n.\\[\\&_\\[data-state\\=open\\]\\]\\:animate-\\[collapsible-down_0\\.2s_ease-in-out\\] [data-state=open] {\n animation: collapsible-down 0.2s ease-in-out;\n}\n.\\[\\&_\\[data-state\\=open\\]\\]\\:animate-\\[collapsible-down_0\\.3s_cubic-bezier\\(0\\.34\\,1\\.56\\,0\\.64\\,1\\)\\] [data-state=open] {\n animation: collapsible-down 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);\n}\n.\\[\\&_\\[data-state\\=open\\]\\]\\:animate-\\[collapsible-down_0\\.4s_cubic-bezier\\(0\\.68\\,-0\\.55\\,0\\.265\\,1\\.55\\)\\] [data-state=open] {\n animation: collapsible-down 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55);\n}\n.\\[\\&_\\[data-state\\=open\\]\\]\\:animate-\\[slide-down_0\\.3s_ease-out\\] [data-state=open] {\n animation: slide-down 0.3s ease-out;\n}\n.\\[\\&_blockquote\\]\\:border-l-4 blockquote {\n border-left-width: 4px;\n}\n.\\[\\&_blockquote\\]\\:border-muted-foreground\\/30 blockquote {\n border-color: hsl(var(--muted-foreground) / 0.3);\n}\n.\\[\\&_blockquote\\]\\:pl-4 blockquote {\n padding-left: 1rem;\n}\n.\\[\\&_blockquote\\]\\:italic blockquote {\n font-style: italic;\n}\n.\\[\\&_h1\\]\\:mb-4 h1 {\n margin-bottom: 1rem;\n}\n.\\[\\&_h1\\]\\:text-3xl h1 {\n font-size: 1.875rem;\n line-height: 2.25rem;\n}\n.\\[\\&_h1\\]\\:font-bold h1 {\n font-weight: 700;\n}\n.\\[\\&_h2\\]\\:mb-3 h2 {\n margin-bottom: 0.75rem;\n}\n.\\[\\&_h2\\]\\:text-2xl h2 {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n.\\[\\&_h2\\]\\:font-bold h2 {\n font-weight: 700;\n}\n.\\[\\&_h3\\]\\:mb-2 h3 {\n margin-bottom: 0.5rem;\n}\n.\\[\\&_h3\\]\\:text-xl h3 {\n font-size: 1.25rem;\n line-height: 1.75rem;\n}\n.\\[\\&_h3\\]\\:font-bold h3 {\n font-weight: 700;\n}\n.\\[\\&_h4\\]\\:mb-2 h4 {\n margin-bottom: 0.5rem;\n}\n.\\[\\&_h4\\]\\:text-lg h4 {\n font-size: 1.125rem;\n line-height: 1.75rem;\n}\n.\\[\\&_h4\\]\\:font-bold h4 {\n font-weight: 700;\n}\n.\\[\\&_h5\\]\\:mb-1 h5 {\n margin-bottom: 0.25rem;\n}\n.\\[\\&_h5\\]\\:text-base h5 {\n font-size: 1rem;\n line-height: 1.5rem;\n}\n.\\[\\&_h5\\]\\:font-bold h5 {\n font-weight: 700;\n}\n.\\[\\&_h6\\]\\:mb-1 h6 {\n margin-bottom: 0.25rem;\n}\n.\\[\\&_h6\\]\\:text-sm h6 {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.\\[\\&_h6\\]\\:font-bold h6 {\n font-weight: 700;\n}\n.\\[\\&_li\\]\\:mb-1 li {\n margin-bottom: 0.25rem;\n}\n.\\[\\&_ol\\]\\:mb-4 ol {\n margin-bottom: 1rem;\n}\n.\\[\\&_ol\\]\\:list-decimal ol {\n list-style-type: decimal;\n}\n.\\[\\&_ol\\]\\:pl-6 ol {\n padding-left: 1.5rem;\n}\n.\\[\\&_pre\\]\\:overflow-x-auto pre {\n overflow-x: auto;\n}\n.\\[\\&_pre\\]\\:rounded pre {\n border-radius: 0.25rem;\n}\n.\\[\\&_pre\\]\\:bg-muted pre {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--muted) / var(--tw-bg-opacity, 1));\n}\n.\\[\\&_pre\\]\\:p-4 pre {\n padding: 1rem;\n}\n.\\[\\&_table\\]\\:mb-4 table {\n margin-bottom: 1rem;\n}\n.\\[\\&_table\\]\\:w-full table {\n width: 100%;\n}\n.\\[\\&_table_td\\]\\:border table td {\n border-width: 1px;\n}\n.\\[\\&_table_td\\]\\:border-border table td {\n --tw-border-opacity: 1;\n border-color: hsl(var(--border) / var(--tw-border-opacity, 1));\n}\n.\\[\\&_table_td\\]\\:p-2 table td {\n padding: 0.5rem;\n}\n.\\[\\&_table_th\\]\\:border table th {\n border-width: 1px;\n}\n.\\[\\&_table_th\\]\\:border-border table th {\n --tw-border-opacity: 1;\n border-color: hsl(var(--border) / var(--tw-border-opacity, 1));\n}\n.\\[\\&_table_th\\]\\:bg-muted table th {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--muted) / var(--tw-bg-opacity, 1));\n}\n.\\[\\&_table_th\\]\\:p-2 table th {\n padding: 0.5rem;\n}\n.\\[\\&_table_th\\]\\:font-semibold table th {\n font-weight: 600;\n}\n.\\[\\&_tr\\:last-child\\]\\:border-0 tr:last-child {\n border-width: 0px;\n}\n.\\[\\&_tr\\]\\:border-b tr {\n border-bottom-width: 1px;\n}\n.\\[\\&_ul\\]\\:mb-4 ul {\n margin-bottom: 1rem;\n}\n.\\[\\&_ul\\]\\:list-disc ul {\n list-style-type: disc;\n}\n.\\[\\&_ul\\]\\:pl-6 ul {\n padding-left: 1.5rem;\n}\n');
|
|
1754
1728
|
function cn(...inputs) {
|
|
1755
1729
|
return twMerge(clsx(inputs));
|
|
1756
1730
|
}
|
|
@@ -57972,6 +57946,29 @@ var SlashCommandsExtension = Extension.create({
|
|
|
57972
57946
|
}
|
|
57973
57947
|
});
|
|
57974
57948
|
|
|
57949
|
+
// #style-inject:#style-inject
|
|
57950
|
+
function styleInject(css2, { insertAt } = {}) {
|
|
57951
|
+
if (!css2 || typeof document === "undefined")
|
|
57952
|
+
return;
|
|
57953
|
+
const head = document.head || document.getElementsByTagName("head")[0];
|
|
57954
|
+
const style2 = document.createElement("style");
|
|
57955
|
+
style2.type = "text/css";
|
|
57956
|
+
if (insertAt === "top") {
|
|
57957
|
+
if (head.firstChild) {
|
|
57958
|
+
head.insertBefore(style2, head.firstChild);
|
|
57959
|
+
} else {
|
|
57960
|
+
head.appendChild(style2);
|
|
57961
|
+
}
|
|
57962
|
+
} else {
|
|
57963
|
+
head.appendChild(style2);
|
|
57964
|
+
}
|
|
57965
|
+
if (style2.styleSheet) {
|
|
57966
|
+
style2.styleSheet.cssText = css2;
|
|
57967
|
+
} else {
|
|
57968
|
+
style2.appendChild(document.createTextNode(css2));
|
|
57969
|
+
}
|
|
57970
|
+
}
|
|
57971
|
+
|
|
57975
57972
|
// src/components/rich-text-editor/slash-commands.css
|
|
57976
57973
|
styleInject(".slash-commands-menu {\n border-radius: var(--radius);\n border-width: 1px;\n --tw-border-opacity: 1;\n border-color: rgb(229 231 235 / var(--tw-border-opacity, 1));\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.slash-commands-menu:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(55 65 81 / var(--tw-border-opacity, 1));\n --tw-bg-opacity: 1;\n background-color: rgb(17 24 39 / var(--tw-bg-opacity, 1));\n}\n.slash-commands-menu {\n max-height: 20rem;\n min-width: 280px;\n overflow-y: auto;\n padding: 0.5rem;\n}\n.slash-command-item {\n display: flex;\n cursor: pointer;\n align-items: center;\n gap: 0.75rem;\n border-radius: calc(var(--radius) - 2px);\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n transition-property:\n color,\n background-color,\n border-color,\n text-decoration-color,\n fill,\n stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.slash-command-item:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));\n}\n.slash-command-item:hover:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1));\n}\n.slash-command-item.selected {\n --tw-bg-opacity: 1;\n background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));\n}\n.slash-command-item.selected:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1));\n}\n.slash-command-item svg {\n height: 1rem;\n width: 1rem;\n --tw-text-opacity: 1;\n color: rgb(107 114 128 / var(--tw-text-opacity, 1));\n}\n.slash-command-item svg:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(156 163 175 / var(--tw-text-opacity, 1));\n}\n.slash-command-item > div {\n flex: 1 1 0%;\n}\n.slash-command-item .command-name {\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 500;\n --tw-text-opacity: 1;\n color: rgb(17 24 39 / var(--tw-text-opacity, 1));\n}\n.slash-command-item .command-name:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(243 244 246 / var(--tw-text-opacity, 1));\n}\n.slash-command-item .command-description {\n margin-top: 0.125rem;\n font-size: 0.75rem;\n line-height: 1rem;\n --tw-text-opacity: 1;\n color: rgb(107 114 128 / var(--tw-text-opacity, 1));\n}\n.slash-command-item .command-description:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(156 163 175 / var(--tw-text-opacity, 1));\n}\n.dark .slash-commands-menu {\n box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 4px 6px -2px rgba(0, 0, 0, 0.2);\n}\n");
|
|
57977
57974
|
|
|
@@ -63196,7 +63193,8 @@ function MetricCard({
|
|
|
63196
63193
|
showSparkline = true,
|
|
63197
63194
|
showForecast = false,
|
|
63198
63195
|
interactive = true,
|
|
63199
|
-
glassmorphism = false
|
|
63196
|
+
glassmorphism = false,
|
|
63197
|
+
compact = false
|
|
63200
63198
|
}) {
|
|
63201
63199
|
const [isHovered, setIsHovered] = t__default.useState(false);
|
|
63202
63200
|
const [isMounted, setIsMounted] = t__default.useState(false);
|
|
@@ -63388,21 +63386,31 @@ function MetricCard({
|
|
|
63388
63386
|
onClick,
|
|
63389
63387
|
children: [
|
|
63390
63388
|
glassmorphism && /* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-gradient-to-br from-primary/5 to-transparent" }),
|
|
63391
|
-
/* @__PURE__ */ jsxs("div", { className:
|
|
63392
|
-
|
|
63389
|
+
/* @__PURE__ */ jsxs("div", { className: cn(
|
|
63390
|
+
"flex items-center justify-between",
|
|
63391
|
+
compact ? "p-3 pb-1" : "p-4 pb-2"
|
|
63392
|
+
), children: [
|
|
63393
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
63393
63394
|
/* @__PURE__ */ jsx(
|
|
63394
63395
|
motion.div,
|
|
63395
63396
|
{
|
|
63396
63397
|
className: cn(
|
|
63397
|
-
"
|
|
63398
|
+
"rounded-lg",
|
|
63399
|
+
compact ? "p-1.5" : "p-2",
|
|
63398
63400
|
glassmorphism ? "bg-white/10 backdrop-blur" : "bg-muted"
|
|
63399
63401
|
),
|
|
63400
63402
|
whileHover: { scale: 1.05 },
|
|
63401
63403
|
whileTap: { scale: 0.95 },
|
|
63402
|
-
children: /* @__PURE__ */ jsx("div", { className: cn(
|
|
63404
|
+
children: /* @__PURE__ */ jsx("div", { className: cn(
|
|
63405
|
+
colorClasses[data.color || "primary"],
|
|
63406
|
+
compact ? "h-4 w-4" : "h-5 w-5"
|
|
63407
|
+
), children: data.icon })
|
|
63403
63408
|
}
|
|
63404
63409
|
),
|
|
63405
|
-
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx("h3", { className:
|
|
63410
|
+
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx("h3", { className: cn(
|
|
63411
|
+
"font-medium text-muted-foreground",
|
|
63412
|
+
compact ? "text-xs" : "text-sm"
|
|
63413
|
+
), children: data.title }) })
|
|
63406
63414
|
] }),
|
|
63407
63415
|
interactive && /* @__PURE__ */ jsxs(MoonUIDropdownMenuPro, { children: [
|
|
63408
63416
|
/* @__PURE__ */ jsx(MoonUIDropdownMenuTriggerPro, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
@@ -63431,19 +63439,25 @@ function MetricCard({
|
|
|
63431
63439
|
] })
|
|
63432
63440
|
] })
|
|
63433
63441
|
] }),
|
|
63434
|
-
/* @__PURE__ */ jsxs("div", { className: "px-4 pb-4", children: [
|
|
63442
|
+
/* @__PURE__ */ jsxs("div", { className: compact ? "px-3 pb-3" : "px-4 pb-4", children: [
|
|
63435
63443
|
/* @__PURE__ */ jsx(MoonUITooltipProviderPro, { children: /* @__PURE__ */ jsxs(MoonUITooltipPro, { children: [
|
|
63436
63444
|
/* @__PURE__ */ jsx(MoonUITooltipTriggerPro, { asChild: true, children: /* @__PURE__ */ jsxs(
|
|
63437
63445
|
motion.div,
|
|
63438
63446
|
{
|
|
63439
|
-
className:
|
|
63447
|
+
className: cn(
|
|
63448
|
+
"font-bold tracking-tight",
|
|
63449
|
+
compact ? "text-xl" : "text-3xl"
|
|
63450
|
+
),
|
|
63440
63451
|
animate: {
|
|
63441
|
-
scale: isHovered ? 1.02 : 1
|
|
63452
|
+
scale: isHovered && !compact ? 1.02 : 1
|
|
63442
63453
|
},
|
|
63443
63454
|
transition: { duration: 0.2 },
|
|
63444
63455
|
children: [
|
|
63445
63456
|
formatValue(data.value),
|
|
63446
|
-
data.unit && /* @__PURE__ */ jsx("span", { className:
|
|
63457
|
+
data.unit && /* @__PURE__ */ jsx("span", { className: cn(
|
|
63458
|
+
"ml-1 text-muted-foreground",
|
|
63459
|
+
compact ? "text-sm" : "text-lg"
|
|
63460
|
+
), children: data.unit })
|
|
63447
63461
|
]
|
|
63448
63462
|
}
|
|
63449
63463
|
) }),
|
|
@@ -63458,7 +63472,8 @@ function MetricCard({
|
|
|
63458
63472
|
motion.div,
|
|
63459
63473
|
{
|
|
63460
63474
|
className: cn(
|
|
63461
|
-
"flex items-center gap-1
|
|
63475
|
+
"flex items-center gap-1 mt-1",
|
|
63476
|
+
compact ? "text-xs" : "text-sm",
|
|
63462
63477
|
getChangeColor(data.change.type)
|
|
63463
63478
|
),
|
|
63464
63479
|
initial: { opacity: 0, x: -10 },
|
|
@@ -63496,9 +63511,9 @@ function MetricCard({
|
|
|
63496
63511
|
]
|
|
63497
63512
|
}
|
|
63498
63513
|
),
|
|
63499
|
-
renderProgress()
|
|
63514
|
+
!compact && renderProgress()
|
|
63500
63515
|
] }),
|
|
63501
|
-
showSparkline && renderSparkline()
|
|
63516
|
+
showSparkline && !compact && renderSparkline()
|
|
63502
63517
|
]
|
|
63503
63518
|
}
|
|
63504
63519
|
)
|
|
@@ -63522,11 +63537,13 @@ function ChartWidget({
|
|
|
63522
63537
|
loading = false,
|
|
63523
63538
|
refreshing = false,
|
|
63524
63539
|
glassmorphism = false,
|
|
63525
|
-
interactive = true
|
|
63540
|
+
interactive = true,
|
|
63541
|
+
compact = false
|
|
63526
63542
|
}) {
|
|
63527
63543
|
const [colorScheme, setColorScheme] = t__default.useState("default");
|
|
63528
63544
|
const [isFullscreen, setIsFullscreen] = t__default.useState(false);
|
|
63529
63545
|
const colors = CHART_COLORS[colorScheme];
|
|
63546
|
+
const chartHeight = compact ? 120 : height;
|
|
63530
63547
|
const CustomTooltip2 = ({ active, payload, label }) => {
|
|
63531
63548
|
if (!active || !payload)
|
|
63532
63549
|
return null;
|
|
@@ -63567,12 +63584,12 @@ function ChartWidget({
|
|
|
63567
63584
|
};
|
|
63568
63585
|
switch (data.type) {
|
|
63569
63586
|
case "line":
|
|
63570
|
-
return /* @__PURE__ */ jsx(ResponsiveContainer, { width: "100%", height, children: /* @__PURE__ */ jsxs(LineChart, { ...chartProps, children: [
|
|
63571
|
-
/* @__PURE__ */ jsx(CartesianGrid, { strokeDasharray: "3 3", className: "opacity-30" }),
|
|
63572
|
-
/* @__PURE__ */ jsx(XAxis, { dataKey: "name" }),
|
|
63573
|
-
/* @__PURE__ */ jsx(YAxis, {}),
|
|
63574
|
-
/* @__PURE__ */ jsx(Tooltip, { content: /* @__PURE__ */ jsx(CustomTooltip2, {}) }),
|
|
63575
|
-
interactive && /* @__PURE__ */ jsx(Legend, {}),
|
|
63587
|
+
return /* @__PURE__ */ jsx(ResponsiveContainer, { width: "100%", height: chartHeight, children: /* @__PURE__ */ jsxs(LineChart, { ...chartProps, children: [
|
|
63588
|
+
!compact && /* @__PURE__ */ jsx(CartesianGrid, { strokeDasharray: "3 3", className: "opacity-30" }),
|
|
63589
|
+
/* @__PURE__ */ jsx(XAxis, { dataKey: "name", tick: compact ? { fontSize: 10 } : void 0, hide: compact }),
|
|
63590
|
+
/* @__PURE__ */ jsx(YAxis, { tick: compact ? { fontSize: 10 } : void 0, hide: compact }),
|
|
63591
|
+
!compact && /* @__PURE__ */ jsx(Tooltip, { content: /* @__PURE__ */ jsx(CustomTooltip2, {}) }),
|
|
63592
|
+
interactive && !compact && /* @__PURE__ */ jsx(Legend, {}),
|
|
63576
63593
|
Object.keys(data.data[0]).filter((key) => key !== "name").map((key, index2) => /* @__PURE__ */ jsx(
|
|
63577
63594
|
Line,
|
|
63578
63595
|
{
|
|
@@ -63588,12 +63605,12 @@ function ChartWidget({
|
|
|
63588
63605
|
))
|
|
63589
63606
|
] }) });
|
|
63590
63607
|
case "bar":
|
|
63591
|
-
return /* @__PURE__ */ jsx(ResponsiveContainer, { width: "100%", height, children: /* @__PURE__ */ jsxs(BarChart, { ...chartProps, children: [
|
|
63592
|
-
/* @__PURE__ */ jsx(CartesianGrid, { strokeDasharray: "3 3", className: "opacity-30" }),
|
|
63593
|
-
/* @__PURE__ */ jsx(XAxis, { dataKey: "name" }),
|
|
63594
|
-
/* @__PURE__ */ jsx(YAxis, {}),
|
|
63595
|
-
/* @__PURE__ */ jsx(Tooltip, { content: /* @__PURE__ */ jsx(CustomTooltip2, {}) }),
|
|
63596
|
-
interactive && /* @__PURE__ */ jsx(Legend, {}),
|
|
63608
|
+
return /* @__PURE__ */ jsx(ResponsiveContainer, { width: "100%", height: chartHeight, children: /* @__PURE__ */ jsxs(BarChart, { ...chartProps, children: [
|
|
63609
|
+
!compact && /* @__PURE__ */ jsx(CartesianGrid, { strokeDasharray: "3 3", className: "opacity-30" }),
|
|
63610
|
+
/* @__PURE__ */ jsx(XAxis, { dataKey: "name", tick: compact ? { fontSize: 10 } : void 0, hide: compact }),
|
|
63611
|
+
/* @__PURE__ */ jsx(YAxis, { tick: compact ? { fontSize: 10 } : void 0, hide: compact }),
|
|
63612
|
+
!compact && /* @__PURE__ */ jsx(Tooltip, { content: /* @__PURE__ */ jsx(CustomTooltip2, {}) }),
|
|
63613
|
+
interactive && !compact && /* @__PURE__ */ jsx(Legend, {}),
|
|
63597
63614
|
Object.keys(data.data[0]).filter((key) => key !== "name").map((key, index2) => /* @__PURE__ */ jsx(
|
|
63598
63615
|
Bar,
|
|
63599
63616
|
{
|
|
@@ -63606,12 +63623,12 @@ function ChartWidget({
|
|
|
63606
63623
|
))
|
|
63607
63624
|
] }) });
|
|
63608
63625
|
case "area":
|
|
63609
|
-
return /* @__PURE__ */ jsx(ResponsiveContainer, { width: "100%", height, children: /* @__PURE__ */ jsxs(AreaChart, { ...chartProps, children: [
|
|
63610
|
-
/* @__PURE__ */ jsx(CartesianGrid, { strokeDasharray: "3 3", className: "opacity-30" }),
|
|
63611
|
-
/* @__PURE__ */ jsx(XAxis, { dataKey: "name" }),
|
|
63612
|
-
/* @__PURE__ */ jsx(YAxis, {}),
|
|
63613
|
-
/* @__PURE__ */ jsx(Tooltip, { content: /* @__PURE__ */ jsx(CustomTooltip2, {}) }),
|
|
63614
|
-
interactive && /* @__PURE__ */ jsx(Legend, {}),
|
|
63626
|
+
return /* @__PURE__ */ jsx(ResponsiveContainer, { width: "100%", height: chartHeight, children: /* @__PURE__ */ jsxs(AreaChart, { ...chartProps, children: [
|
|
63627
|
+
!compact && /* @__PURE__ */ jsx(CartesianGrid, { strokeDasharray: "3 3", className: "opacity-30" }),
|
|
63628
|
+
/* @__PURE__ */ jsx(XAxis, { dataKey: "name", tick: compact ? { fontSize: 10 } : void 0, hide: compact }),
|
|
63629
|
+
/* @__PURE__ */ jsx(YAxis, { tick: compact ? { fontSize: 10 } : void 0, hide: compact }),
|
|
63630
|
+
!compact && /* @__PURE__ */ jsx(Tooltip, { content: /* @__PURE__ */ jsx(CustomTooltip2, {}) }),
|
|
63631
|
+
interactive && !compact && /* @__PURE__ */ jsx(Legend, {}),
|
|
63615
63632
|
Object.keys(data.data[0]).filter((key) => key !== "name").map((key, index2) => /* @__PURE__ */ jsx(
|
|
63616
63633
|
Area,
|
|
63617
63634
|
{
|
|
@@ -63627,7 +63644,7 @@ function ChartWidget({
|
|
|
63627
63644
|
] }) });
|
|
63628
63645
|
case "pie":
|
|
63629
63646
|
case "donut":
|
|
63630
|
-
return /* @__PURE__ */ jsx(ResponsiveContainer, { width: "100%", height, children: /* @__PURE__ */ jsxs(PieChart, { children: [
|
|
63647
|
+
return /* @__PURE__ */ jsx(ResponsiveContainer, { width: "100%", height: chartHeight, children: /* @__PURE__ */ jsxs(PieChart, { children: [
|
|
63631
63648
|
/* @__PURE__ */ jsx(
|
|
63632
63649
|
Pie,
|
|
63633
63650
|
{
|
|
@@ -63635,20 +63652,20 @@ function ChartWidget({
|
|
|
63635
63652
|
cx: "50%",
|
|
63636
63653
|
cy: "50%",
|
|
63637
63654
|
labelLine: false,
|
|
63638
|
-
label: interactive,
|
|
63639
|
-
outerRadius: data.type === "donut" ? 80 : 100,
|
|
63640
|
-
innerRadius: data.type === "donut" ? 50 : 0,
|
|
63655
|
+
label: interactive && !compact,
|
|
63656
|
+
outerRadius: compact ? 40 : data.type === "donut" ? 80 : 100,
|
|
63657
|
+
innerRadius: data.type === "donut" ? compact ? 25 : 50 : 0,
|
|
63641
63658
|
fill: "#8884d8",
|
|
63642
63659
|
dataKey: "value",
|
|
63643
63660
|
isAnimationActive: false,
|
|
63644
63661
|
children: data.data.map((entry, index2) => /* @__PURE__ */ jsx(Cell, { fill: colors[index2 % colors.length] }, `cell-${index2}`))
|
|
63645
63662
|
}
|
|
63646
63663
|
),
|
|
63647
|
-
/* @__PURE__ */ jsx(Tooltip, { content: /* @__PURE__ */ jsx(CustomTooltip2, {}) }),
|
|
63648
|
-
interactive && /* @__PURE__ */ jsx(Legend, {})
|
|
63664
|
+
!compact && /* @__PURE__ */ jsx(Tooltip, { content: /* @__PURE__ */ jsx(CustomTooltip2, {}) }),
|
|
63665
|
+
interactive && !compact && /* @__PURE__ */ jsx(Legend, {})
|
|
63649
63666
|
] }) });
|
|
63650
63667
|
case "radar":
|
|
63651
|
-
return /* @__PURE__ */ jsx(ResponsiveContainer, { width: "100%", height, children: /* @__PURE__ */ jsxs(RadarChart, { data: data.data, children: [
|
|
63668
|
+
return /* @__PURE__ */ jsx(ResponsiveContainer, { width: "100%", height: chartHeight, children: /* @__PURE__ */ jsxs(RadarChart, { data: data.data, children: [
|
|
63652
63669
|
/* @__PURE__ */ jsx(PolarGrid, {}),
|
|
63653
63670
|
/* @__PURE__ */ jsx(PolarAngleAxis, { dataKey: "subject" }),
|
|
63654
63671
|
/* @__PURE__ */ jsx(PolarRadiusAxis, {}),
|
|
@@ -63664,8 +63681,8 @@ function ChartWidget({
|
|
|
63664
63681
|
},
|
|
63665
63682
|
key
|
|
63666
63683
|
)),
|
|
63667
|
-
/* @__PURE__ */ jsx(Tooltip, { content: /* @__PURE__ */ jsx(CustomTooltip2, {}) }),
|
|
63668
|
-
interactive && /* @__PURE__ */ jsx(Legend, {})
|
|
63684
|
+
!compact && /* @__PURE__ */ jsx(Tooltip, { content: /* @__PURE__ */ jsx(CustomTooltip2, {}) }),
|
|
63685
|
+
interactive && !compact && /* @__PURE__ */ jsx(Legend, {})
|
|
63669
63686
|
] }) });
|
|
63670
63687
|
default:
|
|
63671
63688
|
return null;
|
|
@@ -63692,12 +63709,18 @@ function ChartWidget({
|
|
|
63692
63709
|
isFullscreen && "h-full",
|
|
63693
63710
|
className
|
|
63694
63711
|
), children: [
|
|
63695
|
-
/* @__PURE__ */ jsxs(MoonUICardHeaderPro, { className:
|
|
63712
|
+
/* @__PURE__ */ jsxs(MoonUICardHeaderPro, { className: cn(
|
|
63713
|
+
"flex flex-row items-center justify-between space-y-0",
|
|
63714
|
+
compact ? "pb-1 pt-2 px-3" : interactive ? "pb-2" : "pb-1 pt-3"
|
|
63715
|
+
), children: [
|
|
63696
63716
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
63697
|
-
/* @__PURE__ */ jsx(MoonUICardTitlePro, { className:
|
|
63698
|
-
|
|
63717
|
+
/* @__PURE__ */ jsx(MoonUICardTitlePro, { className: cn(
|
|
63718
|
+
"font-semibold",
|
|
63719
|
+
compact ? "text-xs" : interactive ? "text-base" : "text-sm"
|
|
63720
|
+
), children: title }),
|
|
63721
|
+
description && interactive && !compact && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground mt-1", children: description })
|
|
63699
63722
|
] }),
|
|
63700
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
63723
|
+
!compact && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
63701
63724
|
refreshing && /* @__PURE__ */ jsx(
|
|
63702
63725
|
motion.div,
|
|
63703
63726
|
{
|
|
@@ -63762,14 +63785,17 @@ function ChartWidget({
|
|
|
63762
63785
|
] })
|
|
63763
63786
|
] })
|
|
63764
63787
|
] }),
|
|
63765
|
-
/* @__PURE__ */ jsx(MoonUICardContentPro, { className:
|
|
63788
|
+
/* @__PURE__ */ jsx(MoonUICardContentPro, { className: cn(
|
|
63789
|
+
"p-0",
|
|
63790
|
+
compact ? "px-2 pb-2" : interactive ? "px-4 pb-4" : "px-2 pb-2"
|
|
63791
|
+
), children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: loading ? /* @__PURE__ */ jsx(
|
|
63766
63792
|
motion.div,
|
|
63767
63793
|
{
|
|
63768
63794
|
initial: { opacity: 0 },
|
|
63769
63795
|
animate: { opacity: 1 },
|
|
63770
63796
|
exit: { opacity: 0 },
|
|
63771
63797
|
className: "flex items-center justify-center",
|
|
63772
|
-
style: { height },
|
|
63798
|
+
style: { height: chartHeight },
|
|
63773
63799
|
children: /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
63774
63800
|
/* @__PURE__ */ jsx("div", { className: "animate-pulse bg-muted h-4 w-32 rounded" }),
|
|
63775
63801
|
/* @__PURE__ */ jsx("div", { className: "animate-pulse bg-muted h-4 w-24 rounded" }),
|
|
@@ -63803,7 +63829,9 @@ function ActivityFeed({
|
|
|
63803
63829
|
showFilters = true,
|
|
63804
63830
|
showNotifications = true,
|
|
63805
63831
|
glassmorphism = false,
|
|
63806
|
-
realtime = false
|
|
63832
|
+
realtime = false,
|
|
63833
|
+
maxItems,
|
|
63834
|
+
compact = false
|
|
63807
63835
|
}) {
|
|
63808
63836
|
const [filter, setFilter] = t__default.useState("all");
|
|
63809
63837
|
const [notificationsEnabled, setNotificationsEnabled] = t__default.useState(true);
|
|
@@ -63858,9 +63886,12 @@ function ActivityFeed({
|
|
|
63858
63886
|
return "text-red-500 bg-red-100 dark:bg-red-900/20";
|
|
63859
63887
|
}
|
|
63860
63888
|
};
|
|
63861
|
-
|
|
63889
|
+
let filteredItems = [...newItems, ...items].filter(
|
|
63862
63890
|
(item) => filter === "all" || item.type === filter
|
|
63863
63891
|
);
|
|
63892
|
+
if (maxItems) {
|
|
63893
|
+
filteredItems = filteredItems.slice(0, maxItems);
|
|
63894
|
+
}
|
|
63864
63895
|
const renderActivityItem = (item, isNew = false) => /* @__PURE__ */ jsxs(
|
|
63865
63896
|
motion.div,
|
|
63866
63897
|
{
|
|
@@ -63868,40 +63899,60 @@ function ActivityFeed({
|
|
|
63868
63899
|
initial: { opacity: 0, x: -20 },
|
|
63869
63900
|
animate: { opacity: 1, x: 0 },
|
|
63870
63901
|
exit: { opacity: 0, x: 20 },
|
|
63871
|
-
whileHover: { x: 4 },
|
|
63902
|
+
whileHover: { x: compact ? 2 : 4 },
|
|
63872
63903
|
transition: { duration: 0.2 },
|
|
63873
63904
|
className: cn(
|
|
63874
|
-
"group relative flex gap-3
|
|
63905
|
+
"group relative flex gap-3 rounded-lg cursor-pointer transition-colors",
|
|
63906
|
+
compact ? "p-2" : "p-3",
|
|
63875
63907
|
"hover:bg-muted/50",
|
|
63876
63908
|
isNew && "bg-primary/5 border-l-2 border-primary"
|
|
63877
63909
|
),
|
|
63878
63910
|
onClick: () => onItemClick?.(item),
|
|
63879
63911
|
children: [
|
|
63880
|
-
/* @__PURE__ */ jsx("div", { className: "absolute left-7 top-12 bottom-0 w-px bg-border" }),
|
|
63881
|
-
/* @__PURE__ */ jsx("div", { className: "relative z-10 flex-shrink-0", children: item.user?.avatar ? /* @__PURE__ */ jsxs(MoonUIAvatarPro, { className: "h-8 w-8", children: [
|
|
63912
|
+
!compact && /* @__PURE__ */ jsx("div", { className: "absolute left-7 top-12 bottom-0 w-px bg-border" }),
|
|
63913
|
+
/* @__PURE__ */ jsx("div", { className: "relative z-10 flex-shrink-0", children: item.user?.avatar ? /* @__PURE__ */ jsxs(MoonUIAvatarPro, { className: compact ? "h-6 w-6" : "h-8 w-8", children: [
|
|
63882
63914
|
/* @__PURE__ */ jsx(MoonUIAvatarImagePro, { src: item.user.avatar }),
|
|
63883
63915
|
/* @__PURE__ */ jsx(MoonUIAvatarFallbackPro, { children: item.user.name[0] })
|
|
63884
63916
|
] }) : /* @__PURE__ */ jsx("div", { className: cn(
|
|
63885
|
-
"h-
|
|
63917
|
+
compact ? "h-6 w-6" : "h-8 w-8",
|
|
63918
|
+
"rounded-full flex items-center justify-center",
|
|
63886
63919
|
getTypeColor(item.type)
|
|
63887
63920
|
), children: item.icon || getTypeIcon(item.type) }) }),
|
|
63888
63921
|
/* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
63889
|
-
|
|
63890
|
-
|
|
63891
|
-
|
|
63892
|
-
|
|
63893
|
-
|
|
63894
|
-
" "
|
|
63922
|
+
compact ? (
|
|
63923
|
+
// Compact layout - sadece başlık ve kısa açıklama
|
|
63924
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-0.5", children: [
|
|
63925
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-2", children: [
|
|
63926
|
+
/* @__PURE__ */ jsxs("p", { className: "text-xs font-medium leading-tight", children: [
|
|
63927
|
+
item.user?.name && /* @__PURE__ */ jsxs("span", { className: "text-foreground", children: [
|
|
63928
|
+
item.user.name,
|
|
63929
|
+
" "
|
|
63930
|
+
] }),
|
|
63931
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: item.title })
|
|
63895
63932
|
] }),
|
|
63896
|
-
/* @__PURE__ */ jsx("
|
|
63933
|
+
/* @__PURE__ */ jsx("div", { className: "text-[10px] text-muted-foreground", children: isMounted ? formatDistanceToNow(item.timestamp, { addSuffix: false }).replace("about ", "").replace("over ", "") : "" })
|
|
63897
63934
|
] }),
|
|
63898
|
-
item.description && /* @__PURE__ */ jsx("p", { className: "text-
|
|
63899
|
-
] }),
|
|
63900
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 text-xs text-muted-foreground whitespace-nowrap", children: [
|
|
63901
|
-
/* @__PURE__ */ jsx(Clock, { className: "h-3 w-3" }),
|
|
63902
|
-
isMounted ? formatDistanceToNow(item.timestamp, { addSuffix: true }) : "Loading..."
|
|
63935
|
+
item.description && /* @__PURE__ */ jsx("p", { className: "text-[10px] text-muted-foreground line-clamp-1", children: item.description })
|
|
63903
63936
|
] })
|
|
63904
|
-
|
|
63937
|
+
) : (
|
|
63938
|
+
// Normal layout
|
|
63939
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-2", children: [
|
|
63940
|
+
/* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
63941
|
+
/* @__PURE__ */ jsxs("p", { className: "text-sm font-medium leading-tight", children: [
|
|
63942
|
+
item.user?.name && /* @__PURE__ */ jsxs("span", { className: "text-foreground", children: [
|
|
63943
|
+
item.user.name,
|
|
63944
|
+
" "
|
|
63945
|
+
] }),
|
|
63946
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: item.title })
|
|
63947
|
+
] }),
|
|
63948
|
+
item.description && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground mt-0.5 line-clamp-2", children: item.description })
|
|
63949
|
+
] }),
|
|
63950
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 text-xs text-muted-foreground whitespace-nowrap", children: [
|
|
63951
|
+
/* @__PURE__ */ jsx(Clock, { className: "h-3 w-3" }),
|
|
63952
|
+
isMounted ? formatDistanceToNow(item.timestamp, { addSuffix: true }) : "Loading..."
|
|
63953
|
+
] })
|
|
63954
|
+
] })
|
|
63955
|
+
),
|
|
63905
63956
|
isNew && /* @__PURE__ */ jsx(
|
|
63906
63957
|
motion.div,
|
|
63907
63958
|
{
|
|
@@ -63912,7 +63963,7 @@ function ActivityFeed({
|
|
|
63912
63963
|
}
|
|
63913
63964
|
)
|
|
63914
63965
|
] }),
|
|
63915
|
-
/* @__PURE__ */ jsx("div", { className: "opacity-0 group-hover:opacity-100 transition-opacity", children: /* @__PURE__ */ jsx(
|
|
63966
|
+
!compact && /* @__PURE__ */ jsx("div", { className: "opacity-0 group-hover:opacity-100 transition-opacity", children: /* @__PURE__ */ jsx(
|
|
63916
63967
|
MoonUIButtonPro,
|
|
63917
63968
|
{
|
|
63918
63969
|
variant: "ghost",
|
|
@@ -63934,16 +63985,25 @@ function ActivityFeed({
|
|
|
63934
63985
|
glassmorphism && "bg-background/60 backdrop-blur-md border-white/10",
|
|
63935
63986
|
className
|
|
63936
63987
|
), children: [
|
|
63937
|
-
/* @__PURE__ */ jsxs(MoonUICardHeaderPro, { className:
|
|
63988
|
+
/* @__PURE__ */ jsxs(MoonUICardHeaderPro, { className: cn(
|
|
63989
|
+
"flex flex-row items-center justify-between space-y-0",
|
|
63990
|
+
compact ? "pb-2 pt-3" : "pb-3"
|
|
63991
|
+
), children: [
|
|
63938
63992
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
63939
|
-
/* @__PURE__ */ jsx(Activity, { className:
|
|
63940
|
-
|
|
63941
|
-
|
|
63993
|
+
/* @__PURE__ */ jsx(Activity, { className: cn(
|
|
63994
|
+
"text-muted-foreground",
|
|
63995
|
+
compact ? "h-3.5 w-3.5" : "h-4 w-4"
|
|
63996
|
+
) }),
|
|
63997
|
+
/* @__PURE__ */ jsx(MoonUICardTitlePro, { className: cn(
|
|
63998
|
+
"font-semibold",
|
|
63999
|
+
compact ? "text-sm" : "text-base"
|
|
64000
|
+
), children: title }),
|
|
64001
|
+
realtime && !compact && /* @__PURE__ */ jsxs(MoonUIBadgePro, { variant: "secondary", className: "text-xs", children: [
|
|
63942
64002
|
/* @__PURE__ */ jsx("span", { className: "mr-1 h-1.5 w-1.5 rounded-full bg-green-500 animate-pulse" }),
|
|
63943
64003
|
"Live"
|
|
63944
64004
|
] })
|
|
63945
64005
|
] }),
|
|
63946
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
|
|
64006
|
+
!compact && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
|
|
63947
64007
|
showFilters && /* @__PURE__ */ jsxs(MoonUIDropdownMenuPro, { children: [
|
|
63948
64008
|
/* @__PURE__ */ jsx(MoonUIDropdownMenuTriggerPro, { asChild: true, children: /* @__PURE__ */ jsxs(MoonUIButtonPro, { variant: "ghost", size: "sm", className: "h-8 px-2", children: [
|
|
63949
64009
|
/* @__PURE__ */ jsx(Filter, { className: "h-4 w-4 mr-1" }),
|
|
@@ -63995,7 +64055,7 @@ function ActivityFeed({
|
|
|
63995
64055
|
)
|
|
63996
64056
|
] })
|
|
63997
64057
|
] }),
|
|
63998
|
-
/* @__PURE__ */ jsx(MoonUICardContentPro, { className: "p-0", children: /* @__PURE__ */ jsx(ScrollArea, { className: "px-4 pb-4", style: { height }, children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "popLayout", children: loading ? /* @__PURE__ */ jsx(
|
|
64058
|
+
/* @__PURE__ */ jsx(MoonUICardContentPro, { className: "p-0", children: /* @__PURE__ */ jsx(ScrollArea, { className: compact ? "px-3 pb-3" : "px-4 pb-4", style: { height: compact ? Math.min(height, 200) : height }, children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "popLayout", children: loading ? /* @__PURE__ */ jsx(
|
|
63999
64059
|
motion.div,
|
|
64000
64060
|
{
|
|
64001
64061
|
initial: { opacity: 0 },
|
|
@@ -64032,7 +64092,8 @@ function ProgressWidget({
|
|
|
64032
64092
|
data,
|
|
64033
64093
|
title = "Progress",
|
|
64034
64094
|
className,
|
|
64035
|
-
glassmorphism = false
|
|
64095
|
+
glassmorphism = false,
|
|
64096
|
+
compact = false
|
|
64036
64097
|
}) {
|
|
64037
64098
|
const items = Array.isArray(data) ? data : [data];
|
|
64038
64099
|
const [isMounted, setIsMounted] = t__default.useState(false);
|
|
@@ -64127,7 +64188,8 @@ function ComparisonWidget({
|
|
|
64127
64188
|
data,
|
|
64128
64189
|
title = "Comparison",
|
|
64129
64190
|
className,
|
|
64130
|
-
glassmorphism = false
|
|
64191
|
+
glassmorphism = false,
|
|
64192
|
+
compact = false
|
|
64131
64193
|
}) {
|
|
64132
64194
|
const [isMounted, setIsMounted] = t__default.useState(false);
|
|
64133
64195
|
t__default.useEffect(() => {
|
|
@@ -64263,8 +64325,8 @@ function DashboardGrid({
|
|
|
64263
64325
|
breakpoints = { lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 },
|
|
64264
64326
|
cols = { lg: 12, md: 8, sm: 4, xs: 2, xxs: 1 },
|
|
64265
64327
|
rowHeight = 80,
|
|
64266
|
-
margin = [16,
|
|
64267
|
-
containerPadding = [
|
|
64328
|
+
margin = [16, 16],
|
|
64329
|
+
containerPadding = [16, 16]
|
|
64268
64330
|
}) {
|
|
64269
64331
|
const [layouts, setLayouts] = t__default.useState({});
|
|
64270
64332
|
const [currentBreakpoint, setCurrentBreakpoint] = t__default.useState("lg");
|
|
@@ -64895,6 +64957,656 @@ function TimeRangePicker({
|
|
|
64895
64957
|
)
|
|
64896
64958
|
] });
|
|
64897
64959
|
}
|
|
64960
|
+
function MapWidget({
|
|
64961
|
+
id,
|
|
64962
|
+
title,
|
|
64963
|
+
description,
|
|
64964
|
+
locations,
|
|
64965
|
+
className,
|
|
64966
|
+
height = 300,
|
|
64967
|
+
glassmorphism = false,
|
|
64968
|
+
compact = false,
|
|
64969
|
+
interactive = true,
|
|
64970
|
+
onLocationClick
|
|
64971
|
+
}) {
|
|
64972
|
+
const [selectedLocation, setSelectedLocation] = t__default.useState(null);
|
|
64973
|
+
const [zoom, setZoom] = t__default.useState(1);
|
|
64974
|
+
const mapHeight = compact ? 150 : height;
|
|
64975
|
+
const getLocationColor = (type) => {
|
|
64976
|
+
switch (type) {
|
|
64977
|
+
case "primary":
|
|
64978
|
+
return "bg-primary text-primary-foreground";
|
|
64979
|
+
case "secondary":
|
|
64980
|
+
return "bg-secondary text-secondary-foreground";
|
|
64981
|
+
case "warning":
|
|
64982
|
+
return "bg-yellow-500 text-white";
|
|
64983
|
+
case "danger":
|
|
64984
|
+
return "bg-destructive text-destructive-foreground";
|
|
64985
|
+
default:
|
|
64986
|
+
return "bg-primary text-primary-foreground";
|
|
64987
|
+
}
|
|
64988
|
+
};
|
|
64989
|
+
return /* @__PURE__ */ jsxs(MoonUICardPro, { className: cn(
|
|
64990
|
+
"relative overflow-hidden",
|
|
64991
|
+
glassmorphism && "bg-background/60 backdrop-blur-md border-white/10",
|
|
64992
|
+
className
|
|
64993
|
+
), children: [
|
|
64994
|
+
/* @__PURE__ */ jsxs(MoonUICardHeaderPro, { className: cn(
|
|
64995
|
+
"flex flex-row items-center justify-between space-y-0",
|
|
64996
|
+
compact ? "pb-1 pt-2 px-3" : "pb-3"
|
|
64997
|
+
), children: [
|
|
64998
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
64999
|
+
/* @__PURE__ */ jsx(Globe, { className: cn(
|
|
65000
|
+
"text-muted-foreground",
|
|
65001
|
+
compact ? "h-3.5 w-3.5" : "h-4 w-4"
|
|
65002
|
+
) }),
|
|
65003
|
+
/* @__PURE__ */ jsx(MoonUICardTitlePro, { className: cn(
|
|
65004
|
+
"font-semibold",
|
|
65005
|
+
compact ? "text-xs" : "text-base"
|
|
65006
|
+
), children: title })
|
|
65007
|
+
] }),
|
|
65008
|
+
!compact && interactive && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
|
|
65009
|
+
/* @__PURE__ */ jsx(
|
|
65010
|
+
MoonUIButtonPro,
|
|
65011
|
+
{
|
|
65012
|
+
variant: "ghost",
|
|
65013
|
+
size: "sm",
|
|
65014
|
+
className: "h-7 w-7 p-0",
|
|
65015
|
+
onClick: () => setZoom(Math.min(zoom + 0.2, 2)),
|
|
65016
|
+
children: /* @__PURE__ */ jsx(ZoomIn, { className: "h-3.5 w-3.5" })
|
|
65017
|
+
}
|
|
65018
|
+
),
|
|
65019
|
+
/* @__PURE__ */ jsx(
|
|
65020
|
+
MoonUIButtonPro,
|
|
65021
|
+
{
|
|
65022
|
+
variant: "ghost",
|
|
65023
|
+
size: "sm",
|
|
65024
|
+
className: "h-7 w-7 p-0",
|
|
65025
|
+
onClick: () => setZoom(Math.max(zoom - 0.2, 0.5)),
|
|
65026
|
+
children: /* @__PURE__ */ jsx(ZoomOut, { className: "h-3.5 w-3.5" })
|
|
65027
|
+
}
|
|
65028
|
+
)
|
|
65029
|
+
] })
|
|
65030
|
+
] }),
|
|
65031
|
+
/* @__PURE__ */ jsxs(MoonUICardContentPro, { className: cn(
|
|
65032
|
+
"p-0",
|
|
65033
|
+
compact ? "px-2 pb-2" : "px-4 pb-4"
|
|
65034
|
+
), children: [
|
|
65035
|
+
/* @__PURE__ */ jsxs(
|
|
65036
|
+
"div",
|
|
65037
|
+
{
|
|
65038
|
+
className: "relative bg-gradient-to-br from-blue-50 to-blue-100 dark:from-blue-950 dark:to-blue-900 rounded-lg overflow-hidden",
|
|
65039
|
+
style: { height: mapHeight },
|
|
65040
|
+
children: [
|
|
65041
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 opacity-20", children: /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 100 50", className: "w-full h-full", children: [
|
|
65042
|
+
/* @__PURE__ */ jsx(
|
|
65043
|
+
"path",
|
|
65044
|
+
{
|
|
65045
|
+
d: "M10,25 Q20,20 30,25 T50,25 Q60,20 70,25 T90,25",
|
|
65046
|
+
stroke: "currentColor",
|
|
65047
|
+
strokeWidth: "0.5",
|
|
65048
|
+
fill: "none",
|
|
65049
|
+
className: "text-primary"
|
|
65050
|
+
}
|
|
65051
|
+
),
|
|
65052
|
+
/* @__PURE__ */ jsx("circle", { cx: "20", cy: "20", r: "8", fill: "currentColor", opacity: "0.1", className: "text-primary" }),
|
|
65053
|
+
/* @__PURE__ */ jsx("circle", { cx: "70", cy: "30", r: "10", fill: "currentColor", opacity: "0.1", className: "text-primary" }),
|
|
65054
|
+
/* @__PURE__ */ jsx("circle", { cx: "45", cy: "25", r: "6", fill: "currentColor", opacity: "0.1", className: "text-primary" })
|
|
65055
|
+
] }) }),
|
|
65056
|
+
/* @__PURE__ */ jsx(
|
|
65057
|
+
"div",
|
|
65058
|
+
{
|
|
65059
|
+
className: "relative w-full h-full",
|
|
65060
|
+
style: { transform: `scale(${zoom})` },
|
|
65061
|
+
children: locations.map((location, index2) => {
|
|
65062
|
+
const x = (location.lng + 180) / 360 * 100;
|
|
65063
|
+
const y = (90 - location.lat) / 180 * 100;
|
|
65064
|
+
return /* @__PURE__ */ jsxs(
|
|
65065
|
+
motion.div,
|
|
65066
|
+
{
|
|
65067
|
+
className: "absolute",
|
|
65068
|
+
style: { left: `${x}%`, top: `${y}%` },
|
|
65069
|
+
initial: { scale: 0 },
|
|
65070
|
+
animate: { scale: 1 },
|
|
65071
|
+
transition: { delay: index2 * 0.05 },
|
|
65072
|
+
children: [
|
|
65073
|
+
/* @__PURE__ */ jsxs(
|
|
65074
|
+
motion.button,
|
|
65075
|
+
{
|
|
65076
|
+
whileHover: { scale: 1.2 },
|
|
65077
|
+
whileTap: { scale: 0.9 },
|
|
65078
|
+
className: cn(
|
|
65079
|
+
"relative flex items-center justify-center rounded-full shadow-lg transition-all",
|
|
65080
|
+
compact ? "h-4 w-4" : "h-8 w-8",
|
|
65081
|
+
getLocationColor(location.type),
|
|
65082
|
+
selectedLocation?.id === location.id && "ring-2 ring-offset-2"
|
|
65083
|
+
),
|
|
65084
|
+
onClick: () => {
|
|
65085
|
+
setSelectedLocation(location);
|
|
65086
|
+
onLocationClick?.(location);
|
|
65087
|
+
},
|
|
65088
|
+
children: [
|
|
65089
|
+
/* @__PURE__ */ jsx(MapPin, { className: cn(
|
|
65090
|
+
"text-current",
|
|
65091
|
+
compact ? "h-2.5 w-2.5" : "h-4 w-4"
|
|
65092
|
+
) }),
|
|
65093
|
+
location.value && !compact && /* @__PURE__ */ jsx("span", { className: "absolute -top-2 -right-2 bg-background text-foreground text-xs font-bold px-1 rounded border shadow", children: location.value })
|
|
65094
|
+
]
|
|
65095
|
+
}
|
|
65096
|
+
),
|
|
65097
|
+
!compact && /* @__PURE__ */ jsx("div", { className: "absolute top-full left-1/2 -translate-x-1/2 mt-1 pointer-events-none", children: /* @__PURE__ */ jsx("div", { className: "bg-popover text-popover-foreground px-2 py-1 rounded text-xs whitespace-nowrap shadow-lg opacity-0 hover:opacity-100 transition-opacity", children: location.name }) })
|
|
65098
|
+
]
|
|
65099
|
+
},
|
|
65100
|
+
location.id
|
|
65101
|
+
);
|
|
65102
|
+
})
|
|
65103
|
+
}
|
|
65104
|
+
),
|
|
65105
|
+
selectedLocation && !compact && /* @__PURE__ */ jsx(
|
|
65106
|
+
motion.div,
|
|
65107
|
+
{
|
|
65108
|
+
initial: { opacity: 0, y: 20 },
|
|
65109
|
+
animate: { opacity: 1, y: 0 },
|
|
65110
|
+
className: "absolute bottom-2 left-2 right-2 bg-background/95 backdrop-blur-sm rounded-lg p-3 shadow-lg",
|
|
65111
|
+
children: /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between", children: [
|
|
65112
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
65113
|
+
/* @__PURE__ */ jsx("h4", { className: "font-semibold text-sm", children: selectedLocation.name }),
|
|
65114
|
+
selectedLocation.description && /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground mt-0.5", children: selectedLocation.description }),
|
|
65115
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mt-1 text-xs text-muted-foreground", children: [
|
|
65116
|
+
/* @__PURE__ */ jsx(Navigation, { className: "h-3 w-3" }),
|
|
65117
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
65118
|
+
selectedLocation.lat.toFixed(2),
|
|
65119
|
+
", ",
|
|
65120
|
+
selectedLocation.lng.toFixed(2)
|
|
65121
|
+
] })
|
|
65122
|
+
] })
|
|
65123
|
+
] }),
|
|
65124
|
+
selectedLocation.value && /* @__PURE__ */ jsx("div", { className: "text-right", children: /* @__PURE__ */ jsx("p", { className: "text-lg font-bold", children: selectedLocation.value }) })
|
|
65125
|
+
] })
|
|
65126
|
+
}
|
|
65127
|
+
)
|
|
65128
|
+
]
|
|
65129
|
+
}
|
|
65130
|
+
),
|
|
65131
|
+
compact && locations.length > 0 && /* @__PURE__ */ jsx("div", { className: "mt-2 space-y-1", children: locations.slice(0, 3).map((location) => /* @__PURE__ */ jsxs(
|
|
65132
|
+
"div",
|
|
65133
|
+
{
|
|
65134
|
+
className: "flex items-center justify-between text-xs cursor-pointer hover:bg-muted/50 rounded px-1 py-0.5",
|
|
65135
|
+
onClick: () => {
|
|
65136
|
+
setSelectedLocation(location);
|
|
65137
|
+
onLocationClick?.(location);
|
|
65138
|
+
},
|
|
65139
|
+
children: [
|
|
65140
|
+
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1", children: [
|
|
65141
|
+
/* @__PURE__ */ jsx(MapPin, { className: "h-2.5 w-2.5" }),
|
|
65142
|
+
location.name
|
|
65143
|
+
] }),
|
|
65144
|
+
location.value && /* @__PURE__ */ jsx("span", { className: "font-semibold", children: location.value })
|
|
65145
|
+
]
|
|
65146
|
+
},
|
|
65147
|
+
location.id
|
|
65148
|
+
)) })
|
|
65149
|
+
] })
|
|
65150
|
+
] });
|
|
65151
|
+
}
|
|
65152
|
+
function TableWidget({
|
|
65153
|
+
id,
|
|
65154
|
+
title,
|
|
65155
|
+
description,
|
|
65156
|
+
columns,
|
|
65157
|
+
rows,
|
|
65158
|
+
className,
|
|
65159
|
+
height = 300,
|
|
65160
|
+
glassmorphism = false,
|
|
65161
|
+
compact = false,
|
|
65162
|
+
interactive = true,
|
|
65163
|
+
onRowClick,
|
|
65164
|
+
sortable = true,
|
|
65165
|
+
showHeader = true
|
|
65166
|
+
}) {
|
|
65167
|
+
const [sortColumn, setSortColumn] = t__default.useState(null);
|
|
65168
|
+
const [sortDirection, setSortDirection] = t__default.useState("asc");
|
|
65169
|
+
const tableHeight = compact ? 150 : height;
|
|
65170
|
+
const handleSort = (columnKey) => {
|
|
65171
|
+
if (!sortable)
|
|
65172
|
+
return;
|
|
65173
|
+
if (sortColumn === columnKey) {
|
|
65174
|
+
setSortDirection(sortDirection === "asc" ? "desc" : "asc");
|
|
65175
|
+
} else {
|
|
65176
|
+
setSortColumn(columnKey);
|
|
65177
|
+
setSortDirection("asc");
|
|
65178
|
+
}
|
|
65179
|
+
};
|
|
65180
|
+
const sortedRows = t__default.useMemo(() => {
|
|
65181
|
+
if (!sortColumn)
|
|
65182
|
+
return rows;
|
|
65183
|
+
return [...rows].sort((a, b) => {
|
|
65184
|
+
const aValue = a[sortColumn];
|
|
65185
|
+
const bValue = b[sortColumn];
|
|
65186
|
+
if (aValue === bValue)
|
|
65187
|
+
return 0;
|
|
65188
|
+
const comparison = aValue < bValue ? -1 : 1;
|
|
65189
|
+
return sortDirection === "asc" ? comparison : -comparison;
|
|
65190
|
+
});
|
|
65191
|
+
}, [rows, sortColumn, sortDirection]);
|
|
65192
|
+
const columnWidth = compact ? "min-w-[60px]" : "min-w-[100px]";
|
|
65193
|
+
return /* @__PURE__ */ jsxs(MoonUICardPro, { className: cn(
|
|
65194
|
+
"relative overflow-hidden",
|
|
65195
|
+
glassmorphism && "bg-background/60 backdrop-blur-md border-white/10",
|
|
65196
|
+
className
|
|
65197
|
+
), children: [
|
|
65198
|
+
showHeader && /* @__PURE__ */ jsxs(MoonUICardHeaderPro, { className: cn(
|
|
65199
|
+
"flex flex-row items-center justify-between space-y-0",
|
|
65200
|
+
compact ? "pb-1 pt-2 px-3" : "pb-3"
|
|
65201
|
+
), children: [
|
|
65202
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
65203
|
+
/* @__PURE__ */ jsx(Table$1, { className: cn(
|
|
65204
|
+
"text-muted-foreground",
|
|
65205
|
+
compact ? "h-3.5 w-3.5" : "h-4 w-4"
|
|
65206
|
+
) }),
|
|
65207
|
+
/* @__PURE__ */ jsx(MoonUICardTitlePro, { className: cn(
|
|
65208
|
+
"font-semibold",
|
|
65209
|
+
compact ? "text-xs" : "text-base"
|
|
65210
|
+
), children: title })
|
|
65211
|
+
] }),
|
|
65212
|
+
description && !compact && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: description })
|
|
65213
|
+
] }),
|
|
65214
|
+
/* @__PURE__ */ jsxs(MoonUICardContentPro, { className: cn(
|
|
65215
|
+
"p-0",
|
|
65216
|
+
compact ? "px-1" : "px-2"
|
|
65217
|
+
), children: [
|
|
65218
|
+
/* @__PURE__ */ jsx(ScrollArea, { className: "w-full", style: { height: tableHeight }, children: /* @__PURE__ */ jsx("div", { className: "w-full", children: /* @__PURE__ */ jsxs("table", { className: "w-full", children: [
|
|
65219
|
+
/* @__PURE__ */ jsx("thead", { className: cn(
|
|
65220
|
+
"sticky top-0 z-10 bg-muted/50 backdrop-blur-sm",
|
|
65221
|
+
compact && "text-[10px]"
|
|
65222
|
+
), children: /* @__PURE__ */ jsxs("tr", { className: "border-b", children: [
|
|
65223
|
+
columns.map((column) => /* @__PURE__ */ jsx(
|
|
65224
|
+
"th",
|
|
65225
|
+
{
|
|
65226
|
+
className: cn(
|
|
65227
|
+
"font-medium text-left",
|
|
65228
|
+
compact ? "px-1 py-1" : "px-3 py-2",
|
|
65229
|
+
column.align === "center" && "text-center",
|
|
65230
|
+
column.align === "right" && "text-right",
|
|
65231
|
+
columnWidth,
|
|
65232
|
+
column.width
|
|
65233
|
+
),
|
|
65234
|
+
children: column.sortable !== false && sortable ? /* @__PURE__ */ jsxs(
|
|
65235
|
+
MoonUIButtonPro,
|
|
65236
|
+
{
|
|
65237
|
+
variant: "ghost",
|
|
65238
|
+
size: "sm",
|
|
65239
|
+
className: cn(
|
|
65240
|
+
"h-auto p-0 font-medium hover:bg-transparent",
|
|
65241
|
+
compact ? "text-[10px]" : "text-xs"
|
|
65242
|
+
),
|
|
65243
|
+
onClick: () => handleSort(column.key),
|
|
65244
|
+
children: [
|
|
65245
|
+
/* @__PURE__ */ jsx("span", { children: column.label }),
|
|
65246
|
+
sortColumn === column.key ? sortDirection === "asc" ? /* @__PURE__ */ jsx(ArrowUp, { className: cn(
|
|
65247
|
+
"ml-1",
|
|
65248
|
+
compact ? "h-2.5 w-2.5" : "h-3 w-3"
|
|
65249
|
+
) }) : /* @__PURE__ */ jsx(ArrowDown, { className: cn(
|
|
65250
|
+
"ml-1",
|
|
65251
|
+
compact ? "h-2.5 w-2.5" : "h-3 w-3"
|
|
65252
|
+
) }) : /* @__PURE__ */ jsx(ArrowUpDown, { className: cn(
|
|
65253
|
+
"ml-1 opacity-50",
|
|
65254
|
+
compact ? "h-2.5 w-2.5" : "h-3 w-3"
|
|
65255
|
+
) })
|
|
65256
|
+
]
|
|
65257
|
+
}
|
|
65258
|
+
) : /* @__PURE__ */ jsx("span", { children: column.label })
|
|
65259
|
+
},
|
|
65260
|
+
column.key
|
|
65261
|
+
)),
|
|
65262
|
+
interactive && !compact && /* @__PURE__ */ jsx("th", { className: "w-8" })
|
|
65263
|
+
] }) }),
|
|
65264
|
+
/* @__PURE__ */ jsx("tbody", { children: sortedRows.length === 0 ? /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx(
|
|
65265
|
+
"td",
|
|
65266
|
+
{
|
|
65267
|
+
colSpan: columns.length + (interactive && !compact ? 1 : 0),
|
|
65268
|
+
className: cn(
|
|
65269
|
+
"text-center text-muted-foreground",
|
|
65270
|
+
compact ? "py-4 text-xs" : "py-8"
|
|
65271
|
+
),
|
|
65272
|
+
children: "No data available"
|
|
65273
|
+
}
|
|
65274
|
+
) }) : sortedRows.map((row, rowIndex) => /* @__PURE__ */ jsxs(
|
|
65275
|
+
motion.tr,
|
|
65276
|
+
{
|
|
65277
|
+
initial: { opacity: 0, x: -20 },
|
|
65278
|
+
animate: { opacity: 1, x: 0 },
|
|
65279
|
+
transition: { delay: rowIndex * 0.02 },
|
|
65280
|
+
className: cn(
|
|
65281
|
+
"border-b transition-colors",
|
|
65282
|
+
interactive && "hover:bg-muted/50 cursor-pointer"
|
|
65283
|
+
),
|
|
65284
|
+
onClick: () => interactive && onRowClick?.(row),
|
|
65285
|
+
children: [
|
|
65286
|
+
columns.map((column) => {
|
|
65287
|
+
const value = row[column.key];
|
|
65288
|
+
const formattedValue = column.format ? column.format(value) : value;
|
|
65289
|
+
return /* @__PURE__ */ jsx(
|
|
65290
|
+
"td",
|
|
65291
|
+
{
|
|
65292
|
+
className: cn(
|
|
65293
|
+
compact ? "px-1 py-1 text-[10px]" : "px-3 py-2 text-sm",
|
|
65294
|
+
column.align === "center" && "text-center",
|
|
65295
|
+
column.align === "right" && "text-right"
|
|
65296
|
+
),
|
|
65297
|
+
children: t__default.isValidElement(formattedValue) ? formattedValue : /* @__PURE__ */ jsx("span", { className: cn(
|
|
65298
|
+
compact && "line-clamp-1"
|
|
65299
|
+
), children: formattedValue })
|
|
65300
|
+
},
|
|
65301
|
+
column.key
|
|
65302
|
+
);
|
|
65303
|
+
}),
|
|
65304
|
+
interactive && !compact && /* @__PURE__ */ jsx("td", { className: "px-2", children: /* @__PURE__ */ jsx(
|
|
65305
|
+
MoonUIButtonPro,
|
|
65306
|
+
{
|
|
65307
|
+
variant: "ghost",
|
|
65308
|
+
size: "sm",
|
|
65309
|
+
className: "h-6 w-6 p-0",
|
|
65310
|
+
onClick: (e) => {
|
|
65311
|
+
e.stopPropagation();
|
|
65312
|
+
},
|
|
65313
|
+
children: /* @__PURE__ */ jsx(MoreHorizontal, { className: "h-3 w-3" })
|
|
65314
|
+
}
|
|
65315
|
+
) })
|
|
65316
|
+
]
|
|
65317
|
+
},
|
|
65318
|
+
row.id
|
|
65319
|
+
)) })
|
|
65320
|
+
] }) }) }),
|
|
65321
|
+
!compact && rows.length > 0 && /* @__PURE__ */ jsxs("div", { className: "px-3 py-2 border-t text-xs text-muted-foreground", children: [
|
|
65322
|
+
"Showing ",
|
|
65323
|
+
sortedRows.length,
|
|
65324
|
+
" of ",
|
|
65325
|
+
rows.length,
|
|
65326
|
+
" rows"
|
|
65327
|
+
] })
|
|
65328
|
+
] })
|
|
65329
|
+
] });
|
|
65330
|
+
}
|
|
65331
|
+
function CalendarWidget({
|
|
65332
|
+
id,
|
|
65333
|
+
title,
|
|
65334
|
+
description,
|
|
65335
|
+
events,
|
|
65336
|
+
className,
|
|
65337
|
+
height = 300,
|
|
65338
|
+
glassmorphism = false,
|
|
65339
|
+
compact = false,
|
|
65340
|
+
interactive = true,
|
|
65341
|
+
onDateClick,
|
|
65342
|
+
onEventClick
|
|
65343
|
+
}) {
|
|
65344
|
+
const [currentDate, setCurrentDate] = t__default.useState(/* @__PURE__ */ new Date());
|
|
65345
|
+
const [selectedDate, setSelectedDate] = t__default.useState(null);
|
|
65346
|
+
const calendarHeight = compact ? 180 : height;
|
|
65347
|
+
const firstDayOfMonth = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1);
|
|
65348
|
+
const lastDayOfMonth = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0);
|
|
65349
|
+
const firstDayOfWeek = firstDayOfMonth.getDay();
|
|
65350
|
+
const daysInMonth = lastDayOfMonth.getDate();
|
|
65351
|
+
const goToPreviousMonth = () => {
|
|
65352
|
+
setCurrentDate(new Date(currentDate.getFullYear(), currentDate.getMonth() - 1));
|
|
65353
|
+
};
|
|
65354
|
+
const goToNextMonth = () => {
|
|
65355
|
+
setCurrentDate(new Date(currentDate.getFullYear(), currentDate.getMonth() + 1));
|
|
65356
|
+
};
|
|
65357
|
+
const goToToday = () => {
|
|
65358
|
+
setCurrentDate(/* @__PURE__ */ new Date());
|
|
65359
|
+
setSelectedDate(/* @__PURE__ */ new Date());
|
|
65360
|
+
};
|
|
65361
|
+
const getEventsForDate = (date) => {
|
|
65362
|
+
return events.filter((event) => {
|
|
65363
|
+
const eventDate = new Date(event.date);
|
|
65364
|
+
return eventDate.getDate() === date.getDate() && eventDate.getMonth() === date.getMonth() && eventDate.getFullYear() === date.getFullYear();
|
|
65365
|
+
});
|
|
65366
|
+
};
|
|
65367
|
+
const getEventColor = (type) => {
|
|
65368
|
+
switch (type) {
|
|
65369
|
+
case "primary":
|
|
65370
|
+
return "bg-primary";
|
|
65371
|
+
case "secondary":
|
|
65372
|
+
return "bg-secondary";
|
|
65373
|
+
case "warning":
|
|
65374
|
+
return "bg-yellow-500";
|
|
65375
|
+
case "danger":
|
|
65376
|
+
return "bg-destructive";
|
|
65377
|
+
case "success":
|
|
65378
|
+
return "bg-green-500";
|
|
65379
|
+
default:
|
|
65380
|
+
return "bg-primary";
|
|
65381
|
+
}
|
|
65382
|
+
};
|
|
65383
|
+
const monthNames = [
|
|
65384
|
+
"January",
|
|
65385
|
+
"February",
|
|
65386
|
+
"March",
|
|
65387
|
+
"April",
|
|
65388
|
+
"May",
|
|
65389
|
+
"June",
|
|
65390
|
+
"July",
|
|
65391
|
+
"August",
|
|
65392
|
+
"September",
|
|
65393
|
+
"October",
|
|
65394
|
+
"November",
|
|
65395
|
+
"December"
|
|
65396
|
+
];
|
|
65397
|
+
const weekDays = compact ? ["S", "M", "Tu", "W", "Th", "F", "S"] : ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
|
|
65398
|
+
const calendarDays = [];
|
|
65399
|
+
for (let i = 0; i < firstDayOfWeek; i++) {
|
|
65400
|
+
calendarDays.push(null);
|
|
65401
|
+
}
|
|
65402
|
+
for (let day = 1; day <= daysInMonth; day++) {
|
|
65403
|
+
calendarDays.push(new Date(currentDate.getFullYear(), currentDate.getMonth(), day));
|
|
65404
|
+
}
|
|
65405
|
+
return /* @__PURE__ */ jsxs(MoonUICardPro, { className: cn(
|
|
65406
|
+
"relative overflow-hidden",
|
|
65407
|
+
glassmorphism && "bg-background/60 backdrop-blur-md border-white/10",
|
|
65408
|
+
className
|
|
65409
|
+
), children: [
|
|
65410
|
+
/* @__PURE__ */ jsxs(MoonUICardHeaderPro, { className: cn(
|
|
65411
|
+
"flex flex-row items-center justify-between space-y-0",
|
|
65412
|
+
compact ? "pb-1 pt-2 px-3" : "pb-2"
|
|
65413
|
+
), children: [
|
|
65414
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
65415
|
+
/* @__PURE__ */ jsx(Calendar$1, { className: cn(
|
|
65416
|
+
"text-muted-foreground",
|
|
65417
|
+
compact ? "h-3.5 w-3.5" : "h-4 w-4"
|
|
65418
|
+
) }),
|
|
65419
|
+
/* @__PURE__ */ jsx(MoonUICardTitlePro, { className: cn(
|
|
65420
|
+
"font-semibold",
|
|
65421
|
+
compact ? "text-xs" : "text-base"
|
|
65422
|
+
), children: title })
|
|
65423
|
+
] }),
|
|
65424
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
|
|
65425
|
+
!compact && /* @__PURE__ */ jsx(
|
|
65426
|
+
MoonUIButtonPro,
|
|
65427
|
+
{
|
|
65428
|
+
variant: "ghost",
|
|
65429
|
+
size: "sm",
|
|
65430
|
+
className: "h-7 px-2 text-xs",
|
|
65431
|
+
onClick: goToToday,
|
|
65432
|
+
children: "Today"
|
|
65433
|
+
}
|
|
65434
|
+
),
|
|
65435
|
+
/* @__PURE__ */ jsx(
|
|
65436
|
+
MoonUIButtonPro,
|
|
65437
|
+
{
|
|
65438
|
+
variant: "ghost",
|
|
65439
|
+
size: "sm",
|
|
65440
|
+
className: cn(
|
|
65441
|
+
"p-0",
|
|
65442
|
+
compact ? "h-5 w-5" : "h-7 w-7"
|
|
65443
|
+
),
|
|
65444
|
+
onClick: goToPreviousMonth,
|
|
65445
|
+
children: /* @__PURE__ */ jsx(ChevronLeft, { className: cn(
|
|
65446
|
+
compact ? "h-3 w-3" : "h-4 w-4"
|
|
65447
|
+
) })
|
|
65448
|
+
}
|
|
65449
|
+
),
|
|
65450
|
+
/* @__PURE__ */ jsxs("span", { className: cn(
|
|
65451
|
+
"font-medium min-w-[100px] text-center",
|
|
65452
|
+
compact ? "text-[10px]" : "text-sm"
|
|
65453
|
+
), children: [
|
|
65454
|
+
monthNames[currentDate.getMonth()],
|
|
65455
|
+
" ",
|
|
65456
|
+
currentDate.getFullYear()
|
|
65457
|
+
] }),
|
|
65458
|
+
/* @__PURE__ */ jsx(
|
|
65459
|
+
MoonUIButtonPro,
|
|
65460
|
+
{
|
|
65461
|
+
variant: "ghost",
|
|
65462
|
+
size: "sm",
|
|
65463
|
+
className: cn(
|
|
65464
|
+
"p-0",
|
|
65465
|
+
compact ? "h-5 w-5" : "h-7 w-7"
|
|
65466
|
+
),
|
|
65467
|
+
onClick: goToNextMonth,
|
|
65468
|
+
children: /* @__PURE__ */ jsx(ChevronRight, { className: cn(
|
|
65469
|
+
compact ? "h-3 w-3" : "h-4 w-4"
|
|
65470
|
+
) })
|
|
65471
|
+
}
|
|
65472
|
+
)
|
|
65473
|
+
] })
|
|
65474
|
+
] }),
|
|
65475
|
+
/* @__PURE__ */ jsx(MoonUICardContentPro, { className: cn(
|
|
65476
|
+
"p-0",
|
|
65477
|
+
compact ? "px-2 pb-2" : "px-4 pb-4"
|
|
65478
|
+
), children: /* @__PURE__ */ jsxs("div", { style: { height: calendarHeight }, children: [
|
|
65479
|
+
/* @__PURE__ */ jsx("div", { className: "grid grid-cols-7 gap-0 mb-1", children: weekDays.map((day, index2) => /* @__PURE__ */ jsx(
|
|
65480
|
+
"div",
|
|
65481
|
+
{
|
|
65482
|
+
className: cn(
|
|
65483
|
+
"text-center font-medium text-muted-foreground",
|
|
65484
|
+
compact ? "text-[9px] py-0.5" : "text-xs py-1"
|
|
65485
|
+
),
|
|
65486
|
+
children: day
|
|
65487
|
+
},
|
|
65488
|
+
`weekday-${index2}`
|
|
65489
|
+
)) }),
|
|
65490
|
+
/* @__PURE__ */ jsx("div", { className: "grid grid-cols-7 gap-0", children: calendarDays.map((date, index2) => {
|
|
65491
|
+
if (!date) {
|
|
65492
|
+
return /* @__PURE__ */ jsx("div", {}, `empty-${index2}`);
|
|
65493
|
+
}
|
|
65494
|
+
const dateEvents = getEventsForDate(date);
|
|
65495
|
+
const isToday3 = date.toDateString() === (/* @__PURE__ */ new Date()).toDateString();
|
|
65496
|
+
const isSelected = selectedDate && date.toDateString() === selectedDate.toDateString();
|
|
65497
|
+
const hasEvents = dateEvents.length > 0;
|
|
65498
|
+
return /* @__PURE__ */ jsxs(
|
|
65499
|
+
motion.button,
|
|
65500
|
+
{
|
|
65501
|
+
whileHover: { scale: interactive ? 1.1 : 1 },
|
|
65502
|
+
whileTap: { scale: interactive ? 0.95 : 1 },
|
|
65503
|
+
className: cn(
|
|
65504
|
+
"relative border border-transparent rounded-md transition-all",
|
|
65505
|
+
compact ? "h-5 text-[10px]" : "h-10 text-sm",
|
|
65506
|
+
isToday3 && "bg-primary/10 font-semibold",
|
|
65507
|
+
isSelected && "border-primary bg-primary/5",
|
|
65508
|
+
interactive && "hover:bg-muted/50 cursor-pointer",
|
|
65509
|
+
!interactive && "cursor-default"
|
|
65510
|
+
),
|
|
65511
|
+
onClick: () => {
|
|
65512
|
+
if (interactive) {
|
|
65513
|
+
setSelectedDate(date);
|
|
65514
|
+
onDateClick?.(date, dateEvents);
|
|
65515
|
+
}
|
|
65516
|
+
},
|
|
65517
|
+
children: [
|
|
65518
|
+
/* @__PURE__ */ jsx("span", { className: cn(
|
|
65519
|
+
isToday3 && "text-primary"
|
|
65520
|
+
), children: date.getDate() }),
|
|
65521
|
+
hasEvents && !compact && /* @__PURE__ */ jsx("div", { className: "absolute bottom-0.5 left-1/2 -translate-x-1/2 flex gap-0.5", children: dateEvents.slice(0, 3).map((event, i) => /* @__PURE__ */ jsx(
|
|
65522
|
+
"span",
|
|
65523
|
+
{
|
|
65524
|
+
className: cn(
|
|
65525
|
+
"h-1 w-1 rounded-full",
|
|
65526
|
+
getEventColor(event.type)
|
|
65527
|
+
)
|
|
65528
|
+
},
|
|
65529
|
+
i
|
|
65530
|
+
)) }),
|
|
65531
|
+
hasEvents && compact && /* @__PURE__ */ jsx("span", { className: cn(
|
|
65532
|
+
"absolute top-0.5 right-0.5 h-1 w-1 rounded-full",
|
|
65533
|
+
getEventColor(dateEvents[0].type)
|
|
65534
|
+
) })
|
|
65535
|
+
]
|
|
65536
|
+
},
|
|
65537
|
+
date.toISOString()
|
|
65538
|
+
);
|
|
65539
|
+
}) }),
|
|
65540
|
+
selectedDate && !compact && /* @__PURE__ */ jsxs(
|
|
65541
|
+
motion.div,
|
|
65542
|
+
{
|
|
65543
|
+
initial: { opacity: 0, y: 10 },
|
|
65544
|
+
animate: { opacity: 1, y: 0 },
|
|
65545
|
+
className: "mt-3 p-2 bg-muted/50 rounded-lg",
|
|
65546
|
+
children: [
|
|
65547
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between mb-2", children: [
|
|
65548
|
+
/* @__PURE__ */ jsx("h4", { className: "text-xs font-semibold", children: selectedDate.toLocaleDateString("en-US", {
|
|
65549
|
+
weekday: "long",
|
|
65550
|
+
year: "numeric",
|
|
65551
|
+
month: "long",
|
|
65552
|
+
day: "numeric"
|
|
65553
|
+
}) }),
|
|
65554
|
+
getEventsForDate(selectedDate).length > 0 && /* @__PURE__ */ jsxs(MoonUIBadgePro, { variant: "secondary", className: "text-xs", children: [
|
|
65555
|
+
getEventsForDate(selectedDate).length,
|
|
65556
|
+
" events"
|
|
65557
|
+
] })
|
|
65558
|
+
] }),
|
|
65559
|
+
getEventsForDate(selectedDate).length === 0 ? /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: "No events scheduled" }) : /* @__PURE__ */ jsx("div", { className: "space-y-1 max-h-20 overflow-y-auto", children: getEventsForDate(selectedDate).map((event) => /* @__PURE__ */ jsxs(
|
|
65560
|
+
motion.div,
|
|
65561
|
+
{
|
|
65562
|
+
whileHover: { x: 2 },
|
|
65563
|
+
className: "flex items-center gap-2 p-1 rounded cursor-pointer hover:bg-background/50",
|
|
65564
|
+
onClick: () => onEventClick?.(event),
|
|
65565
|
+
children: [
|
|
65566
|
+
/* @__PURE__ */ jsx("span", { className: cn(
|
|
65567
|
+
"h-2 w-2 rounded-full flex-shrink-0",
|
|
65568
|
+
getEventColor(event.type)
|
|
65569
|
+
) }),
|
|
65570
|
+
/* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
65571
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs font-medium truncate", children: event.title }),
|
|
65572
|
+
event.time && /* @__PURE__ */ jsxs("p", { className: "text-[10px] text-muted-foreground flex items-center gap-1", children: [
|
|
65573
|
+
/* @__PURE__ */ jsx(Clock, { className: "h-2.5 w-2.5" }),
|
|
65574
|
+
event.time
|
|
65575
|
+
] })
|
|
65576
|
+
] })
|
|
65577
|
+
]
|
|
65578
|
+
},
|
|
65579
|
+
event.id
|
|
65580
|
+
)) })
|
|
65581
|
+
]
|
|
65582
|
+
}
|
|
65583
|
+
),
|
|
65584
|
+
compact && events.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mt-2 space-y-0.5", children: [
|
|
65585
|
+
/* @__PURE__ */ jsx("p", { className: "text-[9px] font-medium text-muted-foreground mb-1", children: "Upcoming" }),
|
|
65586
|
+
events.filter((e) => new Date(e.date) >= /* @__PURE__ */ new Date()).slice(0, 2).map((event) => /* @__PURE__ */ jsxs(
|
|
65587
|
+
"div",
|
|
65588
|
+
{
|
|
65589
|
+
className: "flex items-center gap-1 text-[10px] cursor-pointer hover:bg-muted/50 rounded px-1",
|
|
65590
|
+
onClick: () => onEventClick?.(event),
|
|
65591
|
+
children: [
|
|
65592
|
+
/* @__PURE__ */ jsx("span", { className: cn(
|
|
65593
|
+
"h-1.5 w-1.5 rounded-full",
|
|
65594
|
+
getEventColor(event.type)
|
|
65595
|
+
) }),
|
|
65596
|
+
/* @__PURE__ */ jsx("span", { className: "truncate flex-1", children: event.title }),
|
|
65597
|
+
/* @__PURE__ */ jsxs("span", { className: "text-muted-foreground", children: [
|
|
65598
|
+
new Date(event.date).getDate(),
|
|
65599
|
+
"/",
|
|
65600
|
+
new Date(event.date).getMonth() + 1
|
|
65601
|
+
] })
|
|
65602
|
+
]
|
|
65603
|
+
},
|
|
65604
|
+
event.id
|
|
65605
|
+
))
|
|
65606
|
+
] })
|
|
65607
|
+
] }) })
|
|
65608
|
+
] });
|
|
65609
|
+
}
|
|
64898
65610
|
var DASHBOARD_TEMPLATES = [
|
|
64899
65611
|
{
|
|
64900
65612
|
id: "analytics",
|
|
@@ -65053,6 +65765,8 @@ var DashboardInternal = t__default.memo(function DashboardInternal2({
|
|
|
65053
65765
|
contentClassName,
|
|
65054
65766
|
sidebarPosition = "none",
|
|
65055
65767
|
sidebarContent,
|
|
65768
|
+
sidebarCollapsed: propSidebarCollapsed,
|
|
65769
|
+
onSidebarCollapsedChange,
|
|
65056
65770
|
notifications = [],
|
|
65057
65771
|
onNotificationClick,
|
|
65058
65772
|
onNotificationMarkAsRead,
|
|
@@ -65081,6 +65795,7 @@ var DashboardInternal = t__default.memo(function DashboardInternal2({
|
|
|
65081
65795
|
const [searchQuery, setSearchQuery] = t__default.useState("");
|
|
65082
65796
|
const [showWidgetLibrary, setShowWidgetLibrary] = t__default.useState(false);
|
|
65083
65797
|
const [showTemplates, setShowTemplates] = t__default.useState(false);
|
|
65798
|
+
const [sidebarCollapsed, setSidebarCollapsed] = t__default.useState(propSidebarCollapsed ?? false);
|
|
65084
65799
|
const [refreshing, setRefreshing] = t__default.useState(false);
|
|
65085
65800
|
const [showNotifications, setShowNotifications] = t__default.useState(false);
|
|
65086
65801
|
const prevInitialWidgetsRef = t__default.useRef(initialWidgets);
|
|
@@ -65147,8 +65862,66 @@ var DashboardInternal = t__default.memo(function DashboardInternal2({
|
|
|
65147
65862
|
};
|
|
65148
65863
|
case "activity":
|
|
65149
65864
|
return {
|
|
65150
|
-
items: [
|
|
65151
|
-
|
|
65865
|
+
items: [
|
|
65866
|
+
{
|
|
65867
|
+
id: "1",
|
|
65868
|
+
type: "info",
|
|
65869
|
+
title: "Sample activity",
|
|
65870
|
+
description: "This is a sample activity item",
|
|
65871
|
+
timestamp: /* @__PURE__ */ new Date(),
|
|
65872
|
+
user: { name: "System" }
|
|
65873
|
+
}
|
|
65874
|
+
],
|
|
65875
|
+
realtime: false
|
|
65876
|
+
};
|
|
65877
|
+
case "progress":
|
|
65878
|
+
return [
|
|
65879
|
+
{
|
|
65880
|
+
id: "progress-1",
|
|
65881
|
+
title: "Progress Item",
|
|
65882
|
+
current: 50,
|
|
65883
|
+
target: 100,
|
|
65884
|
+
unit: "%",
|
|
65885
|
+
color: "primary"
|
|
65886
|
+
}
|
|
65887
|
+
];
|
|
65888
|
+
case "comparison":
|
|
65889
|
+
return {
|
|
65890
|
+
periods: [
|
|
65891
|
+
{ label: "This Week", value: 100 },
|
|
65892
|
+
{ label: "Last Week", value: 80 }
|
|
65893
|
+
],
|
|
65894
|
+
metric: "Sample Metric",
|
|
65895
|
+
showChart: true
|
|
65896
|
+
};
|
|
65897
|
+
case "map":
|
|
65898
|
+
return {
|
|
65899
|
+
locations: [
|
|
65900
|
+
{ id: "1", name: "New York", lat: 40.7128, lng: -74.006, value: 125, type: "primary" },
|
|
65901
|
+
{ id: "2", name: "London", lat: 51.5074, lng: -0.1278, value: 98, type: "secondary" },
|
|
65902
|
+
{ id: "3", name: "Tokyo", lat: 35.6762, lng: 139.6503, value: 156, type: "success" }
|
|
65903
|
+
]
|
|
65904
|
+
};
|
|
65905
|
+
case "table":
|
|
65906
|
+
return {
|
|
65907
|
+
columns: [
|
|
65908
|
+
{ key: "name", label: "Name", sortable: true },
|
|
65909
|
+
{ key: "status", label: "Status", sortable: true },
|
|
65910
|
+
{ key: "value", label: "Value", sortable: true, align: "right" }
|
|
65911
|
+
],
|
|
65912
|
+
rows: [
|
|
65913
|
+
{ id: "1", name: "Item 1", status: "Active", value: 100 },
|
|
65914
|
+
{ id: "2", name: "Item 2", status: "Pending", value: 75 },
|
|
65915
|
+
{ id: "3", name: "Item 3", status: "Inactive", value: 50 }
|
|
65916
|
+
]
|
|
65917
|
+
};
|
|
65918
|
+
case "calendar":
|
|
65919
|
+
return {
|
|
65920
|
+
events: [
|
|
65921
|
+
{ id: "1", date: /* @__PURE__ */ new Date(), title: "Meeting", time: "10:00 AM", type: "primary" },
|
|
65922
|
+
{ id: "2", date: new Date(Date.now() + 864e5), title: "Deadline", type: "danger" },
|
|
65923
|
+
{ id: "3", date: new Date(Date.now() + 1728e5), title: "Review", time: "2:00 PM", type: "warning" }
|
|
65924
|
+
]
|
|
65152
65925
|
};
|
|
65153
65926
|
default:
|
|
65154
65927
|
return {};
|
|
@@ -65279,7 +66052,7 @@ var DashboardInternal = t__default.memo(function DashboardInternal2({
|
|
|
65279
66052
|
motion.div,
|
|
65280
66053
|
{
|
|
65281
66054
|
className: cn(
|
|
65282
|
-
"w-full
|
|
66055
|
+
"w-full h-screen flex",
|
|
65283
66056
|
glassmorphism && "bg-gradient-to-br",
|
|
65284
66057
|
glassmorphism && THEME_COLORS[selectedTheme],
|
|
65285
66058
|
className
|
|
@@ -65288,475 +66061,572 @@ var DashboardInternal = t__default.memo(function DashboardInternal2({
|
|
|
65288
66061
|
animate: { opacity: 1 },
|
|
65289
66062
|
transition: { duration: 0.5 },
|
|
65290
66063
|
children: [
|
|
65291
|
-
|
|
66064
|
+
sidebarPosition === "left" && sidebarContent && /* @__PURE__ */ jsxs(
|
|
65292
66065
|
motion.div,
|
|
65293
66066
|
{
|
|
65294
66067
|
className: cn(
|
|
65295
|
-
"
|
|
65296
|
-
glassmorphism ? "bg-background/
|
|
66068
|
+
"h-full border-r flex-shrink-0 flex flex-col transition-all duration-300 relative",
|
|
66069
|
+
glassmorphism ? "bg-background/60 backdrop-blur-md" : "bg-background",
|
|
66070
|
+
sidebarCollapsed ? "w-16" : "w-64"
|
|
65297
66071
|
),
|
|
65298
|
-
|
|
65299
|
-
|
|
65300
|
-
transition: { type: "spring", stiffness: 300, damping: 30 },
|
|
66072
|
+
animate: { width: sidebarCollapsed ? 64 : 256 },
|
|
66073
|
+
transition: { duration: 0.3, ease: "easeInOut" },
|
|
65301
66074
|
children: [
|
|
65302
|
-
/* @__PURE__ */ jsx(
|
|
65303
|
-
|
|
65304
|
-
|
|
65305
|
-
|
|
65306
|
-
|
|
65307
|
-
|
|
65308
|
-
|
|
65309
|
-
|
|
65310
|
-
MoonUIButtonPro,
|
|
65311
|
-
{
|
|
65312
|
-
variant: "ghost",
|
|
65313
|
-
size: "sm",
|
|
65314
|
-
className: "lg:hidden",
|
|
65315
|
-
onClick: onMenuClick,
|
|
65316
|
-
children: /* @__PURE__ */ jsx(Menu, { className: "h-5 w-5" })
|
|
65317
|
-
}
|
|
65318
|
-
)
|
|
65319
|
-
}
|
|
66075
|
+
/* @__PURE__ */ jsx(
|
|
66076
|
+
MoonUIButtonPro,
|
|
66077
|
+
{
|
|
66078
|
+
variant: "ghost",
|
|
66079
|
+
size: "sm",
|
|
66080
|
+
className: cn(
|
|
66081
|
+
"absolute -right-3 top-6 z-50 h-6 w-6 rounded-full border bg-background p-0 shadow-md",
|
|
66082
|
+
"hover:bg-accent hover:text-accent-foreground"
|
|
65320
66083
|
),
|
|
65321
|
-
(
|
|
65322
|
-
|
|
65323
|
-
|
|
66084
|
+
onClick: () => {
|
|
66085
|
+
setSidebarCollapsed(!sidebarCollapsed);
|
|
66086
|
+
onSidebarCollapsedChange?.(!sidebarCollapsed);
|
|
66087
|
+
},
|
|
66088
|
+
children: sidebarCollapsed ? /* @__PURE__ */ jsx(ChevronRight, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx(ChevronLeft, { className: "h-3 w-3" })
|
|
66089
|
+
}
|
|
66090
|
+
),
|
|
66091
|
+
(logo || brandName) && /* @__PURE__ */ jsx("div", { className: cn(
|
|
66092
|
+
"border-b transition-all duration-300",
|
|
66093
|
+
sidebarCollapsed ? "p-4" : "p-6"
|
|
66094
|
+
), children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
66095
|
+
logo,
|
|
66096
|
+
brandName && !sidebarCollapsed && /* @__PURE__ */ jsx(
|
|
66097
|
+
motion.span,
|
|
66098
|
+
{
|
|
66099
|
+
className: "font-semibold text-lg whitespace-nowrap",
|
|
66100
|
+
initial: { opacity: 0 },
|
|
66101
|
+
animate: { opacity: 1 },
|
|
66102
|
+
transition: { delay: 0.1 },
|
|
66103
|
+
children: brandName
|
|
66104
|
+
}
|
|
66105
|
+
)
|
|
66106
|
+
] }) }),
|
|
66107
|
+
/* @__PURE__ */ jsx("div", { className: "flex-1 overflow-hidden", children: sidebarContent })
|
|
66108
|
+
]
|
|
66109
|
+
}
|
|
66110
|
+
),
|
|
66111
|
+
/* @__PURE__ */ jsxs("div", { className: "flex-1 flex flex-col h-full overflow-hidden", children: [
|
|
66112
|
+
showHeader && /* @__PURE__ */ jsxs(
|
|
66113
|
+
motion.div,
|
|
66114
|
+
{
|
|
66115
|
+
className: cn(
|
|
66116
|
+
"border-b flex-shrink-0",
|
|
66117
|
+
glassmorphism ? "bg-background/80 backdrop-blur-md" : "bg-background"
|
|
66118
|
+
),
|
|
66119
|
+
initial: { y: -50 },
|
|
66120
|
+
animate: { y: 0 },
|
|
66121
|
+
transition: { type: "spring", stiffness: 300, damping: 30 },
|
|
66122
|
+
children: [
|
|
66123
|
+
/* @__PURE__ */ jsx("div", { className: "px-6 py-4", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
66124
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
|
|
66125
|
+
/* @__PURE__ */ jsx(
|
|
66126
|
+
motion.div,
|
|
66127
|
+
{
|
|
66128
|
+
whileHover: { scale: 1.05 },
|
|
66129
|
+
whileTap: { scale: 0.95 },
|
|
66130
|
+
children: /* @__PURE__ */ jsx(
|
|
66131
|
+
MoonUIButtonPro,
|
|
66132
|
+
{
|
|
66133
|
+
variant: "ghost",
|
|
66134
|
+
size: "sm",
|
|
66135
|
+
className: "lg:hidden",
|
|
66136
|
+
onClick: onMenuClick,
|
|
66137
|
+
children: /* @__PURE__ */ jsx(Menu, { className: "h-5 w-5" })
|
|
66138
|
+
}
|
|
66139
|
+
)
|
|
66140
|
+
}
|
|
66141
|
+
),
|
|
66142
|
+
brandName && /* @__PURE__ */ jsx("span", { className: "font-semibold text-lg lg:hidden", children: brandName }),
|
|
66143
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
66144
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
66145
|
+
/* @__PURE__ */ jsx("h1", { className: "text-2xl font-bold tracking-tight", children: title }),
|
|
66146
|
+
realtime && /* @__PURE__ */ jsxs(MoonUIBadgePro, { variant: "secondary", className: "animate-pulse", children: [
|
|
66147
|
+
/* @__PURE__ */ jsx("span", { className: "mr-1 h-1.5 w-1.5 rounded-full bg-green-500" }),
|
|
66148
|
+
"Real-time"
|
|
66149
|
+
] })
|
|
66150
|
+
] }),
|
|
66151
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: description })
|
|
66152
|
+
] })
|
|
65324
66153
|
] }),
|
|
65325
|
-
/* @__PURE__ */ jsxs("div", { children: [
|
|
65326
|
-
/* @__PURE__ */
|
|
65327
|
-
|
|
65328
|
-
realtime && /* @__PURE__ */ jsxs(MoonUIBadgePro, { variant: "secondary", className: "animate-pulse", children: [
|
|
65329
|
-
/* @__PURE__ */ jsx("span", { className: "mr-1 h-1.5 w-1.5 rounded-full bg-green-500" }),
|
|
65330
|
-
"Real-time"
|
|
65331
|
-
] })
|
|
65332
|
-
] }),
|
|
65333
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: description })
|
|
65334
|
-
] })
|
|
65335
|
-
] }),
|
|
65336
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
65337
|
-
/* @__PURE__ */ jsx(
|
|
65338
|
-
TimeRangePicker,
|
|
65339
|
-
{
|
|
65340
|
-
value: timeRange,
|
|
65341
|
-
onChange: (range) => {
|
|
65342
|
-
setTimeRange(range);
|
|
65343
|
-
onTimeRangeChange?.(range);
|
|
65344
|
-
},
|
|
65345
|
-
glassmorphism
|
|
65346
|
-
}
|
|
65347
|
-
),
|
|
65348
|
-
/* @__PURE__ */ jsxs(MoonUIDropdownMenuPro, { open: showNotifications, onOpenChange: setShowNotifications, children: [
|
|
65349
|
-
/* @__PURE__ */ jsx(MoonUIDropdownMenuTriggerPro, { asChild: true, children: /* @__PURE__ */ jsxs(MoonUIButtonPro, { variant: "ghost", size: "sm", className: "relative h-9 w-9 p-0", children: [
|
|
65350
|
-
/* @__PURE__ */ jsx(Bell, { className: "h-5 w-5" }),
|
|
65351
|
-
notifications.filter((n) => !n.read).length > 0 && /* @__PURE__ */ jsx("span", { className: "absolute -top-1 -right-1 min-w-[1rem] h-4 px-1 rounded-full bg-destructive text-[10px] font-medium text-destructive-foreground flex items-center justify-center", children: notifications.filter((n) => !n.read).length })
|
|
65352
|
-
] }) }),
|
|
65353
|
-
/* @__PURE__ */ jsxs(
|
|
65354
|
-
MoonUIDropdownMenuContentPro,
|
|
66154
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
66155
|
+
/* @__PURE__ */ jsx(
|
|
66156
|
+
TimeRangePicker,
|
|
65355
66157
|
{
|
|
65356
|
-
|
|
65357
|
-
|
|
65358
|
-
|
|
65359
|
-
|
|
65360
|
-
|
|
65361
|
-
|
|
65362
|
-
|
|
65363
|
-
|
|
65364
|
-
|
|
66158
|
+
value: timeRange,
|
|
66159
|
+
onChange: (range) => {
|
|
66160
|
+
setTimeRange(range);
|
|
66161
|
+
onTimeRangeChange?.(range);
|
|
66162
|
+
},
|
|
66163
|
+
glassmorphism
|
|
66164
|
+
}
|
|
66165
|
+
),
|
|
66166
|
+
/* @__PURE__ */ jsxs(MoonUIDropdownMenuPro, { open: showNotifications, onOpenChange: setShowNotifications, children: [
|
|
66167
|
+
/* @__PURE__ */ jsx(MoonUIDropdownMenuTriggerPro, { asChild: true, children: /* @__PURE__ */ jsxs(MoonUIButtonPro, { variant: "ghost", size: "sm", className: "relative h-9 w-9 p-0", children: [
|
|
66168
|
+
/* @__PURE__ */ jsx(Bell, { className: "h-5 w-5" }),
|
|
66169
|
+
notifications.filter((n) => !n.read).length > 0 && /* @__PURE__ */ jsx("span", { className: "absolute -top-1 -right-1 min-w-[1rem] h-4 px-1 rounded-full bg-destructive text-[10px] font-medium text-destructive-foreground flex items-center justify-center", children: notifications.filter((n) => !n.read).length })
|
|
66170
|
+
] }) }),
|
|
66171
|
+
/* @__PURE__ */ jsxs(
|
|
66172
|
+
MoonUIDropdownMenuContentPro,
|
|
66173
|
+
{
|
|
66174
|
+
align: "end",
|
|
66175
|
+
className: "w-80",
|
|
66176
|
+
sideOffset: 8,
|
|
66177
|
+
children: [
|
|
66178
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-4 py-2", children: [
|
|
66179
|
+
/* @__PURE__ */ jsx("h4", { className: "text-sm font-semibold", children: "Notifications" }),
|
|
66180
|
+
notifications.length > 0 && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
66181
|
+
/* @__PURE__ */ jsxs(
|
|
66182
|
+
MoonUIButtonPro,
|
|
66183
|
+
{
|
|
66184
|
+
variant: "ghost",
|
|
66185
|
+
size: "sm",
|
|
66186
|
+
className: "h-auto p-1 text-xs",
|
|
66187
|
+
onClick: () => onNotificationMarkAllAsRead?.(),
|
|
66188
|
+
children: [
|
|
66189
|
+
/* @__PURE__ */ jsx(CheckCheck, { className: "h-3 w-3 mr-1" }),
|
|
66190
|
+
"Mark all read"
|
|
66191
|
+
]
|
|
66192
|
+
}
|
|
66193
|
+
),
|
|
66194
|
+
/* @__PURE__ */ jsx(
|
|
66195
|
+
MoonUIButtonPro,
|
|
66196
|
+
{
|
|
66197
|
+
variant: "ghost",
|
|
66198
|
+
size: "sm",
|
|
66199
|
+
className: "h-auto p-1 text-xs",
|
|
66200
|
+
onClick: () => onNotificationClearAll?.(),
|
|
66201
|
+
children: "Clear all"
|
|
66202
|
+
}
|
|
66203
|
+
)
|
|
66204
|
+
] })
|
|
66205
|
+
] }),
|
|
66206
|
+
/* @__PURE__ */ jsx(MoonUISeparatorPro, {}),
|
|
66207
|
+
/* @__PURE__ */ jsx(ScrollArea, { className: "h-[400px]", children: notifications.length === 0 ? /* @__PURE__ */ jsxs("div", { className: "p-8 text-center text-sm text-muted-foreground", children: [
|
|
66208
|
+
/* @__PURE__ */ jsx(Bell, { className: "h-8 w-8 mx-auto mb-2 opacity-20" }),
|
|
66209
|
+
/* @__PURE__ */ jsx("p", { children: "No notifications" })
|
|
66210
|
+
] }) : /* @__PURE__ */ jsx("div", { className: "p-1", children: notifications.map((notification) => {
|
|
66211
|
+
const Icon3 = notification.type === "error" ? AlertCircle : notification.type === "warning" ? AlertCircle : notification.type === "success" ? CheckCircle : Info;
|
|
66212
|
+
return /* @__PURE__ */ jsxs(
|
|
66213
|
+
motion.div,
|
|
65365
66214
|
{
|
|
65366
|
-
|
|
65367
|
-
|
|
65368
|
-
className:
|
|
65369
|
-
|
|
66215
|
+
initial: { opacity: 0, x: -20 },
|
|
66216
|
+
animate: { opacity: 1, x: 0 },
|
|
66217
|
+
className: cn(
|
|
66218
|
+
"flex items-start gap-3 p-3 rounded-lg cursor-pointer transition-colors",
|
|
66219
|
+
"hover:bg-muted/50",
|
|
66220
|
+
!notification.read && "bg-muted/30"
|
|
66221
|
+
),
|
|
66222
|
+
onClick: () => {
|
|
66223
|
+
onNotificationClick?.(notification);
|
|
66224
|
+
if (!notification.read) {
|
|
66225
|
+
onNotificationMarkAsRead?.(notification.id);
|
|
66226
|
+
}
|
|
66227
|
+
},
|
|
65370
66228
|
children: [
|
|
65371
|
-
/* @__PURE__ */ jsx(
|
|
65372
|
-
|
|
66229
|
+
/* @__PURE__ */ jsx("div", { className: cn(
|
|
66230
|
+
"mt-0.5 p-1.5 rounded-full",
|
|
66231
|
+
notification.type === "error" && "bg-destructive/10 text-destructive",
|
|
66232
|
+
notification.type === "warning" && "bg-yellow-500/10 text-yellow-600 dark:text-yellow-500",
|
|
66233
|
+
notification.type === "success" && "bg-green-500/10 text-green-600 dark:text-green-500",
|
|
66234
|
+
notification.type === "info" && "bg-blue-500/10 text-blue-600 dark:text-blue-500"
|
|
66235
|
+
), children: /* @__PURE__ */ jsx(Icon3, { className: "h-3.5 w-3.5" }) }),
|
|
66236
|
+
/* @__PURE__ */ jsxs("div", { className: "flex-1 space-y-1", children: [
|
|
66237
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm font-medium leading-none", children: notification.title }),
|
|
66238
|
+
notification.message && /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: notification.message }),
|
|
66239
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: formatRelativeTime(notification.timestamp) })
|
|
66240
|
+
] }),
|
|
66241
|
+
/* @__PURE__ */ jsx(
|
|
66242
|
+
MoonUIButtonPro,
|
|
66243
|
+
{
|
|
66244
|
+
variant: "ghost",
|
|
66245
|
+
size: "sm",
|
|
66246
|
+
className: "h-6 w-6 p-0",
|
|
66247
|
+
onClick: (e) => {
|
|
66248
|
+
e.stopPropagation();
|
|
66249
|
+
onNotificationClear?.(notification.id);
|
|
66250
|
+
},
|
|
66251
|
+
children: /* @__PURE__ */ jsx(X, { className: "h-3 w-3" })
|
|
66252
|
+
}
|
|
66253
|
+
)
|
|
65373
66254
|
]
|
|
65374
|
-
}
|
|
65375
|
-
),
|
|
65376
|
-
/* @__PURE__ */ jsx(
|
|
65377
|
-
MoonUIButtonPro,
|
|
65378
|
-
{
|
|
65379
|
-
variant: "ghost",
|
|
65380
|
-
size: "sm",
|
|
65381
|
-
className: "h-auto p-1 text-xs",
|
|
65382
|
-
onClick: () => onNotificationClearAll?.(),
|
|
65383
|
-
children: "Clear all"
|
|
65384
|
-
}
|
|
65385
|
-
)
|
|
65386
|
-
] })
|
|
65387
|
-
] }),
|
|
65388
|
-
/* @__PURE__ */ jsx(MoonUISeparatorPro, {}),
|
|
65389
|
-
/* @__PURE__ */ jsx(ScrollArea, { className: "h-[400px]", children: notifications.length === 0 ? /* @__PURE__ */ jsxs("div", { className: "p-8 text-center text-sm text-muted-foreground", children: [
|
|
65390
|
-
/* @__PURE__ */ jsx(Bell, { className: "h-8 w-8 mx-auto mb-2 opacity-20" }),
|
|
65391
|
-
/* @__PURE__ */ jsx("p", { children: "No notifications" })
|
|
65392
|
-
] }) : /* @__PURE__ */ jsx("div", { className: "p-1", children: notifications.map((notification) => {
|
|
65393
|
-
const Icon3 = notification.type === "error" ? AlertCircle : notification.type === "warning" ? AlertCircle : notification.type === "success" ? CheckCircle : Info;
|
|
65394
|
-
return /* @__PURE__ */ jsxs(
|
|
65395
|
-
motion.div,
|
|
65396
|
-
{
|
|
65397
|
-
initial: { opacity: 0, x: -20 },
|
|
65398
|
-
animate: { opacity: 1, x: 0 },
|
|
65399
|
-
className: cn(
|
|
65400
|
-
"flex items-start gap-3 p-3 rounded-lg cursor-pointer transition-colors",
|
|
65401
|
-
"hover:bg-muted/50",
|
|
65402
|
-
!notification.read && "bg-muted/30"
|
|
65403
|
-
),
|
|
65404
|
-
onClick: () => {
|
|
65405
|
-
onNotificationClick?.(notification);
|
|
65406
|
-
if (!notification.read) {
|
|
65407
|
-
onNotificationMarkAsRead?.(notification.id);
|
|
65408
|
-
}
|
|
65409
66255
|
},
|
|
65410
|
-
|
|
65411
|
-
|
|
65412
|
-
|
|
65413
|
-
|
|
65414
|
-
|
|
65415
|
-
|
|
65416
|
-
|
|
65417
|
-
|
|
65418
|
-
|
|
65419
|
-
|
|
65420
|
-
|
|
65421
|
-
|
|
65422
|
-
|
|
65423
|
-
|
|
65424
|
-
|
|
65425
|
-
|
|
65426
|
-
|
|
65427
|
-
|
|
65428
|
-
|
|
65429
|
-
|
|
65430
|
-
|
|
65431
|
-
|
|
65432
|
-
|
|
65433
|
-
|
|
65434
|
-
|
|
65435
|
-
|
|
65436
|
-
|
|
65437
|
-
|
|
65438
|
-
|
|
65439
|
-
|
|
65440
|
-
|
|
65441
|
-
|
|
65442
|
-
|
|
65443
|
-
|
|
65444
|
-
|
|
65445
|
-
|
|
65446
|
-
|
|
65447
|
-
|
|
65448
|
-
|
|
65449
|
-
|
|
65450
|
-
|
|
65451
|
-
|
|
65452
|
-
|
|
65453
|
-
|
|
65454
|
-
|
|
65455
|
-
|
|
65456
|
-
|
|
65457
|
-
|
|
65458
|
-
|
|
65459
|
-
|
|
65460
|
-
|
|
65461
|
-
|
|
65462
|
-
|
|
65463
|
-
|
|
65464
|
-
|
|
65465
|
-
|
|
65466
|
-
|
|
65467
|
-
|
|
65468
|
-
|
|
65469
|
-
|
|
65470
|
-
|
|
65471
|
-
|
|
65472
|
-
|
|
65473
|
-
|
|
65474
|
-
|
|
65475
|
-
|
|
65476
|
-
|
|
65477
|
-
|
|
65478
|
-
|
|
65479
|
-
|
|
65480
|
-
|
|
66256
|
+
notification.id
|
|
66257
|
+
);
|
|
66258
|
+
}) }) })
|
|
66259
|
+
]
|
|
66260
|
+
}
|
|
66261
|
+
)
|
|
66262
|
+
] }),
|
|
66263
|
+
/* @__PURE__ */ jsxs(MoonUIDropdownMenuPro, { children: [
|
|
66264
|
+
/* @__PURE__ */ jsx(MoonUIDropdownMenuTriggerPro, { asChild: true, children: /* @__PURE__ */ jsx(MoonUIButtonPro, { variant: "ghost", size: "sm", children: /* @__PURE__ */ jsx(Palette, { className: "h-4 w-4" }) }) }),
|
|
66265
|
+
/* @__PURE__ */ jsxs(MoonUIDropdownMenuContentPro, { align: "end", children: [
|
|
66266
|
+
/* @__PURE__ */ jsx(MoonUIDropdownMenuItemPro, { onClick: () => {
|
|
66267
|
+
setSelectedTheme("analytics");
|
|
66268
|
+
onThemeChange?.("analytics");
|
|
66269
|
+
}, children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
66270
|
+
/* @__PURE__ */ jsx("div", { className: "h-4 w-4 rounded bg-gradient-to-br from-blue-500 to-purple-500" }),
|
|
66271
|
+
"Analytics"
|
|
66272
|
+
] }) }),
|
|
66273
|
+
/* @__PURE__ */ jsx(MoonUIDropdownMenuItemPro, { onClick: () => {
|
|
66274
|
+
setSelectedTheme("sales");
|
|
66275
|
+
onThemeChange?.("sales");
|
|
66276
|
+
}, children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
66277
|
+
/* @__PURE__ */ jsx("div", { className: "h-4 w-4 rounded bg-gradient-to-br from-green-500 to-emerald-500" }),
|
|
66278
|
+
"Sales"
|
|
66279
|
+
] }) }),
|
|
66280
|
+
/* @__PURE__ */ jsx(MoonUIDropdownMenuItemPro, { onClick: () => {
|
|
66281
|
+
setSelectedTheme("monitoring");
|
|
66282
|
+
onThemeChange?.("monitoring");
|
|
66283
|
+
}, children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
66284
|
+
/* @__PURE__ */ jsx("div", { className: "h-4 w-4 rounded bg-gradient-to-br from-orange-500 to-red-500" }),
|
|
66285
|
+
"Monitoring"
|
|
66286
|
+
] }) })
|
|
66287
|
+
] })
|
|
66288
|
+
] }),
|
|
66289
|
+
headerActions,
|
|
66290
|
+
user && /* @__PURE__ */ jsxs(MoonUIDropdownMenuPro, { children: [
|
|
66291
|
+
/* @__PURE__ */ jsx(MoonUIDropdownMenuTriggerPro, { asChild: true, children: /* @__PURE__ */ jsx(MoonUIButtonPro, { variant: "ghost", size: "sm", className: "relative h-8 w-8 rounded-full", children: /* @__PURE__ */ jsxs(MoonUIAvatarPro, { className: "h-8 w-8", children: [
|
|
66292
|
+
/* @__PURE__ */ jsx(MoonUIAvatarImagePro, { src: user.avatar, alt: user.name }),
|
|
66293
|
+
/* @__PURE__ */ jsx(MoonUIAvatarFallbackPro, { children: user.name.split(" ").map((n) => n[0]).join("").toUpperCase() })
|
|
66294
|
+
] }) }) }),
|
|
66295
|
+
/* @__PURE__ */ jsxs(MoonUIDropdownMenuContentPro, { align: "end", className: "w-56", children: [
|
|
66296
|
+
/* @__PURE__ */ jsx("div", { className: "flex items-center justify-start gap-2 p-2", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col space-y-1 leading-none", children: [
|
|
66297
|
+
user.name && /* @__PURE__ */ jsx("p", { className: "font-medium", children: user.name }),
|
|
66298
|
+
user.email && /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: user.email })
|
|
66299
|
+
] }) }),
|
|
66300
|
+
/* @__PURE__ */ jsx(MoonUIDropdownMenuSeparatorPro, {}),
|
|
66301
|
+
userMenuItems ? (
|
|
66302
|
+
// Custom menu items
|
|
66303
|
+
userMenuItems.map((item, index2) => item.separator ? /* @__PURE__ */ jsx(MoonUIDropdownMenuSeparatorPro, {}, item.id || `sep-${index2}`) : /* @__PURE__ */ jsxs(
|
|
66304
|
+
MoonUIDropdownMenuItemPro,
|
|
66305
|
+
{
|
|
66306
|
+
onClick: () => item.onClick?.(),
|
|
66307
|
+
children: [
|
|
66308
|
+
item.icon && /* @__PURE__ */ jsx("span", { className: "mr-2", children: item.icon }),
|
|
66309
|
+
item.label
|
|
66310
|
+
]
|
|
66311
|
+
},
|
|
66312
|
+
item.id
|
|
66313
|
+
))
|
|
66314
|
+
) : (
|
|
66315
|
+
// Default menu items
|
|
66316
|
+
/* @__PURE__ */ jsxs(Fragment, { children: [
|
|
66317
|
+
/* @__PURE__ */ jsxs(MoonUIDropdownMenuItemPro, { onClick: () => onProfileClick?.(), children: [
|
|
66318
|
+
/* @__PURE__ */ jsx(User, { className: "mr-2 h-4 w-4" }),
|
|
66319
|
+
"Profile"
|
|
66320
|
+
] }),
|
|
66321
|
+
/* @__PURE__ */ jsxs(MoonUIDropdownMenuItemPro, { onClick: () => onUserMenuClick?.(), children: [
|
|
66322
|
+
/* @__PURE__ */ jsx(Settings2, { className: "mr-2 h-4 w-4" }),
|
|
66323
|
+
"Settings"
|
|
66324
|
+
] }),
|
|
66325
|
+
/* @__PURE__ */ jsx(MoonUIDropdownMenuSeparatorPro, {}),
|
|
66326
|
+
/* @__PURE__ */ jsxs(MoonUIDropdownMenuItemPro, { onClick: () => onLogout?.(), children: [
|
|
66327
|
+
/* @__PURE__ */ jsx(LogOut, { className: "mr-2 h-4 w-4" }),
|
|
66328
|
+
"Log out"
|
|
66329
|
+
] })
|
|
66330
|
+
] })
|
|
66331
|
+
)
|
|
66332
|
+
] })
|
|
66333
|
+
] }),
|
|
66334
|
+
/* @__PURE__ */ jsxs(MoonUIDropdownMenuPro, { children: [
|
|
66335
|
+
/* @__PURE__ */ jsx(MoonUIDropdownMenuTriggerPro, { asChild: true, children: /* @__PURE__ */ jsxs(MoonUIButtonPro, { variant: "outline", size: "sm", children: [
|
|
66336
|
+
/* @__PURE__ */ jsx(Settings, { className: "h-4 w-4 mr-2" }),
|
|
66337
|
+
"Actions"
|
|
65481
66338
|
] }) }),
|
|
65482
|
-
/* @__PURE__ */
|
|
65483
|
-
|
|
65484
|
-
|
|
65485
|
-
|
|
65486
|
-
|
|
65487
|
-
{
|
|
65488
|
-
onClick: () => item.onClick?.(),
|
|
65489
|
-
children: [
|
|
65490
|
-
item.icon && /* @__PURE__ */ jsx("span", { className: "mr-2", children: item.icon }),
|
|
65491
|
-
item.label
|
|
65492
|
-
]
|
|
65493
|
-
},
|
|
65494
|
-
item.id
|
|
65495
|
-
))
|
|
65496
|
-
) : (
|
|
65497
|
-
// Default menu items
|
|
65498
|
-
/* @__PURE__ */ jsxs(Fragment, { children: [
|
|
65499
|
-
/* @__PURE__ */ jsxs(MoonUIDropdownMenuItemPro, { onClick: () => onProfileClick?.(), children: [
|
|
65500
|
-
/* @__PURE__ */ jsx(User, { className: "mr-2 h-4 w-4" }),
|
|
65501
|
-
"Profile"
|
|
66339
|
+
/* @__PURE__ */ jsxs(MoonUIDropdownMenuContentPro, { align: "end", className: "w-48", children: [
|
|
66340
|
+
editable && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
66341
|
+
/* @__PURE__ */ jsxs(MoonUIDropdownMenuItemPro, { onClick: () => setEditMode(!editMode), children: [
|
|
66342
|
+
/* @__PURE__ */ jsx(Edit3, { className: "mr-2 h-4 w-4" }),
|
|
66343
|
+
editMode ? "Exit Edit Mode" : "Edit Layout"
|
|
65502
66344
|
] }),
|
|
65503
|
-
/* @__PURE__ */ jsxs(MoonUIDropdownMenuItemPro, { onClick: () =>
|
|
65504
|
-
/* @__PURE__ */ jsx(
|
|
65505
|
-
"
|
|
66345
|
+
/* @__PURE__ */ jsxs(MoonUIDropdownMenuItemPro, { onClick: () => setShowWidgetLibrary(true), children: [
|
|
66346
|
+
/* @__PURE__ */ jsx(Plus, { className: "mr-2 h-4 w-4" }),
|
|
66347
|
+
"Add Widget"
|
|
65506
66348
|
] }),
|
|
65507
|
-
/* @__PURE__ */
|
|
65508
|
-
|
|
65509
|
-
|
|
65510
|
-
|
|
65511
|
-
|
|
65512
|
-
] })
|
|
65513
|
-
)
|
|
65514
|
-
] })
|
|
65515
|
-
] }),
|
|
65516
|
-
/* @__PURE__ */ jsxs(MoonUIDropdownMenuPro, { children: [
|
|
65517
|
-
/* @__PURE__ */ jsx(MoonUIDropdownMenuTriggerPro, { asChild: true, children: /* @__PURE__ */ jsxs(MoonUIButtonPro, { variant: "outline", size: "sm", children: [
|
|
65518
|
-
/* @__PURE__ */ jsx(Settings, { className: "h-4 w-4 mr-2" }),
|
|
65519
|
-
"Actions"
|
|
65520
|
-
] }) }),
|
|
65521
|
-
/* @__PURE__ */ jsxs(MoonUIDropdownMenuContentPro, { align: "end", className: "w-48", children: [
|
|
65522
|
-
editable && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
65523
|
-
/* @__PURE__ */ jsxs(MoonUIDropdownMenuItemPro, { onClick: () => setEditMode(!editMode), children: [
|
|
65524
|
-
/* @__PURE__ */ jsx(Edit3, { className: "mr-2 h-4 w-4" }),
|
|
65525
|
-
editMode ? "Exit Edit Mode" : "Edit Layout"
|
|
66349
|
+
/* @__PURE__ */ jsxs(MoonUIDropdownMenuItemPro, { onClick: () => setShowTemplates(true), children: [
|
|
66350
|
+
/* @__PURE__ */ jsx(LayoutGrid, { className: "mr-2 h-4 w-4" }),
|
|
66351
|
+
"Templates"
|
|
66352
|
+
] }),
|
|
66353
|
+
/* @__PURE__ */ jsx(MoonUIDropdownMenuSeparatorPro, {})
|
|
65526
66354
|
] }),
|
|
65527
|
-
/* @__PURE__ */ jsxs(
|
|
65528
|
-
/* @__PURE__ */
|
|
65529
|
-
|
|
66355
|
+
/* @__PURE__ */ jsxs(MoonUIDropdownMenuSubPro, { children: [
|
|
66356
|
+
/* @__PURE__ */ jsxs(MoonUIDropdownMenuSubTriggerPro, { children: [
|
|
66357
|
+
/* @__PURE__ */ jsx(Download, { className: "mr-2 h-4 w-4" }),
|
|
66358
|
+
"Export"
|
|
66359
|
+
] }),
|
|
66360
|
+
/* @__PURE__ */ jsxs(MoonUIDropdownMenuSubContentPro, { children: [
|
|
66361
|
+
/* @__PURE__ */ jsx(MoonUIDropdownMenuItemPro, { onClick: () => onExport?.("json"), children: "As JSON" }),
|
|
66362
|
+
/* @__PURE__ */ jsx(MoonUIDropdownMenuItemPro, { onClick: () => onExport?.("pdf"), children: "As PDF" }),
|
|
66363
|
+
/* @__PURE__ */ jsx(MoonUIDropdownMenuItemPro, { onClick: () => onExport?.("png"), children: "As Image" })
|
|
66364
|
+
] })
|
|
65530
66365
|
] }),
|
|
65531
|
-
/* @__PURE__ */ jsxs(MoonUIDropdownMenuItemPro, {
|
|
65532
|
-
/* @__PURE__ */ jsx(
|
|
65533
|
-
"
|
|
66366
|
+
/* @__PURE__ */ jsxs(MoonUIDropdownMenuItemPro, { children: [
|
|
66367
|
+
/* @__PURE__ */ jsx(Upload, { className: "mr-2 h-4 w-4" }),
|
|
66368
|
+
"Import"
|
|
65534
66369
|
] }),
|
|
65535
|
-
/* @__PURE__ */ jsx(MoonUIDropdownMenuSeparatorPro, {})
|
|
65536
|
-
|
|
65537
|
-
|
|
65538
|
-
|
|
65539
|
-
|
|
65540
|
-
|
|
66370
|
+
/* @__PURE__ */ jsx(MoonUIDropdownMenuSeparatorPro, {}),
|
|
66371
|
+
/* @__PURE__ */ jsxs(MoonUIDropdownMenuItemPro, { onClick: () => {
|
|
66372
|
+
setRefreshing(true);
|
|
66373
|
+
onRefresh?.();
|
|
66374
|
+
setTimeout(() => setRefreshing(false), 1e3);
|
|
66375
|
+
}, children: [
|
|
66376
|
+
/* @__PURE__ */ jsx(RefreshCw, { className: "mr-2 h-4 w-4" }),
|
|
66377
|
+
"Refresh Data"
|
|
65541
66378
|
] }),
|
|
65542
|
-
/* @__PURE__ */ jsxs(
|
|
65543
|
-
/* @__PURE__ */ jsx(
|
|
65544
|
-
|
|
65545
|
-
/* @__PURE__ */ jsx(MoonUIDropdownMenuItemPro, { onClick: () => onExport?.("png"), children: "As Image" })
|
|
66379
|
+
/* @__PURE__ */ jsxs(MoonUIDropdownMenuItemPro, { children: [
|
|
66380
|
+
/* @__PURE__ */ jsx(Share2, { className: "mr-2 h-4 w-4" }),
|
|
66381
|
+
"Share Dashboard"
|
|
65546
66382
|
] })
|
|
65547
|
-
] }),
|
|
65548
|
-
/* @__PURE__ */ jsxs(MoonUIDropdownMenuItemPro, { children: [
|
|
65549
|
-
/* @__PURE__ */ jsx(Upload, { className: "mr-2 h-4 w-4" }),
|
|
65550
|
-
"Import"
|
|
65551
|
-
] }),
|
|
65552
|
-
/* @__PURE__ */ jsx(MoonUIDropdownMenuSeparatorPro, {}),
|
|
65553
|
-
/* @__PURE__ */ jsxs(MoonUIDropdownMenuItemPro, { onClick: () => {
|
|
65554
|
-
setRefreshing(true);
|
|
65555
|
-
onRefresh?.();
|
|
65556
|
-
setTimeout(() => setRefreshing(false), 1e3);
|
|
65557
|
-
}, children: [
|
|
65558
|
-
/* @__PURE__ */ jsx(RefreshCw, { className: "mr-2 h-4 w-4" }),
|
|
65559
|
-
"Refresh Data"
|
|
65560
|
-
] }),
|
|
65561
|
-
/* @__PURE__ */ jsxs(MoonUIDropdownMenuItemPro, { children: [
|
|
65562
|
-
/* @__PURE__ */ jsx(Share2, { className: "mr-2 h-4 w-4" }),
|
|
65563
|
-
"Share Dashboard"
|
|
65564
66383
|
] })
|
|
65565
66384
|
] })
|
|
65566
66385
|
] })
|
|
65567
|
-
] })
|
|
65568
|
-
|
|
65569
|
-
|
|
66386
|
+
] }) }),
|
|
66387
|
+
/* @__PURE__ */ jsx(AnimatePresence, { children: editMode && /* @__PURE__ */ jsx(
|
|
66388
|
+
motion.div,
|
|
66389
|
+
{
|
|
66390
|
+
initial: { height: 0, opacity: 0 },
|
|
66391
|
+
animate: { height: "auto", opacity: 1 },
|
|
66392
|
+
exit: { height: 0, opacity: 0 },
|
|
66393
|
+
className: "bg-primary/10 border-t border-primary/20",
|
|
66394
|
+
children: /* @__PURE__ */ jsxs("div", { className: "px-6 py-2 flex items-center justify-between", children: [
|
|
66395
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-sm", children: [
|
|
66396
|
+
/* @__PURE__ */ jsx(Sparkles, { className: "h-4 w-4 text-primary" }),
|
|
66397
|
+
/* @__PURE__ */ jsx("span", { children: "Edit mode enabled - Drag widgets to rearrange" })
|
|
66398
|
+
] }),
|
|
66399
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
66400
|
+
/* @__PURE__ */ jsxs(
|
|
66401
|
+
MoonUIButtonPro,
|
|
66402
|
+
{
|
|
66403
|
+
variant: "ghost",
|
|
66404
|
+
size: "sm",
|
|
66405
|
+
onClick: () => setEditMode(false),
|
|
66406
|
+
children: [
|
|
66407
|
+
/* @__PURE__ */ jsx(X, { className: "h-4 w-4 mr-1" }),
|
|
66408
|
+
"Cancel"
|
|
66409
|
+
]
|
|
66410
|
+
}
|
|
66411
|
+
),
|
|
66412
|
+
/* @__PURE__ */ jsxs(
|
|
66413
|
+
MoonUIButtonPro,
|
|
66414
|
+
{
|
|
66415
|
+
variant: "primary",
|
|
66416
|
+
size: "sm",
|
|
66417
|
+
onClick: () => {
|
|
66418
|
+
setEditMode(false);
|
|
66419
|
+
},
|
|
66420
|
+
children: [
|
|
66421
|
+
/* @__PURE__ */ jsx(Save, { className: "h-4 w-4 mr-1" }),
|
|
66422
|
+
"Save Changes"
|
|
66423
|
+
]
|
|
66424
|
+
}
|
|
66425
|
+
)
|
|
66426
|
+
] })
|
|
66427
|
+
] })
|
|
66428
|
+
}
|
|
66429
|
+
) })
|
|
66430
|
+
]
|
|
66431
|
+
}
|
|
66432
|
+
),
|
|
66433
|
+
/* @__PURE__ */ jsx("div", { className: "flex-1 flex overflow-hidden", children: mode === "children" ? (
|
|
66434
|
+
// Children mode - use as layout wrapper
|
|
66435
|
+
/* @__PURE__ */ jsx("div", { className: cn("flex-1 h-full overflow-auto", contentClassName), children: /* @__PURE__ */ jsx("div", { className: "p-6 h-full", children }) })
|
|
66436
|
+
) : mode === "hybrid" ? (
|
|
66437
|
+
// Hybrid mode - both children and widgets
|
|
66438
|
+
/* @__PURE__ */ jsxs(Fragment, { children: [
|
|
66439
|
+
/* @__PURE__ */ jsx("div", { className: "flex-1 h-full overflow-auto", children: /* @__PURE__ */ jsx("div", { className: "p-6 h-full", children }) }),
|
|
66440
|
+
/* @__PURE__ */ jsx("div", { className: cn(
|
|
66441
|
+
"w-80 border-l flex-shrink-0 h-full",
|
|
66442
|
+
glassmorphism ? "bg-background/60 backdrop-blur-md" : "bg-background"
|
|
66443
|
+
), children: /* @__PURE__ */ jsx("div", { className: "p-6 h-full overflow-auto", children: /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
66444
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between mb-4", children: [
|
|
66445
|
+
/* @__PURE__ */ jsx("h3", { className: "font-semibold", children: "Widgets" }),
|
|
66446
|
+
editable && /* @__PURE__ */ jsx(
|
|
66447
|
+
MoonUIButtonPro,
|
|
66448
|
+
{
|
|
66449
|
+
variant: "ghost",
|
|
66450
|
+
size: "sm",
|
|
66451
|
+
onClick: () => setShowWidgetLibrary(true),
|
|
66452
|
+
children: /* @__PURE__ */ jsx(Plus, { className: "h-4 w-4" })
|
|
66453
|
+
}
|
|
66454
|
+
)
|
|
66455
|
+
] }),
|
|
66456
|
+
widgets.length === 0 ? /* @__PURE__ */ jsxs("div", { className: "text-center text-muted-foreground py-8", children: [
|
|
66457
|
+
/* @__PURE__ */ jsx(LayoutGrid, { className: "h-8 w-8 mx-auto mb-2 opacity-20" }),
|
|
66458
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm", children: "No widgets" }),
|
|
66459
|
+
editable && /* @__PURE__ */ jsx(
|
|
66460
|
+
MoonUIButtonPro,
|
|
66461
|
+
{
|
|
66462
|
+
variant: "ghost",
|
|
66463
|
+
size: "sm",
|
|
66464
|
+
className: "mt-2",
|
|
66465
|
+
onClick: () => setShowWidgetLibrary(true),
|
|
66466
|
+
children: "Add Widget"
|
|
66467
|
+
}
|
|
66468
|
+
)
|
|
66469
|
+
] }) : /* @__PURE__ */ jsx("div", { className: "space-y-3", children: widgets.map((widget) => /* @__PURE__ */ jsxs("div", { children: [
|
|
66470
|
+
widget.type === "metric" && widget.data && /* @__PURE__ */ jsx(
|
|
66471
|
+
MetricCard,
|
|
66472
|
+
{
|
|
66473
|
+
data: widget.data,
|
|
66474
|
+
glassmorphism,
|
|
66475
|
+
className: "w-full",
|
|
66476
|
+
compact: true
|
|
66477
|
+
}
|
|
66478
|
+
),
|
|
66479
|
+
widget.type === "chart" && widget.data && /* @__PURE__ */ jsx(
|
|
66480
|
+
ChartWidget,
|
|
66481
|
+
{
|
|
66482
|
+
id: widget.id,
|
|
66483
|
+
title: widget.title,
|
|
66484
|
+
data: widget.data,
|
|
66485
|
+
glassmorphism,
|
|
66486
|
+
height: 120,
|
|
66487
|
+
interactive: false,
|
|
66488
|
+
compact: true
|
|
66489
|
+
}
|
|
66490
|
+
),
|
|
66491
|
+
widget.type === "activity" && widget.data && /* @__PURE__ */ jsx(
|
|
66492
|
+
ActivityFeed,
|
|
66493
|
+
{
|
|
66494
|
+
items: widget.data.items || [],
|
|
66495
|
+
title: widget.title,
|
|
66496
|
+
glassmorphism,
|
|
66497
|
+
maxItems: 3,
|
|
66498
|
+
compact: true
|
|
66499
|
+
}
|
|
66500
|
+
),
|
|
66501
|
+
widget.type === "progress" && widget.data && /* @__PURE__ */ jsx(
|
|
66502
|
+
ProgressWidget,
|
|
66503
|
+
{
|
|
66504
|
+
data: widget.data,
|
|
66505
|
+
title: widget.title,
|
|
66506
|
+
glassmorphism,
|
|
66507
|
+
compact: true
|
|
66508
|
+
}
|
|
66509
|
+
),
|
|
66510
|
+
widget.type === "comparison" && widget.data && /* @__PURE__ */ jsx(
|
|
66511
|
+
ComparisonWidget,
|
|
66512
|
+
{
|
|
66513
|
+
data: widget.data,
|
|
66514
|
+
title: widget.title,
|
|
66515
|
+
glassmorphism,
|
|
66516
|
+
compact: true
|
|
66517
|
+
}
|
|
66518
|
+
),
|
|
66519
|
+
widget.type === "map" && widget.data && /* @__PURE__ */ jsx(
|
|
66520
|
+
MapWidget,
|
|
66521
|
+
{
|
|
66522
|
+
id: widget.id,
|
|
66523
|
+
title: widget.title,
|
|
66524
|
+
locations: widget.data.locations || [],
|
|
66525
|
+
glassmorphism,
|
|
66526
|
+
compact: true,
|
|
66527
|
+
height: 150
|
|
66528
|
+
}
|
|
66529
|
+
),
|
|
66530
|
+
widget.type === "table" && widget.data && /* @__PURE__ */ jsx(
|
|
66531
|
+
TableWidget,
|
|
66532
|
+
{
|
|
66533
|
+
id: widget.id,
|
|
66534
|
+
title: widget.title,
|
|
66535
|
+
columns: widget.data.columns || [],
|
|
66536
|
+
rows: widget.data.rows || [],
|
|
66537
|
+
glassmorphism,
|
|
66538
|
+
compact: true,
|
|
66539
|
+
height: 150
|
|
66540
|
+
}
|
|
66541
|
+
),
|
|
66542
|
+
widget.type === "calendar" && widget.data && /* @__PURE__ */ jsx(
|
|
66543
|
+
CalendarWidget,
|
|
66544
|
+
{
|
|
66545
|
+
id: widget.id,
|
|
66546
|
+
title: widget.title,
|
|
66547
|
+
events: widget.data.events || [],
|
|
66548
|
+
glassmorphism,
|
|
66549
|
+
compact: true,
|
|
66550
|
+
height: 180
|
|
66551
|
+
}
|
|
66552
|
+
)
|
|
66553
|
+
] }, widget.id)) })
|
|
66554
|
+
] }) }) })
|
|
66555
|
+
] })
|
|
66556
|
+
) : (
|
|
66557
|
+
// Default widgets mode
|
|
66558
|
+
/* @__PURE__ */ jsx("div", { className: "flex-1 overflow-auto", children: /* @__PURE__ */ jsx("div", { className: "p-6", children: widgets.length === 0 ? (
|
|
66559
|
+
// Empty state
|
|
66560
|
+
/* @__PURE__ */ jsxs(
|
|
65570
66561
|
motion.div,
|
|
65571
66562
|
{
|
|
65572
|
-
initial: {
|
|
65573
|
-
animate: {
|
|
65574
|
-
|
|
65575
|
-
|
|
65576
|
-
|
|
65577
|
-
|
|
65578
|
-
|
|
65579
|
-
|
|
65580
|
-
|
|
65581
|
-
/* @__PURE__ */
|
|
65582
|
-
|
|
65583
|
-
|
|
65584
|
-
{
|
|
65585
|
-
|
|
65586
|
-
|
|
65587
|
-
|
|
65588
|
-
|
|
65589
|
-
|
|
65590
|
-
|
|
65591
|
-
]
|
|
65592
|
-
}
|
|
65593
|
-
),
|
|
65594
|
-
/* @__PURE__ */ jsxs(
|
|
65595
|
-
MoonUIButtonPro,
|
|
65596
|
-
{
|
|
65597
|
-
variant: "primary",
|
|
65598
|
-
size: "sm",
|
|
65599
|
-
onClick: () => {
|
|
65600
|
-
setEditMode(false);
|
|
65601
|
-
},
|
|
65602
|
-
children: [
|
|
65603
|
-
/* @__PURE__ */ jsx(Save, { className: "h-4 w-4 mr-1" }),
|
|
65604
|
-
"Save Changes"
|
|
65605
|
-
]
|
|
65606
|
-
}
|
|
65607
|
-
)
|
|
66563
|
+
initial: { opacity: 0, scale: 0.9 },
|
|
66564
|
+
animate: { opacity: 1, scale: 1 },
|
|
66565
|
+
className: "flex flex-col items-center justify-center min-h-[400px] text-center",
|
|
66566
|
+
children: [
|
|
66567
|
+
/* @__PURE__ */ jsx("div", { className: cn(
|
|
66568
|
+
"p-4 rounded-full mb-4",
|
|
66569
|
+
glassmorphism ? "bg-background/60 backdrop-blur-sm" : "bg-muted"
|
|
66570
|
+
), children: /* @__PURE__ */ jsx(LayoutGrid, { className: "h-8 w-8 text-muted-foreground" }) }),
|
|
66571
|
+
/* @__PURE__ */ jsx("h3", { className: "text-lg font-semibold mb-2", children: "No widgets added yet" }),
|
|
66572
|
+
/* @__PURE__ */ jsx("p", { className: "text-muted-foreground mb-4", children: "Start by adding widgets or choosing a template" }),
|
|
66573
|
+
/* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
|
|
66574
|
+
/* @__PURE__ */ jsxs(MoonUIButtonPro, { onClick: () => setShowWidgetLibrary(true), children: [
|
|
66575
|
+
/* @__PURE__ */ jsx(Plus, { className: "h-4 w-4 mr-2" }),
|
|
66576
|
+
"Add Widget"
|
|
66577
|
+
] }),
|
|
66578
|
+
/* @__PURE__ */ jsxs(MoonUIButtonPro, { variant: "outline", onClick: () => setShowTemplates(true), children: [
|
|
66579
|
+
/* @__PURE__ */ jsx(LayoutGrid, { className: "h-4 w-4 mr-2" }),
|
|
66580
|
+
"Browse Templates"
|
|
66581
|
+
] })
|
|
65608
66582
|
] })
|
|
65609
|
-
]
|
|
66583
|
+
]
|
|
65610
66584
|
}
|
|
65611
|
-
)
|
|
65612
|
-
|
|
65613
|
-
|
|
65614
|
-
|
|
65615
|
-
|
|
65616
|
-
|
|
65617
|
-
|
|
65618
|
-
|
|
65619
|
-
|
|
65620
|
-
|
|
65621
|
-
|
|
65622
|
-
|
|
65623
|
-
|
|
65624
|
-
|
|
65625
|
-
|
|
65626
|
-
|
|
65627
|
-
|
|
65628
|
-
|
|
65629
|
-
|
|
65630
|
-
|
|
65631
|
-
|
|
65632
|
-
|
|
65633
|
-
|
|
65634
|
-
|
|
65635
|
-
|
|
65636
|
-
|
|
65637
|
-
|
|
65638
|
-
|
|
65639
|
-
|
|
65640
|
-
|
|
65641
|
-
|
|
65642
|
-
|
|
65643
|
-
)
|
|
65644
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between mb-4", children: [
|
|
65645
|
-
/* @__PURE__ */ jsx("h3", { className: "font-semibold", children: "Widgets" }),
|
|
65646
|
-
editable && /* @__PURE__ */ jsx(
|
|
65647
|
-
MoonUIButtonPro,
|
|
65648
|
-
{
|
|
65649
|
-
variant: "ghost",
|
|
65650
|
-
size: "sm",
|
|
65651
|
-
onClick: () => setShowWidgetLibrary(true),
|
|
65652
|
-
children: /* @__PURE__ */ jsx(Plus, { className: "h-4 w-4" })
|
|
65653
|
-
}
|
|
65654
|
-
)
|
|
65655
|
-
] }),
|
|
65656
|
-
widgets.length === 0 ? /* @__PURE__ */ jsxs("div", { className: "text-center text-muted-foreground py-8", children: [
|
|
65657
|
-
/* @__PURE__ */ jsx(LayoutGrid, { className: "h-8 w-8 mx-auto mb-2 opacity-20" }),
|
|
65658
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm", children: "No widgets" }),
|
|
65659
|
-
editable && /* @__PURE__ */ jsx(
|
|
65660
|
-
MoonUIButtonPro,
|
|
65661
|
-
{
|
|
65662
|
-
variant: "ghost",
|
|
65663
|
-
size: "sm",
|
|
65664
|
-
className: "mt-2",
|
|
65665
|
-
onClick: () => setShowWidgetLibrary(true),
|
|
65666
|
-
children: "Add Widget"
|
|
65667
|
-
}
|
|
65668
|
-
)
|
|
65669
|
-
] }) : /* @__PURE__ */ jsx("div", { className: "space-y-4", children: widgets.map((widget) => /* @__PURE__ */ jsxs("div", { className: "border rounded-lg p-4", children: [
|
|
65670
|
-
widget.type === "metric" && widget.data && /* @__PURE__ */ jsx(
|
|
65671
|
-
MetricCard,
|
|
65672
|
-
{
|
|
65673
|
-
data: widget.data,
|
|
65674
|
-
glassmorphism
|
|
65675
|
-
}
|
|
65676
|
-
),
|
|
65677
|
-
widget.type === "chart" && widget.data && /* @__PURE__ */ jsx(
|
|
65678
|
-
ChartWidget,
|
|
65679
|
-
{
|
|
65680
|
-
id: widget.id,
|
|
65681
|
-
title: widget.title,
|
|
65682
|
-
data: widget.data,
|
|
65683
|
-
glassmorphism
|
|
65684
|
-
}
|
|
65685
|
-
),
|
|
65686
|
-
widget.type === "activity" && widget.data && /* @__PURE__ */ jsx(
|
|
65687
|
-
ActivityFeed,
|
|
65688
|
-
{
|
|
65689
|
-
items: widget.data.items || [],
|
|
65690
|
-
title: widget.title,
|
|
65691
|
-
glassmorphism
|
|
65692
|
-
}
|
|
65693
|
-
)
|
|
65694
|
-
] }, widget.id)) })
|
|
65695
|
-
] }) })
|
|
65696
|
-
] })
|
|
65697
|
-
) : (
|
|
65698
|
-
// Default widgets mode
|
|
65699
|
-
/* @__PURE__ */ jsx("div", { className: "p-6", children: widgets.length === 0 ? (
|
|
65700
|
-
// Empty state
|
|
65701
|
-
/* @__PURE__ */ jsxs(
|
|
65702
|
-
motion.div,
|
|
65703
|
-
{
|
|
65704
|
-
initial: { opacity: 0, scale: 0.9 },
|
|
65705
|
-
animate: { opacity: 1, scale: 1 },
|
|
65706
|
-
className: "flex flex-col items-center justify-center min-h-[400px] text-center",
|
|
65707
|
-
children: [
|
|
65708
|
-
/* @__PURE__ */ jsx("div", { className: cn(
|
|
65709
|
-
"p-4 rounded-full mb-4",
|
|
65710
|
-
glassmorphism ? "bg-background/60 backdrop-blur-sm" : "bg-muted"
|
|
65711
|
-
), children: /* @__PURE__ */ jsx(LayoutGrid, { className: "h-8 w-8 text-muted-foreground" }) }),
|
|
65712
|
-
/* @__PURE__ */ jsx("h3", { className: "text-lg font-semibold mb-2", children: "No widgets added yet" }),
|
|
65713
|
-
/* @__PURE__ */ jsx("p", { className: "text-muted-foreground mb-4", children: "Start by adding widgets or choosing a template" }),
|
|
65714
|
-
/* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
|
|
65715
|
-
/* @__PURE__ */ jsxs(MoonUIButtonPro, { onClick: () => setShowWidgetLibrary(true), children: [
|
|
65716
|
-
/* @__PURE__ */ jsx(Plus, { className: "h-4 w-4 mr-2" }),
|
|
65717
|
-
"Add Widget"
|
|
65718
|
-
] }),
|
|
65719
|
-
/* @__PURE__ */ jsxs(MoonUIButtonPro, { variant: "outline", onClick: () => setShowTemplates(true), children: [
|
|
65720
|
-
/* @__PURE__ */ jsx(LayoutGrid, { className: "h-4 w-4 mr-2" }),
|
|
65721
|
-
"Browse Templates"
|
|
65722
|
-
] })
|
|
65723
|
-
] })
|
|
65724
|
-
]
|
|
65725
|
-
}
|
|
65726
|
-
)
|
|
65727
|
-
) : (
|
|
65728
|
-
// Dashboard grid
|
|
65729
|
-
/* @__PURE__ */ jsx(
|
|
65730
|
-
DashboardGrid,
|
|
65731
|
-
{
|
|
65732
|
-
widgets,
|
|
65733
|
-
onLayoutChange: (layout) => {
|
|
65734
|
-
const updatedWidgets = widgets.map((widget) => {
|
|
65735
|
-
const layoutItem = layout.find((l) => l.i === widget.id);
|
|
65736
|
-
if (layoutItem) {
|
|
65737
|
-
return {
|
|
65738
|
-
...widget,
|
|
65739
|
-
position: { x: layoutItem.x, y: layoutItem.y },
|
|
65740
|
-
size: { ...widget.size, w: layoutItem.w, h: layoutItem.h }
|
|
65741
|
-
};
|
|
65742
|
-
}
|
|
65743
|
-
return widget;
|
|
65744
|
-
});
|
|
65745
|
-
setWidgets(updatedWidgets);
|
|
65746
|
-
},
|
|
65747
|
-
onWidgetRemove: (widgetId) => {
|
|
65748
|
-
setWidgets((prev) => prev.filter((w) => w.id !== widgetId));
|
|
65749
|
-
onWidgetRemove?.(widgetId);
|
|
65750
|
-
},
|
|
65751
|
-
onWidgetAction: (widgetId, action, data) => {
|
|
65752
|
-
console.log("Widget action:", widgetId, action, data);
|
|
65753
|
-
},
|
|
65754
|
-
editMode,
|
|
65755
|
-
glassmorphism
|
|
65756
|
-
}
|
|
65757
|
-
)
|
|
66585
|
+
)
|
|
66586
|
+
) : (
|
|
66587
|
+
// Dashboard grid
|
|
66588
|
+
/* @__PURE__ */ jsx(
|
|
66589
|
+
DashboardGrid,
|
|
66590
|
+
{
|
|
66591
|
+
widgets,
|
|
66592
|
+
onLayoutChange: (layout) => {
|
|
66593
|
+
const updatedWidgets = widgets.map((widget) => {
|
|
66594
|
+
const layoutItem = layout.find((l) => l.i === widget.id);
|
|
66595
|
+
if (layoutItem) {
|
|
66596
|
+
return {
|
|
66597
|
+
...widget,
|
|
66598
|
+
position: { x: layoutItem.x, y: layoutItem.y },
|
|
66599
|
+
size: { ...widget.size, w: layoutItem.w, h: layoutItem.h }
|
|
66600
|
+
};
|
|
66601
|
+
}
|
|
66602
|
+
return widget;
|
|
66603
|
+
});
|
|
66604
|
+
setWidgets(updatedWidgets);
|
|
66605
|
+
},
|
|
66606
|
+
onWidgetRemove: (widgetId) => {
|
|
66607
|
+
setWidgets((prev) => prev.filter((w) => w.id !== widgetId));
|
|
66608
|
+
onWidgetRemove?.(widgetId);
|
|
66609
|
+
},
|
|
66610
|
+
onWidgetAction: (widgetId, action, data) => {
|
|
66611
|
+
console.log("Widget action:", widgetId, action, data);
|
|
66612
|
+
},
|
|
66613
|
+
editMode,
|
|
66614
|
+
glassmorphism
|
|
66615
|
+
}
|
|
66616
|
+
)
|
|
66617
|
+
) }) })
|
|
65758
66618
|
) })
|
|
65759
|
-
),
|
|
66619
|
+
] }),
|
|
66620
|
+
sidebarPosition === "right" && sidebarContent && /* @__PURE__ */ jsxs("div", { className: cn(
|
|
66621
|
+
"h-full border-l flex-shrink-0 flex flex-col",
|
|
66622
|
+
glassmorphism ? "bg-background/60 backdrop-blur-md" : "bg-background"
|
|
66623
|
+
), children: [
|
|
66624
|
+
(logo || brandName) && /* @__PURE__ */ jsx("div", { className: "p-6 border-b", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
66625
|
+
logo,
|
|
66626
|
+
brandName && /* @__PURE__ */ jsx("span", { className: "font-semibold text-lg", children: brandName })
|
|
66627
|
+
] }) }),
|
|
66628
|
+
/* @__PURE__ */ jsx("div", { className: "flex-1 overflow-hidden", children: sidebarContent })
|
|
66629
|
+
] }),
|
|
65760
66630
|
showWidgetLibrary && /* @__PURE__ */ jsx(WidgetLibrary, {}),
|
|
65761
66631
|
showTemplates && /* @__PURE__ */ jsx(TemplateGallery, {})
|
|
65762
66632
|
]
|
|
@@ -79412,7 +80282,7 @@ var tableVariants = cva(
|
|
|
79412
80282
|
}
|
|
79413
80283
|
}
|
|
79414
80284
|
);
|
|
79415
|
-
var
|
|
80285
|
+
var Table4 = t.forwardRef(({
|
|
79416
80286
|
className,
|
|
79417
80287
|
variant,
|
|
79418
80288
|
size: size4,
|
|
@@ -79457,7 +80327,7 @@ var Table3 = t.forwardRef(({
|
|
|
79457
80327
|
)
|
|
79458
80328
|
] });
|
|
79459
80329
|
});
|
|
79460
|
-
|
|
80330
|
+
Table4.displayName = "Table";
|
|
79461
80331
|
var TableHeader2 = t.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("thead", { ref, className: cn2("moonui-theme", "[&_tr]:border-b", className), ...props }));
|
|
79462
80332
|
TableHeader2.displayName = "TableHeader";
|
|
79463
80333
|
var TableBody = t.forwardRef(({ className, emptyContent, emptyMessage = "No data available", children, ...props }, ref) => {
|