aural-ui 2.0.4 → 2.0.5

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.
@@ -0,0 +1,1325 @@
1
+ import React from "react"
2
+ import type { Meta, StoryObj } from "@storybook/react"
3
+
4
+ import { ImportLeftArrowFolderIcon } from "."
5
+
6
+ const meta: Meta<typeof ImportLeftArrowFolderIcon> = {
7
+ title: "Icons/ImportLeftArrowFolderIcon",
8
+ component: ImportLeftArrowFolderIcon,
9
+ parameters: {
10
+ layout: "fullscreen",
11
+ backgrounds: {
12
+ default: "dark",
13
+ values: [
14
+ { name: "dark", value: "#0a0a0a" },
15
+ { name: "darker", value: "#000000" },
16
+ { name: "light", value: "#ffffff" },
17
+ ],
18
+ },
19
+ docs: {
20
+ page: () => (
21
+ <>
22
+ {/* Override default docs styling */}
23
+ <style>
24
+ {`
25
+ .sbdocs-wrapper {
26
+ padding: 0 ;
27
+ max-width: none ;
28
+ background: transparent ;
29
+ }
30
+ .sbdocs-content {
31
+ max-width: none ;
32
+ padding: 0 ;
33
+ margin: 0 ;
34
+ background: transparent ;
35
+ }
36
+ .docs-story {
37
+ background: transparent ;
38
+ }
39
+ .sbdocs {
40
+ background: transparent ;
41
+ }
42
+ body {
43
+ background: #0a0a0a ;
44
+ }
45
+ #storybook-docs {
46
+ background: #0a0a0a ;
47
+ }
48
+ .sbdocs-preview {
49
+ background: transparent ;
50
+ border: none ;
51
+ }
52
+ .sbdocs-h1, .sbdocs-h2, .sbdocs-h3, .sbdocs-h4, .sbdocs-h5, .sbdocs-h6 {
53
+ color: white ;
54
+ }
55
+ .sbdocs-p, .sbdocs-li {
56
+ color: rgba(255, 255, 255, 0.7) ;
57
+ }
58
+ .sbdocs-code {
59
+ background: rgba(255, 255, 255, 0.1) ;
60
+ color: rgba(168, 85, 247, 1) ;
61
+ border: 1px solid rgba(255, 255, 255, 0.1) ;
62
+ }
63
+ .sbdocs-pre {
64
+ background: rgba(0, 0, 0, 0.4) ;
65
+ border: 1px solid rgba(255, 255, 255, 0.1) ;
66
+ }
67
+ .sbdocs-table {
68
+ background: rgba(255, 255, 255, 0.05) ;
69
+ border: 1px solid rgba(255, 255, 255, 0.1) ;
70
+ }
71
+ .sbdocs-table th {
72
+ background: rgba(255, 255, 255, 0.05) ;
73
+ color: white ;
74
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1) ;
75
+ }
76
+ .sbdocs-table td {
77
+ color: rgba(255, 255, 255, 0.7) ;
78
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05) ;
79
+ }
80
+ @keyframes search-pulse {
81
+ 0%, 100% { transform: scale(1); opacity: 1; }
82
+ 50% { transform: scale(1.05); opacity: 0.8; }
83
+ }
84
+ .animate-search-pulse {
85
+ animation: search-pulse 2s ease-in-out infinite;
86
+ }
87
+ @keyframes document-slide {
88
+ 0%, 100% { transform: translateX(0) rotate(0deg); }
89
+ 50% { transform: translateX(-2px) rotate(-1deg); }
90
+ }
91
+ .animate-document-slide {
92
+ animation: document-slide 3s ease-in-out infinite;
93
+ }
94
+ `}
95
+ </style>
96
+
97
+ <div className="min-h-screen bg-gradient-to-br from-gray-900 via-indigo-900/20 to-gray-900">
98
+ {/* Header */}
99
+ <div className="relative overflow-hidden border-b border-white/10 bg-black/20 backdrop-blur-xl">
100
+ <div className="absolute inset-0 bg-gradient-to-r from-indigo-500/10 via-transparent to-cyan-500/10" />
101
+ <div className="relative !mx-auto max-w-7xl px-6 py-16">
102
+ <div className="!space-y-6 text-center">
103
+ <div className="!mx-auto flex h-24 w-24 items-center justify-center rounded-2xl border border-indigo-500/30 bg-gradient-to-br from-indigo-500/20 to-cyan-500/20">
104
+ <ImportLeftArrowFolderIcon className="h-12 w-12 text-indigo-400" />
105
+ </div>
106
+ <h1 className="!text-fm-primary text-5xl font-bold">
107
+ ImportLeftArrowFolderIcon
108
+ </h1>
109
+ <p className="!mx-auto max-w-3xl text-xl leading-relaxed !text-white/70">
110
+ A specialized folder icon featuring a left-pointing import
111
+ arrow, symbolizing incoming files or data. Ideal for file
112
+ transfer interfaces, document import workflows, and
113
+ organized content systems. Designed with accessibility in
114
+ mind using Radix UI's AccessibleIcon wrapper.
115
+ </p>
116
+
117
+ {/* Stats */}
118
+ <div className="flex items-center justify-center gap-8 pt-8">
119
+ <div className="text-center">
120
+ <div className="text-3xl font-bold text-indigo-300">
121
+ Import
122
+ </div>
123
+ <div className="text-sm text-white/60">
124
+ Bring in files smoothly
125
+ </div>
126
+ </div>
127
+ <div className="h-8 w-px bg-white/20" />
128
+ <div className="text-center">
129
+ <div className="text-3xl font-bold text-cyan-300">
130
+ Directional
131
+ </div>
132
+ <div className="text-sm text-white/60">
133
+ Left-arrow indicator
134
+ </div>
135
+ </div>
136
+ <div className="h-8 w-px bg-white/20" />
137
+ <div className="text-center">
138
+ <div className="text-3xl font-bold text-blue-300">
139
+ Accessible
140
+ </div>
141
+ <div className="text-sm text-white/60">
142
+ Radix UI supported
143
+ </div>
144
+ </div>
145
+ </div>
146
+ </div>
147
+ </div>
148
+ </div>
149
+
150
+ {/* Content */}
151
+ <div className="!mx-auto max-w-7xl !space-y-16 px-6 py-12">
152
+ {/* Quick Usage */}
153
+ <div className="!space-y-8">
154
+ <h2 className="text-center text-3xl font-bold !text-white">
155
+ Quick Start
156
+ </h2>
157
+
158
+ <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
159
+ {/* Basic Usage */}
160
+ <div className="!space-y-4">
161
+ <h3 className="text-xl font-semibold !text-indigo-300">
162
+ Basic Usage
163
+ </h3>
164
+ <div className="rounded-lg bg-black/40 p-4">
165
+ <pre className="overflow-x-auto text-sm !text-green-300">{`import { ImportLeftArrowFolderIcon } from "@icons/import-left-arrow-folder-icon"
166
+
167
+ function ImportButton() {
168
+ return (
169
+ <button
170
+ aria-label="Import folder"
171
+ className="flex items-center gap-2 rounded border border-indigo-500/30 bg-indigo-500/10 px-4 py-2 text-indigo-300 hover:bg-indigo-500/20 hover:cursor-pointer"
172
+ >
173
+ <ImportLeftArrowFolderIcon className="h-4 w-4" />
174
+ Import
175
+ </button>
176
+ )
177
+ }`}</pre>
178
+ </div>
179
+ </div>
180
+
181
+ {/* Live Preview */}
182
+ <div className="!space-y-4">
183
+ <h3 className="text-xl font-semibold !text-indigo-300">
184
+ Live Preview
185
+ </h3>
186
+ <div className="flex h-32 items-center justify-center rounded-lg border border-white/10 bg-white/5">
187
+ <button className="flex items-center gap-2 rounded border border-indigo-500/30 bg-indigo-500/10 px-4 py-2 text-indigo-300 hover:cursor-pointer hover:bg-indigo-500/20">
188
+ <ImportLeftArrowFolderIcon className="h-4 w-4" />
189
+ Import
190
+ </button>
191
+ </div>
192
+ </div>
193
+ </div>
194
+ </div>
195
+
196
+ {/* Props Documentation */}
197
+ <div className="!space-y-8">
198
+ <h2 className="text-center text-3xl font-bold !text-white">
199
+ Props & Configuration
200
+ </h2>
201
+
202
+ <div className="overflow-hidden rounded-lg border border-white/10 bg-white/5">
203
+ <div className="bg-white/5 p-4">
204
+ <h3 className="text-xl font-semibold !text-white">Props</h3>
205
+ </div>
206
+ <table className="!my-0 w-full">
207
+ <thead className="bg-white/5">
208
+ <tr className="border-b border-white/10">
209
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
210
+ Prop
211
+ </th>
212
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
213
+ Type
214
+ </th>
215
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
216
+ Default
217
+ </th>
218
+ <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
219
+ Description
220
+ </th>
221
+ </tr>
222
+ </thead>
223
+ <tbody>
224
+ <tr className="border-b border-white/5">
225
+ <td className="px-6 py-4 font-mono text-sm !text-indigo-300">
226
+ width
227
+ </td>
228
+ <td className="px-6 py-4 text-sm !text-white/70">
229
+ number | string
230
+ </td>
231
+ <td className="px-6 py-4 text-sm !text-white/50">24</td>
232
+ <td className="px-6 py-4 text-sm !text-white/70">
233
+ Width of the icon in pixels
234
+ </td>
235
+ </tr>
236
+ <tr className="border-b border-white/5 !bg-black/10">
237
+ <td className="px-6 py-4 font-mono text-sm !text-indigo-300">
238
+ height
239
+ </td>
240
+ <td className="px-6 py-4 text-sm !text-white/70">
241
+ number | string
242
+ </td>
243
+ <td className="px-6 py-4 text-sm !text-white/50">24</td>
244
+ <td className="px-6 py-4 text-sm !text-white/70">
245
+ Height of the icon in pixels
246
+ </td>
247
+ </tr>
248
+ <tr className="border-b border-white/5">
249
+ <td className="px-6 py-4 font-mono text-sm !text-indigo-300">
250
+ stroke
251
+ </td>
252
+ <td className="px-6 py-4 text-sm !text-white/70">
253
+ string
254
+ </td>
255
+ <td className="px-6 py-4 text-sm !text-white/50">
256
+ currentColor
257
+ </td>
258
+ <td className="px-6 py-4 text-sm !text-white/70">
259
+ Stroke color of the icon lines
260
+ </td>
261
+ </tr>
262
+ <tr className="border-b border-white/5 !bg-black/10">
263
+ <td className="px-6 py-4 font-mono text-sm !text-indigo-300">
264
+ strokeWidth
265
+ </td>
266
+ <td className="px-6 py-4 text-sm !text-white/70">
267
+ number | string
268
+ </td>
269
+ <td className="px-6 py-4 text-sm !text-white/50">
270
+ 1.5
271
+ </td>
272
+ <td className="px-6 py-4 text-sm !text-white/70">
273
+ Thickness of the stroke lines
274
+ </td>
275
+ </tr>
276
+ <tr className="border-b border-white/5">
277
+ <td className="px-6 py-4 font-mono text-sm !text-indigo-300">
278
+ strokeLinecap
279
+ </td>
280
+ <td className="px-6 py-4 text-sm !text-white/70">
281
+ string
282
+ </td>
283
+ <td className="px-6 py-4 text-sm !text-white/50">
284
+ square
285
+ </td>
286
+ <td className="px-6 py-4 text-sm !text-white/70">
287
+ Style of line endings (e.g., butt, round, square)
288
+ </td>
289
+ </tr>
290
+ <tr className="border-b border-white/5 !bg-black/10">
291
+ <td className="px-6 py-4 font-mono text-sm !text-indigo-300">
292
+ className
293
+ </td>
294
+ <td className="px-6 py-4 text-sm !text-white/70">
295
+ string
296
+ </td>
297
+ <td className="px-6 py-4 text-sm !text-white/50">-</td>
298
+ <td className="px-6 py-4 text-sm !text-white/70">
299
+ CSS classes for styling (use for size, color, etc.)
300
+ </td>
301
+ </tr>
302
+ <tr className="!bg-black/10">
303
+ <td className="px-6 py-4 font-mono text-sm !text-indigo-300">
304
+ ...svgProps
305
+ </td>
306
+ <td className="px-6 py-4 text-sm !text-white/70">
307
+ SVGProps
308
+ </td>
309
+ <td className="px-6 py-4 text-sm !text-white/50">-</td>
310
+ <td className="px-6 py-4 text-sm !text-white/70">
311
+ All standard SVG element props supported by React
312
+ </td>
313
+ </tr>
314
+ </tbody>
315
+ </table>
316
+ </div>
317
+ </div>
318
+
319
+ {/* Size Variations */}
320
+ <div className="!space-y-8">
321
+ <h2 className="text-center text-3xl font-bold !text-white">
322
+ Size Variations
323
+ </h2>
324
+ <div className="rounded-lg border border-white/10 bg-white/5 p-8">
325
+ <div className="!space-y-6">
326
+ <div className="grid grid-cols-1 gap-8 md:grid-cols-2">
327
+ <div className="!space-y-4">
328
+ <h3 className="text-lg font-semibold !text-indigo-300">
329
+ Standard Sizes
330
+ </h3>
331
+ <div className="flex items-end gap-6 rounded-lg bg-black/20 p-6">
332
+ <div className="text-center">
333
+ <ImportLeftArrowFolderIcon className="!mx-auto mb-2 h-3 w-3 text-indigo-400" />
334
+ <span className="text-xs text-white/60">12px</span>
335
+ </div>
336
+ <div className="text-center">
337
+ <ImportLeftArrowFolderIcon className="!mx-auto mb-2 h-4 w-4 text-indigo-400" />
338
+ <span className="text-xs text-white/60">16px</span>
339
+ </div>
340
+ <div className="text-center">
341
+ <ImportLeftArrowFolderIcon className="!mx-auto mb-2 h-5 w-5 text-indigo-400" />
342
+ <span className="text-xs text-white/60">20px</span>
343
+ </div>
344
+ <div className="text-center">
345
+ <ImportLeftArrowFolderIcon className="!mx-auto mb-2 h-6 w-6 text-indigo-400" />
346
+ <span className="text-xs text-white/60">24px</span>
347
+ </div>
348
+ <div className="text-center">
349
+ <ImportLeftArrowFolderIcon className="!mx-auto mb-2 h-8 w-8 text-indigo-400" />
350
+ <span className="text-xs text-white/60">32px</span>
351
+ </div>
352
+ <div className="text-center">
353
+ <ImportLeftArrowFolderIcon className="!mx-auto mb-2 h-12 w-12 text-indigo-400" />
354
+ <span className="text-xs text-white/60">48px</span>
355
+ </div>
356
+ </div>
357
+ </div>
358
+
359
+ <div className="!space-y-4">
360
+ <h3 className="text-lg font-semibold !text-indigo-300">
361
+ Code Example
362
+ </h3>
363
+ <div className="rounded-lg bg-black/40 p-4">
364
+ <pre className="overflow-x-auto text-sm !text-cyan-300">
365
+ {`// Small (16px)
366
+ <ImportLeftArrowFolderIcon className="h-4 w-4 " />
367
+
368
+ // Medium (24px)
369
+ <ImportLeftArrowFolderIcon className="h-6 w-6 " />
370
+
371
+ // Large (32px)
372
+ <ImportLeftArrowFolderIcon className="h-8 w-8 " />
373
+
374
+ // Custom size with props
375
+ <ImportLeftArrowFolderIcon width={40} height={40} />`}
376
+ </pre>
377
+ </div>
378
+ </div>
379
+ </div>
380
+ </div>
381
+ </div>
382
+ </div>
383
+
384
+ {/* Color Variations */}
385
+ <div className="!space-y-8">
386
+ <h2 className="text-center text-3xl font-bold !text-white">
387
+ Color Variations
388
+ </h2>
389
+
390
+ <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
391
+ {/* Semantic Colors */}
392
+ <div className="!space-y-4">
393
+ <h3 className="text-lg font-semibold !text-indigo-300">
394
+ Semantic Colors
395
+ </h3>
396
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
397
+ <div className="flex items-center gap-4">
398
+ <ImportLeftArrowFolderIcon className="h-6 w-6 text-indigo-400" />
399
+ <div>
400
+ <div className="text-sm font-medium text-white">
401
+ Primary
402
+ </div>
403
+ <div className="text-xs text-white/60">
404
+ text-indigo-400
405
+ </div>
406
+ </div>
407
+ </div>
408
+ <div className="flex items-center gap-4">
409
+ <ImportLeftArrowFolderIcon className="h-6 w-6 text-cyan-400" />
410
+ <div>
411
+ <div className="text-sm font-medium text-white">
412
+ Active
413
+ </div>
414
+ <div className="text-xs text-white/60">
415
+ text-cyan-400
416
+ </div>
417
+ </div>
418
+ </div>
419
+ <div className="flex items-center gap-4">
420
+ <ImportLeftArrowFolderIcon className="h-6 w-6 text-gray-400" />
421
+ <div>
422
+ <div className="text-sm font-medium text-white">
423
+ Disabled
424
+ </div>
425
+ <div className="text-xs text-white/60">
426
+ text-gray-400
427
+ </div>
428
+ </div>
429
+ </div>
430
+ <div className="flex items-center gap-4">
431
+ <ImportLeftArrowFolderIcon className="h-6 w-6 text-blue-400" />
432
+ <div>
433
+ <div className="text-sm font-medium text-white">
434
+ Info
435
+ </div>
436
+ <div className="text-xs text-white/60">
437
+ text-blue-400
438
+ </div>
439
+ </div>
440
+ </div>
441
+ <div className="flex items-center gap-4">
442
+ <ImportLeftArrowFolderIcon className="h-6 w-6 text-green-400" />
443
+ <div>
444
+ <div className="text-sm font-medium text-white">
445
+ Success
446
+ </div>
447
+ <div className="text-xs text-white/60">
448
+ text-green-400
449
+ </div>
450
+ </div>
451
+ </div>
452
+ <div className="flex items-center gap-4">
453
+ <ImportLeftArrowFolderIcon className="h-6 w-6 text-yellow-400" />
454
+ <div>
455
+ <div className="text-sm font-medium text-white">
456
+ Warning
457
+ </div>
458
+ <div className="text-xs text-white/60">
459
+ text-yellow-400
460
+ </div>
461
+ </div>
462
+ </div>
463
+ <div className="flex items-center gap-4">
464
+ <ImportLeftArrowFolderIcon className="h-6 w-6 text-red-400" />
465
+ <div>
466
+ <div className="text-sm font-medium text-white">
467
+ Error
468
+ </div>
469
+ <div className="text-xs text-white/60">
470
+ text-red-400
471
+ </div>
472
+ </div>
473
+ </div>
474
+ </div>
475
+ </div>
476
+
477
+ {/* Custom Colors */}
478
+ <div className="!space-y-4">
479
+ <h3 className="text-lg font-semibold !text-indigo-300">
480
+ Custom Colors
481
+ </h3>
482
+ <div className="rounded-lg bg-black/40 p-4">
483
+ <pre className="overflow-x-auto text-sm !text-green-300">
484
+ {`// Using Tailwind classes
485
+ <ImportLeftArrowFolderIcon className="h-6 w-6 text-indigo-400" />
486
+ <ImportLeftArrowFolderIcon className="h-6 w-6 text-cyan-500" />
487
+
488
+ // Using CSS custom properties
489
+ <ImportLeftArrowFolderIcon
490
+ className="h-6 w-6"
491
+ style={{ color: 'var(--color-primary)' }}
492
+ />
493
+
494
+ // Direct stroke prop
495
+ <ImportLeftArrowFolderIcon
496
+ width={24}
497
+ height={24}
498
+ stroke="#3b82f6"
499
+ />`}
500
+ </pre>
501
+ </div>
502
+ </div>
503
+ </div>
504
+ </div>
505
+
506
+ {/* Usage Examples */}
507
+ <div className="!space-y-8">
508
+ <h2 className="text-center text-3xl font-bold !text-white">
509
+ Usage Examples
510
+ </h2>
511
+
512
+ <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
513
+ {/* File Import Area */}
514
+ <div className="!space-y-4">
515
+ <h3 className="text-lg font-semibold !text-indigo-300">
516
+ File Import Area
517
+ </h3>
518
+ <div className="!space-y-4">
519
+ <div className="relative rounded-lg border-2 border-dashed border-white/20 bg-white/5 p-8 text-center transition-colors hover:border-indigo-400/50 hover:bg-indigo-500/10">
520
+ <ImportLeftArrowFolderIcon className="!mx-auto h-12 w-12 text-white/40" />
521
+ <h4 className="mt-4 text-lg font-medium !text-white">
522
+ Import Folder
523
+ </h4>
524
+ <p className="mt-2 text-sm !text-white/60">
525
+ Drag and drop folders here, or click to browse
526
+ </p>
527
+ <button className="mt-4 rounded-lg bg-indigo-500/20 px-4 py-2 text-indigo-300 transition-colors hover:bg-indigo-500/30">
528
+ Browse Folders
529
+ </button>
530
+ </div>
531
+ <div className="rounded-lg bg-black/40 p-4">
532
+ <pre className="overflow-x-auto text-sm !text-green-300">
533
+ {`<div className="relative border-2 border-dashed border-white/20 bg-white/5 p-8 text-center rounded-lg hover:border-indigo-400/50 hover:bg-indigo-500/10 transition-colors">
534
+ <ImportFolderIcon className="mx-auto h-12 w-12 text-white/40" />
535
+ <h4 className="mt-4 text-lg font-medium text-white">Import Folder</h4>
536
+ <p className="mt-2 text-sm text-white/60">
537
+ Drag and drop folders here, or click to browse
538
+ </p>
539
+ <button className="mt-4 bg-indigo-500/20 px-4 py-2 rounded-lg text-indigo-300 hover:bg-indigo-500/30 transition-colors">
540
+ Browse Folders
541
+ </button>
542
+ </div>`}
543
+ </pre>
544
+ </div>
545
+ </div>
546
+ </div>
547
+
548
+ {/* Import Status List */}
549
+ <div className="!space-y-4">
550
+ <h3 className="text-lg font-semibold !text-indigo-300">
551
+ Import Status List
552
+ </h3>
553
+ <div className="!space-y-4">
554
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4">
555
+ {[
556
+ { name: "Documents", status: "completed", count: 24 },
557
+ { name: "Images", status: "processing", count: 56 },
558
+ { name: "Videos", status: "pending", count: 12 },
559
+ ].map((folder, index) => (
560
+ <div
561
+ key={index}
562
+ className="flex items-center gap-3 rounded border border-white/10 bg-white/5 p-3 transition-colors hover:bg-white/10"
563
+ >
564
+ <ImportLeftArrowFolderIcon
565
+ className={`h-5 w-5 ${
566
+ folder.status === "completed"
567
+ ? "text-green-400"
568
+ : folder.status === "processing"
569
+ ? "text-yellow-400"
570
+ : "text-gray-400"
571
+ }`}
572
+ />
573
+ <div className="flex-1">
574
+ <div className="text-sm font-medium text-white">
575
+ {folder.name}
576
+ </div>
577
+ <div className="text-xs text-white/60">
578
+ {folder.count} files
579
+ </div>
580
+ </div>
581
+ <div
582
+ className={`rounded px-2 py-1 text-xs ${
583
+ folder.status === "completed"
584
+ ? "bg-green-500/20 text-green-300"
585
+ : folder.status === "processing"
586
+ ? "bg-yellow-500/20 text-yellow-300"
587
+ : "bg-gray-500/20 text-gray-300"
588
+ }`}
589
+ >
590
+ {folder.status}
591
+ </div>
592
+ </div>
593
+ ))}
594
+ </div>
595
+ <div className="rounded-lg bg-black/40 p-4">
596
+ <pre className="overflow-x-auto text-sm !text-green-300">
597
+ {`// Import status item
598
+ <div className="flex items-center gap-3 border border-white/10 bg-white/5 p-3 rounded hover:bg-white/10 transition-colors">
599
+ <ImportFolderIcon className="h-5 w-5 text-green-400" />
600
+ <div className="flex-1">
601
+ <div className="text-sm font-medium text-white">Documents</div>
602
+ <div className="text-xs text-white/60">24 files</div>
603
+ </div>
604
+ <div className="text-xs px-2 py-1 rounded bg-green-500/20 text-green-300">
605
+ completed
606
+ </div>
607
+ </div>`}
608
+ </pre>
609
+ </div>
610
+ </div>
611
+ </div>
612
+
613
+ {/* Button Integration */}
614
+ <div className="!space-y-4">
615
+ <h3 className="text-lg font-semibold !text-indigo-300">
616
+ Button Integration
617
+ </h3>
618
+ <div className="!space-y-4">
619
+ <div className="flex flex-wrap gap-4">
620
+ <button className="flex items-center gap-2 rounded-lg border border-indigo-500/30 bg-indigo-500/20 px-4 py-2 text-indigo-200 transition-colors hover:bg-indigo-500/30">
621
+ <ImportLeftArrowFolderIcon className="h-4 w-4" />
622
+ Import Folder
623
+ </button>
624
+ <button className="flex items-center gap-2 rounded-lg border border-yellow-500/30 bg-yellow-500/20 px-4 py-2 text-yellow-200 transition-colors hover:bg-yellow-500/30">
625
+ <ImportLeftArrowFolderIcon className="h-4 w-4" />
626
+ Batch Import
627
+ </button>
628
+ <button className="flex items-center gap-2 rounded-lg border border-white/20 bg-white/5 px-4 py-2 text-white/70 transition-colors hover:bg-white/10">
629
+ <ImportLeftArrowFolderIcon className="h-4 w-4" />
630
+ Browse Folders
631
+ </button>
632
+ </div>
633
+ <div className="rounded-lg bg-black/40 p-4">
634
+ <pre className="overflow-x-auto text-sm !text-green-300">
635
+ {`// Primary import button
636
+ <button className="flex items-center gap-2 bg-indigo-500/20 border border-indigo-500/30 px-4 py-2 rounded-lg">
637
+ <ImportFolderIcon className="h-4 w-4" />
638
+ Import Folder
639
+ </button>
640
+
641
+ // Secondary button
642
+ <button className="flex items-center gap-2 bg-white/5 border border-white/20 px-4 py-2 rounded-lg">
643
+ <ImportFolderIcon className="h-4 w-4" />
644
+ Browse Folders
645
+ </button>`}
646
+ </pre>
647
+ </div>
648
+ </div>
649
+ </div>
650
+
651
+ {/* Sidebar Navigation */}
652
+ <div className="!space-y-4">
653
+ <h3 className="text-lg font-semibold !text-indigo-300">
654
+ Sidebar Navigation
655
+ </h3>
656
+ <div className="!space-y-4">
657
+ <div className="max-w-xs rounded-lg border border-white/10 bg-white/5 p-3">
658
+ {[
659
+ { name: "All Files", icon: "📄", active: false },
660
+ {
661
+ name: "Import Folder",
662
+ icon: "ImportFolderIcon",
663
+ active: true,
664
+ },
665
+ { name: "Recent", icon: "🕒", active: false },
666
+ { name: "Shared", icon: "👥", active: false },
667
+ ].map((item, index) => (
668
+ <div
669
+ key={index}
670
+ className={`flex cursor-pointer items-center gap-3 rounded p-2 transition-colors ${
671
+ item.active
672
+ ? "bg-indigo-500/20 text-indigo-200"
673
+ : "text-white/70 hover:bg-white/10"
674
+ }`}
675
+ >
676
+ {item.icon === "ImportFolderIcon" ? (
677
+ <ImportLeftArrowFolderIcon
678
+ className={`h-4 w-4 ${
679
+ item.active
680
+ ? "text-indigo-400"
681
+ : "text-white/50"
682
+ }`}
683
+ />
684
+ ) : (
685
+ <span className="text-sm">{item.icon}</span>
686
+ )}
687
+ <span className="flex-1 text-sm">{item.name}</span>
688
+ {item.active && (
689
+ <div className="h-2 w-2 rounded-full bg-indigo-400"></div>
690
+ )}
691
+ </div>
692
+ ))}
693
+ </div>
694
+ <div className="rounded-lg bg-black/40 p-4">
695
+ <pre className="overflow-x-auto text-sm !text-green-300">
696
+ {`// Navigation item
697
+ <div className="flex items-center gap-3 p-2 rounded bg-indigo-500/20 text-indigo-200 cursor-pointer">
698
+ <ImportFolderIcon className="h-4 w-4 text-indigo-400" />
699
+ <span className="flex-1 text-sm">Import Folder</span>
700
+ <div className="h-2 w-2 rounded-full bg-indigo-400"></div>
701
+ </div>`}
702
+ </pre>
703
+ </div>
704
+ </div>
705
+ </div>
706
+ </div>
707
+ </div>
708
+
709
+ {/* Interactive States And Animations */}
710
+ <div className="!space-y-8">
711
+ <h2 className="text-center text-3xl font-bold !text-white">
712
+ Interactive States & Animations
713
+ </h2>
714
+ <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
715
+ <div className="!space-y-4">
716
+ <h3 className="text-lg font-semibold !text-indigo-300">
717
+ Hover & Animation Effects
718
+ </h3>
719
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
720
+ <div className="flex items-center gap-4">
721
+ <ImportLeftArrowFolderIcon className="h-6 w-6 text-white/60 transition-colors hover:text-indigo-400" />
722
+ <div>
723
+ <div className="text-sm font-medium text-white">
724
+ Color Change
725
+ </div>
726
+ <div className="text-xs text-white/60">
727
+ hover:text-indigo-400
728
+ </div>
729
+ </div>
730
+ </div>
731
+ <div className="flex items-center gap-4">
732
+ <ImportLeftArrowFolderIcon className="h-6 w-6 text-white transition-transform hover:scale-110" />
733
+ <div>
734
+ <div className="text-sm font-medium text-white">
735
+ Scale Up
736
+ </div>
737
+ <div className="text-xs text-white/60">
738
+ hover:scale-110
739
+ </div>
740
+ </div>
741
+ </div>
742
+ <div className="flex items-center gap-4">
743
+ <ImportLeftArrowFolderIcon className="h-6 w-6 animate-pulse text-indigo-400" />
744
+ <div>
745
+ <div className="text-sm font-medium text-white">
746
+ Processing
747
+ </div>
748
+ <div className="text-xs text-white/60">
749
+ animate-pulse
750
+ </div>
751
+ </div>
752
+ </div>
753
+ <div className="flex items-center gap-4">
754
+ <div
755
+ className="rounded p-2 focus:ring-2 focus:ring-indigo-400 focus:outline-none"
756
+ tabIndex={0}
757
+ >
758
+ <ImportLeftArrowFolderIcon className="h-6 w-6 text-cyan-400" />
759
+ </div>
760
+ <div>
761
+ <div className="text-sm font-medium text-white">
762
+ Focus Ring
763
+ </div>
764
+ <div className="text-xs text-white/60">
765
+ focus:ring-2
766
+ </div>
767
+ </div>
768
+ </div>
769
+ <div className="flex items-center gap-4">
770
+ <ImportLeftArrowFolderIcon className="animate-document-slide h-6 w-6 text-red-400" />
771
+
772
+ <div>
773
+ <div className="text-sm font-medium text-white">
774
+ Document Slide
775
+ </div>
776
+ <div className="text-xs text-white/60">
777
+ animate-document-slide
778
+ </div>
779
+ </div>
780
+ </div>
781
+ </div>
782
+ </div>
783
+
784
+ <div className="!space-y-4">
785
+ <h3 className="text-lg font-semibold !text-indigo-300">
786
+ State Examples
787
+ </h3>
788
+ <div className="rounded-lg bg-black/40 p-4">
789
+ <pre className="overflow-x-auto text-sm !text-cyan-300">
790
+ {`// Hover effects
791
+ <ImportLeftArrowFolderIcon className="h-6 w-6 text-white/60 hover:text-green-400 transition-colors " />
792
+
793
+ // Scale on hover
794
+ <ImportLeftArrowFolderIcon className="h-6 w-6 text-white hover:scale-110 transition-transform " />
795
+
796
+ // Processing animation
797
+ <ImportLeftArrowFolderIcon className="h-6 w-6 text-green-400 animate-pulse " />
798
+
799
+ // Focus states for accessibility
800
+ <div className="p-2 rounded focus:ring-2 focus:ring-green-500 focus:outline-none" tabIndex={0}>
801
+ <ImportLeftArrowFolderIcon className="h-6 w-6 text-white " />
802
+ </div>
803
+
804
+ // Pulse animation keyframes
805
+ @keyframes pulse {
806
+ 0%, 100% { opacity: 1; }
807
+ 50% { opacity: 0.5; }
808
+ }
809
+
810
+ .animate-pulse {
811
+ animation: pulse 2s ease-in-out infinite;
812
+ }`}
813
+ </pre>
814
+ </div>
815
+ </div>
816
+ </div>
817
+ </div>
818
+
819
+ {/* Accessibility */}
820
+ <div className="!space-y-8">
821
+ <h2 className="text-center text-3xl font-bold !text-white">
822
+ Accessibility Features
823
+ </h2>
824
+
825
+ <div className="grid grid-cols-1 gap-8 md:grid-cols-2">
826
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
827
+ <h3 className="text-lg font-semibold !text-green-300">
828
+ ✅ Built-in Features
829
+ </h3>
830
+ <ul className="!space-y-2 text-sm !text-white/70">
831
+ <li className="!text-white/70">
832
+ Uses Radix UI AccessibleIcon wrapper
833
+ </li>
834
+ <li className="!text-white/70">
835
+ Provides screen reader label "Import Left Arrow folder
836
+ icon"
837
+ </li>
838
+ <li className="!text-white/70">
839
+ Maintains proper color contrast ratios
840
+ </li>
841
+ <li className="!text-white/70">
842
+ Scales with user's font size preferences
843
+ </li>
844
+ </ul>
845
+ </div>
846
+
847
+ <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
848
+ <h3 className="text-lg font-semibold !text-indigo-300">
849
+ 💡 Best Practices
850
+ </h3>
851
+ <ul className="!space-y-2 text-sm text-white/70">
852
+ <li className="!text-white/70">
853
+ Always provide descriptive labels for import-related
854
+ actions
855
+ </li>
856
+ <li className="!text-white/70">
857
+ Use consistent placement in upload or import interfaces
858
+ </li>
859
+ <li className="!text-white/70">
860
+ Ensure sufficient click/touch target sizes
861
+ </li>
862
+ <li className="!text-white/70">
863
+ Add focus states for keyboard navigation
864
+ </li>
865
+ <li className="!text-white/70">
866
+ Respect reduced motion preferences for import animations
867
+ </li>
868
+ </ul>
869
+ </div>
870
+ </div>
871
+
872
+ <div className="rounded-lg border border-white/10 bg-white/5 p-6">
873
+ <h3 className="mb-4 text-lg font-semibold !text-purple-300">
874
+ Custom Accessibility Implementation
875
+ </h3>
876
+ <div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
877
+ {/* Code Example Block */}
878
+ <div className="rounded-lg bg-black/40 p-4">
879
+ <pre className="overflow-x-auto text-sm !text-cyan-300">{`// Import button with ARIA
880
+ <button
881
+ aria-label="Import files into folder"
882
+ aria-pressed={importing}
883
+ className="flex items-center gap-2 p-2"
884
+ >
885
+ <ImportLeftArrowFolderIcon className="h-4 w-4" />
886
+ <span className="sr-only">Start file import</span>
887
+ </button>
888
+
889
+ // Grouped file input options
890
+ <fieldset aria-labelledby="import-heading" className="space-y-2">
891
+ <legend id="import-heading" className="sr-only">Import Options</legend>
892
+ <div>
893
+ <label className="inline-flex items-center gap-2">
894
+ <input type="checkbox" aria-describedby="import-desc" />
895
+ Import as Draft
896
+ </label>
897
+ </div>
898
+ <div>
899
+ <label className="inline-flex items-center gap-2">
900
+ <input type="checkbox" />
901
+ Overwrite Existing
902
+ </label>
903
+ </div>
904
+ </fieldset>
905
+ <p id="import-desc" className="sr-only">
906
+ Choose how you want imported files to be handled upon upload.
907
+ </p>`}</pre>
908
+ </div>
909
+
910
+ {/* Accessibility Note */}
911
+ <div className="!space-y-4">
912
+ <p className="text-sm !text-white/70">
913
+ When using <code>ImportLeftArrowFolderIcon</code> in
914
+ upload or file action buttons, ensure ARIA labels
915
+ clearly describe the behavior. Use semantic grouping
916
+ with <code>fieldset</code> and
917
+ <code>legend</code> for complex import settings to
918
+ assist screen readers.
919
+ </p>
920
+ <div className="rounded-lg border border-indigo-500/20 bg-indigo-500/10 p-4">
921
+ <div className="flex items-center gap-2 text-sm text-indigo-200">
922
+ <ImportLeftArrowFolderIcon className="h-4 w-4" />
923
+ <span>
924
+ Use <code>aria-pressed</code> or{" "}
925
+ <code>aria-expanded</code> for toggles, and wrap
926
+ related settings in
927
+ <code>fieldset</code> elements with clear labeling.
928
+ </span>
929
+ </div>
930
+ </div>
931
+ </div>
932
+ </div>
933
+ </div>
934
+ </div>
935
+
936
+ {/* Related Icons */}
937
+ <div className="!space-y-8">
938
+ <h2 className="text-center text-3xl font-bold !text-white">
939
+ Related Icons
940
+ </h2>
941
+ <div className="grid grid-cols-2 gap-6 md:grid-cols-4">
942
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
943
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-blue-500/20">
944
+ <span className="text-2xl">🔍</span>
945
+ </div>
946
+ <div>
947
+ <div className="font-medium text-white">SearchIcon</div>
948
+ <div className="text-xs text-white/60">
949
+ General search
950
+ </div>
951
+ </div>
952
+ </div>
953
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
954
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-purple-500/20">
955
+ <span className="text-2xl">📈</span>
956
+ </div>
957
+ <div>
958
+ <div className="font-medium text-white">
959
+ TrendingUpIcon
960
+ </div>
961
+ <div className="text-xs text-white/60">
962
+ Growth metrics
963
+ </div>
964
+ </div>
965
+ </div>
966
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
967
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-blue-500/20">
968
+ <span className="text-2xl">📁</span>
969
+ </div>
970
+ <div>
971
+ <div className="font-medium text-white">FolderIcon</div>
972
+ <div className="text-xs text-white/60">
973
+ File Organization
974
+ </div>
975
+ </div>
976
+ </div>
977
+ <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
978
+ <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-green-500/20">
979
+ <span className="text-2xl">💾</span>
980
+ </div>
981
+ <div>
982
+ <div className="font-medium text-white">SaveIcon</div>
983
+ <div className="text-xs text-white/60">Save changes</div>
984
+ </div>
985
+ </div>
986
+ </div>
987
+ </div>
988
+ </div>
989
+
990
+ {/* Footer */}
991
+ <div className="border-t border-white/10 bg-black/20 backdrop-blur-xl">
992
+ <div className="!mx-auto max-w-7xl px-6 py-8">
993
+ <div className="!space-y-4 text-center">
994
+ <p className="!text-white/60">
995
+ FilterBarRowIcon is part of the Aural UI icon library, built
996
+ for document search, content discovery, and page navigation
997
+ functionality.
998
+ </p>
999
+ <p className="text-sm !text-white/40">
1000
+ All icons use Radix UI's AccessibleIcon for screen reader
1001
+ compatibility and follow WCAG guidelines for search
1002
+ interfaces.
1003
+ </p>
1004
+ </div>
1005
+ </div>
1006
+ </div>
1007
+ </div>
1008
+ </>
1009
+ ),
1010
+ },
1011
+ },
1012
+ tags: ["autodocs"],
1013
+ argTypes: {
1014
+ width: {
1015
+ control: { type: "range", min: 8, max: 96, step: 2 },
1016
+ description: "Width of the icon in pixels",
1017
+ },
1018
+ height: {
1019
+ control: { type: "range", min: 8, max: 96, step: 2 },
1020
+ description: "Height of the icon in pixels",
1021
+ },
1022
+ stroke: {
1023
+ control: "color",
1024
+ description: "Stroke color of the icon lines",
1025
+ },
1026
+ strokeWidth: {
1027
+ control: { type: "range", min: 1, max: 4, step: 0.5 },
1028
+ description: "Stroke width of the icon",
1029
+ },
1030
+ strokeLinecap: {
1031
+ control: "select",
1032
+ options: ["butt", "round", "square"],
1033
+ description: "Style of line endings",
1034
+ },
1035
+ className: {
1036
+ control: "text",
1037
+ description: "CSS classes for styling (use for overrides)",
1038
+ },
1039
+ },
1040
+ }
1041
+
1042
+ export default meta
1043
+ type Story = StoryObj<typeof ImportLeftArrowFolderIcon>
1044
+
1045
+ // Story parameters for consistent dark theme
1046
+ const storyParameters = {
1047
+ backgrounds: {
1048
+ default: "dark",
1049
+ values: [
1050
+ { name: "dark", value: "#0a0a0a" },
1051
+ { name: "darker", value: "#000000" },
1052
+ ],
1053
+ },
1054
+ }
1055
+
1056
+ export const Default: Story = {
1057
+ args: {
1058
+ width: 24,
1059
+ height: 24,
1060
+ className: "text-indigo-400 ",
1061
+ },
1062
+ parameters: storyParameters,
1063
+ render: (args) => (
1064
+ <div className="flex h-32 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
1065
+ <ImportLeftArrowFolderIcon {...args} />
1066
+ </div>
1067
+ ),
1068
+ }
1069
+
1070
+ export const SizeVariations: Story = {
1071
+ parameters: {
1072
+ ...storyParameters,
1073
+ docs: {
1074
+ description: {
1075
+ story:
1076
+ "GitBranchIcon in different sizes, from small search inputs to large interface elements.",
1077
+ },
1078
+ },
1079
+ },
1080
+ render: () => (
1081
+ <div className="flex h-64 min-h-dvh items-center justify-center gap-8 rounded-lg bg-gradient-to-br from-gray-900 to-gray-800 p-8">
1082
+ <div className="text-center">
1083
+ <ImportLeftArrowFolderIcon className="!mx-auto mb-2 h-3 w-3 text-indigo-400" />
1084
+ <span className="text-xs text-white/60">12px</span>
1085
+ </div>
1086
+ <div className="text-center">
1087
+ <ImportLeftArrowFolderIcon className="!mx-auto mb-2 h-4 w-4 text-indigo-400" />
1088
+ <span className="text-xs text-white/60">16px</span>
1089
+ </div>
1090
+ <div className="text-center">
1091
+ <ImportLeftArrowFolderIcon className="!mx-auto mb-2 h-5 w-5 text-indigo-400" />
1092
+ <span className="text-xs text-white/60">20px</span>
1093
+ </div>
1094
+ <div className="text-center">
1095
+ <ImportLeftArrowFolderIcon className="!mx-auto mb-2 h-6 w-6 text-indigo-400" />
1096
+ <span className="text-xs text-white/60">24px</span>
1097
+ </div>
1098
+ <div className="text-center">
1099
+ <ImportLeftArrowFolderIcon className="!mx-auto mb-2 h-8 w-8 text-indigo-400" />
1100
+ <span className="text-xs text-white/60">32px</span>
1101
+ </div>
1102
+ <div className="text-center">
1103
+ <ImportLeftArrowFolderIcon className="!mx-auto mb-2 h-12 w-12 text-indigo-400" />
1104
+ <span className="text-xs text-white/60">48px</span>
1105
+ </div>
1106
+ </div>
1107
+ ),
1108
+ }
1109
+
1110
+ export const ColorVariations: Story = {
1111
+ parameters: {
1112
+ ...storyParameters,
1113
+ docs: {
1114
+ description: {
1115
+ story:
1116
+ "GitBranchIcon in different colors for various search states and contexts.",
1117
+ },
1118
+ },
1119
+ },
1120
+ render: () => (
1121
+ <div className="grid min-h-dvh grid-cols-2 items-center justify-center gap-6 rounded-lg bg-gradient-to-br from-gray-900 to-gray-800 p-8 md:grid-cols-4">
1122
+ <div className="text-center">
1123
+ <div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-indigo-500/30 bg-indigo-500/20">
1124
+ <ImportLeftArrowFolderIcon className="h-8 w-8 text-indigo-400" />
1125
+ </div>
1126
+ <div className="text-sm font-medium text-white">Primary</div>
1127
+ <div className="text-xs text-indigo-400">text-indigo-400</div>
1128
+ </div>
1129
+ <div className="text-center">
1130
+ <div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-cyan-500/30 bg-cyan-500/20">
1131
+ <ImportLeftArrowFolderIcon className="h-8 w-8 text-cyan-400" />
1132
+ </div>
1133
+ <div className="text-sm font-medium text-white">Active</div>
1134
+ <div className="text-xs text-cyan-400">text-cyan-400</div>
1135
+ </div>
1136
+ <div className="text-center">
1137
+ <div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-gray-500/30 bg-gray-500/20">
1138
+ <ImportLeftArrowFolderIcon className="h-8 w-8 text-gray-400" />
1139
+ </div>
1140
+ <div className="text-sm font-medium text-white">Disabled</div>
1141
+ <div className="text-xs text-gray-400">text-gray-400</div>
1142
+ </div>
1143
+ <div className="text-center">
1144
+ <div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg border border-blue-500/30 bg-blue-500/20">
1145
+ <ImportLeftArrowFolderIcon className="h-8 w-8 text-blue-400" />
1146
+ </div>
1147
+ <div className="text-sm font-medium text-white">Info</div>
1148
+ <div className="text-xs text-blue-400">text-blue-400</div>
1149
+ </div>
1150
+ </div>
1151
+ ),
1152
+ }
1153
+
1154
+ export const UsageExamples: Story = {
1155
+ parameters: {
1156
+ ...storyParameters,
1157
+ docs: {
1158
+ description: {
1159
+ story:
1160
+ "Real-world usage examples showing GitBranchIcon used in version control interfaces, including actions like creating branches, checking out branches, managing recent branches, and performing branch management tasks such as renaming or deleting branches.",
1161
+ },
1162
+ },
1163
+ },
1164
+ render: () => (
1165
+ <div className="min-h-dvh space-y-8 rounded-lg bg-gradient-to-br from-gray-950 to-gray-900 p-8">
1166
+ {/* File Import Area */}
1167
+ <div className="space-y-2">
1168
+ <h3 className="text-sm font-medium text-white">File Import Area</h3>
1169
+ <div className="relative rounded-lg border-2 border-dashed border-white/20 bg-white/5 p-8 text-center transition-colors hover:border-blue-400/50 hover:bg-blue-500/10">
1170
+ <ImportLeftArrowFolderIcon className="mx-auto h-12 w-12 text-white/40" />
1171
+ <h4 className="mt-4 text-lg font-medium text-white">Import Folder</h4>
1172
+ <p className="mt-2 text-sm text-white/60">
1173
+ Drag and drop folders here, or click to browse
1174
+ </p>
1175
+ <button className="mt-4 rounded-lg border border-blue-500/30 bg-blue-500/15 px-4 py-2 text-blue-200 transition hover:cursor-pointer hover:bg-blue-500/25">
1176
+ Browse Folders
1177
+ </button>
1178
+ </div>
1179
+ </div>
1180
+
1181
+ {/* Import Status */}
1182
+ <div className="space-y-2">
1183
+ <h3 className="text-sm font-medium text-white">Import Status</h3>
1184
+ <div className="space-y-3 rounded-lg border border-white/10 bg-white/5 p-4">
1185
+ {[
1186
+ { name: "Documents", status: "completed", count: 24 },
1187
+ { name: "Images", status: "processing", count: 56 },
1188
+ { name: "Videos", status: "pending", count: 12 },
1189
+ ].map((folder, index) => (
1190
+ <div
1191
+ key={index}
1192
+ className="flex items-center gap-3 rounded border border-white/10 bg-white/5 p-3 transition hover:bg-white/10"
1193
+ >
1194
+ <ImportLeftArrowFolderIcon
1195
+ className={`h-5 w-5 ${
1196
+ folder.status === "completed"
1197
+ ? "text-green-400"
1198
+ : folder.status === "processing"
1199
+ ? "text-yellow-400"
1200
+ : "text-gray-400"
1201
+ }`}
1202
+ />
1203
+ <div className="flex-1">
1204
+ <div className="text-sm font-medium text-white">
1205
+ {folder.name}
1206
+ </div>
1207
+ <div className="text-xs text-white/60">
1208
+ {folder.count} files
1209
+ </div>
1210
+ </div>
1211
+ <div
1212
+ className={`rounded px-2 py-1 text-xs ${
1213
+ folder.status === "completed"
1214
+ ? "bg-green-500/20 text-green-300"
1215
+ : folder.status === "processing"
1216
+ ? "bg-yellow-500/20 text-yellow-300"
1217
+ : "bg-gray-500/20 text-gray-300"
1218
+ }`}
1219
+ >
1220
+ {folder.status}
1221
+ </div>
1222
+ </div>
1223
+ ))}
1224
+ </div>
1225
+ </div>
1226
+
1227
+ {/* Button Integration */}
1228
+ <div className="space-y-2">
1229
+ <h3 className="text-sm font-medium text-white">Button Integration</h3>
1230
+ <div className="flex gap-4">
1231
+ <button className="flex items-center gap-2 rounded-lg border border-blue-500/30 bg-blue-500/15 px-4 py-2 text-blue-200 transition hover:cursor-pointer hover:bg-blue-500/25">
1232
+ <ImportLeftArrowFolderIcon className="h-4 w-4" />
1233
+ Import Folder
1234
+ </button>
1235
+ <button className="flex items-center gap-2 rounded-lg border border-indigo-500/30 bg-indigo-500/15 px-4 py-2 text-indigo-200 transition hover:cursor-pointer hover:bg-indigo-500/25">
1236
+ <ImportLeftArrowFolderIcon className="h-4 w-4" />
1237
+ Batch Import
1238
+ </button>
1239
+ <button className="flex items-center gap-2 rounded-lg border border-yellow-500/30 bg-yellow-500/15 px-4 py-2 text-yellow-200 transition hover:cursor-pointer hover:bg-yellow-500/25">
1240
+ <ImportLeftArrowFolderIcon className="h-4 w-4" />
1241
+ Browse Folders
1242
+ </button>
1243
+ <button className="flex items-center gap-2 rounded-lg border border-red-500/30 bg-red-500/15 px-4 py-2 text-red-200 transition hover:cursor-pointer hover:bg-red-500/25">
1244
+ <ImportLeftArrowFolderIcon className="h-4 w-4" />
1245
+ Clear All
1246
+ </button>
1247
+ </div>
1248
+ </div>
1249
+ </div>
1250
+ ),
1251
+ }
1252
+
1253
+ export const InteractiveStates: Story = {
1254
+ parameters: {
1255
+ ...storyParameters,
1256
+ docs: {
1257
+ description: {
1258
+ story:
1259
+ "Interactive states showing hover effects, animations, and different search states.",
1260
+ },
1261
+ },
1262
+ },
1263
+ render: () => (
1264
+ <div className="min-h-dvh space-y-8 rounded-lg bg-gradient-to-br from-gray-900 to-gray-800 p-8">
1265
+ <div className="space-y-4">
1266
+ <h3 className="text-sm font-medium text-white/70">
1267
+ Interactive States & Motion
1268
+ </h3>
1269
+ <div className="flex gap-8">
1270
+ {/* Hover color transition */}
1271
+ <div className="flex flex-col items-center gap-2">
1272
+ <ImportLeftArrowFolderIcon className="h-8 w-8 text-white/60 transition-colors hover:text-blue-400" />
1273
+ <span className="text-xs text-white/60">Hover to Highlight</span>
1274
+ </div>
1275
+
1276
+ {/* Hover scale up */}
1277
+ <div className="flex flex-col items-center gap-2">
1278
+ <ImportLeftArrowFolderIcon className="h-8 w-8 text-white transition-transform duration-200 hover:scale-110" />
1279
+ <span className="text-xs text-white/60">Scale on Hover</span>
1280
+ </div>
1281
+
1282
+ {/* Pulse animation to show sync */}
1283
+ <div className="flex flex-col items-center gap-2">
1284
+ <ImportLeftArrowFolderIcon className="h-8 w-8 animate-pulse text-green-400" />
1285
+ <span className="text-xs text-white/60">Sync Pulse</span>
1286
+ </div>
1287
+ <div className="flex flex-col items-center gap-2">
1288
+ <div
1289
+ className="rounded p-1 focus:ring-2 focus:ring-green-500 focus:outline-none"
1290
+ tabIndex={0}
1291
+ >
1292
+ <ImportLeftArrowFolderIcon className="h-8 w-8 text-white" />
1293
+ </div>
1294
+ <span className="text-xs text-white/60">Focus Ring</span>
1295
+ </div>
1296
+ </div>
1297
+ </div>
1298
+ </div>
1299
+ ),
1300
+ }
1301
+
1302
+ export const Playground: Story = {
1303
+ parameters: {
1304
+ ...storyParameters,
1305
+ docs: {
1306
+ description: {
1307
+ story:
1308
+ "Interactive playground to experiment with different GitBranchIcon configurations.",
1309
+ },
1310
+ },
1311
+ },
1312
+ args: {
1313
+ width: 32,
1314
+ height: 32,
1315
+ className: "text-indigo-400 ",
1316
+ strokeLinecap: "square",
1317
+ },
1318
+ render: (args) => (
1319
+ <div className="flex h-64 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
1320
+ <div className="rounded-lg border border-white/10 bg-white/5 p-8">
1321
+ <ImportLeftArrowFolderIcon {...args} />
1322
+ </div>
1323
+ </div>
1324
+ ),
1325
+ }