@aiquants/directory-tree 1.9.0 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,7 +4,8 @@ A high-performance React directory tree component with virtualization, file sele
4
4
 
5
5
  ## Features
6
6
 
7
- - **🚀 High Performance**: Built with virtual scrolling to handle large directory structures efficiently
7
+ - **🚀 High Performance**: Built with [@aiquants/virtualscroll](../virtualscroll) to handle large directory structures efficiently with O(log n) operations
8
+ - **🌀 Ultrafast Scrolling**: Inherits adaptive tap scroll circle from VirtualScroll for navigating massive datasets
8
9
  - **📁 File Selection**: Interactive file selection with visual feedback and multiple selection modes
9
10
  - **🎨 Theming**: Customizable line colors with external theme control support
10
11
  - **♿ Accessibility**: Full keyboard navigation and screen reader support
@@ -85,15 +86,21 @@ export default function App() {
85
86
  <div className="h-96 w-full border rounded-lg">
86
87
  <DirectoryTree
87
88
  entries={sampleData}
88
- onFileSelect={handleFileSelect}
89
- selectedPath={null}
90
- toggle={toggle}
91
- isExpanded={isExpanded}
92
- expandMultiple={expandMultiple}
93
- collapseMultiple={collapseMultiple}
94
- isPending={isPending}
95
- lineColor={lineColor}
96
- className="h-full"
89
+ expansion={{
90
+ toggle,
91
+ isExpanded,
92
+ expandMultiple,
93
+ collapseMultiple,
94
+ isPending
95
+ }}
96
+ selection={{
97
+ onFileSelect: handleFileSelect,
98
+ selectedPath: null
99
+ }}
100
+ visual={{
101
+ lineColor,
102
+ className: "h-full"
103
+ }}
97
104
  />
98
105
  </div>
99
106
  );
@@ -108,28 +115,54 @@ The main component for rendering the directory tree.
108
115
 
109
116
  #### Props
110
117
 
118
+ | Prop | Type | Required | Description |
119
+ |------|------|----------|-------------|
120
+ | `entries` | `DirectoryEntry[]` | Yes | Array of root directory entries to display |
121
+ | `expansion` | `object` | Yes | Configuration for tree expansion state and behavior |
122
+ | `selection` | `object` | Yes | Configuration for item selection |
123
+ | `visual` | `object` | No | Visual customization options |
124
+ | `virtualScroll` | `DirectoryTreeVirtualScrollOptions` | No | Pass-through options for the underlying VirtualScroll component |
125
+
126
+ #### Expansion Options (`expansion`)
127
+
111
128
  | Prop | Type | Required | Default | Description |
112
129
  |------|------|----------|---------|-------------|
113
- | `entries` | `DirectoryEntry[]` | Yes | - | Array of root directory entries to display |
114
- | `onFileSelect` | `(absolutePath: string, relativePath: string) => void` | Yes | - | Callback function triggered when a file is selected |
115
- | `selectedPath` | `string \| null` | Yes | - | The currently selected file path |
116
130
  | `toggle` | `(path: string, relativePath: string) => void` | Yes | - | Function to toggle directory expansion state |
117
131
  | `isExpanded` | `(path: string) => boolean` | Yes | - | Function to check if a directory is expanded |
118
132
  | `expandMultiple` | `(paths: string[]) => void` | Yes | - | Function to expand multiple directories |
119
133
  | `collapseMultiple` | `(paths: string[]) => void` | Yes | - | Function to collapse multiple directories |
120
134
  | `isPending` | `boolean` | No | `false` | Whether the tree is in a pending state |
135
+ | `alwaysExpanded` | `boolean` | No | `false` | If true, all directories are always expanded |
121
136
  | `doubleClickAction` | `'recursive' \| 'toggle'` | No | `'recursive'` | Action on double-clicking a directory |
122
- | `selectionMode` | `'none' \| 'single' \| 'multiple'` | No | `'none'` | Selection mode for items |
137
+
138
+ #### Selection Options (`selection`)
139
+
140
+ | Prop | Type | Required | Default | Description |
141
+ |------|------|----------|---------|-------------|
142
+ | `onFileSelect` | `(absolutePath: string, relativePath: string) => void` | Yes | - | Callback function triggered when a file is selected |
143
+ | `selectedPath` | `string \| null` | No | - | The currently selected file path |
144
+ | `mode` | `'none' \| 'single' \| 'multiple'` | No | `'none'` | Selection mode for items |
123
145
  | `selectedItems` | `Set<string>` | No | - | Set of paths for currently selected items |
124
146
  | `onSelectionChange` | `(path: string, isSelected: boolean) => void` | No | - | Callback when item selection changes |
147
+
148
+ #### Visual Options (`visual`)
149
+
150
+ | Prop | Type | Required | Default | Description |
151
+ |------|------|----------|---------|-------------|
152
+ | `className` | `string` | No | - | Optional CSS class name for the container |
153
+ | `style` | `React.CSSProperties` | No | - | Optional inline styles for the container |
125
154
  | `lineColor` | `string` | No | `'#A0AEC0'` | The color of the tree lines |
126
- | `virtualScrollOptions` | `DirectoryTreeVirtualScrollOptions` | No | - | Pass-through options for the underlying VirtualScroll component |
127
- | `className` | `string` | No | - | Additional CSS classes |
128
- | `style` | `React.CSSProperties` | No | - | Inline styles for the root container |
155
+ | `showTreeLines` | `boolean` | No | `true` | Flag indicating whether to render tree connector lines |
156
+ | `showExpandIcons` | `boolean` | No | `true` | Flag indicating whether to render directory expand icons |
157
+ | `showDirectoryIcons` | `boolean` | No | `true` | Flag indicating whether to render directory type icons |
158
+ | `showFileIcons` | `boolean` | No | `true` | Flag indicating whether to render file type icons |
159
+ | `iconOverrides` | `DirectoryTreeIconOverrides` | No | - | Icon overrides applied globally |
160
+ | `expandIconSize` | `number` | No | - | Size of the expand icon |
161
+ | `removeRootIndent` | `boolean` | No | `false` | If true, removes the indentation and connector lines for root-level items |
129
162
 
130
163
  ### Virtual Scroll Options
131
164
 
132
- `virtualScrollOptions` lets you customize the embedded `@aiquants/virtualscroll` instance without re-implementing list rendering. Every option is optional and mirrors the VirtualScroll API.
165
+ `virtualScroll` lets you customize the embedded `@aiquants/virtualscroll` instance without re-implementing list rendering. Every option is optional and mirrors the VirtualScroll API.
133
166
 
134
167
  - `overscanCount`: Adjust how many items render beyond the viewport for smoother scrolling (default: `10`).
135
168
  - `tapScrollCircleOptions`: Forward tap circle customization such as radius or visual renderer.
@@ -143,7 +176,7 @@ Example:
143
176
  ```tsx
144
177
  <DirectoryTree
145
178
  {...commonProps}
146
- virtualScrollOptions={{
179
+ virtualScroll={{
147
180
  overscanCount: 6,
148
181
  enablePointerDrag: false,
149
182
  scrollBarWidth: 14,
@@ -216,7 +249,9 @@ function MyComponent() {
216
249
  return (
217
250
  <DirectoryTree
218
251
  // ... other props
219
- lineColor={lineColor}
252
+ visual={{
253
+ lineColor: lineColor
254
+ }}
220
255
  />
221
256
  );
222
257
  }
@@ -228,8 +263,10 @@ You can customize the appearance by overriding the default Tailwind classes:
228
263
 
229
264
  ```tsx
230
265
  <DirectoryTree
231
- className="custom-directory-tree"
232
- style={{ height: '400px' }}
266
+ visual={{
267
+ className: "custom-directory-tree",
268
+ style: { height: '400px' }
269
+ }}
233
270
  // ... other props
234
271
  />
235
272
  ```
@@ -253,7 +290,9 @@ import { DirectoryTree } from '@aiquants/directory-tree';
253
290
  <DirectoryTree
254
291
  entries={largeDataset}
255
292
  // ... other required props
256
- style={{ height: '600px' }}
293
+ visual={{
294
+ style: { height: '600px' }
295
+ }}
257
296
  />
258
297
  ```
259
298
 
