eidos-ui 3.8.1 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. package/README.md +21 -11
  2. package/dist/{SegmentedControl.types-D_gHYL9X.d.cts → SegmentedControl.types-50fprBiO.d.cts} +9 -0
  3. package/dist/{SegmentedControl.types-CHtjABQM.d.ts → SegmentedControl.types-DKlamnBZ.d.ts} +9 -0
  4. package/dist/{ThemeProvider.types-DgXN0gEH.d.cts → ThemeProvider.types-CI9P1anY.d.cts} +53 -2
  5. package/dist/{ThemeProvider.types-DgXN0gEH.d.ts → ThemeProvider.types-CI9P1anY.d.ts} +53 -2
  6. package/dist/alert/index.cjs +5 -5
  7. package/dist/alert/index.js +4 -4
  8. package/dist/button/index.cjs +4 -4
  9. package/dist/button/index.js +3 -3
  10. package/dist/chip/index.cjs +4 -4
  11. package/dist/chip/index.js +3 -3
  12. package/dist/{chunk-V5CM5TH3.js → chunk-2OBOD3GO.js} +3 -3
  13. package/dist/{chunk-CFVUUMQA.cjs → chunk-2URFSWJT.cjs} +6 -8
  14. package/dist/chunk-2URFSWJT.cjs.map +1 -0
  15. package/dist/{chunk-4S57PE43.js → chunk-2WDL2ZVP.js} +6 -7
  16. package/dist/chunk-2WDL2ZVP.js.map +1 -0
  17. package/dist/{chunk-LWCFT5SP.cjs → chunk-3QBMSZSE.cjs} +3 -3
  18. package/dist/{chunk-LWCFT5SP.cjs.map → chunk-3QBMSZSE.cjs.map} +1 -1
  19. package/dist/{chunk-IC2PIK3E.js → chunk-43DJ3GGR.js} +4 -4
  20. package/dist/{chunk-L6ERHCQ2.js → chunk-57BVERWD.js} +3 -3
  21. package/dist/{chunk-AUNDBUHM.cjs → chunk-5HRVHEHE.cjs} +3 -3
  22. package/dist/{chunk-AUNDBUHM.cjs.map → chunk-5HRVHEHE.cjs.map} +1 -1
  23. package/dist/{chunk-6IB27I5K.cjs → chunk-6JYXGRJ3.cjs} +8 -8
  24. package/dist/{chunk-6IB27I5K.cjs.map → chunk-6JYXGRJ3.cjs.map} +1 -1
  25. package/dist/{chunk-NERASTO2.cjs → chunk-6ZFXIYH7.cjs} +3 -3
  26. package/dist/{chunk-NERASTO2.cjs.map → chunk-6ZFXIYH7.cjs.map} +1 -1
  27. package/dist/{chunk-IKXXXVUO.js → chunk-7TQUJ6BJ.js} +3 -3
  28. package/dist/{chunk-544RAXWO.cjs → chunk-7VMF6LIC.cjs} +19 -19
  29. package/dist/{chunk-544RAXWO.cjs.map → chunk-7VMF6LIC.cjs.map} +1 -1
  30. package/dist/{chunk-WTFEMOV5.cjs → chunk-ADB7QRX5.cjs} +16 -16
  31. package/dist/{chunk-WTFEMOV5.cjs.map → chunk-ADB7QRX5.cjs.map} +1 -1
  32. package/dist/{chunk-6CW5QSYV.cjs → chunk-AFGC62AL.cjs} +7 -7
  33. package/dist/{chunk-6CW5QSYV.cjs.map → chunk-AFGC62AL.cjs.map} +1 -1
  34. package/dist/{chunk-U4SVBE2M.js → chunk-AWPJH3UB.js} +4 -4
  35. package/dist/{chunk-V64DICJK.js → chunk-BHZ76J2K.js} +45 -33
  36. package/dist/chunk-BHZ76J2K.js.map +1 -0
  37. package/dist/{chunk-B2OHBIAL.cjs → chunk-BKUZF7CW.cjs} +10 -11
  38. package/dist/chunk-BKUZF7CW.cjs.map +1 -0
  39. package/dist/{chunk-WR77IZUU.cjs → chunk-BPVOQLCA.cjs} +7 -7
  40. package/dist/{chunk-WR77IZUU.cjs.map → chunk-BPVOQLCA.cjs.map} +1 -1
  41. package/dist/{chunk-MCPGI6EI.js → chunk-BUSMGQJ4.js} +2 -2
  42. package/dist/{chunk-H3C6YECZ.js → chunk-D2PXPX56.js} +6 -6
  43. package/dist/{chunk-L6YJ6QTZ.js → chunk-DCUIT7SI.js} +2 -2
  44. package/dist/{chunk-FE7S4RSK.js → chunk-DHOBGYRD.js} +164 -34
  45. package/dist/chunk-DHOBGYRD.js.map +1 -0
  46. package/dist/{chunk-JFV56ISS.cjs → chunk-E7BFBU6K.cjs} +45 -33
  47. package/dist/chunk-E7BFBU6K.cjs.map +1 -0
  48. package/dist/{chunk-HYRLK462.js → chunk-EDPCI2JC.js} +2 -2
  49. package/dist/{chunk-Z3IJWYUD.js → chunk-EJWEG66P.js} +226 -42
  50. package/dist/chunk-EJWEG66P.js.map +1 -0
  51. package/dist/{chunk-DPTTDHZ5.js → chunk-FAGQGGT3.js} +3 -3
  52. package/dist/{chunk-CNTG7OOO.js → chunk-FFYPSLQV.js} +12 -12
  53. package/dist/{chunk-7NUVLVSL.cjs → chunk-FJSK2RT7.cjs} +5 -5
  54. package/dist/{chunk-7NUVLVSL.cjs.map → chunk-FJSK2RT7.cjs.map} +1 -1
  55. package/dist/{chunk-P6OJQ2RN.js → chunk-FSX7DDLO.js} +8 -9
  56. package/dist/chunk-FSX7DDLO.js.map +1 -0
  57. package/dist/{chunk-XIUZT4TO.js → chunk-GE3QCXT7.js} +6 -7
  58. package/dist/chunk-GE3QCXT7.js.map +1 -0
  59. package/dist/{chunk-JY77VJAZ.js → chunk-GHUEVNNU.js} +3 -3
  60. package/dist/{chunk-4V2XYUQL.js → chunk-GLEPKX2R.js} +2 -2
  61. package/dist/{chunk-GZDT2AHJ.cjs → chunk-GRKC4PIX.cjs} +7 -7
  62. package/dist/{chunk-GZDT2AHJ.cjs.map → chunk-GRKC4PIX.cjs.map} +1 -1
  63. package/dist/{chunk-SLHIVEFW.cjs → chunk-HKLLKNRQ.cjs} +6 -9
  64. package/dist/chunk-HKLLKNRQ.cjs.map +1 -0
  65. package/dist/{chunk-2TIMJD4K.js → chunk-IBT535UH.js} +3 -3
  66. package/dist/{chunk-HR5MWA3B.cjs → chunk-IJW6YCJB.cjs} +5 -5
  67. package/dist/{chunk-HR5MWA3B.cjs.map → chunk-IJW6YCJB.cjs.map} +1 -1
  68. package/dist/{chunk-OGGZIFTI.cjs → chunk-JO4NDJRA.cjs} +192 -62
  69. package/dist/chunk-JO4NDJRA.cjs.map +1 -0
  70. package/dist/{chunk-NNAEQR3Y.cjs → chunk-K6VEUJLY.cjs} +30 -30
  71. package/dist/{chunk-NNAEQR3Y.cjs.map → chunk-K6VEUJLY.cjs.map} +1 -1
  72. package/dist/{chunk-F5IRMMZ2.cjs → chunk-K73JO4FK.cjs} +7 -7
  73. package/dist/{chunk-F5IRMMZ2.cjs.map → chunk-K73JO4FK.cjs.map} +1 -1
  74. package/dist/{chunk-4HZIXRAJ.cjs → chunk-KF2OGUAD.cjs} +11 -12
  75. package/dist/chunk-KF2OGUAD.cjs.map +1 -0
  76. package/dist/{chunk-TJQNGJHP.js → chunk-KLHC5BHS.js} +4 -4
  77. package/dist/{chunk-XWMXEJVZ.js → chunk-KZKBZ2AV.js} +5 -7
  78. package/dist/chunk-KZKBZ2AV.js.map +1 -0
  79. package/dist/{chunk-DG3O5NV4.cjs → chunk-LLHR6QW3.cjs} +3 -3
  80. package/dist/{chunk-DG3O5NV4.cjs.map → chunk-LLHR6QW3.cjs.map} +1 -1
  81. package/dist/{chunk-GDRLVX2A.js → chunk-LXRNFQEI.js} +4 -4
  82. package/dist/{chunk-VXC7Z7XB.cjs → chunk-MKQVDEHI.cjs} +5 -6
  83. package/dist/chunk-MKQVDEHI.cjs.map +1 -0
  84. package/dist/{chunk-TNQ2ZZ7W.cjs → chunk-MUMTPMWD.cjs} +7 -7
  85. package/dist/{chunk-TNQ2ZZ7W.cjs.map → chunk-MUMTPMWD.cjs.map} +1 -1
  86. package/dist/{chunk-RHWZX7PB.js → chunk-NONYIHXD.js} +4 -4
  87. package/dist/{chunk-XPG56DLQ.cjs → chunk-NSA7ASZ7.cjs} +8 -8
  88. package/dist/{chunk-XPG56DLQ.cjs.map → chunk-NSA7ASZ7.cjs.map} +1 -1
  89. package/dist/{chunk-6NAOAKII.js → chunk-NWFGXLQP.js} +2 -2
  90. package/dist/{chunk-H46ZLPNJ.cjs → chunk-O45W57Y4.cjs} +233 -49
  91. package/dist/chunk-O45W57Y4.cjs.map +1 -0
  92. package/dist/{chunk-UUT2VEN5.cjs → chunk-OC2OBBGM.cjs} +7 -8
  93. package/dist/chunk-OC2OBBGM.cjs.map +1 -0
  94. package/dist/{chunk-3X6QVHTD.js → chunk-OERK3T7E.js} +3 -4
  95. package/dist/chunk-OERK3T7E.js.map +1 -0
  96. package/dist/{chunk-ZJWQPZ7E.js → chunk-OQWG7NLI.js} +3 -11
  97. package/dist/chunk-OQWG7NLI.js.map +1 -0
  98. package/dist/{chunk-U34INRFO.js → chunk-PP6HS4GR.js} +5 -16
  99. package/dist/chunk-PP6HS4GR.js.map +1 -0
  100. package/dist/{chunk-ENMDOQQO.cjs → chunk-R5WI5IGR.cjs} +6 -17
  101. package/dist/{chunk-ENMDOQQO.cjs.map → chunk-R5WI5IGR.cjs.map} +1 -1
  102. package/dist/{chunk-UTYY35QX.cjs → chunk-RZMQCVAS.cjs} +3 -3
  103. package/dist/{chunk-UTYY35QX.cjs.map → chunk-RZMQCVAS.cjs.map} +1 -1
  104. package/dist/{chunk-7FV2X62W.cjs → chunk-SJKD3WCV.cjs} +7 -7
  105. package/dist/{chunk-7FV2X62W.cjs.map → chunk-SJKD3WCV.cjs.map} +1 -1
  106. package/dist/{chunk-LUDK44NZ.cjs → chunk-SJPCBRKR.cjs} +3 -3
  107. package/dist/{chunk-LUDK44NZ.cjs.map → chunk-SJPCBRKR.cjs.map} +1 -1
  108. package/dist/{chunk-3TF2GZSG.js → chunk-SONL2RCW.js} +7 -7
  109. package/dist/{chunk-2IXCEKLI.js → chunk-SOS4K7VC.js} +2 -2
  110. package/dist/{chunk-WHQGJHMD.js → chunk-TOLNPD7S.js} +4 -4
  111. package/dist/{chunk-FHOD3FUN.js → chunk-UTOTOWPS.js} +4 -4
  112. package/dist/{chunk-YIOHKQ6Y.cjs → chunk-VCG647BY.cjs} +5 -13
  113. package/dist/chunk-VCG647BY.cjs.map +1 -0
  114. package/dist/{chunk-HLI4SOH3.cjs → chunk-VGMRIXW4.cjs} +45 -45
  115. package/dist/{chunk-HLI4SOH3.cjs.map → chunk-VGMRIXW4.cjs.map} +1 -1
  116. package/dist/{chunk-N5NXKVFJ.cjs → chunk-VPN7AR7T.cjs} +10 -10
  117. package/dist/{chunk-N5NXKVFJ.cjs.map → chunk-VPN7AR7T.cjs.map} +1 -1
  118. package/dist/{chunk-6FXFKMJ5.js → chunk-XBIMNWE6.js} +3 -3
  119. package/dist/{chunk-3VXUOAIJ.cjs → chunk-XR72A66Q.cjs} +3 -7
  120. package/dist/chunk-XR72A66Q.cjs.map +1 -0
  121. package/dist/{chunk-ULKWUKD2.cjs → chunk-YHSCUPP6.cjs} +22 -23
  122. package/dist/chunk-YHSCUPP6.cjs.map +1 -0
  123. package/dist/{chunk-S5CMZFX6.js → chunk-YPEJH57Z.js} +6 -7
  124. package/dist/chunk-YPEJH57Z.js.map +1 -0
  125. package/dist/{chunk-BO3KK3ZQ.js → chunk-YPPG7NLW.js} +2 -6
  126. package/dist/chunk-YPPG7NLW.js.map +1 -0
  127. package/dist/{chunk-PE2SLXUS.cjs → chunk-YWXS4IPH.cjs} +5 -5
  128. package/dist/{chunk-PE2SLXUS.cjs.map → chunk-YWXS4IPH.cjs.map} +1 -1
  129. package/dist/{chunk-UC4NYF6T.js → chunk-YYA5SWXD.js} +2 -2
  130. package/dist/{chunk-IHPSRTVW.js → chunk-Z3OEYDNI.js} +4 -7
  131. package/dist/chunk-Z3OEYDNI.js.map +1 -0
  132. package/dist/{chunk-MKC6V3SY.cjs → chunk-Z6FZ7GI5.cjs} +6 -6
  133. package/dist/{chunk-MKC6V3SY.cjs.map → chunk-Z6FZ7GI5.cjs.map} +1 -1
  134. package/dist/{chunk-NFD7MPX4.cjs → chunk-ZVA5KJAJ.cjs} +11 -11
  135. package/dist/{chunk-NFD7MPX4.cjs.map → chunk-ZVA5KJAJ.cjs.map} +1 -1
  136. package/dist/color-picker/index.cjs +4 -4
  137. package/dist/color-picker/index.js +3 -3
  138. package/dist/combobox/index.cjs +6 -6
  139. package/dist/combobox/index.js +5 -5
  140. package/dist/command-palette/index.cjs +3 -3
  141. package/dist/command-palette/index.js +2 -2
  142. package/dist/context-menu/index.cjs +6 -6
  143. package/dist/context-menu/index.js +5 -5
  144. package/dist/conversation/index.cjs +8 -8
  145. package/dist/conversation/index.js +7 -7
  146. package/dist/data-grid/index.cjs +15 -15
  147. package/dist/data-grid/index.d.cts +1 -1
  148. package/dist/data-grid/index.d.ts +1 -1
  149. package/dist/data-grid/index.js +14 -14
  150. package/dist/date-picker/index.cjs +8 -8
  151. package/dist/date-picker/index.js +7 -7
  152. package/dist/drawer/index.cjs +5 -5
  153. package/dist/drawer/index.js +4 -4
  154. package/dist/dropdown/index.cjs +3 -3
  155. package/dist/dropdown/index.js +2 -2
  156. package/dist/header/index.cjs +6 -6
  157. package/dist/header/index.js +5 -5
  158. package/dist/index.cjs +39 -39
  159. package/dist/index.cjs.map +1 -1
  160. package/dist/index.css +345 -205
  161. package/dist/index.d.cts +2 -2
  162. package/dist/index.d.ts +2 -2
  163. package/dist/index.js +40 -40
  164. package/dist/inline-edit/index.cjs +5 -5
  165. package/dist/inline-edit/index.js +4 -4
  166. package/dist/input/index.cjs +4 -4
  167. package/dist/input/index.js +3 -3
  168. package/dist/menu/index.cjs +5 -5
  169. package/dist/menu/index.js +4 -4
  170. package/dist/modal/index.cjs +5 -5
  171. package/dist/modal/index.js +4 -4
  172. package/dist/navigation/index.cjs +5 -5
  173. package/dist/navigation/index.js +4 -4
  174. package/dist/number-input/index.cjs +2 -4
  175. package/dist/number-input/index.cjs.map +1 -1
  176. package/dist/number-input/index.js +1 -3
  177. package/dist/page-layout/index.cjs +12 -12
  178. package/dist/page-layout/index.js +11 -11
  179. package/dist/pagination/index.cjs +8 -8
  180. package/dist/pagination/index.js +7 -7
  181. package/dist/popover/index.cjs +3 -3
  182. package/dist/popover/index.d.cts +1 -3
  183. package/dist/popover/index.d.ts +1 -3
  184. package/dist/popover/index.js +2 -2
  185. package/dist/segmented-control/index.cjs +4 -4
  186. package/dist/segmented-control/index.d.cts +2 -2
  187. package/dist/segmented-control/index.d.ts +2 -2
  188. package/dist/segmented-control/index.js +3 -3
  189. package/dist/select/index.cjs +6 -6
  190. package/dist/select/index.js +5 -5
  191. package/dist/snackbar/index.cjs +5 -5
  192. package/dist/snackbar/index.js +4 -4
  193. package/dist/split-button/index.cjs +6 -6
  194. package/dist/split-button/index.js +5 -5
  195. package/dist/split-chip/index.cjs +5 -5
  196. package/dist/split-chip/index.js +4 -4
  197. package/dist/table/index.cjs +13 -13
  198. package/dist/table/index.js +12 -12
  199. package/dist/tabs/index.cjs +3 -3
  200. package/dist/tabs/index.js +2 -2
  201. package/dist/tag-input/index.cjs +6 -6
  202. package/dist/tag-input/index.js +5 -5
  203. package/dist/textarea/index.cjs +4 -4
  204. package/dist/textarea/index.js +3 -3
  205. package/dist/theme-editor/index.cjs +13 -11
  206. package/dist/theme-editor/index.cjs.map +1 -1
  207. package/dist/theme-editor/index.d.cts +1 -1
  208. package/dist/theme-editor/index.d.ts +1 -1
  209. package/dist/theme-editor/index.js +12 -10
  210. package/dist/theme-provider/index.cjs +3 -3
  211. package/dist/theme-provider/index.d.cts +2 -2
  212. package/dist/theme-provider/index.d.ts +2 -2
  213. package/dist/theme-provider/index.js +2 -2
  214. package/dist/toolbar/index.cjs +8 -8
  215. package/dist/toolbar/index.js +7 -7
  216. package/dist/tooltip/index.cjs +3 -3
  217. package/dist/tooltip/index.js +2 -2
  218. package/package.json +4 -2
  219. package/dist/chunk-3VXUOAIJ.cjs.map +0 -1
  220. package/dist/chunk-3X6QVHTD.js.map +0 -1
  221. package/dist/chunk-4HZIXRAJ.cjs.map +0 -1
  222. package/dist/chunk-4S57PE43.js.map +0 -1
  223. package/dist/chunk-B2OHBIAL.cjs.map +0 -1
  224. package/dist/chunk-BO3KK3ZQ.js.map +0 -1
  225. package/dist/chunk-CFVUUMQA.cjs.map +0 -1
  226. package/dist/chunk-FE7S4RSK.js.map +0 -1
  227. package/dist/chunk-H46ZLPNJ.cjs.map +0 -1
  228. package/dist/chunk-IHPSRTVW.js.map +0 -1
  229. package/dist/chunk-JFV56ISS.cjs.map +0 -1
  230. package/dist/chunk-OGGZIFTI.cjs.map +0 -1
  231. package/dist/chunk-P6OJQ2RN.js.map +0 -1
  232. package/dist/chunk-S5CMZFX6.js.map +0 -1
  233. package/dist/chunk-SLHIVEFW.cjs.map +0 -1
  234. package/dist/chunk-U34INRFO.js.map +0 -1
  235. package/dist/chunk-ULKWUKD2.cjs.map +0 -1
  236. package/dist/chunk-UUT2VEN5.cjs.map +0 -1
  237. package/dist/chunk-V64DICJK.js.map +0 -1
  238. package/dist/chunk-VXC7Z7XB.cjs.map +0 -1
  239. package/dist/chunk-XIUZT4TO.js.map +0 -1
  240. package/dist/chunk-XWMXEJVZ.js.map +0 -1
  241. package/dist/chunk-YIOHKQ6Y.cjs.map +0 -1
  242. package/dist/chunk-Z3IJWYUD.js.map +0 -1
  243. package/dist/chunk-ZJWQPZ7E.js.map +0 -1
  244. /package/dist/{chunk-V5CM5TH3.js.map → chunk-2OBOD3GO.js.map} +0 -0
  245. /package/dist/{chunk-IC2PIK3E.js.map → chunk-43DJ3GGR.js.map} +0 -0
  246. /package/dist/{chunk-L6ERHCQ2.js.map → chunk-57BVERWD.js.map} +0 -0
  247. /package/dist/{chunk-IKXXXVUO.js.map → chunk-7TQUJ6BJ.js.map} +0 -0
  248. /package/dist/{chunk-U4SVBE2M.js.map → chunk-AWPJH3UB.js.map} +0 -0
  249. /package/dist/{chunk-MCPGI6EI.js.map → chunk-BUSMGQJ4.js.map} +0 -0
  250. /package/dist/{chunk-H3C6YECZ.js.map → chunk-D2PXPX56.js.map} +0 -0
  251. /package/dist/{chunk-L6YJ6QTZ.js.map → chunk-DCUIT7SI.js.map} +0 -0
  252. /package/dist/{chunk-HYRLK462.js.map → chunk-EDPCI2JC.js.map} +0 -0
  253. /package/dist/{chunk-DPTTDHZ5.js.map → chunk-FAGQGGT3.js.map} +0 -0
  254. /package/dist/{chunk-CNTG7OOO.js.map → chunk-FFYPSLQV.js.map} +0 -0
  255. /package/dist/{chunk-JY77VJAZ.js.map → chunk-GHUEVNNU.js.map} +0 -0
  256. /package/dist/{chunk-4V2XYUQL.js.map → chunk-GLEPKX2R.js.map} +0 -0
  257. /package/dist/{chunk-2TIMJD4K.js.map → chunk-IBT535UH.js.map} +0 -0
  258. /package/dist/{chunk-TJQNGJHP.js.map → chunk-KLHC5BHS.js.map} +0 -0
  259. /package/dist/{chunk-GDRLVX2A.js.map → chunk-LXRNFQEI.js.map} +0 -0
  260. /package/dist/{chunk-RHWZX7PB.js.map → chunk-NONYIHXD.js.map} +0 -0
  261. /package/dist/{chunk-6NAOAKII.js.map → chunk-NWFGXLQP.js.map} +0 -0
  262. /package/dist/{chunk-3TF2GZSG.js.map → chunk-SONL2RCW.js.map} +0 -0
  263. /package/dist/{chunk-2IXCEKLI.js.map → chunk-SOS4K7VC.js.map} +0 -0
  264. /package/dist/{chunk-WHQGJHMD.js.map → chunk-TOLNPD7S.js.map} +0 -0
  265. /package/dist/{chunk-FHOD3FUN.js.map → chunk-UTOTOWPS.js.map} +0 -0
  266. /package/dist/{chunk-6FXFKMJ5.js.map → chunk-XBIMNWE6.js.map} +0 -0
  267. /package/dist/{chunk-UC4NYF6T.js.map → chunk-YYA5SWXD.js.map} +0 -0
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  Popover
3
- } from "./chunk-ZJWQPZ7E.js";
3
+ } from "./chunk-OQWG7NLI.js";
4
4
  import {
5
5
  Avatar
6
6
  } from "./chunk-XJBWFDDE.js";
