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

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 (177) hide show
  1. package/dist/cdn/components/chunks/{chunk-3PNGQEG4.js → chunk-32L2QYWQ.js} +2 -2
  2. package/dist/cdn/components/chunks/{chunk-Z3OFIE7S.js → chunk-3UUZM7X2.js} +1 -1
  3. package/dist/cdn/components/chunks/{chunk-BVASCT2V.js → chunk-55PUDL7D.js} +13 -13
  4. package/dist/cdn/components/chunks/chunk-5LA5DQMP.js +1 -0
  5. package/dist/cdn/components/chunks/chunk-5LXGJVJR.js +1 -0
  6. package/dist/cdn/components/chunks/chunk-6TIEBY34.js +1 -0
  7. package/dist/cdn/components/chunks/{chunk-LVKMAHMU.js → chunk-AH2SKZ7T.js} +4 -1
  8. package/dist/cdn/components/chunks/chunk-JAGZL7JH.js +1 -0
  9. package/dist/cdn/components/chunks/{chunk-DGI7TKCU.js → chunk-LD35BFNK.js} +5 -9
  10. package/dist/cdn/components/chunks/chunk-P6LGU3FT.js +1 -0
  11. package/dist/cdn/components/chunks/{chunk-UYZR4JXZ.js → chunk-QSZO4GIH.js} +45 -9
  12. package/dist/cdn/components/chunks/{chunk-PXF554MD.js → chunk-QYB6Z6FG.js} +5 -5
  13. package/dist/cdn/components/chunks/{chunk-RIFF2D2F.js → chunk-RGC3I6MK.js} +1 -1
  14. package/dist/cdn/components/chunks/{chunk-N6ZW5CDN.js → chunk-TCSB2MLU.js} +1 -1
  15. package/dist/cdn/components/chunks/chunk-WIUERJII.js +1 -0
  16. package/dist/cdn/components/eun-animate.js +4 -4
  17. package/dist/cdn/components/eun-button.js +1 -1
  18. package/dist/cdn/components/eun-carousel.js +10 -9
  19. package/dist/cdn/components/eun-chip.js +17 -11
  20. package/dist/cdn/components/eun-collapse.js +1 -1
  21. package/dist/cdn/components/eun-color-picker.js +18 -5
  22. package/dist/cdn/components/eun-counter.js +10 -8
  23. package/dist/cdn/components/eun-date-picker.js +46 -43
  24. package/dist/cdn/components/eun-drawer.js +19 -20
  25. package/dist/cdn/components/eun-dropdown-button.js +1 -1
  26. package/dist/cdn/components/eun-dropdown-item.js +3 -3
  27. package/dist/cdn/components/eun-fab.js +1 -1
  28. package/dist/cdn/components/eun-image-carousel.js +4 -4
  29. package/dist/cdn/components/eun-input-phone.js +11 -8
  30. package/dist/cdn/components/eun-input.js +1 -1
  31. package/dist/cdn/components/eun-link.js +59 -13
  32. package/dist/cdn/components/eun-modal.js +23 -13
  33. package/dist/cdn/components/eun-scheduler-event-editor.js +1 -1
  34. package/dist/cdn/components/eun-search.js +34 -28
  35. package/dist/cdn/components/eun-select.js +3 -3
  36. package/dist/cdn/components/eun-sidebar.js +66 -21
  37. package/dist/cdn/components/eun-sliding-card.js +1 -1
  38. package/dist/cdn/components/eun-stepper.js +16 -16
  39. package/dist/cdn/components/eun-tab-panel.js +1 -1
  40. package/dist/cdn/components/eun-table-action-bar.js +1 -1
  41. package/dist/cdn/components/eun-table.js +2 -2
  42. package/dist/cdn/components/eun-textarea.js +16 -13
  43. package/dist/cdn/components/eun-time-picker.js +25 -23
  44. package/dist/cdn/components/eun-toast.js +8 -8
  45. package/dist/cdn/components/eun-toggle-group.js +71 -35
  46. package/dist/cdn/components/eun-toggle-item.js +8 -8
  47. package/dist/cdn/components/eun-toolbar.js +20 -20
  48. package/dist/cdn/components/eun-tooltip.js +6 -6
  49. package/dist/cdn/styles/eunomia-themes.css +1 -1
  50. package/dist/cdn/styles/themes/mixins/eunomia-neutrals.mixin.scss +6 -2
  51. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia-dark.mixin.scss +6 -2
  52. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia.theme.css +1 -1
  53. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire-dark.mixin.scss +6 -2
  54. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire.theme.css +1 -1
  55. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest-dark.mixin.scss +6 -2
  56. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest.theme.css +1 -1
  57. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold-dark.mixin.scss +6 -2
  58. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold.theme.css +1 -1
  59. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean-dark.mixin.scss +6 -2
  60. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean.theme.css +1 -1
  61. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon-dark.mixin.scss +6 -2
  62. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon.theme.css +1 -1
  63. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet-dark.mixin.scss +6 -2
  64. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet.theme.css +1 -1
  65. package/dist/components/action/button/button.d.ts +2 -2
  66. package/dist/components/action/button/button.js +3 -7
  67. package/dist/components/action/button/button.styles.js +3 -3
  68. package/dist/components/action/dropdown-button/dropdown-button.d.ts +4 -6
  69. package/dist/components/action/dropdown-button/dropdown-button.js +6 -8
  70. package/dist/components/action/dropdown-button/dropdown-item.d.ts +10 -2
  71. package/dist/components/action/dropdown-button/dropdown-item.js +24 -9
  72. package/dist/components/action/link/link.d.ts +10 -1
  73. package/dist/components/action/link/link.js +13 -1
  74. package/dist/components/action/link/link.styles.js +50 -3
  75. package/dist/components/action/toggle/toggle-group.d.ts +12 -2
  76. package/dist/components/action/toggle/toggle-group.js +17 -2
  77. package/dist/components/action/toggle/toggle-group.styles.js +54 -18
  78. package/dist/components/action/toggle/toggle-item.js +1 -3
  79. package/dist/components/action/toggle/toggle-item.styles.js +7 -7
  80. package/dist/components/alert/drawer/drawer.d.ts +25 -0
  81. package/dist/components/alert/drawer/drawer.js +42 -3
  82. package/dist/components/alert/drawer/drawer.styles.js +6 -6
  83. package/dist/components/alert/modal/modal.d.ts +25 -0
  84. package/dist/components/alert/modal/modal.js +42 -3
  85. package/dist/components/alert/modal/modal.styles.js +17 -6
  86. package/dist/components/alert/toast/toast.js +3 -2
  87. package/dist/components/alert/toast/toast.styles.js +3 -3
  88. package/dist/components/content/chip/chip.js +3 -2
  89. package/dist/components/content/chip/chip.styles.js +9 -3
  90. package/dist/components/content/image-carousel/image-carousel.js +5 -4
  91. package/dist/components/content/tooltip/tooltip.d.ts +16 -9
  92. package/dist/components/content/tooltip/tooltip.js +28 -12
  93. package/dist/components/content/tooltip/tooltip.styles.js +1 -1
  94. package/dist/components/form/color-picker/color-picker.d.ts +7 -1
  95. package/dist/components/form/color-picker/color-picker.js +8 -2
  96. package/dist/components/form/color-picker/color-picker.styles.js +13 -0
  97. package/dist/components/form/counter/counter.d.ts +3 -1
  98. package/dist/components/form/counter/counter.js +3 -1
  99. package/dist/components/form/counter/counter.styles.js +6 -4
  100. package/dist/components/form/date-picker/date-picker.d.ts +6 -1
  101. package/dist/components/form/date-picker/date-picker.js +7 -2
  102. package/dist/components/form/date-picker/date-picker.styles.js +9 -6
  103. package/dist/components/form/input/input.d.ts +6 -1
  104. package/dist/components/form/input/input.js +7 -2
  105. package/dist/components/form/input-phone/input-phone.d.ts +7 -1
  106. package/dist/components/form/input-phone/input-phone.js +7 -1
  107. package/dist/components/form/input-phone/input-phone.styles.js +6 -3
  108. package/dist/components/form/search/search.d.ts +64 -10
  109. package/dist/components/form/search/search.js +112 -31
  110. package/dist/components/form/search/search.styles.js +2 -0
  111. package/dist/components/form/select/select.d.ts +7 -1
  112. package/dist/components/form/select/select.js +7 -1
  113. package/dist/components/form/shared-styles/field.styles.js +45 -8
  114. package/dist/components/form/shared-styles/listbox.styles.js +5 -1
  115. package/dist/components/form/textarea/textarea.d.ts +1 -0
  116. package/dist/components/form/textarea/textarea.js +2 -1
  117. package/dist/components/form/textarea/textarea.styles.js +3 -0
  118. package/dist/components/form/time-picker/time-picker.d.ts +6 -1
  119. package/dist/components/form/time-picker/time-picker.js +7 -2
  120. package/dist/components/form/time-picker/time-picker.styles.js +7 -5
  121. package/dist/components/layout/animate/animate.js +2 -1
  122. package/dist/components/navigation/carousel/carousel.d.ts +1 -2
  123. package/dist/components/navigation/carousel/carousel.js +14 -6
  124. package/dist/components/navigation/carousel/carousel.styles.js +5 -4
  125. package/dist/components/navigation/sidebar/sidebar.d.ts +98 -52
  126. package/dist/components/navigation/sidebar/sidebar.js +140 -85
  127. package/dist/components/navigation/sidebar/sidebar.styles.d.ts +1 -1
  128. package/dist/components/navigation/sidebar/sidebar.styles.js +69 -21
  129. package/dist/components/navigation/stepper/stepper.d.ts +1 -3
  130. package/dist/components/navigation/stepper/stepper.js +3 -21
  131. package/dist/components/navigation/toolbar/toolbar.d.ts +10 -0
  132. package/dist/components/navigation/toolbar/toolbar.js +8 -1
  133. package/dist/components/navigation/toolbar/toolbar.styles.js +18 -17
  134. package/dist/events/select.event.d.ts +3 -2
  135. package/dist/events/select.event.js +2 -1
  136. package/dist/features/scheduler/scheduler-event-editor/scheduler-event-editor.js +1 -1
  137. package/dist/features/table/table/table.js +1 -1
  138. package/dist/features/table/table-action-bar/table-action-bar.js +2 -2
  139. package/dist/index.d.ts +1 -0
  140. package/dist/mixins/button.mixin.d.ts +1 -1
  141. package/dist/mixins/button.mixin.js +6 -4
  142. package/dist/mixins/dialog-surface.mixin.d.ts +8 -0
  143. package/dist/mixins/field-size.mixin.d.ts +19 -0
  144. package/dist/mixins/field-size.mixin.js +33 -0
  145. package/dist/mixins/rounded.mixin.d.ts +18 -0
  146. package/dist/mixins/rounded.mixin.js +32 -0
  147. package/dist/ssr/button-ssr.css +5 -5
  148. package/dist/ssr/carousel-ssr.css +9 -0
  149. package/dist/ssr/chip-ssr.css +8 -0
  150. package/dist/ssr/collapse-ssr.css +29 -0
  151. package/dist/ssr/field-ssr.css +43 -4
  152. package/dist/ssr/image-carousel-ssr.css +10 -0
  153. package/dist/ssr/links-ssr.css +38 -1
  154. package/dist/ssr/sidebar-ssr.css +95 -4
  155. package/dist/ssr/toggle-group-ssr.css +64 -13
  156. package/dist/ssr/toolbar-ssr.css +50 -0
  157. package/dist/types/variant.type.d.ts +4 -1
  158. package/dist/utils/boolean.utils.d.ts +14 -0
  159. package/dist/utils/boolean.utils.js +20 -0
  160. package/dist/utils/dropdown-menu.utils.d.ts +1 -1
  161. package/dist/utils/focusable-elements.utils.d.ts +12 -0
  162. package/dist/utils/focusable-elements.utils.js +26 -0
  163. package/dist/utils/input-modality.utils.d.ts +13 -0
  164. package/dist/utils/input-modality.utils.js +34 -0
  165. package/dist/utils/theme-generator.utils.d.ts +8 -2
  166. package/dist/utils/theme-generator.utils.js +30 -9
  167. package/package.json +1 -1
  168. package/styles/themes/mixins/eunomia-neutrals.mixin.scss +6 -2
  169. package/styles/themes/prebuilt-themes/eunomia/eunomia-dark.mixin.scss +6 -2
  170. package/styles/themes/prebuilt-themes/fire/eunomia-fire-dark.mixin.scss +6 -2
  171. package/styles/themes/prebuilt-themes/forest/eunomia-forest-dark.mixin.scss +6 -2
  172. package/styles/themes/prebuilt-themes/gold/eunomia-gold-dark.mixin.scss +6 -2
  173. package/styles/themes/prebuilt-themes/ocean/eunomia-ocean-dark.mixin.scss +6 -2
  174. package/styles/themes/prebuilt-themes/salmon/eunomia-salmon-dark.mixin.scss +6 -2
  175. package/styles/themes/prebuilt-themes/violet/eunomia-violet-dark.mixin.scss +6 -2
  176. package/dist/cdn/components/chunks/chunk-6VK6SHCG.js +0 -1
  177. package/dist/cdn/components/chunks/chunk-UDOZRIJZ.js +0 -1
