@eunomia/elements 1.0.0-beta.5 → 1.0.0-beta.6

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 (455) hide show
  1. package/README.md +1 -1
  2. package/dist/breakpoints.d.ts +37 -10
  3. package/dist/breakpoints.js +38 -10
  4. package/dist/cdn/components/chunks/{chunk-MMLIPCOY.js → chunk-22D3SRFR.js} +1 -1
  5. package/dist/cdn/components/chunks/{chunk-OW7XKDCH.js → chunk-2Y2EU2CI.js} +16 -16
  6. package/dist/cdn/components/chunks/{chunk-LFCXUVDO.js → chunk-4PI6RDUS.js} +1 -1
  7. package/dist/cdn/components/chunks/chunk-624VJYNA.js +1 -0
  8. package/dist/cdn/components/chunks/{chunk-5XJLIHAU.js → chunk-7KKWYPHY.js} +4 -2
  9. package/dist/cdn/components/chunks/chunk-A3X4KD2X.js +1 -0
  10. package/dist/cdn/components/chunks/chunk-BKZGTCMF.js +1 -0
  11. package/dist/cdn/components/chunks/{chunk-GW3VP2L7.js → chunk-BO3JOEWM.js} +1 -1
  12. package/dist/cdn/components/chunks/{chunk-EAKYD33D.js → chunk-BQFJR2UP.js} +4 -4
  13. package/dist/cdn/components/chunks/chunk-EUWUDCBZ.js +1 -0
  14. package/dist/cdn/components/chunks/{chunk-P32B7BFD.js → chunk-FF3I7C3C.js} +15 -15
  15. package/dist/cdn/components/chunks/{chunk-74AOAB4X.js → chunk-FOILAXLL.js} +6 -5
  16. package/dist/cdn/components/chunks/{chunk-E4IS25H7.js → chunk-G5SBDQQ3.js} +1 -1
  17. package/dist/cdn/components/chunks/{chunk-LGLQ36QB.js → chunk-GDBPWZN6.js} +1 -1
  18. package/dist/cdn/components/chunks/{chunk-S2UCEWNG.js → chunk-JYIIWN2P.js} +13 -11
  19. package/dist/cdn/components/chunks/{chunk-IDKZKLJR.js → chunk-KDN4O5W2.js} +24 -11
  20. package/dist/cdn/components/chunks/chunk-KSZRQRN4.js +1 -0
  21. package/dist/cdn/components/chunks/{chunk-PED5ATYN.js → chunk-L2ADCEN7.js} +1 -1
  22. package/dist/cdn/components/chunks/chunk-LMVW522V.js +1 -0
  23. package/dist/cdn/components/chunks/{chunk-5XJGYXW7.js → chunk-MOMYII3P.js} +1 -1
  24. package/dist/cdn/components/chunks/{chunk-2XASWWKR.js → chunk-MQQ4BGVJ.js} +5 -5
  25. package/dist/cdn/components/chunks/{chunk-A4EQSU36.js → chunk-O7PHBLH2.js} +1 -1
  26. package/dist/cdn/components/chunks/chunk-PD62MBOJ.js +1 -0
  27. package/dist/cdn/components/chunks/{chunk-KBH5PCUO.js → chunk-PE4DAXHQ.js} +1 -1
  28. package/dist/cdn/components/chunks/{chunk-6ETDXUH2.js → chunk-PMPSJG5V.js} +7 -7
  29. package/dist/cdn/components/chunks/{chunk-5EVP7YNE.js → chunk-PPCHQG7P.js} +1 -1
  30. package/dist/cdn/components/chunks/{chunk-AIS3UICU.js → chunk-QZ5SHR3I.js} +9 -5
  31. package/dist/cdn/components/chunks/{chunk-32DTNR52.js → chunk-RS7TWEMQ.js} +1 -1
  32. package/dist/cdn/components/chunks/chunk-SMTIDNGW.js +1 -0
  33. package/dist/cdn/components/chunks/{chunk-MPQP4R54.js → chunk-SZYEBMG6.js} +10 -9
  34. package/dist/cdn/components/chunks/{chunk-JRGM3W7I.js → chunk-UDVB4LAE.js} +5 -2
  35. package/dist/cdn/components/chunks/{chunk-L65WUTXM.js → chunk-UYZR4JXZ.js} +12 -7
  36. package/dist/cdn/components/chunks/chunk-VG6NAAIV.js +1 -0
  37. package/dist/cdn/components/chunks/chunk-VJCNHMQZ.js +10 -0
  38. package/dist/cdn/components/chunks/chunk-VOTRXBDS.js +38 -0
  39. package/dist/cdn/components/chunks/{chunk-DKOPI7QA.js → chunk-VYFR364B.js} +73 -63
  40. package/dist/cdn/components/chunks/{chunk-SD2WHGPF.js → chunk-XDPRWUKN.js} +1 -1
  41. package/dist/cdn/components/chunks/{chunk-XH6NREVZ.js → chunk-YITWLCD3.js} +1 -1
  42. package/dist/cdn/components/chunks/{chunk-BQHYZB2W.js → chunk-ZBN4HTWP.js} +1 -1
  43. package/dist/cdn/components/chunks/{chunk-NBIENHLV.js → chunk-ZKZV2YG5.js} +18 -18
  44. package/dist/cdn/components/eun-alert.js +24 -16
  45. package/dist/cdn/components/eun-animate.js +12 -8
  46. package/dist/cdn/components/eun-badge.js +1 -1
  47. package/dist/cdn/components/eun-breadcrumb.js +25 -41
  48. package/dist/cdn/components/eun-button.js +1 -1
  49. package/dist/cdn/components/eun-calendar.js +67 -65
  50. package/dist/cdn/components/eun-card.js +32 -17
  51. package/dist/cdn/components/eun-carousel.js +66 -35
  52. package/dist/cdn/components/eun-check-card.js +13 -6
  53. package/dist/cdn/components/eun-checkbox-list.js +4 -4
  54. package/dist/cdn/components/eun-checkbox.js +1 -1
  55. package/dist/cdn/components/eun-chip.js +1 -1
  56. package/dist/cdn/components/eun-collapse.js +56 -27
  57. package/dist/cdn/components/eun-color-picker.js +53 -52
  58. package/dist/cdn/components/eun-counter.js +9 -8
  59. package/dist/cdn/components/eun-date-picker.js +59 -56
  60. package/dist/cdn/components/eun-description-list.js +152 -0
  61. package/dist/cdn/components/eun-divider.js +1 -1
  62. package/dist/cdn/components/eun-drawer.js +32 -18
  63. package/dist/cdn/components/eun-dropdown-button.js +1 -1
  64. package/dist/cdn/components/eun-dropdown-item.js +6 -5
  65. package/dist/cdn/components/eun-fab.js +17 -16
  66. package/dist/cdn/components/eun-icon.js +1 -1
  67. package/dist/cdn/components/eun-image-card.js +79 -22
  68. package/dist/cdn/components/eun-image-carousel.js +92 -47
  69. package/dist/cdn/components/eun-infinite-list.js +23 -11
  70. package/dist/cdn/components/eun-input-file.js +14 -13
  71. package/dist/cdn/components/eun-input-phone.js +15 -15
  72. package/dist/cdn/components/eun-input.js +1 -1
  73. package/dist/cdn/components/eun-label.js +4 -4
  74. package/dist/cdn/components/eun-link.js +78 -29
  75. package/dist/cdn/components/eun-loader.js +1 -1
  76. package/dist/cdn/components/eun-modal.js +17 -10
  77. package/dist/cdn/components/eun-pagination.js +17 -12
  78. package/dist/cdn/components/eun-password-strength.js +6 -2
  79. package/dist/cdn/components/eun-progress-bar.js +13 -5
  80. package/dist/cdn/components/eun-radio-card.js +16 -9
  81. package/dist/cdn/components/eun-radio-list.js +4 -4
  82. package/dist/cdn/components/eun-radio.js +1 -1
  83. package/dist/cdn/components/eun-scheduler-event-editor.js +1 -1
  84. package/dist/cdn/components/eun-scheduler-event.js +1 -1
  85. package/dist/cdn/components/eun-scheduler.js +36 -36
  86. package/dist/cdn/components/eun-search.js +11 -10
  87. package/dist/cdn/components/eun-select.js +12 -11
  88. package/dist/cdn/components/eun-sidebar.js +34 -20
  89. package/dist/cdn/components/eun-skeleton.js +1 -1
  90. package/dist/cdn/components/eun-slider.js +15 -14
  91. package/dist/cdn/components/eun-sliding-card.js +8 -4
  92. package/dist/cdn/components/eun-step.js +17 -6
  93. package/dist/cdn/components/eun-stepper.js +17 -6
  94. package/dist/cdn/components/eun-switch.js +10 -8
  95. package/dist/cdn/components/eun-tab-group.js +22 -17
  96. package/dist/cdn/components/eun-tab-panel.js +11 -3
  97. package/dist/cdn/components/eun-tab.js +1 -1
  98. package/dist/cdn/components/eun-table-action-bar.js +1 -1
  99. package/dist/cdn/components/eun-table.js +572 -31
  100. package/dist/cdn/components/eun-tag.js +13 -7
  101. package/dist/cdn/components/eun-textarea.js +23 -23
  102. package/dist/cdn/components/eun-time-picker.js +17 -15
  103. package/dist/cdn/components/eun-toast.js +36 -16
  104. package/dist/cdn/components/eun-toggle-group.js +53 -34
  105. package/dist/cdn/components/eun-toggle-item.js +16 -15
  106. package/dist/cdn/components/eun-toggle.js +12 -10
  107. package/dist/cdn/components/eun-toolbar.js +62 -52
  108. package/dist/cdn/components/eun-tooltip.js +30 -14
  109. package/dist/cdn/styles/breakpoints.scss +8 -0
  110. package/dist/cdn/styles/eunomia-grid.scss +6 -0
  111. package/dist/cdn/styles/eunomia-themes.css +1 -1
  112. package/dist/cdn/styles/themes/eunomia-theme.css +1 -1
  113. package/dist/cdn/styles/themes/eunomia-theme.scss +4 -3
  114. package/dist/cdn/styles/themes/mixins/eunomia-a11y-color.mixin.scss +34 -1
  115. package/dist/cdn/styles/themes/mixins/eunomia-neutrals.mixin.scss +4 -0
  116. package/dist/cdn/styles/themes/mixins/eunomia-states.mixin.scss +36 -12
  117. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia-dark.mixin.scss +10 -10
  118. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia.mixin.scss +10 -10
  119. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia.theme.css +1 -1
  120. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia.theme.scss +3 -2
  121. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire-dark.mixin.scss +10 -10
  122. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire.mixin.scss +10 -10
  123. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire.theme.css +1 -1
  124. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire.theme.scss +3 -2
  125. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest-dark.mixin.scss +10 -10
  126. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest.mixin.scss +10 -10
  127. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest.theme.css +1 -1
  128. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest.theme.scss +3 -2
  129. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold-dark.mixin.scss +10 -10
  130. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold.mixin.scss +10 -10
  131. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold.theme.css +1 -1
  132. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold.theme.scss +3 -2
  133. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean-dark.mixin.scss +10 -10
  134. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean.mixin.scss +10 -10
  135. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean.theme.css +1 -1
  136. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean.theme.scss +3 -2
  137. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon-dark.mixin.scss +10 -10
  138. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon.mixin.scss +10 -10
  139. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon.theme.css +1 -1
  140. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon.theme.scss +3 -2
  141. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet-dark.mixin.scss +10 -10
  142. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet.mixin.scss +10 -10
  143. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet.theme.css +1 -1
  144. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet.theme.scss +3 -2
  145. package/dist/cdn/styles/tools/indexes/eunomia-media-queries.index.scss +1 -3
  146. package/dist/cdn/styles/tools/indexes/eunomia-tools.index.scss +1 -0
  147. package/dist/cdn/styles/tools/mixins/layout/eunomia-grid.mixin.scss +117 -53
  148. package/dist/cdn/styles/tools/mixins/media-queries/eunomia-media-queries.mixin.scss +69 -0
  149. package/dist/cdn/styles/tools/mixins/settings/eunomia-alpha.mixin.scss +28 -4
  150. package/dist/cdn/styles/tools/mixins/settings/eunomia-motion.mixin.scss +9 -0
  151. package/dist/cdn/styles/tools/variables/eunomia.breakpoints.scss +4 -0
  152. package/dist/components/action/button/button.d.ts +7 -2
  153. package/dist/components/action/button/button.js +7 -2
  154. package/dist/components/action/button/button.styles.js +51 -36
  155. package/dist/components/action/dropdown-button/dropdown-button.d.ts +2 -2
  156. package/dist/components/action/dropdown-button/dropdown-button.js +11 -10
  157. package/dist/components/action/dropdown-button/dropdown-button.styles.js +3 -2
  158. package/dist/components/action/dropdown-button/dropdown-item.js +5 -6
  159. package/dist/components/action/dropdown-button/dropdown-item.styles.js +3 -2
  160. package/dist/components/action/fab/fab.styles.js +14 -13
  161. package/dist/components/action/link/link.d.ts +7 -3
  162. package/dist/components/action/link/link.js +11 -7
  163. package/dist/components/action/link/link.styles.js +66 -15
  164. package/dist/components/action/shared-styles/button-palette.styles.js +15 -15
  165. package/dist/components/action/toggle/toggle-group.d.ts +2 -0
  166. package/dist/components/action/toggle/toggle-group.js +5 -3
  167. package/dist/components/action/toggle/toggle-group.styles.d.ts +2 -0
  168. package/dist/components/action/toggle/toggle-group.styles.js +42 -21
  169. package/dist/components/action/toggle/toggle-item.styles.js +13 -12
  170. package/dist/components/action/toggle/toggle.d.ts +2 -0
  171. package/dist/components/action/toggle/toggle.js +2 -0
  172. package/dist/components/action/toggle/toggle.styles.d.ts +2 -0
  173. package/dist/components/action/toggle/toggle.styles.js +12 -8
  174. package/dist/components/alert/alert/alert.d.ts +2 -0
  175. package/dist/components/alert/alert/alert.js +2 -0
  176. package/dist/components/alert/alert/alert.styles.js +23 -13
  177. package/dist/components/alert/drawer/drawer.d.ts +3 -1
  178. package/dist/components/alert/drawer/drawer.js +4 -2
  179. package/dist/components/alert/drawer/drawer.styles.js +25 -9
  180. package/dist/components/alert/modal/modal.d.ts +3 -1
  181. package/dist/components/alert/modal/modal.js +4 -2
  182. package/dist/components/alert/modal/modal.styles.js +16 -7
  183. package/dist/components/alert/toast/toast.d.ts +2 -0
  184. package/dist/components/alert/toast/toast.js +2 -0
  185. package/dist/components/alert/toast/toast.styles.js +37 -15
  186. package/dist/components/content/card/card.d.ts +7 -3
  187. package/dist/components/content/card/card.js +7 -3
  188. package/dist/components/content/card/card.styles.js +26 -11
  189. package/dist/components/content/card/image-card.d.ts +60 -6
  190. package/dist/components/content/card/image-card.js +120 -11
  191. package/dist/components/content/card/image-card.styles.js +66 -15
  192. package/dist/components/content/card/sliding-card.d.ts +2 -0
  193. package/dist/components/content/card/sliding-card.js +2 -0
  194. package/dist/components/content/card/sliding-card.styles.js +5 -1
  195. package/dist/components/content/collapse/collapse.d.ts +10 -1
  196. package/dist/components/content/collapse/collapse.js +12 -2
  197. package/dist/components/content/collapse/collapse.styles.d.ts +10 -1
  198. package/dist/components/content/collapse/collapse.styles.js +56 -18
  199. package/dist/components/content/description-list/description-list.d.ts +87 -0
  200. package/dist/components/content/description-list/description-list.js +107 -0
  201. package/dist/components/content/description-list/description-list.styles.d.ts +1 -0
  202. package/dist/components/content/description-list/description-list.styles.js +185 -0
  203. package/dist/components/content/icon/icon.d.ts +2 -0
  204. package/dist/components/content/icon/icon.js +2 -0
  205. package/dist/components/content/icon/icon.style.js +4 -1
  206. package/dist/components/content/image-carousel/image-carousel.d.ts +30 -19
  207. package/dist/components/content/image-carousel/image-carousel.js +48 -45
  208. package/dist/components/content/image-carousel/image-carousel.styles.js +69 -30
  209. package/dist/components/content/password-strength/password-strength.styles.js +5 -1
  210. package/dist/components/content/progress-bar/progress-bar.styles.js +12 -4
  211. package/dist/components/content/shared-styles/card-link.styles.js +4 -3
  212. package/dist/components/content/shared-styles/tone-surface.styles.d.ts +5 -0
  213. package/dist/components/content/shared-styles/tone-surface.styles.js +19 -14
  214. package/dist/components/content/tag/tag.d.ts +4 -0
  215. package/dist/components/content/tag/tag.js +4 -0
  216. package/dist/components/content/tag/tag.styles.js +14 -4
  217. package/dist/components/content/tooltip/tooltip.d.ts +3 -2
  218. package/dist/components/content/tooltip/tooltip.js +9 -16
  219. package/dist/components/content/tooltip/tooltip.styles.js +25 -7
  220. package/dist/components/form/checkbox/check-card.d.ts +4 -1
  221. package/dist/components/form/checkbox/check-card.js +4 -1
  222. package/dist/components/form/checkbox/check-card.styles.js +13 -4
  223. package/dist/components/form/checkbox/checkbox-list.d.ts +4 -1
  224. package/dist/components/form/checkbox/checkbox-list.js +11 -7
  225. package/dist/components/form/checkbox/checkbox.d.ts +4 -1
  226. package/dist/components/form/checkbox/checkbox.js +4 -1
  227. package/dist/components/form/checkbox/checkbox.styles.js +2 -2
  228. package/dist/components/form/color-picker/color-picker.d.ts +7 -1
  229. package/dist/components/form/color-picker/color-picker.js +19 -21
  230. package/dist/components/form/color-picker/color-picker.styles.js +6 -5
  231. package/dist/components/form/counter/counter.d.ts +4 -1
  232. package/dist/components/form/counter/counter.js +5 -2
  233. package/dist/components/form/counter/counter.styles.js +5 -4
  234. package/dist/components/form/date-picker/date-picker.d.ts +37 -33
  235. package/dist/components/form/date-picker/date-picker.js +32 -42
  236. package/dist/components/form/date-picker/date-picker.styles.js +8 -5
  237. package/dist/components/form/input/input.d.ts +7 -1
  238. package/dist/components/form/input/input.js +8 -2
  239. package/dist/components/form/input-file/input-file.d.ts +4 -1
  240. package/dist/components/form/input-file/input-file.js +8 -5
  241. package/dist/components/form/input-file/input-file.styles.js +3 -2
  242. package/dist/components/form/input-phone/input-phone.d.ts +8 -2
  243. package/dist/components/form/input-phone/input-phone.js +13 -17
  244. package/dist/components/form/input-phone/input-phone.styles.js +4 -4
  245. package/dist/components/form/label/label.styles.js +3 -3
  246. package/dist/components/form/radio/radio-card.d.ts +5 -2
  247. package/dist/components/form/radio/radio-card.js +5 -2
  248. package/dist/components/form/radio/radio-card.styles.js +14 -5
  249. package/dist/components/form/radio/radio-list.d.ts +5 -2
  250. package/dist/components/form/radio/radio-list.js +14 -10
  251. package/dist/components/form/radio/radio.d.ts +5 -2
  252. package/dist/components/form/radio/radio.js +5 -2
  253. package/dist/components/form/radio/radio.styles.js +4 -4
  254. package/dist/components/form/search/search.d.ts +2 -1
  255. package/dist/components/form/search/search.js +6 -15
  256. package/dist/components/form/search/search.styles.js +5 -4
  257. package/dist/components/form/select/select.d.ts +9 -2
  258. package/dist/components/form/select/select.js +15 -18
  259. package/dist/components/form/select/select.styles.js +3 -2
  260. package/dist/components/form/shared-styles/card.styles.js +5 -4
  261. package/dist/components/form/shared-styles/field.styles.js +16 -6
  262. package/dist/components/form/shared-styles/form-labels.styles.js +1 -1
  263. package/dist/components/form/slider/slider.d.ts +4 -1
  264. package/dist/components/form/slider/slider.js +5 -2
  265. package/dist/components/form/slider/slider.styles.js +8 -7
  266. package/dist/components/form/switch/switch.d.ts +4 -1
  267. package/dist/components/form/switch/switch.js +4 -1
  268. package/dist/components/form/switch/switch.styles.js +7 -5
  269. package/dist/components/form/textarea/textarea.d.ts +7 -1
  270. package/dist/components/form/textarea/textarea.js +14 -8
  271. package/dist/components/form/time-picker/time-picker-columns.styles.js +4 -2
  272. package/dist/components/form/time-picker/time-picker-list.styles.js +2 -1
  273. package/dist/components/form/time-picker/time-picker.d.ts +6 -2
  274. package/dist/components/form/time-picker/time-picker.js +22 -26
  275. package/dist/components/form/time-picker/time-picker.styles.js +4 -3
  276. package/dist/components/layout/animate/animate.d.ts +37 -15
  277. package/dist/components/layout/animate/animate.js +35 -15
  278. package/dist/components/layout/animate/animate.styles.js +9 -16
  279. package/dist/components/layout/infinite-list/infinite-list.d.ts +33 -10
  280. package/dist/components/layout/infinite-list/infinite-list.js +115 -18
  281. package/dist/components/layout/infinite-list/infinite-list.styles.d.ts +3 -0
  282. package/dist/components/layout/infinite-list/infinite-list.styles.js +17 -5
  283. package/dist/components/loader/loader/loader.styles.js +3 -1
  284. package/dist/components/navigation/breadcrumb/breadcrumb.d.ts +31 -45
  285. package/dist/components/navigation/breadcrumb/breadcrumb.js +111 -77
  286. package/dist/components/navigation/breadcrumb/breadcrumb.styles.d.ts +3 -0
  287. package/dist/components/navigation/breadcrumb/breadcrumb.styles.js +22 -26
  288. package/dist/components/navigation/carousel/carousel.d.ts +30 -10
  289. package/dist/components/navigation/carousel/carousel.js +37 -18
  290. package/dist/components/navigation/carousel/carousel.styles.js +60 -20
  291. package/dist/components/navigation/pagination/pagination.styles.js +8 -3
  292. package/dist/components/navigation/sidebar/sidebar.d.ts +2 -0
  293. package/dist/components/navigation/sidebar/sidebar.js +2 -0
  294. package/dist/components/navigation/sidebar/sidebar.styles.js +27 -11
  295. package/dist/components/navigation/stepper/step.styles.js +16 -5
  296. package/dist/components/navigation/stepper/stepper.styles.js +16 -5
  297. package/dist/components/navigation/tabs/tab/tab.d.ts +11 -0
  298. package/dist/components/navigation/tabs/tab/tab.js +11 -0
  299. package/dist/components/navigation/tabs/tab/tab.styles.js +22 -16
  300. package/dist/components/navigation/tabs/tab-group/tab-group.js +7 -8
  301. package/dist/components/navigation/tabs/tab-group/tab-group.styles.js +19 -14
  302. package/dist/components/navigation/tabs/tab-panel/tab-panel.d.ts +4 -0
  303. package/dist/components/navigation/tabs/tab-panel/tab-panel.js +4 -0
  304. package/dist/components/navigation/tabs/tab-panel/tab-panel.styles.js +18 -1
  305. package/dist/components/navigation/toolbar/toolbar.d.ts +17 -49
  306. package/dist/components/navigation/toolbar/toolbar.js +23 -71
  307. package/dist/components/navigation/toolbar/toolbar.styles.js +59 -36
  308. package/dist/events/table-row-click.event.d.ts +5 -4
  309. package/dist/events/table-row-click.event.js +10 -5
  310. package/dist/features/scheduler/calendar/calendar.d.ts +6 -6
  311. package/dist/features/scheduler/calendar/calendar.js +6 -5
  312. package/dist/features/scheduler/calendar/calendar.styles.js +8 -6
  313. package/dist/features/scheduler/scheduler/scheduler.d.ts +1 -1
  314. package/dist/features/scheduler/scheduler/scheduler.js +9 -23
  315. package/dist/features/scheduler/scheduler/scheduler.styles.js +6 -4
  316. package/dist/features/scheduler/scheduler-event/scheduler-event.d.ts +2 -0
  317. package/dist/features/scheduler/scheduler-event/scheduler-event.js +2 -0
  318. package/dist/features/scheduler/scheduler-event/scheduler-event.styles.js +10 -4
  319. package/dist/features/scheduler/shared/scheduler-hour-grid.styles.js +3 -3
  320. package/dist/features/scheduler/shared/scheduler-month-view.styles.js +2 -2
  321. package/dist/features/scheduler/shared/scheduler-year-view.styles.js +2 -2
  322. package/dist/features/table/table/table-native.styles.d.ts +28 -0
  323. package/dist/features/table/table/table-native.styles.js +502 -0
  324. package/dist/features/table/table/table.d.ts +342 -294
  325. package/dist/features/table/table/table.js +820 -546
  326. package/dist/features/table/table/table.styles.js +31 -17
  327. package/dist/features/table/table/table.types.d.ts +11 -20
  328. package/dist/features/table/table/table.utils.d.ts +6 -36
  329. package/dist/features/table/table/table.utils.js +16 -65
  330. package/dist/features/table/table-action-bar/table-action-bar.d.ts +33 -16
  331. package/dist/features/table/table-action-bar/table-action-bar.js +15 -22
  332. package/dist/features/table/table-action-bar/table-action-bar.styles.js +15 -3
  333. package/dist/i18n/en.d.ts +31 -0
  334. package/dist/i18n/en.js +31 -0
  335. package/dist/i18n/fr.js +35 -0
  336. package/dist/index.d.ts +4 -10
  337. package/dist/index.js +6 -10
  338. package/dist/mixins/check.mixin.js +4 -5
  339. package/dist/mixins/form.mixin.d.ts +17 -1
  340. package/dist/mixins/form.mixin.js +80 -25
  341. package/dist/mixins/radio.mixin.js +4 -5
  342. package/dist/mixins/validators.mixin.d.ts +7 -1
  343. package/dist/mixins/validators.mixin.js +36 -17
  344. package/dist/ssr/animate-ssr.css +3 -2
  345. package/dist/ssr/button-ssr.css +319 -0
  346. package/dist/ssr/card-ssr.css +184 -0
  347. package/dist/ssr/description-list-ssr.css +150 -0
  348. package/dist/ssr/links-ssr.css +1 -1
  349. package/dist/ssr/table-ssr.css +472 -0
  350. package/dist/ssr/tag-ssr.css +197 -0
  351. package/dist/ssr/toolbar-ssr.css +5 -1
  352. package/dist/utils/drag-drop.utils.js +18 -2
  353. package/dist/utils/dropdown-menu.utils.d.ts +2 -2
  354. package/dist/utils/dropdown-menu.utils.js +4 -14
  355. package/dist/utils/light-dom-styles.utils.d.ts +14 -0
  356. package/dist/utils/light-dom-styles.utils.js +37 -0
  357. package/dist/utils/media.styles.d.ts +19 -0
  358. package/dist/utils/media.styles.js +23 -0
  359. package/dist/utils/motion.utils.d.ts +40 -0
  360. package/dist/utils/motion.utils.js +51 -0
  361. package/dist/utils/theme-generator.utils.d.ts +6 -1
  362. package/dist/utils/theme-generator.utils.js +59 -20
  363. package/package.json +17 -28
  364. package/styles/breakpoints.scss +8 -0
  365. package/styles/eunomia-grid.scss +6 -0
  366. package/styles/themes/eunomia-theme.scss +4 -3
  367. package/styles/themes/mixins/eunomia-a11y-color.mixin.scss +34 -1
  368. package/styles/themes/mixins/eunomia-neutrals.mixin.scss +4 -0
  369. package/styles/themes/mixins/eunomia-states.mixin.scss +36 -12
  370. package/styles/themes/prebuilt-themes/eunomia/eunomia-dark.mixin.scss +10 -10
  371. package/styles/themes/prebuilt-themes/eunomia/eunomia.mixin.scss +10 -10
  372. package/styles/themes/prebuilt-themes/eunomia/eunomia.theme.scss +3 -2
  373. package/styles/themes/prebuilt-themes/fire/eunomia-fire-dark.mixin.scss +10 -10
  374. package/styles/themes/prebuilt-themes/fire/eunomia-fire.mixin.scss +10 -10
  375. package/styles/themes/prebuilt-themes/fire/eunomia-fire.theme.scss +3 -2
  376. package/styles/themes/prebuilt-themes/forest/eunomia-forest-dark.mixin.scss +10 -10
  377. package/styles/themes/prebuilt-themes/forest/eunomia-forest.mixin.scss +10 -10
  378. package/styles/themes/prebuilt-themes/forest/eunomia-forest.theme.scss +3 -2
  379. package/styles/themes/prebuilt-themes/gold/eunomia-gold-dark.mixin.scss +10 -10
  380. package/styles/themes/prebuilt-themes/gold/eunomia-gold.mixin.scss +10 -10
  381. package/styles/themes/prebuilt-themes/gold/eunomia-gold.theme.scss +3 -2
  382. package/styles/themes/prebuilt-themes/ocean/eunomia-ocean-dark.mixin.scss +10 -10
  383. package/styles/themes/prebuilt-themes/ocean/eunomia-ocean.mixin.scss +10 -10
  384. package/styles/themes/prebuilt-themes/ocean/eunomia-ocean.theme.scss +3 -2
  385. package/styles/themes/prebuilt-themes/salmon/eunomia-salmon-dark.mixin.scss +10 -10
  386. package/styles/themes/prebuilt-themes/salmon/eunomia-salmon.mixin.scss +10 -10
  387. package/styles/themes/prebuilt-themes/salmon/eunomia-salmon.theme.scss +3 -2
  388. package/styles/themes/prebuilt-themes/violet/eunomia-violet-dark.mixin.scss +10 -10
  389. package/styles/themes/prebuilt-themes/violet/eunomia-violet.mixin.scss +10 -10
  390. package/styles/themes/prebuilt-themes/violet/eunomia-violet.theme.scss +3 -2
  391. package/styles/tools/indexes/eunomia-media-queries.index.scss +1 -3
  392. package/styles/tools/indexes/eunomia-tools.index.scss +1 -0
  393. package/styles/tools/mixins/layout/eunomia-grid.mixin.scss +117 -53
  394. package/styles/tools/mixins/media-queries/eunomia-media-queries.mixin.scss +69 -0
  395. package/styles/tools/mixins/settings/eunomia-alpha.mixin.scss +28 -4
  396. package/styles/tools/mixins/settings/eunomia-motion.mixin.scss +9 -0
  397. package/styles/tools/variables/eunomia.breakpoints.scss +4 -0
  398. package/dist/cdn/components/chunks/chunk-A6KGFALA.js +0 -132
  399. package/dist/cdn/components/chunks/chunk-CEDHJUUH.js +0 -1
  400. package/dist/cdn/components/chunks/chunk-D2M4BV5Y.js +0 -328
  401. package/dist/cdn/components/chunks/chunk-E74CM7UG.js +0 -66
  402. package/dist/cdn/components/chunks/chunk-EST3M4AO.js +0 -1
  403. package/dist/cdn/components/chunks/chunk-GU6BVMFJ.js +0 -1
  404. package/dist/cdn/components/chunks/chunk-KVYUNKUO.js +0 -27
  405. package/dist/cdn/components/chunks/chunk-OAULRKHQ.js +0 -38
  406. package/dist/cdn/components/chunks/chunk-PCM7D3YF.js +0 -84
  407. package/dist/cdn/components/chunks/chunk-SJWRE6PW.js +0 -1
  408. package/dist/cdn/components/chunks/chunk-T4PTHUYF.js +0 -10
  409. package/dist/cdn/components/chunks/chunk-VRGRCYIO.js +0 -1
  410. package/dist/cdn/components/chunks/chunk-X2AUBZD2.js +0 -30
  411. package/dist/cdn/components/eun-breadcrumb-item.js +0 -93
  412. package/dist/cdn/components/eun-table-cell.js +0 -1
  413. package/dist/cdn/components/eun-table-column.js +0 -1
  414. package/dist/cdn/components/eun-table-header.js +0 -1
  415. package/dist/cdn/components/eun-table-item.js +0 -1
  416. package/dist/cdn/components/eun-table-skeleton-row.js +0 -1
  417. package/dist/cdn/styles/tools/mixins/media-queries/eunomia-device.mixin.scss +0 -14
  418. package/dist/cdn/styles/tools/mixins/media-queries/eunomia-gte.mixin.scss +0 -26
  419. package/dist/cdn/styles/tools/mixins/media-queries/eunomia-lte.mixin.scss +0 -26
  420. package/dist/components/navigation/breadcrumb/breadcrumb-item.d.ts +0 -77
  421. package/dist/components/navigation/breadcrumb/breadcrumb-item.js +0 -130
  422. package/dist/components/navigation/breadcrumb/breadcrumb-item.styles.d.ts +0 -6
  423. package/dist/components/navigation/breadcrumb/breadcrumb-item.styles.js +0 -78
  424. package/dist/features/table/native-table.css +0 -276
  425. package/dist/features/table/shared-styles/table-row.styles.d.ts +0 -7
  426. package/dist/features/table/shared-styles/table-row.styles.js +0 -47
  427. package/dist/features/table/shared-styles/table-shared.styles.d.ts +0 -23
  428. package/dist/features/table/shared-styles/table-shared.styles.js +0 -33
  429. package/dist/features/table/table-cell/table-cell.d.ts +0 -59
  430. package/dist/features/table/table-cell/table-cell.js +0 -73
  431. package/dist/features/table/table-cell/table-cell.styles.d.ts +0 -1
  432. package/dist/features/table/table-cell/table-cell.styles.js +0 -46
  433. package/dist/features/table/table-column/table-column.d.ts +0 -73
  434. package/dist/features/table/table-column/table-column.js +0 -89
  435. package/dist/features/table/table-column/table-column.styles.d.ts +0 -1
  436. package/dist/features/table/table-column/table-column.styles.js +0 -51
  437. package/dist/features/table/table-header/table-header.d.ts +0 -102
  438. package/dist/features/table/table-header/table-header.js +0 -165
  439. package/dist/features/table/table-header/table-header.styles.d.ts +0 -1
  440. package/dist/features/table/table-header/table-header.styles.js +0 -147
  441. package/dist/features/table/table-item/table-item.d.ts +0 -179
  442. package/dist/features/table/table-item/table-item.js +0 -291
  443. package/dist/features/table/table-item/table-item.styles.d.ts +0 -1
  444. package/dist/features/table/table-item/table-item.styles.js +0 -404
  445. package/dist/features/table/table-managed/table-managed.d.ts +0 -19
  446. package/dist/features/table/table-managed/table-managed.js +0 -128
  447. package/dist/features/table/table-skeleton-row/table-skeleton-row.d.ts +0 -46
  448. package/dist/features/table/table-skeleton-row/table-skeleton-row.js +0 -110
  449. package/dist/features/table/table-skeleton-row/table-skeleton-row.styles.d.ts +0 -12
  450. package/dist/features/table/table-skeleton-row/table-skeleton-row.styles.js +0 -65
  451. package/dist/mixins/table-row.mixin.d.ts +0 -37
  452. package/dist/mixins/table-row.mixin.js +0 -103
  453. package/styles/tools/mixins/media-queries/eunomia-device.mixin.scss +0 -14
  454. package/styles/tools/mixins/media-queries/eunomia-gte.mixin.scss +0 -26
  455. package/styles/tools/mixins/media-queries/eunomia-lte.mixin.scss +0 -26
