eidos-ui 2.0.0 → 3.0.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 (263) hide show
  1. package/README.md +66 -16
  2. package/dist/Avatar.types-BY-C09Ke.d.cts +23 -0
  3. package/dist/Avatar.types-BY-C09Ke.d.ts +23 -0
  4. package/dist/{Header.types-BZi80bWz.d.cts → Header.types-B3QtuiL-.d.cts} +7 -3
  5. package/dist/{Header.types-DJt-q01P.d.ts → Header.types-C6w0FBY8.d.ts} +7 -3
  6. package/dist/{Table.types-Cl5gR8r9.d.cts → Table.types-CPj-udMc.d.cts} +95 -0
  7. package/dist/{Table.types-jhPb7JNU.d.ts → Table.types-CZZ7QWAI.d.ts} +95 -0
  8. package/dist/ThemeProvider.types-DgXN0gEH.d.cts +88 -0
  9. package/dist/ThemeProvider.types-DgXN0gEH.d.ts +88 -0
  10. package/dist/Toolbar.types-DSk8z2iy.d.cts +38 -0
  11. package/dist/Toolbar.types-RN0klQzu.d.ts +38 -0
  12. package/dist/alert/index.cjs +4 -4
  13. package/dist/alert/index.d.cts +2 -1
  14. package/dist/alert/index.d.ts +2 -1
  15. package/dist/alert/index.js +3 -3
  16. package/dist/avatar/index.d.cts +3 -21
  17. package/dist/avatar/index.d.ts +3 -21
  18. package/dist/button/index.cjs +3 -3
  19. package/dist/button/index.js +2 -2
  20. package/dist/chip/index.cjs +3 -3
  21. package/dist/chip/index.js +2 -2
  22. package/dist/chunk-2ZY7M72Q.js +521 -0
  23. package/dist/chunk-2ZY7M72Q.js.map +1 -0
  24. package/dist/{chunk-KIXFSXIN.cjs → chunk-3E7TKBQI.cjs} +5 -3
  25. package/dist/chunk-3E7TKBQI.cjs.map +1 -0
  26. package/dist/{chunk-ZBKJ3EMK.cjs → chunk-442U3W6R.cjs} +3 -3
  27. package/dist/{chunk-ZBKJ3EMK.cjs.map → chunk-442U3W6R.cjs.map} +1 -1
  28. package/dist/{chunk-W6IKHJ76.cjs → chunk-5BX4Q76D.cjs} +134 -126
  29. package/dist/chunk-5BX4Q76D.cjs.map +1 -0
  30. package/dist/{chunk-YQLCPKGV.js → chunk-5HUZYY54.js} +6 -4
  31. package/dist/chunk-5HUZYY54.js.map +1 -0
  32. package/dist/{chunk-G5IGADJI.cjs → chunk-5VM2256W.cjs} +7 -11
  33. package/dist/chunk-5VM2256W.cjs.map +1 -0
  34. package/dist/{chunk-Z4ZY7L7W.js → chunk-5ZL6PYU3.js} +3 -3
  35. package/dist/{chunk-A3NE2C7C.js → chunk-67RFMV6K.js} +2 -2
  36. package/dist/{chunk-2U7UJOOB.cjs → chunk-6HUHH6Y4.cjs} +17 -15
  37. package/dist/chunk-6HUHH6Y4.cjs.map +1 -0
  38. package/dist/{chunk-5WROPW7Z.js → chunk-A7WQINIG.js} +3 -3
  39. package/dist/{chunk-DKZTDYH5.cjs → chunk-AAA6TR5I.cjs} +3 -3
  40. package/dist/{chunk-DKZTDYH5.cjs.map → chunk-AAA6TR5I.cjs.map} +1 -1
  41. package/dist/{chunk-A7Z2QAFZ.cjs → chunk-APK5OQRV.cjs} +5 -5
  42. package/dist/{chunk-A7Z2QAFZ.cjs.map → chunk-APK5OQRV.cjs.map} +1 -1
  43. package/dist/{chunk-ISABZ2VX.cjs → chunk-AXBYJ2OY.cjs} +9 -9
  44. package/dist/{chunk-ISABZ2VX.cjs.map → chunk-AXBYJ2OY.cjs.map} +1 -1
  45. package/dist/{chunk-6RGJAQCU.cjs → chunk-B5G5XVFJ.cjs} +5 -5
  46. package/dist/{chunk-6RGJAQCU.cjs.map → chunk-B5G5XVFJ.cjs.map} +1 -1
  47. package/dist/{chunk-MW2S7PZ7.cjs → chunk-D5IY2HUV.cjs} +5 -5
  48. package/dist/{chunk-MW2S7PZ7.cjs.map → chunk-D5IY2HUV.cjs.map} +1 -1
  49. package/dist/{chunk-FMPXSF3H.cjs → chunk-DAXZRNNO.cjs} +4 -4
  50. package/dist/{chunk-FMPXSF3H.cjs.map → chunk-DAXZRNNO.cjs.map} +1 -1
  51. package/dist/{chunk-AJZTVCST.js → chunk-EXITZVB2.js} +24 -9
  52. package/dist/chunk-EXITZVB2.js.map +1 -0
  53. package/dist/{chunk-AYMD4D4M.cjs → chunk-EZME5CLK.cjs} +3 -3
  54. package/dist/{chunk-AYMD4D4M.cjs.map → chunk-EZME5CLK.cjs.map} +1 -1
  55. package/dist/{chunk-IV4LM3MB.js → chunk-F26VIKNF.js} +9 -11
  56. package/dist/chunk-F26VIKNF.js.map +1 -0
  57. package/dist/{chunk-WPTMMOA6.cjs → chunk-G77YR73R.cjs} +10 -13
  58. package/dist/chunk-G77YR73R.cjs.map +1 -0
  59. package/dist/chunk-GEHL4LKK.cjs +32 -0
  60. package/dist/chunk-GEHL4LKK.cjs.map +1 -0
  61. package/dist/chunk-GGSII6Y2.cjs +921 -0
  62. package/dist/chunk-GGSII6Y2.cjs.map +1 -0
  63. package/dist/{chunk-3VRMTWUS.js → chunk-GHQ6SQPI.js} +7 -10
  64. package/dist/chunk-GHQ6SQPI.js.map +1 -0
  65. package/dist/{chunk-56B6RLOE.js → chunk-GI6VJYOS.js} +4 -4
  66. package/dist/{chunk-56B6RLOE.js.map → chunk-GI6VJYOS.js.map} +1 -1
  67. package/dist/{chunk-UGMONQGH.cjs → chunk-GR2PMCVN.cjs} +10 -12
  68. package/dist/chunk-GR2PMCVN.cjs.map +1 -0
  69. package/dist/{chunk-7AHZTHXR.cjs → chunk-GT22EGJP.cjs} +5 -5
  70. package/dist/{chunk-7AHZTHXR.cjs.map → chunk-GT22EGJP.cjs.map} +1 -1
  71. package/dist/chunk-H5HWFOWZ.js +390 -0
  72. package/dist/chunk-H5HWFOWZ.js.map +1 -0
  73. package/dist/{chunk-ALGX5X4N.js → chunk-IFVT5UCY.js} +3 -3
  74. package/dist/{chunk-5CLC3FJO.js → chunk-KBG77JHC.js} +13 -2
  75. package/dist/chunk-KBG77JHC.js.map +1 -0
  76. package/dist/{chunk-HLNKIAE5.cjs → chunk-KJZUYC4X.cjs} +5 -5
  77. package/dist/{chunk-HLNKIAE5.cjs.map → chunk-KJZUYC4X.cjs.map} +1 -1
  78. package/dist/{chunk-JV7Z3D3U.js → chunk-LEMCJW57.js} +134 -126
  79. package/dist/chunk-LEMCJW57.js.map +1 -0
  80. package/dist/{chunk-4BQM5F76.cjs → chunk-LFWPQYWX.cjs} +3 -3
  81. package/dist/{chunk-4BQM5F76.cjs.map → chunk-LFWPQYWX.cjs.map} +1 -1
  82. package/dist/{chunk-XVSODE4K.cjs → chunk-LIFUHQH5.cjs} +35 -20
  83. package/dist/chunk-LIFUHQH5.cjs.map +1 -0
  84. package/dist/{chunk-PJC7NZUV.cjs → chunk-LUL6RZ4M.cjs} +3 -3
  85. package/dist/{chunk-PJC7NZUV.cjs.map → chunk-LUL6RZ4M.cjs.map} +1 -1
  86. package/dist/{chunk-4UJ7LG4W.cjs → chunk-N2IGZIEX.cjs} +3 -3
  87. package/dist/{chunk-4UJ7LG4W.cjs.map → chunk-N2IGZIEX.cjs.map} +1 -1
  88. package/dist/{chunk-3LHQUOGP.js → chunk-NGVOXM7P.js} +3 -3
  89. package/dist/{chunk-WTXASLBB.js → chunk-O5WEKLNF.js} +2 -2
  90. package/dist/{chunk-BOB5JJ7F.js → chunk-P7IQY5YH.js} +2 -2
  91. package/dist/{chunk-VZYLJSV5.js → chunk-R4PU2TBM.js} +2 -2
  92. package/dist/{chunk-P2GCAVUZ.js → chunk-RAZRQ57B.js} +2 -2
  93. package/dist/{chunk-K7IFNKMN.js → chunk-REVK7IGN.js} +2 -2
  94. package/dist/{chunk-6U2H26A4.cjs → chunk-RHOT7AEI.cjs} +3 -3
  95. package/dist/{chunk-6U2H26A4.cjs.map → chunk-RHOT7AEI.cjs.map} +1 -1
  96. package/dist/{chunk-MH2CD2QT.js → chunk-RKA2OJRT.js} +207 -102
  97. package/dist/chunk-RKA2OJRT.js.map +1 -0
  98. package/dist/{chunk-JC4WLVBG.js → chunk-RWOX2NJN.js} +2 -2
  99. package/dist/{chunk-4LM33LDV.js → chunk-S3CT536K.js} +2 -2
  100. package/dist/chunk-SE7MWOC7.cjs +390 -0
  101. package/dist/chunk-SE7MWOC7.cjs.map +1 -0
  102. package/dist/{chunk-4M3LZLOH.js → chunk-SHYSLWQG.js} +2 -2
  103. package/dist/{chunk-EQEV7GPT.cjs → chunk-SKEWTQJ7.cjs} +5 -5
  104. package/dist/{chunk-EQEV7GPT.cjs.map → chunk-SKEWTQJ7.cjs.map} +1 -1
  105. package/dist/{chunk-2ZENLZEQ.cjs → chunk-SKTDGCWJ.cjs} +232 -127
  106. package/dist/chunk-SKTDGCWJ.cjs.map +1 -0
  107. package/dist/{chunk-2BXCIWL7.js → chunk-SN6EWQDJ.js} +3 -3
  108. package/dist/{chunk-DW2YDWGN.js → chunk-TEJIPPZR.js} +2 -2
  109. package/dist/{chunk-OGKD5PLS.cjs → chunk-TRLBYA5G.cjs} +4 -4
  110. package/dist/{chunk-OGKD5PLS.cjs.map → chunk-TRLBYA5G.cjs.map} +1 -1
  111. package/dist/chunk-U5FHQ73U.cjs +521 -0
  112. package/dist/chunk-U5FHQ73U.cjs.map +1 -0
  113. package/dist/{chunk-WE5FTQGD.js → chunk-VHMOKXUT.js} +3 -7
  114. package/dist/chunk-VHMOKXUT.js.map +1 -0
  115. package/dist/{chunk-S77GR5YQ.cjs → chunk-VHQTDITV.cjs} +3 -3
  116. package/dist/{chunk-S77GR5YQ.cjs.map → chunk-VHQTDITV.cjs.map} +1 -1
  117. package/dist/{chunk-3HMKE2GJ.js → chunk-VSTQEHVZ.js} +6 -4
  118. package/dist/chunk-VSTQEHVZ.js.map +1 -0
  119. package/dist/{chunk-HNUTV3HR.cjs → chunk-WUBQJVB7.cjs} +3 -3
  120. package/dist/{chunk-HNUTV3HR.cjs.map → chunk-WUBQJVB7.cjs.map} +1 -1
  121. package/dist/{chunk-S7TWEVC3.js → chunk-Y53HCLGW.js} +2 -2
  122. package/dist/{chunk-WIE7HDIM.js → chunk-YJXZR7RL.js} +2 -2
  123. package/dist/{chunk-IJYYHBZC.cjs → chunk-Z4SLV6WG.cjs} +3 -3
  124. package/dist/{chunk-IJYYHBZC.cjs.map → chunk-Z4SLV6WG.cjs.map} +1 -1
  125. package/dist/chunk-ZEZK664O.js +921 -0
  126. package/dist/chunk-ZEZK664O.js.map +1 -0
  127. package/dist/{chunk-JMD3P4CY.js → chunk-ZHFPV43D.js} +2 -2
  128. package/dist/color-picker/index.cjs +2 -2
  129. package/dist/color-picker/index.js +1 -1
  130. package/dist/combobox/index.cjs +4 -4
  131. package/dist/combobox/index.js +3 -3
  132. package/dist/context-menu/index.cjs +4 -4
  133. package/dist/context-menu/index.js +3 -3
  134. package/dist/data-grid/index.cjs +13 -13
  135. package/dist/data-grid/index.d.cts +49 -3
  136. package/dist/data-grid/index.d.ts +49 -3
  137. package/dist/data-grid/index.js +12 -12
  138. package/dist/date-picker/index.cjs +6 -6
  139. package/dist/date-picker/index.js +5 -5
  140. package/dist/drawer/index.cjs +4 -4
  141. package/dist/drawer/index.d.cts +2 -1
  142. package/dist/drawer/index.d.ts +2 -1
  143. package/dist/drawer/index.js +3 -3
  144. package/dist/empty-state/index.d.cts +2 -2
  145. package/dist/empty-state/index.d.ts +2 -2
  146. package/dist/fonts/JetBrains-Mono-OFL.txt +93 -0
  147. package/dist/fonts/Plus-Jakarta-Sans-OFL.txt +93 -0
  148. package/dist/fonts/jetbrains-mono-latin-ext-wght-normal.woff2 +0 -0
  149. package/dist/fonts/jetbrains-mono-latin-wght-normal.woff2 +0 -0
  150. package/dist/fonts/plus-jakarta-sans-latin-ext-wght-normal.woff2 +0 -0
  151. package/dist/fonts/plus-jakarta-sans-latin-wght-normal.woff2 +0 -0
  152. package/dist/fonts.css +32 -0
  153. package/dist/fonts.css.d.ts +2 -0
  154. package/dist/header/index.cjs +4 -4
  155. package/dist/header/index.d.cts +2 -2
  156. package/dist/header/index.d.ts +2 -2
  157. package/dist/header/index.js +3 -3
  158. package/dist/index.cjs +59 -33
  159. package/dist/index.cjs.map +1 -1
  160. package/dist/index.css +625 -174
  161. package/dist/index.d.cts +8 -4
  162. package/dist/index.d.ts +8 -4
  163. package/dist/index.js +62 -36
  164. package/dist/inline-edit/index.cjs +4 -4
  165. package/dist/inline-edit/index.js +3 -3
  166. package/dist/input/index.cjs +3 -3
  167. package/dist/input/index.js +2 -2
  168. package/dist/menu/index.cjs +3 -3
  169. package/dist/menu/index.js +2 -2
  170. package/dist/modal/index.cjs +4 -4
  171. package/dist/modal/index.d.cts +2 -1
  172. package/dist/modal/index.d.ts +2 -1
  173. package/dist/modal/index.js +3 -3
  174. package/dist/navigation/index.cjs +4 -4
  175. package/dist/navigation/index.js +3 -3
  176. package/dist/page-layout/index.cjs +8 -8
  177. package/dist/page-layout/index.d.cts +3 -2
  178. package/dist/page-layout/index.d.ts +3 -2
  179. package/dist/page-layout/index.js +7 -7
  180. package/dist/pagination/index.cjs +6 -6
  181. package/dist/pagination/index.js +5 -5
  182. package/dist/popover/index.cjs +2 -2
  183. package/dist/popover/index.d.cts +2 -2
  184. package/dist/popover/index.d.ts +2 -2
  185. package/dist/popover/index.js +1 -1
  186. package/dist/segmented-control/index.cjs +3 -3
  187. package/dist/segmented-control/index.js +2 -2
  188. package/dist/select/index.cjs +4 -4
  189. package/dist/select/index.js +3 -3
  190. package/dist/snackbar/index.cjs +4 -4
  191. package/dist/snackbar/index.js +3 -3
  192. package/dist/split-button/index.cjs +4 -4
  193. package/dist/split-button/index.js +3 -3
  194. package/dist/table/index.cjs +11 -11
  195. package/dist/table/index.d.cts +3 -3
  196. package/dist/table/index.d.ts +3 -3
  197. package/dist/table/index.js +10 -10
  198. package/dist/tabs/index.cjs +3 -3
  199. package/dist/tabs/index.js +2 -2
  200. package/dist/tag-input/index.cjs +4 -4
  201. package/dist/tag-input/index.js +3 -3
  202. package/dist/textarea/index.cjs +3 -3
  203. package/dist/textarea/index.js +2 -2
  204. package/dist/theme-editor/index.cjs +22 -0
  205. package/dist/theme-editor/index.cjs.map +1 -0
  206. package/dist/theme-editor/index.d.cts +65 -0
  207. package/dist/theme-editor/index.d.ts +65 -0
  208. package/dist/theme-editor/index.js +22 -0
  209. package/dist/theme-editor/index.js.map +1 -0
  210. package/dist/theme-provider/index.cjs +27 -0
  211. package/dist/theme-provider/index.cjs.map +1 -0
  212. package/dist/theme-provider/index.d.cts +123 -0
  213. package/dist/theme-provider/index.d.ts +123 -0
  214. package/dist/theme-provider/index.js +27 -0
  215. package/dist/theme-provider/index.js.map +1 -0
  216. package/dist/toolbar/index.cjs +5 -5
  217. package/dist/toolbar/index.d.cts +3 -2
  218. package/dist/toolbar/index.d.ts +3 -2
  219. package/dist/toolbar/index.js +4 -4
  220. package/package.json +17 -6
  221. package/dist/Toolbar.types-BGD57Uhm.d.ts +0 -22
  222. package/dist/Toolbar.types-tQkLmPIu.d.cts +0 -22
  223. package/dist/chunk-2U7UJOOB.cjs.map +0 -1
  224. package/dist/chunk-2ZENLZEQ.cjs.map +0 -1
  225. package/dist/chunk-3HMKE2GJ.js.map +0 -1
  226. package/dist/chunk-3VRMTWUS.js.map +0 -1
  227. package/dist/chunk-5CLC3FJO.js.map +0 -1
  228. package/dist/chunk-AJZTVCST.js.map +0 -1
  229. package/dist/chunk-G5IGADJI.cjs.map +0 -1
  230. package/dist/chunk-GOR642KK.cjs +0 -21
  231. package/dist/chunk-GOR642KK.cjs.map +0 -1
  232. package/dist/chunk-IV4LM3MB.js.map +0 -1
  233. package/dist/chunk-JV7Z3D3U.js.map +0 -1
  234. package/dist/chunk-KIXFSXIN.cjs.map +0 -1
  235. package/dist/chunk-MH2CD2QT.js.map +0 -1
  236. package/dist/chunk-QONDJ5VM.cjs +0 -744
  237. package/dist/chunk-QONDJ5VM.cjs.map +0 -1
  238. package/dist/chunk-UGMONQGH.cjs.map +0 -1
  239. package/dist/chunk-VSFKM7FE.js +0 -744
  240. package/dist/chunk-VSFKM7FE.js.map +0 -1
  241. package/dist/chunk-W6IKHJ76.cjs.map +0 -1
  242. package/dist/chunk-WE5FTQGD.js.map +0 -1
  243. package/dist/chunk-WPTMMOA6.cjs.map +0 -1
  244. package/dist/chunk-XVSODE4K.cjs.map +0 -1
  245. package/dist/chunk-YQLCPKGV.js.map +0 -1
  246. /package/dist/{chunk-Z4ZY7L7W.js.map → chunk-5ZL6PYU3.js.map} +0 -0
  247. /package/dist/{chunk-A3NE2C7C.js.map → chunk-67RFMV6K.js.map} +0 -0
  248. /package/dist/{chunk-5WROPW7Z.js.map → chunk-A7WQINIG.js.map} +0 -0
  249. /package/dist/{chunk-ALGX5X4N.js.map → chunk-IFVT5UCY.js.map} +0 -0
  250. /package/dist/{chunk-3LHQUOGP.js.map → chunk-NGVOXM7P.js.map} +0 -0
  251. /package/dist/{chunk-WTXASLBB.js.map → chunk-O5WEKLNF.js.map} +0 -0
  252. /package/dist/{chunk-BOB5JJ7F.js.map → chunk-P7IQY5YH.js.map} +0 -0
  253. /package/dist/{chunk-VZYLJSV5.js.map → chunk-R4PU2TBM.js.map} +0 -0
  254. /package/dist/{chunk-P2GCAVUZ.js.map → chunk-RAZRQ57B.js.map} +0 -0
  255. /package/dist/{chunk-K7IFNKMN.js.map → chunk-REVK7IGN.js.map} +0 -0
  256. /package/dist/{chunk-JC4WLVBG.js.map → chunk-RWOX2NJN.js.map} +0 -0
  257. /package/dist/{chunk-4LM33LDV.js.map → chunk-S3CT536K.js.map} +0 -0
  258. /package/dist/{chunk-4M3LZLOH.js.map → chunk-SHYSLWQG.js.map} +0 -0
  259. /package/dist/{chunk-2BXCIWL7.js.map → chunk-SN6EWQDJ.js.map} +0 -0
  260. /package/dist/{chunk-DW2YDWGN.js.map → chunk-TEJIPPZR.js.map} +0 -0
  261. /package/dist/{chunk-S7TWEVC3.js.map → chunk-Y53HCLGW.js.map} +0 -0
  262. /package/dist/{chunk-WIE7HDIM.js.map → chunk-YJXZR7RL.js.map} +0 -0
  263. /package/dist/{chunk-JMD3P4CY.js.map → chunk-ZHFPV43D.js.map} +0 -0
