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,20 @@
1
1
  import React from "react"
2
2
  import type { Meta, StoryObj } from "@storybook/react-vite"
3
3
 
4
+ import { ColumnWideAddIcon } from "src/ui/icons/column-wide-add-icon"
5
+ import { LayoutColumnIcon } from "src/ui/icons/layout-column-icon"
6
+ import { SearchIcon } from "src/ui/icons/search-icon"
7
+ import { SettingIcon } from "src/ui/icons/setting-icon"
8
+ import {
9
+ IconColorVariations,
10
+ IconDefaultCanvas,
11
+ IconPlaygroundCanvas,
12
+ IconSizeVariations,
13
+ IconUsageCanvas,
14
+ IconUsageSection,
15
+ } from "src/ui/story-spec/icons/icon-story-canvas"
16
+ import { AuralIconDocsPage } from "src/ui/story-spec/icons/icon-story-docs-page"
17
+
4
18
  import { FilterBarRowIcon } from "."
5
19
 
6
20
  const meta: Meta<typeof FilterBarRowIcon> = {
@@ -11,860 +25,76 @@ const meta: Meta<typeof FilterBarRowIcon> = {
11
25
  backgrounds: {
12
26
  default: "dark",
13
27
  values: [
14
- { name: "dark", value: "#0a0a0a" },
15
- { name: "darker", value: "#000000" },
16
- { name: "light", value: "#ffffff" },
28
+ { name: "dark", value: "var(--color-fm-surface-primary)" },
29
+ { name: "darker", value: "var(--color-fm-neutral-0)" },
30
+ { name: "light", value: "var(--color-fm-neutral-1100)" },
17
31
  ],
18
32
  },
19
33
  docs: {
20
34
  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
- <FilterBarRowIcon className="h-12 w-12 text-indigo-400" />
105
- </div>
106
- <h1 className="!text-fm-primary text-5xl font-bold">
107
- FilterBarRowIcon
108
- </h1>
109
- <p className="!mx-auto max-w-3xl text-xl leading-relaxed !text-white/70">
110
- A filter bar row icon symbolizing sorting, filtering, and
111
- refining data. Ideal for use in features like search
112
- filters, list views, dashboards, or customizable data grids.
113
- Built with accessibility in mind using Radix UI's
114
- 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
- Write
122
- </div>
123
- <div className="text-sm text-white/60">
124
- Capture thoughts
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
- Edit
131
- </div>
132
- <div className="text-sm text-white/60">Update notes</div>
133
- </div>
134
- <div className="h-8 w-px bg-white/20" />
135
- <div className="text-center">
136
- <div className="text-3xl font-bold text-blue-300">
137
- Organize
138
- </div>
139
- <div className="text-sm text-white/60">
140
- Structure ideas
141
- </div>
142
- </div>
143
- </div>
144
- </div>
145
- </div>
146
- </div>
147
-
148
- {/* Content */}
149
- <div className="!mx-auto max-w-7xl !space-y-16 px-6 py-12">
150
- {/* Quick Usage */}
151
- <div className="!space-y-8">
152
- <h2 className="text-center text-3xl font-bold !text-white">
153
- Quick Start
154
- </h2>
155
- <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
156
- {/* Basic Usage */}
157
- <div className="!space-y-4">
158
- <h3 className="text-xl font-semibold !text-indigo-300">
159
- Basic Usage
160
- </h3>
161
- <div className="rounded-lg bg-black/40 p-4">
162
- <pre className="overflow-x-auto text-sm !text-green-300">
163
- {`import { FilterBarRowIcon } from "@icons/filter-icon"
35
+ <AuralIconDocsPage
36
+ accentToken="info"
37
+ features={[
38
+ { title: "Filter Bar", description: "Row-based filter control" },
39
+ { title: "Sort / Group", description: "Organise list results" },
40
+ { title: "Accessible", description: "ARIA-ready by default" },
41
+ ]}
42
+ quickStart={{
43
+ codeExample: `import { FilterBarRowIcon } from "src/ui/icons/filter-bar-row-icon"
164
44
 
165
45
  function FilterButton() {
166
46
  return (
167
- <button
168
- aria-label="Open filters"
169
- 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"
170
- >
171
- <FilterBarRowIcon className="h-4 w-4" />
172
- Filters
47
+ <button className="flex items-center gap-2">
48
+ <FilterBarRowIcon className="h-5 w-5 text-fm-icon-active" />
49
+ <span>Filter</span>
173
50
  </button>
174
51
  )
175
- }`}
176
- </pre>
177
- </div>
178
- </div>
179
-
180
- {/* Live Preview */}
181
- <div className="!space-y-4">
182
- <h3 className="text-xl font-semibold !text-indigo-300">
183
- Live Preview
184
- </h3>
185
- <div className="flex h-32 items-center justify-center rounded-lg border border-white/10 bg-white/5">
186
- <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:bg-indigo-500/20">
187
- <FilterBarRowIcon className="h-4 w-4" />
188
- Filters
189
- </button>
190
- </div>
191
- </div>
192
- </div>
193
- </div>
194
-
195
- {/* Props Documentation */}
196
- <div className="!space-y-8">
197
- <h2 className="text-center text-3xl font-bold !text-white">
198
- Props & Configuration
199
- </h2>
200
-
201
- <div className="overflow-hidden rounded-lg border border-white/10 bg-white/5">
202
- <div className="bg-white/5 p-4">
203
- <h3 className="text-xl font-semibold !text-white">Props</h3>
204
- </div>
205
- <table className="!my-0 w-full">
206
- <thead className="bg-white/5">
207
- <tr className="border-b border-white/10">
208
- <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
209
- Prop
210
- </th>
211
- <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
212
- Type
213
- </th>
214
- <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
215
- Default
216
- </th>
217
- <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
218
- Description
219
- </th>
220
- </tr>
221
- </thead>
222
- <tbody>
223
- {" "}
224
- <tr className="!bg-black/10">
225
- <td className="px-6 py-4 font-mono text-sm !text-blue-300">
226
- withAccessibility
227
- </td>
228
- <td className="px-6 py-4 text-sm !text-white/70">
229
- boolean
230
- </td>
231
- <td className="px-6 py-4 text-sm !text-white/50">
232
- true
233
- </td>
234
- <td className="px-6 py-4 text-sm !text-white/70">
235
- Whether to wrap the icon with accessibility feature
236
- </td>
237
- </tr>
238
- <tr className="border-b border-white/5 !bg-black/10">
239
- <td className="px-6 py-4 font-mono text-sm !text-indigo-300">
240
- height
241
- </td>
242
- <td className="px-6 py-4 text-sm !text-white/70">
243
- number | string
244
- </td>
245
- <td className="px-6 py-4 text-sm !text-white/50">20</td>
246
- <td className="px-6 py-4 text-sm !text-white/70">
247
- Height of the icon in pixels
248
- </td>
249
- </tr>
250
- <tr className="border-b border-white/5">
251
- <td className="px-6 py-4 font-mono text-sm !text-indigo-300">
252
- stroke
253
- </td>
254
- <td className="px-6 py-4 text-sm !text-white/70">
255
- string
256
- </td>
257
- <td className="px-6 py-4 text-sm !text-white/50">
258
- currentColor
259
- </td>
260
- <td className="px-6 py-4 text-sm !text-white/70">
261
- Stroke color of the icon lines
262
- </td>
263
- </tr>
264
- <tr className="border-b border-white/5 !bg-black/10">
265
- <td className="px-6 py-4 font-mono text-sm !text-indigo-300">
266
- strokeLinecap
267
- </td>
268
- <td className="px-6 py-4 text-sm !text-white/70">
269
- string
270
- </td>
271
- <td className="px-6 py-4 text-sm !text-white/50">
272
- square
273
- </td>
274
- <td className="px-6 py-4 text-sm !text-white/70">
275
- Style of line endings
276
- </td>
277
- </tr>
278
- <tr className="border-b border-white/5">
279
- <td className="px-6 py-4 font-mono text-sm !text-indigo-300">
280
- className
281
- </td>
282
- <td className="px-6 py-4 text-sm !text-white/70">
283
- string
284
- </td>
285
- <td className="px-6 py-4 text-sm !text-white/50">-</td>
286
- <td className="px-6 py-4 text-sm !text-white/70">
287
- CSS classes for styling (use for overrides)
288
- </td>
289
- </tr>
290
- <tr className="!bg-black/10">
291
- <td className="px-6 py-4 font-mono text-sm !text-indigo-300">
292
- ...svgProps
293
- </td>
294
- <td className="px-6 py-4 text-sm !text-white/70">
295
- SVGProps
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
- All standard SVG element props
300
- </td>
301
- </tr>
302
- </tbody>
303
- </table>
304
- </div>
305
- </div>
306
-
307
- {/* Size Variations */}
308
- <div className="!space-y-8">
309
- <h2 className="text-center text-3xl font-bold !text-white">
310
- Size Variations
311
- </h2>
312
- <div className="rounded-lg border border-white/10 bg-white/5 p-8">
313
- <div className="!space-y-6">
314
- <div className="grid grid-cols-1 gap-8 md:grid-cols-2">
315
- <div className="!space-y-4">
316
- <h3 className="text-lg font-semibold !text-indigo-300">
317
- Standard Sizes
318
- </h3>
319
- <div className="flex items-end gap-6 rounded-lg bg-black/20 p-6">
320
- <div className="text-center">
321
- <FilterBarRowIcon className="!mx-auto mb-2 h-3 w-3 text-indigo-400" />
322
- <span className="text-xs text-white/60">12px</span>
323
- </div>
324
- <div className="text-center">
325
- <FilterBarRowIcon className="!mx-auto mb-2 h-4 w-4 text-indigo-400" />
326
- <span className="text-xs text-white/60">16px</span>
327
- </div>
328
- <div className="text-center">
329
- <FilterBarRowIcon className="!mx-auto mb-2 h-5 w-5 text-indigo-400" />
330
- <span className="text-xs text-white/60">20px</span>
331
- </div>
332
- <div className="text-center">
333
- <FilterBarRowIcon className="!mx-auto mb-2 h-6 w-6 text-indigo-400" />
334
- <span className="text-xs text-white/60">24px</span>
335
- </div>
336
- <div className="text-center">
337
- <FilterBarRowIcon className="!mx-auto mb-2 h-8 w-8 text-indigo-400" />
338
- <span className="text-xs text-white/60">32px</span>
339
- </div>
340
- <div className="text-center">
341
- <FilterBarRowIcon className="!mx-auto mb-2 h-12 w-12 text-indigo-400" />
342
- <span className="text-xs text-white/60">48px</span>
343
- </div>
344
- </div>
345
- </div>
346
-
347
- <div className="!space-y-4">
348
- <h3 className="text-lg font-semibold !text-indigo-300">
349
- Code Example
350
- </h3>
351
- <div className="rounded-lg bg-black/40 p-4">
352
- <pre className="overflow-x-auto text-sm !text-cyan-300">
353
- {`// Small (16px)
354
- <FilterBarRowIcon className="h-4 w-4 " />
355
-
356
- // Medium (24px)
357
- <FilterBarRowIcon className="h-6 w-6 " />
358
-
359
- // Large (32px)
360
- <FilterBarRowIcon className="h-8 w-8 " />
361
-
362
- // Custom size with props
363
- <FilterBarRowIcon width={40} height={40} />`}
364
- </pre>
365
- </div>
366
- </div>
367
- </div>
368
- </div>
369
- </div>
370
- </div>
371
-
372
- {/* Color Variations */}
373
- <div className="!space-y-8">
374
- <h2 className="text-center text-3xl font-bold !text-white">
375
- Color Variations
376
- </h2>
377
- <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
378
- <div className="!space-y-4">
379
- <h3 className="text-lg font-semibold !text-indigo-300">
380
- Semantic Colors
381
- </h3>
382
- <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
383
- <div className="flex items-center gap-4">
384
- <FilterBarRowIcon className="h-6 w-6 text-indigo-400" />
385
- <div>
386
- <div className="text-sm font-medium text-white">
387
- Primary
388
- </div>
389
- <div className="text-xs text-white/60">
390
- text-indigo-400
391
- </div>
392
- </div>
393
- </div>
394
- <div className="flex items-center gap-4">
395
- <FilterBarRowIcon className="h-6 w-6 text-cyan-400" />
396
- <div>
397
- <div className="text-sm font-medium text-white">
398
- Search Active
399
- </div>
400
- <div className="text-xs text-white/60">
401
- text-cyan-400
402
- </div>
403
- </div>
404
- </div>
405
- <div className="flex items-center gap-4">
406
- <FilterBarRowIcon className="h-6 w-6 text-gray-400" />
407
- <div>
408
- <div className="text-sm font-medium text-white">
409
- Disabled
410
- </div>
411
- <div className="text-xs text-white/60">
412
- text-gray-400
413
- </div>
414
- </div>
415
- </div>
416
- <div className="flex items-center gap-4">
417
- <FilterBarRowIcon className="h-6 w-6 text-blue-400" />
418
- <div>
419
- <div className="text-sm font-medium text-white">
420
- Info
421
- </div>
422
- <div className="text-xs text-white/60">
423
- text-blue-400
424
- </div>
425
- </div>
426
- </div>
427
- </div>
428
- </div>
429
-
430
- <div className="!space-y-4">
431
- <h3 className="text-lg font-semibold !text-indigo-300">
432
- Custom Colors
433
- </h3>
434
- <div className="rounded-lg bg-black/40 p-4">
435
- <pre className="overflow-x-auto text-sm !text-green-300">
436
- {`// Using Tailwind classes with
437
- <FilterBarRowIcon className="h-6 w-6 text-indigo-400 " />
438
- <FilterBarRowIcon className="h-6 w-6 text-cyan-500 " />
439
-
440
- // Using CSS custom properties
441
- <FilterBarRowIcon
442
- className="h-6 w-6 "
443
- style={{ color: 'var(--color-primary)' }}
444
- />
445
-
446
- // Direct stroke prop
447
- <FilterBarRowIcon
448
- width={24}
449
- height={24}
450
- stroke="#3b82f6"
451
- />`}
452
- </pre>
453
- </div>
454
- </div>
455
- </div>
456
- </div>
457
-
458
- {/* Usage Examples */}
459
- <div className="!space-y-8">
460
- <h2 className="text-center text-3xl font-bold !text-white">
461
- Usage Examples
462
- </h2>
463
-
464
- <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
465
- {/* Filter Trigger Button */}
466
- <div className="!space-y-4">
467
- <h3 className="text-lg font-semibold !text-indigo-300">
468
- Filter Panel Button
469
- </h3>
470
- <div className="!space-y-4">
471
- <div>
472
- <button className="flex items-center gap-2 rounded-lg border border-indigo-500/30 bg-indigo-500/10 px-4 py-2 text-indigo-200 transition-colors hover:bg-indigo-500/20">
473
- <FilterBarRowIcon className="h-4 w-4" />
474
- Open Filters
475
- </button>
476
- </div>
477
- <div className="rounded-lg bg-black/40 p-4">
478
- <pre className="overflow-x-auto text-sm !text-green-300">
479
- {`<button className="flex items-center gap-2 bg-indigo-500/10 border border-indigo-500/30 px-4 py-2 rounded-lg">
480
- <FilterBarRowIcon className="h-4 w-4" />
481
- Open Filters
482
- </button>`}
483
- </pre>
484
- </div>
485
- </div>
486
- </div>
487
-
488
- {/* Applied Filter Result Row */}
489
- <div className="!space-y-4">
490
- <h3 className="text-lg font-semibold !text-indigo-300">
491
- Filtered Result Row
492
- </h3>
493
- <div className="!space-y-4">
494
- <div className="rounded-lg border border-white/10 bg-white/5 p-4">
495
- <div className="flex items-center gap-3">
496
- <FilterBarRowIcon className="h-5 w-5 text-indigo-400" />
497
- <div className="flex-1">
498
- <div className="text-sm font-medium text-white">
499
- Showing results for:{" "}
500
- <span className="text-indigo-300">
501
- Category: Design
502
- </span>
503
- </div>
504
- <div className="text-xs text-white/60">
505
- 3 filters applied
506
- </div>
507
- </div>
508
- </div>
509
- </div>
510
- <div className="rounded-lg bg-black/40 p-4">
511
- <pre className="overflow-x-auto text-sm !text-green-300">
512
- {`<div className="flex items-center gap-3 p-4 border border-white/10 bg-white/5">
513
- <FilterBarRowIcon className="h-5 w-5 text-indigo-400" />
514
- <div className="flex-1">
515
- <div className="text-sm font-medium text-white">
516
- Showing results for: Category: Design
517
- </div>
518
- <div className="text-xs text-white/60">3 filters applied</div>
519
- </div>
520
- </div>`}
521
- </pre>
522
- </div>
523
- </div>
524
- </div>
525
-
526
- {/* Empty Filter State */}
527
- <div className="!space-y-4">
528
- <h3 className="text-lg font-semibold !text-indigo-300">
529
- No Results After Filter
530
- </h3>
531
- <div className="!space-y-4">
532
- <div className="flex flex-col items-center justify-center rounded-lg border border-white/10 bg-white/5 p-8">
533
- <FilterBarRowIcon className="mb-4 h-12 w-12 text-white/30" />
534
- <h4 className="mb-2 text-lg font-medium !text-white/80">
535
- No results match your filters
536
- </h4>
537
- <p className="text-center text-sm !text-white/50">
538
- Try removing or adjusting your filters to broaden your
539
- results.
540
- </p>
541
- <button className="mt-4 flex items-center gap-2 rounded-lg border border-indigo-500/30 bg-indigo-500/20 px-4 py-2 text-sm text-indigo-200">
542
- <FilterBarRowIcon className="h-4 w-4" />
543
- Reset Filters
544
- </button>
545
- </div>
546
- <div className="rounded-lg bg-black/40 p-4">
547
- <pre className="overflow-x-auto text-sm !text-green-300">
548
- {`<div className="flex flex-col items-center p-8 border border-white/10 bg-white/5">
549
- <FilterBarRowIcon className="h-12 w-12 text-white/30 mb-4" />
550
- <h4 className="text-lg font-medium text-white/80 mb-2">
551
- No results match your filters
552
- </h4>
553
- <p className="text-sm text-white/50 text-center">
554
- Try removing or adjusting your filters to broaden your results.
555
- </p>
556
- <button className="mt-4 flex items-center gap-2 text-sm">
557
- <FilterBarRowIcon className="h-4 w-4" />
558
- Reset Filters
559
- </button>
560
- </div>`}
561
- </pre>
562
- </div>
563
- </div>
564
- </div>
565
- </div>
566
- </div>
567
-
568
- {/* Interactive States */}
569
- <div className="!space-y-8">
570
- <h2 className="text-center text-3xl font-bold !text-white">
571
- Interactive States & Animations
572
- </h2>
573
- <div className="grid grid-cols-1 gap-8 lg:grid-cols-2">
574
- <div className="!space-y-4">
575
- <h3 className="text-lg font-semibold !text-indigo-300">
576
- Hover & Animation Effects
577
- </h3>
578
- <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
579
- <div className="flex items-center gap-4">
580
- <FilterBarRowIcon className="h-6 w-6 text-white/60 transition-colors hover:text-indigo-400" />
581
- <div>
582
- <div className="text-sm font-medium text-white">
583
- Color Change
584
- </div>
585
- <div className="text-xs text-white/60">
586
- Hover to see effect
587
- </div>
588
- </div>
589
- </div>
590
- <div className="flex items-center gap-4">
591
- <FilterBarRowIcon className="h-6 w-6 text-white transition-transform hover:scale-110" />
592
- <div>
593
- <div className="text-sm font-medium text-white">
594
- Scale Up
595
- </div>
596
- <div className="text-xs text-white/60">
597
- Scale on hover
598
- </div>
599
- </div>
600
- </div>
601
- <div className="flex items-center gap-4">
602
- <FilterBarRowIcon className="animate-search-pulse h-6 w-6 text-indigo-400" />
603
- <div>
604
- <div className="text-sm font-medium text-white">
605
- Search Pulse
606
- </div>
607
- <div className="text-xs text-white/60">
608
- Continuous animation
609
- </div>
610
- </div>
611
- </div>
612
- <div className="flex items-center gap-4">
613
- <FilterBarRowIcon className="animate-document-slide h-6 w-6 text-cyan-400" />
614
- <div>
615
- <div className="text-sm font-medium text-white">
616
- Document Slide
617
- </div>
618
- <div className="text-xs text-white/60">
619
- Subtle movement
620
- </div>
621
- </div>
622
- </div>
623
- </div>
624
- </div>
625
-
626
- <div className="!space-y-4">
627
- <h3 className="text-lg font-semibold !text-indigo-300">
628
- State Examples
629
- </h3>
630
- <div className="rounded-lg bg-black/40 p-4">
631
- <pre className="overflow-x-auto text-sm !text-cyan-300">
632
- {`// Color change on hover
633
- <FilterBarRowIcon className="h-6 w-6 text-white/60 transition-colors hover:text-indigo-400 " />
634
-
635
- // Scale up on hover
636
- <FilterBarRowIcon className="h-6 w-6 text-white transition-transform hover:scale-110 " />
637
-
638
- // Loading/searching state
639
- <FilterBarRowIcon className="h-6 w-6 animate-pulse text-indigo-400 " />
640
-
641
- // Active search state
642
- <FilterBarRowIcon className="h-6 w-6 text-cyan-400 animate-search-pulse " />
643
-
644
- // Disabled state
645
- <FilterBarRowIcon className="h-6 w-6 text-gray-400 opacity-50 " />`}
646
- </pre>
647
- </div>
648
- </div>
649
- </div>
650
- </div>
651
-
652
- {/* Accessibility */}
653
- <div className="!space-y-8">
654
- <h2 className="text-center text-3xl font-bold !text-white">
655
- Accessibility Features
656
- </h2>
657
- <div className="grid grid-cols-1 gap-8 md:grid-cols-2">
658
- <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
659
- <h3 className="text-lg font-semibold !text-green-300">
660
- ✅ Built-in Features
661
- </h3>
662
- <ul className="!space-y-2 text-sm !text-white/70">
663
- <li className="!text-white/70">
664
- Uses Radix UI AccessibleIcon wrapper
665
- </li>
666
- <li className="!text-white/70">
667
- Provides screen reader label "Page Search icon"
668
- </li>
669
- <li className="!text-white/70">
670
- Supports keyboard navigation when interactive
671
- </li>
672
- <li className="!text-white/70">
673
- Maintains proper color contrast ratios
674
- </li>
675
- <li className="!text-white/70">
676
- Scales with user's font size preferences
677
- </li>
678
- </ul>
679
- </div>
680
-
681
- <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
682
- <h3 className="text-lg font-semibold !text-indigo-300">
683
- 💡 Best Practices
684
- </h3>
685
- <ul className="!space-y-2 text-sm text-white/70">
686
- <li className="!text-white/70">
687
- Always provide descriptive labels for search
688
- functionality
689
- </li>
690
- <li className="!text-white/70">
691
- Use consistent placement in search interfaces
692
- </li>
693
- <li className="!text-white/70">
694
- Ensure sufficient click/touch target sizes
695
- </li>
696
- <li className="!text-white/70">
697
- Add focus states for keyboard navigation
698
- </li>
699
- <li className="!text-white/70">
700
- Consider motion sensitivity for search animations
701
- </li>
702
- </ul>
703
- </div>
704
- </div>
705
-
706
- <div className="rounded-lg border border-white/10 bg-white/5 p-6">
707
- <h3 className="mb-4 text-lg font-semibold !text-purple-300">
708
- Custom Accessibility Implementation
709
- </h3>
710
- <div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
711
- {/* Code Example Block */}
712
- <div className="rounded-lg bg-black/40 p-4">
713
- <pre className="overflow-x-auto text-sm !text-cyan-300">
714
- {`// Filter toggle button with ARIA
715
- <button
716
- aria-label="Toggle filter panel"
717
- aria-pressed={filtersOpen}
718
- className="flex items-center gap-2 p-2"
719
- >
720
- <FilterBarRowIcon className="h-4 w-4" />
721
- <span className="sr-only">Open Filters</span>
722
- </button>
723
-
724
- // Filter group with description
725
- <fieldset aria-labelledby="filter-heading" className="space-y-2">
726
- <legend id="filter-heading" className="sr-only">Filter Options</legend>
727
- <div>
728
- <label className="inline-flex items-center gap-2">
729
- <input type="checkbox" aria-describedby="filter-desc" />
730
- Design
731
- </label>
732
- </div>
733
- <div>
734
- <label className="inline-flex items-center gap-2">
735
- <input type="checkbox" />
736
- Development
737
- </label>
738
- </div>
739
- </fieldset>
740
- <p id="filter-desc" className="sr-only">
741
- Choose one or more categories to filter the results
742
- </p>`}
743
- </pre>
744
- </div>
745
-
746
- {/* Accessibility Note */}
747
- <div className="!space-y-4">
748
- <p className="text-sm !text-white/70">
749
- When using <code>FilterBarRowIcon</code> for toggling or
750
- displaying filters, ensure ARIA labels clearly explain
751
- what will be shown or changed. Group filters with
752
- semantic roles for screen reader clarity.
753
- </p>
754
- <div className="rounded-lg border border-indigo-500/20 bg-indigo-500/10 p-4">
755
- <div className="flex items-center gap-2 text-sm text-indigo-200">
756
- <FilterBarRowIcon className="h-4 w-4" />
757
- <span>
758
- Use <code>aria-pressed</code> or{" "}
759
- <code>aria-expanded</code> for toggles and{" "}
760
- <code>legend</code>/<code>fieldset</code> for
761
- grouped filters.
762
- </span>
763
- </div>
764
- </div>
765
- </div>
766
- </div>
767
- </div>
768
- </div>
769
-
770
- {/* Related Icons */}
771
- <div className="!space-y-8">
772
- <h2 className="text-center text-3xl font-bold !text-white">
773
- Related Icons
774
- </h2>
775
- <div className="grid grid-cols-2 gap-6 md:grid-cols-4">
776
- <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
777
- <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-blue-500/20">
778
- <span className="text-2xl">🔍</span>
779
- </div>
780
- <div>
781
- <div className="font-medium text-white">SearchIcon</div>
782
- <div className="text-xs text-white/60">
783
- General search
784
- </div>
785
- </div>
786
- </div>
787
- <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
788
- <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-purple-500/20">
789
- <span className="text-2xl">📄</span>
790
- </div>
791
- <div>
792
- <div className="font-medium text-white">DocumentIcon</div>
793
- <div className="text-xs text-white/60">Document view</div>
794
- </div>
795
- </div>
796
- <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
797
- <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-cyan-500/20">
798
- <span className="text-2xl">🗂️</span>
799
- </div>
800
- <div>
801
- <div className="font-medium text-white">FolderIcon</div>
802
- <div className="text-xs text-white/60">File browsing</div>
803
- </div>
804
- </div>
805
- <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
806
- <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-green-500/20">
807
- <span className="text-2xl">🔎</span>
808
- </div>
809
- <div>
810
- <div className="font-medium text-white">FilterIcon</div>
811
- <div className="text-xs text-white/60">
812
- Content filtering
813
- </div>
814
- </div>
815
- </div>
816
- </div>
817
- </div>
818
- </div>
819
-
820
- {/* Footer */}
821
- <div className="border-t border-white/10 bg-black/20 backdrop-blur-xl">
822
- <div className="!mx-auto max-w-7xl px-6 py-8">
823
- <div className="!space-y-4 text-center">
824
- <p className="!text-white/60">
825
- FilterBarRowIcon is part of the Aural UI icon library, built
826
- for document search, content discovery, and page navigation
827
- functionality.
828
- </p>
829
- <p className="text-sm !text-white/40">
830
- All icons use Radix UI's AccessibleIcon for screen reader
831
- compatibility and follow WCAG guidelines for search
832
- interfaces.
833
- </p>
834
- </div>
835
- </div>
836
- </div>
837
- </div>
838
- </>
52
+ }`,
53
+ livePreview: (
54
+ <button className="flex items-center gap-2">
55
+ <FilterBarRowIcon className="text-fm-icon-active h-6 w-6" />
56
+ </button>
57
+ ),
58
+ }}
59
+ relatedIcons={[
60
+ {
61
+ name: "SearchIcon",
62
+ description: "Search / find icon",
63
+ icon: SearchIcon,
64
+ accentToken: "info",
65
+ },
66
+ {
67
+ name: "SettingIcon",
68
+ description: "Settings / preferences icon",
69
+ icon: SettingIcon,
70
+ accentToken: "positive",
71
+ },
72
+ {
73
+ name: "LayoutColumnIcon",
74
+ description: "Column layout icon",
75
+ icon: LayoutColumnIcon,
76
+ accentToken: "warning",
77
+ },
78
+ {
79
+ name: "ColumnWideAddIcon",
80
+ description: "Add wide column layout",
81
+ icon: ColumnWideAddIcon,
82
+ accentToken: "negative",
83
+ },
84
+ ]}
85
+ />
839
86
  ),
840
87
  },
