aural-ui 3.0.6 → 4.0.1

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 (169) hide show
  1. package/dist/components/aspect-ratio/AspectRatio.stories.tsx +271 -242
  2. package/dist/components/avatar/Avatar.stories.tsx +84 -70
  3. package/dist/components/button/Button.stories.tsx +7 -7
  4. package/dist/components/button/index.tsx +7 -7
  5. package/dist/components/card/Card.stories.tsx +3 -3
  6. package/dist/components/char-count/CharCount.stories.tsx +9 -9
  7. package/dist/components/circular-loader/CircularLoader.stories.tsx +109 -93
  8. package/dist/components/clamp-lines/ClampLines.stories.tsx +25 -0
  9. package/dist/components/clamp-lines/index.tsx +6 -1
  10. package/dist/components/collapsible/Collapsible.stories.tsx +1 -1
  11. package/dist/components/command/Command.stories.tsx +52 -38
  12. package/dist/components/dialog/Dialog.stories.tsx +89 -84
  13. package/dist/components/divider/Divider.stories.tsx +86 -60
  14. package/dist/components/dot-loader/DotLoader.stories.tsx +12 -12
  15. package/dist/components/drawer/Drawer.stories.tsx +74 -44
  16. package/dist/components/drawer/index.tsx +3 -3
  17. package/dist/components/dropdown/Dropdown.stories.tsx +42 -32
  18. package/dist/components/helper-text/HelperText.stories.tsx +2 -2
  19. package/dist/components/hover-card/HoverCard.stories.tsx +211 -178
  20. package/dist/components/input/Input.stories.tsx +2 -2
  21. package/dist/components/input/index.tsx +2 -0
  22. package/dist/components/label/Label.stories.tsx +10 -10
  23. package/dist/components/list/List.stories.tsx +58 -44
  24. package/dist/components/marquee/Marquee.stories.tsx +131 -113
  25. package/dist/components/otp-inputs/OtpInputs.stories.tsx +47 -35
  26. package/dist/components/overlay/Overlay.stories.tsx +98 -92
  27. package/dist/components/overlay/index.tsx +4 -4
  28. package/dist/components/popover/Popover.stories.tsx +132 -106
  29. package/dist/components/radio/Radio.stories.tsx +2 -2
  30. package/dist/components/resizable/Resizable.stories.tsx +186 -138
  31. package/dist/components/scroll-area/ScrollArea.stories.tsx +174 -120
  32. package/dist/components/search/Search.stories.tsx +81 -59
  33. package/dist/components/select/Select.stories.tsx +3 -1
  34. package/dist/components/sheet/Sheet.stories.tsx +68 -54
  35. package/dist/components/slider/Slider.stories.tsx +71 -47
  36. package/dist/components/stepper/Stepper.stories.tsx +16 -16
  37. package/dist/components/switch/Switch.stories.tsx +12 -12
  38. package/dist/components/table/Table.stories.tsx +8 -6
  39. package/dist/components/tabs/Tabs.stories.tsx +324 -268
  40. package/dist/components/textarea/TextArea.stories.tsx +1 -1
  41. package/dist/components/thumbnail-tags/ThumbnailTags.stories.tsx +16 -10
  42. package/dist/components/toast/Toast.stories.tsx +51 -45
  43. package/dist/components/toggle/Toggle.stories.tsx +111 -89
  44. package/dist/components/tooltip/Tooltip.stories.tsx +160 -144
  45. package/dist/icons/Icons.stories.tsx +2 -2
  46. package/dist/icons/ai-avatar-icon/AiAvatarIcon.stories.tsx +287 -237
  47. package/dist/icons/alert-icon/AlertIcon.stories.tsx +290 -248
  48. package/dist/icons/all-icons.tsx +97 -81
  49. package/dist/icons/angle-down-icon/AngleDownIcon.stories.tsx +312 -270
  50. package/dist/icons/apple-logo-icon/AppleLogoIcon.stories.tsx +294 -244
  51. package/dist/icons/arrow-box-left-icon/ArrowBoxLeftIcon.stories.tsx +309 -279
  52. package/dist/icons/arrow-corner-up-left-icon/ArrowCornerUpLeftIcon.stories.tsx +294 -258
  53. package/dist/icons/arrow-corner-up-right-icon/ArrowCornerUpRightIcon.stories.tsx +289 -255
  54. package/dist/icons/arrow-left-icon/ArrowLeftIcon.stories.tsx +288 -256
  55. package/dist/icons/arrow-right-icon/ArrowRightIcon.stories.tsx +322 -288
  56. package/dist/icons/arrow-right-up-icon/ArrowRightUpIcon.stories.tsx +340 -296
  57. package/dist/icons/art-board-icon/ArtBoardIcon.stories.tsx +197 -177
  58. package/dist/icons/audio-bar-icon/AudioBarIcon.stories.tsx +390 -328
  59. package/dist/icons/backward-ten-seconds-icon/BackwardTenSecondsIcon.stories.tsx +313 -277
  60. package/dist/icons/bubble-check-icon/BubbleCheckIcon.stories.tsx +367 -309
  61. package/dist/icons/bubble-crossed-icon/BubbleCrossedIcon.stories.tsx +356 -308
  62. package/dist/icons/bubble-sparkle-icon/BubbleSparkleIcon.stories.tsx +280 -234
  63. package/dist/icons/camera-icon/CameraIcon.stories.tsx +370 -326
  64. package/dist/icons/capital-a-letter-icon/CapitalALetterIcon.stories.tsx +300 -256
  65. package/dist/icons/chevron-double-left-icon/ChevronDoubleLeftIcon.stories.tsx +298 -262
  66. package/dist/icons/chevron-double-right-icon/ChevronDoubleRightIcon.stories.tsx +294 -260
  67. package/dist/icons/chevron-down-icon/ChevronDownIcon.stories.tsx +291 -259
  68. package/dist/icons/chevron-left-icon/ChevronLeftIcon.stories.tsx +286 -256
  69. package/dist/icons/chevron-right-icon/ChevronRightIcon.stories.tsx +282 -256
  70. package/dist/icons/chevron-up-icon/ChevronUpIcon.stories.tsx +292 -256
  71. package/dist/icons/circle-tick-icon/CircleTickIcon.stories.tsx +338 -290
  72. package/dist/icons/circular-play-icon/CircularPlayIcon.stories.tsx +167 -148
  73. package/dist/icons/coin-icon/CoinIcon.stories.tsx +342 -296
  74. package/dist/icons/coin-toons-icon/CoinToonsIcon.stories.tsx +342 -296
  75. package/dist/icons/column-wide-add-icon/ColumnWideAddIcon.stories.tsx +280 -238
  76. package/dist/icons/command-icon/CommandIcon.stories.tsx +328 -280
  77. package/dist/icons/copy-icon/CopyIcon.stories.tsx +294 -256
  78. package/dist/icons/cross-circle-icon/CrossCircleIcon.stories.tsx +285 -235
  79. package/dist/icons/cross-icon/CrossIcon.stories.tsx +308 -266
  80. package/dist/icons/download-icon/DownloadIcon.stories.tsx +271 -231
  81. package/dist/icons/edit-big-icon/EditBigIcon.stories.tsx +330 -278
  82. package/dist/icons/email-icon/EmailIcon.stories.tsx +303 -257
  83. package/dist/icons/expand-icon/ExpandIcon.stories.tsx +324 -286
  84. package/dist/icons/eye-close-icon/EyeCloseIcon.stories.tsx +317 -271
  85. package/dist/icons/eye-open-icon/EyeOpenIcon.stories.tsx +320 -272
  86. package/dist/icons/feature-shine-icon/FeatureShineIcon.stories.tsx +322 -280
  87. package/dist/icons/file-chart-icon/FileChartIcon.stories.tsx +315 -277
  88. package/dist/icons/file-text-icon/FileTextIcon.stories.tsx +199 -177
  89. package/dist/icons/filter-bar-row-icon/FilterBarRowIcon.stories.tsx +304 -264
  90. package/dist/icons/forward-ten-seconds-icon/ForwardTenSecondsIcon.stories.tsx +311 -277
  91. package/dist/icons/git-branch-icon/GitBranchIcon.stories.tsx +327 -287
  92. package/dist/icons/git-fork-icon/GitForkIcon.stories.tsx +314 -278
  93. package/dist/icons/globe-icon/GlobeIcon.stories.tsx +113 -98
  94. package/dist/icons/google-logo-icon/GoogleLogoIcon.stories.tsx +274 -226
  95. package/dist/icons/grip-vertical-icon/GripVerticalIcon.stories.tsx +349 -303
  96. package/dist/icons/head-icon/HeadIcon.stories.tsx +286 -246
  97. package/dist/icons/heart-icon/HeartIcon.stories.tsx +312 -268
  98. package/dist/icons/image-avatar-sparkle-icon/ImageAvatarSparkleIcon.stories.tsx +246 -210
  99. package/dist/icons/image-icon/ImageIcon.stories.tsx +330 -284
  100. package/dist/icons/import-folder-icon/ImportFolderIcon.stories.tsx +326 -282
  101. package/dist/icons/import-left-arrow-folder-icon/ImportLeftArrowFolderIcon.stories.tsx +330 -294
  102. package/dist/icons/indian-flag-icon/IndianFlagIcon.stories.tsx +288 -234
  103. package/dist/icons/instagram-icon/InstagramIcon.stories.tsx +386 -330
  104. package/dist/icons/layout-column-icon/LayoutColumnIcon.stories.tsx +305 -263
  105. package/dist/icons/layout-left-icon/LayoutLeftIcon.stories.tsx +295 -259
  106. package/dist/icons/layout-right-icon/LayoutRightIcon.stories.tsx +296 -256
  107. package/dist/icons/light-bulb-simple-icon/LightBulbSimpleIcon.stories.tsx +322 -282
  108. package/dist/icons/linked-in-icon/LinkedInIcon.stories.tsx +399 -359
  109. package/dist/icons/magic-book-icon/MagicBookIcon.stories.tsx +314 -272
  110. package/dist/icons/magic-edit-icon/MagicEditIcon.stories.tsx +238 -206
  111. package/dist/icons/maintenance-icon/MaintenanceIcon.stories.tsx +322 -276
  112. package/dist/icons/message-icon/MessageIcon.stories.tsx +192 -170
  113. package/dist/icons/minimize-icon/MinimizeIcon.stories.tsx +348 -304
  114. package/dist/icons/moon-icon/MoonIcon.stories.tsx +191 -167
  115. package/dist/icons/move-horizontal-icon/MoveHorizontalIcon.stories.tsx +380 -326
  116. package/dist/icons/move-vertical-icon/MoveVerticalIcon.stories.tsx +345 -291
  117. package/dist/icons/musical-note-icon/MusicalNoteIcon.stories.tsx +310 -266
  118. package/dist/icons/notepad-icon/NotepadIcon.stories.tsx +311 -271
  119. package/dist/icons/notes-icon/NotesIcon.stories.tsx +311 -271
  120. package/dist/icons/page-search-icon/PageSearchIcon.stories.tsx +309 -271
  121. package/dist/icons/page-text-icon/PageTextIcon.stories.tsx +248 -210
  122. package/dist/icons/paint-roll-icon/PaintRollIcon.stories.tsx +310 -262
  123. package/dist/icons/paper-plane-icon/PaperPlaneIcon.stories.tsx +274 -236
  124. package/dist/icons/pause-icon/PauseIcon.stories.tsx +324 -280
  125. package/dist/icons/pencil-icon/PencilIcon.stories.tsx +323 -281
  126. package/dist/icons/phone-icon/PhoneIcon.stories.tsx +288 -240
  127. package/dist/icons/plus-icon/PlusIcon.stories.tsx +315 -273
  128. package/dist/icons/pocket-studio-icon/PocketStudioIcon.stories.tsx +278 -234
  129. package/dist/icons/scroll-down-icon/ScrollDownIcon.stories.tsx +161 -151
  130. package/dist/icons/search-icon/SearchIcon.stories.tsx +324 -284
  131. package/dist/icons/setting-icon/SettingIcon.stories.tsx +306 -264
  132. package/dist/icons/share-icon/ShareIcon.stories.tsx +314 -272
  133. package/dist/icons/shield-icon/ShieldIcon.stories.tsx +281 -235
  134. package/dist/icons/site-logo-icon/SiteLogoIcon.stories.tsx +309 -250
  135. package/dist/icons/skip-backward-icon/SkipBackwardIcon.stories.tsx +317 -279
  136. package/dist/icons/skip-forward-icon/SkipForwardIcon.stories.tsx +315 -279
  137. package/dist/icons/sparkles-soft-icon/SparklesSoftIcon.stories.tsx +299 -253
  138. package/dist/icons/spinner-gradient-icon/SpinnerGradientIcon.stories.tsx +185 -169
  139. package/dist/icons/spinner-gradient-icon/index.tsx +6 -1
  140. package/dist/icons/spinner-solid-icon/SpinnerSolidIcon.stories.tsx +192 -168
  141. package/dist/icons/spinner-solid-icon/index.tsx +6 -1
  142. package/dist/icons/spinner-solid-neutral-icon/SpinnerSolidINeutralcon.stories.tsx +212 -178
  143. package/dist/icons/spinner-solid-neutral-icon/index.tsx +1 -1
  144. package/dist/icons/star-icon/StarIcon.stories.tsx +290 -244
  145. package/dist/icons/store-coin-icon/StoreCoinIcon.stories.tsx +286 -234
  146. package/dist/icons/suggestion-icon/SuggestionIcon.stories.tsx +272 -230
  147. package/dist/icons/sun-icon/SunIcon.stories.tsx +262 -226
  148. package/dist/icons/text-color-icon/TextColorIcon.stories.tsx +321 -279
  149. package/dist/icons/text-indicator-icon/TextIndicatorIcon.stories.tsx +332 -282
  150. package/dist/icons/threads-icon/ThreadsIcon.stories.tsx +394 -342
  151. package/dist/icons/tick-circle-icon/TickCircleIcon.stories.tsx +338 -290
  152. package/dist/icons/tick-icon/TickIcon.stories.tsx +364 -315
  153. package/dist/icons/trash-icon/TrashIcon.stories.tsx +293 -253
  154. package/dist/icons/twitter-x-icon/TwitterXIcon.stories.tsx +396 -338
  155. package/dist/icons/upload-icon/UploadIcon.stories.tsx +291 -247
  156. package/dist/icons/vertical-menu-icon/VerticalMenuIcon.stories.tsx +309 -271
  157. package/dist/icons/video-play-list-icon/VideoPlaylistIcon.stories.tsx +336 -290
  158. package/dist/icons/voice-playing-icon/VoicePlayingIcon.stories.tsx +382 -334
  159. package/dist/icons/volume-full-icon/VolumeFullIcon.stories.tsx +349 -305
  160. package/dist/icons/volume-half-icon/VolumeHalfIcon.stories.tsx +327 -295
  161. package/dist/icons/volume-off-icon/VolumeOffIcon.stories.tsx +336 -296
  162. package/dist/icons/warning-icon/WarningIcon.stories.tsx +314 -274
  163. package/dist/icons/youtube-icon/YoutubeIcon.stories.tsx +311 -261
  164. package/dist/index.cjs +84 -84
  165. package/dist/index.js +84 -84
  166. package/dist/styles/aural-all-theme.css +1222 -0
  167. package/dist/styles/{aural-theme.css → aural-dark-theme.css} +15 -3
  168. package/dist/styles/aural-light-theme.css +1047 -0
  169. package/package.json +1 -1