@@ -0,0 +1,123 @@
1
+ import React__default from 'react';
2
+ import { f as ThemeProviderProps, d as ThemeContextValue, c as ThemeConfig } from '../ThemeProvider.types-DgXN0gEH.cjs';
3
+ export { R as ResolvedTheme, T as ThemeColorKey, a as ThemeColorValue, b as ThemeColors, e as ThemeFontOption, g as ThemeTypography } from '../ThemeProvider.types-DgXN0gEH.cjs';
4
+
5
+ /**
6
+ * Applies a theme by writing CSS custom properties to `document.documentElement`.
7
+ *
8
+ * Two deliberate choices worth knowing:
9
+ *
10
+ * **The target is `documentElement`, not a wrapper element.** Every overlay in
11
+ * this library (`Dropdown`, `Modal`, `Drawer`, `Snackbar`, `Tooltip`, …) portals
12
+ * to `document.body`, so tokens scoped to a wrapper `<div>` would leave every
13
+ * popup rendering the preset instead.
14
+ *
15
+ * **Properties are set through the CSSOM** (`style.setProperty`), which no CSP
16
+ * directive gates - `style-src` and `style-src-attr` only cover the `style`
17
+ * HTML attribute and stylesheet loads. Nothing here needs a nonce, and no
18
+ * `<style>` element is ever created. See `ContentSecurityPolicy.mdx`.
19
+ *
20
+ * Under SSR the server sends the preset from `dist/index.css` and the theme is
21
+ * applied on hydration; use `toCss()` if you need a themed first paint.
22
+ */
23
+ declare const ThemeProvider: React__default.FC<ThemeProviderProps>;
24
+
25
+ /**
26
+ * Reads the active theme. Throws outside a `ThemeProvider`, matching
27
+ * `useSnackbarContext` - a silent fallback would make a missing provider look
28
+ * like a theme that simply is not applying.
29
+ */
30
+ declare const useTheme: () => ThemeContextValue;
31
+
32
+ /**
33
+ * The shipped values from `src/styles/variables.scss`.
34
+ *
35
+ * This is a literal copy, not something derived: the ramp is hand-tuned and no
36
+ * generator reproduces it byte for byte. Keeping it literal means a theme equal
37
+ * to the preset writes no CSS properties at all, so default rendering is
38
+ * identical to `dist/index.css`.
39
+ *
40
+ * Must be kept in sync with `variables.scss` by hand. The bases are all chosen
41
+ * to clear WCAG AA against white text; see the comment at the top of that file.
42
+ */
43
+ declare const defaultTheme: Required<ThemeConfig>;
44
+
45
+ /**
46
+ * Runtime font registration for the theme system.
47
+ *
48
+ * `--font-family-primary` only *names* families - it cannot make a font
49
+ * available. Selecting "Plus Jakarta Sans" on a machine that doesn't have it
50
+ * installed silently falls through to the next stack entry, which is why a
51
+ * theme needs a way to supply the font data itself.
52
+ *
53
+ * ## Why this is CSP-safe
54
+ *
55
+ * Fonts are registered with the CSS Font Loading API from an `ArrayBuffer`:
56
+ *
57
+ * ```ts
58
+ * document.fonts.add(new FontFace(family, buffer));
59
+ * ```
60
+ *
61
+ * CSP's `font-src` directive governs *fetching* a font resource by URL - it is
62
+ * what gates `@font-face { src: url(...) }` and the string form of the
63
+ * `FontFace` constructor. The binary form performs no fetch at all, so there is
64
+ * no request for `font-src` to check and no allowance to configure. Notably
65
+ * this also avoids `blob:` URLs, which *would* require `font-src blob:`.
66
+ *
67
+ * No `<style>` element is created either, so nothing here needs a nonce - the
68
+ * same position as the rest of the theme system.
69
+ */
70
+ /** A font registered at runtime, as listed by the editor. */
71
+ interface RegisteredFont {
72
+ /** The family name to reference in a font stack. */
73
+ family: string;
74
+ /** Where it came from, so the UI can distinguish uploads from built-ins. */
75
+ source: 'upload';
76
+ }
77
+ /**
78
+ * Turns a filename into a usable CSS family name.
79
+ *
80
+ * Deliberately conservative: the real family name lives in the font's internal
81
+ * `name` table, and parsing SFNT tables to read it would be a disproportionate
82
+ * amount of binary handling for a label. The filename is what the user
83
+ * recognises anyway.
84
+ */
85
+ declare const familyNameFromFile: (filename: string) => string;
86
+ /**
87
+ * Builds a full stack from a custom family, keeping sensible fallbacks so the
88
+ * page stays readable if the font is ever unavailable.
89
+ */
90
+ declare const toFontStack: (family: string, mono?: boolean) => string;
91
+ /** Font formats accepted for upload, as an `accept` attribute value. */
92
+ declare const FONT_ACCEPT = ".woff2,.woff,.ttf,.otf";
93
+ /**
94
+ * Registers font data with the document so a theme can reference its family.
95
+ *
96
+ * Resolves with the family name actually registered. Rejects if the data is not
97
+ * a font the browser can parse, or if the Font Loading API is unavailable
98
+ * (notably during SSR, where there is no `document` to register against).
99
+ */
100
+ declare const registerFontFace: (family: string, data: ArrayBuffer) => Promise<string>;
101
+ /** Reads a File and registers it, returning the family name it was given. */
102
+ declare const registerFontFile: (file: File, family?: string) => Promise<string>;
103
+ /**
104
+ * Whether a font family will actually render, rather than silently falling
105
+ * through to the next entry in the stack.
106
+ *
107
+ * **`document.fonts.check` cannot answer this.** Per spec it reports whether
108
+ * the faces *in the FontFaceSet* matching the query are loaded, so with no
109
+ * matching face it returns `true` vacuously. Verified in a real browser: it
110
+ * answers `true` for `'Totally Not A Real Font 12345'`, and therefore for every
111
+ * uninstalled system font too. Using it here produced a check that could never
112
+ * fail.
113
+ *
114
+ * Instead the family is measured on a canvas against two fallbacks. If it
115
+ * resolves to anything real, the text measures differently from at least one
116
+ * fallback alone; if it does not resolve, the browser renders that fallback and
117
+ * the widths match exactly.
118
+ */
119
+ declare const isFontAvailable: (family: string) => boolean;
120
+ /** Whether the first family in a stack will render. */
121
+ declare const isFontStackAvailable: (stack: string) => boolean;
122
+
123
+ export { FONT_ACCEPT, type RegisteredFont, ThemeConfig, ThemeContextValue, ThemeProvider, ThemeProviderProps, defaultTheme, familyNameFromFile, isFontAvailable, isFontStackAvailable, registerFontFace, registerFontFile, toFontStack, useTheme };
@@ -0,0 +1,123 @@
1
+ import React__default from 'react';
2
+ import { f as ThemeProviderProps, d as ThemeContextValue, c as ThemeConfig } from '../ThemeProvider.types-DgXN0gEH.js';
3
+ export { R as ResolvedTheme, T as ThemeColorKey, a as ThemeColorValue, b as ThemeColors, e as ThemeFontOption, g as ThemeTypography } from '../ThemeProvider.types-DgXN0gEH.js';
4
+
5
+ /**
6
+ * Applies a theme by writing CSS custom properties to `document.documentElement`.
7
+ *
8
+ * Two deliberate choices worth knowing:
9
+ *
10
+ * **The target is `documentElement`, not a wrapper element.** Every overlay in
11
+ * this library (`Dropdown`, `Modal`, `Drawer`, `Snackbar`, `Tooltip`, …) portals
12
+ * to `document.body`, so tokens scoped to a wrapper `<div>` would leave every
13
+ * popup rendering the preset instead.
14
+ *
15
+ * **Properties are set through the CSSOM** (`style.setProperty`), which no CSP
16
+ * directive gates - `style-src` and `style-src-attr` only cover the `style`
17
+ * HTML attribute and stylesheet loads. Nothing here needs a nonce, and no
18
+ * `<style>` element is ever created. See `ContentSecurityPolicy.mdx`.
19
+ *
20
+ * Under SSR the server sends the preset from `dist/index.css` and the theme is
21
+ * applied on hydration; use `toCss()` if you need a themed first paint.
22
+ */
23
+ declare const ThemeProvider: React__default.FC<ThemeProviderProps>;
24
+
25
+ /**
26
+ * Reads the active theme. Throws outside a `ThemeProvider`, matching
27
+ * `useSnackbarContext` - a silent fallback would make a missing provider look
28
+ * like a theme that simply is not applying.
29
+ */
30
+ declare const useTheme: () => ThemeContextValue;
31
+
32
+ /**
33
+ * The shipped values from `src/styles/variables.scss`.
34
+ *
35
+ * This is a literal copy, not something derived: the ramp is hand-tuned and no
36
+ * generator reproduces it byte for byte. Keeping it literal means a theme equal
37
+ * to the preset writes no CSS properties at all, so default rendering is
38
+ * identical to `dist/index.css`.
39
+ *
40
+ * Must be kept in sync with `variables.scss` by hand. The bases are all chosen
41
+ * to clear WCAG AA against white text; see the comment at the top of that file.
42
+ */
43
+ declare const defaultTheme: Required<ThemeConfig>;
44
+
45
+ /**
46
+ * Runtime font registration for the theme system.
47
+ *
48
+ * `--font-family-primary` only *names* families - it cannot make a font
49
+ * available. Selecting "Plus Jakarta Sans" on a machine that doesn't have it
50
+ * installed silently falls through to the next stack entry, which is why a
51
+ * theme needs a way to supply the font data itself.
52
+ *
53
+ * ## Why this is CSP-safe
54
+ *
55
+ * Fonts are registered with the CSS Font Loading API from an `ArrayBuffer`:
56
+ *
57
+ * ```ts
58
+ * document.fonts.add(new FontFace(family, buffer));
59
+ * ```
60
+ *
61
+ * CSP's `font-src` directive governs *fetching* a font resource by URL - it is
62
+ * what gates `@font-face { src: url(...) }` and the string form of the
63
+ * `FontFace` constructor. The binary form performs no fetch at all, so there is
64
+ * no request for `font-src` to check and no allowance to configure. Notably
65
+ * this also avoids `blob:` URLs, which *would* require `font-src blob:`.
66
+ *
67
+ * No `<style>` element is created either, so nothing here needs a nonce - the
68
+ * same position as the rest of the theme system.
69
+ */
70
+ /** A font registered at runtime, as listed by the editor. */
71
+ interface RegisteredFont {
72
+ /** The family name to reference in a font stack. */
73
+ family: string;
74
+ /** Where it came from, so the UI can distinguish uploads from built-ins. */
75
+ source: 'upload';
76
+ }
77
+ /**
78
+ * Turns a filename into a usable CSS family name.
79
+ *
80
+ * Deliberately conservative: the real family name lives in the font's internal
81
+ * `name` table, and parsing SFNT tables to read it would be a disproportionate
82
+ * amount of binary handling for a label. The filename is what the user
83
+ * recognises anyway.
84
+ */
85
+ declare const familyNameFromFile: (filename: string) => string;
86
+ /**
87
+ * Builds a full stack from a custom family, keeping sensible fallbacks so the
88
+ * page stays readable if the font is ever unavailable.
89
+ */
90
+ declare const toFontStack: (family: string, mono?: boolean) => string;
91
+ /** Font formats accepted for upload, as an `accept` attribute value. */
92
+ declare const FONT_ACCEPT = ".woff2,.woff,.ttf,.otf";
93
+ /**
94
+ * Registers font data with the document so a theme can reference its family.
95
+ *
96
+ * Resolves with the family name actually registered. Rejects if the data is not
97
+ * a font the browser can parse, or if the Font Loading API is unavailable
98
+ * (notably during SSR, where there is no `document` to register against).
99
+ */
100
+ declare const registerFontFace: (family: string, data: ArrayBuffer) => Promise<string>;
101
+ /** Reads a File and registers it, returning the family name it was given. */
102
+ declare const registerFontFile: (file: File, family?: string) => Promise<string>;
103
+ /**
104
+ * Whether a font family will actually render, rather than silently falling
105
+ * through to the next entry in the stack.
106
+ *
107
+ * **`document.fonts.check` cannot answer this.** Per spec it reports whether
108
+ * the faces *in the FontFaceSet* matching the query are loaded, so with no
109
+ * matching face it returns `true` vacuously. Verified in a real browser: it
110
+ * answers `true` for `'Totally Not A Real Font 12345'`, and therefore for every
111
+ * uninstalled system font too. Using it here produced a check that could never
112
+ * fail.
113
+ *
114
+ * Instead the family is measured on a canvas against two fallbacks. If it
115
+ * resolves to anything real, the text measures differently from at least one
116
+ * fallback alone; if it does not resolve, the browser renders that fallback and
117
+ * the widths match exactly.
118
+ */
119
+ declare const isFontAvailable: (family: string) => boolean;
120
+ /** Whether the first family in a stack will render. */
121
+ declare const isFontStackAvailable: (stack: string) => boolean;
122
+
123
+ export { FONT_ACCEPT, type RegisteredFont, ThemeConfig, ThemeContextValue, ThemeProvider, ThemeProviderProps, defaultTheme, familyNameFromFile, isFontAvailable, isFontStackAvailable, registerFontFace, registerFontFile, toFontStack, useTheme };
@@ -0,0 +1,27 @@
1
+ import {
2
+ FONT_ACCEPT,
3
+ ThemeProvider,
4
+ defaultTheme,
5
+ familyNameFromFile,
6
+ isFontAvailable,
7
+ isFontStackAvailable,
8
+ registerFontFace,
9
+ registerFontFile,
10
+ toFontStack,
11
+ useTheme
12
+ } from "../chunk-2ZY7M72Q.js";
13
+ import "../chunk-KBG77JHC.js";
14
+ import "../chunk-5WRI5ZAA.js";
15
+ export {
16
+ FONT_ACCEPT,
17
+ ThemeProvider,
18
+ defaultTheme,
19
+ familyNameFromFile,
20
+ isFontAvailable,
21
+ isFontStackAvailable,
22
+ registerFontFace,
23
+ registerFontFile,
24
+ toFontStack,
25
+ useTheme
26
+ };
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,20 +1,20 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkUGMONQGHcjs = require('../chunk-UGMONQGH.cjs');
3
+ var _chunkGR2PMCVNcjs = require('../chunk-GR2PMCVN.cjs');
4
4
  require('../chunk-3EPND5M2.cjs');
