@muhgholy/next-drive 4.23.26 → 4.23.28
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/README.md +1 -1
- package/dist/{chunk-W7PHCOE6.js → chunk-DNJRZKAF.js} +4 -3
- package/dist/chunk-DNJRZKAF.js.map +1 -0
- package/dist/{chunk-CLF77PSE.js → chunk-J2OYAYYA.js} +4 -3
- package/dist/chunk-J2OYAYYA.js.map +1 -0
- package/dist/{chunk-DUTHZ5HA.cjs → chunk-LTWWPQJA.cjs} +4 -3
- package/dist/chunk-LTWWPQJA.cjs.map +1 -0
- package/dist/{chunk-PSJYCISB.cjs → chunk-QE5EHVVA.cjs} +38 -37
- package/dist/chunk-QE5EHVVA.cjs.map +1 -0
- package/dist/{chunk-A65ZAA2Z.cjs → chunk-XSYPX7LD.cjs} +3 -2
- package/dist/chunk-XSYPX7LD.cjs.map +1 -0
- package/dist/{chunk-FJRGKB3U.js → chunk-Y6K6772V.js} +3 -2
- package/dist/chunk-Y6K6772V.js.map +1 -0
- package/dist/client/components/drive/dnd/context.d.ts +4 -0
- package/dist/client/components/drive/dnd/context.d.ts.map +1 -1
- package/dist/client/components/drive/explorer.d.ts +0 -1
- package/dist/client/components/drive/explorer.d.ts.map +1 -1
- package/dist/client/components/drive/file-grid.d.ts +0 -1
- package/dist/client/components/drive/file-grid.d.ts.map +1 -1
- package/dist/client/components/drive/header.d.ts.map +1 -1
- package/dist/client/context.d.ts.map +1 -1
- package/dist/client/file-chooser.d.ts.map +1 -1
- package/dist/client/hooks/use-item-touch.d.ts +6 -0
- package/dist/client/hooks/use-item-touch.d.ts.map +1 -0
- package/dist/client/index.cjs +335 -509
- package/dist/client/index.cjs.map +1 -1
- package/dist/client/index.css +1 -1
- package/dist/client/index.js +337 -511
- package/dist/client/index.js.map +1 -1
- package/dist/client/upload.d.ts.map +1 -1
- package/dist/schemas.cjs +2 -2
- package/dist/schemas.d.ts +3 -0
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +1 -1
- package/dist/server/controllers/drive.d.ts +1 -1
- package/dist/server/controllers/drive.d.ts.map +1 -1
- package/dist/server/express.cjs +12 -12
- package/dist/server/express.js +4 -4
- package/dist/server/hono.cjs +12 -12
- package/dist/server/hono.js +4 -4
- package/dist/server/index.cjs +19 -19
- package/dist/server/index.js +2 -2
- package/dist/server/zod/schemas.d.ts +3 -0
- package/dist/server/zod/schemas.d.ts.map +1 -1
- package/dist/tus-35IUZMFV.js +3 -0
- package/dist/tus-35IUZMFV.js.map +1 -0
- package/dist/tus-PK6UHGE4.cjs +16 -0
- package/dist/tus-PK6UHGE4.cjs.map +1 -0
- package/dist/types/client/index.d.ts +4 -9
- package/dist/types/client/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-A65ZAA2Z.cjs.map +0 -1
- package/dist/chunk-CLF77PSE.js.map +0 -1
- package/dist/chunk-DUTHZ5HA.cjs.map +0 -1
- package/dist/chunk-FJRGKB3U.js.map +0 -1
- package/dist/chunk-PSJYCISB.cjs.map +0 -1
- package/dist/chunk-W7PHCOE6.js.map +0 -1
- package/dist/tus-JZQ3PKBS.cjs +0 -16
- package/dist/tus-JZQ3PKBS.cjs.map +0 -1
- package/dist/tus-MNPA66VL.js +0 -3
- package/dist/tus-MNPA66VL.js.map +0 -1
package/dist/client/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { cn, driveCreateUrl, matchesMimeFilter, formatBytes, getFileIcon, getFileFormat } from '../chunk-OSYRIHH4.js';
|
|
2
|
-
export { driveFileSchemaZod } from '../chunk-
|
|
2
|
+
export { driveFileSchemaZod } from '../chunk-Y6K6772V.js';
|
|
3
3
|
import * as React3 from 'react';
|
|
4
4
|
import React3__default, { createContext, useContext, useState, useMemo, useCallback, useRef, useEffect } from 'react';
|
|
5
5
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
@@ -8,12 +8,12 @@ import { Slot } from '@radix-ui/react-slot';
|
|
|
8
8
|
import { cva } from 'class-variance-authority';
|
|
9
9
|
import * as ProgressPrimitive from '@radix-ui/react-progress';
|
|
10
10
|
import * as SheetPrimitive from '@radix-ui/react-dialog';
|
|
11
|
-
import { X, ChevronRight, Check, Circle, Loader2, Folder, FolderPlus, Menu, RotateCcw, Trash2, Group, Search, ArrowUpDown, Calendar, ArrowDownAZ, ArrowUpAZ, ArrowDown01, ArrowUp01, LayoutGrid, List, RefreshCw, Upload, CheckCircle2, Cloud, AlertCircle,
|
|
11
|
+
import { X, ChevronRight, Check, Circle, Loader2, Folder, FolderPlus, Menu, RotateCcw, Trash2, Group, Search, ArrowUpDown, Calendar, ArrowDownAZ, ArrowUpAZ, ArrowDown01, ArrowUp01, LayoutGrid, List, RefreshCw, Upload, CheckCircle2, Cloud, AlertCircle, FileText, Pencil, HardDrive, Database, ChevronsUpDown, Plus, Settings2, Trash, FolderOpen, Clock } from 'lucide-react';
|
|
12
12
|
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
|
|
13
13
|
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
14
14
|
import { useForm } from 'react-hook-form';
|
|
15
|
-
import { useSensors, useSensor, PointerSensor,
|
|
16
|
-
import {
|
|
15
|
+
import { useSensors, useSensor, PointerSensor, DndContext, pointerWithin, useDroppable } from '@dnd-kit/core';
|
|
16
|
+
import { arrayMove, SortableContext, rectSortingStrategy, useSortable } from '@dnd-kit/sortable';
|
|
17
17
|
import { startOfWeek, subWeeks, isToday, isYesterday, isAfter } from 'date-fns';
|
|
18
18
|
import * as ContextMenuPrimitive from '@radix-ui/react-context-menu';
|
|
19
19
|
import { CSS } from '@dnd-kit/utilities';
|
|
@@ -50,7 +50,7 @@ var DriveProvider = (props) => {
|
|
|
50
50
|
const [sortBy, setSortBy] = useState({ field: "createdAt", order: -1 });
|
|
51
51
|
const [selectionMode, setSelectionMode] = useState(initialSelectionMode);
|
|
52
52
|
const [selectedFiles, setSelectedFiles] = useState(
|
|
53
|
-
() => defaultSelectedFileIds.map((id) => ({ id, file: { name: "", mime: "", size: 0 } }))
|
|
53
|
+
() => defaultSelectedFileIds.map((id) => ({ id, isFolder: false, file: { name: "", mime: "", size: 0 } }))
|
|
54
54
|
);
|
|
55
55
|
const selectedFileIds = useMemo(() => selectedFiles.map((f) => f.id), [selectedFiles]);
|
|
56
56
|
const toggleSelected = useCallback((file) => {
|
|
@@ -319,6 +319,7 @@ var toDriveFile = (item) => {
|
|
|
319
319
|
const isFile = item?.information?.type === "FILE";
|
|
320
320
|
return {
|
|
321
321
|
id: item?.id,
|
|
322
|
+
isFolder: !isFile,
|
|
322
323
|
file: {
|
|
323
324
|
name: item?.name,
|
|
324
325
|
mime: isFile ? item.information.mime : "",
|
|
@@ -614,7 +615,7 @@ var useUpload = (apiEndpoint, activeAccountId, withCredentials = false, onUpload
|
|
|
614
615
|
}, [uploads, startUpload]);
|
|
615
616
|
return { uploads, uploadFiles: uploadFiles2, cancelUpload, cancelAllUploads, resolveConflict, resolveAllConflicts };
|
|
616
617
|
};
|
|
617
|
-
var cssContent = ".nd-drive-root,.nd-drive-root *,.nd-drive-root ::backdrop,.nd-drive-root :after,.nd-drive-root :before{--nd-tw-translate-x:0;--nd-tw-translate-y:0;--nd-tw-translate-z:0;--nd-tw-scale-x:1;--nd-tw-scale-y:1;--nd-tw-scale-z:1;--nd-tw-space-y-reverse:0;--nd-tw-divide-y-reverse:0;--nd-tw-border-style:solid;--nd-tw-gradient-from:#0000;--nd-tw-gradient-via:#0000;--nd-tw-gradient-to:#0000;--nd-tw-gradient-from-position:0%;--nd-tw-gradient-via-position:50%;--nd-tw-gradient-to-position:100%;--nd-tw-shadow:0 0 #0000;--nd-tw-shadow-alpha:100%;--nd-tw-inset-shadow:0 0 #0000;--nd-tw-inset-shadow-alpha:100%;--nd-tw-ring-shadow:0 0 #0000;--nd-tw-inset-ring-shadow:0 0 #0000;--nd-tw-ring-offset-width:0px;--nd-tw-ring-offset-color:#fff;--nd-tw-ring-offset-shadow:0 0 #0000;--nd-tw-space-x-reverse:0}\n/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */.nd\\:pointer-events-none{pointer-events:none}.nd\\:sr-only{border-width:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;white-space:nowrap;width:1px}.nd\\:absolute,.nd\\:sr-only{position:absolute}.nd\\:fixed{position:fixed}.nd\\:relative{position:relative}.nd\\:sticky{position:sticky}.nd\\:inset-0{inset:calc(var(--nd-spacing)*0)}.nd\\:inset-x-0{inset-inline:calc(var(--nd-spacing)*0)}.nd\\:inset-y-0{inset-block:calc(var(--nd-spacing)*0)}.nd\\:-top-1\\.5{top:calc(var(--nd-spacing)*-1.5)}.nd\\:top-0{top:calc(var(--nd-spacing)*0)}.nd\\:top-1\\.5{top:calc(var(--nd-spacing)*1.5)}.nd\\:top-1\\/2{top:50%}.nd\\:top-2{top:calc(var(--nd-spacing)*2)}.nd\\:top-3{top:calc(var(--nd-spacing)*3)}.nd\\:top-4{top:calc(var(--nd-spacing)*4)}.nd\\:top-\\[50\\%\\]{top:50%}.nd\\:-right-1\\.5{right:calc(var(--nd-spacing)*-1.5)}.nd\\:right-0{right:calc(var(--nd-spacing)*0)}.nd\\:right-0\\.5{right:calc(var(--nd-spacing)*.5)}.nd\\:right-1\\.5{right:calc(var(--nd-spacing)*1.5)}.nd\\:right-2{right:calc(var(--nd-spacing)*2)}.nd\\:right-3{right:calc(var(--nd-spacing)*3)}.nd\\:right-4{right:calc(var(--nd-spacing)*4)}.nd\\:bottom-0{bottom:calc(var(--nd-spacing)*0)}.nd\\:bottom-1\\.5{bottom:calc(var(--nd-spacing)*1.5)}.nd\\:bottom-2{bottom:calc(var(--nd-spacing)*2)}.nd\\:left-0{left:calc(var(--nd-spacing)*0)}.nd\\:left-2{left:calc(var(--nd-spacing)*2)}.nd\\:left-2\\.5{left:calc(var(--nd-spacing)*2.5)}.nd\\:left-\\[50\\%\\]{left:50%}.nd\\:z-10{z-index:10}.nd\\:z-50{z-index:50}.nd\\:col-start-2{grid-column-start:2}.nd\\:container{width:100%;@media (width >= 40rem){max-width:40rem}@media (width >= 48rem){max-width:48rem}@media (width >= 64rem){max-width:64rem}@media (width >= 80rem){max-width:80rem}@media (width >= 96rem){max-width:96rem}}.nd\\:mx-auto{margin-inline:auto}.nd\\:my-1{margin-block:calc(var(--nd-spacing)*1)}.nd\\:mt-0\\.5{margin-top:calc(var(--nd-spacing)*.5)}.nd\\:mt-1{margin-top:calc(var(--nd-spacing)*1)}.nd\\:mt-1\\.5{margin-top:calc(var(--nd-spacing)*1.5)}.nd\\:mt-2{margin-top:calc(var(--nd-spacing)*2)}.nd\\:mt-4{margin-top:calc(var(--nd-spacing)*4)}.nd\\:mr-2{margin-right:calc(var(--nd-spacing)*2)}.nd\\:mb-1\\.5{margin-bottom:calc(var(--nd-spacing)*1.5)}.nd\\:mb-2{margin-bottom:calc(var(--nd-spacing)*2)}.nd\\:mb-3{margin-bottom:calc(var(--nd-spacing)*3)}.nd\\:mb-4{margin-bottom:calc(var(--nd-spacing)*4)}.nd\\:ml-5\\.5{margin-left:calc(var(--nd-spacing)*5.5)}.nd\\:ml-auto{margin-left:auto}.nd\\:line-clamp-1{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1}.nd\\:flex{display:flex}.nd\\:grid{display:grid}.nd\\:hidden{display:none}.nd\\:inline-flex{display:inline-flex}.nd\\:aspect-square{aspect-ratio:1/1}.nd\\:size-1\\.5{height:calc(var(--nd-spacing)*1.5);width:calc(var(--nd-spacing)*1.5)}.nd\\:size-2{height:calc(var(--nd-spacing)*2);width:calc(var(--nd-spacing)*2)}.nd\\:size-2\\.5{height:calc(var(--nd-spacing)*2.5);width:calc(var(--nd-spacing)*2.5)}.nd\\:size-3{height:calc(var(--nd-spacing)*3);width:calc(var(--nd-spacing)*3)}.nd\\:size-3\\.5{height:calc(var(--nd-spacing)*3.5);width:calc(var(--nd-spacing)*3.5)}.nd\\:size-4{height:calc(var(--nd-spacing)*4);width:calc(var(--nd-spacing)*4)}.nd\\:size-5{height:calc(var(--nd-spacing)*5);width:calc(var(--nd-spacing)*5)}.nd\\:size-6{height:calc(var(--nd-spacing)*6);width:calc(var(--nd-spacing)*6)}.nd\\:size-7{height:calc(var(--nd-spacing)*7);width:calc(var(--nd-spacing)*7)}.nd\\:size-8{height:calc(var(--nd-spacing)*8);width:calc(var(--nd-spacing)*8)}.nd\\:size-9{height:calc(var(--nd-spacing)*9);width:calc(var(--nd-spacing)*9)}.nd\\:size-10{height:calc(var(--nd-spacing)*10);width:calc(var(--nd-spacing)*10)}.nd\\:size-12{height:calc(var(--nd-spacing)*12);width:calc(var(--nd-spacing)*12)}.nd\\:size-16{height:calc(var(--nd-spacing)*16);width:calc(var(--nd-spacing)*16)}.nd\\:size-full{height:100%;width:100%}.nd\\:h-1{height:calc(var(--nd-spacing)*1)}.nd\\:h-1\\.5{height:calc(var(--nd-spacing)*1.5)}.nd\\:h-2{height:calc(var(--nd-spacing)*2)}.nd\\:h-3\\.5{height:calc(var(--nd-spacing)*3.5)}.nd\\:h-4{height:calc(var(--nd-spacing)*4)}.nd\\:h-5{height:calc(var(--nd-spacing)*5)}.nd\\:h-6{height:calc(var(--nd-spacing)*6)}.nd\\:h-7{height:calc(var(--nd-spacing)*7)}.nd\\:h-8{height:calc(var(--nd-spacing)*8)}.nd\\:h-9{height:calc(var(--nd-spacing)*9)}.nd\\:h-10{height:calc(var(--nd-spacing)*10)}.nd\\:h-11{height:calc(var(--nd-spacing)*11)}.nd\\:h-12{height:calc(var(--nd-spacing)*12)}.nd\\:h-14{height:calc(var(--nd-spacing)*14)}.nd\\:h-auto{height:auto}.nd\\:h-full{height:100%}.nd\\:h-px{height:1px}.nd\\:max-h-40{max-height:calc(var(--nd-spacing)*40)}.nd\\:max-h-80{max-height:calc(var(--nd-spacing)*80)}.nd\\:max-h-\\[85vh\\]{max-height:85vh}.nd\\:min-h-0{min-height:calc(var(--nd-spacing)*0)}.nd\\:min-h-4{min-height:calc(var(--nd-spacing)*4)}.nd\\:w-1\\/3{width:33.33333%}.nd\\:w-2{width:calc(var(--nd-spacing)*2)}.nd\\:w-3\\.5{width:calc(var(--nd-spacing)*3.5)}.nd\\:w-3\\/4{width:75%}.nd\\:w-4{width:calc(var(--nd-spacing)*4)}.nd\\:w-6{width:calc(var(--nd-spacing)*6)}.nd\\:w-7{width:calc(var(--nd-spacing)*7)}.nd\\:w-8{width:calc(var(--nd-spacing)*8)}.nd\\:w-16{width:calc(var(--nd-spacing)*16)}.nd\\:w-20{width:calc(var(--nd-spacing)*20)}.nd\\:w-24{width:calc(var(--nd-spacing)*24)}.nd\\:w-40{width:calc(var(--nd-spacing)*40)}.nd\\:w-52{width:calc(var(--nd-spacing)*52)}.nd\\:w-56{width:calc(var(--nd-spacing)*56)}.nd\\:w-70{width:calc(var(--nd-spacing)*70)}.nd\\:w-72{width:calc(var(--nd-spacing)*72)}.nd\\:w-fit{width:fit-content}.nd\\:w-full{width:100%}.nd\\:w-px{width:1px}.nd\\:max-w-24{max-width:calc(var(--nd-spacing)*24)}.nd\\:max-w-25{max-width:calc(var(--nd-spacing)*25)}.nd\\:max-w-30{max-width:calc(var(--nd-spacing)*30)}.nd\\:max-w-\\[calc\\(100\\%-2rem\\)\\]{max-width:calc(100% - 2rem)}.nd\\:max-w-lg{max-width:var(--nd-container-lg)}.nd\\:min-w-0{min-width:calc(var(--nd-spacing)*0)}.nd\\:min-w-\\[8rem\\]{min-width:8rem}.nd\\:flex-1{flex:1}.nd\\:shrink-0{flex-shrink:0}.nd\\:origin-\\(--radix-tooltip-content-transform-origin\\){transform-origin:var(--radix-tooltip-content-transform-origin)}.nd\\:translate-x-\\[-50\\%\\]{--nd-tw-translate-x:-50%;translate:var(--nd-tw-translate-x) var(--nd-tw-translate-y)}.nd\\:-translate-y-1\\/2,.nd\\:translate-y-\\[-50\\%\\]{--nd-tw-translate-y:-50%;translate:var(--nd-tw-translate-x) var(--nd-tw-translate-y)}.nd\\:translate-y-\\[calc\\(-50\\%_-_2px\\)\\]{--nd-tw-translate-y:calc(-50% - 2px);translate:var(--nd-tw-translate-x) var(--nd-tw-translate-y)}.nd\\:scale-105{--nd-tw-scale-x:105%;--nd-tw-scale-y:105%;--nd-tw-scale-z:105%;scale:var(--nd-tw-scale-x) var(--nd-tw-scale-y)}.nd\\:scale-\\[1\\.02\\]{scale:1.02}.nd\\:rotate-45{rotate:45deg}.nd\\:animate-\\[indeterminate_1\\.5s_ease-in-out_infinite\\]{animation:indeterminate 1.5s ease-in-out infinite}.nd\\:animate-spin{animation:var(--nd-animate-spin)}.nd\\:cursor-default{cursor:default}.nd\\:cursor-pointer{cursor:pointer}.nd\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.nd\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.nd\\:grid-cols-\\[0_1fr\\]{grid-template-columns:0 1fr}.nd\\:flex-col{flex-direction:column}.nd\\:flex-col-reverse{flex-direction:column-reverse}.nd\\:flex-row{flex-direction:row}.nd\\:flex-nowrap{flex-wrap:nowrap}.nd\\:flex-wrap{flex-wrap:wrap}.nd\\:items-center{align-items:center}.nd\\:items-start{align-items:flex-start}.nd\\:justify-between{justify-content:space-between}.nd\\:justify-center{justify-content:center}.nd\\:justify-end{justify-content:flex-end}.nd\\:justify-start{justify-content:flex-start}.nd\\:justify-items-start{justify-items:start}.nd\\:gap-0{gap:calc(var(--nd-spacing)*0)}.nd\\:gap-0\\.5{gap:calc(var(--nd-spacing)*.5)}.nd\\:gap-1{gap:calc(var(--nd-spacing)*1)}.nd\\:gap-1\\.5{gap:calc(var(--nd-spacing)*1.5)}.nd\\:gap-2{gap:calc(var(--nd-spacing)*2)}.nd\\:gap-2\\.5{gap:calc(var(--nd-spacing)*2.5)}.nd\\:gap-3{gap:calc(var(--nd-spacing)*3)}.nd\\:gap-4{gap:calc(var(--nd-spacing)*4)}.nd\\:space-y-0{:where(&>:not(:last-child)){--nd-tw-space-y-reverse:0;margin-block-end:calc(var(--nd-spacing)*0*(1 - var(--nd-tw-space-y-reverse)));margin-block-start:calc(var(--nd-spacing)*0*var(--nd-tw-space-y-reverse))}}.nd\\:space-y-0\\.5{:where(&>:not(:last-child)){--nd-tw-space-y-reverse:0;margin-block-end:calc(var(--nd-spacing)*.5*(1 - var(--nd-tw-space-y-reverse)));margin-block-start:calc(var(--nd-spacing)*.5*var(--nd-tw-space-y-reverse))}}.nd\\:space-y-1{:where(&>:not(:last-child)){--nd-tw-space-y-reverse:0;margin-block-end:calc(var(--nd-spacing)*1*(1 - var(--nd-tw-space-y-reverse)));margin-block-start:calc(var(--nd-spacing)*1*var(--nd-tw-space-y-reverse))}}.nd\\:space-y-2{:where(&>:not(:last-child)){--nd-tw-space-y-reverse:0;margin-block-end:calc(var(--nd-spacing)*2*(1 - var(--nd-tw-space-y-reverse)));margin-block-start:calc(var(--nd-spacing)*2*var(--nd-tw-space-y-reverse))}}.nd\\:space-y-3{:where(&>:not(:last-child)){--nd-tw-space-y-reverse:0;margin-block-end:calc(var(--nd-spacing)*3*(1 - var(--nd-tw-space-y-reverse)));margin-block-start:calc(var(--nd-spacing)*3*var(--nd-tw-space-y-reverse))}}.nd\\:space-y-4{:where(&>:not(:last-child)){--nd-tw-space-y-reverse:0;margin-block-end:calc(var(--nd-spacing)*4*(1 - var(--nd-tw-space-y-reverse)));margin-block-start:calc(var(--nd-spacing)*4*var(--nd-tw-space-y-reverse))}}.nd\\:gap-y-0\\.5{row-gap:calc(var(--nd-spacing)*.5)}.nd\\:divide-y{:where(&>:not(:last-child)){--nd-tw-divide-y-reverse:0;border-bottom-style:var(--nd-tw-border-style);border-bottom-width:calc(1px*(1 - var(--nd-tw-divide-y-reverse)));border-top-style:var(--nd-tw-border-style);border-top-width:calc(1px*var(--nd-tw-divide-y-reverse))}}.nd\\:divide-border\\/50{:where(&>:not(:last-child)){border-color:var(--nd-border);@supports (color:color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--nd-border) 50%,transparent)}}}.nd\\:truncate{text-overflow:ellipsis;white-space:nowrap}.nd\\:overflow-hidden,.nd\\:truncate{overflow:hidden}.nd\\:overflow-x-auto{overflow-x:auto}.nd\\:overflow-y-auto{overflow-y:auto}.nd\\:rounded{border-radius:.25rem}.nd\\:rounded-2xl{border-radius:calc(var(--nd-radius) + 8px)}.nd\\:rounded-\\[2px\\]{border-radius:2px}.nd\\:rounded-full{border-radius:calc(infinity*1px)}.nd\\:rounded-lg{border-radius:var(--nd-radius)}.nd\\:rounded-md{border-radius:calc(var(--nd-radius) - 2px)}.nd\\:rounded-none{border-radius:0}.nd\\:rounded-sm{border-radius:calc(var(--nd-radius) - 4px)}.nd\\:rounded-xl{border-radius:calc(var(--nd-radius) + 4px)}.nd\\:rounded-xs{border-radius:var(--nd-radius-xs)}.nd\\:border{border-style:var(--nd-tw-border-style);border-width:1px}.nd\\:border-2{border-style:var(--nd-tw-border-style);border-width:2px}.nd\\:border-t{border-top-style:var(--nd-tw-border-style);border-top-width:1px}.nd\\:border-r{border-right-style:var(--nd-tw-border-style);border-right-width:1px}.nd\\:border-b{border-bottom-style:var(--nd-tw-border-style);border-bottom-width:1px}.nd\\:border-l{border-left-style:var(--nd-tw-border-style);border-left-width:1px}.nd\\:border-dashed{--nd-tw-border-style:dashed;border-style:dashed}.nd\\:border-border{border-color:var(--nd-border)}.nd\\:border-border\\/50{border-color:var(--nd-border);@supports (color:color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--nd-border) 50%,transparent)}}.nd\\:border-destructive{border-color:var(--nd-destructive)}.nd\\:border-destructive\\/20{border-color:var(--nd-destructive);@supports (color:color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--nd-destructive) 20%,transparent)}}.nd\\:border-emerald-500\\/20{border-color:var(--nd-color-emerald-500);@supports (color:color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--nd-color-emerald-500) 20%,transparent)}}.nd\\:border-input{border-color:var(--nd-input)}.nd\\:border-muted-foreground\\/25{border-color:var(--nd-muted-foreground);@supports (color:color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--nd-muted-foreground) 25%,transparent)}}.nd\\:border-primary{border-color:var(--nd-primary)}.nd\\:border-primary\\/50{border-color:var(--nd-primary);@supports (color:color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--nd-primary) 50%,transparent)}}.nd\\:border-transparent{border-color:transparent}.nd\\:border-yellow-500\\/20{border-color:var(--nd-color-yellow-500);@supports (color:color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--nd-color-yellow-500) 20%,transparent)}}.nd\\:bg-accent\\/30{background-color:var(--nd-accent);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-accent) 30%,transparent)}}.nd\\:bg-amber-500\\/5{background-color:var(--nd-color-amber-500);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-color-amber-500) 5%,transparent)}}.nd\\:bg-background{background-color:var(--nd-background)}.nd\\:bg-background\\/50{background-color:var(--nd-background);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-background) 50%,transparent)}}.nd\\:bg-background\\/95{background-color:var(--nd-background);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-background) 95%,transparent)}}.nd\\:bg-black\\/50{background-color:var(--nd-color-black);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-color-black) 50%,transparent)}}.nd\\:bg-black\\/60{background-color:var(--nd-color-black);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-color-black) 60%,transparent)}}.nd\\:bg-black\\/80{background-color:var(--nd-color-black);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-color-black) 80%,transparent)}}.nd\\:bg-blue-500\\/10{background-color:var(--nd-color-blue-500);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-color-blue-500) 10%,transparent)}}.nd\\:bg-border{background-color:var(--nd-border)}.nd\\:bg-card{background-color:var(--nd-card)}.nd\\:bg-destructive{background-color:var(--nd-destructive)}.nd\\:bg-destructive\\/5{background-color:var(--nd-destructive);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-destructive) 5%,transparent)}}.nd\\:bg-destructive\\/10{background-color:var(--nd-destructive);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-destructive) 10%,transparent)}}.nd\\:bg-emerald-500{background-color:var(--nd-color-emerald-500)}.nd\\:bg-emerald-500\\/5{background-color:var(--nd-color-emerald-500);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-color-emerald-500) 5%,transparent)}}.nd\\:bg-emerald-500\\/10{background-color:var(--nd-color-emerald-500);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-color-emerald-500) 10%,transparent)}}.nd\\:bg-foreground{background-color:var(--nd-foreground)}.nd\\:bg-muted{background-color:var(--nd-muted)}.nd\\:bg-muted-foreground{background-color:var(--nd-muted-foreground)}.nd\\:bg-muted\\/5{background-color:var(--nd-muted);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-muted) 5%,transparent)}}.nd\\:bg-muted\\/20{background-color:var(--nd-muted);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-muted) 20%,transparent)}}.nd\\:bg-muted\\/30{background-color:var(--nd-muted);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-muted) 30%,transparent)}}.nd\\:bg-muted\\/40{background-color:var(--nd-muted);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-muted) 40%,transparent)}}.nd\\:bg-muted\\/50{background-color:var(--nd-muted);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-muted) 50%,transparent)}}.nd\\:bg-muted\\/80{background-color:var(--nd-muted);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-muted) 80%,transparent)}}.nd\\:bg-popover{background-color:var(--nd-popover)}.nd\\:bg-primary{background-color:var(--nd-primary)}.nd\\:bg-primary-foreground{background-color:var(--nd-primary-foreground)}.nd\\:bg-primary\\/5{background-color:var(--nd-primary);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-primary) 5%,transparent)}}.nd\\:bg-primary\\/10{background-color:var(--nd-primary);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-primary) 10%,transparent)}}.nd\\:bg-primary\\/20{background-color:var(--nd-primary);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-primary) 20%,transparent)}}.nd\\:bg-primary\\/90{background-color:var(--nd-primary);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-primary) 90%,transparent)}}.nd\\:bg-secondary{background-color:var(--nd-secondary)}.nd\\:bg-transparent{background-color:transparent}.nd\\:bg-yellow-500{background-color:var(--nd-color-yellow-500)}.nd\\:bg-yellow-500\\/5{background-color:var(--nd-color-yellow-500);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-color-yellow-500) 5%,transparent)}}.nd\\:bg-yellow-500\\/10{background-color:var(--nd-color-yellow-500);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-color-yellow-500) 10%,transparent)}}.nd\\:bg-gradient-to-r{--nd-tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--nd-tw-gradient-stops))}.nd\\:from-blue-500{--nd-tw-gradient-from:var(--nd-color-blue-500);--nd-tw-gradient-stops:var(--nd-tw-gradient-via-stops,var(--nd-tw-gradient-position),var(--nd-tw-gradient-from) var(--nd-tw-gradient-from-position),var(--nd-tw-gradient-to) var(--nd-tw-gradient-to-position))}.nd\\:from-yellow-500{--nd-tw-gradient-from:var(--nd-color-yellow-500);--nd-tw-gradient-stops:var(--nd-tw-gradient-via-stops,var(--nd-tw-gradient-position),var(--nd-tw-gradient-from) var(--nd-tw-gradient-from-position),var(--nd-tw-gradient-to) var(--nd-tw-gradient-to-position))}.nd\\:to-cyan-500{--nd-tw-gradient-to:var(--nd-color-cyan-500);--nd-tw-gradient-stops:var(--nd-tw-gradient-via-stops,var(--nd-tw-gradient-position),var(--nd-tw-gradient-from) var(--nd-tw-gradient-from-position),var(--nd-tw-gradient-to) var(--nd-tw-gradient-to-position))}.nd\\:to-orange-500{--nd-tw-gradient-to:var(--nd-color-orange-500);--nd-tw-gradient-stops:var(--nd-tw-gradient-via-stops,var(--nd-tw-gradient-position),var(--nd-tw-gradient-from) var(--nd-tw-gradient-from-position),var(--nd-tw-gradient-to) var(--nd-tw-gradient-to-position))}.nd\\:to-purple-500{--nd-tw-gradient-to:var(--nd-color-purple-500);--nd-tw-gradient-stops:var(--nd-tw-gradient-via-stops,var(--nd-tw-gradient-position),var(--nd-tw-gradient-from) var(--nd-tw-gradient-from-position),var(--nd-tw-gradient-to) var(--nd-tw-gradient-to-position))}.nd\\:fill-blue-500\\/20{fill:var(--nd-color-blue-500);@supports (color:color-mix(in lab,red,red)){fill:color-mix(in oklab,var(--nd-color-blue-500) 20%,transparent)}}.nd\\:fill-current{fill:currentcolor}.nd\\:fill-foreground{fill:var(--nd-foreground)}.nd\\:object-contain{object-fit:contain}.nd\\:object-cover{object-fit:cover}.nd\\:p-0{padding:calc(var(--nd-spacing)*0)}.nd\\:p-0\\.5{padding:calc(var(--nd-spacing)*.5)}.nd\\:p-1{padding:calc(var(--nd-spacing)*1)}.nd\\:p-1\\.5{padding:calc(var(--nd-spacing)*1.5)}.nd\\:p-2{padding:calc(var(--nd-spacing)*2)}.nd\\:p-2\\.5{padding:calc(var(--nd-spacing)*2.5)}.nd\\:p-3{padding:calc(var(--nd-spacing)*3)}.nd\\:p-4{padding:calc(var(--nd-spacing)*4)}.nd\\:p-6{padding:calc(var(--nd-spacing)*6)}.nd\\:p-8{padding:calc(var(--nd-spacing)*8)}.nd\\:p-12{padding:calc(var(--nd-spacing)*12)}.nd\\:px-1{padding-inline:calc(var(--nd-spacing)*1)}.nd\\:px-1\\.5{padding-inline:calc(var(--nd-spacing)*1.5)}.nd\\:px-2{padding-inline:calc(var(--nd-spacing)*2)}.nd\\:px-2\\.5{padding-inline:calc(var(--nd-spacing)*2.5)}.nd\\:px-3{padding-inline:calc(var(--nd-spacing)*3)}.nd\\:px-4{padding-inline:calc(var(--nd-spacing)*4)}.nd\\:px-6{padding-inline:calc(var(--nd-spacing)*6)}.nd\\:py-1{padding-block:calc(var(--nd-spacing)*1)}.nd\\:py-1\\.5{padding-block:calc(var(--nd-spacing)*1.5)}.nd\\:py-2{padding-block:calc(var(--nd-spacing)*2)}.nd\\:py-2\\.5{padding-block:calc(var(--nd-spacing)*2.5)}.nd\\:py-3{padding-block:calc(var(--nd-spacing)*3)}.nd\\:py-4{padding-block:calc(var(--nd-spacing)*4)}.nd\\:py-6{padding-block:calc(var(--nd-spacing)*6)}.nd\\:py-8{padding-block:calc(var(--nd-spacing)*8)}.nd\\:py-12{padding-block:calc(var(--nd-spacing)*12)}.nd\\:pt-2{padding-top:calc(var(--nd-spacing)*2)}.nd\\:pr-2{padding-right:calc(var(--nd-spacing)*2)}.nd\\:pr-7{padding-right:calc(var(--nd-spacing)*7)}.nd\\:pb-1{padding-bottom:calc(var(--nd-spacing)*1)}.nd\\:pb-8{padding-bottom:calc(var(--nd-spacing)*8)}.nd\\:pl-5\\.5{padding-left:calc(var(--nd-spacing)*5.5)}.nd\\:pl-6{padding-left:calc(var(--nd-spacing)*6)}.nd\\:pl-8{padding-left:calc(var(--nd-spacing)*8)}.nd\\:text-center{text-align:center}.nd\\:text-left{text-align:left}.nd\\:text-right{text-align:right}.nd\\:text-base{font-size:var(--nd-text-base);line-height:var(--nd-tw-leading,var(--nd-text-base--line-height))}.nd\\:text-lg{font-size:var(--nd-text-lg);line-height:var(--nd-tw-leading,var(--nd-text-lg--line-height))}.nd\\:text-sm{font-size:var(--nd-text-sm);line-height:var(--nd-tw-leading,var(--nd-text-sm--line-height))}.nd\\:text-xs{font-size:var(--nd-text-xs);line-height:var(--nd-tw-leading,var(--nd-text-xs--line-height))}.nd\\:text-\\[10px\\]{font-size:10px}.nd\\:text-\\[11px\\]{font-size:11px}.nd\\:leading-none{--nd-tw-leading:1;line-height:1}.nd\\:leading-tight{--nd-tw-leading:var(--nd-leading-tight);line-height:var(--nd-leading-tight)}.nd\\:font-medium{--nd-tw-font-weight:var(--nd-font-weight-medium);font-weight:var(--nd-font-weight-medium)}.nd\\:font-normal{--nd-tw-font-weight:var(--nd-font-weight-normal);font-weight:var(--nd-font-weight-normal)}.nd\\:font-semibold{--nd-tw-font-weight:var(--nd-font-weight-semibold);font-weight:var(--nd-font-weight-semibold)}.nd\\:tracking-tight{--nd-tw-tracking:var(--nd-tracking-tight);letter-spacing:var(--nd-tracking-tight)}.nd\\:tracking-wide{--nd-tw-tracking:var(--nd-tracking-wide);letter-spacing:var(--nd-tracking-wide)}.nd\\:tracking-widest{--nd-tw-tracking:var(--nd-tracking-widest);letter-spacing:var(--nd-tracking-widest)}.nd\\:text-balance{text-wrap:balance}.nd\\:break-words{overflow-wrap:break-word}.nd\\:whitespace-nowrap{white-space:nowrap}.nd\\:whitespace-pre-wrap{white-space:pre-wrap}.nd\\:text-amber-500{color:var(--nd-color-amber-500)}.nd\\:text-amber-600{color:var(--nd-color-amber-600)}.nd\\:text-background{color:var(--nd-background)}.nd\\:text-blue-500{color:var(--nd-color-blue-500)}.nd\\:text-blue-600{color:var(--nd-color-blue-600)}.nd\\:text-card-foreground{color:var(--nd-card-foreground)}.nd\\:text-destructive{color:var(--nd-destructive)}.nd\\:text-emerald-500{color:var(--nd-color-emerald-500)}.nd\\:text-emerald-600{color:var(--nd-color-emerald-600)}.nd\\:text-foreground{color:var(--nd-foreground)}.nd\\:text-gray-400{color:var(--nd-color-gray-400)}.nd\\:text-green-500{color:var(--nd-color-green-500)}.nd\\:text-muted-foreground{color:var(--nd-muted-foreground)}.nd\\:text-muted-foreground\\/50{color:var(--nd-muted-foreground);@supports (color:color-mix(in lab,red,red)){color:color-mix(in oklab,var(--nd-muted-foreground) 50%,transparent)}}.nd\\:text-muted-foreground\\/60{color:var(--nd-muted-foreground);@supports (color:color-mix(in lab,red,red)){color:color-mix(in oklab,var(--nd-muted-foreground) 60%,transparent)}}.nd\\:text-muted-foreground\\/70{color:var(--nd-muted-foreground);@supports (color:color-mix(in lab,red,red)){color:color-mix(in oklab,var(--nd-muted-foreground) 70%,transparent)}}.nd\\:text-orange-500{color:var(--nd-color-orange-500)}.nd\\:text-popover-foreground{color:var(--nd-popover-foreground)}.nd\\:text-primary{color:var(--nd-primary)}.nd\\:text-primary-foreground{color:var(--nd-primary-foreground)}.nd\\:text-purple-500{color:var(--nd-color-purple-500)}.nd\\:text-red-500{color:var(--nd-color-red-500)}.nd\\:text-secondary-foreground{color:var(--nd-secondary-foreground)}.nd\\:text-slate-500{color:var(--nd-color-slate-500)}.nd\\:text-white{color:var(--nd-color-white)}.nd\\:text-yellow-500{color:var(--nd-color-yellow-500)}.nd\\:text-yellow-600{color:var(--nd-color-yellow-600)}.nd\\:uppercase{text-transform:uppercase}.nd\\:tabular-nums{--nd-tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--nd-tw-ordinal,) var(--nd-tw-slashed-zero,) var(--nd-tw-numeric-figure,) var(--nd-tw-numeric-spacing,) var(--nd-tw-numeric-fraction,)}.nd\\:underline-offset-4{text-underline-offset:4px}.nd\\:opacity-50{opacity:50%}.nd\\:opacity-60{opacity:60%}.nd\\:opacity-70{opacity:70%}.nd\\:shadow{--nd-tw-shadow:0 1px 3px 0 var(--nd-tw-shadow-color,rgba(0,0,0,.1)),0 1px 2px -1px var(--nd-tw-shadow-color,rgba(0,0,0,.1))}.nd\\:shadow,.nd\\:shadow-2xl{box-shadow:var(--nd-tw-inset-shadow),var(--nd-tw-inset-ring-shadow),var(--nd-tw-ring-offset-shadow),var(--nd-tw-ring-shadow),var(--nd-tw-shadow)}.nd\\:shadow-2xl{--nd-tw-shadow:0 25px 50px -12px var(--nd-tw-shadow-color,rgba(0,0,0,.25))}.nd\\:shadow-lg{--nd-tw-shadow:0 10px 15px -3px var(--nd-tw-shadow-color,rgba(0,0,0,.1)),0 4px 6px -4px var(--nd-tw-shadow-color,rgba(0,0,0,.1))}.nd\\:shadow-lg,.nd\\:shadow-md{box-shadow:var(--nd-tw-inset-shadow),var(--nd-tw-inset-ring-shadow),var(--nd-tw-ring-offset-shadow),var(--nd-tw-ring-shadow),var(--nd-tw-shadow)}.nd\\:shadow-md{--nd-tw-shadow:0 4px 6px -1px var(--nd-tw-shadow-color,rgba(0,0,0,.1)),0 2px 4px -2px var(--nd-tw-shadow-color,rgba(0,0,0,.1))}.nd\\:shadow-sm{--nd-tw-shadow:0 1px 3px 0 var(--nd-tw-shadow-color,rgba(0,0,0,.1)),0 1px 2px -1px var(--nd-tw-shadow-color,rgba(0,0,0,.1))}.nd\\:shadow-sm,.nd\\:shadow-xs{box-shadow:var(--nd-tw-inset-shadow),var(--nd-tw-inset-ring-shadow),var(--nd-tw-ring-offset-shadow),var(--nd-tw-ring-shadow),var(--nd-tw-shadow)}.nd\\:shadow-xs{--nd-tw-shadow:0 1px 2px 0 var(--nd-tw-shadow-color,rgba(0,0,0,.05))}.nd\\:ring-2{--nd-tw-ring-shadow:var(--nd-tw-ring-inset,) 0 0 0 calc(2px + var(--nd-tw-ring-offset-width)) var(--nd-tw-ring-color,currentcolor);box-shadow:var(--nd-tw-inset-shadow),var(--nd-tw-inset-ring-shadow),var(--nd-tw-ring-offset-shadow),var(--nd-tw-ring-shadow),var(--nd-tw-shadow)}.nd\\:ring-primary{--nd-tw-ring-color:var(--nd-primary)}.nd\\:ring-offset-background{--nd-tw-ring-offset-color:var(--nd-background)}.nd\\:backdrop-blur-sm{--nd-tw-backdrop-blur:blur(var(--nd-blur-sm));-webkit-backdrop-filter:var(--nd-tw-backdrop-blur,) var(--nd-tw-backdrop-brightness,) var(--nd-tw-backdrop-contrast,) var(--nd-tw-backdrop-grayscale,) var(--nd-tw-backdrop-hue-rotate,) var(--nd-tw-backdrop-invert,) var(--nd-tw-backdrop-opacity,) var(--nd-tw-backdrop-saturate,) var(--nd-tw-backdrop-sepia,);backdrop-filter:var(--nd-tw-backdrop-blur,) var(--nd-tw-backdrop-brightness,) var(--nd-tw-backdrop-contrast,) var(--nd-tw-backdrop-grayscale,) var(--nd-tw-backdrop-hue-rotate,) var(--nd-tw-backdrop-invert,) var(--nd-tw-backdrop-opacity,) var(--nd-tw-backdrop-saturate,) var(--nd-tw-backdrop-sepia,)}.nd\\:transition{transition-duration:var(--nd-tw-duration,var(--nd-default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--nd-tw-gradient-from,--nd-tw-gradient-via,--nd-tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--nd-tw-ease,var(--nd-default-transition-timing-function))}.nd\\:transition-\\[color\\,box-shadow\\]{transition-duration:var(--nd-tw-duration,var(--nd-default-transition-duration));transition-property:color,box-shadow;transition-timing-function:var(--nd-tw-ease,var(--nd-default-transition-timing-function))}.nd\\:transition-all{transition-duration:var(--nd-tw-duration,var(--nd-default-transition-duration));transition-property:all;transition-timing-function:var(--nd-tw-ease,var(--nd-default-transition-timing-function))}.nd\\:transition-colors{transition-duration:var(--nd-tw-duration,var(--nd-default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--nd-tw-gradient-from,--nd-tw-gradient-via,--nd-tw-gradient-to;transition-timing-function:var(--nd-tw-ease,var(--nd-default-transition-timing-function))}.nd\\:transition-opacity{transition-duration:var(--nd-tw-duration,var(--nd-default-transition-duration));transition-property:opacity;transition-timing-function:var(--nd-tw-ease,var(--nd-default-transition-timing-function))}.nd\\:transition-transform{transition-duration:var(--nd-tw-duration,var(--nd-default-transition-duration));transition-property:transform,translate,scale,rotate;transition-timing-function:var(--nd-tw-ease,var(--nd-default-transition-timing-function))}.nd\\:duration-200{--nd-tw-duration:200ms;transition-duration:.2s}.nd\\:duration-300{--nd-tw-duration:300ms;transition-duration:.3s}.nd\\:duration-500{--nd-tw-duration:500ms;transition-duration:.5s}.nd\\:ease-in-out{--nd-tw-ease:var(--nd-ease-in-out);transition-timing-function:var(--nd-ease-in-out)}.nd\\:outline-none{--nd-tw-outline-style:none;outline-style:none}.nd\\:select-none{-webkit-user-select:none;user-select:none}.nd\\:hover\\:scale-110{&:hover{@media (hover:hover){--nd-tw-scale-x:110%;--nd-tw-scale-y:110%;--nd-tw-scale-z:110%;scale:var(--nd-tw-scale-x) var(--nd-tw-scale-y)}}}.nd\\:hover\\:border-border{&:hover{@media (hover:hover){border-color:var(--nd-border)}}}.nd\\:hover\\:border-primary\\/50{&:hover{@media (hover:hover){border-color:var(--nd-primary);@supports (color:color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--nd-primary) 50%,transparent)}}}}.nd\\:hover\\:bg-accent{&:hover{@media (hover:hover){background-color:var(--nd-accent)}}}.nd\\:hover\\:bg-accent\\/50{&:hover{@media (hover:hover){background-color:var(--nd-accent);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-accent) 50%,transparent)}}}}.nd\\:hover\\:bg-background{&:hover{@media (hover:hover){background-color:var(--nd-background)}}}.nd\\:hover\\:bg-destructive\\/15{&:hover{@media (hover:hover){background-color:var(--nd-destructive);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-destructive) 15%,transparent)}}}}.nd\\:hover\\:bg-destructive\\/90{&:hover{@media (hover:hover){background-color:var(--nd-destructive);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-destructive) 90%,transparent)}}}}.nd\\:hover\\:bg-muted{&:hover{@media (hover:hover){background-color:var(--nd-muted)}}}.nd\\:hover\\:bg-muted\\/20{&:hover{@media (hover:hover){background-color:var(--nd-muted);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-muted) 20%,transparent)}}}}.nd\\:hover\\:bg-muted\\/50{&:hover{@media (hover:hover){background-color:var(--nd-muted);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-muted) 50%,transparent)}}}}.nd\\:hover\\:bg-primary\\/15{&:hover{@media (hover:hover){background-color:var(--nd-primary);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-primary) 15%,transparent)}}}}.nd\\:hover\\:bg-primary\\/90{&:hover{@media (hover:hover){background-color:var(--nd-primary);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-primary) 90%,transparent)}}}}.nd\\:hover\\:bg-secondary\\/80{&:hover{@media (hover:hover){background-color:var(--nd-secondary);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-secondary) 80%,transparent)}}}}.nd\\:hover\\:text-accent-foreground{&:hover{@media (hover:hover){color:var(--nd-accent-foreground)}}}.nd\\:hover\\:text-destructive{&:hover{@media (hover:hover){color:var(--nd-destructive)}}}.nd\\:hover\\:text-foreground{&:hover{@media (hover:hover){color:var(--nd-foreground)}}}.nd\\:hover\\:underline{&:hover{@media (hover:hover){text-decoration-line:underline}}}.nd\\:hover\\:opacity-100{&:hover{@media (hover:hover){opacity:100%}}}.nd\\:hover\\:shadow-sm{&:hover{@media (hover:hover){--nd-tw-shadow:0 1px 3px 0 var(--nd-tw-shadow-color,rgba(0,0,0,.1)),0 1px 2px -1px var(--nd-tw-shadow-color,rgba(0,0,0,.1));box-shadow:var(--nd-tw-inset-shadow),var(--nd-tw-inset-ring-shadow),var(--nd-tw-ring-offset-shadow),var(--nd-tw-ring-shadow),var(--nd-tw-shadow)}}}.nd\\:focus\\:bg-accent{&:focus{background-color:var(--nd-accent)}}.nd\\:focus\\:text-accent-foreground{&:focus{color:var(--nd-accent-foreground)}}.nd\\:focus\\:text-destructive{&:focus{color:var(--nd-destructive)}}.nd\\:focus\\:ring-2{&:focus{--nd-tw-ring-shadow:var(--nd-tw-ring-inset,) 0 0 0 calc(2px + var(--nd-tw-ring-offset-width)) var(--nd-tw-ring-color,currentcolor);box-shadow:var(--nd-tw-inset-shadow),var(--nd-tw-inset-ring-shadow),var(--nd-tw-ring-offset-shadow),var(--nd-tw-ring-shadow),var(--nd-tw-shadow)}}.nd\\:focus\\:ring-primary{&:focus{--nd-tw-ring-color:var(--nd-primary)}}.nd\\:focus\\:ring-ring{&:focus{--nd-tw-ring-color:var(--nd-ring)}}.nd\\:focus\\:ring-offset-2{&:focus{--nd-tw-ring-offset-width:2px;--nd-tw-ring-offset-shadow:var(--nd-tw-ring-inset,) 0 0 0 var(--nd-tw-ring-offset-width) var(--nd-tw-ring-offset-color)}}.nd\\:focus\\:outline-hidden{&:focus{--nd-tw-outline-style:none;outline-style:none;@media (forced-colors:active){outline:2px solid transparent;outline-offset:2px}}}.nd\\:focus\\:outline-none{&:focus{--nd-tw-outline-style:none;outline-style:none}}.nd\\:focus-visible\\:border-ring{&:focus-visible{border-color:var(--nd-ring)}}.nd\\:focus-visible\\:ring-2{&:focus-visible{--nd-tw-ring-shadow:var(--nd-tw-ring-inset,) 0 0 0 calc(2px + var(--nd-tw-ring-offset-width)) var(--nd-tw-ring-color,currentcolor);box-shadow:var(--nd-tw-inset-shadow),var(--nd-tw-inset-ring-shadow),var(--nd-tw-ring-offset-shadow),var(--nd-tw-ring-shadow),var(--nd-tw-shadow)}}.nd\\:focus-visible\\:ring-\\[3px\\]{&:focus-visible{--nd-tw-ring-shadow:var(--nd-tw-ring-inset,) 0 0 0 calc(3px + var(--nd-tw-ring-offset-width)) var(--nd-tw-ring-color,currentcolor);box-shadow:var(--nd-tw-inset-shadow),var(--nd-tw-inset-ring-shadow),var(--nd-tw-ring-offset-shadow),var(--nd-tw-ring-shadow),var(--nd-tw-shadow)}}.nd\\:focus-visible\\:ring-destructive\\/20{&:focus-visible{--nd-tw-ring-color:var(--nd-destructive);@supports (color:color-mix(in lab,red,red)){--nd-tw-ring-color:color-mix(in oklab,var(--nd-destructive) 20%,transparent)}}}.nd\\:focus-visible\\:ring-primary{&:focus-visible{--nd-tw-ring-color:var(--nd-primary)}}.nd\\:focus-visible\\:ring-ring\\/50{&:focus-visible{--nd-tw-ring-color:var(--nd-ring);@supports (color:color-mix(in lab,red,red)){--nd-tw-ring-color:color-mix(in oklab,var(--nd-ring) 50%,transparent)}}}.nd\\:disabled\\:pointer-events-none{&:disabled{pointer-events:none}}.nd\\:disabled\\:cursor-not-allowed{&:disabled{cursor:not-allowed}}.nd\\:disabled\\:opacity-50{&:disabled{opacity:50%}}.nd\\:has-\\[\\>svg\\]\\:grid-cols-\\[calc\\(var\\(--spacing\\)\\*4\\)_1fr\\]{&:has(>svg){grid-template-columns:calc(var(--spacing)*4) 1fr}}.nd\\:has-\\[\\>svg\\]\\:gap-x-3{&:has(>svg){column-gap:calc(var(--nd-spacing)*3)}}.nd\\:has-\\[\\>svg\\]\\:px-2\\.5{&:has(>svg){padding-inline:calc(var(--nd-spacing)*2.5)}}.nd\\:has-\\[\\>svg\\]\\:px-3{&:has(>svg){padding-inline:calc(var(--nd-spacing)*3)}}.nd\\:has-\\[\\>svg\\]\\:px-4{&:has(>svg){padding-inline:calc(var(--nd-spacing)*4)}}.nd\\:data-\\[disabled\\]\\:pointer-events-none{&[data-disabled]{pointer-events:none}}.nd\\:data-\\[disabled\\]\\:opacity-50{&[data-disabled]{opacity:50%}}.nd\\:data-\\[orientation\\=horizontal\\]\\:h-px{&[data-orientation=horizontal]{height:1px}}.nd\\:data-\\[orientation\\=horizontal\\]\\:w-full{&[data-orientation=horizontal]{width:100%}}.nd\\:data-\\[orientation\\=vertical\\]\\:h-full{&[data-orientation=vertical]{height:100%}}.nd\\:data-\\[orientation\\=vertical\\]\\:w-px{&[data-orientation=vertical]{width:1px}}.nd\\:\\*\\:data-\\[slot\\=alert-description\\]\\:text-destructive\\/90{:is(&>*){&[data-slot=alert-description]{color:var(--nd-destructive);@supports (color:color-mix(in lab,red,red)){color:color-mix(in oklab,var(--nd-destructive) 90%,transparent)}}}}.nd\\:data-\\[state\\=closed\\]\\:duration-300{&[data-state=closed]{--nd-tw-duration:300ms;transition-duration:.3s}}.nd\\:data-\\[state\\=open\\]\\:bg-accent{&[data-state=open]{background-color:var(--nd-accent)}}.nd\\:data-\\[state\\=open\\]\\:bg-secondary{&[data-state=open]{background-color:var(--nd-secondary)}}.nd\\:data-\\[state\\=open\\]\\:text-accent-foreground{&[data-state=open]{color:var(--nd-accent-foreground)}}.nd\\:data-\\[state\\=open\\]\\:text-muted-foreground{&[data-state=open]{color:var(--nd-muted-foreground)}}.nd\\:data-\\[state\\=open\\]\\:duration-500{&[data-state=open]{--nd-tw-duration:500ms;transition-duration:.5s}}.nd\\:sm\\:top-2{@media (width >= 40rem){top:calc(var(--nd-spacing)*2)}}.nd\\:sm\\:right-2{@media (width >= 40rem){right:calc(var(--nd-spacing)*2)}}.nd\\:sm\\:bottom-2{@media (width >= 40rem){bottom:calc(var(--nd-spacing)*2)}}.nd\\:sm\\:mt-0{@media (width >= 40rem){margin-top:calc(var(--nd-spacing)*0)}}.nd\\:sm\\:mb-3{@media (width >= 40rem){margin-bottom:calc(var(--nd-spacing)*3)}}.nd\\:sm\\:inline{@media (width >= 40rem){display:inline}}.nd\\:sm\\:size-3\\.5{@media (width >= 40rem){height:calc(var(--nd-spacing)*3.5);width:calc(var(--nd-spacing)*3.5)}}.nd\\:sm\\:size-6{@media (width >= 40rem){height:calc(var(--nd-spacing)*6);width:calc(var(--nd-spacing)*6)}}.nd\\:sm\\:size-10{@media (width >= 40rem){height:calc(var(--nd-spacing)*10);width:calc(var(--nd-spacing)*10)}}.nd\\:sm\\:w-32{@media (width >= 40rem){width:calc(var(--nd-spacing)*32)}}.nd\\:sm\\:w-80{@media (width >= 40rem){width:calc(var(--nd-spacing)*80)}}.nd\\:sm\\:max-w-37\\.5{@media (width >= 40rem){max-width:calc(var(--nd-spacing)*37.5)}}.nd\\:sm\\:max-w-lg{@media (width >= 40rem){max-width:var(--nd-container-lg)}}.nd\\:sm\\:max-w-md{@media (width >= 40rem){max-width:var(--nd-container-md)}}.nd\\:sm\\:max-w-none{@media (width >= 40rem){max-width:none}}.nd\\:sm\\:max-w-sm{@media (width >= 40rem){max-width:var(--nd-container-sm)}}.nd\\:sm\\:max-w-xs{@media (width >= 40rem){max-width:var(--nd-container-xs)}}.nd\\:sm\\:min-w-50{@media (width >= 40rem){min-width:calc(var(--nd-spacing)*50)}}.nd\\:sm\\:grid-cols-3{@media (width >= 40rem){grid-template-columns:repeat(3,minmax(0,1fr))}}.nd\\:sm\\:grid-cols-4{@media (width >= 40rem){grid-template-columns:repeat(4,minmax(0,1fr))}}.nd\\:sm\\:flex-row{@media (width >= 40rem){flex-direction:row}}.nd\\:sm\\:justify-end{@media (width >= 40rem){justify-content:flex-end}}.nd\\:sm\\:gap-1\\.5{@media (width >= 40rem){gap:calc(var(--nd-spacing)*1.5)}}.nd\\:sm\\:gap-3{@media (width >= 40rem){gap:calc(var(--nd-spacing)*3)}}.nd\\:sm\\:space-y-6{@media (width >= 40rem){:where(&>:not(:last-child)){--nd-tw-space-y-reverse:0;margin-block-end:calc(var(--nd-spacing)*6*(1 - var(--nd-tw-space-y-reverse)));margin-block-start:calc(var(--nd-spacing)*6*var(--nd-tw-space-y-reverse))}}}.nd\\:sm\\:space-x-2{@media (width >= 40rem){:where(&>:not(:last-child)){--nd-tw-space-x-reverse:0;margin-inline-end:calc(var(--nd-spacing)*2*(1 - var(--nd-tw-space-x-reverse)));margin-inline-start:calc(var(--nd-spacing)*2*var(--nd-tw-space-x-reverse))}}}.nd\\:sm\\:rounded-lg{@media (width >= 40rem){border-radius:var(--nd-radius)}}.nd\\:sm\\:rounded-xl{@media (width >= 40rem){border-radius:calc(var(--nd-radius) + 4px)}}.nd\\:sm\\:p-2{@media (width >= 40rem){padding:calc(var(--nd-spacing)*2)}}.nd\\:sm\\:p-3{@media (width >= 40rem){padding:calc(var(--nd-spacing)*3)}}.nd\\:sm\\:px-2{@media (width >= 40rem){padding-inline:calc(var(--nd-spacing)*2)}}.nd\\:sm\\:px-4{@media (width >= 40rem){padding-inline:calc(var(--nd-spacing)*4)}}.nd\\:sm\\:pb-12{@media (width >= 40rem){padding-bottom:calc(var(--nd-spacing)*12)}}.nd\\:sm\\:text-left{@media (width >= 40rem){text-align:left}}.nd\\:sm\\:text-sm{@media (width >= 40rem){font-size:var(--nd-text-sm);line-height:var(--nd-tw-leading,var(--nd-text-sm--line-height))}}.nd\\:md\\:inset-auto{@media (width >= 48rem){inset:auto}}.nd\\:md\\:top-4{@media (width >= 48rem){top:calc(var(--nd-spacing)*4)}}.nd\\:md\\:top-\\[50\\%\\]{@media (width >= 48rem){top:50%}}.nd\\:md\\:right-4{@media (width >= 48rem){right:calc(var(--nd-spacing)*4)}}.nd\\:md\\:left-\\[50\\%\\]{@media (width >= 48rem){left:50%}}.nd\\:md\\:flex{@media (width >= 48rem){display:flex}}.nd\\:md\\:hidden{@media (width >= 48rem){display:none}}.nd\\:md\\:size-7{@media (width >= 48rem){height:calc(var(--nd-spacing)*7);width:calc(var(--nd-spacing)*7)}}.nd\\:md\\:size-12{@media (width >= 48rem){height:calc(var(--nd-spacing)*12);width:calc(var(--nd-spacing)*12)}}.nd\\:md\\:max-h-\\[90vh\\]{@media (width >= 48rem){max-height:90vh}}.nd\\:md\\:w-\\[95vw\\]{@media (width >= 48rem){width:95vw}}.nd\\:md\\:max-w-5xl{@media (width >= 48rem){max-width:var(--nd-container-5xl)}}.nd\\:md\\:translate-x-\\[-50\\%\\]{@media (width >= 48rem){--nd-tw-translate-x:-50%;translate:var(--nd-tw-translate-x) var(--nd-tw-translate-y)}}.nd\\:md\\:translate-y-\\[-50\\%\\]{@media (width >= 48rem){--nd-tw-translate-y:-50%;translate:var(--nd-tw-translate-x) var(--nd-tw-translate-y)}}.nd\\:md\\:grid-cols-4{@media (width >= 48rem){grid-template-columns:repeat(4,minmax(0,1fr))}}.nd\\:md\\:grid-cols-5{@media (width >= 48rem){grid-template-columns:repeat(5,minmax(0,1fr))}}.nd\\:md\\:flex-row{@media (width >= 48rem){flex-direction:row}}.nd\\:md\\:gap-4{@media (width >= 48rem){gap:calc(var(--nd-spacing)*4)}}.nd\\:md\\:rounded-md{@media (width >= 48rem){border-radius:calc(var(--nd-radius) - 2px)}}.nd\\:md\\:rounded-xl{@media (width >= 48rem){border-radius:calc(var(--nd-radius) + 4px)}}.nd\\:md\\:border{@media (width >= 48rem){border-bottom-width:1px;border-left-width:1px;border-right-width:1px;border-style:var(--nd-tw-border-style);border-top-width:1px}}.nd\\:md\\:bg-transparent{@media (width >= 48rem){background-color:transparent}}.nd\\:md\\:p-4{@media (width >= 48rem){padding:calc(var(--nd-spacing)*4)}}.nd\\:md\\:text-sm{@media (width >= 48rem){font-size:var(--nd-text-sm);line-height:var(--nd-tw-leading,var(--nd-text-sm--line-height))}}.nd\\:lg\\:flex{@media (width >= 64rem){display:flex}}.nd\\:lg\\:hidden{@media (width >= 64rem){display:none}}.nd\\:lg\\:w-56{@media (width >= 64rem){width:calc(var(--nd-spacing)*56)}}.nd\\:lg\\:grid-cols-5{@media (width >= 64rem){grid-template-columns:repeat(5,minmax(0,1fr))}}.nd\\:lg\\:grid-cols-6{@media (width >= 64rem){grid-template-columns:repeat(6,minmax(0,1fr))}}.nd\\:xl\\:grid-cols-6{@media (width >= 80rem){grid-template-columns:repeat(6,minmax(0,1fr))}}.nd\\:xl\\:grid-cols-7{@media (width >= 80rem){grid-template-columns:repeat(7,minmax(0,1fr))}}.nd\\:dark\\:border-input{&:is(.dark *){border-color:var(--nd-input)}}.nd\\:dark\\:bg-accent\\/20{&:is(.dark *){background-color:var(--nd-accent);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-accent) 20%,transparent)}}}.nd\\:dark\\:bg-background\\/30{&:is(.dark *){background-color:var(--nd-background);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-background) 30%,transparent)}}}.nd\\:dark\\:bg-background\\/80{&:is(.dark *){background-color:var(--nd-background);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-background) 80%,transparent)}}}.nd\\:dark\\:bg-blue-500\\/20{&:is(.dark *){background-color:var(--nd-color-blue-500);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-color-blue-500) 20%,transparent)}}}.nd\\:dark\\:bg-card\\/50{&:is(.dark *){background-color:var(--nd-card);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-card) 50%,transparent)}}}.nd\\:dark\\:bg-destructive\\/15{&:is(.dark *){background-color:var(--nd-destructive);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-destructive) 15%,transparent)}}}.nd\\:dark\\:bg-emerald-500\\/20{&:is(.dark *){background-color:var(--nd-color-emerald-500);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-color-emerald-500) 20%,transparent)}}}.nd\\:dark\\:bg-input\\/30{&:is(.dark *){background-color:var(--nd-input);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-input) 30%,transparent)}}}.nd\\:dark\\:bg-muted\\/10{&:is(.dark *){background-color:var(--nd-muted);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-muted) 10%,transparent)}}}.nd\\:dark\\:bg-muted\\/20{&:is(.dark *){background-color:var(--nd-muted);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-muted) 20%,transparent)}}}.nd\\:dark\\:bg-muted\\/30{&:is(.dark *){background-color:var(--nd-muted);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-muted) 30%,transparent)}}}.nd\\:dark\\:bg-primary\\/10{&:is(.dark *){background-color:var(--nd-primary);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-primary) 10%,transparent)}}}.nd\\:dark\\:bg-primary\\/15{&:is(.dark *){background-color:var(--nd-primary);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-primary) 15%,transparent)}}}.nd\\:dark\\:text-amber-500{&:is(.dark *){color:var(--nd-color-amber-500)}}.nd\\:dark\\:text-blue-400{&:is(.dark *){color:var(--nd-color-blue-400)}}.nd\\:dark\\:text-emerald-400{&:is(.dark *){color:var(--nd-color-emerald-400)}}.nd\\:dark\\:text-yellow-500{&:is(.dark *){color:var(--nd-color-yellow-500)}}.nd\\:dark\\:hover\\:bg-accent\\/30{&:is(.dark *){&:hover{@media (hover:hover){background-color:var(--nd-accent);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-accent) 30%,transparent)}}}}}.nd\\:dark\\:hover\\:bg-accent\\/50{&:is(.dark *){&:hover{@media (hover:hover){background-color:var(--nd-accent);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-accent) 50%,transparent)}}}}}.nd\\:dark\\:hover\\:bg-input\\/50{&:is(.dark *){&:hover{@media (hover:hover){background-color:var(--nd-input);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-input) 50%,transparent)}}}}}.nd\\:dark\\:hover\\:bg-muted\\/30{&:is(.dark *){&:hover{@media (hover:hover){background-color:var(--nd-muted);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-muted) 30%,transparent)}}}}}.nd\\:dark\\:hover\\:bg-primary\\/20{&:is(.dark *){&:hover{@media (hover:hover){background-color:var(--nd-primary);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-primary) 20%,transparent)}}}}}.nd\\:\\[\\&_p\\]\\:leading-relaxed{& p{--nd-tw-leading:var(--nd-leading-relaxed);line-height:var(--nd-leading-relaxed)}}.nd\\:\\[\\&\\>svg\\]\\:size-4{&>svg{height:calc(var(--nd-spacing)*4);width:calc(var(--nd-spacing)*4)}}.nd\\:\\[\\&\\>svg\\]\\:translate-y-0\\.5{&>svg{--nd-tw-translate-y:calc(var(--nd-spacing)*0.5);translate:var(--nd-tw-translate-x) var(--nd-tw-translate-y)}}.nd\\:\\[\\&\\>svg\\]\\:text-current{&>svg{color:currentcolor}}:host,:root{--nd-color-red-500:oklch(63.7% 0.237 25.331);--nd-color-orange-500:oklch(70.5% 0.213 47.604);--nd-color-amber-500:oklch(76.9% 0.188 70.08);--nd-color-amber-600:oklch(66.6% 0.179 58.318);--nd-color-yellow-500:oklch(79.5% 0.184 86.047);--nd-color-yellow-600:oklch(68.1% 0.162 75.834);--nd-color-green-500:oklch(72.3% 0.219 149.579);--nd-color-emerald-400:oklch(76.5% 0.177 163.223);--nd-color-emerald-500:oklch(69.6% 0.17 162.48);--nd-color-emerald-600:oklch(59.6% 0.145 163.225);--nd-color-cyan-500:oklch(71.5% 0.143 215.221);--nd-color-blue-400:oklch(70.7% 0.165 254.624);--nd-color-blue-500:oklch(62.3% 0.214 259.815);--nd-color-blue-600:oklch(54.6% 0.245 262.881);--nd-color-purple-500:oklch(62.7% 0.265 303.9);--nd-color-slate-500:oklch(55.4% 0.046 257.417);--nd-color-gray-400:oklch(70.7% 0.022 261.325);--nd-color-black:#000;--nd-color-white:#fff;--nd-spacing:0.25rem;--nd-container-xs:20rem;--nd-container-sm:24rem;--nd-container-md:28rem;--nd-container-lg:32rem;--nd-container-5xl:64rem;--nd-text-xs:0.75rem;--nd-text-xs--line-height:1.33333;--nd-text-sm:0.875rem;--nd-text-sm--line-height:1.42857;--nd-text-base:1rem;--nd-text-base--line-height:1.5;--nd-text-lg:1.125rem;--nd-text-lg--line-height:1.55556;--nd-font-weight-normal:400;--nd-font-weight-medium:500;--nd-font-weight-semibold:600;--nd-tracking-tight:-0.025em;--nd-tracking-wide:0.025em;--nd-tracking-widest:0.1em;--nd-leading-tight:1.25;--nd-leading-relaxed:1.625;--nd-radius-xs:0.125rem;--nd-ease-in-out:cubic-bezier(0.4,0,0.2,1);--nd-animate-spin:nd-spin 1s linear infinite;--nd-blur-sm:8px;--nd-default-transition-duration:150ms;--nd-default-transition-timing-function:cubic-bezier(0.4,0,0.2,1)}.nd-drive-root{--nd-card:oklch(1 0 0);--nd-card-foreground:oklch(0.145 0 0);--nd-popover:oklch(1 0 0);--nd-popover-foreground:oklch(0.145 0 0);--nd-primary:oklch(0.205 0 0);--nd-primary-foreground:oklch(0.985 0 0);--nd-secondary:oklch(0.97 0 0);--nd-secondary-foreground:oklch(0.205 0 0);--nd-muted:oklch(0.97 0 0);--nd-muted-foreground:oklch(0.556 0 0);--nd-accent:oklch(0.97 0 0);--nd-accent-foreground:oklch(0.205 0 0);--nd-destructive:oklch(0.577 0.245 27.325);--nd-destructive-foreground:210 40% 98%;--nd-border:oklch(0.922 0 0);--nd-input:oklch(0.922 0 0);--nd-ring:oklch(0.708 0 0);--nd-radius:0.625rem;--nd-background:oklch(1 0 0);--nd-foreground:oklch(0.145 0 0);--nd-chart-1:oklch(0.646 0.222 41.116);--nd-chart-2:oklch(0.6 0.118 184.704);--nd-chart-3:oklch(0.398 0.07 227.392);--nd-chart-4:oklch(0.828 0.189 84.429);--nd-chart-5:oklch(0.769 0.188 70.08);--nd-sidebar:oklch(0.985 0 0);--nd-sidebar-foreground:oklch(0.145 0 0);--nd-sidebar-primary:oklch(0.205 0 0);--nd-sidebar-primary-foreground:oklch(0.985 0 0);--nd-sidebar-accent:oklch(0.97 0 0);--nd-sidebar-accent-foreground:oklch(0.205 0 0);--nd-sidebar-border:oklch(0.922 0 0);--nd-sidebar-ring:oklch(0.708 0 0)}.dark .nd-drive-root{--nd-background:oklch(0.145 0 0);--nd-foreground:oklch(0.985 0 0);--nd-card:oklch(0.205 0 0);--nd-card-foreground:oklch(0.985 0 0);--nd-popover:oklch(0.205 0 0);--nd-popover-foreground:oklch(0.985 0 0);--nd-primary:oklch(0.922 0 0);--nd-primary-foreground:oklch(0.205 0 0);--nd-secondary:oklch(0.269 0 0);--nd-secondary-foreground:oklch(0.985 0 0);--nd-muted:oklch(0.269 0 0);--nd-muted-foreground:oklch(0.708 0 0);--nd-accent:oklch(0.269 0 0);--nd-accent-foreground:oklch(0.985 0 0);--nd-destructive:oklch(0.704 0.191 22.216);--nd-destructive-foreground:210 40% 98%;--nd-border:oklch(1 0 0/10%);--nd-input:oklch(1 0 0/15%);--nd-ring:oklch(0.556 0 0);--nd-chart-1:oklch(0.488 0.243 264.376);--nd-chart-2:oklch(0.696 0.17 162.48);--nd-chart-3:oklch(0.769 0.188 70.08);--nd-chart-4:oklch(0.627 0.265 303.9);--nd-chart-5:oklch(0.645 0.246 16.439);--nd-sidebar:oklch(0.205 0 0);--nd-sidebar-foreground:oklch(0.985 0 0);--nd-sidebar-primary:oklch(0.488 0.243 264.376);--nd-sidebar-primary-foreground:oklch(0.985 0 0);--nd-sidebar-accent:oklch(0.269 0 0);--nd-sidebar-accent-foreground:oklch(0.985 0 0);--nd-sidebar-border:oklch(1 0 0/10%);--nd-sidebar-ring:oklch(0.556 0 0)}@keyframes nd-indeterminate{0%{transform:translateX(-100%)}50%{transform:translateX(200%)}to{transform:translateX(-100%)}}@keyframes nd-spin{to{transform:rotate(1turn)}}@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){.nd-drive-root,.nd-drive-root *,.nd-drive-root ::backdrop,.nd-drive-root :after,.nd-drive-root :before{--nd-tw-translate-x:0;--nd-tw-translate-y:0;--nd-tw-translate-z:0;--nd-tw-scale-x:1;--nd-tw-scale-y:1;--nd-tw-scale-z:1;--nd-tw-space-y-reverse:0;--nd-tw-divide-y-reverse:0;--nd-tw-border-style:solid;--nd-tw-gradient-position:initial;--nd-tw-gradient-from:#0000;--nd-tw-gradient-via:#0000;--nd-tw-gradient-to:#0000;--nd-tw-gradient-stops:initial;--nd-tw-gradient-via-stops:initial;--nd-tw-gradient-from-position:0%;--nd-tw-gradient-via-position:50%;--nd-tw-gradient-to-position:100%;--nd-tw-leading:initial;--nd-tw-font-weight:initial;--nd-tw-tracking:initial;--nd-tw-ordinal:initial;--nd-tw-slashed-zero:initial;--nd-tw-numeric-figure:initial;--nd-tw-numeric-spacing:initial;--nd-tw-numeric-fraction:initial;--nd-tw-shadow:0 0 #0000;--nd-tw-shadow-color:initial;--nd-tw-shadow-alpha:100%;--nd-tw-inset-shadow:0 0 #0000;--nd-tw-inset-shadow-color:initial;--nd-tw-inset-shadow-alpha:100%;--nd-tw-ring-color:initial;--nd-tw-ring-shadow:0 0 #0000;--nd-tw-inset-ring-color:initial;--nd-tw-inset-ring-shadow:0 0 #0000;--nd-tw-ring-inset:initial;--nd-tw-ring-offset-width:0px;--nd-tw-ring-offset-color:#fff;--nd-tw-ring-offset-shadow:0 0 #0000;--nd-tw-backdrop-blur:initial;--nd-tw-backdrop-brightness:initial;--nd-tw-backdrop-contrast:initial;--nd-tw-backdrop-grayscale:initial;--nd-tw-backdrop-hue-rotate:initial;--nd-tw-backdrop-invert:initial;--nd-tw-backdrop-opacity:initial;--nd-tw-backdrop-saturate:initial;--nd-tw-backdrop-sepia:initial;--nd-tw-duration:initial;--nd-tw-ease:initial;--nd-tw-space-x-reverse:0}}";
|
|
618
|
+
var cssContent = ".nd-drive-root,.nd-drive-root *,.nd-drive-root ::backdrop,.nd-drive-root :after,.nd-drive-root :before{--nd-tw-translate-x:0;--nd-tw-translate-y:0;--nd-tw-translate-z:0;--nd-tw-scale-x:1;--nd-tw-scale-y:1;--nd-tw-scale-z:1;--nd-tw-space-y-reverse:0;--nd-tw-divide-y-reverse:0;--nd-tw-border-style:solid;--nd-tw-gradient-from:#0000;--nd-tw-gradient-via:#0000;--nd-tw-gradient-to:#0000;--nd-tw-gradient-from-position:0%;--nd-tw-gradient-via-position:50%;--nd-tw-gradient-to-position:100%;--nd-tw-shadow:0 0 #0000;--nd-tw-shadow-alpha:100%;--nd-tw-inset-shadow:0 0 #0000;--nd-tw-inset-shadow-alpha:100%;--nd-tw-ring-shadow:0 0 #0000;--nd-tw-inset-ring-shadow:0 0 #0000;--nd-tw-ring-offset-width:0px;--nd-tw-ring-offset-color:#fff;--nd-tw-ring-offset-shadow:0 0 #0000;--nd-tw-space-x-reverse:0}\n/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */.nd\\:pointer-events-none{pointer-events:none}.nd\\:sr-only{border-width:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;white-space:nowrap;width:1px}.nd\\:absolute,.nd\\:sr-only{position:absolute}.nd\\:fixed{position:fixed}.nd\\:relative{position:relative}.nd\\:sticky{position:sticky}.nd\\:inset-0{inset:calc(var(--nd-spacing)*0)}.nd\\:inset-x-0{inset-inline:calc(var(--nd-spacing)*0)}.nd\\:inset-y-0{inset-block:calc(var(--nd-spacing)*0)}.nd\\:-top-1\\.5{top:calc(var(--nd-spacing)*-1.5)}.nd\\:top-0{top:calc(var(--nd-spacing)*0)}.nd\\:top-1\\.5{top:calc(var(--nd-spacing)*1.5)}.nd\\:top-1\\/2{top:50%}.nd\\:top-3{top:calc(var(--nd-spacing)*3)}.nd\\:top-4{top:calc(var(--nd-spacing)*4)}.nd\\:top-\\[50\\%\\]{top:50%}.nd\\:-right-1\\.5{right:calc(var(--nd-spacing)*-1.5)}.nd\\:right-0{right:calc(var(--nd-spacing)*0)}.nd\\:right-0\\.5{right:calc(var(--nd-spacing)*.5)}.nd\\:right-1\\.5{right:calc(var(--nd-spacing)*1.5)}.nd\\:right-3{right:calc(var(--nd-spacing)*3)}.nd\\:right-4{right:calc(var(--nd-spacing)*4)}.nd\\:bottom-0{bottom:calc(var(--nd-spacing)*0)}.nd\\:bottom-1\\.5{bottom:calc(var(--nd-spacing)*1.5)}.nd\\:left-0{left:calc(var(--nd-spacing)*0)}.nd\\:left-2{left:calc(var(--nd-spacing)*2)}.nd\\:left-2\\.5{left:calc(var(--nd-spacing)*2.5)}.nd\\:left-\\[50\\%\\]{left:50%}.nd\\:z-10{z-index:10}.nd\\:z-50{z-index:50}.nd\\:col-start-2{grid-column-start:2}.nd\\:my-1{margin-block:calc(var(--nd-spacing)*1)}.nd\\:mt-0\\.5{margin-top:calc(var(--nd-spacing)*.5)}.nd\\:mt-1{margin-top:calc(var(--nd-spacing)*1)}.nd\\:mt-1\\.5{margin-top:calc(var(--nd-spacing)*1.5)}.nd\\:mt-2{margin-top:calc(var(--nd-spacing)*2)}.nd\\:mt-4{margin-top:calc(var(--nd-spacing)*4)}.nd\\:mr-2{margin-right:calc(var(--nd-spacing)*2)}.nd\\:mb-1\\.5{margin-bottom:calc(var(--nd-spacing)*1.5)}.nd\\:mb-2{margin-bottom:calc(var(--nd-spacing)*2)}.nd\\:mb-4{margin-bottom:calc(var(--nd-spacing)*4)}.nd\\:ml-5\\.5{margin-left:calc(var(--nd-spacing)*5.5)}.nd\\:ml-auto{margin-left:auto}.nd\\:line-clamp-1{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1}.nd\\:flex{display:flex}.nd\\:grid{display:grid}.nd\\:hidden{display:none}.nd\\:inline-flex{display:inline-flex}.nd\\:aspect-square{aspect-ratio:1/1}.nd\\:size-1\\.5{height:calc(var(--nd-spacing)*1.5);width:calc(var(--nd-spacing)*1.5)}.nd\\:size-2{height:calc(var(--nd-spacing)*2);width:calc(var(--nd-spacing)*2)}.nd\\:size-2\\.5{height:calc(var(--nd-spacing)*2.5);width:calc(var(--nd-spacing)*2.5)}.nd\\:size-3{height:calc(var(--nd-spacing)*3);width:calc(var(--nd-spacing)*3)}.nd\\:size-3\\.5{height:calc(var(--nd-spacing)*3.5);width:calc(var(--nd-spacing)*3.5)}.nd\\:size-4{height:calc(var(--nd-spacing)*4);width:calc(var(--nd-spacing)*4)}.nd\\:size-5{height:calc(var(--nd-spacing)*5);width:calc(var(--nd-spacing)*5)}.nd\\:size-6{height:calc(var(--nd-spacing)*6);width:calc(var(--nd-spacing)*6)}.nd\\:size-7{height:calc(var(--nd-spacing)*7);width:calc(var(--nd-spacing)*7)}.nd\\:size-8{height:calc(var(--nd-spacing)*8);width:calc(var(--nd-spacing)*8)}.nd\\:size-9{height:calc(var(--nd-spacing)*9);width:calc(var(--nd-spacing)*9)}.nd\\:size-10{height:calc(var(--nd-spacing)*10);width:calc(var(--nd-spacing)*10)}.nd\\:size-12{height:calc(var(--nd-spacing)*12);width:calc(var(--nd-spacing)*12)}.nd\\:size-16{height:calc(var(--nd-spacing)*16);width:calc(var(--nd-spacing)*16)}.nd\\:size-full{height:100%;width:100%}.nd\\:h-1{height:calc(var(--nd-spacing)*1)}.nd\\:h-1\\.5{height:calc(var(--nd-spacing)*1.5)}.nd\\:h-2{height:calc(var(--nd-spacing)*2)}.nd\\:h-3\\.5{height:calc(var(--nd-spacing)*3.5)}.nd\\:h-4{height:calc(var(--nd-spacing)*4)}.nd\\:h-5{height:calc(var(--nd-spacing)*5)}.nd\\:h-6{height:calc(var(--nd-spacing)*6)}.nd\\:h-7{height:calc(var(--nd-spacing)*7)}.nd\\:h-8{height:calc(var(--nd-spacing)*8)}.nd\\:h-9{height:calc(var(--nd-spacing)*9)}.nd\\:h-10{height:calc(var(--nd-spacing)*10)}.nd\\:h-11{height:calc(var(--nd-spacing)*11)}.nd\\:h-12{height:calc(var(--nd-spacing)*12)}.nd\\:h-14{height:calc(var(--nd-spacing)*14)}.nd\\:h-auto{height:auto}.nd\\:h-full{height:100%}.nd\\:h-px{height:1px}.nd\\:max-h-40{max-height:calc(var(--nd-spacing)*40)}.nd\\:max-h-80{max-height:calc(var(--nd-spacing)*80)}.nd\\:max-h-\\[85vh\\]{max-height:85vh}.nd\\:min-h-0{min-height:calc(var(--nd-spacing)*0)}.nd\\:min-h-4{min-height:calc(var(--nd-spacing)*4)}.nd\\:w-1\\/3{width:33.33333%}.nd\\:w-2{width:calc(var(--nd-spacing)*2)}.nd\\:w-3\\.5{width:calc(var(--nd-spacing)*3.5)}.nd\\:w-3\\/4{width:75%}.nd\\:w-4{width:calc(var(--nd-spacing)*4)}.nd\\:w-6{width:calc(var(--nd-spacing)*6)}.nd\\:w-7{width:calc(var(--nd-spacing)*7)}.nd\\:w-8{width:calc(var(--nd-spacing)*8)}.nd\\:w-16{width:calc(var(--nd-spacing)*16)}.nd\\:w-24{width:calc(var(--nd-spacing)*24)}.nd\\:w-40{width:calc(var(--nd-spacing)*40)}.nd\\:w-52{width:calc(var(--nd-spacing)*52)}.nd\\:w-56{width:calc(var(--nd-spacing)*56)}.nd\\:w-70{width:calc(var(--nd-spacing)*70)}.nd\\:w-72{width:calc(var(--nd-spacing)*72)}.nd\\:w-fit{width:fit-content}.nd\\:w-full{width:100%}.nd\\:w-px{width:1px}.nd\\:max-w-24{max-width:calc(var(--nd-spacing)*24)}.nd\\:max-w-25{max-width:calc(var(--nd-spacing)*25)}.nd\\:max-w-30{max-width:calc(var(--nd-spacing)*30)}.nd\\:max-w-\\[calc\\(100\\%-2rem\\)\\]{max-width:calc(100% - 2rem)}.nd\\:max-w-lg{max-width:var(--nd-container-lg)}.nd\\:min-w-0{min-width:calc(var(--nd-spacing)*0)}.nd\\:min-w-\\[8rem\\]{min-width:8rem}.nd\\:flex-1{flex:1}.nd\\:shrink-0{flex-shrink:0}.nd\\:origin-\\(--radix-tooltip-content-transform-origin\\){transform-origin:var(--radix-tooltip-content-transform-origin)}.nd\\:translate-x-\\[-50\\%\\]{--nd-tw-translate-x:-50%;translate:var(--nd-tw-translate-x) var(--nd-tw-translate-y)}.nd\\:-translate-y-1\\/2,.nd\\:translate-y-\\[-50\\%\\]{--nd-tw-translate-y:-50%;translate:var(--nd-tw-translate-x) var(--nd-tw-translate-y)}.nd\\:translate-y-\\[calc\\(-50\\%_-_2px\\)\\]{--nd-tw-translate-y:calc(-50% - 2px);translate:var(--nd-tw-translate-x) var(--nd-tw-translate-y)}.nd\\:scale-105{--nd-tw-scale-x:105%;--nd-tw-scale-y:105%;--nd-tw-scale-z:105%;scale:var(--nd-tw-scale-x) var(--nd-tw-scale-y)}.nd\\:scale-\\[1\\.02\\]{scale:1.02}.nd\\:rotate-45{rotate:45deg}.nd\\:animate-\\[indeterminate_1\\.5s_ease-in-out_infinite\\]{animation:indeterminate 1.5s ease-in-out infinite}.nd\\:animate-spin{animation:var(--nd-animate-spin)}.nd\\:cursor-default{cursor:default}.nd\\:cursor-pointer{cursor:pointer}.nd\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.nd\\:grid-cols-\\[0_1fr\\]{grid-template-columns:0 1fr}.nd\\:flex-col{flex-direction:column}.nd\\:flex-col-reverse{flex-direction:column-reverse}.nd\\:flex-row{flex-direction:row}.nd\\:flex-nowrap{flex-wrap:nowrap}.nd\\:flex-wrap{flex-wrap:wrap}.nd\\:items-center{align-items:center}.nd\\:items-start{align-items:flex-start}.nd\\:justify-between{justify-content:space-between}.nd\\:justify-center{justify-content:center}.nd\\:justify-end{justify-content:flex-end}.nd\\:justify-start{justify-content:flex-start}.nd\\:justify-items-start{justify-items:start}.nd\\:gap-0{gap:calc(var(--nd-spacing)*0)}.nd\\:gap-0\\.5{gap:calc(var(--nd-spacing)*.5)}.nd\\:gap-1{gap:calc(var(--nd-spacing)*1)}.nd\\:gap-1\\.5{gap:calc(var(--nd-spacing)*1.5)}.nd\\:gap-2{gap:calc(var(--nd-spacing)*2)}.nd\\:gap-2\\.5{gap:calc(var(--nd-spacing)*2.5)}.nd\\:gap-3{gap:calc(var(--nd-spacing)*3)}.nd\\:gap-4{gap:calc(var(--nd-spacing)*4)}.nd\\:space-y-0{:where(&>:not(:last-child)){--nd-tw-space-y-reverse:0;margin-block-end:calc(var(--nd-spacing)*0*(1 - var(--nd-tw-space-y-reverse)));margin-block-start:calc(var(--nd-spacing)*0*var(--nd-tw-space-y-reverse))}}.nd\\:space-y-0\\.5{:where(&>:not(:last-child)){--nd-tw-space-y-reverse:0;margin-block-end:calc(var(--nd-spacing)*.5*(1 - var(--nd-tw-space-y-reverse)));margin-block-start:calc(var(--nd-spacing)*.5*var(--nd-tw-space-y-reverse))}}.nd\\:space-y-1{:where(&>:not(:last-child)){--nd-tw-space-y-reverse:0;margin-block-end:calc(var(--nd-spacing)*1*(1 - var(--nd-tw-space-y-reverse)));margin-block-start:calc(var(--nd-spacing)*1*var(--nd-tw-space-y-reverse))}}.nd\\:space-y-2{:where(&>:not(:last-child)){--nd-tw-space-y-reverse:0;margin-block-end:calc(var(--nd-spacing)*2*(1 - var(--nd-tw-space-y-reverse)));margin-block-start:calc(var(--nd-spacing)*2*var(--nd-tw-space-y-reverse))}}.nd\\:space-y-4{:where(&>:not(:last-child)){--nd-tw-space-y-reverse:0;margin-block-end:calc(var(--nd-spacing)*4*(1 - var(--nd-tw-space-y-reverse)));margin-block-start:calc(var(--nd-spacing)*4*var(--nd-tw-space-y-reverse))}}.nd\\:gap-y-0\\.5{row-gap:calc(var(--nd-spacing)*.5)}.nd\\:divide-y{:where(&>:not(:last-child)){--nd-tw-divide-y-reverse:0;border-bottom-style:var(--nd-tw-border-style);border-bottom-width:calc(1px*(1 - var(--nd-tw-divide-y-reverse)));border-top-style:var(--nd-tw-border-style);border-top-width:calc(1px*var(--nd-tw-divide-y-reverse))}}.nd\\:divide-border\\/50{:where(&>:not(:last-child)){border-color:var(--nd-border);@supports (color:color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--nd-border) 50%,transparent)}}}.nd\\:truncate{text-overflow:ellipsis;white-space:nowrap}.nd\\:overflow-hidden,.nd\\:truncate{overflow:hidden}.nd\\:overflow-x-auto{overflow-x:auto}.nd\\:overflow-y-auto{overflow-y:auto}.nd\\:rounded{border-radius:.25rem}.nd\\:rounded-2xl{border-radius:calc(var(--nd-radius) + 8px)}.nd\\:rounded-\\[2px\\]{border-radius:2px}.nd\\:rounded-full{border-radius:calc(infinity*1px)}.nd\\:rounded-lg{border-radius:var(--nd-radius)}.nd\\:rounded-md{border-radius:calc(var(--nd-radius) - 2px)}.nd\\:rounded-none{border-radius:0}.nd\\:rounded-sm{border-radius:calc(var(--nd-radius) - 4px)}.nd\\:rounded-xs{border-radius:var(--nd-radius-xs)}.nd\\:border{border-style:var(--nd-tw-border-style);border-width:1px}.nd\\:border-2{border-style:var(--nd-tw-border-style);border-width:2px}.nd\\:border-t{border-top-style:var(--nd-tw-border-style);border-top-width:1px}.nd\\:border-r{border-right-style:var(--nd-tw-border-style);border-right-width:1px}.nd\\:border-b{border-bottom-style:var(--nd-tw-border-style);border-bottom-width:1px}.nd\\:border-l{border-left-style:var(--nd-tw-border-style);border-left-width:1px}.nd\\:border-dashed{--nd-tw-border-style:dashed;border-style:dashed}.nd\\:border-border{border-color:var(--nd-border)}.nd\\:border-border\\/50{border-color:var(--nd-border);@supports (color:color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--nd-border) 50%,transparent)}}.nd\\:border-destructive{border-color:var(--nd-destructive)}.nd\\:border-destructive\\/20{border-color:var(--nd-destructive);@supports (color:color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--nd-destructive) 20%,transparent)}}.nd\\:border-emerald-500\\/20{border-color:var(--nd-color-emerald-500);@supports (color:color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--nd-color-emerald-500) 20%,transparent)}}.nd\\:border-input{border-color:var(--nd-input)}.nd\\:border-muted-foreground\\/25{border-color:var(--nd-muted-foreground);@supports (color:color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--nd-muted-foreground) 25%,transparent)}}.nd\\:border-primary{border-color:var(--nd-primary)}.nd\\:border-primary\\/50{border-color:var(--nd-primary);@supports (color:color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--nd-primary) 50%,transparent)}}.nd\\:border-transparent{border-color:transparent}.nd\\:border-yellow-500\\/20{border-color:var(--nd-color-yellow-500);@supports (color:color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--nd-color-yellow-500) 20%,transparent)}}.nd\\:bg-amber-500\\/5{background-color:var(--nd-color-amber-500);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-color-amber-500) 5%,transparent)}}.nd\\:bg-background{background-color:var(--nd-background)}.nd\\:bg-background\\/50{background-color:var(--nd-background);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-background) 50%,transparent)}}.nd\\:bg-background\\/95{background-color:var(--nd-background);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-background) 95%,transparent)}}.nd\\:bg-black\\/50{background-color:var(--nd-color-black);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-color-black) 50%,transparent)}}.nd\\:bg-black\\/60{background-color:var(--nd-color-black);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-color-black) 60%,transparent)}}.nd\\:bg-black\\/80{background-color:var(--nd-color-black);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-color-black) 80%,transparent)}}.nd\\:bg-blue-500\\/10{background-color:var(--nd-color-blue-500);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-color-blue-500) 10%,transparent)}}.nd\\:bg-border{background-color:var(--nd-border)}.nd\\:bg-card{background-color:var(--nd-card)}.nd\\:bg-destructive{background-color:var(--nd-destructive)}.nd\\:bg-destructive\\/5{background-color:var(--nd-destructive);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-destructive) 5%,transparent)}}.nd\\:bg-destructive\\/10{background-color:var(--nd-destructive);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-destructive) 10%,transparent)}}.nd\\:bg-emerald-500{background-color:var(--nd-color-emerald-500)}.nd\\:bg-emerald-500\\/5{background-color:var(--nd-color-emerald-500);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-color-emerald-500) 5%,transparent)}}.nd\\:bg-emerald-500\\/10{background-color:var(--nd-color-emerald-500);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-color-emerald-500) 10%,transparent)}}.nd\\:bg-foreground{background-color:var(--nd-foreground)}.nd\\:bg-muted{background-color:var(--nd-muted)}.nd\\:bg-muted-foreground{background-color:var(--nd-muted-foreground)}.nd\\:bg-muted\\/5{background-color:var(--nd-muted);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-muted) 5%,transparent)}}.nd\\:bg-muted\\/20{background-color:var(--nd-muted);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-muted) 20%,transparent)}}.nd\\:bg-muted\\/30{background-color:var(--nd-muted);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-muted) 30%,transparent)}}.nd\\:bg-muted\\/50{background-color:var(--nd-muted);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-muted) 50%,transparent)}}.nd\\:bg-muted\\/80{background-color:var(--nd-muted);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-muted) 80%,transparent)}}.nd\\:bg-popover{background-color:var(--nd-popover)}.nd\\:bg-primary{background-color:var(--nd-primary)}.nd\\:bg-primary-foreground{background-color:var(--nd-primary-foreground)}.nd\\:bg-primary\\/5{background-color:var(--nd-primary);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-primary) 5%,transparent)}}.nd\\:bg-primary\\/10{background-color:var(--nd-primary);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-primary) 10%,transparent)}}.nd\\:bg-primary\\/20{background-color:var(--nd-primary);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-primary) 20%,transparent)}}.nd\\:bg-primary\\/90{background-color:var(--nd-primary);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-primary) 90%,transparent)}}.nd\\:bg-secondary{background-color:var(--nd-secondary)}.nd\\:bg-transparent{background-color:transparent}.nd\\:bg-yellow-500{background-color:var(--nd-color-yellow-500)}.nd\\:bg-yellow-500\\/5{background-color:var(--nd-color-yellow-500);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-color-yellow-500) 5%,transparent)}}.nd\\:bg-yellow-500\\/10{background-color:var(--nd-color-yellow-500);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-color-yellow-500) 10%,transparent)}}.nd\\:bg-gradient-to-r{--nd-tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--nd-tw-gradient-stops))}.nd\\:from-blue-500{--nd-tw-gradient-from:var(--nd-color-blue-500);--nd-tw-gradient-stops:var(--nd-tw-gradient-via-stops,var(--nd-tw-gradient-position),var(--nd-tw-gradient-from) var(--nd-tw-gradient-from-position),var(--nd-tw-gradient-to) var(--nd-tw-gradient-to-position))}.nd\\:from-yellow-500{--nd-tw-gradient-from:var(--nd-color-yellow-500);--nd-tw-gradient-stops:var(--nd-tw-gradient-via-stops,var(--nd-tw-gradient-position),var(--nd-tw-gradient-from) var(--nd-tw-gradient-from-position),var(--nd-tw-gradient-to) var(--nd-tw-gradient-to-position))}.nd\\:to-cyan-500{--nd-tw-gradient-to:var(--nd-color-cyan-500);--nd-tw-gradient-stops:var(--nd-tw-gradient-via-stops,var(--nd-tw-gradient-position),var(--nd-tw-gradient-from) var(--nd-tw-gradient-from-position),var(--nd-tw-gradient-to) var(--nd-tw-gradient-to-position))}.nd\\:to-orange-500{--nd-tw-gradient-to:var(--nd-color-orange-500);--nd-tw-gradient-stops:var(--nd-tw-gradient-via-stops,var(--nd-tw-gradient-position),var(--nd-tw-gradient-from) var(--nd-tw-gradient-from-position),var(--nd-tw-gradient-to) var(--nd-tw-gradient-to-position))}.nd\\:to-purple-500{--nd-tw-gradient-to:var(--nd-color-purple-500);--nd-tw-gradient-stops:var(--nd-tw-gradient-via-stops,var(--nd-tw-gradient-position),var(--nd-tw-gradient-from) var(--nd-tw-gradient-from-position),var(--nd-tw-gradient-to) var(--nd-tw-gradient-to-position))}.nd\\:fill-blue-500\\/20{fill:var(--nd-color-blue-500);@supports (color:color-mix(in lab,red,red)){fill:color-mix(in oklab,var(--nd-color-blue-500) 20%,transparent)}}.nd\\:fill-current{fill:currentcolor}.nd\\:fill-foreground{fill:var(--nd-foreground)}.nd\\:object-cover{object-fit:cover}.nd\\:p-0{padding:calc(var(--nd-spacing)*0)}.nd\\:p-0\\.5{padding:calc(var(--nd-spacing)*.5)}.nd\\:p-1{padding:calc(var(--nd-spacing)*1)}.nd\\:p-1\\.5{padding:calc(var(--nd-spacing)*1.5)}.nd\\:p-2{padding:calc(var(--nd-spacing)*2)}.nd\\:p-2\\.5{padding:calc(var(--nd-spacing)*2.5)}.nd\\:p-3{padding:calc(var(--nd-spacing)*3)}.nd\\:p-4{padding:calc(var(--nd-spacing)*4)}.nd\\:p-6{padding:calc(var(--nd-spacing)*6)}.nd\\:p-8{padding:calc(var(--nd-spacing)*8)}.nd\\:px-1{padding-inline:calc(var(--nd-spacing)*1)}.nd\\:px-1\\.5{padding-inline:calc(var(--nd-spacing)*1.5)}.nd\\:px-2{padding-inline:calc(var(--nd-spacing)*2)}.nd\\:px-2\\.5{padding-inline:calc(var(--nd-spacing)*2.5)}.nd\\:px-3{padding-inline:calc(var(--nd-spacing)*3)}.nd\\:px-4{padding-inline:calc(var(--nd-spacing)*4)}.nd\\:px-6{padding-inline:calc(var(--nd-spacing)*6)}.nd\\:py-1{padding-block:calc(var(--nd-spacing)*1)}.nd\\:py-1\\.5{padding-block:calc(var(--nd-spacing)*1.5)}.nd\\:py-2{padding-block:calc(var(--nd-spacing)*2)}.nd\\:py-2\\.5{padding-block:calc(var(--nd-spacing)*2.5)}.nd\\:py-3{padding-block:calc(var(--nd-spacing)*3)}.nd\\:py-4{padding-block:calc(var(--nd-spacing)*4)}.nd\\:py-6{padding-block:calc(var(--nd-spacing)*6)}.nd\\:py-8{padding-block:calc(var(--nd-spacing)*8)}.nd\\:pt-2{padding-top:calc(var(--nd-spacing)*2)}.nd\\:pr-1\\.5{padding-right:calc(var(--nd-spacing)*1.5)}.nd\\:pr-2{padding-right:calc(var(--nd-spacing)*2)}.nd\\:pr-7{padding-right:calc(var(--nd-spacing)*7)}.nd\\:pb-1{padding-bottom:calc(var(--nd-spacing)*1)}.nd\\:pl-2\\.5{padding-left:calc(var(--nd-spacing)*2.5)}.nd\\:pl-5\\.5{padding-left:calc(var(--nd-spacing)*5.5)}.nd\\:pl-6{padding-left:calc(var(--nd-spacing)*6)}.nd\\:pl-8{padding-left:calc(var(--nd-spacing)*8)}.nd\\:text-center{text-align:center}.nd\\:text-left{text-align:left}.nd\\:text-base{font-size:var(--nd-text-base);line-height:var(--nd-tw-leading,var(--nd-text-base--line-height))}.nd\\:text-lg{font-size:var(--nd-text-lg);line-height:var(--nd-tw-leading,var(--nd-text-lg--line-height))}.nd\\:text-sm{font-size:var(--nd-text-sm);line-height:var(--nd-tw-leading,var(--nd-text-sm--line-height))}.nd\\:text-xs{font-size:var(--nd-text-xs);line-height:var(--nd-tw-leading,var(--nd-text-xs--line-height))}.nd\\:text-\\[10px\\]{font-size:10px}.nd\\:text-\\[11px\\]{font-size:11px}.nd\\:leading-none{--nd-tw-leading:1;line-height:1}.nd\\:leading-tight{--nd-tw-leading:var(--nd-leading-tight);line-height:var(--nd-leading-tight)}.nd\\:font-medium{--nd-tw-font-weight:var(--nd-font-weight-medium);font-weight:var(--nd-font-weight-medium)}.nd\\:font-normal{--nd-tw-font-weight:var(--nd-font-weight-normal);font-weight:var(--nd-font-weight-normal)}.nd\\:font-semibold{--nd-tw-font-weight:var(--nd-font-weight-semibold);font-weight:var(--nd-font-weight-semibold)}.nd\\:tracking-tight{--nd-tw-tracking:var(--nd-tracking-tight);letter-spacing:var(--nd-tracking-tight)}.nd\\:tracking-wide{--nd-tw-tracking:var(--nd-tracking-wide);letter-spacing:var(--nd-tracking-wide)}.nd\\:tracking-widest{--nd-tw-tracking:var(--nd-tracking-widest);letter-spacing:var(--nd-tracking-widest)}.nd\\:text-balance{text-wrap:balance}.nd\\:break-words{overflow-wrap:break-word}.nd\\:whitespace-nowrap{white-space:nowrap}.nd\\:whitespace-pre-wrap{white-space:pre-wrap}.nd\\:text-amber-500{color:var(--nd-color-amber-500)}.nd\\:text-amber-600{color:var(--nd-color-amber-600)}.nd\\:text-background{color:var(--nd-background)}.nd\\:text-blue-500{color:var(--nd-color-blue-500)}.nd\\:text-blue-600{color:var(--nd-color-blue-600)}.nd\\:text-card-foreground{color:var(--nd-card-foreground)}.nd\\:text-destructive{color:var(--nd-destructive)}.nd\\:text-emerald-500{color:var(--nd-color-emerald-500)}.nd\\:text-emerald-600{color:var(--nd-color-emerald-600)}.nd\\:text-foreground{color:var(--nd-foreground)}.nd\\:text-gray-400{color:var(--nd-color-gray-400)}.nd\\:text-green-500{color:var(--nd-color-green-500)}.nd\\:text-muted-foreground{color:var(--nd-muted-foreground)}.nd\\:text-muted-foreground\\/50{color:var(--nd-muted-foreground);@supports (color:color-mix(in lab,red,red)){color:color-mix(in oklab,var(--nd-muted-foreground) 50%,transparent)}}.nd\\:text-muted-foreground\\/60{color:var(--nd-muted-foreground);@supports (color:color-mix(in lab,red,red)){color:color-mix(in oklab,var(--nd-muted-foreground) 60%,transparent)}}.nd\\:text-orange-500{color:var(--nd-color-orange-500)}.nd\\:text-popover-foreground{color:var(--nd-popover-foreground)}.nd\\:text-primary{color:var(--nd-primary)}.nd\\:text-primary-foreground{color:var(--nd-primary-foreground)}.nd\\:text-purple-500{color:var(--nd-color-purple-500)}.nd\\:text-red-500{color:var(--nd-color-red-500)}.nd\\:text-secondary-foreground{color:var(--nd-secondary-foreground)}.nd\\:text-slate-500{color:var(--nd-color-slate-500)}.nd\\:text-white{color:var(--nd-color-white)}.nd\\:text-yellow-500{color:var(--nd-color-yellow-500)}.nd\\:text-yellow-600{color:var(--nd-color-yellow-600)}.nd\\:uppercase{text-transform:uppercase}.nd\\:tabular-nums{--nd-tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--nd-tw-ordinal,) var(--nd-tw-slashed-zero,) var(--nd-tw-numeric-figure,) var(--nd-tw-numeric-spacing,) var(--nd-tw-numeric-fraction,)}.nd\\:underline-offset-4{text-underline-offset:4px}.nd\\:opacity-50{opacity:50%}.nd\\:opacity-60{opacity:60%}.nd\\:opacity-70{opacity:70%}.nd\\:shadow{--nd-tw-shadow:0 1px 3px 0 var(--nd-tw-shadow-color,rgba(0,0,0,.1)),0 1px 2px -1px var(--nd-tw-shadow-color,rgba(0,0,0,.1))}.nd\\:shadow,.nd\\:shadow-2xl{box-shadow:var(--nd-tw-inset-shadow),var(--nd-tw-inset-ring-shadow),var(--nd-tw-ring-offset-shadow),var(--nd-tw-ring-shadow),var(--nd-tw-shadow)}.nd\\:shadow-2xl{--nd-tw-shadow:0 25px 50px -12px var(--nd-tw-shadow-color,rgba(0,0,0,.25))}.nd\\:shadow-lg{--nd-tw-shadow:0 10px 15px -3px var(--nd-tw-shadow-color,rgba(0,0,0,.1)),0 4px 6px -4px var(--nd-tw-shadow-color,rgba(0,0,0,.1))}.nd\\:shadow-lg,.nd\\:shadow-md{box-shadow:var(--nd-tw-inset-shadow),var(--nd-tw-inset-ring-shadow),var(--nd-tw-ring-offset-shadow),var(--nd-tw-ring-shadow),var(--nd-tw-shadow)}.nd\\:shadow-md{--nd-tw-shadow:0 4px 6px -1px var(--nd-tw-shadow-color,rgba(0,0,0,.1)),0 2px 4px -2px var(--nd-tw-shadow-color,rgba(0,0,0,.1))}.nd\\:shadow-sm{--nd-tw-shadow:0 1px 3px 0 var(--nd-tw-shadow-color,rgba(0,0,0,.1)),0 1px 2px -1px var(--nd-tw-shadow-color,rgba(0,0,0,.1))}.nd\\:shadow-sm,.nd\\:shadow-xs{box-shadow:var(--nd-tw-inset-shadow),var(--nd-tw-inset-ring-shadow),var(--nd-tw-ring-offset-shadow),var(--nd-tw-ring-shadow),var(--nd-tw-shadow)}.nd\\:shadow-xs{--nd-tw-shadow:0 1px 2px 0 var(--nd-tw-shadow-color,rgba(0,0,0,.05))}.nd\\:ring-2{--nd-tw-ring-shadow:var(--nd-tw-ring-inset,) 0 0 0 calc(2px + var(--nd-tw-ring-offset-width)) var(--nd-tw-ring-color,currentcolor);box-shadow:var(--nd-tw-inset-shadow),var(--nd-tw-inset-ring-shadow),var(--nd-tw-ring-offset-shadow),var(--nd-tw-ring-shadow),var(--nd-tw-shadow)}.nd\\:ring-primary{--nd-tw-ring-color:var(--nd-primary)}.nd\\:ring-offset-background{--nd-tw-ring-offset-color:var(--nd-background)}.nd\\:backdrop-blur-sm{--nd-tw-backdrop-blur:blur(var(--nd-blur-sm));-webkit-backdrop-filter:var(--nd-tw-backdrop-blur,) var(--nd-tw-backdrop-brightness,) var(--nd-tw-backdrop-contrast,) var(--nd-tw-backdrop-grayscale,) var(--nd-tw-backdrop-hue-rotate,) var(--nd-tw-backdrop-invert,) var(--nd-tw-backdrop-opacity,) var(--nd-tw-backdrop-saturate,) var(--nd-tw-backdrop-sepia,);backdrop-filter:var(--nd-tw-backdrop-blur,) var(--nd-tw-backdrop-brightness,) var(--nd-tw-backdrop-contrast,) var(--nd-tw-backdrop-grayscale,) var(--nd-tw-backdrop-hue-rotate,) var(--nd-tw-backdrop-invert,) var(--nd-tw-backdrop-opacity,) var(--nd-tw-backdrop-saturate,) var(--nd-tw-backdrop-sepia,)}.nd\\:transition{transition-duration:var(--nd-tw-duration,var(--nd-default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--nd-tw-gradient-from,--nd-tw-gradient-via,--nd-tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--nd-tw-ease,var(--nd-default-transition-timing-function))}.nd\\:transition-\\[color\\,box-shadow\\]{transition-duration:var(--nd-tw-duration,var(--nd-default-transition-duration));transition-property:color,box-shadow;transition-timing-function:var(--nd-tw-ease,var(--nd-default-transition-timing-function))}.nd\\:transition-all{transition-duration:var(--nd-tw-duration,var(--nd-default-transition-duration));transition-property:all;transition-timing-function:var(--nd-tw-ease,var(--nd-default-transition-timing-function))}.nd\\:transition-colors{transition-duration:var(--nd-tw-duration,var(--nd-default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--nd-tw-gradient-from,--nd-tw-gradient-via,--nd-tw-gradient-to;transition-timing-function:var(--nd-tw-ease,var(--nd-default-transition-timing-function))}.nd\\:transition-opacity{transition-duration:var(--nd-tw-duration,var(--nd-default-transition-duration));transition-property:opacity;transition-timing-function:var(--nd-tw-ease,var(--nd-default-transition-timing-function))}.nd\\:transition-transform{transition-duration:var(--nd-tw-duration,var(--nd-default-transition-duration));transition-property:transform,translate,scale,rotate;transition-timing-function:var(--nd-tw-ease,var(--nd-default-transition-timing-function))}.nd\\:duration-200{--nd-tw-duration:200ms;transition-duration:.2s}.nd\\:duration-300{--nd-tw-duration:300ms;transition-duration:.3s}.nd\\:duration-500{--nd-tw-duration:500ms;transition-duration:.5s}.nd\\:ease-in-out{--nd-tw-ease:var(--nd-ease-in-out);transition-timing-function:var(--nd-ease-in-out)}.nd\\:outline-none{--nd-tw-outline-style:none;outline-style:none}.nd\\:select-none{-webkit-user-select:none;user-select:none}.nd\\:hover\\:scale-110{&:hover{@media (hover:hover){--nd-tw-scale-x:110%;--nd-tw-scale-y:110%;--nd-tw-scale-z:110%;scale:var(--nd-tw-scale-x) var(--nd-tw-scale-y)}}}.nd\\:hover\\:border-border{&:hover{@media (hover:hover){border-color:var(--nd-border)}}}.nd\\:hover\\:border-primary\\/50{&:hover{@media (hover:hover){border-color:var(--nd-primary);@supports (color:color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--nd-primary) 50%,transparent)}}}}.nd\\:hover\\:bg-accent{&:hover{@media (hover:hover){background-color:var(--nd-accent)}}}.nd\\:hover\\:bg-accent\\/50{&:hover{@media (hover:hover){background-color:var(--nd-accent);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-accent) 50%,transparent)}}}}.nd\\:hover\\:bg-background{&:hover{@media (hover:hover){background-color:var(--nd-background)}}}.nd\\:hover\\:bg-background\\/80{&:hover{@media (hover:hover){background-color:var(--nd-background);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-background) 80%,transparent)}}}}.nd\\:hover\\:bg-destructive\\/15{&:hover{@media (hover:hover){background-color:var(--nd-destructive);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-destructive) 15%,transparent)}}}}.nd\\:hover\\:bg-destructive\\/90{&:hover{@media (hover:hover){background-color:var(--nd-destructive);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-destructive) 90%,transparent)}}}}.nd\\:hover\\:bg-muted{&:hover{@media (hover:hover){background-color:var(--nd-muted)}}}.nd\\:hover\\:bg-muted\\/20{&:hover{@media (hover:hover){background-color:var(--nd-muted);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-muted) 20%,transparent)}}}}.nd\\:hover\\:bg-muted\\/50{&:hover{@media (hover:hover){background-color:var(--nd-muted);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-muted) 50%,transparent)}}}}.nd\\:hover\\:bg-primary\\/15{&:hover{@media (hover:hover){background-color:var(--nd-primary);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-primary) 15%,transparent)}}}}.nd\\:hover\\:bg-primary\\/90{&:hover{@media (hover:hover){background-color:var(--nd-primary);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-primary) 90%,transparent)}}}}.nd\\:hover\\:bg-secondary\\/80{&:hover{@media (hover:hover){background-color:var(--nd-secondary);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-secondary) 80%,transparent)}}}}.nd\\:hover\\:text-accent-foreground{&:hover{@media (hover:hover){color:var(--nd-accent-foreground)}}}.nd\\:hover\\:text-destructive{&:hover{@media (hover:hover){color:var(--nd-destructive)}}}.nd\\:hover\\:text-foreground{&:hover{@media (hover:hover){color:var(--nd-foreground)}}}.nd\\:hover\\:underline{&:hover{@media (hover:hover){text-decoration-line:underline}}}.nd\\:hover\\:opacity-100{&:hover{@media (hover:hover){opacity:100%}}}.nd\\:focus\\:bg-accent{&:focus{background-color:var(--nd-accent)}}.nd\\:focus\\:text-accent-foreground{&:focus{color:var(--nd-accent-foreground)}}.nd\\:focus\\:text-destructive{&:focus{color:var(--nd-destructive)}}.nd\\:focus\\:ring-2{&:focus{--nd-tw-ring-shadow:var(--nd-tw-ring-inset,) 0 0 0 calc(2px + var(--nd-tw-ring-offset-width)) var(--nd-tw-ring-color,currentcolor);box-shadow:var(--nd-tw-inset-shadow),var(--nd-tw-inset-ring-shadow),var(--nd-tw-ring-offset-shadow),var(--nd-tw-ring-shadow),var(--nd-tw-shadow)}}.nd\\:focus\\:ring-ring{&:focus{--nd-tw-ring-color:var(--nd-ring)}}.nd\\:focus\\:ring-offset-2{&:focus{--nd-tw-ring-offset-width:2px;--nd-tw-ring-offset-shadow:var(--nd-tw-ring-inset,) 0 0 0 var(--nd-tw-ring-offset-width) var(--nd-tw-ring-offset-color)}}.nd\\:focus\\:outline-hidden{&:focus{--nd-tw-outline-style:none;outline-style:none;@media (forced-colors:active){outline:2px solid transparent;outline-offset:2px}}}.nd\\:focus\\:outline-none{&:focus{--nd-tw-outline-style:none;outline-style:none}}.nd\\:focus-visible\\:border-ring{&:focus-visible{border-color:var(--nd-ring)}}.nd\\:focus-visible\\:ring-2{&:focus-visible{--nd-tw-ring-shadow:var(--nd-tw-ring-inset,) 0 0 0 calc(2px + var(--nd-tw-ring-offset-width)) var(--nd-tw-ring-color,currentcolor);box-shadow:var(--nd-tw-inset-shadow),var(--nd-tw-inset-ring-shadow),var(--nd-tw-ring-offset-shadow),var(--nd-tw-ring-shadow),var(--nd-tw-shadow)}}.nd\\:focus-visible\\:ring-\\[3px\\]{&:focus-visible{--nd-tw-ring-shadow:var(--nd-tw-ring-inset,) 0 0 0 calc(3px + var(--nd-tw-ring-offset-width)) var(--nd-tw-ring-color,currentcolor);box-shadow:var(--nd-tw-inset-shadow),var(--nd-tw-inset-ring-shadow),var(--nd-tw-ring-offset-shadow),var(--nd-tw-ring-shadow),var(--nd-tw-shadow)}}.nd\\:focus-visible\\:ring-destructive\\/20{&:focus-visible{--nd-tw-ring-color:var(--nd-destructive);@supports (color:color-mix(in lab,red,red)){--nd-tw-ring-color:color-mix(in oklab,var(--nd-destructive) 20%,transparent)}}}.nd\\:focus-visible\\:ring-primary{&:focus-visible{--nd-tw-ring-color:var(--nd-primary)}}.nd\\:focus-visible\\:ring-ring\\/50{&:focus-visible{--nd-tw-ring-color:var(--nd-ring);@supports (color:color-mix(in lab,red,red)){--nd-tw-ring-color:color-mix(in oklab,var(--nd-ring) 50%,transparent)}}}.nd\\:disabled\\:pointer-events-none{&:disabled{pointer-events:none}}.nd\\:disabled\\:cursor-not-allowed{&:disabled{cursor:not-allowed}}.nd\\:disabled\\:opacity-50{&:disabled{opacity:50%}}.nd\\:has-\\[\\>svg\\]\\:grid-cols-\\[calc\\(var\\(--spacing\\)\\*4\\)_1fr\\]{&:has(>svg){grid-template-columns:calc(var(--spacing)*4) 1fr}}.nd\\:has-\\[\\>svg\\]\\:gap-x-3{&:has(>svg){column-gap:calc(var(--nd-spacing)*3)}}.nd\\:has-\\[\\>svg\\]\\:px-2\\.5{&:has(>svg){padding-inline:calc(var(--nd-spacing)*2.5)}}.nd\\:has-\\[\\>svg\\]\\:px-3{&:has(>svg){padding-inline:calc(var(--nd-spacing)*3)}}.nd\\:has-\\[\\>svg\\]\\:px-4{&:has(>svg){padding-inline:calc(var(--nd-spacing)*4)}}.nd\\:data-\\[disabled\\]\\:pointer-events-none{&[data-disabled]{pointer-events:none}}.nd\\:data-\\[disabled\\]\\:opacity-50{&[data-disabled]{opacity:50%}}.nd\\:data-\\[orientation\\=horizontal\\]\\:h-px{&[data-orientation=horizontal]{height:1px}}.nd\\:data-\\[orientation\\=horizontal\\]\\:w-full{&[data-orientation=horizontal]{width:100%}}.nd\\:data-\\[orientation\\=vertical\\]\\:h-full{&[data-orientation=vertical]{height:100%}}.nd\\:data-\\[orientation\\=vertical\\]\\:w-px{&[data-orientation=vertical]{width:1px}}.nd\\:\\*\\:data-\\[slot\\=alert-description\\]\\:text-destructive\\/90{:is(&>*){&[data-slot=alert-description]{color:var(--nd-destructive);@supports (color:color-mix(in lab,red,red)){color:color-mix(in oklab,var(--nd-destructive) 90%,transparent)}}}}.nd\\:data-\\[state\\=closed\\]\\:duration-300{&[data-state=closed]{--nd-tw-duration:300ms;transition-duration:.3s}}.nd\\:data-\\[state\\=open\\]\\:bg-accent{&[data-state=open]{background-color:var(--nd-accent)}}.nd\\:data-\\[state\\=open\\]\\:bg-secondary{&[data-state=open]{background-color:var(--nd-secondary)}}.nd\\:data-\\[state\\=open\\]\\:text-accent-foreground{&[data-state=open]{color:var(--nd-accent-foreground)}}.nd\\:data-\\[state\\=open\\]\\:text-muted-foreground{&[data-state=open]{color:var(--nd-muted-foreground)}}.nd\\:data-\\[state\\=open\\]\\:duration-500{&[data-state=open]{--nd-tw-duration:500ms;transition-duration:.5s}}.nd\\:sm\\:top-2{@media (width >= 40rem){top:calc(var(--nd-spacing)*2)}}.nd\\:sm\\:right-2{@media (width >= 40rem){right:calc(var(--nd-spacing)*2)}}.nd\\:sm\\:bottom-2{@media (width >= 40rem){bottom:calc(var(--nd-spacing)*2)}}.nd\\:sm\\:mt-0{@media (width >= 40rem){margin-top:calc(var(--nd-spacing)*0)}}.nd\\:sm\\:mb-3{@media (width >= 40rem){margin-bottom:calc(var(--nd-spacing)*3)}}.nd\\:sm\\:inline{@media (width >= 40rem){display:inline}}.nd\\:sm\\:size-3\\.5{@media (width >= 40rem){height:calc(var(--nd-spacing)*3.5);width:calc(var(--nd-spacing)*3.5)}}.nd\\:sm\\:size-6{@media (width >= 40rem){height:calc(var(--nd-spacing)*6);width:calc(var(--nd-spacing)*6)}}.nd\\:sm\\:size-10{@media (width >= 40rem){height:calc(var(--nd-spacing)*10);width:calc(var(--nd-spacing)*10)}}.nd\\:sm\\:w-32{@media (width >= 40rem){width:calc(var(--nd-spacing)*32)}}.nd\\:sm\\:w-80{@media (width >= 40rem){width:calc(var(--nd-spacing)*80)}}.nd\\:sm\\:max-w-37\\.5{@media (width >= 40rem){max-width:calc(var(--nd-spacing)*37.5)}}.nd\\:sm\\:max-w-lg{@media (width >= 40rem){max-width:var(--nd-container-lg)}}.nd\\:sm\\:max-w-md{@media (width >= 40rem){max-width:var(--nd-container-md)}}.nd\\:sm\\:max-w-none{@media (width >= 40rem){max-width:none}}.nd\\:sm\\:max-w-sm{@media (width >= 40rem){max-width:var(--nd-container-sm)}}.nd\\:sm\\:max-w-xs{@media (width >= 40rem){max-width:var(--nd-container-xs)}}.nd\\:sm\\:min-w-50{@media (width >= 40rem){min-width:calc(var(--nd-spacing)*50)}}.nd\\:sm\\:grid-cols-4{@media (width >= 40rem){grid-template-columns:repeat(4,minmax(0,1fr))}}.nd\\:sm\\:flex-row{@media (width >= 40rem){flex-direction:row}}.nd\\:sm\\:justify-end{@media (width >= 40rem){justify-content:flex-end}}.nd\\:sm\\:gap-1\\.5{@media (width >= 40rem){gap:calc(var(--nd-spacing)*1.5)}}.nd\\:sm\\:gap-3{@media (width >= 40rem){gap:calc(var(--nd-spacing)*3)}}.nd\\:sm\\:space-y-6{@media (width >= 40rem){:where(&>:not(:last-child)){--nd-tw-space-y-reverse:0;margin-block-end:calc(var(--nd-spacing)*6*(1 - var(--nd-tw-space-y-reverse)));margin-block-start:calc(var(--nd-spacing)*6*var(--nd-tw-space-y-reverse))}}}.nd\\:sm\\:space-x-2{@media (width >= 40rem){:where(&>:not(:last-child)){--nd-tw-space-x-reverse:0;margin-inline-end:calc(var(--nd-spacing)*2*(1 - var(--nd-tw-space-x-reverse)));margin-inline-start:calc(var(--nd-spacing)*2*var(--nd-tw-space-x-reverse))}}}.nd\\:sm\\:rounded-lg{@media (width >= 40rem){border-radius:var(--nd-radius)}}.nd\\:sm\\:rounded-xl{@media (width >= 40rem){border-radius:calc(var(--nd-radius) + 4px)}}.nd\\:sm\\:p-2{@media (width >= 40rem){padding:calc(var(--nd-spacing)*2)}}.nd\\:sm\\:p-3{@media (width >= 40rem){padding:calc(var(--nd-spacing)*3)}}.nd\\:sm\\:px-2{@media (width >= 40rem){padding-inline:calc(var(--nd-spacing)*2)}}.nd\\:sm\\:px-4{@media (width >= 40rem){padding-inline:calc(var(--nd-spacing)*4)}}.nd\\:sm\\:text-left{@media (width >= 40rem){text-align:left}}.nd\\:sm\\:text-sm{@media (width >= 40rem){font-size:var(--nd-text-sm);line-height:var(--nd-tw-leading,var(--nd-text-sm--line-height))}}.nd\\:md\\:inset-auto{@media (width >= 48rem){inset:auto}}.nd\\:md\\:top-4{@media (width >= 48rem){top:calc(var(--nd-spacing)*4)}}.nd\\:md\\:top-\\[50\\%\\]{@media (width >= 48rem){top:50%}}.nd\\:md\\:right-4{@media (width >= 48rem){right:calc(var(--nd-spacing)*4)}}.nd\\:md\\:left-\\[50\\%\\]{@media (width >= 48rem){left:50%}}.nd\\:md\\:flex{@media (width >= 48rem){display:flex}}.nd\\:md\\:hidden{@media (width >= 48rem){display:none}}.nd\\:md\\:size-7{@media (width >= 48rem){height:calc(var(--nd-spacing)*7);width:calc(var(--nd-spacing)*7)}}.nd\\:md\\:size-12{@media (width >= 48rem){height:calc(var(--nd-spacing)*12);width:calc(var(--nd-spacing)*12)}}.nd\\:md\\:max-h-\\[90vh\\]{@media (width >= 48rem){max-height:90vh}}.nd\\:md\\:w-\\[95vw\\]{@media (width >= 48rem){width:95vw}}.nd\\:md\\:max-w-5xl{@media (width >= 48rem){max-width:var(--nd-container-5xl)}}.nd\\:md\\:translate-x-\\[-50\\%\\]{@media (width >= 48rem){--nd-tw-translate-x:-50%;translate:var(--nd-tw-translate-x) var(--nd-tw-translate-y)}}.nd\\:md\\:translate-y-\\[-50\\%\\]{@media (width >= 48rem){--nd-tw-translate-y:-50%;translate:var(--nd-tw-translate-x) var(--nd-tw-translate-y)}}.nd\\:md\\:grid-cols-5{@media (width >= 48rem){grid-template-columns:repeat(5,minmax(0,1fr))}}.nd\\:md\\:flex-row{@media (width >= 48rem){flex-direction:row}}.nd\\:md\\:rounded-md{@media (width >= 48rem){border-radius:calc(var(--nd-radius) - 2px)}}.nd\\:md\\:rounded-xl{@media (width >= 48rem){border-radius:calc(var(--nd-radius) + 4px)}}.nd\\:md\\:border{@media (width >= 48rem){border-bottom-width:1px;border-left-width:1px;border-right-width:1px;border-style:var(--nd-tw-border-style);border-top-width:1px}}.nd\\:md\\:bg-transparent{@media (width >= 48rem){background-color:transparent}}.nd\\:md\\:p-4{@media (width >= 48rem){padding:calc(var(--nd-spacing)*4)}}.nd\\:md\\:text-sm{@media (width >= 48rem){font-size:var(--nd-text-sm);line-height:var(--nd-tw-leading,var(--nd-text-sm--line-height))}}.nd\\:lg\\:flex{@media (width >= 64rem){display:flex}}.nd\\:lg\\:hidden{@media (width >= 64rem){display:none}}.nd\\:lg\\:w-56{@media (width >= 64rem){width:calc(var(--nd-spacing)*56)}}.nd\\:lg\\:grid-cols-6{@media (width >= 64rem){grid-template-columns:repeat(6,minmax(0,1fr))}}.nd\\:xl\\:grid-cols-7{@media (width >= 80rem){grid-template-columns:repeat(7,minmax(0,1fr))}}.nd\\:dark\\:border-input{&:is(.dark *){border-color:var(--nd-input)}}.nd\\:dark\\:bg-background\\/30{&:is(.dark *){background-color:var(--nd-background);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-background) 30%,transparent)}}}.nd\\:dark\\:bg-background\\/80{&:is(.dark *){background-color:var(--nd-background);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-background) 80%,transparent)}}}.nd\\:dark\\:bg-blue-500\\/20{&:is(.dark *){background-color:var(--nd-color-blue-500);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-color-blue-500) 20%,transparent)}}}.nd\\:dark\\:bg-card\\/50{&:is(.dark *){background-color:var(--nd-card);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-card) 50%,transparent)}}}.nd\\:dark\\:bg-destructive\\/15{&:is(.dark *){background-color:var(--nd-destructive);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-destructive) 15%,transparent)}}}.nd\\:dark\\:bg-emerald-500\\/20{&:is(.dark *){background-color:var(--nd-color-emerald-500);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-color-emerald-500) 20%,transparent)}}}.nd\\:dark\\:bg-input\\/30{&:is(.dark *){background-color:var(--nd-input);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-input) 30%,transparent)}}}.nd\\:dark\\:bg-muted\\/10{&:is(.dark *){background-color:var(--nd-muted);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-muted) 10%,transparent)}}}.nd\\:dark\\:bg-muted\\/20{&:is(.dark *){background-color:var(--nd-muted);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-muted) 20%,transparent)}}}.nd\\:dark\\:bg-muted\\/30{&:is(.dark *){background-color:var(--nd-muted);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-muted) 30%,transparent)}}}.nd\\:dark\\:bg-primary\\/10{&:is(.dark *){background-color:var(--nd-primary);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-primary) 10%,transparent)}}}.nd\\:dark\\:bg-primary\\/15{&:is(.dark *){background-color:var(--nd-primary);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-primary) 15%,transparent)}}}.nd\\:dark\\:text-amber-500{&:is(.dark *){color:var(--nd-color-amber-500)}}.nd\\:dark\\:text-blue-400{&:is(.dark *){color:var(--nd-color-blue-400)}}.nd\\:dark\\:text-emerald-400{&:is(.dark *){color:var(--nd-color-emerald-400)}}.nd\\:dark\\:text-yellow-500{&:is(.dark *){color:var(--nd-color-yellow-500)}}.nd\\:dark\\:hover\\:bg-accent\\/30{&:is(.dark *){&:hover{@media (hover:hover){background-color:var(--nd-accent);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-accent) 30%,transparent)}}}}}.nd\\:dark\\:hover\\:bg-accent\\/50{&:is(.dark *){&:hover{@media (hover:hover){background-color:var(--nd-accent);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-accent) 50%,transparent)}}}}}.nd\\:dark\\:hover\\:bg-input\\/50{&:is(.dark *){&:hover{@media (hover:hover){background-color:var(--nd-input);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-input) 50%,transparent)}}}}}.nd\\:dark\\:hover\\:bg-muted\\/30{&:is(.dark *){&:hover{@media (hover:hover){background-color:var(--nd-muted);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-muted) 30%,transparent)}}}}}.nd\\:dark\\:hover\\:bg-primary\\/20{&:is(.dark *){&:hover{@media (hover:hover){background-color:var(--nd-primary);@supports (color:color-mix(in lab,red,red)){background-color:color-mix(in oklab,var(--nd-primary) 20%,transparent)}}}}}.nd\\:\\[\\&_p\\]\\:leading-relaxed{& p{--nd-tw-leading:var(--nd-leading-relaxed);line-height:var(--nd-leading-relaxed)}}.nd\\:\\[\\&\\>svg\\]\\:size-4{&>svg{height:calc(var(--nd-spacing)*4);width:calc(var(--nd-spacing)*4)}}.nd\\:\\[\\&\\>svg\\]\\:translate-y-0\\.5{&>svg{--nd-tw-translate-y:calc(var(--nd-spacing)*0.5);translate:var(--nd-tw-translate-x) var(--nd-tw-translate-y)}}.nd\\:\\[\\&\\>svg\\]\\:text-current{&>svg{color:currentcolor}}:host,:root{--nd-color-red-500:oklch(63.7% 0.237 25.331);--nd-color-orange-500:oklch(70.5% 0.213 47.604);--nd-color-amber-500:oklch(76.9% 0.188 70.08);--nd-color-amber-600:oklch(66.6% 0.179 58.318);--nd-color-yellow-500:oklch(79.5% 0.184 86.047);--nd-color-yellow-600:oklch(68.1% 0.162 75.834);--nd-color-green-500:oklch(72.3% 0.219 149.579);--nd-color-emerald-400:oklch(76.5% 0.177 163.223);--nd-color-emerald-500:oklch(69.6% 0.17 162.48);--nd-color-emerald-600:oklch(59.6% 0.145 163.225);--nd-color-cyan-500:oklch(71.5% 0.143 215.221);--nd-color-blue-400:oklch(70.7% 0.165 254.624);--nd-color-blue-500:oklch(62.3% 0.214 259.815);--nd-color-blue-600:oklch(54.6% 0.245 262.881);--nd-color-purple-500:oklch(62.7% 0.265 303.9);--nd-color-slate-500:oklch(55.4% 0.046 257.417);--nd-color-gray-400:oklch(70.7% 0.022 261.325);--nd-color-black:#000;--nd-color-white:#fff;--nd-spacing:0.25rem;--nd-container-xs:20rem;--nd-container-sm:24rem;--nd-container-md:28rem;--nd-container-lg:32rem;--nd-container-5xl:64rem;--nd-text-xs:0.75rem;--nd-text-xs--line-height:1.33333;--nd-text-sm:0.875rem;--nd-text-sm--line-height:1.42857;--nd-text-base:1rem;--nd-text-base--line-height:1.5;--nd-text-lg:1.125rem;--nd-text-lg--line-height:1.55556;--nd-font-weight-normal:400;--nd-font-weight-medium:500;--nd-font-weight-semibold:600;--nd-tracking-tight:-0.025em;--nd-tracking-wide:0.025em;--nd-tracking-widest:0.1em;--nd-leading-tight:1.25;--nd-leading-relaxed:1.625;--nd-radius-xs:0.125rem;--nd-ease-in-out:cubic-bezier(0.4,0,0.2,1);--nd-animate-spin:nd-spin 1s linear infinite;--nd-blur-sm:8px;--nd-default-transition-duration:150ms;--nd-default-transition-timing-function:cubic-bezier(0.4,0,0.2,1)}.nd-drive-root{--nd-card:oklch(1 0 0);--nd-card-foreground:oklch(0.145 0 0);--nd-popover:oklch(1 0 0);--nd-popover-foreground:oklch(0.145 0 0);--nd-primary:oklch(0.205 0 0);--nd-primary-foreground:oklch(0.985 0 0);--nd-secondary:oklch(0.97 0 0);--nd-secondary-foreground:oklch(0.205 0 0);--nd-muted:oklch(0.97 0 0);--nd-muted-foreground:oklch(0.556 0 0);--nd-accent:oklch(0.97 0 0);--nd-accent-foreground:oklch(0.205 0 0);--nd-destructive:oklch(0.577 0.245 27.325);--nd-destructive-foreground:210 40% 98%;--nd-border:oklch(0.922 0 0);--nd-input:oklch(0.922 0 0);--nd-ring:oklch(0.708 0 0);--nd-radius:0.625rem;--nd-background:oklch(1 0 0);--nd-foreground:oklch(0.145 0 0);--nd-chart-1:oklch(0.646 0.222 41.116);--nd-chart-2:oklch(0.6 0.118 184.704);--nd-chart-3:oklch(0.398 0.07 227.392);--nd-chart-4:oklch(0.828 0.189 84.429);--nd-chart-5:oklch(0.769 0.188 70.08);--nd-sidebar:oklch(0.985 0 0);--nd-sidebar-foreground:oklch(0.145 0 0);--nd-sidebar-primary:oklch(0.205 0 0);--nd-sidebar-primary-foreground:oklch(0.985 0 0);--nd-sidebar-accent:oklch(0.97 0 0);--nd-sidebar-accent-foreground:oklch(0.205 0 0);--nd-sidebar-border:oklch(0.922 0 0);--nd-sidebar-ring:oklch(0.708 0 0)}.dark .nd-drive-root{--nd-background:oklch(0.145 0 0);--nd-foreground:oklch(0.985 0 0);--nd-card:oklch(0.205 0 0);--nd-card-foreground:oklch(0.985 0 0);--nd-popover:oklch(0.205 0 0);--nd-popover-foreground:oklch(0.985 0 0);--nd-primary:oklch(0.922 0 0);--nd-primary-foreground:oklch(0.205 0 0);--nd-secondary:oklch(0.269 0 0);--nd-secondary-foreground:oklch(0.985 0 0);--nd-muted:oklch(0.269 0 0);--nd-muted-foreground:oklch(0.708 0 0);--nd-accent:oklch(0.269 0 0);--nd-accent-foreground:oklch(0.985 0 0);--nd-destructive:oklch(0.704 0.191 22.216);--nd-destructive-foreground:210 40% 98%;--nd-border:oklch(1 0 0/10%);--nd-input:oklch(1 0 0/15%);--nd-ring:oklch(0.556 0 0);--nd-chart-1:oklch(0.488 0.243 264.376);--nd-chart-2:oklch(0.696 0.17 162.48);--nd-chart-3:oklch(0.769 0.188 70.08);--nd-chart-4:oklch(0.627 0.265 303.9);--nd-chart-5:oklch(0.645 0.246 16.439);--nd-sidebar:oklch(0.205 0 0);--nd-sidebar-foreground:oklch(0.985 0 0);--nd-sidebar-primary:oklch(0.488 0.243 264.376);--nd-sidebar-primary-foreground:oklch(0.985 0 0);--nd-sidebar-accent:oklch(0.269 0 0);--nd-sidebar-accent-foreground:oklch(0.985 0 0);--nd-sidebar-border:oklch(1 0 0/10%);--nd-sidebar-ring:oklch(0.556 0 0)}@keyframes nd-indeterminate{0%{transform:translateX(-100%)}50%{transform:translateX(200%)}to{transform:translateX(-100%)}}@keyframes nd-spin{to{transform:rotate(1turn)}}@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){.nd-drive-root,.nd-drive-root *,.nd-drive-root ::backdrop,.nd-drive-root :after,.nd-drive-root :before{--nd-tw-translate-x:0;--nd-tw-translate-y:0;--nd-tw-translate-z:0;--nd-tw-scale-x:1;--nd-tw-scale-y:1;--nd-tw-scale-z:1;--nd-tw-space-y-reverse:0;--nd-tw-divide-y-reverse:0;--nd-tw-border-style:solid;--nd-tw-gradient-position:initial;--nd-tw-gradient-from:#0000;--nd-tw-gradient-via:#0000;--nd-tw-gradient-to:#0000;--nd-tw-gradient-stops:initial;--nd-tw-gradient-via-stops:initial;--nd-tw-gradient-from-position:0%;--nd-tw-gradient-via-position:50%;--nd-tw-gradient-to-position:100%;--nd-tw-leading:initial;--nd-tw-font-weight:initial;--nd-tw-tracking:initial;--nd-tw-ordinal:initial;--nd-tw-slashed-zero:initial;--nd-tw-numeric-figure:initial;--nd-tw-numeric-spacing:initial;--nd-tw-numeric-fraction:initial;--nd-tw-shadow:0 0 #0000;--nd-tw-shadow-color:initial;--nd-tw-shadow-alpha:100%;--nd-tw-inset-shadow:0 0 #0000;--nd-tw-inset-shadow-color:initial;--nd-tw-inset-shadow-alpha:100%;--nd-tw-ring-color:initial;--nd-tw-ring-shadow:0 0 #0000;--nd-tw-inset-ring-color:initial;--nd-tw-inset-ring-shadow:0 0 #0000;--nd-tw-ring-inset:initial;--nd-tw-ring-offset-width:0px;--nd-tw-ring-offset-color:#fff;--nd-tw-ring-offset-shadow:0 0 #0000;--nd-tw-backdrop-blur:initial;--nd-tw-backdrop-brightness:initial;--nd-tw-backdrop-contrast:initial;--nd-tw-backdrop-grayscale:initial;--nd-tw-backdrop-hue-rotate:initial;--nd-tw-backdrop-invert:initial;--nd-tw-backdrop-opacity:initial;--nd-tw-backdrop-saturate:initial;--nd-tw-backdrop-sepia:initial;--nd-tw-duration:initial;--nd-tw-ease:initial;--nd-tw-space-x-reverse:0}}";
|
|
618
619
|
var styleId = "nd-injected-styles";
|
|
619
620
|
var useStyleInjector = () => {
|
|
620
621
|
useEffect(() => {
|
|
@@ -1455,7 +1456,14 @@ var DriveAccountRename = (props) => {
|
|
|
1455
1456
|
};
|
|
1456
1457
|
var DriveDndContext = createContext({
|
|
1457
1458
|
dragOverFolderId: null,
|
|
1458
|
-
draggingItemId: null
|
|
1459
|
+
draggingItemId: null,
|
|
1460
|
+
cutIds: [],
|
|
1461
|
+
cutSelection: () => {
|
|
1462
|
+
},
|
|
1463
|
+
clearCut: () => {
|
|
1464
|
+
},
|
|
1465
|
+
pasteSelection: async () => {
|
|
1466
|
+
}
|
|
1459
1467
|
});
|
|
1460
1468
|
var useDriveDnd = () => useContext(DriveDndContext);
|
|
1461
1469
|
var DriveDndProvider = (props) => {
|
|
@@ -1463,16 +1471,26 @@ var DriveDndProvider = (props) => {
|
|
|
1463
1471
|
const { items, setItems, sortBy, setSortBy, moveItem, callAPI, currentView, selectedFileIds, setSelectedFiles } = useDrive();
|
|
1464
1472
|
const [dragOverFolderId, setDragOverFolderId] = useState(null);
|
|
1465
1473
|
const [draggingItemId, setDraggingItemId] = useState(null);
|
|
1466
|
-
const
|
|
1467
|
-
|
|
1474
|
+
const [cutIds, setCutIds] = useState([]);
|
|
1475
|
+
const moveIds = useCallback(async (ids, targetFolderId) => {
|
|
1468
1476
|
if (ids.length === 1) return moveItem(ids[0], targetFolderId);
|
|
1469
1477
|
setItems((prev) => prev.filter((i) => !ids.includes(i.id)));
|
|
1470
1478
|
setSelectedFiles([]);
|
|
1471
1479
|
await callAPI("move", { method: "POST", body: JSON.stringify({ ids, targetFolderId }) });
|
|
1472
|
-
}, [
|
|
1480
|
+
}, [moveItem, setItems, setSelectedFiles, callAPI]);
|
|
1481
|
+
const moveSelection = useCallback(async (activeId, targetFolderId) => {
|
|
1482
|
+
const ids = selectedFileIds.includes(activeId) && selectedFileIds.length > 1 ? selectedFileIds : [activeId];
|
|
1483
|
+
return moveIds(ids, targetFolderId);
|
|
1484
|
+
}, [selectedFileIds, moveIds]);
|
|
1485
|
+
const cutSelection = useCallback((ids) => setCutIds(ids), []);
|
|
1486
|
+
const clearCut = useCallback(() => setCutIds([]), []);
|
|
1487
|
+
const pasteSelection = useCallback(async (targetFolderId) => {
|
|
1488
|
+
if (!cutIds.length) return;
|
|
1489
|
+
await moveIds(cutIds, targetFolderId);
|
|
1490
|
+
setCutIds([]);
|
|
1491
|
+
}, [cutIds, moveIds]);
|
|
1473
1492
|
const sensors = useSensors(
|
|
1474
|
-
useSensor(PointerSensor, { activationConstraint: { distance: 8 } })
|
|
1475
|
-
useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates })
|
|
1493
|
+
useSensor(PointerSensor, { activationConstraint: { distance: 8 } })
|
|
1476
1494
|
);
|
|
1477
1495
|
const handleDragStart = useCallback((event) => {
|
|
1478
1496
|
setDraggingItemId(event.active.id);
|
|
@@ -1521,7 +1539,7 @@ var DriveDndProvider = (props) => {
|
|
|
1521
1539
|
await callAPI("reorder", { method: "POST", body: JSON.stringify({ ids: reordered.map((i) => i.id) }) });
|
|
1522
1540
|
}, [items, setItems, sortBy, setSortBy, moveSelection, callAPI]);
|
|
1523
1541
|
const enableDnd = currentView === "BROWSE";
|
|
1524
|
-
return /* @__PURE__ */ jsx(DriveDndContext.Provider, { value: { dragOverFolderId, draggingItemId }, children: enableDnd ? /* @__PURE__ */ jsx(
|
|
1542
|
+
return /* @__PURE__ */ jsx(DriveDndContext.Provider, { value: { dragOverFolderId, draggingItemId, cutIds, cutSelection, clearCut, pasteSelection }, children: enableDnd ? /* @__PURE__ */ jsx(
|
|
1525
1543
|
DndContext,
|
|
1526
1544
|
{
|
|
1527
1545
|
sensors,
|
|
@@ -1928,9 +1946,44 @@ var useMarquee = (onSelectIds) => {
|
|
|
1928
1946
|
}) : null;
|
|
1929
1947
|
return { onMouseDown, overlay };
|
|
1930
1948
|
};
|
|
1949
|
+
var useItemTouch = (onTap, onLongPress) => {
|
|
1950
|
+
const start = useRef(null);
|
|
1951
|
+
const timer = useRef();
|
|
1952
|
+
const fired = useRef(false);
|
|
1953
|
+
const onTouchStart = (e) => {
|
|
1954
|
+
const t = e.touches[0];
|
|
1955
|
+
start.current = { x: t.clientX, y: t.clientY };
|
|
1956
|
+
fired.current = false;
|
|
1957
|
+
timer.current = setTimeout(() => {
|
|
1958
|
+
fired.current = true;
|
|
1959
|
+
onLongPress();
|
|
1960
|
+
}, 500);
|
|
1961
|
+
};
|
|
1962
|
+
const onTouchMove = (e) => {
|
|
1963
|
+
if (!start.current) return;
|
|
1964
|
+
const t = e.touches[0];
|
|
1965
|
+
if (Math.abs(t.clientX - start.current.x) > 10 || Math.abs(t.clientY - start.current.y) > 10) {
|
|
1966
|
+
clearTimeout(timer.current);
|
|
1967
|
+
start.current = null;
|
|
1968
|
+
}
|
|
1969
|
+
};
|
|
1970
|
+
const onTouchEnd = (e) => {
|
|
1971
|
+
clearTimeout(timer.current);
|
|
1972
|
+
if (start.current && !fired.current) {
|
|
1973
|
+
e.preventDefault();
|
|
1974
|
+
onTap();
|
|
1975
|
+
}
|
|
1976
|
+
start.current = null;
|
|
1977
|
+
};
|
|
1978
|
+
return { onTouchStart, onTouchMove, onTouchEnd };
|
|
1979
|
+
};
|
|
1931
1980
|
var SortableItem = (props) => {
|
|
1932
1981
|
const { id, children, disabled, isDragOverTarget } = props;
|
|
1933
|
-
const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({
|
|
1982
|
+
const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({
|
|
1983
|
+
id,
|
|
1984
|
+
disabled,
|
|
1985
|
+
attributes: { role: "gridcell", tabIndex: -1 }
|
|
1986
|
+
});
|
|
1934
1987
|
const style = {
|
|
1935
1988
|
transform: isDragOverTarget ? void 0 : CSS.Transform.toString(transform),
|
|
1936
1989
|
transition: isDragOverTarget ? "transform 0.15s ease" : transition,
|
|
@@ -1941,27 +1994,38 @@ var SortableItem = (props) => {
|
|
|
1941
1994
|
return /* @__PURE__ */ jsx("div", { ref: setNodeRef, "data-marquee-id": id, style, ...attributes, ...listeners, children });
|
|
1942
1995
|
};
|
|
1943
1996
|
var FileItem = (props) => {
|
|
1944
|
-
const { item, isSelected, isDragOver, onSelect,
|
|
1997
|
+
const { item, isSelected, isDragOver, hasSelection, isFocused, isCut, innerRef, onSelect, onOpen, onRename, onDelete, onRestore } = props;
|
|
1945
1998
|
const { apiEndpoint, viewMode, currentView } = useDrive();
|
|
1946
1999
|
const isFolder = item.information.type === "FOLDER";
|
|
1947
2000
|
const tokenParam = item.token ? `&token=${item.token}` : "";
|
|
1948
2001
|
const thumbnailUrl = `${apiEndpoint}?action=thumbnail&id=${item.id}&size=small${tokenParam}`;
|
|
1949
2002
|
const isThumbnailable = !isFolder && item.information.type === "FILE" && (item.information.mime.startsWith("image/") || item.information.mime.startsWith("video/"));
|
|
2003
|
+
const { onTouchStart, onTouchMove, onTouchEnd } = useItemTouch(
|
|
2004
|
+
() => isFolder && currentView === "BROWSE" && !hasSelection ? onOpen() : onSelect(),
|
|
2005
|
+
onSelect
|
|
2006
|
+
);
|
|
1950
2007
|
return /* @__PURE__ */ jsxs(ContextMenu, { children: [
|
|
1951
2008
|
/* @__PURE__ */ jsx(ContextMenuTrigger, { onContextMenu: (e) => e.stopPropagation(), children: /* @__PURE__ */ jsx(
|
|
1952
2009
|
"div",
|
|
1953
2010
|
{
|
|
2011
|
+
ref: innerRef,
|
|
2012
|
+
"data-item-id": item.id,
|
|
1954
2013
|
className: cn(
|
|
1955
2014
|
"group nd:relative nd:cursor-pointer nd:transition-all nd:select-none",
|
|
1956
2015
|
"nd:focus:outline-none nd:focus-visible:ring-2 nd:focus-visible:ring-primary",
|
|
1957
2016
|
viewMode === "GRID" ? "nd:flex nd:flex-col nd:rounded-lg nd:sm:rounded-xl nd:border nd:bg-card nd:dark:bg-card/50 nd:hover:bg-accent/50 nd:dark:hover:bg-accent/30 nd:overflow-hidden" : "nd:flex nd:items-center nd:gap-2 nd:sm:gap-3 nd:p-1.5 nd:sm:p-2 nd:rounded-lg nd:border nd:border-transparent nd:hover:bg-accent/50 nd:dark:hover:bg-accent/30 nd:hover:border-border",
|
|
1958
2017
|
isSelected && "nd:ring-2 nd:ring-primary nd:border-primary/50 nd:bg-primary/5 nd:dark:bg-primary/10",
|
|
1959
|
-
isDragOver && "nd:ring-2 nd:ring-primary nd:border-primary nd:scale-[1.02] nd:bg-primary/10 nd:shadow-lg"
|
|
2018
|
+
isDragOver && "nd:ring-2 nd:ring-primary nd:border-primary nd:scale-[1.02] nd:bg-primary/10 nd:shadow-lg",
|
|
2019
|
+
isCut && "nd:opacity-50"
|
|
1960
2020
|
),
|
|
1961
2021
|
onClick: onSelect,
|
|
1962
|
-
onDoubleClick,
|
|
2022
|
+
onDoubleClick: onOpen,
|
|
2023
|
+
onTouchStart,
|
|
2024
|
+
onTouchMove,
|
|
2025
|
+
onTouchEnd,
|
|
1963
2026
|
role: "button",
|
|
1964
|
-
|
|
2027
|
+
"aria-selected": isSelected,
|
|
2028
|
+
tabIndex: isFocused ? 0 : -1,
|
|
1965
2029
|
children: viewMode === "GRID" ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1966
2030
|
/* @__PURE__ */ jsxs("div", { className: "nd:aspect-square nd:w-full nd:bg-muted/30 nd:dark:bg-muted/20 nd:flex nd:items-center nd:justify-center nd:overflow-hidden nd:relative", children: [
|
|
1967
2031
|
isThumbnailable ? /* @__PURE__ */ jsx(
|
|
@@ -2014,7 +2078,7 @@ var FileItem = (props) => {
|
|
|
2014
2078
|
] });
|
|
2015
2079
|
};
|
|
2016
2080
|
var DriveFileGrid = (props) => {
|
|
2017
|
-
const { mimeFilter, className,
|
|
2081
|
+
const { mimeFilter, className, onItemClick, onItemDoubleClick } = props;
|
|
2018
2082
|
const {
|
|
2019
2083
|
items,
|
|
2020
2084
|
isLoading,
|
|
@@ -2037,10 +2101,11 @@ var DriveFileGrid = (props) => {
|
|
|
2037
2101
|
deleteItem,
|
|
2038
2102
|
restoreItem
|
|
2039
2103
|
} = useDrive();
|
|
2040
|
-
const { dragOverFolderId } = useDriveDnd();
|
|
2104
|
+
const { dragOverFolderId, cutIds, cutSelection, clearCut, pasteSelection } = useDriveDnd();
|
|
2041
2105
|
const { onMouseDown: marqueeMouseDown, overlay: marqueeOverlay } = useMarquee((ids) => {
|
|
2042
2106
|
let files = items.filter((i) => ids.includes(i.id)).map((i) => ({
|
|
2043
2107
|
id: i.id,
|
|
2108
|
+
isFolder: i.information.type === "FOLDER",
|
|
2044
2109
|
file: {
|
|
2045
2110
|
name: i.name,
|
|
2046
2111
|
mime: i.information.type === "FILE" ? i.information.mime : "",
|
|
@@ -2054,6 +2119,10 @@ var DriveFileGrid = (props) => {
|
|
|
2054
2119
|
const [dialogs, setDialogs] = React3__default.useState({ newFolder: false, rename: false, delete: false });
|
|
2055
2120
|
const [itemToDelete, setItemToDelete] = React3__default.useState(null);
|
|
2056
2121
|
const [itemToRename, setItemToRename] = React3__default.useState(null);
|
|
2122
|
+
const [focusedId, setFocusedId] = React3__default.useState(null);
|
|
2123
|
+
const itemRefs = useRef(/* @__PURE__ */ new Map());
|
|
2124
|
+
const gridRef = useRef(null);
|
|
2125
|
+
const hadFocusRef = useRef(false);
|
|
2057
2126
|
const processedItems = useMemo(() => {
|
|
2058
2127
|
let filtered = items;
|
|
2059
2128
|
if (mimeFilter) {
|
|
@@ -2118,29 +2187,92 @@ var DriveFileGrid = (props) => {
|
|
|
2118
2187
|
if (observerTarget.current) observer.unobserve(observerTarget.current);
|
|
2119
2188
|
};
|
|
2120
2189
|
}, [hasMore, isLoadingMore, loadMore]);
|
|
2121
|
-
const
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
}
|
|
2127
|
-
toggleSelection(item);
|
|
2128
|
-
onItemClick?.(item);
|
|
2190
|
+
const flatItems = useMemo(() => Object.values(groupedItems).flat(), [groupedItems]);
|
|
2191
|
+
const effectiveFocusedId = flatItems.some((i) => i.id === focusedId) ? focusedId : flatItems[0]?.id ?? null;
|
|
2192
|
+
const focusItem = (id) => {
|
|
2193
|
+
setFocusedId(id);
|
|
2194
|
+
itemRefs.current.get(id)?.focus();
|
|
2129
2195
|
};
|
|
2130
|
-
|
|
2196
|
+
useEffect(() => {
|
|
2197
|
+
if (!hadFocusRef.current || !effectiveFocusedId) return;
|
|
2198
|
+
if (document.activeElement === document.body) focusItem(effectiveFocusedId);
|
|
2199
|
+
}, [flatItems]);
|
|
2200
|
+
const handleItemSelect = (item) => {
|
|
2201
|
+
if (item.id.startsWith("temp-")) return;
|
|
2131
2202
|
toggleSelected({
|
|
2132
2203
|
id: item.id,
|
|
2204
|
+
isFolder: item.information.type === "FOLDER",
|
|
2133
2205
|
file: {
|
|
2134
2206
|
name: item.name,
|
|
2135
2207
|
mime: item.information.type === "FILE" ? item.information.mime : "",
|
|
2136
2208
|
size: item.information.type === "FILE" ? item.information.sizeInBytes : 0
|
|
2137
2209
|
}
|
|
2138
2210
|
});
|
|
2211
|
+
onItemClick?.(item);
|
|
2139
2212
|
};
|
|
2140
|
-
const
|
|
2213
|
+
const handleItemOpen = (item) => {
|
|
2141
2214
|
if (item.information.type === "FOLDER" && currentView === "BROWSE") navigateToFolder(item);
|
|
2142
2215
|
else onItemDoubleClick?.(item);
|
|
2143
2216
|
};
|
|
2217
|
+
const handleGridKeyDown = (e) => {
|
|
2218
|
+
const isMeta = e.ctrlKey || e.metaKey;
|
|
2219
|
+
if (isMeta && e.key.toLowerCase() === "x") {
|
|
2220
|
+
if (selectedFileIds.length > 0) {
|
|
2221
|
+
e.preventDefault();
|
|
2222
|
+
cutSelection(selectedFileIds);
|
|
2223
|
+
}
|
|
2224
|
+
return;
|
|
2225
|
+
}
|
|
2226
|
+
if (isMeta && e.key.toLowerCase() === "v") {
|
|
2227
|
+
e.preventDefault();
|
|
2228
|
+
pasteSelection(currentFolderId ?? "root");
|
|
2229
|
+
return;
|
|
2230
|
+
}
|
|
2231
|
+
const currentIndex = effectiveFocusedId ? flatItems.findIndex((i) => i.id === effectiveFocusedId) : -1;
|
|
2232
|
+
if (currentIndex === -1 && !["Escape"].includes(e.key)) return;
|
|
2233
|
+
const moveFocusTo = (index) => {
|
|
2234
|
+
const target = flatItems[Math.max(0, Math.min(flatItems.length - 1, index))];
|
|
2235
|
+
if (!target) return;
|
|
2236
|
+
focusItem(target.id);
|
|
2237
|
+
if (selectionMode.type === "SINGLE") handleItemSelect(target);
|
|
2238
|
+
};
|
|
2239
|
+
switch (e.key) {
|
|
2240
|
+
case "ArrowRight":
|
|
2241
|
+
case "ArrowDown":
|
|
2242
|
+
e.preventDefault();
|
|
2243
|
+
moveFocusTo(currentIndex + 1);
|
|
2244
|
+
break;
|
|
2245
|
+
case "ArrowLeft":
|
|
2246
|
+
case "ArrowUp":
|
|
2247
|
+
e.preventDefault();
|
|
2248
|
+
moveFocusTo(currentIndex - 1);
|
|
2249
|
+
break;
|
|
2250
|
+
case "Home":
|
|
2251
|
+
e.preventDefault();
|
|
2252
|
+
moveFocusTo(0);
|
|
2253
|
+
break;
|
|
2254
|
+
case "End":
|
|
2255
|
+
e.preventDefault();
|
|
2256
|
+
moveFocusTo(flatItems.length - 1);
|
|
2257
|
+
break;
|
|
2258
|
+
case " ":
|
|
2259
|
+
case "Spacebar":
|
|
2260
|
+
e.preventDefault();
|
|
2261
|
+
if (flatItems[currentIndex]) handleItemSelect(flatItems[currentIndex]);
|
|
2262
|
+
break;
|
|
2263
|
+
case "Enter":
|
|
2264
|
+
e.preventDefault();
|
|
2265
|
+
if (flatItems[currentIndex]) handleItemOpen(flatItems[currentIndex]);
|
|
2266
|
+
break;
|
|
2267
|
+
case "Escape":
|
|
2268
|
+
if (selectedFileIds.length > 0 || cutIds.length > 0) {
|
|
2269
|
+
e.stopPropagation();
|
|
2270
|
+
if (selectedFileIds.length > 0) setSelectedFiles([]);
|
|
2271
|
+
else clearCut();
|
|
2272
|
+
}
|
|
2273
|
+
break;
|
|
2274
|
+
}
|
|
2275
|
+
};
|
|
2144
2276
|
const enableDrag = currentView === "BROWSE";
|
|
2145
2277
|
if (isLoading && items.length === 0) {
|
|
2146
2278
|
return /* @__PURE__ */ jsxs("div", { className: cn("nd:flex-1 nd:flex nd:flex-col", className), children: [
|
|
@@ -2173,51 +2305,87 @@ var DriveFileGrid = (props) => {
|
|
|
2173
2305
|
indicatorClassName: "nd:bg-primary"
|
|
2174
2306
|
}
|
|
2175
2307
|
) }),
|
|
2176
|
-
/* @__PURE__ */ jsxs(
|
|
2177
|
-
|
|
2178
|
-
|
|
2179
|
-
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
|
|
2186
|
-
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
|
|
2192
|
-
{
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
|
|
2308
|
+
/* @__PURE__ */ jsxs(
|
|
2309
|
+
"div",
|
|
2310
|
+
{
|
|
2311
|
+
ref: gridRef,
|
|
2312
|
+
className: cn("nd:flex-1 nd:overflow-y-auto nd:min-h-0 nd:relative nd:p-2 nd:sm:p-3 nd:md:p-4", className),
|
|
2313
|
+
onMouseDown: marqueeMouseDown,
|
|
2314
|
+
onFocus: () => {
|
|
2315
|
+
hadFocusRef.current = true;
|
|
2316
|
+
},
|
|
2317
|
+
onKeyDown: handleGridKeyDown,
|
|
2318
|
+
role: "grid",
|
|
2319
|
+
"aria-label": "Files and folders",
|
|
2320
|
+
"aria-multiselectable": selectionMode.type === "MULTIPLE",
|
|
2321
|
+
children: [
|
|
2322
|
+
marqueeOverlay,
|
|
2323
|
+
/* @__PURE__ */ jsx("div", { className: "nd:sr-only", "aria-live": "polite", children: selectedFileIds.length > 0 ? `${selectedFileIds.length} selected` : "" }),
|
|
2324
|
+
/* @__PURE__ */ jsx("div", { className: "nd:space-y-4 nd:sm:space-y-6", children: Object.entries(groupedItems).map(([groupName, groupItems]) => /* @__PURE__ */ jsxs("div", { children: [
|
|
2325
|
+
groupBy !== "NONE" && /* @__PURE__ */ jsxs("h3", { className: "nd:text-xs nd:font-semibold nd:text-muted-foreground nd:uppercase nd:tracking-wide nd:mb-2 nd:sm:mb-3 nd:px-1", children: [
|
|
2326
|
+
groupName,
|
|
2327
|
+
" ",
|
|
2328
|
+
/* @__PURE__ */ jsxs("span", { className: "nd:opacity-50", children: [
|
|
2329
|
+
"(",
|
|
2330
|
+
groupItems.length,
|
|
2331
|
+
")"
|
|
2332
|
+
] })
|
|
2333
|
+
] }),
|
|
2334
|
+
/* @__PURE__ */ jsx(SortableContext, { items: groupItems.map((i) => i.id), strategy: rectSortingStrategy, disabled: !enableDrag, children: /* @__PURE__ */ jsx(
|
|
2335
|
+
"div",
|
|
2198
2336
|
{
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
2337
|
+
role: "row",
|
|
2338
|
+
className: cn(
|
|
2339
|
+
viewMode === "GRID" ? "nd:grid nd:grid-cols-3 nd:sm:grid-cols-4 nd:md:grid-cols-5 nd:lg:grid-cols-6 nd:xl:grid-cols-7 nd:gap-2 nd:sm:gap-3" : "nd:flex nd:flex-col nd:gap-1"
|
|
2340
|
+
),
|
|
2341
|
+
children: groupItems.map((item) => /* @__PURE__ */ jsx(
|
|
2342
|
+
SortableItem,
|
|
2343
|
+
{
|
|
2344
|
+
id: item.id,
|
|
2345
|
+
disabled: !enableDrag,
|
|
2346
|
+
isDragOverTarget: item.information.type === "FOLDER" && dragOverFolderId === item.id,
|
|
2347
|
+
children: /* @__PURE__ */ jsx(
|
|
2348
|
+
FileItem,
|
|
2349
|
+
{
|
|
2350
|
+
item,
|
|
2351
|
+
isSelected: selectedFileIds.includes(item.id),
|
|
2352
|
+
isDragOver: item.information.type === "FOLDER" && dragOverFolderId === item.id,
|
|
2353
|
+
hasSelection: selectedFileIds.length > 0,
|
|
2354
|
+
isFocused: effectiveFocusedId === item.id,
|
|
2355
|
+
isCut: cutIds.includes(item.id),
|
|
2356
|
+
innerRef: (el) => {
|
|
2357
|
+
if (el) itemRefs.current.set(item.id, el);
|
|
2358
|
+
else itemRefs.current.delete(item.id);
|
|
2359
|
+
},
|
|
2360
|
+
onSelect: () => {
|
|
2361
|
+
setFocusedId(item.id);
|
|
2362
|
+
handleItemSelect(item);
|
|
2363
|
+
},
|
|
2364
|
+
onOpen: () => {
|
|
2365
|
+
setFocusedId(item.id);
|
|
2366
|
+
handleItemOpen(item);
|
|
2367
|
+
},
|
|
2368
|
+
onRename: () => {
|
|
2369
|
+
setItemToRename(item);
|
|
2370
|
+
setDialogs((prev) => ({ ...prev, rename: true }));
|
|
2371
|
+
},
|
|
2372
|
+
onDelete: () => {
|
|
2373
|
+
setItemToDelete(item);
|
|
2374
|
+
setDialogs((prev) => ({ ...prev, delete: true }));
|
|
2375
|
+
},
|
|
2376
|
+
onRestore: () => restoreItem(item.id)
|
|
2377
|
+
}
|
|
2378
|
+
)
|
|
2379
|
+
},
|
|
2380
|
+
item.id
|
|
2381
|
+
))
|
|
2213
2382
|
}
|
|
2214
|
-
)
|
|
2215
|
-
},
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
|
|
2219
|
-
|
|
2220
|
-
] }),
|
|
2383
|
+
) })
|
|
2384
|
+
] }, groupName)) }),
|
|
2385
|
+
hasMore && /* @__PURE__ */ jsx("div", { ref: observerTarget, className: "nd:flex nd:justify-center nd:py-6", children: isLoadingMore && /* @__PURE__ */ jsx(Loader2, { className: "nd:size-6 nd:animate-spin nd:text-muted-foreground" }) })
|
|
2386
|
+
]
|
|
2387
|
+
}
|
|
2388
|
+
),
|
|
2221
2389
|
/* @__PURE__ */ jsx(
|
|
2222
2390
|
DriveFolderCreate,
|
|
2223
2391
|
{
|
|
@@ -2301,6 +2469,22 @@ var DriveHeader = ({ className }) => {
|
|
|
2301
2469
|
]
|
|
2302
2470
|
}
|
|
2303
2471
|
),
|
|
2472
|
+
selectedFileIds.length > 0 && /* @__PURE__ */ jsxs("div", { className: "nd:flex nd:items-center nd:gap-1.5 nd:text-xs nd:font-medium nd:bg-muted nd:rounded-full nd:pl-2.5 nd:pr-1.5 nd:py-1", children: [
|
|
2473
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
2474
|
+
selectedFileIds.length,
|
|
2475
|
+
" selected"
|
|
2476
|
+
] }),
|
|
2477
|
+
/* @__PURE__ */ jsx(
|
|
2478
|
+
"button",
|
|
2479
|
+
{
|
|
2480
|
+
type: "button",
|
|
2481
|
+
onClick: () => setSelectedFiles([]),
|
|
2482
|
+
className: "nd:text-muted-foreground nd:hover:text-foreground nd:rounded-full nd:hover:bg-background/80 nd:p-0.5",
|
|
2483
|
+
"aria-label": "Clear selection",
|
|
2484
|
+
children: /* @__PURE__ */ jsx(X, { className: "nd:size-3.5" })
|
|
2485
|
+
}
|
|
2486
|
+
)
|
|
2487
|
+
] }),
|
|
2304
2488
|
(selectedFileIds.length > 0 || currentView === "TRASH") && /* @__PURE__ */ jsxs(DropdownMenu, { children: [
|
|
2305
2489
|
/* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
2306
2490
|
Button,
|
|
@@ -3333,6 +3517,7 @@ var DriveFileChooser = (props) => {
|
|
|
3333
3517
|
const isFile = item?.information?.type === "FILE";
|
|
3334
3518
|
const uploaded = {
|
|
3335
3519
|
id: item.id,
|
|
3520
|
+
isFolder: !isFile,
|
|
3336
3521
|
file: { name: item.name, mime: isFile ? item.information.mime : "", size: isFile ? item.information.sizeInBytes : 0 }
|
|
3337
3522
|
};
|
|
3338
3523
|
const current = valueRef.current;
|
|
@@ -3365,10 +3550,11 @@ var DriveFileChooser = (props) => {
|
|
|
3365
3550
|
else setSelectedFiles([value]);
|
|
3366
3551
|
}
|
|
3367
3552
|
}, [isOpen, value, setSelectedFiles, triggerFetch]);
|
|
3553
|
+
const selectableFiles = useMemo(() => selectedFiles.filter((f) => !f.isFolder), [selectedFiles]);
|
|
3368
3554
|
const handleConfirm = useCallback(() => {
|
|
3369
|
-
onChange(multiple ?
|
|
3555
|
+
onChange(multiple ? selectableFiles : selectableFiles[0] || null);
|
|
3370
3556
|
setIsOpen(false);
|
|
3371
|
-
}, [
|
|
3557
|
+
}, [selectableFiles, multiple, onChange]);
|
|
3372
3558
|
const handleRemove = useCallback((idToRemove) => {
|
|
3373
3559
|
if (multiple && Array.isArray(value)) onChange(value.filter((f) => f.id !== idToRemove));
|
|
3374
3560
|
else onChange(null);
|
|
@@ -3453,62 +3639,75 @@ var DriveFileChooser = (props) => {
|
|
|
3453
3639
|
u.status !== "error" && /* @__PURE__ */ jsx(Progress, { value: Math.round(u.percent ?? 0), className: "nd:mt-1.5" }),
|
|
3454
3640
|
u.status === "error" && u.error && /* @__PURE__ */ jsx("p", { className: "nd:text-xs nd:text-destructive nd:mt-1", children: u.error })
|
|
3455
3641
|
] }, u.id)) }),
|
|
3456
|
-
/* @__PURE__ */ jsx(Dialog2, { open: isOpen, onOpenChange: setIsOpen, children: /* @__PURE__ */ jsxs(
|
|
3457
|
-
|
|
3458
|
-
|
|
3459
|
-
|
|
3460
|
-
|
|
3461
|
-
|
|
3462
|
-
|
|
3463
|
-
|
|
3464
|
-
|
|
3465
|
-
|
|
3466
|
-
|
|
3467
|
-
|
|
3468
|
-
/* @__PURE__ */
|
|
3469
|
-
|
|
3470
|
-
/* @__PURE__ */
|
|
3471
|
-
|
|
3642
|
+
/* @__PURE__ */ jsx(Dialog2, { open: isOpen, onOpenChange: setIsOpen, children: /* @__PURE__ */ jsxs(
|
|
3643
|
+
Dialog2Content,
|
|
3644
|
+
{
|
|
3645
|
+
showCloseButton: false,
|
|
3646
|
+
className: "nd-drive-root",
|
|
3647
|
+
onEscapeKeyDown: (e) => {
|
|
3648
|
+
if (selectedFiles.length > 0) {
|
|
3649
|
+
e.preventDefault();
|
|
3650
|
+
setSelectedFiles([]);
|
|
3651
|
+
}
|
|
3652
|
+
},
|
|
3653
|
+
children: [
|
|
3654
|
+
/* @__PURE__ */ jsxs(Dialog2Header, { className: "nd:gap-2", children: [
|
|
3655
|
+
/* @__PURE__ */ jsx(MobileSidebarSheet, {}),
|
|
3656
|
+
/* @__PURE__ */ jsxs(Dialog2Title, { className: "nd:flex-1", children: [
|
|
3657
|
+
"Select ",
|
|
3658
|
+
multiple ? "Files" : "File"
|
|
3659
|
+
] }),
|
|
3660
|
+
/* @__PURE__ */ jsx(Button, { type: "button", variant: "ghost", size: "icon", className: "nd:size-8", onClick: () => setIsOpen(false), children: /* @__PURE__ */ jsx(X, { className: "nd:size-4" }) })
|
|
3472
3661
|
] }),
|
|
3473
|
-
/* @__PURE__ */
|
|
3474
|
-
|
|
3475
|
-
|
|
3476
|
-
|
|
3477
|
-
|
|
3478
|
-
|
|
3479
|
-
|
|
3480
|
-
|
|
3481
|
-
|
|
3662
|
+
/* @__PURE__ */ jsxs(Dialog2Body, { className: "nd:flex nd:flex-col nd:md:flex-row", children: [
|
|
3663
|
+
/* @__PURE__ */ jsx("div", { className: "nd:hidden nd:md:flex nd:w-52 nd:lg:w-56 nd:border-r nd:shrink-0", children: /* @__PURE__ */ jsx(ChooserSidebar, {}) }),
|
|
3664
|
+
/* @__PURE__ */ jsx(DriveDndProvider, { children: /* @__PURE__ */ jsxs("div", { className: "nd:flex-1 nd:flex nd:flex-col nd:min-w-0 nd:min-h-0", children: [
|
|
3665
|
+
/* @__PURE__ */ jsx(DriveHeader, { className: "nd:border-b" }),
|
|
3666
|
+
/* @__PURE__ */ jsxs("div", { className: "nd:flex nd:items-center nd:gap-2 nd:px-3 nd:py-2 nd:border-b nd:bg-muted/20 nd:dark:bg-muted/10", children: [
|
|
3667
|
+
/* @__PURE__ */ jsx(DrivePathBar, { className: "nd:flex-1" }),
|
|
3668
|
+
/* @__PURE__ */ jsx(DriveUpload, { compact: true, accept })
|
|
3669
|
+
] }),
|
|
3670
|
+
/* @__PURE__ */ jsx(DriveFileGrid, { mimeFilter: accept, className: "nd:flex-1" })
|
|
3671
|
+
] }) })
|
|
3482
3672
|
] }),
|
|
3483
|
-
|
|
3484
|
-
"
|
|
3485
|
-
|
|
3486
|
-
|
|
3673
|
+
multiple && selectableFiles.length > 0 && /* @__PURE__ */ jsxs("div", { className: "nd:border-t nd:px-3 nd:py-2 nd:bg-muted/20 nd:dark:bg-muted/10", children: [
|
|
3674
|
+
/* @__PURE__ */ jsxs("div", { className: "nd:flex nd:items-center nd:justify-between nd:mb-1.5", children: [
|
|
3675
|
+
/* @__PURE__ */ jsxs("span", { className: "nd:text-xs nd:font-medium nd:text-muted-foreground", children: [
|
|
3676
|
+
selectableFiles.length,
|
|
3677
|
+
maxFiles ? ` / ${maxFiles}` : "",
|
|
3678
|
+
" selected"
|
|
3679
|
+
] }),
|
|
3680
|
+
maxFiles && selectableFiles.length >= maxFiles && /* @__PURE__ */ jsxs("span", { className: "nd:text-[11px] nd:font-medium nd:text-amber-600 nd:dark:text-amber-500", children: [
|
|
3681
|
+
"Max ",
|
|
3682
|
+
maxFiles,
|
|
3683
|
+
" files"
|
|
3684
|
+
] })
|
|
3685
|
+
] }),
|
|
3686
|
+
/* @__PURE__ */ jsx("div", { className: "nd:flex nd:gap-2 nd:overflow-x-auto nd:pt-2 nd:pr-2 nd:pb-1", children: selectableFiles.filter((file) => file?.file).map((file) => /* @__PURE__ */ jsxs("div", { className: "nd:relative nd:shrink-0 group", children: [
|
|
3687
|
+
/* @__PURE__ */ jsx("div", { className: "nd:size-16 nd:rounded-lg nd:overflow-hidden nd:bg-muted/30 nd:border nd:flex nd:items-center nd:justify-center", children: file.file.mime?.startsWith("image/") ? /* @__PURE__ */ jsx("img", { src: createUrl(file), alt: file.file.name || "", className: "nd:size-full nd:object-cover" }) : getFileIcon(file.file.mime || "", false, "nd:size-7 nd:text-muted-foreground") }),
|
|
3688
|
+
/* @__PURE__ */ jsx(
|
|
3689
|
+
"button",
|
|
3690
|
+
{
|
|
3691
|
+
type: "button",
|
|
3692
|
+
onClick: () => setSelectedFiles((prev) => prev.filter((f) => f.id !== file.id)),
|
|
3693
|
+
className: "nd:absolute nd:-top-1.5 nd:-right-1.5 nd:size-5 nd:rounded-full nd:bg-foreground nd:text-background nd:flex nd:items-center nd:justify-center nd:shadow nd:hover:scale-110 nd:transition-transform",
|
|
3694
|
+
"aria-label": `Remove ${file.file.name || "file"}`,
|
|
3695
|
+
children: /* @__PURE__ */ jsx(X, { className: "nd:size-3" })
|
|
3696
|
+
}
|
|
3697
|
+
),
|
|
3698
|
+
/* @__PURE__ */ jsx("p", { className: "nd:mt-1 nd:w-16 nd:text-[10px] nd:text-muted-foreground nd:truncate nd:text-center", title: file.file.name, children: file.file.name })
|
|
3699
|
+
] }, file.id)) })
|
|
3700
|
+
] }),
|
|
3701
|
+
/* @__PURE__ */ jsxs(Dialog2Footer, { children: [
|
|
3702
|
+
/* @__PURE__ */ jsx(Button, { type: "button", variant: "outline", onClick: () => setIsOpen(false), children: "Cancel" }),
|
|
3703
|
+
/* @__PURE__ */ jsxs(Button, { type: "button", onClick: handleConfirm, disabled: selectableFiles.length === 0, children: [
|
|
3704
|
+
"Select",
|
|
3705
|
+
selectableFiles.length > 0 ? ` (${selectableFiles.length})` : ""
|
|
3706
|
+
] })
|
|
3487
3707
|
] })
|
|
3488
|
-
]
|
|
3489
|
-
|
|
3490
|
-
|
|
3491
|
-
/* @__PURE__ */ jsx(
|
|
3492
|
-
"button",
|
|
3493
|
-
{
|
|
3494
|
-
type: "button",
|
|
3495
|
-
onClick: () => setSelectedFiles((prev) => prev.filter((f) => f.id !== file.id)),
|
|
3496
|
-
className: "nd:absolute nd:-top-1.5 nd:-right-1.5 nd:size-5 nd:rounded-full nd:bg-foreground nd:text-background nd:flex nd:items-center nd:justify-center nd:shadow nd:hover:scale-110 nd:transition-transform",
|
|
3497
|
-
"aria-label": `Remove ${file.file.name || "file"}`,
|
|
3498
|
-
children: /* @__PURE__ */ jsx(X, { className: "nd:size-3" })
|
|
3499
|
-
}
|
|
3500
|
-
),
|
|
3501
|
-
/* @__PURE__ */ jsx("p", { className: "nd:mt-1 nd:w-16 nd:text-[10px] nd:text-muted-foreground nd:truncate nd:text-center", title: file.file.name, children: file.file.name })
|
|
3502
|
-
] }, file.id)) })
|
|
3503
|
-
] }),
|
|
3504
|
-
/* @__PURE__ */ jsxs(Dialog2Footer, { children: [
|
|
3505
|
-
/* @__PURE__ */ jsx(Button, { type: "button", variant: "outline", onClick: () => setIsOpen(false), children: "Cancel" }),
|
|
3506
|
-
/* @__PURE__ */ jsxs(Button, { type: "button", onClick: handleConfirm, disabled: selectedFiles.length === 0, children: [
|
|
3507
|
-
"Select",
|
|
3508
|
-
selectedFiles.length > 0 ? ` (${selectedFiles.length})` : ""
|
|
3509
|
-
] })
|
|
3510
|
-
] })
|
|
3511
|
-
] }) })
|
|
3708
|
+
]
|
|
3709
|
+
}
|
|
3710
|
+
) })
|
|
3512
3711
|
] });
|
|
3513
3712
|
};
|
|
3514
3713
|
var SidebarContent = (props) => {
|
|
@@ -3808,246 +4007,9 @@ var DriveSidebar = ({ className }) => {
|
|
|
3808
4007
|
] })
|
|
3809
4008
|
] }) });
|
|
3810
4009
|
};
|
|
3811
|
-
var SortableItem2 = (props) => {
|
|
3812
|
-
const { id, children, disabled, isDragOverTarget } = props;
|
|
3813
|
-
const {
|
|
3814
|
-
attributes,
|
|
3815
|
-
listeners,
|
|
3816
|
-
setNodeRef,
|
|
3817
|
-
transform,
|
|
3818
|
-
transition,
|
|
3819
|
-
isDragging
|
|
3820
|
-
} = useSortable({ id, disabled });
|
|
3821
|
-
const style = {
|
|
3822
|
-
transform: isDragOverTarget ? void 0 : CSS.Transform.toString(transform),
|
|
3823
|
-
transition: isDragOverTarget ? "transform 0.15s ease" : transition,
|
|
3824
|
-
opacity: isDragging ? 0.5 : 1,
|
|
3825
|
-
zIndex: isDragging ? 50 : "auto",
|
|
3826
|
-
position: "relative"
|
|
3827
|
-
};
|
|
3828
|
-
return /* @__PURE__ */ jsx("div", { ref: setNodeRef, "data-marquee-id": id, style, ...attributes, ...listeners, children });
|
|
3829
|
-
};
|
|
3830
4010
|
var DriveExplorer = (props) => {
|
|
3831
|
-
const { onItemClick, onItemDoubleClick, mimeFilter, className
|
|
3832
|
-
|
|
3833
|
-
items,
|
|
3834
|
-
isLoading,
|
|
3835
|
-
error,
|
|
3836
|
-
apiEndpoint,
|
|
3837
|
-
currentFolderId,
|
|
3838
|
-
setItems,
|
|
3839
|
-
viewMode,
|
|
3840
|
-
groupBy,
|
|
3841
|
-
sortBy,
|
|
3842
|
-
setSortBy,
|
|
3843
|
-
selectedFileIds,
|
|
3844
|
-
toggleSelected,
|
|
3845
|
-
setSelectedFiles,
|
|
3846
|
-
selectionMode,
|
|
3847
|
-
navigateToFolder,
|
|
3848
|
-
hasMore,
|
|
3849
|
-
loadMore,
|
|
3850
|
-
isLoadingMore,
|
|
3851
|
-
callAPI,
|
|
3852
|
-
currentView,
|
|
3853
|
-
moveItem,
|
|
3854
|
-
deleteItem,
|
|
3855
|
-
restoreItem,
|
|
3856
|
-
createFolder,
|
|
3857
|
-
renameItem: renameItemAction
|
|
3858
|
-
} = useDrive();
|
|
3859
|
-
const [dialogs, setDialogs] = React3__default.useState({
|
|
3860
|
-
newFolder: false,
|
|
3861
|
-
rename: false,
|
|
3862
|
-
delete: false
|
|
3863
|
-
});
|
|
3864
|
-
const [itemToDelete, setItemToDelete] = React3__default.useState(null);
|
|
3865
|
-
const [itemToRename, setItemToRename] = React3__default.useState(null);
|
|
3866
|
-
const [dragOverFolderId, setDragOverFolderId] = React3__default.useState(null);
|
|
3867
|
-
const [draggingItemId, setDraggingItemId] = React3__default.useState(null);
|
|
3868
|
-
const sensors = useSensors(
|
|
3869
|
-
useSensor(PointerSensor, { activationConstraint: { distance: 8 } }),
|
|
3870
|
-
// Prevent drag on simple click
|
|
3871
|
-
useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates })
|
|
3872
|
-
);
|
|
3873
|
-
const handleDragStart = (event) => {
|
|
3874
|
-
setDraggingItemId(event.active.id);
|
|
3875
|
-
};
|
|
3876
|
-
const moveSelection = async (activeId, targetFolderId) => {
|
|
3877
|
-
const ids = selectedFileIds.includes(activeId) && selectedFileIds.length > 1 ? selectedFileIds : [activeId];
|
|
3878
|
-
if (ids.length === 1) return moveItem(ids[0], targetFolderId);
|
|
3879
|
-
setItems((prev) => prev.filter((i) => !ids.includes(i.id)));
|
|
3880
|
-
setSelectedFiles([]);
|
|
3881
|
-
await callAPI("move", { method: "POST", body: JSON.stringify({ ids, targetFolderId }) });
|
|
3882
|
-
};
|
|
3883
|
-
const handleDragOver = (event) => {
|
|
3884
|
-
const { over } = event;
|
|
3885
|
-
if (!over) {
|
|
3886
|
-
setDragOverFolderId(null);
|
|
3887
|
-
return;
|
|
3888
|
-
}
|
|
3889
|
-
const overItem = items.find((i) => i.id === over.id);
|
|
3890
|
-
if (overItem?.information.type === "FOLDER" && over.id !== draggingItemId) {
|
|
3891
|
-
setDragOverFolderId(over.id);
|
|
3892
|
-
} else {
|
|
3893
|
-
setDragOverFolderId(null);
|
|
3894
|
-
}
|
|
3895
|
-
};
|
|
3896
|
-
const handleDragEnd = async (event) => {
|
|
3897
|
-
const { active, over } = event;
|
|
3898
|
-
setDragOverFolderId(null);
|
|
3899
|
-
setDraggingItemId(null);
|
|
3900
|
-
if (!over || active.id === over.id) {
|
|
3901
|
-
return;
|
|
3902
|
-
}
|
|
3903
|
-
const overId = over.id;
|
|
3904
|
-
if (overId.startsWith("path-")) {
|
|
3905
|
-
const targetFolderId = overId.replace("path-", "");
|
|
3906
|
-
await moveSelection(active.id, targetFolderId === "root" ? "root" : targetFolderId);
|
|
3907
|
-
return;
|
|
3908
|
-
}
|
|
3909
|
-
const overItem = items.find((i) => i.id === over.id);
|
|
3910
|
-
const activeItem = items.find((i) => i.id === active.id);
|
|
3911
|
-
if (overItem?.information.type === "FOLDER" && activeItem) {
|
|
3912
|
-
await moveSelection(active.id, over.id);
|
|
3913
|
-
return;
|
|
3914
|
-
}
|
|
3915
|
-
setItems((prevItems) => {
|
|
3916
|
-
const oldIndex2 = prevItems.findIndex((i) => i.id === active.id);
|
|
3917
|
-
const newIndex2 = prevItems.findIndex((i) => i.id === over.id);
|
|
3918
|
-
return arrayMove(prevItems, oldIndex2, newIndex2);
|
|
3919
|
-
});
|
|
3920
|
-
if (sortBy.field !== "order") {
|
|
3921
|
-
setSortBy({ field: "order", order: 1 });
|
|
3922
|
-
}
|
|
3923
|
-
const oldIndex = items.findIndex((i) => i.id === active.id);
|
|
3924
|
-
const newIndex = items.findIndex((i) => i.id === over.id);
|
|
3925
|
-
const newOrderIds = arrayMove(items, oldIndex, newIndex).map((i) => i.id);
|
|
3926
|
-
await callAPI("reorder", {
|
|
3927
|
-
method: "POST",
|
|
3928
|
-
body: JSON.stringify({ ids: newOrderIds })
|
|
3929
|
-
});
|
|
3930
|
-
};
|
|
3931
|
-
const processedItems = useMemo(() => {
|
|
3932
|
-
let filtered = items;
|
|
3933
|
-
if (mimeFilter) {
|
|
3934
|
-
filtered = filtered.filter((item) => matchesMimeFilter(item.information.type === "FILE" ? item.information.mime : "", item.information.type === "FOLDER", mimeFilter));
|
|
3935
|
-
}
|
|
3936
|
-
return [...filtered].sort((a, b) => {
|
|
3937
|
-
if (a.information.type === "FOLDER" && b.information.type !== "FOLDER") return -1;
|
|
3938
|
-
if (a.information.type !== "FOLDER" && b.information.type === "FOLDER") return 1;
|
|
3939
|
-
const field = sortBy.field;
|
|
3940
|
-
const order = sortBy.order;
|
|
3941
|
-
if (field === "order") {
|
|
3942
|
-
return 0;
|
|
3943
|
-
}
|
|
3944
|
-
let valA;
|
|
3945
|
-
let valB;
|
|
3946
|
-
if (field === "name") {
|
|
3947
|
-
valA = a.name.toLowerCase();
|
|
3948
|
-
valB = b.name.toLowerCase();
|
|
3949
|
-
} else if (field === "size") {
|
|
3950
|
-
valA = a.information.type === "FILE" ? a.information.sizeInBytes : 0;
|
|
3951
|
-
valB = b.information.type === "FILE" ? b.information.sizeInBytes : 0;
|
|
3952
|
-
} else {
|
|
3953
|
-
valA = new Date(a.createdAt).getTime();
|
|
3954
|
-
valB = new Date(b.createdAt).getTime();
|
|
3955
|
-
}
|
|
3956
|
-
if (valA < valB) return -1 * order;
|
|
3957
|
-
if (valA > valB) return 1 * order;
|
|
3958
|
-
return 0;
|
|
3959
|
-
});
|
|
3960
|
-
}, [items, mimeFilter, sortBy]);
|
|
3961
|
-
const groupedItems = useMemo(() => {
|
|
3962
|
-
if (groupBy === "NONE") return { "All": processedItems };
|
|
3963
|
-
const groups = {
|
|
3964
|
-
"Today": [],
|
|
3965
|
-
"Yesterday": [],
|
|
3966
|
-
"Earlier this Week": [],
|
|
3967
|
-
"Last Week": [],
|
|
3968
|
-
"Older": []
|
|
3969
|
-
};
|
|
3970
|
-
const now = /* @__PURE__ */ new Date();
|
|
3971
|
-
const startOfCurrentWeek = startOfWeek(now);
|
|
3972
|
-
const startOfLastWeek = startOfWeek(subWeeks(now, 1));
|
|
3973
|
-
processedItems.forEach((item) => {
|
|
3974
|
-
const date = new Date(item.createdAt);
|
|
3975
|
-
if (isToday(date)) groups["Today"].push(item);
|
|
3976
|
-
else if (isYesterday(date)) groups["Yesterday"].push(item);
|
|
3977
|
-
else if (isAfter(date, startOfCurrentWeek)) groups["Earlier this Week"].push(item);
|
|
3978
|
-
else if (isAfter(date, startOfLastWeek)) groups["Last Week"].push(item);
|
|
3979
|
-
else groups["Older"].push(item);
|
|
3980
|
-
});
|
|
3981
|
-
return Object.fromEntries(Object.entries(groups).filter(([_, items2]) => items2.length > 0));
|
|
3982
|
-
}, [processedItems, groupBy]);
|
|
3983
|
-
const observerTarget = useRef(null);
|
|
3984
|
-
useEffect(() => {
|
|
3985
|
-
const observer = new IntersectionObserver((entries) => {
|
|
3986
|
-
if (entries[0].isIntersecting && hasMore && !isLoadingMore) loadMore();
|
|
3987
|
-
}, { threshold: 0.1 });
|
|
3988
|
-
if (observerTarget.current) observer.observe(observerTarget.current);
|
|
3989
|
-
return () => {
|
|
3990
|
-
if (observerTarget.current) observer.unobserve(observerTarget.current);
|
|
3991
|
-
};
|
|
3992
|
-
}, [hasMore, isLoadingMore, loadMore]);
|
|
3993
|
-
const handleItemClick = (e, item) => {
|
|
3994
|
-
if (item.id.startsWith("temp-")) return;
|
|
3995
|
-
if (item.information.type === "FOLDER" && currentView === "BROWSE" && !selectableFolders) {
|
|
3996
|
-
navigateToFolder(item);
|
|
3997
|
-
onItemClick?.(item);
|
|
3998
|
-
return;
|
|
3999
|
-
}
|
|
4000
|
-
onItemClick?.(item);
|
|
4001
|
-
toggleSelected({
|
|
4002
|
-
id: item.id,
|
|
4003
|
-
file: {
|
|
4004
|
-
name: item.name,
|
|
4005
|
-
mime: item.information.type === "FILE" ? item.information.mime : "",
|
|
4006
|
-
size: item.information.type === "FILE" ? item.information.sizeInBytes : 0
|
|
4007
|
-
}
|
|
4008
|
-
});
|
|
4009
|
-
};
|
|
4010
|
-
const handleItemDoubleClick = (e, item) => {
|
|
4011
|
-
if (item.information.type === "FOLDER") {
|
|
4012
|
-
if (currentView === "BROWSE") navigateToFolder(item);
|
|
4013
|
-
} else onItemDoubleClick?.(item);
|
|
4014
|
-
};
|
|
4015
|
-
const enableDrag = currentView === "BROWSE";
|
|
4016
|
-
const { onMouseDown: marqueeMouseDown, overlay: marqueeOverlay } = useMarquee((ids) => {
|
|
4017
|
-
let files = items.filter((i) => ids.includes(i.id)).map((i) => ({
|
|
4018
|
-
id: i.id,
|
|
4019
|
-
file: {
|
|
4020
|
-
name: i.name,
|
|
4021
|
-
mime: i.information.type === "FILE" ? i.information.mime : "",
|
|
4022
|
-
size: i.information.type === "FILE" ? i.information.sizeInBytes : 0
|
|
4023
|
-
}
|
|
4024
|
-
}));
|
|
4025
|
-
if (selectionMode.type === "SINGLE") files = files.slice(0, 1);
|
|
4026
|
-
else if (selectionMode.maxFile) files = files.slice(0, selectionMode.maxFile);
|
|
4027
|
-
setSelectedFiles(files);
|
|
4028
|
-
});
|
|
4029
|
-
const stateContent = (() => {
|
|
4030
|
-
if (isLoading && items.length === 0) {
|
|
4031
|
-
return /* @__PURE__ */ jsx("div", { className: "nd:flex nd:items-center nd:justify-center nd:py-12 nd:flex-1", children: /* @__PURE__ */ jsx(Loader2, { className: "nd:size-6 nd:animate-spin nd:text-muted-foreground" }) });
|
|
4032
|
-
}
|
|
4033
|
-
if (error) {
|
|
4034
|
-
return /* @__PURE__ */ jsx("div", { className: "nd:flex nd:items-center nd:justify-center nd:p-12 nd:text-destructive nd:bg-destructive/10 nd:rounded-lg nd:flex-1", children: error });
|
|
4035
|
-
}
|
|
4036
|
-
if (processedItems.length === 0) {
|
|
4037
|
-
return /* @__PURE__ */ jsxs(ContextMenu, { children: [
|
|
4038
|
-
/* @__PURE__ */ jsx(ContextMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs("div", { className: cn("nd:flex nd:flex-col nd:items-center nd:justify-center nd:py-12 nd:text-center nd:flex-1", className), children: [
|
|
4039
|
-
/* @__PURE__ */ jsx("div", { className: "nd:size-12 nd:rounded-full nd:bg-muted nd:flex nd:items-center nd:justify-center nd:mb-3", children: /* @__PURE__ */ jsx(Folder, { className: "nd:size-6 nd:text-muted-foreground" }) }),
|
|
4040
|
-
/* @__PURE__ */ jsx("p", { className: "nd:text-sm nd:text-muted-foreground", children: currentView === "SEARCH" ? "No files match your search" : currentView === "TRASH" ? "Trash is empty" : "No files found" })
|
|
4041
|
-
] }) }),
|
|
4042
|
-
/* @__PURE__ */ jsx(ContextMenuContent, { children: currentView === "BROWSE" ? /* @__PURE__ */ jsxs(ContextMenuItem, { onClick: () => setDialogs((prev) => ({ ...prev, newFolder: true })), children: [
|
|
4043
|
-
/* @__PURE__ */ jsx(FolderPlus, { className: "nd:mr-2 nd:size-4" }),
|
|
4044
|
-
" New Folder"
|
|
4045
|
-
] }) : /* @__PURE__ */ jsx("div", { className: "nd:px-2 nd:py-6 nd:text-center", children: /* @__PURE__ */ jsx("p", { className: "nd:text-xs nd:text-muted-foreground", children: "No actions available" }) }) })
|
|
4046
|
-
] });
|
|
4047
|
-
}
|
|
4048
|
-
return null;
|
|
4049
|
-
})();
|
|
4050
|
-
return /* @__PURE__ */ jsx(DndContext, { sensors, collisionDetection: closestCenter, onDragStart: handleDragStart, onDragOver: handleDragOver, onDragEnd: handleDragEnd, children: /* @__PURE__ */ jsxs("div", { className: "nd-drive-root nd:flex nd:flex-col nd:h-full nd:w-full nd:overflow-hidden nd:bg-background/50 nd:dark:bg-background/30 nd:relative", children: [
|
|
4011
|
+
const { onItemClick, onItemDoubleClick, mimeFilter, className } = props;
|
|
4012
|
+
return /* @__PURE__ */ jsxs("div", { className: "nd-drive-root nd:flex nd:flex-col nd:h-full nd:w-full nd:overflow-hidden nd:bg-background/50 nd:dark:bg-background/30 nd:relative", children: [
|
|
4051
4013
|
/* @__PURE__ */ jsx(DriveContentProgress, {}),
|
|
4052
4014
|
/* @__PURE__ */ jsxs("div", { className: "nd:h-12 nd:px-3 nd:sm:px-4 nd:border-b nd:bg-background/95 nd:dark:bg-background/80 nd:backdrop-blur-sm nd:flex nd:items-center nd:gap-3", children: [
|
|
4053
4015
|
/* @__PURE__ */ jsx(DriveSidebar, { className: "nd:lg:hidden" }),
|
|
@@ -4055,152 +4017,16 @@ var DriveExplorer = (props) => {
|
|
|
4055
4017
|
/* @__PURE__ */ jsx(DriveUpload, { compact: true, accept: mimeFilter })
|
|
4056
4018
|
] }),
|
|
4057
4019
|
/* @__PURE__ */ jsx("div", { className: "nd:lg:hidden nd:px-3 nd:py-2 nd:border-b nd:bg-background/95 nd:dark:bg-background/80 nd:backdrop-blur-sm", children: /* @__PURE__ */ jsx(DrivePathBar, {}) }),
|
|
4058
|
-
|
|
4059
|
-
|
|
4060
|
-
marqueeOverlay,
|
|
4061
|
-
/* @__PURE__ */ jsx("div", { className: "nd:space-y-4 nd:sm:space-y-6 nd:pb-8 nd:sm:pb-12", children: Object.entries(groupedItems).map(([groupName, groupItems]) => /* @__PURE__ */ jsxs("div", { className: "nd:space-y-3", children: [
|
|
4062
|
-
groupBy !== "NONE" && /* @__PURE__ */ jsxs("h3", { className: "nd:text-sm nd:font-medium nd:text-muted-foreground nd:flex nd:items-center nd:gap-2", children: [
|
|
4063
|
-
groupName,
|
|
4064
|
-
" ",
|
|
4065
|
-
/* @__PURE__ */ jsxs("span", { className: "nd:text-xs nd:opacity-50", children: [
|
|
4066
|
-
"(",
|
|
4067
|
-
groupItems.length,
|
|
4068
|
-
")"
|
|
4069
|
-
] })
|
|
4070
|
-
] }),
|
|
4071
|
-
/* @__PURE__ */ jsx(SortableContext, { items: groupItems.map((i) => i.id), strategy: rectSortingStrategy, disabled: !enableDrag, children: /* @__PURE__ */ jsx("div", { className: cn(
|
|
4072
|
-
viewMode === "GRID" ? "nd:grid nd:grid-cols-2 nd:sm:grid-cols-3 nd:md:grid-cols-4 nd:lg:grid-cols-5 nd:xl:grid-cols-6 2nd:xl:grid-cols-7 nd:gap-2 nd:sm:gap-3 nd:md:gap-4" : "nd:flex nd:flex-col nd:gap-1"
|
|
4073
|
-
), children: groupItems.map((item) => {
|
|
4074
|
-
const isSelected = selectedFileIds.includes(item.id);
|
|
4075
|
-
const isFolder = item.information.type === "FOLDER";
|
|
4076
|
-
const isDragOver = isFolder && dragOverFolderId === item.id;
|
|
4077
|
-
const tokenParam = item.token ? `&token=${item.token}` : "";
|
|
4078
|
-
`${apiEndpoint}?action=serve&id=${item.id}${tokenParam}`;
|
|
4079
|
-
const thumbnailUrl = `${apiEndpoint}?action=thumbnail&id=${item.id}&size=${viewMode === "GRID" ? "medium" : "small"}${tokenParam}`;
|
|
4080
|
-
const isThumbnailable = !isFolder && item.information.type === "FILE" && (item.information.mime.startsWith("image/") || item.information.mime.startsWith("video/"));
|
|
4081
|
-
return /* @__PURE__ */ jsx(SortableItem2, { id: item.id, disabled: !enableDrag, isDragOverTarget: isDragOver, children: /* @__PURE__ */ jsxs(ContextMenu, { children: [
|
|
4082
|
-
/* @__PURE__ */ jsx(ContextMenuTrigger, { children: /* @__PURE__ */ jsx(
|
|
4083
|
-
"div",
|
|
4084
|
-
{
|
|
4085
|
-
className: cn(
|
|
4086
|
-
"group nd:relative nd:cursor-pointer nd:transition-all nd:focus:outline-none nd:focus:ring-2 nd:focus:ring-primary nd:focus:ring-offset-2",
|
|
4087
|
-
viewMode === "GRID" ? "nd:flex nd:flex-col nd:rounded-xl nd:border nd:bg-card nd:dark:bg-card/50 nd:hover:bg-accent/50 nd:dark:hover:bg-accent/30 nd:hover:shadow-sm nd:overflow-hidden" : "nd:flex nd:items-center nd:p-2 nd:rounded-lg nd:hover:bg-accent/50 nd:dark:hover:bg-accent/30 nd:gap-3 nd:border nd:border-transparent nd:hover:border-border",
|
|
4088
|
-
isSelected && "nd:ring-2 nd:ring-primary nd:border-primary/50 nd:bg-accent/30 nd:dark:bg-accent/20",
|
|
4089
|
-
isDragOver && "nd:ring-2 nd:ring-primary nd:border-primary nd:scale-[1.02] nd:bg-primary/10 nd:shadow-lg nd:transition-transform"
|
|
4090
|
-
),
|
|
4091
|
-
onClick: (e) => handleItemClick(e, item),
|
|
4092
|
-
onTouchEnd: (e) => {
|
|
4093
|
-
e.preventDefault();
|
|
4094
|
-
handleItemClick(e, item);
|
|
4095
|
-
},
|
|
4096
|
-
onDoubleClick: (e) => handleItemDoubleClick(e, item),
|
|
4097
|
-
role: "button",
|
|
4098
|
-
tabIndex: 0,
|
|
4099
|
-
children: viewMode === "GRID" ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
4100
|
-
/* @__PURE__ */ jsxs("div", { className: "nd:aspect-square nd:w-full nd:bg-muted/20 nd:dark:bg-muted/10 nd:flex nd:items-center nd:justify-center nd:overflow-hidden nd:relative", children: [
|
|
4101
|
-
isThumbnailable ? /* @__PURE__ */ jsx("img", { src: thumbnailUrl, alt: item.name, className: "nd:size-full nd:object-contain nd:transition-transform group-nd:hover:scale-105 nd:duration-300", loading: "lazy" }) : /* @__PURE__ */ jsx("div", { className: "nd:transition-transform group-nd:hover:scale-110 nd:duration-200", children: getFileIcon(item.information.type === "FILE" ? item.information.mime : "", isFolder, "nd:size-10 nd:text-muted-foreground/70") }),
|
|
4102
|
-
isSelected && /* @__PURE__ */ jsx("div", { className: "nd:absolute nd:top-2 nd:right-2 nd:size-5 nd:bg-primary nd:rounded-full nd:flex nd:items-center nd:justify-center nd:shadow-sm nd:animate-in nd:zoom-in-50", children: /* @__PURE__ */ jsx("div", { className: "nd:size-2 nd:bg-primary-foreground nd:rounded-full" }) }),
|
|
4103
|
-
isFolder && currentView === "BROWSE" && /* @__PURE__ */ jsx("div", { className: "nd:absolute nd:bottom-2 nd:right-2 nd:lg:hidden nd:size-6 nd:bg-primary/90 nd:rounded-full nd:flex nd:items-center nd:justify-center nd:shadow-md", children: /* @__PURE__ */ jsx(ChevronRight, { className: "nd:size-3.5 nd:text-primary-foreground" }) })
|
|
4104
|
-
] }),
|
|
4105
|
-
/* @__PURE__ */ jsxs("div", { className: "nd:p-2.5", children: [
|
|
4106
|
-
/* @__PURE__ */ jsx("p", { className: "nd:text-sm nd:font-medium nd:truncate", title: item.name, children: item.name }),
|
|
4107
|
-
/* @__PURE__ */ jsx("p", { className: "nd:text-xs nd:text-muted-foreground nd:mt-0.5", children: isFolder ? "Folder" : formatBytes(item.information.type === "FILE" ? item.information.sizeInBytes : 0) })
|
|
4108
|
-
] })
|
|
4109
|
-
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
4110
|
-
/* @__PURE__ */ jsx("div", { className: "nd:size-9 nd:shrink-0 nd:rounded-md nd:overflow-hidden nd:bg-muted/40 nd:dark:bg-muted/20 nd:flex nd:items-center nd:justify-center nd:border", children: isThumbnailable ? /* @__PURE__ */ jsx("img", { src: thumbnailUrl, alt: item.name, className: "nd:size-full nd:object-contain", loading: "lazy" }) : getFileIcon(item.information.type === "FILE" ? item.information.mime : "", isFolder, "nd:size-4 nd:text-muted-foreground") }),
|
|
4111
|
-
/* @__PURE__ */ jsx("span", { className: "nd:text-sm nd:font-medium nd:truncate nd:flex-1", title: item.name, children: item.name }),
|
|
4112
|
-
/* @__PURE__ */ jsx("span", { className: "nd:text-xs nd:text-muted-foreground nd:w-20 nd:text-right nd:shrink-0", children: isFolder ? "-" : formatBytes(item.information.type === "FILE" ? item.information.sizeInBytes : 0) }),
|
|
4113
|
-
isFolder && currentView === "BROWSE" && /* @__PURE__ */ jsx(ChevronRight, { className: "nd:size-4 nd:text-muted-foreground nd:lg:hidden nd:shrink-0" })
|
|
4114
|
-
] })
|
|
4115
|
-
}
|
|
4116
|
-
) }),
|
|
4117
|
-
/* @__PURE__ */ jsx(ContextMenuContent, { children: currentView === "TRASH" ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
4118
|
-
/* @__PURE__ */ jsxs(ContextMenuItem, { onClick: () => restoreItem(item.id), children: [
|
|
4119
|
-
/* @__PURE__ */ jsx(RotateCcw, { className: "nd:mr-2 nd:size-4" }),
|
|
4120
|
-
" Restore"
|
|
4121
|
-
] }),
|
|
4122
|
-
/* @__PURE__ */ jsx(ContextMenuSeparator, {}),
|
|
4123
|
-
/* @__PURE__ */ jsxs(ContextMenuItem, { className: "nd:text-destructive nd:focus:text-destructive", onClick: () => {
|
|
4124
|
-
setItemToDelete(item);
|
|
4125
|
-
setDialogs((prev) => ({ ...prev, delete: true }));
|
|
4126
|
-
}, children: [
|
|
4127
|
-
/* @__PURE__ */ jsx(Trash2, { className: "nd:mr-2 nd:size-4" }),
|
|
4128
|
-
" Delete Forever"
|
|
4129
|
-
] })
|
|
4130
|
-
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
4131
|
-
/* @__PURE__ */ jsxs(ContextMenuItem, { onClick: () => {
|
|
4132
|
-
setItemToRename(item);
|
|
4133
|
-
setDialogs((prev) => ({ ...prev, rename: true }));
|
|
4134
|
-
}, children: [
|
|
4135
|
-
/* @__PURE__ */ jsx(Pencil, { className: "nd:mr-2 nd:size-4" }),
|
|
4136
|
-
" Rename"
|
|
4137
|
-
] }),
|
|
4138
|
-
/* @__PURE__ */ jsx(ContextMenuSeparator, {}),
|
|
4139
|
-
/* @__PURE__ */ jsxs(ContextMenuItem, { className: "nd:text-destructive nd:focus:text-destructive", onClick: () => {
|
|
4140
|
-
setItemToDelete(item);
|
|
4141
|
-
setDialogs((prev) => ({ ...prev, delete: true }));
|
|
4142
|
-
}, children: [
|
|
4143
|
-
/* @__PURE__ */ jsx(Trash2, { className: "nd:mr-2 nd:size-4" }),
|
|
4144
|
-
" Delete"
|
|
4145
|
-
] })
|
|
4146
|
-
] }) })
|
|
4147
|
-
] }) }, item.id);
|
|
4148
|
-
}) }) })
|
|
4149
|
-
] }, groupName)) }),
|
|
4150
|
-
hasMore && /* @__PURE__ */ jsxs("div", { ref: observerTarget, className: "nd:flex nd:justify-center nd:py-4", children: [
|
|
4151
|
-
isLoadingMore && /* @__PURE__ */ jsx(Loader2, { className: "nd:size-6 nd:animate-spin nd:text-muted-foreground" }),
|
|
4152
|
-
!isLoadingMore && /* @__PURE__ */ jsx("div", { className: "nd:h-4 nd:w-full" })
|
|
4153
|
-
] })
|
|
4154
|
-
] }) }),
|
|
4155
|
-
/* @__PURE__ */ jsx(ContextMenuContent, { children: currentView === "BROWSE" ? /* @__PURE__ */ jsxs(ContextMenuItem, { onClick: () => setDialogs((prev) => ({ ...prev, newFolder: true })), children: [
|
|
4156
|
-
/* @__PURE__ */ jsx(FolderPlus, { className: "nd:mr-2 nd:size-4" }),
|
|
4157
|
-
" New Folder"
|
|
4158
|
-
] }) : /* @__PURE__ */ jsx("div", { className: "nd:px-2 nd:py-6 nd:text-center", children: /* @__PURE__ */ jsx("p", { className: "nd:text-xs nd:text-muted-foreground", children: "No actions available" }) }) })
|
|
4159
|
-
] }),
|
|
4160
|
-
/* @__PURE__ */ jsx(
|
|
4161
|
-
DriveFolderCreate,
|
|
4162
|
-
{
|
|
4163
|
-
open: dialogs.newFolder,
|
|
4164
|
-
onClose: () => setDialogs((prev) => ({ ...prev, newFolder: false })),
|
|
4165
|
-
onConfirm: async (name) => {
|
|
4166
|
-
await createFolder(name);
|
|
4167
|
-
}
|
|
4168
|
-
}
|
|
4169
|
-
),
|
|
4170
|
-
/* @__PURE__ */ jsx(
|
|
4171
|
-
DriveItemRename,
|
|
4172
|
-
{
|
|
4173
|
-
open: dialogs.rename,
|
|
4174
|
-
onClose: () => {
|
|
4175
|
-
setDialogs((prev) => ({ ...prev, rename: false }));
|
|
4176
|
-
setItemToRename(null);
|
|
4177
|
-
},
|
|
4178
|
-
item: itemToRename,
|
|
4179
|
-
onConfirm: async (id, newName) => {
|
|
4180
|
-
await renameItemAction(id, newName);
|
|
4181
|
-
setItemToRename(null);
|
|
4182
|
-
}
|
|
4183
|
-
}
|
|
4184
|
-
),
|
|
4185
|
-
/* @__PURE__ */ jsx(
|
|
4186
|
-
DriveConfirm,
|
|
4020
|
+
/* @__PURE__ */ jsx(DriveDndProvider, { children: /* @__PURE__ */ jsx(
|
|
4021
|
+
DriveFileGrid,
|
|
4187
4022
|
{
|
|
4188
|
-
|
|
4189
|
-
|
|
4190
|
-
|
|
4191
|
-
|
|
4192
|
-
},
|
|
4193
|
-
title: currentView === "TRASH" ? "Delete Permanently?" : "Move to Trash?",
|
|
4194
|
-
description: currentView === "TRASH" ? `This will permanently delete "${itemToDelete?.name}". You cannot undo this action.` : `Are you sure you want to move "${itemToDelete?.name}" to trash?`,
|
|
4195
|
-
onConfirm: async () => {
|
|
4196
|
-
if (!itemToDelete) return [false, "No item selected"];
|
|
4197
|
-
await deleteItem(itemToDelete.id);
|
|
4198
|
-
setItemToDelete(null);
|
|
4199
|
-
return [true];
|
|
4200
|
-
}
|
|
4023
|
+
mimeFilter,
|
|
4024
|
+
className,
|
|
4025
|
+
onItemClick,
|
|
4026
|
+
onItemDoubleClick
|
|
4201
4027
|
}
|
|
4202
|
-
)
|
|
4203
|
-
] })
|
|
4028
|
+
) })
|
|
4029
|
+
] });
|
|
4204
4030
|
};
|
|
4205
4031
|
|
|
4206
4032
|
export { DriveContentProgress, DriveDndProvider, DriveExplorer, DriveFileChooser, DriveFileGrid, DriveHeader, DrivePathBar, DriveProvider, DriveSidebar, DriveStorageIndicator, DriveUpload, uploadFile, uploadFiles, useDrive, useDriveDnd, useUpload };
|