@eunomia/elements 1.0.0-beta.2 → 1.0.0-beta.4

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 (354) hide show
  1. package/README.md +1 -1
  2. package/dist/cdn/components/chunks/chunk-2JLDJFYD.js +48 -0
  3. package/dist/cdn/components/chunks/chunk-4MXL6PZC.js +124 -0
  4. package/dist/cdn/components/chunks/{chunk-32KRPOPV.js → chunk-5XJGYXW7.js} +6 -6
  5. package/dist/cdn/components/chunks/{chunk-O2HNWH65.js → chunk-5XJLIHAU.js} +7 -7
  6. package/dist/cdn/components/chunks/{chunk-5GF2Q3NR.js → chunk-74AOAB4X.js} +1 -1
  7. package/dist/cdn/components/chunks/{chunk-WYMBUIKX.js → chunk-A6KGFALA.js} +4 -4
  8. package/dist/cdn/components/chunks/chunk-BMQOI7HX.js +371 -0
  9. package/dist/cdn/components/chunks/{chunk-LJYTHDZP.js → chunk-D2M4BV5Y.js} +6 -6
  10. package/dist/cdn/components/chunks/{chunk-NEYBPT3D.js → chunk-EJIX2D4Z.js} +2 -2
  11. package/dist/cdn/components/chunks/{chunk-BYBUXKXC.js → chunk-EOWBYZV7.js} +2 -2
  12. package/dist/cdn/components/chunks/chunk-EST3M4AO.js +1 -0
  13. package/dist/cdn/components/chunks/{chunk-AQQMW353.js → chunk-GSJEJLFA.js} +3 -3
  14. package/dist/cdn/components/chunks/chunk-GU6BVMFJ.js +1 -0
  15. package/dist/cdn/components/chunks/{chunk-5RCCZVFZ.js → chunk-IJ5WFMK4.js} +1 -1
  16. package/dist/cdn/components/chunks/{chunk-RWONCXTF.js → chunk-KVYUNKUO.js} +2 -2
  17. package/dist/cdn/components/chunks/chunk-LGLQ36QB.js +16 -0
  18. package/dist/cdn/components/chunks/{chunk-74HHV4CX.js → chunk-NHFWATVN.js} +2 -2
  19. package/dist/cdn/components/chunks/chunk-OAULRKHQ.js +38 -0
  20. package/dist/cdn/components/chunks/chunk-P32B7BFD.js +118 -0
  21. package/dist/cdn/components/chunks/{chunk-ZPFHTJSS.js → chunk-PCM7D3YF.js} +1 -1
  22. package/dist/cdn/components/chunks/{chunk-ABYEBP57.js → chunk-PED5ATYN.js} +11 -8
  23. package/dist/cdn/components/chunks/{chunk-ON42P6FI.js → chunk-RJCJXB7Y.js} +5 -5
  24. package/dist/cdn/components/chunks/{chunk-5C7YND22.js → chunk-S2UCEWNG.js} +8 -8
  25. package/dist/cdn/components/chunks/{chunk-7WTSHE7M.js → chunk-SIHZFOTK.js} +9 -9
  26. package/dist/cdn/components/chunks/{chunk-6UPI7GHJ.js → chunk-UAGCQF23.js} +7 -7
  27. package/dist/cdn/components/chunks/{chunk-6IILPCSQ.js → chunk-X2AUBZD2.js} +3 -3
  28. package/dist/cdn/components/chunks/chunk-YGUJJ25C.js +263 -0
  29. package/dist/cdn/components/chunks/chunk-YYCEPZUN.js +1 -0
  30. package/dist/cdn/components/eun-alert.js +65 -45
  31. package/dist/cdn/components/eun-animate.js +178 -2
  32. package/dist/cdn/components/eun-badge.js +1 -1
  33. package/dist/cdn/components/eun-breadcrumb-item.js +14 -10
  34. package/dist/cdn/components/eun-breadcrumb.js +11 -7
  35. package/dist/cdn/components/eun-button.js +1 -1
  36. package/dist/cdn/components/eun-calendar.js +16 -16
  37. package/dist/cdn/components/eun-card.js +29 -12
  38. package/dist/cdn/components/eun-carousel.js +36 -28
  39. package/dist/cdn/components/eun-check-card.js +3 -3
  40. package/dist/cdn/components/eun-checkbox-list.js +3 -3
  41. package/dist/cdn/components/eun-checkbox.js +1 -1
  42. package/dist/cdn/components/eun-chip.js +45 -210
  43. package/dist/cdn/components/eun-collapse.js +20 -26
  44. package/dist/cdn/components/eun-color-picker.js +28 -28
  45. package/dist/cdn/components/eun-counter.js +11 -11
  46. package/dist/cdn/components/eun-date-picker.js +50 -50
  47. package/dist/cdn/components/eun-drawer.js +3 -3
  48. package/dist/cdn/components/eun-dropdown-button.js +1 -1
  49. package/dist/cdn/components/eun-dropdown-item.js +6 -6
  50. package/dist/cdn/components/eun-fab.js +31 -53
  51. package/dist/cdn/components/eun-icon.js +1 -1
  52. package/dist/cdn/components/eun-image-card.js +18 -11
  53. package/dist/cdn/components/eun-image-carousel.js +16 -16
  54. package/dist/cdn/components/eun-infinite-list.js +1 -1
  55. package/dist/cdn/components/eun-input-file.js +20 -20
  56. package/dist/cdn/components/eun-input-phone.js +14 -14
  57. package/dist/cdn/components/eun-input.js +1 -1
  58. package/dist/cdn/components/eun-label.js +4 -4
  59. package/dist/cdn/components/eun-link.js +29 -11
  60. package/dist/cdn/components/eun-loader.js +1 -1
  61. package/dist/cdn/components/eun-modal.js +6 -6
  62. package/dist/cdn/components/eun-pagination.js +3 -3
  63. package/dist/cdn/components/eun-password-strength.js +9 -6
  64. package/dist/cdn/components/eun-progress-bar.js +13 -13
  65. package/dist/cdn/components/eun-radio-card.js +2 -2
  66. package/dist/cdn/components/eun-radio-list.js +3 -3
  67. package/dist/cdn/components/eun-radio.js +1 -1
  68. package/dist/cdn/components/eun-scheduler-event-editor.js +2 -2
  69. package/dist/cdn/components/eun-scheduler-event.js +1 -1
  70. package/dist/cdn/components/eun-scheduler.js +10 -10
  71. package/dist/cdn/components/eun-search.js +7 -7
  72. package/dist/cdn/components/eun-select.js +39 -18
  73. package/dist/cdn/components/eun-sidebar.js +10 -10
  74. package/dist/cdn/components/eun-skeleton.js +1 -1
  75. package/dist/cdn/components/eun-slider.js +9 -9
  76. package/dist/cdn/components/eun-sliding-card.js +7 -10
  77. package/dist/cdn/components/eun-step.js +8 -8
  78. package/dist/cdn/components/eun-stepper.js +8 -8
  79. package/dist/cdn/components/eun-switch.js +10 -10
  80. package/dist/cdn/components/eun-tab-group.js +19 -11
  81. package/dist/cdn/components/eun-tab-panel.js +1 -1
  82. package/dist/cdn/components/eun-tab.js +1 -1
  83. package/dist/cdn/components/eun-table-action-bar.js +1 -1
  84. package/dist/cdn/components/eun-table-cell.js +1 -1
  85. package/dist/cdn/components/eun-table-column.js +1 -1
  86. package/dist/cdn/components/eun-table-header.js +1 -1
  87. package/dist/cdn/components/eun-table-item.js +1 -1
  88. package/dist/cdn/components/eun-table-skeleton-row.js +1 -1
  89. package/dist/cdn/components/eun-table.js +3 -3
  90. package/dist/cdn/components/eun-tag.js +34 -122
  91. package/dist/cdn/components/eun-textarea.js +28 -28
  92. package/dist/cdn/components/eun-time-picker.js +25 -25
  93. package/dist/cdn/components/eun-toast.js +40 -36
  94. package/dist/cdn/components/eun-toggle-group.js +199 -66
  95. package/dist/cdn/components/eun-toggle-item.js +42 -25
  96. package/dist/cdn/components/eun-toggle.js +13 -10
  97. package/dist/cdn/components/eun-toolbar.js +28 -19
  98. package/dist/cdn/components/eun-tooltip.js +122 -87
  99. package/dist/cdn/styles/eunomia-themes.css +1 -1
  100. package/dist/cdn/styles/themes/eunomia-theme.css +1 -1
  101. package/dist/cdn/styles/themes/eunomia-theme.scss +1 -0
  102. package/dist/cdn/styles/themes/mixins/eunomia-neutrals.mixin.scss +71 -0
  103. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia-dark.mixin.scss +3 -13
  104. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia.mixin.scss +3 -13
  105. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia.theme.css +1 -1
  106. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia.theme.scss +2 -0
  107. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire-dark.mixin.scss +3 -13
  108. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire.mixin.scss +3 -13
  109. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire.theme.css +1 -1
  110. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire.theme.scss +2 -0
  111. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest-dark.mixin.scss +3 -13
  112. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest.mixin.scss +3 -13
  113. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest.theme.css +1 -1
  114. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest.theme.scss +2 -0
  115. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold-dark.mixin.scss +3 -13
  116. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold.mixin.scss +3 -13
  117. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold.theme.css +1 -1
  118. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold.theme.scss +2 -0
  119. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean-dark.mixin.scss +3 -13
  120. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean.mixin.scss +3 -13
  121. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean.theme.css +1 -1
  122. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean.theme.scss +2 -0
  123. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon-dark.mixin.scss +3 -13
  124. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon.mixin.scss +3 -13
  125. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon.theme.css +1 -1
  126. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon.theme.scss +2 -0
  127. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet-dark.mixin.scss +3 -13
  128. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet.mixin.scss +3 -13
  129. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet.theme.css +1 -1
  130. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet.theme.scss +2 -0
  131. package/dist/cdn/styles/tools/indexes/eunomia-tools.index.scss +1 -0
  132. package/dist/cdn/styles/tools/mixins/settings/eunomia-alpha.mixin.scss +39 -0
  133. package/dist/cdn/styles/tools/mixins/settings/eunomia-border.mixin.scss +3 -3
  134. package/dist/cdn/styles/tools/mixins/settings/eunomia-font.mixin.scss +12 -12
  135. package/dist/cdn/styles/tools/mixins/settings/eunomia-radius.mixin.scss +4 -4
  136. package/dist/components/action/button/button.d.ts +7 -6
  137. package/dist/components/action/button/button.js +7 -6
  138. package/dist/components/action/button/button.styles.js +143 -373
  139. package/dist/components/action/dropdown-button/dropdown-button.d.ts +7 -0
  140. package/dist/components/action/dropdown-button/dropdown-button.js +11 -0
  141. package/dist/components/action/dropdown-button/dropdown-button.styles.js +8 -8
  142. package/dist/components/action/dropdown-button/dropdown-item.styles.js +6 -6
  143. package/dist/components/action/fab/fab.d.ts +3 -1
  144. package/dist/components/action/fab/fab.js +3 -1
  145. package/dist/components/action/fab/fab.styles.js +26 -49
  146. package/dist/components/action/link/link.d.ts +50 -0
  147. package/dist/components/action/link/link.js +69 -1
  148. package/dist/components/action/link/link.styles.js +19 -2
  149. package/dist/components/action/shared-styles/button-palette.styles.d.ts +27 -0
  150. package/dist/components/action/shared-styles/button-palette.styles.js +151 -0
  151. package/dist/components/action/toggle/toggle-group.d.ts +41 -7
  152. package/dist/components/action/toggle/toggle-group.js +162 -46
  153. package/dist/components/action/toggle/toggle-group.styles.d.ts +6 -5
  154. package/dist/components/action/toggle/toggle-group.styles.js +152 -35
  155. package/dist/components/action/toggle/toggle-item.styles.js +38 -21
  156. package/dist/components/action/toggle/toggle.d.ts +1 -1
  157. package/dist/components/action/toggle/toggle.js +2 -2
  158. package/dist/components/action/toggle/toggle.styles.d.ts +2 -2
  159. package/dist/components/action/toggle/toggle.styles.js +13 -10
  160. package/dist/components/alert/alert/alert.d.ts +4 -3
  161. package/dist/components/alert/alert/alert.js +4 -3
  162. package/dist/components/alert/alert/alert.styles.js +57 -36
  163. package/dist/components/alert/drawer/drawer.styles.js +3 -3
  164. package/dist/components/alert/modal/modal.styles.js +6 -6
  165. package/dist/components/alert/toast/toast.d.ts +4 -3
  166. package/dist/components/alert/toast/toast.js +4 -3
  167. package/dist/components/alert/toast/toast.styles.js +41 -36
  168. package/dist/components/content/badge/badge.styles.js +1 -1
  169. package/dist/components/content/card/card.d.ts +4 -4
  170. package/dist/components/content/card/card.js +4 -4
  171. package/dist/components/content/card/card.styles.js +27 -10
  172. package/dist/components/content/card/image-card.d.ts +1 -1
  173. package/dist/components/content/card/image-card.js +1 -1
  174. package/dist/components/content/card/image-card.styles.js +17 -10
  175. package/dist/components/content/card/sliding-card.styles.js +3 -6
  176. package/dist/components/content/chip/chip.d.ts +16 -7
  177. package/dist/components/content/chip/chip.js +18 -6
  178. package/dist/components/content/chip/chip.styles.d.ts +1 -1
  179. package/dist/components/content/chip/chip.styles.js +43 -210
  180. package/dist/components/content/collapse/collapse.styles.js +10 -16
  181. package/dist/components/content/icon/icon.d.ts +48 -5
  182. package/dist/components/content/icon/icon.js +92 -20
  183. package/dist/components/content/icon/icon.style.js +1 -1
  184. package/dist/components/content/image-carousel/image-carousel.styles.js +14 -14
  185. package/dist/components/content/password-strength/password-strength.styles.js +7 -4
  186. package/dist/components/content/progress-bar/progress-bar.styles.js +9 -9
  187. package/dist/components/content/shared-styles/tone-surface.styles.d.ts +31 -0
  188. package/dist/components/content/shared-styles/tone-surface.styles.js +149 -0
  189. package/dist/components/content/tag/tag.d.ts +16 -6
  190. package/dist/components/content/tag/tag.js +19 -6
  191. package/dist/components/content/tag/tag.styles.d.ts +1 -1
  192. package/dist/components/content/tag/tag.styles.js +40 -121
  193. package/dist/components/content/tooltip/tooltip.d.ts +15 -4
  194. package/dist/components/content/tooltip/tooltip.js +21 -4
  195. package/dist/components/content/tooltip/tooltip.styles.js +115 -79
  196. package/dist/components/form/checkbox/check-card.styles.js +2 -2
  197. package/dist/components/form/checkbox/checkbox-list.d.ts +1 -1
  198. package/dist/components/form/checkbox/checkbox-list.js +1 -1
  199. package/dist/components/form/checkbox/checkbox.d.ts +1 -1
  200. package/dist/components/form/checkbox/checkbox.styles.js +6 -6
  201. package/dist/components/form/color-picker/color-picker.d.ts +1 -1
  202. package/dist/components/form/color-picker/color-picker.js +9 -7
  203. package/dist/components/form/color-picker/color-picker.styles.js +7 -7
  204. package/dist/components/form/counter/counter.d.ts +1 -1
  205. package/dist/components/form/counter/counter.js +3 -3
  206. package/dist/components/form/counter/counter.styles.js +7 -7
  207. package/dist/components/form/date-picker/date-picker-day-grid.styles.js +2 -2
  208. package/dist/components/form/date-picker/date-picker-grid.styles.js +15 -15
  209. package/dist/components/form/date-picker/date-picker-month-grid.styles.js +1 -1
  210. package/dist/components/form/date-picker/date-picker-year-grid.styles.js +1 -1
  211. package/dist/components/form/date-picker/date-picker.d.ts +1 -1
  212. package/dist/components/form/date-picker/date-picker.js +3 -3
  213. package/dist/components/form/date-picker/date-picker.styles.js +12 -12
  214. package/dist/components/form/input/input.d.ts +1 -1
  215. package/dist/components/form/input/input.js +2 -2
  216. package/dist/components/form/input-file/input-file.d.ts +1 -1
  217. package/dist/components/form/input-file/input-file.js +5 -5
  218. package/dist/components/form/input-file/input-file.styles.js +9 -9
  219. package/dist/components/form/input-phone/input-phone.d.ts +1 -1
  220. package/dist/components/form/input-phone/input-phone.js +3 -3
  221. package/dist/components/form/input-phone/input-phone.styles.js +7 -7
  222. package/dist/components/form/label/label.styles.js +4 -4
  223. package/dist/components/form/radio/radio-card.styles.js +1 -1
  224. package/dist/components/form/radio/radio-list.d.ts +1 -1
  225. package/dist/components/form/radio/radio-list.js +2 -2
  226. package/dist/components/form/radio/radio.d.ts +1 -1
  227. package/dist/components/form/radio/radio.styles.js +2 -2
  228. package/dist/components/form/search/search.styles.js +6 -6
  229. package/dist/components/form/select/select.d.ts +17 -1
  230. package/dist/components/form/select/select.js +28 -5
  231. package/dist/components/form/select/select.styles.js +16 -5
  232. package/dist/components/form/shared-styles/card.styles.js +1 -1
  233. package/dist/components/form/shared-styles/field.styles.js +7 -7
  234. package/dist/components/form/shared-styles/form-labels.styles.js +1 -1
  235. package/dist/components/form/shared-styles/listbox.styles.js +6 -6
  236. package/dist/components/form/slider/slider.d.ts +1 -1
  237. package/dist/components/form/slider/slider.js +2 -2
  238. package/dist/components/form/slider/slider.styles.js +6 -6
  239. package/dist/components/form/switch/switch.d.ts +1 -1
  240. package/dist/components/form/switch/switch.styles.js +8 -8
  241. package/dist/components/form/textarea/textarea.d.ts +1 -1
  242. package/dist/components/form/textarea/textarea.js +4 -4
  243. package/dist/components/form/textarea/textarea.styles.js +6 -6
  244. package/dist/components/form/time-picker/time-picker-columns.styles.js +6 -6
  245. package/dist/components/form/time-picker/time-picker-list.styles.js +2 -2
  246. package/dist/components/form/time-picker/time-picker.d.ts +1 -1
  247. package/dist/components/form/time-picker/time-picker.js +3 -3
  248. package/dist/components/form/time-picker/time-picker.styles.js +8 -8
  249. package/dist/components/layout/animate/animate.d.ts +40 -5
  250. package/dist/components/layout/animate/animate.js +30 -11
  251. package/dist/components/layout/animate/animate.styles.d.ts +1 -1
  252. package/dist/components/layout/animate/animate.styles.js +191 -1
  253. package/dist/components/loader/loader/loader.styles.js +2 -2
  254. package/dist/components/loader/skeleton/skeleton.styles.js +8 -5
  255. package/dist/components/navigation/breadcrumb/breadcrumb-item.d.ts +7 -0
  256. package/dist/components/navigation/breadcrumb/breadcrumb-item.js +15 -1
  257. package/dist/components/navigation/breadcrumb/breadcrumb-item.styles.js +3 -3
  258. package/dist/components/navigation/breadcrumb/breadcrumb.d.ts +1 -0
  259. package/dist/components/navigation/breadcrumb/breadcrumb.js +7 -1
  260. package/dist/components/navigation/breadcrumb/breadcrumb.styles.js +3 -3
  261. package/dist/components/navigation/carousel/carousel.d.ts +40 -6
  262. package/dist/components/navigation/carousel/carousel.js +61 -12
  263. package/dist/components/navigation/carousel/carousel.styles.js +20 -8
  264. package/dist/components/navigation/pagination/pagination.styles.js +3 -3
  265. package/dist/components/navigation/sidebar/sidebar.styles.js +9 -9
  266. package/dist/components/navigation/stepper/step.styles.js +8 -8
  267. package/dist/components/navigation/stepper/stepper.styles.js +8 -8
  268. package/dist/components/navigation/tabs/tab/tab.styles.js +5 -5
  269. package/dist/components/navigation/tabs/tab-group/tab-group.d.ts +9 -0
  270. package/dist/components/navigation/tabs/tab-group/tab-group.js +19 -2
  271. package/dist/components/navigation/tabs/tab-group/tab-group.styles.js +12 -4
  272. package/dist/components/navigation/tabs/tab-panel/tab-panel.styles.js +1 -1
  273. package/dist/components/navigation/toolbar/toolbar.d.ts +24 -0
  274. package/dist/components/navigation/toolbar/toolbar.js +30 -2
  275. package/dist/components/navigation/toolbar/toolbar.styles.js +20 -10
  276. package/dist/events/change.event.d.ts +13 -1
  277. package/dist/events/change.event.js +2 -1
  278. package/dist/features/scheduler/calendar/calendar.js +1 -1
  279. package/dist/features/scheduler/calendar/calendar.styles.js +3 -3
  280. package/dist/features/scheduler/scheduler/scheduler.styles.js +2 -2
  281. package/dist/features/scheduler/scheduler-event/scheduler-event.styles.js +2 -2
  282. package/dist/features/scheduler/scheduler-event-editor/scheduler-event-editor.styles.js +2 -2
  283. package/dist/features/scheduler/shared/scheduler-event-popover.styles.js +4 -4
  284. package/dist/features/scheduler/shared/scheduler-hour-grid.styles.js +1 -1
  285. package/dist/features/scheduler/shared/scheduler-month-view.styles.js +1 -1
  286. package/dist/features/scheduler/shared/scheduler-year-view.styles.js +1 -1
  287. package/dist/features/table/native-table.css +11 -11
  288. package/dist/features/table/table/table.styles.js +2 -2
  289. package/dist/features/table/table-action-bar/table-action-bar.styles.js +2 -2
  290. package/dist/features/table/table-cell/table-cell.styles.js +2 -2
  291. package/dist/features/table/table-column/table-column.styles.js +3 -3
  292. package/dist/features/table/table-header/table-header.styles.js +4 -4
  293. package/dist/features/table/table-item/table-item.styles.js +6 -6
  294. package/dist/features/table/table-skeleton-row/table-skeleton-row.styles.js +1 -1
  295. package/dist/index.d.ts +5 -5
  296. package/dist/index.js +6 -3
  297. package/dist/jsx.d.ts +18 -5
  298. package/dist/mixins/button.mixin.d.ts +1 -0
  299. package/dist/mixins/button.mixin.js +10 -0
  300. package/dist/mixins/check.mixin.d.ts +1 -1
  301. package/dist/mixins/check.mixin.js +6 -2
  302. package/dist/mixins/editable.mixin.d.ts +1 -1
  303. package/dist/mixins/form.mixin.d.ts +9 -1
  304. package/dist/mixins/form.mixin.js +110 -14
  305. package/dist/mixins/overflow-navigation.mixin.js +2 -1
  306. package/dist/mixins/radio.mixin.d.ts +1 -1
  307. package/dist/mixins/radio.mixin.js +6 -2
  308. package/dist/mixins/validators.mixin.d.ts +9 -3
  309. package/dist/ssr/animate-ssr.css +149 -0
  310. package/dist/ssr/overlay-ssr.css +57 -0
  311. package/dist/ssr/sidebar-ssr.css +57 -0
  312. package/dist/ssr/toolbar-ssr.css +41 -0
  313. package/dist/utils/rich-text.utils.d.ts +33 -0
  314. package/dist/utils/rich-text.utils.js +140 -49
  315. package/dist/utils/theme-generator.utils.d.ts +24 -3
  316. package/dist/utils/theme-generator.utils.js +66 -21
  317. package/package.json +14 -3
  318. package/styles/themes/eunomia-theme.scss +1 -0
  319. package/styles/themes/mixins/eunomia-neutrals.mixin.scss +71 -0
  320. package/styles/themes/prebuilt-themes/eunomia/eunomia-dark.mixin.scss +3 -13
  321. package/styles/themes/prebuilt-themes/eunomia/eunomia.mixin.scss +3 -13
  322. package/styles/themes/prebuilt-themes/eunomia/eunomia.theme.scss +2 -0
  323. package/styles/themes/prebuilt-themes/fire/eunomia-fire-dark.mixin.scss +3 -13
  324. package/styles/themes/prebuilt-themes/fire/eunomia-fire.mixin.scss +3 -13
  325. package/styles/themes/prebuilt-themes/fire/eunomia-fire.theme.scss +2 -0
  326. package/styles/themes/prebuilt-themes/forest/eunomia-forest-dark.mixin.scss +3 -13
  327. package/styles/themes/prebuilt-themes/forest/eunomia-forest.mixin.scss +3 -13
  328. package/styles/themes/prebuilt-themes/forest/eunomia-forest.theme.scss +2 -0
  329. package/styles/themes/prebuilt-themes/gold/eunomia-gold-dark.mixin.scss +3 -13
  330. package/styles/themes/prebuilt-themes/gold/eunomia-gold.mixin.scss +3 -13
  331. package/styles/themes/prebuilt-themes/gold/eunomia-gold.theme.scss +2 -0
  332. package/styles/themes/prebuilt-themes/ocean/eunomia-ocean-dark.mixin.scss +3 -13
  333. package/styles/themes/prebuilt-themes/ocean/eunomia-ocean.mixin.scss +3 -13
  334. package/styles/themes/prebuilt-themes/ocean/eunomia-ocean.theme.scss +2 -0
  335. package/styles/themes/prebuilt-themes/salmon/eunomia-salmon-dark.mixin.scss +3 -13
  336. package/styles/themes/prebuilt-themes/salmon/eunomia-salmon.mixin.scss +3 -13
  337. package/styles/themes/prebuilt-themes/salmon/eunomia-salmon.theme.scss +2 -0
  338. package/styles/themes/prebuilt-themes/violet/eunomia-violet-dark.mixin.scss +3 -13
  339. package/styles/themes/prebuilt-themes/violet/eunomia-violet.mixin.scss +3 -13
  340. package/styles/themes/prebuilt-themes/violet/eunomia-violet.theme.scss +2 -0
  341. package/styles/tools/indexes/eunomia-tools.index.scss +1 -0
  342. package/styles/tools/mixins/settings/eunomia-alpha.mixin.scss +39 -0
  343. package/styles/tools/mixins/settings/eunomia-border.mixin.scss +3 -3
  344. package/styles/tools/mixins/settings/eunomia-font.mixin.scss +12 -12
  345. package/styles/tools/mixins/settings/eunomia-radius.mixin.scss +4 -4
  346. package/dist/cdn/components/chunks/chunk-27Q2SLRY.js +0 -603
  347. package/dist/cdn/components/chunks/chunk-2IQUMAMI.js +0 -38
  348. package/dist/cdn/components/chunks/chunk-5TH3P53V.js +0 -16
  349. package/dist/cdn/components/chunks/chunk-7Q6AHVI5.js +0 -1
  350. package/dist/cdn/components/chunks/chunk-DENMN3WH.js +0 -48
  351. package/dist/cdn/components/chunks/chunk-MBF52GEL.js +0 -1
  352. package/dist/cdn/components/chunks/chunk-ONYUXQV2.js +0 -1
  353. package/dist/cdn/components/chunks/chunk-ZKPCO5RB.js +0 -262
  354. package/dist/components/layout/animate/animate-ssr.css +0 -64