5
5
  require('../chunk-VW32UTUE.cjs');
6
- require('../chunk-FMPXSF3H.cjs');
6
+ require('../chunk-DAXZRNNO.cjs');
7
7
  require('../chunk-FRUOA2QU.cjs');
8
8
  require('../chunk-KVIL4EP4.cjs');
9
9
  require('../chunk-Q3GNKF74.cjs');
10
10
  require('../chunk-5O73AALP.cjs');
11
11
  require('../chunk-EACNRR3C.cjs');
12
- require('../chunk-A7Z2QAFZ.cjs');
12
+ require('../chunk-APK5OQRV.cjs');
13
13
  require('../chunk-I6UOIS4J.cjs');
14
- require('../chunk-GOR642KK.cjs');
14
+ require('../chunk-GEHL4LKK.cjs');
15
15
  require('../chunk-Z5U4NJTW.cjs');
16
16
  require('../chunk-DZUJEN5N.cjs');
17
17
 
18
18
 
19
- exports.Toolbar = _chunkUGMONQGHcjs.Toolbar;
19
+ exports.Toolbar = _chunkGR2PMCVNcjs.Toolbar;
20
20
  //# sourceMappingURL=index.cjs.map
@@ -1,7 +1,8 @@
1
1
  import React__default from 'react';
