@rdna/radiants 0.1.1 → 0.1.3

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 (1965) hide show
  1. package/README.md +87 -18
  2. package/animations.css +1 -1
  3. package/assets/icons/16px/USDC.svg +5 -0
  4. package/assets/icons/16px/broadcast-dish.svg +5 -0
  5. package/assets/icons/16px/broken-battery.svg +5 -0
  6. package/assets/icons/16px/calendar.svg +5 -0
  7. package/assets/icons/16px/calendar2.svg +5 -0
  8. package/assets/icons/16px/camera.svg +5 -0
  9. package/assets/icons/16px/cd-horizontal.svg +5 -0
  10. package/assets/icons/16px/cd.svg +5 -0
  11. package/assets/icons/16px/cell-bars.svg +5 -0
  12. package/assets/icons/16px/checkmark.svg +5 -0
  13. package/assets/icons/16px/chevron-down.svg +5 -0
  14. package/assets/icons/16px/chevron-left.svg +5 -0
  15. package/assets/icons/16px/chevron-right.svg +5 -0
  16. package/assets/icons/16px/clock.svg +5 -0
  17. package/assets/icons/16px/close-filled.svg +5 -0
  18. package/assets/icons/16px/close.svg +7 -0
  19. package/assets/icons/16px/code-file.svg +5 -0
  20. package/assets/icons/16px/code-folder.svg +5 -0
  21. package/assets/icons/16px/code-window-filled.svg +5 -0
  22. package/assets/icons/16px/code-window.svg +5 -0
  23. package/assets/icons/16px/coins.svg +5 -0
  24. package/assets/icons/16px/comments-blank.svg +5 -0
  25. package/assets/icons/16px/comments-typing.svg +5 -0
  26. package/assets/icons/16px/computer.svg +5 -0
  27. package/assets/icons/16px/copied-to-clipboard.svg +5 -0
  28. package/assets/icons/16px/copy-to-clipboard.svg +5 -0
  29. package/assets/icons/16px/copy.svg +5 -0
  30. package/assets/icons/16px/crosshair-3.svg +5 -0
  31. package/assets/icons/16px/crosshair1.svg +5 -0
  32. package/assets/icons/16px/crosshair2-retro.svg +5 -0
  33. package/assets/icons/16px/crosshair2.svg +5 -0
  34. package/assets/icons/16px/crosshair4.svg +5 -0
  35. package/assets/icons/16px/cursor-text.svg +5 -0
  36. package/assets/icons/16px/cursor2.svg +5 -0
  37. package/assets/icons/16px/cut.svg +5 -0
  38. package/assets/icons/16px/discord.svg +5 -0
  39. package/assets/icons/16px/document-image.svg +5 -0
  40. package/assets/icons/16px/document.svg +5 -0
  41. package/assets/icons/16px/document2.svg +5 -0
  42. package/assets/icons/16px/download.svg +5 -0
  43. package/assets/icons/16px/eject.svg +5 -0
  44. package/assets/icons/16px/electric.svg +5 -0
  45. package/assets/icons/16px/envelope-closed.svg +5 -0
  46. package/assets/icons/16px/envelope-open.svg +5 -0
  47. package/assets/icons/16px/equalizer.svg +5 -0
  48. package/assets/icons/16px/eye-hidden.svg +5 -0
  49. package/assets/icons/16px/eye.svg +5 -0
  50. package/assets/icons/16px/film-camera.svg +5 -0
  51. package/assets/icons/16px/film-strip-outline.svg +5 -0
  52. package/assets/icons/16px/film-strip.svg +5 -0
  53. package/assets/icons/16px/fire.svg +5 -0
  54. package/assets/icons/16px/folder-closed.svg +5 -0
  55. package/assets/icons/16px/folder-open.svg +5 -0
  56. package/assets/icons/16px/full-screen.svg +5 -0
  57. package/assets/icons/16px/game-controller.svg +5 -0
  58. package/assets/icons/16px/globe.svg +5 -0
  59. package/assets/icons/16px/go-forward.svg +5 -0
  60. package/assets/icons/16px/grid-3x3.svg +15 -0
  61. package/assets/icons/16px/grip-horizontal.svg +12 -0
  62. package/assets/icons/16px/grip-vertical.svg +12 -0
  63. package/assets/icons/16px/hamburger.svg +5 -0
  64. package/assets/icons/16px/hand-point.svg +5 -0
  65. package/assets/icons/16px/hard-drive.svg +5 -0
  66. package/assets/icons/16px/headphones.svg +5 -0
  67. package/assets/icons/16px/heart.svg +5 -0
  68. package/assets/icons/16px/home.svg +5 -0
  69. package/assets/icons/16px/home2.svg +5 -0
  70. package/assets/icons/16px/hourglass.svg +5 -0
  71. package/assets/icons/16px/info-filled.svg +5 -0
  72. package/assets/icons/16px/info.svg +5 -0
  73. package/assets/icons/16px/joystick.svg +5 -0
  74. package/assets/icons/16px/lightbulb.svg +5 -0
  75. package/assets/icons/16px/lightbulb2.svg +5 -0
  76. package/assets/icons/16px/line-chart.svg +5 -0
  77. package/assets/icons/16px/list.svg +5 -0
  78. package/assets/icons/16px/lock-closed.svg +5 -0
  79. package/assets/icons/16px/lock-open.svg +5 -0
  80. package/assets/icons/16px/microphone-mute.svg +5 -0
  81. package/assets/icons/16px/microphone.svg +5 -0
  82. package/assets/icons/16px/minus.svg +5 -0
  83. package/assets/icons/16px/money.svg +5 -0
  84. package/assets/icons/16px/moon.svg +5 -0
  85. package/assets/icons/16px/more-horizontal.svg +9 -0
  86. package/assets/icons/16px/more-vertical.svg +9 -0
  87. package/assets/icons/16px/multiple-images.svg +5 -0
  88. package/assets/icons/16px/music-8th-notes.svg +5 -0
  89. package/assets/icons/16px/outline-box.svg +5 -0
  90. package/assets/icons/16px/paper-plane.svg +5 -0
  91. package/assets/icons/16px/pause.svg +5 -0
  92. package/assets/icons/16px/pencil.svg +5 -0
  93. package/assets/icons/16px/picture-in-picture.svg +5 -0
  94. package/assets/icons/16px/pie-chart.svg +5 -0
  95. package/assets/icons/16px/play.svg +5 -0
  96. package/assets/icons/16px/plug.svg +5 -0
  97. package/assets/icons/16px/plus.svg +5 -0
  98. package/assets/icons/16px/power1.svg +5 -0
  99. package/assets/icons/16px/power2.svg +5 -0
  100. package/assets/icons/16px/print.svg +5 -0
  101. package/assets/icons/16px/question-filled.svg +5 -0
  102. package/assets/icons/16px/question.svg +5 -0
  103. package/assets/icons/16px/queue.svg +5 -0
  104. package/assets/icons/16px/rad-mark.svg +5 -0
  105. package/assets/icons/16px/radiants-logo.svg +5 -0
  106. package/assets/icons/16px/record-playback.svg +5 -0
  107. package/assets/icons/16px/record-player.svg +5 -0
  108. package/assets/icons/16px/refresh-filled.svg +5 -0
  109. package/assets/icons/16px/refresh1.svg +5 -0
  110. package/assets/icons/16px/reload.svg +5 -0
  111. package/assets/icons/16px/resize-corner.svg +5 -0
  112. package/assets/icons/16px/save-2.svg +5 -0
  113. package/assets/icons/16px/save.svg +5 -0
  114. package/assets/icons/16px/search.svg +5 -0
  115. package/assets/icons/16px/seek-back.svg +5 -0
  116. package/assets/icons/16px/seek-forward.svg +5 -0
  117. package/assets/icons/16px/settings-cog.svg +5 -0
  118. package/assets/icons/16px/share.svg +5 -0
  119. package/assets/icons/16px/skip-back.svg +5 -0
  120. package/assets/icons/16px/skip-forward.svg +5 -0
  121. package/assets/icons/16px/skull-and-crossbones.svg +5 -0
  122. package/assets/icons/16px/sort-descending.svg +5 -0
  123. package/assets/icons/16px/sort-filter-empty.svg +5 -0
  124. package/assets/icons/16px/sort-filter-filled.svg +5 -0
  125. package/assets/icons/16px/sparkles.svg +5 -0
  126. package/assets/icons/16px/stop-playback.svg +5 -0
  127. package/assets/icons/16px/swap.svg +5 -0
  128. package/assets/icons/16px/tape.svg +5 -0
  129. package/assets/icons/16px/telephone.svg +5 -0
  130. package/assets/icons/16px/trash-full.svg +5 -0
  131. package/assets/icons/16px/trash-open.svg +5 -0
  132. package/assets/icons/16px/trash.svg +5 -0
  133. package/assets/icons/16px/trophy.svg +5 -0
  134. package/assets/icons/16px/trophy2.svg +5 -0
  135. package/assets/icons/16px/tv.svg +5 -0
  136. package/assets/icons/16px/twitter.svg +5 -0
  137. package/assets/icons/16px/upload.svg +5 -0
  138. package/assets/icons/16px/usb-icon.svg +5 -0
  139. package/assets/icons/16px/usb.svg +5 -0
  140. package/assets/icons/16px/usericon.svg +5 -0
  141. package/assets/icons/16px/volume-faders.svg +5 -0
  142. package/assets/icons/16px/volume-high.svg +21 -0
  143. package/assets/icons/16px/volume-low.svg +11 -0
  144. package/assets/icons/16px/volume-med.svg +13 -0
  145. package/assets/icons/16px/volume-mute.svg +5 -0
  146. package/assets/icons/16px/warning-filled-outline.svg +5 -0
  147. package/assets/icons/16px/warning-filled.svg +5 -0
  148. package/assets/icons/16px/warning-hollow.svg +5 -0
  149. package/assets/icons/16px/wifi.svg +5 -0
  150. package/assets/icons/16px/window-error.svg +5 -0
  151. package/assets/icons/16px/windows.svg +5 -0
  152. package/assets/icons/16px/wrench.svg +5 -0
  153. package/assets/icons/16px/zip-file.svg +5 -0
  154. package/assets/icons/16px/zip-file2.svg +5 -0
  155. package/assets/icons/24px/Business-Products-treasure.svg +20 -0
  156. package/assets/icons/24px/beauty-barber-light-sign.svg +29 -0
  157. package/assets/icons/24px/beauty-beard-style.svg +35 -0
  158. package/assets/icons/24px/beauty-body-care-snail.svg +46 -0
  159. package/assets/icons/24px/beauty-body-care-sun-screen.svg +9 -0
  160. package/assets/icons/24px/beauty-cosmatic-brush-set.svg +28 -0
  161. package/assets/icons/24px/beauty-cosmatic-lip-stick.svg +13 -0
  162. package/assets/icons/24px/beauty-healthy-food-dish.svg +32 -0
  163. package/assets/icons/24px/beauty-mirror-1.svg +38 -0
  164. package/assets/icons/24px/beauty-mirror-2.svg +15 -0
  165. package/assets/icons/24px/beauty-nail-polish.svg +23 -0
  166. package/assets/icons/24px/beauty-perfume-1.svg +28 -0
  167. package/assets/icons/24px/beauty-perfume-2.svg +26 -0
  168. package/assets/icons/24px/building-real-eastate-deal-documant.svg +25 -0
  169. package/assets/icons/24px/building-real-eastate-for-sale.svg +23 -0
  170. package/assets/icons/24px/building-real-eastate-house-1.svg +32 -0
  171. package/assets/icons/24px/building-real-eastate-house-2.svg +26 -0
  172. package/assets/icons/24px/building-real-eastate-houses-location.svg +9 -0
  173. package/assets/icons/24px/building-real-eastate-location.svg +31 -0
  174. package/assets/icons/24px/building-real-eastate-project-blueprint.svg +14 -0
  175. package/assets/icons/24px/building-real-eastate-sign-for-rent.svg +27 -0
  176. package/assets/icons/24px/building-real-eastate-sign-house-1.svg +17 -0
  177. package/assets/icons/24px/building-real-eastate-sign-house-2.svg +18 -0
  178. package/assets/icons/24px/building-real-eastate-storage.svg +21 -0
  179. package/assets/icons/24px/business-money-coin-currency.svg +37 -0
  180. package/assets/icons/24px/business-prodect-diamond.svg +37 -0
  181. package/assets/icons/24px/business-product-check.svg +31 -0
  182. package/assets/icons/24px/business-product-piggy-bank.svg +42 -0
  183. package/assets/icons/24px/business-product-price-tag.svg +56 -0
  184. package/assets/icons/24px/business-product-report-present-grahp.svg +23 -0
  185. package/assets/icons/24px/business-product-scale.svg +22 -0
  186. package/assets/icons/24px/business-product-startup-1.svg +34 -0
  187. package/assets/icons/24px/business-product-startup-2.svg +32 -0
  188. package/assets/icons/24px/business-product-target.svg +42 -0
  189. package/assets/icons/24px/business-products-bag-money.svg +38 -0
  190. package/assets/icons/24px/business-products-bag.svg +22 -0
  191. package/assets/icons/24px/business-products-bag_1.svg +16 -0
  192. package/assets/icons/24px/business-products-boat-success.svg +37 -0
  193. package/assets/icons/24px/business-products-cash-search.svg +40 -0
  194. package/assets/icons/24px/business-products-cash-shield.svg +41 -0
  195. package/assets/icons/24px/business-products-cash-user-man-message.svg +30 -0
  196. package/assets/icons/24px/business-products-climb-top.svg +31 -0
  197. package/assets/icons/24px/business-products-data-file-bars.svg +10 -0
  198. package/assets/icons/24px/business-products-deal-handshake.svg +41 -0
  199. package/assets/icons/24px/business-products-factory.svg +31 -0
  200. package/assets/icons/24px/business-products-magic-rabbit.svg +23 -0
  201. package/assets/icons/24px/business-products-money.svg +24 -0
  202. package/assets/icons/24px/business-products-network-user.svg +35 -0
  203. package/assets/icons/24px/business-products-performance-money-decrease.svg +33 -0
  204. package/assets/icons/24px/business-products-performance-money-increase.svg +34 -0
  205. package/assets/icons/24px/business-products-safe.svg +27 -0
  206. package/assets/icons/24px/business-products-wallet-money.svg +21 -0
  207. package/assets/icons/24px/change-clean-energy.svg +40 -0
  208. package/assets/icons/24px/chat-email.svg +27 -0
  209. package/assets/icons/24px/coding-app-website-ui.svg +20 -0
  210. package/assets/icons/24px/coding-apps-websites-404-error.svg +32 -0
  211. package/assets/icons/24px/coding-apps-websites-android.svg +30 -0
  212. package/assets/icons/24px/coding-apps-websites-browser-bugs-2.svg +14 -0
  213. package/assets/icons/24px/coding-apps-websites-conference.svg +16 -0
  214. package/assets/icons/24px/coding-apps-websites-constuction.svg +28 -0
  215. package/assets/icons/24px/coding-apps-websites-database.svg +22 -0
  216. package/assets/icons/24px/coding-apps-websites-dinosaur-error.svg +25 -0
  217. package/assets/icons/24px/coding-apps-websites-favorite-rate.svg +41 -0
  218. package/assets/icons/24px/coding-apps-websites-finder.svg +13 -0
  219. package/assets/icons/24px/coding-apps-websites-firewall.svg +42 -0
  220. package/assets/icons/24px/coding-apps-websites-live-status.svg +26 -0
  221. package/assets/icons/24px/coding-apps-websites-mobile.svg +27 -0
  222. package/assets/icons/24px/coding-apps-websites-module.svg +28 -0
  223. package/assets/icons/24px/coding-apps-websites-music-player.svg +24 -0
  224. package/assets/icons/24px/coding-apps-websites-phone-tablet.svg +28 -0
  225. package/assets/icons/24px/coding-apps-websites-plugin.svg +19 -0
  226. package/assets/icons/24px/coding-apps-websites-programming-browser-bugs-1.svg +31 -0
  227. package/assets/icons/24px/coding-apps-websites-programming-browser.svg +13 -0
  228. package/assets/icons/24px/coding-apps-websites-programming-bug.svg +26 -0
  229. package/assets/icons/24px/coding-apps-websites-programming-hold-code.svg +57 -0
  230. package/assets/icons/24px/coding-apps-websites-search-bug.svg +27 -0
  231. package/assets/icons/24px/coding-apps-websites-setting-computer.svg +38 -0
  232. package/assets/icons/24px/coding-apps-websites-shield-lock.svg +37 -0
  233. package/assets/icons/24px/coding-apps-websites-solves.svg +24 -0
  234. package/assets/icons/24px/coding-apps-websites.svg +15 -0
  235. package/assets/icons/24px/computer-old-electronics-bug.svg +16 -0
  236. package/assets/icons/24px/computer-old-electronics.svg +18 -0
  237. package/assets/icons/24px/computers-devices-electronics-battery-charge.svg +20 -0
  238. package/assets/icons/24px/computers-devices-electronics-board.svg +30 -0
  239. package/assets/icons/24px/computers-devices-electronics-chipset.svg +14 -0
  240. package/assets/icons/24px/computers-devices-electronics-click-select-tablet.svg +26 -0
  241. package/assets/icons/24px/computers-devices-electronics-desktop.svg +28 -0
  242. package/assets/icons/24px/computers-devices-electronics-earpod-sound.svg +33 -0
  243. package/assets/icons/24px/computers-devices-electronics-flash-drive-1.svg +17 -0
  244. package/assets/icons/24px/computers-devices-electronics-flash-drive-2.svg +17 -0
  245. package/assets/icons/24px/computers-devices-electronics-graphic-tablet-draw.svg +21 -0
  246. package/assets/icons/24px/computers-devices-electronics-graphic-tablet.svg +24 -0
  247. package/assets/icons/24px/computers-devices-electronics-harddisk.svg +37 -0
  248. package/assets/icons/24px/computers-devices-electronics-keyboard-button.svg +22 -0
  249. package/assets/icons/24px/computers-devices-electronics-keyboard-pad.svg +20 -0
  250. package/assets/icons/24px/computers-devices-electronics-keyboard-wireless.svg +53 -0
  251. package/assets/icons/24px/computers-devices-electronics-keyboard.svg +36 -0
  252. package/assets/icons/24px/computers-devices-electronics-laptop.svg +15 -0
  253. package/assets/icons/24px/computers-devices-electronics-memory.svg +17 -0
  254. package/assets/icons/24px/computers-devices-electronics-mobile-qr-scan.svg +20 -0
  255. package/assets/icons/24px/computers-devices-electronics-monitor.svg +13 -0
  256. package/assets/icons/24px/computers-devices-electronics-mouse.svg +22 -0
  257. package/assets/icons/24px/computers-devices-electronics-smart-watch.svg +26 -0
  258. package/assets/icons/24px/computers-devices-electronics-tablet.svg +12 -0
  259. package/assets/icons/24px/computers-devices-electronics-tape-cassette.svg +19 -0
  260. package/assets/icons/24px/computers-devices-electronics-television-vintage.svg +28 -0
  261. package/assets/icons/24px/computers-devices-electronics-vintage-mac.svg +22 -0
  262. package/assets/icons/24px/computers-devices-electronics-webcam.svg +38 -0
  263. package/assets/icons/24px/computers-devices-electronicscd-disk.svg +35 -0
  264. package/assets/icons/24px/computers-devices-electronicsmicrochip-board.svg +13 -0
  265. package/assets/icons/24px/construction-building-real-eastate.svg +14 -0
  266. package/assets/icons/24px/content-files-archive-books-1.svg +19 -0
  267. package/assets/icons/24px/content-files-archive-books-2.svg +11 -0
  268. package/assets/icons/24px/content-files-archive-books-3.svg +12 -0
  269. package/assets/icons/24px/content-files-book-library.svg +12 -0
  270. package/assets/icons/24px/content-files-book.svg +19 -0
  271. package/assets/icons/24px/content-files-books-1.svg +23 -0
  272. package/assets/icons/24px/content-files-books-2.svg +19 -0
  273. package/assets/icons/24px/content-files-close-book-bookmark.svg +14 -0
  274. package/assets/icons/24px/content-files-draw-content.svg +36 -0
  275. package/assets/icons/24px/content-files-favorite-book.svg +18 -0
  276. package/assets/icons/24px/content-files-folder-open.svg +20 -0
  277. package/assets/icons/24px/content-files-newspaper.svg +23 -0
  278. package/assets/icons/24px/content-files-note-book.svg +14 -0
  279. package/assets/icons/24px/content-files-note.svg +15 -0
  280. package/assets/icons/24px/content-files-notepad.svg +24 -0
  281. package/assets/icons/24px/content-files-open-book-bookmark.svg +29 -0
  282. package/assets/icons/24px/content-files-open-book.svg +30 -0
  283. package/assets/icons/24px/content-files-pdf.svg +11 -0
  284. package/assets/icons/24px/content-files-pen.svg +29 -0
  285. package/assets/icons/24px/content-files-pencil-brush.svg +78 -0
  286. package/assets/icons/24px/content-files-pencil-ruler.svg +30 -0
  287. package/assets/icons/24px/content-files-phone-book.svg +13 -0
  288. package/assets/icons/24px/content-files-quill-ink.svg +28 -0
  289. package/assets/icons/24px/content-files-sticky-notepad-1.svg +18 -0
  290. package/assets/icons/24px/content-files-sticky-notepad-2.svg +31 -0
  291. package/assets/icons/24px/content-files-typing-machine.svg +21 -0
  292. package/assets/icons/24px/content-files-write-note.svg +38 -0
  293. package/assets/icons/24px/cursor-hand.svg +20 -0
  294. package/assets/icons/24px/design-artboard-shapes.svg +17 -0
  295. package/assets/icons/24px/design-color-brush-paint.svg +35 -0
  296. package/assets/icons/24px/design-color-bucket-brush.svg +30 -0
  297. package/assets/icons/24px/design-color-bucket.svg +25 -0
  298. package/assets/icons/24px/design-color-painting-palette.svg +42 -0
  299. package/assets/icons/24px/design-color-palette-sample.svg +35 -0
  300. package/assets/icons/24px/design-color-spray.svg +32 -0
  301. package/assets/icons/24px/design-color-tube-pastel.svg +16 -0
  302. package/assets/icons/24px/design-crop-edit-picture.svg +15 -0
  303. package/assets/icons/24px/design-drawing-board.svg +23 -0
  304. package/assets/icons/24px/design-dropper-1.svg +15 -0
  305. package/assets/icons/24px/design-dropper-2.svg +41 -0
  306. package/assets/icons/24px/design-half-circle-ruler.svg +26 -0
  307. package/assets/icons/24px/design-hilight.svg +36 -0
  308. package/assets/icons/24px/design-ink-pen.svg +33 -0
  309. package/assets/icons/24px/design-layer.svg +29 -0
  310. package/assets/icons/24px/design-magic-wand.svg +36 -0
  311. package/assets/icons/24px/design-pencil.svg +13 -0
  312. package/assets/icons/24px/design-ruler.svg +12 -0
  313. package/assets/icons/24px/design-stamp.svg +24 -0
  314. package/assets/icons/24px/design-vectors-pen-new-anchor.svg +30 -0
  315. package/assets/icons/24px/ecology-bush.svg +39 -0
  316. package/assets/icons/24px/ecology-cactus.svg +38 -0
  317. package/assets/icons/24px/ecology-clean-battery.svg +29 -0
  318. package/assets/icons/24px/ecology-clean-car-cable-charge.svg +25 -0
  319. package/assets/icons/24px/ecology-global-house.svg +19 -0
  320. package/assets/icons/24px/ecology-global-warming-globe-fire.svg +42 -0
  321. package/assets/icons/24px/ecology-global-warming-globe.svg +40 -0
  322. package/assets/icons/24px/ecology-gmo-food-fruit.svg +41 -0
  323. package/assets/icons/24px/ecology-growth-plant.svg +36 -0
  324. package/assets/icons/24px/ecology-leaf-bug.svg +39 -0
  325. package/assets/icons/24px/ecology-nuclear-energy.svg +30 -0
  326. package/assets/icons/24px/ecology-organic-sun-growth.svg +30 -0
  327. package/assets/icons/24px/ecology-plant-growth-soil-nature.svg +54 -0
  328. package/assets/icons/24px/ecology-renewable-energy-solar-panel.svg +25 -0
  329. package/assets/icons/24px/ecology-renewable-energy-wind-turbine.svg +43 -0
  330. package/assets/icons/24px/ecology-solar-cell.svg +28 -0
  331. package/assets/icons/24px/ecology-tree.svg +34 -0
  332. package/assets/icons/24px/ecology-windmill-1.svg +56 -0
  333. package/assets/icons/24px/ecology-windmill-2.svg +22 -0
  334. package/assets/icons/24px/ecology-wood-plant-grow.svg +32 -0
  335. package/assets/icons/24px/email-chat-think.svg +27 -0
  336. package/assets/icons/24px/email-emoji-smile-smart.svg +31 -0
  337. package/assets/icons/24px/email-envelope-close.svg +35 -0
  338. package/assets/icons/24px/email-envelope-open.svg +35 -0
  339. package/assets/icons/24px/email-envelope.svg +13 -0
  340. package/assets/icons/24px/email-forward-mail.svg +29 -0
  341. package/assets/icons/24px/email-mail-chat.svg +20 -0
  342. package/assets/icons/24px/email-mail-open-address.svg +34 -0
  343. package/assets/icons/24px/email-mailbox-close.svg +9 -0
  344. package/assets/icons/24px/email-mailbox-open.svg +16 -0
  345. package/assets/icons/24px/email-mailbox.svg +15 -0
  346. package/assets/icons/24px/email-stamp-mail.svg +27 -0
  347. package/assets/icons/24px/email-tray.svg +16 -0
  348. package/assets/icons/24px/entertainment-events-hobbies-board-game-dice.svg +28 -0
  349. package/assets/icons/24px/entertainment-events-hobbies-bomb.svg +20 -0
  350. package/assets/icons/24px/entertainment-events-hobbies-card-game-card-club.svg +17 -0
  351. package/assets/icons/24px/entertainment-events-hobbies-chess-knight.svg +28 -0
  352. package/assets/icons/24px/entertainment-events-hobbies-chess-pawn.svg +18 -0
  353. package/assets/icons/24px/entertainment-events-hobbies-chess-rook.svg +15 -0
  354. package/assets/icons/24px/entertainment-events-hobbies-film-camrea.svg +19 -0
  355. package/assets/icons/24px/entertainment-events-hobbies-film-player.svg +14 -0
  356. package/assets/icons/24px/entertainment-events-hobbies-film-roll.svg +30 -0
  357. package/assets/icons/24px/entertainment-events-hobbies-game-machines-arcade-1.svg +18 -0
  358. package/assets/icons/24px/entertainment-events-hobbies-game-machines-arcade-2.svg +20 -0
  359. package/assets/icons/24px/entertainment-events-hobbies-game-pool-snooker-ball.svg +29 -0
  360. package/assets/icons/24px/entertainment-events-hobbies-glasses-3d.svg +38 -0
  361. package/assets/icons/24px/entertainment-events-hobbies-horror-ghost.svg +43 -0
  362. package/assets/icons/24px/entertainment-events-hobbies-popcorn.svg +30 -0
  363. package/assets/icons/24px/entertainment-events-hobbies-record-player.svg +21 -0
  364. package/assets/icons/24px/entertainment-events-hobbies-reward-winner-talent.svg +18 -0
  365. package/assets/icons/24px/entertainment-events-hobbies-ticket.svg +31 -0
  366. package/assets/icons/24px/entertainment-events-hobbies-video-camera-film-1.svg +40 -0
  367. package/assets/icons/24px/entertainment-events-hobbies-video-camera-film-2.svg +39 -0
  368. package/assets/icons/24px/entertainment-events-hobbies-video-camera-film-3.svg +32 -0
  369. package/assets/icons/24px/entertainment-events-hobbies-video-movie-producer-director-chair.svg +23 -0
  370. package/assets/icons/24px/food-drink-bread.svg +18 -0
  371. package/assets/icons/24px/food-drink-coffee-cup.svg +12 -0
  372. package/assets/icons/24px/food-drink-coffee.svg +41 -0
  373. package/assets/icons/24px/food-drink-desert-cake-pond.svg +27 -0
  374. package/assets/icons/24px/food-drink-desert-cake.svg +30 -0
  375. package/assets/icons/24px/food-drink-desert-cotton-candy.svg +40 -0
  376. package/assets/icons/24px/food-drink-desert-cupcake.svg +31 -0
  377. package/assets/icons/24px/food-drink-desert-donut.svg +56 -0
  378. package/assets/icons/24px/food-drink-desert-icecream.svg +16 -0
  379. package/assets/icons/24px/food-drink-egg.svg +28 -0
  380. package/assets/icons/24px/food-drink-fish-bone.svg +22 -0
  381. package/assets/icons/24px/food-drink-fish.svg +35 -0
  382. package/assets/icons/24px/food-drink-fried-chicken.svg +35 -0
  383. package/assets/icons/24px/food-drink-fruit-cherry.svg +30 -0
  384. package/assets/icons/24px/food-drink-hamburger.svg +26 -0
  385. package/assets/icons/24px/food-drink-milk.svg +25 -0
  386. package/assets/icons/24px/food-drink-pizza.svg +40 -0
  387. package/assets/icons/24px/food-drink-rice-ball.svg +36 -0
  388. package/assets/icons/24px/food-drink-sushi.svg +27 -0
  389. package/assets/icons/24px/food-drink-tea.svg +29 -0
  390. package/assets/icons/24px/hand-awesome.svg +23 -0
  391. package/assets/icons/24px/hand-cross-finger-heart.svg +38 -0
  392. package/assets/icons/24px/hand-dislike.svg +22 -0
  393. package/assets/icons/24px/hand-fight-2-finger.svg +33 -0
  394. package/assets/icons/24px/hand-fiist.svg +19 -0
  395. package/assets/icons/24px/hand-four.svg +22 -0
  396. package/assets/icons/24px/hand-fuck-middle-finger.svg +21 -0
  397. package/assets/icons/24px/hand-gesture-finger-click.svg +27 -0
  398. package/assets/icons/24px/hand-like.svg +22 -0
  399. package/assets/icons/24px/hand-little-finger.svg +18 -0
  400. package/assets/icons/24px/hand-love-sign.svg +19 -0
  401. package/assets/icons/24px/hand-love.svg +23 -0
  402. package/assets/icons/24px/hand-ok.svg +32 -0
  403. package/assets/icons/24px/hand-point.svg +20 -0
  404. package/assets/icons/24px/hand-three-finger.svg +22 -0
  405. package/assets/icons/24px/hand-writing.svg +30 -0
  406. package/assets/icons/24px/hand-zombie.svg +55 -0
  407. package/assets/icons/24px/hand-zoom.svg +28 -0
  408. package/assets/icons/24px/hand.svg +24 -0
  409. package/assets/icons/24px/health-ambulance-call.svg +28 -0
  410. package/assets/icons/24px/health-ambulance-car.svg +30 -0
  411. package/assets/icons/24px/health-anti-virus.svg +15 -0
  412. package/assets/icons/24px/health-bandage.svg +71 -0
  413. package/assets/icons/24px/health-blood-drop-type.svg +22 -0
  414. package/assets/icons/24px/health-brain-1.svg +48 -0
  415. package/assets/icons/24px/health-brain-2.svg +49 -0
  416. package/assets/icons/24px/health-dentistry-tooth.svg +32 -0
  417. package/assets/icons/24px/health-drug-medicine-bag-aid-1.svg +28 -0
  418. package/assets/icons/24px/health-drug-medicine-bag-aid-2.svg +16 -0
  419. package/assets/icons/24px/health-drug-medicine-water.svg +24 -0
  420. package/assets/icons/24px/health-drug-medicine.svg +21 -0
  421. package/assets/icons/24px/health-drugs-cannabis.svg +50 -0
  422. package/assets/icons/24px/health-drugs-pill.svg +21 -0
  423. package/assets/icons/24px/health-health-dead.svg +29 -0
  424. package/assets/icons/24px/health-hospital-building-1.svg +21 -0
  425. package/assets/icons/24px/health-hospital-building-2.svg +15 -0
  426. package/assets/icons/24px/health-injection.svg +37 -0
  427. package/assets/icons/24px/health-laboratory-test-blood-sugar.svg +65 -0
  428. package/assets/icons/24px/health-laboratory-test-stool-cup.svg +19 -0
  429. package/assets/icons/24px/health-laboratory.svg +24 -0
  430. package/assets/icons/24px/health-medical-notes.svg +16 -0
  431. package/assets/icons/24px/health-monitor-heart-beat.svg +41 -0
  432. package/assets/icons/24px/health-stool.svg +56 -0
  433. package/assets/icons/24px/health-transfusion-bag.svg +23 -0
  434. package/assets/icons/24px/health-virus.svg +31 -0
  435. package/assets/icons/24px/interface-essential-alarm-bell-off.svg +27 -0
  436. package/assets/icons/24px/interface-essential-alarm-bell-sleep.svg +44 -0
  437. package/assets/icons/24px/interface-essential-alert-caution.svg +28 -0
  438. package/assets/icons/24px/interface-essential-alert-circle-1.svg +9 -0
  439. package/assets/icons/24px/interface-essential-alert-circle-2.svg +32 -0
  440. package/assets/icons/24px/interface-essential-alert-triangle-1.svg +30 -0
  441. package/assets/icons/24px/interface-essential-alert-triangle-2.svg +9 -0
  442. package/assets/icons/24px/interface-essential-alert.svg +53 -0
  443. package/assets/icons/24px/interface-essential-battery.svg +12 -0
  444. package/assets/icons/24px/interface-essential-bin.svg +16 -0
  445. package/assets/icons/24px/interface-essential-blutooth.svg +31 -0
  446. package/assets/icons/24px/interface-essential-bookmark.svg +17 -0
  447. package/assets/icons/24px/interface-essential-bookmark_1.svg +23 -0
  448. package/assets/icons/24px/interface-essential-calendar-appointment.svg +20 -0
  449. package/assets/icons/24px/interface-essential-calendar-date.svg +12 -0
  450. package/assets/icons/24px/interface-essential-call-center-contact-help.svg +17 -0
  451. package/assets/icons/24px/interface-essential-clip-1.svg +45 -0
  452. package/assets/icons/24px/interface-essential-clip-2.svg +21 -0
  453. package/assets/icons/24px/interface-essential-clock.svg +31 -0
  454. package/assets/icons/24px/interface-essential-clound-download.svg +28 -0
  455. package/assets/icons/24px/interface-essential-cog-browser.svg +42 -0
  456. package/assets/icons/24px/interface-essential-cog-double.svg +60 -0
  457. package/assets/icons/24px/interface-essential-cog-hand-give.svg +41 -0
  458. package/assets/icons/24px/interface-essential-cog-search.svg +51 -0
  459. package/assets/icons/24px/interface-essential-crown.svg +30 -0
  460. package/assets/icons/24px/interface-essential-cursor-click-point.svg +35 -0
  461. package/assets/icons/24px/interface-essential-cursor-select.svg +23 -0
  462. package/assets/icons/24px/interface-essential-cursor.svg +25 -0
  463. package/assets/icons/24px/interface-essential-dial-pad-1.svg +23 -0
  464. package/assets/icons/24px/interface-essential-dial-pad-2.svg +22 -0
  465. package/assets/icons/24px/interface-essential-dial-pad-finger-1.svg +23 -0
  466. package/assets/icons/24px/interface-essential-dial-pad-finger-2.svg +38 -0
  467. package/assets/icons/24px/interface-essential-direction-button.svg +47 -0
  468. package/assets/icons/24px/interface-essential-edit-fill.svg +42 -0
  469. package/assets/icons/24px/interface-essential-eraser.svg +55 -0
  470. package/assets/icons/24px/interface-essential-expand-1.svg +22 -0
  471. package/assets/icons/24px/interface-essential-expand-2.svg +30 -0
  472. package/assets/icons/24px/interface-essential-expand-3.svg +53 -0
  473. package/assets/icons/24px/interface-essential-face-id-1.svg +44 -0
  474. package/assets/icons/24px/interface-essential-face-id.svg +33 -0
  475. package/assets/icons/24px/interface-essential-file-error.svg +11 -0
  476. package/assets/icons/24px/interface-essential-filter.svg +30 -0
  477. package/assets/icons/24px/interface-essential-find-text.svg +27 -0
  478. package/assets/icons/24px/interface-essential-finger-print-scan.svg +51 -0
  479. package/assets/icons/24px/interface-essential-flag.svg +15 -0
  480. package/assets/icons/24px/interface-essential-flash.svg +45 -0
  481. package/assets/icons/24px/interface-essential-flip-vertical-down.svg +20 -0
  482. package/assets/icons/24px/interface-essential-flip-vertical-up.svg +20 -0
  483. package/assets/icons/24px/interface-essential-floppy-disk.svg +18 -0
  484. package/assets/icons/24px/interface-essential-global-public.svg +17 -0
  485. package/assets/icons/24px/interface-essential-hammer-1.svg +33 -0
  486. package/assets/icons/24px/interface-essential-hammer-2.svg +32 -0
  487. package/assets/icons/24px/interface-essential-heart-favorite.svg +35 -0
  488. package/assets/icons/24px/interface-essential-hierarchy-1.svg +23 -0
  489. package/assets/icons/24px/interface-essential-hierarchy-2.svg +23 -0
  490. package/assets/icons/24px/interface-essential-hierarchy-3.svg +20 -0
  491. package/assets/icons/24px/interface-essential-hierarchy-4.svg +31 -0
  492. package/assets/icons/24px/interface-essential-hierarchy-5.svg +27 -0
  493. package/assets/icons/24px/interface-essential-hierarchy-files.svg +22 -0
  494. package/assets/icons/24px/interface-essential-home-1.svg +16 -0
  495. package/assets/icons/24px/interface-essential-home-2.svg +25 -0
  496. package/assets/icons/24px/interface-essential-hyperlink.svg +23 -0
  497. package/assets/icons/24px/interface-essential-information-circle-1.svg +32 -0
  498. package/assets/icons/24px/interface-essential-information-circle-2.svg +5 -0
  499. package/assets/icons/24px/interface-essential-iris-scan-approved.svg +33 -0
  500. package/assets/icons/24px/interface-essential-iris-scan.svg +35 -0
  501. package/assets/icons/24px/interface-essential-key-1.svg +40 -0
  502. package/assets/icons/24px/interface-essential-key-lock.svg +28 -0
  503. package/assets/icons/24px/interface-essential-key-login.svg +40 -0
  504. package/assets/icons/24px/interface-essential-key.svg +25 -0
  505. package/assets/icons/24px/interface-essential-keyboard-button-direction-1.svg +16 -0
  506. package/assets/icons/24px/interface-essential-keyboard-button-direction-2.svg +10 -0
  507. package/assets/icons/24px/interface-essential-light-bulb.svg +27 -0
  508. package/assets/icons/24px/interface-essential-link-broken-1.svg +39 -0
  509. package/assets/icons/24px/interface-essential-link-broken-2.svg +37 -0
  510. package/assets/icons/24px/interface-essential-link.svg +29 -0
  511. package/assets/icons/24px/interface-essential-list.svg +21 -0
  512. package/assets/icons/24px/interface-essential-loading-0-percent-1.svg +33 -0
  513. package/assets/icons/24px/interface-essential-loading-0-percent.svg +33 -0
  514. package/assets/icons/24px/interface-essential-loading-100-percent-1.svg +16 -0
  515. package/assets/icons/24px/interface-essential-loading-100-percent.svg +36 -0
  516. package/assets/icons/24px/interface-essential-loading-20-percent.svg +34 -0
  517. package/assets/icons/24px/interface-essential-loading-25-percent-1.svg +29 -0
  518. package/assets/icons/24px/interface-essential-loading-50-percent-1.svg +24 -0
  519. package/assets/icons/24px/interface-essential-loading-50-percent.svg +34 -0
  520. package/assets/icons/24px/interface-essential-loading-75-percent-1.svg +19 -0
  521. package/assets/icons/24px/interface-essential-loading-80-percent.svg +34 -0
  522. package/assets/icons/24px/interface-essential-loading-circle-1.svg +14 -0
  523. package/assets/icons/24px/interface-essential-loading-circle-2.svg +19 -0
  524. package/assets/icons/24px/interface-essential-loading-status.svg +15 -0
  525. package/assets/icons/24px/interface-essential-lock-1.svg +24 -0
  526. package/assets/icons/24px/interface-essential-lock-door-out.svg +23 -0
  527. package/assets/icons/24px/interface-essential-lock-shield.svg +35 -0
  528. package/assets/icons/24px/interface-essential-lock.svg +16 -0
  529. package/assets/icons/24px/interface-essential-magnet.svg +22 -0
  530. package/assets/icons/24px/interface-essential-map.svg +19 -0
  531. package/assets/icons/24px/interface-essential-message.svg +31 -0
  532. package/assets/icons/24px/interface-essential-microphone.svg +25 -0
  533. package/assets/icons/24px/interface-essential-move.svg +10 -0
  534. package/assets/icons/24px/interface-essential-navigation-left-circle-1.svg +5 -0
  535. package/assets/icons/24px/interface-essential-navigation-left-circle-2.svg +31 -0
  536. package/assets/icons/24px/interface-essential-navigation-menu-1.svg +17 -0
  537. package/assets/icons/24px/interface-essential-navigation-menu-2.svg +18 -0
  538. package/assets/icons/24px/interface-essential-navigation-menu-3.svg +20 -0
  539. package/assets/icons/24px/interface-essential-navigation-right-circle-1.svg +5 -0
  540. package/assets/icons/24px/interface-essential-navigation-right-circle-2.svg +31 -0
  541. package/assets/icons/24px/interface-essential-note-music.svg +14 -0
  542. package/assets/icons/24px/interface-essential-notification-alert.svg +47 -0
  543. package/assets/icons/24px/interface-essential-pacman-loading.svg +38 -0
  544. package/assets/icons/24px/interface-essential-paginate-filter-camera.svg +12 -0
  545. package/assets/icons/24px/interface-essential-paginate-filter-heart.svg +12 -0
  546. package/assets/icons/24px/interface-essential-paginate-filter-music.svg +15 -0
  547. package/assets/icons/24px/interface-essential-paginate-filter-picture.svg +23 -0
  548. package/assets/icons/24px/interface-essential-paginate-filter-video.svg +12 -0
  549. package/assets/icons/24px/interface-essential-password-type.svg +30 -0
  550. package/assets/icons/24px/interface-essential-pencil-edit-1.svg +13 -0
  551. package/assets/icons/24px/interface-essential-pencil-edit-2.svg +59 -0
  552. package/assets/icons/24px/interface-essential-pie-chart-poll-report-1.svg +41 -0
  553. package/assets/icons/24px/interface-essential-pie-chart-poll-report-2.svg +22 -0
  554. package/assets/icons/24px/interface-essential-pin.svg +40 -0
  555. package/assets/icons/24px/interface-essential-poll.svg +18 -0
  556. package/assets/icons/24px/interface-essential-print.svg +17 -0
  557. package/assets/icons/24px/interface-essential-profile-female.svg +35 -0
  558. package/assets/icons/24px/interface-essential-profile-male.svg +39 -0
  559. package/assets/icons/24px/interface-essential-protect-guard.svg +29 -0
  560. package/assets/icons/24px/interface-essential-protect-rubber-ring.svg +30 -0
  561. package/assets/icons/24px/interface-essential-question-help-circle-1.svg +5 -0
  562. package/assets/icons/24px/interface-essential-question-help-circle-2.svg +32 -0
  563. package/assets/icons/24px/interface-essential-question-help-square.svg +20 -0
  564. package/assets/icons/24px/interface-essential-recycle.svg +28 -0
  565. package/assets/icons/24px/interface-essential-reflect-down-up.svg +40 -0
  566. package/assets/icons/24px/interface-essential-reflect-down.svg +40 -0
  567. package/assets/icons/24px/interface-essential-refresh.svg +22 -0
  568. package/assets/icons/24px/interface-essential-safari-compass.svg +59 -0
  569. package/assets/icons/24px/interface-essential-satellite.svg +30 -0
  570. package/assets/icons/24px/interface-essential-scisor.svg +24 -0
  571. package/assets/icons/24px/interface-essential-scroll-horizontal.svg +31 -0
  572. package/assets/icons/24px/interface-essential-scroll-vertical.svg +31 -0
  573. package/assets/icons/24px/interface-essential-search-1.svg +27 -0
  574. package/assets/icons/24px/interface-essential-search-binocular.svg +37 -0
  575. package/assets/icons/24px/interface-essential-search-check.svg +24 -0
  576. package/assets/icons/24px/interface-essential-search-remove.svg +24 -0
  577. package/assets/icons/24px/interface-essential-send-mail.svg +20 -0
  578. package/assets/icons/24px/interface-essential-setting-cog.svg +51 -0
  579. package/assets/icons/24px/interface-essential-setting-slide.svg +15 -0
  580. package/assets/icons/24px/interface-essential-settings-toggle-horizontal.svg +20 -0
  581. package/assets/icons/24px/interface-essential-share-1.svg +17 -0
  582. package/assets/icons/24px/interface-essential-share-2.svg +18 -0
  583. package/assets/icons/24px/interface-essential-share-3.svg +16 -0
  584. package/assets/icons/24px/interface-essential-shrink-1.svg +24 -0
  585. package/assets/icons/24px/interface-essential-shrink-2.svg +30 -0
  586. package/assets/icons/24px/interface-essential-shrink-3.svg +53 -0
  587. package/assets/icons/24px/interface-essential-shrink-4.svg +27 -0
  588. package/assets/icons/24px/interface-essential-signin-expand.svg +43 -0
  589. package/assets/icons/24px/interface-essential-signin-login.svg +18 -0
  590. package/assets/icons/24px/interface-essential-signout-logout.svg +18 -0
  591. package/assets/icons/24px/interface-essential-skull-1.svg +29 -0
  592. package/assets/icons/24px/interface-essential-skull-2.svg +21 -0
  593. package/assets/icons/24px/interface-essential-sound.svg +34 -0
  594. package/assets/icons/24px/interface-essential-speaker-announce.svg +26 -0
  595. package/assets/icons/24px/interface-essential-stat.svg +20 -0
  596. package/assets/icons/24px/interface-essential-stop-sign-1.svg +44 -0
  597. package/assets/icons/24px/interface-essential-stop-sign-2.svg +13 -0
  598. package/assets/icons/24px/interface-essential-stopwatch.svg +39 -0
  599. package/assets/icons/24px/interface-essential-switch-off.svg +22 -0
  600. package/assets/icons/24px/interface-essential-switch-on.svg +27 -0
  601. package/assets/icons/24px/interface-essential-synchronize-arrows-square-1.svg +16 -0
  602. package/assets/icons/24px/interface-essential-synchronize-arrows-square-2.svg +12 -0
  603. package/assets/icons/24px/interface-essential-text-format-1.svg +21 -0
  604. package/assets/icons/24px/interface-essential-text-format-2.svg +10 -0
  605. package/assets/icons/24px/interface-essential-text-input-area-1.svg +18 -0
  606. package/assets/icons/24px/interface-essential-text-input-area-2.svg +24 -0
  607. package/assets/icons/24px/interface-essential-text-input-area-3.svg +36 -0
  608. package/assets/icons/24px/interface-essential-touch-id-lock.svg +32 -0
  609. package/assets/icons/24px/interface-essential-touch-id-smartphone.svg +30 -0
  610. package/assets/icons/24px/interface-essential-translate.svg +38 -0
  611. package/assets/icons/24px/interface-essential-trophy.svg +23 -0
  612. package/assets/icons/24px/interface-essential-view-eye.svg +35 -0
  613. package/assets/icons/24px/interface-essential-voice-id.svg +15 -0
  614. package/assets/icons/24px/interface-essential-waiting-hourglass-loading.svg +19 -0
  615. package/assets/icons/24px/interface-essential-watch-time.svg +11 -0
  616. package/assets/icons/24px/interface-essential-wifi-feed.svg +10 -0
  617. package/assets/icons/24px/interface-essential-wifi-signal.svg +47 -0
  618. package/assets/icons/24px/interface-essential-wireless.svg +47 -0
  619. package/assets/icons/24px/interface-essential-wrench-1.svg +30 -0
  620. package/assets/icons/24px/interface-essential-wrench-2.svg +52 -0
  621. package/assets/icons/24px/interface-essential-zoom-in-page.svg +30 -0
  622. package/assets/icons/24px/interface-essential-zoom-in.svg +24 -0
  623. package/assets/icons/24px/interface-essential-zoom-out-page.svg +30 -0
  624. package/assets/icons/24px/interface-essential-zoom-out.svg +24 -0
  625. package/assets/icons/24px/internet-network-arrow-sync.svg +30 -0
  626. package/assets/icons/24px/internet-network-cloud-error.svg +35 -0
  627. package/assets/icons/24px/internet-network-cloud-off.svg +23 -0
  628. package/assets/icons/24px/internet-network-computer-download.svg +13 -0
  629. package/assets/icons/24px/internet-network-computer-upload.svg +13 -0
  630. package/assets/icons/24px/internet-network-download.svg +18 -0
  631. package/assets/icons/24px/internet-network-laptop.svg +18 -0
  632. package/assets/icons/24px/internet-network-upload.svg +18 -0
  633. package/assets/icons/24px/internet-network-wifi-monitor.svg +27 -0
  634. package/assets/icons/24px/internet-network-www.svg +35 -0
  635. package/assets/icons/24px/logo-discord.svg +9 -0
  636. package/assets/icons/24px/logo-linkedin.svg +21 -0
  637. package/assets/icons/24px/logo-pinterest.svg +15 -0
  638. package/assets/icons/24px/logo-snapchat.svg +5 -0
  639. package/assets/icons/24px/logo-social-media-dropbox.svg +43 -0
  640. package/assets/icons/24px/logo-social-media-facebook-circle.svg +5 -0
  641. package/assets/icons/24px/logo-social-media-instagram-circle.svg +10 -0
  642. package/assets/icons/24px/logo-social-media-instagram.svg +17 -0
  643. package/assets/icons/24px/logo-social-media-old-instagram.svg +25 -0
  644. package/assets/icons/24px/logo-social-media-tiktok-circle.svg +8 -0
  645. package/assets/icons/24px/logo-social-media-tiktok.svg +18 -0
  646. package/assets/icons/24px/logo-social-media-twitter-circle.svg +8 -0
  647. package/assets/icons/24px/logo-social-media-youtube-circle.svg +5 -0
  648. package/assets/icons/24px/logo-social-media-youtube.svg +19 -0
  649. package/assets/icons/24px/logo-soundcloud-1.svg +23 -0
  650. package/assets/icons/24px/logo-soundcloud-2.svg +12 -0
  651. package/assets/icons/24px/logo-spotify.svg +5 -0
  652. package/assets/icons/24px/logo-twitch-1.svg +8 -0
  653. package/assets/icons/24px/logo-twitch-2.svg +37 -0
  654. package/assets/icons/24px/logo-twitter.svg +31 -0
  655. package/assets/icons/24px/logo-whatapp.svg +28 -0
  656. package/assets/icons/24px/map-navigation-compass-direction.svg +31 -0
  657. package/assets/icons/24px/map-navigation-location-focus.svg +23 -0
  658. package/assets/icons/24px/map-navigation-pin-location-1.svg +31 -0
  659. package/assets/icons/24px/map-navigation-pin-location-2.svg +35 -0
  660. package/assets/icons/24px/map-navigation-pin-location-trip.svg +41 -0
  661. package/assets/icons/24px/mobile-phone.svg +22 -0
  662. package/assets/icons/24px/money-payments-accounting-bill-money-1.svg +35 -0
  663. package/assets/icons/24px/money-payments-accounting-bill-money-2.svg +39 -0
  664. package/assets/icons/24px/money-payments-accounting-calculator.svg +25 -0
  665. package/assets/icons/24px/money-payments-bank.svg +24 -0
  666. package/assets/icons/24px/money-payments-calculator-app.svg +17 -0
  667. package/assets/icons/24px/money-payments-cash-payment-coin.svg +36 -0
  668. package/assets/icons/24px/money-payments-credit-card-mastercard.svg +26 -0
  669. package/assets/icons/24px/money-payments-credit-card-visa.svg +22 -0
  670. package/assets/icons/24px/money-payments-currency-euro-dollar-exchange.svg +44 -0
  671. package/assets/icons/24px/money-payments-diamond.svg +56 -0
  672. package/assets/icons/24px/money-payments-saving-treasure.svg +18 -0
  673. package/assets/icons/24px/money-payments-self-payment.svg +23 -0
  674. package/assets/icons/24px/money-payments-smartphone-pay-dollar.svg +24 -0
  675. package/assets/icons/24px/multiple-user.svg +25 -0
  676. package/assets/icons/24px/music-album-cd-disk-playlist.svg +22 -0
  677. package/assets/icons/24px/music-clef-sheet.svg +28 -0
  678. package/assets/icons/24px/music-disk-cd-1.svg +39 -0
  679. package/assets/icons/24px/music-disk-cd-2.svg +47 -0
  680. package/assets/icons/24px/music-headphones-human.svg +30 -0
  681. package/assets/icons/24px/music-microphone-1.svg +17 -0
  682. package/assets/icons/24px/music-microphone-2.svg +26 -0
  683. package/assets/icons/24px/music-microphone-off.svg +28 -0
  684. package/assets/icons/24px/music-notes-music-1.svg +14 -0
  685. package/assets/icons/24px/music-notes-music-2.svg +47 -0
  686. package/assets/icons/24px/music-radio-stereo.svg +38 -0
  687. package/assets/icons/24px/music-speaker.svg +27 -0
  688. package/assets/icons/24px/music-vinyl-record.svg +8 -0
  689. package/assets/icons/24px/music-walkman-cassette.svg +30 -0
  690. package/assets/icons/24px/non-gmo-fertilizer.svg +41 -0
  691. package/assets/icons/24px/notification-email.svg +16 -0
  692. package/assets/icons/24px/pet-animals-bear.svg +33 -0
  693. package/assets/icons/24px/pet-animals-buffalo.svg +41 -0
  694. package/assets/icons/24px/pet-animals-cat.svg +39 -0
  695. package/assets/icons/24px/pet-animals-dog.svg +41 -0
  696. package/assets/icons/24px/pet-animals-frog-face.svg +36 -0
  697. package/assets/icons/24px/pet-animals-frog.svg +45 -0
  698. package/assets/icons/24px/pet-animals-gorilla.svg +30 -0
  699. package/assets/icons/24px/pet-animals-ox.svg +39 -0
  700. package/assets/icons/24px/pet-animals-pig.svg +33 -0
  701. package/assets/icons/24px/pet-animals-rabbit-1.svg +37 -0
  702. package/assets/icons/24px/pet-animals-rabbit-2.svg +33 -0
  703. package/assets/icons/24px/pet-animals-turtle.svg +36 -0
  704. package/assets/icons/24px/phone-actions-remove-1.svg +13 -0
  705. package/assets/icons/24px/phone-actions-remove-2.svg +14 -0
  706. package/assets/icons/24px/phone-incoming-call.svg +26 -0
  707. package/assets/icons/24px/phone-off-1.svg +35 -0
  708. package/assets/icons/24px/phone-off-2.svg +24 -0
  709. package/assets/icons/24px/phone-scan-qr-code-1.svg +18 -0
  710. package/assets/icons/24px/phone-scan-qr-code-2.svg +31 -0
  711. package/assets/icons/24px/phone-signal-full.svg +14 -0
  712. package/assets/icons/24px/phone-vibrate.svg +44 -0
  713. package/assets/icons/24px/photography-camera-1.svg +27 -0
  714. package/assets/icons/24px/photography-equipment-film-print.svg +23 -0
  715. package/assets/icons/24px/photography-file-picture.svg +18 -0
  716. package/assets/icons/24px/photography-focus-flower.svg +24 -0
  717. package/assets/icons/24px/photography-frame-picture.svg +32 -0
  718. package/assets/icons/24px/photography-light-mode-flash-on.svg +31 -0
  719. package/assets/icons/24px/photography-photo-image.svg +26 -0
  720. package/assets/icons/24px/photography-picture-polaroid.svg +25 -0
  721. package/assets/icons/24px/photography-retouch-wand-star.svg +48 -0
  722. package/assets/icons/24px/photography-retouch-wand.svg +47 -0
  723. package/assets/icons/24px/photography-taking-pictures-circle-alternate.svg +40 -0
  724. package/assets/icons/24px/real-estate-building-1.svg +11 -0
  725. package/assets/icons/24px/real-estate-building-2.svg +13 -0
  726. package/assets/icons/24px/real-estate-building-3.svg +28 -0
  727. package/assets/icons/24px/real-estate-building-4.svg +23 -0
  728. package/assets/icons/24px/real-estate-building-ad.svg +17 -0
  729. package/assets/icons/24px/real-estate-building-factory.svg +17 -0
  730. package/assets/icons/24px/real-estate-building-house.svg +15 -0
  731. package/assets/icons/24px/real-estate-sign-building.svg +22 -0
  732. package/assets/icons/24px/romance-heart-lock.svg +34 -0
  733. package/assets/icons/24px/romance-love-letter-open.svg +31 -0
  734. package/assets/icons/24px/school-science-bag.svg +23 -0
  735. package/assets/icons/24px/school-science-dna.svg +21 -0
  736. package/assets/icons/24px/school-science-graduation-cap.svg +33 -0
  737. package/assets/icons/24px/school-science-test-flask.svg +28 -0
  738. package/assets/icons/24px/search-coding.svg +36 -0
  739. package/assets/icons/24px/search-user.svg +30 -0
  740. package/assets/icons/24px/send-email.svg +24 -0
  741. package/assets/icons/24px/shopping-shipping-bag-1.svg +9 -0
  742. package/assets/icons/24px/shopping-shipping-bag-2.svg +22 -0
  743. package/assets/icons/24px/shopping-shipping-barcode.svg +21 -0
  744. package/assets/icons/24px/shopping-shipping-basket.svg +14 -0
  745. package/assets/icons/24px/shopping-shipping-box.svg +11 -0
  746. package/assets/icons/24px/shopping-shipping-cart.svg +25 -0
  747. package/assets/icons/24px/shopping-shipping-crack-1.svg +17 -0
  748. package/assets/icons/24px/shopping-shipping-crack-2.svg +18 -0
  749. package/assets/icons/24px/shopping-shipping-delivery-person-motorcycle.svg +31 -0
  750. package/assets/icons/24px/shopping-shipping-delivery-truck.svg +24 -0
  751. package/assets/icons/24px/shopping-shipping-discount-coupon.svg +17 -0
  752. package/assets/icons/24px/shopping-shipping-loading-box.svg +16 -0
  753. package/assets/icons/24px/shopping-shipping-products-gift.svg +28 -0
  754. package/assets/icons/24px/shopping-shipping-receipt-slip.svg +51 -0
  755. package/assets/icons/24px/shopping-shipping-shipment-deliver.svg +28 -0
  756. package/assets/icons/24px/shopping-shipping-shop.svg +17 -0
  757. package/assets/icons/24px/shopping-shipping-upload-information.svg +17 -0
  758. package/assets/icons/24px/shopping-shipping-warehouse-truck-delivery.svg +26 -0
  759. package/assets/icons/24px/shopping-shipping-weight-kg.svg +19 -0
  760. package/assets/icons/24px/single-user-shield.svg +33 -0
  761. package/assets/icons/24px/social-rewards-certified-diploma.svg +33 -0
  762. package/assets/icons/24px/social-rewards-certified-ribbon.svg +21 -0
  763. package/assets/icons/24px/social-rewards-flag.svg +11 -0
  764. package/assets/icons/24px/social-rewards-heart-like-circle.svg +31 -0
  765. package/assets/icons/24px/social-rewards-like-bubble.svg +37 -0
  766. package/assets/icons/24px/social-rewards-like-circle.svg +43 -0
  767. package/assets/icons/24px/social-rewards-rating-star-1.svg +47 -0
  768. package/assets/icons/24px/social-rewards-rating-star-2.svg +16 -0
  769. package/assets/icons/24px/social-rewards-reward-gift.svg +20 -0
  770. package/assets/icons/24px/social-rewards-trends-hot-flame.svg +31 -0
  771. package/assets/icons/24px/social-rewards-vip-crown-king.svg +30 -0
  772. package/assets/icons/24px/technology-drone-camera.svg +22 -0
  773. package/assets/icons/24px/technology-drone-signal.svg +28 -0
  774. package/assets/icons/24px/technology-robot-ai-signal-1.svg +38 -0
  775. package/assets/icons/24px/technology-robot-ai-signal-2.svg +35 -0
  776. package/assets/icons/24px/technology-robot-ai.svg +27 -0
  777. package/assets/icons/24px/transportation-bicycle.svg +23 -0
  778. package/assets/icons/24px/transportation-helicopter.svg +20 -0
  779. package/assets/icons/24px/transportation-motorcycle.svg +28 -0
  780. package/assets/icons/24px/transportation-plane.svg +29 -0
  781. package/assets/icons/24px/transportation-train.svg +23 -0
  782. package/assets/icons/24px/transportation-truck.svg +18 -0
  783. package/assets/icons/24px/transportation-vintage-train.svg +33 -0
  784. package/assets/icons/24px/travel-wayfinding-balloon.svg +22 -0
  785. package/assets/icons/24px/travel-wayfinding-beach-coconut-tree.svg +50 -0
  786. package/assets/icons/24px/travel-wayfinding-beach-umbrella.svg +38 -0
  787. package/assets/icons/24px/travel-wayfinding-pool-ladder.svg +19 -0
  788. package/assets/icons/24px/ui-design-website.svg +21 -0
  789. package/assets/icons/24px/user-gender-female-male.svg +31 -0
  790. package/assets/icons/24px/user-gender-female.svg +22 -0
  791. package/assets/icons/24px/user-gender-gay.svg +33 -0
  792. package/assets/icons/24px/user-gender-lesbian.svg +34 -0
  793. package/assets/icons/24px/user-gender-male.svg +27 -0
  794. package/assets/icons/24px/user-man-love.svg +19 -0
  795. package/assets/icons/24px/user-single-aim.svg +35 -0
  796. package/assets/icons/24px/user-sleep.svg +31 -0
  797. package/assets/icons/24px/user-woman-increasing-arrow.svg +26 -0
  798. package/assets/icons/24px/video-movies-play.svg +37 -0
  799. package/assets/icons/24px/video-movies-player.svg +15 -0
  800. package/assets/icons/24px/video-movies-set-equipment.svg +11 -0
  801. package/assets/icons/24px/video-movies-square-off.svg +22 -0
  802. package/assets/icons/24px/video-movies-video-square.svg +24 -0
  803. package/assets/icons/24px/video-movies-vintage-tv-1.svg +23 -0
  804. package/assets/icons/24px/video-movies-vintage-tv-2.svg +19 -0
  805. package/assets/icons/24px/video-movies-vintage-tv-3.svg +21 -0
  806. package/assets/icons/24px/vintage-phone.svg +37 -0
  807. package/assets/icons/24px/weather-cloud-sun-fine.svg +28 -0
  808. package/assets/icons/24px/weather-cresent-moon-stars.svg +31 -0
  809. package/assets/icons/24px/weather-meteor.svg +50 -0
  810. package/assets/icons/24px/weather-moon.svg +36 -0
  811. package/assets/icons/24px/weather-rainbow.svg +20 -0
  812. package/assets/icons/24px/weather-snowman.svg +31 -0
  813. package/assets/icons/24px/weather-temperature-thermometer.svg +11 -0
  814. package/assets/icons/24px/weather-umbrella-snowing.svg +28 -0
  815. package/assets/icons/24px/weather-umbrella.svg +40 -0
  816. package/assets/icons/24px/weather-wind-flag.svg +32 -0
  817. package/assets/scrollbar-background-dark.svg +12 -0
  818. package/base.css +813 -19
  819. package/components/core/.gitkeep +0 -0
  820. package/components/core/Alert/Alert.meta.ts +99 -0
  821. package/components/core/Alert/Alert.schema.json +21 -30
  822. package/components/core/Alert/Alert.tsx +154 -0
  823. package/components/core/AlertDialog/AlertDialog.meta.ts +47 -0
  824. package/components/core/AlertDialog/AlertDialog.schema.json +33 -0
  825. package/components/core/AlertDialog/AlertDialog.test.tsx +72 -0
  826. package/components/core/AlertDialog/AlertDialog.tsx +273 -0
  827. package/components/core/Avatar/Avatar.meta.ts +79 -0
  828. package/components/core/Avatar/Avatar.schema.json +55 -0
  829. package/components/core/Avatar/Avatar.tsx +86 -0
  830. package/components/core/Badge/Badge.meta.ts +52 -0
  831. package/components/core/Badge/Badge.schema.json +11 -2
  832. package/components/core/Badge/Badge.tsx +69 -0
  833. package/components/core/Breadcrumbs/Breadcrumbs.meta.ts +70 -0
  834. package/components/core/Breadcrumbs/Breadcrumbs.schema.json +8 -9
  835. package/components/core/Breadcrumbs/Breadcrumbs.tsx +88 -0
  836. package/components/core/Button/Button.meta.ts +168 -0
  837. package/components/core/Button/Button.schema.json +84 -29
  838. package/components/core/Button/Button.test.tsx +38 -0
  839. package/components/core/Button/Button.tsx +291 -0
  840. package/components/core/Card/Card.meta.ts +87 -0
  841. package/components/core/Card/Card.schema.json +39 -13
  842. package/components/core/Card/Card.tsx +126 -0
  843. package/components/core/Checkbox/Checkbox.meta.ts +54 -0
  844. package/components/core/Checkbox/Checkbox.schema.json +4 -9
  845. package/components/core/Checkbox/Checkbox.test.tsx +132 -0
  846. package/components/core/Checkbox/Checkbox.tsx +315 -0
  847. package/components/core/Checkbox/Radio.meta.ts +51 -0
  848. package/components/core/Checkbox/Radio.schema.json +38 -0
  849. package/components/core/Collapsible/Collapsible.meta.ts +65 -0
  850. package/components/core/Collapsible/Collapsible.schema.json +42 -0
  851. package/components/core/Collapsible/Collapsible.tsx +140 -0
  852. package/components/core/Combobox/Combobox.meta.ts +74 -0
  853. package/components/core/Combobox/Combobox.schema.json +45 -0
  854. package/components/core/Combobox/Combobox.test.tsx +56 -0
  855. package/components/core/Combobox/Combobox.tsx +326 -0
  856. package/components/core/ContextMenu/ContextMenu.meta.ts +34 -0
  857. package/components/core/ContextMenu/ContextMenu.schema.json +9 -13
  858. package/components/core/ContextMenu/ContextMenu.test.tsx +114 -0
  859. package/components/core/ContextMenu/ContextMenu.tsx +163 -0
  860. package/components/core/CountdownTimer/CountdownTimer.meta.ts +73 -0
  861. package/components/core/CountdownTimer/CountdownTimer.schema.json +18 -31
  862. package/components/core/CountdownTimer/CountdownTimer.tsx +299 -0
  863. package/components/core/DialPanel/DialPanel.tsx +93 -0
  864. package/components/core/DialPanel/dialkit-rdna.css +322 -0
  865. package/components/core/Dialog/Dialog.meta.ts +49 -0
  866. package/components/core/Dialog/Dialog.schema.json +17 -23
  867. package/components/core/Dialog/Dialog.test.tsx +153 -0
  868. package/components/core/Dialog/Dialog.tsx +271 -0
  869. package/components/core/Drawer/Drawer.meta.ts +55 -0
  870. package/components/core/Drawer/Drawer.schema.json +44 -0
  871. package/components/core/Drawer/Drawer.test.tsx +67 -0
  872. package/components/core/Drawer/Drawer.tsx +316 -0
  873. package/components/core/DropdownMenu/DropdownMenu.meta.ts +51 -0
  874. package/components/core/DropdownMenu/DropdownMenu.schema.json +8 -27
  875. package/components/core/DropdownMenu/DropdownMenu.test.tsx +167 -0
  876. package/components/core/DropdownMenu/DropdownMenu.tsx +331 -0
  877. package/components/core/Icon/Icon.meta.ts +67 -0
  878. package/components/core/Icon/Icon.schema.json +47 -0
  879. package/components/core/Icon/Icon.tsx +10 -0
  880. package/components/core/Input/Input.meta.ts +106 -0
  881. package/components/core/Input/Input.schema.json +48 -5
  882. package/components/core/Input/Input.test.tsx +133 -0
  883. package/components/core/Input/Input.tsx +365 -0
  884. package/components/core/Input/TextArea.meta.ts +72 -0
  885. package/components/core/Input/TextArea.schema.json +40 -0
  886. package/components/core/InputSet/InputSet.meta.ts +39 -0
  887. package/components/core/InputSet/InputSet.schema.json +30 -0
  888. package/components/core/InputSet/InputSet.test.tsx +43 -0
  889. package/components/core/InputSet/InputSet.tsx +64 -0
  890. package/components/core/Menubar/Menubar.meta.ts +45 -0
  891. package/components/core/Menubar/Menubar.schema.json +32 -0
  892. package/components/core/Menubar/Menubar.tsx +223 -0
  893. package/components/core/Meter/Meter.meta.ts +79 -0
  894. package/components/core/Meter/Meter.schema.json +48 -0
  895. package/components/core/Meter/Meter.tsx +134 -0
  896. package/components/core/NavigationMenu/NavigationMenu.meta.ts +54 -0
  897. package/components/core/NavigationMenu/NavigationMenu.schema.json +39 -0
  898. package/components/core/NavigationMenu/NavigationMenu.tsx +253 -0
  899. package/components/core/NumberField/NumberField.meta.ts +75 -0
  900. package/components/core/NumberField/NumberField.schema.json +72 -0
  901. package/components/core/NumberField/NumberField.test.tsx +42 -0
  902. package/components/core/NumberField/NumberField.tsx +224 -0
  903. package/components/core/Pattern/Pattern.meta.ts +77 -0
  904. package/components/core/Pattern/Pattern.schema.json +105 -0
  905. package/components/core/Pattern/Pattern.tsx +65 -0
  906. package/components/core/Popover/Popover.meta.ts +44 -0
  907. package/components/core/Popover/Popover.schema.json +13 -28
  908. package/components/core/Popover/Popover.test.tsx +122 -0
  909. package/components/core/Popover/Popover.tsx +141 -0
  910. package/components/core/PreviewCard/PreviewCard.meta.ts +38 -0
  911. package/components/core/PreviewCard/PreviewCard.schema.json +27 -0
  912. package/components/core/PreviewCard/PreviewCard.test.tsx +30 -0
  913. package/components/core/PreviewCard/PreviewCard.tsx +120 -0
  914. package/components/core/ScrollArea/ScrollArea.meta.ts +46 -0
  915. package/components/core/ScrollArea/ScrollArea.schema.json +32 -0
  916. package/components/core/ScrollArea/ScrollArea.test.tsx +23 -0
  917. package/components/core/ScrollArea/ScrollArea.tsx +129 -0
  918. package/components/core/Select/Select.meta.ts +68 -0
  919. package/components/core/Select/Select.schema.json +8 -14
  920. package/components/core/Select/Select.test.tsx +195 -0
  921. package/components/core/Select/Select.tsx +258 -0
  922. package/components/core/Separator/Separator.meta.ts +76 -0
  923. package/components/core/Separator/Separator.schema.json +48 -0
  924. package/components/core/Separator/Separator.tsx +89 -0
  925. package/components/core/Sheet/Sheet.meta.ts +55 -0
  926. package/components/core/Sheet/Sheet.schema.json +25 -34
  927. package/components/core/Sheet/Sheet.test.tsx +108 -0
  928. package/components/core/Sheet/Sheet.tsx +270 -0
  929. package/components/core/Slider/Slider.meta.ts +62 -0
  930. package/components/core/Slider/Slider.schema.json +5 -10
  931. package/components/core/Slider/Slider.test.tsx +94 -0
  932. package/components/core/Slider/Slider.tsx +148 -0
  933. package/components/core/Spinner/Spinner.meta.ts +61 -0
  934. package/components/core/Spinner/Spinner.schema.json +44 -0
  935. package/components/core/Spinner/Spinner.tsx +138 -0
  936. package/components/core/Switch/Switch.meta.ts +67 -0
  937. package/components/core/Switch/Switch.schema.json +9 -15
  938. package/components/core/Switch/Switch.test.tsx +98 -0
  939. package/components/core/Switch/Switch.tsx +148 -0
  940. package/components/core/Tabs/Tabs.meta.ts +54 -0
  941. package/components/core/Tabs/Tabs.schema.json +29 -39
  942. package/components/core/Tabs/Tabs.test.tsx +181 -0
  943. package/components/core/Tabs/Tabs.tsx +474 -0
  944. package/components/core/Toast/Toast.meta.ts +56 -0
  945. package/components/core/Toast/Toast.schema.json +16 -30
  946. package/components/core/Toast/Toast.test.tsx +90 -0
  947. package/components/core/Toast/Toast.tsx +272 -0
  948. package/components/core/Toggle/Toggle.meta.ts +104 -0
  949. package/components/core/Toggle/Toggle.schema.json +94 -0
  950. package/components/core/Toggle/Toggle.test.tsx +64 -0
  951. package/components/core/Toggle/Toggle.tsx +174 -0
  952. package/components/core/ToggleGroup/ToggleGroup.meta.ts +105 -0
  953. package/components/core/ToggleGroup/ToggleGroup.schema.json +81 -0
  954. package/components/core/ToggleGroup/ToggleGroup.tsx +235 -0
  955. package/components/core/Toolbar/Toolbar.meta.ts +49 -0
  956. package/components/core/Toolbar/Toolbar.schema.json +34 -0
  957. package/components/core/Toolbar/Toolbar.tsx +251 -0
  958. package/components/core/Tooltip/Tooltip.meta.ts +91 -0
  959. package/components/core/Tooltip/Tooltip.schema.json +28 -16
  960. package/components/core/Tooltip/Tooltip.test.tsx +75 -0
  961. package/components/core/Tooltip/Tooltip.tsx +112 -0
  962. package/components/core/__tests__/base-ui-wrapper-policy.test.tsx +67 -0
  963. package/components/core/__tests__/createCompoundContext.test.tsx +37 -0
  964. package/components/core/__tests__/icons-package.test.tsx +43 -0
  965. package/components/core/__tests__/smoke.test.tsx +72 -0
  966. package/components/core/__tests__/style-authority-audit.test.tsx +187 -0
  967. package/components/core/index.ts +43 -0
  968. package/components/shared/createCompoundContext.ts +30 -0
  969. package/contract/system.ts +145 -0
  970. package/dark.css +1227 -73
  971. package/eslint/__tests__/contract-surface.test.mjs +76 -0
  972. package/eslint/__tests__/no-broad-rdna-disables.test.mjs +89 -0
  973. package/eslint/__tests__/no-clipped-shadow.test.mjs +64 -0
  974. package/eslint/__tests__/no-hardcoded-colors.test.mjs +316 -0
  975. package/eslint/__tests__/no-hardcoded-motion-contract.test.mjs +20 -0
  976. package/eslint/__tests__/no-hardcoded-motion.test.mjs +166 -0
  977. package/eslint/__tests__/no-hardcoded-spacing.test.mjs +144 -0
  978. package/eslint/__tests__/no-hardcoded-typography.test.mjs +162 -0
  979. package/eslint/__tests__/no-legacy-color-format.test.mjs +121 -0
  980. package/eslint/__tests__/no-mixed-style-authority.test.mjs +261 -0
  981. package/eslint/__tests__/no-pixel-border.test.mjs +40 -0
  982. package/eslint/__tests__/no-raw-radius.test.mjs +120 -0
  983. package/eslint/__tests__/no-raw-shadow.test.mjs +142 -0
  984. package/eslint/__tests__/no-removed-aliases.test.mjs +63 -0
  985. package/eslint/__tests__/no-viewport-breakpoints-in-window-layout.test.mjs +97 -0
  986. package/eslint/__tests__/pixel-corner-contract.test.mjs +20 -0
  987. package/eslint/__tests__/plugin-configs.test.mjs +82 -0
  988. package/eslint/__tests__/prefer-rdna-components.test.mjs +139 -0
  989. package/eslint/__tests__/rdna-disable-comment-utils.test.mjs +143 -0
  990. package/eslint/__tests__/report-new-rdna-exceptions.test.mjs +28 -0
  991. package/eslint/__tests__/require-exception-metadata.test.mjs +228 -0
  992. package/eslint/__tests__/root-eslint-config.test.mjs +13 -0
  993. package/eslint/__tests__/rule-import-sources.test.mjs +28 -0
  994. package/eslint/__tests__/shadow-typography-contract.test.mjs +20 -0
  995. package/eslint/__tests__/token-map-removal.test.mjs +37 -0
  996. package/eslint/contract.mjs +83 -0
  997. package/eslint/index.mjs +103 -0
  998. package/eslint/lib/no-legacy-color-format.mjs +52 -0
  999. package/eslint/rdna-disable-comment-utils.mjs +271 -0
  1000. package/eslint/rules/no-broad-rdna-disables.mjs +44 -0
  1001. package/eslint/rules/no-clipped-shadow.mjs +213 -0
  1002. package/eslint/rules/no-hardcoded-colors.mjs +594 -0
  1003. package/eslint/rules/no-hardcoded-motion.mjs +133 -0
  1004. package/eslint/rules/no-hardcoded-spacing.mjs +116 -0
  1005. package/eslint/rules/no-hardcoded-typography.mjs +124 -0
  1006. package/eslint/rules/no-mixed-style-authority.mjs +304 -0
  1007. package/eslint/rules/no-pixel-border.mjs +160 -0
  1008. package/eslint/rules/no-raw-radius.mjs +106 -0
  1009. package/eslint/rules/no-raw-shadow.mjs +142 -0
  1010. package/eslint/rules/no-removed-aliases.mjs +61 -0
  1011. package/eslint/rules/no-viewport-breakpoints-in-window-layout.mjs +62 -0
  1012. package/eslint/rules/prefer-rdna-components.mjs +146 -0
  1013. package/eslint/rules/require-exception-metadata.mjs +91 -0
  1014. package/eslint/utils.mjs +257 -0
  1015. package/fonts.css +9 -19
  1016. package/generated/ai-contract.json +478 -0
  1017. package/generated/contract.freshness.json +50 -0
  1018. package/generated/eslint-contract.json +343 -0
  1019. package/generated/figma/contracts/alert-dialog.contract.json +61 -0
  1020. package/generated/figma/contracts/alert.contract.json +147 -0
  1021. package/generated/figma/contracts/avatar.contract.json +108 -0
  1022. package/generated/figma/contracts/badge.contract.json +140 -0
  1023. package/generated/figma/contracts/breadcrumbs.contract.json +100 -0
  1024. package/generated/figma/contracts/button.contract.json +212 -0
  1025. package/generated/figma/contracts/card.contract.json +126 -0
  1026. package/generated/figma/contracts/checkbox.contract.json +130 -0
  1027. package/generated/figma/contracts/collapsible.contract.json +79 -0
  1028. package/generated/figma/contracts/combobox.contract.json +128 -0
  1029. package/generated/figma/contracts/context-menu.contract.json +52 -0
  1030. package/generated/figma/contracts/countdown-timer.contract.json +86 -0
  1031. package/generated/figma/contracts/dialog.contract.json +66 -0
  1032. package/generated/figma/contracts/drawer.contract.json +75 -0
  1033. package/generated/figma/contracts/dropdown-menu.contract.json +63 -0
  1034. package/generated/figma/contracts/icon.contract.json +85 -0
  1035. package/generated/figma/contracts/input-set.contract.json +71 -0
  1036. package/generated/figma/contracts/input.contract.json +157 -0
  1037. package/generated/figma/contracts/menubar.contract.json +60 -0
  1038. package/generated/figma/contracts/meter.contract.json +90 -0
  1039. package/generated/figma/contracts/navigation-menu.contract.json +67 -0
  1040. package/generated/figma/contracts/number-field.contract.json +139 -0
  1041. package/generated/figma/contracts/pattern.contract.json +136 -0
  1042. package/generated/figma/contracts/popover.contract.json +60 -0
  1043. package/generated/figma/contracts/preview-card.contract.json +55 -0
  1044. package/generated/figma/contracts/radio.contract.json +113 -0
  1045. package/generated/figma/contracts/scroll-area.contract.json +59 -0
  1046. package/generated/figma/contracts/select.contract.json +153 -0
  1047. package/generated/figma/contracts/separator.contract.json +122 -0
  1048. package/generated/figma/contracts/sheet.contract.json +73 -0
  1049. package/generated/figma/contracts/slider.contract.json +143 -0
  1050. package/generated/figma/contracts/spinner.contract.json +84 -0
  1051. package/generated/figma/contracts/switch.contract.json +128 -0
  1052. package/generated/figma/contracts/tabs.contract.json +78 -0
  1053. package/generated/figma/contracts/text-area.contract.json +110 -0
  1054. package/generated/figma/contracts/toast.contract.json +70 -0
  1055. package/generated/figma/contracts/toggle-group.contract.json +108 -0
  1056. package/generated/figma/contracts/toggle.contract.json +154 -0
  1057. package/generated/figma/contracts/toolbar.contract.json +61 -0
  1058. package/generated/figma/contracts/tooltip.contract.json +121 -0
  1059. package/generated/figma/primitive/color.tokens.json +122 -0
  1060. package/generated/figma/primitive/motion.tokens.json +49 -0
  1061. package/generated/figma/primitive/shape.tokens.json +175 -0
  1062. package/generated/figma/primitive/space.tokens.json +4 -0
  1063. package/generated/figma/primitive/typography.tokens.json +33 -0
  1064. package/generated/figma/rdna.tokens.json +1046 -0
  1065. package/generated/figma/semantic/semantic.tokens.json +659 -0
  1066. package/generated/figma/tokens.d.ts +6 -0
  1067. package/generated/figma/validation-report.json +17 -0
  1068. package/icons/DesktopIcons.tsx +126 -0
  1069. package/icons/Icon.tsx +199 -0
  1070. package/icons/generated/16/USDC.tsx +5 -0
  1071. package/icons/generated/16/broadcast-dish.tsx +5 -0
  1072. package/icons/generated/16/broken-battery.tsx +5 -0
  1073. package/icons/generated/16/calendar.tsx +5 -0
  1074. package/icons/generated/16/calendar2.tsx +5 -0
  1075. package/icons/generated/16/camera.tsx +5 -0
  1076. package/icons/generated/16/cd-horizontal.tsx +5 -0
  1077. package/icons/generated/16/cd.tsx +5 -0
  1078. package/icons/generated/16/cell-bars.tsx +5 -0
  1079. package/icons/generated/16/checkmark.tsx +5 -0
  1080. package/icons/generated/16/chevron-down.tsx +5 -0
  1081. package/icons/generated/16/chevron-left.tsx +5 -0
  1082. package/icons/generated/16/chevron-right.tsx +5 -0
  1083. package/icons/generated/16/clock.tsx +5 -0
  1084. package/icons/generated/16/close-filled.tsx +5 -0
  1085. package/icons/generated/16/close.tsx +5 -0
  1086. package/icons/generated/16/code-file.tsx +5 -0
  1087. package/icons/generated/16/code-folder.tsx +5 -0
  1088. package/icons/generated/16/code-window-filled.tsx +5 -0
  1089. package/icons/generated/16/code-window.tsx +5 -0
  1090. package/icons/generated/16/coins.tsx +5 -0
  1091. package/icons/generated/16/comments-blank.tsx +5 -0
  1092. package/icons/generated/16/comments-typing.tsx +5 -0
  1093. package/icons/generated/16/computer.tsx +5 -0
  1094. package/icons/generated/16/copied-to-clipboard.tsx +5 -0
  1095. package/icons/generated/16/copy-to-clipboard.tsx +5 -0
  1096. package/icons/generated/16/copy.tsx +5 -0
  1097. package/icons/generated/16/crosshair-3.tsx +5 -0
  1098. package/icons/generated/16/crosshair1.tsx +5 -0
  1099. package/icons/generated/16/crosshair2-retro.tsx +5 -0
  1100. package/icons/generated/16/crosshair2.tsx +5 -0
  1101. package/icons/generated/16/crosshair4.tsx +5 -0
  1102. package/icons/generated/16/cursor-text.tsx +5 -0
  1103. package/icons/generated/16/cursor2.tsx +5 -0
  1104. package/icons/generated/16/cut.tsx +5 -0
  1105. package/icons/generated/16/discord.tsx +5 -0
  1106. package/icons/generated/16/document-image.tsx +5 -0
  1107. package/icons/generated/16/document.tsx +5 -0
  1108. package/icons/generated/16/document2.tsx +5 -0
  1109. package/icons/generated/16/download.tsx +5 -0
  1110. package/icons/generated/16/eject.tsx +5 -0
  1111. package/icons/generated/16/electric.tsx +5 -0
  1112. package/icons/generated/16/envelope-closed.tsx +5 -0
  1113. package/icons/generated/16/envelope-open.tsx +5 -0
  1114. package/icons/generated/16/equalizer.tsx +5 -0
  1115. package/icons/generated/16/eye-hidden.tsx +5 -0
  1116. package/icons/generated/16/eye.tsx +5 -0
  1117. package/icons/generated/16/film-camera.tsx +5 -0
  1118. package/icons/generated/16/film-strip-outline.tsx +5 -0
  1119. package/icons/generated/16/film-strip.tsx +5 -0
  1120. package/icons/generated/16/fire.tsx +5 -0
  1121. package/icons/generated/16/folder-closed.tsx +5 -0
  1122. package/icons/generated/16/folder-open.tsx +5 -0
  1123. package/icons/generated/16/full-screen.tsx +5 -0
  1124. package/icons/generated/16/game-controller.tsx +5 -0
  1125. package/icons/generated/16/globe.tsx +5 -0
  1126. package/icons/generated/16/go-forward.tsx +5 -0
  1127. package/icons/generated/16/grid-3x3.tsx +5 -0
  1128. package/icons/generated/16/grip-horizontal.tsx +5 -0
  1129. package/icons/generated/16/grip-vertical.tsx +5 -0
  1130. package/icons/generated/16/hamburger.tsx +5 -0
  1131. package/icons/generated/16/hand-point.tsx +5 -0
  1132. package/icons/generated/16/hard-drive.tsx +5 -0
  1133. package/icons/generated/16/headphones.tsx +5 -0
  1134. package/icons/generated/16/heart.tsx +5 -0
  1135. package/icons/generated/16/home.tsx +5 -0
  1136. package/icons/generated/16/home2.tsx +5 -0
  1137. package/icons/generated/16/hourglass.tsx +5 -0
  1138. package/icons/generated/16/info-filled.tsx +5 -0
  1139. package/icons/generated/16/info.tsx +5 -0
  1140. package/icons/generated/16/joystick.tsx +5 -0
  1141. package/icons/generated/16/lightbulb.tsx +5 -0
  1142. package/icons/generated/16/lightbulb2.tsx +5 -0
  1143. package/icons/generated/16/line-chart.tsx +5 -0
  1144. package/icons/generated/16/list.tsx +5 -0
  1145. package/icons/generated/16/lock-closed.tsx +5 -0
  1146. package/icons/generated/16/lock-open.tsx +5 -0
  1147. package/icons/generated/16/microphone-mute.tsx +5 -0
  1148. package/icons/generated/16/microphone.tsx +5 -0
  1149. package/icons/generated/16/minus.tsx +5 -0
  1150. package/icons/generated/16/money.tsx +5 -0
  1151. package/icons/generated/16/moon.tsx +5 -0
  1152. package/icons/generated/16/more-horizontal.tsx +5 -0
  1153. package/icons/generated/16/more-vertical.tsx +5 -0
  1154. package/icons/generated/16/multiple-images.tsx +5 -0
  1155. package/icons/generated/16/music-8th-notes.tsx +5 -0
  1156. package/icons/generated/16/outline-box.tsx +5 -0
  1157. package/icons/generated/16/paper-plane.tsx +5 -0
  1158. package/icons/generated/16/pause.tsx +5 -0
  1159. package/icons/generated/16/pencil.tsx +5 -0
  1160. package/icons/generated/16/picture-in-picture.tsx +5 -0
  1161. package/icons/generated/16/pie-chart.tsx +5 -0
  1162. package/icons/generated/16/play.tsx +5 -0
  1163. package/icons/generated/16/plug.tsx +5 -0
  1164. package/icons/generated/16/plus.tsx +5 -0
  1165. package/icons/generated/16/power1.tsx +5 -0
  1166. package/icons/generated/16/power2.tsx +5 -0
  1167. package/icons/generated/16/print.tsx +5 -0
  1168. package/icons/generated/16/question-filled.tsx +5 -0
  1169. package/icons/generated/16/question.tsx +5 -0
  1170. package/icons/generated/16/queue.tsx +5 -0
  1171. package/icons/generated/16/rad-mark.tsx +5 -0
  1172. package/icons/generated/16/radiants-logo.tsx +5 -0
  1173. package/icons/generated/16/record-playback.tsx +5 -0
  1174. package/icons/generated/16/record-player.tsx +5 -0
  1175. package/icons/generated/16/refresh-filled.tsx +5 -0
  1176. package/icons/generated/16/refresh1.tsx +5 -0
  1177. package/icons/generated/16/reload.tsx +5 -0
  1178. package/icons/generated/16/resize-corner.tsx +5 -0
  1179. package/icons/generated/16/save-2.tsx +5 -0
  1180. package/icons/generated/16/save.tsx +5 -0
  1181. package/icons/generated/16/search.tsx +5 -0
  1182. package/icons/generated/16/seek-back.tsx +5 -0
  1183. package/icons/generated/16/seek-forward.tsx +5 -0
  1184. package/icons/generated/16/settings-cog.tsx +5 -0
  1185. package/icons/generated/16/share.tsx +5 -0
  1186. package/icons/generated/16/skip-back.tsx +5 -0
  1187. package/icons/generated/16/skip-forward.tsx +5 -0
  1188. package/icons/generated/16/skull-and-crossbones.tsx +5 -0
  1189. package/icons/generated/16/sort-descending.tsx +5 -0
  1190. package/icons/generated/16/sort-filter-empty.tsx +5 -0
  1191. package/icons/generated/16/sort-filter-filled.tsx +5 -0
  1192. package/icons/generated/16/sparkles.tsx +5 -0
  1193. package/icons/generated/16/stop-playback.tsx +5 -0
  1194. package/icons/generated/16/swap.tsx +5 -0
  1195. package/icons/generated/16/tape.tsx +5 -0
  1196. package/icons/generated/16/telephone.tsx +5 -0
  1197. package/icons/generated/16/trash-full.tsx +5 -0
  1198. package/icons/generated/16/trash-open.tsx +5 -0
  1199. package/icons/generated/16/trash.tsx +5 -0
  1200. package/icons/generated/16/trophy.tsx +5 -0
  1201. package/icons/generated/16/trophy2.tsx +5 -0
  1202. package/icons/generated/16/tv.tsx +5 -0
  1203. package/icons/generated/16/twitter.tsx +5 -0
  1204. package/icons/generated/16/upload.tsx +5 -0
  1205. package/icons/generated/16/usb-icon.tsx +5 -0
  1206. package/icons/generated/16/usb.tsx +5 -0
  1207. package/icons/generated/16/usericon.tsx +5 -0
  1208. package/icons/generated/16/volume-faders.tsx +5 -0
  1209. package/icons/generated/16/volume-high.tsx +5 -0
  1210. package/icons/generated/16/volume-low.tsx +5 -0
  1211. package/icons/generated/16/volume-med.tsx +5 -0
  1212. package/icons/generated/16/volume-mute.tsx +5 -0
  1213. package/icons/generated/16/warning-filled-outline.tsx +5 -0
  1214. package/icons/generated/16/warning-filled.tsx +5 -0
  1215. package/icons/generated/16/warning-hollow.tsx +5 -0
  1216. package/icons/generated/16/wifi.tsx +5 -0
  1217. package/icons/generated/16/window-error.tsx +5 -0
  1218. package/icons/generated/16/windows.tsx +5 -0
  1219. package/icons/generated/16/wrench.tsx +5 -0
  1220. package/icons/generated/16/zip-file.tsx +5 -0
  1221. package/icons/generated/16/zip-file2.tsx +5 -0
  1222. package/icons/generated/24/Business-Products-treasure.tsx +5 -0
  1223. package/icons/generated/24/beauty-barber-light-sign.tsx +5 -0
  1224. package/icons/generated/24/beauty-beard-style.tsx +5 -0
  1225. package/icons/generated/24/beauty-body-care-snail.tsx +5 -0
  1226. package/icons/generated/24/beauty-body-care-sun-screen.tsx +5 -0
  1227. package/icons/generated/24/beauty-cosmatic-brush-set.tsx +5 -0
  1228. package/icons/generated/24/beauty-cosmatic-lip-stick.tsx +5 -0
  1229. package/icons/generated/24/beauty-healthy-food-dish.tsx +5 -0
  1230. package/icons/generated/24/beauty-mirror-1.tsx +5 -0
  1231. package/icons/generated/24/beauty-mirror-2.tsx +5 -0
  1232. package/icons/generated/24/beauty-nail-polish.tsx +5 -0
  1233. package/icons/generated/24/beauty-perfume-1.tsx +5 -0
  1234. package/icons/generated/24/beauty-perfume-2.tsx +5 -0
  1235. package/icons/generated/24/building-real-eastate-deal-documant.tsx +5 -0
  1236. package/icons/generated/24/building-real-eastate-for-sale.tsx +5 -0
  1237. package/icons/generated/24/building-real-eastate-house-1.tsx +5 -0
  1238. package/icons/generated/24/building-real-eastate-house-2.tsx +5 -0
  1239. package/icons/generated/24/building-real-eastate-houses-location.tsx +5 -0
  1240. package/icons/generated/24/building-real-eastate-location.tsx +5 -0
  1241. package/icons/generated/24/building-real-eastate-project-blueprint.tsx +5 -0
  1242. package/icons/generated/24/building-real-eastate-sign-for-rent.tsx +5 -0
  1243. package/icons/generated/24/building-real-eastate-sign-house-1.tsx +5 -0
  1244. package/icons/generated/24/building-real-eastate-sign-house-2.tsx +5 -0
  1245. package/icons/generated/24/building-real-eastate-storage.tsx +5 -0
  1246. package/icons/generated/24/business-money-coin-currency.tsx +5 -0
  1247. package/icons/generated/24/business-prodect-diamond.tsx +5 -0
  1248. package/icons/generated/24/business-product-check.tsx +5 -0
  1249. package/icons/generated/24/business-product-piggy-bank.tsx +5 -0
  1250. package/icons/generated/24/business-product-price-tag.tsx +5 -0
  1251. package/icons/generated/24/business-product-report-present-grahp.tsx +5 -0
  1252. package/icons/generated/24/business-product-scale.tsx +5 -0
  1253. package/icons/generated/24/business-product-startup-1.tsx +5 -0
  1254. package/icons/generated/24/business-product-startup-2.tsx +5 -0
  1255. package/icons/generated/24/business-product-target.tsx +5 -0
  1256. package/icons/generated/24/business-products-bag-money.tsx +5 -0
  1257. package/icons/generated/24/business-products-bag.tsx +5 -0
  1258. package/icons/generated/24/business-products-bag_1.tsx +5 -0
  1259. package/icons/generated/24/business-products-boat-success.tsx +5 -0
  1260. package/icons/generated/24/business-products-cash-search.tsx +5 -0
  1261. package/icons/generated/24/business-products-cash-shield.tsx +5 -0
  1262. package/icons/generated/24/business-products-cash-user-man-message.tsx +5 -0
  1263. package/icons/generated/24/business-products-climb-top.tsx +5 -0
  1264. package/icons/generated/24/business-products-data-file-bars.tsx +5 -0
  1265. package/icons/generated/24/business-products-deal-handshake.tsx +5 -0
  1266. package/icons/generated/24/business-products-factory.tsx +5 -0
  1267. package/icons/generated/24/business-products-magic-rabbit.tsx +5 -0
  1268. package/icons/generated/24/business-products-money.tsx +5 -0
  1269. package/icons/generated/24/business-products-network-user.tsx +5 -0
  1270. package/icons/generated/24/business-products-performance-money-decrease.tsx +5 -0
  1271. package/icons/generated/24/business-products-performance-money-increase.tsx +5 -0
  1272. package/icons/generated/24/business-products-safe.tsx +5 -0
  1273. package/icons/generated/24/business-products-wallet-money.tsx +5 -0
  1274. package/icons/generated/24/change-clean-energy.tsx +5 -0
  1275. package/icons/generated/24/chat-email.tsx +5 -0
  1276. package/icons/generated/24/coding-app-website-ui.tsx +5 -0
  1277. package/icons/generated/24/coding-apps-websites-404-error.tsx +5 -0
  1278. package/icons/generated/24/coding-apps-websites-android.tsx +5 -0
  1279. package/icons/generated/24/coding-apps-websites-browser-bugs-2.tsx +5 -0
  1280. package/icons/generated/24/coding-apps-websites-conference.tsx +5 -0
  1281. package/icons/generated/24/coding-apps-websites-constuction.tsx +5 -0
  1282. package/icons/generated/24/coding-apps-websites-database.tsx +5 -0
  1283. package/icons/generated/24/coding-apps-websites-dinosaur-error.tsx +5 -0
  1284. package/icons/generated/24/coding-apps-websites-favorite-rate.tsx +5 -0
  1285. package/icons/generated/24/coding-apps-websites-finder.tsx +5 -0
  1286. package/icons/generated/24/coding-apps-websites-firewall.tsx +5 -0
  1287. package/icons/generated/24/coding-apps-websites-live-status.tsx +5 -0
  1288. package/icons/generated/24/coding-apps-websites-mobile.tsx +5 -0
  1289. package/icons/generated/24/coding-apps-websites-module.tsx +5 -0
  1290. package/icons/generated/24/coding-apps-websites-music-player.tsx +5 -0
  1291. package/icons/generated/24/coding-apps-websites-phone-tablet.tsx +5 -0
  1292. package/icons/generated/24/coding-apps-websites-plugin.tsx +5 -0
  1293. package/icons/generated/24/coding-apps-websites-programming-browser-bugs-1.tsx +5 -0
  1294. package/icons/generated/24/coding-apps-websites-programming-browser.tsx +5 -0
  1295. package/icons/generated/24/coding-apps-websites-programming-bug.tsx +5 -0
  1296. package/icons/generated/24/coding-apps-websites-programming-hold-code.tsx +5 -0
  1297. package/icons/generated/24/coding-apps-websites-search-bug.tsx +5 -0
  1298. package/icons/generated/24/coding-apps-websites-setting-computer.tsx +5 -0
  1299. package/icons/generated/24/coding-apps-websites-shield-lock.tsx +5 -0
  1300. package/icons/generated/24/coding-apps-websites-solves.tsx +5 -0
  1301. package/icons/generated/24/coding-apps-websites.tsx +5 -0
  1302. package/icons/generated/24/computer-old-electronics-bug.tsx +5 -0
  1303. package/icons/generated/24/computer-old-electronics.tsx +5 -0
  1304. package/icons/generated/24/computers-devices-electronics-battery-charge.tsx +5 -0
  1305. package/icons/generated/24/computers-devices-electronics-board.tsx +5 -0
  1306. package/icons/generated/24/computers-devices-electronics-chipset.tsx +5 -0
  1307. package/icons/generated/24/computers-devices-electronics-click-select-tablet.tsx +5 -0
  1308. package/icons/generated/24/computers-devices-electronics-desktop.tsx +5 -0
  1309. package/icons/generated/24/computers-devices-electronics-earpod-sound.tsx +5 -0
  1310. package/icons/generated/24/computers-devices-electronics-flash-drive-1.tsx +5 -0
  1311. package/icons/generated/24/computers-devices-electronics-flash-drive-2.tsx +5 -0
  1312. package/icons/generated/24/computers-devices-electronics-graphic-tablet-draw.tsx +5 -0
  1313. package/icons/generated/24/computers-devices-electronics-graphic-tablet.tsx +5 -0
  1314. package/icons/generated/24/computers-devices-electronics-harddisk.tsx +5 -0
  1315. package/icons/generated/24/computers-devices-electronics-keyboard-button.tsx +5 -0
  1316. package/icons/generated/24/computers-devices-electronics-keyboard-pad.tsx +5 -0
  1317. package/icons/generated/24/computers-devices-electronics-keyboard-wireless.tsx +5 -0
  1318. package/icons/generated/24/computers-devices-electronics-keyboard.tsx +5 -0
  1319. package/icons/generated/24/computers-devices-electronics-laptop.tsx +5 -0
  1320. package/icons/generated/24/computers-devices-electronics-memory.tsx +5 -0
  1321. package/icons/generated/24/computers-devices-electronics-mobile-qr-scan.tsx +5 -0
  1322. package/icons/generated/24/computers-devices-electronics-monitor.tsx +5 -0
  1323. package/icons/generated/24/computers-devices-electronics-mouse.tsx +5 -0
  1324. package/icons/generated/24/computers-devices-electronics-smart-watch.tsx +5 -0
  1325. package/icons/generated/24/computers-devices-electronics-tablet.tsx +5 -0
  1326. package/icons/generated/24/computers-devices-electronics-tape-cassette.tsx +5 -0
  1327. package/icons/generated/24/computers-devices-electronics-television-vintage.tsx +5 -0
  1328. package/icons/generated/24/computers-devices-electronics-vintage-mac.tsx +5 -0
  1329. package/icons/generated/24/computers-devices-electronics-webcam.tsx +5 -0
  1330. package/icons/generated/24/computers-devices-electronicscd-disk.tsx +5 -0
  1331. package/icons/generated/24/computers-devices-electronicsmicrochip-board.tsx +5 -0
  1332. package/icons/generated/24/construction-building-real-eastate.tsx +5 -0
  1333. package/icons/generated/24/content-files-archive-books-1.tsx +5 -0
  1334. package/icons/generated/24/content-files-archive-books-2.tsx +5 -0
  1335. package/icons/generated/24/content-files-archive-books-3.tsx +5 -0
  1336. package/icons/generated/24/content-files-book-library.tsx +5 -0
  1337. package/icons/generated/24/content-files-book.tsx +5 -0
  1338. package/icons/generated/24/content-files-books-1.tsx +5 -0
  1339. package/icons/generated/24/content-files-books-2.tsx +5 -0
  1340. package/icons/generated/24/content-files-close-book-bookmark.tsx +5 -0
  1341. package/icons/generated/24/content-files-draw-content.tsx +5 -0
  1342. package/icons/generated/24/content-files-favorite-book.tsx +5 -0
  1343. package/icons/generated/24/content-files-folder-open.tsx +5 -0
  1344. package/icons/generated/24/content-files-newspaper.tsx +5 -0
  1345. package/icons/generated/24/content-files-note-book.tsx +5 -0
  1346. package/icons/generated/24/content-files-note.tsx +5 -0
  1347. package/icons/generated/24/content-files-notepad.tsx +5 -0
  1348. package/icons/generated/24/content-files-open-book-bookmark.tsx +5 -0
  1349. package/icons/generated/24/content-files-open-book.tsx +5 -0
  1350. package/icons/generated/24/content-files-pdf.tsx +5 -0
  1351. package/icons/generated/24/content-files-pen.tsx +5 -0
  1352. package/icons/generated/24/content-files-pencil-brush.tsx +5 -0
  1353. package/icons/generated/24/content-files-pencil-ruler.tsx +5 -0
  1354. package/icons/generated/24/content-files-phone-book.tsx +5 -0
  1355. package/icons/generated/24/content-files-quill-ink.tsx +5 -0
  1356. package/icons/generated/24/content-files-sticky-notepad-1.tsx +5 -0
  1357. package/icons/generated/24/content-files-sticky-notepad-2.tsx +5 -0
  1358. package/icons/generated/24/content-files-typing-machine.tsx +5 -0
  1359. package/icons/generated/24/content-files-write-note.tsx +5 -0
  1360. package/icons/generated/24/cursor-hand.tsx +5 -0
  1361. package/icons/generated/24/design-artboard-shapes.tsx +5 -0
  1362. package/icons/generated/24/design-color-brush-paint.tsx +5 -0
  1363. package/icons/generated/24/design-color-bucket-brush.tsx +5 -0
  1364. package/icons/generated/24/design-color-bucket.tsx +5 -0
  1365. package/icons/generated/24/design-color-painting-palette.tsx +5 -0
  1366. package/icons/generated/24/design-color-palette-sample.tsx +5 -0
  1367. package/icons/generated/24/design-color-spray.tsx +5 -0
  1368. package/icons/generated/24/design-color-tube-pastel.tsx +5 -0
  1369. package/icons/generated/24/design-crop-edit-picture.tsx +5 -0
  1370. package/icons/generated/24/design-drawing-board.tsx +5 -0
  1371. package/icons/generated/24/design-dropper-1.tsx +5 -0
  1372. package/icons/generated/24/design-dropper-2.tsx +5 -0
  1373. package/icons/generated/24/design-half-circle-ruler.tsx +5 -0
  1374. package/icons/generated/24/design-hilight.tsx +5 -0
  1375. package/icons/generated/24/design-ink-pen.tsx +5 -0
  1376. package/icons/generated/24/design-layer.tsx +5 -0
  1377. package/icons/generated/24/design-magic-wand.tsx +5 -0
  1378. package/icons/generated/24/design-pencil.tsx +5 -0
  1379. package/icons/generated/24/design-ruler.tsx +5 -0
  1380. package/icons/generated/24/design-stamp.tsx +5 -0
  1381. package/icons/generated/24/design-vectors-pen-new-anchor.tsx +5 -0
  1382. package/icons/generated/24/ecology-bush.tsx +5 -0
  1383. package/icons/generated/24/ecology-cactus.tsx +5 -0
  1384. package/icons/generated/24/ecology-clean-battery.tsx +5 -0
  1385. package/icons/generated/24/ecology-clean-car-cable-charge.tsx +5 -0
  1386. package/icons/generated/24/ecology-global-house.tsx +5 -0
  1387. package/icons/generated/24/ecology-global-warming-globe-fire.tsx +5 -0
  1388. package/icons/generated/24/ecology-global-warming-globe.tsx +5 -0
  1389. package/icons/generated/24/ecology-gmo-food-fruit.tsx +5 -0
  1390. package/icons/generated/24/ecology-growth-plant.tsx +5 -0
  1391. package/icons/generated/24/ecology-leaf-bug.tsx +5 -0
  1392. package/icons/generated/24/ecology-nuclear-energy.tsx +5 -0
  1393. package/icons/generated/24/ecology-organic-sun-growth.tsx +5 -0
  1394. package/icons/generated/24/ecology-plant-growth-soil-nature.tsx +5 -0
  1395. package/icons/generated/24/ecology-renewable-energy-solar-panel.tsx +5 -0
  1396. package/icons/generated/24/ecology-renewable-energy-wind-turbine.tsx +5 -0
  1397. package/icons/generated/24/ecology-solar-cell.tsx +5 -0
  1398. package/icons/generated/24/ecology-tree.tsx +5 -0
  1399. package/icons/generated/24/ecology-windmill-1.tsx +5 -0
  1400. package/icons/generated/24/ecology-windmill-2.tsx +5 -0
  1401. package/icons/generated/24/ecology-wood-plant-grow.tsx +5 -0
  1402. package/icons/generated/24/email-chat-think.tsx +5 -0
  1403. package/icons/generated/24/email-emoji-smile-smart.tsx +5 -0
  1404. package/icons/generated/24/email-envelope-close.tsx +5 -0
  1405. package/icons/generated/24/email-envelope-open.tsx +5 -0
  1406. package/icons/generated/24/email-envelope.tsx +5 -0
  1407. package/icons/generated/24/email-forward-mail.tsx +5 -0
  1408. package/icons/generated/24/email-mail-chat.tsx +5 -0
  1409. package/icons/generated/24/email-mail-open-address.tsx +5 -0
  1410. package/icons/generated/24/email-mailbox-close.tsx +5 -0
  1411. package/icons/generated/24/email-mailbox-open.tsx +5 -0
  1412. package/icons/generated/24/email-mailbox.tsx +5 -0
  1413. package/icons/generated/24/email-stamp-mail.tsx +5 -0
  1414. package/icons/generated/24/email-tray.tsx +5 -0
  1415. package/icons/generated/24/entertainment-events-hobbies-board-game-dice.tsx +5 -0
  1416. package/icons/generated/24/entertainment-events-hobbies-bomb.tsx +5 -0
  1417. package/icons/generated/24/entertainment-events-hobbies-card-game-card-club.tsx +5 -0
  1418. package/icons/generated/24/entertainment-events-hobbies-chess-knight.tsx +5 -0
  1419. package/icons/generated/24/entertainment-events-hobbies-chess-pawn.tsx +5 -0
  1420. package/icons/generated/24/entertainment-events-hobbies-chess-rook.tsx +5 -0
  1421. package/icons/generated/24/entertainment-events-hobbies-film-camrea.tsx +5 -0
  1422. package/icons/generated/24/entertainment-events-hobbies-film-player.tsx +5 -0
  1423. package/icons/generated/24/entertainment-events-hobbies-film-roll.tsx +5 -0
  1424. package/icons/generated/24/entertainment-events-hobbies-game-machines-arcade-1.tsx +5 -0
  1425. package/icons/generated/24/entertainment-events-hobbies-game-machines-arcade-2.tsx +5 -0
  1426. package/icons/generated/24/entertainment-events-hobbies-game-pool-snooker-ball.tsx +5 -0
  1427. package/icons/generated/24/entertainment-events-hobbies-glasses-3d.tsx +5 -0
  1428. package/icons/generated/24/entertainment-events-hobbies-horror-ghost.tsx +5 -0
  1429. package/icons/generated/24/entertainment-events-hobbies-popcorn.tsx +5 -0
  1430. package/icons/generated/24/entertainment-events-hobbies-record-player.tsx +5 -0
  1431. package/icons/generated/24/entertainment-events-hobbies-reward-winner-talent.tsx +5 -0
  1432. package/icons/generated/24/entertainment-events-hobbies-ticket.tsx +5 -0
  1433. package/icons/generated/24/entertainment-events-hobbies-video-camera-film-1.tsx +5 -0
  1434. package/icons/generated/24/entertainment-events-hobbies-video-camera-film-2.tsx +5 -0
  1435. package/icons/generated/24/entertainment-events-hobbies-video-camera-film-3.tsx +5 -0
  1436. package/icons/generated/24/entertainment-events-hobbies-video-movie-producer-director-chair.tsx +5 -0
  1437. package/icons/generated/24/food-drink-bread.tsx +5 -0
  1438. package/icons/generated/24/food-drink-coffee-cup.tsx +5 -0
  1439. package/icons/generated/24/food-drink-coffee.tsx +5 -0
  1440. package/icons/generated/24/food-drink-desert-cake-pond.tsx +5 -0
  1441. package/icons/generated/24/food-drink-desert-cake.tsx +5 -0
  1442. package/icons/generated/24/food-drink-desert-cotton-candy.tsx +5 -0
  1443. package/icons/generated/24/food-drink-desert-cupcake.tsx +5 -0
  1444. package/icons/generated/24/food-drink-desert-donut.tsx +5 -0
  1445. package/icons/generated/24/food-drink-desert-icecream.tsx +5 -0
  1446. package/icons/generated/24/food-drink-egg.tsx +5 -0
  1447. package/icons/generated/24/food-drink-fish-bone.tsx +5 -0
  1448. package/icons/generated/24/food-drink-fish.tsx +5 -0
  1449. package/icons/generated/24/food-drink-fried-chicken.tsx +5 -0
  1450. package/icons/generated/24/food-drink-fruit-cherry.tsx +5 -0
  1451. package/icons/generated/24/food-drink-hamburger.tsx +5 -0
  1452. package/icons/generated/24/food-drink-milk.tsx +5 -0
  1453. package/icons/generated/24/food-drink-pizza.tsx +5 -0
  1454. package/icons/generated/24/food-drink-rice-ball.tsx +5 -0
  1455. package/icons/generated/24/food-drink-sushi.tsx +5 -0
  1456. package/icons/generated/24/food-drink-tea.tsx +5 -0
  1457. package/icons/generated/24/hand-awesome.tsx +5 -0
  1458. package/icons/generated/24/hand-cross-finger-heart.tsx +5 -0
  1459. package/icons/generated/24/hand-dislike.tsx +5 -0
  1460. package/icons/generated/24/hand-fight-2-finger.tsx +5 -0
  1461. package/icons/generated/24/hand-fiist.tsx +5 -0
  1462. package/icons/generated/24/hand-four.tsx +5 -0
  1463. package/icons/generated/24/hand-fuck-middle-finger.tsx +5 -0
  1464. package/icons/generated/24/hand-gesture-finger-click.tsx +5 -0
  1465. package/icons/generated/24/hand-like.tsx +5 -0
  1466. package/icons/generated/24/hand-little-finger.tsx +5 -0
  1467. package/icons/generated/24/hand-love-sign.tsx +5 -0
  1468. package/icons/generated/24/hand-love.tsx +5 -0
  1469. package/icons/generated/24/hand-ok.tsx +5 -0
  1470. package/icons/generated/24/hand-point.tsx +5 -0
  1471. package/icons/generated/24/hand-three-finger.tsx +5 -0
  1472. package/icons/generated/24/hand-writing.tsx +5 -0
  1473. package/icons/generated/24/hand-zombie.tsx +5 -0
  1474. package/icons/generated/24/hand-zoom.tsx +5 -0
  1475. package/icons/generated/24/hand.tsx +5 -0
  1476. package/icons/generated/24/health-ambulance-call.tsx +5 -0
  1477. package/icons/generated/24/health-ambulance-car.tsx +5 -0
  1478. package/icons/generated/24/health-anti-virus.tsx +5 -0
  1479. package/icons/generated/24/health-bandage.tsx +5 -0
  1480. package/icons/generated/24/health-blood-drop-type.tsx +5 -0
  1481. package/icons/generated/24/health-brain-1.tsx +5 -0
  1482. package/icons/generated/24/health-brain-2.tsx +5 -0
  1483. package/icons/generated/24/health-dentistry-tooth.tsx +5 -0
  1484. package/icons/generated/24/health-drug-medicine-bag-aid-1.tsx +5 -0
  1485. package/icons/generated/24/health-drug-medicine-bag-aid-2.tsx +5 -0
  1486. package/icons/generated/24/health-drug-medicine-water.tsx +5 -0
  1487. package/icons/generated/24/health-drug-medicine.tsx +5 -0
  1488. package/icons/generated/24/health-drugs-cannabis.tsx +5 -0
  1489. package/icons/generated/24/health-drugs-pill.tsx +5 -0
  1490. package/icons/generated/24/health-health-dead.tsx +5 -0
  1491. package/icons/generated/24/health-hospital-building-1.tsx +5 -0
  1492. package/icons/generated/24/health-hospital-building-2.tsx +5 -0
  1493. package/icons/generated/24/health-injection.tsx +5 -0
  1494. package/icons/generated/24/health-laboratory-test-blood-sugar.tsx +5 -0
  1495. package/icons/generated/24/health-laboratory-test-stool-cup.tsx +5 -0
  1496. package/icons/generated/24/health-laboratory.tsx +5 -0
  1497. package/icons/generated/24/health-medical-notes.tsx +5 -0
  1498. package/icons/generated/24/health-monitor-heart-beat.tsx +5 -0
  1499. package/icons/generated/24/health-stool.tsx +5 -0
  1500. package/icons/generated/24/health-transfusion-bag.tsx +5 -0
  1501. package/icons/generated/24/health-virus.tsx +5 -0
  1502. package/icons/generated/24/interface-essential-alarm-bell-off.tsx +5 -0
  1503. package/icons/generated/24/interface-essential-alarm-bell-sleep.tsx +5 -0
  1504. package/icons/generated/24/interface-essential-alert-caution.tsx +5 -0
  1505. package/icons/generated/24/interface-essential-alert-circle-1.tsx +5 -0
  1506. package/icons/generated/24/interface-essential-alert-circle-2.tsx +5 -0
  1507. package/icons/generated/24/interface-essential-alert-triangle-1.tsx +5 -0
  1508. package/icons/generated/24/interface-essential-alert-triangle-2.tsx +5 -0
  1509. package/icons/generated/24/interface-essential-alert.tsx +5 -0
  1510. package/icons/generated/24/interface-essential-battery.tsx +5 -0
  1511. package/icons/generated/24/interface-essential-bin.tsx +5 -0
  1512. package/icons/generated/24/interface-essential-blutooth.tsx +5 -0
  1513. package/icons/generated/24/interface-essential-bookmark.tsx +5 -0
  1514. package/icons/generated/24/interface-essential-bookmark_1.tsx +5 -0
  1515. package/icons/generated/24/interface-essential-calendar-appointment.tsx +5 -0
  1516. package/icons/generated/24/interface-essential-calendar-date.tsx +5 -0
  1517. package/icons/generated/24/interface-essential-call-center-contact-help.tsx +5 -0
  1518. package/icons/generated/24/interface-essential-clip-1.tsx +5 -0
  1519. package/icons/generated/24/interface-essential-clip-2.tsx +5 -0
  1520. package/icons/generated/24/interface-essential-clock.tsx +5 -0
  1521. package/icons/generated/24/interface-essential-clound-download.tsx +5 -0
  1522. package/icons/generated/24/interface-essential-cog-browser.tsx +5 -0
  1523. package/icons/generated/24/interface-essential-cog-double.tsx +5 -0
  1524. package/icons/generated/24/interface-essential-cog-hand-give.tsx +5 -0
  1525. package/icons/generated/24/interface-essential-cog-search.tsx +5 -0
  1526. package/icons/generated/24/interface-essential-crown.tsx +5 -0
  1527. package/icons/generated/24/interface-essential-cursor-click-point.tsx +5 -0
  1528. package/icons/generated/24/interface-essential-cursor-select.tsx +5 -0
  1529. package/icons/generated/24/interface-essential-cursor.tsx +5 -0
  1530. package/icons/generated/24/interface-essential-dial-pad-1.tsx +5 -0
  1531. package/icons/generated/24/interface-essential-dial-pad-2.tsx +5 -0
  1532. package/icons/generated/24/interface-essential-dial-pad-finger-1.tsx +5 -0
  1533. package/icons/generated/24/interface-essential-dial-pad-finger-2.tsx +5 -0
  1534. package/icons/generated/24/interface-essential-direction-button.tsx +5 -0
  1535. package/icons/generated/24/interface-essential-edit-fill.tsx +5 -0
  1536. package/icons/generated/24/interface-essential-eraser.tsx +5 -0
  1537. package/icons/generated/24/interface-essential-expand-1.tsx +5 -0
  1538. package/icons/generated/24/interface-essential-expand-2.tsx +5 -0
  1539. package/icons/generated/24/interface-essential-expand-3.tsx +5 -0
  1540. package/icons/generated/24/interface-essential-face-id-1.tsx +5 -0
  1541. package/icons/generated/24/interface-essential-face-id.tsx +5 -0
  1542. package/icons/generated/24/interface-essential-file-error.tsx +5 -0
  1543. package/icons/generated/24/interface-essential-filter.tsx +5 -0
  1544. package/icons/generated/24/interface-essential-find-text.tsx +5 -0
  1545. package/icons/generated/24/interface-essential-finger-print-scan.tsx +5 -0
  1546. package/icons/generated/24/interface-essential-flag.tsx +5 -0
  1547. package/icons/generated/24/interface-essential-flash.tsx +5 -0
  1548. package/icons/generated/24/interface-essential-flip-vertical-down.tsx +5 -0
  1549. package/icons/generated/24/interface-essential-flip-vertical-up.tsx +5 -0
  1550. package/icons/generated/24/interface-essential-floppy-disk.tsx +5 -0
  1551. package/icons/generated/24/interface-essential-global-public.tsx +5 -0
  1552. package/icons/generated/24/interface-essential-hammer-1.tsx +5 -0
  1553. package/icons/generated/24/interface-essential-hammer-2.tsx +5 -0
  1554. package/icons/generated/24/interface-essential-heart-favorite.tsx +5 -0
  1555. package/icons/generated/24/interface-essential-hierarchy-1.tsx +5 -0
  1556. package/icons/generated/24/interface-essential-hierarchy-2.tsx +5 -0
  1557. package/icons/generated/24/interface-essential-hierarchy-3.tsx +5 -0
  1558. package/icons/generated/24/interface-essential-hierarchy-4.tsx +5 -0
  1559. package/icons/generated/24/interface-essential-hierarchy-5.tsx +5 -0
  1560. package/icons/generated/24/interface-essential-hierarchy-files.tsx +5 -0
  1561. package/icons/generated/24/interface-essential-home-1.tsx +5 -0
  1562. package/icons/generated/24/interface-essential-home-2.tsx +5 -0
  1563. package/icons/generated/24/interface-essential-hyperlink.tsx +5 -0
  1564. package/icons/generated/24/interface-essential-information-circle-1.tsx +5 -0
  1565. package/icons/generated/24/interface-essential-information-circle-2.tsx +5 -0
  1566. package/icons/generated/24/interface-essential-iris-scan-approved.tsx +5 -0
  1567. package/icons/generated/24/interface-essential-iris-scan.tsx +5 -0
  1568. package/icons/generated/24/interface-essential-key-1.tsx +5 -0
  1569. package/icons/generated/24/interface-essential-key-lock.tsx +5 -0
  1570. package/icons/generated/24/interface-essential-key-login.tsx +5 -0
  1571. package/icons/generated/24/interface-essential-key.tsx +5 -0
  1572. package/icons/generated/24/interface-essential-keyboard-button-direction-1.tsx +5 -0
  1573. package/icons/generated/24/interface-essential-keyboard-button-direction-2.tsx +5 -0
  1574. package/icons/generated/24/interface-essential-light-bulb.tsx +5 -0
  1575. package/icons/generated/24/interface-essential-link-broken-1.tsx +5 -0
  1576. package/icons/generated/24/interface-essential-link-broken-2.tsx +5 -0
  1577. package/icons/generated/24/interface-essential-link.tsx +5 -0
  1578. package/icons/generated/24/interface-essential-list.tsx +5 -0
  1579. package/icons/generated/24/interface-essential-loading-0-percent-1.tsx +5 -0
  1580. package/icons/generated/24/interface-essential-loading-0-percent.tsx +5 -0
  1581. package/icons/generated/24/interface-essential-loading-100-percent-1.tsx +5 -0
  1582. package/icons/generated/24/interface-essential-loading-100-percent.tsx +5 -0
  1583. package/icons/generated/24/interface-essential-loading-20-percent.tsx +5 -0
  1584. package/icons/generated/24/interface-essential-loading-25-percent-1.tsx +5 -0
  1585. package/icons/generated/24/interface-essential-loading-50-percent-1.tsx +5 -0
  1586. package/icons/generated/24/interface-essential-loading-50-percent.tsx +5 -0
  1587. package/icons/generated/24/interface-essential-loading-75-percent-1.tsx +5 -0
  1588. package/icons/generated/24/interface-essential-loading-80-percent.tsx +5 -0
  1589. package/icons/generated/24/interface-essential-loading-circle-1.tsx +5 -0
  1590. package/icons/generated/24/interface-essential-loading-circle-2.tsx +5 -0
  1591. package/icons/generated/24/interface-essential-loading-status.tsx +5 -0
  1592. package/icons/generated/24/interface-essential-lock-1.tsx +5 -0
  1593. package/icons/generated/24/interface-essential-lock-door-out.tsx +5 -0
  1594. package/icons/generated/24/interface-essential-lock-shield.tsx +5 -0
  1595. package/icons/generated/24/interface-essential-lock.tsx +5 -0
  1596. package/icons/generated/24/interface-essential-magnet.tsx +5 -0
  1597. package/icons/generated/24/interface-essential-map.tsx +5 -0
  1598. package/icons/generated/24/interface-essential-message.tsx +5 -0
  1599. package/icons/generated/24/interface-essential-microphone.tsx +5 -0
  1600. package/icons/generated/24/interface-essential-move.tsx +5 -0
  1601. package/icons/generated/24/interface-essential-navigation-left-circle-1.tsx +5 -0
  1602. package/icons/generated/24/interface-essential-navigation-left-circle-2.tsx +5 -0
  1603. package/icons/generated/24/interface-essential-navigation-menu-1.tsx +5 -0
  1604. package/icons/generated/24/interface-essential-navigation-menu-2.tsx +5 -0
  1605. package/icons/generated/24/interface-essential-navigation-menu-3.tsx +5 -0
  1606. package/icons/generated/24/interface-essential-navigation-right-circle-1.tsx +5 -0
  1607. package/icons/generated/24/interface-essential-navigation-right-circle-2.tsx +5 -0
  1608. package/icons/generated/24/interface-essential-note-music.tsx +5 -0
  1609. package/icons/generated/24/interface-essential-notification-alert.tsx +5 -0
  1610. package/icons/generated/24/interface-essential-pacman-loading.tsx +5 -0
  1611. package/icons/generated/24/interface-essential-paginate-filter-camera.tsx +5 -0
  1612. package/icons/generated/24/interface-essential-paginate-filter-heart.tsx +5 -0
  1613. package/icons/generated/24/interface-essential-paginate-filter-music.tsx +5 -0
  1614. package/icons/generated/24/interface-essential-paginate-filter-picture.tsx +5 -0
  1615. package/icons/generated/24/interface-essential-paginate-filter-video.tsx +5 -0
  1616. package/icons/generated/24/interface-essential-password-type.tsx +5 -0
  1617. package/icons/generated/24/interface-essential-pencil-edit-1.tsx +5 -0
  1618. package/icons/generated/24/interface-essential-pencil-edit-2.tsx +5 -0
  1619. package/icons/generated/24/interface-essential-pie-chart-poll-report-1.tsx +5 -0
  1620. package/icons/generated/24/interface-essential-pie-chart-poll-report-2.tsx +5 -0
  1621. package/icons/generated/24/interface-essential-pin.tsx +5 -0
  1622. package/icons/generated/24/interface-essential-poll.tsx +5 -0
  1623. package/icons/generated/24/interface-essential-print.tsx +5 -0
  1624. package/icons/generated/24/interface-essential-profile-female.tsx +5 -0
  1625. package/icons/generated/24/interface-essential-profile-male.tsx +5 -0
  1626. package/icons/generated/24/interface-essential-protect-guard.tsx +5 -0
  1627. package/icons/generated/24/interface-essential-protect-rubber-ring.tsx +5 -0
  1628. package/icons/generated/24/interface-essential-question-help-circle-1.tsx +5 -0
  1629. package/icons/generated/24/interface-essential-question-help-circle-2.tsx +5 -0
  1630. package/icons/generated/24/interface-essential-question-help-square.tsx +5 -0
  1631. package/icons/generated/24/interface-essential-recycle.tsx +5 -0
  1632. package/icons/generated/24/interface-essential-reflect-down-up.tsx +5 -0
  1633. package/icons/generated/24/interface-essential-reflect-down.tsx +5 -0
  1634. package/icons/generated/24/interface-essential-refresh.tsx +5 -0
  1635. package/icons/generated/24/interface-essential-safari-compass.tsx +5 -0
  1636. package/icons/generated/24/interface-essential-satellite.tsx +5 -0
  1637. package/icons/generated/24/interface-essential-scisor.tsx +5 -0
  1638. package/icons/generated/24/interface-essential-scroll-horizontal.tsx +5 -0
  1639. package/icons/generated/24/interface-essential-scroll-vertical.tsx +5 -0
  1640. package/icons/generated/24/interface-essential-search-1.tsx +5 -0
  1641. package/icons/generated/24/interface-essential-search-binocular.tsx +5 -0
  1642. package/icons/generated/24/interface-essential-search-check.tsx +5 -0
  1643. package/icons/generated/24/interface-essential-search-remove.tsx +5 -0
  1644. package/icons/generated/24/interface-essential-send-mail.tsx +5 -0
  1645. package/icons/generated/24/interface-essential-setting-cog.tsx +5 -0
  1646. package/icons/generated/24/interface-essential-setting-slide.tsx +5 -0
  1647. package/icons/generated/24/interface-essential-settings-toggle-horizontal.tsx +5 -0
  1648. package/icons/generated/24/interface-essential-share-1.tsx +5 -0
  1649. package/icons/generated/24/interface-essential-share-2.tsx +5 -0
  1650. package/icons/generated/24/interface-essential-share-3.tsx +5 -0
  1651. package/icons/generated/24/interface-essential-shrink-1.tsx +5 -0
  1652. package/icons/generated/24/interface-essential-shrink-2.tsx +5 -0
  1653. package/icons/generated/24/interface-essential-shrink-3.tsx +5 -0
  1654. package/icons/generated/24/interface-essential-shrink-4.tsx +5 -0
  1655. package/icons/generated/24/interface-essential-signin-expand.tsx +5 -0
  1656. package/icons/generated/24/interface-essential-signin-login.tsx +5 -0
  1657. package/icons/generated/24/interface-essential-signout-logout.tsx +5 -0
  1658. package/icons/generated/24/interface-essential-skull-1.tsx +5 -0
  1659. package/icons/generated/24/interface-essential-skull-2.tsx +5 -0
  1660. package/icons/generated/24/interface-essential-sound.tsx +5 -0
  1661. package/icons/generated/24/interface-essential-speaker-announce.tsx +5 -0
  1662. package/icons/generated/24/interface-essential-stat.tsx +5 -0
  1663. package/icons/generated/24/interface-essential-stop-sign-1.tsx +5 -0
  1664. package/icons/generated/24/interface-essential-stop-sign-2.tsx +5 -0
  1665. package/icons/generated/24/interface-essential-stopwatch.tsx +5 -0
  1666. package/icons/generated/24/interface-essential-switch-off.tsx +5 -0
  1667. package/icons/generated/24/interface-essential-switch-on.tsx +5 -0
  1668. package/icons/generated/24/interface-essential-synchronize-arrows-square-1.tsx +5 -0
  1669. package/icons/generated/24/interface-essential-synchronize-arrows-square-2.tsx +5 -0
  1670. package/icons/generated/24/interface-essential-text-format-1.tsx +5 -0
  1671. package/icons/generated/24/interface-essential-text-format-2.tsx +5 -0
  1672. package/icons/generated/24/interface-essential-text-input-area-1.tsx +5 -0
  1673. package/icons/generated/24/interface-essential-text-input-area-2.tsx +5 -0
  1674. package/icons/generated/24/interface-essential-text-input-area-3.tsx +5 -0
  1675. package/icons/generated/24/interface-essential-touch-id-lock.tsx +5 -0
  1676. package/icons/generated/24/interface-essential-touch-id-smartphone.tsx +5 -0
  1677. package/icons/generated/24/interface-essential-translate.tsx +5 -0
  1678. package/icons/generated/24/interface-essential-trophy.tsx +5 -0
  1679. package/icons/generated/24/interface-essential-view-eye.tsx +5 -0
  1680. package/icons/generated/24/interface-essential-voice-id.tsx +5 -0
  1681. package/icons/generated/24/interface-essential-waiting-hourglass-loading.tsx +5 -0
  1682. package/icons/generated/24/interface-essential-watch-time.tsx +5 -0
  1683. package/icons/generated/24/interface-essential-wifi-feed.tsx +5 -0
  1684. package/icons/generated/24/interface-essential-wifi-signal.tsx +5 -0
  1685. package/icons/generated/24/interface-essential-wireless.tsx +5 -0
  1686. package/icons/generated/24/interface-essential-wrench-1.tsx +5 -0
  1687. package/icons/generated/24/interface-essential-wrench-2.tsx +5 -0
  1688. package/icons/generated/24/interface-essential-zoom-in-page.tsx +5 -0
  1689. package/icons/generated/24/interface-essential-zoom-in.tsx +5 -0
  1690. package/icons/generated/24/interface-essential-zoom-out-page.tsx +5 -0
  1691. package/icons/generated/24/interface-essential-zoom-out.tsx +5 -0
  1692. package/icons/generated/24/internet-network-arrow-sync.tsx +5 -0
  1693. package/icons/generated/24/internet-network-cloud-error.tsx +5 -0
  1694. package/icons/generated/24/internet-network-cloud-off.tsx +5 -0
  1695. package/icons/generated/24/internet-network-computer-download.tsx +5 -0
  1696. package/icons/generated/24/internet-network-computer-upload.tsx +5 -0
  1697. package/icons/generated/24/internet-network-download.tsx +5 -0
  1698. package/icons/generated/24/internet-network-laptop.tsx +5 -0
  1699. package/icons/generated/24/internet-network-upload.tsx +5 -0
  1700. package/icons/generated/24/internet-network-wifi-monitor.tsx +5 -0
  1701. package/icons/generated/24/internet-network-www.tsx +5 -0
  1702. package/icons/generated/24/logo-discord.tsx +5 -0
  1703. package/icons/generated/24/logo-linkedin.tsx +5 -0
  1704. package/icons/generated/24/logo-pinterest.tsx +5 -0
  1705. package/icons/generated/24/logo-snapchat.tsx +5 -0
  1706. package/icons/generated/24/logo-social-media-dropbox.tsx +5 -0
  1707. package/icons/generated/24/logo-social-media-facebook-circle.tsx +5 -0
  1708. package/icons/generated/24/logo-social-media-instagram-circle.tsx +5 -0
  1709. package/icons/generated/24/logo-social-media-instagram.tsx +5 -0
  1710. package/icons/generated/24/logo-social-media-old-instagram.tsx +5 -0
  1711. package/icons/generated/24/logo-social-media-tiktok-circle.tsx +5 -0
  1712. package/icons/generated/24/logo-social-media-tiktok.tsx +5 -0
  1713. package/icons/generated/24/logo-social-media-twitter-circle.tsx +5 -0
  1714. package/icons/generated/24/logo-social-media-youtube-circle.tsx +5 -0
  1715. package/icons/generated/24/logo-social-media-youtube.tsx +5 -0
  1716. package/icons/generated/24/logo-soundcloud-1.tsx +5 -0
  1717. package/icons/generated/24/logo-soundcloud-2.tsx +5 -0
  1718. package/icons/generated/24/logo-spotify.tsx +5 -0
  1719. package/icons/generated/24/logo-twitch-1.tsx +5 -0
  1720. package/icons/generated/24/logo-twitch-2.tsx +5 -0
  1721. package/icons/generated/24/logo-twitter.tsx +5 -0
  1722. package/icons/generated/24/logo-whatapp.tsx +5 -0
  1723. package/icons/generated/24/map-navigation-compass-direction.tsx +5 -0
  1724. package/icons/generated/24/map-navigation-location-focus.tsx +5 -0
  1725. package/icons/generated/24/map-navigation-pin-location-1.tsx +5 -0
  1726. package/icons/generated/24/map-navigation-pin-location-2.tsx +5 -0
  1727. package/icons/generated/24/map-navigation-pin-location-trip.tsx +5 -0
  1728. package/icons/generated/24/mobile-phone.tsx +5 -0
  1729. package/icons/generated/24/money-payments-accounting-bill-money-1.tsx +5 -0
  1730. package/icons/generated/24/money-payments-accounting-bill-money-2.tsx +5 -0
  1731. package/icons/generated/24/money-payments-accounting-calculator.tsx +5 -0
  1732. package/icons/generated/24/money-payments-bank.tsx +5 -0
  1733. package/icons/generated/24/money-payments-calculator-app.tsx +5 -0
  1734. package/icons/generated/24/money-payments-cash-payment-coin.tsx +5 -0
  1735. package/icons/generated/24/money-payments-credit-card-mastercard.tsx +5 -0
  1736. package/icons/generated/24/money-payments-credit-card-visa.tsx +5 -0
  1737. package/icons/generated/24/money-payments-currency-euro-dollar-exchange.tsx +5 -0
  1738. package/icons/generated/24/money-payments-diamond.tsx +5 -0
  1739. package/icons/generated/24/money-payments-saving-treasure.tsx +5 -0
  1740. package/icons/generated/24/money-payments-self-payment.tsx +5 -0
  1741. package/icons/generated/24/money-payments-smartphone-pay-dollar.tsx +5 -0
  1742. package/icons/generated/24/multiple-user.tsx +5 -0
  1743. package/icons/generated/24/music-album-cd-disk-playlist.tsx +5 -0
  1744. package/icons/generated/24/music-clef-sheet.tsx +5 -0
  1745. package/icons/generated/24/music-disk-cd-1.tsx +5 -0
  1746. package/icons/generated/24/music-disk-cd-2.tsx +5 -0
  1747. package/icons/generated/24/music-headphones-human.tsx +5 -0
  1748. package/icons/generated/24/music-microphone-1.tsx +5 -0
  1749. package/icons/generated/24/music-microphone-2.tsx +5 -0
  1750. package/icons/generated/24/music-microphone-off.tsx +5 -0
  1751. package/icons/generated/24/music-notes-music-1.tsx +5 -0
  1752. package/icons/generated/24/music-notes-music-2.tsx +5 -0
  1753. package/icons/generated/24/music-radio-stereo.tsx +5 -0
  1754. package/icons/generated/24/music-speaker.tsx +5 -0
  1755. package/icons/generated/24/music-vinyl-record.tsx +5 -0
  1756. package/icons/generated/24/music-walkman-cassette.tsx +5 -0
  1757. package/icons/generated/24/non-gmo-fertilizer.tsx +5 -0
  1758. package/icons/generated/24/notification-email.tsx +5 -0
  1759. package/icons/generated/24/pet-animals-bear.tsx +5 -0
  1760. package/icons/generated/24/pet-animals-buffalo.tsx +5 -0
  1761. package/icons/generated/24/pet-animals-cat.tsx +5 -0
  1762. package/icons/generated/24/pet-animals-dog.tsx +5 -0
  1763. package/icons/generated/24/pet-animals-frog-face.tsx +5 -0
  1764. package/icons/generated/24/pet-animals-frog.tsx +5 -0
  1765. package/icons/generated/24/pet-animals-gorilla.tsx +5 -0
  1766. package/icons/generated/24/pet-animals-ox.tsx +5 -0
  1767. package/icons/generated/24/pet-animals-pig.tsx +5 -0
  1768. package/icons/generated/24/pet-animals-rabbit-1.tsx +5 -0
  1769. package/icons/generated/24/pet-animals-rabbit-2.tsx +5 -0
  1770. package/icons/generated/24/pet-animals-turtle.tsx +5 -0
  1771. package/icons/generated/24/phone-actions-remove-1.tsx +5 -0
  1772. package/icons/generated/24/phone-actions-remove-2.tsx +5 -0
  1773. package/icons/generated/24/phone-incoming-call.tsx +5 -0
  1774. package/icons/generated/24/phone-off-1.tsx +5 -0
  1775. package/icons/generated/24/phone-off-2.tsx +5 -0
  1776. package/icons/generated/24/phone-scan-qr-code-1.tsx +5 -0
  1777. package/icons/generated/24/phone-scan-qr-code-2.tsx +5 -0
  1778. package/icons/generated/24/phone-signal-full.tsx +5 -0
  1779. package/icons/generated/24/phone-vibrate.tsx +5 -0
  1780. package/icons/generated/24/photography-camera-1.tsx +5 -0
  1781. package/icons/generated/24/photography-equipment-film-print.tsx +5 -0
  1782. package/icons/generated/24/photography-file-picture.tsx +5 -0
  1783. package/icons/generated/24/photography-focus-flower.tsx +5 -0
  1784. package/icons/generated/24/photography-frame-picture.tsx +5 -0
  1785. package/icons/generated/24/photography-light-mode-flash-on.tsx +5 -0
  1786. package/icons/generated/24/photography-photo-image.tsx +5 -0
  1787. package/icons/generated/24/photography-picture-polaroid.tsx +5 -0
  1788. package/icons/generated/24/photography-retouch-wand-star.tsx +5 -0
  1789. package/icons/generated/24/photography-retouch-wand.tsx +5 -0
  1790. package/icons/generated/24/photography-taking-pictures-circle-alternate.tsx +5 -0
  1791. package/icons/generated/24/real-estate-building-1.tsx +5 -0
  1792. package/icons/generated/24/real-estate-building-2.tsx +5 -0
  1793. package/icons/generated/24/real-estate-building-3.tsx +5 -0
  1794. package/icons/generated/24/real-estate-building-4.tsx +5 -0
  1795. package/icons/generated/24/real-estate-building-ad.tsx +5 -0
  1796. package/icons/generated/24/real-estate-building-factory.tsx +5 -0
  1797. package/icons/generated/24/real-estate-building-house.tsx +5 -0
  1798. package/icons/generated/24/real-estate-sign-building.tsx +5 -0
  1799. package/icons/generated/24/romance-heart-lock.tsx +5 -0
  1800. package/icons/generated/24/romance-love-letter-open.tsx +5 -0
  1801. package/icons/generated/24/school-science-bag.tsx +5 -0
  1802. package/icons/generated/24/school-science-dna.tsx +5 -0
  1803. package/icons/generated/24/school-science-graduation-cap.tsx +5 -0
  1804. package/icons/generated/24/school-science-test-flask.tsx +5 -0
  1805. package/icons/generated/24/search-coding.tsx +5 -0
  1806. package/icons/generated/24/search-user.tsx +5 -0
  1807. package/icons/generated/24/send-email.tsx +5 -0
  1808. package/icons/generated/24/shopping-shipping-bag-1.tsx +5 -0
  1809. package/icons/generated/24/shopping-shipping-bag-2.tsx +5 -0
  1810. package/icons/generated/24/shopping-shipping-barcode.tsx +5 -0
  1811. package/icons/generated/24/shopping-shipping-basket.tsx +5 -0
  1812. package/icons/generated/24/shopping-shipping-box.tsx +5 -0
  1813. package/icons/generated/24/shopping-shipping-cart.tsx +5 -0
  1814. package/icons/generated/24/shopping-shipping-crack-1.tsx +5 -0
  1815. package/icons/generated/24/shopping-shipping-crack-2.tsx +5 -0
  1816. package/icons/generated/24/shopping-shipping-delivery-person-motorcycle.tsx +5 -0
  1817. package/icons/generated/24/shopping-shipping-delivery-truck.tsx +5 -0
  1818. package/icons/generated/24/shopping-shipping-discount-coupon.tsx +5 -0
  1819. package/icons/generated/24/shopping-shipping-loading-box.tsx +5 -0
  1820. package/icons/generated/24/shopping-shipping-products-gift.tsx +5 -0
  1821. package/icons/generated/24/shopping-shipping-receipt-slip.tsx +5 -0
  1822. package/icons/generated/24/shopping-shipping-shipment-deliver.tsx +5 -0
  1823. package/icons/generated/24/shopping-shipping-shop.tsx +5 -0
  1824. package/icons/generated/24/shopping-shipping-upload-information.tsx +5 -0
  1825. package/icons/generated/24/shopping-shipping-warehouse-truck-delivery.tsx +5 -0
  1826. package/icons/generated/24/shopping-shipping-weight-kg.tsx +5 -0
  1827. package/icons/generated/24/single-user-shield.tsx +5 -0
  1828. package/icons/generated/24/social-rewards-certified-diploma.tsx +5 -0
  1829. package/icons/generated/24/social-rewards-certified-ribbon.tsx +5 -0
  1830. package/icons/generated/24/social-rewards-flag.tsx +5 -0
  1831. package/icons/generated/24/social-rewards-heart-like-circle.tsx +5 -0
  1832. package/icons/generated/24/social-rewards-like-bubble.tsx +5 -0
  1833. package/icons/generated/24/social-rewards-like-circle.tsx +5 -0
  1834. package/icons/generated/24/social-rewards-rating-star-1.tsx +5 -0
  1835. package/icons/generated/24/social-rewards-rating-star-2.tsx +5 -0
  1836. package/icons/generated/24/social-rewards-reward-gift.tsx +5 -0
  1837. package/icons/generated/24/social-rewards-trends-hot-flame.tsx +5 -0
  1838. package/icons/generated/24/social-rewards-vip-crown-king.tsx +5 -0
  1839. package/icons/generated/24/technology-drone-camera.tsx +5 -0
  1840. package/icons/generated/24/technology-drone-signal.tsx +5 -0
  1841. package/icons/generated/24/technology-robot-ai-signal-1.tsx +5 -0
  1842. package/icons/generated/24/technology-robot-ai-signal-2.tsx +5 -0
  1843. package/icons/generated/24/technology-robot-ai.tsx +5 -0
  1844. package/icons/generated/24/transportation-bicycle.tsx +5 -0
  1845. package/icons/generated/24/transportation-helicopter.tsx +5 -0
  1846. package/icons/generated/24/transportation-motorcycle.tsx +5 -0
  1847. package/icons/generated/24/transportation-plane.tsx +5 -0
  1848. package/icons/generated/24/transportation-train.tsx +5 -0
  1849. package/icons/generated/24/transportation-truck.tsx +5 -0
  1850. package/icons/generated/24/transportation-vintage-train.tsx +5 -0
  1851. package/icons/generated/24/travel-wayfinding-balloon.tsx +5 -0
  1852. package/icons/generated/24/travel-wayfinding-beach-coconut-tree.tsx +5 -0
  1853. package/icons/generated/24/travel-wayfinding-beach-umbrella.tsx +5 -0
  1854. package/icons/generated/24/travel-wayfinding-pool-ladder.tsx +5 -0
  1855. package/icons/generated/24/ui-design-website.tsx +5 -0
  1856. package/icons/generated/24/user-gender-female-male.tsx +5 -0
  1857. package/icons/generated/24/user-gender-female.tsx +5 -0
  1858. package/icons/generated/24/user-gender-gay.tsx +5 -0
  1859. package/icons/generated/24/user-gender-lesbian.tsx +5 -0
  1860. package/icons/generated/24/user-gender-male.tsx +5 -0
  1861. package/icons/generated/24/user-man-love.tsx +5 -0
  1862. package/icons/generated/24/user-single-aim.tsx +5 -0
  1863. package/icons/generated/24/user-sleep.tsx +5 -0
  1864. package/icons/generated/24/user-woman-increasing-arrow.tsx +5 -0
  1865. package/icons/generated/24/video-movies-play.tsx +5 -0
  1866. package/icons/generated/24/video-movies-player.tsx +5 -0
  1867. package/icons/generated/24/video-movies-set-equipment.tsx +5 -0
  1868. package/icons/generated/24/video-movies-square-off.tsx +5 -0
  1869. package/icons/generated/24/video-movies-video-square.tsx +5 -0
  1870. package/icons/generated/24/video-movies-vintage-tv-1.tsx +5 -0
  1871. package/icons/generated/24/video-movies-vintage-tv-2.tsx +5 -0
  1872. package/icons/generated/24/video-movies-vintage-tv-3.tsx +5 -0
  1873. package/icons/generated/24/vintage-phone.tsx +5 -0
  1874. package/icons/generated/24/weather-cloud-sun-fine.tsx +5 -0
  1875. package/icons/generated/24/weather-cresent-moon-stars.tsx +5 -0
  1876. package/icons/generated/24/weather-meteor.tsx +5 -0
  1877. package/icons/generated/24/weather-moon.tsx +5 -0
  1878. package/icons/generated/24/weather-rainbow.tsx +5 -0
  1879. package/icons/generated/24/weather-snowman.tsx +5 -0
  1880. package/icons/generated/24/weather-temperature-thermometer.tsx +5 -0
  1881. package/icons/generated/24/weather-umbrella-snowing.tsx +5 -0
  1882. package/icons/generated/24/weather-umbrella.tsx +5 -0
  1883. package/icons/generated/24/weather-wind-flag.tsx +5 -0
  1884. package/icons/generated-24.tsx +2669 -0
  1885. package/icons/generated-aliases.ts +59 -0
  1886. package/icons/generated-importers.ts +828 -0
  1887. package/icons/generated.tsx +629 -0
  1888. package/icons/index.ts +58 -0
  1889. package/icons/resolve-icon.ts +43 -0
  1890. package/icons/runtime.ts +15 -0
  1891. package/icons/size-map.ts +148 -0
  1892. package/icons/types.ts +28 -0
  1893. package/index.css +15 -3
  1894. package/meta/index.ts +246 -0
  1895. package/package.json +67 -33
  1896. package/pattern-shadows.css +137 -0
  1897. package/patterns/index.ts +28 -0
  1898. package/patterns/registry.ts +66 -0
  1899. package/patterns/types.ts +22 -0
  1900. package/patterns.css +157 -0
  1901. package/pixel-corners.css +46 -0
  1902. package/pixel-corners.generated.css +215 -0
  1903. package/registry/PropControls.tsx +346 -0
  1904. package/registry/__tests__/PropControls.test.tsx +112 -0
  1905. package/registry/__tests__/forced-state-source.test.ts +40 -0
  1906. package/registry/__tests__/preview-state-authoring.test.ts +70 -0
  1907. package/registry/__tests__/preview-states.test.ts +40 -0
  1908. package/registry/__tests__/registry-metadata.test.ts +189 -0
  1909. package/registry/__tests__/registry.test.ts +102 -0
  1910. package/registry/__tests__/runtime-attachments-props.test.ts +27 -0
  1911. package/registry/__tests__/runtime-auto-components.test.ts +28 -0
  1912. package/registry/__tests__/runtime-coverage.test.ts +27 -0
  1913. package/registry/build-registry-metadata.ts +68 -0
  1914. package/registry/build-registry.ts +13 -0
  1915. package/registry/contract-fields.ts +35 -0
  1916. package/registry/index.ts +35 -0
  1917. package/registry/preview-states.ts +37 -0
  1918. package/registry/runtime-attachments.tsx +721 -0
  1919. package/registry/types.ts +145 -0
  1920. package/registry/useShowcaseProps.ts +28 -0
  1921. package/schemas/index.ts +89 -0
  1922. package/tokens.css +154 -71
  1923. package/typography.css +35 -31
  1924. package/components/core/Accordion/Accordion.dna.json +0 -16
  1925. package/components/core/Accordion/Accordion.schema.json +0 -48
  1926. package/components/core/Alert/Alert.dna.json +0 -56
  1927. package/components/core/Badge/Badge.dna.json +0 -48
  1928. package/components/core/Breadcrumbs/Breadcrumbs.dna.json +0 -29
  1929. package/components/core/Button/Button.dna.json +0 -58
  1930. package/components/core/Card/Card.dna.json +0 -21
  1931. package/components/core/Checkbox/Checkbox.dna.json +0 -38
  1932. package/components/core/ContextMenu/ContextMenu.dna.json +0 -25
  1933. package/components/core/CountdownTimer/CountdownTimer.dna.json +0 -79
  1934. package/components/core/Dialog/Dialog.dna.json +0 -28
  1935. package/components/core/Divider/Divider.dna.json +0 -16
  1936. package/components/core/Divider/Divider.schema.json +0 -41
  1937. package/components/core/DropdownMenu/DropdownMenu.dna.json +0 -28
  1938. package/components/core/HelpPanel/HelpPanel.dna.json +0 -24
  1939. package/components/core/HelpPanel/HelpPanel.schema.json +0 -47
  1940. package/components/core/Input/Input.dna.json +0 -33
  1941. package/components/core/MockStatesPopover/MockStatesPopover.dna.json +0 -33
  1942. package/components/core/MockStatesPopover/MockStatesPopover.schema.json +0 -80
  1943. package/components/core/Popover/Popover.dna.json +0 -10
  1944. package/components/core/Progress/Progress.dna.json +0 -29
  1945. package/components/core/Progress/Progress.schema.json +0 -57
  1946. package/components/core/Select/Select.dna.json +0 -42
  1947. package/components/core/Sheet/Sheet.dna.json +0 -28
  1948. package/components/core/Slider/Slider.dna.json +0 -49
  1949. package/components/core/Switch/Switch.dna.json +0 -47
  1950. package/components/core/Tabs/Tabs.dna.json +0 -39
  1951. package/components/core/Toast/Toast.dna.json +0 -31
  1952. package/components/core/Tooltip/Tooltip.dna.json +0 -46
  1953. package/components/core/Web3ActionBar/Web3ActionBar.dna.json +0 -23
  1954. package/components/core/Web3ActionBar/Web3ActionBar.schema.json +0 -50
  1955. package/dist/chunk-SR2T7OEJ.mjs +0 -46
  1956. package/dist/chunk-SR2T7OEJ.mjs.map +0 -1
  1957. package/dist/components/core/index.d.mts +0 -911
  1958. package/dist/components/core/index.mjs +0 -2475
  1959. package/dist/components/core/index.mjs.map +0 -1
  1960. package/dist/hooks/index.d.mts +0 -22
  1961. package/dist/hooks/index.mjs +0 -3
  1962. package/dist/hooks/index.mjs.map +0 -1
  1963. package/dist/remotion/index.d.mts +0 -252
  1964. package/dist/remotion/index.mjs +0 -170
  1965. package/dist/remotion/index.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../components/core/Accordion/Accordion.tsx","../../../components/core/Alert/Alert.tsx","../../../components/core/Badge/Badge.tsx","../../../components/core/Breadcrumbs/Breadcrumbs.tsx","../../../components/core/Button/Button.tsx","../../../components/core/Card/Card.tsx","../../../components/core/Checkbox/Checkbox.tsx","../../../components/core/ContextMenu/ContextMenu.tsx","../../../components/core/Divider/Divider.tsx","../../../components/core/DropdownMenu/DropdownMenu.tsx","../../../components/core/Input/Input.tsx","../../../components/core/Progress/Progress.tsx","../../../components/core/Select/Select.tsx","../../../components/core/Slider/Slider.tsx","../../../components/core/Switch/Switch.tsx","../../../components/core/Tabs/Tabs.tsx","../../../components/core/Tooltip/Tooltip.tsx","../../../components/core/Toast/Toast.tsx","../../../components/core/HelpPanel/HelpPanel.tsx","../../../components/core/Popover/Popover.tsx","../../../components/core/Sheet/Sheet.tsx","../../../components/core/MockStatesPopover/MockStatesPopover.tsx","../../../components/core/CountdownTimer/CountdownTimer.tsx","../../../components/core/Web3ActionBar/Web3ActionBar.tsx","../../../components/core/Dialog/Dialog.tsx"],"names":["jsx","jsxs","variantStyles","baseStyles","sizeStyles","_","Checkbox","Radio","createContext","useContext","useState","useRef","useEffect","borderStyle","useCallback","React","forwardRef","Input","TextArea","createPortal","Fragment"],"mappings":"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","file":"index.mjs","sourcesContent":["'use client';\n\nimport React, { createContext, useContext, useState, useCallback, useRef, useEffect } from 'react';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype AccordionType = 'single' | 'multiple';\n\ninterface AccordionContextValue {\n type: AccordionType;\n expandedItems: Set<string>;\n toggleItem: (value: string) => void;\n}\n\ninterface AccordionItemContextValue {\n value: string;\n isExpanded: boolean;\n}\n\n// ============================================================================\n// Context\n// ============================================================================\n\nconst AccordionContext = createContext<AccordionContextValue | null>(null);\nconst AccordionItemContext = createContext<AccordionItemContextValue | null>(null);\n\nfunction useAccordionContext() {\n const context = useContext(AccordionContext);\n if (!context) {\n throw new Error('Accordion components must be used within an Accordion');\n }\n return context;\n}\n\nfunction useAccordionItemContext() {\n const context = useContext(AccordionItemContext);\n if (!context) {\n throw new Error('AccordionTrigger/AccordionContent must be used within an AccordionItem');\n }\n return context;\n}\n\n// ============================================================================\n// Accordion Root\n// ============================================================================\n\ninterface AccordionProps {\n /** Allow single or multiple items to be expanded at once */\n type?: AccordionType;\n /** Default expanded item(s) - string for single, array for multiple */\n defaultValue?: string | string[];\n /** Controlled expanded value(s) */\n value?: string | string[];\n /** Callback when expanded items change */\n onValueChange?: (value: string | string[]) => void;\n /** Additional className */\n className?: string;\n /** Children */\n children: React.ReactNode;\n}\n\nexport function Accordion({\n type = 'single',\n defaultValue,\n value: controlledValue,\n onValueChange,\n className = '',\n children,\n}: AccordionProps) {\n // Initialize expanded items\n const getInitialExpanded = (): Set<string> => {\n const initial = controlledValue ?? defaultValue;\n if (!initial) return new Set();\n return new Set(Array.isArray(initial) ? initial : [initial]);\n };\n\n const [expandedItems, setExpandedItems] = useState<Set<string>>(getInitialExpanded);\n\n // Sync with controlled value\n useEffect(() => {\n if (controlledValue !== undefined) {\n setExpandedItems(new Set(Array.isArray(controlledValue) ? controlledValue : [controlledValue]));\n }\n }, [controlledValue]);\n\n const toggleItem = useCallback((itemValue: string) => {\n setExpandedItems((prev) => {\n const next = new Set(prev);\n\n if (next.has(itemValue)) {\n next.delete(itemValue);\n } else {\n if (type === 'single') {\n next.clear();\n }\n next.add(itemValue);\n }\n\n // Notify parent of change\n if (onValueChange) {\n const newValue = Array.from(next);\n onValueChange(type === 'single' ? (newValue[0] ?? '') : newValue);\n }\n\n return next;\n });\n }, [type, onValueChange]);\n\n return (\n <AccordionContext.Provider value={{ type, expandedItems, toggleItem }}>\n <div className={`space-y-0 ${className}`}>\n {children}\n </div>\n </AccordionContext.Provider>\n );\n}\n\n// ============================================================================\n// Accordion Item\n// ============================================================================\n\ninterface AccordionItemProps {\n /** Unique value for this item */\n value: string;\n /** Additional className */\n className?: string;\n /** Children (AccordionTrigger and AccordionContent) */\n children: React.ReactNode;\n}\n\nexport function AccordionItem({ value, className = '', children }: AccordionItemProps) {\n const { expandedItems } = useAccordionContext();\n const isExpanded = expandedItems.has(value);\n\n return (\n <AccordionItemContext.Provider value={{ value, isExpanded }}>\n <div\n className={`\n border border-edge-primary\n bg-surface-primary\n -mt-px first:mt-0\n ${className}\n `.trim()}\n data-state={isExpanded ? 'open' : 'closed'}\n >\n {children}\n </div>\n </AccordionItemContext.Provider>\n );\n}\n\n// ============================================================================\n// Accordion Trigger\n// ============================================================================\n\ninterface AccordionTriggerProps {\n /** Additional className */\n className?: string;\n /** Children (header content) */\n children: React.ReactNode;\n}\n\nexport function AccordionTrigger({ className = '', children }: AccordionTriggerProps) {\n const { toggleItem } = useAccordionContext();\n const { value, isExpanded } = useAccordionItemContext();\n\n return (\n <button\n type=\"button\"\n onClick={() => toggleItem(value)}\n className={`\n w-full flex items-center justify-between\n px-4 py-3\n font-joystix text-sm uppercase text-content-primary\n bg-transparent\n hover:bg-content-primary/5\n transition-colors\n cursor-pointer\n ${className}\n `.trim()}\n aria-expanded={isExpanded}\n >\n <span>{children}</span>\n <span\n className=\"text-[1rem] font-mondwest select-none\"\n aria-hidden=\"true\"\n >\n {isExpanded ? '−' : '+'}\n </span>\n </button>\n );\n}\n\n// ============================================================================\n// Accordion Content\n// ============================================================================\n\ninterface AccordionContentProps {\n /** Additional className */\n className?: string;\n /** Children (content) */\n children: React.ReactNode;\n}\n\nexport function AccordionContent({ className = '', children }: AccordionContentProps) {\n const { isExpanded } = useAccordionItemContext();\n const contentRef = useRef<HTMLDivElement>(null);\n const [height, setHeight] = useState<number | undefined>(undefined);\n const [isAnimating, setIsAnimating] = useState(false);\n\n useEffect(() => {\n const content = contentRef.current;\n if (!content) return;\n\n if (isExpanded) {\n // Expanding: measure content height and animate\n const scrollHeight = content.scrollHeight;\n setHeight(scrollHeight);\n setIsAnimating(true);\n\n const timer = setTimeout(() => {\n setIsAnimating(false);\n setHeight(undefined); // Remove fixed height after animation\n }, 200);\n\n return () => clearTimeout(timer);\n } else {\n // Collapsing: set current height first, then animate to 0\n const scrollHeight = content.scrollHeight;\n setHeight(scrollHeight);\n setIsAnimating(true);\n\n // Force reflow before setting height to 0\n requestAnimationFrame(() => {\n setHeight(0);\n });\n\n const timer = setTimeout(() => {\n setIsAnimating(false);\n }, 200);\n\n return () => clearTimeout(timer);\n }\n }, [isExpanded]);\n\n return (\n <div\n ref={contentRef}\n className={`\n overflow-hidden\n transition-[height] duration-200 ease-out\n ${className}\n `.trim()}\n style={{\n height: isAnimating ? height : (isExpanded ? 'auto' : 0),\n }}\n aria-hidden={!isExpanded}\n >\n <div className=\"px-4 pb-4\">\n {children}\n </div>\n </div>\n );\n}\n\nexport default Accordion;\n","'use client';\n\nimport React from 'react';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype AlertVariant = 'default' | 'success' | 'warning' | 'error' | 'info';\n\ninterface AlertProps {\n /** Alert variant */\n variant?: AlertVariant;\n /** Alert title */\n title?: string;\n /** Alert content */\n children: React.ReactNode;\n /** Show close button */\n closable?: boolean;\n /** Close handler */\n onClose?: () => void;\n /** Icon slot - renders before content */\n icon?: React.ReactNode;\n /** Close icon slot - renders for close button */\n closeIcon?: React.ReactNode;\n /** Additional className */\n className?: string;\n}\n\n// ============================================================================\n// Styles\n// ============================================================================\n\nconst variantStyles: Record<AlertVariant, string> = {\n default: 'bg-surface-primary border-edge-primary text-content-primary',\n success: 'bg-status-success/10 border-status-success text-content-primary',\n warning: 'bg-status-warning/10 border-status-warning text-content-primary',\n error: 'bg-status-error/10 border-status-error text-content-primary',\n info: 'bg-status-info/10 border-status-info text-content-primary',\n};\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * Alert component - Static alert banners\n *\n * Uses slot-based API for icons to avoid coupling to specific icon systems.\n * Pass your own icon components via the `icon` and `closeIcon` props.\n */\nexport function Alert({\n variant = 'default',\n title,\n children,\n closable = false,\n onClose,\n icon,\n closeIcon,\n className = '',\n}: AlertProps) {\n return (\n <div\n role=\"alert\"\n className={`\n p-4\n border-2\n rounded-sm\n ${variantStyles[variant]}\n ${className}\n `.trim()}\n >\n <div className=\"flex items-start gap-3\">\n {/* Icon slot */}\n {icon && (\n <span className=\"flex-shrink-0 mt-0.5\">\n {icon}\n </span>\n )}\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n {title && (\n <p className=\"font-joystix text-xs uppercase mb-1\">\n {title}\n </p>\n )}\n <div className=\"font-mondwest text-base text-content-primary/80\">\n {children}\n </div>\n </div>\n\n {/* Close Button */}\n {closable && (\n <button\n onClick={onClose}\n className=\"text-content-primary/50 hover:text-content-primary flex-shrink-0 -mt-1\"\n aria-label=\"Close\"\n >\n {closeIcon || (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 4L4 12M4 4L12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </button>\n )}\n </div>\n </div>\n );\n}\n\nexport default Alert;\n","'use client';\n\nimport React from 'react';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype BadgeVariant = 'default' | 'success' | 'warning' | 'error' | 'info';\ntype BadgeSize = 'sm' | 'md';\n\ninterface BadgeProps {\n /** Visual variant */\n variant?: BadgeVariant;\n /** Size preset */\n size?: BadgeSize;\n /** Badge content */\n children: React.ReactNode;\n /** Additional classes */\n className?: string;\n}\n\n// ============================================================================\n// Styles\n// ============================================================================\n\n/**\n * Base badge styles\n */\nconst baseStyles = `\n inline-flex items-center justify-center\n font-joystix uppercase\n rounded-sm\n whitespace-nowrap\n`;\n\n/**\n * Size presets\n */\nconst sizeStyles: Record<BadgeSize, string> = {\n sm: 'px-2 py-0.5 text-2xs',\n md: 'px-2.5 py-1 text-xs',\n};\n\n/**\n * Variant color schemes (using semantic tokens)\n */\nconst variantStyles: Record<BadgeVariant, string> = {\n default: 'bg-surface-primary text-content-primary border border-edge-primary',\n success: 'bg-status-success text-content-primary border border-edge-primary',\n warning: 'bg-status-warning text-content-primary border border-edge-primary',\n error: 'bg-status-error text-content-primary border border-edge-primary',\n info: 'bg-status-info text-content-primary border border-edge-primary',\n};\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * Badge component for status indicators and labels\n */\nexport function Badge({\n variant = 'default',\n size = 'md',\n children,\n className = '',\n}: BadgeProps) {\n const classes = [\n baseStyles,\n sizeStyles[size],\n variantStyles[variant],\n className,\n ]\n .join(' ')\n .replace(/\\s+/g, ' ')\n .trim();\n\n return (\n <span className={classes}>\n {children}\n </span>\n );\n}\n\nexport default Badge;\n","'use client';\n\nimport React from 'react';\nimport Link from 'next/link';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ninterface BreadcrumbItem {\n /** Display label */\n label: string;\n /** Navigation href (optional for current/last item) */\n href?: string;\n}\n\ninterface BreadcrumbsProps {\n /** Breadcrumb items */\n items: BreadcrumbItem[];\n /** Separator character */\n separator?: string;\n /** Additional className */\n className?: string;\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * Breadcrumbs component - Navigation hierarchy\n */\nexport function Breadcrumbs({\n items,\n separator = '/',\n className = '',\n}: BreadcrumbsProps) {\n if (items.length === 0) return null;\n\n return (\n <nav\n aria-label=\"Breadcrumb\"\n className={`flex items-center gap-2 ${className}`.trim()}\n >\n <ol className=\"flex items-center gap-2\">\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n\n return (\n <li key={index} className=\"flex items-center gap-2\">\n {/* Separator */}\n {index > 0 && (\n <span\n className=\"font-mondwest text-base text-content-primary/40\"\n aria-hidden=\"true\"\n >\n {separator}\n </span>\n )}\n\n {/* Item */}\n {item.href && !isLast ? (\n <Link\n href={item.href}\n className=\"font-mondwest text-base text-content-primary/60 hover:text-content-primary hover:underline transition-colors\"\n >\n {item.label}\n </Link>\n ) : (\n <span\n className={`\n font-mondwest text-base\n ${isLast ? 'text-content-primary font-semibold' : 'text-content-primary/60'}\n `.trim()}\n aria-current={isLast ? 'page' : undefined}\n >\n {item.label}\n </span>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n}\n\nexport default Breadcrumbs;\n","'use client';\n\nimport React from 'react';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost';\ntype ButtonSize = 'sm' | 'md' | 'lg';\n\ninterface BaseButtonProps {\n /** Visual variant */\n variant?: ButtonVariant;\n /** Size preset */\n size?: ButtonSize;\n /** Expand to fill container width */\n fullWidth?: boolean;\n /** Square button with icon only (no text) */\n iconOnly?: boolean;\n /** Show loading state */\n loading?: boolean;\n /** Button content (optional when iconOnly is true) */\n children?: React.ReactNode;\n /** Additional className */\n className?: string;\n /** Icon slot - render your icon component here */\n icon?: React.ReactNode;\n /** Loading indicator slot - render your spinner here */\n loadingIndicator?: React.ReactNode;\n}\n\ninterface ButtonAsButtonProps extends BaseButtonProps, Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, keyof BaseButtonProps> {\n /** URL for navigation - when provided, button can act as a link */\n href?: undefined;\n}\n\ninterface ButtonAsLinkProps extends BaseButtonProps, Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, keyof BaseButtonProps> {\n /** URL for navigation - renders as anchor element */\n href: string;\n /** Whether to render as anchor (true) or use window.open (false) */\n asLink?: boolean;\n /** Target for link navigation (e.g., '_blank') */\n target?: string;\n}\n\ntype ButtonProps = ButtonAsButtonProps | ButtonAsLinkProps;\n\n// ============================================================================\n// Styles\n// ============================================================================\n\n/**\n * Base styles applied to all buttons\n * - Retro lift effect with box-shadow\n * - NO transitions (instant state changes)\n */\nconst baseStyles = `\n inline-flex items-center\n font-heading uppercase\n whitespace-nowrap\n cursor-pointer select-none\n border border-edge-primary\n rounded-sm\n shadow-btn\n hover:-translate-y-0.5\n hover:shadow-btn-hover\n active:translate-y-0.5\n active:shadow-none\n disabled:opacity-50 disabled:cursor-not-allowed\n disabled:hover:translate-y-0 disabled:hover:shadow-btn\n focus:outline-none focus-visible:ring-2 focus-visible:ring-edge-focus focus-visible:ring-offset-1\n`;\n\n/**\n * Size presets\n * All buttons use h-8 (2rem) height for consistency\n * Text sizes: sm=12px, md=12px, lg=14px\n */\nconst sizeStyles: Record<ButtonSize, string> = {\n sm: 'h-8 px-3 text-xs gap-3',\n md: 'h-8 px-3 text-xs gap-3',\n lg: 'h-8 px-3 text-sm gap-3',\n};\n\n/**\n * Icon-only size presets (square buttons)\n * All buttons use w-8 h-8 (2rem) for consistency\n */\nconst iconOnlySizeStyles: Record<ButtonSize, string> = {\n sm: 'w-8 h-8 p-0',\n md: 'w-8 h-8 p-0',\n lg: 'w-8 h-8 p-0',\n};\n\n/**\n * Variant color schemes using semantic tokens\n * - primary: action background, primary text\n * - secondary: secondary surface, inverted text, inverts on hover\n * - outline: transparent background, primary border, fills on hover\n * - ghost: no border, subtle hover effect\n */\nconst variantStyles: Record<ButtonVariant, string> = {\n primary: `\n bg-action-primary text-content-primary\n hover:bg-action-primary\n active:bg-action-primary\n `,\n secondary: `\n bg-surface-secondary text-content-inverted\n hover:bg-surface-primary hover:text-content-primary\n active:bg-action-primary active:text-content-primary\n `,\n outline: `\n bg-transparent text-content-primary\n shadow-none\n hover:bg-content-primary/5 hover:!translate-y-0 hover:shadow-none\n active:bg-action-primary active:!translate-y-0 active:shadow-none\n `,\n ghost: `\n bg-transparent text-content-primary\n border-transparent\n shadow-none\n hover:bg-transparent hover:border-edge-primary hover:text-content-primary hover:shadow-none hover:translate-y-0\n active:bg-action-primary active:text-content-primary active:border-edge-primary active:translate-y-0\n `,\n};\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\nfunction getButtonClasses(\n variant: ButtonVariant,\n size: ButtonSize,\n iconOnly: boolean,\n fullWidth: boolean,\n className: string,\n hasIcon: boolean\n): string {\n // Determine justify class:\n // - iconOnly: always center\n // - fullWidth with icon: justify-between (spread text and icon)\n // - fullWidth without icon: justify-start\n // - regular button: justify-start\n let justifyClass = 'justify-start';\n if (iconOnly) {\n justifyClass = 'justify-center';\n } else if (fullWidth && hasIcon) {\n justifyClass = 'justify-between';\n }\n\n return [\n baseStyles,\n iconOnly ? iconOnlySizeStyles[size] : sizeStyles[size],\n justifyClass,\n variantStyles[variant],\n fullWidth ? 'w-full' : '',\n className,\n ]\n .join(' ')\n .replace(/\\s+/g, ' ')\n .trim();\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * Button component with retro lift effect\n *\n * Supports both button and link behaviors:\n * - Without href: renders as <button>\n * - With href + asLink=true (default): renders as <a>\n * - With href + asLink=false: renders as <button> that opens URL via window.open\n *\n * Icon and loading indicator are provided via slots:\n * - icon: Pass your icon component (renders on the right)\n * - loadingIndicator: Pass your spinner component (replaces icon when loading)\n */\nexport function Button(props: ButtonProps) {\n const {\n variant = 'primary',\n size = 'md',\n fullWidth = false,\n iconOnly = false,\n icon,\n loadingIndicator,\n loading = false,\n children,\n className = '',\n ...rest\n } = props;\n\n // Only show loading indicator for buttons with icons\n const hasIcon = Boolean(icon || iconOnly);\n const showLoading: boolean = Boolean(loading && hasIcon && loadingIndicator);\n\n const classes = getButtonClasses(variant, size, iconOnly, fullWidth, className, hasIcon);\n\n // Render content with optional icon or loading indicator\n // Icons appear on the right side of the button text\n const content = showLoading ? (\n <>\n {!iconOnly && children}\n {loadingIndicator}\n </>\n ) : icon ? (\n <>\n {!iconOnly && children}\n {icon}\n </>\n ) : (\n children\n );\n\n // Check if this is a link variant\n if ('href' in props && props.href) {\n const { href, asLink = true, target, ...linkRest } = rest as ButtonAsLinkProps;\n\n // Use anchor element for navigation\n if (asLink) {\n return (\n <a\n href={href}\n target={target}\n className={classes}\n {...(linkRest as Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href' | 'target' | 'className'>)}\n >\n {content}\n </a>\n );\n }\n\n // Use window.open via button click\n const linkButtonDisabled: boolean = showLoading || Boolean((linkRest as React.ButtonHTMLAttributes<HTMLButtonElement>).disabled);\n const { disabled: _, ...linkButtonRest } = linkRest as React.ButtonHTMLAttributes<HTMLButtonElement>;\n return (\n <button\n type=\"button\"\n className={classes}\n onClick={() => window.open(href, target || '_self')}\n disabled={linkButtonDisabled}\n {...linkButtonRest}\n >\n {content}\n </button>\n );\n }\n\n // Standard button\n const buttonProps = rest as ButtonAsButtonProps;\n\n // Disable button when loading\n const disabled: boolean = showLoading || Boolean(buttonProps.disabled);\n const { disabled: _, ...buttonPropsWithoutDisabled } = buttonProps;\n\n return (\n <button className={classes} {...buttonPropsWithoutDisabled} disabled={disabled}>\n {content}\n </button>\n );\n}\n\nexport default Button;\n","'use client';\n\nimport React from 'react';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype CardVariant = 'default' | 'dark' | 'raised';\n\ninterface CardProps {\n /** Visual variant */\n variant?: CardVariant;\n /** Card content */\n children: React.ReactNode;\n /** Additional classes */\n className?: string;\n /** Optional padding override */\n noPadding?: boolean;\n}\n\ninterface CardHeaderProps {\n children: React.ReactNode;\n className?: string;\n}\n\ninterface CardBodyProps {\n children: React.ReactNode;\n className?: string;\n}\n\ninterface CardFooterProps {\n children: React.ReactNode;\n className?: string;\n}\n\n// ============================================================================\n// Styles\n// ============================================================================\n\n/**\n * Base styles for all cards\n */\nconst baseStyles = `\n border border-edge-primary\n rounded-md\n overflow-hidden\n`;\n\n/**\n * Variant styles using semantic tokens\n * - default: primary surface, primary text\n * - dark: secondary surface, inverted text\n * - raised: primary surface with retro shadow effect\n */\nconst variantStyles: Record<CardVariant, string> = {\n default: `\n bg-surface-primary text-content-primary\n `,\n dark: `\n bg-surface-secondary text-content-inverted\n `,\n raised: `\n bg-surface-primary text-content-primary\n shadow-card\n `,\n};\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * Card container component with consistent styling\n */\nexport function Card({\n variant = 'default',\n children,\n className = '',\n noPadding = false,\n}: CardProps) {\n const classes = [\n baseStyles,\n variantStyles[variant],\n noPadding ? '' : 'p-4',\n className,\n ]\n .join(' ')\n .replace(/\\s+/g, ' ')\n .trim();\n\n return (\n <div className={classes}>\n {children}\n </div>\n );\n}\n\n// ============================================================================\n// Card Sub-components\n// ============================================================================\n\n/**\n * Card header with bottom border\n */\nexport function CardHeader({ children, className = '' }: CardHeaderProps) {\n return (\n <div className={`px-4 py-3 border-b border-edge-primary ${className}`}>\n {children}\n </div>\n );\n}\n\n/**\n * Card body with standard padding\n */\nexport function CardBody({ children, className = '' }: CardBodyProps) {\n return (\n <div className={`p-4 ${className}`}>\n {children}\n </div>\n );\n}\n\n/**\n * Card footer with top border\n */\nexport function CardFooter({ children, className = '' }: CardFooterProps) {\n return (\n <div className={`px-4 py-3 border-t border-edge-primary ${className}`}>\n {children}\n </div>\n );\n}\n\nexport default Card;\n","'use client';\n\nimport React, { forwardRef } from 'react';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ninterface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n /** Label text */\n label?: string;\n /** Additional classes for container */\n className?: string;\n}\n\ninterface RadioProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n /** Label text */\n label?: string;\n /** Additional classes for container */\n className?: string;\n}\n\n// ============================================================================\n// Checkmark Icon (inline SVG)\n// ============================================================================\n\nfunction CheckmarkIcon({ className = '' }: { className?: string }) {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n <path\n d=\"M13.5 4.5L6 12L2.5 8.5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\n// ============================================================================\n// Checkbox Component\n// ============================================================================\n\n/**\n * Retro-styled checkbox\n */\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\n { label, className = '', disabled, ...props },\n ref\n) {\n return (\n <label\n className={`\n inline-flex items-center gap-2 cursor-pointer\n ${disabled ? 'opacity-50 cursor-not-allowed' : ''}\n ${className}\n `}\n >\n <div className=\"relative\">\n <input\n ref={ref}\n type=\"checkbox\"\n disabled={disabled}\n className=\"peer sr-only\"\n {...props}\n />\n {/* Custom checkbox visual */}\n <div\n className={`\n w-5 h-5\n bg-surface-primary\n border border-edge-primary\n rounded-xs\n peer-checked:bg-action-primary\n peer-focus:ring-2 peer-focus:ring-edge-focus peer-focus:ring-offset-1\n flex items-center justify-center\n `}\n />\n {/* Checkmark - visible when checkbox is checked */}\n <div className=\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 opacity-0 peer-checked:opacity-100 transition-opacity pointer-events-none\">\n <CheckmarkIcon className=\"text-content-primary\" />\n </div>\n </div>\n {label && (\n <span className=\"font-mondwest text-base text-content-primary select-none\">\n {label}\n </span>\n )}\n </label>\n );\n});\n\n// ============================================================================\n// Radio Component\n// ============================================================================\n\n/**\n * Retro-styled radio button\n */\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(function Radio(\n { label, className = '', disabled, ...props },\n ref\n) {\n return (\n <label\n className={`\n inline-flex items-center gap-2 cursor-pointer\n ${disabled ? 'opacity-50 cursor-not-allowed' : ''}\n ${className}\n `}\n >\n <div className=\"relative\">\n <input\n ref={ref}\n type=\"radio\"\n disabled={disabled}\n className=\"peer sr-only\"\n {...props}\n />\n {/* Custom radio visual */}\n <div\n className={`\n w-5 h-5\n bg-surface-primary\n border border-edge-primary\n rounded-full\n peer-checked:bg-action-primary\n peer-focus:ring-2 peer-focus:ring-edge-focus peer-focus:ring-offset-1\n flex items-center justify-center\n `}\n >\n {/* Inner dot placeholder */}\n </div>\n {/* Inner dot when checked */}\n <div\n className=\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-2 h-2 bg-content-primary rounded-full opacity-0 peer-checked:opacity-100 pointer-events-none\"\n />\n </div>\n {label && (\n <span className=\"font-mondwest text-base text-content-primary select-none\">\n {label}\n </span>\n )}\n </label>\n );\n});\n\nexport default Checkbox;\n","'use client';\n\nimport React, { useState, useRef, useEffect, createContext, useContext } from 'react';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ninterface Position {\n x: number;\n y: number;\n}\n\ninterface ContextMenuContextValue {\n isOpen: boolean;\n position: Position;\n open: (position: Position) => void;\n close: () => void;\n}\n\ninterface ContextMenuProps {\n /** Content that triggers context menu on right-click */\n children: React.ReactNode;\n /** Additional classes for trigger container */\n className?: string;\n}\n\ninterface ContextMenuContentProps {\n /** Menu items */\n children: React.ReactNode;\n /** Additional classes */\n className?: string;\n}\n\ninterface ContextMenuItemProps {\n /** Click handler */\n onClick?: () => void;\n /** Disabled state */\n disabled?: boolean;\n /** Destructive action (red text) */\n destructive?: boolean;\n /** Icon element to display before the label */\n icon?: React.ReactNode;\n /** Menu item content */\n children: React.ReactNode;\n /** Additional classes */\n className?: string;\n}\n\ninterface ContextMenuSeparatorProps {\n className?: string;\n}\n\n// ============================================================================\n// Context\n// ============================================================================\n\nconst ContextMenuContext = createContext<ContextMenuContextValue | null>(null);\n\nfunction useContextMenu() {\n const context = useContext(ContextMenuContext);\n if (!context) {\n throw new Error('ContextMenu components must be used within a ContextMenu provider');\n }\n return context;\n}\n\n// ============================================================================\n// Components\n// ============================================================================\n\n/**\n * Context menu container - wraps content that should have right-click menu\n */\nexport function ContextMenu({ children, className = '' }: ContextMenuProps) {\n const [isOpen, setIsOpen] = useState(false);\n const [position, setPosition] = useState<Position>({ x: 0, y: 0 });\n const containerRef = useRef<HTMLDivElement>(null);\n\n const open = (pos: Position) => {\n setPosition(pos);\n setIsOpen(true);\n };\n\n const close = () => {\n setIsOpen(false);\n };\n\n // Handle right-click\n const handleContextMenu = (e: React.MouseEvent) => {\n e.preventDefault();\n open({ x: e.clientX, y: e.clientY });\n };\n\n // Close on click outside\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n close();\n }\n };\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') close();\n };\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n document.addEventListener('keydown', handleEscape);\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n document.removeEventListener('keydown', handleEscape);\n };\n }, [isOpen]);\n\n return (\n <ContextMenuContext.Provider value={{ isOpen, position, open, close }}>\n <div\n ref={containerRef}\n onContextMenu={handleContextMenu}\n className={className}\n >\n {children}\n </div>\n </ContextMenuContext.Provider>\n );\n}\n\n/**\n * Context menu dropdown content\n */\nexport function ContextMenuContent({ children, className = '' }: ContextMenuContentProps) {\n const { isOpen, position, close } = useContextMenu();\n\n if (!isOpen) return null;\n\n return (\n <div\n className={`\n fixed z-[1000]\n min-w-[160px]\n bg-surface-primary\n border border-edge-primary\n rounded-sm\n shadow-[2px_2px_0_0_var(--color-edge-primary)]\n py-1\n ${className}\n `}\n style={{\n left: position.x,\n top: position.y,\n }}\n onClick={close}\n >\n {children}\n </div>\n );\n}\n\n/**\n * Context menu item\n */\nexport function ContextMenuItem({\n onClick,\n disabled = false,\n destructive = false,\n icon,\n children,\n className = '',\n}: ContextMenuItemProps) {\n const { close } = useContextMenu();\n\n const handleClick = () => {\n if (!disabled && onClick) {\n onClick();\n close();\n }\n };\n\n return (\n <button\n type=\"button\"\n onClick={handleClick}\n disabled={disabled}\n className={`\n w-full flex items-center gap-2\n px-3 py-1.5\n font-mondwest text-base text-left\n ${destructive ? 'text-status-error' : 'text-content-primary'}\n ${disabled ? 'opacity-50 cursor-not-allowed' : 'hover:bg-action-primary cursor-pointer'}\n ${className}\n `}\n >\n {icon && (\n <span className=\"w-4 h-4 flex items-center justify-center\">\n {icon}\n </span>\n )}\n <span>{children}</span>\n </button>\n );\n}\n\n/**\n * Context menu separator line\n */\nexport function ContextMenuSeparator({ className = '' }: ContextMenuSeparatorProps) {\n return (\n <div\n className={`my-1 border-t border-edge-primary/20 ${className}`}\n />\n );\n}\n\nexport default ContextMenu;\n","'use client';\n\nimport React from 'react';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype DividerOrientation = 'horizontal' | 'vertical';\ntype DividerVariant = 'solid' | 'dashed' | 'decorated';\n\ninterface DividerProps {\n /** Orientation */\n orientation?: DividerOrientation;\n /** Visual variant */\n variant?: DividerVariant;\n /** Additional classes */\n className?: string;\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * Divider component for separating content\n */\nexport function Divider({\n orientation = 'horizontal',\n variant = 'solid',\n className = '',\n}: DividerProps) {\n // Decorated variant with diamond in center\n if (variant === 'decorated') {\n return (\n <div className={`flex items-center gap-4 ${className}`}>\n <div className=\"flex-1 h-[2px] bg-edge-primary/20\" />\n <div className=\"w-2 h-2 bg-action-primary border border-edge-primary rotate-45\" />\n <div className=\"flex-1 h-[2px] bg-edge-primary/20\" />\n </div>\n );\n }\n\n // Horizontal divider\n if (orientation === 'horizontal') {\n const borderStyle = variant === 'dashed' ? 'border-dashed' : 'border-solid';\n return (\n <div\n className={`w-full border-t border-edge-primary/20 ${borderStyle} ${className}`}\n role=\"separator\"\n aria-orientation=\"horizontal\"\n />\n );\n }\n\n // Vertical divider\n const borderStyle = variant === 'dashed' ? 'border-dashed' : 'border-solid';\n return (\n <div\n className={`h-full border-l border-edge-primary/20 ${borderStyle} ${className}`}\n role=\"separator\"\n aria-orientation=\"vertical\"\n />\n );\n}\n\nexport default Divider;\n","'use client';\n\nimport React, { createContext, useContext, useState, useRef, useEffect, useCallback } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useEscapeKey, useClickOutside } from '../../../hooks';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype DropdownPosition = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';\n\ninterface DropdownContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.RefObject<HTMLElement | null>;\n position: DropdownPosition;\n}\n\n// ============================================================================\n// Context\n// ============================================================================\n\nconst DropdownContext = createContext<DropdownContextValue | null>(null);\n\nfunction useDropdownContext() {\n const context = useContext(DropdownContext);\n if (!context) {\n throw new Error('DropdownMenu components must be used within a DropdownMenu');\n }\n return context;\n}\n\n// ============================================================================\n// Dropdown Menu Root\n// ============================================================================\n\ninterface DropdownMenuProps {\n /** Controlled open state */\n open?: boolean;\n /** Default open state */\n defaultOpen?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Position relative to trigger */\n position?: DropdownPosition;\n /** Children */\n children: React.ReactNode;\n}\n\nexport function DropdownMenu({\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n position = 'bottom-start',\n children,\n}: DropdownMenuProps) {\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : internalOpen;\n const triggerRef = useRef<HTMLElement>(null);\n\n const setOpen = useCallback((newOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n }, [isControlled, onOpenChange]);\n\n return (\n <DropdownContext.Provider value={{ open, setOpen, triggerRef, position }}>\n <div className=\"relative inline-block\">\n {children}\n </div>\n </DropdownContext.Provider>\n );\n}\n\n// ============================================================================\n// Dropdown Menu Trigger\n// ============================================================================\n\ninterface DropdownMenuTriggerProps {\n /** Trigger element */\n children: React.ReactElement;\n /** Pass through as child instead of wrapping */\n asChild?: boolean;\n}\n\nexport function DropdownMenuTrigger({ children, asChild }: DropdownMenuTriggerProps) {\n const { open, setOpen, triggerRef } = useDropdownContext();\n\n const handleClick = () => {\n setOpen(!open);\n };\n\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(children as React.ReactElement<{ onClick?: () => void; ref?: React.Ref<HTMLElement | null> }>, {\n onClick: handleClick,\n ref: triggerRef as React.Ref<HTMLElement | null>,\n });\n }\n\n return (\n <button\n type=\"button\"\n ref={triggerRef as React.RefObject<HTMLButtonElement>}\n onClick={handleClick}\n >\n {children}\n </button>\n );\n}\n\n// ============================================================================\n// Dropdown Menu Content\n// ============================================================================\n\ninterface DropdownMenuContentProps {\n /** Additional className */\n className?: string;\n /** Children */\n children: React.ReactNode;\n}\n\nexport function DropdownMenuContent({ className = '', children }: DropdownMenuContentProps) {\n const { open, setOpen, triggerRef, position } = useDropdownContext();\n const contentRef = useRef<HTMLDivElement>(null);\n const [mounted, setMounted] = useState(false);\n const [coords, setCoords] = useState({ top: 0, left: 0 });\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n // Calculate position\n useEffect(() => {\n if (!open || !triggerRef.current || !contentRef.current) return;\n\n const trigger = triggerRef.current.getBoundingClientRect();\n const content = contentRef.current.getBoundingClientRect();\n const gap = 4;\n\n let top = 0;\n let left = 0;\n\n switch (position) {\n case 'bottom-start':\n top = trigger.bottom + gap;\n left = trigger.left;\n break;\n case 'bottom-end':\n top = trigger.bottom + gap;\n left = trigger.right - content.width;\n break;\n case 'top-start':\n top = trigger.top - content.height - gap;\n left = trigger.left;\n break;\n case 'top-end':\n top = trigger.top - content.height - gap;\n left = trigger.right - content.width;\n break;\n }\n\n // Keep within viewport\n top = Math.max(8, Math.min(top, window.innerHeight - content.height - 8));\n left = Math.max(8, Math.min(left, window.innerWidth - content.width - 8));\n\n setCoords({ top, left });\n }, [open, position, triggerRef]);\n\n // Handle click outside\n useClickOutside(open, [contentRef, triggerRef], () => setOpen(false));\n\n // Handle escape\n useEscapeKey(open, () => setOpen(false));\n\n if (!mounted || !open) return null;\n\n return createPortal(\n <div\n ref={contentRef}\n role=\"menu\"\n className={`\n fixed z-50\n min-w-[8rem]\n bg-surface-primary\n border-2 border-edge-primary\n rounded-sm\n shadow-[2px_2px_0_0_var(--color-edge-primary)]\n py-1\n animate-fadeIn\n ${className}\n `.trim()}\n style={{ top: coords.top, left: coords.left }}\n >\n {children}\n </div>,\n document.body\n );\n}\n\n// ============================================================================\n// Dropdown Menu Item\n// ============================================================================\n\ninterface DropdownMenuItemProps {\n /** Item content */\n children: React.ReactNode;\n /** Click handler */\n onClick?: () => void;\n /** Disabled state */\n disabled?: boolean;\n /** Destructive styling */\n destructive?: boolean;\n /** Additional className */\n className?: string;\n}\n\nexport function DropdownMenuItem({\n children,\n onClick,\n disabled = false,\n destructive = false,\n className = '',\n}: DropdownMenuItemProps) {\n const { setOpen } = useDropdownContext();\n\n const handleClick = () => {\n if (disabled) return;\n onClick?.();\n setOpen(false);\n };\n\n return (\n <button\n type=\"button\"\n role=\"menuitem\"\n onClick={handleClick}\n disabled={disabled}\n className={`\n w-full px-4 py-2\n text-left\n font-mondwest text-base\n ${destructive ? 'text-status-error' : 'text-content-primary'}\n ${disabled ? 'opacity-50 cursor-not-allowed' : 'hover:bg-content-primary/5 cursor-pointer'}\n transition-colors\n ${className}\n `.trim()}\n >\n {children}\n </button>\n );\n}\n\n// ============================================================================\n// Dropdown Menu Separator\n// ============================================================================\n\ninterface DropdownMenuSeparatorProps {\n /** Additional className */\n className?: string;\n}\n\nexport function DropdownMenuSeparator({ className = '' }: DropdownMenuSeparatorProps) {\n return (\n <div\n role=\"separator\"\n className={`h-px bg-edge-primary/20 my-1 ${className}`.trim()}\n />\n );\n}\n\n// ============================================================================\n// Dropdown Menu Label\n// ============================================================================\n\ninterface DropdownMenuLabelProps {\n /** Label content */\n children: React.ReactNode;\n /** Additional className */\n className?: string;\n}\n\nexport function DropdownMenuLabel({ children, className = '' }: DropdownMenuLabelProps) {\n return (\n <div\n className={`\n px-4 py-1\n font-joystix text-2xs uppercase\n text-content-primary/50\n ${className}\n `.trim()}\n >\n {children}\n </div>\n );\n}\n\nexport default DropdownMenu;\n","'use client';\n\nimport React, { forwardRef } from 'react';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype InputSize = 'sm' | 'md' | 'lg';\n\ninterface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {\n /** Size preset */\n size?: InputSize;\n /** Error state */\n error?: boolean;\n /** Full width */\n fullWidth?: boolean;\n /** Icon name (filename without .svg extension) - displays on the left */\n iconName?: string;\n /** Additional classes */\n className?: string;\n}\n\ninterface TextAreaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n /** Error state */\n error?: boolean;\n /** Full width */\n fullWidth?: boolean;\n /** Additional classes */\n className?: string;\n}\n\ninterface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\n children: React.ReactNode;\n required?: boolean;\n className?: string;\n}\n\n// ============================================================================\n// Styles\n// ============================================================================\n\n/**\n * Base input styles using semantic tokens\n */\nconst baseStyles = `\n font-sans\n bg-surface-primary text-content-primary\n border border-edge-primary\n rounded-sm\n placeholder:text-content-muted\n focus:outline-none\n focus:ring-2 focus:ring-edge-focus focus:ring-offset-0\n disabled:opacity-50 disabled:cursor-not-allowed\n`;\n\n/**\n * Size presets\n */\nconst sizeStyles: Record<InputSize, string> = {\n sm: 'h-8 px-2 text-sm',\n md: 'h-10 px-3 text-base',\n lg: 'h-12 px-4 text-base',\n};\n\n/**\n * Error state styles using semantic tokens\n */\nconst errorStyles = `\n border-status-error\n focus:ring-status-error\n`;\n\n// ============================================================================\n// Components\n// ============================================================================\n\n/**\n * Text input with semantic token styling\n */\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n {\n size = 'md',\n error = false,\n fullWidth = false,\n iconName,\n className = '',\n ...props\n },\n ref\n) {\n const paddingLeft = iconName ? (size === 'sm' ? 'pl-8' : size === 'lg' ? 'pl-12' : 'pl-10') : '';\n\n const classes = [\n baseStyles,\n sizeStyles[size],\n error ? errorStyles : '',\n fullWidth ? 'w-full' : '',\n paddingLeft,\n className,\n ]\n .join(' ')\n .replace(/\\s+/g, ' ')\n .trim();\n\n const input = (\n <input ref={ref} className={classes} {...props} />\n );\n\n if (iconName) {\n return (\n <div className=\"relative\">\n {/* Icon slot placeholder - integrate with Icon component as needed */}\n <div className=\"absolute left-3 top-1/2 -translate-y-1/2 pointer-events-none\">\n <div\n className=\"text-content-muted\"\n data-icon-slot={iconName}\n style={{\n width: size === 'sm' ? 14 : size === 'lg' ? 18 : 20,\n height: size === 'sm' ? 14 : size === 'lg' ? 18 : 20,\n }}\n />\n </div>\n {input}\n </div>\n );\n }\n\n return input;\n});\n\n/**\n * Textarea with semantic token styling\n */\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(function TextArea(\n {\n error = false,\n fullWidth = false,\n className = '',\n ...props\n },\n ref\n) {\n const classes = [\n baseStyles,\n 'px-3 py-2 text-base',\n 'resize-y min-h-24',\n error ? errorStyles : '',\n fullWidth ? 'w-full' : '',\n className,\n ]\n .join(' ')\n .replace(/\\s+/g, ' ')\n .trim();\n\n return (\n <textarea ref={ref} className={classes} {...props} />\n );\n});\n\n/**\n * Form label with optional required indicator\n */\nexport function Label({ children, required, className = '', ...props }: LabelProps) {\n return (\n <label\n className={className}\n {...props}\n >\n {children}\n {required && <span className=\"text-status-error ml-1\">*</span>}\n </label>\n );\n}\n\nexport default Input;\n","'use client';\n\nimport React from 'react';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype ProgressVariant = 'default' | 'success' | 'warning' | 'error';\ntype ProgressSize = 'sm' | 'md' | 'lg';\n\ninterface ProgressProps {\n /** Progress value (0-100) */\n value: number;\n /** Maximum value */\n max?: number;\n /** Visual variant */\n variant?: ProgressVariant;\n /** Size preset */\n size?: ProgressSize;\n /** Show percentage label */\n showLabel?: boolean;\n /** Additional classes */\n className?: string;\n}\n\n// ============================================================================\n// Styles\n// ============================================================================\n\nconst sizeStyles: Record<ProgressSize, string> = {\n sm: 'h-2',\n md: 'h-4',\n lg: 'h-6',\n};\n\nconst variantStyles: Record<ProgressVariant, string> = {\n default: 'bg-action-primary',\n success: 'bg-status-success',\n warning: 'bg-surface-tertiary',\n error: 'bg-status-error',\n};\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * Progress bar with retro styling\n */\nexport function Progress({\n value,\n max = 100,\n variant = 'default',\n size = 'md',\n showLabel = false,\n className = '',\n}: ProgressProps) {\n const percentage = Math.min(100, Math.max(0, (value / max) * 100));\n\n return (\n <div className={`w-full ${className}`}>\n {/* Track */}\n <div\n className={`\n w-full\n bg-surface-primary\n border border-edge-primary\n rounded-sm\n overflow-hidden\n ${sizeStyles[size]}\n `}\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={max}\n >\n {/* Fill */}\n <div\n className={`\n h-full\n ${variantStyles[variant]}\n `}\n style={{ width: `${percentage}%` }}\n />\n </div>\n\n {/* Label */}\n {showLabel && (\n <div className=\"mt-1 font-joystix text-2xs text-content-primary text-right\">\n {Math.round(percentage)}%\n </div>\n )}\n </div>\n );\n}\n\n// ============================================================================\n// Loading Spinner\n// ============================================================================\n\ninterface SpinnerProps {\n /** Size in pixels */\n size?: number;\n /** Additional classes */\n className?: string;\n /** Whether loading is completed - shows checkmark */\n completed?: boolean;\n}\n\n// PixelCode loader frames - Private Use Area characters from PixelCode font\n// These are the 6-frame loader animation characters (U+EE06-U+EE0B)\n// Frame1: Frame2: Frame3: Frame4: Frame5: Frame6:\nconst LOADER_FRAMES = ['\\uEE06', '\\uEE07', '\\uEE08', '\\uEE09', '\\uEE0A', '\\uEE0B'];\n\n/**\n * PixelCode loader with animated frames that loop through 6 frames\n * When completed, displays a checkmark (checkmark)\n */\nexport function Spinner({ size = 24, className = '', completed = false }: SpinnerProps) {\n const [frameIndex, setFrameIndex] = React.useState(0);\n\n React.useEffect(() => {\n if (completed) {\n setFrameIndex(0); // Reset to first frame when completed\n return;\n }\n\n const interval = setInterval(() => {\n setFrameIndex((prev) => (prev + 1) % LOADER_FRAMES.length);\n }, 150); // Change frame every 150ms for smooth animation\n\n return () => clearInterval(interval);\n }, [completed]);\n\n const fontSize = size;\n const displayChar = completed ? '\\u2713' : LOADER_FRAMES[frameIndex];\n\n return (\n <div\n className={`inline-block flex items-center justify-center ${className}`}\n style={{\n width: size,\n height: size,\n fontSize: fontSize,\n fontFamily: 'PixelCode, monospace',\n lineHeight: 1,\n }}\n aria-label={completed ? 'Completed' : 'Loading'}\n role=\"status\"\n >\n {displayChar}\n </div>\n );\n}\n\nexport default Progress;\n","'use client';\n\nimport React, { useState, useRef, useEffect } from 'react';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ninterface SelectOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\ninterface SelectProps {\n /** Available options */\n options: SelectOption[];\n /** Currently selected value */\n value?: string;\n /** Placeholder text when no value selected */\n placeholder?: string;\n /** Change handler */\n onChange?: (value: string) => void;\n /** Disabled state */\n disabled?: boolean;\n /** Error state */\n error?: boolean;\n /** Full width */\n fullWidth?: boolean;\n /** Additional classes */\n className?: string;\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * Custom select/dropdown with retro styling\n */\nexport function Select({\n options,\n value,\n placeholder = 'Select...',\n onChange,\n disabled = false,\n error = false,\n fullWidth = false,\n className = '',\n}: SelectProps) {\n const [isOpen, setIsOpen] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n\n // Close dropdown when clicking outside\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n }\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, []);\n\n const selectedOption = options.find(opt => opt.value === value);\n\n const handleSelect = (optionValue: string) => {\n onChange?.(optionValue);\n setIsOpen(false);\n };\n\n return (\n <div\n ref={containerRef}\n className={`relative ${fullWidth ? 'w-full' : 'w-fit'} ${className}`}\n >\n {/* Trigger Button */}\n <button\n type=\"button\"\n onClick={() => !disabled && setIsOpen(!isOpen)}\n disabled={disabled}\n className={`\n flex items-center justify-between gap-2\n w-full h-10 px-3\n font-mondwest text-base\n bg-surface-primary text-content-primary\n border rounded-sm\n ${error ? 'border-status-error' : 'border-edge-primary'}\n ${disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'}\n ${isOpen ? 'shadow-[0_3px_0_0_var(--color-edge-primary)] -translate-y-0.5' : 'shadow-[0_1px_0_0_var(--color-edge-primary)]'}\n `}\n >\n <span className={selectedOption ? 'text-content-primary' : 'text-content-primary/40'}>\n {selectedOption?.label || placeholder}\n </span>\n <span className={`text-content-primary ${isOpen ? 'rotate-180' : ''}`}>▼</span>\n </button>\n\n {/* Dropdown Menu */}\n {isOpen && (\n <div\n className={`\n absolute z-50 top-full left-0 right-0 mt-1\n bg-surface-primary\n border border-edge-primary\n rounded-sm\n shadow-[2px_2px_0_0_var(--color-edge-primary)]\n overflow-hidden\n `}\n >\n {options.map((option) => (\n <button\n key={option.value}\n type=\"button\"\n onClick={() => !option.disabled && handleSelect(option.value)}\n disabled={option.disabled}\n className={`\n w-full px-3 py-2\n font-mondwest text-base text-left\n ${option.value === value ? 'bg-action-primary text-content-primary' : 'text-content-primary'}\n ${option.disabled ? 'opacity-50 cursor-not-allowed' : 'hover:bg-action-primary cursor-pointer'}\n `}\n >\n {option.label}\n </button>\n ))}\n </div>\n )}\n </div>\n );\n}\n\nexport default Select;\n","'use client';\n\nimport React, { useRef, useState, useCallback, useEffect } from 'react';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype SliderSize = 'sm' | 'md' | 'lg';\n\ninterface SliderProps {\n /** Current value */\n value: number;\n /** Change handler */\n onChange: (value: number) => void;\n /** Minimum value */\n min?: number;\n /** Maximum value */\n max?: number;\n /** Step increment */\n step?: number;\n /** Size preset */\n size?: SliderSize;\n /** Disabled state */\n disabled?: boolean;\n /** Show value label */\n showValue?: boolean;\n /** Label text */\n label?: string;\n /** Additional className */\n className?: string;\n}\n\n// ============================================================================\n// Styles\n// ============================================================================\n\nconst sizeStyles: Record<SliderSize, { track: string; thumb: string }> = {\n sm: {\n track: 'h-1',\n thumb: 'w-3 h-3',\n },\n md: {\n track: 'h-2',\n thumb: 'w-4 h-4',\n },\n lg: {\n track: 'h-3',\n thumb: 'w-5 h-5',\n },\n};\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * Slider component - Numeric range input\n */\nexport function Slider({\n value,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n size = 'md',\n disabled = false,\n showValue = false,\n label,\n className = '',\n}: SliderProps) {\n const trackRef = useRef<HTMLDivElement>(null);\n const [isDragging, setIsDragging] = useState(false);\n const styles = sizeStyles[size];\n\n // Calculate percentage\n const percentage = ((value - min) / (max - min)) * 100;\n\n // Snap value to step\n const snapToStep = useCallback((val: number) => {\n const stepped = Math.round((val - min) / step) * step + min;\n return Math.max(min, Math.min(max, stepped));\n }, [min, max, step]);\n\n // Calculate value from position\n const getValueFromPosition = useCallback((clientX: number) => {\n if (!trackRef.current) return value;\n\n const rect = trackRef.current.getBoundingClientRect();\n const percent = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));\n const newValue = min + percent * (max - min);\n return snapToStep(newValue);\n }, [min, max, value, snapToStep]);\n\n // Handle mouse/touch events\n const handlePointerDown = useCallback((e: React.PointerEvent) => {\n if (disabled) return;\n\n e.preventDefault();\n setIsDragging(true);\n\n const newValue = getValueFromPosition(e.clientX);\n onChange(newValue);\n }, [disabled, getValueFromPosition, onChange]);\n\n useEffect(() => {\n if (!isDragging) return;\n\n const handlePointerMove = (e: PointerEvent) => {\n const newValue = getValueFromPosition(e.clientX);\n onChange(newValue);\n };\n\n const handlePointerUp = () => {\n setIsDragging(false);\n };\n\n document.addEventListener('pointermove', handlePointerMove);\n document.addEventListener('pointerup', handlePointerUp);\n\n return () => {\n document.removeEventListener('pointermove', handlePointerMove);\n document.removeEventListener('pointerup', handlePointerUp);\n };\n }, [isDragging, getValueFromPosition, onChange]);\n\n // Handle keyboard\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (disabled) return;\n\n let newValue = value;\n switch (e.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n newValue = Math.min(max, value + step);\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n newValue = Math.max(min, value - step);\n break;\n case 'Home':\n newValue = min;\n break;\n case 'End':\n newValue = max;\n break;\n default:\n return;\n }\n\n e.preventDefault();\n onChange(newValue);\n };\n\n return (\n <div className={`space-y-2 ${className}`.trim()}>\n {/* Label & Value */}\n {(label || showValue) && (\n <div className=\"flex items-center justify-between\">\n {label && (\n <span className=\"font-mondwest text-base text-content-primary\">\n {label}\n </span>\n )}\n {showValue && (\n <span className=\"font-mondwest text-sm text-content-primary/60\">\n {value}\n </span>\n )}\n </div>\n )}\n\n {/* Track */}\n <div\n ref={trackRef}\n role=\"slider\"\n tabIndex={disabled ? -1 : 0}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-disabled={disabled}\n onPointerDown={handlePointerDown}\n onKeyDown={handleKeyDown}\n className={`\n relative w-full\n flex items-center\n ${styles.track}\n bg-edge-primary/10\n border border-edge-primary\n rounded-sm\n ${disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'}\n focus:outline-none focus:ring-2 focus:ring-edge-focus focus:ring-offset-2\n `.trim()}\n >\n {/* Filled Track */}\n <div\n className={`\n absolute top-0 left-0 h-full\n bg-action-primary\n rounded-sm\n pointer-events-none\n `.trim()}\n style={{ width: `${percentage}%` }}\n />\n\n {/* Thumb wrapper for horizontal positioning */}\n <div\n className=\"absolute top-0 bottom-0 flex items-center pointer-events-none\"\n style={{ left: `calc(${percentage}% - ${parseInt(styles.thumb.split(' ')[0].replace('w-', '')) * 2}px)` }}\n >\n {/* Thumb */}\n <div\n className={`\n ${styles.thumb}\n bg-surface-muted\n border border-edge-primary\n rounded\n ${isDragging ? 'scale-110' : ''}\n transition-transform\n pointer-events-auto\n `.trim()}\n />\n </div>\n </div>\n </div>\n );\n}\n\nexport default Slider;\n","'use client';\n\nimport React from 'react';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype SwitchSize = 'sm' | 'md' | 'lg';\n\ninterface SwitchProps {\n /** Checked state */\n checked: boolean;\n /** Change handler */\n onChange: (checked: boolean) => void;\n /** Size preset */\n size?: SwitchSize;\n /** Disabled state */\n disabled?: boolean;\n /** Label text */\n label?: string;\n /** Label position */\n labelPosition?: 'left' | 'right';\n /** Additional className */\n className?: string;\n /** ID for accessibility */\n id?: string;\n}\n\n// ============================================================================\n// Styles\n// ============================================================================\n\nconst sizeStyles: Record<SwitchSize, { track: string; thumb: string; translate: string }> = {\n sm: {\n track: 'w-8 h-4',\n thumb: 'w-3 h-3',\n translate: 'translate-x-4',\n },\n md: {\n track: 'w-10 h-5',\n thumb: 'w-4 h-4',\n translate: 'translate-x-5',\n },\n lg: {\n track: 'w-12 h-6',\n thumb: 'w-5 h-5',\n translate: 'translate-x-6',\n },\n};\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * Switch component - On/off toggle\n */\nexport function Switch({\n checked,\n onChange,\n size = 'md',\n disabled = false,\n label,\n labelPosition = 'right',\n className = '',\n id,\n}: SwitchProps) {\n const styles = sizeStyles[size];\n const switchId = id || `switch-${Math.random().toString(36).slice(2)}`;\n\n const handleClick = () => {\n if (!disabled) {\n onChange(!checked);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault();\n handleClick();\n }\n };\n\n const switchElement = (\n <button\n type=\"button\"\n role=\"switch\"\n id={switchId}\n aria-checked={checked}\n disabled={disabled}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={`\n relative inline-flex items-center\n ${styles.track}\n rounded-full\n border border-edge-primary\n transition-colors\n ${checked ? 'bg-action-primary' : 'bg-edge-primary/10'}\n ${disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'}\n focus:outline-none focus:ring-2 focus:ring-edge-focus focus:ring-offset-2\n `.trim()}\n >\n {/* Thumb */}\n <span\n className={`\n ${styles.thumb}\n rounded-full\n bg-surface-secondary\n border border-edge-primary\n transform transition-transform\n ${checked ? styles.translate : 'translate-x-0.5'}\n `.trim()}\n aria-hidden=\"true\"\n />\n </button>\n );\n\n if (!label) {\n return <div className={className}>{switchElement}</div>;\n }\n\n return (\n <div className={`inline-flex items-center gap-2 ${className}`.trim()}>\n {labelPosition === 'left' && (\n <label\n htmlFor={switchId}\n className={`\n font-mondwest text-base text-content-primary\n ${disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'}\n `.trim()}\n >\n {label}\n </label>\n )}\n\n {switchElement}\n\n {labelPosition === 'right' && (\n <label\n htmlFor={switchId}\n className={`\n font-mondwest text-base text-content-primary\n ${disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'}\n `.trim()}\n >\n {label}\n </label>\n )}\n </div>\n );\n}\n\nexport default Switch;\n","'use client';\n\nimport React, { createContext, useContext, useState } from 'react';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype TabsVariant = 'pill' | 'line';\ntype TabsLayout = 'default' | 'bottom-tabs';\n\ninterface TabsContextValue {\n activeTab: string;\n setActiveTab: (id: string) => void;\n variant: TabsVariant;\n layout: TabsLayout;\n}\n\ninterface TabsProps {\n /** Default active tab ID (uncontrolled mode) */\n defaultValue?: string;\n /** Active tab ID (controlled mode) */\n value?: string;\n /** Callback when tab changes (controlled mode) */\n onValueChange?: (value: string) => void;\n /** Visual variant */\n variant?: TabsVariant;\n /** Layout pattern - 'bottom-tabs' (default) for fixed bottom tabs, 'default' for top tabs */\n layout?: TabsLayout;\n /** Tab components */\n children: React.ReactNode;\n /** Additional classes for container */\n className?: string;\n}\n\ninterface TabListProps {\n /** TabTrigger components */\n children: React.ReactNode;\n /** Additional classes */\n className?: string;\n}\n\ninterface TabTriggerProps {\n /** Unique tab ID */\n value: string;\n /** Tab label */\n children: React.ReactNode;\n /** Icon as React element (slot pattern for theme components) */\n icon?: React.ReactNode;\n /** Additional classes */\n className?: string;\n}\n\ninterface TabContentProps {\n /** Tab ID this content belongs to */\n value: string;\n /** Content to render when active */\n children: React.ReactNode;\n /** Additional classes */\n className?: string;\n}\n\n// ============================================================================\n// Context\n// ============================================================================\n\nconst TabsContext = createContext<TabsContextValue | null>(null);\n\nfunction useTabsContext() {\n const context = useContext(TabsContext);\n if (!context) {\n throw new Error('Tab components must be used within a Tabs provider');\n }\n return context;\n}\n\n// ============================================================================\n// Styles\n// ============================================================================\n\n/**\n * Tab trigger base styles - matching ComponentsSecondaryNav button styles exactly\n */\nconst triggerBaseStyles = `\n flex items-center justify-center gap-2\n px-4 py-2\n font-joystix text-xs uppercase\n cursor-pointer select-none\n text-content-primary\n transition-all duration-200 ease-out\n relative\n border border-edge-primary\n rounded-sm\n flex-1\n shadow-none\n`;\n\n/**\n * Pill variant styles (matching ComponentsSecondaryNav button styles exactly)\n */\nconst pillStyles = {\n inactive: `\n bg-transparent text-content-primary\n hover:bg-surface-secondary/5\n hover:translate-y-0\n hover:shadow-none\n `,\n active: `\n bg-action-primary text-content-primary\n hover:bg-action-primary\n hover:translate-y-0\n hover:shadow-none\n `,\n};\n\n/**\n * Line variant styles (Webflow-style tabs with connected active state)\n * Only adds background/border colors - movement/shadow states come from baseStyles\n */\nconst lineStyles = {\n inactive: `\n bg-transparent\n hover:bg-surface-primary/50\n `,\n active: `\n border-b-0\n bg-surface-primary\n border-t border-l border-r border-edge-primary\n rounded-t-md\n mb-0\n relative\n z-10\n `,\n};\n\n// ============================================================================\n// Components\n// ============================================================================\n\n/**\n * Tabs container - provides context for tab state\n * Supports both controlled and uncontrolled modes\n */\nexport function Tabs({\n defaultValue,\n value,\n onValueChange,\n variant = 'pill',\n layout = 'bottom-tabs',\n children,\n className = '',\n}: TabsProps) {\n // Uncontrolled mode uses internal state\n const [internalValue, setInternalValue] = useState(defaultValue || '');\n\n // Determine if controlled or uncontrolled\n const isControlled = value !== undefined;\n const activeTab = isControlled ? value : internalValue;\n\n const setActiveTab = (newValue: string) => {\n if (isControlled) {\n onValueChange?.(newValue);\n } else {\n setInternalValue(newValue);\n }\n };\n\n return (\n <TabsContext.Provider value={{ activeTab, setActiveTab, variant, layout }}>\n <div className={className}>\n {children}\n </div>\n </TabsContext.Provider>\n );\n}\n\n/**\n * Container for tab triggers - matching PrimaryNavigationFooter styles\n */\nexport function TabList({ children, className = '' }: TabListProps) {\n const { layout } = useTabsContext();\n\n // For bottom-tabs layout, ensure shrink-0 so tabs never compress\n const shrinkClass = layout === 'bottom-tabs' ? 'shrink-0' : '';\n\n return (\n <div className={`flex items-center justify-between gap-4 px-2 py-2 bg-surface-primary border-t border-edge-primary ${shrinkClass} ${className}`}>\n {/* Wrap tabs in flex container to match PrimaryNavigationFooter structure */}\n <div className=\"flex gap-2 items-center overflow-x-auto w-full\">\n {children}\n </div>\n </div>\n );\n}\n\n/**\n * Individual tab trigger button - Webflow-style\n */\nexport function TabTrigger({\n value,\n children,\n icon,\n className = '',\n}: TabTriggerProps) {\n const { activeTab, setActiveTab, variant } = useTabsContext();\n const isActive = activeTab === value;\n\n const variantStyle = variant === 'pill'\n ? (isActive ? pillStyles.active : pillStyles.inactive)\n : (isActive ? lineStyles.active : lineStyles.inactive);\n\n const classes = [\n triggerBaseStyles,\n variantStyle,\n className,\n ]\n .join(' ')\n .replace(/\\s+/g, ' ')\n .trim();\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n onClick={() => setActiveTab(value)}\n className={classes}\n >\n {/* Render icon from React component slot - icon comes first to match PrimaryNavigationFooter */}\n {icon}\n {children}\n </button>\n );\n}\n\n/**\n * Tab content panel - Webflow-style tab pane\n */\nexport function TabContent({\n value,\n children,\n className = '',\n}: TabContentProps) {\n const { activeTab, variant } = useTabsContext();\n\n if (activeTab !== value) {\n return null;\n }\n\n // For line variant, content connects seamlessly with active tab\n const contentClasses = variant === 'line'\n ? `bg-surface-primary border-r border-edge-primary ${className}`\n : className;\n\n return (\n <div\n role=\"tabpanel\"\n className={contentClasses}\n style={{ height: 'auto' }}\n >\n {children}\n </div>\n );\n}\n\nexport default Tabs;\n","'use client';\n\nimport React, { useState, useRef } from 'react';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\ntype TooltipSize = 'sm' | 'md' | 'lg';\n\ninterface TooltipProps {\n /** Tooltip content */\n content: React.ReactNode;\n /** Position relative to trigger */\n position?: TooltipPosition;\n /** Delay before showing (ms) - set to 0 for instant */\n delay?: number;\n /** Size preset - matches Button sizes (sm=12px, md=12px, lg=14px) */\n size?: TooltipSize;\n /** Trigger element */\n children: React.ReactNode;\n /** Additional classes */\n className?: string;\n}\n\n// ============================================================================\n// Styles\n// ============================================================================\n\nconst positionStyles: Record<TooltipPosition, string> = {\n top: 'bottom-full left-1/2 -translate-x-1/2 mb-2',\n bottom: 'top-full left-1/2 -translate-x-1/2 mt-2',\n left: 'right-full top-1/2 -translate-y-1/2 mr-2',\n right: 'left-full top-1/2 -translate-y-1/2 ml-2',\n};\n\nconst arrowStyles: Record<TooltipPosition, string> = {\n top: 'top-full left-1/2 -translate-x-1/2 border-l-transparent border-r-transparent border-b-transparent border-t-surface-secondary',\n bottom: 'bottom-full left-1/2 -translate-x-1/2 border-l-transparent border-r-transparent border-t-transparent border-b-surface-secondary',\n left: 'left-full top-1/2 -translate-y-1/2 border-t-transparent border-b-transparent border-r-transparent border-l-surface-secondary',\n right: 'right-full top-1/2 -translate-y-1/2 border-t-transparent border-b-transparent border-l-transparent border-r-surface-secondary',\n};\n\n/**\n * Font size presets matching Button component sizes\n * sm=12px, md=12px, lg=14px\n */\nconst sizeStyles: Record<TooltipSize, string> = {\n sm: 'text-xs',\n md: 'text-xs',\n lg: 'text-sm',\n};\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * Tooltip component for hover information\n */\nexport function Tooltip({\n content,\n position = 'top',\n delay = 0,\n size = 'md',\n children,\n className = '',\n}: TooltipProps) {\n const [isVisible, setIsVisible] = useState(false);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const showTooltip = () => {\n if (delay > 0) {\n timeoutRef.current = setTimeout(() => setIsVisible(true), delay);\n } else {\n setIsVisible(true);\n }\n };\n\n const hideTooltip = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n setIsVisible(false);\n };\n\n return (\n <div\n className={`relative inline-flex ${className}`}\n onMouseEnter={showTooltip}\n onMouseLeave={hideTooltip}\n onFocus={showTooltip}\n onBlur={hideTooltip}\n >\n {children}\n\n {isVisible && (\n <div\n className={`\n absolute z-[1000]\n px-2 py-1\n bg-surface-secondary text-content-inverted\n font-joystix uppercase\n rounded-sm\n whitespace-nowrap\n pointer-events-none\n ${sizeStyles[size]}\n ${positionStyles[position]}\n `}\n role=\"tooltip\"\n >\n {content}\n {/* Arrow */}\n <div\n className={`\n absolute\n border-4 border-solid\n ${arrowStyles[position]}\n `}\n />\n </div>\n )}\n </div>\n );\n}\n\nexport default Tooltip;\n","'use client';\n\nimport React, { createContext, useContext, useState, useCallback, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype ToastVariant = 'default' | 'success' | 'warning' | 'error' | 'info';\n\ninterface ToastData {\n id: string;\n title: string;\n description?: string;\n variant?: ToastVariant;\n duration?: number;\n /** Custom icon element - overrides variant default */\n icon?: React.ReactNode;\n}\n\ninterface ToastContextValue {\n toasts: ToastData[];\n addToast: (toast: Omit<ToastData, 'id'>) => string;\n removeToast: (id: string) => void;\n}\n\n// ============================================================================\n// Context\n// ============================================================================\n\nconst ToastContext = createContext<ToastContextValue | null>(null);\n\nexport function useToast() {\n const context = useContext(ToastContext);\n if (!context) {\n throw new Error('useToast must be used within a ToastProvider');\n }\n return context;\n}\n\n// ============================================================================\n// Toast Provider\n// ============================================================================\n\ninterface ToastProviderProps {\n /** Children */\n children: React.ReactNode;\n /** Default duration in ms */\n defaultDuration?: number;\n /** Optional render function for variant icons */\n renderIcon?: (variant: ToastVariant) => React.ReactNode;\n /** Optional render function for close icon */\n renderCloseIcon?: () => React.ReactNode;\n}\n\nexport function ToastProvider({\n children,\n defaultDuration = 5000,\n renderIcon,\n renderCloseIcon,\n}: ToastProviderProps) {\n const [toasts, setToasts] = useState<ToastData[]>([]);\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n const addToast = useCallback((toast: Omit<ToastData, 'id'>) => {\n const id = `toast-${Date.now()}-${Math.random().toString(36).slice(2)}`;\n const duration = toast.duration ?? defaultDuration;\n\n setToasts((prev) => [...prev, { ...toast, id }]);\n\n // Auto-remove after duration\n if (duration > 0) {\n setTimeout(() => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n }, duration);\n }\n\n return id;\n }, [defaultDuration]);\n\n const removeToast = useCallback((id: string) => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n }, []);\n\n return (\n <ToastContext.Provider value={{ toasts, addToast, removeToast }}>\n {children}\n {mounted && createPortal(\n <ToastViewport\n toasts={toasts}\n removeToast={removeToast}\n renderIcon={renderIcon}\n renderCloseIcon={renderCloseIcon}\n />,\n document.body\n )}\n </ToastContext.Provider>\n );\n}\n\n// ============================================================================\n// Toast Viewport\n// ============================================================================\n\ninterface ToastViewportProps {\n toasts: ToastData[];\n removeToast: (id: string) => void;\n renderIcon?: (variant: ToastVariant) => React.ReactNode;\n renderCloseIcon?: () => React.ReactNode;\n}\n\nfunction ToastViewport({ toasts, removeToast, renderIcon, renderCloseIcon }: ToastViewportProps) {\n if (toasts.length === 0) return null;\n\n return (\n <div\n className=\"fixed bottom-4 right-4 z-[100] flex flex-col gap-2 max-w-sm w-full pointer-events-none\"\n aria-live=\"polite\"\n >\n {toasts.map((toast) => (\n <Toast\n key={toast.id}\n toast={toast}\n onClose={() => removeToast(toast.id)}\n renderIcon={renderIcon}\n renderCloseIcon={renderCloseIcon}\n />\n ))}\n </div>\n );\n}\n\n// ============================================================================\n// Toast Component\n// ============================================================================\n\nconst variantStyles: Record<ToastVariant, string> = {\n default: 'bg-surface-primary border-edge-primary',\n success: 'bg-status-success border-status-success',\n warning: 'bg-status-warning border-surface-tertiary',\n error: 'bg-status-error border-status-error',\n info: 'bg-status-info border-status-info',\n};\n\ninterface ToastProps {\n toast: ToastData;\n onClose: () => void;\n renderIcon?: (variant: ToastVariant) => React.ReactNode;\n renderCloseIcon?: () => React.ReactNode;\n}\n\nfunction Toast({ toast, onClose, renderIcon, renderCloseIcon }: ToastProps) {\n const variant = toast.variant || 'default';\n\n // Use custom icon if provided, otherwise use renderIcon function if available\n const displayIcon = toast.icon ?? (renderIcon ? renderIcon(variant) : null);\n\n return (\n <div\n className={`\n pointer-events-auto\n p-4\n border-2\n rounded-sm\n shadow-[2px_2px_0_0_var(--color-edge-primary)]\n animate-slideIn\n ${variantStyles[variant]}\n `.trim()}\n role=\"alert\"\n >\n <div className=\"flex items-start gap-3\">\n {/* Icon */}\n {displayIcon && (\n <span className=\"flex-shrink-0\">\n {displayIcon}\n </span>\n )}\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n <p className=\"font-joystix text-xs uppercase text-content-primary\">\n {toast.title}\n </p>\n {toast.description && (\n <p className=\"font-mondwest text-base text-content-primary/70 mt-1\">\n {toast.description}\n </p>\n )}\n </div>\n\n {/* Close Button */}\n <button\n onClick={onClose}\n className=\"text-content-primary/50 hover:text-content-primary flex-shrink-0 -mt-1\"\n aria-label=\"Close\"\n >\n {renderCloseIcon ? renderCloseIcon() : (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 4L4 12M4 4L12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </button>\n </div>\n </div>\n );\n}\n\nexport default ToastProvider;\n","'use client';\n\nimport React, { useEffect, useRef } from 'react';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ninterface HelpPanelProps {\n /** Whether the panel is open */\n isOpen: boolean;\n /** Callback when panel should close */\n onClose: () => void;\n /** Help content to display */\n children: React.ReactNode;\n /** Optional title for the help panel */\n title?: string;\n /** Close button slot - renders your own close button/icon */\n closeButton?: React.ReactNode;\n /** Additional className */\n className?: string;\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * Slide-in help panel that appears from the right side of the window.\n * Used to display contextual help content within app windows.\n *\n * Uses slot-based API for the close button to avoid coupling to specific\n * icon systems. Pass your own button component via the `closeButton` prop.\n */\nexport function HelpPanel({\n isOpen,\n onClose,\n children,\n title = 'Help',\n closeButton,\n className = '',\n}: HelpPanelProps) {\n const panelRef = useRef<HTMLDivElement>(null);\n\n // Handle escape key to close\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && isOpen) {\n onClose();\n }\n };\n\n document.addEventListener('keydown', handleEscape);\n return () => document.removeEventListener('keydown', handleEscape);\n }, [isOpen, onClose]);\n\n // Handle click outside to close\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (panelRef.current && !panelRef.current.contains(e.target as Node) && isOpen) {\n onClose();\n }\n };\n\n // Add slight delay to prevent immediate close on open click\n const timeoutId = setTimeout(() => {\n document.addEventListener('mousedown', handleClickOutside);\n }, 100);\n\n return () => {\n clearTimeout(timeoutId);\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isOpen, onClose]);\n\n if (!isOpen) return null;\n\n return (\n <div\n className={`\n absolute inset-0 z-50\n bg-surface-secondary/20\n flex justify-center items-center\n `}\n >\n <div\n ref={panelRef}\n className={`\n h-full w-full max-w-4xl\n bg-surface-primary\n border border-edge-primary\n shadow-card-lg\n flex flex-col\n animate-slide-in-right\n ${className}\n `}\n >\n {/* Header */}\n <div className=\"flex items-center justify-between px-4 py-3 border-b border-edge-primary\">\n <span className=\"font-joystix text-xs text-content-primary uppercase\">\n {title}\n </span>\n {closeButton ? (\n <span onClick={onClose} className=\"cursor-pointer\">\n {closeButton}\n </span>\n ) : (\n <button\n onClick={onClose}\n className=\"text-content-primary/50 hover:text-content-primary p-1\"\n aria-label=\"Close help panel\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 4L4 12M4 4L12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n )}\n </div>\n\n {/* Content */}\n <div className=\"flex-1 overflow-auto p-4\">\n <div className=\"font-mondwest text-base text-content-primary space-y-4\">\n {children}\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nexport default HelpPanel;\n","'use client';\n\nimport React, { createContext, useContext, useState, useRef, useEffect, useCallback } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useEscapeKey, useClickOutside } from '../../../hooks';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype PopoverPosition = 'top' | 'bottom' | 'left' | 'right';\n\ninterface PopoverContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.RefObject<HTMLElement | null>;\n position: PopoverPosition;\n}\n\n// ============================================================================\n// Context\n// ============================================================================\n\nconst PopoverContext = createContext<PopoverContextValue | null>(null);\n\nfunction usePopoverContext() {\n const context = useContext(PopoverContext);\n if (!context) {\n throw new Error('Popover components must be used within a Popover');\n }\n return context;\n}\n\n// ============================================================================\n// Popover Root\n// ============================================================================\n\ninterface PopoverProps {\n /** Controlled open state */\n open?: boolean;\n /** Default open state */\n defaultOpen?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Position relative to trigger */\n position?: PopoverPosition;\n /** Children */\n children: React.ReactNode;\n}\n\nexport function Popover({\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n position = 'bottom',\n children,\n}: PopoverProps) {\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : internalOpen;\n const triggerRef = useRef<HTMLElement>(null);\n\n const setOpen = useCallback((newOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n }, [isControlled, onOpenChange]);\n\n return (\n <PopoverContext.Provider value={{ open, setOpen, triggerRef, position }}>\n {children}\n </PopoverContext.Provider>\n );\n}\n\n// ============================================================================\n// Popover Trigger\n// ============================================================================\n\ninterface PopoverTriggerProps {\n /** Trigger element */\n children: React.ReactElement;\n /** Pass through as child instead of wrapping */\n asChild?: boolean;\n}\n\nexport function PopoverTrigger({ children, asChild }: PopoverTriggerProps) {\n const { open, setOpen, triggerRef } = usePopoverContext();\n\n const handleClick = () => {\n setOpen(!open);\n };\n\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(children as React.ReactElement<{ onClick?: () => void; ref?: React.Ref<HTMLElement | null> }>, {\n onClick: handleClick,\n ref: triggerRef as React.Ref<HTMLElement | null>,\n });\n }\n\n return (\n <button\n type=\"button\"\n ref={triggerRef as React.RefObject<HTMLButtonElement>}\n onClick={handleClick}\n >\n {children}\n </button>\n );\n}\n\n// ============================================================================\n// Popover Content\n// ============================================================================\n\ninterface PopoverContentProps {\n /** Additional className */\n className?: string;\n /** Children */\n children: React.ReactNode;\n /** Alignment relative to trigger */\n align?: 'start' | 'center' | 'end';\n}\n\nexport function PopoverContent({ className = '', children, align = 'center' }: PopoverContentProps) {\n const { open, setOpen, triggerRef, position } = usePopoverContext();\n const contentRef = useRef<HTMLDivElement>(null);\n const [mounted, setMounted] = useState(false);\n const [coords, setCoords] = useState({ top: 0, left: 0 });\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n // Calculate position\n useEffect(() => {\n if (!open || !triggerRef.current || !contentRef.current) return;\n\n const trigger = triggerRef.current.getBoundingClientRect();\n const content = contentRef.current.getBoundingClientRect();\n const gap = 8;\n\n let top = 0;\n let left = 0;\n\n switch (position) {\n case 'top':\n top = trigger.top - content.height - gap;\n left = trigger.left + (trigger.width - content.width) / 2;\n break;\n case 'bottom':\n top = trigger.bottom + gap;\n left = trigger.left + (trigger.width - content.width) / 2;\n break;\n case 'left':\n top = trigger.top + (trigger.height - content.height) / 2;\n left = trigger.left - content.width - gap;\n break;\n case 'right':\n top = trigger.top + (trigger.height - content.height) / 2;\n left = trigger.right + gap;\n break;\n }\n\n // Adjust for alignment\n if (position === 'top' || position === 'bottom') {\n if (align === 'start') {\n left = trigger.left;\n } else if (align === 'end') {\n left = trigger.right - content.width;\n }\n }\n\n // Keep within viewport\n top = Math.max(8, Math.min(top, window.innerHeight - content.height - 8));\n left = Math.max(8, Math.min(left, window.innerWidth - content.width - 8));\n\n setCoords({ top, left });\n }, [open, position, align, triggerRef]);\n\n // Handle click outside\n useClickOutside(open, [contentRef, triggerRef], () => setOpen(false));\n\n // Handle escape\n useEscapeKey(open, () => setOpen(false));\n\n if (!mounted || !open) return null;\n\n return createPortal(\n <div\n ref={contentRef}\n className={`\n fixed z-50\n bg-surface-primary\n border-2 border-edge-primary\n rounded-sm\n shadow-[2px_2px_0_0_var(--color-edge-primary)]\n p-4\n animate-fadeIn\n ${className}\n `.trim()}\n style={{ top: coords.top, left: coords.left }}\n >\n {children}\n </div>,\n document.body\n );\n}\n\nexport default Popover;\n","'use client';\n\nimport React, { createContext, useContext, useState, useCallback, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useEscapeKey, useLockBodyScroll } from '../../../hooks';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype SheetSide = 'left' | 'right' | 'top' | 'bottom';\n\ninterface SheetContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n side: SheetSide;\n}\n\n// ============================================================================\n// Context\n// ============================================================================\n\nconst SheetContext = createContext<SheetContextValue | null>(null);\n\nfunction useSheetContext() {\n const context = useContext(SheetContext);\n if (!context) {\n throw new Error('Sheet components must be used within a Sheet');\n }\n return context;\n}\n\n// ============================================================================\n// Sheet Root\n// ============================================================================\n\ninterface SheetProps {\n /** Controlled open state */\n open?: boolean;\n /** Default open state */\n defaultOpen?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Side to slide in from */\n side?: SheetSide;\n /** Children */\n children: React.ReactNode;\n}\n\nexport function Sheet({\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n side = 'right',\n children,\n}: SheetProps) {\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : internalOpen;\n\n const setOpen = useCallback((newOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n }, [isControlled, onOpenChange]);\n\n return (\n <SheetContext.Provider value={{ open, setOpen, side }}>\n {children}\n </SheetContext.Provider>\n );\n}\n\n// ============================================================================\n// Sheet Trigger\n// ============================================================================\n\ninterface SheetTriggerProps {\n /** Trigger element */\n children: React.ReactElement;\n /** Pass through as child instead of wrapping */\n asChild?: boolean;\n}\n\nexport function SheetTrigger({ children, asChild }: SheetTriggerProps) {\n const { setOpen } = useSheetContext();\n\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(children as React.ReactElement<{ onClick?: () => void }>, {\n onClick: () => setOpen(true),\n });\n }\n\n return (\n <button type=\"button\" onClick={() => setOpen(true)}>\n {children}\n </button>\n );\n}\n\n// ============================================================================\n// Sheet Content\n// ============================================================================\n\nconst sideStyles: Record<SheetSide, { container: string; open: string; closed: string }> = {\n left: {\n container: 'inset-y-0 left-0 h-full w-80 max-w-[90vw]',\n open: 'translate-x-0',\n closed: '-translate-x-full',\n },\n right: {\n container: 'inset-y-0 right-0 h-full w-80 max-w-[90vw]',\n open: 'translate-x-0',\n closed: 'translate-x-full',\n },\n top: {\n container: 'inset-x-0 top-0 w-full h-80 max-h-[90vh]',\n open: 'translate-y-0',\n closed: '-translate-y-full',\n },\n bottom: {\n container: 'inset-x-0 bottom-0 w-full h-80 max-h-[90vh]',\n open: 'translate-y-0',\n closed: 'translate-y-full',\n },\n};\n\ninterface SheetContentProps {\n /** Additional className */\n className?: string;\n /** Children */\n children: React.ReactNode;\n}\n\nexport function SheetContent({ className = '', children }: SheetContentProps) {\n const { open, setOpen, side } = useSheetContext();\n const [mounted, setMounted] = useState(false);\n const [isVisible, setIsVisible] = useState(false);\n const styles = sideStyles[side];\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n // Handle animation states\n useEffect(() => {\n if (open) {\n setIsVisible(true);\n } else {\n // Delay hiding until animation completes\n const timer = setTimeout(() => {\n setIsVisible(false);\n }, 200);\n return () => clearTimeout(timer);\n }\n }, [open]);\n\n // Handle escape key\n useEscapeKey(open, () => setOpen(false));\n\n // Prevent body scroll when open\n useLockBodyScroll(open);\n\n if (!mounted || !isVisible) return null;\n\n return createPortal(\n <div className=\"fixed inset-0 z-50\">\n {/* Overlay */}\n <div\n className={`\n absolute inset-0 bg-surface-secondary/50\n transition-opacity duration-200\n ${open ? 'opacity-100' : 'opacity-0'}\n `.trim()}\n onClick={() => setOpen(false)}\n aria-hidden=\"true\"\n />\n\n {/* Content */}\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n className={`\n fixed\n ${styles.container}\n bg-surface-primary\n border-edge-primary\n ${side === 'left' ? 'border-r-2' : ''}\n ${side === 'right' ? 'border-l-2' : ''}\n ${side === 'top' ? 'border-b-2' : ''}\n ${side === 'bottom' ? 'border-t-2' : ''}\n shadow-[4px_4px_0_0_var(--color-edge-primary)]\n transform transition-transform duration-200 ease-out\n ${open ? styles.open : styles.closed}\n ${className}\n `.trim()}\n >\n {children}\n </div>\n </div>,\n document.body\n );\n}\n\n// ============================================================================\n// Sheet Header, Title, Description\n// ============================================================================\n\ninterface SheetHeaderProps {\n /** Additional className */\n className?: string;\n /** Children */\n children: React.ReactNode;\n}\n\nexport function SheetHeader({ className = '', children }: SheetHeaderProps) {\n return (\n <div className={`px-6 pt-6 pb-4 border-b border-edge-primary/20 ${className}`.trim()}>\n {children}\n </div>\n );\n}\n\ninterface SheetTitleProps {\n /** Additional className */\n className?: string;\n /** Children */\n children: React.ReactNode;\n}\n\nexport function SheetTitle({ className = '', children }: SheetTitleProps) {\n return (\n <h2 className={`font-joystix text-base uppercase text-content-primary ${className}`.trim()}>\n {children}\n </h2>\n );\n}\n\ninterface SheetDescriptionProps {\n /** Additional className */\n className?: string;\n /** Children */\n children: React.ReactNode;\n}\n\nexport function SheetDescription({ className = '', children }: SheetDescriptionProps) {\n return (\n <p className={`font-mondwest text-base text-content-primary/70 mt-2 ${className}`.trim()}>\n {children}\n </p>\n );\n}\n\n// ============================================================================\n// Sheet Body & Footer\n// ============================================================================\n\ninterface SheetBodyProps {\n /** Additional className */\n className?: string;\n /** Children */\n children: React.ReactNode;\n}\n\nexport function SheetBody({ className = '', children }: SheetBodyProps) {\n return (\n <div className={`px-6 py-4 flex-1 overflow-auto ${className}`.trim()}>\n {children}\n </div>\n );\n}\n\ninterface SheetFooterProps {\n /** Additional className */\n className?: string;\n /** Children */\n children: React.ReactNode;\n}\n\nexport function SheetFooter({ className = '', children }: SheetFooterProps) {\n return (\n <div className={`px-6 pb-6 pt-4 border-t border-edge-primary/20 flex justify-end gap-2 ${className}`.trim()}>\n {children}\n </div>\n );\n}\n\n// ============================================================================\n// Sheet Close\n// ============================================================================\n\ninterface SheetCloseProps {\n /** Close button element */\n children: React.ReactElement;\n /** Pass through as child instead of wrapping */\n asChild?: boolean;\n}\n\nexport function SheetClose({ children, asChild }: SheetCloseProps) {\n const { setOpen } = useSheetContext();\n\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(children as React.ReactElement<{ onClick?: () => void }>, {\n onClick: () => setOpen(false),\n });\n }\n\n return (\n <button type=\"button\" onClick={() => setOpen(false)}>\n {children}\n </button>\n );\n}\n\nexport default Sheet;\n","'use client';\n\nimport React from 'react';\nimport { Button } from '../Button/Button';\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface MockStateDefinition {\n /** Unique identifier for this mock state */\n id: string;\n /** Display name */\n name: string;\n /** Short description */\n description: string;\n /** Category for grouping (e.g., 'wallet', 'auction', 'user') */\n category: string;\n /** Optional icon (emoji or component) */\n icon?: React.ReactNode;\n}\n\nexport interface MockStateCategory {\n /** Category identifier */\n id: string;\n /** Display label */\n label: string;\n}\n\nexport interface MockStatesPopoverProps {\n /** Whether the popover is open */\n isOpen: boolean;\n /** Callback when the popover should close */\n onClose: () => void;\n /** Array of mock state definitions */\n mockStates: MockStateDefinition[];\n /** Currently active mock state ID */\n activeMockState?: string;\n /** Callback when a mock state is selected */\n onSelectState: (stateId: string) => void;\n /** Categories to display (in order). States are grouped by category. */\n categories?: MockStateCategory[];\n /** Title shown in the header */\n title?: string;\n /** Footer text */\n footerText?: string;\n /** Additional className for the popover container */\n className?: string;\n}\n\n// ============================================================================\n// Styles\n// ============================================================================\n\nconst popoverStyles = `\n absolute top-12 right-2 z-50 w-72\n bg-surface-primary border-2 border-edge-primary rounded-sm shadow-lg\n`;\n\nconst headerStyles = `\n flex items-center justify-between px-3 py-2 border-b border-edge-primary/20\n`;\n\nconst contentStyles = `\n p-2 space-y-3 max-h-80 overflow-y-auto\n`;\n\nconst categoryLabelStyles = `\n font-heading text-xs uppercase text-content-secondary px-2 mb-1\n`;\n\nconst footerStyles = `\n px-3 py-2 border-t border-edge-primary/20 bg-content-primary/5\n`;\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * MockStatesPopover\n *\n * A development-only popover for toggling between mock states.\n * Displays categorized mock state presets that can be applied\n * to test different UI scenarios.\n *\n * This is a generic component - pass your mock state definitions\n * and handlers as props.\n */\nexport function MockStatesPopover({\n isOpen,\n onClose,\n mockStates,\n activeMockState,\n onSelectState,\n categories,\n title = 'Mock States',\n footerText = 'Dev mode only',\n className = '',\n}: MockStatesPopoverProps) {\n if (!isOpen) return null;\n\n // Get unique categories from states if not provided\n const derivedCategories = categories ??\n [...new Set(mockStates.map(s => s.category))].map(cat => ({\n id: cat,\n label: cat.charAt(0).toUpperCase() + cat.slice(1),\n }));\n\n // Group states by category\n const statesByCategory = derivedCategories.map(cat => ({\n category: cat,\n states: mockStates.filter(s => s.category === cat.id),\n })).filter(group => group.states.length > 0);\n\n const renderStateButton = (def: MockStateDefinition) => {\n const isActive = activeMockState === def.id;\n return (\n <button\n key={def.id}\n onClick={() => onSelectState(def.id)}\n className={`\n w-full text-left px-3 py-2 rounded-sm\n flex items-center gap-2\n transition-colors duration-150\n ${\n isActive\n ? 'bg-action-primary text-content-primary'\n : 'hover:bg-content-primary/5 text-content-primary'\n }\n `}\n >\n {def.icon && <span className=\"text-sm\">{def.icon}</span>}\n <div className=\"flex-1 min-w-0\">\n <div className=\"font-heading text-xs uppercase truncate\">\n {def.name}\n </div>\n <div className=\"font-body text-xs text-content-secondary truncate\">\n {def.description}\n </div>\n </div>\n {isActive && <span className=\"text-xs\">&#x2713;</span>}\n </button>\n );\n };\n\n return (\n <>\n {/* Backdrop */}\n <div\n className=\"fixed inset-0 z-40\"\n onClick={onClose}\n />\n\n {/* Popover */}\n <div className={`${popoverStyles} ${className}`.trim()}>\n {/* Header */}\n <div className={headerStyles}>\n <span className=\"font-heading text-xs uppercase\">{title}</span>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n iconOnly\n onClick={onClose}\n aria-label=\"Close\"\n >\n &#x2715;\n </Button>\n </div>\n\n {/* Content */}\n <div className={contentStyles}>\n {statesByCategory.map(({ category, states }) => (\n <div key={category.id}>\n <div className={categoryLabelStyles}>\n {category.label}\n </div>\n <div className=\"space-y-1\">\n {states.map(renderStateButton)}\n </div>\n </div>\n ))}\n </div>\n\n {/* Footer */}\n {footerText && (\n <div className={footerStyles}>\n <div className=\"font-body text-xs text-content-secondary text-center\">\n {footerText}\n </div>\n </div>\n )}\n </div>\n </>\n );\n}\n\nexport default MockStatesPopover;\n","'use client';\n\nimport React, { useState, useEffect, useCallback } from 'react';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype CountdownVariant = 'default' | 'compact' | 'large';\ntype CountdownStatus = 'active' | 'ended' | 'upcoming';\n\ninterface TimeRemaining {\n days: number;\n hours: number;\n minutes: number;\n seconds: number;\n total: number;\n}\n\ninterface CountdownTimerProps {\n /** Target timestamp (Unix ms or Date) */\n endTime: number | Date;\n /** Optional start time for \"upcoming\" status */\n startTime?: number | Date;\n /** Visual variant */\n variant?: CountdownVariant;\n /** Label text shown above timer */\n label?: string;\n /** Callback when countdown reaches zero */\n onComplete?: () => void;\n /** Custom ended message */\n endedMessage?: string;\n /** Custom upcoming message */\n upcomingMessage?: string;\n /** Show days segment */\n showDays?: boolean;\n /** Additional classes */\n className?: string;\n}\n\n// ============================================================================\n// Styles\n// ============================================================================\n\nconst baseStyles = `\n text-center\n`;\n\nconst variantStyles: Record<CountdownVariant, {\n container: string;\n label: string;\n timer: string;\n segment: string;\n value: string;\n unit: string;\n separator: string;\n}> = {\n default: {\n container: 'p-4 bg-surface-primary border border-edge-primary rounded-md',\n label: 'font-mono text-xs text-content-primary/60 mb-2',\n timer: 'flex items-center justify-center gap-1',\n segment: 'flex flex-col items-center min-w-[3rem]',\n value: 'font-joystix text-2xl text-content-primary tabular-nums',\n unit: 'font-mono text-2xs text-content-primary/50 uppercase mt-0.5',\n separator: 'font-joystix text-xl text-content-primary/40 self-start mt-1',\n },\n compact: {\n container: 'px-3 py-2 bg-surface-primary border border-edge-primary rounded-sm',\n label: 'font-mono text-2xs text-content-primary/60 mb-1',\n timer: 'flex items-center justify-center gap-0.5',\n segment: 'flex flex-col items-center min-w-[2rem]',\n value: 'font-joystix text-sm text-content-primary tabular-nums',\n unit: 'font-mono text-2xs text-content-primary/50 uppercase',\n separator: 'font-joystix text-sm text-content-primary/40 self-start',\n },\n large: {\n container: 'p-6 bg-surface-primary border border-edge-primary rounded-md shadow-card',\n label: 'font-mono text-sm text-content-primary/60 mb-3',\n timer: 'flex items-center justify-center gap-2',\n segment: 'flex flex-col items-center min-w-[4rem] bg-surface-muted border border-edge-primary rounded-sm px-3 py-2',\n value: 'font-joystix text-3xl text-content-primary tabular-nums',\n unit: 'font-mono text-xs text-content-primary/50 uppercase mt-1',\n separator: 'font-joystix text-2xl text-content-primary/40 self-center',\n },\n};\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\nfunction getTimeRemaining(endTime: number | Date): TimeRemaining {\n const end = typeof endTime === 'number' ? endTime : endTime.getTime();\n const total = Math.max(0, end - Date.now());\n\n const seconds = Math.floor((total / 1000) % 60);\n const minutes = Math.floor((total / 1000 / 60) % 60);\n const hours = Math.floor((total / (1000 * 60 * 60)) % 24);\n const days = Math.floor(total / (1000 * 60 * 60 * 24));\n\n return { days, hours, minutes, seconds, total };\n}\n\nfunction getStatus(\n endTime: number | Date,\n startTime?: number | Date\n): CountdownStatus {\n const now = Date.now();\n const end = typeof endTime === 'number' ? endTime : endTime.getTime();\n const start = startTime\n ? typeof startTime === 'number'\n ? startTime\n : startTime.getTime()\n : now;\n\n if (now < start) return 'upcoming';\n if (now >= end) return 'ended';\n return 'active';\n}\n\nfunction padZero(num: number): string {\n return num.toString().padStart(2, '0');\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * CountdownTimer component for auction countdowns\n *\n * Features:\n * - Live countdown with days/hours/mins/secs\n * - Three size variants (compact, default, large)\n * - Automatic status detection (active, ended, upcoming)\n * - Callback on completion\n */\nexport function CountdownTimer({\n endTime,\n startTime,\n variant = 'default',\n label,\n onComplete,\n endedMessage = 'Ended',\n upcomingMessage = 'Starting soon',\n showDays = true,\n className = '',\n}: CountdownTimerProps) {\n const [timeRemaining, setTimeRemaining] = useState<TimeRemaining>(() =>\n getTimeRemaining(endTime)\n );\n const [status, setStatus] = useState<CountdownStatus>(() =>\n getStatus(endTime, startTime)\n );\n\n const updateTime = useCallback(() => {\n const newTime = getTimeRemaining(endTime);\n const newStatus = getStatus(endTime, startTime);\n\n setTimeRemaining(newTime);\n setStatus(newStatus);\n\n if (newStatus === 'ended' && onComplete) {\n onComplete();\n }\n }, [endTime, startTime, onComplete]);\n\n useEffect(() => {\n updateTime();\n\n if (status === 'ended') return;\n\n const interval = setInterval(updateTime, 1000);\n return () => clearInterval(interval);\n }, [updateTime, status]);\n\n const styles = variantStyles[variant];\n\n // Render ended state\n if (status === 'ended') {\n return (\n <div className={`${baseStyles} ${styles.container} ${className}`}>\n {label && <p className={styles.label}>{label}</p>}\n <p className={`font-joystix ${variant === 'large' ? 'text-xl' : variant === 'compact' ? 'text-sm' : 'text-lg'} text-content-primary/60`}>\n {endedMessage}\n </p>\n </div>\n );\n }\n\n // Render upcoming state\n if (status === 'upcoming' && startTime) {\n const startRemaining = getTimeRemaining(startTime);\n return (\n <div className={`${baseStyles} ${styles.container} ${className}`}>\n <p className={styles.label}>Starts in</p>\n <div className={styles.timer}>\n {showDays && startRemaining.days > 0 && (\n <>\n <div className={styles.segment}>\n <span className={styles.value}>{startRemaining.days}</span>\n <span className={styles.unit}>days</span>\n </div>\n <span className={styles.separator}>:</span>\n </>\n )}\n <div className={styles.segment}>\n <span className={styles.value}>{padZero(startRemaining.hours)}</span>\n <span className={styles.unit}>hrs</span>\n </div>\n <span className={styles.separator}>:</span>\n <div className={styles.segment}>\n <span className={styles.value}>{padZero(startRemaining.minutes)}</span>\n <span className={styles.unit}>min</span>\n </div>\n <span className={styles.separator}>:</span>\n <div className={styles.segment}>\n <span className={styles.value}>{padZero(startRemaining.seconds)}</span>\n <span className={styles.unit}>sec</span>\n </div>\n </div>\n </div>\n );\n }\n\n // Render active countdown\n return (\n <div className={`${baseStyles} ${styles.container} ${className}`}>\n {label && <p className={styles.label}>{label}</p>}\n <div className={styles.timer}>\n {showDays && timeRemaining.days > 0 && (\n <>\n <div className={styles.segment}>\n <span className={styles.value}>{timeRemaining.days}</span>\n <span className={styles.unit}>days</span>\n </div>\n <span className={styles.separator}>:</span>\n </>\n )}\n <div className={styles.segment}>\n <span className={styles.value}>{padZero(timeRemaining.hours)}</span>\n <span className={styles.unit}>hrs</span>\n </div>\n <span className={styles.separator}>:</span>\n <div className={styles.segment}>\n <span className={styles.value}>{padZero(timeRemaining.minutes)}</span>\n <span className={styles.unit}>min</span>\n </div>\n <span className={styles.separator}>:</span>\n <div className={styles.segment}>\n <span className={styles.value}>{padZero(timeRemaining.seconds)}</span>\n <span className={styles.unit}>sec</span>\n </div>\n </div>\n </div>\n );\n}\n\nexport default CountdownTimer;\n","'use client';\n\nimport React from 'react';\nimport { Button } from '../Button/Button';\n\n// Helper function to format wallet address\nfunction formatAddress(address: string | null | undefined): string {\n if (!address) return '';\n if (address.length <= 10) return address;\n return `${address.slice(0, 4)}...${address.slice(-4)}`;\n}\n\n// ============================================================================\n// Types\n// ============================================================================\n\ninterface Web3ActionBarProps {\n /** Whether wallet is connected */\n isConnected: boolean;\n /** Wallet address to display when connected */\n walletAddress?: string | null;\n /** Callback when connect button is clicked */\n onConnect: () => void;\n /** Optional callback when disconnect button is clicked */\n onDisconnect?: () => void;\n /** Icon slot for disconnect button (pass your close icon component) */\n disconnectIcon?: React.ReactNode;\n /** App-specific action buttons (My Vault, Place Offering, Stake, etc.) */\n children?: React.ReactNode;\n /** Additional className */\n className?: string;\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * Universal Web3 Action Bar for all web3 apps in RadOS\n *\n * Provides a consistent bottom bar for wallet connection and app-specific\n * blockchain actions. Used across Auctions, MurderTree, Vault, and future web3 apps.\n *\n * Architecture:\n * - TabList = Navigation tabs (web2 apps)\n * - Web3ActionBar = Wallet + blockchain actions (web3 apps)\n *\n * @example\n * ```tsx\n * <Web3ActionBar\n * isConnected={isConnected}\n * walletAddress={walletAddress}\n * onConnect={handleConnect}\n * onDisconnect={handleDisconnect}\n * disconnectIcon={<CloseIcon />}\n * >\n * <Button variant=\"outline\" onClick={handleShowVault}>My Vault</Button>\n * {status === 'live' && <Button>Place Offering</Button>}\n * </Web3ActionBar>\n * ```\n */\nexport function Web3ActionBar({\n isConnected,\n walletAddress,\n onConnect,\n onDisconnect,\n disconnectIcon,\n children,\n className = '',\n}: Web3ActionBarProps) {\n return (\n <div className={`flex items-center justify-between gap-4 px-2 py-2 bg-surface-primary border-t border-edge-primary shrink-0 ${className}`.trim()}>\n {/* Left: Wallet Connection */}\n <div className=\"flex gap-2 items-center\">\n {!isConnected ? (\n <Button onClick={onConnect}>Connect</Button>\n ) : (\n <>\n {/* Wallet address display */}\n {walletAddress && (\n <span className=\"font-mono text-xs text-content-primary\">{formatAddress(walletAddress)}</span>\n )}\n {/* Disconnect button */}\n {onDisconnect && (\n <Button\n variant=\"ghost\"\n iconOnly={true}\n icon={disconnectIcon}\n onClick={onDisconnect}\n title=\"Disconnect wallet\"\n />\n )}\n </>\n )}\n </div>\n\n {/* Right: App-specific actions (My Vault, Place Offering, Stake, etc.) */}\n {isConnected && children && (\n <div className=\"flex gap-2 items-center\">\n {children}\n </div>\n )}\n </div>\n );\n}\n\nexport default Web3ActionBar;\n","'use client';\n\nimport React, { createContext, useContext, useState, useCallback, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useEscapeKey, useLockBodyScroll } from '../../../hooks';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ninterface DialogContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n}\n\n// ============================================================================\n// Context\n// ============================================================================\n\nconst DialogContext = createContext<DialogContextValue | null>(null);\n\nfunction useDialogContext() {\n const context = useContext(DialogContext);\n if (!context) {\n throw new Error('Dialog components must be used within a Dialog');\n }\n return context;\n}\n\n// ============================================================================\n// Dialog Root\n// ============================================================================\n\ninterface DialogProps {\n /** Controlled open state */\n open?: boolean;\n /** Default open state for uncontrolled usage */\n defaultOpen?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Children */\n children: React.ReactNode;\n}\n\nexport function Dialog({\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n children,\n}: DialogProps) {\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : internalOpen;\n\n const setOpen = useCallback((newOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n }, [isControlled, onOpenChange]);\n\n return (\n <DialogContext.Provider value={{ open, setOpen }}>\n {children}\n </DialogContext.Provider>\n );\n}\n\n// ============================================================================\n// Dialog Trigger\n// ============================================================================\n\ninterface DialogTriggerProps {\n /** Trigger element */\n children: React.ReactElement;\n /** Pass through as child instead of wrapping */\n asChild?: boolean;\n}\n\nexport function DialogTrigger({ children, asChild }: DialogTriggerProps) {\n const { setOpen } = useDialogContext();\n\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(children as React.ReactElement<{ onClick?: () => void }>, {\n onClick: () => setOpen(true),\n });\n }\n\n return (\n <button type=\"button\" onClick={() => setOpen(true)}>\n {children}\n </button>\n );\n}\n\n// ============================================================================\n// Dialog Portal & Overlay\n// ============================================================================\n\ninterface DialogContentProps {\n /** Additional className */\n className?: string;\n /** Children */\n children: React.ReactNode;\n}\n\nexport function DialogContent({ className = '', children }: DialogContentProps) {\n const { open, setOpen } = useDialogContext();\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n // Handle escape key\n useEscapeKey(open, () => setOpen(false));\n\n // Prevent body scroll when open\n useLockBodyScroll(open);\n\n if (!mounted || !open) return null;\n\n return createPortal(\n <div className=\"fixed inset-0 z-50 flex items-center justify-center\">\n {/* Overlay */}\n <div\n className=\"absolute inset-0 bg-surface-secondary/50 animate-fadeIn\"\n onClick={() => setOpen(false)}\n aria-hidden=\"true\"\n />\n\n {/* Content */}\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n className={`\n relative z-10\n w-full max-w-lg mx-4\n bg-surface-primary\n border-2 border-edge-primary\n rounded-sm\n shadow-[4px_4px_0_0_var(--color-edge-primary)]\n animate-scaleIn\n ${className}\n `.trim()}\n >\n {children}\n </div>\n </div>,\n document.body\n );\n}\n\n// ============================================================================\n// Dialog Header, Title, Description\n// ============================================================================\n\ninterface DialogHeaderProps {\n /** Additional className */\n className?: string;\n /** Children */\n children: React.ReactNode;\n}\n\nexport function DialogHeader({ className = '', children }: DialogHeaderProps) {\n return (\n <div className={`px-6 pt-6 pb-4 border-b border-edge-primary/20 ${className}`.trim()}>\n {children}\n </div>\n );\n}\n\ninterface DialogTitleProps {\n /** Additional className */\n className?: string;\n /** Children */\n children: React.ReactNode;\n}\n\nexport function DialogTitle({ className = '', children }: DialogTitleProps) {\n return (\n <h2 className={`font-joystix text-base uppercase text-content-primary ${className}`.trim()}>\n {children}\n </h2>\n );\n}\n\ninterface DialogDescriptionProps {\n /** Additional className */\n className?: string;\n /** Children */\n children: React.ReactNode;\n}\n\nexport function DialogDescription({ className = '', children }: DialogDescriptionProps) {\n return (\n <p className={`font-mondwest text-base text-content-primary/70 mt-2 ${className}`.trim()}>\n {children}\n </p>\n );\n}\n\n// ============================================================================\n// Dialog Body & Footer\n// ============================================================================\n\ninterface DialogBodyProps {\n /** Additional className */\n className?: string;\n /** Children */\n children: React.ReactNode;\n}\n\nexport function DialogBody({ className = '', children }: DialogBodyProps) {\n return (\n <div className={`px-6 py-4 ${className}`.trim()}>\n {children}\n </div>\n );\n}\n\ninterface DialogFooterProps {\n /** Additional className */\n className?: string;\n /** Children */\n children: React.ReactNode;\n}\n\nexport function DialogFooter({ className = '', children }: DialogFooterProps) {\n return (\n <div className={`px-6 pb-6 pt-4 border-t border-edge-primary/20 flex justify-end gap-2 ${className}`.trim()}>\n {children}\n </div>\n );\n}\n\n// ============================================================================\n// Dialog Close\n// ============================================================================\n\ninterface DialogCloseProps {\n /** Close button element */\n children: React.ReactElement;\n /** Pass through as child instead of wrapping */\n asChild?: boolean;\n}\n\nexport function DialogClose({ children, asChild }: DialogCloseProps) {\n const { setOpen } = useDialogContext();\n\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(children as React.ReactElement<{ onClick?: () => void }>, {\n onClick: () => setOpen(false),\n });\n }\n\n return (\n <button type=\"button\" onClick={() => setOpen(false)}>\n {children}\n </button>\n );\n}\n\nexport default Dialog;\n"]}
