aural-ui 2.0.1 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/dropdown/index.tsx +2 -7
- package/dist/components/sheet/index.tsx +5 -2
- package/dist/icons/all-icons.tsx +155 -79
- package/dist/icons/capital-a-letter-icon/CapitalALetterIcon.stories.tsx +992 -0
- package/dist/icons/capital-a-letter-icon/index.tsx +32 -0
- package/dist/icons/capital-a-letter-icon/meta.ts +8 -0
- package/dist/icons/head-icon/HeadIcon.stories.tsx +981 -0
- package/dist/icons/head-icon/index.tsx +26 -0
- package/dist/icons/head-icon/meta.ts +8 -0
- package/dist/icons/index.ts +40 -25
- package/dist/icons/musical-note-icon/MusicalNoteIcon.stories.tsx +1032 -0
- package/dist/icons/musical-note-icon/index.tsx +25 -0
- package/dist/icons/musical-note-icon/meta.ts +8 -0
- package/dist/icons/setting-icon/SettingIcon.stories.tsx +1024 -0
- package/dist/icons/setting-icon/index.tsx +30 -0
- package/dist/icons/setting-icon/meta.ts +8 -0
- package/dist/index.js +1 -1
- package/package.json +1 -1
|
@@ -227,7 +227,7 @@ function DropdownMenuRadioItem({
|
|
|
227
227
|
data-slot="dropdown-menu-radio-item"
|
|
228
228
|
className={cn(
|
|
229
229
|
// Base styles
|
|
230
|
-
"rounded-fm-s relative flex cursor-default items-center gap-2 px-4 py-3
|
|
230
|
+
"rounded-fm-s relative flex cursor-default items-center gap-2 px-4 py-3",
|
|
231
231
|
"text-fm-primary font-fm-text leading-fm-lg [font-size:var(--text-fm-lg)] tracking-wide",
|
|
232
232
|
"transition-colors duration-200 outline-none select-none",
|
|
233
233
|
// Hover and focus states
|
|
@@ -245,12 +245,7 @@ function DropdownMenuRadioItem({
|
|
|
245
245
|
>
|
|
246
246
|
<span className="pointer-events-none absolute left-4 flex size-3.5 items-center justify-center">
|
|
247
247
|
<DropdownMenuPrimitive.ItemIndicator>
|
|
248
|
-
<TickIcon
|
|
249
|
-
className={cn(
|
|
250
|
-
"text-fm-icon-active size-2 fill-current",
|
|
251
|
-
classes?.indicator
|
|
252
|
-
)}
|
|
253
|
-
/>
|
|
248
|
+
<TickIcon className={cn("text-fm-icon-active", classes?.indicator)} />
|
|
254
249
|
</DropdownMenuPrimitive.ItemIndicator>
|
|
255
250
|
</span>
|
|
256
251
|
{children}
|
|
@@ -301,7 +301,9 @@ const closeIconVariants = cva(
|
|
|
301
301
|
interface SheetContentProps
|
|
302
302
|
extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,
|
|
303
303
|
VariantProps<typeof sheetVariants>,
|
|
304
|
-
ISheetOverlay {
|
|
304
|
+
ISheetOverlay {
|
|
305
|
+
container: HTMLElement | null
|
|
306
|
+
}
|
|
305
307
|
|
|
306
308
|
const SheetContent = React.forwardRef<
|
|
307
309
|
React.ElementRef<typeof SheetPrimitive.Content>,
|
|
@@ -317,11 +319,12 @@ const SheetContent = React.forwardRef<
|
|
|
317
319
|
noise,
|
|
318
320
|
children,
|
|
319
321
|
classes,
|
|
322
|
+
container,
|
|
320
323
|
...props
|
|
321
324
|
},
|
|
322
325
|
ref
|
|
323
326
|
) => (
|
|
324
|
-
<SheetPortal>
|
|
327
|
+
<SheetPortal container={container}>
|
|
325
328
|
<SheetOverlay
|
|
326
329
|
opacity={opacity}
|
|
327
330
|
glass={glass}
|
package/dist/icons/all-icons.tsx
CHANGED
|
@@ -313,12 +313,23 @@ export const Icons: React.FC = () => {
|
|
|
313
313
|
"content",
|
|
314
314
|
"status",
|
|
315
315
|
"social",
|
|
316
|
+
"ai",
|
|
317
|
+
"audio",
|
|
318
|
+
"design",
|
|
319
|
+
"text",
|
|
320
|
+
"system",
|
|
316
321
|
]
|
|
317
322
|
|
|
318
|
-
// Get all icon components and categorize them
|
|
323
|
+
// Get all icon components from index and categorize them
|
|
319
324
|
const allIcons = useMemo(() => {
|
|
320
325
|
return Object.entries(IconSet)
|
|
321
|
-
.filter(([
|
|
326
|
+
.filter(([, component]) => {
|
|
327
|
+
// Only include components that are likely to be React icon components
|
|
328
|
+
return (
|
|
329
|
+
typeof component === "function" ||
|
|
330
|
+
(typeof component === "object" && component !== null)
|
|
331
|
+
)
|
|
332
|
+
})
|
|
322
333
|
.map(([name, component]) => ({
|
|
323
334
|
name,
|
|
324
335
|
component: component as React.ComponentType<
|
|
@@ -330,66 +341,186 @@ export const Icons: React.FC = () => {
|
|
|
330
341
|
.sort((a, b) => a.name.localeCompare(b.name))
|
|
331
342
|
}, [])
|
|
332
343
|
|
|
333
|
-
//
|
|
344
|
+
// Enhanced categorize function based on icon names from index
|
|
334
345
|
function categorizeIcon(iconName: string): string {
|
|
335
346
|
const name = iconName.toLowerCase()
|
|
336
347
|
|
|
337
|
-
|
|
348
|
+
// AI related icons
|
|
349
|
+
if (
|
|
350
|
+
name.includes("ai") ||
|
|
351
|
+
name.includes("sparkle") ||
|
|
352
|
+
name.includes("magic")
|
|
353
|
+
) {
|
|
354
|
+
return "ai"
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
// Navigation icons
|
|
358
|
+
if (
|
|
359
|
+
name.includes("chevron") ||
|
|
360
|
+
name.includes("arrow") ||
|
|
361
|
+
name.includes("angle") ||
|
|
362
|
+
name.includes("corner")
|
|
363
|
+
) {
|
|
338
364
|
return "navigation"
|
|
339
365
|
}
|
|
366
|
+
|
|
367
|
+
// Action icons
|
|
340
368
|
if (
|
|
341
369
|
name.includes("cross") ||
|
|
342
370
|
name.includes("tick") ||
|
|
343
371
|
name.includes("plus") ||
|
|
344
372
|
name.includes("edit") ||
|
|
345
|
-
name.includes("trash")
|
|
373
|
+
name.includes("trash") ||
|
|
374
|
+
name.includes("upload") ||
|
|
375
|
+
name.includes("import") ||
|
|
376
|
+
name.includes("pencil")
|
|
346
377
|
) {
|
|
347
378
|
return "actions"
|
|
348
379
|
}
|
|
380
|
+
|
|
381
|
+
// Interface icons
|
|
349
382
|
if (
|
|
350
383
|
name.includes("eye") ||
|
|
351
384
|
name.includes("search") ||
|
|
352
385
|
name.includes("command") ||
|
|
353
|
-
name.includes("menu")
|
|
386
|
+
name.includes("menu") ||
|
|
387
|
+
name.includes("setting") ||
|
|
388
|
+
name.includes("grip") ||
|
|
389
|
+
name.includes("move") ||
|
|
390
|
+
name.includes("layout")
|
|
354
391
|
) {
|
|
355
392
|
return "interface"
|
|
356
393
|
}
|
|
394
|
+
|
|
395
|
+
// Content icons
|
|
357
396
|
if (
|
|
358
397
|
name.includes("file") ||
|
|
359
398
|
name.includes("image") ||
|
|
360
399
|
name.includes("bubble") ||
|
|
361
|
-
name.includes("
|
|
400
|
+
name.includes("message") ||
|
|
401
|
+
name.includes("book") ||
|
|
402
|
+
name.includes("page")
|
|
362
403
|
) {
|
|
363
404
|
return "content"
|
|
364
405
|
}
|
|
406
|
+
|
|
407
|
+
// Status icons
|
|
365
408
|
if (
|
|
366
409
|
name.includes("alert") ||
|
|
367
410
|
name.includes("maintenance") ||
|
|
368
|
-
name.includes("bulb")
|
|
411
|
+
name.includes("bulb") ||
|
|
412
|
+
name.includes("spinner") ||
|
|
413
|
+
name.includes("check") ||
|
|
414
|
+
name.includes("circle")
|
|
369
415
|
) {
|
|
370
416
|
return "status"
|
|
371
417
|
}
|
|
372
418
|
|
|
419
|
+
// Audio icons
|
|
420
|
+
if (
|
|
421
|
+
name.includes("audio") ||
|
|
422
|
+
name.includes("musical") ||
|
|
423
|
+
name.includes("note")
|
|
424
|
+
) {
|
|
425
|
+
return "audio"
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
// Design icons
|
|
429
|
+
if (
|
|
430
|
+
name.includes("art") ||
|
|
431
|
+
name.includes("paint") ||
|
|
432
|
+
name.includes("color") ||
|
|
433
|
+
name.includes("feature") ||
|
|
434
|
+
name.includes("board")
|
|
435
|
+
) {
|
|
436
|
+
return "design"
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
// Text icons
|
|
440
|
+
if (
|
|
441
|
+
name.includes("text") ||
|
|
442
|
+
name.includes("capital") ||
|
|
443
|
+
name.includes("letter") ||
|
|
444
|
+
name.includes("indicator")
|
|
445
|
+
) {
|
|
446
|
+
return "text"
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
// System icons
|
|
450
|
+
if (
|
|
451
|
+
name.includes("head") ||
|
|
452
|
+
name.includes("site") ||
|
|
453
|
+
name.includes("logo")
|
|
454
|
+
) {
|
|
455
|
+
return "system"
|
|
456
|
+
}
|
|
457
|
+
|
|
373
458
|
return "interface"
|
|
374
459
|
}
|
|
375
460
|
|
|
376
|
-
//
|
|
461
|
+
// Enhanced icon description function
|
|
377
462
|
function getIconDescription(iconName: string): string {
|
|
378
463
|
const descriptions: Record<string, string> = {
|
|
379
|
-
|
|
380
|
-
|
|
464
|
+
AiAvatarIcon: "AI avatar representation",
|
|
465
|
+
AlertIcon: "Warning or attention indicator",
|
|
466
|
+
AngleDownIcon: "Dropdown or expand indicator",
|
|
467
|
+
ArrowBoxLeftIcon: "Navigate or move left",
|
|
468
|
+
ArrowCornerUpLeftIcon: "Corner navigation up-left",
|
|
469
|
+
ArrowCornerUpRightIcon: "Corner navigation up-right",
|
|
470
|
+
ArrowRightIcon: "Navigate or move right",
|
|
471
|
+
ArrowRightUpIcon: "Navigate up-right",
|
|
472
|
+
ArtBoardIcon: "Design canvas or artboard",
|
|
473
|
+
AudioBarIcon: "Audio level indicator",
|
|
474
|
+
BubbleCheckIcon: "Message with confirmation",
|
|
475
|
+
BubbleCrossedIcon: "Message with error",
|
|
476
|
+
BubbleSparkleIcon: "Enhanced or special message",
|
|
477
|
+
CapitalALetterIcon: "Text formatting indicator",
|
|
478
|
+
ChevronDoubleLeftIcon: "Fast backward navigation",
|
|
479
|
+
ChevronDoubleRightIcon: "Fast forward navigation",
|
|
480
|
+
ChevronDownIcon: "Expand or dropdown",
|
|
481
|
+
ChevronLeftIcon: "Navigate back",
|
|
482
|
+
ChevronRightIcon: "Navigate forward",
|
|
483
|
+
ChevronUpIcon: "Collapse or up",
|
|
484
|
+
CommandIcon: "Keyboard shortcut indicator",
|
|
485
|
+
CrossCircleIcon: "Error or cancel in circle",
|
|
381
486
|
CrossIcon: "Close or cancel action",
|
|
382
|
-
|
|
383
|
-
SearchIcon: "Search functionality",
|
|
487
|
+
EditBigIcon: "Edit or modify (large)",
|
|
384
488
|
EyeOpenIcon: "Show or visible state",
|
|
385
489
|
EyeCloseIcon: "Hide or invisible state",
|
|
386
|
-
|
|
490
|
+
FeatureShineIcon: "Highlight or featured item",
|
|
491
|
+
FileChartIcon: "Chart or analytics file",
|
|
492
|
+
FileTextIcon: "Text document",
|
|
493
|
+
GripVerticalIcon: "Drag handle vertical",
|
|
494
|
+
HeadIcon: "User profile or person",
|
|
495
|
+
ImageIcon: "Image or media content",
|
|
496
|
+
ImportFolderIcon: "Import files or folder",
|
|
497
|
+
LayoutColumnIcon: "Column layout",
|
|
498
|
+
LayoutLeftIcon: "Left sidebar layout",
|
|
499
|
+
LayoutRightIcon: "Right sidebar layout",
|
|
500
|
+
LightBulbSimpleIcon: "Idea or suggestion",
|
|
501
|
+
MagicBookIcon: "Documentation or guide",
|
|
502
|
+
MaintenanceIcon: "System maintenance",
|
|
503
|
+
MessageIcon: "Communication or chat",
|
|
504
|
+
MoveHorizontalIcon: "Resize horizontally",
|
|
505
|
+
MoveVerticalIcon: "Resize vertically",
|
|
506
|
+
MusicalNoteIcon: "Audio or music",
|
|
507
|
+
PageSearchIcon: "Search within page",
|
|
508
|
+
PaintRollIcon: "Theming or styling",
|
|
509
|
+
PencilIcon: "Edit or write",
|
|
387
510
|
PlusIcon: "Add or create new",
|
|
388
|
-
|
|
511
|
+
SearchIcon: "Search functionality",
|
|
512
|
+
SettingIcon: "Configuration or settings",
|
|
513
|
+
SiteLogoIcon: "Brand or logo",
|
|
514
|
+
SparklesSoftIcon: "Enhancement or magic",
|
|
515
|
+
SpinnerGradientIcon: "Loading (gradient)",
|
|
516
|
+
SpinnerSolidIcon: "Loading (solid)",
|
|
517
|
+
SpinnerSolidNeutralIcon: "Loading (neutral)",
|
|
518
|
+
TextColorIcon: "Text color formatting",
|
|
519
|
+
TextIndicatorIcon: "Text formatting indicator",
|
|
520
|
+
TickCircleIcon: "Success or confirmation in circle",
|
|
521
|
+
TickIcon: "Confirm or success state",
|
|
389
522
|
TrashIcon: "Delete or remove",
|
|
390
|
-
|
|
391
|
-
FileChartIcon: "Chart or analytics",
|
|
392
|
-
CommandIcon: "Keyboard shortcut",
|
|
523
|
+
UploadIcon: "Upload files",
|
|
393
524
|
VerticalMenuIcon: "More options menu",
|
|
394
525
|
}
|
|
395
526
|
|
|
@@ -462,7 +593,7 @@ export const Icons: React.FC = () => {
|
|
|
462
593
|
<div className="flex items-center justify-center gap-8 pt-8">
|
|
463
594
|
<div className="text-center">
|
|
464
595
|
<div className="text-3xl font-bold text-purple-300">
|
|
465
|
-
{totalIcons}
|
|
596
|
+
{totalIcons}
|
|
466
597
|
</div>
|
|
467
598
|
<div className="text-sm text-white/60">Total icons</div>
|
|
468
599
|
</div>
|
|
@@ -629,6 +760,11 @@ export const Icons: React.FC = () => {
|
|
|
629
760
|
content: "Icons for content types like files, images, and media.",
|
|
630
761
|
status: "Icons for states, alerts, and status indicators.",
|
|
631
762
|
social: "Icons for social features and sharing functionality.",
|
|
763
|
+
ai: "Icons related to artificial intelligence and smart features.",
|
|
764
|
+
audio: "Icons for audio, music, and sound-related features.",
|
|
765
|
+
design: "Icons for design, styling, and creative tools.",
|
|
766
|
+
text: "Icons for text formatting and typography.",
|
|
767
|
+
system: "Icons for system-level features and branding.",
|
|
632
768
|
}
|
|
633
769
|
|
|
634
770
|
return (
|
|
@@ -645,66 +781,6 @@ export const Icons: React.FC = () => {
|
|
|
645
781
|
</IconCategory>
|
|
646
782
|
)
|
|
647
783
|
})}
|
|
648
|
-
|
|
649
|
-
{/* Featured Icons Section - only show when no filters applied */}
|
|
650
|
-
{selectedCategory === "all" && !searchTerm && (
|
|
651
|
-
<IconCategory category="Featured Icons">
|
|
652
|
-
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
|
|
653
|
-
{/* Most Used Icons */}
|
|
654
|
-
<div className="space-y-6">
|
|
655
|
-
<h3 className="text-xl font-bold text-white">Most Used</h3>
|
|
656
|
-
<div className="grid grid-cols-4 gap-4">
|
|
657
|
-
{allIcons
|
|
658
|
-
.filter((icon) =>
|
|
659
|
-
[
|
|
660
|
-
"ChevronRightIcon",
|
|
661
|
-
"ChevronLeftIcon",
|
|
662
|
-
"CrossIcon",
|
|
663
|
-
"TickIcon",
|
|
664
|
-
"SearchIcon",
|
|
665
|
-
"PlusIcon",
|
|
666
|
-
"EditIcon",
|
|
667
|
-
"TrashIcon",
|
|
668
|
-
].includes(icon.name)
|
|
669
|
-
)
|
|
670
|
-
.map(({ name, component: IconComponent }) => (
|
|
671
|
-
<div
|
|
672
|
-
key={name}
|
|
673
|
-
onClick={() => handleIconClick(name, IconComponent)}
|
|
674
|
-
className="group cursor-pointer rounded-lg border border-white/10 bg-white/5 p-4 text-center transition-all hover:scale-105 hover:bg-white/10"
|
|
675
|
-
>
|
|
676
|
-
<IconComponent className="mx-auto mb-2 h-8 w-8 text-white transition-colors group-hover:text-blue-400" />
|
|
677
|
-
<p className="text-xs text-white/70">
|
|
678
|
-
{name.replace("Icon", "")}
|
|
679
|
-
</p>
|
|
680
|
-
</div>
|
|
681
|
-
))}
|
|
682
|
-
</div>
|
|
683
|
-
</div>
|
|
684
|
-
|
|
685
|
-
{/* Recently Added */}
|
|
686
|
-
<div className="space-y-6">
|
|
687
|
-
<h3 className="text-xl font-bold text-white">Recently Added</h3>
|
|
688
|
-
<div className="grid grid-cols-4 gap-4">
|
|
689
|
-
{allIcons
|
|
690
|
-
.slice(-8)
|
|
691
|
-
.map(({ name, component: IconComponent }) => (
|
|
692
|
-
<div
|
|
693
|
-
key={name}
|
|
694
|
-
onClick={() => handleIconClick(name, IconComponent)}
|
|
695
|
-
className="group cursor-pointer rounded-lg border border-white/10 bg-white/5 p-4 text-center transition-all hover:scale-105 hover:bg-white/10"
|
|
696
|
-
>
|
|
697
|
-
<IconComponent className="mx-auto mb-2 h-8 w-8 text-white transition-colors group-hover:text-blue-400" />
|
|
698
|
-
<p className="text-xs text-white/70">
|
|
699
|
-
{name.replace("Icon", "")}
|
|
700
|
-
</p>
|
|
701
|
-
</div>
|
|
702
|
-
))}
|
|
703
|
-
</div>
|
|
704
|
-
</div>
|
|
705
|
-
</div>
|
|
706
|
-
</IconCategory>
|
|
707
|
-
)}
|
|
708
784
|
</div>
|
|
709
785
|
|
|
710
786
|
{/* Footer */}
|