2
- import { a as ToolbarProps } from '../Toolbar.types-tQkLmPIu.cjs';
3
- export { T as ToolbarActionProps } from '../Toolbar.types-tQkLmPIu.cjs';
2
+ import { a as ToolbarProps } from '../Toolbar.types-DSk8z2iy.cjs';
3
+ export { T as ToolbarActionProps } from '../Toolbar.types-DSk8z2iy.cjs';
4
4
  import '../Breadcrumb.types-DaykU-C8.cjs';
5
+ import '../Avatar.types-BY-C09Ke.cjs';
5
6
  import '../Button.types-DZRCVqyN.cjs';
6
7
  import '../renderIcon-C2lEMMzb.cjs';
7
8
  import '../sizes-DM6Rrrgq.cjs';
@@ -1,7 +1,8 @@
1
1
  import React__default from 'react';
2
- import { a as ToolbarProps } from '../Toolbar.types-BGD57Uhm.js';
3
- export { T as ToolbarActionProps } from '../Toolbar.types-BGD57Uhm.js';
2
+ import { a as ToolbarProps } from '../Toolbar.types-RN0klQzu.js';
3
+ export { T as ToolbarActionProps } from '../Toolbar.types-RN0klQzu.js';
4
4
  import '../Breadcrumb.types-DaykU-C8.js';
