@protonradio/proton-ui 0.11.34 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (678) hide show
  1. package/README.md +1 -1
  2. package/dist/_virtual/{react-jsx-runtime.production.min.cjs.js → react-jsx-runtime.production.cjs.js} +1 -1
  3. package/dist/_virtual/react-jsx-runtime.production.cjs.js.map +1 -0
  4. package/dist/_virtual/react-jsx-runtime.production.es.js +5 -0
  5. package/dist/_virtual/react-jsx-runtime.production.es.js.map +1 -0
  6. package/dist/components/ActionMenu/ActionMenu.cjs.js +1 -1
  7. package/dist/components/ActionMenu/ActionMenu.cjs.js.map +1 -1
  8. package/dist/components/ActionMenu/ActionMenu.es.js +87 -88
  9. package/dist/components/ActionMenu/ActionMenu.es.js.map +1 -1
  10. package/dist/components/Badge/Badge.cjs.js +1 -1
  11. package/dist/components/Badge/Badge.cjs.js.map +1 -1
  12. package/dist/components/Badge/Badge.es.js +6 -2
  13. package/dist/components/Badge/Badge.es.js.map +1 -1
  14. package/dist/components/Banner/Banner.cjs.js +1 -1
  15. package/dist/components/Banner/Banner.cjs.js.map +1 -1
  16. package/dist/components/Banner/Banner.es.js +4 -4
  17. package/dist/components/Banner/Banner.es.js.map +1 -1
  18. package/dist/components/Button/Button.cjs.js +1 -1
  19. package/dist/components/Button/Button.cjs.js.map +1 -1
  20. package/dist/components/Button/Button.es.js.map +1 -1
  21. package/dist/components/ButtonGroup/ButtonGroup.cjs.js +1 -1
  22. package/dist/components/ButtonGroup/ButtonGroup.cjs.js.map +1 -1
  23. package/dist/components/ButtonGroup/ButtonGroup.es.js +42 -38
  24. package/dist/components/ButtonGroup/ButtonGroup.es.js.map +1 -1
  25. package/dist/components/ButtonWithSelect/ButtonWithSelect.cjs.js +1 -1
  26. package/dist/components/ButtonWithSelect/ButtonWithSelect.cjs.js.map +1 -1
  27. package/dist/components/ButtonWithSelect/ButtonWithSelect.es.js +12 -12
  28. package/dist/components/ButtonWithSelect/ButtonWithSelect.es.js.map +1 -1
  29. package/dist/components/Checkbox/CheckboxIndicator.cjs.js +2 -0
  30. package/dist/components/Checkbox/CheckboxIndicator.cjs.js.map +1 -0
  31. package/dist/components/Checkbox/CheckboxIndicator.es.js +44 -0
  32. package/dist/components/Checkbox/CheckboxIndicator.es.js.map +1 -0
  33. package/dist/components/Checkbox/CheckboxInput/CheckboxInput.cjs.js +1 -1
  34. package/dist/components/Checkbox/CheckboxInput/CheckboxInput.cjs.js.map +1 -1
  35. package/dist/components/Checkbox/CheckboxInput/CheckboxInput.es.js +62 -58
  36. package/dist/components/Checkbox/CheckboxInput/CheckboxInput.es.js.map +1 -1
  37. package/dist/components/Checkbox/CheckboxRadioGroup/CheckboxRadioGroup.cjs.js +1 -1
  38. package/dist/components/Checkbox/CheckboxRadioGroup/CheckboxRadioGroup.cjs.js.map +1 -1
  39. package/dist/components/Checkbox/CheckboxRadioGroup/CheckboxRadioGroup.es.js +53 -43
  40. package/dist/components/Checkbox/CheckboxRadioGroup/CheckboxRadioGroup.es.js.map +1 -1
  41. package/dist/components/Elevation/Elevation.cjs.js +1 -1
  42. package/dist/components/Elevation/Elevation.cjs.js.map +1 -1
  43. package/dist/components/Elevation/Elevation.es.js +11 -10
  44. package/dist/components/Elevation/Elevation.es.js.map +1 -1
  45. package/dist/components/Icon/IconComponents/AlertCircle.cjs.js +1 -1
  46. package/dist/components/Icon/IconComponents/AlertCircle.cjs.js.map +1 -1
  47. package/dist/components/Icon/IconComponents/AlertCircle.es.js +9 -9
  48. package/dist/components/Icon/IconComponents/AlertCircle.es.js.map +1 -1
  49. package/dist/components/Icon/IconComponents/AmazonMusicLogo.cjs.js +1 -1
  50. package/dist/components/Icon/IconComponents/AmazonMusicLogo.cjs.js.map +1 -1
  51. package/dist/components/Icon/IconComponents/AmazonMusicLogo.es.js +10 -10
  52. package/dist/components/Icon/IconComponents/AmazonMusicLogo.es.js.map +1 -1
  53. package/dist/components/Icon/IconComponents/AppleMusicLogo.cjs.js +1 -1
  54. package/dist/components/Icon/IconComponents/AppleMusicLogo.cjs.js.map +1 -1
  55. package/dist/components/Icon/IconComponents/AppleMusicLogo.es.js +10 -10
  56. package/dist/components/Icon/IconComponents/AppleMusicLogo.es.js.map +1 -1
  57. package/dist/components/Icon/IconComponents/ArrowLeft.cjs.js +1 -1
  58. package/dist/components/Icon/IconComponents/ArrowLeft.cjs.js.map +1 -1
  59. package/dist/components/Icon/IconComponents/ArrowLeft.es.js +11 -11
  60. package/dist/components/Icon/IconComponents/ArrowLeft.es.js.map +1 -1
  61. package/dist/components/Icon/IconComponents/BandcampLogo.cjs.js +1 -1
  62. package/dist/components/Icon/IconComponents/BandcampLogo.cjs.js.map +1 -1
  63. package/dist/components/Icon/IconComponents/BandcampLogo.es.js +16 -16
  64. package/dist/components/Icon/IconComponents/BandcampLogo.es.js.map +1 -1
  65. package/dist/components/Icon/IconComponents/BeatportLogo.cjs.js +1 -1
  66. package/dist/components/Icon/IconComponents/BeatportLogo.cjs.js.map +1 -1
  67. package/dist/components/Icon/IconComponents/BeatportLogo.es.js +15 -15
  68. package/dist/components/Icon/IconComponents/BeatportLogo.es.js.map +1 -1
  69. package/dist/components/Icon/IconComponents/Bell.cjs.js +1 -1
  70. package/dist/components/Icon/IconComponents/Bell.cjs.js.map +1 -1
  71. package/dist/components/Icon/IconComponents/Bell.es.js +8 -8
  72. package/dist/components/Icon/IconComponents/Bell.es.js.map +1 -1
  73. package/dist/components/Icon/IconComponents/CaretDown.cjs.js +1 -1
  74. package/dist/components/Icon/IconComponents/CaretDown.cjs.js.map +1 -1
  75. package/dist/components/Icon/IconComponents/CaretDown.es.js +14 -14
  76. package/dist/components/Icon/IconComponents/CaretDown.es.js.map +1 -1
  77. package/dist/components/Icon/IconComponents/CaretRight.cjs.js +1 -1
  78. package/dist/components/Icon/IconComponents/CaretRight.cjs.js.map +1 -1
  79. package/dist/components/Icon/IconComponents/CaretRight.es.js +14 -14
  80. package/dist/components/Icon/IconComponents/CaretRight.es.js.map +1 -1
  81. package/dist/components/Icon/IconComponents/Chart.cjs.js +1 -1
  82. package/dist/components/Icon/IconComponents/Chart.cjs.js.map +1 -1
  83. package/dist/components/Icon/IconComponents/Chart.es.js +14 -14
  84. package/dist/components/Icon/IconComponents/Chart.es.js.map +1 -1
  85. package/dist/components/Icon/IconComponents/CheckCircle.cjs.js +1 -1
  86. package/dist/components/Icon/IconComponents/CheckCircle.cjs.js.map +1 -1
  87. package/dist/components/Icon/IconComponents/CheckCircle.es.js +9 -9
  88. package/dist/components/Icon/IconComponents/CheckCircle.es.js.map +1 -1
  89. package/dist/components/Icon/IconComponents/ChevronDown.cjs.js +1 -1
  90. package/dist/components/Icon/IconComponents/ChevronDown.cjs.js.map +1 -1
  91. package/dist/components/Icon/IconComponents/ChevronDown.es.js +13 -9
  92. package/dist/components/Icon/IconComponents/ChevronDown.es.js.map +1 -1
  93. package/dist/components/Icon/IconComponents/ChevronLeft.cjs.js +1 -1
  94. package/dist/components/Icon/IconComponents/ChevronLeft.cjs.js.map +1 -1
  95. package/dist/components/Icon/IconComponents/ChevronLeft.es.js +12 -8
  96. package/dist/components/Icon/IconComponents/ChevronLeft.es.js.map +1 -1
  97. package/dist/components/Icon/IconComponents/ChevronRight.cjs.js +1 -1
  98. package/dist/components/Icon/IconComponents/ChevronRight.cjs.js.map +1 -1
  99. package/dist/components/Icon/IconComponents/ChevronRight.es.js +14 -14
  100. package/dist/components/Icon/IconComponents/ChevronRight.es.js.map +1 -1
  101. package/dist/components/Icon/IconComponents/ChevronSquareDown.cjs.js +1 -1
  102. package/dist/components/Icon/IconComponents/ChevronSquareDown.cjs.js.map +1 -1
  103. package/dist/components/Icon/IconComponents/ChevronSquareDown.es.js +17 -17
  104. package/dist/components/Icon/IconComponents/ChevronSquareDown.es.js.map +1 -1
  105. package/dist/components/Icon/IconComponents/ChevronUp.cjs.js +1 -1
  106. package/dist/components/Icon/IconComponents/ChevronUp.cjs.js.map +1 -1
  107. package/dist/components/Icon/IconComponents/ChevronUp.es.js +14 -14
  108. package/dist/components/Icon/IconComponents/ChevronUp.es.js.map +1 -1
  109. package/dist/components/Icon/IconComponents/Close.cjs.js +1 -1
  110. package/dist/components/Icon/IconComponents/Close.cjs.js.map +1 -1
  111. package/dist/components/Icon/IconComponents/Close.es.js +14 -14
  112. package/dist/components/Icon/IconComponents/Close.es.js.map +1 -1
  113. package/dist/components/Icon/IconComponents/Cog.cjs.js +1 -1
  114. package/dist/components/Icon/IconComponents/Cog.cjs.js.map +1 -1
  115. package/dist/components/Icon/IconComponents/Cog.es.js +15 -11
  116. package/dist/components/Icon/IconComponents/Cog.es.js.map +1 -1
  117. package/dist/components/Icon/IconComponents/Copy.cjs.js +1 -1
  118. package/dist/components/Icon/IconComponents/Copy.cjs.js.map +1 -1
  119. package/dist/components/Icon/IconComponents/Copy.es.js +11 -11
  120. package/dist/components/Icon/IconComponents/Copy.es.js.map +1 -1
  121. package/dist/components/Icon/IconComponents/DangerCircle.cjs.js +1 -1
  122. package/dist/components/Icon/IconComponents/DangerCircle.cjs.js.map +1 -1
  123. package/dist/components/Icon/IconComponents/DangerCircle.es.js +11 -11
  124. package/dist/components/Icon/IconComponents/DangerCircle.es.js.map +1 -1
  125. package/dist/components/Icon/IconComponents/Dashboard.cjs.js +1 -1
  126. package/dist/components/Icon/IconComponents/Dashboard.cjs.js.map +1 -1
  127. package/dist/components/Icon/IconComponents/Dashboard.es.js +15 -11
  128. package/dist/components/Icon/IconComponents/Dashboard.es.js.map +1 -1
  129. package/dist/components/Icon/IconComponents/DeezerLogo.cjs.js +1 -1
  130. package/dist/components/Icon/IconComponents/DeezerLogo.cjs.js.map +1 -1
  131. package/dist/components/Icon/IconComponents/DeezerLogo.es.js +10 -10
  132. package/dist/components/Icon/IconComponents/DeezerLogo.es.js.map +1 -1
  133. package/dist/components/Icon/IconComponents/Download.cjs.js +1 -1
  134. package/dist/components/Icon/IconComponents/Download.cjs.js.map +1 -1
  135. package/dist/components/Icon/IconComponents/Download.es.js +13 -9
  136. package/dist/components/Icon/IconComponents/Download.es.js.map +1 -1
  137. package/dist/components/Icon/IconComponents/DragHandle.cjs.js +1 -1
  138. package/dist/components/Icon/IconComponents/DragHandle.cjs.js.map +1 -1
  139. package/dist/components/Icon/IconComponents/DragHandle.es.js +12 -8
  140. package/dist/components/Icon/IconComponents/DragHandle.es.js.map +1 -1
  141. package/dist/components/Icon/IconComponents/Edit.cjs.js +1 -1
  142. package/dist/components/Icon/IconComponents/Edit.cjs.js.map +1 -1
  143. package/dist/components/Icon/IconComponents/Edit.es.js +13 -9
  144. package/dist/components/Icon/IconComponents/Edit.es.js.map +1 -1
  145. package/dist/components/Icon/IconComponents/Ellipsis.cjs.js +1 -1
  146. package/dist/components/Icon/IconComponents/Ellipsis.cjs.js.map +1 -1
  147. package/dist/components/Icon/IconComponents/Ellipsis.es.js +14 -10
  148. package/dist/components/Icon/IconComponents/Ellipsis.es.js.map +1 -1
  149. package/dist/components/Icon/IconComponents/EmailThick.cjs.js +1 -1
  150. package/dist/components/Icon/IconComponents/EmailThick.cjs.js.map +1 -1
  151. package/dist/components/Icon/IconComponents/EmailThick.es.js +15 -11
  152. package/dist/components/Icon/IconComponents/EmailThick.es.js.map +1 -1
  153. package/dist/components/Icon/IconComponents/EmailThin.cjs.js +1 -1
  154. package/dist/components/Icon/IconComponents/EmailThin.cjs.js.map +1 -1
  155. package/dist/components/Icon/IconComponents/EmailThin.es.js +15 -11
  156. package/dist/components/Icon/IconComponents/EmailThin.es.js.map +1 -1
  157. package/dist/components/Icon/IconComponents/ExternalLink.cjs.js +1 -1
  158. package/dist/components/Icon/IconComponents/ExternalLink.cjs.js.map +1 -1
  159. package/dist/components/Icon/IconComponents/ExternalLink.es.js +18 -14
  160. package/dist/components/Icon/IconComponents/ExternalLink.es.js.map +1 -1
  161. package/dist/components/Icon/IconComponents/FacebookLogo.cjs.js +1 -1
  162. package/dist/components/Icon/IconComponents/FacebookLogo.cjs.js.map +1 -1
  163. package/dist/components/Icon/IconComponents/FacebookLogo.es.js +10 -10
  164. package/dist/components/Icon/IconComponents/FacebookLogo.es.js.map +1 -1
  165. package/dist/components/Icon/IconComponents/Globe.cjs.js +1 -1
  166. package/dist/components/Icon/IconComponents/Globe.cjs.js.map +1 -1
  167. package/dist/components/Icon/IconComponents/Globe.es.js +12 -8
  168. package/dist/components/Icon/IconComponents/Globe.es.js.map +1 -1
  169. package/dist/components/Icon/IconComponents/Hamburger.cjs.js +1 -1
  170. package/dist/components/Icon/IconComponents/Hamburger.cjs.js.map +1 -1
  171. package/dist/components/Icon/IconComponents/Hamburger.es.js +16 -12
  172. package/dist/components/Icon/IconComponents/Hamburger.es.js.map +1 -1
  173. package/dist/components/Icon/IconComponents/Heartbeat.cjs.js +1 -1
  174. package/dist/components/Icon/IconComponents/Heartbeat.cjs.js.map +1 -1
  175. package/dist/components/Icon/IconComponents/Heartbeat.es.js +16 -12
  176. package/dist/components/Icon/IconComponents/Heartbeat.es.js.map +1 -1
  177. package/dist/components/Icon/IconComponents/Info.cjs.js +1 -1
  178. package/dist/components/Icon/IconComponents/Info.cjs.js.map +1 -1
  179. package/dist/components/Icon/IconComponents/Info.es.js +9 -9
  180. package/dist/components/Icon/IconComponents/Info.es.js.map +1 -1
  181. package/dist/components/Icon/IconComponents/InfoOutline.cjs.js +1 -1
  182. package/dist/components/Icon/IconComponents/InfoOutline.cjs.js.map +1 -1
  183. package/dist/components/Icon/IconComponents/InfoOutline.es.js +15 -11
  184. package/dist/components/Icon/IconComponents/InfoOutline.es.js.map +1 -1
  185. package/dist/components/Icon/IconComponents/InstagramLogo.cjs.js +1 -1
  186. package/dist/components/Icon/IconComponents/InstagramLogo.cjs.js.map +1 -1
  187. package/dist/components/Icon/IconComponents/InstagramLogo.es.js +10 -10
  188. package/dist/components/Icon/IconComponents/InstagramLogo.es.js.map +1 -1
  189. package/dist/components/Icon/IconComponents/IntercomLogo.cjs.js +1 -1
  190. package/dist/components/Icon/IconComponents/IntercomLogo.cjs.js.map +1 -1
  191. package/dist/components/Icon/IconComponents/IntercomLogo.es.js +10 -10
  192. package/dist/components/Icon/IconComponents/IntercomLogo.es.js.map +1 -1
  193. package/dist/components/Icon/IconComponents/Lightning.cjs.js +1 -1
  194. package/dist/components/Icon/IconComponents/Lightning.cjs.js.map +1 -1
  195. package/dist/components/Icon/IconComponents/Lightning.es.js +16 -12
  196. package/dist/components/Icon/IconComponents/Lightning.es.js.map +1 -1
  197. package/dist/components/Icon/IconComponents/Link.cjs.js +1 -1
  198. package/dist/components/Icon/IconComponents/Link.cjs.js.map +1 -1
  199. package/dist/components/Icon/IconComponents/Link.es.js +12 -8
  200. package/dist/components/Icon/IconComponents/Link.es.js.map +1 -1
  201. package/dist/components/Icon/IconComponents/MessengerLogo.cjs.js +1 -1
  202. package/dist/components/Icon/IconComponents/MessengerLogo.cjs.js.map +1 -1
  203. package/dist/components/Icon/IconComponents/MessengerLogo.es.js +9 -9
  204. package/dist/components/Icon/IconComponents/MessengerLogo.es.js.map +1 -1
  205. package/dist/components/Icon/IconComponents/MusicNote.cjs.js +1 -1
  206. package/dist/components/Icon/IconComponents/MusicNote.cjs.js.map +1 -1
  207. package/dist/components/Icon/IconComponents/MusicNote.es.js +15 -11
  208. package/dist/components/Icon/IconComponents/MusicNote.es.js.map +1 -1
  209. package/dist/components/Icon/IconComponents/Pause.cjs.js +1 -1
  210. package/dist/components/Icon/IconComponents/Pause.cjs.js.map +1 -1
  211. package/dist/components/Icon/IconComponents/Pause.es.js +17 -13
  212. package/dist/components/Icon/IconComponents/Pause.es.js.map +1 -1
  213. package/dist/components/Icon/IconComponents/Pencil.cjs.js +1 -1
  214. package/dist/components/Icon/IconComponents/Pencil.cjs.js.map +1 -1
  215. package/dist/components/Icon/IconComponents/Pencil.es.js +15 -11
  216. package/dist/components/Icon/IconComponents/Pencil.es.js.map +1 -1
  217. package/dist/components/Icon/IconComponents/PhoneThick.cjs.js +1 -1
  218. package/dist/components/Icon/IconComponents/PhoneThick.cjs.js.map +1 -1
  219. package/dist/components/Icon/IconComponents/PhoneThick.es.js +17 -13
  220. package/dist/components/Icon/IconComponents/PhoneThick.es.js.map +1 -1
  221. package/dist/components/Icon/IconComponents/PhoneThin.cjs.js +1 -1
  222. package/dist/components/Icon/IconComponents/PhoneThin.cjs.js.map +1 -1
  223. package/dist/components/Icon/IconComponents/PhoneThin.es.js +17 -13
  224. package/dist/components/Icon/IconComponents/PhoneThin.es.js.map +1 -1
  225. package/dist/components/Icon/IconComponents/Play.cjs.js +1 -1
  226. package/dist/components/Icon/IconComponents/Play.cjs.js.map +1 -1
  227. package/dist/components/Icon/IconComponents/Play.es.js +13 -9
  228. package/dist/components/Icon/IconComponents/Play.es.js.map +1 -1
  229. package/dist/components/Icon/IconComponents/ProtonLogo.cjs.js +1 -1
  230. package/dist/components/Icon/IconComponents/ProtonLogo.cjs.js.map +1 -1
  231. package/dist/components/Icon/IconComponents/ProtonLogo.es.js +10 -10
  232. package/dist/components/Icon/IconComponents/ProtonLogo.es.js.map +1 -1
  233. package/dist/components/Icon/IconComponents/Quote.cjs.js +1 -1
  234. package/dist/components/Icon/IconComponents/Quote.cjs.js.map +1 -1
  235. package/dist/components/Icon/IconComponents/Quote.es.js +18 -14
  236. package/dist/components/Icon/IconComponents/Quote.es.js.map +1 -1
  237. package/dist/components/Icon/IconComponents/Search.cjs.js +1 -1
  238. package/dist/components/Icon/IconComponents/Search.cjs.js.map +1 -1
  239. package/dist/components/Icon/IconComponents/Search.es.js +14 -14
  240. package/dist/components/Icon/IconComponents/Search.es.js.map +1 -1
  241. package/dist/components/Icon/IconComponents/Share.cjs.js +1 -1
  242. package/dist/components/Icon/IconComponents/Share.cjs.js.map +1 -1
  243. package/dist/components/Icon/IconComponents/Share.es.js +13 -9
  244. package/dist/components/Icon/IconComponents/Share.es.js.map +1 -1
  245. package/dist/components/Icon/IconComponents/SignOut.cjs.js +1 -1
  246. package/dist/components/Icon/IconComponents/SignOut.cjs.js.map +1 -1
  247. package/dist/components/Icon/IconComponents/SignOut.es.js +15 -11
  248. package/dist/components/Icon/IconComponents/SignOut.es.js.map +1 -1
  249. package/dist/components/Icon/IconComponents/SoundcloudLogo.cjs.js +1 -1
  250. package/dist/components/Icon/IconComponents/SoundcloudLogo.cjs.js.map +1 -1
  251. package/dist/components/Icon/IconComponents/SoundcloudLogo.es.js +10 -10
  252. package/dist/components/Icon/IconComponents/SoundcloudLogo.es.js.map +1 -1
  253. package/dist/components/Icon/IconComponents/SpotifyLogo.cjs.js +1 -1
  254. package/dist/components/Icon/IconComponents/SpotifyLogo.cjs.js.map +1 -1
  255. package/dist/components/Icon/IconComponents/SpotifyLogo.es.js +10 -10
  256. package/dist/components/Icon/IconComponents/SpotifyLogo.es.js.map +1 -1
  257. package/dist/components/Icon/IconComponents/Spy.cjs.js +1 -1
  258. package/dist/components/Icon/IconComponents/Spy.cjs.js.map +1 -1
  259. package/dist/components/Icon/IconComponents/Spy.es.js +13 -9
  260. package/dist/components/Icon/IconComponents/Spy.es.js.map +1 -1
  261. package/dist/components/Icon/IconComponents/SuccessCircle.cjs.js +1 -1
  262. package/dist/components/Icon/IconComponents/SuccessCircle.cjs.js.map +1 -1
  263. package/dist/components/Icon/IconComponents/SuccessCircle.es.js +9 -9
  264. package/dist/components/Icon/IconComponents/SuccessCircle.es.js.map +1 -1
  265. package/dist/components/Icon/IconComponents/TelegramLogo.cjs.js +1 -1
  266. package/dist/components/Icon/IconComponents/TelegramLogo.cjs.js.map +1 -1
  267. package/dist/components/Icon/IconComponents/TelegramLogo.es.js +14 -14
  268. package/dist/components/Icon/IconComponents/TelegramLogo.es.js.map +1 -1
  269. package/dist/components/Icon/IconComponents/TiktokLogo.cjs.js +1 -1
  270. package/dist/components/Icon/IconComponents/TiktokLogo.cjs.js.map +1 -1
  271. package/dist/components/Icon/IconComponents/TiktokLogo.es.js +10 -10
  272. package/dist/components/Icon/IconComponents/TiktokLogo.es.js.map +1 -1
  273. package/dist/components/Icon/IconComponents/Tracklist.cjs.js +1 -1
  274. package/dist/components/Icon/IconComponents/Tracklist.cjs.js.map +1 -1
  275. package/dist/components/Icon/IconComponents/Tracklist.es.js +16 -12
  276. package/dist/components/Icon/IconComponents/Tracklist.es.js.map +1 -1
  277. package/dist/components/Icon/IconComponents/TrashCan.cjs.js +1 -1
  278. package/dist/components/Icon/IconComponents/TrashCan.cjs.js.map +1 -1
  279. package/dist/components/Icon/IconComponents/TrashCan.es.js +13 -9
  280. package/dist/components/Icon/IconComponents/TrashCan.es.js.map +1 -1
  281. package/dist/components/Icon/IconComponents/TraxsourceLogo.cjs.js +1 -1
  282. package/dist/components/Icon/IconComponents/TraxsourceLogo.cjs.js.map +1 -1
  283. package/dist/components/Icon/IconComponents/TraxsourceLogo.es.js +14 -14
  284. package/dist/components/Icon/IconComponents/TraxsourceLogo.es.js.map +1 -1
  285. package/dist/components/Icon/IconComponents/User.cjs.js +1 -1
  286. package/dist/components/Icon/IconComponents/User.cjs.js.map +1 -1
  287. package/dist/components/Icon/IconComponents/User.es.js +9 -9
  288. package/dist/components/Icon/IconComponents/User.es.js.map +1 -1
  289. package/dist/components/Icon/IconComponents/Users.cjs.js +1 -1
  290. package/dist/components/Icon/IconComponents/Users.cjs.js.map +1 -1
  291. package/dist/components/Icon/IconComponents/Users.es.js +12 -8
  292. package/dist/components/Icon/IconComponents/Users.es.js.map +1 -1
  293. package/dist/components/Icon/IconComponents/WarningTriangle.cjs.js +1 -1
  294. package/dist/components/Icon/IconComponents/WarningTriangle.cjs.js.map +1 -1
  295. package/dist/components/Icon/IconComponents/WarningTriangle.es.js +13 -13
  296. package/dist/components/Icon/IconComponents/WarningTriangle.es.js.map +1 -1
  297. package/dist/components/Icon/IconComponents/WhatsappLogoThick.cjs.js +1 -1
  298. package/dist/components/Icon/IconComponents/WhatsappLogoThick.cjs.js.map +1 -1
  299. package/dist/components/Icon/IconComponents/WhatsappLogoThick.es.js +14 -14
  300. package/dist/components/Icon/IconComponents/WhatsappLogoThick.es.js.map +1 -1
  301. package/dist/components/Icon/IconComponents/WhatsappLogoThin.cjs.js +1 -1
  302. package/dist/components/Icon/IconComponents/WhatsappLogoThin.cjs.js.map +1 -1
  303. package/dist/components/Icon/IconComponents/WhatsappLogoThin.es.js +10 -10
  304. package/dist/components/Icon/IconComponents/WhatsappLogoThin.es.js.map +1 -1
  305. package/dist/components/Icon/IconComponents/XTwitterLogo.cjs.js +1 -1
  306. package/dist/components/Icon/IconComponents/XTwitterLogo.cjs.js.map +1 -1
  307. package/dist/components/Icon/IconComponents/XTwitterLogo.es.js +9 -9
  308. package/dist/components/Icon/IconComponents/XTwitterLogo.es.js.map +1 -1
  309. package/dist/components/Icon/IconComponents/YandexLogo.cjs.js +1 -1
  310. package/dist/components/Icon/IconComponents/YandexLogo.cjs.js.map +1 -1
  311. package/dist/components/Icon/IconComponents/YandexLogo.es.js +14 -14
  312. package/dist/components/Icon/IconComponents/YandexLogo.es.js.map +1 -1
  313. package/dist/components/Icon/IconComponents/YoutubeLogo.cjs.js +1 -1
  314. package/dist/components/Icon/IconComponents/YoutubeLogo.cjs.js.map +1 -1
  315. package/dist/components/Icon/IconComponents/YoutubeLogo.es.js +10 -10
  316. package/dist/components/Icon/IconComponents/YoutubeLogo.es.js.map +1 -1
  317. package/dist/components/Icon/IconProps.cjs.js +1 -1
  318. package/dist/components/Icon/IconProps.cjs.js.map +1 -1
  319. package/dist/components/Icon/IconProps.es.js +11 -7
  320. package/dist/components/Icon/IconProps.es.js.map +1 -1
  321. package/dist/components/ImageBackground/ImageBackground.cjs.js +1 -1
  322. package/dist/components/ImageBackground/ImageBackground.cjs.js.map +1 -1
  323. package/dist/components/ImageBackground/ImageBackground.es.js +5 -5
  324. package/dist/components/ImageBackground/ImageBackground.es.js.map +1 -1
  325. package/dist/components/Input/BaseInput/Input.cjs.js +1 -1
  326. package/dist/components/Input/BaseInput/Input.cjs.js.map +1 -1
  327. package/dist/components/Input/BaseInput/Input.es.js +63 -62
  328. package/dist/components/Input/BaseInput/Input.es.js.map +1 -1
  329. package/dist/components/Input/CopyInput/CopyInput.cjs.js +1 -1
  330. package/dist/components/Input/CopyInput/CopyInput.cjs.js.map +1 -1
  331. package/dist/components/Input/CopyInput/CopyInput.es.js +5 -2
  332. package/dist/components/Input/CopyInput/CopyInput.es.js.map +1 -1
  333. package/dist/components/Input/OTPInput/OTPInput.cjs.js +1 -1
  334. package/dist/components/Input/OTPInput/OTPInput.cjs.js.map +1 -1
  335. package/dist/components/Input/OTPInput/OTPInput.es.js.map +1 -1
  336. package/dist/components/Input/SearchInput/SearchInput.cjs.js.map +1 -1
  337. package/dist/components/Input/SearchInput/SearchInput.es.js.map +1 -1
  338. package/dist/components/Menu/MenuTrigger.cjs.js +1 -1
  339. package/dist/components/Menu/MenuTrigger.cjs.js.map +1 -1
  340. package/dist/components/Menu/MenuTrigger.es.js.map +1 -1
  341. package/dist/components/Menu/PopoverMenu.cjs.js +1 -1
  342. package/dist/components/Menu/PopoverMenu.cjs.js.map +1 -1
  343. package/dist/components/Menu/PopoverMenu.es.js +31 -30
  344. package/dist/components/Menu/PopoverMenu.es.js.map +1 -1
  345. package/dist/components/Modal/Modal.cjs.js +1 -1
  346. package/dist/components/Modal/Modal.cjs.js.map +1 -1
  347. package/dist/components/Modal/Modal.es.js +46 -41
  348. package/dist/components/Modal/Modal.es.js.map +1 -1
  349. package/dist/components/Overlay/Overlay.cjs.js +2 -0
  350. package/dist/components/Overlay/Overlay.cjs.js.map +1 -0
  351. package/dist/components/Overlay/Overlay.es.js +25 -0
  352. package/dist/components/Overlay/Overlay.es.js.map +1 -0
  353. package/dist/components/Popover/Popover.cjs.js +1 -1
  354. package/dist/components/Popover/Popover.cjs.js.map +1 -1
  355. package/dist/components/Popover/Popover.es.js +35 -29
  356. package/dist/components/Popover/Popover.es.js.map +1 -1
  357. package/dist/components/ScreenOverlay/ScreenOverlay.cjs.js +1 -1
  358. package/dist/components/ScreenOverlay/ScreenOverlay.cjs.js.map +1 -1
  359. package/dist/components/ScreenOverlay/ScreenOverlay.es.js.map +1 -1
  360. package/dist/components/Select/Select.cjs.js +1 -1
  361. package/dist/components/Select/Select.cjs.js.map +1 -1
  362. package/dist/components/Select/Select.es.js +104 -106
  363. package/dist/components/Select/Select.es.js.map +1 -1
  364. package/dist/components/Switch/Switch.cjs.js +1 -1
  365. package/dist/components/Switch/Switch.cjs.js.map +1 -1
  366. package/dist/components/Switch/Switch.es.js +42 -29
  367. package/dist/components/Switch/Switch.es.js.map +1 -1
  368. package/dist/components/Table/BaseTable/Collection/CompoundComponents.cjs.js.map +1 -1
  369. package/dist/components/Table/BaseTable/Collection/CompoundComponents.es.js.map +1 -1
  370. package/dist/components/Table/BaseTable/Collection/collectionParser.cjs.js +1 -1
  371. package/dist/components/Table/BaseTable/Collection/collectionParser.cjs.js.map +1 -1
  372. package/dist/components/Table/BaseTable/Collection/collectionParser.es.js.map +1 -1
  373. package/dist/components/Table/BaseTable/Collection/useTableCollection.cjs.js.map +1 -1
  374. package/dist/components/Table/BaseTable/Collection/useTableCollection.es.js.map +1 -1
  375. package/dist/components/Table/BaseTable/Table.cjs.js +1 -1
  376. package/dist/components/Table/BaseTable/Table.cjs.js.map +1 -1
  377. package/dist/components/Table/BaseTable/Table.es.js +5 -5
  378. package/dist/components/Table/BaseTable/Table.es.js.map +1 -1
  379. package/dist/components/Table/BaseTable/elements/TableBody.cjs.js.map +1 -1
  380. package/dist/components/Table/BaseTable/elements/TableBody.es.js.map +1 -1
  381. package/dist/components/Table/BaseTable/elements/TableCell.cjs.js.map +1 -1
  382. package/dist/components/Table/BaseTable/elements/TableCell.es.js.map +1 -1
  383. package/dist/components/Table/BaseTable/elements/TableHeader.cjs.js.map +1 -1
  384. package/dist/components/Table/BaseTable/elements/TableHeader.es.js.map +1 -1
  385. package/dist/components/Table/BaseTable/elements/TableHeaderCell.cjs.js.map +1 -1
  386. package/dist/components/Table/BaseTable/elements/TableHeaderCell.es.js.map +1 -1
  387. package/dist/components/Table/BaseTable/elements/TableHeaderRow.cjs.js.map +1 -1
  388. package/dist/components/Table/BaseTable/elements/TableHeaderRow.es.js.map +1 -1
  389. package/dist/components/Table/BaseTable/elements/TableRoot.cjs.js.map +1 -1
  390. package/dist/components/Table/BaseTable/elements/TableRoot.es.js.map +1 -1
  391. package/dist/components/Table/BaseTable/elements/TableRow.cjs.js.map +1 -1
  392. package/dist/components/Table/BaseTable/elements/TableRow.es.js.map +1 -1
  393. package/dist/components/Table/DataTable/DataTable.cjs.js +1 -1
  394. package/dist/components/Table/DataTable/DataTable.cjs.js.map +1 -1
  395. package/dist/components/Table/DataTable/DataTable.es.js +26 -26
  396. package/dist/components/Table/DataTable/DataTable.es.js.map +1 -1
  397. package/dist/components/Table/DataTable/DataTableRow.cjs.js +1 -1
  398. package/dist/components/Table/DataTable/DataTableRow.cjs.js.map +1 -1
  399. package/dist/components/Table/DataTable/DataTableRow.es.js +23 -17
  400. package/dist/components/Table/DataTable/DataTableRow.es.js.map +1 -1
  401. package/dist/components/Text/TextCountdown/TextCountdown.cjs.js +1 -1
  402. package/dist/components/Text/TextCountdown/TextCountdown.cjs.js.map +1 -1
  403. package/dist/components/Text/TextCountdown/TextCountdown.es.js.map +1 -1
  404. package/dist/components/Text/TextEllipsis/TextEllipsis.cjs.js.map +1 -1
  405. package/dist/components/Text/TextEllipsis/TextEllipsis.es.js.map +1 -1
  406. package/dist/components/Text/TextEmphasis/TextEmphasis.cjs.js.map +1 -1
  407. package/dist/components/Text/TextEmphasis/TextEmphasis.es.js.map +1 -1
  408. package/dist/components/ThemeProvider.cjs.js +1 -1
  409. package/dist/components/ThemeProvider.cjs.js.map +1 -1
  410. package/dist/components/ThemeProvider.es.js +4 -4
  411. package/dist/components/ThemeProvider.es.js.map +1 -1
  412. package/dist/components/Tombstone/Tombstone.cjs.js.map +1 -1
  413. package/dist/components/Tombstone/Tombstone.es.js.map +1 -1
  414. package/dist/components/Tooltip/ResponsiveTooltip.cjs.js +1 -1
  415. package/dist/components/Tooltip/ResponsiveTooltip.cjs.js.map +1 -1
  416. package/dist/components/Tooltip/ResponsiveTooltip.es.js +48 -46
  417. package/dist/components/Tooltip/ResponsiveTooltip.es.js.map +1 -1
  418. package/dist/components/Tooltip/Tooltip.cjs.js +1 -1
  419. package/dist/components/Tooltip/Tooltip.cjs.js.map +1 -1
  420. package/dist/components/Tooltip/Tooltip.es.js +57 -52
  421. package/dist/components/Tooltip/Tooltip.es.js.map +1 -1
  422. package/dist/components/Waveform/Waveform.cjs.js +1 -1
  423. package/dist/components/Waveform/Waveform.cjs.js.map +1 -1
  424. package/dist/components/Waveform/Waveform.es.js +1 -1
  425. package/dist/components/Waveform/Waveform.es.js.map +1 -1
  426. package/dist/components/Waveform/WaveformBar.cjs.js.map +1 -1
  427. package/dist/components/Waveform/WaveformBar.es.js.map +1 -1
  428. package/dist/constants.cjs.js +1 -1
  429. package/dist/constants.d.ts +5 -3
  430. package/dist/constants.es.js +2 -4
  431. package/dist/constants.es.js.map +1 -1
  432. package/dist/dark.d.ts +3 -3
  433. package/dist/design/colors.cjs.js.map +1 -1
  434. package/dist/design/colors.es.js.map +1 -1
  435. package/dist/design/darkTheme/colors.cjs.js +1 -1
  436. package/dist/design/darkTheme/colors.cjs.js.map +1 -1
  437. package/dist/design/darkTheme/colors.es.js +7 -7
  438. package/dist/design/darkTheme/colors.es.js.map +1 -1
  439. package/dist/design/darkTheme/stylesheet.cjs.js +1 -1
  440. package/dist/design/darkTheme/stylesheet.cjs.js.map +1 -1
  441. package/dist/design/darkTheme/stylesheet.es.js +17 -14
  442. package/dist/design/darkTheme/stylesheet.es.js.map +1 -1
  443. package/dist/design/generateStylesheet.cjs.js.map +1 -1
  444. package/dist/design/generateStylesheet.es.js.map +1 -1
  445. package/dist/design/lightTheme/colors.cjs.js.map +1 -1
  446. package/dist/design/lightTheme/colors.es.js +3 -3
  447. package/dist/design/lightTheme/stylesheet.cjs.js +1 -1
  448. package/dist/design/lightTheme/stylesheet.cjs.js.map +1 -1
  449. package/dist/design/lightTheme/stylesheet.es.js +17 -17
  450. package/dist/design/lightTheme/stylesheet.es.js.map +1 -1
  451. package/dist/hooks/useBreakpoint.cjs.js +1 -1
  452. package/dist/hooks/useBreakpoint.cjs.js.map +1 -1
  453. package/dist/hooks/useBreakpoint.es.js +13 -12
  454. package/dist/hooks/useBreakpoint.es.js.map +1 -1
  455. package/dist/hooks/useIsClosing.cjs.js +1 -1
  456. package/dist/hooks/useIsClosing.cjs.js.map +1 -1
  457. package/dist/hooks/useIsClosing.es.js.map +1 -1
  458. package/dist/hooks/useLockBodyScroll.cjs.js.map +1 -1
  459. package/dist/hooks/useLockBodyScroll.es.js.map +1 -1
  460. package/dist/hooks/useMergedRef.cjs.js +2 -0
  461. package/dist/hooks/useMergedRef.cjs.js.map +1 -0
  462. package/dist/hooks/useMergedRef.es.js +13 -0
  463. package/dist/hooks/useMergedRef.es.js.map +1 -0
  464. package/dist/hooks/usePalette.cjs.js +1 -1
  465. package/dist/hooks/usePalette.cjs.js.map +1 -1
  466. package/dist/hooks/usePalette.es.js.map +1 -1
  467. package/dist/hooks.cjs.js +1 -1
  468. package/dist/hooks.d.ts +12 -1
  469. package/dist/hooks.es.js +6 -4
  470. package/dist/hooks.es.js.map +1 -1
  471. package/dist/icons.d.ts +79 -74
  472. package/dist/index.cjs.js +1 -1
  473. package/dist/index.d.ts +131 -151
  474. package/dist/index.es.js +20 -20
  475. package/dist/light.d.ts +1 -1
  476. package/dist/node_modules/color2k/dist/index.exports.import.es.cjs.js.map +1 -1
  477. package/dist/node_modules/color2k/dist/index.exports.import.es.es.js.map +1 -1
  478. package/dist/node_modules/react/cjs/react-jsx-runtime.development.cjs.js +4 -12
  479. package/dist/node_modules/react/cjs/react-jsx-runtime.development.cjs.js.map +1 -1
  480. package/dist/node_modules/react/cjs/react-jsx-runtime.development.es.js +193 -557
  481. package/dist/node_modules/react/cjs/react-jsx-runtime.development.es.js.map +1 -1
  482. package/dist/node_modules/react/cjs/react-jsx-runtime.production.cjs.js +10 -0
  483. package/dist/node_modules/react/cjs/react-jsx-runtime.production.cjs.js.map +1 -0
  484. package/dist/node_modules/react/cjs/react-jsx-runtime.production.es.js +36 -0
  485. package/dist/node_modules/react/cjs/react-jsx-runtime.production.es.js.map +1 -0
  486. package/dist/node_modules/react/jsx-runtime.cjs.js +1 -1
  487. package/dist/node_modules/react/jsx-runtime.cjs.js.map +1 -1
  488. package/dist/node_modules/react/jsx-runtime.es.js +1 -1
  489. package/dist/node_modules/react/jsx-runtime.es.js.map +1 -1
  490. package/dist/style.css +1 -1
  491. package/dist/theme.d.ts +20 -4
  492. package/dist/utils/color2k.cjs.js.map +1 -1
  493. package/dist/utils/color2k.es.js +2 -2
  494. package/dist/utils/color2k.es.js.map +1 -1
  495. package/dist/utils/copy.cjs.js +1 -1
  496. package/dist/utils/copy.cjs.js.map +1 -1
  497. package/dist/utils/copy.es.js +12 -11
  498. package/dist/utils/copy.es.js.map +1 -1
  499. package/dist/utils/deepEqual.cjs.js.map +1 -1
  500. package/dist/utils/deepEqual.es.js.map +1 -1
  501. package/dist/utils/image.cjs.js +1 -1
  502. package/dist/utils/image.cjs.js.map +1 -1
  503. package/dist/utils/image.es.js +15 -14
  504. package/dist/utils/image.es.js.map +1 -1
  505. package/dist/utils/navigation.cjs.js.map +1 -1
  506. package/dist/utils/navigation.es.js.map +1 -1
  507. package/dist/utils/palette.cjs.js +1 -1
  508. package/dist/utils/palette.cjs.js.map +1 -1
  509. package/dist/utils/palette.es.js +40 -34
  510. package/dist/utils/palette.es.js.map +1 -1
  511. package/package.json +21 -28
  512. package/dist/_virtual/react-jsx-runtime.production.min.cjs.js.map +0 -1
  513. package/dist/_virtual/react-jsx-runtime.production.min.es.js +0 -5
  514. package/dist/_virtual/react-jsx-runtime.production.min.es.js.map +0 -1
  515. package/dist/components/Dialog/Dialog.cjs.js +0 -2
  516. package/dist/components/Dialog/Dialog.cjs.js.map +0 -1
  517. package/dist/components/Dialog/Dialog.es.js +0 -15
  518. package/dist/components/Dialog/Dialog.es.js.map +0 -1
  519. package/dist/constants/placement.cjs.js +0 -2
  520. package/dist/constants/placement.cjs.js.map +0 -1
  521. package/dist/constants/placement.es.js +0 -28
  522. package/dist/constants/placement.es.js.map +0 -1
  523. package/dist/node_modules/@react-aria/dialog/dist/useDialog.cjs.js +0 -2
  524. package/dist/node_modules/@react-aria/dialog/dist/useDialog.cjs.js.map +0 -1
  525. package/dist/node_modules/@react-aria/dialog/dist/useDialog.es.js +0 -44
  526. package/dist/node_modules/@react-aria/dialog/dist/useDialog.es.js.map +0 -1
  527. package/dist/node_modules/@react-aria/focus/dist/FocusScope.cjs.js +0 -2
  528. package/dist/node_modules/@react-aria/focus/dist/FocusScope.cjs.js.map +0 -1
  529. package/dist/node_modules/@react-aria/focus/dist/FocusScope.es.js +0 -88
  530. package/dist/node_modules/@react-aria/focus/dist/FocusScope.es.js.map +0 -1
  531. package/dist/node_modules/@react-aria/form/dist/useFormValidation.cjs.js +0 -2
  532. package/dist/node_modules/@react-aria/form/dist/useFormValidation.cjs.js.map +0 -1
  533. package/dist/node_modules/@react-aria/form/dist/useFormValidation.es.js +0 -78
  534. package/dist/node_modules/@react-aria/form/dist/useFormValidation.es.js.map +0 -1
  535. package/dist/node_modules/@react-aria/i18n/dist/context.cjs.js +0 -2
  536. package/dist/node_modules/@react-aria/i18n/dist/context.cjs.js.map +0 -1
  537. package/dist/node_modules/@react-aria/i18n/dist/context.es.js +0 -11
  538. package/dist/node_modules/@react-aria/i18n/dist/context.es.js.map +0 -1
  539. package/dist/node_modules/@react-aria/i18n/dist/useDefaultLocale.cjs.js +0 -2
  540. package/dist/node_modules/@react-aria/i18n/dist/useDefaultLocale.cjs.js.map +0 -1
  541. package/dist/node_modules/@react-aria/i18n/dist/useDefaultLocale.es.js +0 -30
  542. package/dist/node_modules/@react-aria/i18n/dist/useDefaultLocale.es.js.map +0 -1
  543. package/dist/node_modules/@react-aria/i18n/dist/utils.cjs.js +0 -2
  544. package/dist/node_modules/@react-aria/i18n/dist/utils.cjs.js.map +0 -1
  545. package/dist/node_modules/@react-aria/i18n/dist/utils.es.js +0 -45
  546. package/dist/node_modules/@react-aria/i18n/dist/utils.es.js.map +0 -1
  547. package/dist/node_modules/@react-aria/interactions/dist/context.cjs.js +0 -2
  548. package/dist/node_modules/@react-aria/interactions/dist/context.cjs.js.map +0 -1
  549. package/dist/node_modules/@react-aria/interactions/dist/context.es.js +0 -10
  550. package/dist/node_modules/@react-aria/interactions/dist/context.es.js.map +0 -1
  551. package/dist/node_modules/@react-aria/interactions/dist/createEventHandler.cjs.js +0 -2
  552. package/dist/node_modules/@react-aria/interactions/dist/createEventHandler.cjs.js.map +0 -1
  553. package/dist/node_modules/@react-aria/interactions/dist/createEventHandler.es.js +0 -29
  554. package/dist/node_modules/@react-aria/interactions/dist/createEventHandler.es.js.map +0 -1
  555. package/dist/node_modules/@react-aria/interactions/dist/focusSafely.cjs.js +0 -2
  556. package/dist/node_modules/@react-aria/interactions/dist/focusSafely.cjs.js.map +0 -1
  557. package/dist/node_modules/@react-aria/interactions/dist/focusSafely.es.js +0 -15
  558. package/dist/node_modules/@react-aria/interactions/dist/focusSafely.es.js.map +0 -1
  559. package/dist/node_modules/@react-aria/interactions/dist/textSelection.cjs.js +0 -2
  560. package/dist/node_modules/@react-aria/interactions/dist/textSelection.cjs.js.map +0 -1
  561. package/dist/node_modules/@react-aria/interactions/dist/textSelection.es.js +0 -35
  562. package/dist/node_modules/@react-aria/interactions/dist/textSelection.es.js.map +0 -1
  563. package/dist/node_modules/@react-aria/interactions/dist/useFocus.cjs.js +0 -2
  564. package/dist/node_modules/@react-aria/interactions/dist/useFocus.cjs.js.map +0 -1
  565. package/dist/node_modules/@react-aria/interactions/dist/useFocus.es.js +0 -30
  566. package/dist/node_modules/@react-aria/interactions/dist/useFocus.es.js.map +0 -1
  567. package/dist/node_modules/@react-aria/interactions/dist/useFocusVisible.cjs.js +0 -2
  568. package/dist/node_modules/@react-aria/interactions/dist/useFocusVisible.cjs.js.map +0 -1
  569. package/dist/node_modules/@react-aria/interactions/dist/useFocusVisible.es.js +0 -63
  570. package/dist/node_modules/@react-aria/interactions/dist/useFocusVisible.es.js.map +0 -1
  571. package/dist/node_modules/@react-aria/interactions/dist/useFocusWithin.cjs.js +0 -2
  572. package/dist/node_modules/@react-aria/interactions/dist/useFocusWithin.cjs.js.map +0 -1
  573. package/dist/node_modules/@react-aria/interactions/dist/useFocusWithin.es.js +0 -56
  574. package/dist/node_modules/@react-aria/interactions/dist/useFocusWithin.es.js.map +0 -1
  575. package/dist/node_modules/@react-aria/interactions/dist/useFocusable.cjs.js +0 -2
  576. package/dist/node_modules/@react-aria/interactions/dist/useFocusable.cjs.js.map +0 -1
  577. package/dist/node_modules/@react-aria/interactions/dist/useFocusable.es.js +0 -32
  578. package/dist/node_modules/@react-aria/interactions/dist/useFocusable.es.js.map +0 -1
  579. package/dist/node_modules/@react-aria/interactions/dist/useKeyboard.cjs.js +0 -2
  580. package/dist/node_modules/@react-aria/interactions/dist/useKeyboard.cjs.js.map +0 -1
  581. package/dist/node_modules/@react-aria/interactions/dist/useKeyboard.es.js +0 -13
  582. package/dist/node_modules/@react-aria/interactions/dist/useKeyboard.es.js.map +0 -1
  583. package/dist/node_modules/@react-aria/interactions/dist/usePress.cjs.js +0 -8
  584. package/dist/node_modules/@react-aria/interactions/dist/usePress.cjs.js.map +0 -1
  585. package/dist/node_modules/@react-aria/interactions/dist/usePress.es.js +0 -386
  586. package/dist/node_modules/@react-aria/interactions/dist/usePress.es.js.map +0 -1
  587. package/dist/node_modules/@react-aria/interactions/dist/utils.cjs.js +0 -2
  588. package/dist/node_modules/@react-aria/interactions/dist/utils.cjs.js.map +0 -1
  589. package/dist/node_modules/@react-aria/interactions/dist/utils.es.js +0 -92
  590. package/dist/node_modules/@react-aria/interactions/dist/utils.es.js.map +0 -1
  591. package/dist/node_modules/@react-aria/label/dist/useField.cjs.js +0 -2
  592. package/dist/node_modules/@react-aria/label/dist/useField.cjs.js.map +0 -1
  593. package/dist/node_modules/@react-aria/label/dist/useField.es.js +0 -36
  594. package/dist/node_modules/@react-aria/label/dist/useField.es.js.map +0 -1
  595. package/dist/node_modules/@react-aria/label/dist/useLabel.cjs.js +0 -2
  596. package/dist/node_modules/@react-aria/label/dist/useLabel.cjs.js.map +0 -1
  597. package/dist/node_modules/@react-aria/label/dist/useLabel.es.js +0 -23
  598. package/dist/node_modules/@react-aria/label/dist/useLabel.es.js.map +0 -1
  599. package/dist/node_modules/@react-aria/overlays/dist/Overlay.cjs.js +0 -2
  600. package/dist/node_modules/@react-aria/overlays/dist/Overlay.cjs.js.map +0 -1
  601. package/dist/node_modules/@react-aria/overlays/dist/Overlay.es.js +0 -16
  602. package/dist/node_modules/@react-aria/overlays/dist/Overlay.es.js.map +0 -1
  603. package/dist/node_modules/@react-aria/radio/dist/useRadio.cjs.js +0 -2
  604. package/dist/node_modules/@react-aria/radio/dist/useRadio.cjs.js.map +0 -1
  605. package/dist/node_modules/@react-aria/radio/dist/useRadio.es.js +0 -70
  606. package/dist/node_modules/@react-aria/radio/dist/useRadio.es.js.map +0 -1
  607. package/dist/node_modules/@react-aria/radio/dist/useRadioGroup.cjs.js +0 -2
  608. package/dist/node_modules/@react-aria/radio/dist/useRadioGroup.cjs.js.map +0 -1
  609. package/dist/node_modules/@react-aria/radio/dist/useRadioGroup.es.js +0 -80
  610. package/dist/node_modules/@react-aria/radio/dist/useRadioGroup.es.js.map +0 -1
  611. package/dist/node_modules/@react-aria/radio/dist/utils.cjs.js +0 -2
  612. package/dist/node_modules/@react-aria/radio/dist/utils.cjs.js.map +0 -1
  613. package/dist/node_modules/@react-aria/radio/dist/utils.es.js +0 -5
  614. package/dist/node_modules/@react-aria/radio/dist/utils.es.js.map +0 -1
  615. package/dist/node_modules/@react-aria/ssr/dist/SSRProvider.cjs.js +0 -2
  616. package/dist/node_modules/@react-aria/ssr/dist/SSRProvider.cjs.js.map +0 -1
  617. package/dist/node_modules/@react-aria/ssr/dist/SSRProvider.es.js +0 -19
  618. package/dist/node_modules/@react-aria/ssr/dist/SSRProvider.es.js.map +0 -1
  619. package/dist/node_modules/@react-aria/switch/dist/useSwitch.cjs.js +0 -2
  620. package/dist/node_modules/@react-aria/switch/dist/useSwitch.cjs.js.map +0 -1
  621. package/dist/node_modules/@react-aria/switch/dist/useSwitch.es.js +0 -20
  622. package/dist/node_modules/@react-aria/switch/dist/useSwitch.es.js.map +0 -1
  623. package/dist/node_modules/@react-aria/toggle/dist/useToggle.cjs.js +0 -2
  624. package/dist/node_modules/@react-aria/toggle/dist/useToggle.cjs.js.map +0 -1
  625. package/dist/node_modules/@react-aria/toggle/dist/useToggle.es.js +0 -60
  626. package/dist/node_modules/@react-aria/toggle/dist/useToggle.es.js.map +0 -1
  627. package/dist/node_modules/@react-aria/visually-hidden/dist/VisuallyHidden.cjs.js +0 -2
  628. package/dist/node_modules/@react-aria/visually-hidden/dist/VisuallyHidden.cjs.js.map +0 -1
  629. package/dist/node_modules/@react-aria/visually-hidden/dist/VisuallyHidden.es.js +0 -41
  630. package/dist/node_modules/@react-aria/visually-hidden/dist/VisuallyHidden.es.js.map +0 -1
  631. package/dist/node_modules/@react-stately/form/dist/useFormValidationState.cjs.js +0 -2
  632. package/dist/node_modules/@react-stately/form/dist/useFormValidationState.cjs.js.map +0 -1
  633. package/dist/node_modules/@react-stately/form/dist/useFormValidationState.es.js +0 -110
  634. package/dist/node_modules/@react-stately/form/dist/useFormValidationState.es.js.map +0 -1
  635. package/dist/node_modules/@react-stately/radio/dist/useRadioGroupState.cjs.js +0 -2
  636. package/dist/node_modules/@react-stately/radio/dist/useRadioGroupState.cjs.js.map +0 -1
  637. package/dist/node_modules/@react-stately/radio/dist/useRadioGroupState.es.js +0 -35
  638. package/dist/node_modules/@react-stately/radio/dist/useRadioGroupState.es.js.map +0 -1
  639. package/dist/node_modules/@react-stately/toggle/dist/useToggleState.cjs.js +0 -2
  640. package/dist/node_modules/@react-stately/toggle/dist/useToggleState.cjs.js.map +0 -1
  641. package/dist/node_modules/@react-stately/toggle/dist/useToggleState.es.js +0 -22
  642. package/dist/node_modules/@react-stately/toggle/dist/useToggleState.es.js.map +0 -1
  643. package/dist/node_modules/@react-stately/utils/dist/useControlledState.cjs.js +0 -2
  644. package/dist/node_modules/@react-stately/utils/dist/useControlledState.cjs.js.map +0 -1
  645. package/dist/node_modules/@react-stately/utils/dist/useControlledState.es.js +0 -31
  646. package/dist/node_modules/@react-stately/utils/dist/useControlledState.es.js.map +0 -1
  647. package/dist/node_modules/@swc/helpers/esm/_check_private_redeclaration.cjs.js +0 -2
  648. package/dist/node_modules/@swc/helpers/esm/_check_private_redeclaration.cjs.js.map +0 -1
  649. package/dist/node_modules/@swc/helpers/esm/_check_private_redeclaration.es.js +0 -9
  650. package/dist/node_modules/@swc/helpers/esm/_check_private_redeclaration.es.js.map +0 -1
  651. package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_get.cjs.js +0 -2
  652. package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_get.cjs.js.map +0 -1
  653. package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_get.es.js +0 -8
  654. package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_get.es.js.map +0 -1
  655. package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_set.cjs.js +0 -2
  656. package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_set.cjs.js.map +0 -1
  657. package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_set.es.js +0 -13
  658. package/dist/node_modules/@swc/helpers/esm/_class_apply_descriptor_set.es.js.map +0 -1
  659. package/dist/node_modules/@swc/helpers/esm/_class_extract_field_descriptor.cjs.js +0 -2
  660. package/dist/node_modules/@swc/helpers/esm/_class_extract_field_descriptor.cjs.js.map +0 -1
  661. package/dist/node_modules/@swc/helpers/esm/_class_extract_field_descriptor.es.js +0 -9
  662. package/dist/node_modules/@swc/helpers/esm/_class_extract_field_descriptor.es.js.map +0 -1
  663. package/dist/node_modules/@swc/helpers/esm/_class_private_field_get.cjs.js +0 -2
  664. package/dist/node_modules/@swc/helpers/esm/_class_private_field_get.cjs.js.map +0 -1
  665. package/dist/node_modules/@swc/helpers/esm/_class_private_field_get.es.js +0 -11
  666. package/dist/node_modules/@swc/helpers/esm/_class_private_field_get.es.js.map +0 -1
  667. package/dist/node_modules/@swc/helpers/esm/_class_private_field_init.cjs.js +0 -2
  668. package/dist/node_modules/@swc/helpers/esm/_class_private_field_init.cjs.js.map +0 -1
  669. package/dist/node_modules/@swc/helpers/esm/_class_private_field_init.es.js +0 -9
  670. package/dist/node_modules/@swc/helpers/esm/_class_private_field_init.es.js.map +0 -1
  671. package/dist/node_modules/@swc/helpers/esm/_class_private_field_set.cjs.js +0 -2
  672. package/dist/node_modules/@swc/helpers/esm/_class_private_field_set.cjs.js.map +0 -1
  673. package/dist/node_modules/@swc/helpers/esm/_class_private_field_set.es.js +0 -11
  674. package/dist/node_modules/@swc/helpers/esm/_class_private_field_set.es.js.map +0 -1
  675. package/dist/node_modules/react/cjs/react-jsx-runtime.production.min.cjs.js +0 -10
  676. package/dist/node_modules/react/cjs/react-jsx-runtime.production.min.cjs.js.map +0 -1
  677. package/dist/node_modules/react/cjs/react-jsx-runtime.production.min.es.js +0 -29
  678. package/dist/node_modules/react/cjs/react-jsx-runtime.production.min.es.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"copy.cjs.js","sources":["../../src/utils/copy.ts"],"sourcesContent":["export const copyTextToClipboard = async (\n text: string,\n onError?: (error: Error) => void\n): Promise<boolean> => {\n let copySuccess = false;\n if (navigator.clipboard) {\n try {\n await navigator.clipboard.writeText(text);\n copySuccess = true;\n } catch (error) {\n onError ? onError?.(error) : console.error(error);\n }\n } else {\n copySuccess = DEPRECATED_copyTextToClipboard(text);\n }\n if (!copySuccess) {\n onError ? onError?.(new Error(\"Failed to copy to clipboard\")) : console.error(\"Failed to copy to clipboard\");\n }\n return copySuccess;\n};\n\n/**\n * Fallback legacy function to copy text to clipboard for browsers that don't support navigator.clipboard.writeText\n * @reference https://github.com/sindresorhus/copy-text-to-clipboard/blob/main/index.js\n * @deprecated Use navigator.clipboard.writeText instead\n */\nconst DEPRECATED_copyTextToClipboard = (\n text,\n { target = document.body } = {}\n) => {\n if (typeof text !== \"string\") {\n throw new TypeError(\n `Expected parameter \\`text\\` to be a \\`string\\`, got \\`${typeof text}\\`.`\n );\n }\n\n const element = document.createElement(\"textarea\");\n const previouslyFocusedElement = document.activeElement;\n\n element.value = text;\n\n // Prevent keyboard from showing on mobile\n element.setAttribute(\"readonly\", \"\");\n\n element.style.contain = \"strict\";\n element.style.position = \"absolute\";\n element.style.left = \"-9999px\";\n element.style.fontSize = \"12pt\"; // Prevent zooming on iOS\n\n const selection = document.getSelection();\n const originalRange = selection.rangeCount > 0 && selection.getRangeAt(0);\n\n target.append(element);\n element.select();\n\n // Explicit selection workaround for iOS\n element.selectionStart = 0;\n element.selectionEnd = text.length;\n\n let isSuccess = false;\n try {\n isSuccess = document.execCommand(\"copy\");\n } catch {}\n\n element.remove();\n\n if (originalRange) {\n selection.removeAllRanges();\n selection.addRange(originalRange);\n }\n\n // Get the focus back on the previously focused element, if any\n if (previouslyFocusedElement instanceof HTMLElement) {\n previouslyFocusedElement.focus();\n }\n\n return isSuccess;\n};\n"],"names":["copyTextToClipboard","text","onError","copySuccess","error","DEPRECATED_copyTextToClipboard","target","element","previouslyFocusedElement","selection","originalRange","isSuccess"],"mappings":"gFAAa,MAAAA,EAAsB,MACjCC,EACAC,IACqB,CACrB,IAAIC,EAAc,GAClB,GAAI,UAAU,UACR,GAAA,CACI,MAAA,UAAU,UAAU,UAAUF,CAAI,EAC1BE,EAAA,SACPC,EAAO,CACdF,EAAUA,GAAA,MAAAA,EAAUE,GAAS,QAAQ,MAAMA,CAAK,CAClD,MAEAD,EAAcE,EAA+BJ,CAAI,EAEnD,OAAKE,IACOD,EAAAA,GAAA,MAAAA,EAAU,IAAI,MAAM,6BAA6B,GAAK,QAAQ,MAAM,6BAA6B,GAEtGC,CACT,EAOME,EAAiC,CACrCJ,EACA,CAAE,OAAAK,EAAS,SAAS,IAAS,EAAA,KAC1B,CACC,GAAA,OAAOL,GAAS,SAClB,MAAM,IAAI,UACR,yDAAyD,OAAOA,CAAI,KAAA,EAIlE,MAAAM,EAAU,SAAS,cAAc,UAAU,EAC3CC,EAA2B,SAAS,cAE1CD,EAAQ,MAAQN,EAGRM,EAAA,aAAa,WAAY,EAAE,EAEnCA,EAAQ,MAAM,QAAU,SACxBA,EAAQ,MAAM,SAAW,WACzBA,EAAQ,MAAM,KAAO,UACrBA,EAAQ,MAAM,SAAW,OAEnB,MAAAE,EAAY,SAAS,eACrBC,EAAgBD,EAAU,WAAa,GAAKA,EAAU,WAAW,CAAC,EAExEH,EAAO,OAAOC,CAAO,EACrBA,EAAQ,OAAO,EAGfA,EAAQ,eAAiB,EACzBA,EAAQ,aAAeN,EAAK,OAE5B,IAAIU,EAAY,GACZ,GAAA,CACUA,EAAA,SAAS,YAAY,MAAM,CAAA,MACjC,CAAC,CAET,OAAAJ,EAAQ,OAAO,EAEXG,IACFD,EAAU,gBAAgB,EAC1BA,EAAU,SAASC,CAAa,GAI9BF,aAAoC,aACtCA,EAAyB,MAAM,EAG1BG,CACT"}
