@universityofmaryland/web-components-library 1.18.11 → 1.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { A as m, A as r } from "../index-DfPIaBDn.js";
1
+ import { A as m, A as r } from "../index-BkuJDd4z.js";
2
2
  export {
3
3
  m as AccordionItem,
4
4
  r as item
@@ -1,4 +1,4 @@
1
- import { C as e, a as l, b as i, c as r, d as u, e as C, C as o, a as m, b as d, c as g, d as b, e as n } from "../index-C8YoHmAp.js";
1
+ import { C as e, a as l, b as i, c as r, d as u, e as C, C as o, a as m, b as d, c as g, d as b, e as n } from "../index-Dj28K-Au.js";
2
2
  export {
3
3
  e as CarouselBase,
4
4
  l as CarouselCards,
@@ -1,4 +1,4 @@
1
- import { L as s, a as t, b as l, c as n, d as e, e as L, f as c, L as i, a as u, b as y, c as d, d as m, e as r, f as S } from "../index-CjOuk67A.js";
1
+ import { L as s, a as t, b as l, c as n, d as e, e as L, f as c, L as i, a as u, b as y, c as d, d as m, e as r, f as S } from "../index-C0H96DKS.js";
2
2
  export {
3
3
  s as LayoutBoxLogo,
4
4
  t as LayoutImageExpand,
package/dist/content.js CHANGED
@@ -1,12 +1,12 @@
1
1
  import { b as o } from "./index-w4yF38ne.js";
2
2
  import { g as t } from "./index-F2olbj6x.js";
3
- import { l as m } from "./index-CjOuk67A.js";
3
+ import { l as m } from "./index-C0H96DKS.js";
4
4
  import { m as r } from "./index-BIivaL9F.js";
5
5
  import { p as s } from "./index-Dh2smeN4.js";
6
6
  import { q as a } from "./index-gc3fkzDA.js";
7
7
  import { s as p } from "./index-D9J1IzkX.js";
8
8
  import { t as n } from "./index-DTdMI37J.js";
9
- import { l as e } from "./loader-CD8tNz2T.js";
9
+ import { l as e } from "./loader-DCx7K2yt.js";
10
10
  const i = {
11
11
  brand: o,
12
12
  card: t,
package/dist/feed.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { c as o } from "./index-Cl0QSfTe.js";
2
2
  import { j as e } from "./index-wTh3pJOz.js";
3
3
  import { s } from "./index-B8KsTyzD.js";
4
- import { l as m } from "./loader-CD8tNz2T.js";
4
+ import { l as m } from "./loader-DCx7K2yt.js";
5
5
  const r = {
6
6
  alert: o,
7
7
  feed: e,
@@ -1,6 +1,6 @@
1
1
  import { accordion as i } from "@universityofmaryland/web-elements-library/composite";
2
2
  import { Slots as t, Attributes as o, Model as r } from "@universityofmaryland/web-model-library";
3
- const d = "umd-element-accordion-item", l = (e) => i.item({
3
+ const d = "umd-element-accordion-item", n = (e) => i.item({
4
4
  text: t.deprecated.body({ element: e, isDefaultStyling: !1 }) || t.text.default({ element: e, isDefaultStyling: !1 }),
5
5
  headline: t.headline.default({ element: e }),
6
6
  isThemeLight: o.isTheme.light({
@@ -11,8 +11,9 @@ const d = "umd-element-accordion-item", l = (e) => i.item({
11
11
  }),
12
12
  isStateOpen: o.isVisual.open({
13
13
  element: e
14
- })
15
- }), n = {
14
+ }),
15
+ context: e
16
+ }), l = {
16
17
  headline: {
17
18
  ...t.element.allowed.headline,
18
19
  required: !0
@@ -24,8 +25,8 @@ const d = "umd-element-accordion-item", l = (e) => i.item({
24
25
  }
25
26
  }, s = o.handler.common.accordion(), a = r.defineComponent({
26
27
  tagName: d,
27
- slots: n,
28
- createComponent: l,
28
+ slots: l,
29
+ createComponent: n,
29
30
  attributes: s
30
31
  }, { eager: !1 }), u = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
31
32
  __proto__: null,
@@ -36,4 +37,4 @@ export {
36
37
  a as A,
37
38
  u as a
38
39
  };
39
- //# sourceMappingURL=index-DfPIaBDn.js.map
40
+ //# sourceMappingURL=index-BkuJDd4z.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-BkuJDd4z.js","sources":["../source/web-components/accordion/item.ts"],"sourcesContent":["import { accordion } from '@universityofmaryland/web-elements-library/composite';\nimport { Attributes, Model, Slots } from '@universityofmaryland/web-model-library';\nimport { ComponentRegistration, CreateComponentFunction, SlotConfiguration } from '../../_types';\n\nconst tagName = 'umd-element-accordion-item';\n\nconst createComponent: CreateComponentFunction = (element) =>\n accordion.item({\n text:\n Slots.deprecated.body({ element, isDefaultStyling: false }) ||\n Slots.text.default({ element, isDefaultStyling: false }),\n headline: Slots.headline.default({ element }),\n isThemeLight: Attributes.isTheme.light({\n element,\n }),\n isThemeDark: Attributes.isTheme.dark({\n element,\n }),\n isStateOpen: Attributes.isVisual.open({\n element,\n }),\n context: element,\n });\n\nconst slots: SlotConfiguration = {\n headline: {\n ...Slots.element.allowed.headline,\n required: true,\n },\n body: Slots.element.allowed.body,\n text: {\n ...Slots.element.allowed.text,\n required: true,\n },\n};\n\nconst attributes = Attributes.handler.common.accordion();\n\n/**\n * Accordion Item\n *\n * Creates an expandable/collapsible content container with smooth animations and theme variations.\n *\n * ## Custom Element\n * `<umd-element-accordion-item>`\n *\n * ## Slots\n * - `headline` - The clickable header (required, accepts: span, p)\n * - `text` - The expandable content (required, accepts: div, p)\n * - `body` - Deprecated: Use `text` slot instead\n *\n * ## Attributes\n * - `data-theme` - Color theme options:\n * - `light` - Light theme styling\n * - `dark` - Dark theme styling\n * - `data-visual-open` - Initial visual state:\n * - `true` - Opens accordion on load\n * - `false` - Closes accordion on load\n *\n * ## Observed Attributes\n * - `data-visual-open` - When changed to \"true\", opens accordion with animation; when changed to \"false\", closes with animation\n * - `resize` - When set to \"true\", re-evaluates accordion height without animation\n *\n * ## Dispatched Events\n * Both events bubble and are `composed: true` (they cross the Shadow DOM boundary),\n * and fire on the host element for every toggle — whether triggered by a header click\n * or a programmatic `data-visual-open` change. They do not fire for the initial open\n * state set on load.\n * - `accordion:open` — fired when the item opens\n * - `accordion:close` — fired when the item closes\n *\n * @fires accordion:open - When the accordion item opens (header click or `data-visual-open=\"true\"`)\n * @fires accordion:close - When the accordion item closes (header click or `data-visual-open=\"false\"`)\n *\n * @example\n * ```javascript\n * // Listening for open/close events\n * const accordion = document.querySelector('umd-element-accordion-item');\n * accordion.addEventListener('accordion:open', () => console.log('opened'));\n * accordion.addEventListener('accordion:close', () => console.log('closed'));\n * ```\n *\n * @example\n * ```html\n * <umd-element-accordion-item>\n * <p slot=\"headline\">Click to expand</p>\n * <div slot=\"text\">\n * <p>Hidden content revealed when expanded</p>\n * </div>\n * </umd-element-accordion-item>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme with default open state -->\n * <umd-element-accordion-item data-theme=\"dark\" data-visual-open=\"true\">\n * <span slot=\"headline\">Click to collapse</span>\n * <div slot=\"text\">\n * <p>Content revealed as expanded</p>\n * </div>\n * </umd-element-accordion-item>\n * ```\n *\n * @example\n * ```javascript\n * // Programmatic control\n * const accordion = document.querySelector('umd-element-accordion-item');\n * accordion.setAttribute('data-visual-open', 'true'); // Opens with animation\n * accordion.setAttribute('data-visual-open', 'false'); // Closes with animation\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nexport const AccordionItem: ComponentRegistration = Model.defineComponent({\n tagName,\n slots,\n createComponent,\n attributes,\n}, { eager: false });\n\n/** Backwards compatibility alias for grouped exports */\nexport { AccordionItem as item };\n"],"names":["tagName","createComponent","element","accordion","Slots","Attributes","slots","attributes","AccordionItem","Model"],"mappings":";;AAIA,MAAMA,IAAU,8BAEVC,IAA2C,CAACC,MAChDC,EAAU,KAAK;AAAA,EACb,MACEC,EAAM,WAAW,KAAK,EAAE,SAAAF,GAAS,kBAAkB,GAAA,CAAO,KAC1DE,EAAM,KAAK,QAAQ,EAAE,SAAAF,GAAS,kBAAkB,IAAO;AAAA,EACzD,UAAUE,EAAM,SAAS,QAAQ,EAAE,SAAAF,GAAS;AAAA,EAC5C,cAAcG,EAAW,QAAQ,MAAM;AAAA,IACrC,SAAAH;AAAA,EAAA,CACD;AAAA,EACD,aAAaG,EAAW,QAAQ,KAAK;AAAA,IACnC,SAAAH;AAAA,EAAA,CACD;AAAA,EACD,aAAaG,EAAW,SAAS,KAAK;AAAA,IACpC,SAAAH;AAAA,EAAA,CACD;AAAA,EACD,SAASA;AACX,CAAC,GAEGI,IAA2B;AAAA,EAC/B,UAAU;AAAA,IACR,GAAGF,EAAM,QAAQ,QAAQ;AAAA,IACzB,UAAU;AAAA,EAAA;AAAA,EAEZ,MAAMA,EAAM,QAAQ,QAAQ;AAAA,EAC5B,MAAM;AAAA,IACJ,GAAGA,EAAM,QAAQ,QAAQ;AAAA,IACzB,UAAU;AAAA,EAAA;AAEd,GAEMG,IAAaF,EAAW,QAAQ,OAAO,UAAA,GA8EhCG,IAAuCC,EAAM,gBAAgB;AAAA,EACxE,SAAAT;AAAA,EACA,OAAAM;AAAA,EACA,iBAAAL;AAAA,EACA,YAAAM;AACF,GAAG,EAAE,OAAO,GAAA,CAAO;;;;;"}
@@ -2,12 +2,12 @@ import { layout as s } from "@universityofmaryland/web-elements-library/composit
2
2
  import * as g from "@universityofmaryland/web-utilities-library/validation";
3
3
  import { Model as n, Attributes as t, Slots as a, Lifecycle as f } from "@universityofmaryland/web-model-library";
4
4
  import { createSlot as i } from "@universityofmaryland/web-utilities-library/elements";
5
- import { layout as h } from "@universityofmaryland/web-elements-library/atomic";
6
- const S = "umd-element-logo", b = {
5
+ import { layout as y } from "@universityofmaryland/web-elements-library/atomic";
6
+ const S = "umd-element-logo", h = {
7
7
  image: {
8
8
  required: !0
9
9
  }
10
- }, T = (e) => s.box.logo({
10
+ }, L = (e) => s.box.logo({
11
11
  image: g.getValidatedSlotImage({
12
12
  element: e,
13
13
  slotName: a.name.assets.image
@@ -17,55 +17,47 @@ const S = "umd-element-logo", b = {
17
17
  isBordered: t.isVisual.bordered({ element: e })
18
18
  }), r = n.defineComponent({
19
19
  tagName: S,
20
- slots: b,
21
- createComponent: T
22
- }, { eager: !1 }), k = "umd-layout-image-expand", L = {
20
+ slots: h,
21
+ createComponent: L
22
+ }, { eager: !1 }), N = "umd-layout-image-expand", T = {
23
23
  content: {
24
24
  required: !0
25
25
  },
26
26
  image: {
27
27
  required: !0
28
28
  }
29
- }, N = (e) => s.image.expand({
29
+ }, b = (e) => s.image.expand({
30
30
  content: i("content"),
31
31
  image: g.getValidatedSlotImage({
32
32
  element: e,
33
33
  slotName: a.name.assets.image
34
34
  })
35
35
  }), c = n.defineComponent({
36
- tagName: k,
37
- slots: L,
38
- createComponent: N
39
- }, { eager: !1 }), $ = "umd-element-modal", v = (e) => {
40
- const o = () => {
41
- e.setAttribute(
42
- t.names.layout.hidden,
43
- t.values.state.TRUE
44
- );
45
- }, y = {
36
+ tagName: N,
37
+ slots: T,
38
+ createComponent: b
39
+ }, { eager: !1 }), k = "umd-element-modal", $ = (e) => {
40
+ const o = {
46
41
  content: a.content.default({ element: e, isDefaultStyling: !1 }),
47
42
  isHidden: t.isLayout.hidden({ element: e }),
48
- context: e,
49
- callback: o
43
+ context: e
50
44
  };
51
- return h.overlay.modal(y);
52
- }, I = t.handler.common.visualShowHide({
45
+ return y.overlay.modal(o);
46
+ }, x = t.handler.common.visualShowHide({
53
47
  onShow: (e) => e.events?.show(),
54
48
  onHide: (e) => e.events?.hide()
55
- }), l = n.defineComponent({
56
- tagName: $,
57
- attributes: I,
58
- createComponent: v
59
- }, { eager: !1 }), x = "umd-element-scroll-top", A = (e) => {
49
+ }), m = n.defineComponent({
50
+ tagName: k,
51
+ attributes: x,
52
+ createComponent: $
53
+ }, { eager: !1 }), v = "umd-element-scroll-top", I = (e) => {
60
54
  const o = {
61
- isFixed: e.hasAttribute(
62
- t.names.deprecated.layout.LAYOUT_FIXED
63
- )
55
+ isFixed: t.isLayout.fixed({ element: e })
64
56
  };
65
57
  return s.scrollTop(o);
66
- }, m = n.defineComponent({
67
- tagName: x,
68
- createComponent: A,
58
+ }, l = n.defineComponent({
59
+ tagName: v,
60
+ createComponent: I,
69
61
  afterConnect: f.hooks.loadOnConnect
70
62
  }, { eager: !1 }), C = ({
71
63
  element: e,
@@ -74,7 +66,7 @@ const S = "umd-element-logo", b = {
74
66
  headline: a.headline.default({ element: e }),
75
67
  actions: a.actions.default({ element: e }),
76
68
  isThemeDark: o
77
- }), O = "umd-element-section-intro", _ = (e) => s.sectionIntro.small({
69
+ }), O = "umd-element-section-intro", P = (e) => s.sectionIntro.small({
78
70
  ...C({
79
71
  element: e,
80
72
  isThemeDark: t.isTheme.dark({ element: e })
@@ -85,15 +77,15 @@ const S = "umd-element-logo", b = {
85
77
  )
86
78
  }), d = n.defineComponent({
87
79
  tagName: O,
88
- createComponent: _
89
- }, { eager: !1 }), P = "umd-element-section-intro-wide", D = (e) => s.sectionIntro.wide(
80
+ createComponent: P
81
+ }, { eager: !1 }), _ = "umd-element-section-intro-wide", A = (e) => s.sectionIntro.wide(
90
82
  C({
91
83
  element: e,
92
84
  isThemeDark: t.isTheme.dark({ element: e })
93
85
  })
94
86
  ), u = n.defineComponent({
95
- tagName: P,
96
- createComponent: D
87
+ tagName: _,
88
+ createComponent: A
97
89
  }, { eager: !1 }), q = "umd-element-sticky-columns", w = {
98
90
  "sticky-column": {
99
91
  required: !0
@@ -101,7 +93,7 @@ const S = "umd-element-logo", b = {
101
93
  "static-column": {
102
94
  required: !0
103
95
  }
104
- }, E = t.handler.combine(
96
+ }, D = t.handler.combine(
105
97
  t.handler.observe.visuallyPosition({
106
98
  callback: (e, o) => e.events?.setPosition({ value: o })
107
99
  }),
@@ -119,20 +111,20 @@ const S = "umd-element-logo", b = {
119
111
  tagName: q,
120
112
  slots: w,
121
113
  createComponent: M,
122
- attributes: E
123
- }, { eager: !1 }), F = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
114
+ attributes: D
115
+ }, { eager: !1 }), Y = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
124
116
  __proto__: null,
125
117
  LayoutBoxLogo: r,
126
118
  LayoutImageExpand: c,
127
- LayoutModal: l,
128
- LayoutScrollTop: m,
119
+ LayoutModal: m,
120
+ LayoutScrollTop: l,
129
121
  LayoutSectionIntroSmall: d,
130
122
  LayoutSectionIntroWide: u,
131
123
  LayoutStickyColumns: p,
132
124
  boxLogo: r,
133
125
  imageExpand: c,
134
- modal: l,
135
- scrollTop: m,
126
+ modal: m,
127
+ scrollTop: l,
136
128
  sectionIntroSmall: d,
137
129
  sectionIntroWide: u,
138
130
  stickyColumns: p
@@ -140,11 +132,11 @@ const S = "umd-element-logo", b = {
140
132
  export {
141
133
  r as L,
142
134
  c as a,
143
- l as b,
144
- m as c,
135
+ m as b,
136
+ l as c,
145
137
  d,
146
138
  u as e,
147
139
  p as f,
148
- F as l
140
+ Y as l
149
141
  };
150
- //# sourceMappingURL=index-CjOuk67A.js.map
142
+ //# sourceMappingURL=index-C0H96DKS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-C0H96DKS.js","sources":["../source/web-components/layout/box-logo.ts","../source/web-components/layout/image-expand.ts","../source/web-components/layout/modal.ts","../source/web-components/layout/scroll-top.ts","../source/web-components/layout/section-intro/common.ts","../source/web-components/layout/section-intro/small.ts","../source/web-components/layout/section-intro/wide.ts","../source/web-components/layout/sticky-columns.ts"],"sourcesContent":["import { layout } from '@universityofmaryland/web-elements-library/composite';\nimport * as validation from '@universityofmaryland/web-utilities-library/validation';\nimport { Attributes, Model, Slots } from '@universityofmaryland/web-model-library';\nimport {\n CreateComponentFunction,\n ComponentRegistration,\n SlotConfiguration,\n} from '../../_types';\n\nconst tagName = 'umd-element-logo';\n\nconst slots: SlotConfiguration = {\n image: {\n required: true,\n },\n};\n\nconst createComponent: CreateComponentFunction = (element) =>\n layout.box.logo({\n image: validation.getValidatedSlotImage({\n element,\n slotName: Slots.name.assets.image,\n }) as HTMLImageElement,\n text: Slots.text.default({ element }),\n isThemeDark: Attributes.isTheme.dark({ element }),\n isBordered: Attributes.isVisual.bordered({ element }),\n });\n\n/**\n * Box Logo\n *\n * A layout component that displays a logo image with optional text content in a boxed layout.\n * Commonly used for brand identity sections, partner logos, or featured organization displays.\n *\n * ## Custom Element\n * `<umd-element-logo>`\n *\n * ## Slots\n * - `image` - Logo image (required, accepts: img)\n * - Default slot - Optional text content to display alongside the logo\n *\n * ## Attributes\n * - `data-theme` - Theme options:\n * - `dark` - Dark background with light text\n * - `data-visual` - Visual styling options:\n * - `bordered` - Adds a border around the component\n *\n * @example\n * ```html\n * <!-- Basic logo display -->\n * <umd-element-logo>\n * <img slot=\"image\" src=\"logo.png\" alt=\"Company Logo\" />\n * </umd-element-logo>\n * ```\n *\n * @example\n * ```html\n * <!-- Logo with text and dark theme -->\n * <umd-element-logo data-theme=\"dark\">\n * <img slot=\"image\" src=\"partner-logo.png\" alt=\"Partner Logo\" />\n * <p>Official University Partner</p>\n * </umd-element-logo>\n * ```\n *\n * @example\n * ```html\n * <!-- Bordered logo box -->\n * <umd-element-logo data-visual=\"bordered\">\n * <img slot=\"image\" src=\"sponsor.png\" alt=\"Sponsor Logo\" />\n * <span>Gold Sponsor</span>\n * </umd-element-logo>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nexport const LayoutBoxLogo: ComponentRegistration = Model.defineComponent({\n tagName,\n slots,\n createComponent,\n}, { eager: false });\n\n/** Backwards compatibility alias for grouped exports */\nexport { LayoutBoxLogo as boxLogo };\n","import { layout } from '@universityofmaryland/web-elements-library/composite';\nimport { createSlot } from '@universityofmaryland/web-utilities-library/elements';\nimport * as validation from '@universityofmaryland/web-utilities-library/validation';\nimport { Model, Slots } from '@universityofmaryland/web-model-library';\nimport {\n CreateComponentFunction,\n ComponentRegistration,\n SlotConfiguration,\n} from '../../_types';\n\nconst tagName = 'umd-layout-image-expand';\n\nconst slots: SlotConfiguration = {\n content: {\n required: true,\n },\n image: {\n required: true,\n },\n};\n\nconst createComponent: CreateComponentFunction = (element) =>\n layout.image.expand({\n content: createSlot('content'),\n image: validation.getValidatedSlotImage({\n element,\n slotName: Slots.name.assets.image,\n }) as HTMLImageElement,\n });\n\n/**\n * Image Expand Layout\n *\n * A layout component that presents content alongside an expandable image. The image can extend\n * beyond the normal content boundaries to create visual impact. Ideal for showcasing featured\n * content, hero sections, or highlighting important information with striking visuals.\n *\n * ## Custom Element\n * `<umd-layout-image-expand>`\n *\n * ## Slots\n * - `content` - Main content area (required, accepts: any elements)\n * - `image` - Featured image that can expand (required, accepts: img)\n *\n * @example\n * ```html\n * <!-- Basic image expand layout -->\n * <umd-layout-image-expand>\n * <div slot=\"content\">\n * <h2>Featured Research</h2>\n * <p>Breakthrough discoveries in quantum computing...</p>\n * </div>\n * <img slot=\"image\" src=\"research-lab.jpg\" alt=\"Quantum Lab\" />\n * </umd-layout-image-expand>\n * ```\n *\n * @example\n * ```html\n * <!-- With rich content -->\n * <umd-layout-image-expand>\n * <article slot=\"content\">\n * <h1>Campus Innovation Hub</h1>\n * <p>The new Innovation Hub brings together students, faculty, and industry partners...</p>\n * <a href=\"/innovation\">Learn More</a>\n * </article>\n * <img slot=\"image\" src=\"innovation-hub.jpg\" alt=\"Innovation Hub Interior\" />\n * </umd-layout-image-expand>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nexport const LayoutImageExpand: ComponentRegistration = Model.defineComponent({\n tagName,\n slots,\n createComponent,\n}, { eager: false });\n\n/** Backwards compatibility alias for grouped exports */\nexport { LayoutImageExpand as imageExpand };\n","import { layout } from '@universityofmaryland/web-elements-library/atomic';\nimport { Attributes, Model, Slots } from '@universityofmaryland/web-model-library';\nimport { CreateComponentFunction, ComponentRegistration, LayoutProps } from '../../_types';\n\ninterface ModalProps extends LayoutProps {\n content: HTMLElement | null;\n context: HTMLElement;\n}\n\nconst tagName = 'umd-element-modal';\n\nconst createComponent: CreateComponentFunction = (element) => {\n const props: ModalProps = {\n content: Slots.content.default({ element, isDefaultStyling: false }),\n isHidden: Attributes.isLayout.hidden({ element }),\n context: element,\n };\n\n return layout.overlay.modal(props);\n};\n\nconst attributes = Attributes.handler.common.visualShowHide({\n onShow: (element) => element.events?.show(),\n onHide: (element) => element.events?.hide(),\n});\n\n/**\n * Modal\n *\n * A modal overlay component that displays content in a focused dialog window.\n * Includes backdrop, close functionality, and proper focus management for accessibility.\n * The modal can be controlled programmatically through observed attributes.\n *\n * ## Custom Element\n * `<umd-element-modal>`\n *\n * ## Slots\n * - Default slot - Content to display inside the modal\n *\n * ## Attributes\n * - `data-layout-hidden` - Initial visibility state:\n * - `true` - Modal starts hidden\n * - Absence implies visible\n *\n * ## Observed Attributes\n * - `data-layout-hidden` - Controls visibility:\n * - `false` (when previously `true`) — shows the modal\n * - `true` (when previously `false`) — hides the modal\n *\n * ## Dispatched Events\n * Both events bubble and are `composed: true` (they cross the Shadow DOM boundary).\n * - `modal:show` — dispatched on the host element when the modal opens\n * - `modal:hide` — dispatched on the host element when the modal closes\n *\n * @fires modal:show - When the modal opens\n * @fires modal:hide - When the modal closes\n *\n * @example\n * ```html\n * <!-- Listening for dispatched events -->\n * <umd-element-modal id=\"my-modal\" data-layout-hidden=\"true\">\n * <div slot=\"content\">...</div>\n * </umd-element-modal>\n *\n * <script>\n * const modal = document.getElementById('my-modal');\n * modal.addEventListener('modal:show', () => console.log('modal opened'));\n * modal.addEventListener('modal:hide', () => console.log('modal closed'));\n * </script>\n * ```\n *\n * @example\n * ```html\n * <!-- Basic modal -->\n * <umd-element-modal data-layout-hidden=\"true\">\n * <h2>Welcome</h2>\n * <p>This is modal content.</p>\n * <button>Close</button>\n * </umd-element-modal>\n * ```\n *\n * @example\n * ```html\n * <!-- Programmatic control -->\n * <button id=\"open-modal\">Open Modal</button>\n * <umd-element-modal id=\"my-modal\" data-layout-hidden=\"true\">\n * <div class=\"modal-content\">\n * <h2>Important Information</h2>\n * <p>Please read this carefully...</p>\n * <button id=\"close-modal\">I Understand</button>\n * </div>\n * </umd-element-modal>\n *\n * <script>\n * const modal = document.getElementById('my-modal');\n * document.getElementById('open-modal').addEventListener('click', () => {\n * modal.setAttribute('data-visual-open', 'true');\n * });\n * document.getElementById('close-modal').addEventListener('click', () => {\n * modal.setAttribute('data-visual-closed', 'true');\n * });\n * </script>\n * ```\n *\n * @example\n * ```html\n * <!-- Form modal -->\n * <umd-element-modal data-layout-hidden=\"true\">\n * <form>\n * <h2>Contact Us</h2>\n * <label>\n * Name:\n * <input type=\"text\" name=\"name\" required>\n * </label>\n * <label>\n * Email:\n * <input type=\"email\" name=\"email\" required>\n * </label>\n * <textarea name=\"message\" placeholder=\"Your message\"></textarea>\n * <button type=\"submit\">Send</button>\n * </form>\n * </umd-element-modal>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nexport const LayoutModal: ComponentRegistration = Model.defineComponent({\n tagName,\n attributes,\n createComponent,\n}, { eager: false });\n\n/** Backwards compatibility alias for grouped exports */\nexport { LayoutModal as modal };\n","import { layout } from '@universityofmaryland/web-elements-library/composite';\nimport { Attributes, Lifecycle, Model } from '@universityofmaryland/web-model-library';\nimport { CreateComponentFunction, ComponentRegistration, LayoutProps } from '../../_types';\n\ninterface ScrollTopProps extends Pick<LayoutProps, 'isFixed'> {}\n\nconst tagName = 'umd-element-scroll-top';\n\nconst createComponent: CreateComponentFunction = (element) => {\n const props: ScrollTopProps = {\n isFixed: Attributes.isLayout.fixed({ element }),\n };\n\n return layout.scrollTop(props);\n};\n\n/**\n * Scroll to Top\n *\n * A utility component that provides a smooth scroll-to-top functionality.\n * Displays a button that appears after scrolling down and returns users to the top of the page.\n * Can be positioned fixed or absolute within its container.\n *\n * ## Custom Element\n * `<umd-element-scroll-top>`\n *\n * ## Attributes\n * - `data-layout-fixed` - Positioning mode:\n * - When present - Fixed positioning relative to viewport\n * - When absent - Absolute positioning within parent container\n *\n * @example\n * ```html\n * <!-- Basic scroll to top button -->\n * <umd-element-scroll-top></umd-element-scroll-top>\n * ```\n *\n * @example\n * ```html\n * <!-- Fixed position scroll to top -->\n * <umd-element-scroll-top data-layout-fixed></umd-element-scroll-top>\n * ```\n *\n * @example\n * ```html\n * <!-- Within a specific container -->\n * <div class=\"content-wrapper\" style=\"position: relative;\">\n * <article>\n * <!-- Long content here -->\n * </article>\n * <umd-element-scroll-top></umd-element-scroll-top>\n * </div>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nexport const LayoutScrollTop: ComponentRegistration = Model.defineComponent({\n tagName,\n createComponent,\n afterConnect: Lifecycle.hooks.loadOnConnect,\n}, { eager: false });\n\n/** Backwards compatibility alias for grouped exports */\nexport { LayoutScrollTop as scrollTop };\n","import { Slots } from '@universityofmaryland/web-model-library';\n\nexport const CommonIntroData = ({\n element,\n isThemeDark,\n}: {\n element: HTMLElement;\n isThemeDark?: boolean;\n}) => ({\n headline: Slots.headline.default({ element }),\n actions: Slots.actions.default({ element }),\n isThemeDark,\n});\n","import { layout } from '@universityofmaryland/web-elements-library/composite';\nimport {\n Attributes,\n Lifecycle,\n Model,\n Slots,\n} from '@universityofmaryland/web-model-library';\nimport { CommonIntroData } from './common';\nimport {\n CreateComponentFunction,\n ComponentRegistration,\n} from '../../../_types';\n\nconst tagName = 'umd-element-section-intro';\n\nconst createComponent: CreateComponentFunction = (element) =>\n layout.sectionIntro.small({\n ...CommonIntroData({\n element,\n isThemeDark: Attributes.isTheme.dark({ element }),\n }),\n text: Slots.text.default({ element }),\n hasSeparator: element.hasAttribute(\n Attributes.names.deprecated.option.OPTIONAL_HAS_SEPARATOR,\n ),\n });\n\n/**\n * Section Introduction (Small)\n *\n * A compact section introduction component that provides a headline, descriptive text,\n * and optional action buttons. Designed for introducing content sections with minimal\n * space usage.\n *\n * ## Custom Element\n * `<umd-element-section-intro>`\n *\n * ## Slots\n * - `headline` - Section headline/title\n * - `actions` - Call-to-action buttons or links\n * - Default slot - Descriptive text content\n *\n * ## Attributes\n * - `data-theme` - Theme options:\n * - `dark` - Dark background with light text\n * - `data-has-separator` - Adds visual separator line\n *\n * @example\n * ```html\n * <!-- Basic section intro -->\n * <umd-element-section-intro>\n * <h2 slot=\"headline\">Our Mission</h2>\n * <p>We are committed to excellence in education and research.</p>\n * </umd-element-section-intro>\n * ```\n *\n * @example\n * ```html\n * <!-- With actions and separator -->\n * <umd-element-section-intro data-has-separator>\n * <h2 slot=\"headline\">Get Started</h2>\n * <p>Join our community of innovators and leaders.</p>\n * <div slot=\"actions\">\n * <a href=\"/apply\">Apply Now</a>\n * <a href=\"/info\">Learn More</a>\n * </div>\n * </umd-element-section-intro>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nexport const LayoutSectionIntroSmall: ComponentRegistration = Model.defineComponent({\n tagName,\n createComponent,\n}, { eager: false });\n\n/** Backwards compatibility alias for grouped exports */\nexport { LayoutSectionIntroSmall as sectionIntroSmall };\n","import { layout } from '@universityofmaryland/web-elements-library/composite';\nimport { Attributes, Model } from '@universityofmaryland/web-model-library';\nimport { CommonIntroData } from './common';\nimport {\n CreateComponentFunction,\n ComponentRegistration,\n} from '../../../_types';\n\nconst tagName = 'umd-element-section-intro-wide';\n\nconst createComponent: CreateComponentFunction = (element) =>\n layout.sectionIntro.wide(\n CommonIntroData({\n element,\n isThemeDark: Attributes.isTheme.dark({ element }),\n }),\n );\n\n/**\n * Section Introduction (Wide)\n *\n * A full-width section introduction component that spans the entire container width.\n * Provides a bold headline and optional action buttons for high-impact section openings.\n * Ideal for major content divisions or landing page sections.\n *\n * ## Custom Element\n * `<umd-element-section-intro-wide>`\n *\n * ## Slots\n * - `headline` - Section headline/title\n * - `actions` - Call-to-action buttons or links\n *\n * ## Attributes\n * - `data-theme` - Theme options:\n * - `dark` - Dark background with light text\n *\n * @example\n * ```html\n * <!-- Basic wide section intro -->\n * <umd-element-section-intro-wide>\n * <h1 slot=\"headline\">Welcome to the University of Maryland</h1>\n * </umd-element-section-intro-wide>\n * ```\n *\n * @example\n * ```html\n * <!-- With call-to-action -->\n * <umd-element-section-intro-wide>\n * <h2 slot=\"headline\">Discover Your Path</h2>\n * <div slot=\"actions\">\n * <a href=\"/programs\" class=\"button\">Explore Programs</a>\n * <a href=\"/visit\" class=\"button-outline\">Plan a Visit</a>\n * </div>\n * </umd-element-section-intro-wide>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme variant -->\n * <umd-element-section-intro-wide data-theme=\"dark\">\n * <h1 slot=\"headline\">Innovation Starts Here</h1>\n * <a slot=\"actions\" href=\"/innovation\">Join the Movement</a>\n * </umd-element-section-intro-wide>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nexport const LayoutSectionIntroWide: ComponentRegistration = Model.defineComponent({\n tagName,\n createComponent,\n}, { eager: false });\n\n/** Backwards compatibility alias for grouped exports */\nexport { LayoutSectionIntroWide as sectionIntroWide };\n","import { layout } from '@universityofmaryland/web-elements-library/composite';\nimport { createSlot } from '@universityofmaryland/web-utilities-library/elements';\nimport { Attributes, Model, Slots } from '@universityofmaryland/web-model-library';\nimport {\n CreateComponentFunction,\n ComponentRegistration,\n SlotConfiguration,\n} from '../../_types';\n\nconst tagName = 'umd-element-sticky-columns';\n\nconst slots: SlotConfiguration = {\n [`sticky-column`]: {\n required: true,\n },\n [`static-column`]: {\n required: true,\n },\n};\n\nconst attributes = Attributes.handler.combine(\n Attributes.handler.observe.visuallyPosition({\n callback: (element, topPosition) =>\n element.events?.setPosition({ value: topPosition }),\n }),\n // Deprecated\n Attributes.handler.observe.visuallyPosition({\n name: Attributes.names.deprecated.layout.LAYOUT_STICKY_TOP,\n callback: (element, topPosition) =>\n element.events?.setPosition({ value: topPosition }),\n }),\n);\n\nconst createComponent: CreateComponentFunction = (element) =>\n layout.stickyColumns({\n stickyColumn: createSlot(Slots.name.STICKY_COLUMN),\n staticColumn: createSlot(Slots.name.STATIC_COLUMN),\n isStickyLast: !Attributes.isVisual.stickyFirst({ element }),\n topPosition: Attributes.getValue.topPosition({ element }),\n });\n\n/**\n * Sticky Columns\n *\n * A two-column layout component where one column remains sticky during scroll while\n * the other scrolls normally. Useful for keeping navigation, table of contents, or\n * supplementary information visible while scrolling through main content.\n *\n * ## Custom Element\n * `<umd-element-sticky-columns>`\n *\n * ## Slots\n * - `sticky-column` - Content that remains fixed during scroll (required)\n * - `static-column` - Content that scrolls normally (required)\n *\n * ## Attributes\n * - `data-visual` - Column order options:\n * - `sticky-first` - Sticky column appears first (left on desktop)\n *\n * ## Observed Attributes\n * - `data-visual-position` - Sets the top position offset for the sticky column (in pixels)\n *\n * @example\n * ```html\n * <!-- Basic sticky columns with navigation -->\n * <umd-element-sticky-columns>\n * <nav slot=\"sticky-column\">\n * <ul>\n * <li><a href=\"#section1\">Section 1</a></li>\n * <li><a href=\"#section2\">Section 2</a></li>\n * <li><a href=\"#section3\">Section 3</a></li>\n * </ul>\n * </nav>\n * <article slot=\"static-column\">\n * <section id=\"section1\">...</section>\n * <section id=\"section2\">...</section>\n * <section id=\"section3\">...</section>\n * </article>\n * </umd-element-sticky-columns>\n * ```\n *\n * @example\n * ```html\n * <!-- Sticky column first with custom offset -->\n * <umd-element-sticky-columns data-visual=\"sticky-first\" data-visual-position=\"100\">\n * <aside slot=\"sticky-column\">\n * <h3>Quick Facts</h3>\n * <ul>\n * <li>Founded: 1856</li>\n * <li>Students: 40,000+</li>\n * <li>Location: College Park, MD</li>\n * </ul>\n * </aside>\n * <main slot=\"static-column\">\n * <h1>About the University</h1>\n * <p>Long content about the university...</p>\n * </main>\n * </umd-element-sticky-columns>\n * ```\n *\n * @example\n * ```html\n * <!-- Dynamic sticky position adjustment -->\n * <umd-element-sticky-columns id=\"sticky-layout\">\n * <div slot=\"sticky-column\">Sticky content</div>\n * <div slot=\"static-column\">Scrollable content</div>\n * </umd-element-sticky-columns>\n *\n * <script>\n * // Adjust sticky position based on header height\n * const stickyLayout = document.getElementById('sticky-layout');\n * const headerHeight = document.querySelector('header').offsetHeight;\n * stickyLayout.setAttribute('data-visual-position', headerHeight + 20);\n * </script>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nexport const LayoutStickyColumns: ComponentRegistration = Model.defineComponent({\n tagName,\n slots,\n createComponent,\n attributes,\n}, { eager: false });\n\n/** Backwards compatibility alias for grouped exports */\nexport { LayoutStickyColumns as stickyColumns };\n"],"names":["tagName","slots","createComponent","element","layout","validation","Slots","Attributes","LayoutBoxLogo","Model","createSlot","LayoutImageExpand","props","attributes","LayoutModal","LayoutScrollTop","Lifecycle","CommonIntroData","isThemeDark","LayoutSectionIntroSmall","LayoutSectionIntroWide","topPosition","LayoutStickyColumns"],"mappings":"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"}
@@ -1,51 +1,51 @@
1
1
  import { carousel as c } from "@universityofmaryland/web-elements-library/composite";
2
- import { createSlot as I } from "@universityofmaryland/web-utilities-library/elements";
3
- import { Attributes as n, Model as u, Lifecycle as g, Slots as o } from "@universityofmaryland/web-model-library";
2
+ import { createSlot as z } from "@universityofmaryland/web-utilities-library/elements";
3
+ import { Attributes as a, Model as u, Lifecycle as f, Slots as o } from "@universityofmaryland/web-model-library";
4
4
  import { imageHasAlt as p } from "@universityofmaryland/web-utilities-library/accessibility";
5
5
  const B = "umd-element-carousel", E = {
6
6
  blocks: {
7
7
  required: !0
8
8
  }
9
- }, D = n.handler.common.resize(
9
+ }, D = a.handler.common.resize(
10
10
  (e) => e.events?.resize()
11
11
  ), M = (e) => {
12
- const l = e.shadowRoot, a = n.isTheme.dark({
12
+ const l = e.shadowRoot, n = a.isTheme.dark({
13
13
  element: e
14
- }), s = e.getAttribute("left-button"), d = e.getAttribute("right-button"), i = e.getAttribute("mobile-hint"), r = e.getAttribute("hint"), t = e.getAttribute("tablet-size"), m = e.getAttribute("desktop-size"), f = e.getAttribute("tablet-count"), b = e.getAttribute("desktop-count"), h = e.getAttribute("max-count"), T = e.getAttribute("grid-gap-pixels"), C = e.querySelector(
14
+ }), s = e.getAttribute("left-button"), d = e.getAttribute("right-button"), i = e.getAttribute("mobile-hint"), r = e.getAttribute("hint"), t = e.getAttribute("tablet-size"), m = e.getAttribute("desktop-size"), g = e.getAttribute("tablet-count"), b = e.getAttribute("desktop-count"), C = e.getAttribute("max-count"), x = e.getAttribute("grid-gap-pixels"), h = e.querySelector(
15
15
  `[slot="${o.name.BLOCKS}"]`
16
- ), x = Array.from(
17
- C.querySelectorAll(":scope > *")
16
+ ), I = Array.from(
17
+ h.querySelectorAll(":scope > *")
18
18
  );
19
19
  let S = !0, A = !0, $ = !0, k = !0;
20
20
  s === "false" && (S = !1), d === "false" && (A = !1), i === "false" && ($ = !1), r === "false" && (k = !1), (() => {
21
- const O = I(o.name.BLOCKS);
21
+ const O = z(o.name.BLOCKS);
22
22
  l.appendChild(O);
23
23
  })();
24
24
  const R = l.querySelector(
25
25
  `[name="${o.name.BLOCKS}"]`
26
26
  );
27
27
  return c.macro({
28
- slide: C,
28
+ slide: h,
29
29
  shadowRef: R,
30
- blocks: x,
31
- isThemeDark: a,
30
+ blocks: I,
31
+ isThemeDark: n,
32
32
  hasLeftButton: S,
33
33
  hasRightButton: A,
34
34
  mobileHint: $,
35
35
  hint: k,
36
36
  tabletSize: t ? parseInt(t) : void 0,
37
37
  desktopSize: m ? parseInt(m) : void 0,
38
- tabletCount: f ? parseInt(f) : void 0,
38
+ tabletCount: g ? parseInt(g) : void 0,
39
39
  desktopCount: b ? parseInt(b) : void 0,
40
- maxCount: h ? parseInt(h) : void 0,
41
- gridGap: T
40
+ maxCount: C ? parseInt(C) : void 0,
41
+ gridGap: x
42
42
  });
43
43
  }, y = u.defineComponent({
44
44
  tagName: B,
45
45
  slots: E,
46
46
  createComponent: M,
47
47
  attributes: [D],
48
- afterConnect: g.hooks.loadOnConnect
48
+ afterConnect: f.hooks.loadOnConnect
49
49
  }, { eager: !1 }), L = "umd-element-carousel-cards", H = {
50
50
  cards: {
51
51
  required: !0
@@ -53,23 +53,23 @@ const B = "umd-element-carousel", E = {
53
53
  headline: o.element.allowed.headline,
54
54
  text: o.element.allowed.text,
55
55
  actions: o.element.allowed.actions
56
- }, G = n.handler.common.resize(
56
+ }, G = a.handler.common.resize(
57
57
  (e) => e.events?.resize()
58
58
  ), F = (e) => {
59
- const l = e.shadowRoot, a = e.querySelector(
59
+ const l = e.shadowRoot, n = e.querySelector(
60
60
  `[slot="${o.name.CARDS}"]`
61
61
  ), s = Array.from(
62
- a.querySelectorAll(":scope > *")
62
+ n.querySelectorAll(":scope > *")
63
63
  );
64
64
  (() => {
65
- const r = I(o.name.CARDS);
65
+ const r = z(o.name.CARDS);
66
66
  l.appendChild(r);
67
67
  })();
68
68
  const i = l.querySelector(
69
69
  `[name="${o.name.CARDS}"]`
70
70
  );
71
71
  return c.cards({
72
- slide: a,
72
+ slide: n,
73
73
  shadowRef: i,
74
74
  cards: s,
75
75
  headline: o.headline.default({ element: e }),
@@ -81,7 +81,7 @@ const B = "umd-element-carousel", E = {
81
81
  slots: H,
82
82
  createComponent: F,
83
83
  attributes: [G],
84
- afterConnect: g.hooks.loadOnConnect
84
+ afterConnect: f.hooks.loadOnConnect
85
85
  }, { eager: !1 }), K = "umd-element-carousel-image", _ = {
86
86
  images: {
87
87
  required: !0,
@@ -93,16 +93,16 @@ const B = "umd-element-carousel", E = {
93
93
  texts: {
94
94
  allowedElements: ["div"]
95
95
  }
96
- }, j = n.handler.common.resize(
96
+ }, j = a.handler.common.resize(
97
97
  (e) => e.events?.SetEventReize()
98
- ), P = (e) => {
98
+ ), V = (e) => {
99
99
  const l = Array.from(
100
100
  e.querySelectorAll(`[slot="${o.name.IMAGES}"] > *`)
101
- ), a = Array.from(
101
+ ), n = Array.from(
102
102
  e.querySelectorAll(`[slot="${o.name.HEADLINES}"] > *`)
103
103
  ), s = Array.from(
104
104
  e.querySelectorAll(`[slot="${o.name.TEXTS}"] > *`)
105
- ), d = a.map(
105
+ ), d = n.map(
106
106
  (t) => t.cloneNode(!0)
107
107
  ), i = s.map(
108
108
  (t) => t.cloneNode(!0)
@@ -111,92 +111,90 @@ const B = "umd-element-carousel", E = {
111
111
  images: r,
112
112
  headlines: d,
113
113
  texts: i,
114
- isThemeDark: n.isTheme.dark({ element: e }),
115
- isFullScreenOption: n.includesFeature.fullScreenOption({
116
- element: e
117
- })
114
+ isThemeDark: a.isTheme.dark({ element: e }),
115
+ isFullScreenOption: a.includesFeature.fullScreenOption({ element: e }),
116
+ isToggleCaption: a.isVisual.textToggle({ element: e })
118
117
  });
119
118
  }, w = u.defineComponent({
120
119
  tagName: K,
121
120
  slots: _,
122
- createComponent: P,
121
+ createComponent: V,
123
122
  attributes: [j]
124
- }, { eager: !1 }), W = "umd-element-carousel-multiple-image", X = {
123
+ }, { eager: !1 }), P = "umd-element-carousel-multiple-image", W = {
125
124
  images: {
126
125
  required: !0,
127
126
  allowedElements: ["div", "img"]
128
127
  }
129
- }, J = n.handler.common.resize(
128
+ }, X = a.handler.common.resize(
130
129
  (e) => e.events?.SetEventReize()
131
- ), Q = (e) => {
132
- const a = Array.from(
130
+ ), J = (e) => {
131
+ const n = Array.from(
133
132
  e.querySelectorAll(`[slot="${o.name.IMAGES}"] > *`)
134
133
  ).map((s) => s.nodeName === "IMG" && p(s) ? s.cloneNode(!0) : null).filter((s) => s !== null);
135
134
  return c.images({
136
- images: a,
137
- isThemeDark: n.isTheme.dark({ element: e }),
138
- isFullScreenOption: n.includesFeature.fullScreenOption({
139
- element: e
140
- })
135
+ images: n,
136
+ isThemeDark: a.isTheme.dark({ element: e }),
137
+ isFullScreenOption: a.includesFeature.fullScreenOption({ element: e }),
138
+ isToggleCaption: a.isVisual.textToggle({ element: e })
141
139
  });
142
140
  }, N = u.defineComponent({
143
- tagName: W,
144
- slots: X,
145
- createComponent: Q,
146
- attributes: [J]
147
- }, { eager: !1 }), U = "umd-element-carousel-thumbnail", V = {
141
+ tagName: P,
142
+ slots: W,
143
+ createComponent: J,
144
+ attributes: [X]
145
+ }, { eager: !1 }), Q = "umd-element-carousel-thumbnail", U = {
148
146
  blocks: {
149
147
  required: !0
150
148
  }
151
- }, Y = n.handler.common.resize(
149
+ }, Y = a.handler.common.resize(
152
150
  (e) => e.events?.resize()
153
151
  ), Z = (e) => {
154
- const a = Array.from(
152
+ const n = Array.from(
155
153
  e.querySelectorAll(`[slot="${o.name.BLOCKS}"] > *`)
156
154
  ).map(
157
155
  (s) => s.cloneNode(!0)
158
156
  );
159
157
  return c.thumbnail({
160
- blocks: a,
161
- isThemeDark: n.isTheme.dark({ element: e })
158
+ blocks: n,
159
+ isThemeDark: a.isTheme.dark({ element: e })
162
160
  });
163
161
  }, q = u.defineComponent({
164
- tagName: U,
165
- slots: V,
162
+ tagName: Q,
163
+ slots: U,
166
164
  createComponent: Z,
167
165
  attributes: [Y],
168
- afterConnect: g.hooks.loadOnConnect
166
+ afterConnect: f.hooks.loadOnConnect
169
167
  }, { eager: !1 }), ee = "umd-element-carousel-image-wide", te = {
170
168
  slides: {
171
169
  required: !0,
172
170
  allowedElements: ["figure", "div"]
173
171
  }
174
- }, oe = n.handler.common.resize(
172
+ }, oe = a.handler.common.resize(
175
173
  (e) => e.events?.resize()
176
174
  ), se = (e) => {
177
- const l = e.getAttribute("title"), a = e.getAttribute("animation-time"), s = e.getAttribute("mobile-breakpoint"), i = Array.from(
175
+ const l = e.getAttribute("title"), n = e.getAttribute("animation-time"), s = e.getAttribute("mobile-breakpoint"), i = Array.from(
178
176
  e.querySelectorAll('[slot="slides"] > *')
179
177
  ).map((r) => {
180
- const t = r.querySelector("img"), m = r.querySelector("[data-headline]"), f = r.querySelector("[data-text]");
178
+ const t = r.querySelector("img"), m = r.querySelector("[data-headline]"), g = r.querySelector("[data-text]");
181
179
  return t && !p(t) ? (console.warn("Carousel slide image missing alt text:", t), null) : {
182
180
  image: t ? t.cloneNode(!0) : null,
183
181
  headline: m ? m.cloneNode(!0) : void 0,
184
- text: f ? f.cloneNode(!0) : void 0
182
+ text: g ? g.cloneNode(!0) : void 0
185
183
  };
186
184
  }).filter((r) => r && r.image);
187
185
  return c.wide({
188
186
  slides: i,
189
187
  title: l || void 0,
190
- isThemeDark: n.isTheme.dark({ element: e }),
191
- animationTime: a ? parseInt(a) : void 0,
188
+ isThemeDark: a.isTheme.dark({ element: e }),
189
+ animationTime: n ? parseInt(n) : void 0,
192
190
  mobileBreakpoint: s ? parseInt(s) : void 0
193
191
  });
194
- }, z = u.defineComponent({
192
+ }, T = u.defineComponent({
195
193
  tagName: ee,
196
194
  slots: te,
197
195
  createComponent: se,
198
196
  attributes: [oe],
199
- afterConnect: g.hooks.loadOnConnect
197
+ afterConnect: f.hooks.loadOnConnect
200
198
  }, { eager: !1 }), ce = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
201
199
  __proto__: null,
202
200
  CarouselBase: y,
@@ -204,13 +202,13 @@ const B = "umd-element-carousel", E = {
204
202
  CarouselImageMultiple: N,
205
203
  CarouselImageSingle: w,
206
204
  CarouselThumbnail: q,
207
- CarouselWide: z,
205
+ CarouselWide: T,
208
206
  base: y,
209
207
  cards: v,
210
208
  imageMultiple: N,
211
209
  imageSingle: w,
212
210
  thumbnail: q,
213
- wide: z
211
+ wide: T
214
212
  }, Symbol.toStringTag, { value: "Module" }));
215
213
  export {
216
214
  y as C,
@@ -218,7 +216,7 @@ export {
218
216
  N as b,
219
217
  w as c,
220
218
  q as d,
221
- z as e,
219
+ T as e,
222
220
  ce as f
223
221
  };
224
- //# sourceMappingURL=index-C8YoHmAp.js.map
222
+ //# sourceMappingURL=index-Dj28K-Au.js.map