@@ -3,7 +3,7 @@ const DEFAULT_ACTIVATION_DISTANCE = 4;
3
3
  const DEFAULT_DRAGGING_ATTRIBUTE = "data-dragging";
4
4
  const DEFAULT_AUTO_SCROLL_EDGE = 48;
5
5
  const DEFAULT_AUTO_SCROLL_SPEED = 12;
6
- const SETTLE_TRANSITION = "transform 150ms ease";
6
+ const SETTLE_TRANSITION = "transform var(--eun-duration-s, 150ms) var(--eun-easing-default, ease)";
7
7
  const SR_ONLY_STYLE = {
8
8
  position: "absolute",
9
9
  width: "1px",
@@ -52,16 +52,32 @@ function isScrollable(el) {
52
52
  const style = getComputedStyle(el);
53
53
  return /(auto|scroll)/.test(style.overflowY + style.overflowX);
54
54
  }
55
+ /**
56
+ * Walks up the flat tree (through slots and shadow hosts) rather than the
57
+ * plain DOM tree, so a container slotted into a component that scrolls
58
+ * inside its own shadow root, such as the rows of an `eun-table`, finds
59
+ * that inner scroll container.
60
+ */
55
61
  function findScrollableAncestor(from) {
56
62
  let el = from;
57
63
  while (el) {
58
64
  if (isScrollable(el)) {
59
65
  return el;
60
66
  }
61
- el = el.parentElement;
67
+ el = flatTreeParent(el);
62
68
  }
63
69
  return document.scrollingElement;
64
70
  }
71
+ function flatTreeParent(el) {
72
+ if (el.assignedSlot) {
73
+ return el.assignedSlot;
74
+ }
75
+ if (el.parentElement) {
76
+ return el.parentElement;
77
+ }
78
+ const root = el.getRootNode();
79
+ return root instanceof ShadowRoot ? root.host : null;
80
+ }
65
81
  /**
66
82
  * Attaches drag-to-reorder behavior to `container`'s items. See the module
67
83
  * doc comment for what this does and doesn't cover.
@@ -125,8 +125,8 @@ export declare function handleMenuKeydown(event: KeyboardEvent, entries: HTMLEle
125
125
  * `eun-dropdown-button` (its root menu and `options`-sourced submenus) and
126
126
  * `eun-dropdown-item` (its own submenu) : `0` under `prefers-reduced-motion:
127
127
  * reduce`, otherwise `--dropdown-menu-transition-duration` (default
128
- * `160ms`) — see `dropdown-button.styles.ts`'s own doc for why the open/
129
- * close visual is a JS `Animation` rather than a CSS transition.
128
+ * `--eun-duration-s`) — see `dropdown-button.styles.ts`'s own doc for why
129
+ * the open/close visual is a JS `Animation` rather than a CSS transition.
130
130
  *
131
131
  * @param el the menu/submenu to read `--dropdown-menu-transition-duration` off.
132
132
  */
@@ -1,3 +1,4 @@
1
+ import { resolveDurationMs } from "./motion.utils.js";
1
2
  /**
2
3
  * DOM-only menu mechanics shared by `eun-dropdown-button` (its root menu and
3
4
  * `options`-sourced submenus) and `eun-dropdown-item` (its own
@@ -186,8 +187,8 @@ export function handleMenuKeydown(event, entries, handlers) {
186
187
  * `eun-dropdown-button` (its root menu and `options`-sourced submenus) and
187
188
  * `eun-dropdown-item` (its own submenu) : `0` under `prefers-reduced-motion:
188
189
  * reduce`, otherwise `--dropdown-menu-transition-duration` (default
189
- * `160ms`) — see `dropdown-button.styles.ts`'s own doc for why the open/
190
- * close visual is a JS `Animation` rather than a CSS transition.
190
+ * `--eun-duration-s`) — see `dropdown-button.styles.ts`'s own doc for why
191
+ * the open/close visual is a JS `Animation` rather than a CSS transition.
191
192
  *
192
193
  * @param el the menu/submenu to read `--dropdown-menu-transition-duration` off.
193
194
  */
@@ -195,16 +196,5 @@ export function dropdownMenuAnimationDuration(el) {
195
196
  if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) {
196
197
  return 0;
197
198
  }
198
- const raw = getComputedStyle(el)
199
- .getPropertyValue("--dropdown-menu-transition-duration")
200
- .trim();
201
- if (raw) {
202
- const parsed = raw.endsWith("ms")
203
- ? Number.parseFloat(raw)
204
- : Number.parseFloat(raw) * 1000;
205
- if (Number.isFinite(parsed) && parsed >= 0) {
206
- return parsed;
207
- }
208
- }
209
- return 160;
199
+ return resolveDurationMs(el, "--dropdown-menu-transition-duration", "s", 160);
210
200
  }