7
7
  import {
8
8
  Button
9
- } from "./chunk-JY77VJAZ.js";
9
+ } from "./chunk-GHUEVNNU.js";
10
10
  import {
11
11
  devWarn,
12
12
  renderIcon
13
- } from "./chunk-U34INRFO.js";
13
+ } from "./chunk-PP6HS4GR.js";
14
14
 
15
15
  // src/components/Header/Header.component.tsx
16
16
  import { useCallback, useEffect, useLayoutEffect, useRef, useState } from "react";
@@ -144,4 +144,4 @@ export {
144
144
  Header,
145
145
  IdentityHeader
146
146
  };
147
- //# sourceMappingURL=chunk-RHWZX7PB.js.map
147
+ //# sourceMappingURL=chunk-NONYIHXD.js.map
@@ -1,10 +1,10 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
2
2
 
3
- var _chunkUTYY35QXcjs = require('./chunk-UTYY35QX.cjs');
3
+ var _chunkRZMQCVAScjs = require('./chunk-RZMQCVAS.cjs');
4
4
 
5
5
 
6
6
 
7
- var _chunkENMDOQQOcjs = require('./chunk-ENMDOQQO.cjs');
7
+ var _chunkR5WI5IGRcjs = require('./chunk-R5WI5IGR.cjs');
8
8
 
