aural-ui 3.0.7 → 4.1.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.
Files changed (183) hide show
  1. package/dist/components/aspect-ratio/AspectRatio.stories.tsx +290 -1199
  2. package/dist/components/avatar/Avatar.stories.tsx +235 -237
  3. package/dist/components/badge/Badge.stories.tsx +379 -116
  4. package/dist/components/banner/Banner.stories.tsx +445 -391
  5. package/dist/components/breadcrumb/Breadcrumb.stories.tsx +453 -199
  6. package/dist/components/button/Button.stories.tsx +585 -230
  7. package/dist/components/button/index.tsx +7 -7
  8. package/dist/components/card/Card.stories.tsx +619 -301
  9. package/dist/components/char-count/CharCount.stories.tsx +350 -248
  10. package/dist/components/checkbox/Checkbox.stories.tsx +309 -167
  11. package/dist/components/chip/Chip.stories.tsx +362 -168
  12. package/dist/components/circular-loader/CircularLoader.stories.tsx +221 -620
  13. package/dist/components/clamp-lines/ClampLines.stories.tsx +246 -117
  14. package/dist/components/collapsible/Collapsible.stories.tsx +391 -252
  15. package/dist/components/command/Command.stories.tsx +533 -856
  16. package/dist/components/dialog/Dialog.stories.tsx +505 -949
  17. package/dist/components/divider/Divider.stories.tsx +265 -502
  18. package/dist/components/dot-loader/DotLoader.stories.tsx +256 -257
  19. package/dist/components/drawer/Drawer.stories.tsx +659 -993
  20. package/dist/components/drawer/index.tsx +3 -3
  21. package/dist/components/dropdown/Dropdown.stories.tsx +643 -1018
  22. package/dist/components/form/Form.stories.tsx +560 -274
  23. package/dist/components/helper-text/HelperText.stories.tsx +199 -200
  24. package/dist/components/hover-card/HoverCard.stories.tsx +318 -1221
  25. package/dist/components/icon-button/IconButton.stories.tsx +837 -194
  26. package/dist/components/if-else/if-else.stories.tsx +370 -83
  27. package/dist/components/input/Input.stories.tsx +436 -368
  28. package/dist/components/label/Label.stories.tsx +156 -154
  29. package/dist/components/list/List.stories.tsx +485 -822
  30. package/dist/components/marquee/Marquee.stories.tsx +356 -694
  31. package/dist/components/otp-inputs/OtpInputs.stories.tsx +352 -410
  32. package/dist/components/overlay/Overlay.stories.tsx +452 -818
  33. package/dist/components/overlay/index.tsx +4 -4
  34. package/dist/components/pagination/Pagination.stories.tsx +721 -210
  35. package/dist/components/popover/Popover.stories.tsx +484 -873
  36. package/dist/components/radio/Radio.stories.tsx +432 -124
  37. package/dist/components/resizable/Resizable.stories.tsx +496 -752
  38. package/dist/components/scroll-area/ScrollArea.stories.tsx +384 -1006
  39. package/dist/components/search/Search.stories.tsx +314 -575
  40. package/dist/components/select/Select.stories.tsx +684 -787
  41. package/dist/components/sheet/Sheet.stories.tsx +671 -936
  42. package/dist/components/skelton/Skelton.stories.tsx +230 -764
  43. package/dist/components/slider/Slider.stories.tsx +384 -737
  44. package/dist/components/stepper/Stepper.stories.tsx +371 -514
  45. package/dist/components/switch/Switch.stories.tsx +461 -208
  46. package/dist/components/switch-case/SwitchCase.stories.tsx +367 -188
  47. package/dist/components/table/Table.stories.tsx +770 -914
  48. package/dist/components/tabs/Tabs.stories.tsx +459 -1400
  49. package/dist/components/tag/Tag.stories.tsx +714 -542
  50. package/dist/components/textarea/TextArea.stories.tsx +621 -562
  51. package/dist/components/thumbnail-tags/ThumbnailTags.stories.tsx +228 -148
  52. package/dist/components/toast/Toast.stories.tsx +452 -1333
  53. package/dist/components/toggle/Toggle.stories.tsx +488 -909
  54. package/dist/components/tooltip/Tooltip.stories.tsx +344 -1372
  55. package/dist/components/typography/Typography.stories.tsx +406 -89
  56. package/dist/hooks/use-change-state/UseChangeState.stories.tsx +309 -606
  57. package/dist/hooks/use-previous/UsePrevious.stories.tsx +367 -917
  58. package/dist/hooks/use-standalone-pagination/UseStandalonePagination.stories.tsx +639 -867
  59. package/dist/icons/Icons.stories.tsx +0 -12
  60. package/dist/icons/ai-avatar-icon/AiAvatarIcon.stories.tsx +226 -1013
  61. package/dist/icons/alert-icon/AlertIcon.stories.tsx +109 -929
  62. package/dist/icons/all-icons.tsx +124 -87
  63. package/dist/icons/angle-down-icon/AngleDownIcon.stories.tsx +140 -971
  64. package/dist/icons/apple-logo-icon/AppleLogoIcon.stories.tsx +148 -888
  65. package/dist/icons/arrow-box-left-icon/ArrowBoxLeftIcon.stories.tsx +135 -1019
  66. package/dist/icons/arrow-corner-up-left-icon/ArrowCornerUpLeftIcon.stories.tsx +137 -953
  67. package/dist/icons/arrow-corner-up-right-icon/ArrowCornerUpRightIcon.stories.tsx +138 -997
  68. package/dist/icons/arrow-left-icon/ArrowLeftIcon.stories.tsx +136 -942
  69. package/dist/icons/arrow-right-icon/ArrowRightIcon.stories.tsx +148 -1092
  70. package/dist/icons/arrow-right-up-icon/ArrowRightUpIcon.stories.tsx +146 -1211
  71. package/dist/icons/art-board-icon/ArtBoardIcon.stories.tsx +126 -615
  72. package/dist/icons/audio-bar-icon/AudioBarIcon.stories.tsx +144 -1164
  73. package/dist/icons/backward-ten-seconds-icon/BackwardTenSecondsIcon.stories.tsx +167 -985
  74. package/dist/icons/bubble-check-icon/BubbleCheckIcon.stories.tsx +122 -1179
  75. package/dist/icons/bubble-crossed-icon/BubbleCrossedIcon.stories.tsx +124 -1168
  76. package/dist/icons/bubble-sparkle-icon/BubbleSparkleIcon.stories.tsx +119 -850
  77. package/dist/icons/camera-icon/CameraIcon.stories.tsx +112 -1213
  78. package/dist/icons/capital-a-letter-icon/CapitalALetterIcon.stories.tsx +117 -934
  79. package/dist/icons/chevron-double-left-icon/ChevronDoubleLeftIcon.stories.tsx +160 -961
  80. package/dist/icons/chevron-double-right-icon/ChevronDoubleRightIcon.stories.tsx +163 -961
  81. package/dist/icons/chevron-down-icon/ChevronDownIcon.stories.tsx +144 -942
  82. package/dist/icons/chevron-left-icon/ChevronLeftIcon.stories.tsx +129 -966
  83. package/dist/icons/chevron-right-icon/ChevronRightIcon.stories.tsx +147 -964
  84. package/dist/icons/chevron-up-icon/ChevronUpIcon.stories.tsx +145 -975
  85. package/dist/icons/circle-tick-icon/CircleTickIcon.stories.tsx +150 -1142
  86. package/dist/icons/circular-play-icon/CircularPlayIcon.stories.tsx +114 -461
  87. package/dist/icons/coin-icon/CoinIcon.stories.tsx +124 -1322
  88. package/dist/icons/coin-toons-icon/CoinToonsIcon.stories.tsx +117 -1318
  89. package/dist/icons/column-wide-add-icon/ColumnWideAddIcon.stories.tsx +114 -903
  90. package/dist/icons/command-icon/CommandIcon.stories.tsx +127 -1042
  91. package/dist/icons/copy-icon/CopyIcon.stories.tsx +123 -962
  92. package/dist/icons/cross-circle-icon/CrossCircleIcon.stories.tsx +147 -999
  93. package/dist/icons/cross-icon/CrossIcon.stories.tsx +139 -960
  94. package/dist/icons/download-icon/DownloadIcon.stories.tsx +126 -820
  95. package/dist/icons/edit-big-icon/EditBigIcon.stories.tsx +124 -1031
  96. package/dist/icons/email-icon/EmailIcon.stories.tsx +115 -936
  97. package/dist/icons/expand-icon/ExpandIcon.stories.tsx +112 -1111
  98. package/dist/icons/eye-close-icon/EyeCloseIcon.stories.tsx +144 -1025
  99. package/dist/icons/eye-open-icon/EyeOpenIcon.stories.tsx +143 -1036
  100. package/dist/icons/feature-shine-icon/FeatureShineIcon.stories.tsx +127 -1011
  101. package/dist/icons/file-chart-icon/FileChartIcon.stories.tsx +126 -1056
  102. package/dist/icons/file-text-icon/FileTextIcon.stories.tsx +125 -614
  103. package/dist/icons/filter-bar-row-icon/FilterBarRowIcon.stories.tsx +119 -1050
  104. package/dist/icons/forward-ten-seconds-icon/ForwardTenSecondsIcon.stories.tsx +169 -989
  105. package/dist/icons/git-branch-icon/GitBranchIcon.stories.tsx +115 -1145
  106. package/dist/icons/git-fork-icon/GitForkIcon.stories.tsx +115 -1122
  107. package/dist/icons/globe-icon/GlobeIcon.stories.tsx +130 -313
  108. package/dist/icons/google-logo-icon/GoogleLogoIcon.stories.tsx +145 -940
  109. package/dist/icons/grip-vertical-icon/GripVerticalIcon.stories.tsx +119 -1174
  110. package/dist/icons/head-icon/HeadIcon.stories.tsx +111 -916
  111. package/dist/icons/heart-icon/HeartIcon.stories.tsx +120 -1019
  112. package/dist/icons/image-avatar-sparkle-icon/ImageAvatarSparkleIcon.stories.tsx +119 -683
  113. package/dist/icons/image-icon/ImageIcon.stories.tsx +105 -1121
  114. package/dist/icons/import-folder-icon/ImportFolderIcon.stories.tsx +111 -1192
  115. package/dist/icons/import-left-arrow-folder-icon/ImportLeftArrowFolderIcon.stories.tsx +136 -1256
  116. package/dist/icons/indian-flag-icon/IndianFlagIcon.stories.tsx +159 -962
  117. package/dist/icons/instagram-icon/InstagramIcon.stories.tsx +161 -1385
  118. package/dist/icons/layout-column-icon/LayoutColumnIcon.stories.tsx +124 -972
  119. package/dist/icons/layout-left-icon/LayoutLeftIcon.stories.tsx +119 -948
  120. package/dist/icons/layout-right-icon/LayoutRightIcon.stories.tsx +119 -942
  121. package/dist/icons/light-bulb-simple-icon/LightBulbSimpleIcon.stories.tsx +108 -1215
  122. package/dist/icons/linked-in-icon/LinkedInIcon.stories.tsx +154 -1517
  123. package/dist/icons/magic-book-icon/MagicBookIcon.stories.tsx +110 -1188
  124. package/dist/icons/magic-edit-icon/MagicEditIcon.stories.tsx +119 -678
  125. package/dist/icons/maintenance-icon/MaintenanceIcon.stories.tsx +123 -1184
  126. package/dist/icons/message-icon/MessageIcon.stories.tsx +114 -538
  127. package/dist/icons/minimize-icon/MinimizeIcon.stories.tsx +116 -1158
  128. package/dist/icons/moon-icon/MoonIcon.stories.tsx +120 -536
  129. package/dist/icons/move-horizontal-icon/MoveHorizontalIcon.stories.tsx +109 -1184
  130. package/dist/icons/move-vertical-icon/MoveVerticalIcon.stories.tsx +115 -1134
  131. package/dist/icons/musical-note-icon/MusicalNoteIcon.stories.tsx +119 -971
  132. package/dist/icons/notepad-icon/NotepadIcon.stories.tsx +111 -1100
  133. package/dist/icons/notes-icon/NotesIcon.stories.tsx +119 -1101
  134. package/dist/icons/page-search-icon/PageSearchIcon.stories.tsx +109 -1111
  135. package/dist/icons/page-text-icon/PageTextIcon.stories.tsx +122 -684
  136. package/dist/icons/paint-roll-icon/PaintRollIcon.stories.tsx +113 -954
  137. package/dist/icons/paper-plane-icon/PaperPlaneIcon.stories.tsx +112 -877
  138. package/dist/icons/pause-icon/PauseIcon.stories.tsx +113 -1000
  139. package/dist/icons/pencil-icon/PencilIcon.stories.tsx +115 -1070
  140. package/dist/icons/phone-icon/PhoneIcon.stories.tsx +115 -978
  141. package/dist/icons/plus-icon/PlusIcon.stories.tsx +106 -1093
  142. package/dist/icons/pocket-studio-icon/PocketStudioIcon.stories.tsx +107 -829
  143. package/dist/icons/scroll-down-icon/ScrollDownIcon.stories.tsx +102 -469
  144. package/dist/icons/search-icon/SearchIcon.stories.tsx +111 -1124
  145. package/dist/icons/setting-icon/SettingIcon.stories.tsx +107 -970
  146. package/dist/icons/share-icon/ShareIcon.stories.tsx +120 -1025
  147. package/dist/icons/shield-icon/ShieldIcon.stories.tsx +117 -931
  148. package/dist/icons/site-logo-icon/SiteLogoIcon.stories.tsx +137 -1104
  149. package/dist/icons/skip-backward-icon/SkipBackwardIcon.stories.tsx +172 -982
  150. package/dist/icons/skip-forward-icon/SkipForwardIcon.stories.tsx +164 -983
  151. package/dist/icons/sparkles-soft-icon/SparklesSoftIcon.stories.tsx +105 -958
  152. package/dist/icons/spinner-gradient-icon/SpinnerGradientIcon.stories.tsx +158 -580
  153. package/dist/icons/spinner-gradient-icon/index.tsx +6 -1
  154. package/dist/icons/spinner-solid-icon/SpinnerSolidIcon.stories.tsx +158 -587
  155. package/dist/icons/spinner-solid-icon/index.tsx +6 -1
  156. package/dist/icons/spinner-solid-neutral-icon/SpinnerSolidINeutralcon.stories.tsx +146 -682
  157. package/dist/icons/spinner-solid-neutral-icon/index.tsx +1 -1
  158. package/dist/icons/star-icon/StarIcon.stories.tsx +124 -904
  159. package/dist/icons/store-coin-icon/StoreCoinIcon.stories.tsx +112 -964
  160. package/dist/icons/suggestion-icon/SuggestionIcon.stories.tsx +116 -852
  161. package/dist/icons/sun-icon/SunIcon.stories.tsx +120 -831
  162. package/dist/icons/text-color-icon/TextColorIcon.stories.tsx +116 -950
  163. package/dist/icons/text-indicator-icon/TextIndicatorIcon.stories.tsx +123 -980
  164. package/dist/icons/threads-icon/ThreadsIcon.stories.tsx +156 -1427
  165. package/dist/icons/tick-circle-icon/TickCircleIcon.stories.tsx +146 -1142
  166. package/dist/icons/tick-icon/TickIcon.stories.tsx +145 -1276
  167. package/dist/icons/trash-icon/TrashIcon.stories.tsx +108 -933
  168. package/dist/icons/twitter-x-icon/TwitterXIcon.stories.tsx +157 -1402
  169. package/dist/icons/upload-icon/UploadIcon.stories.tsx +115 -889
  170. package/dist/icons/vertical-menu-icon/VerticalMenuIcon.stories.tsx +118 -984
  171. package/dist/icons/video-play-list-icon/VideoPlaylistIcon.stories.tsx +125 -1049
  172. package/dist/icons/voice-playing-icon/VoicePlayingIcon.stories.tsx +123 -1356
  173. package/dist/icons/volume-full-icon/VolumeFullIcon.stories.tsx +110 -1171
  174. package/dist/icons/volume-half-icon/VolumeHalfIcon.stories.tsx +112 -1093
  175. package/dist/icons/volume-off-icon/VolumeOffIcon.stories.tsx +115 -1087
  176. package/dist/icons/warning-icon/WarningIcon.stories.tsx +122 -1046
  177. package/dist/icons/youtube-icon/YoutubeIcon.stories.tsx +161 -936
  178. package/dist/index.cjs +84 -84
  179. package/dist/index.js +84 -84
  180. package/dist/styles/aural-all-theme.css +1222 -0
  181. package/dist/styles/{aural-theme.css → aural-dark-theme.css} +15 -3
  182. package/dist/styles/aural-light-theme.css +1047 -0
  183. package/package.json +1 -1