@@ -0,0 +1,14 @@
1
+ import { CSSResult } from "lit";
2
+ /**
3
+ * Adopts a light DOM sheet into `host`'s root node (the document, or the
4
+ * shadow root it lives in), once per root. A component whose native
5
+ * content (a `<table>`, a `<dl>`) stays in the light DOM styles it this
6
+ * way, since its own shadow root can't reach slotted descendants.
7
+ *
8
+ * Falls back to a `<style>` element where constructable stylesheets
9
+ * aren't supported.
10
+ *
11
+ * @param host the connected element whose root node receives the sheet.
12
+ * @param styles the sheet to adopt.
13
+ */
14
+ export declare function adoptLightDomStyles(host: Node, styles: CSSResult): void;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Root nodes each light DOM sheet was already adopted into.
3
+ * @internal
4
+ */
5
+ const styledRoots = new WeakMap();
6
+ /**
7
+ * Adopts a light DOM sheet into `host`'s root node (the document, or the
8
+ * shadow root it lives in), once per root. A component whose native
9
+ * content (a `<table>`, a `<dl>`) stays in the light DOM styles it this
10
+ * way, since its own shadow root can't reach slotted descendants.
11
+ *
12
+ * Falls back to a `<style>` element where constructable stylesheets
13
+ * aren't supported.
14
+ *
15
+ * @param host the connected element whose root node receives the sheet.
16
+ * @param styles the sheet to adopt.
17
+ */
18
+ export function adoptLightDomStyles(host, styles) {
19
+ const root = host.getRootNode();
20
+ let roots = styledRoots.get(styles);
21
+ if (!roots) {
22
+ roots = new WeakSet();
23
+ styledRoots.set(styles, roots);
24
+ }
25
+ if (roots.has(root)) {
26
+ return;
27
+ }
28
+ roots.add(root);
29
+ const sheet = styles.styleSheet;
30
+ if (sheet && "adoptedStyleSheets" in root) {
31
+ root.adoptedStyleSheets = [...root.adoptedStyleSheets, sheet];
32
+ return;
33
+ }
34
+ const style = document.createElement("style");
35
+ style.textContent = styles.cssText;
36
+ (root instanceof Document ? root.head : root).appendChild(style);
37
+ }
@@ -0,0 +1,19 @@
1
+ import { CSSResult } from "lit";
2
+ import { EunomiaBreakpoint } from "../breakpoints.js";
3
+ /**
4
+ * {@link mediaBelow} as a value a Lit `css` template accepts, for a
5
+ * component's own `@media` or `@container` rule :
6
+ * `@media ${cssBelow("tablet")} { … }`.
7
+ *
8
+ * @param breakpoint the breakpoint the range stops under.
9
+ * @returns the media condition.
10
+ */
11
+ export declare function cssBelow(breakpoint: EunomiaBreakpoint): CSSResult;
12
+ /**
13
+ * {@link mediaFrom} as a value a Lit `css` template accepts :
14
+ * `@media ${cssFrom("tablet")} { … }`.
15
+ *
16
+ * @param breakpoint the breakpoint the range starts at.
17
+ * @returns the media condition.
18
+ */
19
+ export declare function cssFrom(breakpoint: EunomiaBreakpoint): CSSResult;
@@ -0,0 +1,23 @@
1
+ import { unsafeCSS } from "lit";
2
+ import { mediaBelow, mediaFrom } from "../breakpoints.js";
3
+ /**
4
+ * {@link mediaBelow} as a value a Lit `css` template accepts, for a
5
+ * component's own `@media` or `@container` rule :
6
+ * `@media ${cssBelow("tablet")} { … }`.
7
+ *
8
+ * @param breakpoint the breakpoint the range stops under.
9
+ * @returns the media condition.
10
+ */
11
+ export function cssBelow(breakpoint) {
12
+ return unsafeCSS(mediaBelow(breakpoint));
13
+ }
14
+ /**
15
+ * {@link mediaFrom} as a value a Lit `css` template accepts :
16
+ * `@media ${cssFrom("tablet")} { … }`.
17
+ *
18
+ * @param breakpoint the breakpoint the range starts at.
19
+ * @returns the media condition.
20
+ */
21
+ export function cssFrom(breakpoint) {
22
+ return unsafeCSS(mediaFrom(breakpoint));
23
+ }
@@ -0,0 +1,40 @@
1
+ /**
2
+ * A step of the shared `--eun-duration-*` scale declared by every theme
3
+ * stylesheet (`xs` 100ms, `s` 150ms, `m` 200ms, `l` 250ms, `xl` 300ms).
4
+ */
5
+ export type MotionDuration = "xs" | "s" | "m" | "l" | "xl";
6
+ /**
7
+ * A step of the shared `--eun-easing-*` tokens declared by every theme
8
+ * stylesheet (`default` is `ease`, `out` is `ease-out`).
9
+ */
10
+ export type MotionEasing = "default" | "out";
11
+ /**
12
+ * Converts a CSS time (`200ms`, `0.2s`) into milliseconds.
13
+ *
14
+ * @param raw the CSS time, as read off `getPropertyValue`.
15
+ * @returns the duration in ms, or `undefined` when `raw` is empty, not a
16
+ * number, or negative.
17
+ */
18
+ export declare function cssTimeToMs(raw: string): number | undefined;
19
+ /**
20
+ * The duration, in ms, of an animation driven from JS (Web Animations API,
21
+ * timers) : the component's own custom property when set, otherwise the
22
+ * shared `--eun-duration-<step>` token, otherwise `fallbackMs` when no
23
+ * theme stylesheet is loaded.
24
+ *
25
+ * @param el the element to read both custom properties off.
26
+ * @param property the component's own custom property, e.g.
27
+ * `--field-listbox-transition-duration`.
28
+ * @param step the `--eun-duration-*` step the component defaults to.
29
+ * @param fallbackMs the value used when neither property resolves.
30
+ */
31
+ export declare function resolveDurationMs(el: Element, property: string, step: MotionDuration, fallbackMs: number): number;
32
+ /**
33
+ * The timing function of an animation driven from JS : the shared
34
+ * `--eun-easing-<step>` token, or its plain CSS keyword when no theme
35
+ * stylesheet is loaded.
36
+ *
37
+ * @param el the element to read the token off.
38
+ * @param step the `--eun-easing-*` step to read, `default` if omitted.
39
+ */
40
+ export declare function resolveEasing(el: Element, step?: MotionEasing): string;
@@ -0,0 +1,51 @@
1
+ const EASING_FALLBACKS = {
2
+ default: "ease",
3
+ out: "ease-out",
4
+ };
5
+ /**
6
+ * Converts a CSS time (`200ms`, `0.2s`) into milliseconds.
7
+ *
8
+ * @param raw the CSS time, as read off `getPropertyValue`.
9
+ * @returns the duration in ms, or `undefined` when `raw` is empty, not a
10
+ * number, or negative.
11
+ */
12
+ export function cssTimeToMs(raw) {
13
+ const value = raw.trim();
14
+ if (!value) {
15
+ return undefined;
16
+ }
17
+ const parsed = value.endsWith("ms")
18
+ ? Number.parseFloat(value)
19
+ : Number.parseFloat(value) * 1000;
20
+ return Number.isFinite(parsed) && parsed >= 0 ? parsed : undefined;
21
+ }
22
+ /**
23
+ * The duration, in ms, of an animation driven from JS (Web Animations API,
24
+ * timers) : the component's own custom property when set, otherwise the
25
+ * shared `--eun-duration-<step>` token, otherwise `fallbackMs` when no
26
+ * theme stylesheet is loaded.
27
+ *
28
+ * @param el the element to read both custom properties off.
29
+ * @param property the component's own custom property, e.g.
30
+ * `--field-listbox-transition-duration`.
31
+ * @param step the `--eun-duration-*` step the component defaults to.
32
+ * @param fallbackMs the value used when neither property resolves.
33
+ */
34
+ export function resolveDurationMs(el, property, step, fallbackMs) {
35
+ const style = getComputedStyle(el);
36
+ return (cssTimeToMs(style.getPropertyValue(property)) ??
37
+ cssTimeToMs(style.getPropertyValue(`--eun-duration-${step}`)) ??
38
+ fallbackMs);
39
+ }
40
+ /**
41
+ * The timing function of an animation driven from JS : the shared
42
+ * `--eun-easing-<step>` token, or its plain CSS keyword when no theme
43
+ * stylesheet is loaded.
44
+ *
45
+ * @param el the element to read the token off.
46
+ * @param step the `--eun-easing-*` step to read, `default` if omitted.
47
+ */
48
+ export function resolveEasing(el, step = "default") {
49
+ return (getComputedStyle(el).getPropertyValue(`--eun-easing-${step}`).trim() ||
50
+ EASING_FALLBACKS[step]);
51
+ }
@@ -48,7 +48,7 @@ export declare function buildTints(primaryHex: EunomiaHexColor, isDark: boolean)
48
48
  * custom brand from two hex seed colors by composing `buildPalette` and