@@ -9,27 +9,11 @@ import { html, LitElement, nothing } from "lit";
9
9
  import { classMap } from "lit/directives/class-map.js";
10
10
  import { StepChangeEvent } from "../../../events/stepchange.event.js";
11
11
  import { stepperStyles } from "./stepper.styles.js";
12
+ import { defaultTrueConverter } from "../../../utils/boolean.utils.js";
12
13
  /**
13
14
  * Tag name of the stepper component.
14
15
  */
15
16
  export const EunomiaStepperTagName = "eun-stepper";
16
- /**
17
- * Attribute converter for `linear`, making an explicit `linear="false"`
18
- * actually mean false. Lit's standard boolean converter only ever looks
19
- * at whether the attribute is *present*, the same way native HTML boolean
20
- * attributes work (`disabled="false"` is still disabled) — fine for every
21
- * other boolean here, which default to `false` and so are only ever
22
- * turned on by adding the attribute. `linear` is the one exception,
23
- * defaulting to `true` : without this, there would be no way to turn it
24
- * back off from plain HTML, only from script (`el.linear = false`).
25
- * @internal
26
- */
27
- const linearConverter = {
28
- fromAttribute(value) {
29
- return value !== null && value !== "false";
30
- },
31
- toAttribute: String,
32
- };
33
17
  /**
34
18
  * A status and progression indicator for a multi-step process, such as a
35
19
  * checkout flow, a multi-page form, or an onboarding wizard.
@@ -86,7 +70,6 @@ const linearConverter = {
86
70
  * @prop {'horizontal' | 'vertical'} [orientation='horizontal'] - The numbered display's layout direction. Has no effect on the progress variant
87
71
  * @prop {'numbered' | 'progress'} [variant='numbered'] - Which of the two displays to render
88
72
  * @prop {boolean} [linear=true] - Restricts direct navigation to steps before activeStep. Set to false to allow jumping to any non-disabled step in any order
89
- * @attr {'true' | 'false'} [linear='true'] - Unlike most boolean attributes here, the literal string false genuinely means false, needed since linear is the one that defaults to true
90
73
  * @prop {boolean} [disabled=false] - Disables every step's control, leaving a read-only progress summary with no navigation at all, the same way an individual step's own disabled does
91
74
  * @attr {string} [aria-label='Progress'] - The accessible label for the navigation landmark. Numbered display only
92
75
  * @fires {StepChangeEvent} eunstepchange - Fired with the requested step whenever a reachable step is activated. ActiveStep and activeSubstep are never updated internally
@@ -153,8 +136,7 @@ let EunomiaStepper = class EunomiaStepper extends LitElement {
153
136
  /**
154
137
  * Restricts direct navigation to steps before {@link activeStep} ; set
155
138
  * to `false` (either as the JS property, or the literal `linear="false"`
156
- * attribute — see {@link linearConverter} for why that works here,
157
- * unlike most other boolean attributes) to allow jumping to any
139
+ * attribute — see {@link defaultTrueConverter}) to allow jumping to any
158
140
  * non-`disabled` step in any order.
159
141
  * @default true
160
142
  */