1
+ {"version":3,"file":"copy.cjs.js","sources":["../../src/utils/copy.ts"],"sourcesContent":["export const copyTextToClipboard = async (\n text: string,\n onError?: (error: Error) => void\n): Promise<boolean> => {\n let copySuccess = false;\n if (navigator.clipboard) {\n try {\n await navigator.clipboard.writeText(text);\n copySuccess = true;\n } catch (error) {\n const err =\n error instanceof Error ? error : new Error(String(error));\n onError ? onError(err) : console.error(err);\n }\n } else {\n copySuccess = DEPRECATED_copyTextToClipboard(text);\n }\n if (!copySuccess) {\n onError ? onError?.(new Error(\"Failed to copy to clipboard\")) : console.error(\"Failed to copy to clipboard\");\n }\n return copySuccess;\n};\n\n/**\n * Fallback legacy function to copy text to clipboard for browsers that don't support navigator.clipboard.writeText\n * @reference https://github.com/sindresorhus/copy-text-to-clipboard/blob/main/index.js\n * @deprecated Use navigator.clipboard.writeText instead\n */\nconst DEPRECATED_copyTextToClipboard = (\n text: string,\n { target = document.body }: { target?: HTMLElement } = {},\n) => {\n if (typeof text !== \"string\") {\n throw new TypeError(\n `Expected parameter \\`text\\` to be a \\`string\\`, got \\`${typeof text}\\`.`\n );\n }\n\n const element = document.createElement(\"textarea\");\n const previouslyFocusedElement = document.activeElement;\n\n element.value = text;\n\n // Prevent keyboard from showing on mobile\n element.setAttribute(\"readonly\", \"\");\n\n element.style.contain = \"strict\";\n element.style.position = \"absolute\";\n element.style.left = \"-9999px\";\n element.style.fontSize = \"12pt\"; // Prevent zooming on iOS\n\n const selection = document.getSelection();\n const originalRange =\n selection && selection.rangeCount > 0 ? selection.getRangeAt(0) : null;\n\n target.append(element);\n element.select();\n\n // Explicit selection workaround for iOS\n element.selectionStart = 0;\n element.selectionEnd = text.length;\n\n let isSuccess = false;\n try {\n isSuccess = document.execCommand(\"copy\");\n } catch {}\n\n element.remove();\n\n if (originalRange && selection) {\n selection.removeAllRanges();\n selection.addRange(originalRange);\n }\n\n // Get the focus back on the previously focused element, if any\n if (previouslyFocusedElement instanceof HTMLElement) {\n previouslyFocusedElement.focus();\n }\n\n return isSuccess;\n};\n"],"names":["copyTextToClipboard","text","onError","copySuccess","error","err","DEPRECATED_copyTextToClipboard","target","element","previouslyFocusedElement","selection","originalRange","isSuccess"],"mappings":"gFAAO,MAAMA,EAAsB,MACjCC,EACAC,IACqB,CACrB,IAAIC,EAAc,GAClB,GAAI,UAAU,UACZ,GAAI,CACF,MAAM,UAAU,UAAU,UAAUF,CAAI,EACxCE,EAAc,EAChB,OAASC,EAAO,CACd,MAAMC,EACJD,aAAiB,MAAQA,EAAQ,IAAI,MAAM,OAAOA,CAAK,CAAC,EAC1DF,EAAUA,EAAQG,CAAG,EAAI,QAAQ,MAAMA,CAAG,CAC5C,MAEAF,EAAcG,EAA+BL,CAAI,EAEnD,OAAKE,IACHD,EAAUA,GAAA,MAAAA,EAAU,IAAI,MAAM,6BAA6B,GAAK,QAAQ,MAAM,6BAA6B,GAEtGC,CACT,EAOMG,EAAiC,CACrCL,EACA,CAAE,OAAAM,EAAS,SAAS,IAAA,EAAmC,KACpD,CACH,GAAI,OAAON,GAAS,SAClB,MAAM,IAAI,UACR,yDAAyD,OAAOA,CAAI,KAAA,EAIxE,MAAMO,EAAU,SAAS,cAAc,UAAU,EAC3CC,EAA2B,SAAS,cAE1CD,EAAQ,MAAQP,EAGhBO,EAAQ,aAAa,WAAY,EAAE,EAEnCA,EAAQ,MAAM,QAAU,SACxBA,EAAQ,MAAM,SAAW,WACzBA,EAAQ,MAAM,KAAO,UACrBA,EAAQ,MAAM,SAAW,OAEzB,MAAME,EAAY,SAAS,aAAA,EACrBC,EACJD,GAAaA,EAAU,WAAa,EAAIA,EAAU,WAAW,CAAC,EAAI,KAEpEH,EAAO,OAAOC,CAAO,EACrBA,EAAQ,OAAA,EAGRA,EAAQ,eAAiB,EACzBA,EAAQ,aAAeP,EAAK,OAE5B,IAAIW,EAAY,GAChB,GAAI,CACFA,EAAY,SAAS,YAAY,MAAM,CACzC,MAAQ,CAAC,CAET,OAAAJ,EAAQ,OAAA,EAEJG,GAAiBD,IACnBA,EAAU,gBAAA,EACVA,EAAU,SAASC,CAAa,GAI9BF,aAAoC,aACtCA,EAAyB,MAAA,EAGpBG,CACT"}
@@ -1,29 +1,30 @@
1
- const i = async (c, t) => {
1
+ const i = async (c, o) => {
2
2
  let e = !1;
3
3
  if (navigator.clipboard)
4
4
  try {
5
5
  await navigator.clipboard.writeText(c), e = !0;
6
- } catch (o) {
7
- t ? t == null || t(o) : console.error(o);
6
+ } catch (n) {
7
+ const t = n instanceof Error ? n : new Error(String(n));
8
+ o ? o(t) : console.error(t);
8
9
  }
9
10
  else
10
11
  e = s(c);
11
- return e || (t ? t == null || t(new Error("Failed to copy to clipboard")) : console.error("Failed to copy to clipboard")), e;
12
- }, s = (c, { target: t = document.body } = {}) => {
12
+ return e || (o ? o == null || o(new Error("Failed to copy to clipboard")) : console.error("Failed to copy to clipboard")), e;
13
+ }, s = (c, { target: o = document.body } = {}) => {
13
14
  if (typeof c != "string")
14
15
  throw new TypeError(
15
16
  `Expected parameter \`text\` to be a \`string\`, got \`${typeof c}\`.`
16
17
  );
17
- const e = document.createElement("textarea"), o = document.activeElement;
18
+ const e = document.createElement("textarea"), n = document.activeElement;
18
19
  e.value = c, e.setAttribute("readonly", ""), e.style.contain = "strict", e.style.position = "absolute", e.style.left = "-9999px", e.style.fontSize = "12pt";
19
- const a = document.getSelection(), l = a.rangeCount > 0 && a.getRangeAt(0);
20
- t.append(e), e.select(), e.selectionStart = 0, e.selectionEnd = c.length;
21
- let n = !1;
20
+ const t = document.getSelection(), a = t && t.rangeCount > 0 ? t.getRangeAt(0) : null;
21
+ o.append(e), e.select(), e.selectionStart = 0, e.selectionEnd = c.length;
22
+ let l = !1;
22
23
  try {
23
- n = document.execCommand("copy");
24
+ l = document.execCommand("copy");
24
25
  } catch {
25
26
  }
26
- return e.remove(), l && (a.removeAllRanges(), a.addRange(l)), o instanceof HTMLElement && o.focus(), n;
27
+ return e.remove(), a && t && (t.removeAllRanges(), t.addRange(a)), n instanceof HTMLElement && n.focus(), l;
27
28
  };
28
29
  export {
29
30
  i as copyTextToClipboard
@@ -1 +1 @@
1
- {"version":3,"file":"copy.es.js","sources":["../../src/utils/copy.ts"],"sourcesContent":["export const copyTextToClipboard = async (\n text: string,\n onError?: (error: Error) => void\n): Promise<boolean> => {\n let copySuccess = false;\n if (navigator.clipboard) {\n try {\n await navigator.clipboard.writeText(text);\n copySuccess = true;\n } catch (error) {\n onError ? onError?.(error) : console.error(error);\n }\n } else {\n copySuccess = DEPRECATED_copyTextToClipboard(text);\n }\n if (!copySuccess) {\n onError ? onError?.(new Error(\"Failed to copy to clipboard\")) : console.error(\"Failed to copy to clipboard\");\n }\n return copySuccess;\n};\n\n/**\n * Fallback legacy function to copy text to clipboard for browsers that don't support navigator.clipboard.writeText\n * @reference https://github.com/sindresorhus/copy-text-to-clipboard/blob/main/index.js\n * @deprecated Use navigator.clipboard.writeText instead\n */\nconst DEPRECATED_copyTextToClipboard = (\n text,\n { target = document.body } = {}\n) => {\n if (typeof text !== \"string\") {\n throw new TypeError(\n `Expected parameter \\`text\\` to be a \\`string\\`, got \\`${typeof text}\\`.`\n );\n }\n\n const element = document.createElement(\"textarea\");\n const previouslyFocusedElement = document.activeElement;\n\n element.value = text;\n\n // Prevent keyboard from showing on mobile\n element.setAttribute(\"readonly\", \"\");\n\n element.style.contain = \"strict\";\n element.style.position = \"absolute\";\n element.style.left = \"-9999px\";\n element.style.fontSize = \"12pt\"; // Prevent zooming on iOS\n\n const selection = document.getSelection();\n const originalRange = selection.rangeCount > 0 && selection.getRangeAt(0);\n\n target.append(element);\n element.select();\n\n // Explicit selection workaround for iOS\n element.selectionStart = 0;\n element.selectionEnd = text.length;\n\n let isSuccess = false;\n try {\n isSuccess = document.execCommand(\"copy\");\n } catch {}\n\n element.remove();\n\n if (originalRange) {\n selection.removeAllRanges();\n selection.addRange(originalRange);\n }\n\n // Get the focus back on the previously focused element, if any\n if (previouslyFocusedElement instanceof HTMLElement) {\n previouslyFocusedElement.focus();\n }\n\n return isSuccess;\n};\n"],"names":["copyTextToClipboard","text","onError","copySuccess","error","DEPRECATED_copyTextToClipboard","target","element","previouslyFocusedElement","selection","originalRange","isSuccess"],"mappings":"AAAa,MAAAA,IAAsB,OACjCC,GACAC,MACqB;AACrB,MAAIC,IAAc;AAClB,MAAI,UAAU;AACR,QAAA;AACI,YAAA,UAAU,UAAU,UAAUF,CAAI,GAC1BE,IAAA;AAAA,aACPC,GAAO;AACd,MAAAF,IAAUA,KAAA,QAAAA,EAAUE,KAAS,QAAQ,MAAMA,CAAK;AAAA,IAClD;AAAA;AAEA,IAAAD,IAAcE,EAA+BJ,CAAI;AAEnD,SAAKE,MACOD,IAAAA,KAAA,QAAAA,EAAU,IAAI,MAAM,6BAA6B,KAAK,QAAQ,MAAM,6BAA6B,IAEtGC;AACT,GAOME,IAAiC,CACrCJ,GACA,EAAE,QAAAK,IAAS,SAAS,KAAS,IAAA,OAC1B;AACC,MAAA,OAAOL,KAAS;AAClB,UAAM,IAAI;AAAA,MACR,yDAAyD,OAAOA,CAAI;AAAA,IAAA;AAIlE,QAAAM,IAAU,SAAS,cAAc,UAAU,GAC3CC,IAA2B,SAAS;AAE1C,EAAAD,EAAQ,QAAQN,GAGRM,EAAA,aAAa,YAAY,EAAE,GAEnCA,EAAQ,MAAM,UAAU,UACxBA,EAAQ,MAAM,WAAW,YACzBA,EAAQ,MAAM,OAAO,WACrBA,EAAQ,MAAM,WAAW;AAEnB,QAAAE,IAAY,SAAS,gBACrBC,IAAgBD,EAAU,aAAa,KAAKA,EAAU,WAAW,CAAC;AAExE,EAAAH,EAAO,OAAOC,CAAO,GACrBA,EAAQ,OAAO,GAGfA,EAAQ,iBAAiB,GACzBA,EAAQ,eAAeN,EAAK;AAE5B,MAAIU,IAAY;AACZ,MAAA;AACU,IAAAA,IAAA,SAAS,YAAY,MAAM;AAAA,EAAA,QACjC;AAAA,EAAC;AAET,SAAAJ,EAAQ,OAAO,GAEXG,MACFD,EAAU,gBAAgB,GAC1BA,EAAU,SAASC,CAAa,IAI9BF,aAAoC,eACtCA,EAAyB,MAAM,GAG1BG;AACT;"}
1
+ {"version":3,"file":"copy.es.js","sources":["../../src/utils/copy.ts"],"sourcesContent":["export const copyTextToClipboard = async (\n text: string,\n onError?: (error: Error) => void\n): Promise<boolean> => {\n let copySuccess = false;\n if (navigator.clipboard) {\n try {\n await navigator.clipboard.writeText(text);\n copySuccess = true;\n } catch (error) {\n const err =\n error instanceof Error ? error : new Error(String(error));\n onError ? onError(err) : console.error(err);\n }\n } else {\n copySuccess = DEPRECATED_copyTextToClipboard(text);\n }\n if (!copySuccess) {\n onError ? onError?.(new Error(\"Failed to copy to clipboard\")) : console.error(\"Failed to copy to clipboard\");\n }\n return copySuccess;\n};\n\n/**\n * Fallback legacy function to copy text to clipboard for browsers that don't support navigator.clipboard.writeText\n * @reference https://github.com/sindresorhus/copy-text-to-clipboard/blob/main/index.js\n * @deprecated Use navigator.clipboard.writeText instead\n */\nconst DEPRECATED_copyTextToClipboard = (\n text: string,\n { target = document.body }: { target?: HTMLElement } = {},\n) => {\n if (typeof text !== \"string\") {\n throw new TypeError(\n `Expected parameter \\`text\\` to be a \\`string\\`, got \\`${typeof text}\\`.`\n );\n }\n\n const element = document.createElement(\"textarea\");\n const previouslyFocusedElement = document.activeElement;\n\n element.value = text;\n\n // Prevent keyboard from showing on mobile\n element.setAttribute(\"readonly\", \"\");\n\n element.style.contain = \"strict\";\n element.style.position = \"absolute\";\n element.style.left = \"-9999px\";\n element.style.fontSize = \"12pt\"; // Prevent zooming on iOS\n\n const selection = document.getSelection();\n const originalRange =\n selection && selection.rangeCount > 0 ? selection.getRangeAt(0) : null;\n\n target.append(element);\n element.select();\n\n // Explicit selection workaround for iOS\n element.selectionStart = 0;\n element.selectionEnd = text.length;\n\n let isSuccess = false;\n try {\n isSuccess = document.execCommand(\"copy\");\n } catch {}\n\n element.remove();\n\n if (originalRange && selection) {\n selection.removeAllRanges();\n selection.addRange(originalRange);\n }\n\n // Get the focus back on the previously focused element, if any\n if (previouslyFocusedElement instanceof HTMLElement) {\n previouslyFocusedElement.focus();\n }\n\n return isSuccess;\n};\n"],"names":["copyTextToClipboard","text","onError","copySuccess","error","err","DEPRECATED_copyTextToClipboard","target","element","previouslyFocusedElement","selection","originalRange","isSuccess"],"mappings":"AAAO,MAAMA,IAAsB,OACjCC,GACAC,MACqB;AACrB,MAAIC,IAAc;AAClB,MAAI,UAAU;AACZ,QAAI;AACF,YAAM,UAAU,UAAU,UAAUF,CAAI,GACxCE,IAAc;AAAA,IAChB,SAASC,GAAO;AACd,YAAMC,IACJD,aAAiB,QAAQA,IAAQ,IAAI,MAAM,OAAOA,CAAK,CAAC;AAC1D,MAAAF,IAAUA,EAAQG,CAAG,IAAI,QAAQ,MAAMA,CAAG;AAAA,IAC5C;AAAA;AAEA,IAAAF,IAAcG,EAA+BL,CAAI;AAEnD,SAAKE,MACHD,IAAUA,KAAA,QAAAA,EAAU,IAAI,MAAM,6BAA6B,KAAK,QAAQ,MAAM,6BAA6B,IAEtGC;AACT,GAOMG,IAAiC,CACrCL,GACA,EAAE,QAAAM,IAAS,SAAS,KAAA,IAAmC,OACpD;AACH,MAAI,OAAON,KAAS;AAClB,UAAM,IAAI;AAAA,MACR,yDAAyD,OAAOA,CAAI;AAAA,IAAA;AAIxE,QAAMO,IAAU,SAAS,cAAc,UAAU,GAC3CC,IAA2B,SAAS;AAE1C,EAAAD,EAAQ,QAAQP,GAGhBO,EAAQ,aAAa,YAAY,EAAE,GAEnCA,EAAQ,MAAM,UAAU,UACxBA,EAAQ,MAAM,WAAW,YACzBA,EAAQ,MAAM,OAAO,WACrBA,EAAQ,MAAM,WAAW;AAEzB,QAAME,IAAY,SAAS,aAAA,GACrBC,IACJD,KAAaA,EAAU,aAAa,IAAIA,EAAU,WAAW,CAAC,IAAI;AAEpE,EAAAH,EAAO,OAAOC,CAAO,GACrBA,EAAQ,OAAA,GAGRA,EAAQ,iBAAiB,GACzBA,EAAQ,eAAeP,EAAK;AAE5B,MAAIW,IAAY;AAChB,MAAI;AACF,IAAAA,IAAY,SAAS,YAAY,MAAM;AAAA,EACzC,QAAQ;AAAA,EAAC;AAET,SAAAJ,EAAQ,OAAA,GAEJG,KAAiBD,MACnBA,EAAU,gBAAA,GACVA,EAAU,SAASC,CAAa,IAI9BF,aAAoC,eACtCA,EAAyB,MAAA,GAGpBG;AACT;"}
@@ -1 +1 @@
1
- {"version":3,"file":"deepEqual.cjs.js","sources":["../../src/utils/deepEqual.ts"],"sourcesContent":["/**\n * Deep equality comparison for UI data.\n *\n * Optimized for typical frontend state: primitives, objects, arrays, dates.\n * Functions are compared by reference (same ref = equal).\n *\n * @note Not supported: Set, Map, TypedArrays, circular references.\n * @reference https://github.com/lukeed/dequal/blob/master/src/index.js\n */\nexport function deepEqual(a: unknown, b: unknown): boolean {\n // Same reference\n if (a === b) return true;\n\n // Both NaN\n if (Number.isNaN(a) && Number.isNaN(b)) return true;\n\n // Different types\n if (typeof a !== typeof b) return false;\n\n // Non-objects (primitives)\n if (typeof a !== \"object\") return a === b;\n\n // Different constructors\n const ctor = (a as object).constructor;\n if (ctor !== (b as object).constructor) return false;\n\n // Date\n if (ctor === Date) {\n return (a as Date).getTime() === (b as Date).getTime();\n }\n\n // RegExp\n if (ctor === RegExp) {\n return (a as RegExp).toString() === (b as RegExp).toString();\n }\n\n // Array\n if (ctor === Array) {\n const arrA = a as unknown[];\n const arrB = b as unknown[];\n if (arrA.length !== arrB.length) return false;\n for (let i = 0; i < arrA.length; i++) {\n if (!deepEqual(arrA[i], arrB[i])) return false;\n }\n return true;\n }\n\n // Plain objects\n const keysA = Object.keys(a as object);\n const keysB = Object.keys(b as object);\n if (keysA.length !== keysB.length) return false;\n\n for (const key of keysA) {\n if (\n !Object.prototype.hasOwnProperty.call(b, key) ||\n !deepEqual(\n (a as Record<string, unknown>)[key],\n (b as Record<string, unknown>)[key],\n )\n ) {\n return false;\n }\n }\n\n return true;\n}\n"],"names":["deepEqual","a","b","ctor","arrA","arrB","i","keysA","keysB","key"],"mappings":"gFASgB,SAAAA,EAAUC,EAAYC,EAAqB,CAKrD,GAHAD,IAAMC,GAGN,OAAO,MAAMD,CAAC,GAAK,OAAO,MAAMC,CAAC,EAAU,MAAA,GAG/C,GAAI,OAAOD,GAAM,OAAOC,EAAU,MAAA,GAGlC,GAAI,OAAOD,GAAM,SAAU,OAAOA,IAAMC,EAGxC,MAAMC,EAAQF,EAAa,YACvB,GAAAE,IAAUD,EAAa,YAAoB,MAAA,GAG/C,GAAIC,IAAS,KACX,OAAQF,EAAW,QAAA,IAAeC,EAAW,QAAQ,EAIvD,GAAIC,IAAS,OACX,OAAQF,EAAa,SAAA,IAAgBC,EAAa,SAAS,EAI7D,GAAIC,IAAS,MAAO,CAClB,MAAMC,EAAOH,EACPI,EAAOH,EACb,GAAIE,EAAK,SAAWC,EAAK,OAAe,MAAA,GACxC,QAASC,EAAI,EAAGA,EAAIF,EAAK,OAAQE,IAC3B,GAAA,CAACN,EAAUI,EAAKE,CAAC,EAAGD,EAAKC,CAAC,CAAC,EAAU,MAAA,GAEpC,MAAA,EACT,CAGM,MAAAC,EAAQ,OAAO,KAAKN,CAAW,EAC/BO,EAAQ,OAAO,KAAKN,CAAW,EACrC,GAAIK,EAAM,SAAWC,EAAM,OAAe,MAAA,GAE1C,UAAWC,KAAOF,EAEd,GAAA,CAAC,OAAO,UAAU,eAAe,KAAKL,EAAGO,CAAG,GAC5C,CAACT,EACEC,EAA8BQ,CAAG,EACjCP,EAA8BO,CAAG,CAAA,EAG7B,MAAA,GAIJ,MAAA,EACT"}
1
+ {"version":3,"file":"deepEqual.cjs.js","sources":["../../src/utils/deepEqual.ts"],"sourcesContent":["/**\n * Deep equality comparison for UI data.\n *\n * Optimized for typical frontend state: primitives, objects, arrays, dates.\n * Functions are compared by reference (same ref = equal).\n *\n * @note Not supported: Set, Map, TypedArrays, circular references.\n * @reference https://github.com/lukeed/dequal/blob/master/src/index.js\n */\nexport function deepEqual(a: unknown, b: unknown): boolean {\n // Same reference\n if (a === b) return true;\n\n // Both NaN\n if (Number.isNaN(a) && Number.isNaN(b)) return true;\n\n // Different types\n if (typeof a !== typeof b) return false;\n\n // Non-objects (primitives)\n if (typeof a !== \"object\") return a === b;\n\n // Different constructors\n const ctor = (a as object).constructor;\n if (ctor !== (b as object).constructor) return false;\n\n // Date\n if (ctor === Date) {\n return (a as Date).getTime() === (b as Date).getTime();\n }\n\n // RegExp\n if (ctor === RegExp) {\n return (a as RegExp).toString() === (b as RegExp).toString();\n }\n\n // Array\n if (ctor === Array) {\n const arrA = a as unknown[];\n const arrB = b as unknown[];\n if (arrA.length !== arrB.length) return false;\n for (let i = 0; i < arrA.length; i++) {\n if (!deepEqual(arrA[i], arrB[i])) return false;\n }\n return true;\n }\n\n // Plain objects\n const keysA = Object.keys(a as object);\n const keysB = Object.keys(b as object);\n if (keysA.length !== keysB.length) return false;\n\n for (const key of keysA) {\n if (\n !Object.prototype.hasOwnProperty.call(b, key) ||\n !deepEqual(\n (a as Record<string, unknown>)[key],\n (b as Record<string, unknown>)[key],\n )\n ) {\n return false;\n }\n }\n\n return true;\n}\n"],"names":["deepEqual","a","b","ctor","arrA","arrB","i","keysA","keysB","key"],"mappings":"gFASO,SAASA,EAAUC,EAAYC,EAAqB,CAKzD,GAHID,IAAMC,GAGN,OAAO,MAAMD,CAAC,GAAK,OAAO,MAAMC,CAAC,EAAG,MAAO,GAG/C,GAAI,OAAOD,GAAM,OAAOC,EAAG,MAAO,GAGlC,GAAI,OAAOD,GAAM,SAAU,OAAOA,IAAMC,EAGxC,MAAMC,EAAQF,EAAa,YAC3B,GAAIE,IAAUD,EAAa,YAAa,MAAO,GAG/C,GAAIC,IAAS,KACX,OAAQF,EAAW,YAAeC,EAAW,QAAA,EAI/C,GAAIC,IAAS,OACX,OAAQF,EAAa,aAAgBC,EAAa,SAAA,EAIpD,GAAIC,IAAS,MAAO,CAClB,MAAMC,EAAOH,EACPI,EAAOH,EACb,GAAIE,EAAK,SAAWC,EAAK,OAAQ,MAAO,GACxC,QAASC,EAAI,EAAGA,EAAIF,EAAK,OAAQE,IAC/B,GAAI,CAACN,EAAUI,EAAKE,CAAC,EAAGD,EAAKC,CAAC,CAAC,EAAG,MAAO,GAE3C,MAAO,EACT,CAGA,MAAMC,EAAQ,OAAO,KAAKN,CAAW,EAC/BO,EAAQ,OAAO,KAAKN,CAAW,EACrC,GAAIK,EAAM,SAAWC,EAAM,OAAQ,MAAO,GAE1C,UAAWC,KAAOF,EAChB,GACE,CAAC,OAAO,UAAU,eAAe,KAAKL,EAAGO,CAAG,GAC5C,CAACT,EACEC,EAA8BQ,CAAG,EACjCP,EAA8BO,CAAG,CAAA,EAGpC,MAAO,GAIX,MAAO,EACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"deepEqual.es.js","sources":["../../src/utils/deepEqual.ts"],"sourcesContent":["/**\n * Deep equality comparison for UI data.\n *\n * Optimized for typical frontend state: primitives, objects, arrays, dates.\n * Functions are compared by reference (same ref = equal).\n *\n * @note Not supported: Set, Map, TypedArrays, circular references.\n * @reference https://github.com/lukeed/dequal/blob/master/src/index.js\n */\nexport function deepEqual(a: unknown, b: unknown): boolean {\n // Same reference\n if (a === b) return true;\n\n // Both NaN\n if (Number.isNaN(a) && Number.isNaN(b)) return true;\n\n // Different types\n if (typeof a !== typeof b) return false;\n\n // Non-objects (primitives)\n if (typeof a !== \"object\") return a === b;\n\n // Different constructors\n const ctor = (a as object).constructor;\n if (ctor !== (b as object).constructor) return false;\n\n // Date\n if (ctor === Date) {\n return (a as Date).getTime() === (b as Date).getTime();\n }\n\n // RegExp\n if (ctor === RegExp) {\n return (a as RegExp).toString() === (b as RegExp).toString();\n }\n\n // Array\n if (ctor === Array) {\n const arrA = a as unknown[];\n const arrB = b as unknown[];\n if (arrA.length !== arrB.length) return false;\n for (let i = 0; i < arrA.length; i++) {\n if (!deepEqual(arrA[i], arrB[i])) return false;\n }\n return true;\n }\n\n // Plain objects\n const keysA = Object.keys(a as object);\n const keysB = Object.keys(b as object);\n if (keysA.length !== keysB.length) return false;\n\n for (const key of keysA) {\n if (\n !Object.prototype.hasOwnProperty.call(b, key) ||\n !deepEqual(\n (a as Record<string, unknown>)[key],\n (b as Record<string, unknown>)[key],\n )\n ) {\n return false;\n }\n }\n\n return true;\n}\n"],"names":["deepEqual","a","b","ctor","arrA","arrB","i","keysA","keysB","key"],"mappings":"AASgB,SAAAA,EAAUC,GAAYC,GAAqB;AAKrD,MAHAD,MAAMC,KAGN,OAAO,MAAMD,CAAC,KAAK,OAAO,MAAMC,CAAC,EAAU,QAAA;AAG/C,MAAI,OAAOD,KAAM,OAAOC,EAAU,QAAA;AAGlC,MAAI,OAAOD,KAAM,SAAU,QAAOA,MAAMC;AAGxC,QAAMC,IAAQF,EAAa;AACvB,MAAAE,MAAUD,EAAa,YAAoB,QAAA;AAG/C,MAAIC,MAAS;AACX,WAAQF,EAAW,QAAA,MAAeC,EAAW,QAAQ;AAIvD,MAAIC,MAAS;AACX,WAAQF,EAAa,SAAA,MAAgBC,EAAa,SAAS;AAI7D,MAAIC,MAAS,OAAO;AAClB,UAAMC,IAAOH,GACPI,IAAOH;AACb,QAAIE,EAAK,WAAWC,EAAK,OAAe,QAAA;AACxC,aAASC,IAAI,GAAGA,IAAIF,EAAK,QAAQE;AAC3B,UAAA,CAACN,EAAUI,EAAKE,CAAC,GAAGD,EAAKC,CAAC,CAAC,EAAU,QAAA;AAEpC,WAAA;AAAA,EACT;AAGM,QAAAC,IAAQ,OAAO,KAAKN,CAAW,GAC/BO,IAAQ,OAAO,KAAKN,CAAW;AACrC,MAAIK,EAAM,WAAWC,EAAM,OAAe,QAAA;AAE1C,aAAWC,KAAOF;AAEd,QAAA,CAAC,OAAO,UAAU,eAAe,KAAKL,GAAGO,CAAG,KAC5C,CAACT;AAAA,MACEC,EAA8BQ,CAAG;AAAA,MACjCP,EAA8BO,CAAG;AAAA,IAAA;AAG7B,aAAA;AAIJ,SAAA;AACT;"}
1
+ {"version":3,"file":"deepEqual.es.js","sources":["../../src/utils/deepEqual.ts"],"sourcesContent":["/**\n * Deep equality comparison for UI data.\n *\n * Optimized for typical frontend state: primitives, objects, arrays, dates.\n * Functions are compared by reference (same ref = equal).\n *\n * @note Not supported: Set, Map, TypedArrays, circular references.\n * @reference https://github.com/lukeed/dequal/blob/master/src/index.js\n */\nexport function deepEqual(a: unknown, b: unknown): boolean {\n // Same reference\n if (a === b) return true;\n\n // Both NaN\n if (Number.isNaN(a) && Number.isNaN(b)) return true;\n\n // Different types\n if (typeof a !== typeof b) return false;\n\n // Non-objects (primitives)\n if (typeof a !== \"object\") return a === b;\n\n // Different constructors\n const ctor = (a as object).constructor;\n if (ctor !== (b as object).constructor) return false;\n\n // Date\n if (ctor === Date) {\n return (a as Date).getTime() === (b as Date).getTime();\n }\n\n // RegExp\n if (ctor === RegExp) {\n return (a as RegExp).toString() === (b as RegExp).toString();\n }\n\n // Array\n if (ctor === Array) {\n const arrA = a as unknown[];\n const arrB = b as unknown[];\n if (arrA.length !== arrB.length) return false;\n for (let i = 0; i < arrA.length; i++) {\n if (!deepEqual(arrA[i], arrB[i])) return false;\n }\n return true;\n }\n\n // Plain objects\n const keysA = Object.keys(a as object);\n const keysB = Object.keys(b as object);\n if (keysA.length !== keysB.length) return false;\n\n for (const key of keysA) {\n if (\n !Object.prototype.hasOwnProperty.call(b, key) ||\n !deepEqual(\n (a as Record<string, unknown>)[key],\n (b as Record<string, unknown>)[key],\n )\n ) {\n return false;\n }\n }\n\n return true;\n}\n"],"names":["deepEqual","a","b","ctor","arrA","arrB","i","keysA","keysB","key"],"mappings":"AASO,SAASA,EAAUC,GAAYC,GAAqB;AAKzD,MAHID,MAAMC,KAGN,OAAO,MAAMD,CAAC,KAAK,OAAO,MAAMC,CAAC,EAAG,QAAO;AAG/C,MAAI,OAAOD,KAAM,OAAOC,EAAG,QAAO;AAGlC,MAAI,OAAOD,KAAM,SAAU,QAAOA,MAAMC;AAGxC,QAAMC,IAAQF,EAAa;AAC3B,MAAIE,MAAUD,EAAa,YAAa,QAAO;AAG/C,MAAIC,MAAS;AACX,WAAQF,EAAW,cAAeC,EAAW,QAAA;AAI/C,MAAIC,MAAS;AACX,WAAQF,EAAa,eAAgBC,EAAa,SAAA;AAIpD,MAAIC,MAAS,OAAO;AAClB,UAAMC,IAAOH,GACPI,IAAOH;AACb,QAAIE,EAAK,WAAWC,EAAK,OAAQ,QAAO;AACxC,aAASC,IAAI,GAAGA,IAAIF,EAAK,QAAQE;AAC/B,UAAI,CAACN,EAAUI,EAAKE,CAAC,GAAGD,EAAKC,CAAC,CAAC,EAAG,QAAO;AAE3C,WAAO;AAAA,EACT;AAGA,QAAMC,IAAQ,OAAO,KAAKN,CAAW,GAC/BO,IAAQ,OAAO,KAAKN,CAAW;AACrC,MAAIK,EAAM,WAAWC,EAAM,OAAQ,QAAO;AAE1C,aAAWC,KAAOF;AAChB,QACE,CAAC,OAAO,UAAU,eAAe,KAAKL,GAAGO,CAAG,KAC5C,CAACT;AAAA,MACEC,EAA8BQ,CAAG;AAAA,MACjCP,EAA8BO,CAAG;AAAA,IAAA;AAGpC,aAAO;AAIX,SAAO;AACT;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("colorthief");function i(o){return o instanceof HTMLImageElement?Promise.resolve(c(o)):a(o)}function c(o){try{return new t().getColor(o)}catch{return[255,255,255]}}function a(o){return new Promise((r,n)=>{const e=document.createElement("img");e.crossOrigin="anonymous",e.onload=()=>{try{const l=new t().getColor(e);r(l)}catch{r([255,255,255])}},e.onerror=()=>n(new Error("Failed to load image")),e.src=o})}exports.getDominantColor=i;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("colorthief");function i(o){return o instanceof HTMLImageElement?Promise.resolve(a(o)):l(o)}function a(o){try{const r=e.getColorSync(o);return r?r.array():[255,255,255]}catch{return[255,255,255]}}function l(o){return new Promise((r,c)=>{const n=document.createElement("img");n.crossOrigin="anonymous",n.onload=()=>{try{const t=e.getColorSync(n);r(t?t.array():[255,255,255])}catch{r([255,255,255])}},n.onerror=()=>c(new Error("Failed to load image")),n.src=o})}exports.getDominantColor=i;
2
2
  //# sourceMappingURL=image.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"image.cjs.js","sources":["../../src/utils/image.ts"],"sourcesContent":["import ColorThief from \"colorthief\";\nimport type { RGBArray } from \"../design/types\";\n\n/**\n * Gets the dominant color of an image. Avoids issues with low contrast colors.\n * @reference https://github.com/lokesh/color-thief/issues/40\n * @param image - The image to get the dominant color from.\n * @returns A Promise that resolves to an RGB array.\n */\nexport function getDominantColor(image: HTMLImageElement): Promise<RGBArray>;\nexport function getDominantColor(image: string): Promise<RGBArray>;\nexport function getDominantColor(\n image: HTMLImageElement | string\n): Promise<RGBArray> {\n if (image instanceof HTMLImageElement) {\n return Promise.resolve(getDominantColorFromImage(image));\n } else {\n return getDominantColorFromImageUrl(image);\n }\n}\n\nfunction getDominantColorFromImage(image: HTMLImageElement): RGBArray {\n try {\n const colorThief = new ColorThief();\n const baseColor = colorThief.getColor(image);\n return baseColor;\n } catch {\n return [255, 255, 255];\n }\n}\n\nfunction getDominantColorFromImageUrl(url: string): Promise<RGBArray> {\n return new Promise((resolve, reject) => {\n const imgElement = document.createElement(\"img\");\n imgElement.crossOrigin = \"anonymous\";\n\n imgElement.onload = () => {\n try {\n const baseColor = new ColorThief().getColor(imgElement);\n resolve(baseColor);\n } catch {\n resolve([255, 255, 255]);\n }\n };\n\n imgElement.onerror = () => reject(new Error(\"Failed to load image\"));\n imgElement.src = url;\n });\n}\n"],"names":["getDominantColor","image","getDominantColorFromImage","getDominantColorFromImageUrl","ColorThief","url","resolve","reject","imgElement","baseColor"],"mappings":"8GAWO,SAASA,EACdC,EACmB,CACnB,OAAIA,aAAiB,iBACZ,QAAQ,QAAQC,EAA0BD,CAAK,CAAC,EAEhDE,EAA6BF,CAAK,CAE7C,CAEA,SAASC,EAA0BD,EAAmC,CAChE,GAAA,CAGK,OAFY,IAAIG,IACM,SAASH,CAAK,CACpC,MACD,CACC,MAAA,CAAC,IAAK,IAAK,GAAG,CACvB,CACF,CAEA,SAASE,EAA6BE,EAAgC,CACpE,OAAO,IAAI,QAAQ,CAACC,EAASC,IAAW,CAChC,MAAAC,EAAa,SAAS,cAAc,KAAK,EAC/CA,EAAW,YAAc,YAEzBA,EAAW,OAAS,IAAM,CACpB,GAAA,CACF,MAAMC,EAAY,IAAIL,EAAW,EAAE,SAASI,CAAU,EACtDF,EAAQG,CAAS,CAAA,MACX,CACNH,EAAQ,CAAC,IAAK,IAAK,GAAG,CAAC,CACzB,CAAA,EAGFE,EAAW,QAAU,IAAMD,EAAO,IAAI,MAAM,sBAAsB,CAAC,EACnEC,EAAW,IAAMH,CAAA,CAClB,CACH"}
1
+ {"version":3,"file":"image.cjs.js","sources":["../../src/utils/image.ts"],"sourcesContent":["import { getColorSync } from \"colorthief\";\n\nimport type { RGBArray } from \"../design/types\";\n\n/**\n * Gets the dominant color of an image. Avoids issues with low contrast colors.\n * @reference https://github.com/lokesh/color-thief/issues/40\n * @param image - The image to get the dominant color from.\n * @returns A Promise that resolves to an RGB array.\n */\nexport function getDominantColor(image: HTMLImageElement): Promise<RGBArray>;\nexport function getDominantColor(image: string): Promise<RGBArray>;\nexport function getDominantColor(\n image: HTMLImageElement | string\n): Promise<RGBArray> {\n if (image instanceof HTMLImageElement) {\n return Promise.resolve(getDominantColorFromImage(image));\n }\n return getDominantColorFromImageUrl(image);\n}\n\nfunction getDominantColorFromImage(image: HTMLImageElement): RGBArray {\n try {\n const color = getColorSync(image);\n if (!color) return [255, 255, 255];\n return color.array();\n } catch {\n return [255, 255, 255];\n }\n}\n\nfunction getDominantColorFromImageUrl(url: string): Promise<RGBArray> {\n return new Promise((resolve, reject) => {\n const imgElement = document.createElement(\"img\");\n imgElement.crossOrigin = \"anonymous\";\n\n imgElement.onload = () => {\n try {\n const color = getColorSync(imgElement);\n resolve(color ? color.array() : [255, 255, 255]);\n } catch {\n resolve([255, 255, 255]);\n }\n };\n\n imgElement.onerror = () => reject(new Error(\"Failed to load image\"));\n imgElement.src = url;\n });\n}\n"],"names":["getDominantColor","image","getDominantColorFromImage","getDominantColorFromImageUrl","color","getColorSync","url","resolve","reject","imgElement"],"mappings":"8GAYO,SAASA,EACdC,EACmB,CACnB,OAAIA,aAAiB,iBACZ,QAAQ,QAAQC,EAA0BD,CAAK,CAAC,EAElDE,EAA6BF,CAAK,CAC3C,CAEA,SAASC,EAA0BD,EAAmC,CACpE,GAAI,CACF,MAAMG,EAAQC,EAAAA,aAAaJ,CAAK,EAChC,OAAKG,EACEA,EAAM,MAAA,EADM,CAAC,IAAK,IAAK,GAAG,CAEnC,MAAQ,CACN,MAAO,CAAC,IAAK,IAAK,GAAG,CACvB,CACF,CAEA,SAASD,EAA6BG,EAAgC,CACpE,OAAO,IAAI,QAAQ,CAACC,EAASC,IAAW,CACtC,MAAMC,EAAa,SAAS,cAAc,KAAK,EAC/CA,EAAW,YAAc,YAEzBA,EAAW,OAAS,IAAM,CACxB,GAAI,CACF,MAAML,EAAQC,EAAAA,aAAaI,CAAU,EACrCF,EAAQH,EAAQA,EAAM,MAAA,EAAU,CAAC,IAAK,IAAK,GAAG,CAAC,CACjD,MAAQ,CACNG,EAAQ,CAAC,IAAK,IAAK,GAAG,CAAC,CACzB,CACF,EAEAE,EAAW,QAAU,IAAMD,EAAO,IAAI,MAAM,sBAAsB,CAAC,EACnEC,EAAW,IAAMH,CACnB,CAAC,CACH"}
@@ -1,28 +1,29 @@
1
- import t from "colorthief";
2
- function a(o) {
3
- return o instanceof HTMLImageElement ? Promise.resolve(c(o)) : i(o);
1
+ import { getColorSync as e } from "colorthief";
2
+ function l(r) {
3
+ return r instanceof HTMLImageElement ? Promise.resolve(m(r)) : a(r);
4
4
  }
5
- function c(o) {
5
+ function m(r) {
6
6
  try {
7
- return new t().getColor(o);
7
+ const o = e(r);
8
+ return o ? o.array() : [255, 255, 255];
8
9
  } catch {
9
10
  return [255, 255, 255];
10
11
  }
11
12
  }
12
- function i(o) {
13
- return new Promise((e, n) => {
14
- const r = document.createElement("img");
15
- r.crossOrigin = "anonymous", r.onload = () => {
13
+ function a(r) {
14
+ return new Promise((o, c) => {
15
+ const n = document.createElement("img");
16
+ n.crossOrigin = "anonymous", n.onload = () => {
16
17
  try {
17
- const l = new t().getColor(r);
18
- e(l);
18
+ const t = e(n);
19
+ o(t ? t.array() : [255, 255, 255]);
19
20
  } catch {
20
- e([255, 255, 255]);
21
+ o([255, 255, 255]);
21
22
  }
22
- }, r.onerror = () => n(new Error("Failed to load image")), r.src = o;
23
+ }, n.onerror = () => c(new Error("Failed to load image")), n.src = r;
23
24
  });
24
25
  }
25
26
  export {
26
- a as getDominantColor
27
+ l as getDominantColor
27
28
  };
28
29
  //# sourceMappingURL=image.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"image.es.js","sources":["../../src/utils/image.ts"],"sourcesContent":["import ColorThief from \"colorthief\";\nimport type { RGBArray } from \"../design/types\";\n\n/**\n * Gets the dominant color of an image. Avoids issues with low contrast colors.\n * @reference https://github.com/lokesh/color-thief/issues/40\n * @param image - The image to get the dominant color from.\n * @returns A Promise that resolves to an RGB array.\n */\nexport function getDominantColor(image: HTMLImageElement): Promise<RGBArray>;\nexport function getDominantColor(image: string): Promise<RGBArray>;\nexport function getDominantColor(\n image: HTMLImageElement | string\n): Promise<RGBArray> {\n if (image instanceof HTMLImageElement) {\n return Promise.resolve(getDominantColorFromImage(image));\n } else {\n return getDominantColorFromImageUrl(image);\n }\n}\n\nfunction getDominantColorFromImage(image: HTMLImageElement): RGBArray {\n try {\n const colorThief = new ColorThief();\n const baseColor = colorThief.getColor(image);\n return baseColor;\n } catch {\n return [255, 255, 255];\n }\n}\n\nfunction getDominantColorFromImageUrl(url: string): Promise<RGBArray> {\n return new Promise((resolve, reject) => {\n const imgElement = document.createElement(\"img\");\n imgElement.crossOrigin = \"anonymous\";\n\n imgElement.onload = () => {\n try {\n const baseColor = new ColorThief().getColor(imgElement);\n resolve(baseColor);\n } catch {\n resolve([255, 255, 255]);\n }\n };\n\n imgElement.onerror = () => reject(new Error(\"Failed to load image\"));\n imgElement.src = url;\n });\n}\n"],"names":["getDominantColor","image","getDominantColorFromImage","getDominantColorFromImageUrl","ColorThief","url","resolve","reject","imgElement","baseColor"],"mappings":";AAWO,SAASA,EACdC,GACmB;AACnB,SAAIA,aAAiB,mBACZ,QAAQ,QAAQC,EAA0BD,CAAK,CAAC,IAEhDE,EAA6BF,CAAK;AAE7C;AAEA,SAASC,EAA0BD,GAAmC;AAChE,MAAA;AAGK,WAFY,IAAIG,IACM,SAASH,CAAK;AAAA,EACpC,QACD;AACC,WAAA,CAAC,KAAK,KAAK,GAAG;AAAA,EACvB;AACF;AAEA,SAASE,EAA6BE,GAAgC;AACpE,SAAO,IAAI,QAAQ,CAACC,GAASC,MAAW;AAChC,UAAAC,IAAa,SAAS,cAAc,KAAK;AAC/C,IAAAA,EAAW,cAAc,aAEzBA,EAAW,SAAS,MAAM;AACpB,UAAA;AACF,cAAMC,IAAY,IAAIL,EAAW,EAAE,SAASI,CAAU;AACtD,QAAAF,EAAQG,CAAS;AAAA,MAAA,QACX;AACN,QAAAH,EAAQ,CAAC,KAAK,KAAK,GAAG,CAAC;AAAA,MACzB;AAAA,IAAA,GAGFE,EAAW,UAAU,MAAMD,EAAO,IAAI,MAAM,sBAAsB,CAAC,GACnEC,EAAW,MAAMH;AAAA,EAAA,CAClB;AACH;"}
1
+ {"version":3,"file":"image.es.js","sources":["../../src/utils/image.ts"],"sourcesContent":["import { getColorSync } from \"colorthief\";\n\nimport type { RGBArray } from \"../design/types\";\n\n/**\n * Gets the dominant color of an image. Avoids issues with low contrast colors.\n * @reference https://github.com/lokesh/color-thief/issues/40\n * @param image - The image to get the dominant color from.\n * @returns A Promise that resolves to an RGB array.\n */\nexport function getDominantColor(image: HTMLImageElement): Promise<RGBArray>;\nexport function getDominantColor(image: string): Promise<RGBArray>;\nexport function getDominantColor(\n image: HTMLImageElement | string\n): Promise<RGBArray> {\n if (image instanceof HTMLImageElement) {\n return Promise.resolve(getDominantColorFromImage(image));\n }\n return getDominantColorFromImageUrl(image);\n}\n\nfunction getDominantColorFromImage(image: HTMLImageElement): RGBArray {\n try {\n const color = getColorSync(image);\n if (!color) return [255, 255, 255];\n return color.array();\n } catch {\n return [255, 255, 255];\n }\n}\n\nfunction getDominantColorFromImageUrl(url: string): Promise<RGBArray> {\n return new Promise((resolve, reject) => {\n const imgElement = document.createElement(\"img\");\n imgElement.crossOrigin = \"anonymous\";\n\n imgElement.onload = () => {\n try {\n const color = getColorSync(imgElement);\n resolve(color ? color.array() : [255, 255, 255]);\n } catch {\n resolve([255, 255, 255]);\n }\n };\n\n imgElement.onerror = () => reject(new Error(\"Failed to load image\"));\n imgElement.src = url;\n });\n}\n"],"names":["getDominantColor","image","getDominantColorFromImage","getDominantColorFromImageUrl","color","getColorSync","url","resolve","reject","imgElement"],"mappings":";AAYO,SAASA,EACdC,GACmB;AACnB,SAAIA,aAAiB,mBACZ,QAAQ,QAAQC,EAA0BD,CAAK,CAAC,IAElDE,EAA6BF,CAAK;AAC3C;AAEA,SAASC,EAA0BD,GAAmC;AACpE,MAAI;AACF,UAAMG,IAAQC,EAAaJ,CAAK;AAChC,WAAKG,IACEA,EAAM,MAAA,IADM,CAAC,KAAK,KAAK,GAAG;AAAA,EAEnC,QAAQ;AACN,WAAO,CAAC,KAAK,KAAK,GAAG;AAAA,EACvB;AACF;AAEA,SAASD,EAA6BG,GAAgC;AACpE,SAAO,IAAI,QAAQ,CAACC,GAASC,MAAW;AACtC,UAAMC,IAAa,SAAS,cAAc,KAAK;AAC/C,IAAAA,EAAW,cAAc,aAEzBA,EAAW,SAAS,MAAM;AACxB,UAAI;AACF,cAAML,IAAQC,EAAaI,CAAU;AACrC,QAAAF,EAAQH,IAAQA,EAAM,MAAA,IAAU,CAAC,KAAK,KAAK,GAAG,CAAC;AAAA,MACjD,QAAQ;AACN,QAAAG,EAAQ,CAAC,KAAK,KAAK,GAAG,CAAC;AAAA,MACzB;AAAA,IACF,GAEAE,EAAW,UAAU,MAAMD,EAAO,IAAI,MAAM,sBAAsB,CAAC,GACnEC,EAAW,MAAMH;AAAA,EACnB,CAAC;AACH;"}
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.cjs.js","sources":["../../src/utils/navigation.ts"],"sourcesContent":["/**\n * [isUrlExternal] - determine if passed absolute url is external to the current domain.\n */\nexport const isUrlExternal = (url: string) => {\n return url.startsWith(\"http\");\n};\n\n/**\n * Handles internal navigation clicks by preventing default browser behavior and\n * programmatically updating the URL and history state.\n *\n * @param e - The click event from the anchor element\n * @param to - The destination path to navigate to\n *\n * @remarks\n * - Converts relative paths to absolute by prepending \"/\" if needed\n * - Updates browser history using pushState and dispatches a popstate event\n */\nexport const handleInternalNavigation = (\n e: React.MouseEvent<HTMLAnchorElement>,\n to: string\n) => {\n // Don't handle navigation if modifier keys are pressed\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) {\n return;\n }\n\n // Don't handle middle clicks or right clicks\n if (e.button && e.button !== 0) {\n return;\n }\n\n e.preventDefault();\n\n // Handle relative paths\n const resolvedPath = to.startsWith(\"/\") ? to : `/${to}`;\n window.history.pushState({}, \"\", resolvedPath);\n window.dispatchEvent(new PopStateEvent(\"popstate\"));\n};\n"],"names":["isUrlExternal","url","handleInternalNavigation","e","to","resolvedPath"],"mappings":"gFAGa,MAAAA,EAAiBC,GACrBA,EAAI,WAAW,MAAM,EAcjBC,EAA2B,CACtCC,EACAC,IACG,CAOH,GALID,EAAE,SAAWA,EAAE,QAAUA,EAAE,SAAWA,EAAE,UAKxCA,EAAE,QAAUA,EAAE,SAAW,EAC3B,OAGFA,EAAE,eAAe,EAGjB,MAAME,EAAeD,EAAG,WAAW,GAAG,EAAIA,EAAK,IAAIA,CAAE,GACrD,OAAO,QAAQ,UAAU,CAAC,EAAG,GAAIC,CAAY,EAC7C,OAAO,cAAc,IAAI,cAAc,UAAU,CAAC,CACpD"}
1
+ {"version":3,"file":"navigation.cjs.js","sources":["../../src/utils/navigation.ts"],"sourcesContent":["/**\n * [isUrlExternal] - determine if passed absolute url is external to the current domain.\n */\nexport const isUrlExternal = (url: string) => {\n return url.startsWith(\"http\");\n};\n\n/**\n * Handles internal navigation clicks by preventing default browser behavior and\n * programmatically updating the URL and history state.\n *\n * @param e - The click event from the anchor element\n * @param to - The destination path to navigate to\n *\n * @remarks\n * - Converts relative paths to absolute by prepending \"/\" if needed\n * - Updates browser history using pushState and dispatches a popstate event\n */\nexport const handleInternalNavigation = (\n e: React.MouseEvent<HTMLAnchorElement>,\n to: string\n) => {\n // Don't handle navigation if modifier keys are pressed\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) {\n return;\n }\n\n // Don't handle middle clicks or right clicks\n if (e.button && e.button !== 0) {\n return;\n }\n\n e.preventDefault();\n\n // Handle relative paths\n const resolvedPath = to.startsWith(\"/\") ? to : `/${to}`;\n window.history.pushState({}, \"\", resolvedPath);\n window.dispatchEvent(new PopStateEvent(\"popstate\"));\n};\n"],"names":["isUrlExternal","url","handleInternalNavigation","e","to","resolvedPath"],"mappings":"gFAGO,MAAMA,EAAiBC,GACrBA,EAAI,WAAW,MAAM,EAcjBC,EAA2B,CACtCC,EACAC,IACG,CAOH,GALID,EAAE,SAAWA,EAAE,QAAUA,EAAE,SAAWA,EAAE,UAKxCA,EAAE,QAAUA,EAAE,SAAW,EAC3B,OAGFA,EAAE,eAAA,EAGF,MAAME,EAAeD,EAAG,WAAW,GAAG,EAAIA,EAAK,IAAIA,CAAE,GACrD,OAAO,QAAQ,UAAU,CAAA,EAAI,GAAIC,CAAY,EAC7C,OAAO,cAAc,IAAI,cAAc,UAAU,CAAC,CACpD"}
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.es.js","sources":["../../src/utils/navigation.ts"],"sourcesContent":["/**\n * [isUrlExternal] - determine if passed absolute url is external to the current domain.\n */\nexport const isUrlExternal = (url: string) => {\n return url.startsWith(\"http\");\n};\n\n/**\n * Handles internal navigation clicks by preventing default browser behavior and\n * programmatically updating the URL and history state.\n *\n * @param e - The click event from the anchor element\n * @param to - The destination path to navigate to\n *\n * @remarks\n * - Converts relative paths to absolute by prepending \"/\" if needed\n * - Updates browser history using pushState and dispatches a popstate event\n */\nexport const handleInternalNavigation = (\n e: React.MouseEvent<HTMLAnchorElement>,\n to: string\n) => {\n // Don't handle navigation if modifier keys are pressed\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) {\n return;\n }\n\n // Don't handle middle clicks or right clicks\n if (e.button && e.button !== 0) {\n return;\n }\n\n e.preventDefault();\n\n // Handle relative paths\n const resolvedPath = to.startsWith(\"/\") ? to : `/${to}`;\n window.history.pushState({}, \"\", resolvedPath);\n window.dispatchEvent(new PopStateEvent(\"popstate\"));\n};\n"],"names":["isUrlExternal","url","handleInternalNavigation","e","to","resolvedPath"],"mappings":"AAGa,MAAAA,IAAgB,CAACC,MACrBA,EAAI,WAAW,MAAM,GAcjBC,IAA2B,CACtCC,GACAC,MACG;AAOH,MALID,EAAE,WAAWA,EAAE,UAAUA,EAAE,WAAWA,EAAE,YAKxCA,EAAE,UAAUA,EAAE,WAAW;AAC3B;AAGF,EAAAA,EAAE,eAAe;AAGjB,QAAME,IAAeD,EAAG,WAAW,GAAG,IAAIA,IAAK,IAAIA,CAAE;AACrD,SAAO,QAAQ,UAAU,CAAC,GAAG,IAAIC,CAAY,GAC7C,OAAO,cAAc,IAAI,cAAc,UAAU,CAAC;AACpD;"}
1
+ {"version":3,"file":"navigation.es.js","sources":["../../src/utils/navigation.ts"],"sourcesContent":["/**\n * [isUrlExternal] - determine if passed absolute url is external to the current domain.\n */\nexport const isUrlExternal = (url: string) => {\n return url.startsWith(\"http\");\n};\n\n/**\n * Handles internal navigation clicks by preventing default browser behavior and\n * programmatically updating the URL and history state.\n *\n * @param e - The click event from the anchor element\n * @param to - The destination path to navigate to\n *\n * @remarks\n * - Converts relative paths to absolute by prepending \"/\" if needed\n * - Updates browser history using pushState and dispatches a popstate event\n */\nexport const handleInternalNavigation = (\n e: React.MouseEvent<HTMLAnchorElement>,\n to: string\n) => {\n // Don't handle navigation if modifier keys are pressed\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) {\n return;\n }\n\n // Don't handle middle clicks or right clicks\n if (e.button && e.button !== 0) {\n return;\n }\n\n e.preventDefault();\n\n // Handle relative paths\n const resolvedPath = to.startsWith(\"/\") ? to : `/${to}`;\n window.history.pushState({}, \"\", resolvedPath);\n window.dispatchEvent(new PopStateEvent(\"popstate\"));\n};\n"],"names":["isUrlExternal","url","handleInternalNavigation","e","to","resolvedPath"],"mappings":"AAGO,MAAMA,IAAgB,CAACC,MACrBA,EAAI,WAAW,MAAM,GAcjBC,IAA2B,CACtCC,GACAC,MACG;AAOH,MALID,EAAE,WAAWA,EAAE,UAAUA,EAAE,WAAWA,EAAE,YAKxCA,EAAE,UAAUA,EAAE,WAAW;AAC3B;AAGF,EAAAA,EAAE,eAAA;AAGF,QAAME,IAAeD,EAAG,WAAW,GAAG,IAAIA,IAAK,IAAIA,CAAE;AACrD,SAAO,QAAQ,UAAU,CAAA,GAAI,IAAIC,CAAY,GAC7C,OAAO,cAAc,IAAI,cAAc,UAAU,CAAC;AACpD;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../node_modules/color2k/dist/index.exports.import.es.cjs.js"),s=require("./color2k.cjs.js"),G=require("../design/lightTheme/colors.cjs.js"),R=require("../design/darkTheme/colors.cjs.js"),g=i=>{const r=s.arrayToRgbString(i),e=t.getScale("#FFFFFF",r,"#000000"),n=Array.from({length:12},(A,I)=>{const d=e(I/11);return s.desaturate(d,.0085)}),m=n.map(A=>s.saturate(_(A),.005)),L=t.toRgba(s.saturate(t.adjustHue(r,180),1)),o=t.getScale("#FFFFFF",L,"#000000"),c=Array.from({length:12},(A,I)=>{const d=o(I/11);return s.desaturate(d,.1)}),u=c.map(A=>s.desaturate(_(A),.22)),S=D(s.saturate(m[5],.115)),E=s.desaturate(u[4],.02);return{BASE_COLOR:s.arrayToRgbString(i),BRAND:{PRIMARY:S,PRIMARY_LIGHT:a(S,.25,{min:.6,max:.8}),PRIMARY_SUPER_LIGHT:a(S,.15,{min:.8,max:.9}),SECONDARY:E,SECONDARY_LIGHT:a(E,.25,{min:.6,max:.8}),SECONDARY_SUPER_LIGHT:a(E,.15,{min:.8,max:.9})},PRIMARY:{SUPER_DARK:a(l(n[9]),-.6,{min:0,max:.02}),DARK:a(l(n[8]),-.4,{min:.01,max:.02}),MEDIUM:a(m[7],-.2,{min:0,max:.11}),MEDIUM_LIGHT:a(s.desaturate(m[6],.1),.08),LIGHT:a(s.saturate(m[5],.1),.16),LIGHTEST:a(s.saturate(m[3],.2),.12,{min:.5,max:.9}),SUPER_LIGHT:a(m[1],.02,{min:.76,max:.92}),WHITE:a(m[1],.11,{min:.9,max:.98})},SECONDARY:{SUPER_DARK:a(l(c[9]),-.6,{min:0,max:.02}),DARK:a(l(c[8]),-.4,{min:.01,max:.02}),MEDIUM:a(u[7],-.2,{min:0,max:.11}),MEDIUM_LIGHT:a(u[6],.1),LIGHT:a(s.saturate(u[5],.1),.16),LIGHTEST:a(s.saturate(u[3],.2),.12,{min:.5,max:.9}),SUPER_LIGHT:a(u[1],.02,{min:.76,max:.92}),WHITE:a(u[1],.11,{min:.9,max:.98})},GRAYSCALE:{SUPER_DARK:R.DARK_GRAYSCALE.SUPER_DARK,DARK:R.DARK_GRAYSCALE.DARK,MEDIUM:R.DARK_GRAYSCALE.MEDIUM,MEDIUM_LIGHT:R.DARK_GRAYSCALE.MEDIUM_LIGHT,LIGHT:R.DARK_GRAYSCALE.LIGHT,LIGHTEST:R.DARK_GRAYSCALE.LIGHTEST,SUPER_LIGHT:R.DARK_GRAYSCALE.SUPER_LIGHT,WHITE:R.DARK_GRAYSCALE.WHITE}}},a=(i,r,e={min:.03,max:.97})=>{let n=i,m=t.getLuminance(n);if(e.min<0&&(e.min=0),e.max>1&&(e.max=1),e.min>=e.max)throw new Error("Invalid range: min must be less than max");if(r>0){const o=e.max-m;if(o<=0)return t.toRgba(n);const c=r*(o/(1-m));n=t.lighten(n,c)}else if(r<0){const o=m-e.min;if(o<=0)return t.toRgba(n);const c=r*(o/m);n=t.darken(n,Math.abs(c))}const L=t.getLuminance(n);return(L>e.max||L<e.min)&&(n=T(n,e)),t.toRgba(n)},T=(i,r)=>{let e=i,n=t.getLuminance(e);for(;n>r.max;)e=t.darken(e,.05),n=t.getLuminance(e);for(;n<r.min;)e=t.lighten(e,.05),n=t.getLuminance(e);return t.toRgba(e)},l=i=>{for(;t.hasBadContrast(i,"readable",G.LIGHT_GRAYSCALE.DARK);)i=t.lighten(i,.01);return t.toRgba(i)},D=i=>{for(;t.hasBadContrast(G.LIGHT_GRAYSCALE.SUPER_LIGHT,"readable",i);)i=t.darken(i,.01);return t.toRgba(i)},_=i=>{let r=i,e=t.getLuminance(t.toRgba(r)),n=0;const m=6;for(;e<.16&&n<m;)n++,r=t.lighten(r,.1),e=t.getLuminance(t.toRgba(r));for(;e>.6&&n<m;)n++,r=t.darken(r,.1),e=t.getLuminance(t.toRgba(r));return t.toRgba(r)};exports.generatePalette=g;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../node_modules/color2k/dist/index.exports.import.es.cjs.js"),s=require("./color2k.cjs.js"),g=require("../design/lightTheme/colors.cjs.js"),R=require("../design/darkTheme/colors.cjs.js"),D=i=>{const r=s.arrayToRgbString(i),e=t.getScale("#FFFFFF",r,"#000000"),n=Array.from({length:12},(L,I)=>{const d=e(I/11);return s.desaturate(d,.0085)}),m=n.map(L=>s.saturate(G(L),.005)),l=t.toRgba(s.saturate(t.adjustHue(r,180),1)),o=t.getScale("#FFFFFF",l,"#000000"),c=Array.from({length:12},(L,I)=>{const d=o(I/11);return s.desaturate(d,.1)}),u=c.map(L=>s.desaturate(G(L),.22)),S=_(s.saturate(m[5],.115)),E=_(s.desaturate(u[5],.102));return{BASE_COLOR:s.arrayToRgbString(i),BRAND:{PRIMARY:S,PRIMARY_LIGHT:A(a(S,.08,{min:.55,max:.8})),PRIMARY_SUPER_LIGHT:a(S,.15,{min:.8,max:.89}),SECONDARY:E,SECONDARY_LIGHT:a(E,.08,{min:.55,max:.8}),SECONDARY_SUPER_LIGHT:A(a(E,.15,{min:.8,max:.89}))},PRIMARY:{SUPER_DARK:a(A(n[9]),-.6,{min:0,max:.02}),DARK:a(A(n[8]),-.4,{min:.01,max:.02}),MEDIUM:a(m[7],-.2,{min:0,max:.11}),MEDIUM_LIGHT:a(s.desaturate(m[6],.1),.08),LIGHT:a(s.saturate(m[5],.1),.16),LIGHTEST:a(s.saturate(m[3],.2),.12,{min:.5,max:.9}),SUPER_LIGHT:a(m[1],.02,{min:.76,max:.92}),WHITE:a(m[1],.11,{min:.9,max:.98})},SECONDARY:{SUPER_DARK:a(A(c[9]),-.6,{min:0,max:.02}),DARK:a(A(c[8]),-.4,{min:.01,max:.02}),MEDIUM:a(u[7],-.2,{min:0,max:.11}),MEDIUM_LIGHT:a(u[6],.1),LIGHT:a(s.saturate(u[5],.1),.16),LIGHTEST:a(s.saturate(u[3],.2),.12,{min:.5,max:.9}),SUPER_LIGHT:a(u[1],.02,{min:.76,max:.92}),WHITE:a(u[1],.11,{min:.9,max:.98})},GRAYSCALE:{SUPER_DARK:R.DARK_GRAYSCALE.SUPER_DARK,DARK:R.DARK_GRAYSCALE.DARK,MEDIUM:R.DARK_GRAYSCALE.MEDIUM,MEDIUM_LIGHT:R.DARK_GRAYSCALE.MEDIUM_LIGHT,LIGHT:R.DARK_GRAYSCALE.LIGHT,LIGHTEST:R.DARK_GRAYSCALE.LIGHTEST,SUPER_LIGHT:R.DARK_GRAYSCALE.SUPER_LIGHT,WHITE:R.DARK_GRAYSCALE.WHITE}}},a=(i,r,e={min:.03,max:.97})=>{let n=i,m=t.getLuminance(n);if(e.min<0&&(e.min=0),e.max>1&&(e.max=1),e.min>=e.max)throw new Error("Invalid range: min must be less than max");if(r>0){const o=e.max-m;if(o<=0)return t.toRgba(n);const c=r*(o/(1-m));n=t.lighten(n,c)}else if(r<0){const o=m-e.min;if(o<=0)return t.toRgba(n);const c=r*(o/m);n=t.darken(n,Math.abs(c))}const l=t.getLuminance(n);return(l>e.max||l<e.min)&&(n=T(n,e)),t.toRgba(n)},T=(i,r)=>{let e=i,n=t.getLuminance(e);for(;n>r.max;)e=t.darken(e,.05),n=t.getLuminance(e);for(;n<r.min;)e=t.lighten(e,.05),n=t.getLuminance(e);return t.toRgba(e)},A=i=>{for(;t.hasBadContrast(i,"readable",g.LIGHT_GRAYSCALE.DARK);)i=t.lighten(i,.01);return t.toRgba(i)},_=i=>{for(;t.hasBadContrast(g.LIGHT_GRAYSCALE.SUPER_LIGHT,"readable",i);)i=t.darken(i,.01);return t.toRgba(i)},G=i=>{let r=i,e=t.getLuminance(t.toRgba(r)),n=0;const m=6;for(;e<.16&&n<m;)n++,r=t.lighten(r,.1),e=t.getLuminance(t.toRgba(r));for(;e>.6&&n<m;)n++,r=t.darken(r,.1),e=t.getLuminance(t.toRgba(r));return t.toRgba(r)};exports.generatePalette=D;
2
2
  //# sourceMappingURL=palette.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"palette.cjs.js","sources":["../../src/utils/palette.ts"],"sourcesContent":["import {\n adjustHue,\n darken,\n getLuminance,\n getScale,\n hasBadContrast,\n lighten,\n toRgba,\n} from \"color2k\";\nimport { ProtonPalette, RGBArray } from \"../design/types\";\nimport { arrayToRgbString, desaturate, saturate } from \"./color2k\";\nimport { LIGHT_GRAYSCALE } from \"../design/lightTheme/colors\";\nimport { DARK_GRAYSCALE } from \"../design/darkTheme/colors\";\n\n/**\n * Generates a complete color palette based on a primary color input.\n * The palette includes primary and secondary color scales with varying shades.\n *\n * @param primaryColor - The base RGB color array to generate the palette from\n * @returns A Palette object containing:\n * - BRAND colors (primary, light primary, and secondary)\n * - PRIMARY scale (7 shades from super dark to super light)\n * - SECONDARY scale (7 shades from super dark to super light)\n *\n * The function:\n * 1. Creates a 12-color scale from white to the primary color to black\n * 2. Generates a complementary secondary color by shifting the hue 180 degrees\n * 3. Creates another 12-color scale for the secondary color\n * 4. Maps specific positions from these scales to create the final palette structure\n */\nexport const generatePalette = (baseColor: RGBArray): ProtonPalette => {\n const primaryRgba = arrayToRgbString(baseColor);\n\n const primaryScaleFunc = getScale(\"#FFFFFF\", primaryRgba, \"#000000\");\n const primaryScale = Array.from({ length: 12 }, (_, i) => {\n const color = primaryScaleFunc(i / 11);\n return desaturate(color, 0.0085);\n });\n\n const adjustedPrimaryScale = primaryScale.map((color) =>\n saturate(adjustBrightnessForLuminance(color), 0.005)\n );\n\n const secondaryColor = toRgba(saturate(adjustHue(primaryRgba, 180), 1));\n\n const secondaryScaleFunc = getScale(\"#FFFFFF\", secondaryColor, \"#000000\");\n const secondaryScale = Array.from({ length: 12 }, (_, i) => {\n const color = secondaryScaleFunc(i / 11);\n return desaturate(color, 0.1);\n });\n\n const adjustedSecondaryScale = secondaryScale.map((color) =>\n desaturate(adjustBrightnessForLuminance(color), 0.22)\n );\n\n const brandPrimary = darkenForContrast(\n saturate(adjustedPrimaryScale[5], 0.115)\n );\n const brandSecondary = desaturate(adjustedSecondaryScale[4], 0.02);\n\n return {\n BASE_COLOR: arrayToRgbString(baseColor),\n BRAND: {\n PRIMARY: brandPrimary,\n PRIMARY_LIGHT: lightenWithinRange(brandPrimary, 0.25, {\n min: 0.6,\n max: 0.8,\n }),\n PRIMARY_SUPER_LIGHT: lightenWithinRange(brandPrimary, 0.15, {\n min: 0.8,\n max: 0.9,\n }),\n SECONDARY: brandSecondary,\n SECONDARY_LIGHT: lightenWithinRange(brandSecondary, 0.25, {\n min: 0.6,\n max: 0.8,\n }),\n SECONDARY_SUPER_LIGHT: lightenWithinRange(brandSecondary, 0.15, {\n min: 0.8,\n max: 0.9,\n }),\n },\n PRIMARY: {\n //backgrounds\n SUPER_DARK: lightenWithinRange(\n lightenForContrast(primaryScale[9]),\n -0.6,\n {\n min: 0.0,\n max: 0.02,\n }\n ),\n DARK: lightenWithinRange(lightenForContrast(primaryScale[8]), -0.4, {\n min: 0.01,\n max: 0.02,\n }),\n //interactive components\n MEDIUM: lightenWithinRange(adjustedPrimaryScale[7], -0.2, {\n min: 0.0,\n max: 0.11,\n }),\n //borders and seperators\n MEDIUM_LIGHT: lightenWithinRange(\n desaturate(adjustedPrimaryScale[6], 0.1),\n 0.08\n ),\n //solid colors\n LIGHT: lightenWithinRange(saturate(adjustedPrimaryScale[5], 0.1), 0.16),\n //accessible text\n LIGHTEST: lightenWithinRange(\n saturate(adjustedPrimaryScale[3], 0.2),\n 0.12,\n {\n min: 0.5,\n max: 0.9,\n }\n ),\n SUPER_LIGHT: lightenWithinRange(adjustedPrimaryScale[1], 0.02, {\n min: 0.76,\n max: 0.92,\n }),\n WHITE: lightenWithinRange(adjustedPrimaryScale[1], 0.11, {\n min: 0.9,\n max: 0.98,\n }),\n },\n SECONDARY: {\n //backgrounds\n SUPER_DARK: lightenWithinRange(\n lightenForContrast(secondaryScale[9]),\n -0.6,\n {\n min: 0.0,\n max: 0.02,\n }\n ),\n DARK: lightenWithinRange(lightenForContrast(secondaryScale[8]), -0.4, {\n min: 0.01,\n max: 0.02,\n }),\n // interactive components\n MEDIUM: lightenWithinRange(adjustedSecondaryScale[7], -0.2, {\n min: 0.0,\n max: 0.11,\n }),\n //borders and seperators\n MEDIUM_LIGHT: lightenWithinRange(adjustedSecondaryScale[6], 0.1),\n //solid colors\n LIGHT: lightenWithinRange(saturate(adjustedSecondaryScale[5], 0.1), 0.16),\n //accessible text\n LIGHTEST: lightenWithinRange(\n saturate(adjustedSecondaryScale[3], 0.2),\n 0.12,\n {\n min: 0.5,\n max: 0.9,\n }\n ),\n SUPER_LIGHT: lightenWithinRange(adjustedSecondaryScale[1], 0.02, {\n min: 0.76,\n max: 0.92,\n }),\n WHITE: lightenWithinRange(adjustedSecondaryScale[1], 0.11, {\n min: 0.9,\n max: 0.98,\n }),\n },\n //TODO: make theme aware grayscale color scale\n //Can we remove the basecolor after this?\n GRAYSCALE: {\n SUPER_DARK: DARK_GRAYSCALE.SUPER_DARK,\n DARK: DARK_GRAYSCALE.DARK,\n MEDIUM: DARK_GRAYSCALE.MEDIUM,\n MEDIUM_LIGHT: DARK_GRAYSCALE.MEDIUM_LIGHT,\n LIGHT: DARK_GRAYSCALE.LIGHT,\n LIGHTEST: DARK_GRAYSCALE.LIGHTEST,\n SUPER_LIGHT: DARK_GRAYSCALE.SUPER_LIGHT,\n WHITE: DARK_GRAYSCALE.WHITE,\n },\n };\n};\n\nconst lightenWithinRange = (\n color: string,\n amount: number,\n range: { min: number; max: number } = { min: 0.03, max: 0.97 }\n): string => {\n let adjustedColor = color;\n let currentLuminance = getLuminance(adjustedColor);\n\n // Validate range bounds\n if (range.min < 0) range.min = 0;\n if (range.max > 1) range.max = 1;\n if (range.min >= range.max) {\n throw new Error(\"Invalid range: min must be less than max\");\n }\n\n // For lightening (positive amount)\n if (amount > 0) {\n // Calculate how much we can lighten before hitting max\n const remainingLuminance = range.max - currentLuminance;\n if (remainingLuminance <= 0) return toRgba(adjustedColor);\n\n // Scale the amount based on remaining room to lighten\n const scaledAmount = amount * (remainingLuminance / (1 - currentLuminance));\n adjustedColor = lighten(adjustedColor, scaledAmount);\n }\n // For darkening (negative amount)\n else if (amount < 0) {\n // Calculate how much we can darken before hitting min\n const remainingLuminance = currentLuminance - range.min;\n if (remainingLuminance <= 0) return toRgba(adjustedColor);\n\n // Scale the amount based on remaining room to darken\n const scaledAmount = amount * (remainingLuminance / currentLuminance);\n adjustedColor = darken(adjustedColor, Math.abs(scaledAmount));\n }\n\n // Verify final luminance is within bounds\n const finalLuminance = getLuminance(adjustedColor);\n if (finalLuminance > range.max) {\n adjustedColor = adjustBrightnessWithinRange(adjustedColor, range);\n } else if (finalLuminance < range.min) {\n adjustedColor = adjustBrightnessWithinRange(adjustedColor, range);\n }\n\n return toRgba(adjustedColor);\n};\n\nconst adjustBrightnessWithinRange = (\n color: string,\n range: { min: number; max: number }\n): string => {\n let adjustedColor = color;\n let luminance = getLuminance(adjustedColor);\n\n // Darken if too bright\n while (luminance > range.max) {\n adjustedColor = darken(adjustedColor, 0.05);\n luminance = getLuminance(adjustedColor);\n }\n\n // Lighten if too dark\n while (luminance < range.min) {\n adjustedColor = lighten(adjustedColor, 0.05);\n luminance = getLuminance(adjustedColor);\n }\n\n return toRgba(adjustedColor);\n};\n\nconst lightenForContrast = (color: string): string => {\n while (hasBadContrast(color, \"readable\", LIGHT_GRAYSCALE.DARK)) {\n color = lighten(color, 0.01);\n }\n return toRgba(color);\n};\n\nconst darkenForContrast = (color: string): string => {\n while (hasBadContrast(LIGHT_GRAYSCALE.SUPER_LIGHT, \"readable\", color)) {\n color = darken(color, 0.01);\n }\n return toRgba(color);\n};\n\nconst adjustBrightnessForLuminance = (color: string): string => {\n let currentColor = color;\n let currentLuminance = getLuminance(toRgba(currentColor));\n let adjustmentAttempts = 0;\n const MAX_ATTEMPTS = 6;\n\n while (currentLuminance < 0.16 && adjustmentAttempts < MAX_ATTEMPTS) {\n adjustmentAttempts++;\n currentColor = lighten(currentColor, 0.1);\n currentLuminance = getLuminance(toRgba(currentColor));\n }\n\n while (currentLuminance > 0.6 && adjustmentAttempts < MAX_ATTEMPTS) {\n adjustmentAttempts++;\n currentColor = darken(currentColor, 0.1);\n currentLuminance = getLuminance(toRgba(currentColor));\n }\n\n return toRgba(currentColor);\n};\n"],"names":["generatePalette","baseColor","primaryRgba","arrayToRgbString","primaryScaleFunc","getScale","primaryScale","_","i","color","desaturate","adjustedPrimaryScale","saturate","adjustBrightnessForLuminance","secondaryColor","toRgba","adjustHue","secondaryScaleFunc","secondaryScale","adjustedSecondaryScale","brandPrimary","darkenForContrast","brandSecondary","lightenWithinRange","lightenForContrast","DARK_GRAYSCALE","amount","range","adjustedColor","currentLuminance","getLuminance","remainingLuminance","scaledAmount","lighten","darken","finalLuminance","adjustBrightnessWithinRange","luminance","hasBadContrast","LIGHT_GRAYSCALE","currentColor","adjustmentAttempts","MAX_ATTEMPTS"],"mappings":"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"}
1
+ {"version":3,"file":"palette.cjs.js","sources":["../../src/utils/palette.ts"],"sourcesContent":["import {\n adjustHue,\n darken,\n getLuminance,\n getScale,\n hasBadContrast,\n lighten,\n toRgba,\n} from \"color2k\";\nimport { ProtonPalette, RGBArray } from \"../design/types\";\nimport { arrayToRgbString, desaturate, saturate } from \"./color2k\";\nimport { LIGHT_GRAYSCALE } from \"../design/lightTheme/colors\";\nimport { DARK_GRAYSCALE } from \"../design/darkTheme/colors\";\n\n/**\n * Generates a complete color palette based on a primary color input.\n * The palette includes primary and secondary color scales with varying shades.\n *\n * @param primaryColor - The base RGB color array to generate the palette from\n * @returns A Palette object containing:\n * - BRAND colors (primary, light primary, and secondary)\n * - PRIMARY scale (7 shades from super dark to super light)\n * - SECONDARY scale (7 shades from super dark to super light)\n *\n * The function:\n * 1. Creates a 12-color scale from white to the primary color to black\n * 2. Generates a complementary secondary color by shifting the hue 180 degrees\n * 3. Creates another 12-color scale for the secondary color\n * 4. Maps specific positions from these scales to create the final palette structure\n */\nexport const generatePalette = (baseColor: RGBArray): ProtonPalette => {\n const primaryRgba = arrayToRgbString(baseColor);\n\n const primaryScaleFunc = getScale(\"#FFFFFF\", primaryRgba, \"#000000\");\n const primaryScale = Array.from({ length: 12 }, (_, i) => {\n const color = primaryScaleFunc(i / 11);\n return desaturate(color, 0.0085);\n });\n\n const adjustedPrimaryScale = primaryScale.map((color) =>\n saturate(adjustBrightnessForLuminance(color), 0.005),\n );\n\n const secondaryColor = toRgba(saturate(adjustHue(primaryRgba, 180), 1));\n\n const secondaryScaleFunc = getScale(\"#FFFFFF\", secondaryColor, \"#000000\");\n const secondaryScale = Array.from({ length: 12 }, (_, i) => {\n const color = secondaryScaleFunc(i / 11);\n return desaturate(color, 0.1);\n });\n\n const adjustedSecondaryScale = secondaryScale.map((color) =>\n desaturate(adjustBrightnessForLuminance(color), 0.22),\n );\n\n const brandPrimary = darkenForContrast(\n saturate(adjustedPrimaryScale[5], 0.115),\n );\n const brandSecondary = darkenForContrast(\n desaturate(adjustedSecondaryScale[5], 0.102),\n );\n\n return {\n BASE_COLOR: arrayToRgbString(baseColor),\n BRAND: {\n PRIMARY: brandPrimary,\n PRIMARY_LIGHT: lightenForContrast(\n lightenWithinRange(brandPrimary, 0.08, {\n min: 0.55,\n max: 0.8,\n }),\n ),\n PRIMARY_SUPER_LIGHT: lightenWithinRange(brandPrimary, 0.15, {\n min: 0.8,\n max: 0.89,\n }),\n SECONDARY: brandSecondary,\n SECONDARY_LIGHT: lightenWithinRange(brandSecondary, 0.08, {\n min: 0.55,\n max: 0.8,\n }),\n SECONDARY_SUPER_LIGHT: lightenForContrast(\n lightenWithinRange(brandSecondary, 0.15, {\n min: 0.8,\n max: 0.89,\n }),\n ),\n },\n PRIMARY: {\n //backgrounds\n SUPER_DARK: lightenWithinRange(\n lightenForContrast(primaryScale[9]),\n -0.6,\n {\n min: 0.0,\n max: 0.02,\n },\n ),\n DARK: lightenWithinRange(lightenForContrast(primaryScale[8]), -0.4, {\n min: 0.01,\n max: 0.02,\n }),\n //interactive components\n MEDIUM: lightenWithinRange(adjustedPrimaryScale[7], -0.2, {\n min: 0.0,\n max: 0.11,\n }),\n //borders and seperators\n MEDIUM_LIGHT: lightenWithinRange(\n desaturate(adjustedPrimaryScale[6], 0.1),\n 0.08,\n ),\n //solid colors\n LIGHT: lightenWithinRange(saturate(adjustedPrimaryScale[5], 0.1), 0.16),\n //accessible text\n LIGHTEST: lightenWithinRange(\n saturate(adjustedPrimaryScale[3], 0.2),\n 0.12,\n {\n min: 0.5,\n max: 0.9,\n },\n ),\n SUPER_LIGHT: lightenWithinRange(adjustedPrimaryScale[1], 0.02, {\n min: 0.76,\n max: 0.92,\n }),\n WHITE: lightenWithinRange(adjustedPrimaryScale[1], 0.11, {\n min: 0.9,\n max: 0.98,\n }),\n },\n SECONDARY: {\n //backgrounds\n SUPER_DARK: lightenWithinRange(\n lightenForContrast(secondaryScale[9]),\n -0.6,\n {\n min: 0.0,\n max: 0.02,\n },\n ),\n DARK: lightenWithinRange(lightenForContrast(secondaryScale[8]), -0.4, {\n min: 0.01,\n max: 0.02,\n }),\n // interactive components\n MEDIUM: lightenWithinRange(adjustedSecondaryScale[7], -0.2, {\n min: 0.0,\n max: 0.11,\n }),\n //borders and seperators\n MEDIUM_LIGHT: lightenWithinRange(adjustedSecondaryScale[6], 0.1),\n //solid colors\n LIGHT: lightenWithinRange(saturate(adjustedSecondaryScale[5], 0.1), 0.16),\n //accessible text\n LIGHTEST: lightenWithinRange(\n saturate(adjustedSecondaryScale[3], 0.2),\n 0.12,\n {\n min: 0.5,\n max: 0.9,\n },\n ),\n SUPER_LIGHT: lightenWithinRange(adjustedSecondaryScale[1], 0.02, {\n min: 0.76,\n max: 0.92,\n }),\n WHITE: lightenWithinRange(adjustedSecondaryScale[1], 0.11, {\n min: 0.9,\n max: 0.98,\n }),\n },\n //TODO: make theme aware grayscale color scale\n //Can we remove the basecolor after this?\n GRAYSCALE: {\n SUPER_DARK: DARK_GRAYSCALE.SUPER_DARK,\n DARK: DARK_GRAYSCALE.DARK,\n MEDIUM: DARK_GRAYSCALE.MEDIUM,\n MEDIUM_LIGHT: DARK_GRAYSCALE.MEDIUM_LIGHT,\n LIGHT: DARK_GRAYSCALE.LIGHT,\n LIGHTEST: DARK_GRAYSCALE.LIGHTEST,\n SUPER_LIGHT: DARK_GRAYSCALE.SUPER_LIGHT,\n WHITE: DARK_GRAYSCALE.WHITE,\n },\n };\n};\n\nconst lightenWithinRange = (\n color: string,\n amount: number,\n range: { min: number; max: number } = { min: 0.03, max: 0.97 },\n): string => {\n let adjustedColor = color;\n let currentLuminance = getLuminance(adjustedColor);\n\n // Validate range bounds\n if (range.min < 0) range.min = 0;\n if (range.max > 1) range.max = 1;\n if (range.min >= range.max) {\n throw new Error(\"Invalid range: min must be less than max\");\n }\n\n // For lightening (positive amount)\n if (amount > 0) {\n // Calculate how much we can lighten before hitting max\n const remainingLuminance = range.max - currentLuminance;\n if (remainingLuminance <= 0) return toRgba(adjustedColor);\n\n // Scale the amount based on remaining room to lighten\n const scaledAmount = amount * (remainingLuminance / (1 - currentLuminance));\n adjustedColor = lighten(adjustedColor, scaledAmount);\n }\n // For darkening (negative amount)\n else if (amount < 0) {\n // Calculate how much we can darken before hitting min\n const remainingLuminance = currentLuminance - range.min;\n if (remainingLuminance <= 0) return toRgba(adjustedColor);\n\n // Scale the amount based on remaining room to darken\n const scaledAmount = amount * (remainingLuminance / currentLuminance);\n adjustedColor = darken(adjustedColor, Math.abs(scaledAmount));\n }\n\n // Verify final luminance is within bounds\n const finalLuminance = getLuminance(adjustedColor);\n if (finalLuminance > range.max) {\n adjustedColor = adjustBrightnessWithinRange(adjustedColor, range);\n } else if (finalLuminance < range.min) {\n adjustedColor = adjustBrightnessWithinRange(adjustedColor, range);\n }\n\n return toRgba(adjustedColor);\n};\n\nconst adjustBrightnessWithinRange = (\n color: string,\n range: { min: number; max: number },\n): string => {\n let adjustedColor = color;\n let luminance = getLuminance(adjustedColor);\n\n // Darken if too bright\n while (luminance > range.max) {\n adjustedColor = darken(adjustedColor, 0.05);\n luminance = getLuminance(adjustedColor);\n }\n\n // Lighten if too dark\n while (luminance < range.min) {\n adjustedColor = lighten(adjustedColor, 0.05);\n luminance = getLuminance(adjustedColor);\n }\n\n return toRgba(adjustedColor);\n};\n\nconst lightenForContrast = (color: string): string => {\n while (hasBadContrast(color, \"readable\", LIGHT_GRAYSCALE.DARK)) {\n color = lighten(color, 0.01);\n }\n return toRgba(color);\n};\n\nconst darkenForContrast = (color: string): string => {\n while (hasBadContrast(LIGHT_GRAYSCALE.SUPER_LIGHT, \"readable\", color)) {\n color = darken(color, 0.01);\n }\n return toRgba(color);\n};\n\nconst adjustBrightnessForLuminance = (color: string): string => {\n let currentColor = color;\n let currentLuminance = getLuminance(toRgba(currentColor));\n let adjustmentAttempts = 0;\n const MAX_ATTEMPTS = 6;\n\n while (currentLuminance < 0.16 && adjustmentAttempts < MAX_ATTEMPTS) {\n adjustmentAttempts++;\n currentColor = lighten(currentColor, 0.1);\n currentLuminance = getLuminance(toRgba(currentColor));\n }\n\n while (currentLuminance > 0.6 && adjustmentAttempts < MAX_ATTEMPTS) {\n adjustmentAttempts++;\n currentColor = darken(currentColor, 0.1);\n currentLuminance = getLuminance(toRgba(currentColor));\n }\n\n return toRgba(currentColor);\n};\n"],"names":["generatePalette","baseColor","primaryRgba","arrayToRgbString","primaryScaleFunc","getScale","primaryScale","_","i","color","desaturate","adjustedPrimaryScale","saturate","adjustBrightnessForLuminance","secondaryColor","toRgba","adjustHue","secondaryScaleFunc","secondaryScale","adjustedSecondaryScale","brandPrimary","darkenForContrast","brandSecondary","lightenForContrast","lightenWithinRange","DARK_GRAYSCALE","amount","range","adjustedColor","currentLuminance","getLuminance","remainingLuminance","scaledAmount","lighten","darken","finalLuminance","adjustBrightnessWithinRange","luminance","hasBadContrast","LIGHT_GRAYSCALE","currentColor","adjustmentAttempts","MAX_ATTEMPTS"],"mappings":"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"}
@@ -1,54 +1,60 @@
1
- import { toRgba as r, adjustHue as F, getLuminance as c, lighten as A, darken as L, hasBadContrast as P, getScale as _ } from "../node_modules/color2k/dist/index.exports.import.es.es.js";
2
- import { desaturate as u, saturate as E, arrayToRgbString as D } from "./color2k.es.js";
3
- import { LIGHT_GRAYSCALE as U } from "../design/lightTheme/colors.es.js";
1
+ import { toRgba as r, adjustHue as f, getScale as _, getLuminance as c, lighten as A, darken as L, hasBadContrast as U } from "../node_modules/color2k/dist/index.exports.import.es.es.js";
2
+ import { desaturate as S, saturate as E, arrayToRgbString as D } from "./color2k.es.js";
3
+ import { LIGHT_GRAYSCALE as F } from "../design/lightTheme/colors.es.js";
4
4
  import { DARK_GRAYSCALE as s } from "../design/darkTheme/colors.es.js";
5
5
  const K = (m) => {
6
- const e = D(m), n = _("#FFFFFF", e, "#000000"), t = Array.from({ length: 12 }, (l, x) => {
6
+ const e = D(m), n = _("#FFFFFF", e, "#000000"), t = Array.from({ length: 12 }, (u, x) => {
7
7
  const G = n(x / 11);
8
- return u(G, 85e-4);
8
+ return S(G, 85e-4);
9
9
  }), i = t.map(
10
- (l) => E(h(l), 5e-3)
11
- ), S = r(E(F(e, 180), 1)), o = _("#FFFFFF", S, "#000000"), R = Array.from({ length: 12 }, (l, x) => {
10
+ (u) => E(P(u), 5e-3)
11
+ ), T = r(E(f(e, 180), 1)), o = _("#FFFFFF", T, "#000000"), R = Array.from({ length: 12 }, (u, x) => {
12
12
  const G = o(x / 11);
13
- return u(G, 0.1);
13
+ return S(G, 0.1);
14
14
  }), I = R.map(
15
- (l) => u(h(l), 0.22)
16
- ), d = f(
15
+ (u) => S(P(u), 0.22)
16
+ ), d = h(
17
17
  E(i[5], 0.115)
18
- ), H = u(I[4], 0.02);
18
+ ), H = h(
19
+ S(I[5], 0.102)
20
+ );
19
21
  return {
20
22
  BASE_COLOR: D(m),
21
23
  BRAND: {
22
24
  PRIMARY: d,
23
- PRIMARY_LIGHT: a(d, 0.25, {
24
- min: 0.6,
25
- max: 0.8
26
- }),
25
+ PRIMARY_LIGHT: l(
26
+ a(d, 0.08, {
27
+ min: 0.55,
28
+ max: 0.8
29
+ })
30
+ ),
27
31
  PRIMARY_SUPER_LIGHT: a(d, 0.15, {
28
32
  min: 0.8,
29
- max: 0.9
33
+ max: 0.89
30
34
  }),
31
35
  SECONDARY: H,
32
- SECONDARY_LIGHT: a(H, 0.25, {
33
- min: 0.6,
36
+ SECONDARY_LIGHT: a(H, 0.08, {
37
+ min: 0.55,
34
38
  max: 0.8
35
39
  }),
36
- SECONDARY_SUPER_LIGHT: a(H, 0.15, {
37
- min: 0.8,
38
- max: 0.9
39
- })
40
+ SECONDARY_SUPER_LIGHT: l(
41
+ a(H, 0.15, {
42
+ min: 0.8,
43
+ max: 0.89
44
+ })
45
+ )
40
46
  },
41
47
  PRIMARY: {
42
48
  //backgrounds
43
49
  SUPER_DARK: a(
44
- T(t[9]),
50
+ l(t[9]),
45
51
  -0.6,
46
52
  {
47
53
  min: 0,
48
54
  max: 0.02
49
55
  }
50
56
  ),
51
- DARK: a(T(t[8]), -0.4, {
57
+ DARK: a(l(t[8]), -0.4, {
52
58
  min: 0.01,
53
59
  max: 0.02
54
60
  }),
@@ -59,7 +65,7 @@ const K = (m) => {
59
65
  }),
60
66
  //borders and seperators
61
67
  MEDIUM_LIGHT: a(
62
- u(i[6], 0.1),
68
+ S(i[6], 0.1),
63
69
  0.08
64
70
  ),
65
71
  //solid colors
@@ -85,14 +91,14 @@ const K = (m) => {
85
91
  SECONDARY: {
86
92
  //backgrounds
87
93
  SUPER_DARK: a(
88
- T(R[9]),
94
+ l(R[9]),
89
95
  -0.6,
90
96
  {
91
97
  min: 0,
92
98
  max: 0.02
93
99
  }
94
100
  ),
95
- DARK: a(T(R[8]), -0.4, {
101
+ DARK: a(l(R[8]), -0.4, {
96
102
  min: 0.01,
97
103
  max: 0.02
98
104
  }),
@@ -151,8 +157,8 @@ const K = (m) => {
151
157
  const R = e * (o / i);
152
158
  t = L(t, Math.abs(R));
153
159
  }
154
- const S = c(t);
155
- return (S > n.max || S < n.min) && (t = M(t, n)), r(t);
160
+ const T = c(t);
161
+ return (T > n.max || T < n.min) && (t = M(t, n)), r(t);
156
162
  }, M = (m, e) => {
157
163
  let n = m, t = c(n);
158
164
  for (; t > e.max; )
@@ -160,15 +166,15 @@ const K = (m) => {
160
166
  for (; t < e.min; )
161
167
  n = A(n, 0.05), t = c(n);
162
168
  return r(n);
163
- }, T = (m) => {
164
- for (; P(m, "readable", U.DARK); )
169
+ }, l = (m) => {
170
+ for (; U(m, "readable", F.DARK); )
165
171
  m = A(m, 0.01);
166
172
  return r(m);
167
- }, f = (m) => {
168
- for (; P(U.SUPER_LIGHT, "readable", m); )
173
+ }, h = (m) => {
174
+ for (; U(F.SUPER_LIGHT, "readable", m); )
169
175
  m = L(m, 0.01);
170
176
  return r(m);
171
- }, h = (m) => {
177
+ }, P = (m) => {
172
178
  let e = m, n = c(r(e)), t = 0;
173
179
  const i = 6;
174
180
  for (; n < 0.16 && t < i; )
@@ -1 +1 @@
1
- {"version":3,"file":"palette.es.js","sources":["../../src/utils/palette.ts"],"sourcesContent":["import {\n adjustHue,\n darken,\n getLuminance,\n getScale,\n hasBadContrast,\n lighten,\n toRgba,\n} from \"color2k\";\nimport { ProtonPalette, RGBArray } from \"../design/types\";\nimport { arrayToRgbString, desaturate, saturate } from \"./color2k\";\nimport { LIGHT_GRAYSCALE } from \"../design/lightTheme/colors\";\nimport { DARK_GRAYSCALE } from \"../design/darkTheme/colors\";\n\n/**\n * Generates a complete color palette based on a primary color input.\n * The palette includes primary and secondary color scales with varying shades.\n *\n * @param primaryColor - The base RGB color array to generate the palette from\n * @returns A Palette object containing:\n * - BRAND colors (primary, light primary, and secondary)\n * - PRIMARY scale (7 shades from super dark to super light)\n * - SECONDARY scale (7 shades from super dark to super light)\n *\n * The function:\n * 1. Creates a 12-color scale from white to the primary color to black\n * 2. Generates a complementary secondary color by shifting the hue 180 degrees\n * 3. Creates another 12-color scale for the secondary color\n * 4. Maps specific positions from these scales to create the final palette structure\n */\nexport const generatePalette = (baseColor: RGBArray): ProtonPalette => {\n const primaryRgba = arrayToRgbString(baseColor);\n\n const primaryScaleFunc = getScale(\"#FFFFFF\", primaryRgba, \"#000000\");\n const primaryScale = Array.from({ length: 12 }, (_, i) => {\n const color = primaryScaleFunc(i / 11);\n return desaturate(color, 0.0085);\n });\n\n const adjustedPrimaryScale = primaryScale.map((color) =>\n saturate(adjustBrightnessForLuminance(color), 0.005)\n );\n\n const secondaryColor = toRgba(saturate(adjustHue(primaryRgba, 180), 1));\n\n const secondaryScaleFunc = getScale(\"#FFFFFF\", secondaryColor, \"#000000\");\n const secondaryScale = Array.from({ length: 12 }, (_, i) => {\n const color = secondaryScaleFunc(i / 11);\n return desaturate(color, 0.1);\n });\n\n const adjustedSecondaryScale = secondaryScale.map((color) =>\n desaturate(adjustBrightnessForLuminance(color), 0.22)\n );\n\n const brandPrimary = darkenForContrast(\n saturate(adjustedPrimaryScale[5], 0.115)\n );\n const brandSecondary = desaturate(adjustedSecondaryScale[4], 0.02);\n\n return {\n BASE_COLOR: arrayToRgbString(baseColor),\n BRAND: {\n PRIMARY: brandPrimary,\n PRIMARY_LIGHT: lightenWithinRange(brandPrimary, 0.25, {\n min: 0.6,\n max: 0.8,\n }),\n PRIMARY_SUPER_LIGHT: lightenWithinRange(brandPrimary, 0.15, {\n min: 0.8,\n max: 0.9,\n }),\n SECONDARY: brandSecondary,\n SECONDARY_LIGHT: lightenWithinRange(brandSecondary, 0.25, {\n min: 0.6,\n max: 0.8,\n }),\n SECONDARY_SUPER_LIGHT: lightenWithinRange(brandSecondary, 0.15, {\n min: 0.8,\n max: 0.9,\n }),\n },\n PRIMARY: {\n //backgrounds\n SUPER_DARK: lightenWithinRange(\n lightenForContrast(primaryScale[9]),\n -0.6,\n {\n min: 0.0,\n max: 0.02,\n }\n ),\n DARK: lightenWithinRange(lightenForContrast(primaryScale[8]), -0.4, {\n min: 0.01,\n max: 0.02,\n }),\n //interactive components\n MEDIUM: lightenWithinRange(adjustedPrimaryScale[7], -0.2, {\n min: 0.0,\n max: 0.11,\n }),\n //borders and seperators\n MEDIUM_LIGHT: lightenWithinRange(\n desaturate(adjustedPrimaryScale[6], 0.1),\n 0.08\n ),\n //solid colors\n LIGHT: lightenWithinRange(saturate(adjustedPrimaryScale[5], 0.1), 0.16),\n //accessible text\n LIGHTEST: lightenWithinRange(\n saturate(adjustedPrimaryScale[3], 0.2),\n 0.12,\n {\n min: 0.5,\n max: 0.9,\n }\n ),\n SUPER_LIGHT: lightenWithinRange(adjustedPrimaryScale[1], 0.02, {\n min: 0.76,\n max: 0.92,\n }),\n WHITE: lightenWithinRange(adjustedPrimaryScale[1], 0.11, {\n min: 0.9,\n max: 0.98,\n }),\n },\n SECONDARY: {\n //backgrounds\n SUPER_DARK: lightenWithinRange(\n lightenForContrast(secondaryScale[9]),\n -0.6,\n {\n min: 0.0,\n max: 0.02,\n }\n ),\n DARK: lightenWithinRange(lightenForContrast(secondaryScale[8]), -0.4, {\n min: 0.01,\n max: 0.02,\n }),\n // interactive components\n MEDIUM: lightenWithinRange(adjustedSecondaryScale[7], -0.2, {\n min: 0.0,\n max: 0.11,\n }),\n //borders and seperators\n MEDIUM_LIGHT: lightenWithinRange(adjustedSecondaryScale[6], 0.1),\n //solid colors\n LIGHT: lightenWithinRange(saturate(adjustedSecondaryScale[5], 0.1), 0.16),\n //accessible text\n LIGHTEST: lightenWithinRange(\n saturate(adjustedSecondaryScale[3], 0.2),\n 0.12,\n {\n min: 0.5,\n max: 0.9,\n }\n ),\n SUPER_LIGHT: lightenWithinRange(adjustedSecondaryScale[1], 0.02, {\n min: 0.76,\n max: 0.92,\n }),\n WHITE: lightenWithinRange(adjustedSecondaryScale[1], 0.11, {\n min: 0.9,\n max: 0.98,\n }),\n },\n //TODO: make theme aware grayscale color scale\n //Can we remove the basecolor after this?\n GRAYSCALE: {\n SUPER_DARK: DARK_GRAYSCALE.SUPER_DARK,\n DARK: DARK_GRAYSCALE.DARK,\n MEDIUM: DARK_GRAYSCALE.MEDIUM,\n MEDIUM_LIGHT: DARK_GRAYSCALE.MEDIUM_LIGHT,\n LIGHT: DARK_GRAYSCALE.LIGHT,\n LIGHTEST: DARK_GRAYSCALE.LIGHTEST,\n SUPER_LIGHT: DARK_GRAYSCALE.SUPER_LIGHT,\n WHITE: DARK_GRAYSCALE.WHITE,\n },\n };\n};\n\nconst lightenWithinRange = (\n color: string,\n amount: number,\n range: { min: number; max: number } = { min: 0.03, max: 0.97 }\n): string => {\n let adjustedColor = color;\n let currentLuminance = getLuminance(adjustedColor);\n\n // Validate range bounds\n if (range.min < 0) range.min = 0;\n if (range.max > 1) range.max = 1;\n if (range.min >= range.max) {\n throw new Error(\"Invalid range: min must be less than max\");\n }\n\n // For lightening (positive amount)\n if (amount > 0) {\n // Calculate how much we can lighten before hitting max\n const remainingLuminance = range.max - currentLuminance;\n if (remainingLuminance <= 0) return toRgba(adjustedColor);\n\n // Scale the amount based on remaining room to lighten\n const scaledAmount = amount * (remainingLuminance / (1 - currentLuminance));\n adjustedColor = lighten(adjustedColor, scaledAmount);\n }\n // For darkening (negative amount)\n else if (amount < 0) {\n // Calculate how much we can darken before hitting min\n const remainingLuminance = currentLuminance - range.min;\n if (remainingLuminance <= 0) return toRgba(adjustedColor);\n\n // Scale the amount based on remaining room to darken\n const scaledAmount = amount * (remainingLuminance / currentLuminance);\n adjustedColor = darken(adjustedColor, Math.abs(scaledAmount));\n }\n\n // Verify final luminance is within bounds\n const finalLuminance = getLuminance(adjustedColor);\n if (finalLuminance > range.max) {\n adjustedColor = adjustBrightnessWithinRange(adjustedColor, range);\n } else if (finalLuminance < range.min) {\n adjustedColor = adjustBrightnessWithinRange(adjustedColor, range);\n }\n\n return toRgba(adjustedColor);\n};\n\nconst adjustBrightnessWithinRange = (\n color: string,\n range: { min: number; max: number }\n): string => {\n let adjustedColor = color;\n let luminance = getLuminance(adjustedColor);\n\n // Darken if too bright\n while (luminance > range.max) {\n adjustedColor = darken(adjustedColor, 0.05);\n luminance = getLuminance(adjustedColor);\n }\n\n // Lighten if too dark\n while (luminance < range.min) {\n adjustedColor = lighten(adjustedColor, 0.05);\n luminance = getLuminance(adjustedColor);\n }\n\n return toRgba(adjustedColor);\n};\n\nconst lightenForContrast = (color: string): string => {\n while (hasBadContrast(color, \"readable\", LIGHT_GRAYSCALE.DARK)) {\n color = lighten(color, 0.01);\n }\n return toRgba(color);\n};\n\nconst darkenForContrast = (color: string): string => {\n while (hasBadContrast(LIGHT_GRAYSCALE.SUPER_LIGHT, \"readable\", color)) {\n color = darken(color, 0.01);\n }\n return toRgba(color);\n};\n\nconst adjustBrightnessForLuminance = (color: string): string => {\n let currentColor = color;\n let currentLuminance = getLuminance(toRgba(currentColor));\n let adjustmentAttempts = 0;\n const MAX_ATTEMPTS = 6;\n\n while (currentLuminance < 0.16 && adjustmentAttempts < MAX_ATTEMPTS) {\n adjustmentAttempts++;\n currentColor = lighten(currentColor, 0.1);\n currentLuminance = getLuminance(toRgba(currentColor));\n }\n\n while (currentLuminance > 0.6 && adjustmentAttempts < MAX_ATTEMPTS) {\n adjustmentAttempts++;\n currentColor = darken(currentColor, 0.1);\n currentLuminance = getLuminance(toRgba(currentColor));\n }\n\n return toRgba(currentColor);\n};\n"],"names":["generatePalette","baseColor","primaryRgba","arrayToRgbString","primaryScaleFunc","getScale","primaryScale","_","i","color","desaturate","adjustedPrimaryScale","saturate","adjustBrightnessForLuminance","secondaryColor","toRgba","adjustHue","secondaryScaleFunc","secondaryScale","adjustedSecondaryScale","brandPrimary","darkenForContrast","brandSecondary","lightenWithinRange","lightenForContrast","DARK_GRAYSCALE","amount","range","adjustedColor","currentLuminance","getLuminance","remainingLuminance","scaledAmount","lighten","darken","finalLuminance","adjustBrightnessWithinRange","luminance","hasBadContrast","LIGHT_GRAYSCALE","currentColor","adjustmentAttempts","MAX_ATTEMPTS"],"mappings":"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"}
1
+ {"version":3,"file":"palette.es.js","sources":["../../src/utils/palette.ts"],"sourcesContent":["import {\n adjustHue,\n darken,\n getLuminance,\n getScale,\n hasBadContrast,\n lighten,\n toRgba,\n} from \"color2k\";\nimport { ProtonPalette, RGBArray } from \"../design/types\";\nimport { arrayToRgbString, desaturate, saturate } from \"./color2k\";\nimport { LIGHT_GRAYSCALE } from \"../design/lightTheme/colors\";\nimport { DARK_GRAYSCALE } from \"../design/darkTheme/colors\";\n\n/**\n * Generates a complete color palette based on a primary color input.\n * The palette includes primary and secondary color scales with varying shades.\n *\n * @param primaryColor - The base RGB color array to generate the palette from\n * @returns A Palette object containing:\n * - BRAND colors (primary, light primary, and secondary)\n * - PRIMARY scale (7 shades from super dark to super light)\n * - SECONDARY scale (7 shades from super dark to super light)\n *\n * The function:\n * 1. Creates a 12-color scale from white to the primary color to black\n * 2. Generates a complementary secondary color by shifting the hue 180 degrees\n * 3. Creates another 12-color scale for the secondary color\n * 4. Maps specific positions from these scales to create the final palette structure\n */\nexport const generatePalette = (baseColor: RGBArray): ProtonPalette => {\n const primaryRgba = arrayToRgbString(baseColor);\n\n const primaryScaleFunc = getScale(\"#FFFFFF\", primaryRgba, \"#000000\");\n const primaryScale = Array.from({ length: 12 }, (_, i) => {\n const color = primaryScaleFunc(i / 11);\n return desaturate(color, 0.0085);\n });\n\n const adjustedPrimaryScale = primaryScale.map((color) =>\n saturate(adjustBrightnessForLuminance(color), 0.005),\n );\n\n const secondaryColor = toRgba(saturate(adjustHue(primaryRgba, 180), 1));\n\n const secondaryScaleFunc = getScale(\"#FFFFFF\", secondaryColor, \"#000000\");\n const secondaryScale = Array.from({ length: 12 }, (_, i) => {\n const color = secondaryScaleFunc(i / 11);\n return desaturate(color, 0.1);\n });\n\n const adjustedSecondaryScale = secondaryScale.map((color) =>\n desaturate(adjustBrightnessForLuminance(color), 0.22),\n );\n\n const brandPrimary = darkenForContrast(\n saturate(adjustedPrimaryScale[5], 0.115),\n );\n const brandSecondary = darkenForContrast(\n desaturate(adjustedSecondaryScale[5], 0.102),\n );\n\n return {\n BASE_COLOR: arrayToRgbString(baseColor),\n BRAND: {\n PRIMARY: brandPrimary,\n PRIMARY_LIGHT: lightenForContrast(\n lightenWithinRange(brandPrimary, 0.08, {\n min: 0.55,\n max: 0.8,\n }),\n ),\n PRIMARY_SUPER_LIGHT: lightenWithinRange(brandPrimary, 0.15, {\n min: 0.8,\n max: 0.89,\n }),\n SECONDARY: brandSecondary,\n SECONDARY_LIGHT: lightenWithinRange(brandSecondary, 0.08, {\n min: 0.55,\n max: 0.8,\n }),\n SECONDARY_SUPER_LIGHT: lightenForContrast(\n lightenWithinRange(brandSecondary, 0.15, {\n min: 0.8,\n max: 0.89,\n }),\n ),\n },\n PRIMARY: {\n //backgrounds\n SUPER_DARK: lightenWithinRange(\n lightenForContrast(primaryScale[9]),\n -0.6,\n {\n min: 0.0,\n max: 0.02,\n },\n ),\n DARK: lightenWithinRange(lightenForContrast(primaryScale[8]), -0.4, {\n min: 0.01,\n max: 0.02,\n }),\n //interactive components\n MEDIUM: lightenWithinRange(adjustedPrimaryScale[7], -0.2, {\n min: 0.0,\n max: 0.11,\n }),\n //borders and seperators\n MEDIUM_LIGHT: lightenWithinRange(\n desaturate(adjustedPrimaryScale[6], 0.1),\n 0.08,\n ),\n //solid colors\n LIGHT: lightenWithinRange(saturate(adjustedPrimaryScale[5], 0.1), 0.16),\n //accessible text\n LIGHTEST: lightenWithinRange(\n saturate(adjustedPrimaryScale[3], 0.2),\n 0.12,\n {\n min: 0.5,\n max: 0.9,\n },\n ),\n SUPER_LIGHT: lightenWithinRange(adjustedPrimaryScale[1], 0.02, {\n min: 0.76,\n max: 0.92,\n }),\n WHITE: lightenWithinRange(adjustedPrimaryScale[1], 0.11, {\n min: 0.9,\n max: 0.98,\n }),\n },\n SECONDARY: {\n //backgrounds\n SUPER_DARK: lightenWithinRange(\n lightenForContrast(secondaryScale[9]),\n -0.6,\n {\n min: 0.0,\n max: 0.02,\n },\n ),\n DARK: lightenWithinRange(lightenForContrast(secondaryScale[8]), -0.4, {\n min: 0.01,\n max: 0.02,\n }),\n // interactive components\n MEDIUM: lightenWithinRange(adjustedSecondaryScale[7], -0.2, {\n min: 0.0,\n max: 0.11,\n }),\n //borders and seperators\n MEDIUM_LIGHT: lightenWithinRange(adjustedSecondaryScale[6], 0.1),\n //solid colors\n LIGHT: lightenWithinRange(saturate(adjustedSecondaryScale[5], 0.1), 0.16),\n //accessible text\n LIGHTEST: lightenWithinRange(\n saturate(adjustedSecondaryScale[3], 0.2),\n 0.12,\n {\n min: 0.5,\n max: 0.9,\n },\n ),\n SUPER_LIGHT: lightenWithinRange(adjustedSecondaryScale[1], 0.02, {\n min: 0.76,\n max: 0.92,\n }),\n WHITE: lightenWithinRange(adjustedSecondaryScale[1], 0.11, {\n min: 0.9,\n max: 0.98,\n }),\n },\n //TODO: make theme aware grayscale color scale\n //Can we remove the basecolor after this?\n GRAYSCALE: {\n SUPER_DARK: DARK_GRAYSCALE.SUPER_DARK,\n DARK: DARK_GRAYSCALE.DARK,\n MEDIUM: DARK_GRAYSCALE.MEDIUM,\n MEDIUM_LIGHT: DARK_GRAYSCALE.MEDIUM_LIGHT,\n LIGHT: DARK_GRAYSCALE.LIGHT,\n LIGHTEST: DARK_GRAYSCALE.LIGHTEST,\n SUPER_LIGHT: DARK_GRAYSCALE.SUPER_LIGHT,\n WHITE: DARK_GRAYSCALE.WHITE,\n },\n };\n};\n\nconst lightenWithinRange = (\n color: string,\n amount: number,\n range: { min: number; max: number } = { min: 0.03, max: 0.97 },\n): string => {\n let adjustedColor = color;\n let currentLuminance = getLuminance(adjustedColor);\n\n // Validate range bounds\n if (range.min < 0) range.min = 0;\n if (range.max > 1) range.max = 1;\n if (range.min >= range.max) {\n throw new Error(\"Invalid range: min must be less than max\");\n }\n\n // For lightening (positive amount)\n if (amount > 0) {\n // Calculate how much we can lighten before hitting max\n const remainingLuminance = range.max - currentLuminance;\n if (remainingLuminance <= 0) return toRgba(adjustedColor);\n\n // Scale the amount based on remaining room to lighten\n const scaledAmount = amount * (remainingLuminance / (1 - currentLuminance));\n adjustedColor = lighten(adjustedColor, scaledAmount);\n }\n // For darkening (negative amount)\n else if (amount < 0) {\n // Calculate how much we can darken before hitting min\n const remainingLuminance = currentLuminance - range.min;\n if (remainingLuminance <= 0) return toRgba(adjustedColor);\n\n // Scale the amount based on remaining room to darken\n const scaledAmount = amount * (remainingLuminance / currentLuminance);\n adjustedColor = darken(adjustedColor, Math.abs(scaledAmount));\n }\n\n // Verify final luminance is within bounds\n const finalLuminance = getLuminance(adjustedColor);\n if (finalLuminance > range.max) {\n adjustedColor = adjustBrightnessWithinRange(adjustedColor, range);\n } else if (finalLuminance < range.min) {\n adjustedColor = adjustBrightnessWithinRange(adjustedColor, range);\n }\n\n return toRgba(adjustedColor);\n};\n\nconst adjustBrightnessWithinRange = (\n color: string,\n range: { min: number; max: number },\n): string => {\n let adjustedColor = color;\n let luminance = getLuminance(adjustedColor);\n\n // Darken if too bright\n while (luminance > range.max) {\n adjustedColor = darken(adjustedColor, 0.05);\n luminance = getLuminance(adjustedColor);\n }\n\n // Lighten if too dark\n while (luminance < range.min) {\n adjustedColor = lighten(adjustedColor, 0.05);\n luminance = getLuminance(adjustedColor);\n }\n\n return toRgba(adjustedColor);\n};\n\nconst lightenForContrast = (color: string): string => {\n while (hasBadContrast(color, \"readable\", LIGHT_GRAYSCALE.DARK)) {\n color = lighten(color, 0.01);\n }\n return toRgba(color);\n};\n\nconst darkenForContrast = (color: string): string => {\n while (hasBadContrast(LIGHT_GRAYSCALE.SUPER_LIGHT, \"readable\", color)) {\n color = darken(color, 0.01);\n }\n return toRgba(color);\n};\n\nconst adjustBrightnessForLuminance = (color: string): string => {\n let currentColor = color;\n let currentLuminance = getLuminance(toRgba(currentColor));\n let adjustmentAttempts = 0;\n const MAX_ATTEMPTS = 6;\n\n while (currentLuminance < 0.16 && adjustmentAttempts < MAX_ATTEMPTS) {\n adjustmentAttempts++;\n currentColor = lighten(currentColor, 0.1);\n currentLuminance = getLuminance(toRgba(currentColor));\n }\n\n while (currentLuminance > 0.6 && adjustmentAttempts < MAX_ATTEMPTS) {\n adjustmentAttempts++;\n currentColor = darken(currentColor, 0.1);\n currentLuminance = getLuminance(toRgba(currentColor));\n }\n\n return toRgba(currentColor);\n};\n"],"names":["generatePalette","baseColor","primaryRgba","arrayToRgbString","primaryScaleFunc","getScale","primaryScale","_","i","color","desaturate","adjustedPrimaryScale","saturate","adjustBrightnessForLuminance","secondaryColor","toRgba","adjustHue","secondaryScaleFunc","secondaryScale","adjustedSecondaryScale","brandPrimary","darkenForContrast","brandSecondary","lightenForContrast","lightenWithinRange","DARK_GRAYSCALE","amount","range","adjustedColor","currentLuminance","getLuminance","remainingLuminance","scaledAmount","lighten","darken","finalLuminance","adjustBrightnessWithinRange","luminance","hasBadContrast","LIGHT_GRAYSCALE","currentColor","adjustmentAttempts","MAX_ATTEMPTS"],"mappings":";;;;AA8BO,MAAMA,IAAkB,CAACC,MAAuC;AACrE,QAAMC,IAAcC,EAAiBF,CAAS,GAExCG,IAAmBC,EAAS,WAAWH,GAAa,SAAS,GAC7DI,IAAe,MAAM,KAAK,EAAE,QAAQ,GAAA,GAAM,CAACC,GAAGC,MAAM;AACxD,UAAMC,IAAQL,EAAiBI,IAAI,EAAE;AACrC,WAAOE,EAAWD,GAAO,KAAM;AAAA,EACjC,CAAC,GAEKE,IAAuBL,EAAa;AAAA,IAAI,CAACG,MAC7CG,EAASC,EAA6BJ,CAAK,GAAG,IAAK;AAAA,EAAA,GAG/CK,IAAiBC,EAAOH,EAASI,EAAUd,GAAa,GAAG,GAAG,CAAC,CAAC,GAEhEe,IAAqBZ,EAAS,WAAWS,GAAgB,SAAS,GAClEI,IAAiB,MAAM,KAAK,EAAE,QAAQ,GAAA,GAAM,CAACX,GAAGC,MAAM;AAC1D,UAAMC,IAAQQ,EAAmBT,IAAI,EAAE;AACvC,WAAOE,EAAWD,GAAO,GAAG;AAAA,EAC9B,CAAC,GAEKU,IAAyBD,EAAe;AAAA,IAAI,CAACT,MACjDC,EAAWG,EAA6BJ,CAAK,GAAG,IAAI;AAAA,EAAA,GAGhDW,IAAeC;AAAA,IACnBT,EAASD,EAAqB,CAAC,GAAG,KAAK;AAAA,EAAA,GAEnCW,IAAiBD;AAAA,IACrBX,EAAWS,EAAuB,CAAC,GAAG,KAAK;AAAA,EAAA;AAG7C,SAAO;AAAA,IACL,YAAYhB,EAAiBF,CAAS;AAAA,IACtC,OAAO;AAAA,MACL,SAASmB;AAAA,MACT,eAAeG;AAAA,QACbC,EAAmBJ,GAAc,MAAM;AAAA,UACrC,KAAK;AAAA,UACL,KAAK;AAAA,QAAA,CACN;AAAA,MAAA;AAAA,MAEH,qBAAqBI,EAAmBJ,GAAc,MAAM;AAAA,QAC1D,KAAK;AAAA,QACL,KAAK;AAAA,MAAA,CACN;AAAA,MACD,WAAWE;AAAA,MACX,iBAAiBE,EAAmBF,GAAgB,MAAM;AAAA,QACxD,KAAK;AAAA,QACL,KAAK;AAAA,MAAA,CACN;AAAA,MACD,uBAAuBC;AAAA,QACrBC,EAAmBF,GAAgB,MAAM;AAAA,UACvC,KAAK;AAAA,UACL,KAAK;AAAA,QAAA,CACN;AAAA,MAAA;AAAA,IACH;AAAA,IAEF,SAAS;AAAA;AAAA,MAEP,YAAYE;AAAA,QACVD,EAAmBjB,EAAa,CAAC,CAAC;AAAA,QAClC;AAAA,QACA;AAAA,UACE,KAAK;AAAA,UACL,KAAK;AAAA,QAAA;AAAA,MACP;AAAA,MAEF,MAAMkB,EAAmBD,EAAmBjB,EAAa,CAAC,CAAC,GAAG,MAAM;AAAA,QAClE,KAAK;AAAA,QACL,KAAK;AAAA,MAAA,CACN;AAAA;AAAA,MAED,QAAQkB,EAAmBb,EAAqB,CAAC,GAAG,MAAM;AAAA,QACxD,KAAK;AAAA,QACL,KAAK;AAAA,MAAA,CACN;AAAA;AAAA,MAED,cAAca;AAAA,QACZd,EAAWC,EAAqB,CAAC,GAAG,GAAG;AAAA,QACvC;AAAA,MAAA;AAAA;AAAA,MAGF,OAAOa,EAAmBZ,EAASD,EAAqB,CAAC,GAAG,GAAG,GAAG,IAAI;AAAA;AAAA,MAEtE,UAAUa;AAAA,QACRZ,EAASD,EAAqB,CAAC,GAAG,GAAG;AAAA,QACrC;AAAA,QACA;AAAA,UACE,KAAK;AAAA,UACL,KAAK;AAAA,QAAA;AAAA,MACP;AAAA,MAEF,aAAaa,EAAmBb,EAAqB,CAAC,GAAG,MAAM;AAAA,QAC7D,KAAK;AAAA,QACL,KAAK;AAAA,MAAA,CACN;AAAA,MACD,OAAOa,EAAmBb,EAAqB,CAAC,GAAG,MAAM;AAAA,QACvD,KAAK;AAAA,QACL,KAAK;AAAA,MAAA,CACN;AAAA,IAAA;AAAA,IAEH,WAAW;AAAA;AAAA,MAET,YAAYa;AAAA,QACVD,EAAmBL,EAAe,CAAC,CAAC;AAAA,QACpC;AAAA,QACA;AAAA,UACE,KAAK;AAAA,UACL,KAAK;AAAA,QAAA;AAAA,MACP;AAAA,MAEF,MAAMM,EAAmBD,EAAmBL,EAAe,CAAC,CAAC,GAAG,MAAM;AAAA,QACpE,KAAK;AAAA,QACL,KAAK;AAAA,MAAA,CACN;AAAA;AAAA,MAED,QAAQM,EAAmBL,EAAuB,CAAC,GAAG,MAAM;AAAA,QAC1D,KAAK;AAAA,QACL,KAAK;AAAA,MAAA,CACN;AAAA;AAAA,MAED,cAAcK,EAAmBL,EAAuB,CAAC,GAAG,GAAG;AAAA;AAAA,MAE/D,OAAOK,EAAmBZ,EAASO,EAAuB,CAAC,GAAG,GAAG,GAAG,IAAI;AAAA;AAAA,MAExE,UAAUK;AAAA,QACRZ,EAASO,EAAuB,CAAC,GAAG,GAAG;AAAA,QACvC;AAAA,QACA;AAAA,UACE,KAAK;AAAA,UACL,KAAK;AAAA,QAAA;AAAA,MACP;AAAA,MAEF,aAAaK,EAAmBL,EAAuB,CAAC,GAAG,MAAM;AAAA,QAC/D,KAAK;AAAA,QACL,KAAK;AAAA,MAAA,CACN;AAAA,MACD,OAAOK,EAAmBL,EAAuB,CAAC,GAAG,MAAM;AAAA,QACzD,KAAK;AAAA,QACL,KAAK;AAAA,MAAA,CACN;AAAA,IAAA;AAAA;AAAA;AAAA,IAIH,WAAW;AAAA,MACT,YAAYM,EAAe;AAAA,MAC3B,MAAMA,EAAe;AAAA,MACrB,QAAQA,EAAe;AAAA,MACvB,cAAcA,EAAe;AAAA,MAC7B,OAAOA,EAAe;AAAA,MACtB,UAAUA,EAAe;AAAA,MACzB,aAAaA,EAAe;AAAA,MAC5B,OAAOA,EAAe;AAAA,IAAA;AAAA,EACxB;AAEJ,GAEMD,IAAqB,CACzBf,GACAiB,GACAC,IAAsC,EAAE,KAAK,MAAM,KAAK,WAC7C;AACX,MAAIC,IAAgBnB,GAChBoB,IAAmBC,EAAaF,CAAa;AAKjD,MAFID,EAAM,MAAM,MAAGA,EAAM,MAAM,IAC3BA,EAAM,MAAM,MAAGA,EAAM,MAAM,IAC3BA,EAAM,OAAOA,EAAM;AACrB,UAAM,IAAI,MAAM,0CAA0C;AAI5D,MAAID,IAAS,GAAG;AAEd,UAAMK,IAAqBJ,EAAM,MAAME;AACvC,QAAIE,KAAsB,EAAG,QAAOhB,EAAOa,CAAa;AAGxD,UAAMI,IAAeN,KAAUK,KAAsB,IAAIF;AACzD,IAAAD,IAAgBK,EAAQL,GAAeI,CAAY;AAAA,EACrD,WAESN,IAAS,GAAG;AAEnB,UAAMK,IAAqBF,IAAmBF,EAAM;AACpD,QAAII,KAAsB,EAAG,QAAOhB,EAAOa,CAAa;AAGxD,UAAMI,IAAeN,KAAUK,IAAqBF;AACpD,IAAAD,IAAgBM,EAAON,GAAe,KAAK,IAAII,CAAY,CAAC;AAAA,EAC9D;AAGA,QAAMG,IAAiBL,EAAaF,CAAa;AACjD,UAAIO,IAAiBR,EAAM,OAEhBQ,IAAiBR,EAAM,SAChCC,IAAgBQ,EAA4BR,GAAeD,CAAK,IAG3DZ,EAAOa,CAAa;AAC7B,GAEMQ,IAA8B,CAClC3B,GACAkB,MACW;AACX,MAAIC,IAAgBnB,GAChB4B,IAAYP,EAAaF,CAAa;AAG1C,SAAOS,IAAYV,EAAM;AACvB,IAAAC,IAAgBM,EAAON,GAAe,IAAI,GAC1CS,IAAYP,EAAaF,CAAa;AAIxC,SAAOS,IAAYV,EAAM;AACvB,IAAAC,IAAgBK,EAAQL,GAAe,IAAI,GAC3CS,IAAYP,EAAaF,CAAa;AAGxC,SAAOb,EAAOa,CAAa;AAC7B,GAEML,IAAqB,CAACd,MAA0B;AACpD,SAAO6B,EAAe7B,GAAO,YAAY8B,EAAgB,IAAI;AAC3D,IAAA9B,IAAQwB,EAAQxB,GAAO,IAAI;AAE7B,SAAOM,EAAON,CAAK;AACrB,GAEMY,IAAoB,CAACZ,MAA0B;AACnD,SAAO6B,EAAeC,EAAgB,aAAa,YAAY9B,CAAK;AAClE,IAAAA,IAAQyB,EAAOzB,GAAO,IAAI;AAE5B,SAAOM,EAAON,CAAK;AACrB,GAEMI,IAA+B,CAACJ,MAA0B;AAC9D,MAAI+B,IAAe/B,GACfoB,IAAmBC,EAAaf,EAAOyB,CAAY,CAAC,GACpDC,IAAqB;AACzB,QAAMC,IAAe;AAErB,SAAOb,IAAmB,QAAQY,IAAqBC;AACrD,IAAAD,KACAD,IAAeP,EAAQO,GAAc,GAAG,GACxCX,IAAmBC,EAAaf,EAAOyB,CAAY,CAAC;AAGtD,SAAOX,IAAmB,OAAOY,IAAqBC;AACpD,IAAAD,KACAD,IAAeN,EAAOM,GAAc,GAAG,GACvCX,IAAmBC,EAAaf,EAAOyB,CAAY,CAAC;AAGtD,SAAOzB,EAAOyB,CAAY;AAC5B;"}