9
9
 
10
10
  var _chunkKXDGW6LJcjs = require('./chunk-KXDGW6LJ.cjs');
@@ -42,7 +42,7 @@ var Button = ({
42
42
  const suppliedLabel = _nullishCoalesce(buttonProps["aria-label"], () => ( buttonProps["aria-labelledby"]));
43
43
  const iconOnlyLabel = isIconOnly && !suppliedLabel ? tooltip : void 0;
44
44
  if (isIconOnly && !suppliedLabel && !tooltip) {
45
- _chunkENMDOQQOcjs.devWarn.call(void 0,
45
+ _chunkR5WI5IGRcjs.devWarn.call(void 0,
46
46
  "button-icon-only-name",
47
47
  'Button: an icon-only button needs an accessible name. Pass `tooltip` (which now also names it) or `aria-label`, otherwise it is announced as just "button".'
48
48
  );
@@ -64,9 +64,9 @@ var Button = ({
64
64
  ] }),
65
65
  isIconOnly && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "eidos-button--loading-spinner", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.LoaderCircle, { className: "eidos-button--spinner-icon" }) })
66
66
  ] }) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
67
- preIcon && _chunkENMDOQQOcjs.renderIcon.call(void 0, preIcon, "eidos-button--pre-icon"),
68
- isIconOnly && icon ? _chunkENMDOQQOcjs.renderIcon.call(void 0, icon, "eidos-button--icon") : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "eidos-button--copy", children }),
69
- posIcon && _chunkENMDOQQOcjs.renderIcon.call(void 0, posIcon, "eidos-button--pos-icon")
67
+ preIcon && _chunkR5WI5IGRcjs.renderIcon.call(void 0, preIcon, "eidos-button--pre-icon"),
68
+ isIconOnly && icon ? _chunkR5WI5IGRcjs.renderIcon.call(void 0, icon, "eidos-button--icon") : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "eidos-button--copy", children }),
69
+ posIcon && _chunkR5WI5IGRcjs.renderIcon.call(void 0, posIcon, "eidos-button--pos-icon")
70
70
  ] }) });