@@ -530,7 +512,7 @@ __decorate([
530
512
  property({ reflect: true, useDefault: true })
531
513
  ], EunomiaStepper.prototype, "variant", void 0);
532
514
  __decorate([
533
- property({ reflect: true, converter: linearConverter })
515
+ property({ reflect: true, converter: defaultTrueConverter })
534
516
  ], EunomiaStepper.prototype, "linear", void 0);
535
517
  __decorate([
536
518
  property({ type: Boolean, reflect: true })
@@ -70,6 +70,8 @@ declare const EunomiaToolbar_base: import("../../../utils/constructor.type.js").
70
70
  * @attr {'top' | 'bottom' | 'left' | 'right'} [panel-direction='top'] - Which edge the mobile panel slides in from
71
71
  * @prop {string} panelSize - A custom open size for the mobile panel, height for top or bottom, width for left or right. Any CSS length, defaulting to 100%
72
72
  * @attr {string} panel-size - A custom open size for the mobile panel
73
+ * @prop {string} mobileHide - The bar slots hidden below the mobile breakpoint, as a space-separated list of start, center and end, such as "center end" when their content is repeated in the panel. Applied by toolbar-ssr.css before the upgrade too
74
+ * @attr {string} mobile-hide - The bar slots hidden below the mobile breakpoint, as a space-separated list of start, center and end
73
75
  * @prop {boolean} [closeOnBackdrop=true] - Whether clicking outside the mobile panel closes it
74
76
  * @attr {boolean} [close-on-backdrop=true] - Whether clicking outside the mobile panel closes it
75
77
  * @prop {string} [menuOpenLabel] - The accessible label of the burger button while the panel is closed. Defaults to the localized string for the current locale (English: "Open menu")
@@ -127,6 +129,7 @@ declare const EunomiaToolbar_base: import("../../../utils/constructor.type.js").
127
129
  * @cssprop [--toolbar-panel-padding] - Sets the padding of the mobile panel
128
130
  * @cssprop [--toolbar-panel-padding-block] - Sets the vertical padding, as one length applied to both sides. Ignored when --toolbar-panel-padding is set
129
131
  * @cssprop [--toolbar-panel-padding-inline] - Sets the horizontal padding, as one length applied to both sides. Ignored when --toolbar-panel-padding is set
132
+ * @cssprop [--toolbar-panel-offset] - Sets the room reserved above the mobile panel content for the burger, added to its padding. Defaults to the bar's height, or 0 with panel-direction="bottom"
130
133
  * @cssprop [--toolbar-burger-align] - Sets the vertical alignment of the burger button within the bar's height, defaulting to center ; set flex-start to pin it to the top instead
131
134
  * @cssprop [--toolbar-burger-padding] - Sets the padding around the burger button, defaulting to 0 on the block axis and --toolbar-panel-padding on the inline axis
132
135
  * @cssprop [--toolbar-burger-padding-block] - Sets the vertical padding, as one length applied to both sides. Ignored when --toolbar-burger-padding is set
@@ -175,6 +178,13 @@ export declare class EunomiaToolbar extends EunomiaToolbar_base {
175
178
  * left/right) ; any CSS length, defaults to `100%`.
176
179
  */
177
180
  panelSize?: string;
181
+ /**
182
+ * The bar slots hidden below `mobileBreakpoint`, as a space-separated
183
+ * list of `start`, `center` and `end`, such as `"center end"` once their
184
+ * content is repeated in the panel. Reflected, since the hiding is pure
185
+ * CSS on the attribute, also matched by `toolbar-ssr.css` before upgrade.
186
+ */
187
+ mobileHide?: string;
178
188
  /**
179
189
  * Whether clicking outside the mobile panel closes it.
180
190
  * @default true
@@ -11,6 +11,7 @@ import { DialogSurfaceMixin } from "../../../mixins/dialog-surface.mixin.js";
11
11
  import { EUNOMIA_BREAKPOINTS } from "../../../breakpoints.js";
12
12
  import { toolbarStyles } from "./toolbar.styles.js";
13
13
  import { LocalizableMixin } from "../../../mixins/localizable.mixin.js";
14
+ import { defaultTrueConverter } from "../../../utils/boolean.utils.js";
14
15
  /**
15
16
  * Tag name of the toolbar component.
16
17
  */
@@ -69,6 +70,8 @@ export const EunomiaToolbarTagName = "eun-toolbar";
69
70
  * @attr {'top' | 'bottom' | 'left' | 'right'} [panel-direction='top'] - Which edge the mobile panel slides in from
70
71
  * @prop {string} panelSize - A custom open size for the mobile panel, height for top or bottom, width for left or right. Any CSS length, defaulting to 100%
71
72
  * @attr {string} panel-size - A custom open size for the mobile panel
73
+ * @prop {string} mobileHide - The bar slots hidden below the mobile breakpoint, as a space-separated list of start, center and end, such as "center end" when their content is repeated in the panel. Applied by toolbar-ssr.css before the upgrade too
74
+ * @attr {string} mobile-hide - The bar slots hidden below the mobile breakpoint, as a space-separated list of start, center and end
72
75
  * @prop {boolean} [closeOnBackdrop=true] - Whether clicking outside the mobile panel closes it
73
76
  * @attr {boolean} [close-on-backdrop=true] - Whether clicking outside the mobile panel closes it
74
77
  * @prop {string} [menuOpenLabel] - The accessible label of the burger button while the panel is closed. Defaults to the localized string for the current locale (English: "Open menu")
@@ -126,6 +129,7 @@ export const EunomiaToolbarTagName = "eun-toolbar";
126
129
  * @cssprop [--toolbar-panel-padding] - Sets the padding of the mobile panel
127
130
  * @cssprop [--toolbar-panel-padding-block] - Sets the vertical padding, as one length applied to both sides. Ignored when --toolbar-panel-padding is set
128
131
  * @cssprop [--toolbar-panel-padding-inline] - Sets the horizontal padding, as one length applied to both sides. Ignored when --toolbar-panel-padding is set
132
+ * @cssprop [--toolbar-panel-offset] - Sets the room reserved above the mobile panel content for the burger, added to its padding. Defaults to the bar's height, or 0 with panel-direction="bottom"
129
133
  * @cssprop [--toolbar-burger-align] - Sets the vertical alignment of the burger button within the bar's height, defaulting to center ; set flex-start to pin it to the top instead
130
134
  * @cssprop [--toolbar-burger-padding] - Sets the padding around the burger button, defaulting to 0 on the block axis and --toolbar-panel-padding on the inline axis
131
135
  * @cssprop [--toolbar-burger-padding-block] - Sets the vertical padding, as one length applied to both sides. Ignored when --toolbar-burger-padding is set
@@ -897,7 +901,10 @@ __decorate([
897
901
  property({ attribute: "panel-size" })
898
902
  ], EunomiaToolbar.prototype, "panelSize", void 0);
899
903
  __decorate([
900
- property({ type: Boolean, attribute: "close-on-backdrop" })
904
+ property({ reflect: true, attribute: "mobile-hide" })
905
+ ], EunomiaToolbar.prototype, "mobileHide", void 0);
906
+ __decorate([
907
+ property({ converter: defaultTrueConverter, attribute: "close-on-backdrop" })
901
908
  ], EunomiaToolbar.prototype, "closeOnBackdrop", void 0);
902
909
  __decorate([
903
910
  property({ attribute: "menu-open-label" })
@@ -28,6 +28,7 @@ import { css } from "lit";
28
28
  * [--toolbar-panel-padding] - Set a custom padding for the mobile panel
29
29
  * [--toolbar-panel-padding-block] - Set a custom vertical padding, as one length applied to both sides. Ignored when --toolbar-panel-padding is set
30
30
  * [--toolbar-panel-padding-inline] - Set a custom horizontal padding, as one length applied to both sides. Ignored when --toolbar-panel-padding is set
31
+ * [--toolbar-panel-offset] - Set the room reserved above the mobile panel content for the burger, added to its padding. Defaults to the bar's height, or 0 for panel-direction="bottom"
31
32
  * [--toolbar-burger-align] - Set the vertical alignment of the burger button within the bar's height, default center ; set flex-start to pin it to the top instead
32
33
  * [--toolbar-burger-padding] - Set a custom padding around the burger button, default 0 on the block axis and --toolbar-panel-padding on the inline axis
33
34
  * [--toolbar-burger-padding-block] - Set a custom vertical padding, as one length applied to both sides. Ignored when --toolbar-burger-padding is set
@@ -92,6 +93,10 @@ const base = css `
92
93
  --toolbar-panel-padding,
93
94
  var(--toolbar-panel-padding-inline, 14px)
94
95
  );
96
+ --_panelOffset: var(
97
+ --toolbar-panel-offset,
98
+ calc(var(--_currentHeight) - var(--eun-border-width-s, 1px))
99
+ );
95
100
  --_burgerAlign: var(--toolbar-burger-align, center);
96
101
  --_burgerPadding: var(
97
102
  --toolbar-burger-padding,
@@ -191,6 +196,12 @@ const base = css `
191
196
  min-width: 0;
192
197
  }
193
198
 
199
+ :host([mobile][mobile-hide~="start"]) #start,
200
+ :host([mobile][mobile-hide~="center"]) #center,
201
+ :host([mobile][mobile-hide~="end"]) #end {
202
+ display: none;
203
+ }
204
+
194
205
  #start ::slotted(*),
195
206
  #center ::slotted(*),
196
207
  #end ::slotted(*) {
@@ -320,22 +331,6 @@ const base = css `
320
331
  pointer-events: none;
321
332
  transition-duration: var(--_transitionDuration);
322
333
  }
323
- #panel[data-direction="top"] {
324
- inset-block-end: auto;
325
- height: var(--_panelSize);
326
- }
327
- #panel[data-direction="bottom"] {
328
- inset-block-start: auto;
329
- height: var(--_panelSize);
330
- }
331
- #panel[data-direction="left"] {
332
- inset-inline-end: auto;
333
- width: var(--_panelSize);
334
- }
335
- #panel[data-direction="right"] {
336
- inset-inline-start: auto;
337
- width: var(--_panelSize);
338
- }
339
334
  #panel::backdrop {
340
335
  background: transparent;
341
336
  }
@@ -360,7 +355,8 @@ const base = css `
360
355
  inset: 0;
361
356
  display: flex;
362
357
  flex-direction: column;
363
- padding: var(--_panelPaddingBlock) var(--_panelPaddingInline);
358
+ padding: calc(var(--_panelOffset) + var(--_panelPaddingBlock))
359
+ var(--_panelPaddingInline) var(--_panelPaddingBlock);
364
360
  background: var(--_panelBackground);
365
361
  backdrop-filter: blur(var(--_panelBackdropBlur));
366
362
  -webkit-backdrop-filter: blur(var(--_panelBackdropBlur));
@@ -373,15 +369,20 @@ const base = css `
373
369
  transform var(--_transitionDuration) var(--eun-easing-default, ease);
374
370
  }
375
371
  #panel[data-direction="top"] #panel-body {
372
+ inset-block-end: calc(100% - var(--_panelSize));
376
373
  transform: translateY(-100%);
377
374
  }
378
375
  #panel[data-direction="bottom"] #panel-body {
376
+ --_panelOffset: var(--toolbar-panel-offset, 0px);
377
+ inset-block-start: calc(100% - var(--_panelSize));
379
378
  transform: translateY(100%);
380
379
  }
381
380
  #panel[data-direction="left"] #panel-body {
381
+ inset-inline-end: calc(100% - var(--_panelSize));
382
382
  transform: translateX(-100%);
383
383
  }
384
384
  #panel[data-direction="right"] #panel-body {
385
+ inset-inline-start: calc(100% - var(--_panelSize));
385
386
  transform: translateX(100%);
386
387
  }
387
388
  #panel:popover-open #panel-body {
@@ -1,5 +1,6 @@
1
1
  /**
2
- * Dispatched when an option is chosen from a `eun-dropdown-button` menu.
2
+ * Dispatched when an option is chosen from a `eun-dropdown-button` menu, or
3
+ * a suggestion is picked in a `eun-search`.
3
4
  */
4
5
  export declare class SelectEvent extends Event {
5
6
  /**
@@ -9,7 +10,7 @@ export declare class SelectEvent extends Event {
9
10
  */
10
11
  static readonly eventName = "eunselect";
11
12
  /**
12
- * The `key` of the chosen option.
13
+ * The `key` of the chosen option, or the `value` of the picked suggestion.
13
14
  */
14
15
  readonly key: string;
15
16
  constructor(key: string);
@@ -1,5 +1,6 @@
1
1
  /**
2
- * Dispatched when an option is chosen from a `eun-dropdown-button` menu.
2
+ * Dispatched when an option is chosen from a `eun-dropdown-button` menu, or
3
+ * a suggestion is picked in a `eun-search`.
3
4
  */
4
5
  export class SelectEvent extends Event {
5
6
  constructor(key) {
@@ -648,7 +648,7 @@ let EunomiaSchedulerEventEditor = class EunomiaSchedulerEventEditor extends Loca
648
648
  @keydown=${this.handleGuestInputKeydown}
649
649
  ></eun-input>
650
650
  <eun-button
651
- appearance="default"
651
+ appearance="soft"
652
652
  id="guest-add-button"
653
653
  color="secondary"
654
654
  aria-label=${this.addGuestLabel}
@@ -1078,7 +1078,7 @@ let EunomiaTable = class EunomiaTable extends LocalizableMixin(LoadMoreSentinelM
1078
1078
  }
1079
1079
  return html `<eun-button
1080
1080
  size="xs"
1081
- appearance=${action.color ? "default" : "ghost"}
1081
+ appearance=${action.color ? "soft" : "ghost"}
1082
1082
  color=${ifDefined(action.color)}
1083
1083
  aria-label=${action.label}
1084
1084
  ?disabled=${action.disabled?.(row) ?? false}
@@ -102,7 +102,7 @@ let EunomiaTableActionBar = class EunomiaTableActionBar extends LocalizableMixin
102
102
  label=${action.label}
103
103
  icon=${ifDefined(action.icon)}
104
104
  color=${ifDefined(isCritical ? "critical" : undefined)}
105
- appearance=${isCritical ? "default" : "flat"}
105
+ appearance=${isCritical ? "soft" : "flat"}
106
106
  .options=${action.dropdown}
107
107
  ?disabled=${action.disabled}
108
108
  @eunselect=${(event) => this.handleActionSelect(action, event)}
@@ -122,7 +122,7 @@ let EunomiaTableActionBar = class EunomiaTableActionBar extends LocalizableMixin
122
122
  <eun-button
123
123
  color=${ifDefined(isCritical ? "critical" : undefined)}
124
124
  label=${action.label}
125
- appearance=${isCritical ? "default" : "flat"}
125
+ appearance=${isCritical ? "soft" : "flat"}
126
126
  ?disabled=${action.disabled}
127
127
  @click=${() => this.handleActionClick(action)}
128
128
  >
package/dist/index.d.ts CHANGED
@@ -55,6 +55,7 @@ export type { EunomiaSidebarPosition, EunomiaSidebarCollapseMode, } from "./comp
55
55
  export { EunomiaModal, EunomiaModalTagName, } from "./components/alert/modal/modal.js";
56
56
  export { EunomiaDrawer, EunomiaDrawerTagName, } from "./components/alert/drawer/drawer.js";
57
57
  export type { EunomiaDrawerPosition } from "./components/alert/drawer/drawer.js";
58
+ export type { EunomiaDialogInitialFocus } from "./mixins/dialog-surface.mixin.js";
58
59
  export { EunomiaAlert, EunomiaAlertTagName, } from "./components/alert/alert/alert.js";
59
60
  export { EunomiaToast, EunomiaToastTagName, } from "./components/alert/toast/toast.js";
60
61
  export type { EunomiaToastSeverity, EunomiaToastAppearance, EunomiaToastPosition, EunomiaToastSlide, } from "./components/alert/toast/toast.js";
@@ -34,7 +34,7 @@ export type ButtonSize = EunomiaSize;
34
34
  * (a floating action button has no `stroke`/`raised`/`flat`/`ghost` look of
35
35
  * its own).
36
36
  */
37
- export type EunomiaButtonAppearance = Extract<EunomiaAppearance, "default" | "fill" | "outline" | "flat" | "raised" | "ghost">;
37
+ export type EunomiaButtonAppearance = Extract<EunomiaAppearance, "soft" | "fill" | "outline" | "flat" | "raised" | "ghost">;
38
38
  /**
39
39
  * Interface for the ButtonMixin.
40
40
  * Extend this in components if needed.
@@ -110,7 +110,11 @@ export const ButtonMixin = (superClass) => {
110
110
  }
111
111
  /**
112
112
  * Handles keyboard interaction.
113
- * Supports "Enter" and "Space" to simulate native button behavior.
113
+ * Supports "Enter" and "Space" to simulate native button behavior : a
114
+ * real `click()`, bubbling, composed and cancelable like a native
115
+ * button's, so delegated listeners (React's `onClick`, a parent slot)
116
+ * see it too. {@link handleClick} then applies the form, command or
117
+ * popover behavior, exactly as for a mouse click.
114
118
  *
115
119
  * @param event the received Keyboard event.
116
120
  * @private
@@ -122,9 +126,7 @@ export const ButtonMixin = (superClass) => {
122
126
  return;
123
127
  }
124
128
  event.preventDefault();
125
- if (!this.handleFormBehavior()) {
126
- this.dispatchEvent(new Event("click"));
127
- }
129
+ this.click();
128
130
  }
129
131
  /**
130
132
  * Handles native form behavior if the button is inside a <form>.
@@ -16,6 +16,14 @@ export declare class DialogSurfaceMixinInterface {
16
16
  protected closeDialogSurface(fallbackFocusEl?: HTMLElement): void;
17
17
  protected teardownDialogSurface(open: boolean): void;
18
18
  }
19
+ /**
20
+ * Where focus lands when a dialog surface opens. `auto` keeps each
21
+ * component's own default target. `first-field` moves it to the first
22
+ * focusable element of the body when the surface was opened from the
23
+ * keyboard, and behaves like `auto` otherwise, so a touch opening doesn't
24
+ * bring up the virtual keyboard. A slotted `[autofocus]` element always wins.
25
+ */
26
+ export type EunomiaDialogInitialFocus = "auto" | "first-field";
19
27
  /**
20
28
  * Shared machinery behind every `manual`-mode popover "dialog surface" in
21
29
  * this library (`eun-drawer`, `eun-modal`, `eun-toolbar`'s mobile panel):
@@ -0,0 +1,19 @@
1
+ import { LitElement } from "lit";
2
+ import { Constructor } from "../utils/constructor.type.js";
3
+ import { EunomiaSize } from "../types/variant.type.js";
4
+ /**
5
+ * Interface defining the contract for components using FieldSizeMixin.
6
+ */
7
+ export declare class FieldSizeMixinInterface {
8
+ size?: EunomiaSize;
9
+ }
10
+ /**
11
+ * A mixin that adds a `size` property to a text-like form field component,
12
+ * with the same values as `eun-button`'s own. A field and a button of the
13
+ * same size share their font size, vertical padding and line height, so
14
+ * they line up at the same height side by side (see `field.styles.ts`).
15
+ *
16
+ * @param superClass - The base class to extend.
17
+ * @returns A new class extending the base with `size` behavior.
18
+ */
19
+ export declare const FieldSizeMixin: <T extends Constructor<LitElement>>(superClass: T) => Constructor<FieldSizeMixinInterface> & T;
@@ -0,0 +1,33 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
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
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { property } from "lit/decorators.js";
8
+ /**
9
+ * A mixin that adds a `size` property to a text-like form field component,
10
+ * with the same values as `eun-button`'s own. A field and a button of the
11
+ * same size share their font size, vertical padding and line height, so
12
+ * they line up at the same height side by side (see `field.styles.ts`).
13
+ *
14
+ * @param superClass - The base class to extend.
15
+ * @returns A new class extending the base with `size` behavior.
16
+ */
17
+ export const FieldSizeMixin = (superClass) => {
18
+ class FieldSizeMixinClass extends superClass {
19
+ constructor() {
20
+ super(...arguments);
21
+ /**
22
+ * The field size, matching the button size of the same name.
23
+ * By default, set to "m". The default isn't reflected, so an SSR
24
+ * framework doesn't see an attribute it never rendered.
25
+ */
26
+ this.size = "m";
27
+ }
28
+ }
29
+ __decorate([
30
+ property({ reflect: true, useDefault: true })
31
+ ], FieldSizeMixinClass.prototype, "size", void 0);
32
+ return FieldSizeMixinClass;
33
+ };
@@ -0,0 +1,18 @@
1
+ import { LitElement } from "lit";
2
+ import { Constructor } from "../utils/constructor.type.js";
3
+ /**
4
+ * Interface defining the contract for components using RoundedMixin.
5
+ */
6
+ export declare class RoundedMixinInterface {
7
+ rounded?: boolean;
8
+ }
9
+ /**
10
+ * A mixin that adds a `rounded` property to a single-line control, the same
11
+ * as `eun-button`'s own : set, the control takes a pill shape through the
12
+ * `--eun-border-radius-xl` token, without reaching for its own radius
13
+ * custom property. That custom property still wins over it when set.
14
+ *
15
+ * @param superClass - The base class to extend.
16
+ * @returns A new class extending the base with `rounded` behavior.
17
+ */
18
+ export declare const RoundedMixin: <T extends Constructor<LitElement>>(superClass: T) => Constructor<RoundedMixinInterface> & T;
@@ -0,0 +1,32 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
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
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { property } from "lit/decorators.js";
8
+ /**
9
+ * A mixin that adds a `rounded` property to a single-line control, the same
10
+ * as `eun-button`'s own : set, the control takes a pill shape through the
11
+ * `--eun-border-radius-xl` token, without reaching for its own radius
12
+ * custom property. That custom property still wins over it when set.
13
+ *
14
+ * @param superClass - The base class to extend.
15
+ * @returns A new class extending the base with `rounded` behavior.
16
+ */
17
+ export const RoundedMixin = (superClass) => {
18
+ class RoundedMixinClass extends superClass {
19
+ constructor() {
20
+ super(...arguments);
21
+ /**
22
+ * Whether the control is fully rounded, as a pill.
23
+ * @default false
24
+ */
25
+ this.rounded = false;
26
+ }
27
+ }
28
+ __decorate([
29
+ property({ type: Boolean, reflect: true })
30
+ ], RoundedMixinClass.prototype, "rounded", void 0);
31
+ return RoundedMixinClass;
32
+ };
@@ -120,8 +120,8 @@
120
120
  }
121
121
  :is(eun-button, eun-dropdown-button)[size="s"]:not(:defined) {
122
122
  --_defaultFontSize: var(--eun-font-size-xs, 10px);
123
- --_defaultPaddingBlock: calc(var(--eun-space-s) / 2);
124
- --_defaultPaddingInline: var(--eun-space-s);
123
+ --_defaultPaddingBlock: calc(var(--eun-space-s, 8px) / 2);
124
+ --_defaultPaddingInline: var(--eun-space-s, 8px);
125
125
  --_defaultLineHeight: 10px;
126
126
  --_defaultBorderRadius: var(--eun-border-radius-s, 999px);
127
127
  }
@@ -149,7 +149,7 @@
149
149
  --_fg: var(--_onSolid);
150
150
  --_bd: transparent;
151
151
  }