@@ -1,6 +1,21 @@
1
1
  import React from "react"
2
2
  import type { Meta, StoryObj } from "@storybook/react-vite"
3
3
 
4
+ import { ArrowBoxLeftIcon } from "src/ui/icons/arrow-box-left-icon"
5
+ import { ArrowLeftIcon } from "src/ui/icons/arrow-left-icon"
6
+ import { DownloadIcon } from "src/ui/icons/download-icon"
7
+ import { UploadIcon } from "src/ui/icons/upload-icon"
8
+ import {
9
+ IconColorVariations,
10
+ IconDefaultCanvas,
11
+ IconDirectionalVariations,
12
+ IconPlaygroundCanvas,
13
+ IconSizeVariations,
14
+ IconUsageCanvas,
15
+ IconUsageSection,
16
+ } from "src/ui/story-spec/icons/icon-story-canvas"
17
+ import { AuralIconDocsPage } from "src/ui/story-spec/icons/icon-story-docs-page"
18
+
4
19
  import { ImportLeftArrowFolderIcon } from "."
5
20
 
6
21
  const meta: Meta<typeof ImportLeftArrowFolderIcon> = {
@@ -11,1037 +26,80 @@ const meta: Meta<typeof ImportLeftArrowFolderIcon> = {
11
26
  backgrounds: {
12
27
  default: "dark",
13
28
  values: [
14
- { name: "dark", value: "#0a0a0a" },
15
- { name: "darker", value: "#000000" },
16
- { name: "light", value: "#ffffff" },
29
+ { name: "dark", value: "var(--color-fm-surface-primary)" },
30
+ { name: "darker", value: "var(--color-fm-neutral-0)" },
31
+ { name: "light", value: "var(--color-fm-neutral-1100)" },
17
32
  ],
18
33
  },
19
34
  docs: {
20
35
  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"
36
+ <AuralIconDocsPage
37
+ accentToken="info"
38
+ features={[
39
+ {
40
+ title: "Import Files",
41
+ description: "Folder with import arrow",
42
+ },
43
+ { title: "currentColor", description: "Responds to text tokens" },
44
+ { title: "Accessible", description: "ARIA-ready by default" },
45
+ ]}
46
+ quickStart={{
47
+ codeExample: `import { ImportLeftArrowFolderIcon } from "src/ui/icons/import-left-arrow-folder-icon"
166
48
 
167
49
  function ImportButton() {
168
50
  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" />
51
+ <button className="flex items-center gap-2">
52
+ <ImportLeftArrowFolderIcon className="h-5 w-5 text-fm-icon-active" />
174
53
  Import
175
54
  </button>
176
55
  )
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
- {" "}
225
- <tr className="!bg-black/10">
226
- <td className="px-6 py-4 font-mono text-sm !text-blue-300">
227
- withAccessibility
228
- </td>
229
- <td className="px-6 py-4 text-sm !text-white/70">
230
- boolean
231
- </td>
232
- <td className="px-6 py-4 text-sm !text-white/50">
233
- true
234
- </td>
235
- <td className="px-6 py-4 text-sm !text-white/70">
236
- Whether to wrap the icon with accessibility feature
237
- </td>
238
- </tr>
239
- <tr className="border-b border-white/5 !bg-black/10">
240
- <td className="px-6 py-4 font-mono text-sm !text-indigo-300">
241
- height
242
- </td>
243
- <td className="px-6 py-4 text-sm !text-white/70">
244
- number | string
245
- </td>
246
- <td className="px-6 py-4 text-sm !text-white/50">24</td>
247
- <td className="px-6 py-4 text-sm !text-white/70">
248
- Height of the icon in pixels
249
- </td>
250
- </tr>
251
- <tr className="border-b border-white/5">
252
- <td className="px-6 py-4 font-mono text-sm !text-indigo-300">
253
- stroke
254
- </td>
255
- <td className="px-6 py-4 text-sm !text-white/70">
256
- string
257
- </td>
258
- <td className="px-6 py-4 text-sm !text-white/50">
259
- currentColor
260
- </td>
261
- <td className="px-6 py-4 text-sm !text-white/70">
262
- Stroke color of the icon lines
263
- </td>
264
- </tr>
265
- <tr className="border-b border-white/5 !bg-black/10">
266
- <td className="px-6 py-4 font-mono text-sm !text-indigo-300">
267
- strokeWidth
268
- </td>
269
- <td className="px-6 py-4 text-sm !text-white/70">
270
- number | string
271
- </td>
272
- <td className="px-6 py-4 text-sm !text-white/50">
273
- 1.5
274
- </td>
275
- <td className="px-6 py-4 text-sm !text-white/70">
276
- Thickness of the stroke lines
277
- </td>
278
- </tr>
279
- <tr className="border-b border-white/5">
280
- <td className="px-6 py-4 font-mono text-sm !text-indigo-300">
281
- strokeLinecap
282
- </td>
283
- <td className="px-6 py-4 text-sm !text-white/70">
284
- string
285
- </td>
286
- <td className="px-6 py-4 text-sm !text-white/50">
287
- square
288
- </td>
289
- <td className="px-6 py-4 text-sm !text-white/70">
290
- Style of line endings (e.g., butt, round, square)
291
- </td>
292
- </tr>
293
- <tr className="border-b border-white/5 !bg-black/10">
294
- <td className="px-6 py-4 font-mono text-sm !text-indigo-300">
295
- className
296
- </td>
297
- <td className="px-6 py-4 text-sm !text-white/70">
298
- string
299
- </td>
300
- <td className="px-6 py-4 text-sm !text-white/50">-</td>
301
- <td className="px-6 py-4 text-sm !text-white/70">
302
- CSS classes for styling (use for size, color, etc.)
303
- </td>
304
- </tr>
305
- <tr className="!bg-black/10">
306
- <td className="px-6 py-4 font-mono text-sm !text-indigo-300">
307
- ...svgProps
308
- </td>
309
- <td className="px-6 py-4 text-sm !text-white/70">
310
- SVGProps
311
- </td>
312
- <td className="px-6 py-4 text-sm !text-white/50">-</td>
313
- <td className="px-6 py-4 text-sm !text-white/70">
314
- All standard SVG element props supported by React
315
- </td>
316
- </tr>
317
- </tbody>
318
- </table>
319
- </div>
320
- </div>
321
-
322
- {/* Size Variations */}
323
- <div className="!space-y-8">
324
- <h2 className="text-center text-3xl font-bold !text-white">
325
- Size Variations
326
- </h2>
327
- <div className="rounded-lg border border-white/10 bg-white/5 p-8">
328
- <div className="!space-y-6">
329
- <div className="grid grid-cols-1 gap-8 md:grid-cols-2">
330
- <div className="!space-y-4">
331
- <h3 className="text-lg font-semibold !text-indigo-300">
332
- Standard Sizes
333
- </h3>
334
- <div className="flex items-end gap-6 rounded-lg bg-black/20 p-6">
335
- <div className="text-center">
336
- <ImportLeftArrowFolderIcon className="!mx-auto mb-2 h-3 w-3 text-indigo-400" />
337
- <span className="text-xs text-white/60">12px</span>
338
- </div>
339
- <div className="text-center">
340
- <ImportLeftArrowFolderIcon className="!mx-auto mb-2 h-4 w-4 text-indigo-400" />
341
- <span className="text-xs text-white/60">16px</span>
342
- </div>
343
- <div className="text-center">
344
- <ImportLeftArrowFolderIcon className="!mx-auto mb-2 h-5 w-5 text-indigo-400" />
345
- <span className="text-xs text-white/60">20px</span>
346
- </div>
347
- <div className="text-center">
348
- <ImportLeftArrowFolderIcon className="!mx-auto mb-2 h-6 w-6 text-indigo-400" />
349
- <span className="text-xs text-white/60">24px</span>
350
- </div>
351
- <div className="text-center">
352
- <ImportLeftArrowFolderIcon className="!mx-auto mb-2 h-8 w-8 text-indigo-400" />
353
- <span className="text-xs text-white/60">32px</span>
354
- </div>
355
- <div className="text-center">
356
- <ImportLeftArrowFolderIcon className="!mx-auto mb-2 h-12 w-12 text-indigo-400" />
357
- <span className="text-xs text-white/60">48px</span>
358
- </div>
359
- </div>
360
- </div>
361
-
362
- <div className="!space-y-4">
363
- <h3 className="text-lg font-semibold !text-indigo-300">
364
- Code Example
365
- </h3>
366
- <div className="rounded-lg bg-black/40 p-4">
367
- <pre className="overflow-x-auto text-sm !text-cyan-300">
368
- {`// Small (16px)
369
- <ImportLeftArrowFolderIcon className="h-4 w-4 " />
370
-
371
- // Medium (24px)
372
- <ImportLeftArrowFolderIcon className="h-6 w-6 " />
373
-
374
- // Large (32px)
375
- <ImportLeftArrowFolderIcon className="h-8 w-8 " />
376
-
377
- // Custom size with props
378
- <ImportLeftArrowFolderIcon width={40} height={40} />`}
379
- </pre>
380
- </div>
381
- </div>
382
- </div>
383
- </div>
384
- </div>
385
- </div>
386
-
387
- {/* Color Variations */}
388
- <div className="!space-y-8">
389
- <h2 className="text-center text-3xl font-bold !text-white">
390
- Color Variations
391
- </h2>
392
-
393
- <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
394
- {/* Semantic Colors */}
395
- <div className="!space-y-4">
396
- <h3 className="text-lg font-semibold !text-indigo-300">
397
- Semantic Colors
398
- </h3>
399
- <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
400
- <div className="flex items-center gap-4">
401
- <ImportLeftArrowFolderIcon className="h-6 w-6 text-indigo-400" />
402
- <div>
403
- <div className="text-sm font-medium text-white">
404
- Primary
405
- </div>
406
- <div className="text-xs text-white/60">
407
- text-indigo-400
408
- </div>
409
- </div>
410
- </div>
411
- <div className="flex items-center gap-4">
412
- <ImportLeftArrowFolderIcon className="h-6 w-6 text-cyan-400" />
413
- <div>
414
- <div className="text-sm font-medium text-white">
415
- Active
416
- </div>
417
- <div className="text-xs text-white/60">
418
- text-cyan-400
419
- </div>
420
- </div>
421
- </div>
422
- <div className="flex items-center gap-4">
423
- <ImportLeftArrowFolderIcon className="h-6 w-6 text-gray-400" />
424
- <div>
425
- <div className="text-sm font-medium text-white">
426
- Disabled
427
- </div>
428
- <div className="text-xs text-white/60">
429
- text-gray-400
430
- </div>
431
- </div>
432
- </div>
433
- <div className="flex items-center gap-4">
434
- <ImportLeftArrowFolderIcon className="h-6 w-6 text-blue-400" />
435
- <div>
436
- <div className="text-sm font-medium text-white">
437
- Info
438
- </div>
439
- <div className="text-xs text-white/60">
440
- text-blue-400
441
- </div>
442
- </div>
443
- </div>
444
- <div className="flex items-center gap-4">
445
- <ImportLeftArrowFolderIcon className="h-6 w-6 text-green-400" />
446
- <div>
447
- <div className="text-sm font-medium text-white">
448
- Success
449
- </div>
450
- <div className="text-xs text-white/60">
451
- text-green-400
452
- </div>
453
- </div>
454
- </div>
455
- <div className="flex items-center gap-4">
456
- <ImportLeftArrowFolderIcon className="h-6 w-6 text-yellow-400" />
457
- <div>
458
- <div className="text-sm font-medium text-white">
459
- Warning
460
- </div>
461
- <div className="text-xs text-white/60">
462
- text-yellow-400
463
- </div>
464
- </div>
465
- </div>
466
- <div className="flex items-center gap-4">
467
- <ImportLeftArrowFolderIcon className="h-6 w-6 text-red-400" />
468
- <div>
469
- <div className="text-sm font-medium text-white">
470
- Error
471
- </div>
472
- <div className="text-xs text-white/60">
473
- text-red-400
474
- </div>
475
- </div>
476
- </div>
477
- </div>
478
- </div>
479
-
480
- {/* Custom Colors */}
481
- <div className="!space-y-4">
482
- <h3 className="text-lg font-semibold !text-indigo-300">
483
- Custom Colors
484
- </h3>
485
- <div className="rounded-lg bg-black/40 p-4">
486
- <pre className="overflow-x-auto text-sm !text-green-300">
487
- {`// Using Tailwind classes
488
- <ImportLeftArrowFolderIcon className="h-6 w-6 text-indigo-400" />
489
- <ImportLeftArrowFolderIcon className="h-6 w-6 text-cyan-500" />
490
-
491
- // Using CSS custom properties
492
- <ImportLeftArrowFolderIcon
493
- className="h-6 w-6"
494
- style={{ color: 'var(--color-primary)' }}
495
- />
496
-
497
- // Direct stroke prop
498
- <ImportLeftArrowFolderIcon
499
- width={24}
500
- height={24}
501
- stroke="#3b82f6"
502
- />`}
503
- </pre>
504
- </div>
505
- </div>
506
- </div>
507
- </div>
508
-
509
- {/* Usage Examples */}
510
- <div className="!space-y-8">
511
- <h2 className="text-center text-3xl font-bold !text-white">
512
- Usage Examples
513
- </h2>
514
-
515
- <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
516
- {/* File Import Area */}
517
- <div className="!space-y-4">
518
- <h3 className="text-lg font-semibold !text-indigo-300">
519
- File Import Area
520
- </h3>
521
- <div className="!space-y-4">
522
- <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">
523
- <ImportLeftArrowFolderIcon className="!mx-auto h-12 w-12 text-white/40" />
524
- <h4 className="mt-4 text-lg font-medium !text-white">
525
- Import Folder
526
- </h4>
527
- <p className="mt-2 text-sm !text-white/60">
528
- Drag and drop folders here, or click to browse
529
- </p>
530
- <button className="mt-4 rounded-lg bg-indigo-500/20 px-4 py-2 text-indigo-300 transition-colors hover:bg-indigo-500/30">
531
- Browse Folders
532
- </button>
533
- </div>
534
- <div className="rounded-lg bg-black/40 p-4">
535
- <pre className="overflow-x-auto text-sm !text-green-300">
536
- {`<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">
537
- <ImportFolderIcon className="mx-auto h-12 w-12 text-white/40" />
538
- <h4 className="mt-4 text-lg font-medium text-white">Import Folder</h4>
539
- <p className="mt-2 text-sm text-white/60">
540
- Drag and drop folders here, or click to browse
541
- </p>
542
- <button className="mt-4 bg-indigo-500/20 px-4 py-2 rounded-lg text-indigo-300 hover:bg-indigo-500/30 transition-colors">
543
- Browse Folders
544
- </button>
545
- </div>`}
546
- </pre>
547
- </div>
548
- </div>
549
- </div>
550
-
551
- {/* Import Status List */}
552
- <div className="!space-y-4">
553
- <h3 className="text-lg font-semibold !text-indigo-300">
554
- Import Status List
555
- </h3>
556
- <div className="!space-y-4">
557
- <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4">
558
- {[
559
- { name: "Documents", status: "completed", count: 24 },
560
- { name: "Images", status: "processing", count: 56 },
561
- { name: "Videos", status: "pending", count: 12 },
562
- ].map((folder, index) => (
563
- <div
564
- key={index}
565
- className="flex items-center gap-3 rounded border border-white/10 bg-white/5 p-3 transition-colors hover:bg-white/10"
566
- >
567
- <ImportLeftArrowFolderIcon
568
- className={`h-5 w-5 ${
569
- folder.status === "completed"
570
- ? "text-green-400"
571
- : folder.status === "processing"
572
- ? "text-yellow-400"
573
- : "text-gray-400"
574
- }`}
575
- />
576
- <div className="flex-1">
577
- <div className="text-sm font-medium text-white">
578
- {folder.name}
579
- </div>
580
- <div className="text-xs text-white/60">
581
- {folder.count} files
582
- </div>
583
- </div>
584
- <div
585
- className={`rounded px-2 py-1 text-xs ${
586
- folder.status === "completed"
587
- ? "bg-green-500/20 text-green-300"
588
- : folder.status === "processing"
589
- ? "bg-yellow-500/20 text-yellow-300"
590
- : "bg-gray-500/20 text-gray-300"
591
- }`}
592
- >
593
- {folder.status}
594
- </div>
595
- </div>
596
- ))}
597
- </div>
598
- <div className="rounded-lg bg-black/40 p-4">
599
- <pre className="overflow-x-auto text-sm !text-green-300">
600
- {`// Import status item
601
- <div className="flex items-center gap-3 border border-white/10 bg-white/5 p-3 rounded hover:bg-white/10 transition-colors">
602
- <ImportFolderIcon className="h-5 w-5 text-green-400" />
603
- <div className="flex-1">
604
- <div className="text-sm font-medium text-white">Documents</div>
605
- <div className="text-xs text-white/60">24 files</div>
606
- </div>
607
- <div className="text-xs px-2 py-1 rounded bg-green-500/20 text-green-300">
608
- completed
609
- </div>
610
- </div>`}
611
- </pre>
612
- </div>
613
- </div>
614
- </div>
615
-
616
- {/* Button Integration */}
617
- <div className="!space-y-4">
618
- <h3 className="text-lg font-semibold !text-indigo-300">
619
- Button Integration
620
- </h3>
621
- <div className="!space-y-4">
622
- <div className="flex flex-wrap gap-4">
623
- <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">
624
- <ImportLeftArrowFolderIcon className="h-4 w-4" />
625
- Import Folder
626
- </button>
627
- <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">
628
- <ImportLeftArrowFolderIcon className="h-4 w-4" />
629
- Batch Import
630
- </button>
631
- <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">
632
- <ImportLeftArrowFolderIcon className="h-4 w-4" />
633
- Browse Folders
634
- </button>
635
- </div>
636
- <div className="rounded-lg bg-black/40 p-4">
637
- <pre className="overflow-x-auto text-sm !text-green-300">
638
- {`// Primary import button
639
- <button className="flex items-center gap-2 bg-indigo-500/20 border border-indigo-500/30 px-4 py-2 rounded-lg">
640
- <ImportFolderIcon className="h-4 w-4" />
641
- Import Folder
642
- </button>
643
-
644
- // Secondary button
645
- <button className="flex items-center gap-2 bg-white/5 border border-white/20 px-4 py-2 rounded-lg">
646
- <ImportFolderIcon className="h-4 w-4" />
647
- Browse Folders
648
- </button>`}
649
- </pre>
650
- </div>
651
- </div>
652
- </div>
653
-
654
- {/* Sidebar Navigation */}
655
- <div className="!space-y-4">
656
- <h3 className="text-lg font-semibold !text-indigo-300">
657
- Sidebar Navigation
658
- </h3>
659
- <div className="!space-y-4">
660
- <div className="max-w-xs rounded-lg border border-white/10 bg-white/5 p-3">
661
- {[
662
- { name: "All Files", icon: "📄", active: false },
663
- {
664
- name: "Import Folder",
665
- icon: "ImportFolderIcon",
666
- active: true,
667
- },
668
- { name: "Recent", icon: "🕒", active: false },
669
- { name: "Shared", icon: "👥", active: false },
670
- ].map((item, index) => (
671
- <div
672
- key={index}
673
- className={`flex cursor-pointer items-center gap-3 rounded p-2 transition-colors ${
674
- item.active
675
- ? "bg-indigo-500/20 text-indigo-200"
676
- : "text-white/70 hover:bg-white/10"
677
- }`}
678
- >
679
- {item.icon === "ImportFolderIcon" ? (
680
- <ImportLeftArrowFolderIcon
681
- className={`h-4 w-4 ${
682
- item.active
683
- ? "text-indigo-400"
684
- : "text-white/50"
685
- }`}
686
- />
687
- ) : (
688
- <span className="text-sm">{item.icon}</span>
689
- )}
690
- <span className="flex-1 text-sm">{item.name}</span>
691
- {item.active && (
692
- <div className="h-2 w-2 rounded-full bg-indigo-400"></div>
693
- )}
694
- </div>
695
- ))}
696
- </div>
697
- <div className="rounded-lg bg-black/40 p-4">
698
- <pre className="overflow-x-auto text-sm !text-green-300">
699
- {`// Navigation item
700
- <div className="flex items-center gap-3 p-2 rounded bg-indigo-500/20 text-indigo-200 cursor-pointer">
701
- <ImportFolderIcon className="h-4 w-4 text-indigo-400" />
702
- <span className="flex-1 text-sm">Import Folder</span>
703
- <div className="h-2 w-2 rounded-full bg-indigo-400"></div>
704
- </div>`}
705
- </pre>
706
- </div>
707
- </div>
708
- </div>
709
- </div>
710
- </div>
711
-
712
- {/* Interactive States And Animations */}
713
- <div className="!space-y-8">
714
- <h2 className="text-center text-3xl font-bold !text-white">
715
- Interactive States & Animations
716
- </h2>
717
- <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
718
- <div className="!space-y-4">
719
- <h3 className="text-lg font-semibold !text-indigo-300">
720
- Hover & Animation Effects
721
- </h3>
722
- <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
723
- <div className="flex items-center gap-4">
724
- <ImportLeftArrowFolderIcon className="h-6 w-6 text-white/60 transition-colors hover:text-indigo-400" />
725
- <div>
726
- <div className="text-sm font-medium text-white">
727
- Color Change
728
- </div>
729
- <div className="text-xs text-white/60">
730
- hover:text-indigo-400
731
- </div>
732
- </div>
733
- </div>
734
- <div className="flex items-center gap-4">
735
- <ImportLeftArrowFolderIcon className="h-6 w-6 text-white transition-transform hover:scale-110" />
736
- <div>
737
- <div className="text-sm font-medium text-white">
738
- Scale Up
739
- </div>
740
- <div className="text-xs text-white/60">
741
- hover:scale-110
742
- </div>
743
- </div>
744
- </div>
745
- <div className="flex items-center gap-4">
746
- <ImportLeftArrowFolderIcon className="h-6 w-6 animate-pulse text-indigo-400" />
747
- <div>
748
- <div className="text-sm font-medium text-white">
749
- Processing
750
- </div>
751
- <div className="text-xs text-white/60">
752
- animate-pulse
753
- </div>
754
- </div>
755
- </div>
756
- <div className="flex items-center gap-4">
757
- <div
758
- className="rounded p-2 focus:ring-2 focus:ring-indigo-400 focus:outline-none"
759
- tabIndex={0}
760
- >
761
- <ImportLeftArrowFolderIcon className="h-6 w-6 text-cyan-400" />
762
- </div>
763
- <div>
764
- <div className="text-sm font-medium text-white">
765
- Focus Ring
766
- </div>
767
- <div className="text-xs text-white/60">
768
- focus:ring-2
769
- </div>
770
- </div>
771
- </div>
772
- <div className="flex items-center gap-4">
773
- <ImportLeftArrowFolderIcon className="animate-document-slide h-6 w-6 text-red-400" />
774
-
775
- <div>
776
- <div className="text-sm font-medium text-white">
777
- Document Slide
778
- </div>
779
- <div className="text-xs text-white/60">
780
- animate-document-slide
781
- </div>
782
- </div>
783
- </div>
784
- </div>
785
- </div>
786
-
787
- <div className="!space-y-4">
788
- <h3 className="text-lg font-semibold !text-indigo-300">
789
- State Examples
790
- </h3>
791
- <div className="rounded-lg bg-black/40 p-4">
792
- <pre className="overflow-x-auto text-sm !text-cyan-300">
793
- {`// Hover effects
794
- <ImportLeftArrowFolderIcon className="h-6 w-6 text-white/60 hover:text-green-400 transition-colors " />
795
-
796
- // Scale on hover
797
- <ImportLeftArrowFolderIcon className="h-6 w-6 text-white hover:scale-110 transition-transform " />
798
-
799
- // Processing animation
800
- <ImportLeftArrowFolderIcon className="h-6 w-6 text-green-400 animate-pulse " />
801
-
802
- // Focus states for accessibility
803
- <div className="p-2 rounded focus:ring-2 focus:ring-green-500 focus:outline-none" tabIndex={0}>
804
- <ImportLeftArrowFolderIcon className="h-6 w-6 text-white " />
805
- </div>
806
-
807
- // Pulse animation keyframes
808
- @keyframes pulse {
809
- 0%, 100% { opacity: 1; }
810
- 50% { opacity: 0.5; }
811
- }
812
-
813
- .animate-pulse {
814
- animation: pulse 2s ease-in-out infinite;
815
- }`}
816
- </pre>
817
- </div>
818
- </div>
819
- </div>
820
- </div>
821
-
822
- {/* Accessibility */}
823
- <div className="!space-y-8">
824
- <h2 className="text-center text-3xl font-bold !text-white">
825
- Accessibility Features
826
- </h2>
827
-
828
- <div className="grid grid-cols-1 gap-8 md:grid-cols-2">
829
- <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
830
- <h3 className="text-lg font-semibold !text-green-300">
831
- ✅ Built-in Features
832
- </h3>
833
- <ul className="!space-y-2 text-sm !text-white/70">
834
- <li className="!text-white/70">
835
- Uses Radix UI AccessibleIcon wrapper
836
- </li>
837
- <li className="!text-white/70">
838
- Provides screen reader label "Import Left Arrow folder
839
- icon"
840
- </li>
841
- <li className="!text-white/70">
842
- Maintains proper color contrast ratios
843
- </li>
844
- <li className="!text-white/70">
845
- Scales with user's font size preferences
846
- </li>
847
- </ul>
848
- </div>
849
-
850
- <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
851
- <h3 className="text-lg font-semibold !text-indigo-300">
852
- 💡 Best Practices
853
- </h3>
854
- <ul className="!space-y-2 text-sm text-white/70">
855
- <li className="!text-white/70">
856
- Always provide descriptive labels for import-related
857
- actions
858
- </li>
859
- <li className="!text-white/70">
860
- Use consistent placement in upload or import interfaces
861
- </li>
862
- <li className="!text-white/70">
863
- Ensure sufficient click/touch target sizes
864
- </li>
865
- <li className="!text-white/70">
866
- Add focus states for keyboard navigation
867
- </li>
868
- <li className="!text-white/70">
869
- Respect reduced motion preferences for import animations
870
- </li>
871
- </ul>
872
- </div>
873
- </div>
874
-
875
- <div className="rounded-lg border border-white/10 bg-white/5 p-6">
876
- <h3 className="mb-4 text-lg font-semibold !text-purple-300">
877
- Custom Accessibility Implementation
878
- </h3>
879
- <div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
880
- {/* Code Example Block */}
881
- <div className="rounded-lg bg-black/40 p-4">
882
- <pre className="overflow-x-auto text-sm !text-cyan-300">{`// Import button with ARIA
883
- <button
884
- aria-label="Import files into folder"
885
- aria-pressed={importing}
886
- className="flex items-center gap-2 p-2"
887
- >
888
- <ImportLeftArrowFolderIcon className="h-4 w-4" />
889
- <span className="sr-only">Start file import</span>
890
- </button>
891
-
892
- // Grouped file input options
893
- <fieldset aria-labelledby="import-heading" className="space-y-2">
894
- <legend id="import-heading" className="sr-only">Import Options</legend>
895
- <div>
896
- <label className="inline-flex items-center gap-2">
897
- <input type="checkbox" aria-describedby="import-desc" />
898
- Import as Draft
899
- </label>
900
- </div>
901
- <div>
902
- <label className="inline-flex items-center gap-2">
903
- <input type="checkbox" />
904
- Overwrite Existing
905
- </label>
906
- </div>
907
- </fieldset>
908
- <p id="import-desc" className="sr-only">
909
- Choose how you want imported files to be handled upon upload.
910
- </p>`}</pre>
911
- </div>
912
-
913
- {/* Accessibility Note */}
914
- <div className="!space-y-4">
915
- <p className="text-sm !text-white/70">
916
- When using <code>ImportLeftArrowFolderIcon</code> in
917
- upload or file action buttons, ensure ARIA labels
918
- clearly describe the behavior. Use semantic grouping
919
- with <code>fieldset</code> and
920
- <code>legend</code> for complex import settings to
921
- assist screen readers.
922
- </p>
923
- <div className="rounded-lg border border-indigo-500/20 bg-indigo-500/10 p-4">
924
- <div className="flex items-center gap-2 text-sm text-indigo-200">
925
- <ImportLeftArrowFolderIcon className="h-4 w-4" />
926
- <span>
927
- Use <code>aria-pressed</code> or{" "}
928
- <code>aria-expanded</code> for toggles, and wrap
929
- related settings in
930
- <code>fieldset</code> elements with clear labeling.
931
- </span>
932
- </div>
933
- </div>
934
- </div>
935
- </div>
936
- </div>
937
- </div>
938
-
939
- {/* Related Icons */}
940
- <div className="!space-y-8">
941
- <h2 className="text-center text-3xl font-bold !text-white">
942
- Related Icons
943
- </h2>
944
- <div className="grid grid-cols-2 gap-6 md:grid-cols-4">
945
- <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
946
- <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-blue-500/20">
947
- <span className="text-2xl">🔍</span>
948
- </div>
949
- <div>
950
- <div className="font-medium text-white">SearchIcon</div>
951
- <div className="text-xs text-white/60">
952
- General search
953
- </div>
954
- </div>
955
- </div>
956
- <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
957
- <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-purple-500/20">
958
- <span className="text-2xl">📈</span>
959
- </div>
960
- <div>
961
- <div className="font-medium text-white">
962
- TrendingUpIcon
963
- </div>
964
- <div className="text-xs text-white/60">
965
- Growth metrics
966
- </div>
967
- </div>
968
- </div>
969
- <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
970
- <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-blue-500/20">
971
- <span className="text-2xl">📁</span>
972
- </div>
973
- <div>
974
- <div className="font-medium text-white">FolderIcon</div>
975
- <div className="text-xs text-white/60">
976
- File Organization
977
- </div>
978
- </div>
979
- </div>
980
- <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
981
- <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-green-500/20">
982
- <span className="text-2xl">💾</span>
983
- </div>
984
- <div>
985
- <div className="font-medium text-white">SaveIcon</div>
986
- <div className="text-xs text-white/60">Save changes</div>
987
- </div>
988
- </div>
989
- </div>
990
- </div>
991
- </div>
992
-
993
- {/* Footer */}
994
- <div className="border-t border-white/10 bg-black/20 backdrop-blur-xl">
995
- <div className="!mx-auto max-w-7xl px-6 py-8">
996
- <div className="!space-y-4 text-center">
997
- <p className="!text-white/60">
998
- FilterBarRowIcon is part of the Aural UI icon library, built
999
- for document search, content discovery, and page navigation
1000
- functionality.
1001
- </p>
1002
- <p className="text-sm !text-white/40">
1003
- All icons use Radix UI's AccessibleIcon for screen reader
1004
- compatibility and follow WCAG guidelines for search
1005
- interfaces.
1006
- </p>
1007
- </div>
1008
- </div>
1009
- </div>
1010
- </div>
1011
- </>
56
+ }`,
57
+ livePreview: (
58
+ <button className="text-fm-primary font-fm-text flex items-center gap-2 text-sm">
59
+ <ImportLeftArrowFolderIcon className="text-fm-icon-active h-5 w-5" />
60
+ Import
61
+ </button>
62
+ ),
63
+ }}
64
+ relatedIcons={[
65
+ {
66
+ name: "DownloadIcon",
67
+ description: "Download to device",
68
+ icon: DownloadIcon,
69
+ accentToken: "info",
70
+ },
71
+ {
72
+ name: "UploadIcon",
73
+ description: "Upload from device",
74
+ icon: UploadIcon,
75
+ accentToken: "positive",
76
+ },
77
+ {
78
+ name: "ArrowLeftIcon",
79
+ description: "Simple left arrow",
80
+ icon: ArrowLeftIcon,
81
+ accentToken: "warning",
82
+ },
83
+ {
84
+ name: "ArrowBoxLeftIcon",
85
+ description: "Boxed left arrow",
86
+ icon: ArrowBoxLeftIcon,
87
+ accentToken: "negative",
88
+ },
89
+ ]}
90
+ />
1012
91
  ),
1013
92
  },
1014
93
  },