@@ -26,6 +26,13 @@ export const ButtonMixin = (superClass) => {
26
26
  * @default "button"
27
27
  */
28
28
  this.type = "button";
29
+ /**
30
+ * Keeps a `light` or `dark` button white or black in every theme.
31
+ * Without it, they follow the grey scale, which flips with the active
32
+ * theme. Has no effect on the other variants.
33
+ * @default false
34
+ */
35
+ this.fixedColor = false;
29
36
  /**
30
37
  * The button size.
31
38
  * @default "m"
@@ -152,6 +159,9 @@ export const ButtonMixin = (superClass) => {
152
159
  __decorate([
153
160
  property({ reflect: true })
154
161
  ], ButtonMixinClass.prototype, "variant", void 0);
162
+ __decorate([
163
+ property({ type: Boolean, reflect: true, attribute: "fixed-color" })
164
+ ], ButtonMixinClass.prototype, "fixedColor", void 0);
155
165
  __decorate([
156
166
  property({ reflect: true })
157
167
  ], ButtonMixinClass.prototype, "size", void 0);
@@ -21,4 +21,4 @@ export declare class CheckMixinInterface {
21
21
  * @template T A LitElement class extended with other mixins (Disabled, Readonly, Validators, Form).
22
22
  * @returns A class extending the provided superclass with checkable behavior.
23
23
  */
24
- export declare const CheckMixin: <T extends Constructor<LitElement & DisabledMixinInterface & ReadonlyMixinInterface & ValidatorsMixinInterface & FormMixinInterface<string>>>(superClass: T) => Constructor<CheckMixinInterface> & T;
24
+ export declare const CheckMixin: <T extends Constructor<LitElement & DisabledMixinInterface & ReadonlyMixinInterface & ValidatorsMixinInterface<unknown> & FormMixinInterface<string>>>(superClass: T) => Constructor<CheckMixinInterface> & T;
@@ -73,10 +73,14 @@ export const CheckMixin = (superClass) => {
73
73
  * Resets `checked` to `defaultChecked` (or `false`, if never set) on a
74
74
  * native form `reset()` — overrides `FormMixin`'s own
75
75
  * `formResetCallback`, which unconditionally forces checkable fields
76
- * to `false` with no notion of a default checked state.
76
+ * to `false` with no notion of a default checked state. Also resets
77
+ * `dirty`/`touched` itself, since it doesn't call `super` to reach
78
+ * `FormMixin`'s own reset of those two.
77
79
  */
78
80
  formResetCallback() {
79
81
  this.checked = this.defaultChecked ?? false;
82
+ this.dirty = false;
83
+ this.touched = false;
80
84
  }
81
85
  /**
82
86
  * Lifecycle: Called when the component is disconnected from the DOM.
@@ -140,7 +144,7 @@ export const CheckMixin = (superClass) => {
140
144
  else {
141
145
  this.removeAttribute("aria-description");
142
146
  }
143
- this.dispatchEvent(new ChangeEvent());
147
+ this.dispatchEvent(new ChangeEvent(this.checked));
144
148
  }
145
149
  /**
146
150
  * Handles keydown interactions.
@@ -29,4 +29,4 @@ export declare class EditableMixinInterface {
29
29
  * shape (e.g. `string` for a single-value field, `string[]` for a multi-value one).
30
30
  * @returns A class extending the provided superclass with editable behavior.
31
31
  */
32
- export declare const EditableMixin: <U, T extends Constructor<LitElement & DisabledMixinInterface & ValidatorsMixinInterface & FormMixinInterface<U>>>(superClass: T) => Constructor<EditableMixinInterface> & T;
32
+ export declare const EditableMixin: <U, T extends Constructor<LitElement & DisabledMixinInterface & ValidatorsMixinInterface<unknown> & FormMixinInterface<U>>>(superClass: T) => Constructor<EditableMixinInterface> & T;
@@ -13,10 +13,16 @@ export declare class FormMixinInterface<T> {
13
13
  setFormValue(value?: T): void;
14
14
  renderDescription(): typeof nothing | TemplateResult;
15
15
  name?: string;
16
+ hint?: string;
16
17
  description?: string | string[] | undefined;
17
18
  valueState?: T;
18
19
  hideError?: boolean;
19
20
  form: HTMLFormElement | null;
21
+ dirty: boolean;
22
+ touched: boolean;
23
+ controlled: boolean;
24
+ get pristine(): boolean;
25
+ get untouched(): boolean;
20
26
  get value(): T;
21
27
  set value(value: T);
22
28
  get defaultValue(): T | undefined;
@@ -28,4 +34,6 @@ export declare class FormMixinInterface<T> {
28
34
  * @param superClass - Base class to extend.
29
35
  * @returns A class extending the provided base with form capabilities.
30
36
  */
31
- export declare const FormMixin: <T extends Constructor<LitElement & ValidatorsMixinInterface & DisabledMixinInterface>, U>(superClass: T) => Constructor<FormMixinInterface<U>> & T;
37
+ type ValidatorsMixinShape = Omit<ValidatorsMixinInterface, "validators">;
38
+ export declare const FormMixin: <T extends Constructor<LitElement & ValidatorsMixinShape & DisabledMixinInterface>, U>(superClass: T) => Constructor<FormMixinInterface<U>> & T;
39
+ export {};
@@ -4,17 +4,17 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { html, nothing, } from "lit";
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ import { html, nothing } from "lit";
8
13
  import { property, state } from "lit/decorators.js";
9
14
  import { when } from "lit/directives/when.js";
10
- /**
11
- * Mixin that adds form-related behavior and value management.
12
- *
13
- * @template U - Type of the form field value.
14
- * @param superClass - Base class to extend.
15
- * @returns A class extending the provided base with form capabilities.
16
- */
15
+ import { ChangeEvent } from "../events/change.event.js";
17
16
  export const FormMixin = (superClass) => {
17
+ var _FormMixinClass_markDirty, _FormMixinClass_markTouched;
18
18
  class FormMixinClass extends superClass {
19
19
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
20
  constructor(...args) {
@@ -36,11 +36,77 @@ export const FormMixin = (superClass) => {
36
36
  * @private
37
37
  */
38
38
  this.checked = false;
39
- // Attach internals if not already done by ValidatorsMixin
39
+ /**
40
+ * Whether the value has changed since the field connected (or since the
41
+ * last reset). Derived from `eunchange`, the event every field's own
42
+ * user-interaction handler already dispatches (and only that: setting
43
+ * `.value`/`.defaultValue` from outside, as a controlled React field
44
+ * does on every render, never dispatches it), so a controlled field
45
+ * stays pristine across ordinary re-renders and only turns dirty from
46
+ * genuine user input.
47
+ * @default false
48
+ */
49
+ this.dirty = false;
50
+ /**
51
+ * Whether the field has lost focus at least once since it connected (or
52
+ * since the last reset).
53
+ * @default false
54
+ */
55
+ this.touched = false;
56
+ /**
57
+ * Opts this field out of the native reset algorithm's value wipe: when
58
+ * `true`, `formResetCallback` leaves `value`/`checked` untouched.
59
+ *
60
+ * Exists for consumers who drive `value` as a controlled React prop
61
+ * (or equivalent in another framework): a browser-native `form.reset()`
62
+ * cannot be observed by React's reconciler unless a prop actually
63
+ * changes, so a native input only "survives" a stray reset (e.g. the
64
+ * unconditional one `useActionState` triggers via `requestFormReset` on
65
+ * every `<form action={fn}>` submission, success or not) because
66
+ * react-dom force-resyncs its `.value` on every commit — a defense
67
+ * custom elements don't get. Setting `controlled` makes the field's own
68
+ * app state the sole source of truth for `value`: the app decides when
69
+ * to clear it, the same way it already decides what to display it as.
70
+ * @default false
71
+ */
72
+ this.controlled = false;
73
+ /**
74
+ * Marks the field dirty on its own `eunchange` — dispatched only from a
75
+ * genuine user-interaction handler, never from the `value`/`checked`
76
+ * setters themselves — so a re-render setting the same property from
77
+ * outside never flips this.
78
+ */
79
+ _FormMixinClass_markDirty.set(this, () => {
80
+ if (!this.dirty) {
81
+ this.dirty = true;
82
+ }
83
+ });
84
+ /**
85
+ * Marks the field touched the first time focus leaves it.
86
+ */
87
+ _FormMixinClass_markTouched.set(this, () => {
88
+ if (!this.touched) {
89
+ this.touched = true;
90
+ }
91
+ });
40
92
  if (!this.internals) {
41
93
  this.internals = this.attachInternals();
42
94
  }
43
95
  }
96
+ /**
97
+ * Whether the value hasn't changed since the field connected (or since
98
+ * the last reset). The inverse of {@link dirty}.
99
+ */
100
+ get pristine() {
101
+ return !this.dirty;
102
+ }
103
+ /**
104
+ * Whether the field hasn't lost focus yet since it connected (or since
105
+ * the last reset). The inverse of {@link touched}.
106
+ */
107
+ get untouched() {
108
+ return !this.touched;
109
+ }
44
110
  /**
45
111
  * Gets the default value of the field.
46
112
  *
@@ -128,6 +194,17 @@ export const FormMixin = (superClass) => {
128
194
  this.value = this.defaultValue;
129
195
  }
130
196
  this.checkValidity(this.value);
197
+ this.addEventListener(ChangeEvent.eventName, __classPrivateFieldGet(this, _FormMixinClass_markDirty, "f"));
198
+ this.addEventListener("focusout", __classPrivateFieldGet(this, _FormMixinClass_markTouched, "f"));
199
+ }
200
+ /**
201
+ * Lifecycle callback called when element is disconnected from the DOM.
202
+ * Removes the listeners driving {@link dirty} and {@link touched}.
203
+ */
204
+ disconnectedCallback() {
205
+ this.removeEventListener(ChangeEvent.eventName, __classPrivateFieldGet(this, _FormMixinClass_markDirty, "f"));
206
+ this.removeEventListener("focusout", __classPrivateFieldGet(this, _FormMixinClass_markTouched, "f"));
207
+ super.disconnectedCallback?.();
131
208
  }
132
209
  /**
133
210
  * LitElement lifecycle method called before update.
@@ -188,14 +265,23 @@ export const FormMixin = (superClass) => {
188
265
  * `value` attribute. Skipping the assignment there (as an earlier
189
266
  * version of this method did) left a typed-in value stuck after
190
267
  * `form.reset()`.
268
+ *
269
+ * Skips that assignment entirely when {@link controlled} is set: the
270
+ * consuming app owns `value` in that mode, so this callback only clears
271
+ * {@link dirty}/{@link touched}, leaving the value itself for the app
272
+ * to update (or not) on its own terms.
191
273
  */
192
274
  formResetCallback() {
193
- if (this.checkable) {
194
- this.checked = false;
195
- }
196
- else {
197
- this.value = this.defaultValue;
275
+ if (!this.controlled) {
276
+ if (this.checkable) {
277
+ this.checked = false;
278
+ }
279
+ else {
280
+ this.value = this.defaultValue;
281
+ }
198
282
  }
283
+ this.dirty = false;
284
+ this.touched = false;
199
285
  }
200
286
  /**
201
287
  * Renders the description or error messages.
@@ -237,6 +323,7 @@ export const FormMixin = (superClass) => {
237
323
  `;
238
324
  }
239
325
  }
326
+ _FormMixinClass_markDirty = new WeakMap(), _FormMixinClass_markTouched = new WeakMap();
240
327
  FormMixinClass.formAssociated = true;
241
328
  __decorate([
242
329
  property({ reflect: true })
@@ -250,6 +337,15 @@ export const FormMixin = (superClass) => {
250
337
  __decorate([
251
338
  state()
252
339
  ], FormMixinClass.prototype, "valueState", void 0);
340
+ __decorate([
341
+ state()
342
+ ], FormMixinClass.prototype, "dirty", void 0);
343
+ __decorate([
344
+ state()
345
+ ], FormMixinClass.prototype, "touched", void 0);
346
+ __decorate([
347
+ property({ type: Boolean })
348
+ ], FormMixinClass.prototype, "controlled", void 0);
253
349
  __decorate([
254
350
  property({
255
351
  attribute: "default-value",
@@ -77,9 +77,10 @@ export const NavigationOverflowMixin = (superClass) => {
77
77
  }
78
78
  /**
79
79
  * Determines if the scrollable element is currently overflowing.
80
+ * Overridable, for content that isn't all in the `navigation` slot.
80
81
  *
81
82
  * @returns true if on overflow, false otherwise.
82
- * @private
83
+ * @protected
83
84
  */
84
85
  isOnOverflow() {
85
86
  const slot = this.shadowRoot?.querySelector('slot[name="navigation"]');
@@ -28,4 +28,4 @@ export declare class RadioMixinInterface {
28
28
  * @template T A LitElement class extended with other mixins (Disabled, Readonly, Validators, Form).
29
29
  * @returns A class extending the provided superclass with radio behavior.
30
30
  */
31
- export declare const RadioMixin: <T extends Constructor<LitElement & DisabledMixinInterface & ReadonlyMixinInterface & ValidatorsMixinInterface & FormMixinInterface<string>>>(superClass: T) => Constructor<RadioMixinInterface> & T;
31
+ export declare const RadioMixin: <T extends Constructor<LitElement & DisabledMixinInterface & ReadonlyMixinInterface & ValidatorsMixinInterface<unknown> & FormMixinInterface<string>>>(superClass: T) => Constructor<RadioMixinInterface> & T;
@@ -80,10 +80,14 @@ export const RadioMixin = (superClass) => {
80
80
  * Resets `checked` to `defaultChecked` (or `false`, if never set) on a
81
81
  * native form `reset()` — overrides `FormMixin`'s own
82
82
  * `formResetCallback`, which unconditionally forces checkable fields
83
- * to `false` with no notion of a default checked state.
83
+ * to `false` with no notion of a default checked state. Also resets
84
+ * `dirty`/`touched` itself, since it doesn't call `super` to reach
85
+ * `FormMixin`'s own reset of those two.
84
86
  */
85
87
  formResetCallback() {
86
88
  this.checked = this.defaultChecked ?? false;
89
+ this.dirty = false;
90
+ this.touched = false;
87
91
  }
88
92
  /**
89
93
  * Lifecycle: Called when the component is disconnected from the DOM.
@@ -147,7 +151,7 @@ export const RadioMixin = (superClass) => {
147
151
  else {
148
152
  this.removeAttribute("aria-description");
149
153
  }
150
- this.dispatchEvent(new ChangeEvent());
154
+ this.dispatchEvent(new ChangeEvent(this.checked));
151
155
  }
152
156
  /**
153
157
  * Handles keydown interactions.
@@ -1,5 +1,5 @@
1
1
  import { LitElement } from "lit";
2
- import { Mutable } from "../types/form-validators.type.js";
2
+ import { Mutable, Validators } from "../types/form-validators.type.js";
3
3
  import { Constructor } from "../utils/constructor.type.js";
4
4
  /**
5
5
  * Defines a Validity object.
@@ -11,8 +11,13 @@ export interface Validity {
11
11
  /**
12
12
  * Interface defining the contract for components using `ValidatorsMixin`.
13
13
  * Provides integration with the native form lifecycle,
14
+ *
15
+ * @template U Type of value being validated — same as the type parameter
16
+ * passed to `ValidatorsMixin` itself, kept in sync by hand at each call
17
+ * site since it can't be inferred from `ValidatorsMixin(superClass)`'s own
18
+ * single argument.
14
19
  */
15
- export declare class ValidatorsMixinInterface {
20
+ export declare class ValidatorsMixinInterface<U = unknown> {
16
21
  checkLocalValidators: () => Validity;
17
22
  buildCommonValidators: () => Validity;
18
23
  checkValidity: (dataToCheck: any) => boolean;
@@ -21,6 +26,7 @@ export declare class ValidatorsMixinInterface {
21
26
  required: boolean;
22
27
  errorMessages: string[];
23
28
  validationMessage: string | string[];
29
+ validators?: Validators<U>[];
24
30
  }
25
31
  /**
26
32
  * Mixin that adds validation capabilities to a LitElement.
@@ -28,4 +34,4 @@ export declare class ValidatorsMixinInterface {
28
34
  * @template U Type of value being validated.
29
35
  * @param superClass Base class to extend.
30
36
  */
31
- export declare const ValidatorsMixin: <T extends Constructor<LitElement>, U>(superClass: T) => Constructor<ValidatorsMixinInterface> & T;
37
+ export declare const ValidatorsMixin: <T extends Constructor<LitElement>, U>(superClass: T) => Constructor<ValidatorsMixinInterface<U>> & T;
@@ -0,0 +1,149 @@
1
+ /**
2
+ * Optional light-DOM stylesheet for `<eun-animate>` in server-rendered
3
+ * pages (Next.js, or any framework/setup without Declarative Shadow DOM
4
+ * for Lit components). It closes the SSR flash described in the eun-animate
5
+ * documentation's Accessibility/SSR notes : server HTML has no Shadow DOM
6
+ * yet, so `<eun-animate>`'s own `:host([animation="fade"]) { opacity: 0 }`
7
+ * (and the other animation variants) can't apply until the element is
8
+ * upgraded client-side, meaning content renders visible first, then snaps
9
+ * hidden the instant the custom element registers, then fades back in.
10
+ *
11
+ * This stylesheet lives in the host document instead, applying the exact
12
+ * same starting state through `:not(:defined)`, which is true from first
13
+ * paint and stops matching permanently the moment the browser upgrades the
14
+ * element — handing off to the component's own Shadow DOM styles at
15
+ * exactly the point they take over, with no gap and no double transition.
16
+ *
17
+ * Usage — link it in the page `<head>`, alongside (not instead of)
18
+ * importing "@eunomia/elements/animate.js" :
19
+ *
20
+ * <link
21
+ * rel="stylesheet"
22
+ * href="node_modules/@eunomia/elements/dist/ssr/animate-ssr.css"
23
+ * />
24
+ *
25
+ * Requires every server-rendered `<eun-animate>` to write its `animation`
26
+ * attribute explicitly (even when it's the "fade" default), since that
27
+ * default only ever becomes an attribute once Lit initializes the
28
+ * property client-side — invisible to this stylesheet, or any plain CSS,
29
+ * before then :
30
+ *
31
+ * <eun-animate animation="fade">...</eun-animate>
32
+ */
33
+
34
+ eun-animate:not(:defined) {
35
+ --_distance: var(--animate-distance, 80px);
36
+ }
37
+
38
+ eun-animate[animation="fade"]:not(:defined),
39
+ eun-animate[animation="faded-scroll-right"]:not(:defined),
40
+ eun-animate[animation="faded-scroll-left"]:not(:defined),
41
+ eun-animate[animation="faded-scroll-top"]:not(:defined),
42
+ eun-animate[animation="faded-scroll-bottom"]:not(:defined) {
43
+ opacity: 0;
44
+ }
45
+
46
+ eun-animate[animation="scroll-right"]:not(:defined),
47
+ eun-animate[animation="faded-scroll-right"]:not(:defined) {
48
+ transform: translateX(calc(-1 * var(--_distance)));
49
+ }
50
+
51
+ eun-animate[animation="scroll-left"]:not(:defined),
52
+ eun-animate[animation="faded-scroll-left"]:not(:defined) {
53
+ transform: translateX(var(--_distance));
54
+ }
55
+
56
+ eun-animate[animation="scroll-top"]:not(:defined),
57
+ eun-animate[animation="faded-scroll-top"]:not(:defined) {
58
+ transform: translateY(var(--_distance));
59
+ }
60
+
61
+ eun-animate[animation="scroll-bottom"]:not(:defined),
62
+ eun-animate[animation="faded-scroll-bottom"]:not(:defined) {
63
+ transform: translateY(calc(-1 * var(--_distance)));
64
+ }
65
+
66
+ /**
67
+ * `tablet-animation`/`mobile-animation` overrides, mirroring the rules
68
+ * above and the same-named `@media` blocks in the component's own
69
+ * `animate.styles.ts` — kept in sync by hand, since this file has to
70
+ * duplicate the shadow DOM's styles for the light-DOM pre-hydration
71
+ * window regardless. Placed after the unscoped rules above so an
72
+ * equal-specificity tie (e.g. both `animation="fade"` and
73
+ * `tablet-animation="none"` set at once) resolves in the narrower
74
+ * breakpoint's favor, once its `@media` condition is true — same
75
+ * source-order reasoning as `animate.styles.ts`.
76
+ *
77
+ * `max-width` values match `EUNOMIA_BREAKPOINTS.tablet`/`.mobile`
78
+ * (`breakpoints.ts`) — hardcoded here since plain CSS can't read a JS
79
+ * constant.
80
+ */
81
+ @media (max-width: 768px) {
82
+ eun-animate[tablet-animation="none"]:not(:defined) {
83
+ opacity: 1;
84
+ transform: none;
85
+ }
86
+
87
+ eun-animate[tablet-animation="fade"]:not(:defined),
88
+ eun-animate[tablet-animation="faded-scroll-right"]:not(:defined),
89
+ eun-animate[tablet-animation="faded-scroll-left"]:not(:defined),
90
+ eun-animate[tablet-animation="faded-scroll-top"]:not(:defined),
91
+ eun-animate[tablet-animation="faded-scroll-bottom"]:not(:defined) {
92
+ opacity: 0;
93
+ }
94
+
95
+ eun-animate[tablet-animation="scroll-right"]:not(:defined),
96
+ eun-animate[tablet-animation="faded-scroll-right"]:not(:defined) {
97
+ transform: translateX(calc(-1 * var(--_distance)));
98
+ }
99
+
100
+ eun-animate[tablet-animation="scroll-left"]:not(:defined),
101
+ eun-animate[tablet-animation="faded-scroll-left"]:not(:defined) {
102
+ transform: translateX(var(--_distance));
103
+ }
104
+
105
+ eun-animate[tablet-animation="scroll-top"]:not(:defined),
106
+ eun-animate[tablet-animation="faded-scroll-top"]:not(:defined) {
107
+ transform: translateY(var(--_distance));
108
+ }
109
+
110
+ eun-animate[tablet-animation="scroll-bottom"]:not(:defined),
111
+ eun-animate[tablet-animation="faded-scroll-bottom"]:not(:defined) {
112
+ transform: translateY(calc(-1 * var(--_distance)));
113
+ }
114
+ }
115
+
116
+ @media (max-width: 600px) {
117
+ eun-animate[mobile-animation="none"]:not(:defined) {
118
+ opacity: 1;
119
+ transform: none;
120
+ }
121
+
122
+ eun-animate[mobile-animation="fade"]:not(:defined),
123
+ eun-animate[mobile-animation="faded-scroll-right"]:not(:defined),
124
+ eun-animate[mobile-animation="faded-scroll-left"]:not(:defined),
125
+ eun-animate[mobile-animation="faded-scroll-top"]:not(:defined),
126
+ eun-animate[mobile-animation="faded-scroll-bottom"]:not(:defined) {
127
+ opacity: 0;
128
+ }
129
+
130
+ eun-animate[mobile-animation="scroll-right"]:not(:defined),
131
+ eun-animate[mobile-animation="faded-scroll-right"]:not(:defined) {
132
+ transform: translateX(calc(-1 * var(--_distance)));
133
+ }
134
+
135
+ eun-animate[mobile-animation="scroll-left"]:not(:defined),
136
+ eun-animate[mobile-animation="faded-scroll-left"]:not(:defined) {
137
+ transform: translateX(var(--_distance));
138
+ }
139
+
140
+ eun-animate[mobile-animation="scroll-top"]:not(:defined),
141
+ eun-animate[mobile-animation="faded-scroll-top"]:not(:defined) {
142
+ transform: translateY(var(--_distance));
143
+ }
144
+
145
+ eun-animate[mobile-animation="scroll-bottom"]:not(:defined),
146
+ eun-animate[mobile-animation="faded-scroll-bottom"]:not(:defined) {
147
+ transform: translateY(calc(-1 * var(--_distance)));
148
+ }
149
+ }
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Optional light-DOM stylesheet for server-rendered pages (Next.js, or
3
+ * any framework/setup without Declarative Shadow DOM for Lit
4
+ * components), covering every closed-by-default overlay/disclosure
5
+ * component in one file : `eun-collapse`, `eun-drawer`, `eun-modal`,
6
+ * `eun-dropdown-button`, and `eun-tooltip`. Each hides its own slotted
7
+ * content only through its own Shadow DOM (a `grid-template-rows: 0fr`
8
+ * panel for collapse, a `popover="manual"`/`popover="auto"` surface for
9
+ * the rest), which doesn't exist yet in server-rendered HTML. That
10
+ * content renders as plain, unstyled light-DOM children instead, on top
11
+ * of everything else on the page, until the element upgrades — the same
12
+ * SSR flash `animate-ssr.css`/`toolbar-ssr.css`/`sidebar-ssr.css`
13
+ * document for their own components, just for content that's meant to
14
+ * stay hidden until something opens it, rather than a starting animation
15
+ * state or a persistent, always-visible layout piece.
16
+ *
17
+ * This stylesheet lives in the host document instead, hiding that exact
18
+ * content through `:not(:defined)`, which is true from first paint and
19
+ * stops matching permanently the moment the browser upgrades the
20
+ * element — handing off to each component's own Shadow DOM at exactly
21
+ * the point it takes over, with no gap.
22
+ *
23
+ * Usage — link it in the page `<head>`, alongside (not instead of)
24
+ * importing whichever of these components the page actually uses :
25
+ *
26
+ * <link
27
+ * rel="stylesheet"
28
+ * href="node_modules/@eunomia/elements/dist/ssr/overlay-ssr.css"
29
+ * />
30
+ *
31
+ * `eun-drawer`/`eun-modal` are skipped whenever `open` is written
32
+ * explicitly in the server-rendered markup, so a dialog meant to be
33
+ * visible on first paint (a startup announcement, for instance) still
34
+ * renders — see the `open` attribute on the component's own doc page for
35
+ * the same requirement `animate-ssr.css` documents for `animation`, and
36
+ * `eun-collapse`'s own `open` attribute for the same reasoning there.
37
+ * `eun-dropdown-button`'s own trigger label (its default slot) and
38
+ * `eun-tooltip`'s own trigger (`slot="anchor"`) are never hidden, only
39
+ * their menu/panel content is.
40
+ */
41
+
42
+ eun-collapse:not(:defined):not([open]) > :not([slot]) {
43
+ display: none;
44
+ }
45
+
46
+ eun-drawer:not(:defined):not([open]) > *,
47
+ eun-modal:not(:defined):not([open]) > * {
48
+ display: none;
49
+ }
50
+
51
+ eun-dropdown-button:not(:defined) > [slot="items"] {
52
+ display: none;
53
+ }
54
+
55
+ eun-tooltip:not(:defined) > :not([slot="anchor"]) {
56
+ display: none;
57
+ }
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Optional light-DOM stylesheet for `<eun-sidebar>` in server-rendered
3
+ * pages (Next.js, or any framework/setup without Declarative Shadow DOM
4
+ * for Lit components). Closes the same SSR flash described in
5
+ * eun-toolbar's own SSR notes (see `toolbar-ssr.css`), but here it hits
6
+ * every instance, not just a mobile-only panel : `display: flex` and the
7
+ * sidebar's own width live in eun-sidebar's Shadow DOM, which doesn't
8
+ * exist yet in server-rendered HTML. An unregistered custom element
9
+ * defaults to `display: inline` with no layout of its own, so a
10
+ * server-rendered sidebar renders as a plain run of unstyled inline
11
+ * content (header, body, footer flowing one after another) first, then
12
+ * snaps into a proper flex column the instant the element upgrades. A
13
+ * sidebar meant to start `collapsed` (mini or fully hidden) makes this
14
+ * worse : that state lives in the same Shadow DOM too, so it renders at
15
+ * full width first, then shrinks down on upgrade instead of the other
16
+ * way around.
17
+ *
18
+ * This stylesheet lives in the host document instead, mirroring
19
+ * eun-sidebar's own resting layout through `:not(:defined)`, which is
20
+ * true from first paint and stops matching permanently the moment the
21
+ * browser upgrades the element — handing off to eun-sidebar's own Shadow
22
+ * DOM styles at exactly the point they take over, with no gap.
23
+ *
24
+ * Usage — link it in the page `<head>`, alongside (not instead of)
25
+ * importing "@eunomia/elements/sidebar.js" :
26
+ *
27
+ * <link
28
+ * rel="stylesheet"
29
+ * href="node_modules/@eunomia/elements/dist/ssr/sidebar-ssr.css"
30
+ * />
31
+ *
32
+ * `collapsed`/`collapse-mode`/`dragged-hidden` only take effect here when
33
+ * written explicitly in the server-rendered markup, same requirement
34
+ * `animate-ssr.css` documents for `animation` :
35
+ *
36
+ * <eun-sidebar collapsed collapse-mode="mini">...</eun-sidebar>
37
+ */
38
+
39
+ eun-sidebar:not(:defined) {
40
+ display: flex;
41
+ position: sticky;
42
+ top: 0;
43
+ flex-shrink: 0;
44
+ height: 100%;
45
+ box-sizing: border-box;
46
+ overflow: hidden;
47
+ width: var(--sidebar-width, 280px);
48
+ }
49
+
50
+ eun-sidebar[collapsed][collapse-mode="mini"]:not(:defined) {
51
+ width: var(--sidebar-mini-width, 64px);
52
+ }
53
+
54
+ eun-sidebar[collapsed][collapse-mode="hidden"]:not(:defined),
55
+ eun-sidebar[dragged-hidden]:not(:defined) {
56
+ width: 0px;
57
+ }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Optional light-DOM stylesheet for `<eun-toolbar>` in server-rendered
3
+ * pages (Next.js, or any framework/setup without Declarative Shadow DOM
4
+ * for Lit components). It closes the SSR flash described in the
5
+ * eun-toolbar documentation's Server-side rendering notes : the default
6
+ * slot (the mobile panel's own content, everything slotted in without a
7
+ * `slot` attribute) is only ever hidden by eun-toolbar's own Shadow DOM,
8
+ * either tucked inside a closed native popover once the element is
9
+ * upgraded and `mobile` is true, or simply never projected anywhere once
10
+ * upgraded and it's false. Server-rendered HTML has no Shadow DOM yet,
11
+ * so that content renders as plain, unstyled light-DOM children instead —
12
+ * visible, unpositioned, and often full-width/height, on top of
13
+ * everything else on the page, until the element upgrades.
14
+ *
15
+ * This stylesheet lives in the host document instead, hiding that exact
16
+ * content through `:not(:defined)`, which is true from first paint and
17
+ * stops matching permanently the moment the browser upgrades the
18
+ * element — handing off to eun-toolbar's own Shadow DOM at exactly the
19
+ * point it takes over, with no gap. Safe regardless of viewport : the
20
+ * content stays exactly as hidden post-upgrade whether `mobile` ends up
21
+ * true (closed popover) or false (never rendered at all), so this never
22
+ * has to guess at the breakpoint.
23
+ *
24
+ * Usage — link it in the page `<head>`, alongside (not instead of)
25
+ * importing "@eunomia/elements/toolbar.js" :
26
+ *
27
+ * <link
28
+ * rel="stylesheet"
29
+ * href="node_modules/@eunomia/elements/dist/ssr/toolbar-ssr.css"
30
+ * />
31
+ *
32
+ * The `start`/`center`/`end` slots aren't covered here : that content is
33
+ * meant to stay visible (and stay part of LCP) before upgrade too, same
34
+ * as after, so hiding it isn't this stylesheet's job. Style its own
35
+ * pre-upgrade layout, if needed, directly with `eun-toolbar:not(:defined)`
36
+ * in the host page's own CSS.
37
+ */
38
+
39
+ eun-toolbar:not(:defined) > :not([slot]) {
40
+ display: none;
41
+ }