841
88
  },
842
89
  tags: ["autodocs"],
843
90
  argTypes: {
844
- width: {
845
- control: { type: "range", min: 8, max: 96, step: 2 },
846
- description: "Width of the icon in pixels",
91
+ className: {
92
+ control: "text",
93
+ description: "CSS classes including color token",
847
94
  },
848
95
  withAccessibility: {
849
96
  control: "boolean",
850
- description: "Whether to wrap the icon with accessibility features",
851
- },
852
- height: {
853
- control: { type: "range", min: 8, max: 96, step: 2 },
854
- description: "Height of the icon in pixels",
855
- },
856
- stroke: {
857
- control: "color",
858
- description: "Stroke color of the icon lines",
859
- },
860
- strokeLinecap: {
861
- control: "select",
862
- options: ["butt", "round", "square"],
863
- description: "Style of line endings",
864
- },
865
- className: {
866
- control: "text",
867
- description: "CSS classes for styling (use for overrides)",
97
+ description: "Wrap with accessibility label",
868
98
  },
869
99
  },
870
100
  }
@@ -872,246 +102,85 @@ function FilterButton() {
872
102
  export default meta
873
103
  type Story = StoryObj<typeof FilterBarRowIcon>
874
104
 
875
- // Story parameters for consistent dark theme
876
- const storyParameters = {
877
- backgrounds: {
878
- default: "dark",
879
- values: [
880
- { name: "dark", value: "#0a0a0a" },
881
- { name: "darker", value: "#000000" },
882
- ],
883
- },
884
- }
885
-
886
105
  export const Default: Story = {
887
106
  args: {
888
- width: 24,
889
- height: 24,
890
- className: "text-indigo-400 ",
107
+ className: "h-6 w-6 text-fm-icon-active",
891
108
  withAccessibility: true,
892
109
  },
893
- parameters: storyParameters,
894
110
  render: (args) => (
895
- <div className="flex h-32 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
111
+ <IconDefaultCanvas>
896
112
  <FilterBarRowIcon {...args} />
897
- </div>
113
+ </IconDefaultCanvas>
898
114
  ),
899
115
  }
900
116
 
901
117
  export const SizeVariations: Story = {
902
- parameters: {
903
- ...storyParameters,
904
- docs: {
905
- description: {
906
- story:
907
- "FilterBarRowIcon in different sizes, from small search inputs to large interface elements.",
908
- },
909
- },
910
- },
911
- render: () => (
912
- <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">
913
- <div className="text-center">
914
- <FilterBarRowIcon className="!mx-auto mb-2 h-3 w-3 text-indigo-400" />
915
- <span className="text-xs text-white/60">12px</span>
916
- </div>
917
- <div className="text-center">
918
- <FilterBarRowIcon className="!mx-auto mb-2 h-4 w-4 text-indigo-400" />
919
- <span className="text-xs text-white/60">16px</span>
920
- </div>
921
- <div className="text-center">
922
- <FilterBarRowIcon className="!mx-auto mb-2 h-5 w-5 text-indigo-400" />
923
- <span className="text-xs text-white/60">20px</span>
924
- </div>
925
- <div className="text-center">
926
- <FilterBarRowIcon className="!mx-auto mb-2 h-6 w-6 text-indigo-400" />
927
- <span className="text-xs text-white/60">24px</span>
928
- </div>
929
- <div className="text-center">
930
- <FilterBarRowIcon className="!mx-auto mb-2 h-8 w-8 text-indigo-400" />
931
- <span className="text-xs text-white/60">32px</span>
932
- </div>
933
- <div className="text-center">
934
- <FilterBarRowIcon className="!mx-auto mb-2 h-12 w-12 text-indigo-400" />
935
- <span className="text-xs text-white/60">48px</span>
936
- </div>
937
- </div>
938
- ),
118
+ render: () => <IconSizeVariations icon={FilterBarRowIcon} />,
939
119
  }
940
120
 
941
121
  export const ColorVariations: Story = {
942
- parameters: {
943
- ...storyParameters,
944
- docs: {
945
- description: {
946
- story:
947
- "FilterBarRowIcon in different colors for various search states and contexts.",
948
- },
949
- },
950
- },
951
- render: () => (
952
- <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">
953
- <div className="text-center">
954
- <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">
955
- <FilterBarRowIcon className="h-8 w-8 text-indigo-400" />
956
- </div>
957
- <div className="text-sm font-medium text-white">Primary</div>
958
- <div className="text-xs text-indigo-400">text-indigo-400</div>
959
- </div>
960
- <div className="text-center">
961
- <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">
962
- <FilterBarRowIcon className="h-8 w-8 text-cyan-400" />
963
- </div>
964
- <div className="text-sm font-medium text-white">Active</div>
965
- <div className="text-xs text-cyan-400">text-cyan-400</div>
966
- </div>
967
- <div className="text-center">
968
- <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">
969
- <FilterBarRowIcon className="h-8 w-8 text-gray-400" />
970
- </div>
971
- <div className="text-sm font-medium text-white">Disabled</div>
972
- <div className="text-xs text-gray-400">text-gray-400</div>
973
- </div>
974
- <div className="text-center">
975
- <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">
976
- <FilterBarRowIcon className="h-8 w-8 text-blue-400" />
977
- </div>
978
- <div className="text-sm font-medium text-white">Info</div>
979
- <div className="text-xs text-blue-400">text-blue-400</div>
980
- </div>
981
- </div>
982
- ),
122
+ render: () => <IconColorVariations icon={FilterBarRowIcon} />,
983
123
  }
984
124
 
985
125
  export const UsageExamples: Story = {
986
- parameters: {
987
- ...storyParameters,
988
- docs: {
989
- description: {
990
- story:
991
- "Real-world usage examples showing FilterBarRowIcon used in contexts like note-taking, editing annotations, and document preparation interfaces.",
992
- },
993
- },
994
- },
995
126
  render: () => (
996
- <div className="min-h-dvh !space-y-8 rounded-lg bg-gradient-to-br from-gray-900 to-gray-800 p-8">
997
- {/* Note Editor Toolbar */}
998
- <div className="!space-y-2">
999
- <h3 className="text-sm font-medium text-white">Note Editor Toolbar</h3>
1000
- <div className="flex gap-4">
1001
- <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">
1002
- <FilterBarRowIcon className="h-4 w-4" />
1003
- New Note
1004
- </button>
1005
- <button className="flex items-center gap-2 rounded-lg border border-green-500/30 bg-green-500/20 px-4 py-2 text-green-200 transition-colors hover:bg-green-500/30">
1006
- <FilterBarRowIcon className="h-4 w-4" />
1007
- Edit Note
1008
- </button>
127
+ <IconUsageCanvas>
128
+ <IconUsageSection title="Filter Bar">
129
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary flex w-full max-w-sm items-center gap-2 rounded-xl border px-4 py-2">
130
+ <SearchIcon className="text-fm-icon-inactive h-4 w-4" />
131
+ <span className="text-fm-tertiary font-fm-text flex-1 text-sm">
132
+ Search stories...
133
+ </span>
134
+ <FilterBarRowIcon className="text-fm-icon-active h-4 w-4" />
1009
135
  </div>
1010
- </div>
1011
-
1012
- {/* Recent Notes List */}
1013
- <div className="!space-y-2">
1014
- <h3 className="text-sm font-medium text-white">Recent Notes</h3>
1015
- <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4">
1016
- {[
1017
- { title: "Meeting Notes", date: "Jun 25, 2025" },
1018
- { title: "Weekly Plan", date: "Jun 23, 2025" },
1019
- { title: "Project Draft", date: "Jun 20, 2025" },
1020
- ].map((note, index) => (
1021
- <div
1022
- key={index}
1023
- className="flex items-center gap-3 rounded border border-white/10 bg-white/5 p-3"
1024
- >
1025
- <FilterBarRowIcon className="h-5 w-5 text-indigo-400" />
1026
- <div className="flex-1">
1027
- <div className="text-sm font-medium text-white">
1028
- {note.title}
1029
- </div>
1030
- <div className="text-xs text-white/60">{note.date}</div>
136
+ </IconUsageSection>
137
+
138
+ <IconUsageSection title="Active Filters">
139
+ <div className="flex flex-wrap gap-2">
140
+ {["Genre: Drama", "Language: Hindi", "Duration: Short"].map(
141
+ (label) => (
142
+ <div
143
+ key={label}
144
+ className="border-fm-divider-secondary bg-fm-surface-secondary flex items-center gap-1.5 rounded-xl border px-3 py-1.5"
145
+ >
146
+ <FilterBarRowIcon className="text-fm-icon-active h-3 w-3" />
147
+ <span className="text-fm-primary font-fm-text text-xs">
148
+ {label}
149
+ </span>
1031
150
  </div>
1032
- </div>
1033
- ))}
151
+ )
152
+ )}
1034
153
  </div>
1035
- </div>
1036
-
1037
- {/* Annotate / Comment Actions */}
1038
- <div className="!space-y-2">
1039
- <h3 className="text-sm font-medium text-white">Annotation Actions</h3>
1040
- <div className="flex gap-4">
1041
- <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">
1042
- <FilterBarRowIcon className="h-4 w-4" />
1043
- Add Comment
1044
- </button>
1045
- <button className="flex items-center gap-2 rounded-lg border border-pink-500/30 bg-pink-500/20 px-4 py-2 text-pink-200 transition-colors hover:bg-pink-500/30">
1046
- <FilterBarRowIcon className="h-4 w-4" />
1047
- Annotate Page
1048
- </button>
1049
- </div>
1050
- </div>
1051
- </div>
1052
- ),
1053
- }
1054
-
1055
- export const InteractiveStates: Story = {
1056
- parameters: {
1057
- ...storyParameters,
1058
- docs: {
1059
- description: {
1060
- story:
1061
- "Interactive states showing hover effects, animations, and different search states.",
1062
- },
1063
- },
1064
- },
1065
- render: () => (
1066
- <div className="min-h-dvh !space-y-8 rounded-lg bg-gradient-to-br from-gray-900 to-gray-800 p-8">
1067
- <div className="!space-y-4">
1068
- <h3 className="text-sm font-medium text-white/70">
1069
- Hover & Animation Effects
1070
- </h3>
1071
- <div className="flex gap-8">
1072
- <div className="flex flex-col items-center gap-2">
1073
- <FilterBarRowIcon className="h-8 w-8 text-white/60 transition-colors hover:text-indigo-400" />
1074
- <span className="text-xs text-white/60">Color Change</span>
1075
- </div>
1076
- <div className="flex flex-col items-center gap-2">
1077
- <FilterBarRowIcon className="h-8 w-8 text-white transition-transform hover:scale-110" />
1078
- <span className="text-xs text-white/60">Scale Up</span>
1079
- </div>
1080
- <div className="flex flex-col items-center gap-2">
1081
- <FilterBarRowIcon className="animate-search-pulse h-8 w-8 text-indigo-400" />
1082
- <span className="text-xs text-white/60">Search Pulse</span>
1083
- </div>
1084
- <div className="flex flex-col items-center gap-2">
1085
- <FilterBarRowIcon className="animate-document-slide h-8 w-8 text-cyan-400" />
1086
- <span className="text-xs text-white/60">Document Slide</span>
1087
- </div>
154
+ </IconUsageSection>
155
+
156
+ <IconUsageSection title="Toolbar Actions">
157
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary flex items-center gap-1 rounded-xl border p-1">
158
+ {[SearchIcon, FilterBarRowIcon, SettingIcon, LayoutColumnIcon].map(
159
+ (Icon, i) => (
160
+ <button
161
+ key={i}
162
+ className={`flex h-8 w-8 items-center justify-center rounded-lg ${i === 1 ? "bg-fm-surface-primary" : ""}`}
163
+ >
164
+ <Icon
165
+ className={`h-4 w-4 ${i === 1 ? "text-fm-icon-active" : "text-fm-icon-inactive"}`}
166
+ />
167
+ </button>
168
+ )
169
+ )}
1088
170
  </div>
1089
- </div>
1090
- </div>
171
+ </IconUsageSection>
172
+ </IconUsageCanvas>
1091
173
  ),
1092
174
  }
1093
175
 
1094
176
  export const Playground: Story = {
1095
- parameters: {
1096
- ...storyParameters,
1097
- docs: {
1098
- description: {
1099
- story:
1100
- "Interactive playground to experiment with different FilterBarRowIcon configurations.",
1101
- },
1102
- },
1103
- },
1104
177
  args: {
1105
- width: 32,
1106
- height: 32,
1107
- className: "text-indigo-400 ",
1108
- strokeLinecap: "square",
178
+ className: "h-8 w-8 text-fm-icon-active",
179
+ withAccessibility: true,
1109
180
  },
1110
181
  render: (args) => (
1111
- <div className="flex h-64 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
1112
- <div className="rounded-lg border border-white/10 bg-white/5 p-8">
1113
- <FilterBarRowIcon {...args} />
1114
- </div>
1115
- </div>
182
+ <IconPlaygroundCanvas>
183
+ <FilterBarRowIcon {...args} />
184
+ </IconPlaygroundCanvas>
1116
185
  ),
1117
186
  }