@@ -278,9 +317,12 @@ const handleSelectionChange = (path: string, isSelected: boolean) => {
278
317
 
279
318
  <DirectoryTree
280
319
  // ... other props
281
- selectionMode="multiple"
282
- selectedItems={selectedItems}
283
- onSelectionChange={handleSelectionChange}
320
+ selection={{
321
+ mode: "multiple",
322
+ selectedItems: selectedItems,
323
+ onSelectionChange: handleSelectionChange,
324
+ onFileSelect: handleFileSelect // Required prop
325
+ }}
284
326
  />
285
327
  ```
286
328
 
@@ -291,9 +333,12 @@ Control how directories behave on double-click:
291
333
  ```tsx
292
334
  <DirectoryTree
293
335
  // ... other props
294
- doubleClickAction="toggle" // Only toggle the clicked directory
295
- // or
296
- doubleClickAction="recursive" // Expand/collapse all children (default)
336
+ expansion={{
337
+ // ... required expansion props
338
+ doubleClickAction: "toggle" // Only toggle the clicked directory
339
+ // or
340
+ doubleClickAction: "recursive" // Expand/collapse all children (default)
341
+ }}
297
342
  />
298
343
  ```
299
344
 
@@ -1 +1 @@
1
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-orange-400:oklch(75% .183 55.934);--color-orange-600:oklch(64.6% .222 41.116);--color-green-400:oklch(79.2% .209 151.711);--color-green-600:oklch(62.7% .194 149.214);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--ease-out:cubic-bezier(0,0,.2,1);--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1)}}@layer base;@layer components{@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-duration:initial;--tw-ease:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-orange-400:oklch(75% .183 55.934);--color-orange-600:oklch(64.6% .222 41.116);--color-green-400:oklch(79.2% .209 151.711);--color-green-600:oklch(62.7% .194 149.214);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-800:oklch(27.8% .033 256.848);--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--ease-out:cubic-bezier(0,0,.2,1);--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1)}}@layer base;@layer components.utilities{.aqvs\:tap-scroll-circle-gradient{background:linear-gradient(to bottom right,#1d4ed899,#60a5fa8c,#bfdbfe66)}.aqvs\:tap-scroll-circle-inner{inset:18%}.aqvs\:scrollbar-arrow-button{color:#313131;background-color:#e0e0e0}.aqvs\:scrollbar-arrow-button:enabled:hover{background-color:#d4d4d4}.aqvs\:scrollbar-arrow-button:focus-visible{--tw-ring-color:#60a5fa}.aqvs\:scrollbar-track{background-color:#f5f5f5}.aqvs\:scrollbar-thumb{transform-origin:50%;background-color:#7f7f7f;transition:transform 80ms ease-out}.aqvs\:scrollbar-thumb[data-thumb-state=disabled]{transition:none;transform:none}.aqvs\:scrollbar-thumb[data-thumb-state=hover]{background-color:#5f5f5f}.aqvs\:scrollbar-thumb[data-thumb-state=dragging]{background-color:#4f4f4f;transition:transform 60ms ease-out}.aqvs\:scrollbar-thumb-horizontal{inset:1.5px 0}.aqvs\:scrollbar-thumb-horizontal[data-thumb-state=hover]{top:-.5px;bottom:-.5px;transform:scaleY(1.06)}.aqvs\:scrollbar-thumb-horizontal[data-thumb-state=dragging]{top:-.5px;bottom:-.5px;transform:scaleY(1.12)}.aqvs\:scrollbar-thumb-vertical{inset:0 1.5px}.aqvs\:scrollbar-thumb-vertical[data-thumb-state=hover]{left:-.5px;right:-.5px;transform:scaleX(1.06)}.aqvs\:scrollbar-thumb-vertical[data-thumb-state=dragging]{left:-.5px;right:-.5px;transform:scaleX(1.12)}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.top-1\/2{top:50%}.left-1\/2{left:50%}.col-span-2{grid-column:span 2/span 2}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-1\.5{margin-right:calc(var(--spacing)*1.5)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-1\.5{margin-bottom:calc(var(--spacing)*1.5)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.size-1{width:calc(var(--spacing)*1);height:calc(var(--spacing)*1)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.h-2{height:calc(var(--spacing)*2)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-11{height:calc(var(--spacing)*11)}.h-full{height:100%}.h-screen{height:100vh}.max-h-24{max-height:calc(var(--spacing)*24)}.min-h-screen{min-height:100vh}.w-1\/4{width:25%}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-10{width:calc(var(--spacing)*10)}.w-11{width:calc(var(--spacing)*11)}.w-14{width:calc(var(--spacing)*14)}.w-20{width:calc(var(--spacing)*20)}.w-24{width:calc(var(--spacing)*24)}.w-28{width:calc(var(--spacing)*28)}.w-full{width:100%}.max-w-\[120px\]{max-width:120px}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-16{min-width:calc(var(--spacing)*16)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-blue-200{border-color:var(--color-blue-200)}.border-blue-300{border-color:var(--color-blue-300)}.border-gray-300{border-color:var(--color-gray-300)}.border-slate-200{border-color:var(--color-slate-200)}.border-transparent{border-color:#0000}.border-white\/40{border-color:#fff6}@supports (color:color-mix(in lab,red,red)){.border-white\/40{border-color:color-mix(in srgb,#fff40%,transparent)}@supports (color:color-mix(in lab,red,red)){.border-white\/40{border-color:color-mix(in oklab,var(--color-white)40%,transparent)}}}.border-white\/50{border-color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.border-white\/50{border-color:color-mix(in srgb,#fff50%,transparent)}@supports (color:color-mix(in lab,red,red)){.border-white\/50{border-color:color-mix(in oklab,var(--color-white)50%,transparent)}}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/50{background-color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.bg-white\/50{background-color:color-mix(in srgb,#fff50%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-white\/50{background-color:color-mix(in oklab,var(--color-white)50%,transparent)}}}.bg-white\/80{background-color:#fffc}@supports (color:color-mix(in lab,red,red)){.bg-white\/80{background-color:color-mix(in srgb,#fff80%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-white\/80{background-color:color-mix(in oklab,var(--color-white)80%,transparent)}}}.bg-white\/85{background-color:#ffffffd9}@supports (color:color-mix(in lab,red,red)){.bg-white\/85{background-color:color-mix(in srgb,#fff85%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-white\/85{background-color:color-mix(in oklab,var(--color-white)85%,transparent)}}}.p-1{padding:calc(var(--spacing)*1)}.p-1\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.pr-2{padding-right:calc(var(--spacing)*2)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-green-600{color:var(--color-green-600)}.text-orange-600{color:var(--color-orange-600)}.text-slate-500{color:var(--color-slate-500)}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.uppercase{text-transform:uppercase}.underline-offset-4{text-underline-offset:4px}.accent-blue-600{accent-color:var(--color-blue-600)}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--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(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing)*7)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}@media(hover:hover){.hover\:bg-blue-100:hover{background-color:var(--color-blue-100)}.hover\:bg-slate-50:hover{background-color:var(--color-slate-50)}.hover\:text-blue-800:hover{color:var(--color-blue-800)}.hover\:underline:hover{text-decoration-line:underline}.hover\:ring-4:hover{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-4:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:outline-hidden:focus-visible{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.focus-visible\:outline-hidden:focus-visible{outline-offset:2px;outline:2px solid #0000}}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled,.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[orientation\=horizontal\]\:h-1\.5[data-orientation=horizontal]{height:calc(var(--spacing)*1.5)}.data-\[orientation\=horizontal\]\:h-full[data-orientation=horizontal]{height:100%}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:min-h-44[data-orientation=vertical]{min-height:calc(var(--spacing)*44)}.data-\[orientation\=vertical\]\:w-1\.5[data-orientation=vertical]{width:calc(var(--spacing)*1.5)}.data-\[orientation\=vertical\]\:w-auto[data-orientation=vertical]{width:auto}.data-\[orientation\=vertical\]\:w-full[data-orientation=vertical]{width:100%}.data-\[orientation\=vertical\]\:flex-col[data-orientation=vertical]{flex-direction:column}.data-\[state\=checked\]\:translate-x-5[data-state=checked]{--tw-translate-x:calc(var(--spacing)*5);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}@media(min-width:40rem){.sm\:col-span-1{grid-column:span 1/span 1}.sm\:ml-0{margin-left:calc(var(--spacing)*0)}.sm\:ml-1{margin-left:calc(var(--spacing)*1)}.sm\:inline{display:inline}.sm\:w-auto{width:auto}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:gap-3{gap:calc(var(--spacing)*3)}.sm\:gap-4{gap:calc(var(--spacing)*4)}}@media(min-width:48rem){.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-full{height:100%}.md\:h-screen{height:100vh}.md\:w-\[550px\]{width:550px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:overflow-y-auto{overflow-y:auto}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media(min-width:64rem){.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(prefers-color-scheme:dark){.dark\:border-blue-600{border-color:var(--color-blue-600)}.dark\:bg-blue-900{background-color:var(--color-blue-900)}.dark\:bg-gray-800{background-color:var(--color-gray-800)}.dark\:text-blue-200{color:var(--color-blue-200)}.dark\:text-blue-400{color:var(--color-blue-400)}.dark\:text-gray-400{color:var(--color-gray-400)}.dark\:text-green-400{color:var(--color-green-400)}.dark\:text-orange-400{color:var(--color-orange-400)}.dark\:accent-blue-400{accent-color:var(--color-blue-400)}@media(hover:hover){.dark\:hover\:text-blue-200:hover{color:var(--color-blue-200)}}.dark\:focus\:ring-blue-300:focus{--tw-ring-color:var(--color-blue-300)}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}}@property --tw-rotate-x{syntax: "*"; inherits: false;}@property --tw-rotate-y{syntax: "*"; inherits: false;}@property --tw-rotate-z{syntax: "*"; inherits: false;}@property --tw-skew-x{syntax: "*"; inherits: false;}@property --tw-skew-y{syntax: "*"; inherits: false;}@property --tw-space-y-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-space-x-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-border-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: "*"; inherits: false;}@property --tw-font-weight{syntax: "*"; inherits: false;}@property --tw-tracking{syntax: "*"; inherits: false;}@property --tw-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: "*"; inherits: false;}@property --tw-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: "*"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: "*"; inherits: false;}@property --tw-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: "*"; inherits: false;}@property --tw-inset-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: "*"; inherits: false;}@property --tw-ring-offset-width{syntax: "<length>"; inherits: false; initial-value: 0;}@property --tw-ring-offset-color{syntax: "*"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-outline-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-duration{syntax: "*"; inherits: false;}@property --tw-ease{syntax: "*"; inherits: false;}@property --tw-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-y{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-z{syntax: "*"; inherits: false; initial-value: 0;}@keyframes pulse{50%{opacity:.5}}}@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.left-0{left:calc(var(--spacing)*0)}.z-0{z-index:0}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.ml-1{margin-left:calc(var(--spacing)*1)}.flex{display:flex}.hidden{display:none}.inline{display:inline}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-96{height:calc(var(--spacing)*96)}.h-full{height:100%}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-full{width:100%}.flex-shrink-0{flex-shrink:0}.cursor-pointer{cursor:pointer}.items-center{align-items:center}.justify-center{justify-content:center}.overflow-hidden{overflow:hidden}.overflow-y-hidden{overflow-y:hidden}.rounded-lg{border-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.bg-blue-400\/10{background-color:#54a2ff1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-400\/10{background-color:color-mix(in oklab,var(--color-blue-400)10%,transparent)}}.bg-blue-400\/20{background-color:#54a2ff33}@supports (color:color-mix(in lab,red,red)){.bg-blue-400\/20{background-color:color-mix(in oklab,var(--color-blue-400)20%,transparent)}}.pr-\[3px\]{padding-right:3px}.pb-\[5px\]{padding-bottom:5px}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-gray-500{color:var(--color-gray-500)}.text-gray-700{color:var(--color-gray-700)}.opacity-70{opacity:.7}.shadow-\[0_0_0_1px_rgba\(59\,130\,246\,0\.3\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#3b82f64d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--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(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-300{--tw-duration:.3s;transition-duration:.3s}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.hover\:bg-gray-400\/15:hover{background-color:#99a1af26}@supports (color:color-mix(in lab,red,red)){.hover\:bg-gray-400\/15:hover{background-color:color-mix(in oklab,var(--color-gray-400)15%,transparent)}}}@media(prefers-color-scheme:dark){.dark\:bg-blue-400\/15{background-color:#54a2ff26}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-400\/15{background-color:color-mix(in oklab,var(--color-blue-400)15%,transparent)}}.dark\:bg-blue-400\/25{background-color:#54a2ff40}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-400\/25{background-color:color-mix(in oklab,var(--color-blue-400)25%,transparent)}}.dark\:text-blue-300{color:var(--color-blue-300)}.dark\:text-blue-400{color:var(--color-blue-400)}.dark\:text-gray-200{color:var(--color-gray-200)}.dark\:text-gray-400{color:var(--color-gray-400)}.dark\:shadow-\[0_0_0_1px_rgba\(96\,165\,250\,0\.4\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#60a5fa66);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media(hover:hover){.dark\:hover\:bg-gray-200\/10:hover{background-color:#e5e7eb1a}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-gray-200\/10:hover{background-color:color-mix(in oklab,var(--color-gray-200)10%,transparent)}}}}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}@keyframes pulse{50%{opacity:.5}}
1
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-orange-400:oklch(75% .183 55.934);--color-orange-600:oklch(64.6% .222 41.116);--color-green-400:oklch(79.2% .209 151.711);--color-green-600:oklch(62.7% .194 149.214);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--ease-out:cubic-bezier(0,0,.2,1);--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1)}}@layer base;@layer components{@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-orange-400:oklch(75% .183 55.934);--color-orange-600:oklch(64.6% .222 41.116);--color-green-400:oklch(79.2% .209 151.711);--color-green-600:oklch(62.7% .194 149.214);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--ease-out:cubic-bezier(0,0,.2,1);--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1)}}@layer base;@layer components.utilities{.aqvs\:tap-scroll-circle-gradient{background:linear-gradient(to bottom right,#1d4ed899,#60a5fa8c,#bfdbfe66)}.aqvs\:tap-scroll-circle-inner{inset:18%}.aqvs\:scrollbar-arrow-button{color:#313131;background-color:#e0e0e0}.aqvs\:scrollbar-arrow-button:enabled:hover{background-color:#d4d4d4}.aqvs\:scrollbar-arrow-button:focus-visible{--tw-ring-color:#60a5fa}.aqvs\:scrollbar-track{background-color:#f5f5f5}.aqvs\:scrollbar-thumb{transform-origin:50%;background-color:#7f7f7f;transition:transform 80ms ease-out}.aqvs\:scrollbar-thumb[data-thumb-state=disabled]{transition:none;transform:none}.aqvs\:scrollbar-thumb[data-thumb-state=hover]{background-color:#5f5f5f}.aqvs\:scrollbar-thumb[data-thumb-state=dragging]{background-color:#4f4f4f;transition:transform 60ms ease-out}.aqvs\:scrollbar-thumb-horizontal{inset:1.5px 0}.aqvs\:scrollbar-thumb-horizontal[data-thumb-state=hover]{top:-.5px;bottom:-.5px;transform:scaleY(1.06)}.aqvs\:scrollbar-thumb-horizontal[data-thumb-state=dragging]{top:-.5px;bottom:-.5px;transform:scaleY(1.12)}.aqvs\:scrollbar-thumb-vertical{inset:0 1.5px}.aqvs\:scrollbar-thumb-vertical[data-thumb-state=hover]{left:-.5px;right:-.5px;transform:scaleX(1.06)}.aqvs\:scrollbar-thumb-vertical[data-thumb-state=dragging]{left:-.5px;right:-.5px;transform:scaleX(1.12)}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing)*2)}.right-0{right:calc(var(--spacing)*0)}.bottom-2{bottom:calc(var(--spacing)*2)}.left-0{left:calc(var(--spacing)*0)}.left-1\/2{left:50%}.col-span-2{grid-column:span 2/span 2}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-1\.5{margin-right:calc(var(--spacing)*1.5)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-1\.5{margin-bottom:calc(var(--spacing)*1.5)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.size-1{width:calc(var(--spacing)*1);height:calc(var(--spacing)*1)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.h-2{height:calc(var(--spacing)*2)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-11{height:calc(var(--spacing)*11)}.h-full{height:100%}.h-screen{height:100vh}.max-h-24{max-height:calc(var(--spacing)*24)}.min-h-screen{min-height:100vh}.w-1\/4{width:25%}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-10{width:calc(var(--spacing)*10)}.w-11{width:calc(var(--spacing)*11)}.w-14{width:calc(var(--spacing)*14)}.w-20{width:calc(var(--spacing)*20)}.w-24{width:calc(var(--spacing)*24)}.w-28{width:calc(var(--spacing)*28)}.w-full{width:100%}.max-w-\[120px\]{max-width:120px}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-16{min-width:calc(var(--spacing)*16)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-blue-200{border-color:var(--color-blue-200)}.border-blue-300{border-color:var(--color-blue-300)}.border-gray-300{border-color:var(--color-gray-300)}.border-slate-200{border-color:var(--color-slate-200)}.border-transparent{border-color:#0000}.border-white\/40{border-color:#fff6}@supports (color:color-mix(in lab,red,red)){.border-white\/40{border-color:color-mix(in srgb,#fff40%,transparent)}@supports (color:color-mix(in lab,red,red)){.border-white\/40{border-color:color-mix(in oklab,var(--color-white)40%,transparent)}}}.border-white\/50{border-color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.border-white\/50{border-color:color-mix(in srgb,#fff50%,transparent)}@supports (color:color-mix(in lab,red,red)){.border-white\/50{border-color:color-mix(in oklab,var(--color-white)50%,transparent)}}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-800\/80{background-color:#1e2939cc}@supports (color:color-mix(in lab,red,red)){.bg-gray-800\/80{background-color:#1e2939cc}@supports (color:color-mix(in lab,red,red)){.bg-gray-800\/80{background-color:color-mix(in oklab,var(--color-gray-800)80%,transparent)}}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/50{background-color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.bg-white\/50{background-color:color-mix(in srgb,#fff50%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-white\/50{background-color:color-mix(in oklab,var(--color-white)50%,transparent)}}}.bg-white\/80{background-color:#fffc}@supports (color:color-mix(in lab,red,red)){.bg-white\/80{background-color:color-mix(in srgb,#fff80%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-white\/80{background-color:color-mix(in oklab,var(--color-white)80%,transparent)}}}.bg-white\/85{background-color:#ffffffd9}@supports (color:color-mix(in lab,red,red)){.bg-white\/85{background-color:color-mix(in srgb,#fff85%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-white\/85{background-color:color-mix(in oklab,var(--color-white)85%,transparent)}}}.p-1{padding:calc(var(--spacing)*1)}.p-1\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-8{padding-inline:calc(var(--spacing)*8)}.px-12{padding-inline:calc(var(--spacing)*12)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.pr-2{padding-right:calc(var(--spacing)*2)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-green-600{color:var(--color-green-600)}.text-orange-600{color:var(--color-orange-600)}.text-slate-500{color:var(--color-slate-500)}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.underline-offset-4{text-underline-offset:4px}.accent-blue-600{accent-color:var(--color-blue-600)}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--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(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing)*7)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}@media(hover:hover){.hover\:bg-blue-100:hover{background-color:var(--color-blue-100)}.hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}.hover\:bg-slate-50:hover{background-color:var(--color-slate-50)}.hover\:text-blue-800:hover{color:var(--color-blue-800)}.hover\:underline:hover{text-decoration-line:underline}.hover\:ring-4:hover{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-4:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:outline-hidden:focus-visible{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.focus-visible\:outline-hidden:focus-visible{outline-offset:2px;outline:2px solid #0000}}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled,.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[orientation\=horizontal\]\:h-1\.5[data-orientation=horizontal]{height:calc(var(--spacing)*1.5)}.data-\[orientation\=horizontal\]\:h-full[data-orientation=horizontal]{height:100%}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:min-h-44[data-orientation=vertical]{min-height:calc(var(--spacing)*44)}.data-\[orientation\=vertical\]\:w-1\.5[data-orientation=vertical]{width:calc(var(--spacing)*1.5)}.data-\[orientation\=vertical\]\:w-auto[data-orientation=vertical]{width:auto}.data-\[orientation\=vertical\]\:w-full[data-orientation=vertical]{width:100%}.data-\[orientation\=vertical\]\:flex-col[data-orientation=vertical]{flex-direction:column}.data-\[state\=checked\]\:translate-x-5[data-state=checked]{--tw-translate-x:calc(var(--spacing)*5);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}@media(min-width:40rem){.sm\:col-span-1{grid-column:span 1/span 1}.sm\:ml-0{margin-left:calc(var(--spacing)*0)}.sm\:ml-1{margin-left:calc(var(--spacing)*1)}.sm\:inline{display:inline}.sm\:w-auto{width:auto}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:gap-3{gap:calc(var(--spacing)*3)}.sm\:gap-4{gap:calc(var(--spacing)*4)}}@media(min-width:48rem){.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-full{height:100%}.md\:h-screen{height:100vh}.md\:w-\[550px\]{width:550px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:overflow-y-auto{overflow-y:auto}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media(min-width:64rem){.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(prefers-color-scheme:dark){.dark\:border-blue-600{border-color:var(--color-blue-600)}.dark\:bg-blue-900{background-color:var(--color-blue-900)}.dark\:bg-gray-800{background-color:var(--color-gray-800)}.dark\:text-blue-200{color:var(--color-blue-200)}.dark\:text-blue-400{color:var(--color-blue-400)}.dark\:text-gray-400{color:var(--color-gray-400)}.dark\:text-green-400{color:var(--color-green-400)}.dark\:text-orange-400{color:var(--color-orange-400)}.dark\:accent-blue-400{accent-color:var(--color-blue-400)}@media(hover:hover){.dark\:hover\:text-blue-200:hover{color:var(--color-blue-200)}}.dark\:focus\:ring-blue-300:focus{--tw-ring-color:var(--color-blue-300)}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}}@property --tw-rotate-x{syntax: "*"; inherits: false;}@property --tw-rotate-y{syntax: "*"; inherits: false;}@property --tw-rotate-z{syntax: "*"; inherits: false;}@property --tw-skew-x{syntax: "*"; inherits: false;}@property --tw-skew-y{syntax: "*"; inherits: false;}@property --tw-space-y-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-space-x-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-border-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: "*"; inherits: false;}@property --tw-font-weight{syntax: "*"; inherits: false;}@property --tw-tracking{syntax: "*"; inherits: false;}@property --tw-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: "*"; inherits: false;}@property --tw-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: "*"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: "*"; inherits: false;}@property --tw-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: "*"; inherits: false;}@property --tw-inset-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: "*"; inherits: false;}@property --tw-ring-offset-width{syntax: "<length>"; inherits: false; initial-value: 0;}@property --tw-ring-offset-color{syntax: "*"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-outline-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-backdrop-blur{syntax: "*"; inherits: false;}@property --tw-backdrop-brightness{syntax: "*"; inherits: false;}@property --tw-backdrop-contrast{syntax: "*"; inherits: false;}@property --tw-backdrop-grayscale{syntax: "*"; inherits: false;}@property --tw-backdrop-hue-rotate{syntax: "*"; inherits: false;}@property --tw-backdrop-invert{syntax: "*"; inherits: false;}@property --tw-backdrop-opacity{syntax: "*"; inherits: false;}@property --tw-backdrop-saturate{syntax: "*"; inherits: false;}@property --tw-backdrop-sepia{syntax: "*"; inherits: false;}@property --tw-duration{syntax: "*"; inherits: false;}@property --tw-ease{syntax: "*"; inherits: false;}@property --tw-scale-x{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-scale-y{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-scale-z{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-y{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-z{syntax: "*"; inherits: false; initial-value: 0;}@keyframes pulse{50%{opacity:.5}}}@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.left-0{left:calc(var(--spacing)*0)}.z-0{z-index:0}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.ml-1{margin-left:calc(var(--spacing)*1)}.flex{display:flex}.hidden{display:none}.inline{display:inline}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-96{height:calc(var(--spacing)*96)}.h-full{height:100%}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-full{width:100%}.flex-shrink-0{flex-shrink:0}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.items-center{align-items:center}.justify-center{justify-content:center}.overflow-hidden{overflow:hidden}.overflow-y-hidden{overflow-y:hidden}.rounded-lg{border-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.bg-blue-400\/10{background-color:#54a2ff1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-400\/10{background-color:color-mix(in oklab,var(--color-blue-400)10%,transparent)}}.bg-blue-400\/20{background-color:#54a2ff33}@supports (color:color-mix(in lab,red,red)){.bg-blue-400\/20{background-color:color-mix(in oklab,var(--color-blue-400)20%,transparent)}}.pr-\[3px\]{padding-right:3px}.pb-\[5px\]{padding-bottom:5px}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-gray-500{color:var(--color-gray-500)}.text-gray-700{color:var(--color-gray-700)}.opacity-70{opacity:.7}.shadow-\[0_0_0_1px_rgba\(59\,130\,246\,0\.3\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#3b82f64d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--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(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-300{--tw-duration:.3s;transition-duration:.3s}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.hover\:bg-gray-400\/15:hover{background-color:#99a1af26}@supports (color:color-mix(in lab,red,red)){.hover\:bg-gray-400\/15:hover{background-color:color-mix(in oklab,var(--color-gray-400)15%,transparent)}}}@media(prefers-color-scheme:dark){.dark\:bg-blue-400\/15{background-color:#54a2ff26}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-400\/15{background-color:color-mix(in oklab,var(--color-blue-400)15%,transparent)}}.dark\:bg-blue-400\/25{background-color:#54a2ff40}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-400\/25{background-color:color-mix(in oklab,var(--color-blue-400)25%,transparent)}}.dark\:text-blue-300{color:var(--color-blue-300)}.dark\:text-blue-400{color:var(--color-blue-400)}.dark\:text-gray-200{color:var(--color-gray-200)}.dark\:text-gray-400{color:var(--color-gray-400)}.dark\:shadow-\[0_0_0_1px_rgba\(96\,165\,250\,0\.4\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#60a5fa66);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media(hover:hover){.dark\:hover\:bg-gray-200\/10:hover{background-color:#e5e7eb1a}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-gray-200\/10:hover{background-color:color-mix(in oklab,var(--color-gray-200)10%,transparent)}}}}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}@keyframes pulse{50%{opacity:.5}}
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("react"),Ue=require("@aiquants/virtualscroll"),me=require("@heroicons/react/24/solid"),He=require("@phosphor-icons/react"),W=require("tailwind-merge");var he={exports:{}},se={};var Me;function Ze(){if(Me)return se;Me=1;var e=Symbol.for("react.transitional.element"),n=Symbol.for("react.fragment");function r(a,o,s){var d=null;if(s!==void 0&&(d=""+s),o.key!==void 0&&(d=""+o.key),"key"in o){s={};for(var y in o)y!=="key"&&(s[y]=o[y])}else s=o;return o=s.ref,{$$typeof:e,type:a,key:d,ref:o!==void 0?o:null,props:s}}return se.Fragment=n,se.jsx=r,se.jsxs=r,se}var le={};var Ne;function Qe(){return Ne||(Ne=1,process.env.NODE_ENV!=="production"&&(function(){function e(t){if(t==null)return null;if(typeof t=="function")return t.$$typeof===O?null:t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case c:return"Fragment";case M:return"Profiler";case E:return"StrictMode";case A:return"Suspense";case j:return"SuspenseList";case X:return"Activity"}if(typeof t=="object")switch(typeof t.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),t.$$typeof){case l:return"Portal";case p:return t.displayName||"Context";case C:return(t._context.displayName||"Context")+".Consumer";case i:var m=t.render;return t=t.displayName,t||(t=m.displayName||m.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case P:return m=t.displayName||null,m!==null?m:e(t.type)||"Memo";case L:m=t._payload,t=t._init;try{return e(t(m))}catch{}}return null}function n(t){return""+t}function r(t){try{n(t);var m=!1}catch{m=!0}if(m){m=console;var S=m.error,R=typeof Symbol=="function"&&Symbol.toStringTag&&t[Symbol.toStringTag]||t.constructor.name||"Object";return S.call(m,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",R),n(t)}}function a(t){if(t===c)return"<>";if(typeof t=="object"&&t!==null&&t.$$typeof===L)return"<...>";try{var m=e(t);return m?"<"+m+">":"<...>"}catch{return"<...>"}}function o(){var t=F.A;return t===null?null:t.getOwner()}function s(){return Error("react-stack-top-frame")}function d(t){if(q.call(t,"key")){var m=Object.getOwnPropertyDescriptor(t,"key").get;if(m&&m.isReactWarning)return!1}return t.key!==void 0}function y(t,m){function S(){ne||(ne=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",m))}S.isReactWarning=!0,Object.defineProperty(t,"key",{get:S,configurable:!0})}function h(){var t=e(this.type);return U[t]||(U[t]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),t=this.props.ref,t!==void 0?t:null}function b(t,m,S,R,ee,re){var w=S.ref;return t={$$typeof:x,type:t,key:m,props:S,_owner:R},(w!==void 0?w:null)!==null?Object.defineProperty(t,"ref",{enumerable:!1,get:h}):Object.defineProperty(t,"ref",{enumerable:!1,value:null}),t._store={},Object.defineProperty(t._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(t,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(t,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:ee}),Object.defineProperty(t,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:re}),Object.freeze&&(Object.freeze(t.props),Object.freeze(t)),t}function f(t,m,S,R,ee,re){var w=m.children;if(w!==void 0)if(R)if(Y(w)){for(R=0;R<w.length;R++)g(w[R]);Object.freeze&&Object.freeze(w)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else g(w);if(q.call(m,"key")){w=e(t);var G=Object.keys(m).filter(function(ge){return ge!=="key"});R=0<G.length?"{key: someKey, "+G.join(": ..., ")+": ...}":"{key: someKey}",N[w+R]||(G=0<G.length?"{"+G.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react"),Fe=require("@aiquants/virtualscroll"),ye=require("@heroicons/react/24/solid"),Ye=require("@phosphor-icons/react"),A=require("tailwind-merge");var me={exports:{}},le={};var _e;function Be(){if(_e)return le;_e=1;var e=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function a(l,n,o){var i=null;if(o!==void 0&&(i=""+o),n.key!==void 0&&(i=""+n.key),"key"in n){o={};for(var y in n)y!=="key"&&(o[y]=n[y])}else o=n;return n=o.ref,{$$typeof:e,type:l,key:i,ref:n!==void 0?n:null,props:o}}return le.Fragment=r,le.jsx=a,le.jsxs=a,le}var ie={};var Pe;function He(){return Pe||(Pe=1,process.env.NODE_ENV!=="production"&&(function(){function e(t){if(t==null)return null;if(typeof t=="function")return t.$$typeof===J?null:t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case s:return"Fragment";case _:return"Profiler";case m:return"StrictMode";case L:return"Suspense";case k:return"SuspenseList";case N:return"Activity"}if(typeof t=="object")switch(typeof t.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),t.$$typeof){case u:return"Portal";case E:return t.displayName||"Context";case P:return(t._context.displayName||"Context")+".Consumer";case f:var h=t.render;return t=t.displayName,t||(t=h.displayName||h.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case M:return h=t.displayName||null,h!==null?h:e(t.type)||"Memo";case j:h=t._payload,t=t._init;try{return e(t(h))}catch{}}return null}function r(t){return""+t}function a(t){try{r(t);var h=!1}catch{h=!0}if(h){h=console;var w=h.error,T=typeof Symbol=="function"&&Symbol.toStringTag&&t[Symbol.toStringTag]||t.constructor.name||"Object";return w.call(h,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",T),r(t)}}function l(t){if(t===s)return"<>";if(typeof t=="object"&&t!==null&&t.$$typeof===j)return"<...>";try{var h=e(t);return h?"<"+h+">":"<...>"}catch{return"<...>"}}function n(){var t=Y.A;return t===null?null:t.getOwner()}function o(){return Error("react-stack-top-frame")}function i(t){if(F.call(t,"key")){var h=Object.getOwnPropertyDescriptor(t,"key").get;if(h&&h.isReactWarning)return!1}return t.key!==void 0}function y(t,h){function w(){G||(G=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",h))}w.isReactWarning=!0,Object.defineProperty(t,"key",{get:w,configurable:!0})}function x(){var t=e(this.type);return K[t]||(K[t]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),t=this.props.ref,t!==void 0?t:null}function p(t,h,w,T,te,ae){var C=w.ref;return t={$$typeof:I,type:t,key:h,props:w,_owner:T},(C!==void 0?C:null)!==null?Object.defineProperty(t,"ref",{enumerable:!1,get:x}):Object.defineProperty(t,"ref",{enumerable:!1,value:null}),t._store={},Object.defineProperty(t._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(t,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(t,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:te}),Object.defineProperty(t,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:ae}),Object.freeze&&(Object.freeze(t.props),Object.freeze(t)),t}function c(t,h,w,T,te,ae){var C=h.children;if(C!==void 0)if(T)if(B(C)){for(T=0;T<C.length;T++)g(C[T]);Object.freeze&&Object.freeze(C)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else g(C);if(F.call(h,"key")){C=e(t);var z=Object.keys(h).filter(function(pe){return pe!=="key"});T=0<z.length?"{key: someKey, "+z.join(": ..., ")+": ...}":"{key: someKey}",Z[C+T]||(z=0<z.length?"{"+z.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
2
2
  let props = %s;
3
3
  <%s {...props} />
4
4
  React keys must be passed directly to JSX without using spread:
5
5
  let props = %s;
6
- <%s key={someKey} {...props} />`,R,w,G,w),N[w+R]=!0)}if(w=null,S!==void 0&&(r(S),w=""+S),d(m)&&(r(m.key),w=""+m.key),"key"in m){S={};for(var ae in m)ae!=="key"&&(S[ae]=m[ae])}else S=m;return w&&y(S,typeof t=="function"?t.displayName||t.name||"Unknown":t),b(t,w,S,o(),ee,re)}function g(t){I(t)?t._store&&(t._store.validated=1):typeof t=="object"&&t!==null&&t.$$typeof===L&&(t._payload.status==="fulfilled"?I(t._payload.value)&&t._payload.value._store&&(t._payload.value._store.validated=1):t._store&&(t._store.validated=1))}function I(t){return typeof t=="object"&&t!==null&&t.$$typeof===x}var k=u,x=Symbol.for("react.transitional.element"),l=Symbol.for("react.portal"),c=Symbol.for("react.fragment"),E=Symbol.for("react.strict_mode"),M=Symbol.for("react.profiler"),C=Symbol.for("react.consumer"),p=Symbol.for("react.context"),i=Symbol.for("react.forward_ref"),A=Symbol.for("react.suspense"),j=Symbol.for("react.suspense_list"),P=Symbol.for("react.memo"),L=Symbol.for("react.lazy"),X=Symbol.for("react.activity"),O=Symbol.for("react.client.reference"),F=k.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,q=Object.prototype.hasOwnProperty,Y=Array.isArray,J=console.createTask?console.createTask:function(){return null};k={react_stack_bottom_frame:function(t){return t()}};var ne,U={},H=k.react_stack_bottom_frame.bind(k,s)(),K=J(a(s)),N={};le.Fragment=c,le.jsx=function(t,m,S){var R=1e4>F.recentlyCreatedOwnerStacks++;return f(t,m,S,!1,R?Error("react-stack-top-frame"):H,R?J(a(t)):K)},le.jsxs=function(t,m,S){var R=1e4>F.recentlyCreatedOwnerStacks++;return f(t,m,S,!0,R?Error("react-stack-top-frame"):H,R?J(a(t)):K)}})()),le}var je;function Ke(){return je||(je=1,process.env.NODE_ENV==="production"?he.exports=Ze():he.exports=Qe()),he.exports}var v=Ke();const et=(e,n,r)=>{const a=[];for(let o=n;o<r;o++){const s=e[o];if(!(!s||s.length===0))for(const d of s)a.push(d)}return a},tt=(e,n,r)=>{const a=[];for(let o=n;o<r;o++){const s=e[o];if(!(!s||s.length===0))for(const d of s)a.push(d)}return a},nt=(e,n,r,a)=>{const o=Math.max(1,Math.floor(n*a)),s=Math.max(1,Math.floor(r*a));(e.width!==o||e.height!==s)&&(e.width=o,e.height=s);const d=e.style;d.width!==`${n}px`&&(d.width=`${n}px`),d.height!==`${r}px`&&(d.height=`${r}px`)},rt=(e,n,r)=>{e.lineWidth=r,e.beginPath();for(const a of n)e.moveTo(a.x1,a.y1),e.lineTo(a.x2,a.y2);e.stroke()},at=(e,n)=>{const r=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(e.trim());if(!r)return null;let a=r[1];a.length===3&&(a=a.split("").map(y=>y+y).join(""));const o=Number.parseInt(a.slice(0,2),16),s=Number.parseInt(a.slice(2,4),16),d=Number.parseInt(a.slice(4,6),16);return`rgba(${o}, ${s}, ${d}, ${n})`},ot=(e,n,r,a)=>{if(n.length===0)return;const o=at(r,.14),s=e.strokeStyle,d=e.fillStyle,y=e.lineWidth,h=e.lineCap,b=e.lineJoin;e.strokeStyle=r,e.lineCap="round",e.lineJoin="round";for(const f of n){const g=a??f.size,I=Math.max(0,g/2),k=Math.max(1,Math.round(g*.08)),x=Math.max(1,Math.round(g*.14)),l=Math.max(0,I-k*.8),c=Math.max(0,l*.55);o&&(e.fillStyle=o,e.beginPath(),e.arc(f.centerX,f.centerY,l,0,Math.PI*2),e.fill()),e.lineWidth=k,e.beginPath(),e.arc(f.centerX,f.centerY,Math.max(0,I-k*.3),0,Math.PI*2),e.stroke(),e.lineWidth=x,e.beginPath(),e.moveTo(f.centerX-c,f.centerY),e.lineTo(f.centerX+c,f.centerY),e.stroke(),f.isExpanded||(e.beginPath(),e.moveTo(f.centerX,f.centerY-c),e.lineTo(f.centerX,f.centerY+c),e.stroke())}e.strokeStyle=s,e.fillStyle=d,e.lineWidth=y,e.lineCap=h,e.lineJoin=b},De=u.memo(({segmentsByItem:e,glyphsByItem:n,itemHeight:r,width:a,viewportHeight:o,scrollPosition:s,color:d="#a0aec0",strokeWidth:y=1,renderStartIndex:h,renderEndIndex:b,lookaheadEndIndex:f,devicePixelRatio:g,expandGlyphColor:I,expandGlyphSize:k})=>{const x=u.useRef(null),l=u.useRef(null),c=u.useRef({segmentsByItem:e,glyphsByItem:n,itemHeight:r,width:a,viewportHeight:o,scrollPosition:s,color:d,strokeWidth:y,renderStartIndex:h,renderEndIndex:b,lookaheadEndIndex:f,devicePixelRatio:g,expandGlyphColor:I,expandGlyphSize:k}),E=u.useCallback(()=>{l.current=null;const C=x.current;if(!C)return;const p=C.getContext("2d");if(!p)return;const i=c.current;if(i.width<=0||i.viewportHeight<=0){p.clearRect(0,0,C.width,C.height);return}const A=Number.isFinite(i.devicePixelRatio??NaN)?i.devicePixelRatio:typeof window<"u"&&window.devicePixelRatio||1;nt(C,i.width,i.viewportHeight,A);const j=i.segmentsByItem.length,P=typeof i.renderStartIndex=="number"&&Number.isFinite(i.renderStartIndex)?Math.max(0,Math.floor(i.renderStartIndex)):Math.max(0,Math.floor(i.scrollPosition/i.itemHeight)),L=Math.min(j,Math.ceil((i.scrollPosition+i.viewportHeight)/i.itemHeight)),X=(()=>{if(typeof i.renderEndIndex=="number"&&Number.isFinite(i.renderEndIndex)){const Y=Math.floor(i.renderEndIndex);return Math.max(Math.min(j,Y+1),P)}return Math.max(L,P)})(),O=(()=>{if(typeof i.lookaheadEndIndex=="number"&&Number.isFinite(i.lookaheadEndIndex)){const Y=Math.floor(i.lookaheadEndIndex),J=Math.min(j,Y+1);return Math.max(J,X)}return Math.max(L,X)})(),F=et(i.segmentsByItem,P,O),q=tt(i.glyphsByItem,P,O);p.save(),p.scale(A,A),p.clearRect(0,0,i.width,i.viewportHeight),p.translate(0,-i.scrollPosition),p.strokeStyle=i.color,rt(p,F,i.strokeWidth),ot(p,q,i.expandGlyphColor??i.color,i.expandGlyphSize),p.restore()},[]),M=u.useCallback(()=>{l.current===null&&(l.current=window.requestAnimationFrame(E))},[E]);return u.useEffect(()=>{c.current={segmentsByItem:e,glyphsByItem:n,itemHeight:r,width:a,viewportHeight:o,scrollPosition:s,color:d,strokeWidth:y,renderStartIndex:h,renderEndIndex:b,lookaheadEndIndex:f,devicePixelRatio:g,expandGlyphColor:I,expandGlyphSize:k},M()},[e,n,r,a,o,s,d,y,h,b,f,g,I,k,M]),u.useEffect(()=>()=>{l.current!==null&&(window.cancelAnimationFrame(l.current),l.current=null)},[]),v.jsx("canvas",{ref:x,className:"pointer-events-none absolute top-0 left-0 z-0"})});De.displayName="TreeLineCanvas";const D={container:"directory-tree-container relative h-full transition-opacity duration-300 overflow-y-hidden pb-[5px] pr-[3px]",containerPending:"opacity-70",entry:"directory-tree-entry flex items-center cursor-pointer relative select-none",entryHover:W.twMerge("directory-tree-entry--hover hover:bg-gray-400/15","dark:hover:bg-gray-200/10"),entrySelected:W.twMerge("directory-tree-entry--selected bg-blue-400/10","dark:bg-blue-400/15"),entryItemSelected:W.twMerge("directory-tree-entry--item-selected bg-blue-400/20 shadow-[0_0_0_1px_rgba(59,130,246,0.3)]","dark:bg-blue-400/25 dark:shadow-[0_0_0_1px_rgba(96,165,250,0.4)]"),expandIcon:W.twMerge("directory-tree-expand-icon w-5 h-5 flex-shrink-0 flex items-center justify-center","text-gray-500","dark:text-gray-400"),expandIconSelected:W.twMerge("directory-tree-expand-icon--selected text-blue-700","dark:text-blue-400"),typeIcon:W.twMerge("directory-tree-type-icon w-5 h-5 flex-shrink-0 flex items-center justify-center","text-gray-500","dark:text-gray-400"),typeIconSelected:W.twMerge("directory-tree-type-icon--selected text-blue-700","dark:text-blue-400"),name:W.twMerge("directory-tree-name overflow-hidden text-ellipsis whitespace-nowrap ml-1","text-gray-700","dark:text-gray-200"),nameDirectory:"directory-tree-name--directory",nameSelected:W.twMerge("directory-tree-name--selected text-blue-800 font-medium","dark:text-blue-300")},Ie={msOverflowStyle:"none",scrollbarWidth:"none"},st=()=>{let e=document.getElementById("directory-tree-webkit-scrollbar-hide");e||(e=document.createElement("style"),e.id="directory-tree-webkit-scrollbar-hide",e.textContent=".directory-tree-container::-webkit-scrollbar { display: none; }",document.head.appendChild(e))},be=(e,...n)=>W.twMerge(e,...n.filter(Boolean)),$e=(e=!1,n=!1,r=!1)=>be(D.entry,e&&D.entryHover,n&&D.entrySelected,r&&D.entryItemSelected),Oe=(e=!1)=>be(D.expandIcon,e&&D.expandIconSelected),Pe=(e=!1)=>be(D.typeIcon,e&&D.typeIconSelected),Le=(e=!1,n=!1)=>be(D.name,e&&D.nameDirectory,n&&D.nameSelected),lt=(e,n,r)=>{const a=[],o=[];let s=0;const d=(y,h,b)=>{for(let f=0;f<y.length;f++){const g=y[f],I=f===y.length-1,k=[...b,I],x=g.children!==void 0,l=x&&n(g.absolutePath,g.relativePath);a.push({entry:g,indentLevel:h,parentIsLast:k}),r&&(h>s&&(s=h),o.push({id:g.absolutePath,name:g.name,absolutePath:g.absolutePath,indentLevel:h,isLastChild:I,isDirectory:x,isExpanded:l,ancestorIsLast:[...b]})),x&&l&&g.children&&d(g.children,h+1,k)}};return d(e,0,[]),{flatItems:a,lineItems:o,maxIndent:s}},ct=(e,n,r,a,o)=>{const s=a?.renderStart??Math.max(0,Math.floor(o/Q)),d=n>0?Math.ceil(n/Q)+r:r,y=e>0?Math.min(e-1,s+d):s,h=a?.renderEnd??y,b=e>0?Math.min(e-1,h+r):h;return{renderStart:s,renderEnd:h,lookaheadEnd:b}},it=({isDirectory:e,isExpanded:n,showExpandIcons:r,useCanvasExpandIcons:a})=>!(r&&e)||a?v.jsx("span",{className:"h-4 w-4","aria-hidden":"true"}):n?v.jsx(me.ChevronDownIcon,{className:"h-4 w-4"}):v.jsx(me.ChevronRightIcon,{className:"h-4 w-4"}),ut=Ue.VirtualScroll,dt=e=>e.slice((e.lastIndexOf(".")-1>>>0)+2).toLowerCase(),ft=(e,n,r,a,o)=>{if(e.length===0)return{segmentsByItem:[],glyphsByItem:[]};const s=Array.from({length:e.length},()=>[]),d=Array.from({length:e.length},()=>[]),y=a?typeof o=="number"&&Number.isFinite(o)&&o>0?o:Math.max(8,Math.min(r*.9,n*.7)):0;for(let h=0;h<e.length;h++){const b=e[h],f=[],g=h*n,I=g+n/2,k=r/1.5;for(let c=0;c<b.indentLevel;c++){if(b.ancestorIsLast[c]??!1)continue;let M=!1;for(let C=h;C<e.length;C++){const p=e[C];if(p.indentLevel>c&&p.ancestorIsLast.length>c&&!p.ancestorIsLast[c]){M=!0;break}if(C>h&&p.indentLevel===c)break}if(M){const C=c*r+r/2;f.push({key:`${b.id}-ancestor-${c}`,x1:C,y1:g,x2:C,y2:g+n,itemIndex:h})}}const x=b.indentLevel*r,l=x+r/2;if(b.isDirectory?f.push({key:`${b.id}-connector-top`,x1:l,y1:g,x2:l,y2:I-k,itemIndex:h}):f.push({key:`${b.id}-connector-top`,x1:l,y1:g,x2:l,y2:I,itemIndex:h}),!b.isDirectory&&b.isLastChild&&f.push({key:`${b.id}-connector-horizontal`,x1:l,y1:I,x2:x+r,y2:I,itemIndex:h}),b.isLastChild||(b.isDirectory?f.push({key:`${b.id}-connector-bottom`,x1:l,y1:I+k,x2:l,y2:g+n,itemIndex:h}):f.push({key:`${b.id}-connector-bottom`,x1:l,y1:I,x2:l,y2:g+n,itemIndex:h})),s[h]=f,a&&b.isDirectory){const c=y,E=l,M=I;d[h]=[{key:`${b.id}-glyph`,itemIndex:h,centerX:E,centerY:M,size:c,isExpanded:b.isExpanded}]}}return{segmentsByItem:s,glyphsByItem:d}},ht=Symbol.for("react.lazy"),mt=e=>typeof e=="object"&&e!==null&&typeof e.then=="function",ke=(e,n)=>{if(e==null||e===!1)return null;if(typeof e=="function")return console.warn(`[DirectoryTree] Icon renderer for "${n.entry.absolutePath}" returned a function. Return a React node instead to avoid dynamic loading delays.`),null;if(typeof e=="object"){if(mt(e))return console.warn(`[DirectoryTree] Icon renderer for "${n.entry.absolutePath}" returned a Promise. Dynamic icon loading is not supported.`),null;if(Array.isArray(e)){const r=e.map(a=>ke(a,n)).filter(a=>a!==null);return r.length>0?r:null}if(u.isValidElement(e)){const r=e.type;if(r&&typeof r=="object"&&r.$$typeof===ht)return console.warn(`[DirectoryTree] Icon renderer for "${n.entry.absolutePath}" returned a lazily loaded component. Dynamic icon loading is not supported.`),null}}return e},ce=(e,n)=>{if(!e)return null;if(typeof e=="function"){const r=e(n);return ke(r,n)}return ke(e,n)},yt=(e,n)=>{const{entry:r,isDirectory:a,isExpanded:o,extension:s}=e;return r.icon!==void 0?ce(r.icon,e):a?o&&n?.directoryExpanded!==void 0?ce(n.directoryExpanded,e):n?.directory!==void 0?ce(n.directory,e):v.jsx(me.FolderIcon,{className:"h-4 w-4"}):s&&n?.fileByExtension?.[s]!==void 0?ce(n.fileByExtension[s],e):n?.file!==void 0?ce(n.file,e):s==="md"?v.jsx(me.DocumentTextIcon,{className:"h-4 w-4"}):v.jsx(He.FileIcon,{className:"h-4 w-4"})},Se=u.memo(({entry:e,indentLevel:n,isDirOpen:r,onFileSelect:a,toggleDirectory:o,onToggleDirectoryRecursive:s,selectedPath:d,parentIsLast:y,renderChildren:h=!0,selectionMode:b="none",selectedItems:f,onSelectionChange:g,iconOverrides:I,showExpandIcons:k=!0,showDirectoryIcons:x=!0,showFileIcons:l=!0,useCanvasExpandIcons:c=!1})=>{const E=u.useRef(null),[M,C]=u.useState(null);u.useEffect(()=>()=>{E.current&&window.clearTimeout(E.current)},[]);const p=e.children!==void 0,i=p&&r(e.absolutePath,e.relativePath),A=e.absolutePath===d,j=!p&&f?.has(e.absolutePath),P=p?void 0:dt(e.name);u.useEffect(()=>{i&&e.children?Promise.resolve().then(()=>{C(e.children??[])}):C(null)},[i,e.children]);const L=u.useCallback(N=>{N.stopPropagation(),b!=="none"&&!p&&g&&g(e.absolutePath,!j),p?E.current?(window.clearTimeout(E.current),E.current=null,s(e)):E.current=window.setTimeout(()=>{o(e.absolutePath,e.relativePath),E.current=null},500):a(e.absolutePath,e.relativePath)},[p,e,s,o,a,b,g,j]),[X,O]=u.useState(!1),F=$e(X,A,j),q=Oe(A||j),Y=it({isDirectory:p,isExpanded:i,showExpandIcons:k,useCanvasExpandIcons:c}),U=(p?x:l)?yt({entry:e,isDirectory:p,isExpanded:i,isSelected:A,isItemSelected:!!j,extension:P},I):null,H=Pe(A||j),K=Le(p,A||j);return v.jsxs(u.Fragment,{children:[v.jsxs("div",{className:F,style:{paddingLeft:`${n*ye}px`,height:`${Q}px`},"data-entry-type":p?"directory":"file","data-entry-expanded":p?i?"true":"false":void 0,"data-entry-selected":A?"true":void 0,"data-entry-item-selected":j?"true":void 0,onClick:L,onMouseEnter:()=>O(!0),onMouseLeave:()=>O(!1),onKeyDown:N=>{N.key==="Enter"&&L(N)},tabIndex:0,role:"treeitem","aria-expanded":p?i:void 0,"aria-label":`${e.name} (${p?"directory":"file"})`,children:[v.jsx("span",{className:q,children:Y}),v.jsx("span",{className:H,children:U}),v.jsx("span",{className:K,"data-entry-type":p?"directory":"file","data-entry-role":"name",children:e.label??e.name})]}),i&&M&&h&&v.jsx("fieldset",{children:M.map((N,t)=>v.jsx(Se,{entry:N,indentLevel:n+1,isDirOpen:r,onFileSelect:a,toggleDirectory:o,onToggleDirectoryRecursive:s,selectedPath:d,parentIsLast:[...y,t===(M||[]).length-1],selectionMode:b,selectedItems:f,onSelectionChange:g,iconOverrides:I,showExpandIcons:k,showDirectoryIcons:x,showFileIcons:l,useCanvasExpandIcons:c},N.absolutePath))})]},e.absolutePath)},(e,n)=>{if(e.entry.absolutePath!==n.entry.absolutePath||e.entry.relativePath!==n.entry.relativePath||e.entry.name!==n.entry.name||e.entry.label!==n.entry.label||e.entry.type!==n.entry.type||e.entry.icon!==n.entry.icon||e.entry.children===void 0!=(n.entry.children===void 0))return!1;const r=e.entry.children!==void 0,a=n.entry.children!==void 0,o=r&&e.isDirOpen(e.entry.absolutePath,e.entry.relativePath),s=a&&n.isDirOpen(n.entry.absolutePath,n.entry.relativePath);if(e.indentLevel!==n.indentLevel||o!==s||e.selectedPath!==n.selectedPath||e.onFileSelect!==n.onFileSelect||e.toggleDirectory!==n.toggleDirectory||e.onToggleDirectoryRecursive!==n.onToggleDirectoryRecursive||e.selectionMode!==n.selectionMode||e.selectedItems!==n.selectedItems||e.onSelectionChange!==n.onSelectionChange||e.iconOverrides!==n.iconOverrides||e.showExpandIcons!==n.showExpandIcons||e.showDirectoryIcons!==n.showDirectoryIcons||e.showFileIcons!==n.showFileIcons||e.useCanvasExpandIcons!==n.useCanvasExpandIcons||e.parentIsLast.length!==n.parentIsLast.length)return!1;for(let d=0;d<e.parentIsLast.length;d++)if(e.parentIsLast[d]!==n.parentIsLast[d])return!1;return!0});Se.displayName="DirectoryEntryItem";const Q=20,ye=16,Ae=Math.max(8,Math.min(ye*.85,Q*.7)),Fe=e=>{const n=[];if(e.children)for(const r of e.children)r.type==="directory"&&(n.push(r.absolutePath),n.push(...Fe(r)));return n},bt=({entries:e,onFileSelect:n,className:r,style:a,selectedPath:o,toggle:s,isExpanded:d,expandMultiple:y,collapseMultiple:h,isPending:b,doubleClickAction:f="recursive",selectionMode:g="none",selectedItems:I,onSelectionChange:k,lineColor:x="#A0AEC0",virtualScrollOptions:l,viewportHeightOverride:c,iconOverrides:E,showExpandIcons:M=!0,showDirectoryIcons:C=!0,showFileIcons:p=!0,showTreeLines:i=!0})=>{const[A,j]=u.useState(!1),P=u.useRef(null),L=u.useRef(null),[X,O]=u.useState(0),[F,q]=u.useState(null),{overscanCount:Y,className:J,background:ne,onScroll:U,onRangeChange:H,initialScrollIndex:K,initialScrollOffset:N,tapScrollCircleOptions:t,scrollBarWidth:m,enableThumbDrag:S,enableTrackClick:R,enableArrowButtons:ee,enablePointerDrag:re,callbackThrottleMs:w,inertiaOptions:G,contentInsets:ae,onItemFocus:ge}=l??{},Ye=typeof N=="number"?N:0,[ie,xe]=u.useState(Ye),pe=typeof Y=="number"?Y:15,Be=typeof w=="number"?w:5,ze=u.useCallback((T,B)=>{xe(T),U?.(T,B)},[U]),We=u.useCallback((T,B,V,_,$,oe)=>{q(z=>z&&z.renderStart===T&&z.renderEnd===B?z:{renderStart:T,renderEnd:B}),H?.(T,B,V,_,$,oe)},[H]);u.useEffect(()=>{typeof N=="number"&&xe(N)},[N]),u.useEffect(()=>{j(!0),st()},[]),u.useEffect(()=>{if(typeof c=="number"){O(_=>Math.abs(_-c)>1?c:_);return}const T=P.current;if(!T){O(0);return}(()=>{const _=T.clientHeight;O($=>Math.abs($-_)>1?_:$)})();const V=new ResizeObserver(_=>{for(const $ of _)if($.target===T){const{height:oe}=$.contentRect;O(z=>Math.abs(z-oe)>1?oe:z)}});return V.observe(T),()=>{V.disconnect()}},[c]);const Z=typeof c=="number"?c:X,te=u.useCallback((T,B)=>A?d(T):!1,[A,d]),ve=b?`${D.container} ${D.containerPending}`:D.container,we=u.useMemo(()=>typeof c=="number"?{...Ie,...a??{},height:c,minHeight:c}:a?{...Ie,...a}:{...Ie},[a,c]),Ve=u.useCallback((T,B)=>{const V=Fe(T),_=[T.absolutePath,...V],$=B||f;_.every(z=>te(z))?h(_):_.every(Ge=>!te(Ge))||$==="recursive"?y(_):$==="toggle"?h(_):console.warn(`[DirectoryTree] Unknown double click action: ${$}. No action taken.`)},[te,y,h,f]),{flatItems:ue,lineItems:Ee,maxIndent:Re}=u.useMemo(()=>lt(e,te,i),[e,te,i]),de=u.useMemo(()=>!i||Ee.length===0?{segmentsByItem:[],glyphsByItem:[]}:ft(Ee,Q,ye,i,Ae),[Ee,i]),fe=u.useMemo(()=>!i||e.length===0?0:(Re+2)*ye,[e.length,Re,i]),Xe=u.useMemo(()=>ct(ue.length,Z,pe,F,ie),[ue.length,Z,pe,F,ie]),qe=i,{renderStart:Te,renderEnd:Ce,lookaheadEnd:_e}=Xe,Je=u.useMemo(()=>!i||fe<=0||Z<=0||de.segmentsByItem.length===0?null:v.jsx("div",{className:"pointer-events-none absolute inset-0 z-0","aria-hidden":"true",children:v.jsx("div",{className:"absolute top-0 left-0",style:{width:fe,height:Z},children:v.jsx(De,{segmentsByItem:de.segmentsByItem,glyphsByItem:de.glyphsByItem,itemHeight:Q,width:fe,viewportHeight:Z,scrollPosition:ie,color:x,expandGlyphColor:x,expandGlyphSize:Ae,renderStartIndex:Te,renderEndIndex:Ce,lookaheadEndIndex:_e})})}),[fe,Z,Te,Ce,_e,ie,de,x,i]);return e.length===0?v.jsx("div",{className:`${ve} ${r||""}`,style:we}):v.jsx("div",{ref:P,className:`${ve} ${r||""}`,style:we,role:"tree",children:v.jsx(ut,{ref:L,itemCount:ue.length,getItem:T=>ue[T],getItemHeight:()=>Q,viewportSize:Z,overscanCount:pe,onScroll:ze,onRangeChange:We,className:J,background:v.jsxs(v.Fragment,{children:[Je,ne]}),initialScrollIndex:K,initialScrollOffset:N,tapScrollCircleOptions:t,scrollBarWidth:m,enableThumbDrag:S,enableTrackClick:R,enableArrowButtons:ee,onItemFocus:ge,enablePointerDrag:re,callbackThrottleMs:Be,inertiaOptions:G,contentInsets:ae,children:(T,B)=>{if(!T)return null;const{entry:V,indentLevel:_,parentIsLast:$}=T;return v.jsx(Se,{entry:V,indentLevel:_,isDirOpen:te,onFileSelect:n,toggleDirectory:s,onToggleDirectoryRecursive:Ve,selectedPath:o,parentIsLast:$,renderChildren:!1,selectionMode:g,selectedItems:I,onSelectionChange:k,iconOverrides:E,showExpandIcons:M,showDirectoryIcons:C,showFileIcons:p,useCanvasExpandIcons:qe},V.absolutePath)}})})},gt=({initialExpanded:e=new Set,storageKey:n}={})=>{const[r,a]=u.useTransition(),[o,s]=u.useState(()=>{if(typeof window<"u"&&n)try{const l=window.localStorage.getItem(n);if(l){const c=JSON.parse(l);return new Set(c)}}catch(l){console.error("[useDirectoryTreeState] Error reading from localStorage",l)}return e}),d=u.useCallback(l=>{a(()=>{s(c=>{const E=new Set(c);return l(E),E})})},[]),y=u.useCallback((l,c)=>{d(E=>{for(const M of l)c(E,M)})},[d]);u.useEffect(()=>{if(n&&typeof window<"u")try{window.localStorage.setItem(n,JSON.stringify(Array.from(o)))}catch(l){console.warn(`Error setting localStorage key "${n}":`,l)}},[o,n]);const h=u.useCallback(l=>{y([l],(c,E)=>{c.has(E)?c.delete(E):c.add(E)})},[y]),b=u.useCallback(l=>{y([l],(c,E)=>{c.add(E)})},[y]),f=u.useCallback(l=>{y([l],(c,E)=>{c.delete(E)})},[y]),g=u.useCallback(l=>{y(l,(c,E)=>{c.delete(E)})},[y]),I=u.useCallback(l=>{y(l,(c,E)=>{c.add(E)})},[y]),k=u.useCallback(()=>{d(l=>{l.clear()})},[d]),x=u.useCallback(l=>o.has(l),[o]);return{expanded:o,toggle:h,expand:b,collapse:f,collapseMultiple:g,expandMultiple:I,collapseAll:k,isExpanded:x,isPending:r}};exports.DirectoryTree=bt;exports.directoryTreeClasses=D;exports.getEntryClasses=$e;exports.getExpandIconClasses=Oe;exports.getNameClasses=Le;exports.getTypeIconClasses=Pe;exports.useDirectoryTreeState=gt;
6
+ <%s key={someKey} {...props} />`,T,C,z,C),Z[C+T]=!0)}if(C=null,w!==void 0&&(a(w),C=""+w),i(h)&&(a(h.key),C=""+h.key),"key"in h){w={};for(var oe in h)oe!=="key"&&(w[oe]=h[oe])}else w=h;return C&&y(w,typeof t=="function"?t.displayName||t.name||"Unknown":t),p(t,C,w,n(),te,ae)}function g(t){b(t)?t._store&&(t._store.validated=1):typeof t=="object"&&t!==null&&t.$$typeof===j&&(t._payload.status==="fulfilled"?b(t._payload.value)&&t._payload.value._store&&(t._payload.value._store.validated=1):t._store&&(t._store.validated=1))}function b(t){return typeof t=="object"&&t!==null&&t.$$typeof===I}var v=d,I=Symbol.for("react.transitional.element"),u=Symbol.for("react.portal"),s=Symbol.for("react.fragment"),m=Symbol.for("react.strict_mode"),_=Symbol.for("react.profiler"),P=Symbol.for("react.consumer"),E=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),L=Symbol.for("react.suspense"),k=Symbol.for("react.suspense_list"),M=Symbol.for("react.memo"),j=Symbol.for("react.lazy"),N=Symbol.for("react.activity"),J=Symbol.for("react.client.reference"),Y=v.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,F=Object.prototype.hasOwnProperty,B=Array.isArray,V=console.createTask?console.createTask:function(){return null};v={react_stack_bottom_frame:function(t){return t()}};var G,K={},ee=v.react_stack_bottom_frame.bind(v,o)(),$=V(l(o)),Z={};ie.Fragment=s,ie.jsx=function(t,h,w){var T=1e4>Y.recentlyCreatedOwnerStacks++;return c(t,h,w,!1,T?Error("react-stack-top-frame"):ee,T?V(l(t)):$)},ie.jsxs=function(t,h,w){var T=1e4>Y.recentlyCreatedOwnerStacks++;return c(t,h,w,!0,T?Error("react-stack-top-frame"):ee,T?V(l(t)):$)}})()),ie}var Te;function We(){return Te||(Te=1,process.env.NODE_ENV==="production"?me.exports=Be():me.exports=He()),me.exports}var R=We();const Ve=(e,r,a)=>{const l=[];for(let n=r;n<a;n++){const o=e[n];if(!(!o||o.length===0))for(const i of o)l.push(i)}return l},Xe=(e,r,a)=>{const l=[];for(let n=r;n<a;n++){const o=e[n];if(!(!o||o.length===0))for(const i of o)l.push(i)}return l},qe=(e,r,a,l)=>{const n=Math.max(1,Math.floor(r*l)),o=Math.max(1,Math.floor(a*l));(e.width!==n||e.height!==o)&&(e.width=n,e.height=o);const i=e.style;i.width!==`${r}px`&&(i.width=`${r}px`),i.height!==`${a}px`&&(i.height=`${a}px`)},Je=(e,r,a)=>{e.lineWidth=a,e.beginPath();for(const l of r)e.moveTo(l.x1,l.y1),e.lineTo(l.x2,l.y2);e.stroke()},Ge=(e,r)=>{const a=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(e.trim());if(!a)return null;let l=a[1];l.length===3&&(l=l.split("").map(y=>y+y).join(""));const n=Number.parseInt(l.slice(0,2),16),o=Number.parseInt(l.slice(2,4),16),i=Number.parseInt(l.slice(4,6),16);return`rgba(${n}, ${o}, ${i}, ${r})`},ze=(e,r,a,l)=>{if(r.length===0)return;const n=Ge(a,.14),o=e.strokeStyle,i=e.fillStyle,y=e.lineWidth,x=e.lineCap,p=e.lineJoin;e.strokeStyle=a,e.lineCap="round",e.lineJoin="round";for(const c of r){const g=l??c.size,b=Math.max(0,g/2),v=Math.max(1,Math.round(g*.08)),I=Math.max(1,Math.round(g*.14)),u=Math.max(0,b-v*.8),s=Math.max(0,u*.55);n&&(e.fillStyle=n,e.beginPath(),e.arc(c.centerX,c.centerY,u,0,Math.PI*2),e.fill()),e.lineWidth=v,e.beginPath(),e.arc(c.centerX,c.centerY,Math.max(0,b-v*.3),0,Math.PI*2),e.stroke(),e.lineWidth=I,e.beginPath(),e.moveTo(c.centerX-s,c.centerY),e.lineTo(c.centerX+s,c.centerY),e.stroke(),c.isExpanded||(e.beginPath(),e.moveTo(c.centerX,c.centerY-s),e.lineTo(c.centerX,c.centerY+s),e.stroke())}e.strokeStyle=o,e.fillStyle=i,e.lineWidth=y,e.lineCap=x,e.lineJoin=p},Me=d.memo(({segmentsByItem:e,glyphsByItem:r,itemHeight:a,width:l,viewportHeight:n,scrollPosition:o,color:i="#a0aec0",strokeWidth:y=1,renderStartIndex:x,renderEndIndex:p,lookaheadEndIndex:c,devicePixelRatio:g,expandGlyphColor:b,expandGlyphSize:v})=>{const I=d.useRef(null),u=d.useRef(null),s=d.useRef({segmentsByItem:e,glyphsByItem:r,itemHeight:a,width:l,viewportHeight:n,scrollPosition:o,color:i,strokeWidth:y,renderStartIndex:x,renderEndIndex:p,lookaheadEndIndex:c,devicePixelRatio:g,expandGlyphColor:b,expandGlyphSize:v}),m=d.useCallback(()=>{u.current=null;const P=I.current;if(!P)return;const E=P.getContext("2d");if(!E)return;const f=s.current;if(f.width<=0||f.viewportHeight<=0){E.clearRect(0,0,P.width,P.height);return}const L=Number.isFinite(f.devicePixelRatio??NaN)?f.devicePixelRatio:typeof window<"u"&&window.devicePixelRatio||1;qe(P,f.width,f.viewportHeight,L);const k=f.segmentsByItem.length,M=typeof f.renderStartIndex=="number"&&Number.isFinite(f.renderStartIndex)?Math.max(0,Math.floor(f.renderStartIndex)):Math.max(0,Math.floor(f.scrollPosition/f.itemHeight)),j=Math.min(k,Math.ceil((f.scrollPosition+f.viewportHeight)/f.itemHeight)),N=(()=>{if(typeof f.renderEndIndex=="number"&&Number.isFinite(f.renderEndIndex)){const B=Math.floor(f.renderEndIndex);return Math.max(Math.min(k,B+1),M)}return Math.max(j,M)})(),J=(()=>{if(typeof f.lookaheadEndIndex=="number"&&Number.isFinite(f.lookaheadEndIndex)){const B=Math.floor(f.lookaheadEndIndex),V=Math.min(k,B+1);return Math.max(V,N)}return Math.max(j,N)})(),Y=Ve(f.segmentsByItem,M,J),F=Xe(f.glyphsByItem,M,J);E.save(),E.scale(L,L),E.clearRect(0,0,f.width,f.viewportHeight),E.translate(0,-f.scrollPosition),E.strokeStyle=f.color,Je(E,Y,f.strokeWidth),ze(E,F,f.expandGlyphColor??f.color,f.expandGlyphSize),E.restore()},[]),_=d.useCallback(()=>{u.current===null&&(u.current=window.requestAnimationFrame(m))},[m]);return d.useEffect(()=>{s.current={segmentsByItem:e,glyphsByItem:r,itemHeight:a,width:l,viewportHeight:n,scrollPosition:o,color:i,strokeWidth:y,renderStartIndex:x,renderEndIndex:p,lookaheadEndIndex:c,devicePixelRatio:g,expandGlyphColor:b,expandGlyphSize:v},_()},[e,r,a,l,n,o,i,y,x,p,c,g,b,v,_]),d.useEffect(()=>()=>{u.current!==null&&(window.cancelAnimationFrame(u.current),u.current=null)},[]),R.jsx("canvas",{ref:I,className:"pointer-events-none absolute top-0 left-0 z-0"})});Me.displayName="TreeLineCanvas";const O={container:"directory-tree-container relative h-full transition-opacity duration-300 overflow-y-hidden pb-[5px] pr-[3px]",containerPending:"opacity-70",entry:"directory-tree-entry flex items-center cursor-pointer relative select-none",entryHover:A.twMerge("directory-tree-entry--hover hover:bg-gray-400/15","dark:hover:bg-gray-200/10"),entrySelected:A.twMerge("directory-tree-entry--selected bg-blue-400/10","dark:bg-blue-400/15"),entryItemSelected:A.twMerge("directory-tree-entry--item-selected bg-blue-400/20 shadow-[0_0_0_1px_rgba(59,130,246,0.3)]","dark:bg-blue-400/25 dark:shadow-[0_0_0_1px_rgba(96,165,250,0.4)]"),expandIcon:A.twMerge("directory-tree-expand-icon w-5 h-5 flex-shrink-0 flex items-center justify-center","text-gray-500","dark:text-gray-400"),expandIconSelected:A.twMerge("directory-tree-expand-icon--selected text-blue-700","dark:text-blue-400"),typeIcon:A.twMerge("directory-tree-type-icon w-5 h-5 flex-shrink-0 flex items-center justify-center","text-gray-500","dark:text-gray-400"),typeIconSelected:A.twMerge("directory-tree-type-icon--selected text-blue-700","dark:text-blue-400"),name:A.twMerge("directory-tree-name overflow-hidden text-ellipsis whitespace-nowrap ml-1","text-gray-700","dark:text-gray-200"),nameDirectory:"directory-tree-name--directory",nameSelected:A.twMerge("directory-tree-name--selected text-blue-800 font-medium","dark:text-blue-300")},Ue={msOverflowStyle:"none",scrollbarWidth:"none"},Ze=()=>{let e=document.getElementById("directory-tree-webkit-scrollbar-hide");e||(e=document.createElement("style"),e.id="directory-tree-webkit-scrollbar-hide",e.textContent=".directory-tree-container::-webkit-scrollbar { display: none; }",document.head.appendChild(e))},Qe=(e,r,a,l)=>{const n=[],o=[];let i=0;const y=(x,p,c)=>{for(let g=0;g<x.length;g++){const b=x[g],v=g===x.length-1,I=[...c,v],u=b.children!==void 0,s=u&&r(b.absolutePath,b.relativePath);let m=p,_=I,P=c;l&&(m=p-1,_=I.slice(1),P=c.slice(1)),n.push({entry:b,indentLevel:m,parentIsLast:_}),a&&(m>i&&(i=m),o.push({id:b.absolutePath,name:b.name,absolutePath:b.absolutePath,indentLevel:m,isLastChild:v,isDirectory:u,isExpanded:s,ancestorIsLast:[...P],hideLines:l&&p===0})),u&&s&&b.children&&y(b.children,p+1,I)}};return y(e,0,[]),{flatItems:n,lineItems:o,maxIndent:i}},Ke=(e,r,a,l,n)=>{const o=l?.renderStart??Math.max(0,Math.floor(n/ne)),i=r>0?Math.ceil(r/ne)+a:a,y=e>0?Math.min(e-1,o+i):o,x=l?.renderEnd??y,p=e>0?Math.min(e-1,x+a):x;return{renderStart:o,renderEnd:x,lookaheadEnd:p}},et=({isDirectory:e,isExpanded:r,showExpandIcons:a,useCanvasExpandIcons:l,expandIconSize:n})=>{const o=n?{width:n,height:n}:void 0,i=n?"":"h-4 w-4";return!(a&&e)||l?R.jsx("span",{className:i,style:o,"aria-hidden":"true"}):r?R.jsx(ye.ChevronDownIcon,{className:i,style:o}):R.jsx(ye.ChevronRightIcon,{className:i,style:o})},tt=Fe.VirtualScroll,rt=e=>e.slice((e.lastIndexOf(".")-1>>>0)+2).toLowerCase(),nt=(e,r,a,l,n)=>{if(e.length===0)return{segmentsByItem:[],glyphsByItem:[]};const o=Array.from({length:e.length},()=>[]),i=Array.from({length:e.length},()=>[]),y=l?typeof n=="number"&&Number.isFinite(n)&&n>0?n:Math.max(8,Math.min(a*.9,r*.7)):0,x=3;for(let p=0;p<e.length;p++){const c=e[p];if(c.hideLines)continue;const g=[],b=p*r,v=b+r/2,I=y>0?y/2+2:a/1.5;for(let m=0;m<c.indentLevel;m++){if(c.ancestorIsLast[m]??!1)continue;let P=!1;for(let E=p;E<e.length;E++){const f=e[E];if(f.indentLevel>m&&f.ancestorIsLast.length>m&&!f.ancestorIsLast[m]){P=!0;break}if(E>p&&f.indentLevel===m)break}if(P){const E=m*a+a/2+x;g.push({key:`${c.id}-ancestor-${m}`,x1:E,y1:b,x2:E,y2:b+r,itemIndex:p})}}const u=c.indentLevel*a,s=u+a/2+x;if(c.isDirectory?g.push({key:`${c.id}-connector-top`,x1:s,y1:b,x2:s,y2:v-I,itemIndex:p}):g.push({key:`${c.id}-connector-top`,x1:s,y1:b,x2:s,y2:v,itemIndex:p}),!c.isDirectory&&c.isLastChild&&g.push({key:`${c.id}-connector-horizontal`,x1:s,y1:v,x2:u+a+x,y2:v,itemIndex:p}),c.isLastChild||(c.isDirectory?g.push({key:`${c.id}-connector-bottom`,x1:s,y1:v+I,x2:s,y2:b+r,itemIndex:p}):g.push({key:`${c.id}-connector-bottom`,x1:s,y1:v,x2:s,y2:b+r,itemIndex:p})),o[p]=g,l&&c.isDirectory){const m=y,_=s,P=v;i[p]=[{key:`${c.id}-glyph`,itemIndex:p,centerX:_,centerY:P,size:m,isExpanded:c.isExpanded}]}}return{segmentsByItem:o,glyphsByItem:i}},ge=(e,r)=>{if(e==null||typeof e=="boolean")return null;if(typeof e=="function")return console.warn(`[DirectoryTree] Function returned by renderer for "${r}". Return a node.`),null;if(typeof e=="object"){if("then"in e)return console.warn(`[DirectoryTree] Promise returned for "${r}". Not supported.`),null;if(Array.isArray(e)){const l=e.map(n=>ge(n,r)).filter(Boolean);return l.length?l:null}const a=e.type;if(a&&a.$$typeof===Symbol.for("react.lazy"))return console.warn(`[DirectoryTree] Lazy component for "${r}". Not supported.`),null}return e},at=(e,r)=>{const{entry:a,isDirectory:l,isExpanded:n,extension:o}=e;let i;return a.icon!==void 0?i=a.icon:l?i=n&&r?.directoryExpanded||r?.directory||R.jsx(ye.FolderIcon,{className:"h-4 w-4"}):o&&r?.fileByExtension?.[o]?i=r.fileByExtension[o]:i=r?.file||(o==="md"?R.jsx(ye.DocumentTextIcon,{className:"h-4 w-4"}):R.jsx(Ye.FileIcon,{className:"h-4 w-4"})),ge(typeof i=="function"?i(e):i,a.absolutePath)},ve=d.memo(({entry:e,indentLevel:r,isDirOpen:a,parentIsLast:l,renderChildren:n=!0,expansion:{toggleDirectory:o,onToggleDirectoryRecursive:i},selection:{onFileSelect:y,selectedPath:x,mode:p="none",selectedItems:c,onSelectionChange:g},visual:{iconOverrides:b,showExpandIcons:v=!0,showDirectoryIcons:I=!0,showFileIcons:u=!0,useCanvasExpandIcons:s=!1,expandIconSize:m}})=>{const _=d.useRef(null),[P,E]=d.useState(null),[f,L]=d.useState(!1);d.useEffect(()=>()=>{_.current&&window.clearTimeout(_.current)},[]);const k=e.children!==void 0,M=k&&a(e.absolutePath,e.relativePath),j=e.absolutePath===x,N=!k&&c?.has(e.absolutePath),J=k?void 0:rt(e.name);d.useEffect(()=>{E(M&&e.children?e.children:null)},[M,e.children]);const Y=d.useCallback($=>{if($.stopPropagation(),p!=="none"&&!k&&g&&g(e.absolutePath,!N),!k)return y(e.absolutePath,e.relativePath);_.current?(window.clearTimeout(_.current),_.current=null,i(e)):_.current=window.setTimeout(()=>{o(e.absolutePath,e.relativePath),_.current=null},500)},[k,e,i,o,y,p,g,N]),F=A.twMerge(O.entry,f&&O.entryHover,j&&O.entrySelected,N&&O.entryItemSelected),B=A.twMerge(O.expandIcon,(j||N)&&O.expandIconSelected),V=A.twMerge(O.typeIcon,(j||N)&&O.typeIconSelected),G=A.twMerge(O.name,k&&O.nameDirectory,(j||N)&&O.nameSelected),K=et({isDirectory:k,isExpanded:M,showExpandIcons:v,useCanvasExpandIcons:s,expandIconSize:m}),ee=(k?I:u)?at({entry:e,isDirectory:k,isExpanded:M,isSelected:j,isItemSelected:!!N,extension:J},b):null;return R.jsxs(d.Fragment,{children:[R.jsxs("div",{className:F,style:{paddingLeft:`${Math.max(0,r*ce)}px`,transform:r<0?`translateX(${r*ce}px)`:void 0,width:r<0?`calc(100% + ${Math.abs(r*ce)}px)`:void 0,height:`${ne}px`},"data-entry-type":k?"directory":"file","data-entry-expanded":k?String(M):void 0,"data-entry-selected":j?"true":void 0,"data-entry-item-selected":N?"true":void 0,onClick:Y,onMouseEnter:()=>L(!0),onMouseLeave:()=>L(!1),onKeyDown:$=>$.key==="Enter"&&Y($),tabIndex:0,role:"treeitem","aria-expanded":k?M:void 0,"aria-label":`${e.name} (${k?"directory":"file"})`,children:[(v||s)&&R.jsx("span",{className:B,children:K}),(k?I:u)&&R.jsx("span",{className:V,children:ee}),R.jsx("span",{className:G,"data-entry-type":k?"directory":"file","data-entry-role":"name",children:e.label??e.name})]}),M&&P&&n&&R.jsx("fieldset",{children:P.map(($,Z)=>R.jsx(ve,{entry:$,indentLevel:r+1,isDirOpen:a,parentIsLast:[...l,Z===P.length-1],expansion:{toggleDirectory:o,onToggleDirectoryRecursive:i},selection:{onFileSelect:y,selectedPath:x,mode:p,selectedItems:c,onSelectionChange:g},visual:{iconOverrides:b,showExpandIcons:v,showDirectoryIcons:I,showFileIcons:u,useCanvasExpandIcons:s,expandIconSize:m}},$.absolutePath))})]},e.absolutePath)},(e,r)=>{if(e.entry!==r.entry)return!1;const a=e.entry.children!==void 0,l=r.entry.children!==void 0,n=a&&e.isDirOpen(e.entry.absolutePath,e.entry.relativePath),o=l&&r.isDirOpen(r.entry.absolutePath,r.entry.relativePath);return e.indentLevel===r.indentLevel&&n===o&&e.selection.selectedPath===r.selection.selectedPath&&e.selection.mode===r.selection.mode&&e.selection.selectedItems===r.selection.selectedItems&&e.visual.iconOverrides===r.visual.iconOverrides&&e.visual.showExpandIcons===r.visual.showExpandIcons&&e.visual.showDirectoryIcons===r.visual.showDirectoryIcons&&e.visual.showFileIcons===r.visual.showFileIcons&&e.visual.useCanvasExpandIcons===r.visual.useCanvasExpandIcons&&e.visual.expandIconSize===r.visual.expandIconSize&&e.parentIsLast.length===r.parentIsLast.length&&e.parentIsLast.every((i,y)=>i===r.parentIsLast[y])});ve.displayName="DirectoryEntryItem";const ne=20,ce=16,Ce=12,Ne=e=>{const r=[];if(e.children)for(const a of e.children)a.type==="directory"&&(r.push(a.absolutePath),r.push(...Ne(a)));return r},ot=({entries:e,expansion:{toggle:r,isExpanded:a,expandMultiple:l,collapseMultiple:n,isPending:o,alwaysExpanded:i=!1,doubleClickAction:y="recursive"},selection:{onFileSelect:x,selectedPath:p,mode:c="none",selectedItems:g,onSelectionChange:b},visual:{className:v,style:I,lineColor:u="#A0AEC0",showTreeLines:s=!0,showExpandIcons:m=!0,showDirectoryIcons:_=!0,showFileIcons:P=!0,iconOverrides:E,expandIconSize:f,removeRootIndent:L=!1}={},virtualScroll:k})=>{const[M,j]=d.useState(!1),N=d.useRef(null),J=d.useRef(null),[Y,F]=d.useState(0),[B,V]=d.useState(null),{overscanCount:G=15,className:K,background:ee,onScroll:$,onRangeChange:Z,initialScrollIndex:t,initialScrollOffset:h,tapScrollCircleOptions:w,scrollBarWidth:T,enableThumbDrag:te,enableTrackClick:ae,enableArrowButtons:C,enablePointerDrag:z,callbackThrottleMs:oe=5,inertiaOptions:pe,contentInsets:je,onItemFocus:Oe,viewportHeightOverride:H}=k??{},[ue,xe]=d.useState(typeof h=="number"?h:0),Ae=d.useCallback((S,X)=>{xe(S),$?.(S,X)},[$]),$e=d.useCallback((S,X,W,D,q,se)=>{V(U=>U&&U.renderStart===S&&U.renderEnd===X?U:{renderStart:S,renderEnd:X}),Z?.(S,X,W,D,q,se)},[Z]);d.useEffect(()=>{typeof h=="number"&&xe(h)},[h]),d.useEffect(()=>{j(!0),Ze()},[]),d.useEffect(()=>{if(typeof H=="number"){F(D=>Math.abs(D-H)>1?H:D);return}const S=N.current;if(!S)return F(0);(()=>{const D=S.clientHeight;F(q=>Math.abs(q-D)>1?D:q)})();const W=new ResizeObserver(D=>{for(const q of D)q.target===S&&F(se=>Math.abs(se-q.contentRect.height)>1?q.contentRect.height:se)});return W.observe(S),()=>W.disconnect()},[H]);const Q=typeof H=="number"?H:Y,re=d.useCallback((S,X)=>i||(M?a(S):!1),[M,a,i]),Ee=A.twMerge(O.container,o&&O.containerPending,v),ke=d.useMemo(()=>({...Ue,...I??{},...typeof H=="number"?{height:H,minHeight:H}:{}}),[I,H]),De=d.useCallback((S,X)=>{const W=[S.absolutePath,...Ne(S)],D=X||y;if(W.every(U=>re(U)))return n(W);if(W.every(U=>!re(U))||D==="recursive")return l(W);if(D==="toggle")return n(W);console.warn(`[DirectoryTree] Unknown double click action: ${D}. No action taken.`)},[re,l,n,y]),{flatItems:de,lineItems:be,maxIndent:we}=d.useMemo(()=>Qe(e,re,s,L),[e,re,s,L]),fe=d.useMemo(()=>!s||be.length===0?{segmentsByItem:[],glyphsByItem:[]}:nt(be,ne,ce,s,f??Ce),[be,s,f]),he=d.useMemo(()=>!s||e.length===0?0:(we+2)*ce,[e.length,we,s]),{renderStart:Se,renderEnd:Ie,lookaheadEnd:Re}=d.useMemo(()=>Ke(de.length,Q,G,B,ue),[de.length,Q,G,B,ue]),Le=d.useMemo(()=>!s||he<=0||Q<=0||fe.segmentsByItem.length===0?null:R.jsx("div",{className:"pointer-events-none absolute inset-0 z-0","aria-hidden":"true",children:R.jsx("div",{className:"absolute top-0 left-0",style:{width:he,height:Q},children:R.jsx(Me,{segmentsByItem:fe.segmentsByItem,glyphsByItem:fe.glyphsByItem,itemHeight:ne,width:he,viewportHeight:Q,scrollPosition:ue,color:u,expandGlyphColor:u,expandGlyphSize:f??Ce,renderStartIndex:Se,renderEndIndex:Ie,lookaheadEndIndex:Re})})}),[he,Q,Se,Ie,Re,ue,fe,u,s,f]);return e.length===0?R.jsx("div",{className:Ee,style:ke}):R.jsx("div",{ref:N,className:Ee,style:ke,role:"tree",children:R.jsx(tt,{ref:J,itemCount:de.length,getItem:S=>de[S],getItemHeight:()=>ne,viewportSize:Q,overscanCount:G,onScroll:Ae,onRangeChange:$e,className:K,background:R.jsxs(R.Fragment,{children:[Le,ee]}),initialScrollIndex:t,initialScrollOffset:h,tapScrollCircleOptions:w,scrollBarWidth:T,enableThumbDrag:te,enableTrackClick:ae,enableArrowButtons:C,onItemFocus:Oe,enablePointerDrag:z,callbackThrottleMs:oe,inertiaOptions:pe,contentInsets:je,children:S=>S&&R.jsx(ve,{entry:S.entry,indentLevel:S.indentLevel,isDirOpen:re,parentIsLast:S.parentIsLast,renderChildren:!1,expansion:{toggleDirectory:r,onToggleDirectoryRecursive:De},selection:{onFileSelect:x,selectedPath:p??null,mode:c,selectedItems:g,onSelectionChange:b},visual:{iconOverrides:E,showExpandIcons:m,showDirectoryIcons:_,showFileIcons:P,useCanvasExpandIcons:s,expandIconSize:f}},S.entry.absolutePath)})})},st=({initialExpanded:e=new Set,storageKey:r}={})=>{const[a,l]=d.useTransition(),[n,o]=d.useState(()=>{if(typeof window<"u"&&r)try{const u=window.localStorage.getItem(r);if(u){const s=JSON.parse(u);return new Set(s)}}catch(u){console.error("[useDirectoryTreeState] Error reading from localStorage",u)}return e}),i=d.useCallback(u=>{l(()=>{o(s=>{const m=new Set(s);return u(m),m})})},[]),y=d.useCallback((u,s)=>{i(m=>{for(const _ of u)s(m,_)})},[i]);d.useEffect(()=>{if(r&&typeof window<"u")try{window.localStorage.setItem(r,JSON.stringify(Array.from(n)))}catch(u){console.warn(`Error setting localStorage key "${r}":`,u)}},[n,r]);const x=d.useCallback(u=>{y([u],(s,m)=>{s.has(m)?s.delete(m):s.add(m)})},[y]),p=d.useCallback(u=>{y([u],(s,m)=>{s.add(m)})},[y]),c=d.useCallback(u=>{y([u],(s,m)=>{s.delete(m)})},[y]),g=d.useCallback(u=>{y(u,(s,m)=>{s.delete(m)})},[y]),b=d.useCallback(u=>{y(u,(s,m)=>{s.add(m)})},[y]),v=d.useCallback(()=>{i(u=>{u.clear()})},[i]),I=d.useCallback(u=>n.has(u),[n]);return{expanded:n,toggle:x,expand:p,collapse:c,collapseMultiple:g,expandMultiple:b,collapseAll:v,isExpanded:I,isPending:a}};exports.DirectoryTree=ot;exports.directoryTreeClasses=O;exports.useDirectoryTreeState=st;