71
71
  const buttonContent = typeof buttonProps.href === "string" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
72
72
  _chunkKXDGW6LJcjs.EidosLink,
@@ -90,7 +90,7 @@ var Button = ({
90
90
  children: content
91
91
  }
92
92
  );
93
- return tooltip ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUTYY35QXcjs.Tooltip, { message: tooltip, children: buttonContent }) : buttonContent;
93
+ return tooltip ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRZMQCVAScjs.Tooltip, { message: tooltip, children: buttonContent }) : buttonContent;
94
94
  };
95
95
  var IconButton = (props) => {
96
96
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Button, { ...props });
@@ -100,4 +100,4 @@ var IconButton = (props) => {
100
100
 
101
101
 
102
102
  exports.Button = Button; exports.IconButton = IconButton;
103
- //# sourceMappingURL=chunk-XPG56DLQ.cjs.map
103
+ //# sourceMappingURL=chunk-NSA7ASZ7.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-XPG56DLQ.cjs","../src/components/Button/Button.component.tsx"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACVA,2CAA6B;AA6EjB,+CAAA;AAvEL,IAAM,OAAA,EAAgC,CAAC;AAAA,EAC5C,QAAA,EAAU,QAAA;AAAA,EACV,MAAA,EAAQ,SAAA;AAAA,EACR,KAAA,EAAO,IAAA;AAAA,EACP,SAAA,EAAW,KAAA;AAAA,EACX,QAAA,EAAU,KAAA;AAAA,EACV,YAAA,EAAc,YAAA;AAAA,EACd,OAAA;AAAA,EACA,UAAA,EAAY,EAAA;AAAA,EACZ,OAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAA,GAAM;AACJ,EAAA,MAAM,WAAA,EAAa,CAAC,CAAC,IAAA;AAErB,EAAA,GAAA,CAAI,UAAA,EAAY;AACd,IAAA,GAAA,CAAI,QAAA,EAAU;AACZ,MAAA,MAAM,IAAI,KAAA,CAAM,wCAAwC,CAAA;AAAA,IAC1D;AACA,IAAA,GAAA,CAAI,OAAA,EAAS;AACX,MAAA,MAAM,IAAI,KAAA,CAAM,uCAAuC,CAAA;AAAA,IACzD;AACA,IAAA,GAAA,CAAI,OAAA,EAAS;AACX,MAAA,MAAM,IAAI,KAAA,CAAM,uCAAuC,CAAA;AAAA,IACzD;AAAA,EACF;AAgBA,EAAA,MAAM,cAAA,mBAAgB,WAAA,CAAY,YAAY,CAAA,UAAK,WAAA,CAAY,iBAAiB,GAAA;AAChF,EAAA,MAAM,cAAA,EAAgB,WAAA,GAAc,CAAC,cAAA,EAAgB,QAAA,EAAU,KAAA,CAAA;AAE/D,EAAA,GAAA,CAAI,WAAA,GAAc,CAAC,cAAA,GAAiB,CAAC,OAAA,EAAS;AAC5C,IAAA,uCAAA;AAAA,MACE,uBAAA;AAAA,MACA;AAAA,IACF,CAAA;AAAA,EACF;AAEA,EAAA,MAAM,cAAA,EAAgB;AAAA,IACpB,cAAA;AAAA,IACA,CAAA,cAAA,EAAiB,OAAO,CAAA,CAAA;AACF,IAAA;AACD,IAAA;AACP,IAAA;AACF,IAAA;AACD,IAAA;AACX,IAAA;AAGS,EAAA;AAGT,EAAA;AAIQ,IAAA;AACG,sBAAA;AAGA,sBAAA;AACH,IAAA;AAGA,IAAA;AAMJ,EAAA;AACyB,IAAA;AAGrB,IAAA;AAKqB,IAAA;AAG7B,EAAA;AAQA,EAAA;AACG,IAAA;AAAA,IAAA;AACM,MAAA;AACa,MAAA;AACN,MAAA;AACD,MAAA;AACA,MAAA;AACW,MAAA;AAErB,MAAA;AAAA,IAAA;AAGH,EAAA;AAAC,IAAA;AAAA,IAAA;AACM,MAAA;AACA,MAAA;AACO,MAAA;AACD,MAAA;AACW,MAAA;AAErB,MAAA;AAAA,IAAA;AACH,EAAA;AAGa,EAAA;AACnB;AAasF;AAC5E,EAAA;AACV;ADtD6B;AACA;AACA;AACA;AACA","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-XPG56DLQ.cjs","sourcesContent":[null,"import React from 'react';\nimport { LoaderCircle } from 'lucide-react';\nimport { Tooltip } from '../Tooltip';\nimport { ButtonProps, IconButtonProps, IconLinkButtonProps } from './Button.types';\nimport { renderIcon, devWarn } from '../../utils';\nimport { EidosLink } from '../LinkProvider/Link.component';\n\nexport const Button: React.FC<ButtonProps> = ({\n variant = 'filled',\n color = 'primary',\n size = 'md',\n disabled = false,\n loading = false,\n loadingText = 'Loading...',\n tooltip,\n className = '',\n preIcon,\n posIcon,\n icon,\n children,\n ...buttonProps\n}) => {\n const isIconOnly = !!icon;\n\n if (isIconOnly) {\n if (children) {\n throw new Error('Icon-only buttons cannot have children');\n }\n if (preIcon) {\n throw new Error('Icon-only buttons cannot have preIcon');\n }\n if (posIcon) {\n throw new Error('Icon-only buttons cannot have posIcon');\n }\n }\n\n // ── Accessible name for icon-only buttons ──────────────────────────────\n //\n // An icon-only button has no text, so without `aria-label` it is announced\n // as just \"button\". `tooltip` alone did NOT fix this: `Tooltip` renders a\n // floating panel and adds no naming attributes to its child, so the\n // library's own documented example - `<IconButton icon={Plus}\n // tooltip=\"Add item\" />` - shipped a nameless control.\n //\n // Falling back to `tooltip` makes that documented pattern correct without\n // asking anyone to change their code: if you already described the button\n // for sighted users, that description now names it for everyone.\n //\n // Only ever a fallback - an explicit `aria-label` or `aria-labelledby`\n // always wins, since the caller may want a longer name than the tooltip.\n const suppliedLabel = buttonProps['aria-label'] ?? buttonProps['aria-labelledby'];\n const iconOnlyLabel = isIconOnly && !suppliedLabel ? tooltip : undefined;\n\n if (isIconOnly && !suppliedLabel && !tooltip) {\n devWarn(\n 'button-icon-only-name',\n 'Button: an icon-only button needs an accessible name. Pass `tooltip` (which now also names it) or `aria-label`, otherwise it is announced as just \"button\".',\n );\n }\n\n const buttonClasses = [\n 'eidos-button',\n `eidos-button--${variant}`,\n `eidos-button--${color}`,\n `eidos-button--${size}`,\n isIconOnly && 'eidos-button--icon-only',\n disabled && 'eidos-button--disabled',\n loading && 'eidos-button--loading',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const content = (\n <>\n {loading ? (\n <>\n {!isIconOnly && (\n <>\n <span className=\"eidos-button--loading-spinner\">\n <LoaderCircle className=\"eidos-button--spinner-icon\" />\n </span>\n <span className=\"eidos-button--copy\">{loadingText}</span>\n </>\n )}\n {isIconOnly && (\n <span className=\"eidos-button--loading-spinner\">\n <LoaderCircle className=\"eidos-button--spinner-icon\" />\n </span>\n )}\n </>\n ) : (\n <>\n {preIcon && renderIcon(preIcon, 'eidos-button--pre-icon')}\n\n {isIconOnly && icon ? (\n renderIcon(icon, 'eidos-button--icon')\n ) : (\n <span className=\"eidos-button--copy\">{children}</span>\n )}\n\n {posIcon && renderIcon(posIcon, 'eidos-button--pos-icon')}\n </>\n )}\n </>\n );\n\n // Discriminated on `href` alone. The props arrive as one of four union\n // members, but destructuring the style/content props above collapses the\n // rest into a shape TypeScript can no longer narrow, hence the casts - each\n // is exactly the half of the union the `href` check just proved.\n const buttonContent =\n typeof buttonProps.href === 'string' ? (\n <EidosLink\n {...(buttonProps as React.AnchorHTMLAttributes<HTMLAnchorElement>)}\n href={buttonProps.href}\n aria-label={iconOnlyLabel ?? buttonProps['aria-label']}\n aria-busy={loading || undefined}\n className={buttonClasses}\n disabled={disabled || loading}\n >\n {content}\n </EidosLink>\n ) : (\n <button\n type=\"button\"\n {...(buttonProps as React.ButtonHTMLAttributes<HTMLButtonElement>)}\n aria-label={iconOnlyLabel ?? buttonProps['aria-label']}\n className={buttonClasses}\n disabled={disabled || loading}\n >\n {content}\n </button>\n );\n\n return tooltip ? <Tooltip message={tooltip}>{buttonContent}</Tooltip> : buttonContent;\n};\n\n/**\n * IconButton - Convenience wrapper for icon-only buttons\n *\n * @example\n * ```tsx\n * import { IconButton } from 'eidos-ui';\n * import { Plus } from 'lucide-react';\n *\n * <IconButton icon={Plus} tooltip=\"Add item\" />\n * ```\n */\nexport const IconButton: React.FC<IconButtonProps | IconLinkButtonProps> = (props) => {\n return <Button {...props} />;\n};\n"]}
1
+ {"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-NSA7ASZ7.cjs","../src/components/Button/Button.component.tsx"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACVA,2CAA6B;AA6EjB,+CAAA;AAvEL,IAAM,OAAA,EAAgC,CAAC;AAAA,EAC5C,QAAA,EAAU,QAAA;AAAA,EACV,MAAA,EAAQ,SAAA;AAAA,EACR,KAAA,EAAO,IAAA;AAAA,EACP,SAAA,EAAW,KAAA;AAAA,EACX,QAAA,EAAU,KAAA;AAAA,EACV,YAAA,EAAc,YAAA;AAAA,EACd,OAAA;AAAA,EACA,UAAA,EAAY,EAAA;AAAA,EACZ,OAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAA,GAAM;AACJ,EAAA,MAAM,WAAA,EAAa,CAAC,CAAC,IAAA;AAErB,EAAA,GAAA,CAAI,UAAA,EAAY;AACd,IAAA,GAAA,CAAI,QAAA,EAAU;AACZ,MAAA,MAAM,IAAI,KAAA,CAAM,wCAAwC,CAAA;AAAA,IAC1D;AACA,IAAA,GAAA,CAAI,OAAA,EAAS;AACX,MAAA,MAAM,IAAI,KAAA,CAAM,uCAAuC,CAAA;AAAA,IACzD;AACA,IAAA,GAAA,CAAI,OAAA,EAAS;AACX,MAAA,MAAM,IAAI,KAAA,CAAM,uCAAuC,CAAA;AAAA,IACzD;AAAA,EACF;AAgBA,EAAA,MAAM,cAAA,mBAAgB,WAAA,CAAY,YAAY,CAAA,UAAK,WAAA,CAAY,iBAAiB,GAAA;AAChF,EAAA,MAAM,cAAA,EAAgB,WAAA,GAAc,CAAC,cAAA,EAAgB,QAAA,EAAU,KAAA,CAAA;AAE/D,EAAA,GAAA,CAAI,WAAA,GAAc,CAAC,cAAA,GAAiB,CAAC,OAAA,EAAS;AAC5C,IAAA,uCAAA;AAAA,MACE,uBAAA;AAAA,MACA;AAAA,IACF,CAAA;AAAA,EACF;AAEA,EAAA,MAAM,cAAA,EAAgB;AAAA,IACpB,cAAA;AAAA,IACA,CAAA,cAAA,EAAiB,OAAO,CAAA,CAAA;AACF,IAAA;AACD,IAAA;AACP,IAAA;AACF,IAAA;AACD,IAAA;AACX,IAAA;AAGS,EAAA;AAGT,EAAA;AAIQ,IAAA;AACG,sBAAA;AAGA,sBAAA;AACH,IAAA;AAGA,IAAA;AAMJ,EAAA;AACyB,IAAA;AAGrB,IAAA;AAKqB,IAAA;AAG7B,EAAA;AAQA,EAAA;AACG,IAAA;AAAA,IAAA;AACM,MAAA;AACa,MAAA;AACN,MAAA;AACD,MAAA;AACA,MAAA;AACW,MAAA;AAErB,MAAA;AAAA,IAAA;AAGH,EAAA;AAAC,IAAA;AAAA,IAAA;AACM,MAAA;AACA,MAAA;AACO,MAAA;AACD,MAAA;AACW,MAAA;AAErB,MAAA;AAAA,IAAA;AACH,EAAA;AAGa,EAAA;AACnB;AAasF;AAC5E,EAAA;AACV;ADtD6B;AACA;AACA;AACA;AACA","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-NSA7ASZ7.cjs","sourcesContent":[null,"import React from 'react';\nimport { LoaderCircle } from 'lucide-react';\nimport { Tooltip } from '../Tooltip';\nimport { ButtonProps, IconButtonProps, IconLinkButtonProps } from './Button.types';\nimport { renderIcon, devWarn } from '../../utils';\nimport { EidosLink } from '../LinkProvider/Link.component';\n\nexport const Button: React.FC<ButtonProps> = ({\n variant = 'filled',\n color = 'primary',\n size = 'md',\n disabled = false,\n loading = false,\n loadingText = 'Loading...',\n tooltip,\n className = '',\n preIcon,\n posIcon,\n icon,\n children,\n ...buttonProps\n}) => {\n const isIconOnly = !!icon;\n\n if (isIconOnly) {\n if (children) {\n throw new Error('Icon-only buttons cannot have children');\n }\n if (preIcon) {\n throw new Error('Icon-only buttons cannot have preIcon');\n }\n if (posIcon) {\n throw new Error('Icon-only buttons cannot have posIcon');\n }\n }\n\n // ── Accessible name for icon-only buttons ──────────────────────────────\n //\n // An icon-only button has no text, so without `aria-label` it is announced\n // as just \"button\". `tooltip` alone did NOT fix this: `Tooltip` renders a\n // floating panel and adds no naming attributes to its child, so the\n // library's own documented example - `<IconButton icon={Plus}\n // tooltip=\"Add item\" />` - shipped a nameless control.\n //\n // Falling back to `tooltip` makes that documented pattern correct without\n // asking anyone to change their code: if you already described the button\n // for sighted users, that description now names it for everyone.\n //\n // Only ever a fallback - an explicit `aria-label` or `aria-labelledby`\n // always wins, since the caller may want a longer name than the tooltip.\n const suppliedLabel = buttonProps['aria-label'] ?? buttonProps['aria-labelledby'];\n const iconOnlyLabel = isIconOnly && !suppliedLabel ? tooltip : undefined;\n\n if (isIconOnly && !suppliedLabel && !tooltip) {\n devWarn(\n 'button-icon-only-name',\n 'Button: an icon-only button needs an accessible name. Pass `tooltip` (which now also names it) or `aria-label`, otherwise it is announced as just \"button\".',\n );\n }\n\n const buttonClasses = [\n 'eidos-button',\n `eidos-button--${variant}`,\n `eidos-button--${color}`,\n `eidos-button--${size}`,\n isIconOnly && 'eidos-button--icon-only',\n disabled && 'eidos-button--disabled',\n loading && 'eidos-button--loading',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const content = (\n <>\n {loading ? (\n <>\n {!isIconOnly && (\n <>\n <span className=\"eidos-button--loading-spinner\">\n <LoaderCircle className=\"eidos-button--spinner-icon\" />\n </span>\n <span className=\"eidos-button--copy\">{loadingText}</span>\n </>\n )}\n {isIconOnly && (\n <span className=\"eidos-button--loading-spinner\">\n <LoaderCircle className=\"eidos-button--spinner-icon\" />\n </span>\n )}\n </>\n ) : (\n <>\n {preIcon && renderIcon(preIcon, 'eidos-button--pre-icon')}\n\n {isIconOnly && icon ? (\n renderIcon(icon, 'eidos-button--icon')\n ) : (\n <span className=\"eidos-button--copy\">{children}</span>\n )}\n\n {posIcon && renderIcon(posIcon, 'eidos-button--pos-icon')}\n </>\n )}\n </>\n );\n\n // Discriminated on `href` alone. The props arrive as one of four union\n // members, but destructuring the style/content props above collapses the\n // rest into a shape TypeScript can no longer narrow, hence the casts - each\n // is exactly the half of the union the `href` check just proved.\n const buttonContent =\n typeof buttonProps.href === 'string' ? (\n <EidosLink\n {...(buttonProps as React.AnchorHTMLAttributes<HTMLAnchorElement>)}\n href={buttonProps.href}\n aria-label={iconOnlyLabel ?? buttonProps['aria-label']}\n aria-busy={loading || undefined}\n className={buttonClasses}\n disabled={disabled || loading}\n >\n {content}\n </EidosLink>\n ) : (\n <button\n type=\"button\"\n {...(buttonProps as React.ButtonHTMLAttributes<HTMLButtonElement>)}\n aria-label={iconOnlyLabel ?? buttonProps['aria-label']}\n className={buttonClasses}\n disabled={disabled || loading}\n >\n {content}\n </button>\n );\n\n return tooltip ? <Tooltip message={tooltip}>{buttonContent}</Tooltip> : buttonContent;\n};\n\n/**\n * IconButton - Convenience wrapper for icon-only buttons\n *\n * @example\n * ```tsx\n * import { IconButton } from 'eidos-ui';\n * import { Plus } from 'lucide-react';\n *\n * <IconButton icon={Plus} tooltip=\"Add item\" />\n * ```\n */\nexport const IconButton: React.FC<IconButtonProps | IconLinkButtonProps> = (props) => {\n return <Button {...props} />;\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Input
3
- } from "./chunk-XIUZT4TO.js";
3
+ } from "./chunk-GE3QCXT7.js";
4
4
 
5
5
  // src/components/InlineEdit/InlineEdit.component.tsx
6
6
  import { useState, useRef, useCallback } from "react";
@@ -122,4 +122,4 @@ var InlineEdit = ({
122
122
  export {
123
123
  InlineEdit
124
124
  };
125
- //# sourceMappingURL=chunk-6NAOAKII.js.map
125
+ //# sourceMappingURL=chunk-NWFGXLQP.js.map
@@ -1,8 +1,16 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkENMDOQQOcjs = require('./chunk-ENMDOQQO.cjs');
3
+ var _chunkR5WI5IGRcjs = require('./chunk-R5WI5IGR.cjs');
4
4
 
5
5
  // src/components/ThemeProvider/ThemeProvider.component.tsx
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
6
14
  var _react = require('react');
7
15
 
8
16
  // src/components/ThemeProvider/ThemeProvider.context.tsx
@@ -176,6 +184,52 @@ var isRampViable = (base) => {
176
184
  const { l } = hexToOklch(base);
177
185
  return l < 0.95 && l > 0.12;
178
186
  };
187
+ var DARK_SURFACE = "#0f172a";
188
+ var DARK_SURFACE_RAISED = "#1e293b";
189
+ var DARK_BASE_MIN_CONTRAST = 5;
190
+ var deriveDarkBase = (base) => {
191
+ const reaches = (hex) => contrastRatio(hex, DARK_SURFACE) >= DARK_BASE_MIN_CONTRAST && contrastRatio(hex, DARK_SURFACE_RAISED) >= DARK_BASE_MIN_CONTRAST;
192
+ if (reaches(base)) return base;
193
+ const start = hexToOklch(base);
194
+ for (let l = start.l; l <= 1; l += 5e-3) {
195
+ const candidate = oklchToHex({ ...start, l });
196
+ if (reaches(candidate)) return candidate;
197
+ }
198
+ return "#ffffff";
199
+ };
200
+ var DARK_HOVER_DELTA = 0.07;
201
+ var DARK_LIGHT_DELTA = 0.35;
202
+ var deriveDarkHover = (darkBase) => {
203
+ const { l, c, h } = hexToOklch(darkBase);
204
+ return oklchToHex({ l: Math.min(LIGHT_CEILING, l + DARK_HOVER_DELTA), c, h });
205
+ };
206
+ var deriveDarkLight = (darkBase) => {
207
+ const { l, c, h } = hexToOklch(darkBase);
208
+ return oklchToHex({ l: Math.max(0.2, l - DARK_LIGHT_DELTA), c, h });
209
+ };
210
+ var DARK_RAMP_CURVE = {
211
+ 50: { l: 0.235, chroma: 0.35 },
212
+ 100: { l: 0.27, chroma: 0.45 },
213
+ 200: { l: 0.33, chroma: 0.6 },
214
+ 300: { l: 0.42, chroma: 0.8 },
215
+ 400: { l: 0.55, chroma: 0.95 },
216
+ 600: { l: 0.76, chroma: 0.8 },
217
+ 700: { l: 0.83, chroma: 0.6 },
218
+ 800: { l: 0.89, chroma: 0.4 },
219
+ 900: { l: 0.945, chroma: 0.2 }
220
+ };
221
+ var buildDarkRamp = (darkBase) => {
222
+ const { c, h } = hexToOklch(darkBase);
223
+ const out = {};
224
+ for (const step of RAMP_STEPS) {
225
+ out[step] = step === BASE_STEP ? darkBase : oklchToHex({
226
+ l: DARK_RAMP_CURVE[step].l,
227
+ c: c * DARK_RAMP_CURVE[step].chroma,
228
+ h
229
+ });
230
+ }
231
+ return out;
232
+ };
179
233
 
180
234
  // src/components/ThemeProvider/ThemeProvider.tokens.ts
181
235
  var THEME_COLOR_KEYS = [
@@ -220,7 +274,10 @@ var defaultTheme = {
220
274
  fontFamily: "'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif",
221
275
  monoFamily: "'JetBrains Mono', 'SF Mono', 'Monaco', 'Inconsolata', 'Roboto Mono', 'Source Code Pro', monospace",
222
276
  fontScale: 1
223
- }
277
+ },
278
+ // Empty on purpose: the preset's dark colours are *derived* from `colors`
279
+ // (see `_color-schemes.scss`), exactly as a consumer's are.
280
+ dark: {}
224
281
  };
225
282
  var DEFAULT_PRIMARY_RAMP = {
226
283
  50: "#eef2ff",
@@ -237,39 +294,52 @@ var DEFAULT_PRIMARY_RAMP = {
237
294
  var FONT_SCALE_MIN = 0.875;
238
295
  var FONT_SCALE_MAX = 1.25;
239
296
  var normalizeColor = (value) => typeof value === "string" ? { base: value } : value;
297
+ var resolveColor = (supplied, path) => {
298
+ if (supplied === void 0) return void 0;
299
+ const { base, contrast } = normalizeColor(supplied);
300
+ if (!isValidHex(base)) {
301
+ _chunkR5WI5IGRcjs.devWarn.call(void 0,
302
+ `theme-color-${path}`,
303
+ `ThemeProvider: ${path} is not a valid hex colour (received ${JSON.stringify(base)}). Falling back to the preset.`
304
+ );
305
+ return void 0;
306
+ }
307
+ if (contrast !== void 0 && !isValidHex(contrast)) {
308
+ _chunkR5WI5IGRcjs.devWarn.call(void 0,
309
+ `theme-contrast-${path}`,
310
+ `ThemeProvider: ${path}.contrast is not a valid hex colour (received ${JSON.stringify(contrast)}). It will be computed instead.`
311
+ );
312
+ return { base };
313
+ }
314
+ return contrast === void 0 ? { base } : { base, contrast };
315
+ };
240
316
  var resolveTheme = (theme) => {
241
317
  const colors = {};
318
+ const darkColors = {};
242
319
  for (const key of THEME_COLOR_KEYS) {
243
- const supplied = _optionalChain([theme, 'access', _ => _.colors, 'optionalAccess', _2 => _2[key]]);
244
- const fallback = normalizeColor(defaultTheme.colors[key]);
245
- if (supplied === void 0) {
246
- colors[key] = fallback;
247
- continue;
248
- }
249
- const { base, contrast } = normalizeColor(supplied);
250
- if (!isValidHex(base)) {
251
- _chunkENMDOQQOcjs.devWarn.call(void 0,
252
- `theme-color-${key}`,
253
- `ThemeProvider: colors.${key} is not a valid hex colour (received ${JSON.stringify(base)}). Falling back to the preset.`
254
- );
255
- colors[key] = fallback;
256
- continue;
257
- }
258
- if (contrast !== void 0 && !isValidHex(contrast)) {
259
- _chunkENMDOQQOcjs.devWarn.call(void 0,
260
- `theme-contrast-${key}`,
261
- `ThemeProvider: colors.${key}.contrast is not a valid hex colour (received ${JSON.stringify(contrast)}). It will be computed instead.`
320
+ colors[key] = _nullishCoalesce(resolveColor(_optionalChain([theme, 'access', _ => _.colors, 'optionalAccess', _2 => _2[key]]), `colors.${key}`), () => ( normalizeColor(defaultTheme.colors[key])));
321
+ const explicitDark = resolveColor(_optionalChain([theme, 'access', _3 => _3.dark, 'optionalAccess', _4 => _4.colors, 'optionalAccess', _5 => _5[key]]), `dark.colors.${key}`);
322
+ if (explicitDark) {
323
+ const worst = Math.min(
324
+ contrastRatio(explicitDark.base, DARK_SURFACE),
325
+ contrastRatio(explicitDark.base, DARK_SURFACE_RAISED)
262
326
  );
263
- colors[key] = { base };
264
- continue;
327
+ if (worst < 4.5) {
328
+ _chunkR5WI5IGRcjs.devWarn.call(void 0,
329
+ `theme-dark-contrast-${key}`,
330
+ `ThemeProvider: dark.colors.${key} (${explicitDark.base}) is ${worst.toFixed(2)}:1 against the dark surfaces, below the 4.5:1 text needs. It is used as given, but text in it will fail WCAG AA in the dark scheme - omit it to have a compliant tone derived from colors.${key}.`
331
+ );
332
+ }
333
+ darkColors[key] = explicitDark;
334
+ } else {
335
+ darkColors[key] = { base: deriveDarkBase(colors[key].base) };
265
336
  }
266
- colors[key] = contrast === void 0 ? { base } : { base, contrast };
267
337
  }
268
- const scale = _optionalChain([theme, 'access', _3 => _3.typography, 'optionalAccess', _4 => _4.fontScale]);
338
+ const scale = _optionalChain([theme, 'access', _6 => _6.typography, 'optionalAccess', _7 => _7.fontScale]);
269
339
  let fontScale = defaultTheme.typography.fontScale;
270
340
  if (scale !== void 0) {
271
341
  if (!Number.isFinite(scale) || scale < FONT_SCALE_MIN || scale > FONT_SCALE_MAX) {
272
- _chunkENMDOQQOcjs.devWarn.call(void 0,
342
+ _chunkR5WI5IGRcjs.devWarn.call(void 0,
273
343
  "theme-font-scale",
274
344
  `ThemeProvider: typography.fontScale must be between ${FONT_SCALE_MIN} and ${FONT_SCALE_MAX} (received ${String(scale)}). Falling back to ${fontScale}.`
275
345
  );
@@ -280,13 +350,15 @@ var resolveTheme = (theme) => {
280
350
  return {
281
351
  colors,
282
352
  typography: {
283
- fontFamily: _optionalChain([theme, 'access', _5 => _5.typography, 'optionalAccess', _6 => _6.fontFamily]) || defaultTheme.typography.fontFamily,
284
- monoFamily: _optionalChain([theme, 'access', _7 => _7.typography, 'optionalAccess', _8 => _8.monoFamily]) || defaultTheme.typography.monoFamily,
353
+ fontFamily: _optionalChain([theme, 'access', _8 => _8.typography, 'optionalAccess', _9 => _9.fontFamily]) || defaultTheme.typography.fontFamily,
354
+ monoFamily: _optionalChain([theme, 'access', _10 => _10.typography, 'optionalAccess', _11 => _11.monoFamily]) || defaultTheme.typography.monoFamily,
285
355
  fontScale
286
- }
356
+ },
357
+ dark: { colors: darkColors }
287
358
  };
288
359
  };
289
- var buildTokens = (resolved) => {
360
+ var buildTokens = (resolved, scheme = "light") => {
361
+ if (scheme === "dark") return buildDarkTokens(resolved);
290
362
  const tokens = {};
291
363
  for (const key of THEME_COLOR_KEYS) {
292
364
  const { base, contrast } = resolved.colors[key];
@@ -301,7 +373,7 @@ var buildTokens = (resolved) => {
301
373
  const isPreset = base === normalizeColor(defaultTheme.colors[key]).base;
302
374
  const ramp = isPreset ? DEFAULT_PRIMARY_RAMP : buildRamp(base);
303
375
  if (!isPreset && !isRampViable(base)) {
304
- _chunkENMDOQQOcjs.devWarn.call(void 0,
376
+ _chunkR5WI5IGRcjs.devWarn.call(void 0,
305
377
  `theme-ramp-${key}`,
306
378
  `ThemeProvider: colors.${key} (${base}) is too light or too dark to generate a usable --${key}-50\u2026900 scale; several steps will be identical. Pick a colour with more headroom.`
307
379
  );
@@ -311,6 +383,11 @@ var buildTokens = (resolved) => {
311
383
  }
312
384
  }
313
385
  }
386
+ Object.assign(tokens, typographyTokens(resolved));
387
+ return tokens;
388
+ };
389
+ var typographyTokens = (resolved) => {
390
+ const tokens = {};
314
391
  const { fontFamily, monoFamily, fontScale } = resolved.typography;
315
392
  tokens["--font-family-primary"] = fontFamily;
316
393
  tokens["--font-family-mono"] = monoFamily;
@@ -319,35 +396,84 @@ var buildTokens = (resolved) => {
319
396
  }
320
397
  return tokens;
321
398
  };
322
- var DEFAULT_TOKENS = buildTokens(resolveTheme(defaultTheme));
323
- var diffFromDefault = (tokens) => {
399
+ var buildDarkTokens = (resolved) => {
400
+ const tokens = {};
401
+ for (const key of THEME_COLOR_KEYS) {
402
+ const { base, contrast } = resolved.dark.colors[key];
403
+ tokens[`--${key}-color`] = base;
404
+ tokens[`--${key}-rgb`] = hexToRgbTriple(base);
405
+ tokens[`--${key}-dark`] = deriveDarkHover(base);
406
+ tokens[`--${key}-light`] = deriveDarkLight(base);
407
+ if (FILL_COLOR_KEYS.includes(key)) {
408
+ tokens[`--${key}-contrast`] = _nullishCoalesce(contrast, () => ( pickContrast(base)));
409
+ }
410
+ if (key === RAMP_COLOR_KEY) {
411
+ const ramp = buildDarkRamp(base);
412
+ for (const step of RAMP_STEPS) tokens[`--${key}-${step}`] = ramp[step];
413
+ }
414
+ }
415
+ Object.assign(tokens, typographyTokens(resolved));
416
+ return tokens;
417
+ };
418
+ var DEFAULT_TOKENS = {
419
+ light: buildTokens(resolveTheme(defaultTheme), "light"),
420
+ dark: buildTokens(resolveTheme(defaultTheme), "dark")
421
+ };
422
+ var diffFromDefault = (tokens, scheme = "light") => {
324
423
  const diff = {};
325
424
  for (const [name, value] of Object.entries(tokens)) {
326
- if (DEFAULT_TOKENS[name] !== value) diff[name] = value;
425
+ if (DEFAULT_TOKENS[scheme][name] !== value) diff[name] = value;
327
426
  }
328
427
  return diff;
329
428
  };
429
+ var block = (selector, tokens, indent = "") => `${indent}${selector} {
430
+ ` + Object.entries(tokens).map(([name, value]) => `${indent} ${name}: ${value};`).join("\n") + `
431
+ ${indent}}`;
330
432
  var themeToCss = (resolved) => {
331
- const tokens = buildTokens(resolved);
332
- const body = Object.entries(tokens).map(([name, value]) => ` ${name}: ${value};`).join("\n");
333
- return `:root {
334
- ${body}
335
- }`;
433
+ const light = buildTokens(resolved, "light");
434
+ const dark = Object.fromEntries(
435
+ Object.entries(buildTokens(resolved, "dark")).filter(([name]) => !name.startsWith("--font-"))
436
+ );
437
+ return [
438
+ block(":root", light),
439
+ block(":root[data-color-scheme='dark']", dark),
440
+ `@media (prefers-color-scheme: dark) {
441
+ ${block(":root[data-color-scheme='system']", dark, " ")}
442
+ }`
443
+ ].join("\n\n");
336
444
  };
337
445
 
338
446
  // src/components/ThemeProvider/ThemeProvider.component.tsx
339
447
  var _jsxruntime = require('react/jsx-runtime');
448
+ var SCHEME_ATTRIBUTE = "data-color-scheme";
449
+ var isColorScheme = (value) => value === "light" || value === "dark" || value === "system";
450
+ var readPageScheme = () => {
451
+ const value = document.documentElement.getAttribute(SCHEME_ATTRIBUTE);
452
+ return isColorScheme(value) ? value : "light";
453
+ };
454
+ var DARK_QUERY = "(prefers-color-scheme: dark)";
455
+ var subscribeToPrefersDark = (onChange) => {
456
+ const query = _optionalChain([window, 'access', _12 => _12.matchMedia, 'optionalCall', _13 => _13(DARK_QUERY)]);
457
+ _optionalChain([query, 'optionalAccess', _14 => _14.addEventListener, 'call', _15 => _15("change", onChange)]);
458
+ return () => _optionalChain([query, 'optionalAccess', _16 => _16.removeEventListener, 'call', _17 => _17("change", onChange)]);
459
+ };
460
+ var getPrefersDark = () => _nullishCoalesce(_optionalChain([window, 'access', _18 => _18.matchMedia, 'optionalCall', _19 => _19(DARK_QUERY), 'access', _20 => _20.matches]), () => ( false));
461
+ var getServerPrefersDark = () => false;
340
462
  var EMPTY_THEME = {};
341
463
  var mountedProviders = 0;
342
464
  var mergeTheme = (base, patch) => ({
343
465
  colors: { ...base.colors, ...patch.colors },
344
- typography: { ...base.typography, ...patch.typography }
466
+ typography: { ...base.typography, ...patch.typography },
467
+ dark: { colors: { ..._optionalChain([base, 'access', _21 => _21.dark, 'optionalAccess', _22 => _22.colors]), ..._optionalChain([patch, 'access', _23 => _23.dark, 'optionalAccess', _24 => _24.colors]) } }
345
468
  });
346
469
  var ThemeProvider = ({
347
470
  children,
348
471
  theme: controlledTheme,
349
472
  defaultTheme: initialTheme,
350
- onThemeChange
473
+ onThemeChange,
474
+ colorScheme: controlledScheme,
475
+ defaultColorScheme,
476
+ onColorSchemeChange
351
477
  }) => {
352
478
  const isControlled = controlledTheme !== void 0;
353
479
  const [uncontrolledTheme, setUncontrolledTheme] = _react.useState.call(void 0,
@@ -357,7 +483,7 @@ var ThemeProvider = ({
357
483
  _react.useEffect.call(void 0, () => {
358
484
  mountedProviders += 1;
359
485
  if (mountedProviders > 1) {
360
- _chunkENMDOQQOcjs.devWarn.call(void 0,
486
+ _chunkR5WI5IGRcjs.devWarn.call(void 0,
361
487
  "theme-multiple-providers",
362
488
  `ThemeProvider: ${mountedProviders} providers are mounted at once. They all write to document.documentElement, so the last one to apply each token wins for the whole page - nested or sibling providers cannot theme separate subtrees. Use a single provider at your app root.`
363
489
  );
@@ -366,8 +492,51 @@ var ThemeProvider = ({
366
492
  mountedProviders -= 1;
367
493
  };
368
494
  }, []);
495
+ const [uncontrolledScheme, setUncontrolledScheme] = _react.useState.call(void 0,
496
+ defaultColorScheme
497
+ );
498
+ const managedScheme = _nullishCoalesce(controlledScheme, () => ( uncontrolledScheme));
499
+ const [pageScheme, setPageScheme] = _react.useState.call(void 0, "light");
500
+ _react.useLayoutEffect.call(void 0, () => {
501
+ if (managedScheme !== void 0) return;
502
+ setPageScheme(readPageScheme());
503
+ const observer = new MutationObserver(() => setPageScheme(readPageScheme()));
504
+ observer.observe(document.documentElement, { attributeFilter: [SCHEME_ATTRIBUTE] });
505
+ return () => observer.disconnect();
506
+ }, [managedScheme]);
507
+ _react.useLayoutEffect.call(void 0, () => {
508
+ if (managedScheme === void 0) return;
509
+ const root = document.documentElement;
510
+ const previous = root.getAttribute(SCHEME_ATTRIBUTE);
511
+ root.setAttribute(SCHEME_ATTRIBUTE, managedScheme);
512
+ return () => {
513
+ if (previous === null) root.removeAttribute(SCHEME_ATTRIBUTE);
514
+ else root.setAttribute(SCHEME_ATTRIBUTE, previous);
515
+ };
516
+ }, [managedScheme]);
517
+ const colorScheme = _nullishCoalesce(managedScheme, () => ( pageScheme));
518
+ const prefersDark = _react.useSyncExternalStore.call(void 0,
519
+ subscribeToPrefersDark,
520
+ getPrefersDark,
521
+ getServerPrefersDark
522
+ );
523
+ const resolvedColorScheme = colorScheme === "system" ? prefersDark ? "dark" : "light" : colorScheme;
524
+ const setColorScheme = _react.useCallback.call(void 0,
525
+ (next) => {
526
+ if (controlledScheme === void 0) setUncontrolledScheme(next);
527
+ _optionalChain([onColorSchemeChange, 'optionalCall', _25 => _25(next)]);
528
+ },
529
+ [controlledScheme, onColorSchemeChange]
530
+ );
369
531
  const resolvedTheme = _react.useMemo.call(void 0, () => resolveTheme(theme), [theme]);
370
- const tokens = _react.useMemo.call(void 0, () => diffFromDefault(buildTokens(resolvedTheme)), [resolvedTheme]);
532
+ const tokens = _react.useMemo.call(void 0,
533
+ () => diffFromDefault(buildTokens(resolvedTheme, resolvedColorScheme), resolvedColorScheme),
534
+ [resolvedTheme, resolvedColorScheme]
535
+ );
536
+ const isDefault = _react.useMemo.call(void 0,
537
+ () => Object.keys(diffFromDefault(buildTokens(resolvedTheme, "light"), "light")).length === 0 && Object.keys(diffFromDefault(buildTokens(resolvedTheme, "dark"), "dark")).length === 0,
538
+ [resolvedTheme]
539
+ );
371
540
  const appliedRef = _react.useRef.call(void 0, []);
372
541
  _react.useLayoutEffect.call(void 0, () => {
373
542
  if (typeof document === "undefined") return;
@@ -389,7 +558,7 @@ var ThemeProvider = ({
389
558
  const commit = _react.useCallback.call(void 0,
390
559
  (next) => {
391
560
  if (!isControlled) setUncontrolledTheme(next);
392
- _optionalChain([onThemeChange, 'optionalCall', _9 => _9(next)]);
561
+ _optionalChain([onThemeChange, 'optionalCall', _26 => _26(next)]);
393
562
  },
394
563
  [isControlled, onThemeChange]
395
564
  );
@@ -407,10 +576,24 @@ var ThemeProvider = ({
407
576
  setTheme,
408
577
  updateTheme,
409
578
  resetTheme,
410
- isDefault: Object.keys(tokens).length === 0,
411
- toCss
579
+ isDefault,
580
+ toCss,
581
+ colorScheme,
582
+ resolvedColorScheme,
583
+ setColorScheme
412
584
  }),
413
- [theme, resolvedTheme, setTheme, updateTheme, resetTheme, tokens, toCss]
585
+ [
586
+ theme,
587
+ resolvedTheme,
588
+ setTheme,
589
+ updateTheme,
590
+ resetTheme,
591
+ isDefault,
592
+ toCss,
593
+ colorScheme,
594
+ resolvedColorScheme,
595
+ setColorScheme
596
+ ]
414
597
  );
415
598
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ThemeContext.Provider, { value, children });
416
599
  };
@@ -520,5 +703,6 @@ var isFontStackAvailable = (stack) => isFontAvailable(_nullishCoalesce(stack.spl
520
703
 
521
704
 
522
705
 
523
- exports.useTheme = useTheme; exports.contrastRatio = contrastRatio; exports.CONTRAST_LIGHT = CONTRAST_LIGHT; exports.CONTRAST_DARK = CONTRAST_DARK; exports.pickContrast = pickContrast; exports.THEME_COLOR_KEYS = THEME_COLOR_KEYS; exports.defaultTheme = defaultTheme; exports.FONT_SCALE_MIN = FONT_SCALE_MIN; exports.FONT_SCALE_MAX = FONT_SCALE_MAX; exports.ThemeProvider = ThemeProvider; exports.familyNameFromFile = familyNameFromFile; exports.toFontStack = toFontStack; exports.FONT_ACCEPT = FONT_ACCEPT; exports.registerFontFace = registerFontFace; exports.registerFontFile = registerFontFile; exports.subscribeToFontLoads = subscribeToFontLoads; exports.isFontAvailable = isFontAvailable; exports.isFontStackAvailable = isFontStackAvailable;
524
- //# sourceMappingURL=chunk-H46ZLPNJ.cjs.map
706
+
707
+ exports.useTheme = useTheme; exports.contrastRatio = contrastRatio; exports.CONTRAST_LIGHT = CONTRAST_LIGHT; exports.CONTRAST_DARK = CONTRAST_DARK; exports.pickContrast = pickContrast; exports.DARK_SURFACE = DARK_SURFACE; exports.THEME_COLOR_KEYS = THEME_COLOR_KEYS; exports.defaultTheme = defaultTheme; exports.FONT_SCALE_MIN = FONT_SCALE_MIN; exports.FONT_SCALE_MAX = FONT_SCALE_MAX; exports.ThemeProvider = ThemeProvider; exports.familyNameFromFile = familyNameFromFile; exports.toFontStack = toFontStack; exports.FONT_ACCEPT = FONT_ACCEPT; exports.registerFontFace = registerFontFace; exports.registerFontFile = registerFontFile; exports.subscribeToFontLoads = subscribeToFontLoads; exports.isFontAvailable = isFontAvailable; exports.isFontStackAvailable = isFontStackAvailable;
708
+ //# sourceMappingURL=chunk-O45W57Y4.cjs.map