49
49
  * `buildTints` above, then writing every result straight onto
50
50
  * `document.documentElement`, both 11-step shade scales, their `on-*`
51
- * text colors, the transparent hover/active tokens, and the `-tint`
51
+ * text colors, the `alpha-*` tokens, and the `-tint`
52
52
  * neutrals. Everything else (grey scale, spacing, radius, shadows,
53
53
  * semantic state colors) still comes from whichever base theme class or
54
54
  * `data-theme` is already applied; this deliberately doesn't touch those.
@@ -70,6 +70,11 @@ export declare function initializeTheme(primary: EunomiaHexColor, secondary: Eun
70
70
  export interface EunomiaThemeCssOptions {
71
71
  surfaceColor?: EunomiaHexColor;
72
72
  darkSurfaceColor?: EunomiaHexColor;
73
+ darkSecondaryColor?: EunomiaHexColor;
74
+ inverseSurfaceColor?: EunomiaHexColor;
75
+ darkInverseSurfaceColor?: EunomiaHexColor;
76
+ textColor?: EunomiaHexColor;
77
+ darkTextColor?: EunomiaHexColor;
73
78
  fontFamily?: string;
74
79
  brand?: string;
75
80
  }
@@ -159,12 +159,12 @@ export function buildPalette(baseHex, isDark) {
159
159
  };
160
160
  });