1015
94
  tags: ["autodocs"],
1016
95
  argTypes: {
1017
- width: {
1018
- control: { type: "range", min: 8, max: 96, step: 2 },
1019
- description: "Width of the icon in pixels",
96
+ className: {
97
+ control: "text",
98
+ description: "CSS classes including size and color token",
1020
99
  },
1021
100
  withAccessibility: {
1022
101
  control: "boolean",
1023
- description: "Whether to wrap the icon with accessibility features",
1024
- },
1025
- height: {
1026
- control: { type: "range", min: 8, max: 96, step: 2 },
1027
- description: "Height of the icon in pixels",
1028
- },
1029
- stroke: {
1030
- control: "color",
1031
- description: "Stroke color of the icon lines",
1032
- },
1033
- strokeWidth: {
1034
- control: { type: "range", min: 1, max: 4, step: 0.5 },
1035
- description: "Stroke width of the icon",
1036
- },
1037
- strokeLinecap: {
1038
- control: "select",
1039
- options: ["butt", "round", "square"],
1040
- description: "Style of line endings",
1041
- },
1042
- className: {
1043
- control: "text",
1044
- description: "CSS classes for styling (use for overrides)",
102
+ description: "Wrap with accessibility label",
1045
103
  },
1046
104
  },
1047
105
  }