5
+ import '../Avatar.types-BY-C09Ke.js';
5
6
  import '../Button.types-BH0CPyPx.js';
6
7
  import '../renderIcon-C2lEMMzb.js';
7
8
  import '../sizes-DM6Rrrgq.js';
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  Toolbar
3
- } from "../chunk-IV4LM3MB.js";
3
+ } from "../chunk-F26VIKNF.js";
4
4
  import "../chunk-PY2376XI.js";
5
5
  import "../chunk-XUZOU2EB.js";
6
- import "../chunk-JMD3P4CY.js";
6
+ import "../chunk-ZHFPV43D.js";
7
7
  import "../chunk-4BKTBV2I.js";
8
8
  import "../chunk-LYH3EKKQ.js";
9
9
  import "../chunk-XJBWFDDE.js";
10
10
  import "../chunk-DRXPTACG.js";
11
11
  import "../chunk-N5JDL4VE.js";
12
- import "../chunk-WIE7HDIM.js";
12
+ import "../chunk-YJXZR7RL.js";
13
13
  import "../chunk-66R54X6R.js";
14
- import "../chunk-5CLC3FJO.js";
14
+ import "../chunk-KBG77JHC.js";
15
15
  import "../chunk-YV57RSPD.js";
16
16
  import "../chunk-5WRI5ZAA.js";
