@moontra/moonui-pro 2.0.11 → 2.0.13
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.mjs +1405 -433
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import * as React55 from 'react';
|
|
2
|
+
import React55__default, { useState, useRef, useCallback, forwardRef, createContext, Children, isValidElement, createElement, cloneElement, useEffect, useContext, useMemo, Fragment as Fragment$1, useLayoutEffect, useDebugValue, Component } from 'react';
|
|
3
|
+
import { motion, AnimatePresence, useMotionValue, useSpring, useTransform, animate } from 'framer-motion';
|
|
4
|
+
import { Loader2, Lock, Sparkles, Plus, ChevronDown, ChevronUp, Check, X, ChevronRight, Circle, Calendar, ChevronLeft, Edit, Trash2, Clock, MapPin, User, MoreHorizontal, GripVertical, MessageCircle, Paperclip, Bold as Bold$1, Italic as Italic$1, Underline as Underline$1, Strikethrough, Code as Code$1, Type, Heading1, Heading2, Heading3, AlignLeft, AlignCenter, AlignRight, AlignJustify, List, ListOrdered, CheckSquare, Quote, Palette, Highlighter, Link2, Image, Table as Table$1, Settings, Undo, Redo, Eye, RefreshCw, Wand2, Maximize, FileText, Languages, TrendingUp, TrendingDown, Minus, Download, Maximize2, Activity, Star, ExternalLink, BarChart3, Users, DollarSign, AlertTriangle, CheckCircle2, AlertCircle, XCircle, ArrowDownRight, ArrowUpRight } from 'lucide-react';
|
|
5
5
|
import { clsx } from 'clsx';
|
|
6
6
|
import { twMerge } from 'tailwind-merge';
|
|
7
|
+
import { cva } from 'class-variance-authority';
|
|
7
8
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
8
|
-
import { Loader2, ChevronDown, ChevronUp, Check, X, ChevronRight, Circle, Lock, Sparkles, Calendar, ChevronLeft, Edit, Trash2, Clock, MapPin, User, Plus, MoreHorizontal, GripVertical, MessageCircle, Paperclip, Bold as Bold$1, Italic as Italic$1, Underline as Underline$1, Strikethrough, Code as Code$1, Type, Heading1, Heading2, Heading3, AlignLeft, AlignCenter, AlignRight, AlignJustify, List, ListOrdered, CheckSquare, Quote, Palette, Highlighter, Link2, Image, Table as Table$1, Settings, Undo, Redo, Eye, RefreshCw, Wand2, Maximize, FileText, Languages, TrendingUp, TrendingDown, Minus, Download, Maximize2, Activity, Star, ExternalLink, BarChart3, Users, DollarSign, CheckCircle2, AlertCircle, XCircle, ArrowDownRight, ArrowUpRight } from 'lucide-react';
|
|
9
9
|
import * as ReactDOM from 'react-dom';
|
|
10
10
|
import ReactDOM__default, { createPortal, flushSync } from 'react-dom';
|
|
11
11
|
import * as AvatarPrimitive from '@radix-ui/react-avatar';
|
|
@@ -14,6 +14,7 @@ import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/w
|
|
|
14
14
|
import * as TooltipPrimitive from '@radix-ui/react-tooltip';
|
|
15
15
|
import { cn as cn$1 } from '@moontra/moonui';
|
|
16
16
|
import { ResponsiveContainer, ScatterChart, CartesianGrid, XAxis, YAxis, Tooltip as Tooltip$1, Legend, Scatter, PieChart, Pie, Cell, AreaChart, Area, ReferenceLine, Brush, BarChart, Bar, LineChart, Line, ReferenceArea } from 'recharts';
|
|
17
|
+
import { DragDropContext, Droppable, Draggable } from '@hello-pangea/dnd';
|
|
17
18
|
|
|
18
19
|
/**
|
|
19
20
|
* @moontra/moonui-pro v2.0.9
|
|
@@ -1728,7 +1729,7 @@ function styleInject(css2, { insertAt } = {}) {
|
|
|
1728
1729
|
}
|
|
1729
1730
|
|
|
1730
1731
|
// src/styles/index.css
|
|
1731
|
-
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:root {\n --bg-base: var(--background);\n --bg-subtle: var(--gray-50);\n --bg-muted: var(--gray-100);\n --bg-emphasis: var(--gray-200);\n --bg-inverse: var(--foreground);\n --surface-base: var(--background);\n --surface-overlay: var(--gray-50);\n --surface-raised: var(--background);\n --surface-sunken: var(--gray-100);\n --text-primary: var(--foreground);\n --text-secondary: var(--gray-600);\n --text-tertiary: var(--gray-500);\n --text-disabled: var(--gray-400);\n --text-inverse: var(--background);\n --text-link: var(--primary);\n --text-link-hover: var(--primary-hover);\n --brand-primary: var(--primary);\n --brand-primary-hover: var(--primary-hover);\n --brand-primary-active: var(--primary-active);\n --brand-secondary: var(--secondary);\n --state-hover: var(--gray-100);\n --state-active: var(--gray-200);\n --state-selected: var(--primary);\n --state-disabled: var(--gray-300);\n --state-focus: var(--primary);\n --feedback-success: var(--success);\n --feedback-success-light: 142 71% 95%;\n --feedback-success-dark: 142 71% 35%;\n --feedback-warning: var(--warning);\n --feedback-warning-light: 38 92% 95%;\n --feedback-warning-dark: 38 92% 40%;\n --feedback-error: var(--error);\n --feedback-error-light: 0 84% 95%;\n --feedback-error-dark: 0 84% 50%;\n --feedback-info: 217 91% 60%;\n --feedback-info-light: 217 91% 95%;\n --feedback-info-dark: 217 91% 50%;\n --border-default: var(--border);\n --border-subtle: var(--gray-200);\n --border-strong: var(--gray-400);\n --border-interactive: var(--primary);\n --border-error: var(--error);\n --border-success: var(--success);\n --border-warning: var(--warning);\n --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\n --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);\n --shadow-primary: 0 4px 14px 0 hsl(var(--primary) / 0.3);\n --shadow-success: 0 4px 14px 0 hsl(var(--success) / 0.3);\n --shadow-error: 0 4px 14px 0 hsl(var(--error) / 0.3);\n --shadow-warning: 0 4px 14px 0 hsl(var(--warning) / 0.3);\n --shadow-inner-xs: inset 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --shadow-inner-sm: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);\n --shadow-inner-md: inset 0 4px 6px -1px rgb(0 0 0 / 0.1);\n --ease-linear: linear;\n --ease-in: cubic-bezier(0.4, 0, 1, 1);\n --ease-out: cubic-bezier(0, 0, 0.2, 1);\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);\n --ease-elastic: cubic-bezier(0.68, -0.55, 0.265, 1.55);\n --ease-back-in: cubic-bezier(0.6, -0.28, 0.735, 0.045);\n --ease-back-out: cubic-bezier(0.175, 0.885, 0.32, 1.275);\n --ease-back-in-out: cubic-bezier(0.68, -0.55, 0.265, 1.55);\n --duration-instant: 0ms;\n --duration-fast: 150ms;\n --duration-normal: 250ms;\n --duration-slow: 350ms;\n --duration-slower: 500ms;\n --duration-slowest: 750ms;\n --space-0: 0;\n --space-px: 1px;\n --space-0\\.5: 0.125rem;\n --space-1: 0.25rem;\n --space-1\\.5: 0.375rem;\n --space-2: 0.5rem;\n --space-2\\.5: 0.625rem;\n --space-3: 0.75rem;\n --space-3\\.5: 0.875rem;\n --space-4: 1rem;\n --space-5: 1.25rem;\n --space-6: 1.5rem;\n --space-7: 1.75rem;\n --space-8: 2rem;\n --space-9: 2.25rem;\n --space-10: 2.5rem;\n --space-11: 2.75rem;\n --space-12: 3rem;\n --space-14: 3.5rem;\n --space-16: 4rem;\n --space-20: 5rem;\n --space-24: 6rem;\n --space-28: 7rem;\n --space-32: 8rem;\n --space-36: 9rem;\n --space-40: 10rem;\n --space-44: 11rem;\n --space-48: 12rem;\n --space-52: 13rem;\n --space-56: 14rem;\n --space-60: 15rem;\n --space-64: 16rem;\n --space-72: 18rem;\n --space-80: 20rem;\n --space-96: 24rem;\n --text-2xs: 0.625rem;\n --text-xs: 0.75rem;\n --text-sm: 0.875rem;\n --text-base: 1rem;\n --text-lg: 1.125rem;\n --text-xl: 1.25rem;\n --text-2xl: 1.5rem;\n --text-3xl: 1.875rem;\n --text-4xl: 2.25rem;\n --text-5xl: 3rem;\n --text-6xl: 3.75rem;\n --text-7xl: 4.5rem;\n --text-8xl: 6rem;\n --text-9xl: 8rem;\n --leading-none: 1;\n --leading-tight: 1.25;\n --leading-snug: 1.375;\n --leading-normal: 1.5;\n --leading-relaxed: 1.625;\n --leading-loose: 2;\n --tracking-tighter: -0.05em;\n --tracking-tight: -0.025em;\n --tracking-normal: 0;\n --tracking-wide: 0.025em;\n --tracking-wider: 0.05em;\n --tracking-widest: 0.1em;\n --font-thin: 100;\n --font-extralight: 200;\n --font-light: 300;\n --font-normal: 400;\n --font-medium: 500;\n --font-semibold: 600;\n --font-bold: 700;\n --font-extrabold: 800;\n --font-black: 900;\n --radius-none: 0;\n --radius-sm: 0.125rem;\n --radius-base: 0.25rem;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-xl: 0.75rem;\n --radius-2xl: 1rem;\n --radius-3xl: 1.5rem;\n --radius-full: 9999px;\n --z-0: 0;\n --z-10: 10;\n --z-20: 20;\n --z-30: 30;\n --z-40: 40;\n --z-50: 50;\n --z-dropdown: 1000;\n --z-sticky: 1020;\n --z-fixed: 1030;\n --z-modal-backdrop: 1040;\n --z-modal: 1050;\n --z-popover: 1060;\n --z-tooltip: 1070;\n --z-notification: 1080;\n --blur-none: 0;\n --blur-sm: 4px;\n --blur-base: 8px;\n --blur-md: 12px;\n --blur-lg: 16px;\n --blur-xl: 24px;\n --blur-2xl: 40px;\n --blur-3xl: 64px;\n}\n.dark {\n --bg-base: var(--background);\n --bg-subtle: var(--gray-800);\n --bg-muted: var(--gray-700);\n --bg-emphasis: var(--gray-600);\n --surface-overlay: var(--gray-800);\n --surface-raised: var(--gray-800);\n --surface-sunken: var(--background);\n --text-secondary: var(--gray-400);\n --text-tertiary: var(--gray-500);\n --text-disabled: var(--gray-600);\n --state-hover: var(--gray-700);\n --state-active: var(--gray-600);\n --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.3);\n --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.4), 0 1px 2px -1px rgb(0 0 0 / 0.3);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.4), 0 2px 4px -2px rgb(0 0 0 / 0.3);\n --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.4), 0 4px 6px -4px rgb(0 0 0 / 0.3);\n --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.4), 0 8px 10px -6px rgb(0 0 0 / 0.3);\n --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.5);\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;\n padding-right: 2rem;\n padding-left: 2rem;\n }\n}\n@media (min-width: 768px) {\n .container {\n max-width: 768px;\n }\n}\n@media (min-width: 1024px) {\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;\n padding-right: 5rem;\n padding-left: 5rem;\n }\n}\n@media (min-width: 1536px) {\n .container {\n max-width: 1536px;\n padding-right: 6rem;\n padding-left: 6rem;\n }\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.collapse {\n visibility: collapse;\n}\n.static {\n position: static;\n}\n.fixed {\n position: fixed;\n}\n.absolute {\n position: absolute;\n}\n.relative {\n position: relative;\n}\n.sticky {\n position: sticky;\n}\n.inset-0 {\n inset: 0px;\n}\n.bottom-2 {\n bottom: 0.5rem;\n}\n.bottom-\\[5\\%\\] {\n bottom: 5%;\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-\\[50\\%\\] {\n left: 50%;\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-2 {\n top: 0.5rem;\n}\n.top-2\\.5 {\n top: 0.625rem;\n}\n.top-4 {\n top: 1rem;\n}\n.top-\\[5\\%\\] {\n top: 5%;\n}\n.top-\\[50\\%\\] {\n top: 50%;\n}\n.top-auto {\n top: auto;\n}\n.z-0 {\n z-index: 0;\n}\n.z-10 {\n z-index: 10;\n}\n.z-40 {\n z-index: 40;\n}\n.z-50 {\n z-index: 50;\n}\n.z-\\[100\\] {\n z-index: 100;\n}\n.col-span-1 {\n grid-column: span 1 / span 1;\n}\n.col-span-2 {\n grid-column: span 2 / span 2;\n}\n.col-span-3 {\n grid-column: span 3 / span 3;\n}\n.col-span-4 {\n grid-column: span 4 / span 4;\n}\n.-m-2 {\n margin: -0.5rem;\n}\n.-mx-1 {\n margin-left: -0.25rem;\n margin-right: -0.25rem;\n}\n.-mx-4 {\n margin-left: -1rem;\n margin-right: -1rem;\n}\n.mx-1 {\n margin-left: 0.25rem;\n margin-right: 0.25rem;\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.-mb-4 {\n margin-bottom: -1rem;\n}\n.-mr-1 {\n margin-right: -0.25rem;\n}\n.-mt-4 {\n margin-top: -1rem;\n}\n.mb-1 {\n margin-bottom: 0.25rem;\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-8 {\n margin-bottom: 2rem;\n}\n.ml-1 {\n margin-left: 0.25rem;\n}\n.ml-2 {\n margin-left: 0.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-auto {\n margin-right: auto;\n}\n.mt-1 {\n margin-top: 0.25rem;\n}\n.mt-2 {\n margin-top: 0.5rem;\n}\n.mt-3 {\n margin-top: 0.75rem;\n}\n.mt-6 {\n margin-top: 1.5rem;\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.hidden {\n display: none;\n}\n.aspect-square {\n aspect-ratio: 1 / 1;\n}\n.h-0 {\n height: 0px;\n}\n.h-1\\.5 {\n height: 0.375rem;\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-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-4 {\n height: 1rem;\n}\n.h-5 {\n height: 1.25rem;\n}\n.h-6 {\n height: 1.5rem;\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-\\[65\\%\\] {\n height: 65%;\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-fit {\n height: -moz-fit-content;\n height: fit-content;\n}\n.h-full {\n height: 100%;\n}\n.h-px {\n height: 1px;\n}\n.max-h-96 {\n max-height: 24rem;\n}\n.max-h-\\[95vh\\] {\n max-height: 95vh;\n}\n.max-h-screen {\n max-height: 100vh;\n}\n.min-h-\\[200px\\] {\n min-height: 200px;\n}\n.min-h-\\[80px\\] {\n min-height: 80px;\n}\n.w-0 {\n width: 0px;\n}\n.w-0\\.5 {\n width: 0.125rem;\n}\n.w-1\\/4 {\n width: 25%;\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-20 {\n width: 5rem;\n}\n.w-3 {\n width: 0.75rem;\n}\n.w-3\\.5 {\n width: 0.875rem;\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-72 {\n width: 18rem;\n}\n.w-8 {\n width: 2rem;\n}\n.w-80 {\n width: 20rem;\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-\\[1px\\] {\n width: 1px;\n}\n.w-\\[2px\\] {\n width: 2px;\n}\n.w-\\[65\\%\\] {\n width: 65%;\n}\n.w-\\[70px\\] {\n width: 70px;\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-px {\n width: 1px;\n}\n.min-w-0 {\n min-width: 0px;\n}\n.min-w-\\[70px\\] {\n min-width: 70px;\n}\n.min-w-\\[8rem\\] {\n min-width: 8rem;\n}\n.min-w-\\[var\\(--radix-select-trigger-width\\)\\] {\n min-width: var(--radix-select-trigger-width);\n}\n.max-w-2xl {\n max-width: 42rem;\n}\n.max-w-4xl {\n max-width: 56rem;\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-md {\n max-width: 28rem;\n}\n.max-w-none {\n max-width: none;\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.grow {\n flex-grow: 1;\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-\\[-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-2 {\n --tw-rotate: 2deg;\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-95 {\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.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 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-default {\n cursor: default;\n}\n.cursor-grab {\n cursor: grab;\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.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.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-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n}\n.grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n}\n.flex-row {\n flex-direction: row;\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-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-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.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-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-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.overflow-auto {\n overflow: auto;\n}\n.overflow-hidden {\n overflow: hidden;\n}\n.overflow-x-auto {\n overflow-x: auto;\n}\n.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.whitespace-nowrap {\n white-space: nowrap;\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.border {\n border-width: 1px;\n}\n.border-2 {\n border-width: 2px;\n}\n.border-b {\n border-bottom-width: 1px;\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-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-blue-200 {\n --tw-border-opacity: 1;\n border-color: rgb(191 219 254 / var(--tw-border-opacity, 1));\n}\n.border-blue-500 {\n --tw-border-opacity: 1;\n border-color: rgb(59 130 246 / var(--tw-border-opacity, 1));\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\\/50 {\n border-color: hsl(var(--border) / 0.5);\n}\n.border-destructive {\n --tw-border-opacity: 1;\n border-color: hsl(var(--destructive) / var(--tw-border-opacity, 1));\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-400 {\n --tw-border-opacity: 1;\n border-color: rgb(156 163 175 / 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-500 {\n --tw-border-opacity: 1;\n border-color: rgb(34 197 94 / var(--tw-border-opacity, 1));\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\\/25 {\n border-color: hsl(var(--muted-foreground) / 0.25);\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\\/50 {\n border-color: hsl(var(--primary) / 0.5);\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-secondary {\n --tw-border-opacity: 1;\n border-color: hsl(var(--secondary) / 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\\/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-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 {\n --tw-border-opacity: 1;\n border-color: rgb(234 179 8 / var(--tw-border-opacity, 1));\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-t-primary {\n --tw-border-opacity: 1;\n border-top-color: hsl(var(--primary) / var(--tw-border-opacity, 1));\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-background {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--background) / var(--tw-bg-opacity, 1));\n}\n.bg-background\\/80 {\n background-color: hsl(var(--background) / 0.8);\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\\/60 {\n background-color: rgb(0 0 0 / 0.6);\n}\n.bg-black\\/80 {\n background-color: rgb(0 0 0 / 0.8);\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-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-destructive {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--destructive) / var(--tw-bg-opacity, 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-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-muted {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--muted) / var(--tw-bg-opacity, 1));\n}\n.bg-muted\\/20 {\n background-color: hsl(var(--muted) / 0.2);\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-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\\/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\\/5 {\n background-color: hsl(var(--primary) / 0.05);\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-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(168 85 247 / 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-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(239 68 68 / 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-success {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--success) / var(--tw-bg-opacity, 1));\n}\n.bg-success\\/20 {\n background-color: hsl(var(--success) / 0.2);\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\\/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-yellow-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(254 249 195 / 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-opacity-80 {\n --tw-bg-opacity: 0.8;\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.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-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-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\\/20 {\n --tw-gradient-from: rgb(255 255 255 / 0.2) 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.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.to-pink-600 {\n --tw-gradient-to: #db2777 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-purple-600 {\n --tw-gradient-to: #9333ea var(--tw-gradient-to-position);\n}\n.to-transparent {\n --tw-gradient-to: transparent var(--tw-gradient-to-position);\n}\n.to-white\\/0 {\n --tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);\n}\n.fill-current {\n fill: currentColor;\n}\n.p-0 {\n padding: 0px;\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-4 {\n padding: 1rem;\n}\n.p-5 {\n padding: 1.25rem;\n}\n.p-6 {\n padding: 1.5rem;\n}\n.p-7 {\n padding: 1.75rem;\n}\n.p-8 {\n padding: 2rem;\n}\n.px-0 {\n padding-left: 0px;\n padding-right: 0px;\n}\n.px-1 {\n padding-left: 0.25rem;\n padding-right: 0.25rem;\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-4 {\n padding-left: 1rem;\n padding-right: 1rem;\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-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-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n.py-8 {\n padding-top: 2rem;\n padding-bottom: 2rem;\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-8 {\n padding-bottom: 2rem;\n}\n.pl-10 {\n padding-left: 2.5rem;\n}\n.pl-2 {\n padding-left: 0.5rem;\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-3 {\n padding-right: 0.75rem;\n}\n.pr-8 {\n padding-right: 2rem;\n}\n.pt-0 {\n padding-top: 0px;\n}\n.pt-3 {\n padding-top: 0.75rem;\n}\n.pt-4 {\n padding-top: 1rem;\n}\n.text-left {\n text-align: left;\n}\n.text-center {\n text-align: center;\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-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.capitalize {\n text-transform: capitalize;\n}\n.italic {\n font-style: italic;\n}\n.leading-none {\n line-height: 1;\n}\n.leading-normal {\n line-height: 1.5;\n}\n.leading-snug {\n line-height: 1.375;\n}\n.tracking-tight {\n letter-spacing: -0.025em;\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-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-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-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-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-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-600 {\n --tw-text-opacity: 1;\n color: rgb(147 51 234 / 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-success {\n --tw-text-opacity: 1;\n color: hsl(var(--success) / 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-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\n}\n.text-white\\/80 {\n color: rgb(255 255 255 / 0.8);\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.underline {\n text-decoration-line: underline;\n}\n.underline-offset-4 {\n text-underline-offset: 4px;\n}\n.opacity-0 {\n opacity: 0;\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-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-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\\/50 {\n --tw-shadow-color: hsl(var(--primary) / 0.5);\n --tw-shadow: var(--tw-shadow-colored);\n}\n.shadow-purple-500\\/25 {\n --tw-shadow-color: rgb(168 85 247 / 0.25);\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-gray-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(209 213 219 / 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.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-md {\n --tw-backdrop-blur: blur(12px);\n -webkit-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 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 -webkit-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 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 -webkit-backdrop-filter;\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-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 -webkit-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-200 {\n transition-duration: 200ms;\n}\n.duration-300 {\n transition-duration: 300ms;\n}\n.ease-out {\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n}\n.shadow-sm {\n box-shadow: var(--shadow-sm);\n}\n.shadow-md {\n box-shadow: var(--shadow-md);\n}\n.shadow-lg {\n box-shadow: var(--shadow-lg);\n}\n.shadow-xl {\n box-shadow: var(--shadow-xl);\n}\n.animate-spin {\n animation: spin 1s linear infinite;\n}\n.animate-pulse {\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n.transition-all {\n transition-property: all;\n}\n.transition-colors {\n transition-property:\n color,\n background-color,\n border-color,\n text-decoration-color,\n fill,\n stroke;\n}\n.transition-opacity {\n transition-property: opacity;\n}\n.transition-shadow {\n transition-property: box-shadow;\n}\n.transition-transform {\n transition-property: transform;\n}\n.ease-out {\n transition-timing-function: var(--ease-out);\n}\n:root {\n --primary-50: 240 249 255;\n --primary-100: 224 242 254;\n --primary-200: 186 230 253;\n --primary-300: 125 211 252;\n --primary-400: 56 189 248;\n --primary-500: 14 165 233;\n --primary-600: 2 132 199;\n --primary-700: 3 105 161;\n --primary-800: 7 89 133;\n --primary-900: 12 74 110;\n --primary-950: 8 47 73;\n --secondary-50: 248 250 252;\n --secondary-100: 241 245 249;\n --secondary-200: 226 232 240;\n --secondary-300: 203 213 225;\n --secondary-400: 148 163 184;\n --secondary-500: 100 116 139;\n --secondary-600: 71 85 105;\n --secondary-700: 51 65 85;\n --secondary-800: 30 41 59;\n --secondary-900: 15 23 42;\n --secondary-950: 2 6 23;\n --success-50: 240 253 244;\n --success-100: 220 252 231;\n --success-200: 187 247 208;\n --success-300: 134 239 172;\n --success-400: 74 222 128;\n --success-500: 34 197 94;\n --success-600: 22 163 74;\n --success-700: 21 128 61;\n --success-800: 22 101 52;\n --success-900: 20 83 45;\n --success-950: 5 46 22;\n --warning-50: 254 252 232;\n --warning-100: 254 249 195;\n --warning-200: 254 240 138;\n --warning-300: 253 224 71;\n --warning-400: 250 204 21;\n --warning-500: 234 179 8;\n --warning-600: 202 138 4;\n --warning-700: 161 98 7;\n --warning-800: 133 77 14;\n --warning-900: 113 63 18;\n --warning-950: 66 32 6;\n --error-50: 254 242 242;\n --error-100: 254 226 226;\n --error-200: 254 202 202;\n --error-300: 252 165 165;\n --error-400: 248 113 113;\n --error-500: 239 68 68;\n --error-600: 220 38 38;\n --error-700: 185 28 28;\n --error-800: 153 27 27;\n --error-900: 127 29 29;\n --error-950: 69 10 10;\n --background: 0 0% 100%;\n --foreground: 222.2 47.4% 11.2%;\n --card: 0 0% 100%;\n --card-foreground: 222.2 47.4% 11.2%;\n --popover: 0 0% 100%;\n --popover-foreground: 222.2 47.4% 11.2%;\n --primary: 222.2 47.4% 11.2%;\n --primary-foreground: 210 40% 98%;\n --secondary: 210 40% 96%;\n --secondary-foreground: 222.2 47.4% 11.2%;\n --muted: 210 40% 96%;\n --muted-foreground: 215.4 16.3% 46.9%;\n --accent: 210 40% 96%;\n --accent-foreground: 222.2 47.4% 11.2%;\n --destructive: 0 100% 50%;\n --destructive-foreground: 210 40% 98%;\n --border: 214.3 31.8% 91.4%;\n --input: 214.3 31.8% 91.4%;\n --ring: 215 20.2% 65.1%;\n --chart-1: 12 76% 61%;\n --chart-2: 173 58% 39%;\n --chart-3: 197 37% 24%;\n --chart-4: 43 74% 66%;\n --chart-5: 27 87% 67%;\n --font-sans:\n "Inter",\n -apple-system,\n BlinkMacSystemFont,\n "Segoe UI",\n Roboto,\n "Helvetica Neue",\n Arial,\n sans-serif;\n --font-serif:\n "Crimson Text",\n Georgia,\n "Times New Roman",\n serif;\n --font-mono:\n "JetBrains Mono",\n "Fira Code",\n "Consolas",\n monospace;\n --text-xs: 0.75rem;\n --text-sm: 0.875rem;\n --text-base: 1rem;\n --text-lg: 1.125rem;\n --text-xl: 1.25rem;\n --text-2xl: 1.5rem;\n --text-3xl: 1.875rem;\n --text-4xl: 2.25rem;\n --text-5xl: 3rem;\n --text-6xl: 3.75rem;\n --text-7xl: 4.5rem;\n --text-8xl: 6rem;\n --text-9xl: 8rem;\n --leading-none: 1;\n --leading-tight: 1.25;\n --leading-snug: 1.375;\n --leading-normal: 1.5;\n --leading-relaxed: 1.625;\n --leading-loose: 2;\n --font-thin: 100;\n --font-extralight: 200;\n --font-light: 300;\n --font-normal: 400;\n --font-medium: 500;\n --font-semibold: 600;\n --font-bold: 700;\n --font-extrabold: 800;\n --font-black: 900;\n --spacing-0: 0;\n --spacing-px: 1px;\n --spacing-0-5: 0.125rem;\n --spacing-1: 0.25rem;\n --spacing-1-5: 0.375rem;\n --spacing-2: 0.5rem;\n --spacing-2-5: 0.625rem;\n --spacing-3: 0.75rem;\n --spacing-3-5: 0.875rem;\n --spacing-4: 1rem;\n --spacing-5: 1.25rem;\n --spacing-6: 1.5rem;\n --spacing-7: 1.75rem;\n --spacing-8: 2rem;\n --spacing-9: 2.25rem;\n --spacing-10: 2.5rem;\n --spacing-11: 2.75rem;\n --spacing-12: 3rem;\n --spacing-14: 3.5rem;\n --spacing-16: 4rem;\n --spacing-20: 5rem;\n --spacing-24: 6rem;\n --spacing-28: 7rem;\n --spacing-32: 8rem;\n --spacing-36: 9rem;\n --spacing-40: 10rem;\n --spacing-44: 11rem;\n --spacing-48: 12rem;\n --spacing-52: 13rem;\n --spacing-56: 14rem;\n --spacing-60: 15rem;\n --spacing-64: 16rem;\n --spacing-72: 18rem;\n --spacing-80: 20rem;\n --spacing-96: 24rem;\n --radius-none: 0;\n --radius-sm: 0.125rem;\n --radius-base: 0.25rem;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-xl: 0.75rem;\n --radius-2xl: 1rem;\n --radius-3xl: 1.5rem;\n --radius-full: 9999px;\n --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n --shadow-base: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);\n --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n --shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06);\n --shadow-none: 0 0 #0000;\n --elevation-0: var(--shadow-none);\n --elevation-1: var(--shadow-sm);\n --elevation-2: var(--shadow-base);\n --elevation-3: var(--shadow-md);\n --elevation-4: var(--shadow-lg);\n --elevation-5: var(--shadow-xl);\n --elevation-6: var(--shadow-2xl);\n --duration-75: 75ms;\n --duration-100: 100ms;\n --duration-150: 150ms;\n --duration-200: 200ms;\n --duration-300: 300ms;\n --duration-500: 500ms;\n --duration-700: 700ms;\n --duration-1000: 1000ms;\n --ease-linear: linear;\n --ease-in: cubic-bezier(0.4, 0, 1, 1);\n --ease-out: cubic-bezier(0, 0, 0.2, 1);\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);\n --ease-spring: cubic-bezier(0.175, 0.885, 0.32, 1.275);\n --animate-fade-in: fadeIn var(--duration-300) var(--ease-out);\n --animate-fade-out: fadeOut var(--duration-300) var(--ease-in);\n --animate-slide-in-up: slideInUp var(--duration-300) var(--ease-out);\n --animate-slide-in-down: slideInDown var(--duration-300) var(--ease-out);\n --animate-slide-in-left: slideInLeft var(--duration-300) var(--ease-out);\n --animate-slide-in-right: slideInRight var(--duration-300) var(--ease-out);\n --animate-scale-in: scaleIn var(--duration-200) var(--ease-out);\n --animate-scale-out: scaleOut var(--duration-200) var(--ease-in);\n --animate-bounce: bounce var(--duration-500) var(--ease-bounce);\n --animate-pulse: pulse var(--duration-1000) var(--ease-in-out) infinite;\n --animate-spin: spin var(--duration-1000) var(--ease-linear) infinite;\n --breakpoint-sm: 640px;\n --breakpoint-md: 768px;\n --breakpoint-lg: 1024px;\n --breakpoint-xl: 1280px;\n --breakpoint-2xl: 1536px;\n --container-sm: 640px;\n --container-md: 768px;\n --container-lg: 1024px;\n --container-xl: 1280px;\n --container-2xl: 1536px;\n --z-0: 0;\n --z-10: 10;\n --z-20: 20;\n --z-30: 30;\n --z-40: 40;\n --z-50: 50;\n --z-auto: auto;\n --z-dropdown: 1000;\n --z-sticky: 1020;\n --z-fixed: 1030;\n --z-modal-backdrop: 1040;\n --z-modal: 1050;\n --z-popover: 1060;\n --z-tooltip: 1070;\n --z-toast: 1080;\n --button-height-sm: 2rem;\n --button-height-md: 2.5rem;\n --button-height-lg: 3rem;\n --button-height-xl: 3.5rem;\n --button-padding-sm: 0.5rem 0.75rem;\n --button-padding-md: 0.625rem 1rem;\n --button-padding-lg: 0.75rem 1.25rem;\n --button-padding-xl: 1rem 1.5rem;\n --button-font-size-sm: var(--text-sm);\n --button-font-size-md: var(--text-base);\n --button-font-size-lg: var(--text-lg);\n --button-font-size-xl: var(--text-xl);\n --input-height-sm: 2rem;\n --input-height-md: 2.5rem;\n --input-height-lg: 3rem;\n --input-height-xl: 3.5rem;\n --input-padding-sm: 0.5rem 0.75rem;\n --input-padding-md: 0.625rem 1rem;\n --input-padding-lg: 0.75rem 1.25rem;\n --input-padding-xl: 1rem 1.5rem;\n --input-border-width: 1px;\n --input-border-radius: var(--radius-md);\n --input-focus-ring-width: 2px;\n --input-focus-ring-offset: 2px;\n --card-padding-sm: 1rem;\n --card-padding-md: 1.5rem;\n --card-padding-lg: 2rem;\n --card-padding-xl: 2.5rem;\n --card-border-radius: var(--radius-lg);\n --card-border-width: 1px;\n --card-shadow: var(--elevation-1);\n --card-hover-shadow: var(--elevation-2);\n}\n.dark {\n --background: 224 71% 4%;\n --foreground: 213 31% 91%;\n --card: 224 71% 4%;\n --card-foreground: 213 31% 91%;\n --popover: 224 71% 4%;\n --popover-foreground: 213 31% 91%;\n --primary: 210 40% 98%;\n --primary-foreground: 222.2 47.4% 1.2%;\n --secondary: 222.2 84% 4.9%;\n --secondary-foreground: 210 40% 98%;\n --muted: 223 47% 11%;\n --muted-foreground: 215.4 16.3% 56.9%;\n --accent: 216 34% 17%;\n --accent-foreground: 210 40% 98%;\n --destructive: 0 63% 31%;\n --destructive-foreground: 210 40% 98%;\n --border: 216 34% 17%;\n --input: 216 34% 17%;\n --ring: 216 34% 17%;\n --chart-1: 220 70% 50%;\n --chart-2: 160 60% 45%;\n --chart-3: 30 80% 55%;\n --chart-4: 280 65% 60%;\n --chart-5: 340 75% 55%;\n}\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes fadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes slideInUp {\n from {\n transform: translateY(100%);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n}\n@keyframes slideInDown {\n from {\n transform: translateY(-100%);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n}\n@keyframes slideInLeft {\n from {\n transform: translateX(-100%);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n}\n@keyframes slideInRight {\n from {\n transform: translateX(100%);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n}\n@keyframes scaleIn {\n from {\n transform: scale(0.95);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n}\n@keyframes scaleOut {\n from {\n transform: scale(1);\n opacity: 1;\n }\n to {\n transform: scale(0.95);\n opacity: 0;\n }\n}\n@keyframes bounce {\n 0%, 20%, 53%, 80%, 100% {\n transform: translate3d(0, 0, 0);\n }\n 40%, 43% {\n transform: translate3d(0, -30px, 0);\n }\n 70% {\n transform: translate3d(0, -15px, 0);\n }\n 90% {\n transform: translate3d(0, -4px, 0);\n }\n}\n@keyframes pulse {\n 0%, 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.5;\n }\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n.animate-fade-in {\n animation: var(--animate-fade-in);\n}\n.animate-fade-out {\n animation: var(--animate-fade-out);\n}\n.animate-slide-in-up {\n animation: var(--animate-slide-in-up);\n}\n.animate-slide-in-down {\n animation: var(--animate-slide-in-down);\n}\n.animate-slide-in-left {\n animation: var(--animate-slide-in-left);\n}\n.animate-slide-in-right {\n animation: var(--animate-slide-in-right);\n}\n.animate-scale-in {\n animation: var(--animate-scale-in);\n}\n.animate-scale-out {\n animation: var(--animate-scale-out);\n}\n.animate-bounce {\n animation: var(--animate-bounce);\n}\n.animate-pulse {\n animation: var(--animate-pulse);\n}\n.animate-spin {\n animation: var(--animate-spin);\n}\n@media (max-width: 639px) {\n .container {\n max-width: 100%;\n }\n}\n@media (min-width: 640px) {\n .container {\n max-width: var(--container-sm);\n }\n}\n@media (min-width: 768px) {\n .container {\n max-width: var(--container-md);\n }\n}\n@media (min-width: 1024px) {\n .container {\n max-width: var(--container-lg);\n }\n}\n@media (min-width: 1280px) {\n .container {\n max-width: var(--container-xl);\n }\n}\n@media (min-width: 1536px) {\n .container {\n max-width: var(--container-2xl);\n }\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes ping {\n 75%, 100% {\n transform: scale(2);\n opacity: 0;\n }\n}\n@keyframes pulse {\n 0%, 100% {\n opacity: 1;\n }\n 50% {\n opacity: .5;\n }\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: translateY(0);\n animation-timing-function: cubic-bezier(0, 0, 0.2, 1);\n }\n}\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes fadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes slideIn {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0);\n }\n}\n@keyframes scaleIn {\n from {\n transform: scale(0.95);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\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-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.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\\: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\\: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-primary\\/20:hover {\n border-color: hsl(var(--primary) / 0.2);\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-black\\/10:hover {\n background-color: rgb(0 0 0 / 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-muted:hover {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--muted) / var(--tw-bg-opacity, 1));\n}\n.hover\\:bg-muted\\/30:hover {\n background-color: hsl(var(--muted) / 0.3);\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\\/20:hover {\n background-color: hsl(var(--primary) / 0.2);\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-secondary:hover {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--secondary) / var(--tw-bg-opacity, 1));\n}\n.hover\\:bg-secondary\\/80:hover {\n background-color: hsl(var(--secondary) / 0.8);\n}\n.hover\\:bg-success\\/90:hover {\n background-color: hsl(var(--success) / 0.9);\n}\n.hover\\:bg-warning\\/90:hover {\n background-color: hsl(var(--warning) / 0.9);\n}\n.hover\\:bg-white\\/20:hover {\n background-color: rgb(255 255 255 / 0.2);\n}\n.hover\\:from-blue-700:hover {\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.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\\:to-pink-700:hover {\n --tw-gradient-to: #be185d var(--tw-gradient-to-position);\n}\n.hover\\:to-purple-700:hover {\n --tw-gradient-to: #7e22ce var(--tw-gradient-to-position);\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-foreground:hover {\n --tw-text-opacity: 1;\n color: hsl(var(--foreground) / 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-white:hover {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\n}\n.hover\\:underline:hover {\n text-decoration-line: underline;\n}\n.hover\\:opacity-100:hover {\n opacity: 1;\n}\n.hover\\:opacity-90:hover {\n opacity: 0.9;\n}\n.hover\\:shadow-\\[0_0_20px_rgba\\(var\\(--primary\\)\\,0\\.5\\)\\]:hover {\n --tw-shadow: 0 0 20px rgba(var(--primary),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.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\\/60:hover {\n --tw-shadow-color: hsl(var(--primary) / 0.6);\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.hover\\:shadow-md:hover {\n box-shadow: var(--shadow-md);\n}\n.hover\\:shadow-lg:hover {\n box-shadow: var(--shadow-lg);\n}\n.hover\\:shadow-xl:hover {\n box-shadow: var(--shadow-xl);\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-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\\:text-accent-foreground:focus {\n --tw-text-opacity: 1;\n color: hsl(var(--accent-foreground) / 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-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\\: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\\/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-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-error\\/30:focus-visible {\n --tw-ring-color: hsl(var(--error) / 0.3);\n}\n.focus-visible\\:ring-error\\/50:focus-visible {\n --tw-ring-color: hsl(var(--error) / 0.5);\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-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-success\\/50:focus-visible {\n --tw-ring-color: hsl(var(--success) / 0.5);\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.focus-visible\\:shadow-lg:focus-visible {\n box-shadow: var(--shadow-lg);\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\\:cursor-grabbing:active {\n cursor: grabbing;\n}\n.active\\:bg-error\\/80:active {\n background-color: hsl(var(--error) / 0.8);\n}\n.active\\:bg-gray-100:active {\n --tw-bg-opacity: 1;\n background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));\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-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-blue-800:active {\n --tw-gradient-from: #1e40af var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(30 64 175 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.active\\:to-purple-800:active {\n --tw-gradient-to: #6b21a8 var(--tw-gradient-to-position);\n}\n.active\\:shadow-\\[0_0_10px_rgba\\(var\\(--primary\\)\\,0\\.3\\)\\]:active {\n --tw-shadow: 0 0 10px rgba(var(--primary),0.3);\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.active\\:shadow-md: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.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\\:shadow-primary\\/40:active {\n --tw-shadow-color: hsl(var(--primary) / 0.4);\n --tw-shadow: var(--tw-shadow-colored);\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.active\\:shadow-sm:active {\n box-shadow: var(--shadow-sm);\n}\n.active\\:shadow-md:active {\n box-shadow: var(--shadow-md);\n}\n.disabled\\:pointer-events-none:disabled {\n pointer-events: 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\\: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.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.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-\\[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\\=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\\=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\\=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\\]\\: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\\=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\\=active\\]\\:underline[data-state=active] {\n text-decoration-line: underline;\n}\n.data-\\[state\\=active\\]\\:underline-offset-4[data-state=active] {\n text-underline-offset: 4px;\n}\n.data-\\[disabled\\]\\:opacity-50[data-disabled] {\n opacity: 0.5;\n}\n.data-\\[state\\=inactive\\]\\:opacity-60[data-state=inactive] {\n opacity: 0.6;\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\\=open\\]\\:duration-150[data-state=open] {\n transition-duration: 150ms;\n}\n.data-\\[state\\=active\\]\\:shadow-sm[data-state=active] {\n box-shadow: var(--shadow-sm);\n}\n.data-\\[state\\=active\\]\\:shadow-md[data-state=active] {\n box-shadow: var(--shadow-md);\n}\n.data-\\[state\\=checked\\]\\:animate-bounce[data-state=checked] {\n animation: bounce 1s infinite;\n}\n.data-\\[swipe\\=move\\]\\:transition-none[data-swipe=move] {\n transition: none;\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.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-error\\/20:is(.dark *) {\n border-color: hsl(var(--error) / 0.2);\n}\n.dark\\:border-error\\/30:is(.dark *) {\n border-color: hsl(var(--error) / 0.3);\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-700\\/30:is(.dark *) {\n border-color: rgb(55 65 81 / 0.3);\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-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-success\\/20:is(.dark *) {\n border-color: hsl(var(--success) / 0.2);\n}\n.dark\\:bg-blue-900\\/20:is(.dark *) {\n background-color: rgb(30 58 138 / 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\\/80:is(.dark *) {\n background-color: rgb(31 41 55 / 0.8);\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\\/50:is(.dark *) {\n background-color: rgb(17 24 39 / 0.5);\n}\n.dark\\:bg-gray-900\\/60:is(.dark *) {\n background-color: rgb(17 24 39 / 0.6);\n}\n.dark\\:bg-gray-950:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(3 7 18 / 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-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-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\\: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\\:to-primary\\/20:is(.dark *) {\n --tw-gradient-to: hsl(var(--primary) / 0.2) var(--tw-gradient-to-position);\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-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-400:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(156 163 175 / 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-orange-100:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(255 237 213 / 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-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-white:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / 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\\: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-md:is(.dark *) {\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.dark\\:shadow-sm:is(.dark *) {\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.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-900\\/30:is(.dark *) {\n --tw-shadow-color: rgb(17 24 39 / 0.3);\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-primary\\/20:is(.dark *) {\n --tw-shadow-color: hsl(var(--primary) / 0.2);\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 -webkit-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 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\\:shadow-sm:is(.dark *) {\n box-shadow: var(--shadow-sm);\n}\n.dark\\:shadow-md:is(.dark *) {\n box-shadow: var(--shadow-md);\n}\n.dark\\:shadow-lg:is(.dark *) {\n box-shadow: var(--shadow-lg);\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-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\\/50:hover:is(.dark *) {\n background-color: rgb(55 65 81 / 0.5);\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-gray-800\\/90:hover:is(.dark *) {\n background-color: rgb(31 41 55 / 0.9);\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-success\\/80:hover:is(.dark *) {\n background-color: hsl(var(--success) / 0.8);\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\\:text-blue-300:hover:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(147 197 253 / 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\\: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-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-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-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-error\\/30:focus-visible:is(.dark *) {\n --tw-ring-color: hsl(var(--error) / 0.3);\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\\/30:focus-visible:is(.dark *) {\n --tw-ring-color: hsl(var(--primary) / 0.3);\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-success\\/30:focus-visible:is(.dark *) {\n --tw-ring-color: hsl(var(--success) / 0.3);\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-error\\/70:active:is(.dark *) {\n background-color: hsl(var(--error) / 0.7);\n}\n.dark\\:active\\:bg-gray-600\\/90:active:is(.dark *) {\n background-color: rgb(75 85 99 / 0.9);\n}\n.dark\\:active\\:bg-gray-700\\/90:active:is(.dark *) {\n background-color: rgb(55 65 81 / 0.9);\n}\n.dark\\:active\\:bg-gray-800\\/90:active:is(.dark *) {\n background-color: rgb(31 41 55 / 0.9);\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\\/70:active:is(.dark *) {\n background-color: hsl(var(--success) / 0.7);\n}\n.dark\\:active\\:text-blue-500:active:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(59 130 246 / var(--tw-text-opacity, 1));\n}\n.peer:disabled ~ .dark\\:peer-disabled\\:opacity-60:is(.dark *) {\n opacity: 0.6;\n}\n.dark\\:data-\\[state\\=active\\]\\:border-primary\\/80[data-state=active]:is(.dark *) {\n border-color: hsl(var(--primary) / 0.8);\n}\n.dark\\:data-\\[state\\=active\\]\\:bg-gray-900[data-state=active]:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(17 24 39 / var(--tw-bg-opacity, 1));\n}\n.dark\\:data-\\[state\\=active\\]\\:bg-primary\\/90[data-state=active]:is(.dark *) {\n background-color: hsl(var(--primary) / 0.9);\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\\=active\\]\\:text-gray-100[data-state=active]:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(243 244 246 / var(--tw-text-opacity, 1));\n}\n.dark\\:data-\\[state\\=active\\]\\:text-gray-200[data-state=active]:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(229 231 235 / var(--tw-text-opacity, 1));\n}\n.dark\\:data-\\[state\\=active\\]\\:text-white[data-state=active]:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\n}\n.dark\\:data-\\[state\\=active\\]\\:shadow-gray-950\\/10[data-state=active]:is(.dark *) {\n --tw-shadow-color: rgb(3 7 18 / 0.1);\n --tw-shadow: var(--tw-shadow-colored);\n}\n.dark\\:data-\\[state\\=active\\]\\:shadow-gray-950\\/20[data-state=active]:is(.dark *) {\n --tw-shadow-color: rgb(3 7 18 / 0.2);\n --tw-shadow: var(--tw-shadow-colored);\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\\:max-w-\\[425px\\] {\n max-width: 425px;\n }\n .sm\\:max-w-\\[500px\\] {\n max-width: 500px;\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\\: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\\:text-left {\n text-align: left;\n }\n}\n@media (min-width: 768px) {\n .md\\:max-w-\\[420px\\] {\n max-width: 420px;\n }\n .md\\:grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n}\n@media (min-width: 1024px) {\n .lg\\:flex {\n display: flex;\n }\n .lg\\:grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 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}\n.\\[\\&\\+div\\]\\:text-xs + div {\n font-size: 0.75rem;\n line-height: 1rem;\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.\\[\\&_blockquote\\]\\:border-l-4 blockquote {\n border-left-width: 4px;\n}\n.\\[\\&_blockquote\\]\\:border-gray-300 blockquote {\n --tw-border-opacity: 1;\n border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));\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-gray-100 pre {\n --tw-bg-opacity: 1;\n background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));\n}\n.\\[\\&_pre\\]\\:p-4 pre {\n padding: 1rem;\n}\n.\\[\\&_pre\\]\\:dark\\:bg-gray-800:is(.dark *) pre {\n --tw-bg-opacity: 1;\n background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1));\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-gray-300 table td {\n --tw-border-opacity: 1;\n border-color: rgb(209 213 219 / 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-gray-300 table th {\n --tw-border-opacity: 1;\n border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));\n}\n.\\[\\&_table_th\\]\\:bg-gray-50 table th {\n --tw-bg-opacity: 1;\n background-color: rgb(249 250 251 / 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.\\[\\&_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');
|
|
1732
|
+
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:root {\n --bg-base: var(--background);\n --bg-subtle: var(--gray-50);\n --bg-muted: var(--gray-100);\n --bg-emphasis: var(--gray-200);\n --bg-inverse: var(--foreground);\n --surface-base: var(--background);\n --surface-overlay: var(--gray-50);\n --surface-raised: var(--background);\n --surface-sunken: var(--gray-100);\n --text-primary: var(--foreground);\n --text-secondary: var(--gray-600);\n --text-tertiary: var(--gray-500);\n --text-disabled: var(--gray-400);\n --text-inverse: var(--background);\n --text-link: var(--primary);\n --text-link-hover: var(--primary-hover);\n --brand-primary: var(--primary);\n --brand-primary-hover: var(--primary-hover);\n --brand-primary-active: var(--primary-active);\n --brand-secondary: var(--secondary);\n --state-hover: var(--gray-100);\n --state-active: var(--gray-200);\n --state-selected: var(--primary);\n --state-disabled: var(--gray-300);\n --state-focus: var(--primary);\n --feedback-success: var(--success);\n --feedback-success-light: 142 71% 95%;\n --feedback-success-dark: 142 71% 35%;\n --feedback-warning: var(--warning);\n --feedback-warning-light: 38 92% 95%;\n --feedback-warning-dark: 38 92% 40%;\n --feedback-error: var(--error);\n --feedback-error-light: 0 84% 95%;\n --feedback-error-dark: 0 84% 50%;\n --feedback-info: 217 91% 60%;\n --feedback-info-light: 217 91% 95%;\n --feedback-info-dark: 217 91% 50%;\n --border-default: var(--border);\n --border-subtle: var(--gray-200);\n --border-strong: var(--gray-400);\n --border-interactive: var(--primary);\n --border-error: var(--error);\n --border-success: var(--success);\n --border-warning: var(--warning);\n --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\n --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);\n --shadow-primary: 0 4px 14px 0 hsl(var(--primary) / 0.3);\n --shadow-success: 0 4px 14px 0 hsl(var(--success) / 0.3);\n --shadow-error: 0 4px 14px 0 hsl(var(--error) / 0.3);\n --shadow-warning: 0 4px 14px 0 hsl(var(--warning) / 0.3);\n --shadow-inner-xs: inset 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --shadow-inner-sm: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);\n --shadow-inner-md: inset 0 4px 6px -1px rgb(0 0 0 / 0.1);\n --ease-linear: linear;\n --ease-in: cubic-bezier(0.4, 0, 1, 1);\n --ease-out: cubic-bezier(0, 0, 0.2, 1);\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);\n --ease-elastic: cubic-bezier(0.68, -0.55, 0.265, 1.55);\n --ease-back-in: cubic-bezier(0.6, -0.28, 0.735, 0.045);\n --ease-back-out: cubic-bezier(0.175, 0.885, 0.32, 1.275);\n --ease-back-in-out: cubic-bezier(0.68, -0.55, 0.265, 1.55);\n --duration-instant: 0ms;\n --duration-fast: 150ms;\n --duration-normal: 250ms;\n --duration-slow: 350ms;\n --duration-slower: 500ms;\n --duration-slowest: 750ms;\n --space-0: 0;\n --space-px: 1px;\n --space-0\\.5: 0.125rem;\n --space-1: 0.25rem;\n --space-1\\.5: 0.375rem;\n --space-2: 0.5rem;\n --space-2\\.5: 0.625rem;\n --space-3: 0.75rem;\n --space-3\\.5: 0.875rem;\n --space-4: 1rem;\n --space-5: 1.25rem;\n --space-6: 1.5rem;\n --space-7: 1.75rem;\n --space-8: 2rem;\n --space-9: 2.25rem;\n --space-10: 2.5rem;\n --space-11: 2.75rem;\n --space-12: 3rem;\n --space-14: 3.5rem;\n --space-16: 4rem;\n --space-20: 5rem;\n --space-24: 6rem;\n --space-28: 7rem;\n --space-32: 8rem;\n --space-36: 9rem;\n --space-40: 10rem;\n --space-44: 11rem;\n --space-48: 12rem;\n --space-52: 13rem;\n --space-56: 14rem;\n --space-60: 15rem;\n --space-64: 16rem;\n --space-72: 18rem;\n --space-80: 20rem;\n --space-96: 24rem;\n --text-2xs: 0.625rem;\n --text-xs: 0.75rem;\n --text-sm: 0.875rem;\n --text-base: 1rem;\n --text-lg: 1.125rem;\n --text-xl: 1.25rem;\n --text-2xl: 1.5rem;\n --text-3xl: 1.875rem;\n --text-4xl: 2.25rem;\n --text-5xl: 3rem;\n --text-6xl: 3.75rem;\n --text-7xl: 4.5rem;\n --text-8xl: 6rem;\n --text-9xl: 8rem;\n --leading-none: 1;\n --leading-tight: 1.25;\n --leading-snug: 1.375;\n --leading-normal: 1.5;\n --leading-relaxed: 1.625;\n --leading-loose: 2;\n --tracking-tighter: -0.05em;\n --tracking-tight: -0.025em;\n --tracking-normal: 0;\n --tracking-wide: 0.025em;\n --tracking-wider: 0.05em;\n --tracking-widest: 0.1em;\n --font-thin: 100;\n --font-extralight: 200;\n --font-light: 300;\n --font-normal: 400;\n --font-medium: 500;\n --font-semibold: 600;\n --font-bold: 700;\n --font-extrabold: 800;\n --font-black: 900;\n --radius-none: 0;\n --radius-sm: 0.125rem;\n --radius-base: 0.25rem;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-xl: 0.75rem;\n --radius-2xl: 1rem;\n --radius-3xl: 1.5rem;\n --radius-full: 9999px;\n --z-0: 0;\n --z-10: 10;\n --z-20: 20;\n --z-30: 30;\n --z-40: 40;\n --z-50: 50;\n --z-dropdown: 1000;\n --z-sticky: 1020;\n --z-fixed: 1030;\n --z-modal-backdrop: 1040;\n --z-modal: 1050;\n --z-popover: 1060;\n --z-tooltip: 1070;\n --z-notification: 1080;\n --blur-none: 0;\n --blur-sm: 4px;\n --blur-base: 8px;\n --blur-md: 12px;\n --blur-lg: 16px;\n --blur-xl: 24px;\n --blur-2xl: 40px;\n --blur-3xl: 64px;\n}\n.dark {\n --bg-base: var(--background);\n --bg-subtle: var(--gray-800);\n --bg-muted: var(--gray-700);\n --bg-emphasis: var(--gray-600);\n --surface-overlay: var(--gray-800);\n --surface-raised: var(--gray-800);\n --surface-sunken: var(--background);\n --text-secondary: var(--gray-400);\n --text-tertiary: var(--gray-500);\n --text-disabled: var(--gray-600);\n --state-hover: var(--gray-700);\n --state-active: var(--gray-600);\n --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.3);\n --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.4), 0 1px 2px -1px rgb(0 0 0 / 0.3);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.4), 0 2px 4px -2px rgb(0 0 0 / 0.3);\n --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.4), 0 4px 6px -4px rgb(0 0 0 / 0.3);\n --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.4), 0 8px 10px -6px rgb(0 0 0 / 0.3);\n --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.5);\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;\n padding-right: 2rem;\n padding-left: 2rem;\n }\n}\n@media (min-width: 768px) {\n .container {\n max-width: 768px;\n }\n}\n@media (min-width: 1024px) {\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;\n padding-right: 5rem;\n padding-left: 5rem;\n }\n}\n@media (min-width: 1536px) {\n .container {\n max-width: 1536px;\n padding-right: 6rem;\n padding-left: 6rem;\n }\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.collapse {\n visibility: collapse;\n}\n.static {\n position: static;\n}\n.fixed {\n position: fixed;\n}\n.absolute {\n position: absolute;\n}\n.relative {\n position: relative;\n}\n.sticky {\n position: sticky;\n}\n.inset-0 {\n inset: 0px;\n}\n.bottom-2 {\n bottom: 0.5rem;\n}\n.bottom-4 {\n bottom: 1rem;\n}\n.bottom-\\[5\\%\\] {\n bottom: 5%;\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-\\[50\\%\\] {\n left: 50%;\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-2 {\n top: 0.5rem;\n}\n.top-2\\.5 {\n top: 0.625rem;\n}\n.top-4 {\n top: 1rem;\n}\n.top-\\[5\\%\\] {\n top: 5%;\n}\n.top-\\[50\\%\\] {\n top: 50%;\n}\n.top-auto {\n top: auto;\n}\n.z-0 {\n z-index: 0;\n}\n.z-10 {\n z-index: 10;\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.col-span-1 {\n grid-column: span 1 / span 1;\n}\n.col-span-2 {\n grid-column: span 2 / span 2;\n}\n.col-span-3 {\n grid-column: span 3 / span 3;\n}\n.col-span-4 {\n grid-column: span 4 / span 4;\n}\n.-m-2 {\n margin: -0.5rem;\n}\n.-mx-1 {\n margin-left: -0.25rem;\n margin-right: -0.25rem;\n}\n.-mx-4 {\n margin-left: -1rem;\n margin-right: -1rem;\n}\n.mx-1 {\n margin-left: 0.25rem;\n margin-right: 0.25rem;\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.-mb-4 {\n margin-bottom: -1rem;\n}\n.-mr-1 {\n margin-right: -0.25rem;\n}\n.-mt-4 {\n margin-top: -1rem;\n}\n.mb-1 {\n margin-bottom: 0.25rem;\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-8 {\n margin-bottom: 2rem;\n}\n.ml-1 {\n margin-left: 0.25rem;\n}\n.ml-2 {\n margin-left: 0.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-auto {\n margin-right: auto;\n}\n.mt-1 {\n margin-top: 0.25rem;\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.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.hidden {\n display: none;\n}\n.aspect-square {\n aspect-ratio: 1 / 1;\n}\n.h-0 {\n height: 0px;\n}\n.h-1 {\n height: 0.25rem;\n}\n.h-1\\.5 {\n height: 0.375rem;\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-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-4 {\n height: 1rem;\n}\n.h-5 {\n height: 1.25rem;\n}\n.h-6 {\n height: 1.5rem;\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-\\[65\\%\\] {\n height: 65%;\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-fit {\n height: -moz-fit-content;\n height: fit-content;\n}\n.h-full {\n height: 100%;\n}\n.h-px {\n height: 1px;\n}\n.max-h-96 {\n max-height: 24rem;\n}\n.max-h-\\[95vh\\] {\n max-height: 95vh;\n}\n.max-h-screen {\n max-height: 100vh;\n}\n.min-h-\\[200px\\] {\n min-height: 200px;\n}\n.min-h-\\[80px\\] {\n min-height: 80px;\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\\/4 {\n width: 25%;\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-20 {\n width: 5rem;\n}\n.w-3 {\n width: 0.75rem;\n}\n.w-3\\.5 {\n width: 0.875rem;\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-72 {\n width: 18rem;\n}\n.w-8 {\n width: 2rem;\n}\n.w-80 {\n width: 20rem;\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-\\[1px\\] {\n width: 1px;\n}\n.w-\\[2px\\] {\n width: 2px;\n}\n.w-\\[65\\%\\] {\n width: 65%;\n}\n.w-\\[70px\\] {\n width: 70px;\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-px {\n width: 1px;\n}\n.min-w-0 {\n min-width: 0px;\n}\n.min-w-\\[70px\\] {\n min-width: 70px;\n}\n.min-w-\\[8rem\\] {\n min-width: 8rem;\n}\n.min-w-\\[var\\(--radix-select-trigger-width\\)\\] {\n min-width: var(--radix-select-trigger-width);\n}\n.max-w-2xl {\n max-width: 42rem;\n}\n.max-w-4xl {\n max-width: 56rem;\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-md {\n max-width: 28rem;\n}\n.max-w-none {\n max-width: none;\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.grow {\n flex-grow: 1;\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-\\[-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-2 {\n --tw-rotate: 2deg;\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-95 {\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.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 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-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.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.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-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n}\n.grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n}\n.flex-row {\n flex-direction: row;\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-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-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.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-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-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.overflow-auto {\n overflow: auto;\n}\n.overflow-hidden {\n overflow: hidden;\n}\n.overflow-x-auto {\n overflow-x: auto;\n}\n.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.whitespace-nowrap {\n white-space: nowrap;\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.border {\n border-width: 1px;\n}\n.border-2 {\n border-width: 2px;\n}\n.border-b {\n border-bottom-width: 1px;\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-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-blue-200 {\n --tw-border-opacity: 1;\n border-color: rgb(191 219 254 / var(--tw-border-opacity, 1));\n}\n.border-blue-500 {\n --tw-border-opacity: 1;\n border-color: rgb(59 130 246 / var(--tw-border-opacity, 1));\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\\/50 {\n border-color: hsl(var(--border) / 0.5);\n}\n.border-destructive {\n --tw-border-opacity: 1;\n border-color: hsl(var(--destructive) / var(--tw-border-opacity, 1));\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-400 {\n --tw-border-opacity: 1;\n border-color: rgb(156 163 175 / 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-500 {\n --tw-border-opacity: 1;\n border-color: rgb(34 197 94 / var(--tw-border-opacity, 1));\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\\/25 {\n border-color: hsl(var(--muted-foreground) / 0.25);\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\\/50 {\n border-color: hsl(var(--primary) / 0.5);\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-secondary {\n --tw-border-opacity: 1;\n border-color: hsl(var(--secondary) / 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\\/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-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 {\n --tw-border-opacity: 1;\n border-color: rgb(234 179 8 / var(--tw-border-opacity, 1));\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-t-primary {\n --tw-border-opacity: 1;\n border-top-color: hsl(var(--primary) / var(--tw-border-opacity, 1));\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-background {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--background) / var(--tw-bg-opacity, 1));\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-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\\/60 {\n background-color: rgb(0 0 0 / 0.6);\n}\n.bg-black\\/80 {\n background-color: rgb(0 0 0 / 0.8);\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-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-destructive {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--destructive) / var(--tw-bg-opacity, 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-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-600 {\n --tw-bg-opacity: 1;\n background-color: rgb(22 163 74 / 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\\/20 {\n background-color: hsl(var(--muted) / 0.2);\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-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\\/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\\/5 {\n background-color: hsl(var(--primary) / 0.05);\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-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(168 85 247 / 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-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(239 68 68 / var(--tw-bg-opacity, 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-success {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--success) / var(--tw-bg-opacity, 1));\n}\n.bg-success\\/20 {\n background-color: hsl(var(--success) / 0.2);\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\\/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-yellow-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(254 249 195 / 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-opacity-80 {\n --tw-bg-opacity: 0.8;\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.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-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-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\\/20 {\n --tw-gradient-from: rgb(255 255 255 / 0.2) 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.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-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.to-black\\/5 {\n --tw-gradient-to: rgb(0 0 0 / 0.05) var(--tw-gradient-to-position);\n}\n.to-pink-600 {\n --tw-gradient-to: #db2777 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-purple-600 {\n --tw-gradient-to: #9333ea var(--tw-gradient-to-position);\n}\n.to-transparent {\n --tw-gradient-to: transparent var(--tw-gradient-to-position);\n}\n.to-white\\/0 {\n --tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);\n}\n.fill-current {\n fill: currentColor;\n}\n.p-0 {\n padding: 0px;\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-4 {\n padding: 1rem;\n}\n.p-5 {\n padding: 1.25rem;\n}\n.p-6 {\n padding: 1.5rem;\n}\n.p-7 {\n padding: 1.75rem;\n}\n.p-8 {\n padding: 2rem;\n}\n.px-0 {\n padding-left: 0px;\n padding-right: 0px;\n}\n.px-1 {\n padding-left: 0.25rem;\n padding-right: 0.25rem;\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-4 {\n padding-left: 1rem;\n padding-right: 1rem;\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-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-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\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-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-8 {\n padding-bottom: 2rem;\n}\n.pl-10 {\n padding-left: 2.5rem;\n}\n.pl-2 {\n padding-left: 0.5rem;\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-3 {\n padding-right: 0.75rem;\n}\n.pr-8 {\n padding-right: 2rem;\n}\n.pt-0 {\n padding-top: 0px;\n}\n.pt-3 {\n padding-top: 0.75rem;\n}\n.pt-4 {\n padding-top: 1rem;\n}\n.text-left {\n text-align: left;\n}\n.text-center {\n text-align: center;\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-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.capitalize {\n text-transform: capitalize;\n}\n.italic {\n font-style: italic;\n}\n.leading-none {\n line-height: 1;\n}\n.leading-normal {\n line-height: 1.5;\n}\n.leading-snug {\n line-height: 1.375;\n}\n.tracking-tight {\n letter-spacing: -0.025em;\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-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-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-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-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-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-600 {\n --tw-text-opacity: 1;\n color: rgb(147 51 234 / 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-success {\n --tw-text-opacity: 1;\n color: hsl(var(--success) / 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-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\n}\n.text-white\\/80 {\n color: rgb(255 255 255 / 0.8);\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.underline {\n text-decoration-line: underline;\n}\n.underline-offset-4 {\n text-underline-offset: 4px;\n}\n.opacity-0 {\n opacity: 0;\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-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-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\\/50 {\n --tw-shadow-color: hsl(var(--primary) / 0.5);\n --tw-shadow: var(--tw-shadow-colored);\n}\n.shadow-purple-500\\/25 {\n --tw-shadow-color: rgb(168 85 247 / 0.25);\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-gray-300 {\n --tw-ring-opacity: 1;\n --tw-ring-color: rgb(209 213 219 / 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.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-md {\n --tw-backdrop-blur: blur(12px);\n -webkit-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 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 -webkit-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 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 -webkit-backdrop-filter;\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-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 -webkit-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-200 {\n transition-duration: 200ms;\n}\n.duration-300 {\n transition-duration: 300ms;\n}\n.ease-out {\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1);\n}\n.shadow-sm {\n box-shadow: var(--shadow-sm);\n}\n.shadow-md {\n box-shadow: var(--shadow-md);\n}\n.shadow-lg {\n box-shadow: var(--shadow-lg);\n}\n.shadow-xl {\n box-shadow: var(--shadow-xl);\n}\n.animate-spin {\n animation: spin 1s linear infinite;\n}\n.animate-pulse {\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n.transition-all {\n transition-property: all;\n}\n.transition-colors {\n transition-property:\n color,\n background-color,\n border-color,\n text-decoration-color,\n fill,\n stroke;\n}\n.transition-opacity {\n transition-property: opacity;\n}\n.transition-shadow {\n transition-property: box-shadow;\n}\n.transition-transform {\n transition-property: transform;\n}\n.ease-out {\n transition-timing-function: var(--ease-out);\n}\n:root {\n --primary-50: 240 249 255;\n --primary-100: 224 242 254;\n --primary-200: 186 230 253;\n --primary-300: 125 211 252;\n --primary-400: 56 189 248;\n --primary-500: 14 165 233;\n --primary-600: 2 132 199;\n --primary-700: 3 105 161;\n --primary-800: 7 89 133;\n --primary-900: 12 74 110;\n --primary-950: 8 47 73;\n --secondary-50: 248 250 252;\n --secondary-100: 241 245 249;\n --secondary-200: 226 232 240;\n --secondary-300: 203 213 225;\n --secondary-400: 148 163 184;\n --secondary-500: 100 116 139;\n --secondary-600: 71 85 105;\n --secondary-700: 51 65 85;\n --secondary-800: 30 41 59;\n --secondary-900: 15 23 42;\n --secondary-950: 2 6 23;\n --success-50: 240 253 244;\n --success-100: 220 252 231;\n --success-200: 187 247 208;\n --success-300: 134 239 172;\n --success-400: 74 222 128;\n --success-500: 34 197 94;\n --success-600: 22 163 74;\n --success-700: 21 128 61;\n --success-800: 22 101 52;\n --success-900: 20 83 45;\n --success-950: 5 46 22;\n --warning-50: 254 252 232;\n --warning-100: 254 249 195;\n --warning-200: 254 240 138;\n --warning-300: 253 224 71;\n --warning-400: 250 204 21;\n --warning-500: 234 179 8;\n --warning-600: 202 138 4;\n --warning-700: 161 98 7;\n --warning-800: 133 77 14;\n --warning-900: 113 63 18;\n --warning-950: 66 32 6;\n --error-50: 254 242 242;\n --error-100: 254 226 226;\n --error-200: 254 202 202;\n --error-300: 252 165 165;\n --error-400: 248 113 113;\n --error-500: 239 68 68;\n --error-600: 220 38 38;\n --error-700: 185 28 28;\n --error-800: 153 27 27;\n --error-900: 127 29 29;\n --error-950: 69 10 10;\n --background: 0 0% 100%;\n --foreground: 222.2 47.4% 11.2%;\n --card: 0 0% 100%;\n --card-foreground: 222.2 47.4% 11.2%;\n --popover: 0 0% 100%;\n --popover-foreground: 222.2 47.4% 11.2%;\n --primary: 222.2 47.4% 11.2%;\n --primary-foreground: 210 40% 98%;\n --secondary: 210 40% 96%;\n --secondary-foreground: 222.2 47.4% 11.2%;\n --muted: 210 40% 96%;\n --muted-foreground: 215.4 16.3% 46.9%;\n --accent: 210 40% 96%;\n --accent-foreground: 222.2 47.4% 11.2%;\n --destructive: 0 100% 50%;\n --destructive-foreground: 210 40% 98%;\n --border: 214.3 31.8% 91.4%;\n --input: 214.3 31.8% 91.4%;\n --ring: 215 20.2% 65.1%;\n --chart-1: 12 76% 61%;\n --chart-2: 173 58% 39%;\n --chart-3: 197 37% 24%;\n --chart-4: 43 74% 66%;\n --chart-5: 27 87% 67%;\n --font-sans:\n "Inter",\n -apple-system,\n BlinkMacSystemFont,\n "Segoe UI",\n Roboto,\n "Helvetica Neue",\n Arial,\n sans-serif;\n --font-serif:\n "Crimson Text",\n Georgia,\n "Times New Roman",\n serif;\n --font-mono:\n "JetBrains Mono",\n "Fira Code",\n "Consolas",\n monospace;\n --text-xs: 0.75rem;\n --text-sm: 0.875rem;\n --text-base: 1rem;\n --text-lg: 1.125rem;\n --text-xl: 1.25rem;\n --text-2xl: 1.5rem;\n --text-3xl: 1.875rem;\n --text-4xl: 2.25rem;\n --text-5xl: 3rem;\n --text-6xl: 3.75rem;\n --text-7xl: 4.5rem;\n --text-8xl: 6rem;\n --text-9xl: 8rem;\n --leading-none: 1;\n --leading-tight: 1.25;\n --leading-snug: 1.375;\n --leading-normal: 1.5;\n --leading-relaxed: 1.625;\n --leading-loose: 2;\n --font-thin: 100;\n --font-extralight: 200;\n --font-light: 300;\n --font-normal: 400;\n --font-medium: 500;\n --font-semibold: 600;\n --font-bold: 700;\n --font-extrabold: 800;\n --font-black: 900;\n --spacing-0: 0;\n --spacing-px: 1px;\n --spacing-0-5: 0.125rem;\n --spacing-1: 0.25rem;\n --spacing-1-5: 0.375rem;\n --spacing-2: 0.5rem;\n --spacing-2-5: 0.625rem;\n --spacing-3: 0.75rem;\n --spacing-3-5: 0.875rem;\n --spacing-4: 1rem;\n --spacing-5: 1.25rem;\n --spacing-6: 1.5rem;\n --spacing-7: 1.75rem;\n --spacing-8: 2rem;\n --spacing-9: 2.25rem;\n --spacing-10: 2.5rem;\n --spacing-11: 2.75rem;\n --spacing-12: 3rem;\n --spacing-14: 3.5rem;\n --spacing-16: 4rem;\n --spacing-20: 5rem;\n --spacing-24: 6rem;\n --spacing-28: 7rem;\n --spacing-32: 8rem;\n --spacing-36: 9rem;\n --spacing-40: 10rem;\n --spacing-44: 11rem;\n --spacing-48: 12rem;\n --spacing-52: 13rem;\n --spacing-56: 14rem;\n --spacing-60: 15rem;\n --spacing-64: 16rem;\n --spacing-72: 18rem;\n --spacing-80: 20rem;\n --spacing-96: 24rem;\n --radius-none: 0;\n --radius-sm: 0.125rem;\n --radius-base: 0.25rem;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-xl: 0.75rem;\n --radius-2xl: 1rem;\n --radius-3xl: 1.5rem;\n --radius-full: 9999px;\n --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n --shadow-base: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);\n --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n --shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06);\n --shadow-none: 0 0 #0000;\n --elevation-0: var(--shadow-none);\n --elevation-1: var(--shadow-sm);\n --elevation-2: var(--shadow-base);\n --elevation-3: var(--shadow-md);\n --elevation-4: var(--shadow-lg);\n --elevation-5: var(--shadow-xl);\n --elevation-6: var(--shadow-2xl);\n --duration-75: 75ms;\n --duration-100: 100ms;\n --duration-150: 150ms;\n --duration-200: 200ms;\n --duration-300: 300ms;\n --duration-500: 500ms;\n --duration-700: 700ms;\n --duration-1000: 1000ms;\n --ease-linear: linear;\n --ease-in: cubic-bezier(0.4, 0, 1, 1);\n --ease-out: cubic-bezier(0, 0, 0.2, 1);\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);\n --ease-spring: cubic-bezier(0.175, 0.885, 0.32, 1.275);\n --animate-fade-in: fadeIn var(--duration-300) var(--ease-out);\n --animate-fade-out: fadeOut var(--duration-300) var(--ease-in);\n --animate-slide-in-up: slideInUp var(--duration-300) var(--ease-out);\n --animate-slide-in-down: slideInDown var(--duration-300) var(--ease-out);\n --animate-slide-in-left: slideInLeft var(--duration-300) var(--ease-out);\n --animate-slide-in-right: slideInRight var(--duration-300) var(--ease-out);\n --animate-scale-in: scaleIn var(--duration-200) var(--ease-out);\n --animate-scale-out: scaleOut var(--duration-200) var(--ease-in);\n --animate-bounce: bounce var(--duration-500) var(--ease-bounce);\n --animate-pulse: pulse var(--duration-1000) var(--ease-in-out) infinite;\n --animate-spin: spin var(--duration-1000) var(--ease-linear) infinite;\n --breakpoint-sm: 640px;\n --breakpoint-md: 768px;\n --breakpoint-lg: 1024px;\n --breakpoint-xl: 1280px;\n --breakpoint-2xl: 1536px;\n --container-sm: 640px;\n --container-md: 768px;\n --container-lg: 1024px;\n --container-xl: 1280px;\n --container-2xl: 1536px;\n --z-0: 0;\n --z-10: 10;\n --z-20: 20;\n --z-30: 30;\n --z-40: 40;\n --z-50: 50;\n --z-auto: auto;\n --z-dropdown: 1000;\n --z-sticky: 1020;\n --z-fixed: 1030;\n --z-modal-backdrop: 1040;\n --z-modal: 1050;\n --z-popover: 1060;\n --z-tooltip: 1070;\n --z-toast: 1080;\n --button-height-sm: 2rem;\n --button-height-md: 2.5rem;\n --button-height-lg: 3rem;\n --button-height-xl: 3.5rem;\n --button-padding-sm: 0.5rem 0.75rem;\n --button-padding-md: 0.625rem 1rem;\n --button-padding-lg: 0.75rem 1.25rem;\n --button-padding-xl: 1rem 1.5rem;\n --button-font-size-sm: var(--text-sm);\n --button-font-size-md: var(--text-base);\n --button-font-size-lg: var(--text-lg);\n --button-font-size-xl: var(--text-xl);\n --input-height-sm: 2rem;\n --input-height-md: 2.5rem;\n --input-height-lg: 3rem;\n --input-height-xl: 3.5rem;\n --input-padding-sm: 0.5rem 0.75rem;\n --input-padding-md: 0.625rem 1rem;\n --input-padding-lg: 0.75rem 1.25rem;\n --input-padding-xl: 1rem 1.5rem;\n --input-border-width: 1px;\n --input-border-radius: var(--radius-md);\n --input-focus-ring-width: 2px;\n --input-focus-ring-offset: 2px;\n --card-padding-sm: 1rem;\n --card-padding-md: 1.5rem;\n --card-padding-lg: 2rem;\n --card-padding-xl: 2.5rem;\n --card-border-radius: var(--radius-lg);\n --card-border-width: 1px;\n --card-shadow: var(--elevation-1);\n --card-hover-shadow: var(--elevation-2);\n}\n.dark {\n --background: 224 71% 4%;\n --foreground: 213 31% 91%;\n --card: 224 71% 4%;\n --card-foreground: 213 31% 91%;\n --popover: 224 71% 4%;\n --popover-foreground: 213 31% 91%;\n --primary: 210 40% 98%;\n --primary-foreground: 222.2 47.4% 1.2%;\n --secondary: 222.2 84% 4.9%;\n --secondary-foreground: 210 40% 98%;\n --muted: 223 47% 11%;\n --muted-foreground: 215.4 16.3% 56.9%;\n --accent: 216 34% 17%;\n --accent-foreground: 210 40% 98%;\n --destructive: 0 63% 31%;\n --destructive-foreground: 210 40% 98%;\n --border: 216 34% 17%;\n --input: 216 34% 17%;\n --ring: 216 34% 17%;\n --chart-1: 220 70% 50%;\n --chart-2: 160 60% 45%;\n --chart-3: 30 80% 55%;\n --chart-4: 280 65% 60%;\n --chart-5: 340 75% 55%;\n}\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes fadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes slideInUp {\n from {\n transform: translateY(100%);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n}\n@keyframes slideInDown {\n from {\n transform: translateY(-100%);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n}\n@keyframes slideInLeft {\n from {\n transform: translateX(-100%);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n}\n@keyframes slideInRight {\n from {\n transform: translateX(100%);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n}\n@keyframes scaleIn {\n from {\n transform: scale(0.95);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n}\n@keyframes scaleOut {\n from {\n transform: scale(1);\n opacity: 1;\n }\n to {\n transform: scale(0.95);\n opacity: 0;\n }\n}\n@keyframes bounce {\n 0%, 20%, 53%, 80%, 100% {\n transform: translate3d(0, 0, 0);\n }\n 40%, 43% {\n transform: translate3d(0, -30px, 0);\n }\n 70% {\n transform: translate3d(0, -15px, 0);\n }\n 90% {\n transform: translate3d(0, -4px, 0);\n }\n}\n@keyframes pulse {\n 0%, 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.5;\n }\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n.animate-fade-in {\n animation: var(--animate-fade-in);\n}\n.animate-fade-out {\n animation: var(--animate-fade-out);\n}\n.animate-slide-in-up {\n animation: var(--animate-slide-in-up);\n}\n.animate-slide-in-down {\n animation: var(--animate-slide-in-down);\n}\n.animate-slide-in-left {\n animation: var(--animate-slide-in-left);\n}\n.animate-slide-in-right {\n animation: var(--animate-slide-in-right);\n}\n.animate-scale-in {\n animation: var(--animate-scale-in);\n}\n.animate-scale-out {\n animation: var(--animate-scale-out);\n}\n.animate-bounce {\n animation: var(--animate-bounce);\n}\n.animate-pulse {\n animation: var(--animate-pulse);\n}\n.animate-spin {\n animation: var(--animate-spin);\n}\n@media (max-width: 639px) {\n .container {\n max-width: 100%;\n }\n}\n@media (min-width: 640px) {\n .container {\n max-width: var(--container-sm);\n }\n}\n@media (min-width: 768px) {\n .container {\n max-width: var(--container-md);\n }\n}\n@media (min-width: 1024px) {\n .container {\n max-width: var(--container-lg);\n }\n}\n@media (min-width: 1280px) {\n .container {\n max-width: var(--container-xl);\n }\n}\n@media (min-width: 1536px) {\n .container {\n max-width: var(--container-2xl);\n }\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes ping {\n 75%, 100% {\n transform: scale(2);\n opacity: 0;\n }\n}\n@keyframes pulse {\n 0%, 100% {\n opacity: 1;\n }\n 50% {\n opacity: .5;\n }\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: translateY(0);\n animation-timing-function: cubic-bezier(0, 0, 0.2, 1);\n }\n}\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes fadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes slideIn {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0);\n }\n}\n@keyframes scaleIn {\n from {\n transform: scale(0.95);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\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-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.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\\: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\\: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-primary\\/20:hover {\n border-color: hsl(var(--primary) / 0.2);\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-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-card\\/90:hover {\n background-color: hsl(var(--card) / 0.9);\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-muted:hover {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--muted) / var(--tw-bg-opacity, 1));\n}\n.hover\\:bg-muted\\/30:hover {\n background-color: hsl(var(--muted) / 0.3);\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\\/20:hover {\n background-color: hsl(var(--primary) / 0.2);\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-secondary:hover {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--secondary) / var(--tw-bg-opacity, 1));\n}\n.hover\\:bg-secondary\\/80:hover {\n background-color: hsl(var(--secondary) / 0.8);\n}\n.hover\\:bg-success\\/90:hover {\n background-color: hsl(var(--success) / 0.9);\n}\n.hover\\:bg-warning\\/90:hover {\n background-color: hsl(var(--warning) / 0.9);\n}\n.hover\\:bg-white\\/20:hover {\n background-color: rgb(255 255 255 / 0.2);\n}\n.hover\\:from-blue-700:hover {\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.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\\:to-pink-700:hover {\n --tw-gradient-to: #be185d var(--tw-gradient-to-position);\n}\n.hover\\:to-purple-700:hover {\n --tw-gradient-to: #7e22ce var(--tw-gradient-to-position);\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-foreground:hover {\n --tw-text-opacity: 1;\n color: hsl(var(--foreground) / 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-white:hover {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\n}\n.hover\\:underline:hover {\n text-decoration-line: underline;\n}\n.hover\\:opacity-100:hover {\n opacity: 1;\n}\n.hover\\:opacity-90:hover {\n opacity: 0.9;\n}\n.hover\\:shadow-\\[0_0_20px_rgba\\(var\\(--primary\\)\\,0\\.5\\)\\]:hover {\n --tw-shadow: 0 0 20px rgba(var(--primary),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.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\\/60:hover {\n --tw-shadow-color: hsl(var(--primary) / 0.6);\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.hover\\:shadow-md:hover {\n box-shadow: var(--shadow-md);\n}\n.hover\\:shadow-lg:hover {\n box-shadow: var(--shadow-lg);\n}\n.hover\\:shadow-xl:hover {\n box-shadow: var(--shadow-xl);\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-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\\:text-accent-foreground:focus {\n --tw-text-opacity: 1;\n color: hsl(var(--accent-foreground) / 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-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\\: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\\/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-error\\/30:focus-visible {\n --tw-ring-color: hsl(var(--error) / 0.3);\n}\n.focus-visible\\:ring-error\\/50:focus-visible {\n --tw-ring-color: hsl(var(--error) / 0.5);\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-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-success\\/50:focus-visible {\n --tw-ring-color: hsl(var(--success) / 0.5);\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.focus-visible\\:shadow-lg:focus-visible {\n box-shadow: var(--shadow-lg);\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\\:cursor-grabbing:active {\n cursor: grabbing;\n}\n.active\\:bg-error\\/80:active {\n background-color: hsl(var(--error) / 0.8);\n}\n.active\\:bg-gray-100:active {\n --tw-bg-opacity: 1;\n background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));\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-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-blue-800:active {\n --tw-gradient-from: #1e40af var(--tw-gradient-from-position);\n --tw-gradient-to: rgb(30 64 175 / 0) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\n}\n.active\\:to-purple-800:active {\n --tw-gradient-to: #6b21a8 var(--tw-gradient-to-position);\n}\n.active\\:shadow-\\[0_0_10px_rgba\\(var\\(--primary\\)\\,0\\.3\\)\\]:active {\n --tw-shadow: 0 0 10px rgba(var(--primary),0.3);\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.active\\:shadow-md: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.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\\:shadow-primary\\/40:active {\n --tw-shadow-color: hsl(var(--primary) / 0.4);\n --tw-shadow: var(--tw-shadow-colored);\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.active\\:shadow-sm:active {\n box-shadow: var(--shadow-sm);\n}\n.active\\:shadow-md:active {\n box-shadow: var(--shadow-md);\n}\n.disabled\\:pointer-events-none:disabled {\n pointer-events: 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\\: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.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.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-\\[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\\=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\\=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\\=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\\]\\: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\\=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\\=active\\]\\:underline[data-state=active] {\n text-decoration-line: underline;\n}\n.data-\\[state\\=active\\]\\:underline-offset-4[data-state=active] {\n text-underline-offset: 4px;\n}\n.data-\\[disabled\\]\\:opacity-50[data-disabled] {\n opacity: 0.5;\n}\n.data-\\[state\\=inactive\\]\\:opacity-60[data-state=inactive] {\n opacity: 0.6;\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\\=open\\]\\:duration-150[data-state=open] {\n transition-duration: 150ms;\n}\n.data-\\[state\\=active\\]\\:shadow-sm[data-state=active] {\n box-shadow: var(--shadow-sm);\n}\n.data-\\[state\\=active\\]\\:shadow-md[data-state=active] {\n box-shadow: var(--shadow-md);\n}\n.data-\\[state\\=checked\\]\\:animate-bounce[data-state=checked] {\n animation: bounce 1s infinite;\n}\n.data-\\[swipe\\=move\\]\\:transition-none[data-swipe=move] {\n transition: none;\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.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-error\\/20:is(.dark *) {\n border-color: hsl(var(--error) / 0.2);\n}\n.dark\\:border-error\\/30:is(.dark *) {\n border-color: hsl(var(--error) / 0.3);\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-700\\/30:is(.dark *) {\n border-color: rgb(55 65 81 / 0.3);\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-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-success\\/20:is(.dark *) {\n border-color: hsl(var(--success) / 0.2);\n}\n.dark\\:bg-blue-900\\/20:is(.dark *) {\n background-color: rgb(30 58 138 / 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\\/80:is(.dark *) {\n background-color: rgb(31 41 55 / 0.8);\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\\/50:is(.dark *) {\n background-color: rgb(17 24 39 / 0.5);\n}\n.dark\\:bg-gray-900\\/60:is(.dark *) {\n background-color: rgb(17 24 39 / 0.6);\n}\n.dark\\:bg-gray-950:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(3 7 18 / 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-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-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\\: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\\:to-primary\\/20:is(.dark *) {\n --tw-gradient-to: hsl(var(--primary) / 0.2) var(--tw-gradient-to-position);\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-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-400:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(156 163 175 / 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-orange-100:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(255 237 213 / 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-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-white:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / 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\\: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-md:is(.dark *) {\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.dark\\:shadow-sm:is(.dark *) {\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.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-900\\/30:is(.dark *) {\n --tw-shadow-color: rgb(17 24 39 / 0.3);\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-primary\\/20:is(.dark *) {\n --tw-shadow-color: hsl(var(--primary) / 0.2);\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 -webkit-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 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\\:shadow-sm:is(.dark *) {\n box-shadow: var(--shadow-sm);\n}\n.dark\\:shadow-md:is(.dark *) {\n box-shadow: var(--shadow-md);\n}\n.dark\\:shadow-lg:is(.dark *) {\n box-shadow: var(--shadow-lg);\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-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\\/50:hover:is(.dark *) {\n background-color: rgb(55 65 81 / 0.5);\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-gray-800\\/90:hover:is(.dark *) {\n background-color: rgb(31 41 55 / 0.9);\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-success\\/80:hover:is(.dark *) {\n background-color: hsl(var(--success) / 0.8);\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\\:text-blue-300:hover:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(147 197 253 / 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\\: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-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-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-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-error\\/30:focus-visible:is(.dark *) {\n --tw-ring-color: hsl(var(--error) / 0.3);\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\\/30:focus-visible:is(.dark *) {\n --tw-ring-color: hsl(var(--primary) / 0.3);\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-success\\/30:focus-visible:is(.dark *) {\n --tw-ring-color: hsl(var(--success) / 0.3);\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-error\\/70:active:is(.dark *) {\n background-color: hsl(var(--error) / 0.7);\n}\n.dark\\:active\\:bg-gray-600\\/90:active:is(.dark *) {\n background-color: rgb(75 85 99 / 0.9);\n}\n.dark\\:active\\:bg-gray-700\\/90:active:is(.dark *) {\n background-color: rgb(55 65 81 / 0.9);\n}\n.dark\\:active\\:bg-gray-800\\/90:active:is(.dark *) {\n background-color: rgb(31 41 55 / 0.9);\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\\/70:active:is(.dark *) {\n background-color: hsl(var(--success) / 0.7);\n}\n.dark\\:active\\:text-blue-500:active:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(59 130 246 / var(--tw-text-opacity, 1));\n}\n.peer:disabled ~ .dark\\:peer-disabled\\:opacity-60:is(.dark *) {\n opacity: 0.6;\n}\n.dark\\:data-\\[state\\=active\\]\\:border-primary\\/80[data-state=active]:is(.dark *) {\n border-color: hsl(var(--primary) / 0.8);\n}\n.dark\\:data-\\[state\\=active\\]\\:bg-gray-900[data-state=active]:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(17 24 39 / var(--tw-bg-opacity, 1));\n}\n.dark\\:data-\\[state\\=active\\]\\:bg-primary\\/90[data-state=active]:is(.dark *) {\n background-color: hsl(var(--primary) / 0.9);\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\\=active\\]\\:text-gray-100[data-state=active]:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(243 244 246 / var(--tw-text-opacity, 1));\n}\n.dark\\:data-\\[state\\=active\\]\\:text-gray-200[data-state=active]:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(229 231 235 / var(--tw-text-opacity, 1));\n}\n.dark\\:data-\\[state\\=active\\]\\:text-white[data-state=active]:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\n}\n.dark\\:data-\\[state\\=active\\]\\:shadow-gray-950\\/10[data-state=active]:is(.dark *) {\n --tw-shadow-color: rgb(3 7 18 / 0.1);\n --tw-shadow: var(--tw-shadow-colored);\n}\n.dark\\:data-\\[state\\=active\\]\\:shadow-gray-950\\/20[data-state=active]:is(.dark *) {\n --tw-shadow-color: rgb(3 7 18 / 0.2);\n --tw-shadow: var(--tw-shadow-colored);\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\\:max-w-\\[425px\\] {\n max-width: 425px;\n }\n .sm\\:max-w-\\[500px\\] {\n max-width: 500px;\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\\: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\\:text-left {\n text-align: left;\n }\n}\n@media (min-width: 768px) {\n .md\\:max-w-\\[420px\\] {\n max-width: 420px;\n }\n .md\\:grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n}\n@media (min-width: 1024px) {\n .lg\\:flex {\n display: flex;\n }\n .lg\\:grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 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}\n.\\[\\&\\+div\\]\\:text-xs + div {\n font-size: 0.75rem;\n line-height: 1rem;\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.\\[\\&_blockquote\\]\\:border-l-4 blockquote {\n border-left-width: 4px;\n}\n.\\[\\&_blockquote\\]\\:border-gray-300 blockquote {\n --tw-border-opacity: 1;\n border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));\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-gray-100 pre {\n --tw-bg-opacity: 1;\n background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));\n}\n.\\[\\&_pre\\]\\:p-4 pre {\n padding: 1rem;\n}\n.\\[\\&_pre\\]\\:dark\\:bg-gray-800:is(.dark *) pre {\n --tw-bg-opacity: 1;\n background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1));\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-gray-300 table td {\n --tw-border-opacity: 1;\n border-color: rgb(209 213 219 / 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-gray-300 table th {\n --tw-border-opacity: 1;\n border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));\n}\n.\\[\\&_table_th\\]\\:bg-gray-50 table th {\n --tw-bg-opacity: 1;\n background-color: rgb(249 250 251 / 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.\\[\\&_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');
|
|
1732
1733
|
function cn(...inputs) {
|
|
1733
1734
|
return twMerge(clsx(inputs));
|
|
1734
1735
|
}
|
|
@@ -1900,7 +1901,7 @@ var cardVariants = cva(
|
|
|
1900
1901
|
}
|
|
1901
1902
|
}
|
|
1902
1903
|
);
|
|
1903
|
-
var Card =
|
|
1904
|
+
var Card = React55.forwardRef(
|
|
1904
1905
|
({ className, variant, size: size4, radius, interactive, microInteraction = "lift", ...props }, ref) => {
|
|
1905
1906
|
if (interactive && microInteraction !== "none") {
|
|
1906
1907
|
const interactionProps = {
|
|
@@ -1928,7 +1929,7 @@ var Card = React50.forwardRef(
|
|
|
1928
1929
|
}
|
|
1929
1930
|
);
|
|
1930
1931
|
Card.displayName = "Card";
|
|
1931
|
-
var CardHeader =
|
|
1932
|
+
var CardHeader = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1932
1933
|
"div",
|
|
1933
1934
|
{
|
|
1934
1935
|
ref,
|
|
@@ -1937,7 +1938,7 @@ var CardHeader = React50.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
1937
1938
|
}
|
|
1938
1939
|
));
|
|
1939
1940
|
CardHeader.displayName = "CardHeader";
|
|
1940
|
-
var CardTitle =
|
|
1941
|
+
var CardTitle = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1941
1942
|
"h3",
|
|
1942
1943
|
{
|
|
1943
1944
|
ref,
|
|
@@ -1946,7 +1947,7 @@ var CardTitle = React50.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
1946
1947
|
}
|
|
1947
1948
|
));
|
|
1948
1949
|
CardTitle.displayName = "CardTitle";
|
|
1949
|
-
var CardDescription =
|
|
1950
|
+
var CardDescription = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1950
1951
|
"p",
|
|
1951
1952
|
{
|
|
1952
1953
|
ref,
|
|
@@ -1955,9 +1956,9 @@ var CardDescription = React50.forwardRef(({ className, ...props }, ref) => /* @_
|
|
|
1955
1956
|
}
|
|
1956
1957
|
));
|
|
1957
1958
|
CardDescription.displayName = "CardDescription";
|
|
1958
|
-
var CardContent =
|
|
1959
|
+
var CardContent = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("pt-0", className), ...props }));
|
|
1959
1960
|
CardContent.displayName = "CardContent";
|
|
1960
|
-
var CardFooter =
|
|
1961
|
+
var CardFooter = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1961
1962
|
"div",
|
|
1962
1963
|
{
|
|
1963
1964
|
ref,
|
|
@@ -2115,7 +2116,7 @@ var buttonVariants = cva(
|
|
|
2115
2116
|
}
|
|
2116
2117
|
}
|
|
2117
2118
|
);
|
|
2118
|
-
var Button =
|
|
2119
|
+
var Button = React55.forwardRef(
|
|
2119
2120
|
({
|
|
2120
2121
|
className,
|
|
2121
2122
|
variant,
|
|
@@ -2150,6 +2151,917 @@ var Button = React50.forwardRef(
|
|
|
2150
2151
|
}
|
|
2151
2152
|
);
|
|
2152
2153
|
Button.displayName = "Button";
|
|
2154
|
+
|
|
2155
|
+
// src/hooks/use-subscription.ts
|
|
2156
|
+
function useSubscription() {
|
|
2157
|
+
return {
|
|
2158
|
+
isLoading: false,
|
|
2159
|
+
isAuthenticated: true,
|
|
2160
|
+
isAdmin: false,
|
|
2161
|
+
hasProAccess: true,
|
|
2162
|
+
// Pro package kullanıcıları varsayılan olarak pro erişime sahip
|
|
2163
|
+
subscriptionPlan: "pro",
|
|
2164
|
+
subscription: {
|
|
2165
|
+
status: "active",
|
|
2166
|
+
plan: "pro"
|
|
2167
|
+
}
|
|
2168
|
+
};
|
|
2169
|
+
}
|
|
2170
|
+
var animatedButtonVariants = cva(
|
|
2171
|
+
"relative inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 overflow-hidden",
|
|
2172
|
+
{
|
|
2173
|
+
variants: {
|
|
2174
|
+
variant: {
|
|
2175
|
+
default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
|
|
2176
|
+
destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
|
|
2177
|
+
outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
|
|
2178
|
+
secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
|
|
2179
|
+
ghost: "hover:bg-accent hover:text-accent-foreground",
|
|
2180
|
+
link: "text-primary underline-offset-4 hover:underline"
|
|
2181
|
+
},
|
|
2182
|
+
size: {
|
|
2183
|
+
default: "h-9 px-4 py-2",
|
|
2184
|
+
sm: "h-8 rounded-md px-3 text-xs",
|
|
2185
|
+
lg: "h-10 rounded-md px-8"
|
|
2186
|
+
}
|
|
2187
|
+
},
|
|
2188
|
+
defaultVariants: {
|
|
2189
|
+
variant: "default",
|
|
2190
|
+
size: "default"
|
|
2191
|
+
}
|
|
2192
|
+
}
|
|
2193
|
+
);
|
|
2194
|
+
var AnimatedButtonInternal = React55__default.forwardRef(
|
|
2195
|
+
({ className, variant, size: size4, state = "idle", onStateChange, children, onClick, ...props }, ref) => {
|
|
2196
|
+
const [internalState, setInternalState] = useState("idle");
|
|
2197
|
+
const currentState = state !== "idle" ? state : internalState;
|
|
2198
|
+
const handleClick2 = async (e) => {
|
|
2199
|
+
if (currentState === "loading")
|
|
2200
|
+
return;
|
|
2201
|
+
setInternalState("loading");
|
|
2202
|
+
onStateChange?.("loading");
|
|
2203
|
+
if (onClick) {
|
|
2204
|
+
try {
|
|
2205
|
+
await onClick(e);
|
|
2206
|
+
setInternalState("success");
|
|
2207
|
+
onStateChange?.("success");
|
|
2208
|
+
setTimeout(() => {
|
|
2209
|
+
setInternalState("idle");
|
|
2210
|
+
onStateChange?.("idle");
|
|
2211
|
+
}, 2e3);
|
|
2212
|
+
} catch (error) {
|
|
2213
|
+
setInternalState("error");
|
|
2214
|
+
onStateChange?.("error");
|
|
2215
|
+
setTimeout(() => {
|
|
2216
|
+
setInternalState("idle");
|
|
2217
|
+
onStateChange?.("idle");
|
|
2218
|
+
}, 2e3);
|
|
2219
|
+
}
|
|
2220
|
+
}
|
|
2221
|
+
};
|
|
2222
|
+
const getIcon = () => {
|
|
2223
|
+
switch (currentState) {
|
|
2224
|
+
case "loading":
|
|
2225
|
+
return /* @__PURE__ */ jsx(Loader2, { className: "h-4 w-4 animate-spin" });
|
|
2226
|
+
case "success":
|
|
2227
|
+
return /* @__PURE__ */ jsx(Check, { className: "h-4 w-4" });
|
|
2228
|
+
case "error":
|
|
2229
|
+
return /* @__PURE__ */ jsx(X, { className: "h-4 w-4" });
|
|
2230
|
+
default:
|
|
2231
|
+
return null;
|
|
2232
|
+
}
|
|
2233
|
+
};
|
|
2234
|
+
const getBackgroundColor = () => {
|
|
2235
|
+
switch (currentState) {
|
|
2236
|
+
case "success":
|
|
2237
|
+
return "bg-green-600";
|
|
2238
|
+
case "error":
|
|
2239
|
+
return "bg-red-600";
|
|
2240
|
+
default:
|
|
2241
|
+
return "";
|
|
2242
|
+
}
|
|
2243
|
+
};
|
|
2244
|
+
return /* @__PURE__ */ jsxs(
|
|
2245
|
+
"button",
|
|
2246
|
+
{
|
|
2247
|
+
className: cn(animatedButtonVariants({ variant, size: size4 }), className),
|
|
2248
|
+
ref,
|
|
2249
|
+
onClick: handleClick2,
|
|
2250
|
+
disabled: currentState === "loading" || props.disabled,
|
|
2251
|
+
...props,
|
|
2252
|
+
children: [
|
|
2253
|
+
/* @__PURE__ */ jsxs(
|
|
2254
|
+
motion.div,
|
|
2255
|
+
{
|
|
2256
|
+
className: "flex items-center gap-2",
|
|
2257
|
+
animate: {
|
|
2258
|
+
width: currentState !== "idle" ? "auto" : "100%"
|
|
2259
|
+
},
|
|
2260
|
+
transition: { duration: 0.2 },
|
|
2261
|
+
children: [
|
|
2262
|
+
/* @__PURE__ */ jsx(
|
|
2263
|
+
motion.div,
|
|
2264
|
+
{
|
|
2265
|
+
animate: {
|
|
2266
|
+
scale: currentState !== "idle" ? 1 : 0,
|
|
2267
|
+
width: currentState !== "idle" ? "auto" : 0
|
|
2268
|
+
},
|
|
2269
|
+
transition: { duration: 0.2 },
|
|
2270
|
+
className: "flex items-center",
|
|
2271
|
+
children: getIcon()
|
|
2272
|
+
}
|
|
2273
|
+
),
|
|
2274
|
+
/* @__PURE__ */ jsx(
|
|
2275
|
+
motion.span,
|
|
2276
|
+
{
|
|
2277
|
+
animate: {
|
|
2278
|
+
opacity: currentState === "idle" ? 1 : 0,
|
|
2279
|
+
x: currentState !== "idle" ? -20 : 0
|
|
2280
|
+
},
|
|
2281
|
+
transition: { duration: 0.2 },
|
|
2282
|
+
children
|
|
2283
|
+
}
|
|
2284
|
+
)
|
|
2285
|
+
]
|
|
2286
|
+
}
|
|
2287
|
+
),
|
|
2288
|
+
/* @__PURE__ */ jsx(
|
|
2289
|
+
motion.div,
|
|
2290
|
+
{
|
|
2291
|
+
className: cn(
|
|
2292
|
+
"absolute inset-0 rounded-md",
|
|
2293
|
+
getBackgroundColor()
|
|
2294
|
+
),
|
|
2295
|
+
initial: { scale: 0, opacity: 0 },
|
|
2296
|
+
animate: {
|
|
2297
|
+
scale: currentState === "success" || currentState === "error" ? 1 : 0,
|
|
2298
|
+
opacity: currentState === "success" || currentState === "error" ? 1 : 0
|
|
2299
|
+
},
|
|
2300
|
+
transition: { duration: 0.3 },
|
|
2301
|
+
style: { zIndex: -1 }
|
|
2302
|
+
}
|
|
2303
|
+
)
|
|
2304
|
+
]
|
|
2305
|
+
}
|
|
2306
|
+
);
|
|
2307
|
+
}
|
|
2308
|
+
);
|
|
2309
|
+
AnimatedButtonInternal.displayName = "AnimatedButtonInternal";
|
|
2310
|
+
var AnimatedButton = React55__default.forwardRef(
|
|
2311
|
+
({ className, ...props }, ref) => {
|
|
2312
|
+
const docsProAccess = { hasAccess: true };
|
|
2313
|
+
const { hasProAccess, isLoading } = useSubscription();
|
|
2314
|
+
if (!docsProAccess.isDocsMode && !isLoading && !hasProAccess) {
|
|
2315
|
+
return /* @__PURE__ */ jsx(Card, { className: cn("w-fit", className), children: /* @__PURE__ */ jsx(CardContent, { className: "py-6 text-center", children: /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
2316
|
+
/* @__PURE__ */ jsx("div", { className: "rounded-full bg-purple-100 dark:bg-purple-900/30 p-3 w-fit mx-auto", children: /* @__PURE__ */ jsx(Lock, { className: "h-6 w-6 text-purple-600 dark:text-purple-400" }) }),
|
|
2317
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
2318
|
+
/* @__PURE__ */ jsx("h3", { className: "font-semibold text-sm mb-2", children: "Pro Feature" }),
|
|
2319
|
+
/* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs mb-4", children: "Animated Button is available exclusively to MoonUI Pro subscribers." }),
|
|
2320
|
+
/* @__PURE__ */ jsx("a", { href: "/pricing", children: /* @__PURE__ */ jsxs(Button, { size: "sm", children: [
|
|
2321
|
+
/* @__PURE__ */ jsx(Sparkles, { className: "mr-2 h-4 w-4" }),
|
|
2322
|
+
"Upgrade to Pro"
|
|
2323
|
+
] }) })
|
|
2324
|
+
] })
|
|
2325
|
+
] }) }) });
|
|
2326
|
+
}
|
|
2327
|
+
return /* @__PURE__ */ jsx(AnimatedButtonInternal, { className, ref, ...props });
|
|
2328
|
+
}
|
|
2329
|
+
);
|
|
2330
|
+
AnimatedButton.displayName = "AnimatedButton";
|
|
2331
|
+
var ErrorBoundaryInternal = class extends Component {
|
|
2332
|
+
constructor(props) {
|
|
2333
|
+
super(props);
|
|
2334
|
+
this.state = { hasError: false };
|
|
2335
|
+
}
|
|
2336
|
+
static getDerivedStateFromError(error) {
|
|
2337
|
+
return { hasError: true, error };
|
|
2338
|
+
}
|
|
2339
|
+
componentDidCatch(error, errorInfo) {
|
|
2340
|
+
this.props.onError?.(error, errorInfo);
|
|
2341
|
+
console.error("ErrorBoundary caught an error:", error, errorInfo);
|
|
2342
|
+
}
|
|
2343
|
+
render() {
|
|
2344
|
+
if (this.state.hasError) {
|
|
2345
|
+
if (this.props.fallback) {
|
|
2346
|
+
return this.props.fallback;
|
|
2347
|
+
}
|
|
2348
|
+
return /* @__PURE__ */ jsx("div", { className: cn("flex items-center justify-center min-h-[200px] p-4", this.props.className), children: /* @__PURE__ */ jsxs(Card, { className: "w-full max-w-md", children: [
|
|
2349
|
+
/* @__PURE__ */ jsxs(CardHeader, { className: "text-center", children: [
|
|
2350
|
+
/* @__PURE__ */ jsx("div", { className: "mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-red-100", children: /* @__PURE__ */ jsx(AlertTriangle, { className: "h-6 w-6 text-red-600" }) }),
|
|
2351
|
+
/* @__PURE__ */ jsx(CardTitle, { children: "Something went wrong" }),
|
|
2352
|
+
/* @__PURE__ */ jsx(CardDescription, { children: "An error occurred while rendering this component" })
|
|
2353
|
+
] }),
|
|
2354
|
+
/* @__PURE__ */ jsx(CardContent, { className: "text-center", children: /* @__PURE__ */ jsxs(
|
|
2355
|
+
Button,
|
|
2356
|
+
{
|
|
2357
|
+
onClick: () => this.setState({ hasError: false, error: void 0 }),
|
|
2358
|
+
className: "mt-4",
|
|
2359
|
+
children: [
|
|
2360
|
+
/* @__PURE__ */ jsx(RefreshCw, { className: "mr-2 h-4 w-4" }),
|
|
2361
|
+
"Try again"
|
|
2362
|
+
]
|
|
2363
|
+
}
|
|
2364
|
+
) })
|
|
2365
|
+
] }) });
|
|
2366
|
+
}
|
|
2367
|
+
return this.props.children;
|
|
2368
|
+
}
|
|
2369
|
+
};
|
|
2370
|
+
function ErrorBoundaryWrapper(props) {
|
|
2371
|
+
const docsProAccess = { hasAccess: true };
|
|
2372
|
+
const { hasProAccess, isLoading } = useSubscription();
|
|
2373
|
+
if (!docsProAccess.isDocsMode && !isLoading && !hasProAccess) {
|
|
2374
|
+
return /* @__PURE__ */ jsx(Card, { className: cn("w-fit", props.className), children: /* @__PURE__ */ jsx(CardContent, { className: "py-6 text-center", children: /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
2375
|
+
/* @__PURE__ */ jsx("div", { className: "rounded-full bg-purple-100 dark:bg-purple-900/30 p-3 w-fit mx-auto", children: /* @__PURE__ */ jsx(Lock, { className: "h-6 w-6 text-purple-600 dark:text-purple-400" }) }),
|
|
2376
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
2377
|
+
/* @__PURE__ */ jsx("h3", { className: "font-semibold text-sm mb-2", children: "Pro Feature" }),
|
|
2378
|
+
/* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs mb-4", children: "Error Boundary is available exclusively to MoonUI Pro subscribers." }),
|
|
2379
|
+
/* @__PURE__ */ jsx("a", { href: "/pricing", children: /* @__PURE__ */ jsxs(Button, { size: "sm", children: [
|
|
2380
|
+
/* @__PURE__ */ jsx(Sparkles, { className: "mr-2 h-4 w-4" }),
|
|
2381
|
+
"Upgrade to Pro"
|
|
2382
|
+
] }) })
|
|
2383
|
+
] })
|
|
2384
|
+
] }) }) });
|
|
2385
|
+
}
|
|
2386
|
+
return /* @__PURE__ */ jsx(ErrorBoundaryInternal, { ...props });
|
|
2387
|
+
}
|
|
2388
|
+
var ErrorBoundary = ErrorBoundaryWrapper;
|
|
2389
|
+
var FloatingActionButtonInternal = React55__default.forwardRef(
|
|
2390
|
+
({
|
|
2391
|
+
actions = [],
|
|
2392
|
+
position = "bottom-right",
|
|
2393
|
+
size: size4 = "default",
|
|
2394
|
+
className,
|
|
2395
|
+
children,
|
|
2396
|
+
onClick,
|
|
2397
|
+
...props
|
|
2398
|
+
}, ref) => {
|
|
2399
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
2400
|
+
const sizeClasses = {
|
|
2401
|
+
sm: "h-10 w-10",
|
|
2402
|
+
default: "h-12 w-12",
|
|
2403
|
+
lg: "h-14 w-14"
|
|
2404
|
+
};
|
|
2405
|
+
const positionClasses = {
|
|
2406
|
+
"bottom-right": "bottom-4 right-4",
|
|
2407
|
+
"bottom-left": "bottom-4 left-4",
|
|
2408
|
+
"top-right": "top-4 right-4",
|
|
2409
|
+
"top-left": "top-4 left-4"
|
|
2410
|
+
};
|
|
2411
|
+
const actionPositions = {
|
|
2412
|
+
"bottom-right": { x: -60, y: 0 },
|
|
2413
|
+
"bottom-left": { x: 60, y: 0 },
|
|
2414
|
+
"top-right": { x: -60, y: 0 },
|
|
2415
|
+
"top-left": { x: 60, y: 0 }
|
|
2416
|
+
};
|
|
2417
|
+
const handleMainClick = (e) => {
|
|
2418
|
+
if (actions.length > 0) {
|
|
2419
|
+
setIsOpen(!isOpen);
|
|
2420
|
+
} else if (onClick) {
|
|
2421
|
+
onClick(e);
|
|
2422
|
+
}
|
|
2423
|
+
};
|
|
2424
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("fixed z-50", positionClasses[position]), children: [
|
|
2425
|
+
/* @__PURE__ */ jsx(AnimatePresence, { children: isOpen && actions.length > 0 && /* @__PURE__ */ jsx("div", { className: "absolute", children: actions.map((action, index2) => /* @__PURE__ */ jsxs(
|
|
2426
|
+
motion.div,
|
|
2427
|
+
{
|
|
2428
|
+
initial: {
|
|
2429
|
+
scale: 0,
|
|
2430
|
+
opacity: 0,
|
|
2431
|
+
x: 0,
|
|
2432
|
+
y: 0
|
|
2433
|
+
},
|
|
2434
|
+
animate: {
|
|
2435
|
+
scale: 1,
|
|
2436
|
+
opacity: 1,
|
|
2437
|
+
x: actionPositions[position].x,
|
|
2438
|
+
y: actionPositions[position].y * (index2 + 1) - 10
|
|
2439
|
+
},
|
|
2440
|
+
exit: {
|
|
2441
|
+
scale: 0,
|
|
2442
|
+
opacity: 0,
|
|
2443
|
+
x: 0,
|
|
2444
|
+
y: 0
|
|
2445
|
+
},
|
|
2446
|
+
transition: {
|
|
2447
|
+
delay: index2 * 0.05,
|
|
2448
|
+
type: "spring",
|
|
2449
|
+
stiffness: 200,
|
|
2450
|
+
damping: 15
|
|
2451
|
+
},
|
|
2452
|
+
className: "absolute flex items-center gap-2",
|
|
2453
|
+
style: {
|
|
2454
|
+
transform: `translate(${position.includes("right") ? "0" : "0"}, ${position.includes("bottom") ? "0" : "0"})`
|
|
2455
|
+
},
|
|
2456
|
+
children: [
|
|
2457
|
+
/* @__PURE__ */ jsx(
|
|
2458
|
+
motion.div,
|
|
2459
|
+
{
|
|
2460
|
+
initial: { opacity: 0, scale: 0.8 },
|
|
2461
|
+
animate: { opacity: 1, scale: 1 },
|
|
2462
|
+
exit: { opacity: 0, scale: 0.8 },
|
|
2463
|
+
transition: { delay: (index2 + 1) * 0.05 },
|
|
2464
|
+
className: cn(
|
|
2465
|
+
"px-2 py-1 bg-background/90 backdrop-blur-sm text-sm font-medium rounded-md shadow-sm border whitespace-nowrap",
|
|
2466
|
+
position.includes("right") ? "mr-2" : "ml-2"
|
|
2467
|
+
),
|
|
2468
|
+
children: action.label
|
|
2469
|
+
}
|
|
2470
|
+
),
|
|
2471
|
+
/* @__PURE__ */ jsx(
|
|
2472
|
+
"button",
|
|
2473
|
+
{
|
|
2474
|
+
onClick: () => {
|
|
2475
|
+
action.onClick();
|
|
2476
|
+
setIsOpen(false);
|
|
2477
|
+
},
|
|
2478
|
+
className: cn(
|
|
2479
|
+
"inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground shadow-lg hover:bg-primary/90 transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
|
|
2480
|
+
sizeClasses[size4]
|
|
2481
|
+
),
|
|
2482
|
+
children: action.icon
|
|
2483
|
+
}
|
|
2484
|
+
)
|
|
2485
|
+
]
|
|
2486
|
+
},
|
|
2487
|
+
index2
|
|
2488
|
+
)) }) }),
|
|
2489
|
+
/* @__PURE__ */ jsx(
|
|
2490
|
+
motion.button,
|
|
2491
|
+
{
|
|
2492
|
+
ref,
|
|
2493
|
+
className: cn(
|
|
2494
|
+
"inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground shadow-lg hover:bg-primary/90 transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
|
|
2495
|
+
sizeClasses[size4],
|
|
2496
|
+
className
|
|
2497
|
+
),
|
|
2498
|
+
onClick: handleMainClick,
|
|
2499
|
+
whileHover: { scale: 1.1 },
|
|
2500
|
+
whileTap: { scale: 0.9 },
|
|
2501
|
+
animate: { rotate: isOpen ? 45 : 0 },
|
|
2502
|
+
transition: { duration: 0.2 },
|
|
2503
|
+
...props,
|
|
2504
|
+
children: children || (actions.length > 0 ? /* @__PURE__ */ jsx(Plus, { className: "h-5 w-5" }) : /* @__PURE__ */ jsx(Plus, { className: "h-5 w-5" }))
|
|
2505
|
+
}
|
|
2506
|
+
),
|
|
2507
|
+
/* @__PURE__ */ jsx(AnimatePresence, { children: isOpen && /* @__PURE__ */ jsx(
|
|
2508
|
+
motion.div,
|
|
2509
|
+
{
|
|
2510
|
+
initial: { opacity: 0 },
|
|
2511
|
+
animate: { opacity: 1 },
|
|
2512
|
+
exit: { opacity: 0 },
|
|
2513
|
+
className: "fixed inset-0 z-[-1]",
|
|
2514
|
+
onClick: () => setIsOpen(false)
|
|
2515
|
+
}
|
|
2516
|
+
) })
|
|
2517
|
+
] });
|
|
2518
|
+
}
|
|
2519
|
+
);
|
|
2520
|
+
FloatingActionButtonInternal.displayName = "FloatingActionButtonInternal";
|
|
2521
|
+
var FloatingActionButton = React55__default.forwardRef(
|
|
2522
|
+
({ className, ...props }, ref) => {
|
|
2523
|
+
const docsProAccess = { hasAccess: true };
|
|
2524
|
+
const { hasProAccess, isLoading } = useSubscription();
|
|
2525
|
+
if (!docsProAccess.isDocsMode && !isLoading && !hasProAccess) {
|
|
2526
|
+
return /* @__PURE__ */ jsx(Card, { className: cn("w-fit", className), children: /* @__PURE__ */ jsx(CardContent, { className: "py-6 text-center", children: /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
2527
|
+
/* @__PURE__ */ jsx("div", { className: "rounded-full bg-purple-100 dark:bg-purple-900/30 p-3 w-fit mx-auto", children: /* @__PURE__ */ jsx(Lock, { className: "h-6 w-6 text-purple-600 dark:text-purple-400" }) }),
|
|
2528
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
2529
|
+
/* @__PURE__ */ jsx("h3", { className: "font-semibold text-sm mb-2", children: "Pro Feature" }),
|
|
2530
|
+
/* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs mb-4", children: "Floating Action Button is available exclusively to MoonUI Pro subscribers." }),
|
|
2531
|
+
/* @__PURE__ */ jsx("a", { href: "/pricing", children: /* @__PURE__ */ jsxs(Button, { size: "sm", children: [
|
|
2532
|
+
/* @__PURE__ */ jsx(Sparkles, { className: "mr-2 h-4 w-4" }),
|
|
2533
|
+
"Upgrade to Pro"
|
|
2534
|
+
] }) })
|
|
2535
|
+
] })
|
|
2536
|
+
] }) }) });
|
|
2537
|
+
}
|
|
2538
|
+
return /* @__PURE__ */ jsx(FloatingActionButtonInternal, { className, ref, ...props });
|
|
2539
|
+
}
|
|
2540
|
+
);
|
|
2541
|
+
FloatingActionButton.displayName = "FloatingActionButton";
|
|
2542
|
+
var HoverCard3DInternal = React55__default.forwardRef(
|
|
2543
|
+
({
|
|
2544
|
+
children,
|
|
2545
|
+
className,
|
|
2546
|
+
perspective = 1e3,
|
|
2547
|
+
rotationIntensity = 15,
|
|
2548
|
+
springConfig = { stiffness: 200, damping: 15 },
|
|
2549
|
+
...props
|
|
2550
|
+
}, ref) => {
|
|
2551
|
+
const cardRef = useRef(null);
|
|
2552
|
+
const [isHovered, setIsHovered] = useState(false);
|
|
2553
|
+
const x = useMotionValue(0);
|
|
2554
|
+
const y = useMotionValue(0);
|
|
2555
|
+
const springX = useSpring(x, springConfig);
|
|
2556
|
+
const springY = useSpring(y, springConfig);
|
|
2557
|
+
const rotateX = useTransform(springY, [-0.5, 0.5], [rotationIntensity, -rotationIntensity]);
|
|
2558
|
+
const rotateY = useTransform(springX, [-0.5, 0.5], [-rotationIntensity, rotationIntensity]);
|
|
2559
|
+
const handleMouseMove2 = (e) => {
|
|
2560
|
+
if (!cardRef.current)
|
|
2561
|
+
return;
|
|
2562
|
+
const rect = cardRef.current.getBoundingClientRect();
|
|
2563
|
+
const centerX = rect.left + rect.width / 2;
|
|
2564
|
+
const centerY = rect.top + rect.height / 2;
|
|
2565
|
+
const rotateXValue = (e.clientY - centerY) / (rect.height / 2);
|
|
2566
|
+
const rotateYValue = (e.clientX - centerX) / (rect.width / 2);
|
|
2567
|
+
x.set(rotateYValue);
|
|
2568
|
+
y.set(rotateXValue);
|
|
2569
|
+
};
|
|
2570
|
+
const handleMouseEnter = () => {
|
|
2571
|
+
setIsHovered(true);
|
|
2572
|
+
};
|
|
2573
|
+
const handleMouseLeave2 = () => {
|
|
2574
|
+
setIsHovered(false);
|
|
2575
|
+
x.set(0);
|
|
2576
|
+
y.set(0);
|
|
2577
|
+
};
|
|
2578
|
+
return /* @__PURE__ */ jsxs(
|
|
2579
|
+
motion.div,
|
|
2580
|
+
{
|
|
2581
|
+
ref: (node) => {
|
|
2582
|
+
cardRef.current = node;
|
|
2583
|
+
if (typeof ref === "function") {
|
|
2584
|
+
ref(node);
|
|
2585
|
+
} else if (ref) {
|
|
2586
|
+
ref.current = node;
|
|
2587
|
+
}
|
|
2588
|
+
},
|
|
2589
|
+
className: cn(
|
|
2590
|
+
"relative rounded-lg border bg-card text-card-foreground shadow-sm transition-colors duration-200 hover:bg-card/90",
|
|
2591
|
+
className
|
|
2592
|
+
),
|
|
2593
|
+
onMouseMove: handleMouseMove2,
|
|
2594
|
+
onMouseEnter: handleMouseEnter,
|
|
2595
|
+
onMouseLeave: handleMouseLeave2,
|
|
2596
|
+
style: {
|
|
2597
|
+
transformPerspective: perspective,
|
|
2598
|
+
transformStyle: "preserve-3d"
|
|
2599
|
+
},
|
|
2600
|
+
animate: {
|
|
2601
|
+
rotateX: isHovered ? rotateX : 0,
|
|
2602
|
+
rotateY: isHovered ? rotateY : 0,
|
|
2603
|
+
scale: isHovered ? 1.05 : 1
|
|
2604
|
+
},
|
|
2605
|
+
transition: { duration: 0.15 },
|
|
2606
|
+
...props,
|
|
2607
|
+
children: [
|
|
2608
|
+
/* @__PURE__ */ jsx(
|
|
2609
|
+
motion.div,
|
|
2610
|
+
{
|
|
2611
|
+
className: "relative z-10",
|
|
2612
|
+
animate: {
|
|
2613
|
+
z: isHovered ? 20 : 0
|
|
2614
|
+
},
|
|
2615
|
+
transition: { duration: 0.2 },
|
|
2616
|
+
children
|
|
2617
|
+
}
|
|
2618
|
+
),
|
|
2619
|
+
/* @__PURE__ */ jsx(
|
|
2620
|
+
motion.div,
|
|
2621
|
+
{
|
|
2622
|
+
className: "absolute inset-0 rounded-lg bg-gradient-to-br from-white/5 via-transparent to-black/5 pointer-events-none",
|
|
2623
|
+
animate: {
|
|
2624
|
+
opacity: isHovered ? 1 : 0
|
|
2625
|
+
},
|
|
2626
|
+
transition: { duration: 0.3 }
|
|
2627
|
+
}
|
|
2628
|
+
),
|
|
2629
|
+
/* @__PURE__ */ jsx(
|
|
2630
|
+
motion.div,
|
|
2631
|
+
{
|
|
2632
|
+
className: "absolute inset-0 rounded-lg bg-primary/5 blur-xl",
|
|
2633
|
+
animate: {
|
|
2634
|
+
opacity: isHovered ? 0.8 : 0,
|
|
2635
|
+
scale: isHovered ? 1.2 : 1
|
|
2636
|
+
},
|
|
2637
|
+
transition: { duration: 0.3 },
|
|
2638
|
+
style: { zIndex: -1 }
|
|
2639
|
+
}
|
|
2640
|
+
)
|
|
2641
|
+
]
|
|
2642
|
+
}
|
|
2643
|
+
);
|
|
2644
|
+
}
|
|
2645
|
+
);
|
|
2646
|
+
HoverCard3DInternal.displayName = "HoverCard3DInternal";
|
|
2647
|
+
var HoverCard3D = React55__default.forwardRef(
|
|
2648
|
+
({ className, ...props }, ref) => {
|
|
2649
|
+
const docsProAccess = { hasAccess: true };
|
|
2650
|
+
const { hasProAccess, isLoading } = useSubscription();
|
|
2651
|
+
if (!docsProAccess.isDocsMode && !isLoading && !hasProAccess) {
|
|
2652
|
+
return /* @__PURE__ */ jsx(Card, { className: cn("w-fit", className), children: /* @__PURE__ */ jsx(CardContent, { className: "py-6 text-center", children: /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
2653
|
+
/* @__PURE__ */ jsx("div", { className: "rounded-full bg-purple-100 dark:bg-purple-900/30 p-3 w-fit mx-auto", children: /* @__PURE__ */ jsx(Lock, { className: "h-6 w-6 text-purple-600 dark:text-purple-400" }) }),
|
|
2654
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
2655
|
+
/* @__PURE__ */ jsx("h3", { className: "font-semibold text-sm mb-2", children: "Pro Feature" }),
|
|
2656
|
+
/* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs mb-4", children: "3D Hover Card is available exclusively to MoonUI Pro subscribers." }),
|
|
2657
|
+
/* @__PURE__ */ jsx("a", { href: "/pricing", children: /* @__PURE__ */ jsxs(Button, { size: "sm", children: [
|
|
2658
|
+
/* @__PURE__ */ jsx(Sparkles, { className: "mr-2 h-4 w-4" }),
|
|
2659
|
+
"Upgrade to Pro"
|
|
2660
|
+
] }) })
|
|
2661
|
+
] })
|
|
2662
|
+
] }) }) });
|
|
2663
|
+
}
|
|
2664
|
+
return /* @__PURE__ */ jsx(HoverCard3DInternal, { className, ref, ...props });
|
|
2665
|
+
}
|
|
2666
|
+
);
|
|
2667
|
+
HoverCard3D.displayName = "HoverCard3D";
|
|
2668
|
+
var MagneticButtonInternal = React55__default.forwardRef(
|
|
2669
|
+
({
|
|
2670
|
+
children,
|
|
2671
|
+
className,
|
|
2672
|
+
strength = 0.3,
|
|
2673
|
+
range = 100,
|
|
2674
|
+
springConfig = { stiffness: 200, damping: 15 },
|
|
2675
|
+
...props
|
|
2676
|
+
}, ref) => {
|
|
2677
|
+
const buttonRef = useRef(null);
|
|
2678
|
+
const [isHovered, setIsHovered] = useState(false);
|
|
2679
|
+
const x = useMotionValue(0);
|
|
2680
|
+
const y = useMotionValue(0);
|
|
2681
|
+
const springX = useSpring(x, springConfig);
|
|
2682
|
+
const springY = useSpring(y, springConfig);
|
|
2683
|
+
const rotateX = useTransform(springY, [-range, range], [5, -5]);
|
|
2684
|
+
const rotateY = useTransform(springX, [-range, range], [-5, 5]);
|
|
2685
|
+
const handleMouseMove2 = (e) => {
|
|
2686
|
+
if (!buttonRef.current)
|
|
2687
|
+
return;
|
|
2688
|
+
const rect = buttonRef.current.getBoundingClientRect();
|
|
2689
|
+
const centerX = rect.left + rect.width / 2;
|
|
2690
|
+
const centerY = rect.top + rect.height / 2;
|
|
2691
|
+
const deltaX = e.clientX - centerX;
|
|
2692
|
+
const deltaY = e.clientY - centerY;
|
|
2693
|
+
const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
|
|
2694
|
+
if (distance < range) {
|
|
2695
|
+
x.set(deltaX * strength);
|
|
2696
|
+
y.set(deltaY * strength);
|
|
2697
|
+
}
|
|
2698
|
+
};
|
|
2699
|
+
const handleMouseLeave2 = () => {
|
|
2700
|
+
setIsHovered(false);
|
|
2701
|
+
x.set(0);
|
|
2702
|
+
y.set(0);
|
|
2703
|
+
};
|
|
2704
|
+
const handleMouseEnter = () => {
|
|
2705
|
+
setIsHovered(true);
|
|
2706
|
+
};
|
|
2707
|
+
return /* @__PURE__ */ jsxs(
|
|
2708
|
+
motion.button,
|
|
2709
|
+
{
|
|
2710
|
+
ref: (node) => {
|
|
2711
|
+
buttonRef.current = node;
|
|
2712
|
+
if (typeof ref === "function") {
|
|
2713
|
+
ref(node);
|
|
2714
|
+
} else if (ref) {
|
|
2715
|
+
ref.current = node;
|
|
2716
|
+
}
|
|
2717
|
+
},
|
|
2718
|
+
className: cn(
|
|
2719
|
+
"relative inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",
|
|
2720
|
+
"bg-primary text-primary-foreground shadow hover:bg-primary/90",
|
|
2721
|
+
"h-9 px-4 py-2",
|
|
2722
|
+
className
|
|
2723
|
+
),
|
|
2724
|
+
onMouseMove: handleMouseMove2,
|
|
2725
|
+
onMouseLeave: handleMouseLeave2,
|
|
2726
|
+
onMouseEnter: handleMouseEnter,
|
|
2727
|
+
style: {
|
|
2728
|
+
x: springX,
|
|
2729
|
+
y: springY,
|
|
2730
|
+
rotateX,
|
|
2731
|
+
rotateY,
|
|
2732
|
+
transformPerspective: 1e3
|
|
2733
|
+
},
|
|
2734
|
+
whileHover: { scale: 1.05 },
|
|
2735
|
+
whileTap: { scale: 0.95 },
|
|
2736
|
+
animate: {
|
|
2737
|
+
rotateX: isHovered ? rotateX : 0,
|
|
2738
|
+
rotateY: isHovered ? rotateY : 0
|
|
2739
|
+
},
|
|
2740
|
+
transition: { duration: 0.3 },
|
|
2741
|
+
...props,
|
|
2742
|
+
children: [
|
|
2743
|
+
/* @__PURE__ */ jsx(
|
|
2744
|
+
motion.div,
|
|
2745
|
+
{
|
|
2746
|
+
className: "relative z-10",
|
|
2747
|
+
animate: {
|
|
2748
|
+
scale: isHovered ? 1.02 : 1
|
|
2749
|
+
},
|
|
2750
|
+
transition: { duration: 0.2 },
|
|
2751
|
+
children
|
|
2752
|
+
}
|
|
2753
|
+
),
|
|
2754
|
+
/* @__PURE__ */ jsx(
|
|
2755
|
+
motion.div,
|
|
2756
|
+
{
|
|
2757
|
+
className: "absolute inset-0 rounded-md bg-primary/20 blur-md",
|
|
2758
|
+
animate: {
|
|
2759
|
+
opacity: isHovered ? 0.8 : 0,
|
|
2760
|
+
scale: isHovered ? 1.1 : 1
|
|
2761
|
+
},
|
|
2762
|
+
transition: { duration: 0.3 }
|
|
2763
|
+
}
|
|
2764
|
+
)
|
|
2765
|
+
]
|
|
2766
|
+
}
|
|
2767
|
+
);
|
|
2768
|
+
}
|
|
2769
|
+
);
|
|
2770
|
+
MagneticButtonInternal.displayName = "MagneticButtonInternal";
|
|
2771
|
+
var MagneticButton = React55__default.forwardRef(
|
|
2772
|
+
({ className, ...props }, ref) => {
|
|
2773
|
+
const docsProAccess = { hasAccess: true };
|
|
2774
|
+
const { hasProAccess, isLoading } = useSubscription();
|
|
2775
|
+
if (!docsProAccess.isDocsMode && !isLoading && !hasProAccess) {
|
|
2776
|
+
return /* @__PURE__ */ jsx(Card, { className: cn("w-fit", className), children: /* @__PURE__ */ jsx(CardContent, { className: "py-6 text-center", children: /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
2777
|
+
/* @__PURE__ */ jsx("div", { className: "rounded-full bg-purple-100 dark:bg-purple-900/30 p-3 w-fit mx-auto", children: /* @__PURE__ */ jsx(Lock, { className: "h-6 w-6 text-purple-600 dark:text-purple-400" }) }),
|
|
2778
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
2779
|
+
/* @__PURE__ */ jsx("h3", { className: "font-semibold text-sm mb-2", children: "Pro Feature" }),
|
|
2780
|
+
/* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs mb-4", children: "Magnetic Button is available exclusively to MoonUI Pro subscribers." }),
|
|
2781
|
+
/* @__PURE__ */ jsx("a", { href: "/pricing", children: /* @__PURE__ */ jsxs(Button, { size: "sm", children: [
|
|
2782
|
+
/* @__PURE__ */ jsx(Sparkles, { className: "mr-2 h-4 w-4" }),
|
|
2783
|
+
"Upgrade to Pro"
|
|
2784
|
+
] }) })
|
|
2785
|
+
] })
|
|
2786
|
+
] }) }) });
|
|
2787
|
+
}
|
|
2788
|
+
return /* @__PURE__ */ jsx(MagneticButtonInternal, { className, ref, ...props });
|
|
2789
|
+
}
|
|
2790
|
+
);
|
|
2791
|
+
MagneticButton.displayName = "MagneticButton";
|
|
2792
|
+
var PinchZoomInternal = React55__default.forwardRef(
|
|
2793
|
+
({
|
|
2794
|
+
children,
|
|
2795
|
+
minZoom = 0.5,
|
|
2796
|
+
maxZoom = 3,
|
|
2797
|
+
initialZoom = 1,
|
|
2798
|
+
className,
|
|
2799
|
+
contentClassName,
|
|
2800
|
+
onZoomChange,
|
|
2801
|
+
...props
|
|
2802
|
+
}, ref) => {
|
|
2803
|
+
const containerRef = useRef(null);
|
|
2804
|
+
const [isDragging, setIsDragging] = useState(false);
|
|
2805
|
+
const scale = useMotionValue(initialZoom);
|
|
2806
|
+
const x = useMotionValue(0);
|
|
2807
|
+
const y = useMotionValue(0);
|
|
2808
|
+
const constrainedScale = useTransform(scale, (value) => {
|
|
2809
|
+
return Math.min(Math.max(value, minZoom), maxZoom);
|
|
2810
|
+
});
|
|
2811
|
+
const handleWheel = useCallback((event) => {
|
|
2812
|
+
event.preventDefault();
|
|
2813
|
+
const delta = -event.deltaY / 1e3;
|
|
2814
|
+
const currentScale = scale.get();
|
|
2815
|
+
const newScale = Math.min(Math.max(currentScale + delta, minZoom), maxZoom);
|
|
2816
|
+
animate(scale, newScale, { duration: 0.2 });
|
|
2817
|
+
onZoomChange?.(newScale);
|
|
2818
|
+
}, [scale, minZoom, maxZoom, onZoomChange]);
|
|
2819
|
+
const handleDoubleClick2 = useCallback((event) => {
|
|
2820
|
+
event.preventDefault();
|
|
2821
|
+
const currentScale = scale.get();
|
|
2822
|
+
const newScale = currentScale > 1 ? 1 : 2;
|
|
2823
|
+
animate(scale, Math.min(Math.max(newScale, minZoom), maxZoom), {
|
|
2824
|
+
duration: 0.3,
|
|
2825
|
+
type: "spring",
|
|
2826
|
+
stiffness: 300
|
|
2827
|
+
});
|
|
2828
|
+
if (newScale === 1) {
|
|
2829
|
+
animate(x, 0, { duration: 0.3 });
|
|
2830
|
+
animate(y, 0, { duration: 0.3 });
|
|
2831
|
+
}
|
|
2832
|
+
onZoomChange?.(newScale);
|
|
2833
|
+
}, [scale, x, y, minZoom, maxZoom, onZoomChange]);
|
|
2834
|
+
const resetZoom = useCallback(() => {
|
|
2835
|
+
animate(scale, initialZoom, { duration: 0.3 });
|
|
2836
|
+
animate(x, 0, { duration: 0.3 });
|
|
2837
|
+
animate(y, 0, { duration: 0.3 });
|
|
2838
|
+
onZoomChange?.(initialZoom);
|
|
2839
|
+
}, [scale, x, y, initialZoom, onZoomChange]);
|
|
2840
|
+
return /* @__PURE__ */ jsxs(
|
|
2841
|
+
"div",
|
|
2842
|
+
{
|
|
2843
|
+
ref,
|
|
2844
|
+
className: cn(
|
|
2845
|
+
"relative overflow-hidden touch-none select-none",
|
|
2846
|
+
"cursor-grab active:cursor-grabbing",
|
|
2847
|
+
className
|
|
2848
|
+
),
|
|
2849
|
+
onWheel: handleWheel,
|
|
2850
|
+
onDoubleClick: handleDoubleClick2,
|
|
2851
|
+
...props,
|
|
2852
|
+
children: [
|
|
2853
|
+
/* @__PURE__ */ jsx(
|
|
2854
|
+
motion.div,
|
|
2855
|
+
{
|
|
2856
|
+
ref: containerRef,
|
|
2857
|
+
drag: true,
|
|
2858
|
+
dragElastic: 0,
|
|
2859
|
+
dragMomentum: false,
|
|
2860
|
+
onDragStart: () => setIsDragging(true),
|
|
2861
|
+
onDragEnd: () => setIsDragging(false),
|
|
2862
|
+
style: {
|
|
2863
|
+
scale: constrainedScale,
|
|
2864
|
+
x,
|
|
2865
|
+
y
|
|
2866
|
+
},
|
|
2867
|
+
className: cn(
|
|
2868
|
+
"w-full h-full flex items-center justify-center",
|
|
2869
|
+
isDragging && "cursor-grabbing",
|
|
2870
|
+
contentClassName
|
|
2871
|
+
),
|
|
2872
|
+
children
|
|
2873
|
+
}
|
|
2874
|
+
),
|
|
2875
|
+
/* @__PURE__ */ jsx(
|
|
2876
|
+
"button",
|
|
2877
|
+
{
|
|
2878
|
+
onClick: resetZoom,
|
|
2879
|
+
className: cn(
|
|
2880
|
+
"absolute bottom-4 right-4 px-3 py-1 bg-background/80 backdrop-blur-sm",
|
|
2881
|
+
"border rounded-md text-sm hover:bg-background/90 transition-colors",
|
|
2882
|
+
"opacity-0 hover:opacity-100 focus:opacity-100"
|
|
2883
|
+
),
|
|
2884
|
+
children: "Reset"
|
|
2885
|
+
}
|
|
2886
|
+
)
|
|
2887
|
+
]
|
|
2888
|
+
}
|
|
2889
|
+
);
|
|
2890
|
+
}
|
|
2891
|
+
);
|
|
2892
|
+
PinchZoomInternal.displayName = "PinchZoomInternal";
|
|
2893
|
+
var PinchZoom = React55__default.forwardRef(
|
|
2894
|
+
({ className, ...props }, ref) => {
|
|
2895
|
+
const docsProAccess = { hasAccess: true };
|
|
2896
|
+
const { hasProAccess, isLoading } = useSubscription();
|
|
2897
|
+
if (!docsProAccess.isDocsMode && !isLoading && !hasProAccess) {
|
|
2898
|
+
return /* @__PURE__ */ jsx(Card, { className: cn("w-fit", className), children: /* @__PURE__ */ jsx(CardContent, { className: "py-6 text-center", children: /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
2899
|
+
/* @__PURE__ */ jsx("div", { className: "rounded-full bg-purple-100 dark:bg-purple-900/30 p-3 w-fit mx-auto", children: /* @__PURE__ */ jsx(Lock, { className: "h-6 w-6 text-purple-600 dark:text-purple-400" }) }),
|
|
2900
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
2901
|
+
/* @__PURE__ */ jsx("h3", { className: "font-semibold text-sm mb-2", children: "Pro Feature" }),
|
|
2902
|
+
/* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs mb-4", children: "Pinch Zoom is available exclusively to MoonUI Pro subscribers." }),
|
|
2903
|
+
/* @__PURE__ */ jsx("a", { href: "/pricing", children: /* @__PURE__ */ jsxs(Button, { size: "sm", children: [
|
|
2904
|
+
/* @__PURE__ */ jsx(Sparkles, { className: "mr-2 h-4 w-4" }),
|
|
2905
|
+
"Upgrade to Pro"
|
|
2906
|
+
] }) })
|
|
2907
|
+
] })
|
|
2908
|
+
] }) }) });
|
|
2909
|
+
}
|
|
2910
|
+
return /* @__PURE__ */ jsx(PinchZoomInternal, { className, ref, ...props });
|
|
2911
|
+
}
|
|
2912
|
+
);
|
|
2913
|
+
PinchZoom.displayName = "PinchZoom";
|
|
2914
|
+
var SpotlightCardInternal = React55__default.forwardRef(
|
|
2915
|
+
({
|
|
2916
|
+
children,
|
|
2917
|
+
className,
|
|
2918
|
+
spotlightColor = "rgba(255, 255, 255, 0.25)",
|
|
2919
|
+
spotlightSize = 300,
|
|
2920
|
+
intensity = 0.8,
|
|
2921
|
+
borderGlow = true,
|
|
2922
|
+
...props
|
|
2923
|
+
}, ref) => {
|
|
2924
|
+
const cardRef = useRef(null);
|
|
2925
|
+
const [mousePosition, setMousePosition] = useState({ x: 0, y: 0 });
|
|
2926
|
+
const [isHovered, setIsHovered] = useState(false);
|
|
2927
|
+
const handleMouseMove2 = (e) => {
|
|
2928
|
+
if (!cardRef.current)
|
|
2929
|
+
return;
|
|
2930
|
+
const rect = cardRef.current.getBoundingClientRect();
|
|
2931
|
+
const x = e.clientX - rect.left;
|
|
2932
|
+
const y = e.clientY - rect.top;
|
|
2933
|
+
setMousePosition({ x, y });
|
|
2934
|
+
};
|
|
2935
|
+
const handleMouseEnter = () => {
|
|
2936
|
+
setIsHovered(true);
|
|
2937
|
+
};
|
|
2938
|
+
const handleMouseLeave2 = () => {
|
|
2939
|
+
setIsHovered(false);
|
|
2940
|
+
};
|
|
2941
|
+
return /* @__PURE__ */ jsxs(
|
|
2942
|
+
motion.div,
|
|
2943
|
+
{
|
|
2944
|
+
ref: (node) => {
|
|
2945
|
+
cardRef.current = node;
|
|
2946
|
+
if (typeof ref === "function") {
|
|
2947
|
+
ref(node);
|
|
2948
|
+
} else if (ref) {
|
|
2949
|
+
ref.current = node;
|
|
2950
|
+
}
|
|
2951
|
+
},
|
|
2952
|
+
className: cn(
|
|
2953
|
+
"relative overflow-hidden rounded-lg border bg-card text-card-foreground shadow-sm",
|
|
2954
|
+
className
|
|
2955
|
+
),
|
|
2956
|
+
onMouseMove: handleMouseMove2,
|
|
2957
|
+
onMouseEnter: handleMouseEnter,
|
|
2958
|
+
onMouseLeave: handleMouseLeave2,
|
|
2959
|
+
whileHover: { scale: 1.02 },
|
|
2960
|
+
transition: { duration: 0.2 },
|
|
2961
|
+
...props,
|
|
2962
|
+
children: [
|
|
2963
|
+
/* @__PURE__ */ jsx(
|
|
2964
|
+
motion.div,
|
|
2965
|
+
{
|
|
2966
|
+
className: "absolute inset-0 pointer-events-none",
|
|
2967
|
+
animate: {
|
|
2968
|
+
opacity: isHovered ? intensity : 0
|
|
2969
|
+
},
|
|
2970
|
+
transition: { duration: 0.3 },
|
|
2971
|
+
style: {
|
|
2972
|
+
background: `radial-gradient(${spotlightSize}px circle at ${mousePosition.x}px ${mousePosition.y}px, ${spotlightColor}, transparent 70%)`
|
|
2973
|
+
}
|
|
2974
|
+
}
|
|
2975
|
+
),
|
|
2976
|
+
/* @__PURE__ */ jsx(
|
|
2977
|
+
motion.div,
|
|
2978
|
+
{
|
|
2979
|
+
className: "absolute inset-0 pointer-events-none",
|
|
2980
|
+
animate: {
|
|
2981
|
+
opacity: isHovered ? intensity * 0.5 : 0
|
|
2982
|
+
},
|
|
2983
|
+
transition: { duration: 0.4, delay: 0.1 },
|
|
2984
|
+
style: {
|
|
2985
|
+
background: `radial-gradient(${spotlightSize * 1.5}px circle at ${mousePosition.x}px ${mousePosition.y}px, ${spotlightColor.replace("0.25", "0.1")}, transparent 80%)`
|
|
2986
|
+
}
|
|
2987
|
+
}
|
|
2988
|
+
),
|
|
2989
|
+
borderGlow && /* @__PURE__ */ jsx(
|
|
2990
|
+
motion.div,
|
|
2991
|
+
{
|
|
2992
|
+
className: "absolute inset-0 rounded-lg pointer-events-none",
|
|
2993
|
+
animate: {
|
|
2994
|
+
opacity: isHovered ? 0.6 : 0
|
|
2995
|
+
},
|
|
2996
|
+
transition: { duration: 0.3 },
|
|
2997
|
+
style: {
|
|
2998
|
+
background: `linear-gradient(135deg, transparent 30%, ${spotlightColor.replace("0.25", "0.4")} 50%, transparent 70%)`,
|
|
2999
|
+
backgroundSize: "200% 200%",
|
|
3000
|
+
backgroundPosition: `${mousePosition.x / cardRef.current?.offsetWidth * 100}% ${mousePosition.y / cardRef.current?.offsetHeight * 100}%`
|
|
3001
|
+
}
|
|
3002
|
+
}
|
|
3003
|
+
),
|
|
3004
|
+
/* @__PURE__ */ jsx("div", { className: "relative z-10", children }),
|
|
3005
|
+
/* @__PURE__ */ jsx(
|
|
3006
|
+
motion.div,
|
|
3007
|
+
{
|
|
3008
|
+
className: "absolute inset-0 pointer-events-none",
|
|
3009
|
+
animate: {
|
|
3010
|
+
opacity: isHovered ? 0.3 : 0
|
|
3011
|
+
},
|
|
3012
|
+
transition: { duration: 0.5 },
|
|
3013
|
+
children: [...Array(3)].map((_, i) => /* @__PURE__ */ jsx(
|
|
3014
|
+
motion.div,
|
|
3015
|
+
{
|
|
3016
|
+
className: "absolute w-1 h-1 bg-white rounded-full",
|
|
3017
|
+
animate: isHovered ? {
|
|
3018
|
+
x: [mousePosition.x, mousePosition.x + Math.random() * 100 - 50],
|
|
3019
|
+
y: [mousePosition.y, mousePosition.y + Math.random() * 100 - 50],
|
|
3020
|
+
opacity: [0, 1, 0],
|
|
3021
|
+
scale: [0, 1, 0]
|
|
3022
|
+
} : {},
|
|
3023
|
+
transition: {
|
|
3024
|
+
duration: 2,
|
|
3025
|
+
delay: i * 0.2,
|
|
3026
|
+
repeat: isHovered ? Infinity : 0,
|
|
3027
|
+
ease: "easeOut"
|
|
3028
|
+
},
|
|
3029
|
+
style: {
|
|
3030
|
+
left: mousePosition.x,
|
|
3031
|
+
top: mousePosition.y
|
|
3032
|
+
}
|
|
3033
|
+
},
|
|
3034
|
+
i
|
|
3035
|
+
))
|
|
3036
|
+
}
|
|
3037
|
+
)
|
|
3038
|
+
]
|
|
3039
|
+
}
|
|
3040
|
+
);
|
|
3041
|
+
}
|
|
3042
|
+
);
|
|
3043
|
+
SpotlightCardInternal.displayName = "SpotlightCardInternal";
|
|
3044
|
+
var SpotlightCard = React55__default.forwardRef(
|
|
3045
|
+
({ className, ...props }, ref) => {
|
|
3046
|
+
const docsProAccess = { hasAccess: true };
|
|
3047
|
+
const { hasProAccess, isLoading } = useSubscription();
|
|
3048
|
+
if (!docsProAccess.isDocsMode && !isLoading && !hasProAccess) {
|
|
3049
|
+
return /* @__PURE__ */ jsx(Card, { className: cn("w-fit", className), children: /* @__PURE__ */ jsx(CardContent, { className: "py-6 text-center", children: /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
3050
|
+
/* @__PURE__ */ jsx("div", { className: "rounded-full bg-purple-100 dark:bg-purple-900/30 p-3 w-fit mx-auto", children: /* @__PURE__ */ jsx(Lock, { className: "h-6 w-6 text-purple-600 dark:text-purple-400" }) }),
|
|
3051
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
3052
|
+
/* @__PURE__ */ jsx("h3", { className: "font-semibold text-sm mb-2", children: "Pro Feature" }),
|
|
3053
|
+
/* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs mb-4", children: "Spotlight Card is available exclusively to MoonUI Pro subscribers." }),
|
|
3054
|
+
/* @__PURE__ */ jsx("a", { href: "/pricing", children: /* @__PURE__ */ jsxs(Button, { size: "sm", children: [
|
|
3055
|
+
/* @__PURE__ */ jsx(Sparkles, { className: "mr-2 h-4 w-4" }),
|
|
3056
|
+
"Upgrade to Pro"
|
|
3057
|
+
] }) })
|
|
3058
|
+
] })
|
|
3059
|
+
] }) }) });
|
|
3060
|
+
}
|
|
3061
|
+
return /* @__PURE__ */ jsx(SpotlightCardInternal, { className, ref, ...props });
|
|
3062
|
+
}
|
|
3063
|
+
);
|
|
3064
|
+
SpotlightCard.displayName = "SpotlightCard";
|
|
2153
3065
|
var badgeVariants = cva(
|
|
2154
3066
|
[
|
|
2155
3067
|
"inline-flex items-center gap-1.5",
|
|
@@ -2313,22 +3225,6 @@ function Badge({
|
|
|
2313
3225
|
}
|
|
2314
3226
|
);
|
|
2315
3227
|
}
|
|
2316
|
-
|
|
2317
|
-
// src/hooks/use-subscription.ts
|
|
2318
|
-
function useSubscription() {
|
|
2319
|
-
return {
|
|
2320
|
-
isLoading: false,
|
|
2321
|
-
isAuthenticated: true,
|
|
2322
|
-
isAdmin: false,
|
|
2323
|
-
hasProAccess: true,
|
|
2324
|
-
// Pro package kullanıcıları varsayılan olarak pro erişime sahip
|
|
2325
|
-
subscriptionPlan: "pro",
|
|
2326
|
-
subscription: {
|
|
2327
|
-
status: "active",
|
|
2328
|
-
plan: "pro"
|
|
2329
|
-
}
|
|
2330
|
-
};
|
|
2331
|
-
}
|
|
2332
3228
|
var inputWrapperVariants = cva(
|
|
2333
3229
|
"group relative flex items-center w-full transition-colors",
|
|
2334
3230
|
{
|
|
@@ -2402,7 +3298,7 @@ var inputVariants = cva(
|
|
|
2402
3298
|
}
|
|
2403
3299
|
}
|
|
2404
3300
|
);
|
|
2405
|
-
var Input =
|
|
3301
|
+
var Input = React55.forwardRef(
|
|
2406
3302
|
({
|
|
2407
3303
|
className,
|
|
2408
3304
|
wrapperClassName,
|
|
@@ -2505,26 +3401,26 @@ function composeRefs(...refs) {
|
|
|
2505
3401
|
};
|
|
2506
3402
|
}
|
|
2507
3403
|
function useComposedRefs(...refs) {
|
|
2508
|
-
return
|
|
3404
|
+
return React55.useCallback(composeRefs(...refs), refs);
|
|
2509
3405
|
}
|
|
2510
3406
|
function createSlot(ownerName) {
|
|
2511
3407
|
const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);
|
|
2512
|
-
const Slot22 =
|
|
3408
|
+
const Slot22 = React55.forwardRef((props, forwardedRef) => {
|
|
2513
3409
|
const { children, ...slotProps } = props;
|
|
2514
|
-
const childrenArray =
|
|
3410
|
+
const childrenArray = React55.Children.toArray(children);
|
|
2515
3411
|
const slottable = childrenArray.find(isSlottable);
|
|
2516
3412
|
if (slottable) {
|
|
2517
3413
|
const newElement = slottable.props.children;
|
|
2518
3414
|
const newChildren = childrenArray.map((child) => {
|
|
2519
3415
|
if (child === slottable) {
|
|
2520
|
-
if (
|
|
2521
|
-
return
|
|
2522
|
-
return
|
|
3416
|
+
if (React55.Children.count(newElement) > 1)
|
|
3417
|
+
return React55.Children.only(null);
|
|
3418
|
+
return React55.isValidElement(newElement) ? newElement.props.children : null;
|
|
2523
3419
|
} else {
|
|
2524
3420
|
return child;
|
|
2525
3421
|
}
|
|
2526
3422
|
});
|
|
2527
|
-
return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children:
|
|
3423
|
+
return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React55.isValidElement(newElement) ? React55.cloneElement(newElement, void 0, newChildren) : null });
|
|
2528
3424
|
}
|
|
2529
3425
|
return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });
|
|
2530
3426
|
});
|
|
@@ -2532,24 +3428,24 @@ function createSlot(ownerName) {
|
|
|
2532
3428
|
return Slot22;
|
|
2533
3429
|
}
|
|
2534
3430
|
function createSlotClone(ownerName) {
|
|
2535
|
-
const SlotClone =
|
|
3431
|
+
const SlotClone = React55.forwardRef((props, forwardedRef) => {
|
|
2536
3432
|
const { children, ...slotProps } = props;
|
|
2537
|
-
if (
|
|
3433
|
+
if (React55.isValidElement(children)) {
|
|
2538
3434
|
const childrenRef = getElementRef(children);
|
|
2539
3435
|
const props2 = mergeProps(slotProps, children.props);
|
|
2540
|
-
if (children.type !==
|
|
3436
|
+
if (children.type !== React55.Fragment) {
|
|
2541
3437
|
props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;
|
|
2542
3438
|
}
|
|
2543
|
-
return
|
|
3439
|
+
return React55.cloneElement(children, props2);
|
|
2544
3440
|
}
|
|
2545
|
-
return
|
|
3441
|
+
return React55.Children.count(children) > 1 ? React55.Children.only(null) : null;
|
|
2546
3442
|
});
|
|
2547
3443
|
SlotClone.displayName = `${ownerName}.SlotClone`;
|
|
2548
3444
|
return SlotClone;
|
|
2549
3445
|
}
|
|
2550
3446
|
var SLOTTABLE_IDENTIFIER = Symbol("radix.slottable");
|
|
2551
3447
|
function isSlottable(child) {
|
|
2552
|
-
return
|
|
3448
|
+
return React55.isValidElement(child) && typeof child.type === "function" && "__radixId" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;
|
|
2553
3449
|
}
|
|
2554
3450
|
function mergeProps(slotProps, childProps) {
|
|
2555
3451
|
const overrideProps = { ...childProps };
|
|
@@ -2609,7 +3505,7 @@ var NODES = [
|
|
|
2609
3505
|
];
|
|
2610
3506
|
var Primitive = NODES.reduce((primitive, node) => {
|
|
2611
3507
|
const Slot4 = createSlot(`Primitive.${node}`);
|
|
2612
|
-
const Node4 =
|
|
3508
|
+
const Node4 = React55.forwardRef((props, forwardedRef) => {
|
|
2613
3509
|
const { asChild, ...primitiveProps } = props;
|
|
2614
3510
|
const Comp = asChild ? Slot4 : node;
|
|
2615
3511
|
if (typeof window !== "undefined") {
|
|
@@ -2625,7 +3521,7 @@ function dispatchDiscreteCustomEvent(target, event) {
|
|
|
2625
3521
|
ReactDOM.flushSync(() => target.dispatchEvent(event));
|
|
2626
3522
|
}
|
|
2627
3523
|
var NAME = "Label";
|
|
2628
|
-
var Label =
|
|
3524
|
+
var Label = React55.forwardRef((props, forwardedRef) => {
|
|
2629
3525
|
return /* @__PURE__ */ jsx(
|
|
2630
3526
|
Primitive.label,
|
|
2631
3527
|
{
|
|
@@ -2647,7 +3543,7 @@ var Root = Label;
|
|
|
2647
3543
|
var labelVariants = cva(
|
|
2648
3544
|
"text-sm font-medium leading-none text-gray-900 dark:text-gray-200 peer-disabled:cursor-not-allowed peer-disabled:opacity-70 dark:peer-disabled:opacity-60 transition-colors duration-200"
|
|
2649
3545
|
);
|
|
2650
|
-
var Label2 =
|
|
3546
|
+
var Label2 = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2651
3547
|
Root,
|
|
2652
3548
|
{
|
|
2653
3549
|
ref,
|
|
@@ -2656,7 +3552,7 @@ var Label2 = React50.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
|
|
|
2656
3552
|
}
|
|
2657
3553
|
));
|
|
2658
3554
|
Label2.displayName = Root.displayName;
|
|
2659
|
-
var Textarea =
|
|
3555
|
+
var Textarea = React55__default.forwardRef(
|
|
2660
3556
|
({ className, ...props }, ref) => {
|
|
2661
3557
|
return /* @__PURE__ */ jsx(
|
|
2662
3558
|
"textarea",
|
|
@@ -2890,45 +3786,45 @@ function $e02a7d9cb1dc128c$export$c74125a8e3af6bb2(name) {
|
|
|
2890
3786
|
});
|
|
2891
3787
|
const CollectionProvider = (props) => {
|
|
2892
3788
|
const { scope, children } = props;
|
|
2893
|
-
const ref =
|
|
2894
|
-
const itemMap =
|
|
2895
|
-
return /* @__PURE__ */
|
|
3789
|
+
const ref = React55__default.useRef(null);
|
|
3790
|
+
const itemMap = React55__default.useRef(/* @__PURE__ */ new Map()).current;
|
|
3791
|
+
return /* @__PURE__ */ React55__default.createElement(CollectionProviderImpl, {
|
|
2896
3792
|
scope,
|
|
2897
3793
|
itemMap,
|
|
2898
3794
|
collectionRef: ref
|
|
2899
3795
|
}, children);
|
|
2900
3796
|
};
|
|
2901
3797
|
const COLLECTION_SLOT_NAME = name + "CollectionSlot";
|
|
2902
|
-
const CollectionSlot = /* @__PURE__ */
|
|
3798
|
+
const CollectionSlot = /* @__PURE__ */ React55__default.forwardRef((props, forwardedRef) => {
|
|
2903
3799
|
const { scope, children } = props;
|
|
2904
3800
|
const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);
|
|
2905
3801
|
const composedRefs = $6ed0406888f73fc4$export$c7b2cbe3552a0d05(forwardedRef, context.collectionRef);
|
|
2906
|
-
return /* @__PURE__ */
|
|
3802
|
+
return /* @__PURE__ */ React55__default.createElement($5e63c961fc1ce211$export$8c6ed5c666ac1360, {
|
|
2907
3803
|
ref: composedRefs
|
|
2908
3804
|
}, children);
|
|
2909
3805
|
});
|
|
2910
3806
|
const ITEM_SLOT_NAME = name + "CollectionItemSlot";
|
|
2911
3807
|
const ITEM_DATA_ATTR = "data-radix-collection-item";
|
|
2912
|
-
const CollectionItemSlot = /* @__PURE__ */
|
|
3808
|
+
const CollectionItemSlot = /* @__PURE__ */ React55__default.forwardRef((props, forwardedRef) => {
|
|
2913
3809
|
const { scope, children, ...itemData } = props;
|
|
2914
|
-
const ref =
|
|
3810
|
+
const ref = React55__default.useRef(null);
|
|
2915
3811
|
const composedRefs = $6ed0406888f73fc4$export$c7b2cbe3552a0d05(forwardedRef, ref);
|
|
2916
3812
|
const context = useCollectionContext(ITEM_SLOT_NAME, scope);
|
|
2917
|
-
|
|
3813
|
+
React55__default.useEffect(() => {
|
|
2918
3814
|
context.itemMap.set(ref, {
|
|
2919
3815
|
ref,
|
|
2920
3816
|
...itemData
|
|
2921
3817
|
});
|
|
2922
3818
|
return () => void context.itemMap.delete(ref);
|
|
2923
3819
|
});
|
|
2924
|
-
return /* @__PURE__ */
|
|
3820
|
+
return /* @__PURE__ */ React55__default.createElement($5e63c961fc1ce211$export$8c6ed5c666ac1360, {
|
|
2925
3821
|
[ITEM_DATA_ATTR]: "",
|
|
2926
3822
|
ref: composedRefs
|
|
2927
3823
|
}, children);
|
|
2928
3824
|
});
|
|
2929
3825
|
function useCollection4(scope) {
|
|
2930
3826
|
const context = useCollectionContext(name + "CollectionConsumer", scope);
|
|
2931
|
-
const getItems =
|
|
3827
|
+
const getItems = React55__default.useCallback(() => {
|
|
2932
3828
|
const collectionNode = context.collectionRef.current;
|
|
2933
3829
|
if (!collectionNode)
|
|
2934
3830
|
return [];
|
|
@@ -3515,10 +4411,10 @@ var $9f79659886946c16$export$e5c5a5f917a5871c = Boolean(globalThis === null || g
|
|
|
3515
4411
|
};
|
|
3516
4412
|
|
|
3517
4413
|
// node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-id/dist/index.mjs
|
|
3518
|
-
var $1746a345f3d73bb7$var$useReactId =
|
|
4414
|
+
var $1746a345f3d73bb7$var$useReactId = React55["useId".toString()] || (() => void 0);
|
|
3519
4415
|
var $1746a345f3d73bb7$var$count = 0;
|
|
3520
4416
|
function $1746a345f3d73bb7$export$f680877a34711e37(deterministicId) {
|
|
3521
|
-
const [id, setId] =
|
|
4417
|
+
const [id, setId] = React55.useState($1746a345f3d73bb7$var$useReactId());
|
|
3522
4418
|
$9f79659886946c16$export$e5c5a5f917a5871c(() => {
|
|
3523
4419
|
if (!deterministicId)
|
|
3524
4420
|
setId(
|
|
@@ -5193,7 +6089,7 @@ function roundByDPR(element, value) {
|
|
|
5193
6089
|
return Math.round(value * dpr) / dpr;
|
|
5194
6090
|
}
|
|
5195
6091
|
function useLatestRef(value) {
|
|
5196
|
-
const ref =
|
|
6092
|
+
const ref = React55.useRef(value);
|
|
5197
6093
|
index(() => {
|
|
5198
6094
|
ref.current = value;
|
|
5199
6095
|
});
|
|
@@ -5216,7 +6112,7 @@ function useFloating(options) {
|
|
|
5216
6112
|
whileElementsMounted,
|
|
5217
6113
|
open
|
|
5218
6114
|
} = options;
|
|
5219
|
-
const [data, setData] =
|
|
6115
|
+
const [data, setData] = React55.useState({
|
|
5220
6116
|
x: 0,
|
|
5221
6117
|
y: 0,
|
|
5222
6118
|
strategy,
|
|
@@ -5224,19 +6120,19 @@ function useFloating(options) {
|
|
|
5224
6120
|
middlewareData: {},
|
|
5225
6121
|
isPositioned: false
|
|
5226
6122
|
});
|
|
5227
|
-
const [latestMiddleware, setLatestMiddleware] =
|
|
6123
|
+
const [latestMiddleware, setLatestMiddleware] = React55.useState(middleware);
|
|
5228
6124
|
if (!deepEqual(latestMiddleware, middleware)) {
|
|
5229
6125
|
setLatestMiddleware(middleware);
|
|
5230
6126
|
}
|
|
5231
|
-
const [_reference, _setReference] =
|
|
5232
|
-
const [_floating, _setFloating] =
|
|
5233
|
-
const setReference =
|
|
6127
|
+
const [_reference, _setReference] = React55.useState(null);
|
|
6128
|
+
const [_floating, _setFloating] = React55.useState(null);
|
|
6129
|
+
const setReference = React55.useCallback((node) => {
|
|
5234
6130
|
if (node !== referenceRef.current) {
|
|
5235
6131
|
referenceRef.current = node;
|
|
5236
6132
|
_setReference(node);
|
|
5237
6133
|
}
|
|
5238
6134
|
}, []);
|
|
5239
|
-
const setFloating =
|
|
6135
|
+
const setFloating = React55.useCallback((node) => {
|
|
5240
6136
|
if (node !== floatingRef.current) {
|
|
5241
6137
|
floatingRef.current = node;
|
|
5242
6138
|
_setFloating(node);
|
|
@@ -5244,14 +6140,14 @@ function useFloating(options) {
|
|
|
5244
6140
|
}, []);
|
|
5245
6141
|
const referenceEl = externalReference || _reference;
|
|
5246
6142
|
const floatingEl = externalFloating || _floating;
|
|
5247
|
-
const referenceRef =
|
|
5248
|
-
const floatingRef =
|
|
5249
|
-
const dataRef =
|
|
6143
|
+
const referenceRef = React55.useRef(null);
|
|
6144
|
+
const floatingRef = React55.useRef(null);
|
|
6145
|
+
const dataRef = React55.useRef(data);
|
|
5250
6146
|
const hasWhileElementsMounted = whileElementsMounted != null;
|
|
5251
6147
|
const whileElementsMountedRef = useLatestRef(whileElementsMounted);
|
|
5252
6148
|
const platformRef = useLatestRef(platform2);
|
|
5253
6149
|
const openRef = useLatestRef(open);
|
|
5254
|
-
const update =
|
|
6150
|
+
const update = React55.useCallback(() => {
|
|
5255
6151
|
if (!referenceRef.current || !floatingRef.current) {
|
|
5256
6152
|
return;
|
|
5257
6153
|
}
|
|
@@ -5289,7 +6185,7 @@ function useFloating(options) {
|
|
|
5289
6185
|
}));
|
|
5290
6186
|
}
|
|
5291
6187
|
}, [open]);
|
|
5292
|
-
const isMountedRef =
|
|
6188
|
+
const isMountedRef = React55.useRef(false);
|
|
5293
6189
|
index(() => {
|
|
5294
6190
|
isMountedRef.current = true;
|
|
5295
6191
|
return () => {
|
|
@@ -5308,17 +6204,17 @@ function useFloating(options) {
|
|
|
5308
6204
|
update();
|
|
5309
6205
|
}
|
|
5310
6206
|
}, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);
|
|
5311
|
-
const refs =
|
|
6207
|
+
const refs = React55.useMemo(() => ({
|
|
5312
6208
|
reference: referenceRef,
|
|
5313
6209
|
floating: floatingRef,
|
|
5314
6210
|
setReference,
|
|
5315
6211
|
setFloating
|
|
5316
6212
|
}), [setReference, setFloating]);
|
|
5317
|
-
const elements =
|
|
6213
|
+
const elements = React55.useMemo(() => ({
|
|
5318
6214
|
reference: referenceEl,
|
|
5319
6215
|
floating: floatingEl
|
|
5320
6216
|
}), [referenceEl, floatingEl]);
|
|
5321
|
-
const floatingStyles =
|
|
6217
|
+
const floatingStyles = React55.useMemo(() => {
|
|
5322
6218
|
const initialStyles = {
|
|
5323
6219
|
position: strategy,
|
|
5324
6220
|
left: 0,
|
|
@@ -5344,7 +6240,7 @@ function useFloating(options) {
|
|
|
5344
6240
|
top: y
|
|
5345
6241
|
};
|
|
5346
6242
|
}, [strategy, transform, elements.floating, data.x, data.y]);
|
|
5347
|
-
return
|
|
6243
|
+
return React55.useMemo(() => ({
|
|
5348
6244
|
...data,
|
|
5349
6245
|
update,
|
|
5350
6246
|
refs,
|
|
@@ -6076,7 +6972,7 @@ function useCallbackRef(initialValue, callback) {
|
|
|
6076
6972
|
ref.callback = callback;
|
|
6077
6973
|
return ref.facade;
|
|
6078
6974
|
}
|
|
6079
|
-
var useIsomorphicLayoutEffect = typeof window !== "undefined" ?
|
|
6975
|
+
var useIsomorphicLayoutEffect = typeof window !== "undefined" ? React55.useLayoutEffect : React55.useEffect;
|
|
6080
6976
|
var currentValues = /* @__PURE__ */ new WeakMap();
|
|
6081
6977
|
function useMergeRefs(refs, defaultValue) {
|
|
6082
6978
|
var callbackRef = useCallbackRef(defaultValue || null, function(newValue) {
|
|
@@ -6200,7 +7096,7 @@ var SideCar = function(_a2) {
|
|
|
6200
7096
|
if (!Target) {
|
|
6201
7097
|
throw new Error("Sidecar medium not found");
|
|
6202
7098
|
}
|
|
6203
|
-
return
|
|
7099
|
+
return React55.createElement(Target, __assign({}, rest));
|
|
6204
7100
|
};
|
|
6205
7101
|
SideCar.isSideCarExport = true;
|
|
6206
7102
|
function exportSidecar(medium, exported) {
|
|
@@ -6215,9 +7111,9 @@ var effectCar = createSidecarMedium();
|
|
|
6215
7111
|
var nothing = function() {
|
|
6216
7112
|
return;
|
|
6217
7113
|
};
|
|
6218
|
-
var RemoveScroll =
|
|
6219
|
-
var ref =
|
|
6220
|
-
var _a2 =
|
|
7114
|
+
var RemoveScroll = React55.forwardRef(function(props, parentRef) {
|
|
7115
|
+
var ref = React55.useRef(null);
|
|
7116
|
+
var _a2 = React55.useState({
|
|
6221
7117
|
onScrollCapture: nothing,
|
|
6222
7118
|
onWheelCapture: nothing,
|
|
6223
7119
|
onTouchMoveCapture: nothing
|
|
@@ -6226,11 +7122,11 @@ var RemoveScroll = React50.forwardRef(function(props, parentRef) {
|
|
|
6226
7122
|
var SideCar2 = sideCar;
|
|
6227
7123
|
var containerRef = useMergeRefs([ref, parentRef]);
|
|
6228
7124
|
var containerProps = __assign(__assign({}, rest), callbacks);
|
|
6229
|
-
return
|
|
6230
|
-
|
|
7125
|
+
return React55.createElement(
|
|
7126
|
+
React55.Fragment,
|
|
6231
7127
|
null,
|
|
6232
|
-
enabled &&
|
|
6233
|
-
forwardProps ?
|
|
7128
|
+
enabled && React55.createElement(SideCar2, { sideCar: effectCar, removeScrollBar, shards, noIsolation, inert, setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref }),
|
|
7129
|
+
forwardProps ? React55.cloneElement(React55.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef })) : React55.createElement(Container, __assign({}, containerProps, { className, ref: containerRef }), children)
|
|
6234
7130
|
);
|
|
6235
7131
|
});
|
|
6236
7132
|
RemoveScroll.defaultProps = {
|
|
@@ -6299,7 +7195,7 @@ var stylesheetSingleton = function() {
|
|
|
6299
7195
|
var styleHookSingleton = function() {
|
|
6300
7196
|
var sheet = stylesheetSingleton();
|
|
6301
7197
|
return function(styles, isDynamic) {
|
|
6302
|
-
|
|
7198
|
+
React55.useEffect(function() {
|
|
6303
7199
|
sheet.add(styles);
|
|
6304
7200
|
return function() {
|
|
6305
7201
|
sheet.remove();
|
|
@@ -6373,7 +7269,7 @@ var getCurrentUseCounter = function() {
|
|
|
6373
7269
|
return isFinite(counter) ? counter : 0;
|
|
6374
7270
|
};
|
|
6375
7271
|
var useLockAttribute = function() {
|
|
6376
|
-
|
|
7272
|
+
React55.useEffect(function() {
|
|
6377
7273
|
document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());
|
|
6378
7274
|
return function() {
|
|
6379
7275
|
var newCounter = getCurrentUseCounter() - 1;
|
|
@@ -6388,10 +7284,10 @@ var useLockAttribute = function() {
|
|
|
6388
7284
|
var RemoveScrollBar = function(_a2) {
|
|
6389
7285
|
var noRelative = _a2.noRelative, noImportant = _a2.noImportant, _b = _a2.gapMode, gapMode = _b === void 0 ? "margin" : _b;
|
|
6390
7286
|
useLockAttribute();
|
|
6391
|
-
var gap =
|
|
7287
|
+
var gap = React55.useMemo(function() {
|
|
6392
7288
|
return getGapWidth(gapMode);
|
|
6393
7289
|
}, [gapMode]);
|
|
6394
|
-
return
|
|
7290
|
+
return React55.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? "!important" : "") });
|
|
6395
7291
|
};
|
|
6396
7292
|
|
|
6397
7293
|
// node_modules/@radix-ui/react-select/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js
|
|
@@ -6524,18 +7420,18 @@ var generateStyle = function(id) {
|
|
|
6524
7420
|
var idCounter = 0;
|
|
6525
7421
|
var lockStack = [];
|
|
6526
7422
|
function RemoveScrollSideCar(props) {
|
|
6527
|
-
var shouldPreventQueue =
|
|
6528
|
-
var touchStartRef =
|
|
6529
|
-
var activeAxis =
|
|
6530
|
-
var id =
|
|
6531
|
-
var Style2 =
|
|
7423
|
+
var shouldPreventQueue = React55.useRef([]);
|
|
7424
|
+
var touchStartRef = React55.useRef([0, 0]);
|
|
7425
|
+
var activeAxis = React55.useRef();
|
|
7426
|
+
var id = React55.useState(idCounter++)[0];
|
|
7427
|
+
var Style2 = React55.useState(function() {
|
|
6532
7428
|
return styleSingleton();
|
|
6533
7429
|
})[0];
|
|
6534
|
-
var lastProps =
|
|
6535
|
-
|
|
7430
|
+
var lastProps = React55.useRef(props);
|
|
7431
|
+
React55.useEffect(function() {
|
|
6536
7432
|
lastProps.current = props;
|
|
6537
7433
|
}, [props]);
|
|
6538
|
-
|
|
7434
|
+
React55.useEffect(function() {
|
|
6539
7435
|
if (props.inert) {
|
|
6540
7436
|
document.body.classList.add("block-interactivity-".concat(id));
|
|
6541
7437
|
var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);
|
|
@@ -6551,7 +7447,7 @@ function RemoveScrollSideCar(props) {
|
|
|
6551
7447
|
}
|
|
6552
7448
|
return;
|
|
6553
7449
|
}, [props.inert, props.lockRef.current, props.shards]);
|
|
6554
|
-
var shouldCancelEvent =
|
|
7450
|
+
var shouldCancelEvent = React55.useCallback(function(event, parent) {
|
|
6555
7451
|
if ("touches" in event && event.touches.length === 2) {
|
|
6556
7452
|
return !lastProps.current.allowPinchZoom;
|
|
6557
7453
|
}
|
|
@@ -6587,7 +7483,7 @@ function RemoveScrollSideCar(props) {
|
|
|
6587
7483
|
var cancelingAxis = activeAxis.current || currentAxis;
|
|
6588
7484
|
return handleScroll(cancelingAxis, parent, event, cancelingAxis === "h" ? deltaX : deltaY, true);
|
|
6589
7485
|
}, []);
|
|
6590
|
-
var shouldPrevent =
|
|
7486
|
+
var shouldPrevent = React55.useCallback(function(_event) {
|
|
6591
7487
|
var event = _event;
|
|
6592
7488
|
if (!lockStack.length || lockStack[lockStack.length - 1] !== Style2) {
|
|
6593
7489
|
return;
|
|
@@ -6614,7 +7510,7 @@ function RemoveScrollSideCar(props) {
|
|
|
6614
7510
|
}
|
|
6615
7511
|
}
|
|
6616
7512
|
}, []);
|
|
6617
|
-
var shouldCancel =
|
|
7513
|
+
var shouldCancel = React55.useCallback(function(name, delta, target, should) {
|
|
6618
7514
|
var event = { name, delta, target, should };
|
|
6619
7515
|
shouldPreventQueue.current.push(event);
|
|
6620
7516
|
setTimeout(function() {
|
|
@@ -6623,17 +7519,17 @@ function RemoveScrollSideCar(props) {
|
|
|
6623
7519
|
});
|
|
6624
7520
|
}, 1);
|
|
6625
7521
|
}, []);
|
|
6626
|
-
var scrollTouchStart =
|
|
7522
|
+
var scrollTouchStart = React55.useCallback(function(event) {
|
|
6627
7523
|
touchStartRef.current = getTouchXY(event);
|
|
6628
7524
|
activeAxis.current = void 0;
|
|
6629
7525
|
}, []);
|
|
6630
|
-
var scrollWheel =
|
|
7526
|
+
var scrollWheel = React55.useCallback(function(event) {
|
|
6631
7527
|
shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));
|
|
6632
7528
|
}, []);
|
|
6633
|
-
var scrollTouchMove =
|
|
7529
|
+
var scrollTouchMove = React55.useCallback(function(event) {
|
|
6634
7530
|
shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));
|
|
6635
7531
|
}, []);
|
|
6636
|
-
|
|
7532
|
+
React55.useEffect(function() {
|
|
6637
7533
|
lockStack.push(Style2);
|
|
6638
7534
|
props.setCallbacks({
|
|
6639
7535
|
onScrollCapture: scrollWheel,
|
|
@@ -6653,11 +7549,11 @@ function RemoveScrollSideCar(props) {
|
|
|
6653
7549
|
};
|
|
6654
7550
|
}, []);
|
|
6655
7551
|
var removeScrollBar = props.removeScrollBar, inert = props.inert;
|
|
6656
|
-
return
|
|
6657
|
-
|
|
7552
|
+
return React55.createElement(
|
|
7553
|
+
React55.Fragment,
|
|
6658
7554
|
null,
|
|
6659
|
-
inert ?
|
|
6660
|
-
removeScrollBar ?
|
|
7555
|
+
inert ? React55.createElement(Style2, { styles: generateStyle(id) }) : null,
|
|
7556
|
+
removeScrollBar ? React55.createElement(RemoveScrollBar, { gapMode: "margin" }) : null
|
|
6661
7557
|
);
|
|
6662
7558
|
}
|
|
6663
7559
|
|
|
@@ -6665,8 +7561,8 @@ function RemoveScrollSideCar(props) {
|
|
|
6665
7561
|
var sidecar_default = exportSidecar(effectCar, RemoveScrollSideCar);
|
|
6666
7562
|
|
|
6667
7563
|
// node_modules/@radix-ui/react-select/node_modules/react-remove-scroll/dist/es2015/Combination.js
|
|
6668
|
-
var ReactRemoveScroll =
|
|
6669
|
-
return
|
|
7564
|
+
var ReactRemoveScroll = React55.forwardRef(function(props, ref) {
|
|
7565
|
+
return React55.createElement(RemoveScroll, __assign({}, props, { ref, sideCar: sidecar_default }));
|
|
6670
7566
|
});
|
|
6671
7567
|
ReactRemoveScroll.classNames = RemoveScroll.classNames;
|
|
6672
7568
|
var Combination_default = ReactRemoveScroll;
|
|
@@ -7756,7 +8652,7 @@ var $cc7e05a45900e73f$export$1ff3c3f08ae963c0 = $cc7e05a45900e73f$export$eba4b1d
|
|
|
7756
8652
|
var Select = $cc7e05a45900e73f$export$be92b6f5f03c0fe9;
|
|
7757
8653
|
Select.displayName = "Select";
|
|
7758
8654
|
var SelectValue = $cc7e05a45900e73f$export$4c8d1a57a761ef94;
|
|
7759
|
-
var SelectTrigger =
|
|
8655
|
+
var SelectTrigger = React55.forwardRef(({ className, children, variant = "standard", size: size4 = "md", error, success, loading, leftIcon, rightIcon, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
7760
8656
|
$cc7e05a45900e73f$export$41fb9f06171c75f4,
|
|
7761
8657
|
{
|
|
7762
8658
|
ref,
|
|
@@ -7798,7 +8694,7 @@ var SelectTrigger = React50.forwardRef(({ className, children, variant = "standa
|
|
|
7798
8694
|
}
|
|
7799
8695
|
));
|
|
7800
8696
|
SelectTrigger.displayName = $cc7e05a45900e73f$export$41fb9f06171c75f4.displayName;
|
|
7801
|
-
var SelectScrollUpButton =
|
|
8697
|
+
var SelectScrollUpButton = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
7802
8698
|
$cc7e05a45900e73f$export$2f60d3ec9ad468f2,
|
|
7803
8699
|
{
|
|
7804
8700
|
ref,
|
|
@@ -7811,7 +8707,7 @@ var SelectScrollUpButton = React50.forwardRef(({ className, ...props }, ref) =>
|
|
|
7811
8707
|
}
|
|
7812
8708
|
));
|
|
7813
8709
|
SelectScrollUpButton.displayName = $cc7e05a45900e73f$export$2f60d3ec9ad468f2.displayName;
|
|
7814
|
-
var SelectScrollDownButton =
|
|
8710
|
+
var SelectScrollDownButton = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
7815
8711
|
$cc7e05a45900e73f$export$bf1aedc3039c8d63,
|
|
7816
8712
|
{
|
|
7817
8713
|
ref,
|
|
@@ -7824,7 +8720,7 @@ var SelectScrollDownButton = React50.forwardRef(({ className, ...props }, ref) =
|
|
|
7824
8720
|
}
|
|
7825
8721
|
));
|
|
7826
8722
|
SelectScrollDownButton.displayName = $cc7e05a45900e73f$export$bf1aedc3039c8d63.displayName;
|
|
7827
|
-
var SelectContent =
|
|
8723
|
+
var SelectContent = React55.forwardRef(({ className, children, position = "item-aligned", ...props }, ref) => /* @__PURE__ */ jsx($cc7e05a45900e73f$export$602eac185826482c, { children: /* @__PURE__ */ jsxs(
|
|
7828
8724
|
$cc7e05a45900e73f$export$7c6e2c02157bb7d2,
|
|
7829
8725
|
{
|
|
7830
8726
|
ref,
|
|
@@ -7861,7 +8757,7 @@ var SelectContent = React50.forwardRef(({ className, children, position = "item-
|
|
|
7861
8757
|
}
|
|
7862
8758
|
) }));
|
|
7863
8759
|
SelectContent.displayName = $cc7e05a45900e73f$export$7c6e2c02157bb7d2.displayName;
|
|
7864
|
-
var SelectLabel =
|
|
8760
|
+
var SelectLabel = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
7865
8761
|
$cc7e05a45900e73f$export$b04be29aa201d4f5,
|
|
7866
8762
|
{
|
|
7867
8763
|
ref,
|
|
@@ -7870,7 +8766,7 @@ var SelectLabel = React50.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
7870
8766
|
}
|
|
7871
8767
|
));
|
|
7872
8768
|
SelectLabel.displayName = $cc7e05a45900e73f$export$b04be29aa201d4f5.displayName;
|
|
7873
|
-
var SelectItem =
|
|
8769
|
+
var SelectItem = React55.forwardRef(({ className, children, variant = "default", size: size4 = "md", rightIcon, customIndicator, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
7874
8770
|
$cc7e05a45900e73f$export$6d08773d2e66f8f2,
|
|
7875
8771
|
{
|
|
7876
8772
|
ref,
|
|
@@ -7897,7 +8793,7 @@ var SelectItem = React50.forwardRef(({ className, children, variant = "default",
|
|
|
7897
8793
|
}
|
|
7898
8794
|
));
|
|
7899
8795
|
SelectItem.displayName = $cc7e05a45900e73f$export$6d08773d2e66f8f2.displayName;
|
|
7900
|
-
var SelectSeparator =
|
|
8796
|
+
var SelectSeparator = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
7901
8797
|
$cc7e05a45900e73f$export$1ff3c3f08ae963c0,
|
|
7902
8798
|
{
|
|
7903
8799
|
ref,
|
|
@@ -7917,15 +8813,15 @@ function composeEventHandlers(originalEventHandler, ourEventHandler, { checkForD
|
|
|
7917
8813
|
};
|
|
7918
8814
|
}
|
|
7919
8815
|
function createContext2(rootComponentName, defaultContext) {
|
|
7920
|
-
const Context =
|
|
8816
|
+
const Context = React55.createContext(defaultContext);
|
|
7921
8817
|
const Provider3 = (props) => {
|
|
7922
8818
|
const { children, ...context } = props;
|
|
7923
|
-
const value =
|
|
8819
|
+
const value = React55.useMemo(() => context, Object.values(context));
|
|
7924
8820
|
return /* @__PURE__ */ jsx(Context.Provider, { value, children });
|
|
7925
8821
|
};
|
|
7926
8822
|
Provider3.displayName = rootComponentName + "Provider";
|
|
7927
8823
|
function useContext23(consumerName) {
|
|
7928
|
-
const context =
|
|
8824
|
+
const context = React55.useContext(Context);
|
|
7929
8825
|
if (context)
|
|
7930
8826
|
return context;
|
|
7931
8827
|
if (defaultContext !== void 0)
|
|
@@ -7937,19 +8833,19 @@ function createContext2(rootComponentName, defaultContext) {
|
|
|
7937
8833
|
function createContextScope(scopeName, createContextScopeDeps = []) {
|
|
7938
8834
|
let defaultContexts = [];
|
|
7939
8835
|
function createContext32(rootComponentName, defaultContext) {
|
|
7940
|
-
const BaseContext =
|
|
8836
|
+
const BaseContext = React55.createContext(defaultContext);
|
|
7941
8837
|
const index2 = defaultContexts.length;
|
|
7942
8838
|
defaultContexts = [...defaultContexts, defaultContext];
|
|
7943
8839
|
const Provider3 = (props) => {
|
|
7944
8840
|
const { scope, children, ...context } = props;
|
|
7945
8841
|
const Context = scope?.[scopeName]?.[index2] || BaseContext;
|
|
7946
|
-
const value =
|
|
8842
|
+
const value = React55.useMemo(() => context, Object.values(context));
|
|
7947
8843
|
return /* @__PURE__ */ jsx(Context.Provider, { value, children });
|
|
7948
8844
|
};
|
|
7949
8845
|
Provider3.displayName = rootComponentName + "Provider";
|
|
7950
8846
|
function useContext23(consumerName, scope) {
|
|
7951
8847
|
const Context = scope?.[scopeName]?.[index2] || BaseContext;
|
|
7952
|
-
const context =
|
|
8848
|
+
const context = React55.useContext(Context);
|
|
7953
8849
|
if (context)
|
|
7954
8850
|
return context;
|
|
7955
8851
|
if (defaultContext !== void 0)
|
|
@@ -7960,11 +8856,11 @@ function createContextScope(scopeName, createContextScopeDeps = []) {
|
|
|
7960
8856
|
}
|
|
7961
8857
|
const createScope = () => {
|
|
7962
8858
|
const scopeContexts = defaultContexts.map((defaultContext) => {
|
|
7963
|
-
return
|
|
8859
|
+
return React55.createContext(defaultContext);
|
|
7964
8860
|
});
|
|
7965
8861
|
return function useScope(scope) {
|
|
7966
8862
|
const contexts = scope?.[scopeName] || scopeContexts;
|
|
7967
|
-
return
|
|
8863
|
+
return React55.useMemo(
|
|
7968
8864
|
() => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),
|
|
7969
8865
|
[scope, contexts]
|
|
7970
8866
|
);
|
|
@@ -7988,27 +8884,27 @@ function composeContextScopes(...scopes) {
|
|
|
7988
8884
|
const currentScope = scopeProps[`__scope${scopeName}`];
|
|
7989
8885
|
return { ...nextScopes2, ...currentScope };
|
|
7990
8886
|
}, {});
|
|
7991
|
-
return
|
|
8887
|
+
return React55.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);
|
|
7992
8888
|
};
|
|
7993
8889
|
};
|
|
7994
8890
|
createScope.scopeName = baseScope.scopeName;
|
|
7995
8891
|
return createScope;
|
|
7996
8892
|
}
|
|
7997
|
-
var useLayoutEffect22 = globalThis?.document ?
|
|
8893
|
+
var useLayoutEffect22 = globalThis?.document ? React55.useLayoutEffect : () => {
|
|
7998
8894
|
};
|
|
7999
8895
|
|
|
8000
8896
|
// node_modules/@radix-ui/react-id/dist/index.mjs
|
|
8001
|
-
var useReactId =
|
|
8897
|
+
var useReactId = React55[" useId ".trim().toString()] || (() => void 0);
|
|
8002
8898
|
var count = 0;
|
|
8003
8899
|
function useId(deterministicId) {
|
|
8004
|
-
const [id, setId] =
|
|
8900
|
+
const [id, setId] = React55.useState(useReactId());
|
|
8005
8901
|
useLayoutEffect22(() => {
|
|
8006
8902
|
if (!deterministicId)
|
|
8007
8903
|
setId((reactId) => reactId ?? String(count++));
|
|
8008
8904
|
}, [deterministicId]);
|
|
8009
8905
|
return deterministicId || (id ? `radix-${id}` : "");
|
|
8010
8906
|
}
|
|
8011
|
-
var useInsertionEffect =
|
|
8907
|
+
var useInsertionEffect = React55[" useInsertionEffect ".trim().toString()] || useLayoutEffect22;
|
|
8012
8908
|
function useControllableState({
|
|
8013
8909
|
prop,
|
|
8014
8910
|
defaultProp,
|
|
@@ -8023,8 +8919,8 @@ function useControllableState({
|
|
|
8023
8919
|
const isControlled = prop !== void 0;
|
|
8024
8920
|
const value = isControlled ? prop : uncontrolledProp;
|
|
8025
8921
|
{
|
|
8026
|
-
const isControlledRef =
|
|
8027
|
-
|
|
8922
|
+
const isControlledRef = React55.useRef(prop !== void 0);
|
|
8923
|
+
React55.useEffect(() => {
|
|
8028
8924
|
const wasControlled = isControlledRef.current;
|
|
8029
8925
|
if (wasControlled !== isControlled) {
|
|
8030
8926
|
const from2 = wasControlled ? "controlled" : "uncontrolled";
|
|
@@ -8036,7 +8932,7 @@ function useControllableState({
|
|
|
8036
8932
|
isControlledRef.current = isControlled;
|
|
8037
8933
|
}, [isControlled, caller]);
|
|
8038
8934
|
}
|
|
8039
|
-
const setValue =
|
|
8935
|
+
const setValue = React55.useCallback(
|
|
8040
8936
|
(nextValue) => {
|
|
8041
8937
|
if (isControlled) {
|
|
8042
8938
|
const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;
|
|
@@ -8055,13 +8951,13 @@ function useUncontrolledState({
|
|
|
8055
8951
|
defaultProp,
|
|
8056
8952
|
onChange
|
|
8057
8953
|
}) {
|
|
8058
|
-
const [value, setValue] =
|
|
8059
|
-
const prevValueRef =
|
|
8060
|
-
const onChangeRef =
|
|
8954
|
+
const [value, setValue] = React55.useState(defaultProp);
|
|
8955
|
+
const prevValueRef = React55.useRef(value);
|
|
8956
|
+
const onChangeRef = React55.useRef(onChange);
|
|
8061
8957
|
useInsertionEffect(() => {
|
|
8062
8958
|
onChangeRef.current = onChange;
|
|
8063
8959
|
}, [onChange]);
|
|
8064
|
-
|
|
8960
|
+
React55.useEffect(() => {
|
|
8065
8961
|
if (prevValueRef.current !== value) {
|
|
8066
8962
|
onChangeRef.current?.(value);
|
|
8067
8963
|
prevValueRef.current = value;
|
|
@@ -8073,15 +8969,15 @@ function isFunction(value) {
|
|
|
8073
8969
|
return typeof value === "function";
|
|
8074
8970
|
}
|
|
8075
8971
|
function useCallbackRef2(callback) {
|
|
8076
|
-
const callbackRef =
|
|
8077
|
-
|
|
8972
|
+
const callbackRef = React55.useRef(callback);
|
|
8973
|
+
React55.useEffect(() => {
|
|
8078
8974
|
callbackRef.current = callback;
|
|
8079
8975
|
});
|
|
8080
|
-
return
|
|
8976
|
+
return React55.useMemo(() => (...args) => callbackRef.current?.(...args), []);
|
|
8081
8977
|
}
|
|
8082
8978
|
function useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {
|
|
8083
8979
|
const onEscapeKeyDown = useCallbackRef2(onEscapeKeyDownProp);
|
|
8084
|
-
|
|
8980
|
+
React55.useEffect(() => {
|
|
8085
8981
|
const handleKeyDown3 = (event) => {
|
|
8086
8982
|
if (event.key === "Escape") {
|
|
8087
8983
|
onEscapeKeyDown(event);
|
|
@@ -8096,12 +8992,12 @@ var CONTEXT_UPDATE = "dismissableLayer.update";
|
|
|
8096
8992
|
var POINTER_DOWN_OUTSIDE = "dismissableLayer.pointerDownOutside";
|
|
8097
8993
|
var FOCUS_OUTSIDE = "dismissableLayer.focusOutside";
|
|
8098
8994
|
var originalBodyPointerEvents;
|
|
8099
|
-
var DismissableLayerContext =
|
|
8995
|
+
var DismissableLayerContext = React55.createContext({
|
|
8100
8996
|
layers: /* @__PURE__ */ new Set(),
|
|
8101
8997
|
layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),
|
|
8102
8998
|
branches: /* @__PURE__ */ new Set()
|
|
8103
8999
|
});
|
|
8104
|
-
var DismissableLayer =
|
|
9000
|
+
var DismissableLayer = React55.forwardRef(
|
|
8105
9001
|
(props, forwardedRef) => {
|
|
8106
9002
|
const {
|
|
8107
9003
|
disableOutsidePointerEvents = false,
|
|
@@ -8112,10 +9008,10 @@ var DismissableLayer = React50.forwardRef(
|
|
|
8112
9008
|
onDismiss,
|
|
8113
9009
|
...layerProps
|
|
8114
9010
|
} = props;
|
|
8115
|
-
const context =
|
|
8116
|
-
const [node, setNode2] =
|
|
9011
|
+
const context = React55.useContext(DismissableLayerContext);
|
|
9012
|
+
const [node, setNode2] = React55.useState(null);
|
|
8117
9013
|
const ownerDocument = node?.ownerDocument ?? globalThis?.document;
|
|
8118
|
-
const [, force] =
|
|
9014
|
+
const [, force] = React55.useState({});
|
|
8119
9015
|
const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode2(node2));
|
|
8120
9016
|
const layers = Array.from(context.layers);
|
|
8121
9017
|
const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);
|
|
@@ -8153,7 +9049,7 @@ var DismissableLayer = React50.forwardRef(
|
|
|
8153
9049
|
onDismiss();
|
|
8154
9050
|
}
|
|
8155
9051
|
}, ownerDocument);
|
|
8156
|
-
|
|
9052
|
+
React55.useEffect(() => {
|
|
8157
9053
|
if (!node)
|
|
8158
9054
|
return;
|
|
8159
9055
|
if (disableOutsidePointerEvents) {
|
|
@@ -8171,7 +9067,7 @@ var DismissableLayer = React50.forwardRef(
|
|
|
8171
9067
|
}
|
|
8172
9068
|
};
|
|
8173
9069
|
}, [node, ownerDocument, disableOutsidePointerEvents, context]);
|
|
8174
|
-
|
|
9070
|
+
React55.useEffect(() => {
|
|
8175
9071
|
return () => {
|
|
8176
9072
|
if (!node)
|
|
8177
9073
|
return;
|
|
@@ -8180,7 +9076,7 @@ var DismissableLayer = React50.forwardRef(
|
|
|
8180
9076
|
dispatchUpdate();
|
|
8181
9077
|
};
|
|
8182
9078
|
}, [node, context]);
|
|
8183
|
-
|
|
9079
|
+
React55.useEffect(() => {
|
|
8184
9080
|
const handleUpdate = () => force({});
|
|
8185
9081
|
document.addEventListener(CONTEXT_UPDATE, handleUpdate);
|
|
8186
9082
|
return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);
|
|
@@ -8206,11 +9102,11 @@ var DismissableLayer = React50.forwardRef(
|
|
|
8206
9102
|
);
|
|
8207
9103
|
DismissableLayer.displayName = DISMISSABLE_LAYER_NAME;
|
|
8208
9104
|
var BRANCH_NAME = "DismissableLayerBranch";
|
|
8209
|
-
var DismissableLayerBranch =
|
|
8210
|
-
const context =
|
|
8211
|
-
const ref =
|
|
9105
|
+
var DismissableLayerBranch = React55.forwardRef((props, forwardedRef) => {
|
|
9106
|
+
const context = React55.useContext(DismissableLayerContext);
|
|
9107
|
+
const ref = React55.useRef(null);
|
|
8212
9108
|
const composedRefs = useComposedRefs(forwardedRef, ref);
|
|
8213
|
-
|
|
9109
|
+
React55.useEffect(() => {
|
|
8214
9110
|
const node = ref.current;
|
|
8215
9111
|
if (node) {
|
|
8216
9112
|
context.branches.add(node);
|
|
@@ -8224,10 +9120,10 @@ var DismissableLayerBranch = React50.forwardRef((props, forwardedRef) => {
|
|
|
8224
9120
|
DismissableLayerBranch.displayName = BRANCH_NAME;
|
|
8225
9121
|
function usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {
|
|
8226
9122
|
const handlePointerDownOutside = useCallbackRef2(onPointerDownOutside);
|
|
8227
|
-
const isPointerInsideReactTreeRef =
|
|
8228
|
-
const handleClickRef =
|
|
9123
|
+
const isPointerInsideReactTreeRef = React55.useRef(false);
|
|
9124
|
+
const handleClickRef = React55.useRef(() => {
|
|
8229
9125
|
});
|
|
8230
|
-
|
|
9126
|
+
React55.useEffect(() => {
|
|
8231
9127
|
const handlePointerDown = (event) => {
|
|
8232
9128
|
if (event.target && !isPointerInsideReactTreeRef.current) {
|
|
8233
9129
|
let handleAndDispatchPointerDownOutsideEvent2 = function() {
|
|
@@ -8267,8 +9163,8 @@ function usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?
|
|
|
8267
9163
|
}
|
|
8268
9164
|
function useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {
|
|
8269
9165
|
const handleFocusOutside = useCallbackRef2(onFocusOutside);
|
|
8270
|
-
const isFocusInsideReactTreeRef =
|
|
8271
|
-
|
|
9166
|
+
const isFocusInsideReactTreeRef = React55.useRef(false);
|
|
9167
|
+
React55.useEffect(() => {
|
|
8272
9168
|
const handleFocus = (event) => {
|
|
8273
9169
|
if (event.target && !isFocusInsideReactTreeRef.current) {
|
|
8274
9170
|
const eventDetail = { originalEvent: event };
|
|
@@ -8306,7 +9202,7 @@ var AUTOFOCUS_ON_MOUNT = "focusScope.autoFocusOnMount";
|
|
|
8306
9202
|
var AUTOFOCUS_ON_UNMOUNT = "focusScope.autoFocusOnUnmount";
|
|
8307
9203
|
var EVENT_OPTIONS = { bubbles: false, cancelable: true };
|
|
8308
9204
|
var FOCUS_SCOPE_NAME = "FocusScope";
|
|
8309
|
-
var FocusScope =
|
|
9205
|
+
var FocusScope = React55.forwardRef((props, forwardedRef) => {
|
|
8310
9206
|
const {
|
|
8311
9207
|
loop = false,
|
|
8312
9208
|
trapped = false,
|
|
@@ -8314,12 +9210,12 @@ var FocusScope = React50.forwardRef((props, forwardedRef) => {
|
|
|
8314
9210
|
onUnmountAutoFocus: onUnmountAutoFocusProp,
|
|
8315
9211
|
...scopeProps
|
|
8316
9212
|
} = props;
|
|
8317
|
-
const [container, setContainer] =
|
|
9213
|
+
const [container, setContainer] = React55.useState(null);
|
|
8318
9214
|
const onMountAutoFocus = useCallbackRef2(onMountAutoFocusProp);
|
|
8319
9215
|
const onUnmountAutoFocus = useCallbackRef2(onUnmountAutoFocusProp);
|
|
8320
|
-
const lastFocusedElementRef =
|
|
9216
|
+
const lastFocusedElementRef = React55.useRef(null);
|
|
8321
9217
|
const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));
|
|
8322
|
-
const focusScope =
|
|
9218
|
+
const focusScope = React55.useRef({
|
|
8323
9219
|
paused: false,
|
|
8324
9220
|
pause() {
|
|
8325
9221
|
this.paused = true;
|
|
@@ -8328,7 +9224,7 @@ var FocusScope = React50.forwardRef((props, forwardedRef) => {
|
|
|
8328
9224
|
this.paused = false;
|
|
8329
9225
|
}
|
|
8330
9226
|
}).current;
|
|
8331
|
-
|
|
9227
|
+
React55.useEffect(() => {
|
|
8332
9228
|
if (trapped) {
|
|
8333
9229
|
let handleFocusIn2 = function(event) {
|
|
8334
9230
|
if (focusScope.paused || !container)
|
|
@@ -8369,7 +9265,7 @@ var FocusScope = React50.forwardRef((props, forwardedRef) => {
|
|
|
8369
9265
|
};
|
|
8370
9266
|
}
|
|
8371
9267
|
}, [trapped, container, focusScope.paused]);
|
|
8372
|
-
|
|
9268
|
+
React55.useEffect(() => {
|
|
8373
9269
|
if (container) {
|
|
8374
9270
|
focusScopesStack.add(focusScope);
|
|
8375
9271
|
const previouslyFocusedElement = document.activeElement;
|
|
@@ -8400,7 +9296,7 @@ var FocusScope = React50.forwardRef((props, forwardedRef) => {
|
|
|
8400
9296
|
};
|
|
8401
9297
|
}
|
|
8402
9298
|
}, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);
|
|
8403
|
-
const handleKeyDown3 =
|
|
9299
|
+
const handleKeyDown3 = React55.useCallback(
|
|
8404
9300
|
(event) => {
|
|
8405
9301
|
if (!loop && !trapped)
|
|
8406
9302
|
return;
|
|
@@ -8520,16 +9416,16 @@ function removeLinks(items) {
|
|
|
8520
9416
|
return items.filter((item) => item.tagName !== "A");
|
|
8521
9417
|
}
|
|
8522
9418
|
var PORTAL_NAME = "Portal";
|
|
8523
|
-
var Portal =
|
|
9419
|
+
var Portal = React55.forwardRef((props, forwardedRef) => {
|
|
8524
9420
|
const { container: containerProp, ...portalProps } = props;
|
|
8525
|
-
const [mounted, setMounted] =
|
|
9421
|
+
const [mounted, setMounted] = React55.useState(false);
|
|
8526
9422
|
useLayoutEffect22(() => setMounted(true), []);
|
|
8527
9423
|
const container = containerProp || mounted && globalThis?.document?.body;
|
|
8528
9424
|
return container ? ReactDOM__default.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;
|
|
8529
9425
|
});
|
|
8530
9426
|
Portal.displayName = PORTAL_NAME;
|
|
8531
9427
|
function useStateMachine(initialState, machine) {
|
|
8532
|
-
return
|
|
9428
|
+
return React55.useReducer((state, event) => {
|
|
8533
9429
|
const nextState = machine[state][event];
|
|
8534
9430
|
return nextState ?? state;
|
|
8535
9431
|
}, initialState);
|
|
@@ -8537,17 +9433,17 @@ function useStateMachine(initialState, machine) {
|
|
|
8537
9433
|
var Presence = (props) => {
|
|
8538
9434
|
const { present, children } = props;
|
|
8539
9435
|
const presence = usePresence(present);
|
|
8540
|
-
const child = typeof children === "function" ? children({ present: presence.isPresent }) :
|
|
9436
|
+
const child = typeof children === "function" ? children({ present: presence.isPresent }) : React55.Children.only(children);
|
|
8541
9437
|
const ref = useComposedRefs(presence.ref, getElementRef2(child));
|
|
8542
9438
|
const forceMount = typeof children === "function";
|
|
8543
|
-
return forceMount || presence.isPresent ?
|
|
9439
|
+
return forceMount || presence.isPresent ? React55.cloneElement(child, { ref }) : null;
|
|
8544
9440
|
};
|
|
8545
9441
|
Presence.displayName = "Presence";
|
|
8546
9442
|
function usePresence(present) {
|
|
8547
|
-
const [node, setNode2] =
|
|
8548
|
-
const stylesRef =
|
|
8549
|
-
const prevPresentRef =
|
|
8550
|
-
const prevAnimationNameRef =
|
|
9443
|
+
const [node, setNode2] = React55.useState();
|
|
9444
|
+
const stylesRef = React55.useRef(null);
|
|
9445
|
+
const prevPresentRef = React55.useRef(present);
|
|
9446
|
+
const prevAnimationNameRef = React55.useRef("none");
|
|
8551
9447
|
const initialState = present ? "mounted" : "unmounted";
|
|
8552
9448
|
const [state, send] = useStateMachine(initialState, {
|
|
8553
9449
|
mounted: {
|
|
@@ -8562,7 +9458,7 @@ function usePresence(present) {
|
|
|
8562
9458
|
MOUNT: "mounted"
|
|
8563
9459
|
}
|
|
8564
9460
|
});
|
|
8565
|
-
|
|
9461
|
+
React55.useEffect(() => {
|
|
8566
9462
|
const currentAnimationName = getAnimationName(stylesRef.current);
|
|
8567
9463
|
prevAnimationNameRef.current = state === "mounted" ? currentAnimationName : "none";
|
|
8568
9464
|
}, [state]);
|
|
@@ -8628,7 +9524,7 @@ function usePresence(present) {
|
|
|
8628
9524
|
}, [node, send]);
|
|
8629
9525
|
return {
|
|
8630
9526
|
isPresent: ["mounted", "unmountSuspended"].includes(state),
|
|
8631
|
-
ref:
|
|
9527
|
+
ref: React55.useCallback((node2) => {
|
|
8632
9528
|
stylesRef.current = node2 ? getComputedStyle(node2) : null;
|
|
8633
9529
|
setNode2(node2);
|
|
8634
9530
|
}, [])
|
|
@@ -8652,7 +9548,7 @@ function getElementRef2(element) {
|
|
|
8652
9548
|
}
|
|
8653
9549
|
var count2 = 0;
|
|
8654
9550
|
function useFocusGuards() {
|
|
8655
|
-
|
|
9551
|
+
React55.useEffect(() => {
|
|
8656
9552
|
const edgeGuards = document.querySelectorAll("[data-radix-focus-guard]");
|
|
8657
9553
|
document.body.insertAdjacentElement("afterbegin", edgeGuards[0] ?? createFocusGuard());
|
|
8658
9554
|
document.body.insertAdjacentElement("beforeend", edgeGuards[1] ?? createFocusGuard());
|
|
@@ -8683,9 +9579,9 @@ var effectCar2 = createSidecarMedium();
|
|
|
8683
9579
|
var nothing2 = function() {
|
|
8684
9580
|
return;
|
|
8685
9581
|
};
|
|
8686
|
-
var RemoveScroll2 =
|
|
8687
|
-
var ref =
|
|
8688
|
-
var _a2 =
|
|
9582
|
+
var RemoveScroll2 = React55.forwardRef(function(props, parentRef) {
|
|
9583
|
+
var ref = React55.useRef(null);
|
|
9584
|
+
var _a2 = React55.useState({
|
|
8689
9585
|
onScrollCapture: nothing2,
|
|
8690
9586
|
onWheelCapture: nothing2,
|
|
8691
9587
|
onTouchMoveCapture: nothing2
|
|
@@ -8694,11 +9590,11 @@ var RemoveScroll2 = React50.forwardRef(function(props, parentRef) {
|
|
|
8694
9590
|
var SideCar2 = sideCar;
|
|
8695
9591
|
var containerRef = useMergeRefs([ref, parentRef]);
|
|
8696
9592
|
var containerProps = __assign(__assign({}, rest), callbacks);
|
|
8697
|
-
return
|
|
8698
|
-
|
|
9593
|
+
return React55.createElement(
|
|
9594
|
+
React55.Fragment,
|
|
8699
9595
|
null,
|
|
8700
|
-
enabled &&
|
|
8701
|
-
forwardProps ?
|
|
9596
|
+
enabled && React55.createElement(SideCar2, { sideCar: effectCar2, removeScrollBar, shards, noRelative, noIsolation, inert, setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode }),
|
|
9597
|
+
forwardProps ? React55.cloneElement(React55.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef })) : React55.createElement(Container, __assign({}, containerProps, { className, ref: containerRef }), children)
|
|
8702
9598
|
);
|
|
8703
9599
|
});
|
|
8704
9600
|
RemoveScroll2.defaultProps = {
|
|
@@ -8849,16 +9745,16 @@ var generateStyle2 = function(id) {
|
|
|
8849
9745
|
var idCounter2 = 0;
|
|
8850
9746
|
var lockStack2 = [];
|
|
8851
9747
|
function RemoveScrollSideCar2(props) {
|
|
8852
|
-
var shouldPreventQueue =
|
|
8853
|
-
var touchStartRef =
|
|
8854
|
-
var activeAxis =
|
|
8855
|
-
var id =
|
|
8856
|
-
var Style2 =
|
|
8857
|
-
var lastProps =
|
|
8858
|
-
|
|
9748
|
+
var shouldPreventQueue = React55.useRef([]);
|
|
9749
|
+
var touchStartRef = React55.useRef([0, 0]);
|
|
9750
|
+
var activeAxis = React55.useRef();
|
|
9751
|
+
var id = React55.useState(idCounter2++)[0];
|
|
9752
|
+
var Style2 = React55.useState(styleSingleton)[0];
|
|
9753
|
+
var lastProps = React55.useRef(props);
|
|
9754
|
+
React55.useEffect(function() {
|
|
8859
9755
|
lastProps.current = props;
|
|
8860
9756
|
}, [props]);
|
|
8861
|
-
|
|
9757
|
+
React55.useEffect(function() {
|
|
8862
9758
|
if (props.inert) {
|
|
8863
9759
|
document.body.classList.add("block-interactivity-".concat(id));
|
|
8864
9760
|
var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef2), true).filter(Boolean);
|
|
@@ -8874,7 +9770,7 @@ function RemoveScrollSideCar2(props) {
|
|
|
8874
9770
|
}
|
|
8875
9771
|
return;
|
|
8876
9772
|
}, [props.inert, props.lockRef.current, props.shards]);
|
|
8877
|
-
var shouldCancelEvent =
|
|
9773
|
+
var shouldCancelEvent = React55.useCallback(function(event, parent) {
|
|
8878
9774
|
if ("touches" in event && event.touches.length === 2 || event.type === "wheel" && event.ctrlKey) {
|
|
8879
9775
|
return !lastProps.current.allowPinchZoom;
|
|
8880
9776
|
}
|
|
@@ -8910,7 +9806,7 @@ function RemoveScrollSideCar2(props) {
|
|
|
8910
9806
|
var cancelingAxis = activeAxis.current || currentAxis;
|
|
8911
9807
|
return handleScroll2(cancelingAxis, parent, event, cancelingAxis === "h" ? deltaX : deltaY, true);
|
|
8912
9808
|
}, []);
|
|
8913
|
-
var shouldPrevent =
|
|
9809
|
+
var shouldPrevent = React55.useCallback(function(_event) {
|
|
8914
9810
|
var event = _event;
|
|
8915
9811
|
if (!lockStack2.length || lockStack2[lockStack2.length - 1] !== Style2) {
|
|
8916
9812
|
return;
|
|
@@ -8937,7 +9833,7 @@ function RemoveScrollSideCar2(props) {
|
|
|
8937
9833
|
}
|
|
8938
9834
|
}
|
|
8939
9835
|
}, []);
|
|
8940
|
-
var shouldCancel =
|
|
9836
|
+
var shouldCancel = React55.useCallback(function(name, delta, target, should) {
|
|
8941
9837
|
var event = { name, delta, target, should, shadowParent: getOutermostShadowParent(target) };
|
|
8942
9838
|
shouldPreventQueue.current.push(event);
|
|
8943
9839
|
setTimeout(function() {
|
|
@@ -8946,17 +9842,17 @@ function RemoveScrollSideCar2(props) {
|
|
|
8946
9842
|
});
|
|
8947
9843
|
}, 1);
|
|
8948
9844
|
}, []);
|
|
8949
|
-
var scrollTouchStart =
|
|
9845
|
+
var scrollTouchStart = React55.useCallback(function(event) {
|
|
8950
9846
|
touchStartRef.current = getTouchXY2(event);
|
|
8951
9847
|
activeAxis.current = void 0;
|
|
8952
9848
|
}, []);
|
|
8953
|
-
var scrollWheel =
|
|
9849
|
+
var scrollWheel = React55.useCallback(function(event) {
|
|
8954
9850
|
shouldCancel(event.type, getDeltaXY2(event), event.target, shouldCancelEvent(event, props.lockRef.current));
|
|
8955
9851
|
}, []);
|
|
8956
|
-
var scrollTouchMove =
|
|
9852
|
+
var scrollTouchMove = React55.useCallback(function(event) {
|
|
8957
9853
|
shouldCancel(event.type, getTouchXY2(event), event.target, shouldCancelEvent(event, props.lockRef.current));
|
|
8958
9854
|
}, []);
|
|
8959
|
-
|
|
9855
|
+
React55.useEffect(function() {
|
|
8960
9856
|
lockStack2.push(Style2);
|
|
8961
9857
|
props.setCallbacks({
|
|
8962
9858
|
onScrollCapture: scrollWheel,
|
|
@@ -8976,11 +9872,11 @@ function RemoveScrollSideCar2(props) {
|
|
|
8976
9872
|
};
|
|
8977
9873
|
}, []);
|
|
8978
9874
|
var removeScrollBar = props.removeScrollBar, inert = props.inert;
|
|
8979
|
-
return
|
|
8980
|
-
|
|
9875
|
+
return React55.createElement(
|
|
9876
|
+
React55.Fragment,
|
|
8981
9877
|
null,
|
|
8982
|
-
inert ?
|
|
8983
|
-
removeScrollBar ?
|
|
9878
|
+
inert ? React55.createElement(Style2, { styles: generateStyle2(id) }) : null,
|
|
9879
|
+
removeScrollBar ? React55.createElement(RemoveScrollBar, { noRelative: props.noRelative, gapMode: props.gapMode }) : null
|
|
8984
9880
|
);
|
|
8985
9881
|
}
|
|
8986
9882
|
function getOutermostShadowParent(node) {
|
|
@@ -8999,8 +9895,8 @@ function getOutermostShadowParent(node) {
|
|
|
8999
9895
|
var sidecar_default2 = exportSidecar(effectCar2, RemoveScrollSideCar2);
|
|
9000
9896
|
|
|
9001
9897
|
// node_modules/react-remove-scroll/dist/es2015/Combination.js
|
|
9002
|
-
var ReactRemoveScroll2 =
|
|
9003
|
-
return
|
|
9898
|
+
var ReactRemoveScroll2 = React55.forwardRef(function(props, ref) {
|
|
9899
|
+
return React55.createElement(RemoveScroll2, __assign({}, props, { ref, sideCar: sidecar_default2 }));
|
|
9004
9900
|
});
|
|
9005
9901
|
ReactRemoveScroll2.classNames = RemoveScroll2.classNames;
|
|
9006
9902
|
var Combination_default2 = ReactRemoveScroll2;
|
|
@@ -9016,8 +9912,8 @@ var Dialog = (props) => {
|
|
|
9016
9912
|
onOpenChange,
|
|
9017
9913
|
modal = true
|
|
9018
9914
|
} = props;
|
|
9019
|
-
const triggerRef =
|
|
9020
|
-
const contentRef =
|
|
9915
|
+
const triggerRef = React55.useRef(null);
|
|
9916
|
+
const contentRef = React55.useRef(null);
|
|
9021
9917
|
const [open, setOpen] = useControllableState({
|
|
9022
9918
|
prop: openProp,
|
|
9023
9919
|
defaultProp: defaultOpen ?? false,
|
|
@@ -9035,7 +9931,7 @@ var Dialog = (props) => {
|
|
|
9035
9931
|
descriptionId: useId(),
|
|
9036
9932
|
open,
|
|
9037
9933
|
onOpenChange: setOpen,
|
|
9038
|
-
onOpenToggle:
|
|
9934
|
+
onOpenToggle: React55.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),
|
|
9039
9935
|
modal,
|
|
9040
9936
|
children
|
|
9041
9937
|
}
|
|
@@ -9043,7 +9939,7 @@ var Dialog = (props) => {
|
|
|
9043
9939
|
};
|
|
9044
9940
|
Dialog.displayName = DIALOG_NAME;
|
|
9045
9941
|
var TRIGGER_NAME = "DialogTrigger";
|
|
9046
|
-
var DialogTrigger =
|
|
9942
|
+
var DialogTrigger = React55.forwardRef(
|
|
9047
9943
|
(props, forwardedRef) => {
|
|
9048
9944
|
const { __scopeDialog, ...triggerProps } = props;
|
|
9049
9945
|
const context = useDialogContext(TRIGGER_NAME, __scopeDialog);
|
|
@@ -9071,11 +9967,11 @@ var [PortalProvider, usePortalContext] = createDialogContext(PORTAL_NAME2, {
|
|
|
9071
9967
|
var DialogPortal = (props) => {
|
|
9072
9968
|
const { __scopeDialog, forceMount, children, container } = props;
|
|
9073
9969
|
const context = useDialogContext(PORTAL_NAME2, __scopeDialog);
|
|
9074
|
-
return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeDialog, forceMount, children:
|
|
9970
|
+
return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeDialog, forceMount, children: React55.Children.map(children, (child) => /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Portal, { asChild: true, container, children: child }) })) });
|
|
9075
9971
|
};
|
|
9076
9972
|
DialogPortal.displayName = PORTAL_NAME2;
|
|
9077
9973
|
var OVERLAY_NAME = "DialogOverlay";
|
|
9078
|
-
var DialogOverlay =
|
|
9974
|
+
var DialogOverlay = React55.forwardRef(
|
|
9079
9975
|
(props, forwardedRef) => {
|
|
9080
9976
|
const portalContext = usePortalContext(OVERLAY_NAME, props.__scopeDialog);
|
|
9081
9977
|
const { forceMount = portalContext.forceMount, ...overlayProps } = props;
|
|
@@ -9085,7 +9981,7 @@ var DialogOverlay = React50.forwardRef(
|
|
|
9085
9981
|
);
|
|
9086
9982
|
DialogOverlay.displayName = OVERLAY_NAME;
|
|
9087
9983
|
var Slot = createSlot("DialogOverlay.RemoveScroll");
|
|
9088
|
-
var DialogOverlayImpl =
|
|
9984
|
+
var DialogOverlayImpl = React55.forwardRef(
|
|
9089
9985
|
(props, forwardedRef) => {
|
|
9090
9986
|
const { __scopeDialog, ...overlayProps } = props;
|
|
9091
9987
|
const context = useDialogContext(OVERLAY_NAME, __scopeDialog);
|
|
@@ -9105,7 +10001,7 @@ var DialogOverlayImpl = React50.forwardRef(
|
|
|
9105
10001
|
}
|
|
9106
10002
|
);
|
|
9107
10003
|
var CONTENT_NAME = "DialogContent";
|
|
9108
|
-
var DialogContent =
|
|
10004
|
+
var DialogContent = React55.forwardRef(
|
|
9109
10005
|
(props, forwardedRef) => {
|
|
9110
10006
|
const portalContext = usePortalContext(CONTENT_NAME, props.__scopeDialog);
|
|
9111
10007
|
const { forceMount = portalContext.forceMount, ...contentProps } = props;
|
|
@@ -9114,12 +10010,12 @@ var DialogContent = React50.forwardRef(
|
|
|
9114
10010
|
}
|
|
9115
10011
|
);
|
|
9116
10012
|
DialogContent.displayName = CONTENT_NAME;
|
|
9117
|
-
var DialogContentModal =
|
|
10013
|
+
var DialogContentModal = React55.forwardRef(
|
|
9118
10014
|
(props, forwardedRef) => {
|
|
9119
10015
|
const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);
|
|
9120
|
-
const contentRef =
|
|
10016
|
+
const contentRef = React55.useRef(null);
|
|
9121
10017
|
const composedRefs = useComposedRefs(forwardedRef, context.contentRef, contentRef);
|
|
9122
|
-
|
|
10018
|
+
React55.useEffect(() => {
|
|
9123
10019
|
const content = contentRef.current;
|
|
9124
10020
|
if (content)
|
|
9125
10021
|
return hideOthers(content);
|
|
@@ -9150,11 +10046,11 @@ var DialogContentModal = React50.forwardRef(
|
|
|
9150
10046
|
);
|
|
9151
10047
|
}
|
|
9152
10048
|
);
|
|
9153
|
-
var DialogContentNonModal =
|
|
10049
|
+
var DialogContentNonModal = React55.forwardRef(
|
|
9154
10050
|
(props, forwardedRef) => {
|
|
9155
10051
|
const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);
|
|
9156
|
-
const hasInteractedOutsideRef =
|
|
9157
|
-
const hasPointerDownOutsideRef =
|
|
10052
|
+
const hasInteractedOutsideRef = React55.useRef(false);
|
|
10053
|
+
const hasPointerDownOutsideRef = React55.useRef(false);
|
|
9158
10054
|
return /* @__PURE__ */ jsx(
|
|
9159
10055
|
DialogContentImpl,
|
|
9160
10056
|
{
|
|
@@ -9192,11 +10088,11 @@ var DialogContentNonModal = React50.forwardRef(
|
|
|
9192
10088
|
);
|
|
9193
10089
|
}
|
|
9194
10090
|
);
|
|
9195
|
-
var DialogContentImpl =
|
|
10091
|
+
var DialogContentImpl = React55.forwardRef(
|
|
9196
10092
|
(props, forwardedRef) => {
|
|
9197
10093
|
const { __scopeDialog, trapFocus, onOpenAutoFocus, onCloseAutoFocus, ...contentProps } = props;
|
|
9198
10094
|
const context = useDialogContext(CONTENT_NAME, __scopeDialog);
|
|
9199
|
-
const contentRef =
|
|
10095
|
+
const contentRef = React55.useRef(null);
|
|
9200
10096
|
const composedRefs = useComposedRefs(forwardedRef, contentRef);
|
|
9201
10097
|
useFocusGuards();
|
|
9202
10098
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
@@ -9231,7 +10127,7 @@ var DialogContentImpl = React50.forwardRef(
|
|
|
9231
10127
|
}
|
|
9232
10128
|
);
|
|
9233
10129
|
var TITLE_NAME = "DialogTitle";
|
|
9234
|
-
var DialogTitle =
|
|
10130
|
+
var DialogTitle = React55.forwardRef(
|
|
9235
10131
|
(props, forwardedRef) => {
|
|
9236
10132
|
const { __scopeDialog, ...titleProps } = props;
|
|
9237
10133
|
const context = useDialogContext(TITLE_NAME, __scopeDialog);
|
|
@@ -9240,7 +10136,7 @@ var DialogTitle = React50.forwardRef(
|
|
|
9240
10136
|
);
|
|
9241
10137
|
DialogTitle.displayName = TITLE_NAME;
|
|
9242
10138
|
var DESCRIPTION_NAME = "DialogDescription";
|
|
9243
|
-
var DialogDescription =
|
|
10139
|
+
var DialogDescription = React55.forwardRef(
|
|
9244
10140
|
(props, forwardedRef) => {
|
|
9245
10141
|
const { __scopeDialog, ...descriptionProps } = props;
|
|
9246
10142
|
const context = useDialogContext(DESCRIPTION_NAME, __scopeDialog);
|
|
@@ -9249,7 +10145,7 @@ var DialogDescription = React50.forwardRef(
|
|
|
9249
10145
|
);
|
|
9250
10146
|
DialogDescription.displayName = DESCRIPTION_NAME;
|
|
9251
10147
|
var CLOSE_NAME = "DialogClose";
|
|
9252
|
-
var DialogClose =
|
|
10148
|
+
var DialogClose = React55.forwardRef(
|
|
9253
10149
|
(props, forwardedRef) => {
|
|
9254
10150
|
const { __scopeDialog, ...closeProps } = props;
|
|
9255
10151
|
const context = useDialogContext(CLOSE_NAME, __scopeDialog);
|
|
@@ -9281,7 +10177,7 @@ var TitleWarning = ({ titleId }) => {
|
|
|
9281
10177
|
If you want to hide the \`${titleWarningContext.titleName}\`, you can wrap it with our VisuallyHidden component.
|
|
9282
10178
|
|
|
9283
10179
|
For more information, see https://radix-ui.com/primitives/docs/components/${titleWarningContext.docsSlug}`;
|
|
9284
|
-
|
|
10180
|
+
React55.useEffect(() => {
|
|
9285
10181
|
if (titleId) {
|
|
9286
10182
|
const hasTitle = document.getElementById(titleId);
|
|
9287
10183
|
if (!hasTitle)
|
|
@@ -9294,7 +10190,7 @@ var DESCRIPTION_WARNING_NAME = "DialogDescriptionWarning";
|
|
|
9294
10190
|
var DescriptionWarning = ({ contentRef, descriptionId }) => {
|
|
9295
10191
|
const descriptionWarningContext = useWarningContext(DESCRIPTION_WARNING_NAME);
|
|
9296
10192
|
const MESSAGE = `Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${descriptionWarningContext.contentName}}.`;
|
|
9297
|
-
|
|
10193
|
+
React55.useEffect(() => {
|
|
9298
10194
|
const describedById = contentRef.current?.getAttribute("aria-describedby");
|
|
9299
10195
|
if (descriptionId && describedById) {
|
|
9300
10196
|
const hasDescription = document.getElementById(descriptionId);
|
|
@@ -9337,7 +10233,7 @@ var overlayVariants = cva(
|
|
|
9337
10233
|
}
|
|
9338
10234
|
}
|
|
9339
10235
|
);
|
|
9340
|
-
var DialogOverlay2 =
|
|
10236
|
+
var DialogOverlay2 = React55.forwardRef(({ className, variant, animation, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
9341
10237
|
Overlay,
|
|
9342
10238
|
{
|
|
9343
10239
|
ref,
|
|
@@ -9396,7 +10292,7 @@ var dialogContentVariants = cva(
|
|
|
9396
10292
|
}
|
|
9397
10293
|
}
|
|
9398
10294
|
);
|
|
9399
|
-
var DialogContent2 =
|
|
10295
|
+
var DialogContent2 = React55.forwardRef(
|
|
9400
10296
|
({
|
|
9401
10297
|
className,
|
|
9402
10298
|
children,
|
|
@@ -9509,7 +10405,7 @@ var DialogFooter = ({
|
|
|
9509
10405
|
}
|
|
9510
10406
|
);
|
|
9511
10407
|
DialogFooter.displayName = "DialogFooter";
|
|
9512
|
-
var DialogTitle2 =
|
|
10408
|
+
var DialogTitle2 = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
9513
10409
|
Title,
|
|
9514
10410
|
{
|
|
9515
10411
|
ref,
|
|
@@ -9521,7 +10417,7 @@ var DialogTitle2 = React50.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
9521
10417
|
}
|
|
9522
10418
|
));
|
|
9523
10419
|
DialogTitle2.displayName = Title.displayName;
|
|
9524
|
-
var DialogDescription2 =
|
|
10420
|
+
var DialogDescription2 = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
9525
10421
|
Description,
|
|
9526
10422
|
{
|
|
9527
10423
|
ref,
|
|
@@ -9533,7 +10429,7 @@ var DialogDescription2 = React50.forwardRef(({ className, ...props }, ref) => /*
|
|
|
9533
10429
|
}
|
|
9534
10430
|
));
|
|
9535
10431
|
DialogDescription2.displayName = Description.displayName;
|
|
9536
|
-
var DialogForm =
|
|
10432
|
+
var DialogForm = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
9537
10433
|
"form",
|
|
9538
10434
|
{
|
|
9539
10435
|
ref,
|
|
@@ -9560,7 +10456,7 @@ var defaultColors = [
|
|
|
9560
10456
|
"#EC4899",
|
|
9561
10457
|
"#F43F5E"
|
|
9562
10458
|
];
|
|
9563
|
-
var ColorPicker =
|
|
10459
|
+
var ColorPicker = React55__default.forwardRef(
|
|
9564
10460
|
({
|
|
9565
10461
|
value = "#000000",
|
|
9566
10462
|
onChange,
|
|
@@ -9967,14 +10863,14 @@ function Calendar2({
|
|
|
9967
10863
|
] })
|
|
9968
10864
|
] }) }) });
|
|
9969
10865
|
}
|
|
9970
|
-
const [currentDate, setCurrentDate] =
|
|
9971
|
-
const [selectedDate, setSelectedDate] =
|
|
9972
|
-
|
|
9973
|
-
const [eventDialogOpen, setEventDialogOpen] =
|
|
9974
|
-
const [eventDialogMode, setEventDialogMode] =
|
|
9975
|
-
const [selectedEvent, setSelectedEvent] =
|
|
9976
|
-
const [draggedEvent, setDraggedEvent] =
|
|
9977
|
-
const [dragTargetDate, setDragTargetDate] =
|
|
10866
|
+
const [currentDate, setCurrentDate] = React55__default.useState(/* @__PURE__ */ new Date());
|
|
10867
|
+
const [selectedDate, setSelectedDate] = React55__default.useState(null);
|
|
10868
|
+
React55__default.useState("month");
|
|
10869
|
+
const [eventDialogOpen, setEventDialogOpen] = React55__default.useState(false);
|
|
10870
|
+
const [eventDialogMode, setEventDialogMode] = React55__default.useState("create");
|
|
10871
|
+
const [selectedEvent, setSelectedEvent] = React55__default.useState(null);
|
|
10872
|
+
const [draggedEvent, setDraggedEvent] = React55__default.useState(null);
|
|
10873
|
+
const [dragTargetDate, setDragTargetDate] = React55__default.useState(null);
|
|
9978
10874
|
const today = /* @__PURE__ */ new Date();
|
|
9979
10875
|
const currentMonth = currentDate.getMonth();
|
|
9980
10876
|
const currentYear = currentDate.getFullYear();
|
|
@@ -10365,7 +11261,7 @@ var avatarVariants = cva(
|
|
|
10365
11261
|
}
|
|
10366
11262
|
}
|
|
10367
11263
|
);
|
|
10368
|
-
var Avatar =
|
|
11264
|
+
var Avatar = React55.forwardRef(({ className, size: size4, radius, variant, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
10369
11265
|
AvatarPrimitive.Root,
|
|
10370
11266
|
{
|
|
10371
11267
|
ref,
|
|
@@ -10374,7 +11270,7 @@ var Avatar = React50.forwardRef(({ className, size: size4, radius, variant, ...p
|
|
|
10374
11270
|
}
|
|
10375
11271
|
));
|
|
10376
11272
|
Avatar.displayName = AvatarPrimitive.Root.displayName;
|
|
10377
|
-
var AvatarImage =
|
|
11273
|
+
var AvatarImage = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
10378
11274
|
AvatarPrimitive.Image,
|
|
10379
11275
|
{
|
|
10380
11276
|
ref,
|
|
@@ -10383,7 +11279,7 @@ var AvatarImage = React50.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
10383
11279
|
}
|
|
10384
11280
|
));
|
|
10385
11281
|
AvatarImage.displayName = AvatarPrimitive.Image.displayName;
|
|
10386
|
-
var AvatarFallback =
|
|
11282
|
+
var AvatarFallback = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
10387
11283
|
AvatarPrimitive.Fallback,
|
|
10388
11284
|
{
|
|
10389
11285
|
ref,
|
|
@@ -10395,7 +11291,7 @@ var AvatarFallback = React50.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
10395
11291
|
}
|
|
10396
11292
|
));
|
|
10397
11293
|
AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
|
|
10398
|
-
var AvatarGroup =
|
|
11294
|
+
var AvatarGroup = React55.forwardRef(
|
|
10399
11295
|
({ className, limit, avatars, overlapOffset = -8, ...props }, ref) => {
|
|
10400
11296
|
const visibleAvatars = limit ? avatars.slice(0, limit) : avatars;
|
|
10401
11297
|
const remainingCount = limit ? Math.max(0, avatars.length - limit) : 0;
|
|
@@ -10469,9 +11365,9 @@ function Kanban({
|
|
|
10469
11365
|
] })
|
|
10470
11366
|
] }) }) });
|
|
10471
11367
|
}
|
|
10472
|
-
const [draggedCard, setDraggedCard] =
|
|
10473
|
-
const [draggedOverColumn, setDraggedOverColumn] =
|
|
10474
|
-
const [draggedFromColumn, setDraggedFromColumn] =
|
|
11368
|
+
const [draggedCard, setDraggedCard] = React55__default.useState(null);
|
|
11369
|
+
const [draggedOverColumn, setDraggedOverColumn] = React55__default.useState(null);
|
|
11370
|
+
const [draggedFromColumn, setDraggedFromColumn] = React55__default.useState(null);
|
|
10475
11371
|
const handleDragStart = (e, cardId) => {
|
|
10476
11372
|
if (disabled)
|
|
10477
11373
|
return;
|
|
@@ -27193,7 +28089,7 @@ function markPasteRule(config) {
|
|
|
27193
28089
|
}
|
|
27194
28090
|
|
|
27195
28091
|
// ../../node_modules/@tiptap/react/dist/index.js
|
|
27196
|
-
var
|
|
28092
|
+
var import_react40 = __toESM(require_react(), 1);
|
|
27197
28093
|
var mergeRefs = (...refs) => {
|
|
27198
28094
|
return (node) => {
|
|
27199
28095
|
refs.forEach((ref) => {
|
|
@@ -27253,11 +28149,11 @@ function getInstance() {
|
|
|
27253
28149
|
}
|
|
27254
28150
|
};
|
|
27255
28151
|
}
|
|
27256
|
-
var PureEditorContent = class extends
|
|
28152
|
+
var PureEditorContent = class extends React55__default.Component {
|
|
27257
28153
|
constructor(props) {
|
|
27258
28154
|
var _a2;
|
|
27259
28155
|
super(props);
|
|
27260
|
-
this.editorContentRef =
|
|
28156
|
+
this.editorContentRef = React55__default.createRef();
|
|
27261
28157
|
this.initialized = false;
|
|
27262
28158
|
this.state = {
|
|
27263
28159
|
hasContentComponentInitialized: Boolean((_a2 = props.editor) == null ? void 0 : _a2.contentComponent)
|
|
@@ -27335,17 +28231,17 @@ var PureEditorContent = class extends React50__default.Component {
|
|
|
27335
28231
|
};
|
|
27336
28232
|
var EditorContentWithKey = forwardRef(
|
|
27337
28233
|
(props, ref) => {
|
|
27338
|
-
const key =
|
|
28234
|
+
const key = React55__default.useMemo(() => {
|
|
27339
28235
|
return Math.floor(Math.random() * 4294967295).toString();
|
|
27340
28236
|
}, [props.editor]);
|
|
27341
|
-
return
|
|
28237
|
+
return React55__default.createElement(PureEditorContent, {
|
|
27342
28238
|
key,
|
|
27343
28239
|
innerRef: ref,
|
|
27344
28240
|
...props
|
|
27345
28241
|
});
|
|
27346
28242
|
}
|
|
27347
28243
|
);
|
|
27348
|
-
var EditorContent =
|
|
28244
|
+
var EditorContent = React55__default.memo(EditorContentWithKey);
|
|
27349
28245
|
var useIsomorphicLayoutEffect2 = typeof window !== "undefined" ? useLayoutEffect : useEffect;
|
|
27350
28246
|
var EditorStateManager = class {
|
|
27351
28247
|
constructor(initialEditor) {
|
|
@@ -27412,7 +28308,7 @@ function useEditorState(options) {
|
|
|
27412
28308
|
editorStateManager.getSnapshot,
|
|
27413
28309
|
editorStateManager.getServerSnapshot,
|
|
27414
28310
|
options.selector,
|
|
27415
|
-
(_a2 = options.equalityFn) != null ? _a2 :
|
|
28311
|
+
(_a2 = options.equalityFn) != null ? _a2 : import_react40.default
|
|
27416
28312
|
);
|
|
27417
28313
|
useIsomorphicLayoutEffect2(() => {
|
|
27418
28314
|
return editorStateManager.watch(options.editor);
|
|
@@ -27689,7 +28585,7 @@ var ReactNodeViewContext = createContext({
|
|
|
27689
28585
|
}
|
|
27690
28586
|
});
|
|
27691
28587
|
var useReactNodeView = () => useContext(ReactNodeViewContext);
|
|
27692
|
-
|
|
28588
|
+
React55__default.forwardRef((props, ref) => {
|
|
27693
28589
|
const { onDragStart } = useReactNodeView();
|
|
27694
28590
|
const Tag = props.as || "div";
|
|
27695
28591
|
return (
|
|
@@ -27709,7 +28605,7 @@ React50__default.forwardRef((props, ref) => {
|
|
|
27709
28605
|
)
|
|
27710
28606
|
);
|
|
27711
28607
|
});
|
|
27712
|
-
|
|
28608
|
+
React55__default.createContext({
|
|
27713
28609
|
markViewContentRef: () => {
|
|
27714
28610
|
}
|
|
27715
28611
|
});
|
|
@@ -49243,14 +50139,14 @@ function createCollection(name) {
|
|
|
49243
50139
|
);
|
|
49244
50140
|
const CollectionProvider = (props) => {
|
|
49245
50141
|
const { scope, children } = props;
|
|
49246
|
-
const ref =
|
|
49247
|
-
const itemMap =
|
|
50142
|
+
const ref = React55__default.useRef(null);
|
|
50143
|
+
const itemMap = React55__default.useRef(/* @__PURE__ */ new Map()).current;
|
|
49248
50144
|
return /* @__PURE__ */ jsx(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });
|
|
49249
50145
|
};
|
|
49250
50146
|
CollectionProvider.displayName = PROVIDER_NAME2;
|
|
49251
50147
|
const COLLECTION_SLOT_NAME = name + "CollectionSlot";
|
|
49252
50148
|
const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);
|
|
49253
|
-
const CollectionSlot =
|
|
50149
|
+
const CollectionSlot = React55__default.forwardRef(
|
|
49254
50150
|
(props, forwardedRef) => {
|
|
49255
50151
|
const { scope, children } = props;
|
|
49256
50152
|
const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);
|
|
@@ -49262,13 +50158,13 @@ function createCollection(name) {
|
|
|
49262
50158
|
const ITEM_SLOT_NAME = name + "CollectionItemSlot";
|
|
49263
50159
|
const ITEM_DATA_ATTR = "data-radix-collection-item";
|
|
49264
50160
|
const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);
|
|
49265
|
-
const CollectionItemSlot =
|
|
50161
|
+
const CollectionItemSlot = React55__default.forwardRef(
|
|
49266
50162
|
(props, forwardedRef) => {
|
|
49267
50163
|
const { scope, children, ...itemData } = props;
|
|
49268
|
-
const ref =
|
|
50164
|
+
const ref = React55__default.useRef(null);
|
|
49269
50165
|
const composedRefs = useComposedRefs(forwardedRef, ref);
|
|
49270
50166
|
const context = useCollectionContext(ITEM_SLOT_NAME, scope);
|
|
49271
|
-
|
|
50167
|
+
React55__default.useEffect(() => {
|
|
49272
50168
|
context.itemMap.set(ref, { ref, ...itemData });
|
|
49273
50169
|
return () => void context.itemMap.delete(ref);
|
|
49274
50170
|
});
|
|
@@ -49278,7 +50174,7 @@ function createCollection(name) {
|
|
|
49278
50174
|
CollectionItemSlot.displayName = ITEM_SLOT_NAME;
|
|
49279
50175
|
function useCollection4(scope) {
|
|
49280
50176
|
const context = useCollectionContext(name + "CollectionConsumer", scope);
|
|
49281
|
-
const getItems =
|
|
50177
|
+
const getItems = React55__default.useCallback(() => {
|
|
49282
50178
|
const collectionNode = context.collectionRef.current;
|
|
49283
50179
|
if (!collectionNode)
|
|
49284
50180
|
return [];
|
|
@@ -49297,13 +50193,13 @@ function createCollection(name) {
|
|
|
49297
50193
|
createCollectionScope4
|
|
49298
50194
|
];
|
|
49299
50195
|
}
|
|
49300
|
-
var DirectionContext =
|
|
50196
|
+
var DirectionContext = React55.createContext(void 0);
|
|
49301
50197
|
function useDirection(localDir) {
|
|
49302
|
-
const globalDir =
|
|
50198
|
+
const globalDir = React55.useContext(DirectionContext);
|
|
49303
50199
|
return localDir || globalDir || "ltr";
|
|
49304
50200
|
}
|
|
49305
50201
|
var NAME2 = "Arrow";
|
|
49306
|
-
var Arrow =
|
|
50202
|
+
var Arrow = React55.forwardRef((props, forwardedRef) => {
|
|
49307
50203
|
const { children, width = 10, height = 5, ...arrowProps } = props;
|
|
49308
50204
|
return /* @__PURE__ */ jsx(
|
|
49309
50205
|
Primitive.svg,
|
|
@@ -49321,7 +50217,7 @@ var Arrow = React50.forwardRef((props, forwardedRef) => {
|
|
|
49321
50217
|
Arrow.displayName = NAME2;
|
|
49322
50218
|
var Root5 = Arrow;
|
|
49323
50219
|
function useSize(element) {
|
|
49324
|
-
const [size4, setSize] =
|
|
50220
|
+
const [size4, setSize] = React55.useState(void 0);
|
|
49325
50221
|
useLayoutEffect22(() => {
|
|
49326
50222
|
if (element) {
|
|
49327
50223
|
setSize({ width: element.offsetWidth, height: element.offsetHeight });
|
|
@@ -49359,18 +50255,18 @@ var [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);
|
|
|
49359
50255
|
var [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);
|
|
49360
50256
|
var Popper = (props) => {
|
|
49361
50257
|
const { __scopePopper, children } = props;
|
|
49362
|
-
const [anchor, setAnchor] =
|
|
50258
|
+
const [anchor, setAnchor] = React55.useState(null);
|
|
49363
50259
|
return /* @__PURE__ */ jsx(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });
|
|
49364
50260
|
};
|
|
49365
50261
|
Popper.displayName = POPPER_NAME;
|
|
49366
50262
|
var ANCHOR_NAME = "PopperAnchor";
|
|
49367
|
-
var PopperAnchor =
|
|
50263
|
+
var PopperAnchor = React55.forwardRef(
|
|
49368
50264
|
(props, forwardedRef) => {
|
|
49369
50265
|
const { __scopePopper, virtualRef, ...anchorProps } = props;
|
|
49370
50266
|
const context = usePopperContext(ANCHOR_NAME, __scopePopper);
|
|
49371
|
-
const ref =
|
|
50267
|
+
const ref = React55.useRef(null);
|
|
49372
50268
|
const composedRefs = useComposedRefs(forwardedRef, ref);
|
|
49373
|
-
|
|
50269
|
+
React55.useEffect(() => {
|
|
49374
50270
|
context.onAnchorChange(virtualRef?.current || ref.current);
|
|
49375
50271
|
});
|
|
49376
50272
|
return virtualRef ? null : /* @__PURE__ */ jsx(Primitive.div, { ...anchorProps, ref: composedRefs });
|
|
@@ -49379,7 +50275,7 @@ var PopperAnchor = React50.forwardRef(
|
|
|
49379
50275
|
PopperAnchor.displayName = ANCHOR_NAME;
|
|
49380
50276
|
var CONTENT_NAME2 = "PopperContent";
|
|
49381
50277
|
var [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME2);
|
|
49382
|
-
var PopperContent =
|
|
50278
|
+
var PopperContent = React55.forwardRef(
|
|
49383
50279
|
(props, forwardedRef) => {
|
|
49384
50280
|
const {
|
|
49385
50281
|
__scopePopper,
|
|
@@ -49398,9 +50294,9 @@ var PopperContent = React50.forwardRef(
|
|
|
49398
50294
|
...contentProps
|
|
49399
50295
|
} = props;
|
|
49400
50296
|
const context = usePopperContext(CONTENT_NAME2, __scopePopper);
|
|
49401
|
-
const [content, setContent2] =
|
|
50297
|
+
const [content, setContent2] = React55.useState(null);
|
|
49402
50298
|
const composedRefs = useComposedRefs(forwardedRef, (node) => setContent2(node));
|
|
49403
|
-
const [arrow6, setArrow] =
|
|
50299
|
+
const [arrow6, setArrow] = React55.useState(null);
|
|
49404
50300
|
const arrowSize = useSize(arrow6);
|
|
49405
50301
|
const arrowWidth = arrowSize?.width ?? 0;
|
|
49406
50302
|
const arrowHeight = arrowSize?.height ?? 0;
|
|
@@ -49462,7 +50358,7 @@ var PopperContent = React50.forwardRef(
|
|
|
49462
50358
|
const arrowX = middlewareData.arrow?.x;
|
|
49463
50359
|
const arrowY = middlewareData.arrow?.y;
|
|
49464
50360
|
const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;
|
|
49465
|
-
const [contentZIndex, setContentZIndex] =
|
|
50361
|
+
const [contentZIndex, setContentZIndex] = React55.useState();
|
|
49466
50362
|
useLayoutEffect22(() => {
|
|
49467
50363
|
if (content)
|
|
49468
50364
|
setContentZIndex(window.getComputedStyle(content).zIndex);
|
|
@@ -49529,7 +50425,7 @@ var OPPOSITE_SIDE = {
|
|
|
49529
50425
|
bottom: "top",
|
|
49530
50426
|
left: "right"
|
|
49531
50427
|
};
|
|
49532
|
-
var PopperArrow =
|
|
50428
|
+
var PopperArrow = React55.forwardRef(function PopperArrow2(props, forwardedRef) {
|
|
49533
50429
|
const { __scopePopper, ...arrowProps } = props;
|
|
49534
50430
|
const contentContext = useContentContext(ARROW_NAME, __scopePopper);
|
|
49535
50431
|
const baseSide = OPPOSITE_SIDE[contentContext.placedSide];
|
|
@@ -49628,13 +50524,13 @@ var [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContext
|
|
|
49628
50524
|
[createCollectionScope]
|
|
49629
50525
|
);
|
|
49630
50526
|
var [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);
|
|
49631
|
-
var RovingFocusGroup =
|
|
50527
|
+
var RovingFocusGroup = React55.forwardRef(
|
|
49632
50528
|
(props, forwardedRef) => {
|
|
49633
50529
|
return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });
|
|
49634
50530
|
}
|
|
49635
50531
|
);
|
|
49636
50532
|
RovingFocusGroup.displayName = GROUP_NAME;
|
|
49637
|
-
var RovingFocusGroupImpl =
|
|
50533
|
+
var RovingFocusGroupImpl = React55.forwardRef((props, forwardedRef) => {
|
|
49638
50534
|
const {
|
|
49639
50535
|
__scopeRovingFocusGroup,
|
|
49640
50536
|
orientation,
|
|
@@ -49647,7 +50543,7 @@ var RovingFocusGroupImpl = React50.forwardRef((props, forwardedRef) => {
|
|
|
49647
50543
|
preventScrollOnEntryFocus = false,
|
|
49648
50544
|
...groupProps
|
|
49649
50545
|
} = props;
|
|
49650
|
-
const ref =
|
|
50546
|
+
const ref = React55.useRef(null);
|
|
49651
50547
|
const composedRefs = useComposedRefs(forwardedRef, ref);
|
|
49652
50548
|
const direction = useDirection(dir);
|
|
49653
50549
|
const [currentTabStopId, setCurrentTabStopId] = useControllableState({
|
|
@@ -49656,12 +50552,12 @@ var RovingFocusGroupImpl = React50.forwardRef((props, forwardedRef) => {
|
|
|
49656
50552
|
onChange: onCurrentTabStopIdChange,
|
|
49657
50553
|
caller: GROUP_NAME
|
|
49658
50554
|
});
|
|
49659
|
-
const [isTabbingBackOut, setIsTabbingBackOut] =
|
|
50555
|
+
const [isTabbingBackOut, setIsTabbingBackOut] = React55.useState(false);
|
|
49660
50556
|
const handleEntryFocus = useCallbackRef2(onEntryFocus);
|
|
49661
50557
|
const getItems = useCollection(__scopeRovingFocusGroup);
|
|
49662
|
-
const isClickFocusRef =
|
|
49663
|
-
const [focusableItemsCount, setFocusableItemsCount] =
|
|
49664
|
-
|
|
50558
|
+
const isClickFocusRef = React55.useRef(false);
|
|
50559
|
+
const [focusableItemsCount, setFocusableItemsCount] = React55.useState(0);
|
|
50560
|
+
React55.useEffect(() => {
|
|
49665
50561
|
const node = ref.current;
|
|
49666
50562
|
if (node) {
|
|
49667
50563
|
node.addEventListener(ENTRY_FOCUS, handleEntryFocus);
|
|
@@ -49676,16 +50572,16 @@ var RovingFocusGroupImpl = React50.forwardRef((props, forwardedRef) => {
|
|
|
49676
50572
|
dir: direction,
|
|
49677
50573
|
loop,
|
|
49678
50574
|
currentTabStopId,
|
|
49679
|
-
onItemFocus:
|
|
50575
|
+
onItemFocus: React55.useCallback(
|
|
49680
50576
|
(tabStopId) => setCurrentTabStopId(tabStopId),
|
|
49681
50577
|
[setCurrentTabStopId]
|
|
49682
50578
|
),
|
|
49683
|
-
onItemShiftTab:
|
|
49684
|
-
onFocusableItemAdd:
|
|
50579
|
+
onItemShiftTab: React55.useCallback(() => setIsTabbingBackOut(true), []),
|
|
50580
|
+
onFocusableItemAdd: React55.useCallback(
|
|
49685
50581
|
() => setFocusableItemsCount((prevCount) => prevCount + 1),
|
|
49686
50582
|
[]
|
|
49687
50583
|
),
|
|
49688
|
-
onFocusableItemRemove:
|
|
50584
|
+
onFocusableItemRemove: React55.useCallback(
|
|
49689
50585
|
() => setFocusableItemsCount((prevCount) => prevCount - 1),
|
|
49690
50586
|
[]
|
|
49691
50587
|
),
|
|
@@ -49725,7 +50621,7 @@ var RovingFocusGroupImpl = React50.forwardRef((props, forwardedRef) => {
|
|
|
49725
50621
|
);
|
|
49726
50622
|
});
|
|
49727
50623
|
var ITEM_NAME = "RovingFocusGroupItem";
|
|
49728
|
-
var RovingFocusGroupItem =
|
|
50624
|
+
var RovingFocusGroupItem = React55.forwardRef(
|
|
49729
50625
|
(props, forwardedRef) => {
|
|
49730
50626
|
const {
|
|
49731
50627
|
__scopeRovingFocusGroup,
|
|
@@ -49741,7 +50637,7 @@ var RovingFocusGroupItem = React50.forwardRef(
|
|
|
49741
50637
|
const isCurrentTabStop = context.currentTabStopId === id;
|
|
49742
50638
|
const getItems = useCollection(__scopeRovingFocusGroup);
|
|
49743
50639
|
const { onFocusableItemAdd, onFocusableItemRemove, currentTabStopId } = context;
|
|
49744
|
-
|
|
50640
|
+
React55.useEffect(() => {
|
|
49745
50641
|
if (focusable) {
|
|
49746
50642
|
onFocusableItemAdd();
|
|
49747
50643
|
return () => onFocusableItemRemove();
|
|
@@ -49865,11 +50761,11 @@ var [MenuRootProvider, useMenuRootContext] = createMenuContext(MENU_NAME);
|
|
|
49865
50761
|
var Menu = (props) => {
|
|
49866
50762
|
const { __scopeMenu, open = false, children, dir, onOpenChange, modal = true } = props;
|
|
49867
50763
|
const popperScope = usePopperScope(__scopeMenu);
|
|
49868
|
-
const [content, setContent2] =
|
|
49869
|
-
const isUsingKeyboardRef =
|
|
50764
|
+
const [content, setContent2] = React55.useState(null);
|
|
50765
|
+
const isUsingKeyboardRef = React55.useRef(false);
|
|
49870
50766
|
const handleOpenChange = useCallbackRef2(onOpenChange);
|
|
49871
50767
|
const direction = useDirection(dir);
|
|
49872
|
-
|
|
50768
|
+
React55.useEffect(() => {
|
|
49873
50769
|
const handleKeyDown3 = () => {
|
|
49874
50770
|
isUsingKeyboardRef.current = true;
|
|
49875
50771
|
document.addEventListener("pointerdown", handlePointer, { capture: true, once: true });
|
|
@@ -49895,7 +50791,7 @@ var Menu = (props) => {
|
|
|
49895
50791
|
MenuRootProvider,
|
|
49896
50792
|
{
|
|
49897
50793
|
scope: __scopeMenu,
|
|
49898
|
-
onClose:
|
|
50794
|
+
onClose: React55.useCallback(() => handleOpenChange(false), [handleOpenChange]),
|
|
49899
50795
|
isUsingKeyboardRef,
|
|
49900
50796
|
dir: direction,
|
|
49901
50797
|
modal,
|
|
@@ -49907,7 +50803,7 @@ var Menu = (props) => {
|
|
|
49907
50803
|
};
|
|
49908
50804
|
Menu.displayName = MENU_NAME;
|
|
49909
50805
|
var ANCHOR_NAME2 = "MenuAnchor";
|
|
49910
|
-
var MenuAnchor =
|
|
50806
|
+
var MenuAnchor = React55.forwardRef(
|
|
49911
50807
|
(props, forwardedRef) => {
|
|
49912
50808
|
const { __scopeMenu, ...anchorProps } = props;
|
|
49913
50809
|
const popperScope = usePopperScope(__scopeMenu);
|
|
@@ -49927,7 +50823,7 @@ var MenuPortal = (props) => {
|
|
|
49927
50823
|
MenuPortal.displayName = PORTAL_NAME3;
|
|
49928
50824
|
var CONTENT_NAME3 = "MenuContent";
|
|
49929
50825
|
var [MenuContentProvider, useMenuContentContext] = createMenuContext(CONTENT_NAME3);
|
|
49930
|
-
var MenuContent =
|
|
50826
|
+
var MenuContent = React55.forwardRef(
|
|
49931
50827
|
(props, forwardedRef) => {
|
|
49932
50828
|
const portalContext = usePortalContext2(CONTENT_NAME3, props.__scopeMenu);
|
|
49933
50829
|
const { forceMount = portalContext.forceMount, ...contentProps } = props;
|
|
@@ -49936,12 +50832,12 @@ var MenuContent = React50.forwardRef(
|
|
|
49936
50832
|
return /* @__PURE__ */ jsx(Collection2.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Collection2.Slot, { scope: props.__scopeMenu, children: rootContext.modal ? /* @__PURE__ */ jsx(MenuRootContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(MenuRootContentNonModal, { ...contentProps, ref: forwardedRef }) }) }) });
|
|
49937
50833
|
}
|
|
49938
50834
|
);
|
|
49939
|
-
var MenuRootContentModal =
|
|
50835
|
+
var MenuRootContentModal = React55.forwardRef(
|
|
49940
50836
|
(props, forwardedRef) => {
|
|
49941
50837
|
const context = useMenuContext(CONTENT_NAME3, props.__scopeMenu);
|
|
49942
|
-
const ref =
|
|
50838
|
+
const ref = React55.useRef(null);
|
|
49943
50839
|
const composedRefs = useComposedRefs(forwardedRef, ref);
|
|
49944
|
-
|
|
50840
|
+
React55.useEffect(() => {
|
|
49945
50841
|
const content = ref.current;
|
|
49946
50842
|
if (content)
|
|
49947
50843
|
return hideOthers(content);
|
|
@@ -49964,7 +50860,7 @@ var MenuRootContentModal = React50.forwardRef(
|
|
|
49964
50860
|
);
|
|
49965
50861
|
}
|
|
49966
50862
|
);
|
|
49967
|
-
var MenuRootContentNonModal =
|
|
50863
|
+
var MenuRootContentNonModal = React55.forwardRef((props, forwardedRef) => {
|
|
49968
50864
|
const context = useMenuContext(CONTENT_NAME3, props.__scopeMenu);
|
|
49969
50865
|
return /* @__PURE__ */ jsx(
|
|
49970
50866
|
MenuContentImpl,
|
|
@@ -49979,7 +50875,7 @@ var MenuRootContentNonModal = React50.forwardRef((props, forwardedRef) => {
|
|
|
49979
50875
|
);
|
|
49980
50876
|
});
|
|
49981
50877
|
var Slot2 = createSlot("MenuContent.ScrollLock");
|
|
49982
|
-
var MenuContentImpl =
|
|
50878
|
+
var MenuContentImpl = React55.forwardRef(
|
|
49983
50879
|
(props, forwardedRef) => {
|
|
49984
50880
|
const {
|
|
49985
50881
|
__scopeMenu,
|
|
@@ -50002,16 +50898,16 @@ var MenuContentImpl = React50.forwardRef(
|
|
|
50002
50898
|
const popperScope = usePopperScope(__scopeMenu);
|
|
50003
50899
|
const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);
|
|
50004
50900
|
const getItems = useCollection2(__scopeMenu);
|
|
50005
|
-
const [currentItemId, setCurrentItemId] =
|
|
50006
|
-
const contentRef =
|
|
50901
|
+
const [currentItemId, setCurrentItemId] = React55.useState(null);
|
|
50902
|
+
const contentRef = React55.useRef(null);
|
|
50007
50903
|
const composedRefs = useComposedRefs(forwardedRef, contentRef, context.onContentChange);
|
|
50008
|
-
const timerRef =
|
|
50009
|
-
const searchRef =
|
|
50010
|
-
const pointerGraceTimerRef =
|
|
50011
|
-
const pointerGraceIntentRef =
|
|
50012
|
-
const pointerDirRef =
|
|
50013
|
-
const lastPointerXRef =
|
|
50014
|
-
const ScrollLockWrapper = disableOutsideScroll ? Combination_default2 :
|
|
50904
|
+
const timerRef = React55.useRef(0);
|
|
50905
|
+
const searchRef = React55.useRef("");
|
|
50906
|
+
const pointerGraceTimerRef = React55.useRef(0);
|
|
50907
|
+
const pointerGraceIntentRef = React55.useRef(null);
|
|
50908
|
+
const pointerDirRef = React55.useRef("right");
|
|
50909
|
+
const lastPointerXRef = React55.useRef(0);
|
|
50910
|
+
const ScrollLockWrapper = disableOutsideScroll ? Combination_default2 : React55.Fragment;
|
|
50015
50911
|
const scrollLockWrapperProps = disableOutsideScroll ? { as: Slot2, allowPinchZoom: true } : void 0;
|
|
50016
50912
|
const handleTypeaheadSearch = (key) => {
|
|
50017
50913
|
const search = searchRef.current + key;
|
|
@@ -50031,11 +50927,11 @@ var MenuContentImpl = React50.forwardRef(
|
|
|
50031
50927
|
setTimeout(() => newItem.focus());
|
|
50032
50928
|
}
|
|
50033
50929
|
};
|
|
50034
|
-
|
|
50930
|
+
React55.useEffect(() => {
|
|
50035
50931
|
return () => window.clearTimeout(timerRef.current);
|
|
50036
50932
|
}, []);
|
|
50037
50933
|
useFocusGuards();
|
|
50038
|
-
const isPointerMovingToSubmenu =
|
|
50934
|
+
const isPointerMovingToSubmenu = React55.useCallback((event) => {
|
|
50039
50935
|
const isMovingTowards = pointerDirRef.current === pointerGraceIntentRef.current?.side;
|
|
50040
50936
|
return isMovingTowards && isPointerInGraceArea(event, pointerGraceIntentRef.current?.area);
|
|
50041
50937
|
}, []);
|
|
@@ -50044,14 +50940,14 @@ var MenuContentImpl = React50.forwardRef(
|
|
|
50044
50940
|
{
|
|
50045
50941
|
scope: __scopeMenu,
|
|
50046
50942
|
searchRef,
|
|
50047
|
-
onItemEnter:
|
|
50943
|
+
onItemEnter: React55.useCallback(
|
|
50048
50944
|
(event) => {
|
|
50049
50945
|
if (isPointerMovingToSubmenu(event))
|
|
50050
50946
|
event.preventDefault();
|
|
50051
50947
|
},
|
|
50052
50948
|
[isPointerMovingToSubmenu]
|
|
50053
50949
|
),
|
|
50054
|
-
onItemLeave:
|
|
50950
|
+
onItemLeave: React55.useCallback(
|
|
50055
50951
|
(event) => {
|
|
50056
50952
|
if (isPointerMovingToSubmenu(event))
|
|
50057
50953
|
return;
|
|
@@ -50060,7 +50956,7 @@ var MenuContentImpl = React50.forwardRef(
|
|
|
50060
50956
|
},
|
|
50061
50957
|
[isPointerMovingToSubmenu]
|
|
50062
50958
|
),
|
|
50063
|
-
onTriggerLeave:
|
|
50959
|
+
onTriggerLeave: React55.useCallback(
|
|
50064
50960
|
(event) => {
|
|
50065
50961
|
if (isPointerMovingToSubmenu(event))
|
|
50066
50962
|
event.preventDefault();
|
|
@@ -50068,7 +50964,7 @@ var MenuContentImpl = React50.forwardRef(
|
|
|
50068
50964
|
[isPointerMovingToSubmenu]
|
|
50069
50965
|
),
|
|
50070
50966
|
pointerGraceTimerRef,
|
|
50071
|
-
onPointerGraceIntentChange:
|
|
50967
|
+
onPointerGraceIntentChange: React55.useCallback((intent) => {
|
|
50072
50968
|
pointerGraceIntentRef.current = intent;
|
|
50073
50969
|
}, []),
|
|
50074
50970
|
children: /* @__PURE__ */ jsx(ScrollLockWrapper, { ...scrollLockWrapperProps, children: /* @__PURE__ */ jsx(
|
|
@@ -50173,7 +51069,7 @@ var MenuContentImpl = React50.forwardRef(
|
|
|
50173
51069
|
);
|
|
50174
51070
|
MenuContent.displayName = CONTENT_NAME3;
|
|
50175
51071
|
var GROUP_NAME2 = "MenuGroup";
|
|
50176
|
-
var MenuGroup =
|
|
51072
|
+
var MenuGroup = React55.forwardRef(
|
|
50177
51073
|
(props, forwardedRef) => {
|
|
50178
51074
|
const { __scopeMenu, ...groupProps } = props;
|
|
50179
51075
|
return /* @__PURE__ */ jsx(Primitive.div, { role: "group", ...groupProps, ref: forwardedRef });
|
|
@@ -50181,7 +51077,7 @@ var MenuGroup = React50.forwardRef(
|
|
|
50181
51077
|
);
|
|
50182
51078
|
MenuGroup.displayName = GROUP_NAME2;
|
|
50183
51079
|
var LABEL_NAME = "MenuLabel";
|
|
50184
|
-
var MenuLabel =
|
|
51080
|
+
var MenuLabel = React55.forwardRef(
|
|
50185
51081
|
(props, forwardedRef) => {
|
|
50186
51082
|
const { __scopeMenu, ...labelProps } = props;
|
|
50187
51083
|
return /* @__PURE__ */ jsx(Primitive.div, { ...labelProps, ref: forwardedRef });
|
|
@@ -50190,14 +51086,14 @@ var MenuLabel = React50.forwardRef(
|
|
|
50190
51086
|
MenuLabel.displayName = LABEL_NAME;
|
|
50191
51087
|
var ITEM_NAME2 = "MenuItem";
|
|
50192
51088
|
var ITEM_SELECT = "menu.itemSelect";
|
|
50193
|
-
var MenuItem =
|
|
51089
|
+
var MenuItem = React55.forwardRef(
|
|
50194
51090
|
(props, forwardedRef) => {
|
|
50195
51091
|
const { disabled = false, onSelect, ...itemProps } = props;
|
|
50196
|
-
const ref =
|
|
51092
|
+
const ref = React55.useRef(null);
|
|
50197
51093
|
const rootContext = useMenuRootContext(ITEM_NAME2, props.__scopeMenu);
|
|
50198
51094
|
const contentContext = useMenuContentContext(ITEM_NAME2, props.__scopeMenu);
|
|
50199
51095
|
const composedRefs = useComposedRefs(forwardedRef, ref);
|
|
50200
|
-
const isPointerDownRef =
|
|
51096
|
+
const isPointerDownRef = React55.useRef(false);
|
|
50201
51097
|
const handleSelect = () => {
|
|
50202
51098
|
const menuItem = ref.current;
|
|
50203
51099
|
if (!disabled && menuItem) {
|
|
@@ -50240,16 +51136,16 @@ var MenuItem = React50.forwardRef(
|
|
|
50240
51136
|
}
|
|
50241
51137
|
);
|
|
50242
51138
|
MenuItem.displayName = ITEM_NAME2;
|
|
50243
|
-
var MenuItemImpl =
|
|
51139
|
+
var MenuItemImpl = React55.forwardRef(
|
|
50244
51140
|
(props, forwardedRef) => {
|
|
50245
51141
|
const { __scopeMenu, disabled = false, textValue, ...itemProps } = props;
|
|
50246
51142
|
const contentContext = useMenuContentContext(ITEM_NAME2, __scopeMenu);
|
|
50247
51143
|
const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);
|
|
50248
|
-
const ref =
|
|
51144
|
+
const ref = React55.useRef(null);
|
|
50249
51145
|
const composedRefs = useComposedRefs(forwardedRef, ref);
|
|
50250
|
-
const [isFocused, setIsFocused] =
|
|
50251
|
-
const [textContent, setTextContent] =
|
|
50252
|
-
|
|
51146
|
+
const [isFocused, setIsFocused] = React55.useState(false);
|
|
51147
|
+
const [textContent, setTextContent] = React55.useState("");
|
|
51148
|
+
React55.useEffect(() => {
|
|
50253
51149
|
const menuItem = ref.current;
|
|
50254
51150
|
if (menuItem) {
|
|
50255
51151
|
setTextContent((menuItem.textContent ?? "").trim());
|
|
@@ -50297,7 +51193,7 @@ var MenuItemImpl = React50.forwardRef(
|
|
|
50297
51193
|
}
|
|
50298
51194
|
);
|
|
50299
51195
|
var CHECKBOX_ITEM_NAME = "MenuCheckboxItem";
|
|
50300
|
-
var MenuCheckboxItem =
|
|
51196
|
+
var MenuCheckboxItem = React55.forwardRef(
|
|
50301
51197
|
(props, forwardedRef) => {
|
|
50302
51198
|
const { checked = false, onCheckedChange, ...checkboxItemProps } = props;
|
|
50303
51199
|
return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope: props.__scopeMenu, checked, children: /* @__PURE__ */ jsx(
|
|
@@ -50324,7 +51220,7 @@ var [RadioGroupProvider, useRadioGroupContext] = createMenuContext(
|
|
|
50324
51220
|
{ value: void 0, onValueChange: () => {
|
|
50325
51221
|
} }
|
|
50326
51222
|
);
|
|
50327
|
-
var MenuRadioGroup =
|
|
51223
|
+
var MenuRadioGroup = React55.forwardRef(
|
|
50328
51224
|
(props, forwardedRef) => {
|
|
50329
51225
|
const { value, onValueChange, ...groupProps } = props;
|
|
50330
51226
|
const handleValueChange = useCallbackRef2(onValueChange);
|
|
@@ -50333,7 +51229,7 @@ var MenuRadioGroup = React50.forwardRef(
|
|
|
50333
51229
|
);
|
|
50334
51230
|
MenuRadioGroup.displayName = RADIO_GROUP_NAME;
|
|
50335
51231
|
var RADIO_ITEM_NAME = "MenuRadioItem";
|
|
50336
|
-
var MenuRadioItem =
|
|
51232
|
+
var MenuRadioItem = React55.forwardRef(
|
|
50337
51233
|
(props, forwardedRef) => {
|
|
50338
51234
|
const { value, ...radioItemProps } = props;
|
|
50339
51235
|
const context = useRadioGroupContext(RADIO_ITEM_NAME, props.__scopeMenu);
|
|
@@ -50361,7 +51257,7 @@ var [ItemIndicatorProvider, useItemIndicatorContext] = createMenuContext(
|
|
|
50361
51257
|
ITEM_INDICATOR_NAME,
|
|
50362
51258
|
{ checked: false }
|
|
50363
51259
|
);
|
|
50364
|
-
var MenuItemIndicator =
|
|
51260
|
+
var MenuItemIndicator = React55.forwardRef(
|
|
50365
51261
|
(props, forwardedRef) => {
|
|
50366
51262
|
const { __scopeMenu, forceMount, ...itemIndicatorProps } = props;
|
|
50367
51263
|
const indicatorContext = useItemIndicatorContext(ITEM_INDICATOR_NAME, __scopeMenu);
|
|
@@ -50383,7 +51279,7 @@ var MenuItemIndicator = React50.forwardRef(
|
|
|
50383
51279
|
);
|
|
50384
51280
|
MenuItemIndicator.displayName = ITEM_INDICATOR_NAME;
|
|
50385
51281
|
var SEPARATOR_NAME = "MenuSeparator";
|
|
50386
|
-
var MenuSeparator =
|
|
51282
|
+
var MenuSeparator = React55.forwardRef(
|
|
50387
51283
|
(props, forwardedRef) => {
|
|
50388
51284
|
const { __scopeMenu, ...separatorProps } = props;
|
|
50389
51285
|
return /* @__PURE__ */ jsx(
|
|
@@ -50399,7 +51295,7 @@ var MenuSeparator = React50.forwardRef(
|
|
|
50399
51295
|
);
|
|
50400
51296
|
MenuSeparator.displayName = SEPARATOR_NAME;
|
|
50401
51297
|
var ARROW_NAME2 = "MenuArrow";
|
|
50402
|
-
var MenuArrow =
|
|
51298
|
+
var MenuArrow = React55.forwardRef(
|
|
50403
51299
|
(props, forwardedRef) => {
|
|
50404
51300
|
const { __scopeMenu, ...arrowProps } = props;
|
|
50405
51301
|
const popperScope = usePopperScope(__scopeMenu);
|
|
@@ -50410,22 +51306,22 @@ MenuArrow.displayName = ARROW_NAME2;
|
|
|
50410
51306
|
var SUB_NAME = "MenuSub";
|
|
50411
51307
|
var [MenuSubProvider, useMenuSubContext] = createMenuContext(SUB_NAME);
|
|
50412
51308
|
var SUB_TRIGGER_NAME = "MenuSubTrigger";
|
|
50413
|
-
var MenuSubTrigger =
|
|
51309
|
+
var MenuSubTrigger = React55.forwardRef(
|
|
50414
51310
|
(props, forwardedRef) => {
|
|
50415
51311
|
const context = useMenuContext(SUB_TRIGGER_NAME, props.__scopeMenu);
|
|
50416
51312
|
const rootContext = useMenuRootContext(SUB_TRIGGER_NAME, props.__scopeMenu);
|
|
50417
51313
|
const subContext = useMenuSubContext(SUB_TRIGGER_NAME, props.__scopeMenu);
|
|
50418
51314
|
const contentContext = useMenuContentContext(SUB_TRIGGER_NAME, props.__scopeMenu);
|
|
50419
|
-
const openTimerRef =
|
|
51315
|
+
const openTimerRef = React55.useRef(null);
|
|
50420
51316
|
const { pointerGraceTimerRef, onPointerGraceIntentChange } = contentContext;
|
|
50421
51317
|
const scope = { __scopeMenu: props.__scopeMenu };
|
|
50422
|
-
const clearOpenTimer =
|
|
51318
|
+
const clearOpenTimer = React55.useCallback(() => {
|
|
50423
51319
|
if (openTimerRef.current)
|
|
50424
51320
|
window.clearTimeout(openTimerRef.current);
|
|
50425
51321
|
openTimerRef.current = null;
|
|
50426
51322
|
}, []);
|
|
50427
|
-
|
|
50428
|
-
|
|
51323
|
+
React55.useEffect(() => clearOpenTimer, [clearOpenTimer]);
|
|
51324
|
+
React55.useEffect(() => {
|
|
50429
51325
|
const pointerGraceTimer = pointerGraceTimerRef.current;
|
|
50430
51326
|
return () => {
|
|
50431
51327
|
window.clearTimeout(pointerGraceTimer);
|
|
@@ -50517,14 +51413,14 @@ var MenuSubTrigger = React50.forwardRef(
|
|
|
50517
51413
|
);
|
|
50518
51414
|
MenuSubTrigger.displayName = SUB_TRIGGER_NAME;
|
|
50519
51415
|
var SUB_CONTENT_NAME = "MenuSubContent";
|
|
50520
|
-
var MenuSubContent =
|
|
51416
|
+
var MenuSubContent = React55.forwardRef(
|
|
50521
51417
|
(props, forwardedRef) => {
|
|
50522
51418
|
const portalContext = usePortalContext2(CONTENT_NAME3, props.__scopeMenu);
|
|
50523
51419
|
const { forceMount = portalContext.forceMount, ...subContentProps } = props;
|
|
50524
51420
|
const context = useMenuContext(CONTENT_NAME3, props.__scopeMenu);
|
|
50525
51421
|
const rootContext = useMenuRootContext(CONTENT_NAME3, props.__scopeMenu);
|
|
50526
51422
|
const subContext = useMenuSubContext(SUB_CONTENT_NAME, props.__scopeMenu);
|
|
50527
|
-
const ref =
|
|
51423
|
+
const ref = React55.useRef(null);
|
|
50528
51424
|
const composedRefs = useComposedRefs(forwardedRef, ref);
|
|
50529
51425
|
return /* @__PURE__ */ jsx(Collection2.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Collection2.Slot, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(
|
|
50530
51426
|
MenuContentImpl,
|
|
@@ -50659,7 +51555,7 @@ var DropdownMenu = (props) => {
|
|
|
50659
51555
|
modal = true
|
|
50660
51556
|
} = props;
|
|
50661
51557
|
const menuScope = useMenuScope(__scopeDropdownMenu);
|
|
50662
|
-
const triggerRef =
|
|
51558
|
+
const triggerRef = React55.useRef(null);
|
|
50663
51559
|
const [open, setOpen] = useControllableState({
|
|
50664
51560
|
prop: openProp,
|
|
50665
51561
|
defaultProp: defaultOpen ?? false,
|
|
@@ -50675,7 +51571,7 @@ var DropdownMenu = (props) => {
|
|
|
50675
51571
|
contentId: useId(),
|
|
50676
51572
|
open,
|
|
50677
51573
|
onOpenChange: setOpen,
|
|
50678
|
-
onOpenToggle:
|
|
51574
|
+
onOpenToggle: React55.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),
|
|
50679
51575
|
modal,
|
|
50680
51576
|
children: /* @__PURE__ */ jsx(Root32, { ...menuScope, open, onOpenChange: setOpen, dir, modal, children })
|
|
50681
51577
|
}
|
|
@@ -50683,7 +51579,7 @@ var DropdownMenu = (props) => {
|
|
|
50683
51579
|
};
|
|
50684
51580
|
DropdownMenu.displayName = DROPDOWN_MENU_NAME;
|
|
50685
51581
|
var TRIGGER_NAME2 = "DropdownMenuTrigger";
|
|
50686
|
-
var DropdownMenuTrigger =
|
|
51582
|
+
var DropdownMenuTrigger = React55.forwardRef(
|
|
50687
51583
|
(props, forwardedRef) => {
|
|
50688
51584
|
const { __scopeDropdownMenu, disabled = false, ...triggerProps } = props;
|
|
50689
51585
|
const context = useDropdownMenuContext(TRIGGER_NAME2, __scopeDropdownMenu);
|
|
@@ -50731,12 +51627,12 @@ var DropdownMenuPortal = (props) => {
|
|
|
50731
51627
|
};
|
|
50732
51628
|
DropdownMenuPortal.displayName = PORTAL_NAME4;
|
|
50733
51629
|
var CONTENT_NAME4 = "DropdownMenuContent";
|
|
50734
|
-
var DropdownMenuContent =
|
|
51630
|
+
var DropdownMenuContent = React55.forwardRef(
|
|
50735
51631
|
(props, forwardedRef) => {
|
|
50736
51632
|
const { __scopeDropdownMenu, ...contentProps } = props;
|
|
50737
51633
|
const context = useDropdownMenuContext(CONTENT_NAME4, __scopeDropdownMenu);
|
|
50738
51634
|
const menuScope = useMenuScope(__scopeDropdownMenu);
|
|
50739
|
-
const hasInteractedOutsideRef =
|
|
51635
|
+
const hasInteractedOutsideRef = React55.useRef(false);
|
|
50740
51636
|
return /* @__PURE__ */ jsx(
|
|
50741
51637
|
Content22,
|
|
50742
51638
|
{
|
|
@@ -50775,7 +51671,7 @@ var DropdownMenuContent = React50.forwardRef(
|
|
|
50775
51671
|
);
|
|
50776
51672
|
DropdownMenuContent.displayName = CONTENT_NAME4;
|
|
50777
51673
|
var GROUP_NAME3 = "DropdownMenuGroup";
|
|
50778
|
-
var DropdownMenuGroup =
|
|
51674
|
+
var DropdownMenuGroup = React55.forwardRef(
|
|
50779
51675
|
(props, forwardedRef) => {
|
|
50780
51676
|
const { __scopeDropdownMenu, ...groupProps } = props;
|
|
50781
51677
|
const menuScope = useMenuScope(__scopeDropdownMenu);
|
|
@@ -50784,7 +51680,7 @@ var DropdownMenuGroup = React50.forwardRef(
|
|
|
50784
51680
|
);
|
|
50785
51681
|
DropdownMenuGroup.displayName = GROUP_NAME3;
|
|
50786
51682
|
var LABEL_NAME2 = "DropdownMenuLabel";
|
|
50787
|
-
var DropdownMenuLabel =
|
|
51683
|
+
var DropdownMenuLabel = React55.forwardRef(
|
|
50788
51684
|
(props, forwardedRef) => {
|
|
50789
51685
|
const { __scopeDropdownMenu, ...labelProps } = props;
|
|
50790
51686
|
const menuScope = useMenuScope(__scopeDropdownMenu);
|
|
@@ -50793,7 +51689,7 @@ var DropdownMenuLabel = React50.forwardRef(
|
|
|
50793
51689
|
);
|
|
50794
51690
|
DropdownMenuLabel.displayName = LABEL_NAME2;
|
|
50795
51691
|
var ITEM_NAME3 = "DropdownMenuItem";
|
|
50796
|
-
var DropdownMenuItem =
|
|
51692
|
+
var DropdownMenuItem = React55.forwardRef(
|
|
50797
51693
|
(props, forwardedRef) => {
|
|
50798
51694
|
const { __scopeDropdownMenu, ...itemProps } = props;
|
|
50799
51695
|
const menuScope = useMenuScope(__scopeDropdownMenu);
|
|
@@ -50802,42 +51698,42 @@ var DropdownMenuItem = React50.forwardRef(
|
|
|
50802
51698
|
);
|
|
50803
51699
|
DropdownMenuItem.displayName = ITEM_NAME3;
|
|
50804
51700
|
var CHECKBOX_ITEM_NAME2 = "DropdownMenuCheckboxItem";
|
|
50805
|
-
var DropdownMenuCheckboxItem =
|
|
51701
|
+
var DropdownMenuCheckboxItem = React55.forwardRef((props, forwardedRef) => {
|
|
50806
51702
|
const { __scopeDropdownMenu, ...checkboxItemProps } = props;
|
|
50807
51703
|
const menuScope = useMenuScope(__scopeDropdownMenu);
|
|
50808
51704
|
return /* @__PURE__ */ jsx(CheckboxItem, { ...menuScope, ...checkboxItemProps, ref: forwardedRef });
|
|
50809
51705
|
});
|
|
50810
51706
|
DropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME2;
|
|
50811
51707
|
var RADIO_GROUP_NAME2 = "DropdownMenuRadioGroup";
|
|
50812
|
-
var DropdownMenuRadioGroup =
|
|
51708
|
+
var DropdownMenuRadioGroup = React55.forwardRef((props, forwardedRef) => {
|
|
50813
51709
|
const { __scopeDropdownMenu, ...radioGroupProps } = props;
|
|
50814
51710
|
const menuScope = useMenuScope(__scopeDropdownMenu);
|
|
50815
51711
|
return /* @__PURE__ */ jsx(RadioGroup, { ...menuScope, ...radioGroupProps, ref: forwardedRef });
|
|
50816
51712
|
});
|
|
50817
51713
|
DropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME2;
|
|
50818
51714
|
var RADIO_ITEM_NAME2 = "DropdownMenuRadioItem";
|
|
50819
|
-
var DropdownMenuRadioItem =
|
|
51715
|
+
var DropdownMenuRadioItem = React55.forwardRef((props, forwardedRef) => {
|
|
50820
51716
|
const { __scopeDropdownMenu, ...radioItemProps } = props;
|
|
50821
51717
|
const menuScope = useMenuScope(__scopeDropdownMenu);
|
|
50822
51718
|
return /* @__PURE__ */ jsx(RadioItem, { ...menuScope, ...radioItemProps, ref: forwardedRef });
|
|
50823
51719
|
});
|
|
50824
51720
|
DropdownMenuRadioItem.displayName = RADIO_ITEM_NAME2;
|
|
50825
51721
|
var INDICATOR_NAME = "DropdownMenuItemIndicator";
|
|
50826
|
-
var DropdownMenuItemIndicator =
|
|
51722
|
+
var DropdownMenuItemIndicator = React55.forwardRef((props, forwardedRef) => {
|
|
50827
51723
|
const { __scopeDropdownMenu, ...itemIndicatorProps } = props;
|
|
50828
51724
|
const menuScope = useMenuScope(__scopeDropdownMenu);
|
|
50829
51725
|
return /* @__PURE__ */ jsx(ItemIndicator, { ...menuScope, ...itemIndicatorProps, ref: forwardedRef });
|
|
50830
51726
|
});
|
|
50831
51727
|
DropdownMenuItemIndicator.displayName = INDICATOR_NAME;
|
|
50832
51728
|
var SEPARATOR_NAME2 = "DropdownMenuSeparator";
|
|
50833
|
-
var DropdownMenuSeparator =
|
|
51729
|
+
var DropdownMenuSeparator = React55.forwardRef((props, forwardedRef) => {
|
|
50834
51730
|
const { __scopeDropdownMenu, ...separatorProps } = props;
|
|
50835
51731
|
const menuScope = useMenuScope(__scopeDropdownMenu);
|
|
50836
51732
|
return /* @__PURE__ */ jsx(Separator, { ...menuScope, ...separatorProps, ref: forwardedRef });
|
|
50837
51733
|
});
|
|
50838
51734
|
DropdownMenuSeparator.displayName = SEPARATOR_NAME2;
|
|
50839
51735
|
var ARROW_NAME3 = "DropdownMenuArrow";
|
|
50840
|
-
var DropdownMenuArrow =
|
|
51736
|
+
var DropdownMenuArrow = React55.forwardRef(
|
|
50841
51737
|
(props, forwardedRef) => {
|
|
50842
51738
|
const { __scopeDropdownMenu, ...arrowProps } = props;
|
|
50843
51739
|
const menuScope = useMenuScope(__scopeDropdownMenu);
|
|
@@ -50846,14 +51742,14 @@ var DropdownMenuArrow = React50.forwardRef(
|
|
|
50846
51742
|
);
|
|
50847
51743
|
DropdownMenuArrow.displayName = ARROW_NAME3;
|
|
50848
51744
|
var SUB_TRIGGER_NAME2 = "DropdownMenuSubTrigger";
|
|
50849
|
-
var DropdownMenuSubTrigger =
|
|
51745
|
+
var DropdownMenuSubTrigger = React55.forwardRef((props, forwardedRef) => {
|
|
50850
51746
|
const { __scopeDropdownMenu, ...subTriggerProps } = props;
|
|
50851
51747
|
const menuScope = useMenuScope(__scopeDropdownMenu);
|
|
50852
51748
|
return /* @__PURE__ */ jsx(SubTrigger, { ...menuScope, ...subTriggerProps, ref: forwardedRef });
|
|
50853
51749
|
});
|
|
50854
51750
|
DropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME2;
|
|
50855
51751
|
var SUB_CONTENT_NAME2 = "DropdownMenuSubContent";
|
|
50856
|
-
var DropdownMenuSubContent =
|
|
51752
|
+
var DropdownMenuSubContent = React55.forwardRef((props, forwardedRef) => {
|
|
50857
51753
|
const { __scopeDropdownMenu, ...subContentProps } = props;
|
|
50858
51754
|
const menuScope = useMenuScope(__scopeDropdownMenu);
|
|
50859
51755
|
return /* @__PURE__ */ jsx(
|
|
@@ -50891,7 +51787,7 @@ var SubTrigger2 = DropdownMenuSubTrigger;
|
|
|
50891
51787
|
var SubContent2 = DropdownMenuSubContent;
|
|
50892
51788
|
var DropdownMenu2 = Root23;
|
|
50893
51789
|
var DropdownMenuTrigger2 = Trigger2;
|
|
50894
|
-
var DropdownMenuSubTrigger2 =
|
|
51790
|
+
var DropdownMenuSubTrigger2 = React55.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
50895
51791
|
SubTrigger2,
|
|
50896
51792
|
{
|
|
50897
51793
|
ref,
|
|
@@ -50908,7 +51804,7 @@ var DropdownMenuSubTrigger2 = React50.forwardRef(({ className, inset, children,
|
|
|
50908
51804
|
}
|
|
50909
51805
|
));
|
|
50910
51806
|
DropdownMenuSubTrigger2.displayName = SubTrigger2.displayName;
|
|
50911
|
-
var DropdownMenuSubContent2 =
|
|
51807
|
+
var DropdownMenuSubContent2 = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
50912
51808
|
SubContent2,
|
|
50913
51809
|
{
|
|
50914
51810
|
ref,
|
|
@@ -50920,7 +51816,7 @@ var DropdownMenuSubContent2 = React50.forwardRef(({ className, ...props }, ref)
|
|
|
50920
51816
|
}
|
|
50921
51817
|
));
|
|
50922
51818
|
DropdownMenuSubContent2.displayName = SubContent2.displayName;
|
|
50923
|
-
var DropdownMenuContent2 =
|
|
51819
|
+
var DropdownMenuContent2 = React55.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(Portal22, { children: /* @__PURE__ */ jsx(
|
|
50924
51820
|
Content23,
|
|
50925
51821
|
{
|
|
50926
51822
|
ref,
|
|
@@ -50933,7 +51829,7 @@ var DropdownMenuContent2 = React50.forwardRef(({ className, sideOffset = 4, ...p
|
|
|
50933
51829
|
}
|
|
50934
51830
|
) }));
|
|
50935
51831
|
DropdownMenuContent2.displayName = Content23.displayName;
|
|
50936
|
-
var DropdownMenuItem2 =
|
|
51832
|
+
var DropdownMenuItem2 = React55.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
50937
51833
|
Item23,
|
|
50938
51834
|
{
|
|
50939
51835
|
ref,
|
|
@@ -50946,7 +51842,7 @@ var DropdownMenuItem2 = React50.forwardRef(({ className, inset, ...props }, ref)
|
|
|
50946
51842
|
}
|
|
50947
51843
|
));
|
|
50948
51844
|
DropdownMenuItem2.displayName = Item23.displayName;
|
|
50949
|
-
var DropdownMenuCheckboxItem2 =
|
|
51845
|
+
var DropdownMenuCheckboxItem2 = React55.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
50950
51846
|
CheckboxItem2,
|
|
50951
51847
|
{
|
|
50952
51848
|
ref,
|
|
@@ -50963,7 +51859,7 @@ var DropdownMenuCheckboxItem2 = React50.forwardRef(({ className, children, check
|
|
|
50963
51859
|
}
|
|
50964
51860
|
));
|
|
50965
51861
|
DropdownMenuCheckboxItem2.displayName = CheckboxItem2.displayName;
|
|
50966
|
-
var DropdownMenuRadioItem2 =
|
|
51862
|
+
var DropdownMenuRadioItem2 = React55.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
50967
51863
|
RadioItem2,
|
|
50968
51864
|
{
|
|
50969
51865
|
ref,
|
|
@@ -50979,7 +51875,7 @@ var DropdownMenuRadioItem2 = React50.forwardRef(({ className, children, ...props
|
|
|
50979
51875
|
}
|
|
50980
51876
|
));
|
|
50981
51877
|
DropdownMenuRadioItem2.displayName = RadioItem2.displayName;
|
|
50982
|
-
var DropdownMenuLabel2 =
|
|
51878
|
+
var DropdownMenuLabel2 = React55.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
50983
51879
|
Label22,
|
|
50984
51880
|
{
|
|
50985
51881
|
ref,
|
|
@@ -50992,7 +51888,7 @@ var DropdownMenuLabel2 = React50.forwardRef(({ className, inset, ...props }, ref
|
|
|
50992
51888
|
}
|
|
50993
51889
|
));
|
|
50994
51890
|
DropdownMenuLabel2.displayName = Label22.displayName;
|
|
50995
|
-
var DropdownMenuSeparator2 =
|
|
51891
|
+
var DropdownMenuSeparator2 = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
50996
51892
|
Separator2,
|
|
50997
51893
|
{
|
|
50998
51894
|
ref,
|
|
@@ -51028,7 +51924,7 @@ var tooltipVariants = cva(
|
|
|
51028
51924
|
);
|
|
51029
51925
|
var Tooltip = TooltipPrimitive.Root;
|
|
51030
51926
|
var TooltipTrigger = TooltipPrimitive.Trigger;
|
|
51031
|
-
var TooltipArrow =
|
|
51927
|
+
var TooltipArrow = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
51032
51928
|
TooltipPrimitive.Arrow,
|
|
51033
51929
|
{
|
|
51034
51930
|
ref,
|
|
@@ -51037,7 +51933,7 @@ var TooltipArrow = React50.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
51037
51933
|
}
|
|
51038
51934
|
));
|
|
51039
51935
|
TooltipArrow.displayName = TooltipPrimitive.Arrow.displayName;
|
|
51040
|
-
var TooltipContent =
|
|
51936
|
+
var TooltipContent = React55.forwardRef(({ className, variant, size: size4, showArrow = false, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
51041
51937
|
TooltipPrimitive.Content,
|
|
51042
51938
|
{
|
|
51043
51939
|
ref,
|
|
@@ -51051,7 +51947,7 @@ var TooltipContent = React50.forwardRef(({ className, variant, size: size4, show
|
|
|
51051
51947
|
}
|
|
51052
51948
|
));
|
|
51053
51949
|
TooltipContent.displayName = TooltipPrimitive.Content.displayName;
|
|
51054
|
-
var SimpleTooltip =
|
|
51950
|
+
var SimpleTooltip = React55.forwardRef(
|
|
51055
51951
|
({
|
|
51056
51952
|
children,
|
|
51057
51953
|
content,
|
|
@@ -51116,8 +52012,8 @@ var Popover = (props) => {
|
|
|
51116
52012
|
modal = false
|
|
51117
52013
|
} = props;
|
|
51118
52014
|
const popperScope = usePopperScope2(__scopePopover);
|
|
51119
|
-
const triggerRef =
|
|
51120
|
-
const [hasCustomAnchor, setHasCustomAnchor] =
|
|
52015
|
+
const triggerRef = React55.useRef(null);
|
|
52016
|
+
const [hasCustomAnchor, setHasCustomAnchor] = React55.useState(false);
|
|
51121
52017
|
const [open, setOpen] = useControllableState({
|
|
51122
52018
|
prop: openProp,
|
|
51123
52019
|
defaultProp: defaultOpen ?? false,
|
|
@@ -51132,10 +52028,10 @@ var Popover = (props) => {
|
|
|
51132
52028
|
triggerRef,
|
|
51133
52029
|
open,
|
|
51134
52030
|
onOpenChange: setOpen,
|
|
51135
|
-
onOpenToggle:
|
|
52031
|
+
onOpenToggle: React55.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),
|
|
51136
52032
|
hasCustomAnchor,
|
|
51137
|
-
onCustomAnchorAdd:
|
|
51138
|
-
onCustomAnchorRemove:
|
|
52033
|
+
onCustomAnchorAdd: React55.useCallback(() => setHasCustomAnchor(true), []),
|
|
52034
|
+
onCustomAnchorRemove: React55.useCallback(() => setHasCustomAnchor(false), []),
|
|
51139
52035
|
modal,
|
|
51140
52036
|
children
|
|
51141
52037
|
}
|
|
@@ -51143,13 +52039,13 @@ var Popover = (props) => {
|
|
|
51143
52039
|
};
|
|
51144
52040
|
Popover.displayName = POPOVER_NAME;
|
|
51145
52041
|
var ANCHOR_NAME3 = "PopoverAnchor";
|
|
51146
|
-
var PopoverAnchor =
|
|
52042
|
+
var PopoverAnchor = React55.forwardRef(
|
|
51147
52043
|
(props, forwardedRef) => {
|
|
51148
52044
|
const { __scopePopover, ...anchorProps } = props;
|
|
51149
52045
|
const context = usePopoverContext(ANCHOR_NAME3, __scopePopover);
|
|
51150
52046
|
const popperScope = usePopperScope2(__scopePopover);
|
|
51151
52047
|
const { onCustomAnchorAdd, onCustomAnchorRemove } = context;
|
|
51152
|
-
|
|
52048
|
+
React55.useEffect(() => {
|
|
51153
52049
|
onCustomAnchorAdd();
|
|
51154
52050
|
return () => onCustomAnchorRemove();
|
|
51155
52051
|
}, [onCustomAnchorAdd, onCustomAnchorRemove]);
|
|
@@ -51158,7 +52054,7 @@ var PopoverAnchor = React50.forwardRef(
|
|
|
51158
52054
|
);
|
|
51159
52055
|
PopoverAnchor.displayName = ANCHOR_NAME3;
|
|
51160
52056
|
var TRIGGER_NAME3 = "PopoverTrigger";
|
|
51161
|
-
var PopoverTrigger =
|
|
52057
|
+
var PopoverTrigger = React55.forwardRef(
|
|
51162
52058
|
(props, forwardedRef) => {
|
|
51163
52059
|
const { __scopePopover, ...triggerProps } = props;
|
|
51164
52060
|
const context = usePopoverContext(TRIGGER_NAME3, __scopePopover);
|
|
@@ -51186,7 +52082,7 @@ var [PortalProvider3, usePortalContext3] = createPopoverContext(PORTAL_NAME5, {
|
|
|
51186
52082
|
forceMount: void 0
|
|
51187
52083
|
});
|
|
51188
52084
|
var CONTENT_NAME5 = "PopoverContent";
|
|
51189
|
-
var PopoverContent =
|
|
52085
|
+
var PopoverContent = React55.forwardRef(
|
|
51190
52086
|
(props, forwardedRef) => {
|
|
51191
52087
|
const portalContext = usePortalContext3(CONTENT_NAME5, props.__scopePopover);
|
|
51192
52088
|
const { forceMount = portalContext.forceMount, ...contentProps } = props;
|
|
@@ -51196,13 +52092,13 @@ var PopoverContent = React50.forwardRef(
|
|
|
51196
52092
|
);
|
|
51197
52093
|
PopoverContent.displayName = CONTENT_NAME5;
|
|
51198
52094
|
var Slot3 = createSlot("PopoverContent.RemoveScroll");
|
|
51199
|
-
var PopoverContentModal =
|
|
52095
|
+
var PopoverContentModal = React55.forwardRef(
|
|
51200
52096
|
(props, forwardedRef) => {
|
|
51201
52097
|
const context = usePopoverContext(CONTENT_NAME5, props.__scopePopover);
|
|
51202
|
-
const contentRef =
|
|
52098
|
+
const contentRef = React55.useRef(null);
|
|
51203
52099
|
const composedRefs = useComposedRefs(forwardedRef, contentRef);
|
|
51204
|
-
const isRightClickOutsideRef =
|
|
51205
|
-
|
|
52100
|
+
const isRightClickOutsideRef = React55.useRef(false);
|
|
52101
|
+
React55.useEffect(() => {
|
|
51206
52102
|
const content = contentRef.current;
|
|
51207
52103
|
if (content)
|
|
51208
52104
|
return hideOthers(content);
|
|
@@ -51238,11 +52134,11 @@ var PopoverContentModal = React50.forwardRef(
|
|
|
51238
52134
|
) });
|
|
51239
52135
|
}
|
|
51240
52136
|
);
|
|
51241
|
-
var PopoverContentNonModal =
|
|
52137
|
+
var PopoverContentNonModal = React55.forwardRef(
|
|
51242
52138
|
(props, forwardedRef) => {
|
|
51243
52139
|
const context = usePopoverContext(CONTENT_NAME5, props.__scopePopover);
|
|
51244
|
-
const hasInteractedOutsideRef =
|
|
51245
|
-
const hasPointerDownOutsideRef =
|
|
52140
|
+
const hasInteractedOutsideRef = React55.useRef(false);
|
|
52141
|
+
const hasPointerDownOutsideRef = React55.useRef(false);
|
|
51246
52142
|
return /* @__PURE__ */ jsx(
|
|
51247
52143
|
PopoverContentImpl,
|
|
51248
52144
|
{
|
|
@@ -51280,7 +52176,7 @@ var PopoverContentNonModal = React50.forwardRef(
|
|
|
51280
52176
|
);
|
|
51281
52177
|
}
|
|
51282
52178
|
);
|
|
51283
|
-
var PopoverContentImpl =
|
|
52179
|
+
var PopoverContentImpl = React55.forwardRef(
|
|
51284
52180
|
(props, forwardedRef) => {
|
|
51285
52181
|
const {
|
|
51286
52182
|
__scopePopover,
|
|
@@ -51344,7 +52240,7 @@ var PopoverContentImpl = React50.forwardRef(
|
|
|
51344
52240
|
}
|
|
51345
52241
|
);
|
|
51346
52242
|
var CLOSE_NAME2 = "PopoverClose";
|
|
51347
|
-
var PopoverClose =
|
|
52243
|
+
var PopoverClose = React55.forwardRef(
|
|
51348
52244
|
(props, forwardedRef) => {
|
|
51349
52245
|
const { __scopePopover, ...closeProps } = props;
|
|
51350
52246
|
const context = usePopoverContext(CLOSE_NAME2, __scopePopover);
|
|
@@ -51361,7 +52257,7 @@ var PopoverClose = React50.forwardRef(
|
|
|
51361
52257
|
);
|
|
51362
52258
|
PopoverClose.displayName = CLOSE_NAME2;
|
|
51363
52259
|
var ARROW_NAME4 = "PopoverArrow";
|
|
51364
|
-
var PopoverArrow =
|
|
52260
|
+
var PopoverArrow = React55.forwardRef(
|
|
51365
52261
|
(props, forwardedRef) => {
|
|
51366
52262
|
const { __scopePopover, ...arrowProps } = props;
|
|
51367
52263
|
const popperScope = usePopperScope2(__scopePopover);
|
|
@@ -51426,7 +52322,7 @@ var popoverContentVariants = cva(
|
|
|
51426
52322
|
);
|
|
51427
52323
|
var Popover2 = Root24;
|
|
51428
52324
|
var PopoverTrigger2 = Trigger4;
|
|
51429
|
-
var PopoverContent2 =
|
|
52325
|
+
var PopoverContent2 = React55.forwardRef(({
|
|
51430
52326
|
className,
|
|
51431
52327
|
variant,
|
|
51432
52328
|
size: size4,
|
|
@@ -51549,7 +52445,7 @@ var sliderThumbVariants = cva(
|
|
|
51549
52445
|
}
|
|
51550
52446
|
}
|
|
51551
52447
|
);
|
|
51552
|
-
var Slider =
|
|
52448
|
+
var Slider = React55.forwardRef(({
|
|
51553
52449
|
className,
|
|
51554
52450
|
size: size4,
|
|
51555
52451
|
trackVariant,
|
|
@@ -51565,10 +52461,10 @@ var Slider = React50.forwardRef(({
|
|
|
51565
52461
|
disabled,
|
|
51566
52462
|
...props
|
|
51567
52463
|
}, ref) => {
|
|
51568
|
-
const [sliderValue, setSliderValue] =
|
|
52464
|
+
const [sliderValue, setSliderValue] = React55.useState(
|
|
51569
52465
|
value || defaultValue || [0]
|
|
51570
52466
|
);
|
|
51571
|
-
|
|
52467
|
+
React55.useEffect(() => {
|
|
51572
52468
|
if (value !== void 0) {
|
|
51573
52469
|
setSliderValue(value);
|
|
51574
52470
|
}
|
|
@@ -51583,7 +52479,7 @@ var Slider = React50.forwardRef(({
|
|
|
51583
52479
|
const calculateThumbPercent = (value2, min3, max3) => {
|
|
51584
52480
|
return (value2 - min3) / (max3 - min3) * 100;
|
|
51585
52481
|
};
|
|
51586
|
-
const trackRef =
|
|
52482
|
+
const trackRef = React55.useRef(null);
|
|
51587
52483
|
const min2 = props.min || 0;
|
|
51588
52484
|
const max2 = props.max || 100;
|
|
51589
52485
|
const step = props.step || 1;
|
|
@@ -51718,7 +52614,7 @@ var VISUALLY_HIDDEN_STYLES = Object.freeze({
|
|
|
51718
52614
|
wordWrap: "normal"
|
|
51719
52615
|
});
|
|
51720
52616
|
var NAME3 = "VisuallyHidden";
|
|
51721
|
-
var VisuallyHidden =
|
|
52617
|
+
var VisuallyHidden = React55.forwardRef(
|
|
51722
52618
|
(props, forwardedRef) => {
|
|
51723
52619
|
return /* @__PURE__ */ jsx(
|
|
51724
52620
|
Primitive.span,
|
|
@@ -51739,7 +52635,7 @@ var VIEWPORT_NAME = "ToastViewport";
|
|
|
51739
52635
|
var VIEWPORT_DEFAULT_HOTKEY = ["F8"];
|
|
51740
52636
|
var VIEWPORT_PAUSE = "toast.viewportPause";
|
|
51741
52637
|
var VIEWPORT_RESUME = "toast.viewportResume";
|
|
51742
|
-
var ToastViewport =
|
|
52638
|
+
var ToastViewport = React55.forwardRef(
|
|
51743
52639
|
(props, forwardedRef) => {
|
|
51744
52640
|
const {
|
|
51745
52641
|
__scopeToast,
|
|
@@ -51749,14 +52645,14 @@ var ToastViewport = React50.forwardRef(
|
|
|
51749
52645
|
} = props;
|
|
51750
52646
|
const context = useToastProviderContext(VIEWPORT_NAME, __scopeToast);
|
|
51751
52647
|
const getItems = useCollection3(__scopeToast);
|
|
51752
|
-
const wrapperRef =
|
|
51753
|
-
const headFocusProxyRef =
|
|
51754
|
-
const tailFocusProxyRef =
|
|
51755
|
-
const ref =
|
|
52648
|
+
const wrapperRef = React55.useRef(null);
|
|
52649
|
+
const headFocusProxyRef = React55.useRef(null);
|
|
52650
|
+
const tailFocusProxyRef = React55.useRef(null);
|
|
52651
|
+
const ref = React55.useRef(null);
|
|
51756
52652
|
const composedRefs = useComposedRefs(forwardedRef, ref, context.onViewportChange);
|
|
51757
52653
|
const hotkeyLabel = hotkey.join("+").replace(/Key/g, "").replace(/Digit/g, "");
|
|
51758
52654
|
const hasToasts = context.toastCount > 0;
|
|
51759
|
-
|
|
52655
|
+
React55.useEffect(() => {
|
|
51760
52656
|
const handleKeyDown3 = (event) => {
|
|
51761
52657
|
const isHotkeyPressed = hotkey.length !== 0 && hotkey.every((key) => event[key] || event.code === key);
|
|
51762
52658
|
if (isHotkeyPressed)
|
|
@@ -51765,7 +52661,7 @@ var ToastViewport = React50.forwardRef(
|
|
|
51765
52661
|
document.addEventListener("keydown", handleKeyDown3);
|
|
51766
52662
|
return () => document.removeEventListener("keydown", handleKeyDown3);
|
|
51767
52663
|
}, [hotkey]);
|
|
51768
|
-
|
|
52664
|
+
React55.useEffect(() => {
|
|
51769
52665
|
const wrapper = wrapperRef.current;
|
|
51770
52666
|
const viewport = ref.current;
|
|
51771
52667
|
if (hasToasts && wrapper && viewport) {
|
|
@@ -51809,7 +52705,7 @@ var ToastViewport = React50.forwardRef(
|
|
|
51809
52705
|
};
|
|
51810
52706
|
}
|
|
51811
52707
|
}, [hasToasts, context.isClosePausedRef]);
|
|
51812
|
-
const getSortedTabbableCandidates =
|
|
52708
|
+
const getSortedTabbableCandidates = React55.useCallback(
|
|
51813
52709
|
({ tabbingDirection }) => {
|
|
51814
52710
|
const toastItems = getItems();
|
|
51815
52711
|
const tabbableCandidates = toastItems.map((toastItem) => {
|
|
@@ -51821,7 +52717,7 @@ var ToastViewport = React50.forwardRef(
|
|
|
51821
52717
|
},
|
|
51822
52718
|
[getItems]
|
|
51823
52719
|
);
|
|
51824
|
-
|
|
52720
|
+
React55.useEffect(() => {
|
|
51825
52721
|
const viewport = ref.current;
|
|
51826
52722
|
if (viewport) {
|
|
51827
52723
|
const handleKeyDown3 = (event) => {
|
|
@@ -51890,7 +52786,7 @@ var ToastViewport = React50.forwardRef(
|
|
|
51890
52786
|
);
|
|
51891
52787
|
ToastViewport.displayName = VIEWPORT_NAME;
|
|
51892
52788
|
var FOCUS_PROXY_NAME = "ToastFocusProxy";
|
|
51893
|
-
var FocusProxy =
|
|
52789
|
+
var FocusProxy = React55.forwardRef(
|
|
51894
52790
|
(props, forwardedRef) => {
|
|
51895
52791
|
const { __scopeToast, onFocusFromOutsideViewport, ...proxyProps } = props;
|
|
51896
52792
|
const context = useToastProviderContext(FOCUS_PROXY_NAME, __scopeToast);
|
|
@@ -51918,7 +52814,7 @@ var TOAST_SWIPE_START = "toast.swipeStart";
|
|
|
51918
52814
|
var TOAST_SWIPE_MOVE = "toast.swipeMove";
|
|
51919
52815
|
var TOAST_SWIPE_CANCEL = "toast.swipeCancel";
|
|
51920
52816
|
var TOAST_SWIPE_END = "toast.swipeEnd";
|
|
51921
|
-
var Toast =
|
|
52817
|
+
var Toast = React55.forwardRef(
|
|
51922
52818
|
(props, forwardedRef) => {
|
|
51923
52819
|
const { forceMount, open: openProp, defaultOpen, onOpenChange, ...toastProps } = props;
|
|
51924
52820
|
const [open, setOpen] = useControllableState({
|
|
@@ -51970,7 +52866,7 @@ var [ToastInteractiveProvider, useToastInteractiveContext] = createToastContext(
|
|
|
51970
52866
|
onClose() {
|
|
51971
52867
|
}
|
|
51972
52868
|
});
|
|
51973
|
-
var ToastImpl =
|
|
52869
|
+
var ToastImpl = React55.forwardRef(
|
|
51974
52870
|
(props, forwardedRef) => {
|
|
51975
52871
|
const {
|
|
51976
52872
|
__scopeToast,
|
|
@@ -51988,14 +52884,14 @@ var ToastImpl = React50.forwardRef(
|
|
|
51988
52884
|
...toastProps
|
|
51989
52885
|
} = props;
|
|
51990
52886
|
const context = useToastProviderContext(TOAST_NAME, __scopeToast);
|
|
51991
|
-
const [node, setNode2] =
|
|
52887
|
+
const [node, setNode2] = React55.useState(null);
|
|
51992
52888
|
const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode2(node2));
|
|
51993
|
-
const pointerStartRef =
|
|
51994
|
-
const swipeDeltaRef =
|
|
52889
|
+
const pointerStartRef = React55.useRef(null);
|
|
52890
|
+
const swipeDeltaRef = React55.useRef(null);
|
|
51995
52891
|
const duration = durationProp || context.duration;
|
|
51996
|
-
const closeTimerStartTimeRef =
|
|
51997
|
-
const closeTimerRemainingTimeRef =
|
|
51998
|
-
const closeTimerRef =
|
|
52892
|
+
const closeTimerStartTimeRef = React55.useRef(0);
|
|
52893
|
+
const closeTimerRemainingTimeRef = React55.useRef(duration);
|
|
52894
|
+
const closeTimerRef = React55.useRef(0);
|
|
51999
52895
|
const { onToastAdd, onToastRemove } = context;
|
|
52000
52896
|
const handleClose = useCallbackRef2(() => {
|
|
52001
52897
|
const isFocusInToast = node?.contains(document.activeElement);
|
|
@@ -52003,7 +52899,7 @@ var ToastImpl = React50.forwardRef(
|
|
|
52003
52899
|
context.viewport?.focus();
|
|
52004
52900
|
onClose();
|
|
52005
52901
|
});
|
|
52006
|
-
const startTimer =
|
|
52902
|
+
const startTimer = React55.useCallback(
|
|
52007
52903
|
(duration2) => {
|
|
52008
52904
|
if (!duration2 || duration2 === Infinity)
|
|
52009
52905
|
return;
|
|
@@ -52013,7 +52909,7 @@ var ToastImpl = React50.forwardRef(
|
|
|
52013
52909
|
},
|
|
52014
52910
|
[handleClose]
|
|
52015
52911
|
);
|
|
52016
|
-
|
|
52912
|
+
React55.useEffect(() => {
|
|
52017
52913
|
const viewport = context.viewport;
|
|
52018
52914
|
if (viewport) {
|
|
52019
52915
|
const handleResume = () => {
|
|
@@ -52034,15 +52930,15 @@ var ToastImpl = React50.forwardRef(
|
|
|
52034
52930
|
};
|
|
52035
52931
|
}
|
|
52036
52932
|
}, [context.viewport, duration, onPause, onResume, startTimer]);
|
|
52037
|
-
|
|
52933
|
+
React55.useEffect(() => {
|
|
52038
52934
|
if (open && !context.isClosePausedRef.current)
|
|
52039
52935
|
startTimer(duration);
|
|
52040
52936
|
}, [open, duration, context.isClosePausedRef, startTimer]);
|
|
52041
|
-
|
|
52937
|
+
React55.useEffect(() => {
|
|
52042
52938
|
onToastAdd();
|
|
52043
52939
|
return () => onToastRemove();
|
|
52044
52940
|
}, [onToastAdd, onToastRemove]);
|
|
52045
|
-
const announceTextContent =
|
|
52941
|
+
const announceTextContent = React55.useMemo(() => {
|
|
52046
52942
|
return node ? getAnnounceTextContent(node) : null;
|
|
52047
52943
|
}, [node]);
|
|
52048
52944
|
if (!context.viewport)
|
|
@@ -52164,10 +53060,10 @@ var ToastImpl = React50.forwardRef(
|
|
|
52164
53060
|
var ToastAnnounce = (props) => {
|
|
52165
53061
|
const { __scopeToast, children, ...announceProps } = props;
|
|
52166
53062
|
const context = useToastProviderContext(TOAST_NAME, __scopeToast);
|
|
52167
|
-
const [renderAnnounceText, setRenderAnnounceText] =
|
|
52168
|
-
const [isAnnounced, setIsAnnounced] =
|
|
53063
|
+
const [renderAnnounceText, setRenderAnnounceText] = React55.useState(false);
|
|
53064
|
+
const [isAnnounced, setIsAnnounced] = React55.useState(false);
|
|
52169
53065
|
useNextFrame(() => setRenderAnnounceText(true));
|
|
52170
|
-
|
|
53066
|
+
React55.useEffect(() => {
|
|
52171
53067
|
const timer = window.setTimeout(() => setIsAnnounced(true), 1e3);
|
|
52172
53068
|
return () => window.clearTimeout(timer);
|
|
52173
53069
|
}, []);
|
|
@@ -52178,7 +53074,7 @@ var ToastAnnounce = (props) => {
|
|
|
52178
53074
|
] }) }) });
|
|
52179
53075
|
};
|
|
52180
53076
|
var TITLE_NAME2 = "ToastTitle";
|
|
52181
|
-
var ToastTitle =
|
|
53077
|
+
var ToastTitle = React55.forwardRef(
|
|
52182
53078
|
(props, forwardedRef) => {
|
|
52183
53079
|
const { __scopeToast, ...titleProps } = props;
|
|
52184
53080
|
return /* @__PURE__ */ jsx(Primitive.div, { ...titleProps, ref: forwardedRef });
|
|
@@ -52186,7 +53082,7 @@ var ToastTitle = React50.forwardRef(
|
|
|
52186
53082
|
);
|
|
52187
53083
|
ToastTitle.displayName = TITLE_NAME2;
|
|
52188
53084
|
var DESCRIPTION_NAME2 = "ToastDescription";
|
|
52189
|
-
var ToastDescription =
|
|
53085
|
+
var ToastDescription = React55.forwardRef(
|
|
52190
53086
|
(props, forwardedRef) => {
|
|
52191
53087
|
const { __scopeToast, ...descriptionProps } = props;
|
|
52192
53088
|
return /* @__PURE__ */ jsx(Primitive.div, { ...descriptionProps, ref: forwardedRef });
|
|
@@ -52194,7 +53090,7 @@ var ToastDescription = React50.forwardRef(
|
|
|
52194
53090
|
);
|
|
52195
53091
|
ToastDescription.displayName = DESCRIPTION_NAME2;
|
|
52196
53092
|
var ACTION_NAME = "ToastAction";
|
|
52197
|
-
var ToastAction =
|
|
53093
|
+
var ToastAction = React55.forwardRef(
|
|
52198
53094
|
(props, forwardedRef) => {
|
|
52199
53095
|
const { altText, ...actionProps } = props;
|
|
52200
53096
|
if (!altText.trim()) {
|
|
@@ -52208,7 +53104,7 @@ var ToastAction = React50.forwardRef(
|
|
|
52208
53104
|
);
|
|
52209
53105
|
ToastAction.displayName = ACTION_NAME;
|
|
52210
53106
|
var CLOSE_NAME3 = "ToastClose";
|
|
52211
|
-
var ToastClose =
|
|
53107
|
+
var ToastClose = React55.forwardRef(
|
|
52212
53108
|
(props, forwardedRef) => {
|
|
52213
53109
|
const { __scopeToast, ...closeProps } = props;
|
|
52214
53110
|
const interactiveContext = useToastInteractiveContext(CLOSE_NAME3, __scopeToast);
|
|
@@ -52224,7 +53120,7 @@ var ToastClose = React50.forwardRef(
|
|
|
52224
53120
|
}
|
|
52225
53121
|
);
|
|
52226
53122
|
ToastClose.displayName = CLOSE_NAME3;
|
|
52227
|
-
var ToastAnnounceExclude =
|
|
53123
|
+
var ToastAnnounceExclude = React55.forwardRef((props, forwardedRef) => {
|
|
52228
53124
|
const { __scopeToast, altText, ...announceExcludeProps } = props;
|
|
52229
53125
|
return /* @__PURE__ */ jsx(
|
|
52230
53126
|
Primitive.div,
|
|
@@ -52324,7 +53220,7 @@ var Title2 = ToastTitle;
|
|
|
52324
53220
|
var Description2 = ToastDescription;
|
|
52325
53221
|
var Action = ToastAction;
|
|
52326
53222
|
var Close3 = ToastClose;
|
|
52327
|
-
var ToastViewport2 =
|
|
53223
|
+
var ToastViewport2 = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
52328
53224
|
Viewport,
|
|
52329
53225
|
{
|
|
52330
53226
|
ref,
|
|
@@ -52353,7 +53249,7 @@ var toastVariants = cva(
|
|
|
52353
53249
|
}
|
|
52354
53250
|
}
|
|
52355
53251
|
);
|
|
52356
|
-
var Toast2 =
|
|
53252
|
+
var Toast2 = React55.forwardRef(({ className, variant, ...props }, ref) => {
|
|
52357
53253
|
return /* @__PURE__ */ jsx(
|
|
52358
53254
|
Root25,
|
|
52359
53255
|
{
|
|
@@ -52364,7 +53260,7 @@ var Toast2 = React50.forwardRef(({ className, variant, ...props }, ref) => {
|
|
|
52364
53260
|
);
|
|
52365
53261
|
});
|
|
52366
53262
|
Toast2.displayName = Root25.displayName;
|
|
52367
|
-
var ToastAction2 =
|
|
53263
|
+
var ToastAction2 = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
52368
53264
|
Action,
|
|
52369
53265
|
{
|
|
52370
53266
|
ref,
|
|
@@ -52376,7 +53272,7 @@ var ToastAction2 = React50.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
52376
53272
|
}
|
|
52377
53273
|
));
|
|
52378
53274
|
ToastAction2.displayName = Action.displayName;
|
|
52379
|
-
var ToastClose2 =
|
|
53275
|
+
var ToastClose2 = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
52380
53276
|
Close3,
|
|
52381
53277
|
{
|
|
52382
53278
|
ref,
|
|
@@ -52390,7 +53286,7 @@ var ToastClose2 = React50.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
52390
53286
|
}
|
|
52391
53287
|
));
|
|
52392
53288
|
ToastClose2.displayName = Close3.displayName;
|
|
52393
|
-
var ToastTitle2 =
|
|
53289
|
+
var ToastTitle2 = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
52394
53290
|
Title2,
|
|
52395
53291
|
{
|
|
52396
53292
|
ref,
|
|
@@ -52399,7 +53295,7 @@ var ToastTitle2 = React50.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
52399
53295
|
}
|
|
52400
53296
|
));
|
|
52401
53297
|
ToastTitle2.displayName = Title2.displayName;
|
|
52402
|
-
var ToastDescription2 =
|
|
53298
|
+
var ToastDescription2 = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
52403
53299
|
Description2,
|
|
52404
53300
|
{
|
|
52405
53301
|
ref,
|
|
@@ -53944,7 +54840,7 @@ function MemoryEfficientData({
|
|
|
53944
54840
|
position: "absolute",
|
|
53945
54841
|
width: "100%"
|
|
53946
54842
|
},
|
|
53947
|
-
children: visibleData.map((item, index2) => /* @__PURE__ */ jsx(
|
|
54843
|
+
children: visibleData.map((item, index2) => /* @__PURE__ */ jsx(React55__default.Fragment, { children: renderItem(item, visibleRange.start + index2) }, visibleRange.start + index2))
|
|
53948
54844
|
}
|
|
53949
54845
|
) })
|
|
53950
54846
|
}
|
|
@@ -54264,7 +55160,7 @@ function SelectableVirtualList({
|
|
|
54264
55160
|
}, [originalRenderItem, selectable, selectedItems, handleItemClick]);
|
|
54265
55161
|
return /* @__PURE__ */ jsx(VirtualList, { ...props, renderItem });
|
|
54266
55162
|
}
|
|
54267
|
-
var SwipeableCard =
|
|
55163
|
+
var SwipeableCard = React55__default.forwardRef(
|
|
54268
55164
|
({
|
|
54269
55165
|
children,
|
|
54270
55166
|
onSwipeLeft,
|
|
@@ -54573,9 +55469,9 @@ function AdvancedChart({
|
|
|
54573
55469
|
animated = true,
|
|
54574
55470
|
responsive = true
|
|
54575
55471
|
}) {
|
|
54576
|
-
const [isFullscreen, setIsFullscreen] =
|
|
54577
|
-
const chartRef =
|
|
54578
|
-
const trend =
|
|
55472
|
+
const [isFullscreen, setIsFullscreen] = React55__default.useState(false);
|
|
55473
|
+
const chartRef = React55__default.useRef(null);
|
|
55474
|
+
const trend = React55__default.useMemo(() => {
|
|
54579
55475
|
if (!data.length || !series.length)
|
|
54580
55476
|
return null;
|
|
54581
55477
|
const firstSeries = series[0];
|
|
@@ -54821,7 +55717,7 @@ function Dashboard({
|
|
|
54821
55717
|
onRefresh,
|
|
54822
55718
|
loading = false
|
|
54823
55719
|
}) {
|
|
54824
|
-
const [refreshing, setRefreshing] =
|
|
55720
|
+
const [refreshing, setRefreshing] = React55__default.useState(false);
|
|
54825
55721
|
const handleRefresh = async () => {
|
|
54826
55722
|
if (onRefresh) {
|
|
54827
55723
|
setRefreshing(true);
|
|
@@ -54997,5 +55893,81 @@ function Dashboard({
|
|
|
54997
55893
|
] })
|
|
54998
55894
|
] });
|
|
54999
55895
|
}
|
|
55896
|
+
function DraggableList({
|
|
55897
|
+
items,
|
|
55898
|
+
onReorder,
|
|
55899
|
+
renderItem,
|
|
55900
|
+
keyExtractor,
|
|
55901
|
+
direction = "vertical",
|
|
55902
|
+
className,
|
|
55903
|
+
droppableId = "draggable-list",
|
|
55904
|
+
disabled = false
|
|
55905
|
+
}) {
|
|
55906
|
+
const handleDragEnd = (result) => {
|
|
55907
|
+
if (!result.destination || disabled) {
|
|
55908
|
+
return;
|
|
55909
|
+
}
|
|
55910
|
+
const sourceIndex = result.source.index;
|
|
55911
|
+
const destinationIndex = result.destination.index;
|
|
55912
|
+
if (sourceIndex === destinationIndex) {
|
|
55913
|
+
return;
|
|
55914
|
+
}
|
|
55915
|
+
const newItems = Array.from(items);
|
|
55916
|
+
const [reorderedItem] = newItems.splice(sourceIndex, 1);
|
|
55917
|
+
newItems.splice(destinationIndex, 0, reorderedItem);
|
|
55918
|
+
onReorder(newItems);
|
|
55919
|
+
};
|
|
55920
|
+
return /* @__PURE__ */ jsx(DragDropContext, { onDragEnd: handleDragEnd, children: /* @__PURE__ */ jsx(
|
|
55921
|
+
Droppable,
|
|
55922
|
+
{
|
|
55923
|
+
droppableId,
|
|
55924
|
+
direction,
|
|
55925
|
+
isDropDisabled: disabled,
|
|
55926
|
+
children: (provided, snapshot) => /* @__PURE__ */ jsxs(
|
|
55927
|
+
"div",
|
|
55928
|
+
{
|
|
55929
|
+
...provided.droppableProps,
|
|
55930
|
+
ref: provided.innerRef,
|
|
55931
|
+
className: cn$1(
|
|
55932
|
+
"space-y-2",
|
|
55933
|
+
direction === "horizontal" && "flex space-y-0 space-x-2",
|
|
55934
|
+
snapshot.isDraggingOver && "bg-muted/50 rounded-lg",
|
|
55935
|
+
className
|
|
55936
|
+
),
|
|
55937
|
+
children: [
|
|
55938
|
+
items.map((item, index2) => /* @__PURE__ */ jsx(
|
|
55939
|
+
Draggable,
|
|
55940
|
+
{
|
|
55941
|
+
draggableId: keyExtractor(item),
|
|
55942
|
+
index: index2,
|
|
55943
|
+
isDragDisabled: disabled,
|
|
55944
|
+
children: (provided2, snapshot2) => /* @__PURE__ */ jsx(
|
|
55945
|
+
"div",
|
|
55946
|
+
{
|
|
55947
|
+
ref: provided2.innerRef,
|
|
55948
|
+
...provided2.draggableProps,
|
|
55949
|
+
...provided2.dragHandleProps,
|
|
55950
|
+
className: cn$1(
|
|
55951
|
+
"transition-all duration-200",
|
|
55952
|
+
snapshot2.isDragging && "rotate-2 scale-105 shadow-lg z-50",
|
|
55953
|
+
disabled && "cursor-not-allowed opacity-50"
|
|
55954
|
+
),
|
|
55955
|
+
style: {
|
|
55956
|
+
...provided2.draggableProps.style,
|
|
55957
|
+
transform: snapshot2.isDragging ? provided2.draggableProps.style?.transform : "none"
|
|
55958
|
+
},
|
|
55959
|
+
children: renderItem(item, index2)
|
|
55960
|
+
}
|
|
55961
|
+
)
|
|
55962
|
+
},
|
|
55963
|
+
keyExtractor(item)
|
|
55964
|
+
)),
|
|
55965
|
+
provided.placeholder
|
|
55966
|
+
]
|
|
55967
|
+
}
|
|
55968
|
+
)
|
|
55969
|
+
}
|
|
55970
|
+
) });
|
|
55971
|
+
}
|
|
55000
55972
|
|
|
55001
|
-
export { AdvancedChart, Calendar2 as Calendar, Dashboard, Kanban, MemoryAnalytics, MemoryEfficientData, RichTextEditor, SelectableVirtualList, SwipeableCard, Timeline, VirtualList, useStreamingData, useVirtualList };
|
|
55973
|
+
export { AdvancedChart, AnimatedButton, Calendar2 as Calendar, Dashboard, DraggableList, ErrorBoundary, FloatingActionButton, HoverCard3D, Kanban, MagneticButton, MemoryAnalytics, MemoryEfficientData, PinchZoom, RichTextEditor, SelectableVirtualList, SpotlightCard, SwipeableCard, Timeline, VirtualList, animatedButtonVariants, useStreamingData, useVirtualList };
|