@@ -1,22 +0,0 @@
1
- import { RefObject } from 'react';
2
-
3
- /**
4
- * Hook to handle escape key press to close modals/overlays
5
- * @param isActive - Whether the modal is currently open
6
- * @param onEscape - Callback to close the modal
7
- */
8
- declare function useEscapeKey(isActive: boolean, onEscape: () => void): void;
9
- /**
10
- * Hook to detect clicks outside of specified element(s)
11
- * @param isActive - Whether to listen for clicks
12
- * @param refs - Array of refs to elements that should NOT trigger the callback
13
- * @param onClickOutside - Callback when clicking outside all refs
14
- */
15
- declare function useClickOutside(isActive: boolean, refs: RefObject<HTMLElement | null>[], onClickOutside: () => void): void;
16
- /**
17
- * Hook to prevent body scroll when modal is open
18
- * @param isActive - Whether to lock body scroll
19
- */
20
- declare function useLockBodyScroll(isActive: boolean): void;
21
-
22
- export { useClickOutside, useEscapeKey, useLockBodyScroll };
@@ -1,3 +0,0 @@
1
- export { useClickOutside, useEscapeKey, useLockBodyScroll } from '../chunk-SR2T7OEJ.mjs';
2
- //# sourceMappingURL=index.mjs.map
3
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}