@@ -12,9 +12,9 @@ const meta: Meta<typeof SpinnerSolidNeutralIcon> = {
12
12
  backgrounds: {
13
13
  default: "dark",
14
14
  values: [
15
- { name: "dark", value: "#0a0a0a" },
16
- { name: "darker", value: "#000000" },
17
- { name: "light", value: "#ffffff" },
15
+ { name: "dark", value: "var(--color-fm-surface-primary)" },
16
+ { name: "darker", value: "var(--color-fm-neutral-0)" },
17
+ { name: "light", value: "var(--color-fm-neutral-1100)" },
18
18
  ],
19
19
  },
20
20
  docs: {
@@ -41,42 +41,42 @@ const meta: Meta<typeof SpinnerSolidNeutralIcon> = {
41
41
  background: transparent !important;
42
42
  }
43
43
  body {
44
- background: #0a0a0a !important;
44
+ background: var(--color-fm-surface-primary) !important;
45
45
  }
46
46
  #storybook-docs {
47
- background: #0a0a0a !important;
47
+ background: var(--color-fm-surface-primary) !important;
48
48
  }
49
49
  .sbdocs-preview {
50
50
  background: transparent !important;
51
51
  border: none !important;
52
52
  }
53
53
  .sbdocs-h1, .sbdocs-h2, .sbdocs-h3, .sbdocs-h4, .sbdocs-h5, .sbdocs-h6 {
54
- color: white !important;
54
+ color: var(--color-fm-icon-active) !important;
55
55
  }
56
56
  .sbdocs-p, .sbdocs-li {
57
- color: rgba(255, 255, 255, 0.7) !important;
57
+ color: var(--color-fm-secondary) !important;
58
58
  }
59
59
  .sbdocs-code {
60
- background: rgba(255, 255, 255, 0.1) !important;
61
- color: rgba(168, 85, 247, 1) !important;
62
- border: 1px solid rgba(255, 255, 255, 0.1) !important;
60
+ background: var(--color-fm-surface-secondary) !important;
61
+ color: var(--color-fm-secondary-500) !important;
62
+ border: 1px solid var(--color-fm-divider-secondary) !important;
63
63
  }
64
64
  .sbdocs-pre {
65
- background: rgba(0, 0, 0, 0.4) !important;
66
- border: 1px solid rgba(255, 255, 255, 0.1) !important;
65
+ background: var(--color-fm-surface-secondary) !important;
66
+ border: 1px solid var(--color-fm-divider-secondary) !important;
67
67
  }
68
68
  .sbdocs-table {
69
- background: rgba(255, 255, 255, 0.05) !important;
70
- border: 1px solid rgba(255, 255, 255, 0.1) !important;
69
+ background: var(--color-fm-surface-secondary) !important;
70
+ border: 1px solid var(--color-fm-divider-secondary) !important;
71
71
  }
72
72
  .sbdocs-table th {
73
- background: rgba(255, 255, 255, 0.05) !important;
74
- color: white !important;
75
- border-bottom: 1px solid rgba(255, 255, 255, 0.1) !important;
73
+ background: var(--color-fm-surface-secondary) !important;
74
+ color: var(--color-fm-icon-active) !important;
75
+ border-bottom: 1px solid var(--color-fm-divider-secondary) !important;
76
76
  }
77
77
  .sbdocs-table td {
78
- color: rgba(255, 255, 255, 0.7) !important;
79
- border-bottom: 1px solid rgba(255, 255, 255, 0.05) !important;
78
+ color: var(--color-fm-secondary) !important;
79
+ border-bottom: 1px solid var(--color-fm-divider-tertiary) !important;
80
80
  }
81
81
  @keyframes spin-neutral {
82
82
  from { transform: rotate(0deg); }
@@ -102,17 +102,19 @@ const meta: Meta<typeof SpinnerSolidNeutralIcon> = {
102
102
  `}
103
103
  </style>
104
104
 
105
- <div className="min-h-screen bg-gradient-to-br from-gray-900 via-neutral-900/20 to-gray-900">
105
+ <div className="from-fm-surface-primary via-fm-surface-primary/20 to-fm-surface-primary min-h-screen bg-linear-to-br">
106
106
  {/* Header */}
107
- <div className="relative overflow-hidden border-b border-white/10 bg-black/20 backdrop-blur-xl">
108
- <div className="absolute inset-0 bg-gradient-to-r from-neutral-500/10 via-transparent to-gray-500/10" />
107
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary relative overflow-hidden border-b backdrop-blur-xl">
108
+ <div className="from-fm-surface-secondary/10 to-fm-surface-tertiary/10 absolute inset-0 bg-linear-to-r via-transparent" />
109
109
  <div className="relative !mx-auto max-w-7xl px-6 py-16">
110
110
  <div className="!space-y-6 text-center">
111
- <div className="!mx-auto flex h-24 w-24 items-center justify-center rounded-2xl border border-neutral-500/30 bg-gradient-to-br from-neutral-500/20 to-gray-500/20">
111
+ <div className="border-fm-divider-primary from-fm-surface-secondary/20 to-fm-surface-tertiary/20 !mx-auto flex h-24 w-24 items-center justify-center rounded-2xl border bg-linear-to-br">
112
112
  <SpinnerSolidNeutralIcon className="h-12 w-12" />
113
113
  </div>
114
- <h1 className="!text-white">SpinnerSolidNeutralIcon</h1>
115
- <p className="!mx-auto max-w-3xl text-xl leading-relaxed !text-white">
114
+ <h1 className="text-fm-icon-active!">
115
+ SpinnerSolidNeutralIcon
116
+ </h1>
117
+ <p className="text-fm-icon-active! !mx-auto max-w-3xl text-xl leading-relaxed">
116
118
  A neutral-themed spinner icon with gradient styling for
117
119
  loading states, asynchronous actions, and content
118
120
  transitions. Features a sophisticated conic gradient design
@@ -122,26 +124,28 @@ const meta: Meta<typeof SpinnerSolidNeutralIcon> = {
122
124
  {/* Stats */}
123
125
  <div className="flex items-center justify-center gap-8 pt-8">
124
126
  <div className="text-center">
125
- <div className="text-3xl font-bold text-neutral-300">
127
+ <div className="text-fm-secondary text-3xl font-bold">
126
128
  Gradient
127
129
  </div>
128
- <div className="text-sm text-white/80">Conic Design</div>
130
+ <div className="text-fm-icon-active/80 text-sm">
131
+ Conic Design
132
+ </div>
129
133
  </div>
130
- <div className="h-8 w-px bg-white/20" />
134
+ <div className="bg-fm-divider-primary h-8 w-px" />
131
135
  <div className="text-center">
132
- <div className="text-3xl font-bold text-gray-300">
136
+ <div className="text-fm-secondary text-3xl font-bold">
133
137
  Neutral
134
138
  </div>
135
- <div className="text-sm text-white/80">
139
+ <div className="text-fm-icon-active/80 text-sm">
136
140
  Theme Agnostic
137
141
  </div>
138
142
  </div>
139
- <div className="h-8 w-px bg-white/20" />
143
+ <div className="bg-fm-divider-primary h-8 w-px" />
140
144
  <div className="text-center">
141
- <div className="text-3xl font-bold text-white">
145
+ <div className="text-fm-icon-active text-3xl font-bold">
142
146
  Accessible
143
147
  </div>
144
- <div className="text-sm text-white/80">
148
+ <div className="text-fm-icon-active/80 text-sm">
145
149
  Screen Reader Ready
146
150
  </div>
147
151
  </div>
@@ -154,35 +158,35 @@ const meta: Meta<typeof SpinnerSolidNeutralIcon> = {
154
158
  <div className="!mx-auto max-w-7xl !space-y-16 px-6 py-12">
155
159
  {/* Features */}
156
160
  <div className="!space-y-8">
157
- <h3 className="text-center text-2xl font-bold !text-white">
161
+ <h3 className="text-fm-icon-active! text-center text-2xl font-bold">
158
162
  Key Features
159
163
  </h3>
160
164
  <div className="grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3">
161
- <div className="space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
165
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary space-y-4 rounded-lg border p-6">
162
166
  <div className="text-3xl">🌀</div>
163
- <h4 className="text-lg font-semibold !text-white">
167
+ <h4 className="text-fm-icon-active! text-lg font-semibold">
164
168
  Gradient Design
165
169
  </h4>
166
- <p className="text-sm !text-white/80">
170
+ <p className="text-fm-icon-active!/80 text-sm">
167
171
  Sophisticated conic gradient that creates smooth visual
168
172
  motion
169
173
  </p>
170
174
  </div>
171
- <div className="space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
175
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary space-y-4 rounded-lg border p-6">
172
176
  <div className="text-3xl">⚪</div>
173
- <h4 className="text-lg font-semibold !text-white">
177
+ <h4 className="text-fm-icon-active! text-lg font-semibold">
174
178
  Neutral Theme
175
179
  </h4>
176
- <p className="text-sm !text-white/80">
180
+ <p className="text-fm-icon-active!/80 text-sm">
177
181
  Works seamlessly with any color scheme or design system
178
182
  </p>
179
183
  </div>
180
- <div className="space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
184
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary space-y-4 rounded-lg border p-6">
181
185
  <div className="text-3xl">♿</div>
182
- <h4 className="text-lg font-semibold !text-white">
186
+ <h4 className="text-fm-icon-active! text-lg font-semibold">
183
187
  Accessibility
184
188
  </h4>
185
- <p className="text-sm !text-white/80">
189
+ <p className="text-fm-icon-active!/80 text-sm">
186
190
  Built with Radix UI's AccessibleIcon for screen reader
187
191
  support
188
192
  </p>
@@ -192,17 +196,17 @@ const meta: Meta<typeof SpinnerSolidNeutralIcon> = {
192
196
 
193
197
  {/* API Reference */}
194
198
  <div className="!space-y-8">
195
- <h3 className="text-center text-2xl font-bold !text-white">
199
+ <h3 className="text-fm-icon-active! text-center text-2xl font-bold">
196
200
  API Reference
197
201
  </h3>
198
202
 
199
203
  {/* Component Signature */}
200
- <div className="rounded-lg border border-white/10 bg-white/5 p-6">
201
- <h4 className="mb-4 text-lg font-semibold !text-neutral-300">
204
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
205
+ <h4 className="text-fm-secondary! mb-4 text-lg font-semibold">
202
206
  Component Signature
203
207
  </h4>
204
- <div className="rounded-lg bg-black/40 p-4">
205
- <pre className="text-sm !text-green-300">
208
+ <div className="bg-fm-surface-secondary rounded-lg p-4">
209
+ <pre className="text-fm-icon-positive! text-sm">
206
210
  {`import { SpinnerSolidNeutralIcon } from "@/ui/icons/spinner-solid-neutral-icon"
207
211
 
208
212
  <SpinnerSolidNeutralIcon className="h-6 w-6 animate-spin" />`}
@@ -211,64 +215,70 @@ const meta: Meta<typeof SpinnerSolidNeutralIcon> = {
211
215
  </div>
212
216
 
213
217
  {/* Props Table */}
214
- <div className="overflow-hidden rounded-lg border border-white/10 bg-white/5">
215
- <div className="bg-white/5 p-4">
216
- <h3 className="text-xl font-semibold !text-white">Props</h3>
218
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary overflow-hidden rounded-lg border">
219
+ <div className="bg-fm-surface-secondary p-4">
220
+ <h3 className="text-fm-icon-active! text-xl font-semibold">
221
+ Props
222
+ </h3>
217
223
  </div>
218
224
  <table className="!my-0 w-full">
219
- <thead className="bg-white/5">
220
- <tr className="border-b border-white/10">
221
- <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
225
+ <thead className="bg-fm-surface-secondary">
226
+ <tr className="border-fm-divider-secondary border-b">
227
+ <th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
222
228
  Prop
223
229
  </th>
224
- <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
230
+ <th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
225
231
  Type
226
232
  </th>
227
- <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
233
+ <th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
228
234
  Default
229
235
  </th>
230
- <th className="px-6 py-4 text-left text-sm font-semibold !text-white">
236
+ <th className="text-fm-icon-active! px-6 py-4 text-left text-sm font-semibold">
231
237
  Description
232
238
  </th>
233
239
  </tr>
234
240
  </thead>
235
241
  <tbody>
236
242
  {" "}
237
- <tr className="!bg-black/10">
238
- <td className="px-6 py-4 font-mono text-sm !text-blue-300">
243
+ <tr className="bg-fm-surface-secondary!">
244
+ <td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
239
245
  withAccessibility
240
246
  </td>
241
- <td className="px-6 py-4 text-sm !text-white/70">
247
+ <td className="text-fm-secondary! px-6 py-4 text-sm">
242
248
  boolean
243
249
  </td>
244
- <td className="px-6 py-4 text-sm !text-white/50">
250
+ <td className="text-fm-placeholder! px-6 py-4 text-sm">
245
251
  true
246
252
  </td>
247
- <td className="px-6 py-4 text-sm !text-white/70">
253
+ <td className="text-fm-secondary! px-6 py-4 text-sm">
248
254
  Whether to wrap the icon with accessibility feature
249
255
  </td>
250
256
  </tr>
251
- <tr className="border-b border-white/5 !bg-black/10">
252
- <td className="px-6 py-4 font-mono text-sm !text-indigo-300">
257
+ <tr className="border-fm-divider-tertiary bg-fm-surface-secondary! border-b">
258
+ <td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
253
259
  height
254
260
  </td>
255
- <td className="px-6 py-4 text-sm !text-white/70">
261
+ <td className="text-fm-secondary! px-6 py-4 text-sm">
256
262
  number | string
257
263
  </td>
258
- <td className="px-6 py-4 text-sm !text-white/50">64</td>
259
- <td className="px-6 py-4 text-sm !text-white/70">
264
+ <td className="text-fm-placeholder! px-6 py-4 text-sm">
265
+ 64
266
+ </td>
267
+ <td className="text-fm-secondary! px-6 py-4 text-sm">
260
268
  Height of the icon in pixels
261
269
  </td>
262
270
  </tr>
263
- <tr className="!bg-black/10">
264
- <td className="px-6 py-4 font-mono text-sm !text-indigo-300">
271
+ <tr className="bg-fm-surface-secondary!">
272
+ <td className="text-fm-icon-info! px-6 py-4 font-mono text-sm">
265
273
  className
266
274
  </td>
267
- <td className="px-6 py-4 text-sm !text-white/70">
275
+ <td className="text-fm-secondary! px-6 py-4 text-sm">
268
276
  string
269
277
  </td>
270
- <td className="px-6 py-4 text-sm !text-white/50">-</td>
271
- <td className="px-6 py-4 text-sm !text-white/70">
278
+ <td className="text-fm-placeholder! px-6 py-4 text-sm">
279
+ -
280
+ </td>
281
+ <td className="text-fm-secondary! px-6 py-4 text-sm">
272
282
  CSS classes for styling
273
283
  </td>
274
284
  </tr>
@@ -278,65 +288,65 @@ const meta: Meta<typeof SpinnerSolidNeutralIcon> = {
278
288
 
279
289
  {/* Accessibility */}
280
290
  <div className="!space-y-8">
281
- <h2 className="text-center text-3xl font-bold !text-white">
291
+ <h2 className="text-fm-icon-active! text-center text-3xl font-bold">
282
292
  Accessibility Features
283
293
  </h2>
284
294
  <div className="grid grid-cols-1 gap-8 md:grid-cols-2">
285
- <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
286
- <h3 className="text-lg font-semibold !text-green-300">
295
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
296
+ <h3 className="text-fm-icon-positive! text-lg font-semibold">
287
297
  ✅ Built-in Features
288
298
  </h3>
289
- <ul className="!space-y-2 text-sm !text-white/70">
290
- <li className="!text-white/70">
299
+ <ul className="text-fm-secondary! !space-y-2 text-sm">
300
+ <li className="text-fm-secondary!">
291
301
  Uses Radix UI AccessibleIcon wrapper
292
302
  </li>
293
- <li className="!text-white/70">
303
+ <li className="text-fm-secondary!">
294
304
  Provides screen reader label "Spinner Solid Neutral
295
305
  Icon"
296
306
  </li>
297
- <li className="!text-white/70">
307
+ <li className="text-fm-secondary!">
298
308
  Supports keyboard navigation when interactive
299
309
  </li>
300
- <li className="!text-white/70">
310
+ <li className="text-fm-secondary!">
301
311
  Maintains proper color contrast ratios
302
312
  </li>
303
- <li className="!text-white/70">
313
+ <li className="text-fm-secondary!">
304
314
  Scales with user's font size preferences
305
315
  </li>
306
316
  </ul>
307
317
  </div>
308
318
 
309
- <div className="!space-y-4 rounded-lg border border-white/10 bg-white/5 p-6">
310
- <h3 className="text-lg font-semibold !text-yellow-300">
319
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-4 rounded-lg border p-6">
320
+ <h3 className="text-fm-icon-warning! text-lg font-semibold">
311
321
  💡 Best Practices
312
322
  </h3>
313
- <ul className="!space-y-2 text-sm text-white/70">
314
- <li className="!text-white/70">
323
+ <ul className="text-fm-secondary !space-y-2 text-sm">
324
+ <li className="text-fm-secondary!">
315
325
  Always pair with descriptive loading text
316
326
  </li>
317
- <li className="!text-white/70">
327
+ <li className="text-fm-secondary!">
318
328
  Provide context about what's loading
319
329
  </li>
320
- <li className="!text-white/70">
330
+ <li className="text-fm-secondary!">
321
331
  Ensure sufficient color contrast on backgrounds
322
332
  </li>
323
- <li className="!text-white/70">
333
+ <li className="text-fm-secondary!">
324
334
  Respect reduced motion user preferences
325
335
  </li>
326
- <li className="!text-white/70">
336
+ <li className="text-fm-secondary!">
327
337
  Use appropriate size for the context
328
338
  </li>
329
339
  </ul>
330
340
  </div>
331
341
  </div>
332
342
 
333
- <div className="rounded-lg border border-white/10 bg-white/5 p-6">
334
- <h3 className="mb-4 text-lg font-semibold !text-purple-300">
343
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
344
+ <h3 className="text-fm-secondary-600! mb-4 text-lg font-semibold">
335
345
  Custom Accessibility Label
336
346
  </h3>
337
347
  <div className="grid grid-cols-1 gap-6 lg:grid-cols-2">
338
- <div className="rounded-lg bg-black/40 p-4">
339
- <pre className="overflow-x-auto text-sm !text-blue-300">
348
+ <div className="bg-fm-surface-secondary rounded-lg p-4">
349
+ <pre className="text-fm-icon-info! overflow-x-auto text-sm">
340
350
  {`// Custom implementation with specific label
341
351
  import { AccessibleIcon } from "@radix-ui/react-accessible-icon"
342
352
 
@@ -356,13 +366,13 @@ function CustomSpinnerIcon({ label = "Loading", ...props }) {
356
366
  </pre>
357
367
  </div>
358
368
  <div className="!space-y-4">
359
- <p className="text-sm !text-white/70">
369
+ <p className="text-fm-secondary! text-sm">
360
370
  For specific contexts, you can wrap the
361
371
  SpinnerSolidNeutralIcon with a custom AccessibleIcon
362
372
  component that provides more descriptive labels.
363
373
  </p>
364
- <div className="rounded-lg border border-blue-500/20 bg-blue-500/10 p-4">
365
- <div className="flex items-center gap-2 text-sm text-blue-200">
374
+ <div className="border-fm-icon-info/20 bg-fm-icon-info/10 rounded-lg border p-4">
375
+ <div className="text-fm-icon-info flex items-center gap-2 text-sm">
366
376
  <SpinnerSolidNeutralIcon className="h-4 w-4 animate-spin" />
367
377
  <span>
368
378
  This approach gives screen readers more context
@@ -376,52 +386,62 @@ function CustomSpinnerIcon({ label = "Loading", ...props }) {
376
386
 
377
387
  {/* Related Icons */}
378
388
  <div className="!space-y-8">
379
- <h2 className="text-center text-3xl font-bold !text-white">
389
+ <h2 className="text-fm-icon-active! text-center text-3xl font-bold">
380
390
  Related Icons
381
391
  </h2>
382
392
  <div className="grid grid-cols-2 gap-6 md:grid-cols-4">
383
- <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
384
- <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-blue-900/20">
385
- <SpinnerSolidIcon className="h-8 w-8 animate-spin text-blue-400" />
393
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
394
+ <div className="bg-fm-icon-info/10 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
395
+ <SpinnerSolidIcon className="text-fm-icon-info h-8 w-8 animate-spin" />
386
396
  </div>
387
397
  <div>
388
- <div className="font-medium text-white">
398
+ <div className="text-fm-icon-active font-medium">
389
399
  Spinner Solid
390
400
  </div>
391
- <div className="text-xs text-white/60">
401
+ <div className="text-fm-tertiary text-xs">
392
402
  Basic solid spinner
393
403
  </div>
394
404
  </div>
395
405
  </div>
396
- <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
397
- <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-green-500/20">
398
- <span className="!text-2xl !text-white">✓</span>
406
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
407
+ <div className="bg-fm-icon-positive/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
408
+ <span className="text-fm-icon-active! !text-2xl">
409
+
410
+ </span>
399
411
  </div>
400
412
  <div>
401
- <div className="font-medium text-white">CheckIcon</div>
402
- <div className="text-xs text-white/60">
413
+ <div className="text-fm-icon-active font-medium">
414
+ CheckIcon
415
+ </div>
416
+ <div className="text-fm-tertiary text-xs">
403
417
  Success states
404
418
  </div>
405
419
  </div>
406
420
  </div>
407
- <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
408
- <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-orange-500/20">
421
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
422
+ <div className="bg-fm-icon-warning/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
409
423
  <span className="text-2xl">⚠️</span>
410
424
  </div>
411
425
  <div>
412
- <div className="font-medium text-white">AlertIcon</div>
413
- <div className="text-xs text-white/60">
426
+ <div className="text-fm-icon-active font-medium">
427
+ AlertIcon
428
+ </div>
429
+ <div className="text-fm-tertiary text-xs">
414
430
  Warning states
415
431
  </div>
416
432
  </div>
417
433
  </div>
418
- <div className="!space-y-3 rounded-lg border border-white/10 bg-white/5 p-4 text-center">
419
- <div className="!mx-auto flex h-12 w-12 items-center justify-center rounded-lg bg-red-500/20">
420
- <span className="!text-2xl !text-white">✕</span>
434
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary !space-y-3 rounded-lg border p-4 text-center">
435
+ <div className="bg-fm-icon-negative/20 !mx-auto flex h-12 w-12 items-center justify-center rounded-lg">
436
+ <span className="text-fm-icon-active! !text-2xl">
437
+
438
+ </span>
421
439
  </div>
422
440
  <div>
423
- <div className="font-medium text-white">ErrorIcon</div>
424
- <div className="text-xs text-white/60">
441
+ <div className="text-fm-icon-active font-medium">
442
+ ErrorIcon
443
+ </div>
444
+ <div className="text-fm-tertiary text-xs">
425
445
  Error states
426
446
  </div>
427
447
  </div>
@@ -430,15 +450,15 @@ function CustomSpinnerIcon({ label = "Loading", ...props }) {
430
450
  </div>
431
451
 
432
452
  {/* Footer */}
433
- <div className="border-t border-white/10 bg-black/20 backdrop-blur-xl">
453
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary border-t backdrop-blur-xl">
434
454
  <div className="!mx-auto max-w-7xl px-6 py-8">
435
455
  <div className="!space-y-4 text-center">
436
- <p className="!text-white/60">
456
+ <p className="text-fm-tertiary!">
437
457
  SpinnerSolidNeutralIcon is part of the Aural UI icon
438
458
  library, optimized for accessibility and neutral
439
459
  theming.
440
460
  </p>
441
- <p className="text-sm !text-white/40">
461
+ <p className="text-fm-placeholder! text-sm">
442
462
  All icons use Radix UI's AccessibleIcon for screen
443
463
  reader compatibility and follow WCAG guidelines.
444
464
  </p>
@@ -463,8 +483,8 @@ const storyParameters = {
463
483
  backgrounds: {
464
484
  default: "dark",
465
485
  values: [
466
- { name: "dark", value: "#0a0a0a" },
467
- { name: "darker", value: "#000000" },
486
+ { name: "dark", value: "var(--color-fm-surface-primary)" },
487
+ { name: "darker", value: "var(--color-fm-neutral-0)" },
468
488
  ],
469
489
  },
470
490
  }
@@ -478,7 +498,7 @@ export const Default: Story = {
478
498
  },
479
499
  parameters: storyParameters,
480
500
  render: (args) => (
481
- <div className="flex h-32 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
501
+ <div className="from-fm-surface-primary to-fm-surface-secondary flex h-32 min-h-dvh items-center justify-center rounded-lg bg-linear-to-br">
482
502
  <SpinnerSolidNeutralIcon {...args} className="animate-spin" />
483
503
  </div>
484
504
  ),
@@ -495,30 +515,30 @@ export const SizeVariations: Story = {
495
515
  },
496
516
  },
497
517
  render: () => (
498
- <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">
518
+ <div className="from-fm-surface-primary to-fm-surface-secondary flex h-64 min-h-dvh items-center justify-center gap-8 rounded-lg bg-linear-to-br p-8">
499
519
  <div className="text-center">
500
520
  <SpinnerSolidNeutralIcon className="!mx-auto mb-2 h-4 w-4 animate-spin" />
501
- <span className="text-xs text-white/60">16px</span>
521
+ <span className="text-fm-tertiary text-xs">16px</span>
502
522
  </div>
503
523
  <div className="text-center">
504
524
  <SpinnerSolidNeutralIcon className="!mx-auto mb-2 h-6 w-6 animate-spin" />
505
- <span className="text-xs text-white/60">24px</span>
525
+ <span className="text-fm-tertiary text-xs">24px</span>
506
526
  </div>
507
527
  <div className="text-center">
508
528
  <SpinnerSolidNeutralIcon className="!mx-auto mb-2 h-8 w-8 animate-spin" />
509
- <span className="text-xs text-white/60">32px</span>
529
+ <span className="text-fm-tertiary text-xs">32px</span>
510
530
  </div>
511
531
  <div className="text-center">
512
532
  <SpinnerSolidNeutralIcon className="!mx-auto mb-2 h-12 w-12 animate-spin" />
513
- <span className="text-xs text-white/60">48px</span>
533
+ <span className="text-fm-tertiary text-xs">48px</span>
514
534
  </div>
515
535
  <div className="text-center">
516
536
  <SpinnerSolidNeutralIcon className="!mx-auto mb-2 h-16 w-16 animate-spin" />
517
- <span className="text-xs text-white/60">64px</span>
537
+ <span className="text-fm-tertiary text-xs">64px</span>
518
538
  </div>
519
539
  <div className="text-center">
520
540
  <SpinnerSolidNeutralIcon className="!mx-auto mb-2 h-20 w-20 animate-spin" />
521
- <span className="text-xs text-white/60">80px</span>
541
+ <span className="text-fm-tertiary text-xs">80px</span>
522
542
  </div>
523
543
  </div>
524
544
  ),
@@ -535,27 +555,29 @@ export const AnimationVariations: Story = {
535
555
  },
536
556
  },
537
557
  render: () => (
538
- <div className="grid min-h-dvh grid-cols-1 items-center justify-center gap-8 rounded-lg bg-gradient-to-br from-gray-900 to-gray-800 p-8 md:grid-cols-3">
558
+ <div className="from-fm-surface-primary to-fm-surface-secondary grid min-h-dvh grid-cols-1 items-center justify-center gap-8 rounded-lg bg-linear-to-br p-8 md:grid-cols-3">
539
559
  <div className="text-center">
540
- <div className="!mx-auto mb-4 flex h-20 w-20 items-center justify-center rounded-lg border border-white/10 bg-white/5">
560
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary !mx-auto mb-4 flex h-20 w-20 items-center justify-center rounded-lg border">
541
561
  <SpinnerSolidNeutralIcon className="h-12 w-12 animate-spin" />
542
562
  </div>
543
- <div className="text-sm font-medium text-white">Standard Spin</div>
544
- <div className="text-xs text-white/60">animate-spin</div>
563
+ <div className="text-fm-icon-active text-sm font-medium">
564
+ Standard Spin
565
+ </div>
566
+ <div className="text-fm-tertiary text-xs">animate-spin</div>
545
567
  </div>
546
568
  <div className="text-center">
547
- <div className="!mx-auto mb-4 flex h-20 w-20 items-center justify-center rounded-lg border border-white/10 bg-white/5">
569
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary !mx-auto mb-4 flex h-20 w-20 items-center justify-center rounded-lg border">
548
570
  <SpinnerSolidNeutralIcon className="animate-neutral-pulse h-12 w-12" />
549
571
  </div>
550
- <div className="text-sm font-medium text-white">Pulse</div>
551
- <div className="text-xs text-white/60">animate-neutral-pulse</div>
572
+ <div className="text-fm-icon-active text-sm font-medium">Pulse</div>
573
+ <div className="text-fm-tertiary text-xs">animate-neutral-pulse</div>
552
574
  </div>
553
575
  <div className="text-center">
554
- <div className="!mx-auto mb-4 flex h-20 w-20 items-center justify-center rounded-lg border border-white/10 bg-white/5">
576
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary !mx-auto mb-4 flex h-20 w-20 items-center justify-center rounded-lg border">
555
577
  <SpinnerSolidNeutralIcon className="animate-neutral-glow h-12 w-12" />
556
578
  </div>
557
- <div className="text-sm font-medium text-white">Glow</div>
558
- <div className="text-xs text-white/60">animate-neutral-glow</div>
579
+ <div className="text-fm-icon-active text-sm font-medium">Glow</div>
580
+ <div className="text-fm-tertiary text-xs">animate-neutral-glow</div>
559
581
  </div>
560
582
  </div>
561
583
  ),
@@ -572,34 +594,38 @@ export const BackgroundVariations: Story = {
572
594
  },
573
595
  },
574
596
  render: () => (
575
- <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">
597
+ <div className="from-fm-surface-primary to-fm-surface-secondary grid min-h-dvh grid-cols-2 items-center justify-center gap-6 rounded-lg bg-linear-to-br p-8 md:grid-cols-4">
576
598
  <div className="text-center">
577
- <div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg bg-black">
599
+ <div className="bg-fm-surface-primary !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg">
578
600
  <SpinnerSolidNeutralIcon className="h-10 w-10 animate-spin" />
579
601
  </div>
580
- <div className="text-sm font-medium text-white">Black</div>
581
- <div className="text-xs text-white/60">bg-black</div>
602
+ <div className="text-fm-icon-active text-sm font-medium">Black</div>
603
+ <div className="text-fm-tertiary text-xs">bg-fm-surface-primary</div>
582
604
  </div>
583
605
  <div className="text-center">
584
- <div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg bg-gray-800">
606
+ <div className="bg-fm-surface-secondary !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg">
585
607
  <SpinnerSolidNeutralIcon className="h-10 w-10 animate-spin" />
586
608
  </div>
587
- <div className="text-sm font-medium text-white">Dark Gray</div>
588
- <div className="text-xs text-white/60">bg-gray-800</div>
609
+ <div className="text-fm-icon-active text-sm font-medium">Dark Gray</div>
610
+ <div className="text-fm-tertiary text-xs">bg-fm-surface-secondary</div>
589
611
  </div>
590
612
  <div className="text-center">
591
- <div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg bg-gray-600">
613
+ <div className="bg-fm-surface-tertiary !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg">
592
614
  <SpinnerSolidNeutralIcon className="h-10 w-10 animate-spin" />
593
615
  </div>
594
- <div className="text-sm font-medium text-white">Medium Gray</div>
595
- <div className="text-xs text-white/60">bg-gray-600</div>
616
+ <div className="text-fm-icon-active text-sm font-medium">
617
+ Medium Gray
618
+ </div>
619
+ <div className="text-fm-tertiary text-xs">bg-fm-surface-tertiary</div>
596
620
  </div>
597
621
  <div className="text-center">
598
- <div className="!mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg bg-gray-400">
622
+ <div className="bg-fm-surface-tertiary !mx-auto mb-3 flex h-16 w-16 items-center justify-center rounded-lg">
599
623
  <SpinnerSolidNeutralIcon className="h-10 w-10 animate-spin" />
600
624
  </div>
601
- <div className="text-sm font-medium text-white">Light Gray</div>
602
- <div className="text-xs text-white/60">bg-gray-400</div>
625
+ <div className="text-fm-icon-active text-sm font-medium">
626
+ Light Gray
627
+ </div>
628
+ <div className="text-fm-tertiary text-xs">bg-fm-surface-tertiary</div>
603
629
  </div>
604
630
  </div>
605
631
  ),
@@ -616,16 +642,18 @@ export const UsageExamples: Story = {
616
642
  },
617
643
  },
618
644
  render: () => (
619
- <div className="min-h-dvh !space-y-8 rounded-lg bg-gradient-to-br from-gray-900 to-gray-800 p-8">
645
+ <div className="from-fm-surface-primary to-fm-surface-secondary min-h-dvh !space-y-8 rounded-lg bg-linear-to-br p-8">
620
646
  {/* Loading Button */}
621
647
  <div className="!space-y-2">
622
- <h3 className="text-sm font-medium text-white">Loading Button</h3>
648
+ <h3 className="text-fm-icon-active text-sm font-medium">
649
+ Loading Button
650
+ </h3>
623
651
  <div className="flex gap-4">
624
- <button className="flex items-center gap-2 rounded-lg border border-neutral-500/30 bg-neutral-500/20 px-4 py-2 text-neutral-200 transition-colors hover:bg-neutral-500/30">
652
+ <button className="border-fm-divider-primary bg-fm-surface-secondary/20 text-fm-secondary hover:bg-fm-surface-secondary/30 flex items-center gap-2 rounded-lg border px-4 py-2 transition-colors">
625
653
  <SpinnerSolidNeutralIcon className="h-4 w-4 animate-spin" />
626
654
  Loading...
627
655
  </button>
628
- <button className="flex h-10 w-10 items-center justify-center rounded-lg border border-neutral-500/30 bg-neutral-500/20 text-neutral-200 transition-colors hover:bg-neutral-500/30">
656
+ <button className="border-fm-divider-primary bg-fm-surface-secondary/20 text-fm-secondary hover:bg-fm-surface-secondary/30 flex h-10 w-10 items-center justify-center rounded-lg border transition-colors">
629
657
  <SpinnerSolidNeutralIcon className="h-5 w-5 animate-spin" />
630
658
  </button>
631
659
  </div>
@@ -633,47 +661,51 @@ export const UsageExamples: Story = {
633
661
 
634
662
  {/* Loading State */}
635
663
  <div className="!space-y-2">
636
- <h3 className="text-sm font-medium text-white">Loading State</h3>
637
- <div className="flex h-32 items-center justify-center rounded-lg border border-white/10 bg-white/5">
664
+ <h3 className="text-fm-icon-active text-sm font-medium">
665
+ Loading State
666
+ </h3>
667
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary flex h-32 items-center justify-center rounded-lg border">
638
668
  <div className="text-center">
639
669
  <SpinnerSolidNeutralIcon className="!mx-auto mb-4 h-16 w-16 animate-spin" />
640
- <div className="text-sm text-white/60">Loading content...</div>
670
+ <div className="text-fm-tertiary text-sm">Loading content...</div>
641
671
  </div>
642
672
  </div>
643
673
  </div>
644
674
 
645
675
  {/* Card Loading */}
646
676
  <div className="!space-y-2">
647
- <h3 className="text-sm font-medium text-white">Card Loading</h3>
677
+ <h3 className="text-fm-icon-active text-sm font-medium">
678
+ Card Loading
679
+ </h3>
648
680
  <div className="grid gap-4 md:grid-cols-3">
649
- <div className="rounded-lg border border-white/10 bg-white/5 p-6">
681
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
650
682
  <div className="mb-4 flex items-center justify-center">
651
683
  <SpinnerSolidNeutralIcon className="h-8 w-8 animate-spin" />
652
684
  </div>
653
685
  <div className="space-y-2">
654
- <div className="h-4 rounded bg-white/10"></div>
655
- <div className="h-4 rounded bg-white/10"></div>
656
- <div className="h-4 w-3/4 rounded bg-white/10"></div>
686
+ <div className="bg-fm-surface-secondary h-4 rounded"></div>
687
+ <div className="bg-fm-surface-secondary h-4 rounded"></div>
688
+ <div className="bg-fm-surface-secondary h-4 w-3/4 rounded"></div>
657
689
  </div>
658
690
  </div>
659
- <div className="rounded-lg border border-white/10 bg-white/5 p-6">
691
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
660
692
  <div className="mb-4 flex items-center justify-center">
661
693
  <SpinnerSolidNeutralIcon className="h-8 w-8 animate-spin" />
662
694
  </div>
663
695
  <div className="space-y-2">
664
- <div className="h-4 rounded bg-white/10"></div>
665
- <div className="h-4 rounded bg-white/10"></div>
666
- <div className="h-4 w-2/3 rounded bg-white/10"></div>
696
+ <div className="bg-fm-surface-secondary h-4 rounded"></div>
697
+ <div className="bg-fm-surface-secondary h-4 rounded"></div>
698
+ <div className="bg-fm-surface-secondary h-4 w-2/3 rounded"></div>
667
699
  </div>
668
700
  </div>
669
- <div className="rounded-lg border border-white/10 bg-white/5 p-6">
701
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-6">
670
702
  <div className="mb-4 flex items-center justify-center">
671
703
  <SpinnerSolidNeutralIcon className="h-8 w-8 animate-spin" />
672
704
  </div>
673
705
  <div className="space-y-2">
674
- <div className="h-4 rounded bg-white/10"></div>
675
- <div className="h-4 rounded bg-white/10"></div>
676
- <div className="h-4 w-4/5 rounded bg-white/10"></div>
706
+ <div className="bg-fm-surface-secondary h-4 rounded"></div>
707
+ <div className="bg-fm-surface-secondary h-4 rounded"></div>
708
+ <div className="bg-fm-surface-secondary h-4 w-4/5 rounded"></div>
677
709
  </div>
678
710
  </div>
679
711
  </div>
@@ -681,9 +713,11 @@ export const UsageExamples: Story = {
681
713
 
682
714
  {/* Inline Loading */}
683
715
  <div className="!space-y-2">
684
- <h3 className="text-sm font-medium text-white">Inline Loading</h3>
685
- <div className="rounded-lg border border-white/10 bg-white/5 p-4">
686
- <div className="flex items-center gap-2 text-white/80">
716
+ <h3 className="text-fm-icon-active text-sm font-medium">
717
+ Inline Loading
718
+ </h3>
719
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-4">
720
+ <div className="text-fm-icon-active/80 flex items-center gap-2">
687
721
  <SpinnerSolidNeutralIcon className="h-4 w-4 animate-spin" />
688
722
  <span>Saving changes...</span>
689
723
  </div>
@@ -727,15 +761,15 @@ export const Playground: Story = {
727
761
  },
728
762
  },
729
763
  render: (args) => (
730
- <div className="flex h-64 min-h-dvh items-center justify-center rounded-lg bg-gradient-to-br from-gray-900 to-gray-800">
731
- <div className="rounded-lg border border-white/10 bg-white/5 p-8">
764
+ <div className="from-fm-surface-primary to-fm-surface-secondary flex h-64 min-h-dvh items-center justify-center rounded-lg bg-linear-to-br">
765
+ <div className="border-fm-divider-secondary bg-fm-surface-secondary rounded-lg border p-8">
732
766
  <div className="mb-4 text-center">
733
767
  <SpinnerSolidNeutralIcon
734
768
  {...args}
735
769
  className={`animate-spin ${args.className || ""}`}
736
770
  />
737
771
  </div>
738
- <div className="text-center text-xs text-white/60">
772
+ <div className="text-fm-tertiary text-center text-xs">
739
773
  {args.width}×{args.height}px
740
774
  </div>
741
775
  </div>