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

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 (245) hide show
  1. package/README.md +1 -1
  2. package/dist/cdn/components/chunks/{chunk-JYIIWN2P.js → chunk-36KLGY6U.js} +8 -8
  3. package/dist/cdn/components/chunks/chunk-3BMACIDO.js +1 -0
  4. package/dist/cdn/components/chunks/{chunk-KDN4O5W2.js → chunk-3PNGQEG4.js} +3 -3
  5. package/dist/cdn/components/chunks/{chunk-ZKZV2YG5.js → chunk-5XPOGBPL.js} +1 -1
  6. package/dist/cdn/components/chunks/{chunk-LMVW522V.js → chunk-62RLISRD.js} +1 -1
  7. package/dist/cdn/components/chunks/{chunk-PMPSJG5V.js → chunk-6FYW5TQU.js} +3 -3
  8. package/dist/cdn/components/chunks/chunk-AK2DIJX7.js +1 -0
  9. package/dist/cdn/components/chunks/chunk-B5XMGWM7.js +10 -0
  10. package/dist/cdn/components/chunks/chunk-BVASCT2V.js +109 -0
  11. package/dist/cdn/components/chunks/{chunk-VYFR364B.js → chunk-DGI7TKCU.js} +14 -9
  12. package/dist/cdn/components/chunks/chunk-GVS6IUKC.js +1 -0
  13. package/dist/cdn/components/chunks/chunk-GWLD2I3P.js +8 -0
  14. package/dist/cdn/components/chunks/{chunk-UDVB4LAE.js → chunk-I4ERDXSM.js} +5 -3
  15. package/dist/cdn/components/chunks/{chunk-QZ5SHR3I.js → chunk-J3SZBXM6.js} +2 -2
  16. package/dist/cdn/components/chunks/{chunk-MOMYII3P.js → chunk-LVKMAHMU.js} +10 -0
  17. package/dist/cdn/components/chunks/{chunk-XDPRWUKN.js → chunk-MQQJ6DID.js} +1 -1
  18. package/dist/cdn/components/chunks/{chunk-SZYEBMG6.js → chunk-PXF554MD.js} +1 -1
  19. package/dist/cdn/components/chunks/chunk-QL5GSW2A.js +1 -0
  20. package/dist/cdn/components/chunks/{chunk-7KKWYPHY.js → chunk-QXQ25SQS.js} +21 -19
  21. package/dist/cdn/components/chunks/{chunk-L2ADCEN7.js → chunk-SVGWCKWT.js} +1 -1
  22. package/dist/cdn/components/chunks/{chunk-MQQ4BGVJ.js → chunk-TFTRCIIK.js} +7 -6
  23. package/dist/cdn/components/chunks/chunk-TLBXTBMM.js +46 -0
  24. package/dist/cdn/components/chunks/chunk-UVHVQRPT.js +1 -0
  25. package/dist/cdn/components/chunks/chunk-WW4BTWMH.js +1 -0
  26. package/dist/cdn/components/chunks/{chunk-2Y2EU2CI.js → chunk-Z3OFIE7S.js} +1 -1
  27. package/dist/cdn/components/eun-alert.js +13 -6
  28. package/dist/cdn/components/eun-animate.js +3 -3
  29. package/dist/cdn/components/eun-badge.js +1 -1
  30. package/dist/cdn/components/eun-button.js +1 -1
  31. package/dist/cdn/components/eun-calendar.js +2 -2
  32. package/dist/cdn/components/eun-card.js +4 -4
  33. package/dist/cdn/components/eun-carousel.js +21 -18
  34. package/dist/cdn/components/eun-check-card.js +1 -1
  35. package/dist/cdn/components/eun-checkbox-list.js +11 -8
  36. package/dist/cdn/components/eun-checkbox.js +1 -1
  37. package/dist/cdn/components/eun-chip.js +3 -3
  38. package/dist/cdn/components/eun-color-picker.js +60 -68
  39. package/dist/cdn/components/eun-counter.js +10 -10
  40. package/dist/cdn/components/eun-date-picker.js +47 -46
  41. package/dist/cdn/components/eun-description-list.js +2 -2
  42. package/dist/cdn/components/eun-divider.js +3 -3
  43. package/dist/cdn/components/eun-drawer.js +5 -5
  44. package/dist/cdn/components/eun-dropdown-button.js +1 -1
  45. package/dist/cdn/components/eun-fab.js +2 -2
  46. package/dist/cdn/components/eun-icon.js +1 -1
  47. package/dist/cdn/components/eun-image-card.js +1 -1
  48. package/dist/cdn/components/eun-image-carousel.js +10 -10
  49. package/dist/cdn/components/eun-infinite-list.js +1 -1
  50. package/dist/cdn/components/eun-input-file.js +21 -21
  51. package/dist/cdn/components/eun-input-phone.js +10 -9
  52. package/dist/cdn/components/eun-input.js +1 -1
  53. package/dist/cdn/components/eun-link.js +2 -2
  54. package/dist/cdn/components/eun-loader.js +1 -1
  55. package/dist/cdn/components/eun-modal.js +13 -13
  56. package/dist/cdn/components/eun-pagination.js +16 -16
  57. package/dist/cdn/components/eun-password-strength.js +14 -10
  58. package/dist/cdn/components/eun-radio-card.js +1 -1
  59. package/dist/cdn/components/eun-radio-list.js +11 -8
  60. package/dist/cdn/components/eun-radio.js +1 -1
  61. package/dist/cdn/components/eun-rating.js +276 -0
  62. package/dist/cdn/components/eun-scheduler-event-editor.js +10 -10
  63. package/dist/cdn/components/eun-scheduler-event.js +1 -1
  64. package/dist/cdn/components/eun-scheduler.js +28 -28
  65. package/dist/cdn/components/eun-search.js +19 -21
  66. package/dist/cdn/components/eun-select.js +27 -27
  67. package/dist/cdn/components/eun-sidebar.js +10 -8
  68. package/dist/cdn/components/eun-skeleton.js +1 -1
  69. package/dist/cdn/components/eun-slider.js +3 -3
  70. package/dist/cdn/components/eun-sliding-card.js +1 -1
  71. package/dist/cdn/components/eun-step.js +5 -4
  72. package/dist/cdn/components/eun-stepper.js +25 -25
  73. package/dist/cdn/components/eun-switch.js +1 -1
  74. package/dist/cdn/components/eun-tab-group.js +4 -4
  75. package/dist/cdn/components/eun-tab.js +1 -1
  76. package/dist/cdn/components/eun-table-action-bar.js +1 -1
  77. package/dist/cdn/components/eun-table.js +1 -1
  78. package/dist/cdn/components/eun-tag.js +3 -3
  79. package/dist/cdn/components/eun-textarea.js +39 -34
  80. package/dist/cdn/components/eun-time-picker.js +15 -14
  81. package/dist/cdn/components/eun-toast.js +19 -10
  82. package/dist/cdn/components/eun-toggle-group.js +6 -4
  83. package/dist/cdn/components/eun-toggle-item.js +1 -1
  84. package/dist/cdn/components/eun-toggle.js +2 -2
  85. package/dist/cdn/components/eun-toolbar.js +5 -5
  86. package/dist/cdn/components/eun-tooltip.js +3 -3
  87. package/dist/components/action/button/button.d.ts +2 -1
  88. package/dist/components/action/button/button.js +3 -2
  89. package/dist/components/action/button/button.styles.js +10 -5
  90. package/dist/components/action/dropdown-button/dropdown-button.js +10 -5
  91. package/dist/components/action/toggle/toggle-group.js +1 -1
  92. package/dist/components/action/toggle/toggle-group.styles.js +4 -2
  93. package/dist/components/action/toggle/toggle.js +1 -1
  94. package/dist/components/alert/alert/alert.d.ts +9 -7
  95. package/dist/components/alert/alert/alert.js +11 -14
  96. package/dist/components/alert/alert/alert.styles.js +9 -2
  97. package/dist/components/alert/drawer/drawer.d.ts +5 -5
  98. package/dist/components/alert/drawer/drawer.js +8 -12
  99. package/dist/components/alert/drawer/drawer.styles.js +1 -1
  100. package/dist/components/alert/modal/modal.d.ts +10 -10
  101. package/dist/components/alert/modal/modal.js +13 -25
  102. package/dist/components/alert/toast/toast.d.ts +7 -5
  103. package/dist/components/alert/toast/toast.js +9 -13
  104. package/dist/components/alert/toast/toast.styles.js +15 -6
  105. package/dist/components/content/badge/badge.js +2 -2
  106. package/dist/components/content/card/card.js +1 -1
  107. package/dist/components/content/card/card.styles.js +2 -2
  108. package/dist/components/content/chip/chip.d.ts +4 -4
  109. package/dist/components/content/chip/chip.js +8 -8
  110. package/dist/components/content/description-list/description-list.js +3 -3
  111. package/dist/components/content/icon/icon.d.ts +3 -0
  112. package/dist/components/content/icon/icon.js +3 -0
  113. package/dist/components/content/icon/icon.style.d.ts +2 -0
  114. package/dist/components/content/icon/icon.style.js +4 -0
  115. package/dist/components/content/image-carousel/image-carousel.d.ts +12 -12
  116. package/dist/components/content/image-carousel/image-carousel.js +24 -24
  117. package/dist/components/content/password-strength/password-strength.d.ts +21 -6
  118. package/dist/components/content/password-strength/password-strength.js +37 -16
  119. package/dist/components/content/password-strength/password-strength.styles.js +4 -0
  120. package/dist/components/content/tag/tag.js +2 -2
  121. package/dist/components/content/tooltip/tooltip.js +3 -3
  122. package/dist/components/form/checkbox/check-card.d.ts +1 -0
  123. package/dist/components/form/checkbox/check-card.js +1 -0
  124. package/dist/components/form/checkbox/checkbox-list.d.ts +17 -0
  125. package/dist/components/form/checkbox/checkbox-list.js +39 -10
  126. package/dist/components/form/checkbox/checkbox.d.ts +1 -0
  127. package/dist/components/form/checkbox/checkbox.js +3 -1
  128. package/dist/components/form/checkbox/checkbox.styles.js +3 -2
  129. package/dist/components/form/color-picker/color-picker.d.ts +41 -28
  130. package/dist/components/form/color-picker/color-picker.js +66 -50
  131. package/dist/components/form/color-picker/color-picker.styles.js +1 -1
  132. package/dist/components/form/counter/counter.d.ts +22 -18
  133. package/dist/components/form/counter/counter.js +59 -61
  134. package/dist/components/form/date-picker/date-picker.d.ts +27 -6
  135. package/dist/components/form/date-picker/date-picker.js +75 -54
  136. package/dist/components/form/input/input.d.ts +38 -39
  137. package/dist/components/form/input/input.js +85 -109
  138. package/dist/components/form/input-file/input-file.d.ts +26 -13
  139. package/dist/components/form/input-file/input-file.js +35 -35
  140. package/dist/components/form/input-file/input-file.styles.js +4 -4
  141. package/dist/components/form/input-phone/input-phone.d.ts +22 -5
  142. package/dist/components/form/input-phone/input-phone.js +41 -13
  143. package/dist/components/form/radio/radio-card.d.ts +1 -0
  144. package/dist/components/form/radio/radio-card.js +1 -0
  145. package/dist/components/form/radio/radio-list.d.ts +23 -7
  146. package/dist/components/form/radio/radio-list.js +47 -22
  147. package/dist/components/form/radio/radio.d.ts +1 -0
  148. package/dist/components/form/radio/radio.js +1 -0
  149. package/dist/components/form/rating/rating.d.ts +349 -0
  150. package/dist/components/form/rating/rating.js +665 -0
  151. package/dist/components/form/rating/rating.styles.d.ts +1 -0
  152. package/dist/components/form/rating/rating.styles.js +213 -0
  153. package/dist/components/form/search/search.d.ts +8 -8
  154. package/dist/components/form/search/search.js +23 -41
  155. package/dist/components/form/select/select.d.ts +23 -10
  156. package/dist/components/form/select/select.js +59 -41
  157. package/dist/components/form/shared-styles/listbox.styles.js +10 -0
  158. package/dist/components/form/slider/slider.d.ts +7 -8
  159. package/dist/components/form/slider/slider.js +9 -12
  160. package/dist/components/form/switch/switch.d.ts +1 -0
  161. package/dist/components/form/switch/switch.js +1 -0
  162. package/dist/components/form/textarea/textarea.d.ts +89 -23
  163. package/dist/components/form/textarea/textarea.js +192 -43
  164. package/dist/components/form/time-picker/time-picker-columns.d.ts +2 -2
  165. package/dist/components/form/time-picker/time-picker-columns.js +8 -8
  166. package/dist/components/form/time-picker/time-picker.d.ts +24 -8
  167. package/dist/components/form/time-picker/time-picker.js +59 -38
  168. package/dist/components/layout/animate/animate.js +1 -1
  169. package/dist/components/layout/animate/animate.styles.js +2 -2
  170. package/dist/components/layout/divider/divider.js +1 -1
  171. package/dist/components/layout/divider/divider.styles.js +1 -1
  172. package/dist/components/loader/loader/loader.js +2 -2
  173. package/dist/components/loader/loader/loader.styles.js +14 -12
  174. package/dist/components/loader/skeleton/skeleton.js +1 -1
  175. package/dist/components/navigation/carousel/carousel.d.ts +31 -7
  176. package/dist/components/navigation/carousel/carousel.js +74 -35
  177. package/dist/components/navigation/carousel/carousel.styles.js +5 -2
  178. package/dist/components/navigation/pagination/pagination.d.ts +23 -21
  179. package/dist/components/navigation/pagination/pagination.js +30 -53
  180. package/dist/components/navigation/sidebar/sidebar.d.ts +15 -13
  181. package/dist/components/navigation/sidebar/sidebar.js +21 -33
  182. package/dist/components/navigation/sidebar/sidebar.styles.js +5 -3
  183. package/dist/components/navigation/stepper/step.js +9 -8
  184. package/dist/components/navigation/stepper/stepper.js +12 -5
  185. package/dist/components/navigation/tabs/tab-group/tab-group.js +2 -2
  186. package/dist/components/navigation/tabs/tab-group/tab-group.styles.js +2 -2
  187. package/dist/components/navigation/toolbar/toolbar.d.ts +13 -13
  188. package/dist/components/navigation/toolbar/toolbar.js +20 -34
  189. package/dist/features/scheduler/calendar/calendar.js +1 -1
  190. package/dist/features/scheduler/scheduler/scheduler.d.ts +7 -7
  191. package/dist/features/scheduler/scheduler/scheduler.js +15 -24
  192. package/dist/features/scheduler/scheduler-event/scheduler-event.js +3 -3
  193. package/dist/features/scheduler/scheduler-event/scheduler-event.styles.js +1 -1
  194. package/dist/features/scheduler/scheduler-event-editor/scheduler-event-editor.d.ts +6 -4
  195. package/dist/features/scheduler/scheduler-event-editor/scheduler-event-editor.js +6 -7
  196. package/dist/i18n/en.d.ts +68 -0
  197. package/dist/i18n/en.js +68 -0
  198. package/dist/i18n/fr.js +68 -2
  199. package/dist/index.d.ts +2 -0
  200. package/dist/index.js +1 -0
  201. package/dist/mixins/button.mixin.js +3 -2
  202. package/dist/mixins/check.mixin.js +11 -10
  203. package/dist/mixins/disabled.mixin.d.ts +5 -0
  204. package/dist/mixins/disabled.mixin.js +21 -1
  205. package/dist/mixins/editable.mixin.js +28 -5
  206. package/dist/mixins/field-appearance.mixin.js +3 -2
  207. package/dist/mixins/form.mixin.d.ts +4 -0
  208. package/dist/mixins/form.mixin.js +87 -13
  209. package/dist/mixins/localizable.mixin.d.ts +1 -1
  210. package/dist/mixins/localizable.mixin.js +1 -1
  211. package/dist/mixins/radio.mixin.js +11 -10
  212. package/dist/mixins/readonly.mixin.d.ts +2 -1
  213. package/dist/mixins/readonly.mixin.js +10 -3
  214. package/dist/ssr/alert-ssr.css +187 -0
  215. package/dist/ssr/badge-ssr.css +67 -0
  216. package/dist/ssr/breadcrumb-ssr.css +41 -0
  217. package/dist/ssr/card-ssr.css +27 -15
  218. package/dist/ssr/carousel-ssr.css +238 -0
  219. package/dist/ssr/checkbox-ssr.css +67 -0
  220. package/dist/ssr/chip-ssr.css +242 -0
  221. package/dist/ssr/collapse-ssr.css +151 -0
  222. package/dist/ssr/field-ssr.css +163 -0
  223. package/dist/ssr/icon-ssr.css +266 -0
  224. package/dist/ssr/image-carousel-ssr.css +24 -0
  225. package/dist/ssr/links-ssr.css +7 -1
  226. package/dist/ssr/pagination-ssr.css +4 -0
  227. package/dist/ssr/rating-ssr.css +254 -0
  228. package/dist/ssr/sidebar-ssr.css +9 -1
  229. package/dist/ssr/skeleton-ssr.css +63 -0
  230. package/dist/ssr/tabs-ssr.css +129 -0
  231. package/dist/ssr/toggle-group-ssr.css +182 -0
  232. package/dist/ssr/toolbar-ssr.css +31 -2
  233. package/dist/utils/implicit-submission.utils.d.ts +18 -0
  234. package/dist/utils/implicit-submission.utils.js +79 -0
  235. package/dist/utils/listbox-options.utils.d.ts +11 -0
  236. package/dist/utils/listbox-options.utils.js +41 -3
  237. package/package.json +26 -7
  238. package/dist/cdn/components/chunks/chunk-4PI6RDUS.js +0 -1
  239. package/dist/cdn/components/chunks/chunk-A3X4KD2X.js +0 -1
  240. package/dist/cdn/components/chunks/chunk-BQFJR2UP.js +0 -110
  241. package/dist/cdn/components/chunks/chunk-G5SBDQQ3.js +0 -1
  242. package/dist/cdn/components/chunks/chunk-KSZRQRN4.js +0 -1
  243. package/dist/cdn/components/chunks/chunk-PE4DAXHQ.js +0 -3
  244. package/dist/cdn/components/chunks/chunk-RS7TWEMQ.js +0 -1
  245. package/dist/cdn/components/chunks/chunk-VOTRXBDS.js +0 -38