17
17
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eidos-ui",
3
- "version": "2.0.0",
3
+ "version": "3.0.0",
4
4
  "description": "A modern React component library with TypeScript and SCSS",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -16,6 +16,10 @@
16
16
  "types": "./dist/index.css.d.ts",
17
17
  "default": "./dist/index.css"
18
18
  },
19
+ "./fonts": {
20
+ "types": "./dist/fonts.css.d.ts",
21
+ "default": "./dist/fonts.css"
22
+ },
19
23
  "./*": {
20
24
  "types": "./dist/*/index.d.ts",
21
25
  "import": "./dist/*/index.js",
@@ -24,15 +28,21 @@
24
28
  },
25
29
  "sideEffects": [
26
30
  "dist/index.css",
27
- "dist/index.css.d.ts"
31
+ "dist/index.css.d.ts",
32
+ "dist/fonts.css",
33
+ "dist/fonts.css.d.ts"
28
34
  ],
29
35
  "files": [
30
36
  "dist"
31
37
  ],
32
38
  "scripts": {
33
39
  "dev": "vite --config vite.dev.config.ts",
34
- "build": "tsup && node scripts/build-styles.js",
35
40
  "storybook": "storybook dev -p 6007",
41
+ "verify": "node scripts/verify.js",
42
+ "release": "node scripts/release.js",
43
+ "release:approve": "npm run release -- approve",
44
+ "version:check": "npm view eidos-ui version",
45
+ "build": "node scripts/build.js",
36
46
  "build-storybook": "storybook build",
37
47
  "lint": "eslint --report-unused-disable-directives --max-warnings 0",
38
48
  "typecheck": "tsc --noEmit",
@@ -41,10 +51,9 @@
41
51
  "prepublishOnly": "npm run build",
42
52
  "version": "node scripts/promote-changelog.js",
43
53
  "postversion": "git push --follow-tags",
44
- "verify": "node scripts/verify.js",
45
54
  "release:needed": "node scripts/release-needed.js",
46
- "release:preflight": "node scripts/preflight-release.js && npm run lint && npm run typecheck && npm run prettier:check && npm run build",
47
- "release": "node scripts/release.js"
55
+ "check:docs": "node scripts/check-docs.js",
56
+ "release:preflight": "node scripts/preflight-release.js && npm run lint && npm run typecheck && npm run prettier:check && npm run build"
48
57
  },