161
161
  }
162
- const TRANSPARENT_TOKENS = [
163
- { name: "bg-hover", alpha: 0.08 },
164
- { name: "bg-active", alpha: 0.08 },
165
- { name: "transparent", alpha: 0.2 },
166
- { name: "transparent-hover", alpha: 0.3 },
167
- { name: "transparent-active", alpha: 0.4 },
162
+ const ALPHA_TOKENS = [
163
+ { name: "alpha-5", alpha: 0.05 },
164
+ { name: "alpha-10", alpha: 0.1 },
165
+ { name: "alpha-20", alpha: 0.2 },
166
+ { name: "alpha-30", alpha: 0.3 },
167
+ { name: "alpha-40", alpha: 0.4 },
168
168
  ];
169
169
  /**
170
170
  * 5% of the effective `primary-500` (already dark-accessible-adjusted in
@@ -204,25 +204,44 @@ export function buildTints(primaryHex, isDark) {
204
204
  contentPressedTint: mix(LIGHT_TINT_BASE.contentPressed, primary500, TINT_RATIO),
205
205
  };
206
206
  }
207
+ /**
208
+ * The muted `--eun-text-secondary` for a custom text color: `text` mixed
209
+ * 30% toward `surface`, backed off in 5% steps until it still clears WCAG
210
+ * AA against that surface.
211
+ */
212
+ function secondaryText(text, surface) {
213
+ let percent = 30;
214
+ let result = mix(text, surface, percent / 100);
215
+ while (contrastRatio(result, surface) < MIN_CONTRAST && percent > 0) {
216
+ percent -= 5;
217
+ result = mix(text, surface, percent / 100);
218
+ }
219
+ return result;
220
+ }
207
221
  /**
208
222
  * Every custom property a custom brand sets for one mode, as ordered
209
223
  * `[property, value]` pairs: both 11-step shade scales, their `on-*`
210
- * text colors, the transparent hover/active tokens, the surface color,
211
- * the `-tint` neutrals, and `--eun-font-family` when one is passed.
212
- * Shared by `initializeTheme` and `buildThemeCss` so the inline and the
213
- * stylesheet output can never drift apart.
224
+ * text colors, the `alpha-*` tokens, the surface color,
225
+ * the `-tint` neutrals, and `--eun-font-family`, the inverse surface and
226
+ * the text colors when they are passed. Shared by `initializeTheme` and `buildThemeCss`
227
+ * so the inline and the stylesheet output can never drift apart.
214
228
  */
215
- function buildThemeTokens(primary, secondary, isDark, surfaceColor, fontFamily) {
229
+ function buildThemeTokens(primary, secondary, isDark, options) {
230
+ const { surfaceColor, fontFamily, darkSecondaryColor, inverseSurfaceColor, textColor, } = options;
216
231
  const tokens = [];
217
- for (const [type, seed] of [
218
- ["primary", primary],
219
- ["secondary", secondary],
232
+ for (const [type, seed, checkDark] of [
233
+ ["primary", primary, isDark],
234
+ [
235
+ "secondary",
236
+ darkSecondaryColor ?? secondary,
237
+ isDark && !darkSecondaryColor,
238
+ ],
220
239
  ]) {
221
- for (const shade of buildPalette(seed, isDark)) {
240
+ for (const shade of buildPalette(seed, checkDark)) {
222
241
  tokens.push([`--eun-color-${type}-${shade.name}`, shade.value]);
223
242
  tokens.push([`--eun-color-on-${type}-${shade.name}`, shade.on]);
224
243
  }
225
- for (const token of TRANSPARENT_TOKENS) {
244
+ for (const token of ALPHA_TOKENS) {
226
245
  tokens.push([
227
246
  `--eun-color-${type}-${token.name}`,
228
247
  toRgba(seed, token.alpha),
@@ -230,6 +249,12 @@ function buildThemeTokens(primary, secondary, isDark, surfaceColor, fontFamily)
230
249
  }
231
250
  }
232
251
  tokens.push(["--eun-surface-color", surfaceColor]);
252
+ if (inverseSurfaceColor) {
253
+ tokens.push(["--eun-surface-inverse", inverseSurfaceColor], ["--eun-text-on-inverse", pickOnColor(inverseSurfaceColor)]);
254
+ }
255
+ if (textColor) {
256
+ tokens.push(["--eun-text-color", textColor], ["--eun-text-secondary", secondaryText(textColor, surfaceColor)]);
257
+ }
233
258
  if (fontFamily) {
234
259
  tokens.push(["--eun-font-family", fontFamily]);
235
260
  }
@@ -246,7 +271,7 @@ function buildThemeTokens(primary, secondary, isDark, surfaceColor, fontFamily)
246
271
  * custom brand from two hex seed colors by composing `buildPalette` and
247
272
  * `buildTints` above, then writing every result straight onto
248
273
  * `document.documentElement`, both 11-step shade scales, their `on-*`
249
- * text colors, the transparent hover/active tokens, and the `-tint`
274
+ * text colors, the `alpha-*` tokens, and the `-tint`
250
275
  * neutrals. Everything else (grey scale, spacing, radius, shadows,
251
276
  * semantic state colors) still comes from whichever base theme class or
252
277
  * `data-theme` is already applied; this deliberately doesn't touch those.
@@ -266,7 +291,10 @@ function buildThemeTokens(primary, secondary, isDark, surfaceColor, fontFamily)
266
291
  */
267
292
  export function initializeTheme(primary, secondary, isDark = false, surfaceColor = "#ffffff", darkSurfaceColor = DARK_SURFACE, fontFamily) {
268
293
  const root = document.documentElement.style;
269
- const tokens = buildThemeTokens(primary, secondary, isDark, isDark ? darkSurfaceColor : surfaceColor, fontFamily);
294
+ const tokens = buildThemeTokens(primary, secondary, isDark, {
295
+ surfaceColor: isDark ? darkSurfaceColor : surfaceColor,
296
+ fontFamily,
297
+ });
270
298
  for (const [property, value] of tokens) {
271
299
  root.setProperty(property, value);
272
300
  }
@@ -283,9 +311,20 @@ export function initializeTheme(primary, secondary, isDark = false, surfaceColor
283
311
  * switching mode is just a `data-theme` change, no regeneration needed.
284
312
  */
285
313
  export function buildThemeCss(primary, secondary, options = {}) {
286
- const { surfaceColor = "#ffffff", darkSurfaceColor = DARK_SURFACE, fontFamily, brand = "custom", } = options;
314
+ const { surfaceColor = "#ffffff", darkSurfaceColor = DARK_SURFACE, darkSecondaryColor, inverseSurfaceColor, darkInverseSurfaceColor = inverseSurfaceColor, textColor, darkTextColor, fontFamily, brand = "custom", } = options;
287
315
  const rule = (selector, isDark) => {
288
- const tokens = buildThemeTokens(primary, secondary, isDark, isDark ? darkSurfaceColor : surfaceColor, fontFamily);
316
+ const tokens = buildThemeTokens(primary, secondary, isDark, {
317
+ surfaceColor: isDark ? darkSurfaceColor : surfaceColor,
318
+ fontFamily,
319
+ darkSecondaryColor: isDark ? darkSecondaryColor : undefined,
320
+ inverseSurfaceColor: isDark
321
+ ? darkInverseSurfaceColor
322
+ : inverseSurfaceColor,
323
+ textColor: isDark ? darkTextColor : textColor,
324
+ });
325
+ if (isDark && textColor && !darkTextColor) {
326
+ tokens.push(["--eun-text-color", "var(--eun-color-grey-800)"], ["--eun-text-secondary", "var(--eun-color-grey-700)"]);
327
+ }
289
328
  const body = tokens
290
329
  .map(([property, value]) => ` ${property}: ${value};`)
291
330
  .join("\n");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eunomia/elements",
3
- "version": "1.0.0-beta.5",
3
+ "version": "1.0.0-beta.6",
4
4
  "description": "Eunomia the framework-agnostic web component design system",
5
5
  "type": "module",
6
6
  "homepage": "https://eunomia-ds.vercel.app",
@@ -25,10 +25,6 @@
25
25
  "types": "./dist/components/content/badge/badge.d.ts",
26
26
  "default": "./dist/components/content/badge/badge.js"
27
27
  },
28
- "./breadcrumb-item.js": {
29
- "types": "./dist/components/navigation/breadcrumb/breadcrumb-item.d.ts",
30
- "default": "./dist/components/navigation/breadcrumb/breadcrumb-item.js"
31
- },
32
28
  "./breadcrumb.js": {
33
29
  "types": "./dist/components/navigation/breadcrumb/breadcrumb.d.ts",
34
30
  "default": "./dist/components/navigation/breadcrumb/breadcrumb.js"
@@ -81,6 +77,10 @@
81
77
  "types": "./dist/components/form/date-picker/date-picker.d.ts",
82
78
  "default": "./dist/components/form/date-picker/date-picker.js"
83
79
  },
80
+ "./description-list.js": {
81
+ "types": "./dist/components/content/description-list/description-list.d.ts",
82
+ "default": "./dist/components/content/description-list/description-list.js"
83
+ },
84
84
  "./divider.js": {
85
85
  "types": "./dist/components/layout/divider/divider.d.ts",
86
86
  "default": "./dist/components/layout/divider/divider.js"
@@ -233,26 +233,6 @@
233
233
  "types": "./dist/features/table/table-action-bar/table-action-bar.d.ts",
234
234
  "default": "./dist/features/table/table-action-bar/table-action-bar.js"
235
235
  },
236
- "./table-cell.js": {
237
- "types": "./dist/features/table/table-cell/table-cell.d.ts",
238
- "default": "./dist/features/table/table-cell/table-cell.js"
239
- },
240
- "./table-column.js": {
241
- "types": "./dist/features/table/table-column/table-column.d.ts",
242
- "default": "./dist/features/table/table-column/table-column.js"
243
- },
244
- "./table-header.js": {
245
- "types": "./dist/features/table/table-header/table-header.d.ts",
246
- "default": "./dist/features/table/table-header/table-header.js"
247
- },
248
- "./table-item.js": {
249
- "types": "./dist/features/table/table-item/table-item.d.ts",
250
- "default": "./dist/features/table/table-item/table-item.js"
251
- },
252
- "./table-skeleton-row.js": {
253
- "types": "./dist/features/table/table-skeleton-row/table-skeleton-row.d.ts",
254
- "default": "./dist/features/table/table-skeleton-row/table-skeleton-row.js"
255
- },
256
236
  "./table.js": {
257
237
  "types": "./dist/features/table/table/table.d.ts",
258
238
  "default": "./dist/features/table/table/table.js"
@@ -301,6 +281,10 @@
301
281
  "types": "./dist/utils/theme-generator.utils.d.ts",
302
282
  "default": "./dist/utils/theme-generator.utils.js"
303
283
  },
284
+ "./breakpoints.js": {
285
+ "types": "./dist/breakpoints.d.ts",
286
+ "default": "./dist/breakpoints.js"
287
+ },
304
288
  "./jsx": {
305
289
  "types": "./dist/jsx.d.ts",
306
290
  "default": "./dist/jsx.js"
@@ -312,8 +296,12 @@
312
296
  "./sidebar-ssr.css": "./dist/ssr/sidebar-ssr.css",
313
297
  "./overlay-ssr.css": "./dist/ssr/overlay-ssr.css",
314
298
  "./links-ssr.css": "./dist/ssr/links-ssr.css",
299
+ "./button-ssr.css": "./dist/ssr/button-ssr.css",
300
+ "./tag-ssr.css": "./dist/ssr/tag-ssr.css",
301
+ "./card-ssr.css": "./dist/ssr/card-ssr.css",
315
302
  "./rich-text.css": "./dist/ssr/rich-text.css",
316
- "./native-table.css": "./dist/features/table/native-table.css"
303
+ "./table-ssr.css": "./dist/ssr/table-ssr.css",
304
+ "./description-list-ssr.css": "./dist/ssr/description-list-ssr.css"
317
305
  },
318
306
  "files": [
319
307
  "dist",
@@ -326,12 +314,13 @@
326
314
  "./dist/features/**/*.js"
327
315
  ],
328
316
  "scripts": {
329
- "build": "tsc --noEmit",
317
+ "build": "tsc --noEmit -p tsconfig.build.json",
330
318
  "build:dist": "node scripts/build-dist.mjs",
331
319
  "build:dist:watch": "tsc -p tsconfig.build.json && node scripts/copy-assets.mjs && node scripts/generate-exports.mjs && tsc -p tsconfig.build.json --watch",
332
320
  "build:cdn": "node scripts/build-cdn.mjs",
333
321
  "prepublishOnly": "npm run build:dist && npm run build:cdn",
334
- "lint": "eslint . --config ../eslint.config.js",
322
+ "lint": "eslint . --config ../eslint.config.js && node scripts/breakpoints.mjs --check",
323
+ "breakpoints": "node scripts/breakpoints.mjs",
335
324
  "test": "web-test-runner --config ../web-test-runner.config.mjs",
336
325
  "test:coverage": "web-test-runner --config ../web-test-runner.config.mjs --coverage"
337
326
  },
@@ -0,0 +1,8 @@
1
+ // Short entry point for the breakpoints : the `eunomia-below-*` and
2
+ // `eunomia-from-*` mixins, and the `$map-device-width` scale they read.
3
+ //
4
+ // @use "@eunomia/elements/styles/breakpoints" as *;
5
+ //
6
+ // Emits no CSS, so it can be used in every stylesheet that needs it.
7
+ @forward "./tools/mixins/media-queries/eunomia-media-queries.mixin.scss";
8
+ @forward "./tools/variables/eunomia.breakpoints.scss";
@@ -0,0 +1,6 @@
1
+ // Grid utility classes, emitted once at the top level. Every theme entry
2
+ // file uses this module, and Sass outputs a module's CSS only once per
3
+ // compilation, so loading several themes never duplicates the classes.
4
+ @use "./tools/mixins/layout/eunomia-grid.mixin.scss" as *;
5
+
6
+ @include eunomia-grid-layouts();
@@ -1,5 +1,6 @@
1
- @use './../tools/indexes/eunomia-tools.index.scss' as *;
2
- @use './mixins/eunomia-scales.mixin.scss' as *;
1
+ @use "./../tools/indexes/eunomia-tools.index.scss" as *;
2
+ @use "./mixins/eunomia-scales.mixin.scss" as *;
3
+ @use "./../eunomia-grid.scss";
3
4
 
4
5
  @mixin default-settings {
5
6
  @include eunomia-font-family();
@@ -9,10 +10,10 @@
9
10
  @include eunomia-border-radius();
10
11
  @include eunomia-border-width();
11
12
  @include eunomia-shadows();
13
+ @include eunomia-motion();
12
14
  @include eunomia-alpha();
13
15
  @include eunomia-height();
14
16
  @include eunomia-breakpoints();
15
- @include eunomia-grid-layouts();
16
17
  }
17
18
 
18
19
  .eunomia-theme {
@@ -48,7 +48,10 @@
48
48
  $result: $color;
49
49
  $guard: 0;
50
50
 
51
- @while eunomia-contrast-ratio($result, $surface) < $min-contrast and $guard < 60
51
+ @while eunomia-contrast-ratio($result, $surface) <
52
+ $min-contrast and
53
+ $guard <
54
+ 60
52
55
  {
53
56
  $result: color.adjust($result, $lightness: $step, $space: hsl);
54
57
  $guard: $guard + 1;
@@ -64,3 +67,33 @@
64
67
 
65
68
  @return rgb($r, $g, $b);
66
69
  }
70
+
71
+ @function eunomia-light-accessible(
72
+ $color,
73
+ $surface: #ffffff,
74
+ $min-contrast: 4.5,
75
+ $min-lightness: 10%,
76
+ $step: 1.5%
77
+ ) {
78
+ $result: $color;
79
+ $guard: 0;
80
+
81
+ @while eunomia-contrast-ratio($result, $surface) <
82
+ $min-contrast and
83
+ $guard <
84
+ 60
85
+ {
86
+ $result: color.adjust($result, $lightness: -$step, $space: hsl);
87
+ $guard: $guard + 1;
88
+
89
+ @if color.channel($result, "lightness", $space: hsl) <= $min-lightness {
90
+ $guard: 60;
91
+ }
92
+ }
93
+
94
+ $r: math.round(color.channel($result, "red"));
95
+ $g: math.round(color.channel($result, "green"));
96
+ $b: math.round(color.channel($result, "blue"));
97
+
98
+ @return rgb($r, $g, $b);
99
+ }
@@ -32,6 +32,8 @@
32
32
  --eun-text-disabled-color: #8d93aa;
33
33
  --eun-text-readonly-color: #c1c9d6;
34
34
  --eun-disabled-content: #c1c9d6;
35
+ --eun-surface-inverse: #0b1620;
36
+ --eun-text-on-inverse: #f5f7fa;
35
37
  }
36
38
 
37
39
  @mixin eunomia-dark-neutrals {
@@ -68,4 +70,6 @@
68
70
  --eun-text-disabled-color: var(--eun-color-grey-500);
69
71
  --eun-text-readonly-color: var(--eun-color-grey-400);
70
72
  --eun-disabled-content: var(--eun-color-grey-400);
73
+ --eun-surface-inverse: #0b1620;
74
+ --eun-text-on-inverse: #f5f7fa;
71
75
  }