@@ -0,0 +1,129 @@
1
+ eun-tab-group:not(:defined) {
2
+ --_indicatorHeight: var(--tab-indicator-height, 2px);
3
+ --_dividerGap: var(--tab-divider-gap, 0px);
4
+ --_dividerSize: var(--tab-divider-size, 2px);
5
+ display: flex;
6
+ flex-wrap: wrap;
7
+ column-gap: var(--tab-gap, 0);
8
+ padding-block-start: 4px;
9
+ background: none;
10
+ }
11
+
12
+ eun-tab-group:not(:defined)[align="center"] {
13
+ justify-content: center;
14
+ }
15
+
16
+ eun-tab-group:not(:defined)[align="end"] {
17
+ justify-content: flex-end;
18
+ }
19
+
20
+ eun-tab-group:not(:defined)[full] {
21
+ justify-content: flex-start;
22
+ }
23
+
24
+ eun-tab-group:not(:defined) > eun-tab {
25
+ position: relative;
26
+ order: 0;
27
+ display: grid;
28
+ place-items: center;
29
+ box-sizing: border-box;
30
+ padding: var(
31
+ --tab-padding,
32
+ var(--tab-padding-block, var(--eun-space-s, 8px))
33
+ var(--tab-padding-inline, var(--eun-space-m, 16px))
34
+ );
35
+ border: var(--tab-border);
36
+ border-radius: var(--tab-border-radius, 8px);
37
+ background: var(--tab-background-color, transparent);
38
+ color: var(--tab-text-color, var(--eun-text-color, #071621));
39
+ font-family: var(--eun-font-family, "Mulish", sans-serif);
40
+ font-size: var(--tab-font-size, var(--eun-font-size-s, 14px));
41
+ font-weight: var(--tab-font-weight, var(--eun-font-weight-m, 500));
42
+ white-space: nowrap;
43
+ }
44
+
45
+ eun-tab-group:not(:defined)[full] > eun-tab {
46
+ flex: 1 1 0%;
47
+ }
48
+
49
+ eun-tab-group:not(:defined) > eun-tab:first-of-type {
50
+ margin-inline-start: 4px;
51
+ }
52
+
53
+ eun-tab-group:not(:defined) > eun-tab:last-of-type {
54
+ margin-inline-end: 4px;
55
+ }
56
+
57
+ eun-tab-group:not(:defined) > eun-tab[disabled] {
58
+ display: var(--tab-disabled-display, grid);
59
+ color: var(--eun-text-disabled-color, #8d93aa);
60
+ }
61
+
62
+ /* The active tab : the one marked active, or the first one. */
63
+ eun-tab-group:not(:defined) > eun-tab[active],
64
+ eun-tab-group:not(:defined):not(:has(> eun-tab[active]))
65
+ > eun-tab:first-of-type {
66
+ background: var(--tab-active-background-color, transparent);
67
+ border: var(--tab-border-active, var(--tab-border));
68
+ color: var(--tab-active-text-color, var(--eun-color-primary-500, #3d6fff));
69
+ }
70
+
71
+ eun-tab-group:not(:defined):not([hide-indicator]) > eun-tab[active]::after,
72
+ eun-tab-group:not(:defined):not([hide-indicator], :has(> eun-tab[active]))
73
+ > eun-tab:first-of-type::after {
74
+ content: "";
75
+ position: absolute;
76
+ inset-inline: 0;
77
+ bottom: calc(-1 * var(--_dividerGap));
78
+ height: var(--_indicatorHeight);
79
+ background: var(--tab-indicator-color, var(--eun-color-primary-500, #3d6fff));
80
+ }
81
+
82
+ /* The divider under the tab list. */
83
+ eun-tab-group:not(:defined)::before {
84
+ content: "";
85
+ order: 1;
86
+ flex: 0 0 100%;
87
+ height: var(--_dividerSize);
88
+ margin-block-start: calc(var(--_dividerGap) - var(--_dividerSize));
89
+ background: var(--tab-divider-color, var(--eun-divider-color, #dee0e7));
90
+ }
91
+
92
+ /* Every panel but the active one is hidden, as once upgraded. */
93
+ eun-tab-group:not(:defined) > eun-tab-panel {
94
+ display: none;
95
+ }
96
+
97
+ eun-tab-group:not(:defined):not(:has(> eun-tab[active]))
98
+ > eun-tab-panel:first-of-type,
99
+ eun-tab-group:not(:defined):has(> eun-tab:nth-of-type(1)[active])
100
+ > eun-tab-panel:nth-of-type(1),
101
+ eun-tab-group:not(:defined):has(> eun-tab:nth-of-type(2)[active])
102
+ > eun-tab-panel:nth-of-type(2),
103
+ eun-tab-group:not(:defined):has(> eun-tab:nth-of-type(3)[active])
104
+ > eun-tab-panel:nth-of-type(3),
105
+ eun-tab-group:not(:defined):has(> eun-tab:nth-of-type(4)[active])
106
+ > eun-tab-panel:nth-of-type(4),
107
+ eun-tab-group:not(:defined):has(> eun-tab:nth-of-type(5)[active])
108
+ > eun-tab-panel:nth-of-type(5),
109
+ eun-tab-group:not(:defined):has(> eun-tab:nth-of-type(6)[active])
110
+ > eun-tab-panel:nth-of-type(6),
111
+ eun-tab-group:not(:defined):has(> eun-tab:nth-of-type(7)[active])
112
+ > eun-tab-panel:nth-of-type(7),
113
+ eun-tab-group:not(:defined):has(> eun-tab:nth-of-type(8)[active])
114
+ > eun-tab-panel:nth-of-type(8),
115
+ eun-tab-group:not(:defined):has(> eun-tab:nth-of-type(9)[active])
116
+ > eun-tab-panel:nth-of-type(9),
117
+ eun-tab-group:not(:defined):has(> eun-tab:nth-of-type(10)[active])
118
+ > eun-tab-panel:nth-of-type(10),
119
+ eun-tab-group:not(:defined):has(> eun-tab:nth-of-type(11)[active])
120
+ > eun-tab-panel:nth-of-type(11),
121
+ eun-tab-group:not(:defined):has(> eun-tab:nth-of-type(12)[active])
122
+ > eun-tab-panel:nth-of-type(12) {
123
+ order: 2;
124
+ display: block;
125
+ flex: 0 0 100%;
126
+ margin-block-start: var(--tab-panel-gap, var(--eun-space-l, 32px));
127
+ font-family: var(--eun-font-family, "Mulish", sans-serif);
128
+ font-size: var(--tab-panel-font-size, var(--eun-font-size-s, 14px));
129
+ }
@@ -0,0 +1,182 @@
1
+ eun-toggle-group:not(:defined) {
2
+ display: inline-flex;
3
+ box-sizing: border-box;
4
+ width: fit-content;
5
+ max-width: 100%;
6
+ gap: var(--toggle-group-gap, var(--eun-space-xs, 4px));
7
+ padding: var(--toggle-group-padding, var(--toggle-group-padding-block, 4px))
8
+ var(--toggle-group-padding, var(--toggle-group-padding-inline, 4px));
9
+ overflow: hidden;
10
+ border-radius: var(
11
+ --toggle-group-border-radius,
12
+ var(--eun-border-radius-m, 8px)
13
+ );
14
+ background: var(
15
+ --toggle-group-background,
16
+ var(--eun-surface-sunken, #f7f8fa)
17
+ );
18
+ border: var(--eun-border-width-s, 1px) solid
19
+ var(--toggle-group-border-color, var(--eun-color-grey-300, #dee0e7));
20
+ box-shadow: var(--toggle-group-box-shadow, none);
21
+ font-family: var(--eun-font-family, "Mulish", sans-serif);
22
+ font-size: var(--eun-font-size-s, 14px);
23
+ }
24
+
25
+ eun-toggle-group:is([appearance="outline"], [appearance="flat"]):not(:defined) {
26
+ padding: 0;
27
+ overflow: visible;
28
+ background: var(--toggle-group-background, transparent);
29
+ border: none;
30
+ border-radius: 0;
31
+ }
32
+
33
+ eun-toggle-group[full]:not(:defined) {
34
+ display: flex;
35
+ width: 100%;
36
+ }
37
+
38
+ eun-toggle-group[disabled]:not(:defined) {
39
+ opacity: 0.5;
40
+ }
41
+
42
+ eun-toggle-item:not(:defined) {
43
+ display: inline-flex;
44
+ flex-shrink: 0;
45
+ align-items: center;
46
+ gap: var(--eun-space-xs, 4px);
47
+ box-sizing: border-box;
48
+ padding: 6px 14px;
49
+ border-radius: calc(
50
+ var(--toggle-group-border-radius, var(--eun-border-radius-m, 8px)) - 3px
51
+ );
52
+ color: var(--toggle-group-color, var(--eun-color-grey-600, #666e8a));
53
+ font-family: var(--eun-font-family, "Mulish", sans-serif);
54
+ font-size: var(--eun-font-size-s, 14px);
55
+ font-weight: var(--eun-font-weight-m, 500);
56
+ white-space: nowrap;
57
+ --_customTint: color-mix(
58
+ in srgb,
59
+ var(--toggle-group-active-background) 15%,
60
+ transparent
61
+ );
62
+ }
63
+
64
+ eun-toggle-item:not(:defined) > [slot="icon"] {
65
+ order: -1;
66
+ }
67
+
68
+ :is(
69
+ eun-toggle-group:is([appearance="outline"], [appearance="flat"])
70
+ > eun-toggle-item,
71
+ eun-toggle-item:is([appearance="outline"], [appearance="flat"])
72
+ ):not(:defined) {
73
+ border: var(--eun-border-width-s, 1px) solid
74
+ var(--toggle-group-border-color, transparent);
75
+ border-radius: var(
76
+ --toggle-group-border-radius,
77
+ var(--eun-border-radius-m, 8px)
78
+ );
79
+ }
80
+
81
+ :is(
82
+ eun-toggle-group[appearance="outline"] > eun-toggle-item,
83
+ eun-toggle-item[appearance="outline"]
84
+ ):not(:defined) {
85
+ border-color: var(
86
+ --toggle-group-border-color,
87
+ var(--eun-color-grey-300, #dee0e7)
88
+ );
89
+ }
90
+
91
+ :is(eun-toggle-group[full] > eun-toggle-item, eun-toggle-item[full]):not(
92
+ :defined
93
+ ) {
94
+ flex: 1 1 0%;
95
+ justify-content: center;
96
+ }
97
+
98
+ :is(
99
+ eun-toggle-group:not(
100
+ [single],
101
+ :has(> eun-toggle-item:nth-of-type(2):last-of-type)
102
+ )
103
+ > eun-toggle-item[checked],
104
+ eun-toggle-group:is(
105
+ [single],
106
+ :has(> eun-toggle-item:nth-of-type(2):last-of-type)
107
+ )
108
+ > eun-toggle-item:nth-child(1 of [checked]),
109
+ eun-toggle-group:is(
110
+ [single],
111
+ :has(> eun-toggle-item:nth-of-type(2):last-of-type)
112
+ ):not([value], :has(> eun-toggle-item[checked]))
113
+ > eun-toggle-item:first-of-type
114
+ ):not(:defined) {
115
+ background: var(
116
+ --toggle-group-active-background,
117
+ var(--eun-color-primary-500, #3d6fff)
118
+ );
119
+ color: var(
120
+ --toggle-group-active-color,
121
+ var(--eun-color-on-primary-500, #ffffff)
122
+ );
123
+ }
124
+
125
+ :is(
126
+ eun-toggle-group:not(
127
+ [single],
128
+ :has(> eun-toggle-item:nth-of-type(2):last-of-type)
129
+ )
130
+ > eun-toggle-item[checked],
131
+ eun-toggle-group:is(
132
+ [single],
133
+ :has(> eun-toggle-item:nth-of-type(2):last-of-type)
134
+ )
135
+ > eun-toggle-item:nth-child(1 of [checked]),
136
+ eun-toggle-group:is(
137
+ [single],
138
+ :has(> eun-toggle-item:nth-of-type(2):last-of-type)
139
+ ):not([value], :has(> eun-toggle-item[checked]))
140
+ > eun-toggle-item:first-of-type
141
+ ):is(
142
+ eun-toggle-group:is([appearance="outline"], [appearance="flat"])
143
+ > eun-toggle-item,
144
+ eun-toggle-item:is([appearance="outline"], [appearance="flat"])
145
+ ):not(:defined) {
146
+ background: var(--_customTint, var(--eun-color-primary-alpha-20, #3d6fff33));
147
+ color: var(
148
+ --toggle-group-active-color,
149
+ var(--toggle-group-active-background, var(--eun-color-primary-500, #3d6fff))
150
+ );
151
+ font-weight: var(--eun-font-weight-b, 700);
152
+ }
153
+
154
+ :is(
155
+ eun-toggle-group:not(
156
+ [single],
157
+ :has(> eun-toggle-item:nth-of-type(2):last-of-type)
158
+ )
159
+ > eun-toggle-item[checked],
160
+ eun-toggle-group:is(
161
+ [single],
162
+ :has(> eun-toggle-item:nth-of-type(2):last-of-type)
163
+ )
164
+ > eun-toggle-item:nth-child(1 of [checked]),
165
+ eun-toggle-group:is(
166
+ [single],
167
+ :has(> eun-toggle-item:nth-of-type(2):last-of-type)
168
+ ):not([value], :has(> eun-toggle-item[checked]))
169
+ > eun-toggle-item:first-of-type
170
+ ):is(
171
+ eun-toggle-group[appearance="outline"] > eun-toggle-item,
172
+ eun-toggle-item[appearance="outline"]
173
+ ):not(:defined) {
174
+ border-color: var(
175
+ --toggle-group-active-background,
176
+ var(--eun-color-primary-500, #3d6fff)
177
+ );
178
+ }
179
+
180
+ eun-toggle-item[disabled]:not(:defined) {
181
+ opacity: 0.5;
182
+ }
@@ -14,12 +14,41 @@ eun-toolbar:not(:defined) {
14
14
  height: var(--toolbar-height, 72px);
15
15
  padding: var(
16
16
  --toolbar-padding,
17
- var(--toolbar-padding-block, 0)
18
- var(--toolbar-padding-inline, 24px)
17
+ var(--toolbar-padding-block, 0) var(--toolbar-padding-inline, 24px)
19
18
  );
20
19
  position: sticky;
21
20
  top: 0;
22
21
  z-index: var(--toolbar-z-index, 100);
22
+ font-family: var(--eun-font-family, "Mulish", sans-serif);
23
+ background: var(
24
+ --toolbar-background,
25
+ var(--toolbar-background-light, var(--eun-surface-color, #ffffff))
26
+ );
27
+ color: var(
28
+ --toolbar-color,
29
+ var(--toolbar-color-light, var(--eun-text-color, #071621))
30
+ );
31
+ border-block-end: var(--eun-border-width-s, 1px) solid
32
+ var(--toolbar-border-color, var(--eun-border-color, #dee0e7));
33
+ box-shadow: var(--toolbar-shadow, none);
34
+ }
35
+
36
+ eun-toolbar[theme="dark"]:not(:defined) {
37
+ background: var(
38
+ --toolbar-background,
39
+ var(--toolbar-background-dark, var(--eun-surface-inverse, #0b1620))
40
+ );
41
+ color: var(
42
+ --toolbar-color,
43
+ var(--toolbar-color-dark, var(--eun-text-on-inverse, #f5f7fa))
44
+ );
45
+ }
46
+
47
+ /* A page loads scrolled to the top, where the upgraded bar is transparent. */
48
+ eun-toolbar[transparent-at-top]:not(:defined) {
49
+ background: transparent;
50
+ border-color: transparent;
51
+ box-shadow: none;
23
52
  }
24
53
 
25
54
  eun-toolbar[position="fixed"]:not(:defined) {
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Whether a key press should trigger implicit submission: Enter, outside
3
+ * of an IME composition, and not already handled by something else.
4
+ *
5
+ * @param event - The keydown event to check.
6
+ * @returns Whether the event asks for implicit submission.
7
+ */
8
+ export declare function isImplicitSubmissionKey(event: KeyboardEvent): boolean;
9
+ /**
10
+ * Submits a form the way the browser does when Enter is pressed in one of
11
+ * its text fields, since a field whose native input lives in a shadow root
12
+ * never triggers it on its own. Clicks the form's default button when it
13
+ * has one, unless that button is disabled. Without one, submits only when
14
+ * the form holds a single text field.
15
+ *
16
+ * @param form - The form to submit.
17
+ */
18
+ export declare function submitImplicitly(form: HTMLFormElement): void;
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Buttons that can submit a form, in the order the browser looks for the
3
+ * form's default button. `eun-button` and `eun-fab` aren't form-associated,
4
+ * so they're found in the form's own subtree rather than in `form.elements`.
5
+ */
6
+ const SUBMIT_BUTTONS = [
7
+ "button:not([type])",
8
+ 'button[type="submit"]',
9
+ 'input[type="submit"]',
10
+ 'input[type="image"]',
11
+ 'eun-button[type="submit"]',
12
+ 'eun-fab[type="submit"]',
13
+ ].join(", ");
14
+ /**
15
+ * Native input types that block implicit submission, per the HTML spec.
16
+ */
17
+ const BLOCKING_INPUT_TYPES = new Set([
18
+ "text",
19
+ "search",
20
+ "url",
21
+ "tel",
22
+ "email",
23
+ "password",
24
+ "date",
25
+ "month",
26
+ "week",
27
+ "time",
28
+ "datetime-local",
29
+ "number",
30
+ ]);
31
+ /**
32
+ * Library fields standing in for one of the native inputs above, and so
33
+ * blocking implicit submission the same way it does.
34
+ */
35
+ const BLOCKING_FIELDS = [
36
+ "eun-input",
37
+ "eun-search",
38
+ "eun-input-phone",
39
+ "eun-counter",
40
+ "eun-date-picker",
41
+ "eun-time-picker",
42
+ ].join(", ");
43
+ /**
44
+ * Whether a key press should trigger implicit submission: Enter, outside
45
+ * of an IME composition, and not already handled by something else.
46
+ *
47
+ * @param event - The keydown event to check.
48
+ * @returns Whether the event asks for implicit submission.
49
+ */
50
+ export function isImplicitSubmissionKey(event) {
51
+ return (event.key === "Enter" &&
52
+ !event.isComposing &&
53
+ event.keyCode !== 229 &&
54
+ !event.defaultPrevented);
55
+ }
56
+ /**
57
+ * Submits a form the way the browser does when Enter is pressed in one of
58
+ * its text fields, since a field whose native input lives in a shadow root
59
+ * never triggers it on its own. Clicks the form's default button when it
60
+ * has one, unless that button is disabled. Without one, submits only when
61
+ * the form holds a single text field.
62
+ *
63
+ * @param form - The form to submit.
64
+ */
65
+ export function submitImplicitly(form) {
66
+ const defaultButton = form.querySelector(SUBMIT_BUTTONS);
67
+ if (defaultButton) {
68
+ if (!defaultButton.matches(":disabled, [disabled]")) {
69
+ defaultButton.click();
70
+ }
71
+ return;
72
+ }
73
+ const blockingFields = Array.from(form.elements).filter((element) => (element instanceof HTMLInputElement &&
74
+ BLOCKING_INPUT_TYPES.has(element.type)) ||
75
+ element.matches(BLOCKING_FIELDS));
76
+ if (blockingFields.length <= 1) {
77
+ form.requestSubmit();
78
+ }
79
+ }
@@ -31,3 +31,14 @@ export declare function parseListboxOptions(children: Iterable<Element>): Listbo
31
31
  * @returns the rendered template, or the plain `label` when nothing matches.
32
32
  */
33
33
  export declare function renderHighlightedLabel(label: string, query: string): TemplateResult | string;
34
+ /**
35
+ * Renders a listbox's option rows, wrapping each run of options sharing an
36
+ * `optgroup` in a `role="group"` row named by that group's label, so
37
+ * assistive technology announces which group an option belongs to.
38
+ * Options outside any group are rendered as they are.
39
+ *
40
+ * @param options the options to render, in display order.
41
+ * @param renderOption renders one option row, given its index in `options`.
42
+ * @returns the rendered rows.
43
+ */
44
+ export declare function renderListboxRows<T extends ListboxOption>(options: T[], renderOption: (option: T, index: number) => TemplateResult): TemplateResult[];
@@ -48,7 +48,45 @@ export function renderHighlightedLabel(label, query) {
48
48
  if (index === -1) {
49
49
  return label;
50
50
  }
51
- return html `${label.slice(0, index)}<mark
52
- >${label.slice(index, index + query.length)}</mark
53
- >${label.slice(index + query.length)}`;
51
+ return html `${label.slice(0, index)}<mark>${label.slice(index, index + query.length)}</mark>${label.slice(index + query.length)}`;
52
+ }
53
+ /**
54
+ * Renders a listbox's option rows, wrapping each run of options sharing an
55
+ * `optgroup` in a `role="group"` row named by that group's label, so
56
+ * assistive technology announces which group an option belongs to.
57
+ * Options outside any group are rendered as they are.
58
+ *
59
+ * @param options the options to render, in display order.
60
+ * @param renderOption renders one option row, given its index in `options`.
61
+ * @returns the rendered rows.
62
+ */
63
+ export function renderListboxRows(options, renderOption) {
64
+ const rows = [];
65
+ let groupCount = 0;
66
+ let index = 0;
67
+ while (index < options.length) {
68
+ const { group } = options[index];
69
+ const start = index;
70
+ while (index < options.length && options[index].group === group) {
71
+ index += 1;
72
+ }
73
+ const run = options
74
+ .slice(start, index)
75
+ .map((option, offset) => renderOption(option, start + offset));
76
+ if (!group) {
77
+ rows.push(...run);
78
+ continue;
79
+ }
80
+ const labelId = `listbox-group-${groupCount}`;
81
+ groupCount += 1;
82
+ rows.push(html `
83
+ <li class="option-group" role="group" aria-labelledby=${labelId}>
84
+ <div id=${labelId} class="group-label">${group}</div>
85
+ <ul class="group-options" role="presentation">
86
+ ${run}
87
+ </ul>
88
+ </li>
89
+ `);
90
+ }
91
+ return rows;
54
92
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eunomia/elements",
3
- "version": "1.0.0-beta.6",
3
+ "version": "1.0.0-beta.7",
4
4
  "description": "Eunomia the framework-agnostic web component design system",
5
5
  "type": "module",
6
6
  "homepage": "https://eunomia-ds.vercel.app",
@@ -169,6 +169,10 @@
169
169
  "types": "./dist/components/form/radio/radio.d.ts",
170
170
  "default": "./dist/components/form/radio/radio.js"
171
171
  },
172
+ "./rating.js": {
173
+ "types": "./dist/components/form/rating/rating.d.ts",
174
+ "default": "./dist/components/form/rating/rating.js"
175
+ },
172
176
  "./scheduler-event-editor.js": {
173
177
  "types": "./dist/features/scheduler/scheduler-event-editor/scheduler-event-editor.d.ts",
174
178
  "default": "./dist/features/scheduler/scheduler-event-editor/scheduler-event-editor.js"
@@ -291,17 +295,32 @@
291
295
  },
292
296
  "./styles/*": "./styles/*",
293
297
  "./cdn/*": "./dist/cdn/*",
298
+ "./alert-ssr.css": "./dist/ssr/alert-ssr.css",
294
299
  "./animate-ssr.css": "./dist/ssr/animate-ssr.css",
295
- "./toolbar-ssr.css": "./dist/ssr/toolbar-ssr.css",
296
- "./sidebar-ssr.css": "./dist/ssr/sidebar-ssr.css",
297
- "./overlay-ssr.css": "./dist/ssr/overlay-ssr.css",
298
- "./links-ssr.css": "./dist/ssr/links-ssr.css",
300
+ "./badge-ssr.css": "./dist/ssr/badge-ssr.css",
301
+ "./breadcrumb-ssr.css": "./dist/ssr/breadcrumb-ssr.css",
299
302
  "./button-ssr.css": "./dist/ssr/button-ssr.css",
300
- "./tag-ssr.css": "./dist/ssr/tag-ssr.css",
301
303
  "./card-ssr.css": "./dist/ssr/card-ssr.css",
304
+ "./carousel-ssr.css": "./dist/ssr/carousel-ssr.css",
305
+ "./checkbox-ssr.css": "./dist/ssr/checkbox-ssr.css",
306
+ "./chip-ssr.css": "./dist/ssr/chip-ssr.css",
307
+ "./collapse-ssr.css": "./dist/ssr/collapse-ssr.css",
308
+ "./description-list-ssr.css": "./dist/ssr/description-list-ssr.css",
309
+ "./field-ssr.css": "./dist/ssr/field-ssr.css",
310
+ "./icon-ssr.css": "./dist/ssr/icon-ssr.css",
311
+ "./image-carousel-ssr.css": "./dist/ssr/image-carousel-ssr.css",
312
+ "./links-ssr.css": "./dist/ssr/links-ssr.css",
313
+ "./overlay-ssr.css": "./dist/ssr/overlay-ssr.css",
314
+ "./pagination-ssr.css": "./dist/ssr/pagination-ssr.css",
315
+ "./rating-ssr.css": "./dist/ssr/rating-ssr.css",
302
316
  "./rich-text.css": "./dist/ssr/rich-text.css",
317
+ "./sidebar-ssr.css": "./dist/ssr/sidebar-ssr.css",
318
+ "./skeleton-ssr.css": "./dist/ssr/skeleton-ssr.css",
303
319
  "./table-ssr.css": "./dist/ssr/table-ssr.css",
304
- "./description-list-ssr.css": "./dist/ssr/description-list-ssr.css"
320
+ "./tabs-ssr.css": "./dist/ssr/tabs-ssr.css",
321
+ "./tag-ssr.css": "./dist/ssr/tag-ssr.css",
322
+ "./toggle-group-ssr.css": "./dist/ssr/toggle-group-ssr.css",
323
+ "./toolbar-ssr.css": "./dist/ssr/toolbar-ssr.css"
305
324
  },
306
325
  "files": [
307
326
  "dist",
@@ -1 +0,0 @@
1
- import{a as r,j as a}from"./chunk-YITWLCD3.js";var o=n=>{class e extends n{constructor(){super(...arguments);this.appearance="outline"}}return r([a({reflect:!0})],e.prototype,"appearance",2),e};export{o as a};
@@ -1 +0,0 @@
1
- import{b as n}from"./chunk-VOTRXBDS.js";import{a as r}from"./chunk-YYCEPZUN.js";import{a as i,j as a}from"./chunk-YITWLCD3.js";var p=s=>{class t extends s{constructor(){super(...arguments);this.checked=!1;this.checkable=!0;this.buildCommonValidators=()=>this.required&&!this.checked?{validity:{valueMissing:!0},message:this.validationDictionary.validation.valueMissing}:{validity:{}}}connectedCallback(){super.connectedCallback?.(),this.hasAttribute("role")||this.setAttribute("role","checkbox"),this.hasAttribute("tabindex")||this.setAttribute("tabindex","-1"),this.defaultChecked!==void 0&&!this.hasAttribute("checked")&&(this.checked=this.defaultChecked),this.addEventListener("keydown",this.handleKeydown)}formResetCallback(){this.checked=this.defaultChecked??!1,this.dirty=!1,this.touched=!1}disconnectedCallback(){this.removeEventListener("keydown",this.handleKeydown),super.disconnectedCallback?.()}updated(e){super.updated(e),e.has("checked")&&(this.setAttribute("aria-checked",String(this.checked)),this.updateInternals()),n(e)&&this.setAttribute("aria-invalid",String(this.showError)),e.has("required")&&this.setAttribute("aria-required",String(this.required))}handleClick(e){this.handleChange(e)}handleChange(e){if(e.stopPropagation(),!(this.disabled||this.readonly||this.inert)){if(e.preventDefault(),this.checked=!this.checked,this.updateInternals(),this.checkValidity(this.checked),this.description){let d=this.description instanceof Array?this.description.join(","):this.description;this.setAttribute("aria-description",d)}else this.removeAttribute("aria-description");this.dispatchEvent(new r(this.checked))}}handleKeydown(e){e.key===" "&&(e.preventDefault(),this.handleChange(e))}updateInternals(){this.setFormValue(this.valueState)}}return i([a({type:Boolean,reflect:!0})],t.prototype,"checked",2),i([a({type:Boolean,attribute:"default-checked"})],t.prototype,"defaultChecked",2),t};export{p as a};