49
58
  "keywords": [
50
59
  "react",
@@ -68,6 +77,8 @@
68
77
  "@dnd-kit/sortable": "^10.0.0",
69
78
  "@dnd-kit/utilities": "^3.2.2",
70
79
  "@eslint/js": "^10.0.1",
80
+ "@fontsource-variable/jetbrains-mono": "^5.3.0",
81
+ "@fontsource-variable/plus-jakarta-sans": "^5.3.0",
71
82
  "@storybook/addon-docs": "^10.6.0",
72
83
  "@storybook/addon-links": "^10.6.0",
73
84
  "@storybook/addon-vitest": "^10.6.0",
@@ -1,22 +0,0 @@
1
- import { a as BreadcrumbProps } from './Breadcrumb.types-DaykU-C8.js';
2
- import { I as IconButtonProps } from './Button.types-BH0CPyPx.js';
3
- import { b as MenuItemType } from './Menu.types-DNIpjSAK.js';
4
- import { C as CommandItem } from './CommandPalette.types-DRMMS_ev.js';
5
-
6
- interface ToolbarProps {
7
- /** Breadcrumb trail rendered above the page. */
8
- breadcrumbs: Pick<BreadcrumbProps, 'items' | 'separator'>;
9
- /** User menu items, rendered right-aligned. */
10
- userMenu: MenuItemType[];
11
- /** Command palette items, rendered right-aligned. */
12
- cmdPaletteItems?: CommandItem[];
13
- /** Trailing action buttons, rendered right-aligned. */
14
- actions?: ToolbarActionProps[];
15
- className?: string;
16
- }
17
- /**
18
- * Restricted, discriminated subset of ButtonProps for Toolbar actions.
19
- */
20
- type ToolbarActionProps = Pick<IconButtonProps, 'color' | 'loading' | 'disabled' | 'preIcon' | 'posIcon' | 'icon' | 'children' | 'onClick' | 'tooltip'>;
21
-
22
- export type { ToolbarActionProps as T, ToolbarProps as a };
@@ -1,22 +0,0 @@
1
- import { a as BreadcrumbProps } from './Breadcrumb.types-DaykU-C8.cjs';
2
- import { I as IconButtonProps } from './Button.types-DZRCVqyN.cjs';
3
- import { b as MenuItemType } from './Menu.types-DwcuCZM7.cjs';
4
- import { C as CommandItem } from './CommandPalette.types-DRMMS_ev.cjs';
5
-
6
- interface ToolbarProps {
7
- /** Breadcrumb trail rendered above the page. */
8
- breadcrumbs: Pick<BreadcrumbProps, 'items' | 'separator'>;
9
- /** User menu items, rendered right-aligned. */
10
- userMenu: MenuItemType[];
11
- /** Command palette items, rendered right-aligned. */
12
- cmdPaletteItems?: CommandItem[];
13
- /** Trailing action buttons, rendered right-aligned. */
14
- actions?: ToolbarActionProps[];
15
- className?: string;
16
- }
17
- /**
18
- * Restricted, discriminated subset of ButtonProps for Toolbar actions.
19
- */
20
- type ToolbarActionProps = Pick<IconButtonProps, 'color' | 'loading' | 'disabled' | 'preIcon' | 'posIcon' | 'icon' | 'children' | 'onClick' | 'tooltip'>;
21
-
22
- export type { ToolbarActionProps as T, ToolbarProps as a };