@@ -1049,285 +107,107 @@ function ImportButton() {
1049
107
  export default meta
1050
108
  type Story = StoryObj<typeof ImportLeftArrowFolderIcon>
1051
109
 
1052
- // Story parameters for consistent dark theme
1053
- const storyParameters = {
1054
- backgrounds: {
1055
- default: "dark",
1056
- values: [
1057
- { name: "dark", value: "#0a0a0a" },
1058
- { name: "darker", value: "#000000" },
1059
- ],
1060
- },
1061
- }
1062
-
1063
110
  export const Default: Story = {
1064
111
  args: {
1065
- width: 24,
1066
- height: 24,
1067
- className: "text-indigo-400 ",
112
+ className: "h-6 w-6 text-fm-icon-active",
1068
113
  withAccessibility: true,
1069
114
  },
1070
- parameters: storyParameters,
1071
115
  render: (args) => (
1072
- <div className="flex h-32 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
116
+ <IconDefaultCanvas>
1073
117
  <ImportLeftArrowFolderIcon {...args} />
1074
- </div>
118
+ </IconDefaultCanvas>
1075
119
  ),
1076
120
  }
1077
121
 
1078
122
  export const SizeVariations: Story = {
1079
- parameters: {
1080
- ...storyParameters,
1081
- docs: {
1082
- description: {
1083
- story:
1084
- "GitBranchIcon in different sizes, from small search inputs to large interface elements.",
1085
- },
1086
- },
1087
- },
1088
- render: () => (
1089
- <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">
1090
- <div className="text-center">
1091
- <ImportLeftArrowFolderIcon className="!mx-auto mb-2 h-3 w-3 text-indigo-400" />
1092
- <span className="text-xs text-white/60">12px</span>
1093
- </div>
1094
- <div className="text-center">
1095
- <ImportLeftArrowFolderIcon className="!mx-auto mb-2 h-4 w-4 text-indigo-400" />
1096
- <span className="text-xs text-white/60">16px</span>
1097
- </div>
1098
- <div className="text-center">
1099
- <ImportLeftArrowFolderIcon className="!mx-auto mb-2 h-5 w-5 text-indigo-400" />
1100
- <span className="text-xs text-white/60">20px</span>
1101
- </div>
1102
- <div className="text-center">
1103
- <ImportLeftArrowFolderIcon className="!mx-auto mb-2 h-6 w-6 text-indigo-400" />
1104
- <span className="text-xs text-white/60">24px</span>
1105
- </div>
1106
- <div className="text-center">
1107
- <ImportLeftArrowFolderIcon className="!mx-auto mb-2 h-8 w-8 text-indigo-400" />
1108
- <span className="text-xs text-white/60">32px</span>
1109
- </div>
1110
- <div className="text-center">
1111
- <ImportLeftArrowFolderIcon className="!mx-auto mb-2 h-12 w-12 text-indigo-400" />
1112
- <span className="text-xs text-white/60">48px</span>
1113
- </div>
1114
- </div>
1115
- ),
123
+ render: () => <IconSizeVariations icon={ImportLeftArrowFolderIcon} />,
1116
124
  }
1117
125
 
1118
126
  export const ColorVariations: Story = {
1119
- parameters: {
1120
- ...storyParameters,
1121
- docs: {
1122
- description: {
1123
- story:
1124
- "GitBranchIcon in different colors for various search states and contexts.",
1125
- },
1126
- },
1127
- },
127
+ render: () => <IconColorVariations icon={ImportLeftArrowFolderIcon} />,
128
+ }
129
+
130
+ export const DirectionalVariations: Story = {
1128
131
  render: () => (
1129
- <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">
1130
- <div className="text-center">
1131
- <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">
1132
- <ImportLeftArrowFolderIcon className="h-8 w-8 text-indigo-400" />
1133
- </div>
1134
- <div className="text-sm font-medium text-white">Primary</div>
1135
- <div className="text-xs text-indigo-400">text-indigo-400</div>
1136
- </div>
1137
- <div className="text-center">
1138
- <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">
1139
- <ImportLeftArrowFolderIcon className="h-8 w-8 text-cyan-400" />
1140
- </div>
1141
- <div className="text-sm font-medium text-white">Active</div>
1142
- <div className="text-xs text-cyan-400">text-cyan-400</div>
1143
- </div>
1144
- <div className="text-center">
1145
- <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">
1146
- <ImportLeftArrowFolderIcon className="h-8 w-8 text-gray-400" />
1147
- </div>
1148
- <div className="text-sm font-medium text-white">Disabled</div>
1149
- <div className="text-xs text-gray-400">text-gray-400</div>
1150
- </div>
1151
- <div className="text-center">
1152
- <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">
1153
- <ImportLeftArrowFolderIcon className="h-8 w-8 text-blue-400" />
1154
- </div>
1155
- <div className="text-sm font-medium text-white">Info</div>
1156
- <div className="text-xs text-blue-400">text-blue-400</div>
1157
- </div>
1158
- </div>
132
+ <IconDirectionalVariations
133
+ icon={ImportLeftArrowFolderIcon}
134
+ directions={[
135
+ { label: "Import", className: "h-8 w-8 text-fm-icon-active" },
136
+ {
137
+ label: "Export",
138
+ className: "h-8 w-8 text-fm-icon-active rotate-180",
139
+ },
140
+ ]}
141
+ />
1159
142
  ),
1160
143
  }
1161
144
 
1162
145
  export const UsageExamples: Story = {
1163
- parameters: {
1164
- ...storyParameters,
1165
- docs: {
1166
- description: {
1167
- story:
1168
- "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.",
1169
- },
1170
- },
1171
- },
1172
146
  render: () => (
1173
- <div className="min-h-dvh space-y-8 rounded-lg bg-gradient-to-br from-gray-950 to-gray-900 p-8">
1174
- {/* File Import Area */}
1175
- <div className="space-y-2">
1176
- <h3 className="text-sm font-medium text-white">File Import Area</h3>
1177
- <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">
1178
- <ImportLeftArrowFolderIcon className="mx-auto h-12 w-12 text-white/40" />
1179
- <h4 className="mt-4 text-lg font-medium text-white">Import Folder</h4>
1180
- <p className="mt-2 text-sm text-white/60">
1181
- Drag and drop folders here, or click to browse
1182
- </p>
1183
- <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">
1184
- Browse Folders
147
+ <IconUsageCanvas>
148
+ <IconUsageSection title="Import Action">
149
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary w-full max-w-sm rounded-xl border p-4">
150
+ <button className="border-fm-divider-secondary flex w-full items-center gap-3 rounded-xl border px-4 py-3">
151
+ <ImportLeftArrowFolderIcon className="text-fm-icon-active h-5 w-5" />
152
+ <div className="text-left">
153
+ <div className="text-fm-primary font-fm-text text-sm font-medium">
154
+ Import episodes
155
+ </div>
156
+ <div className="text-fm-secondary font-fm-text text-xs">
157
+ From RSS or file
158
+ </div>
159
+ </div>
1185
160
  </button>
1186
161
  </div>
1187
- </div>
162
+ </IconUsageSection>
1188
163
 
1189
- {/* Import Status */}
1190
- <div className="space-y-2">
1191
- <h3 className="text-sm font-medium text-white">Import Status</h3>
1192
- <div className="space-y-3 rounded-lg border border-white/10 bg-white/5 p-4">
164
+ <IconUsageSection title="File Operations">
165
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary w-full max-w-sm space-y-px overflow-hidden rounded-xl border">
1193
166
  {[
1194
- { name: "Documents", status: "completed", count: 24 },
1195
- { name: "Images", status: "processing", count: 56 },
1196
- { name: "Videos", status: "pending", count: 12 },
1197
- ].map((folder, index) => (
1198
- <div
1199
- key={index}
1200
- className="flex items-center gap-3 rounded border border-white/10 bg-white/5 p-3 transition hover:bg-white/10"
167
+ { label: "Import audio", icon: ImportLeftArrowFolderIcon },
168
+ { label: "Download file", icon: DownloadIcon },
169
+ { label: "Upload asset", icon: UploadIcon },
170
+ ].map(({ label, icon: Icon }) => (
171
+ <button
172
+ key={label}
173
+ className="border-fm-divider-secondary flex w-full items-center gap-3 border-b px-4 py-3 last:border-b-0"
1201
174
  >
1202
- <ImportLeftArrowFolderIcon
1203
- className={`h-5 w-5 ${
1204
- folder.status === "completed"
1205
- ? "text-green-400"
1206
- : folder.status === "processing"
1207
- ? "text-yellow-400"
1208
- : "text-gray-400"
1209
- }`}
1210
- />
1211
- <div className="flex-1">
1212
- <div className="text-sm font-medium text-white">
1213
- {folder.name}
1214
- </div>
1215
- <div className="text-xs text-white/60">
1216
- {folder.count} files
1217
- </div>
1218
- </div>
1219
- <div
1220
- className={`rounded px-2 py-1 text-xs ${
1221
- folder.status === "completed"
1222
- ? "bg-green-500/20 text-green-300"
1223
- : folder.status === "processing"
1224
- ? "bg-yellow-500/20 text-yellow-300"
1225
- : "bg-gray-500/20 text-gray-300"
1226
- }`}
1227
- >
1228
- {folder.status}
1229
- </div>
1230
- </div>
175
+ <Icon className="text-fm-icon-active h-4 w-4" />
176
+ <span className="text-fm-primary font-fm-text text-sm">
177
+ {label}
178
+ </span>
179
+ </button>
1231
180
  ))}
1232
181
  </div>
1233
- </div>
182
+ </IconUsageSection>
1234
183
 
1235
- {/* Button Integration */}
1236
- <div className="space-y-2">
1237
- <h3 className="text-sm font-medium text-white">Button Integration</h3>
1238
- <div className="flex gap-4">
1239
- <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">
1240
- <ImportLeftArrowFolderIcon className="h-4 w-4" />
1241
- Import Folder
1242
- </button>
1243
- <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">
1244
- <ImportLeftArrowFolderIcon className="h-4 w-4" />
1245
- Batch Import
1246
- </button>
1247
- <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">
1248
- <ImportLeftArrowFolderIcon className="h-4 w-4" />
1249
- Browse Folders
1250
- </button>
1251
- <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">
1252
- <ImportLeftArrowFolderIcon className="h-4 w-4" />
1253
- Clear All
1254
- </button>
1255
- </div>
1256
- </div>
1257
- </div>
1258
- ),
1259
- }
1260
-
1261
- export const InteractiveStates: Story = {
1262
- parameters: {
1263
- ...storyParameters,
1264
- docs: {
1265
- description: {
1266
- story:
1267
- "Interactive states showing hover effects, animations, and different search states.",
1268
- },
1269
- },
1270
- },
1271
- render: () => (
1272
- <div className="min-h-dvh space-y-8 rounded-lg bg-gradient-to-br from-gray-900 to-gray-800 p-8">
1273
- <div className="space-y-4">
1274
- <h3 className="text-sm font-medium text-white/70">
1275
- Interactive States & Motion
1276
- </h3>
1277
- <div className="flex gap-8">
1278
- {/* Hover color transition */}
1279
- <div className="flex flex-col items-center gap-2">
1280
- <ImportLeftArrowFolderIcon className="h-8 w-8 text-white/60 transition-colors hover:text-blue-400" />
1281
- <span className="text-xs text-white/60">Hover to Highlight</span>
1282
- </div>
1283
-
1284
- {/* Hover scale up */}
1285
- <div className="flex flex-col items-center gap-2">
1286
- <ImportLeftArrowFolderIcon className="h-8 w-8 text-white transition-transform duration-200 hover:scale-110" />
1287
- <span className="text-xs text-white/60">Scale on Hover</span>
184
+ <IconUsageSection title="Empty State Import">
185
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary flex w-full max-w-sm flex-col items-center rounded-xl border p-6 text-center">
186
+ <ImportLeftArrowFolderIcon className="text-fm-icon-inactive mb-3 h-8 w-8" />
187
+ <div className="text-fm-primary font-fm-text mb-1 text-sm font-medium">
188
+ No content yet
1288
189
  </div>
1289
-
1290
- {/* Pulse animation to show sync */}
1291
- <div className="flex flex-col items-center gap-2">
1292
- <ImportLeftArrowFolderIcon className="h-8 w-8 animate-pulse text-green-400" />
1293
- <span className="text-xs text-white/60">Sync Pulse</span>
1294
- </div>
1295
- <div className="flex flex-col items-center gap-2">
1296
- <div
1297
- className="rounded p-1 focus:ring-2 focus:ring-green-500 focus:outline-none"
1298
- tabIndex={0}
1299
- >
1300
- <ImportLeftArrowFolderIcon className="h-8 w-8 text-white" />
1301
- </div>
1302
- <span className="text-xs text-white/60">Focus Ring</span>
190
+ <div className="text-fm-secondary font-fm-text mb-3 text-xs">
191
+ Import your first episode to get started
1303
192
  </div>
193
+ <button className="border-fm-divider-secondary flex items-center gap-2 rounded-lg border px-3 py-2">
194
+ <ImportLeftArrowFolderIcon className="text-fm-icon-active h-4 w-4" />
195
+ <span className="text-fm-primary font-fm-text text-sm">Import</span>
196
+ </button>
1304
197
  </div>
1305
- </div>
1306
- </div>
198
+ </IconUsageSection>
199
+ </IconUsageCanvas>
1307
200
  ),
1308
201
  }
1309
202
 
1310
203
  export const Playground: Story = {
1311
- parameters: {
1312
- ...storyParameters,
1313
- docs: {
1314
- description: {
1315
- story:
1316
- "Interactive playground to experiment with different GitBranchIcon configurations.",
1317
- },
1318
- },
1319
- },
1320
204
  args: {
1321
- width: 32,
1322
- height: 32,
1323
- className: "text-indigo-400 ",
1324
- strokeLinecap: "square",
205
+ className: "h-8 w-8 text-fm-icon-active",
206
+ withAccessibility: true,
1325
207
  },
1326
208
  render: (args) => (
1327
- <div className="flex h-64 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
1328
- <div className="rounded-lg border border-white/10 bg-white/5 p-8">
1329
- <ImportLeftArrowFolderIcon {...args} />
1330
- </div>
1331
- </div>
209
+ <IconPlaygroundCanvas>
210
+ <ImportLeftArrowFolderIcon {...args} />
211
+ </IconPlaygroundCanvas>
1332
212
  ),
1333
213
  }