152
- :is(eun-button, eun-dropdown-button)[appearance="default"]:not(:defined) {
152
+ :is(eun-button, eun-dropdown-button)[appearance="soft"]:not(:defined) {
153
153
  --_bg: var(--_tint);
154
154
  --_fg: var(--_fgTint);
155
155
  --_bd: transparent;
@@ -236,8 +236,8 @@ eun-button:not(:defined) > [slot="end"] {
236
236
  content: "";
237
237
  order: -1;
238
238
  flex-shrink: 0;
239
- width: 16px;
240
- height: 16px;
239
+ width: var(--icon-size);
240
+ height: var(--icon-size);
241
241
  }
242
242
 
243
243
  eun-dropdown-button[label]:not(:defined)::after {
@@ -36,6 +36,15 @@ eun-carousel:not(:defined) {
36
36
  container-type: inline-size;
37
37
  }
38
38
 
39
+ eun-carousel[show-arrows="false"]:not(:defined) {
40
+ --_navReserve: 0px;
41
+ --carousel-nav-display: none;
42
+ }
43
+
44
+ eun-carousel[show-dots="false"]:not(:defined) {
45
+ --carousel-dots-display: none;
46
+ }
47
+
39
48
  eun-carousel[visible-slides="2"]:not(:defined) {
40
49
  --_visibleCount: 2;
41
50
  }
@@ -170,6 +170,10 @@ eun-chip[appearance="flat"]:not(:defined) {
170
170
  --_fg: var(--_fg-flat);
171
171
  }
172
172
 
173
+ eun-chip[rounded="false"]:not(:defined) {
174
+ border-radius: var(--chip-border-radius, var(--eun-border-radius-s, 5px));
175
+ }
176
+
173
177
  eun-chip[disabled]:not(:defined) {
174
178
  opacity: 0.6;
175
179
  }
@@ -240,3 +244,7 @@ eun-chip:not(:defined)::after {
240
244
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z'/%3E%3C/svg%3E")
241
245
  center / var(--_deleteIconSize) no-repeat;
242
246
  }
247
+
248
+ eun-chip[removable="false"]:not(:defined)::after {
249
+ display: none;
250
+ }
@@ -101,6 +101,35 @@ eun-collapse:not(:defined) > [slot="tag"] {
101
101
  margin-inline-start: var(--collapse-gap, var(--eun-space-l, 32px));
102
102
  }
103
103
 
104
+ eun-collapse:not(:defined) > [slot="tag"]:not(eun-tag) {
105
+ --_borderWidth: var(--tag-border-width, var(--eun-border-width-s, 1px));
106
+ display: flex;
107
+ align-items: center;
108
+ border: var(--_borderWidth) solid var(--tag-border-color, transparent);
109
+ border-radius: var(--tag-border-radius, var(--eun-border-radius-xl, 999px));
110
+ padding: max(
111
+ 0px,
112
+ calc(
113
+ var(--tag-padding-block, var(--eun-space-xs, 4px)) - var(--_borderWidth)
114
+ )
115
+ )
116
+ max(
117
+ 0px,
118
+ calc(
119
+ var(--tag-padding-inline, var(--eun-space-s, 8px)) - var(--_borderWidth)
120
+ )
121
+ );
122
+ background: var(
123
+ --tag-background-color,
124
+ var(--eun-color-primary-alpha-20, #3d6fff33)
125
+ );
126
+ color: var(--tag-color, var(--eun-color-primary-500, #3d6fff));
127
+ font-family: var(--eun-font-family, "Mulish", sans-serif);
128
+ font-size: var(--tag-font-size, var(--eun-font-size-xs, 12px));
129
+ font-weight: var(--tag-font-weight, var(--eun-font-weight-m, 500));
130
+ user-select: none;
131
+ }
132
+
104
133
  eun-collapse:not(:defined)::after {
105
134
  content: "";
106
135
  grid-column: 4;
@@ -1,15 +1,53 @@
1
1
  :is(eun-input, eun-textarea, eun-select):not(:defined) {
2
2
  --_borderColor: var(--field-border-color, var(--eun-border-color, #dee0e7));
3
+ --_defaultPaddingBlock: var(--eun-space-s, 8px);
4
+ --_defaultFontSize: var(--eun-font-size-s, 14px);
5
+ --_defaultLineHeight: 1rem;
6
+ --_defaultBorderRadius: var(--eun-border-radius-m, 8px);
7
+ --_defaultPaddingInline: var(--eun-space-s, 8px);
3
8
  --_padding: var(
4
9
  --field-padding,
5
- var(--field-padding-block, var(--eun-space-s, 8px))
6
- var(--field-padding-inline, var(--eun-space-s, 8px))
10
+ var(--field-padding-block, var(--_defaultPaddingBlock))
11
+ var(--field-padding-inline, var(--_defaultPaddingInline))
7
12
  );
8
13
  display: block;
9
14
  width: 100%;
10
15
  color: var(--field-text-color, var(--eun-text-color, #071621));
11
16
  font-family: var(--eun-font-family, "Mulish", sans-serif);
12
- font-size: var(--field-font-size, var(--eun-font-size-s, 14px));
17
+ font-size: var(--field-font-size, var(--_defaultFontSize));
18
+ }
19
+
20
+ eun-textarea:not(:defined) {
21
+ --_defaultLineHeight: normal;
22
+ }
23
+
24
+ :is(eun-input, eun-select)[rounded]:not(:defined) {
25
+ --_defaultBorderRadius: var(--eun-border-radius-xl, 999px);
26
+ --_defaultPaddingInline: var(--eun-space-m, 16px);
27
+ }
28
+
29
+ :is(eun-input, eun-select)[size="xs"]:not(:defined) {
30
+ --_defaultFontSize: var(--eun-font-size-xs, 10px);
31
+ --_defaultPaddingBlock: var(--eun-space-xxs, 1.6px);
32
+ --_defaultLineHeight: 10px;
33
+ }
34
+
35
+ :is(eun-input, eun-select)[size="s"]:not(:defined) {
36
+ --_defaultFontSize: var(--eun-font-size-xs, 10px);
37
+ --_defaultPaddingBlock: calc(var(--eun-space-s, 8px) / 2);
38
+ --_defaultLineHeight: 10px;
39
+ }
40
+
41
+ :is(eun-input, eun-select)[size="l"]:not(:defined) {
42
+ --_defaultFontSize: var(--eun-font-size-m, 16px);
43
+ --_defaultPaddingBlock: calc(var(--eun-space-s, 8px) * 1.25);
44
+ --_defaultLineHeight: 1.1rem;
45
+ }
46
+
47
+ :is(eun-input, eun-select)[size="xl"]:not(:defined) {
48
+ --_defaultFontSize: var(--eun-font-size-l, 1.3rem);
49
+ --_defaultPaddingBlock: calc(var(--eun-space-s, 8px) * 1.5);
50
+ --_defaultLineHeight: 1.3rem;
13
51
  }
14
52
 
15
53
  :is(eun-input, eun-textarea, eun-select):is(
@@ -58,8 +96,9 @@
58
96
  box-sizing: border-box;
59
97
  overflow: hidden;
60
98
  padding: var(--_padding);
99
+ line-height: var(--field-line-height, var(--_defaultLineHeight));
61
100
  border: var(--eun-border-width-m, 1.5px) solid var(--_borderColor);
62
- border-radius: var(--field-border-radius, var(--eun-border-radius-m, 8px));
101
+ border-radius: var(--field-border-radius, var(--_defaultBorderRadius));
63
102
  background-color: var(--field-background, transparent);
64
103
  box-shadow: var(--field-shadow, none);
65
104
  color: var(
@@ -22,3 +22,13 @@ eun-image-carousel:is(:not([images]), [images*="},"]):not(:defined)::after {
22
22
  height: var(--image-carousel-thumbnail-size, 64px);
23
23
  margin-top: var(--image-carousel-thumbnail-gap, var(--eun-space-s, 8px));
24
24
  }
25
+
26
+ eun-image-carousel[show-thumbnails="false"]:not(:defined)::after {
27
+ height: var(--image-carousel-dot-size, 8px);
28
+ }
29
+
30
+ eun-image-carousel[show-thumbnails="false"][show-dots="false"]:not(
31
+ :defined
32
+ )::after {
33
+ display: none;
34
+ }