@universityofmaryland/web-components-library 1.14.10 → 1.14.11

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 (81) hide show
  1. package/README.md +1 -1
  2. package/dist/{_event-BzvNLqqf.js → _event-zkKU3M5w.js} +3 -3
  3. package/dist/{_event-BzvNLqqf.js.map → _event-zkKU3M5w.js.map} +1 -1
  4. package/dist/api/pathway/image.d.ts.map +1 -1
  5. package/dist/cdn.js +53 -53
  6. package/dist/cdn.js.map +1 -1
  7. package/dist/{chevron-scroll-OMtKW5S9.js → chevron-scroll-BZtdKUuJ.js} +3 -3
  8. package/dist/{chevron-scroll-OMtKW5S9.js.map → chevron-scroll-BZtdKUuJ.js.map} +1 -1
  9. package/dist/components/accordion.js +1 -1
  10. package/dist/components/actions.js +1 -1
  11. package/dist/components/alert.js +1 -1
  12. package/dist/components/brand.js +1 -1
  13. package/dist/components/card.js +1 -1
  14. package/dist/components/carousel.js +1 -1
  15. package/dist/components/feed.js +1 -1
  16. package/dist/components/footer.js +1 -1
  17. package/dist/components/hero.js +1 -1
  18. package/dist/components/layout.js +1 -1
  19. package/dist/components/media.js +1 -1
  20. package/dist/components/navigation.js +1 -1
  21. package/dist/components/pathway.js +1 -1
  22. package/dist/components/person.js +1 -1
  23. package/dist/components/quote.js +1 -1
  24. package/dist/components/slider.js +1 -1
  25. package/dist/components/social.js +1 -1
  26. package/dist/components/stat.js +1 -1
  27. package/dist/components/tab.js +1 -1
  28. package/dist/components/text.js +1 -1
  29. package/dist/content.js +1 -1
  30. package/dist/{display-wE0il7rr.js → display-BAWPSZWk.js} +3 -3
  31. package/dist/{display-wE0il7rr.js.map → display-BAWPSZWk.js.map} +1 -1
  32. package/dist/{display-DECqmVEZ.js → display-DvhD-oDO.js} +3 -3
  33. package/dist/{display-DECqmVEZ.js.map → display-DvhD-oDO.js.map} +1 -1
  34. package/dist/{display-D2GEPqCW.js → display-HZowWri1.js} +3 -3
  35. package/dist/{display-D2GEPqCW.js.map → display-HZowWri1.js.map} +1 -1
  36. package/dist/{display-BCa3axfI.js → display-yOrx8Qu7.js} +3 -3
  37. package/dist/{display-BCa3axfI.js.map → display-yOrx8Qu7.js.map} +1 -1
  38. package/dist/{event-lockup-DQgwp3gO.js → event-lockup-DJPiglgR.js} +3 -3
  39. package/dist/{event-lockup-DQgwp3gO.js.map → event-lockup-DJPiglgR.js.map} +1 -1
  40. package/dist/{feed-BSntlEBA.js → feed-D5nqCXw5.js} +3 -3
  41. package/dist/{feed-BSntlEBA.js.map → feed-D5nqCXw5.js.map} +1 -1
  42. package/dist/feed.js +1 -1
  43. package/dist/{gif-DFmy3K6d.js → gif-DcCErswK.js} +3 -3
  44. package/dist/{gif-DFmy3K6d.js.map → gif-DcCErswK.js.map} +1 -1
  45. package/dist/{hero-DJY4qxON.js → hero-Bn4rdy_N.js} +3 -3
  46. package/dist/{hero-DJY4qxON.js.map → hero-Bn4rdy_N.js.map} +1 -1
  47. package/dist/{highlight-DHa9w3Pn.js → highlight-C3vD7SBd.js} +44 -41
  48. package/dist/highlight-C3vD7SBd.js.map +1 -0
  49. package/dist/index.js +2 -2
  50. package/dist/interactive.js +1 -1
  51. package/dist/{item-CbhwHIpH.js → item-DwMV1mFy.js} +3 -3
  52. package/dist/{item-CbhwHIpH.js.map → item-DwMV1mFy.js.map} +1 -1
  53. package/dist/{list-CWGH3XBG.js → list-Dwa6U7aH.js} +3 -3
  54. package/dist/{list-CWGH3XBG.js.map → list-Dwa6U7aH.js.map} +1 -1
  55. package/dist/{loader-xwmpwCXk.js → loader-8wYd7fUZ.js} +23 -23
  56. package/dist/{loader-xwmpwCXk.js.map → loader-8wYd7fUZ.js.map} +1 -1
  57. package/dist/{minimal-DxGUDvv6.js → minimal-DPc0ZoRw.js} +3 -3
  58. package/dist/{minimal-DxGUDvv6.js.map → minimal-DPc0ZoRw.js.map} +1 -1
  59. package/dist/model/attributes/checks.d.ts.map +1 -1
  60. package/dist/{options-BvmHmwsE.js → options-CZuC7PDp.js} +3 -3
  61. package/dist/{options-BvmHmwsE.js.map → options-CZuC7PDp.js.map} +1 -1
  62. package/dist/shared/{model-4-WQm2Le.js → model-CHS3WnCo.js} +112 -118
  63. package/dist/shared/model-CHS3WnCo.js.map +1 -0
  64. package/dist/shared/{utilities-B_sPVa-m.js → utilities-CZHe-tKs.js} +2 -2
  65. package/dist/shared/{utilities-B_sPVa-m.js.map → utilities-CZHe-tKs.js.map} +1 -1
  66. package/dist/{sharing-jgM675YU.js → sharing--wGjj16l.js} +3 -3
  67. package/dist/{sharing-jgM675YU.js.map → sharing--wGjj16l.js.map} +1 -1
  68. package/dist/{site-DtjJCbAC.js → site-CpSb21QB.js} +3 -3
  69. package/dist/{site-DtjJCbAC.js.map → site-CpSb21QB.js.map} +1 -1
  70. package/dist/{sticky-OTUETMNA.js → sticky-CMFVqgPc.js} +3 -3
  71. package/dist/{sticky-OTUETMNA.js.map → sticky-CMFVqgPc.js.map} +1 -1
  72. package/dist/{sticky-columns-BZWi9zSi.js → sticky-columns-DlAAdaT4.js} +3 -3
  73. package/dist/{sticky-columns-BZWi9zSi.js.map → sticky-columns-DlAAdaT4.js.map} +1 -1
  74. package/dist/structural.js +1 -1
  75. package/dist/{video-n1zTWSI8.js → video-Cm_iBOTt.js} +4 -4
  76. package/dist/{video-n1zTWSI8.js.map → video-Cm_iBOTt.js.map} +1 -1
  77. package/dist/{wide-CoHOWBGB.js → wide-omTQQ6Wr.js} +3 -3
  78. package/dist/{wide-CoHOWBGB.js.map → wide-omTQQ6Wr.js.map} +1 -1
  79. package/package.json +1 -1
  80. package/dist/highlight-DHa9w3Pn.js.map +0 -1
  81. package/dist/shared/model-4-WQm2Le.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { Composite as r } from "@universityofmaryland/web-elements-library";
2
- import { d as o, e as a, g as t, f as s } from "./shared/model-4-WQm2Le.js";
3
- import { w as n, h as c } from "./shared/utilities-B_sPVa-m.js";
2
+ import { d as o, e as a, g as t, f as s } from "./shared/model-CHS3WnCo.js";
3
+ import { w as n, h as c } from "./shared/utilities-CZHe-tKs.js";
4
4
  const e = "umd-element-social-sharing", d = (i) => r.social.sharing({
5
5
  isFixed: s.fixed({ element: i }),
6
6
  title: t.title({ element: i }),
@@ -18,4 +18,4 @@ var m = l;
18
18
  export {
19
19
  m as s
20
20
  };
21
- //# sourceMappingURL=sharing-jgM675YU.js.map
21
+ //# sourceMappingURL=sharing--wGjj16l.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sharing-jgM675YU.js","sources":["../source/api/social/sharing.ts"],"sourcesContent":["import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Register, Lifecycle } from 'model';\nimport { CreateComponentFunction, ComponentRegistration } from '../../_types';\n\nconst tagName = 'umd-element-social-sharing';\n\n/**\n * Social Sharing\n *\n * A component that provides social media sharing functionality for web pages.\n * Includes share buttons for popular platforms and utility actions like print and email.\n * Can be positioned fixed or inline within content.\n *\n * ## Custom Element\n * `<umd-element-social-sharing>`\n *\n * ## Attributes\n * - `data-fixed` - Positioning mode:\n * - `true` - Fixed position on the page\n * - Default - Inline with content\n * - `data-title` - Custom title for sharing (defaults to page title)\n * - `data-url` - Custom URL to share (defaults to current page URL)\n * - `data-facebook` - Include Facebook share button:\n * - `true` - Show Facebook button\n * - `data-twitter` - Include Twitter/X share button:\n * - `true` - Show Twitter button\n * - `data-print` - Include print button:\n * - `true` - Show print button\n * - `data-email` - Include email share button:\n * - `true` - Show email button\n *\n * @example\n * ```html\n * <!-- Basic sharing with all platforms -->\n * <umd-element-social-sharing\n * data-facebook=\"true\"\n * data-twitter=\"true\"\n * data-email=\"true\"\n * data-print=\"true\">\n * </umd-element-social-sharing>\n * ```\n *\n * @example\n * ```html\n * <!-- Fixed position sharing bar -->\n * <umd-element-social-sharing\n * data-fixed=\"true\"\n * data-facebook=\"true\"\n * data-twitter=\"true\">\n * </umd-element-social-sharing>\n * ```\n *\n * @example\n * ```html\n * <!-- Custom share content -->\n * <umd-element-social-sharing\n * data-title=\"Check out this amazing research from UMD!\"\n * data-url=\"https://umd.edu/research/quantum-breakthrough\"\n * data-facebook=\"true\"\n * data-twitter=\"true\"\n * data-email=\"true\">\n * </umd-element-social-sharing>\n * ```\n *\n * @example\n * ```html\n * <!-- Minimal sharing (email and print only) -->\n * <umd-element-social-sharing\n * data-email=\"true\"\n * data-print=\"true\">\n * </umd-element-social-sharing>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst createComponent: CreateComponentFunction = (element) =>\n Composite.social.sharing({\n isFixed: Attributes.isLayout.fixed({ element }),\n title: Attributes.getValue.title({ element }),\n url: Attributes.getValue.url({ element }),\n includeFacebook: Attributes.includesSharing.facebook({ element }),\n includeTwitter: Attributes.includesSharing.twitter({ element }),\n includePrint: Attributes.isSharing.print({ element }),\n includeEmail: Attributes.isSharing.email({ element }),\n });\n\n/**\n * Social Sharing\n *\n * A component that provides social media sharing functionality for web pages.\n * Includes share buttons for popular platforms and utility actions like print and email.\n * Can be positioned fixed or inline within content.\n *\n * ## Custom Element\n * `<umd-element-social-sharing>`\n *\n * ## Attributes\n * - `data-fixed` - Positioning mode:\n * - `true` - Fixed position on the page\n * - Default - Inline with content\n * - `data-title` - Custom title for sharing (defaults to page title)\n * - `data-url` - Custom URL to share (defaults to current page URL)\n * - `data-facebook` - Include Facebook share button:\n * - `true` - Show Facebook button\n * - `data-twitter` - Include Twitter/X share button:\n * - `true` - Show Twitter button\n * - `data-print` - Include print button:\n * - `true` - Show print button\n * - `data-email` - Include email share button:\n * - `true` - Show email button\n *\n * @example\n * ```html\n * <!-- Basic sharing with all platforms -->\n * <umd-element-social-sharing\n * data-facebook=\"true\"\n * data-twitter=\"true\"\n * data-email=\"true\"\n * data-print=\"true\">\n * </umd-element-social-sharing>\n * ```\n *\n * @example\n * ```html\n * <!-- Fixed position sharing bar -->\n * <umd-element-social-sharing\n * data-fixed=\"true\"\n * data-facebook=\"true\"\n * data-twitter=\"true\">\n * </umd-element-social-sharing>\n * ```\n *\n * @example\n * ```html\n * <!-- Custom share content -->\n * <umd-element-social-sharing\n * data-title=\"Check out this amazing research from UMD!\"\n * data-url=\"https://umd.edu/research/quantum-breakthrough\"\n * data-facebook=\"true\"\n * data-twitter=\"true\"\n * data-email=\"true\">\n * </umd-element-social-sharing>\n * ```\n *\n * @example\n * ```html\n * <!-- Minimal sharing (email and print only) -->\n * <umd-element-social-sharing\n * data-email=\"true\"\n * data-print=\"true\">\n * </umd-element-social-sharing>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n afterConnect: Lifecycle.hooks.loadOnConnect,\n});\n\nexport default registration;\n"],"names":["tagName","createComponent","element","Composite","Attributes.isLayout","Attributes.getValue","Attributes.includesSharing","Attributes.isSharing","registration","Register.webComponent","Lifecycle.hooks","sharing_default"],"mappings":";;;AAIA,MAAMA,IAAU,8BAwEVC,IAA2C,CAACC,MAChDC,EAAU,OAAO,QAAQ;AAAA,EACvB,SAASC,EAAoB,MAAM,EAAE,SAAAF,GAAS;AAAA,EAC9C,OAAOG,EAAoB,MAAM,EAAE,SAAAH,GAAS;AAAA,EAC5C,KAAKG,EAAoB,IAAI,EAAE,SAAAH,GAAS;AAAA,EACxC,iBAAiBI,EAA2B,SAAS,EAAE,SAAAJ,GAAS;AAAA,EAChE,gBAAgBI,EAA2B,QAAQ,EAAE,SAAAJ,GAAS;AAAA,EAC9D,cAAcK,EAAqB,MAAM,EAAE,SAAAL,GAAS;AAAA,EACpD,cAAcK,EAAqB,MAAM,EAAE,SAAAL,GAAS;AACtD,CAAC,GAwEGM,IAAsCC,EAAsB;AAAA,EAChE,SAAAT;AAAA,EACA,iBAAAC;AAAA,EACA,cAAcS,EAAgB;AAChC,CAAC;AAED,IAAOC,IAAQH;"}
1
+ {"version":3,"file":"sharing--wGjj16l.js","sources":["../source/api/social/sharing.ts"],"sourcesContent":["import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Register, Lifecycle } from 'model';\nimport { CreateComponentFunction, ComponentRegistration } from '../../_types';\n\nconst tagName = 'umd-element-social-sharing';\n\n/**\n * Social Sharing\n *\n * A component that provides social media sharing functionality for web pages.\n * Includes share buttons for popular platforms and utility actions like print and email.\n * Can be positioned fixed or inline within content.\n *\n * ## Custom Element\n * `<umd-element-social-sharing>`\n *\n * ## Attributes\n * - `data-fixed` - Positioning mode:\n * - `true` - Fixed position on the page\n * - Default - Inline with content\n * - `data-title` - Custom title for sharing (defaults to page title)\n * - `data-url` - Custom URL to share (defaults to current page URL)\n * - `data-facebook` - Include Facebook share button:\n * - `true` - Show Facebook button\n * - `data-twitter` - Include Twitter/X share button:\n * - `true` - Show Twitter button\n * - `data-print` - Include print button:\n * - `true` - Show print button\n * - `data-email` - Include email share button:\n * - `true` - Show email button\n *\n * @example\n * ```html\n * <!-- Basic sharing with all platforms -->\n * <umd-element-social-sharing\n * data-facebook=\"true\"\n * data-twitter=\"true\"\n * data-email=\"true\"\n * data-print=\"true\">\n * </umd-element-social-sharing>\n * ```\n *\n * @example\n * ```html\n * <!-- Fixed position sharing bar -->\n * <umd-element-social-sharing\n * data-fixed=\"true\"\n * data-facebook=\"true\"\n * data-twitter=\"true\">\n * </umd-element-social-sharing>\n * ```\n *\n * @example\n * ```html\n * <!-- Custom share content -->\n * <umd-element-social-sharing\n * data-title=\"Check out this amazing research from UMD!\"\n * data-url=\"https://umd.edu/research/quantum-breakthrough\"\n * data-facebook=\"true\"\n * data-twitter=\"true\"\n * data-email=\"true\">\n * </umd-element-social-sharing>\n * ```\n *\n * @example\n * ```html\n * <!-- Minimal sharing (email and print only) -->\n * <umd-element-social-sharing\n * data-email=\"true\"\n * data-print=\"true\">\n * </umd-element-social-sharing>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst createComponent: CreateComponentFunction = (element) =>\n Composite.social.sharing({\n isFixed: Attributes.isLayout.fixed({ element }),\n title: Attributes.getValue.title({ element }),\n url: Attributes.getValue.url({ element }),\n includeFacebook: Attributes.includesSharing.facebook({ element }),\n includeTwitter: Attributes.includesSharing.twitter({ element }),\n includePrint: Attributes.isSharing.print({ element }),\n includeEmail: Attributes.isSharing.email({ element }),\n });\n\n/**\n * Social Sharing\n *\n * A component that provides social media sharing functionality for web pages.\n * Includes share buttons for popular platforms and utility actions like print and email.\n * Can be positioned fixed or inline within content.\n *\n * ## Custom Element\n * `<umd-element-social-sharing>`\n *\n * ## Attributes\n * - `data-fixed` - Positioning mode:\n * - `true` - Fixed position on the page\n * - Default - Inline with content\n * - `data-title` - Custom title for sharing (defaults to page title)\n * - `data-url` - Custom URL to share (defaults to current page URL)\n * - `data-facebook` - Include Facebook share button:\n * - `true` - Show Facebook button\n * - `data-twitter` - Include Twitter/X share button:\n * - `true` - Show Twitter button\n * - `data-print` - Include print button:\n * - `true` - Show print button\n * - `data-email` - Include email share button:\n * - `true` - Show email button\n *\n * @example\n * ```html\n * <!-- Basic sharing with all platforms -->\n * <umd-element-social-sharing\n * data-facebook=\"true\"\n * data-twitter=\"true\"\n * data-email=\"true\"\n * data-print=\"true\">\n * </umd-element-social-sharing>\n * ```\n *\n * @example\n * ```html\n * <!-- Fixed position sharing bar -->\n * <umd-element-social-sharing\n * data-fixed=\"true\"\n * data-facebook=\"true\"\n * data-twitter=\"true\">\n * </umd-element-social-sharing>\n * ```\n *\n * @example\n * ```html\n * <!-- Custom share content -->\n * <umd-element-social-sharing\n * data-title=\"Check out this amazing research from UMD!\"\n * data-url=\"https://umd.edu/research/quantum-breakthrough\"\n * data-facebook=\"true\"\n * data-twitter=\"true\"\n * data-email=\"true\">\n * </umd-element-social-sharing>\n * ```\n *\n * @example\n * ```html\n * <!-- Minimal sharing (email and print only) -->\n * <umd-element-social-sharing\n * data-email=\"true\"\n * data-print=\"true\">\n * </umd-element-social-sharing>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n afterConnect: Lifecycle.hooks.loadOnConnect,\n});\n\nexport default registration;\n"],"names":["tagName","createComponent","element","Composite","Attributes.isLayout","Attributes.getValue","Attributes.includesSharing","Attributes.isSharing","registration","Register.webComponent","Lifecycle.hooks","sharing_default"],"mappings":";;;AAIA,MAAMA,IAAU,8BAwEVC,IAA2C,CAACC,MAChDC,EAAU,OAAO,QAAQ;AAAA,EACvB,SAASC,EAAoB,MAAM,EAAE,SAAAF,GAAS;AAAA,EAC9C,OAAOG,EAAoB,MAAM,EAAE,SAAAH,GAAS;AAAA,EAC5C,KAAKG,EAAoB,IAAI,EAAE,SAAAH,GAAS;AAAA,EACxC,iBAAiBI,EAA2B,SAAS,EAAE,SAAAJ,GAAS;AAAA,EAChE,gBAAgBI,EAA2B,QAAQ,EAAE,SAAAJ,GAAS;AAAA,EAC9D,cAAcK,EAAqB,MAAM,EAAE,SAAAL,GAAS;AAAA,EACpD,cAAcK,EAAqB,MAAM,EAAE,SAAAL,GAAS;AACtD,CAAC,GAwEGM,IAAsCC,EAAsB;AAAA,EAChE,SAAAT;AAAA,EACA,iBAAAC;AAAA,EACA,cAAcS,EAAgB;AAChC,CAAC;AAED,IAAOC,IAAQH;"}
@@ -1,6 +1,6 @@
1
1
  import { Composite as o } from "@universityofmaryland/web-elements-library";
2
- import { s as e, i as s, a, g as d } from "./shared/model-4-WQm2Le.js";
3
- import { w as l } from "./shared/utilities-B_sPVa-m.js";
2
+ import { s as e, i as s, a, g as d } from "./shared/model-CHS3WnCo.js";
3
+ import { w as l } from "./shared/utilities-CZHe-tKs.js";
4
4
  const n = "umd-element-alert-page", i = {
5
5
  headline: e.element.allowed.headline,
6
6
  body: e.element.allowed.body,
@@ -57,4 +57,4 @@ export {
57
57
  T as p,
58
58
  N as s
59
59
  };
60
- //# sourceMappingURL=site-DtjJCbAC.js.map
60
+ //# sourceMappingURL=site-CpSb21QB.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"site-DtjJCbAC.js","sources":["../source/api/alert/page.ts","../source/api/alert/promo.ts","../source/api/alert/site.ts"],"sourcesContent":["import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Slots, Register } from 'model';\nimport {\n CreateComponentFunction,\n ComponentRegistration,\n SlotConfiguration,\n} from '../../_types';\n\n/**\n * Tag name for the page alert web component\n */\nconst tagName = 'umd-element-alert-page';\n\n/**\n * Slot configuration for the page alert component\n */\nconst slots: SlotConfiguration = {\n headline: Slots.element.allowed.headline,\n body: Slots.element.allowed.body,\n text: Slots.element.allowed.text,\n actions: Slots.element.allowed.actions,\n};\n\n/**\n * Creates a page alert component\n */\nconst createComponent: CreateComponentFunction = (element) =>\n Composite.alert.page({\n headline: Slots.headline.default({ element }),\n text: Slots.deprecated.body({ element }) || Slots.text.default({ element }),\n actions: Slots.actions.default({ element }),\n isThemeLight: Attributes.isTheme.light({ element }),\n isThemeDark: Attributes.isTheme.dark({ element }),\n isShowIcon: Attributes.isVisual.showIcon({ element }),\n });\n\n/**\n * Page Alert\n *\n * A page-level alert component for displaying important messages with optional icons.\n *\n * ## Custom Element\n * `<umd-element-alert-page>`\n *\n * ## Slots\n * - `headline` - Alert title (required, accepts: h2-h6, p)\n * - `text` - Alert content (required, accepts: div, p)\n * - `actions` - Optional action buttons or links\n * - `body` - Deprecated: Use `text` slot instead\n *\n * ## Attributes\n * - `data-theme` - Theme options:\n * - `light` - Light background theme\n * - `dark` - Dark background theme\n * - `data-visual-icon` - Icon display options:\n * - `show` - Display alert icon indicator\n *\n * @example\n * ```html\n * <!-- Basic page alert -->\n * <umd-element-alert-page>\n * <h3 slot=\"headline\">Important Notice</h3>\n * <p slot=\"text\">Classes will be held remotely today.</p>\n * </umd-element-alert-page>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme with icon -->\n * <umd-element-alert-page data-theme=\"dark\" data-visual-icon=\"show\">\n * <h2 slot=\"headline\">Emergency Alert</h2>\n * <div slot=\"text\">\n * <p>Campus is closed due to severe weather.</p>\n * </div>\n * <div slot=\"actions\">\n * <a href=\"/emergency\">View Details</a>\n * </div>\n * </umd-element-alert-page>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst AlertPageRegistration: ComponentRegistration = Register.webComponent({\n tagName,\n slots,\n createComponent,\n});\n\nexport default AlertPageRegistration;\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Slots, Register } from 'model';\nimport {\n CreateComponentFunction,\n ComponentRegistration,\n SlotConfiguration,\n} from '../../_types';\n\n/**\n * Tag name for the promotional banner web component\n */\nconst tagName = 'umd-element-banner-promo';\n\n/**\n * Slot configuration for the promotional banner component\n */\nconst slots: SlotConfiguration = {\n headline: Slots.element.allowed.headline,\n body: Slots.element.allowed.body,\n text: Slots.element.allowed.text,\n actions: Slots.element.allowed.actions,\n};\n\n/**\n * Creates a promotional banner component\n */\nconst createComponent: CreateComponentFunction = (element) =>\n Composite.banner.promo({\n headline: Slots.headline.default({ element }),\n text: Slots.deprecated.body({ element }) || Slots.text.default({ element }),\n actions: Slots.actions.default({ element }),\n isThemeDark: Attributes.isTheme.dark({ element }),\n includeSeal: Attributes.isVisual.icon_seal({ element }),\n });\n\n/**\n * Promotional Banner\n *\n * A banner component for highlighting promotional content or special announcements.\n *\n * ## Custom Element\n * `<umd-element-banner-promo>`\n *\n * ## Slots\n * - `headline` - Banner title (required, accepts: h2-h6, p)\n * - `text` - Banner content (required, accepts: div, p)\n * - `actions` - Optional action buttons or links\n * - `body` - Deprecated: Use `text` slot instead\n *\n * ## Attributes\n * - `data-theme` - Theme options:\n * - `dark` - Dark background theme\n * - `data-visual-icon` - Icon options:\n * - `seal` - Include university seal icon\n *\n * @example\n * ```html\n * <!-- Basic promo banner -->\n * <umd-element-banner-promo>\n * <h2 slot=\"headline\">Spring 2024 Applications Now Open</h2>\n * <p slot=\"text\">Join Maryland's flagship university. Apply by March 1st.</p>\n * <div slot=\"actions\">\n * <a href=\"/apply\">Apply Now</a>\n * </div>\n * </umd-element-banner-promo>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme with university seal -->\n * <umd-element-banner-promo data-theme=\"dark\" data-visual-icon=\"seal\">\n * <h3 slot=\"headline\">Presidential Scholarship Available</h3>\n * <div slot=\"text\">\n * <p>Full tuition coverage for exceptional students.</p>\n * <p>Limited spots available.</p>\n * </div>\n * <div slot=\"actions\">\n * <button>Learn More</button>\n * </div>\n * </umd-element-banner-promo>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst PromoBannerRegistration: ComponentRegistration = Register.webComponent({\n tagName,\n slots,\n createComponent,\n});\n\nexport default PromoBannerRegistration;\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Slots, Register } from 'model';\nimport {\n CreateComponentFunction,\n ComponentRegistration,\n SlotConfiguration,\n} from '../../_types';\n\n/**\n * Tag name for the site alert web component\n */\nconst tagName = 'umd-element-alert-site';\n\n/**\n * Slot configuration for the site alert component\n */\nconst slots: SlotConfiguration = {\n headline: Slots.element.allowed.headline,\n body: Slots.element.allowed.body,\n text: Slots.element.allowed.text,\n actions: Slots.element.allowed.actions,\n};\n\n/**\n * Creates a site alert component\n */\nconst createComponent: CreateComponentFunction = (element) =>\n Composite.alert.site({\n headline: Slots.headline.default({ element }),\n text: Slots.deprecated.body({ element }) || Slots.text.default({ element }),\n actions: Slots.actions.default({ element }),\n daysToHide: Attributes.getValue.daysToHide({ element }) || '10',\n });\n\n/**\n * Site Alert\n *\n * A site-wide alert component that remembers when users dismiss it.\n *\n * ## Custom Element\n * `<umd-element-alert-site>`\n *\n * ## Slots\n * - `headline` - Alert title (required, accepts: h2-h6, p)\n * - `text` - Alert content (required, accepts: div, p)\n * - `actions` - Optional action buttons or links\n * - `body` - Deprecated: Use `text` slot instead\n *\n * ## Attributes\n * - `days-to-hide` - Number of days to remember dismissal (default: 10)\n *\n * @example\n * ```html\n * <!-- Basic site alert -->\n * <umd-element-alert-site>\n * <h2 slot=\"headline\">System Maintenance Notice</h2>\n * <p slot=\"text\">Our systems will undergo maintenance on Sunday from 2-4 AM EST.</p>\n * </umd-element-alert-site>\n * ```\n *\n * @example\n * ```html\n * <!-- Alert hidden for 30 days after dismissal -->\n * <umd-element-alert-site days-to-hide=\"30\">\n * <h3 slot=\"headline\">New Student Portal Available</h3>\n * <div slot=\"text\">\n * <p>Experience our redesigned student portal with improved navigation.</p>\n * </div>\n * <div slot=\"actions\">\n * <a href=\"/portal\">Try it Now</a>\n * </div>\n * </umd-element-alert-site>\n * ```\n *\n * @example\n * ```html\n * <!-- Persistent alert (1 day dismissal) -->\n * <umd-element-alert-site days-to-hide=\"1\">\n * <p slot=\"headline\">COVID-19 Testing Required</p>\n * <p slot=\"text\">All students must complete weekly testing.</p>\n * <div slot=\"actions\">\n * <a href=\"/testing\">Schedule Test</a>\n * </div>\n * </umd-element-alert-site>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst SiteAlertRegistration: ComponentRegistration = Register.webComponent({\n tagName,\n slots,\n createComponent,\n});\n\nexport default SiteAlertRegistration;\n"],"names":["tagName","slots","Slots","createComponent","element","Composite","Attributes.isTheme","Attributes.isVisual","AlertPageRegistration","Register.webComponent","page_default","PromoBannerRegistration","promo_default","Attributes.getValue","SiteAlertRegistration","site_default"],"mappings":";;;AAWA,MAAMA,IAAU,0BAKVC,IAA2B;AAAA,EAC/B,UAAUC,EAAM,QAAQ,QAAQ;AAAA,EAChC,MAAMA,EAAM,QAAQ,QAAQ;AAAA,EAC5B,MAAMA,EAAM,QAAQ,QAAQ;AAAA,EAC5B,SAASA,EAAM,QAAQ,QAAQ;AACjC,GAKMC,IAA2C,CAACC,MAChDC,EAAU,MAAM,KAAK;AAAA,EACnB,UAAUH,EAAM,SAAS,QAAQ,EAAE,SAAAE,GAAS;AAAA,EAC5C,MAAMF,EAAM,WAAW,KAAK,EAAE,SAAAE,EAAA,CAAS,KAAKF,EAAM,KAAK,QAAQ,EAAE,SAAAE,GAAS;AAAA,EAC1E,SAASF,EAAM,QAAQ,QAAQ,EAAE,SAAAE,GAAS;AAAA,EAC1C,cAAcE,EAAmB,MAAM,EAAE,SAAAF,GAAS;AAAA,EAClD,aAAaE,EAAmB,KAAK,EAAE,SAAAF,GAAS;AAAA,EAChD,YAAYG,EAAoB,SAAS,EAAE,SAAAH,GAAS;AACtD,CAAC,GAiDGI,IAA+CC,EAAsB;AAAA,EAAA,SACzET;AAAAA,EAAA,OACAC;AAAAA,EAAA,iBACAE;AACF,CAAC;AAED,IAAOO,IAAQF;AC9Ef,MAAMR,IAAU,4BAKVC,IAA2B;AAAA,EAC/B,UAAUC,EAAM,QAAQ,QAAQ;AAAA,EAChC,MAAMA,EAAM,QAAQ,QAAQ;AAAA,EAC5B,MAAMA,EAAM,QAAQ,QAAQ;AAAA,EAC5B,SAASA,EAAM,QAAQ,QAAQ;AACjC,GAKMC,IAA2C,CAACC,MAChDC,EAAU,OAAO,MAAM;AAAA,EACrB,UAAUH,EAAM,SAAS,QAAQ,EAAE,SAAAE,GAAS;AAAA,EAC5C,MAAMF,EAAM,WAAW,KAAK,EAAE,SAAAE,EAAA,CAAS,KAAKF,EAAM,KAAK,QAAQ,EAAE,SAAAE,GAAS;AAAA,EAC1E,SAASF,EAAM,QAAQ,QAAQ,EAAE,SAAAE,GAAS;AAAA,EAC1C,aAAaE,EAAmB,KAAK,EAAE,SAAAF,GAAS;AAAA,EAChD,aAAaG,EAAoB,UAAU,EAAE,SAAAH,GAAS;AACxD,CAAC,GAoDGO,IAAiDF,EAAsB;AAAA,EAAA,SAC3ET;AAAAA,EAAA,OACAC;AAAAA,EAAA,iBACAE;AACF,CAAC;AAED,IAAOS,IAAQD;AChFf,MAAMX,IAAU,0BAKVC,IAA2B;AAAA,EAC/B,UAAUC,EAAM,QAAQ,QAAQ;AAAA,EAChC,MAAMA,EAAM,QAAQ,QAAQ;AAAA,EAC5B,MAAMA,EAAM,QAAQ,QAAQ;AAAA,EAC5B,SAASA,EAAM,QAAQ,QAAQ;AACjC,GAKMC,IAA2C,CAACC,MAChDC,EAAU,MAAM,KAAK;AAAA,EACnB,UAAUH,EAAM,SAAS,QAAQ,EAAE,SAAAE,GAAS;AAAA,EAC5C,MAAMF,EAAM,WAAW,KAAK,EAAE,SAAAE,EAAA,CAAS,KAAKF,EAAM,KAAK,QAAQ,EAAE,SAAAE,GAAS;AAAA,EAC1E,SAASF,EAAM,QAAQ,QAAQ,EAAE,SAAAE,GAAS;AAAA,EAC1C,YAAYS,EAAoB,WAAW,EAAE,SAAAT,EAAA,CAAS,KAAK;AAC7D,CAAC,GAyDGU,IAA+CL,EAAsB;AAAA,EACzE,SAAAT;AAAA,EACA,OAAAC;AAAA,EACA,iBAAAE;AACF,CAAC;AAED,IAAOY,IAAQD;"}
1
+ {"version":3,"file":"site-CpSb21QB.js","sources":["../source/api/alert/page.ts","../source/api/alert/promo.ts","../source/api/alert/site.ts"],"sourcesContent":["import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Slots, Register } from 'model';\nimport {\n CreateComponentFunction,\n ComponentRegistration,\n SlotConfiguration,\n} from '../../_types';\n\n/**\n * Tag name for the page alert web component\n */\nconst tagName = 'umd-element-alert-page';\n\n/**\n * Slot configuration for the page alert component\n */\nconst slots: SlotConfiguration = {\n headline: Slots.element.allowed.headline,\n body: Slots.element.allowed.body,\n text: Slots.element.allowed.text,\n actions: Slots.element.allowed.actions,\n};\n\n/**\n * Creates a page alert component\n */\nconst createComponent: CreateComponentFunction = (element) =>\n Composite.alert.page({\n headline: Slots.headline.default({ element }),\n text: Slots.deprecated.body({ element }) || Slots.text.default({ element }),\n actions: Slots.actions.default({ element }),\n isThemeLight: Attributes.isTheme.light({ element }),\n isThemeDark: Attributes.isTheme.dark({ element }),\n isShowIcon: Attributes.isVisual.showIcon({ element }),\n });\n\n/**\n * Page Alert\n *\n * A page-level alert component for displaying important messages with optional icons.\n *\n * ## Custom Element\n * `<umd-element-alert-page>`\n *\n * ## Slots\n * - `headline` - Alert title (required, accepts: h2-h6, p)\n * - `text` - Alert content (required, accepts: div, p)\n * - `actions` - Optional action buttons or links\n * - `body` - Deprecated: Use `text` slot instead\n *\n * ## Attributes\n * - `data-theme` - Theme options:\n * - `light` - Light background theme\n * - `dark` - Dark background theme\n * - `data-visual-icon` - Icon display options:\n * - `show` - Display alert icon indicator\n *\n * @example\n * ```html\n * <!-- Basic page alert -->\n * <umd-element-alert-page>\n * <h3 slot=\"headline\">Important Notice</h3>\n * <p slot=\"text\">Classes will be held remotely today.</p>\n * </umd-element-alert-page>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme with icon -->\n * <umd-element-alert-page data-theme=\"dark\" data-visual-icon=\"show\">\n * <h2 slot=\"headline\">Emergency Alert</h2>\n * <div slot=\"text\">\n * <p>Campus is closed due to severe weather.</p>\n * </div>\n * <div slot=\"actions\">\n * <a href=\"/emergency\">View Details</a>\n * </div>\n * </umd-element-alert-page>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst AlertPageRegistration: ComponentRegistration = Register.webComponent({\n tagName,\n slots,\n createComponent,\n});\n\nexport default AlertPageRegistration;\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Slots, Register } from 'model';\nimport {\n CreateComponentFunction,\n ComponentRegistration,\n SlotConfiguration,\n} from '../../_types';\n\n/**\n * Tag name for the promotional banner web component\n */\nconst tagName = 'umd-element-banner-promo';\n\n/**\n * Slot configuration for the promotional banner component\n */\nconst slots: SlotConfiguration = {\n headline: Slots.element.allowed.headline,\n body: Slots.element.allowed.body,\n text: Slots.element.allowed.text,\n actions: Slots.element.allowed.actions,\n};\n\n/**\n * Creates a promotional banner component\n */\nconst createComponent: CreateComponentFunction = (element) =>\n Composite.banner.promo({\n headline: Slots.headline.default({ element }),\n text: Slots.deprecated.body({ element }) || Slots.text.default({ element }),\n actions: Slots.actions.default({ element }),\n isThemeDark: Attributes.isTheme.dark({ element }),\n includeSeal: Attributes.isVisual.icon_seal({ element }),\n });\n\n/**\n * Promotional Banner\n *\n * A banner component for highlighting promotional content or special announcements.\n *\n * ## Custom Element\n * `<umd-element-banner-promo>`\n *\n * ## Slots\n * - `headline` - Banner title (required, accepts: h2-h6, p)\n * - `text` - Banner content (required, accepts: div, p)\n * - `actions` - Optional action buttons or links\n * - `body` - Deprecated: Use `text` slot instead\n *\n * ## Attributes\n * - `data-theme` - Theme options:\n * - `dark` - Dark background theme\n * - `data-visual-icon` - Icon options:\n * - `seal` - Include university seal icon\n *\n * @example\n * ```html\n * <!-- Basic promo banner -->\n * <umd-element-banner-promo>\n * <h2 slot=\"headline\">Spring 2024 Applications Now Open</h2>\n * <p slot=\"text\">Join Maryland's flagship university. Apply by March 1st.</p>\n * <div slot=\"actions\">\n * <a href=\"/apply\">Apply Now</a>\n * </div>\n * </umd-element-banner-promo>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme with university seal -->\n * <umd-element-banner-promo data-theme=\"dark\" data-visual-icon=\"seal\">\n * <h3 slot=\"headline\">Presidential Scholarship Available</h3>\n * <div slot=\"text\">\n * <p>Full tuition coverage for exceptional students.</p>\n * <p>Limited spots available.</p>\n * </div>\n * <div slot=\"actions\">\n * <button>Learn More</button>\n * </div>\n * </umd-element-banner-promo>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst PromoBannerRegistration: ComponentRegistration = Register.webComponent({\n tagName,\n slots,\n createComponent,\n});\n\nexport default PromoBannerRegistration;\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Slots, Register } from 'model';\nimport {\n CreateComponentFunction,\n ComponentRegistration,\n SlotConfiguration,\n} from '../../_types';\n\n/**\n * Tag name for the site alert web component\n */\nconst tagName = 'umd-element-alert-site';\n\n/**\n * Slot configuration for the site alert component\n */\nconst slots: SlotConfiguration = {\n headline: Slots.element.allowed.headline,\n body: Slots.element.allowed.body,\n text: Slots.element.allowed.text,\n actions: Slots.element.allowed.actions,\n};\n\n/**\n * Creates a site alert component\n */\nconst createComponent: CreateComponentFunction = (element) =>\n Composite.alert.site({\n headline: Slots.headline.default({ element }),\n text: Slots.deprecated.body({ element }) || Slots.text.default({ element }),\n actions: Slots.actions.default({ element }),\n daysToHide: Attributes.getValue.daysToHide({ element }) || '10',\n });\n\n/**\n * Site Alert\n *\n * A site-wide alert component that remembers when users dismiss it.\n *\n * ## Custom Element\n * `<umd-element-alert-site>`\n *\n * ## Slots\n * - `headline` - Alert title (required, accepts: h2-h6, p)\n * - `text` - Alert content (required, accepts: div, p)\n * - `actions` - Optional action buttons or links\n * - `body` - Deprecated: Use `text` slot instead\n *\n * ## Attributes\n * - `days-to-hide` - Number of days to remember dismissal (default: 10)\n *\n * @example\n * ```html\n * <!-- Basic site alert -->\n * <umd-element-alert-site>\n * <h2 slot=\"headline\">System Maintenance Notice</h2>\n * <p slot=\"text\">Our systems will undergo maintenance on Sunday from 2-4 AM EST.</p>\n * </umd-element-alert-site>\n * ```\n *\n * @example\n * ```html\n * <!-- Alert hidden for 30 days after dismissal -->\n * <umd-element-alert-site days-to-hide=\"30\">\n * <h3 slot=\"headline\">New Student Portal Available</h3>\n * <div slot=\"text\">\n * <p>Experience our redesigned student portal with improved navigation.</p>\n * </div>\n * <div slot=\"actions\">\n * <a href=\"/portal\">Try it Now</a>\n * </div>\n * </umd-element-alert-site>\n * ```\n *\n * @example\n * ```html\n * <!-- Persistent alert (1 day dismissal) -->\n * <umd-element-alert-site days-to-hide=\"1\">\n * <p slot=\"headline\">COVID-19 Testing Required</p>\n * <p slot=\"text\">All students must complete weekly testing.</p>\n * <div slot=\"actions\">\n * <a href=\"/testing\">Schedule Test</a>\n * </div>\n * </umd-element-alert-site>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst SiteAlertRegistration: ComponentRegistration = Register.webComponent({\n tagName,\n slots,\n createComponent,\n});\n\nexport default SiteAlertRegistration;\n"],"names":["tagName","slots","Slots","createComponent","element","Composite","Attributes.isTheme","Attributes.isVisual","AlertPageRegistration","Register.webComponent","page_default","PromoBannerRegistration","promo_default","Attributes.getValue","SiteAlertRegistration","site_default"],"mappings":";;;AAWA,MAAMA,IAAU,0BAKVC,IAA2B;AAAA,EAC/B,UAAUC,EAAM,QAAQ,QAAQ;AAAA,EAChC,MAAMA,EAAM,QAAQ,QAAQ;AAAA,EAC5B,MAAMA,EAAM,QAAQ,QAAQ;AAAA,EAC5B,SAASA,EAAM,QAAQ,QAAQ;AACjC,GAKMC,IAA2C,CAACC,MAChDC,EAAU,MAAM,KAAK;AAAA,EACnB,UAAUH,EAAM,SAAS,QAAQ,EAAE,SAAAE,GAAS;AAAA,EAC5C,MAAMF,EAAM,WAAW,KAAK,EAAE,SAAAE,EAAA,CAAS,KAAKF,EAAM,KAAK,QAAQ,EAAE,SAAAE,GAAS;AAAA,EAC1E,SAASF,EAAM,QAAQ,QAAQ,EAAE,SAAAE,GAAS;AAAA,EAC1C,cAAcE,EAAmB,MAAM,EAAE,SAAAF,GAAS;AAAA,EAClD,aAAaE,EAAmB,KAAK,EAAE,SAAAF,GAAS;AAAA,EAChD,YAAYG,EAAoB,SAAS,EAAE,SAAAH,GAAS;AACtD,CAAC,GAiDGI,IAA+CC,EAAsB;AAAA,EAAA,SACzET;AAAAA,EAAA,OACAC;AAAAA,EAAA,iBACAE;AACF,CAAC;AAED,IAAOO,IAAQF;AC9Ef,MAAMR,IAAU,4BAKVC,IAA2B;AAAA,EAC/B,UAAUC,EAAM,QAAQ,QAAQ;AAAA,EAChC,MAAMA,EAAM,QAAQ,QAAQ;AAAA,EAC5B,MAAMA,EAAM,QAAQ,QAAQ;AAAA,EAC5B,SAASA,EAAM,QAAQ,QAAQ;AACjC,GAKMC,IAA2C,CAACC,MAChDC,EAAU,OAAO,MAAM;AAAA,EACrB,UAAUH,EAAM,SAAS,QAAQ,EAAE,SAAAE,GAAS;AAAA,EAC5C,MAAMF,EAAM,WAAW,KAAK,EAAE,SAAAE,EAAA,CAAS,KAAKF,EAAM,KAAK,QAAQ,EAAE,SAAAE,GAAS;AAAA,EAC1E,SAASF,EAAM,QAAQ,QAAQ,EAAE,SAAAE,GAAS;AAAA,EAC1C,aAAaE,EAAmB,KAAK,EAAE,SAAAF,GAAS;AAAA,EAChD,aAAaG,EAAoB,UAAU,EAAE,SAAAH,GAAS;AACxD,CAAC,GAoDGO,IAAiDF,EAAsB;AAAA,EAAA,SAC3ET;AAAAA,EAAA,OACAC;AAAAA,EAAA,iBACAE;AACF,CAAC;AAED,IAAOS,IAAQD;AChFf,MAAMX,IAAU,0BAKVC,IAA2B;AAAA,EAC/B,UAAUC,EAAM,QAAQ,QAAQ;AAAA,EAChC,MAAMA,EAAM,QAAQ,QAAQ;AAAA,EAC5B,MAAMA,EAAM,QAAQ,QAAQ;AAAA,EAC5B,SAASA,EAAM,QAAQ,QAAQ;AACjC,GAKMC,IAA2C,CAACC,MAChDC,EAAU,MAAM,KAAK;AAAA,EACnB,UAAUH,EAAM,SAAS,QAAQ,EAAE,SAAAE,GAAS;AAAA,EAC5C,MAAMF,EAAM,WAAW,KAAK,EAAE,SAAAE,EAAA,CAAS,KAAKF,EAAM,KAAK,QAAQ,EAAE,SAAAE,GAAS;AAAA,EAC1E,SAASF,EAAM,QAAQ,QAAQ,EAAE,SAAAE,GAAS;AAAA,EAC1C,YAAYS,EAAoB,WAAW,EAAE,SAAAT,EAAA,CAAS,KAAK;AAC7D,CAAC,GAyDGU,IAA+CL,EAAsB;AAAA,EACzE,SAAAT;AAAA,EACA,OAAAC;AAAA,EACA,iBAAAE;AACF,CAAC;AAED,IAAOY,IAAQD;"}
@@ -1,6 +1,6 @@
1
1
  import { Composite as l } from "@universityofmaryland/web-elements-library";
2
- import { s as W, a as K } from "./shared/model-4-WQm2Le.js";
3
- import { w as P, b as u, e as p, N as _ } from "./shared/utilities-B_sPVa-m.js";
2
+ import { s as W, a as K } from "./shared/model-CHS3WnCo.js";
3
+ import { w as P, b as u, e as p, N as _ } from "./shared/utilities-CZHe-tKs.js";
4
4
  import "@universityofmaryland/web-styles-library";
5
5
  const { SlotWithDefaultStyling: G } = u, V = "umd-element-breadcrumb", z = {
6
6
  paths: {
@@ -286,4 +286,4 @@ export {
286
286
  _e as i,
287
287
  Te as s
288
288
  };
289
- //# sourceMappingURL=sticky-OTUETMNA.js.map
289
+ //# sourceMappingURL=sticky-CMFVqgPc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sticky-OTUETMNA.js","sources":["../source/api/navigation/breadcrumb.ts","../source/api/navigation/common.ts","../source/api/navigation/drawer.ts","../source/api/navigation/header.ts","../source/api/navigation/item.ts","../source/api/navigation/slider.ts","../source/api/navigation/sticky.ts"],"sourcesContent":["import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Slots, Register } from 'model';\nimport { Markup } from 'utilities';\nimport { CreateComponentFunction, SlotConfiguration } from '../../_types';\n\nconst { SlotWithDefaultStyling } = Markup.create;\n\n/**\n * Tag name for the breadcrumb navigation web component\n */\nconst tagName = 'umd-element-breadcrumb';\n\n/**\n * Slot configuration for the breadcrumb component\n */\nconst slots: SlotConfiguration = {\n paths: {\n required: true,\n },\n};\n\n/**\n * Creates a breadcrumb navigation component with the provided configuration\n */\nconst createComponent: CreateComponentFunction = (element) => {\n const linkListSlot = SlotWithDefaultStyling({\n element,\n slotRef: Slots.name.PATHS,\n });\n\n if (!linkListSlot)\n return { element: document.createElement('div'), styles: '' };\n\n return Composite.navigation.elements.breadcrumb({\n isThemeDark: Attributes.isTheme.dark({ element }),\n linkListSlot,\n });\n};\n\n/**\n * Breadcrumb Navigation\n *\n * A breadcrumb navigation component that displays a hierarchical trail of links.\n * Helps users understand their location within the site structure and navigate back to parent pages.\n *\n * ## Custom Element\n * `<umd-element-breadcrumb>`\n *\n * ## Slots\n * - `paths` - Navigation list containing breadcrumb links (required, accepts: ol, ul)\n *\n * ## Attributes\n * - `data-theme` - Theme options:\n * - `dark` - Dark theme styling\n *\n * @example\n * ```html\n * <!-- Basic breadcrumb -->\n * <umd-element-breadcrumb>\n * <ol slot=\"paths\">\n * <li><a href=\"/\">Home</a></li>\n * <li><a href=\"/academics\">Academics</a></li>\n * <li><a href=\"/academics/programs\">Programs</a></li>\n * <li>Computer Science</li>\n * </ol>\n * </umd-element-breadcrumb>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme breadcrumb -->\n * <umd-element-breadcrumb data-theme=\"dark\">\n * <ul slot=\"paths\">\n * <li><a href=\"/\">UMD</a></li>\n * <li><a href=\"/research\">Research</a></li>\n * <li>Quantum Computing Lab</li>\n * </ul>\n * </umd-element-breadcrumb>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nexport default Register.webComponent({\n tagName,\n slots,\n createComponent,\n});\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Markup } from 'utilities';\n\nconst { Node } = Markup.create;\n\nconst DRAWER_SLOTS = {\n PRIMARY_SLIDE_LINKS: 'primary-slide-links',\n PRIMARY_SLIDE_SECONDARY_LINKS: 'primary-slide-secondary-links',\n PRIMARY_SLIDE_CONTENT: 'primary-slide-content',\n CHILDREN_SLIDES: 'children-slides',\n};\n\nexport const SLOTS = {\n ...DRAWER_SLOTS,\n};\n\ntype TypeSliderRequirements = {\n element: HTMLElement;\n PRIMARY_SLIDE_CONTENT: string;\n PRIMARY_SLIDE_LINKS: string;\n PRIMARY_SLIDE_SECONDARY_LINKS: string;\n CHILDREN_SLIDES: string;\n};\n\ntype TypeNavDrawerRequirements = TypeSliderRequirements & {\n displayType?: string;\n};\n\nexport const MakeSliderData = ({\n element,\n PRIMARY_SLIDE_CONTENT,\n PRIMARY_SLIDE_LINKS,\n PRIMARY_SLIDE_SECONDARY_LINKS,\n CHILDREN_SLIDES,\n}: TypeSliderRequirements) => {\n const allSlots = Array.from(element.querySelectorAll(':scope > [slot]'));\n\n const primarySlideSlot = allSlots.find(\n (slot) => slot.getAttribute('slot') === PRIMARY_SLIDE_CONTENT,\n ) as HTMLSlotElement;\n const primarySlideLinksSlot = allSlots.find(\n (slot) => slot.getAttribute('slot') === PRIMARY_SLIDE_LINKS,\n ) as HTMLSlotElement;\n const primarySlidesSecondaryLinksSlot = allSlots.find(\n (slot) => slot.getAttribute('slot') === PRIMARY_SLIDE_SECONDARY_LINKS,\n ) as HTMLSlotElement;\n const childrenSlidesSlot = allSlots.find(\n (slot) => slot.getAttribute('slot') === CHILDREN_SLIDES,\n ) as HTMLSlotElement;\n\n const childrenSlotContent = allSlots.filter((element) => {\n return !Object.values(DRAWER_SLOTS).find(\n (value) => value == element.getAttribute('slot'),\n );\n });\n\n const hasPrimarySlideContent =\n primarySlideSlot && primarySlideSlot.children.length > 0;\n const primarySlideContent = hasPrimarySlideContent\n ? Node.slot({\n type: PRIMARY_SLIDE_CONTENT,\n })\n : null;\n\n let primarySlideLinks;\n let primarySlidesSecondaryLinks;\n let childrenSlides;\n let childrenSlideContent: Array<HTMLSlotElement> = [];\n\n if (primarySlideLinksSlot) {\n primarySlideLinks = primarySlideLinksSlot.cloneNode(true) as HTMLElement;\n }\n\n if (primarySlidesSecondaryLinksSlot) {\n primarySlidesSecondaryLinks = primarySlidesSecondaryLinksSlot.cloneNode(\n true,\n ) as HTMLElement;\n }\n\n if (childrenSlidesSlot) {\n childrenSlides = childrenSlidesSlot.cloneNode(true) as HTMLElement;\n }\n\n if (childrenSlotContent) {\n childrenSlotContent.forEach((element) => {\n const type = element.getAttribute('slot');\n if (type) {\n const reference = Node.slot({\n type,\n });\n\n childrenSlideContent.push(reference);\n }\n });\n }\n\n return {\n primarySlideLinks,\n primarySlidesSecondaryLinks,\n childrenSlides,\n primarySlideContent,\n childrenSlideContent,\n };\n};\n\nexport const MakeNavDrawer = (props: TypeNavDrawerRequirements) => {\n const { element, displayType } = props;\n return Composite.navigation.elements.drawer.CreateElement({\n ...MakeSliderData(props),\n context: element,\n displayType,\n });\n};\n\nexport const MakeNavSlider = (props: TypeSliderRequirements) =>\n Composite.navigation.elements.slider.CreateElement({\n ...MakeSliderData(props),\n displayType: 'interior-nav',\n });\n","declare global {\n interface Window {\n UMDNavDrawerFeature: typeof UMDNavDrawerFeature;\n }\n}\n\nimport { Composite } from '@universityofmaryland/web-elements-library';\nimport { Markup, Styles } from 'utilities';\nimport { SLOTS, MakeNavDrawer } from './common';\nimport {\n ComponentRegistration,\n} from '../../_types';\n\n/**\n * Tag name for the navigation drawer web component\n */\nconst tagName = 'umd-element-nav-drawer';\n\nexport const styles = `\n :host {\n display: block;\n }\n\n ${Styles.reset}\n ${Composite.navigation.elements.drawer.Styles}\n ${Composite.navigation.elements.menuButton.Styles}\n`;\n\nconst CreateNavigationDrawerElement = ({\n element,\n}: {\n element: HTMLElement;\n}) => {\n const container = document.createElement('div');\n const drawer = MakeNavDrawer({ element, ...SLOTS });\n if (!drawer) return null;\n const button = Composite.navigation.elements.menuButton.CreateElement({\n eventOpen: drawer.events.eventOpen,\n });\n\n container.appendChild(drawer.element);\n container.appendChild(button);\n\n return container;\n};\n\nclass UMDNavDrawerFeature extends HTMLElement {\n _shadow: ShadowRoot;\n\n constructor() {\n const template = Markup.create.Node.stylesTemplate({ styles });\n super();\n this._shadow = this.attachShadow({ mode: 'open' });\n this._shadow.appendChild(template.content.cloneNode(true));\n }\n\n connectedCallback() {\n const navDrawer = CreateNavigationDrawerElement({ element: this });\n if (!navDrawer) return;\n\n this._shadow.appendChild(navDrawer);\n }\n}\n\n/**\n * Navigation Drawer\n *\n * A mobile-friendly navigation drawer component that provides off-canvas navigation.\n * Includes a menu button trigger and sliding drawer panel for responsive navigation menus.\n *\n * ## Custom Element\n * `<umd-element-nav-drawer>`\n *\n * ## Slots\n * - `logo` - Site logo/branding\n * - `main-navigation` - Primary navigation links\n * - `utility-navigation` - Utility/secondary navigation links\n * - `footer-navigation` - Footer navigation links\n *\n * @example\n * ```html\n * <!-- Basic navigation drawer -->\n * <umd-element-nav-drawer>\n * <a slot=\"logo\" href=\"/\">\n * <img src=\"logo.svg\" alt=\"Site Logo\">\n * </a>\n * <nav slot=\"main-navigation\">\n * <ul>\n * <li><a href=\"/about\">About</a></li>\n * <li><a href=\"/programs\">Programs</a></li>\n * <li><a href=\"/contact\">Contact</a></li>\n * </ul>\n * </nav>\n * </umd-element-nav-drawer>\n * ```\n *\n * @example\n * ```html\n * <!-- Full navigation drawer -->\n * <umd-element-nav-drawer>\n * <a slot=\"logo\" href=\"/\">Maryland</a>\n * <nav slot=\"main-navigation\">\n * <ul>\n * <li><a href=\"/academics\">Academics</a></li>\n * <li><a href=\"/research\">Research</a></li>\n * <li><a href=\"/campus\">Campus Life</a></li>\n * </ul>\n * </nav>\n * <nav slot=\"utility-navigation\">\n * <ul>\n * <li><a href=\"/apply\">Apply</a></li>\n * <li><a href=\"/give\">Give</a></li>\n * </ul>\n * </nav>\n * <nav slot=\"footer-navigation\">\n * <ul>\n * <li><a href=\"/privacy\">Privacy</a></li>\n * <li><a href=\"/accessibility\">Accessibility</a></li>\n * </ul>\n * </nav>\n * </umd-element-nav-drawer>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst navDrawerRegistration: ComponentRegistration = () => {\n const hasElement =\n document.getElementsByTagName(tagName).length > 0;\n\n if (!window.customElements.get(tagName) && hasElement) {\n window.UMDNavDrawerFeature = UMDNavDrawerFeature;\n window.customElements.define(tagName, UMDNavDrawerFeature);\n }\n};\n\nexport default navDrawerRegistration;\n","declare global {\n interface Window {\n UMDHeaderElement: typeof UMDHeaderElement;\n }\n}\n\nimport { Markup, Styles } from 'utilities';\nimport { Composite } from '@universityofmaryland/web-elements-library';\nimport { SLOTS as GlobalSlots, MakeNavDrawer } from './common';\n\nconst { Node } = Markup.create;\nconst { SlotWithDefaultStyling } = Markup.create;\n\nconst ELEMENT_NAME = 'umd-element-navigation-header';\nconst ATTRIBUTE_SEARCH_URL = 'search-url';\nconst ATTRIBUTE_CTA_URL = 'cta-url';\nconst ATTRIBUTE_CTA_TEXT = 'cta-text';\nconst ATTRIBUTE_STICKY = 'sticky';\nconst SLOTS = {\n LOGO: 'logo',\n NAVIGATION: 'main-navigation',\n UTILITY: 'utility-navigation',\n ...GlobalSlots,\n};\n\nconst styles = `\n :host {\n display: block;\n }\n\n ${Styles.reset}\n ${Composite.navigation.elements.drawer.Styles}\n ${Composite.navigation.header.Styles}\n`;\n\n/**\n * Navigation Header\n *\n * A comprehensive header navigation component that includes logo, main navigation,\n * utility navigation, search, and optional call-to-action. Supports sticky positioning\n * and responsive mobile drawer navigation.\n *\n * ## Custom Element\n * `<umd-element-navigation-header>`\n *\n * ## Slots\n * - `logo` - Site logo/branding (required)\n * - `main-navigation` - Container for umd-element-nav-item components\n * - `utility-navigation` - Utility/secondary navigation links\n *\n * ## Attributes\n * - `search-url` - URL for search functionality\n * - `cta-url` - URL for call-to-action button\n * - `cta-text` - Text for call-to-action button\n * - `sticky` - Enable sticky header behavior:\n * - `true` - Header sticks to top on scroll\n *\n * ## Observed Attributes\n * - `sticky` - Dynamically toggle sticky behavior\n *\n * @example\n * ```html\n * <!-- Basic header -->\n * <umd-element-navigation-header>\n * <a slot=\"logo\" href=\"/\">\n * <img src=\"logo.svg\" alt=\"University of Maryland\">\n * </a>\n * <div slot=\"main-navigation\">\n * <umd-element-nav-item>\n * <a slot=\"primary-link\" href=\"/about\">About</a>\n * </umd-element-nav-item>\n * <umd-element-nav-item>\n * <a slot=\"primary-link\" href=\"/academics\">Academics</a>\n * </umd-element-nav-item>\n * </div>\n * </umd-element-navigation-header>\n * ```\n *\n * @example\n * ```html\n * <!-- Full header with search and CTA -->\n * <umd-element-navigation-header\n * search-url=\"/search\"\n * cta-url=\"/apply\"\n * cta-text=\"Apply Now\"\n * sticky=\"true\">\n * <a slot=\"logo\" href=\"/\">Maryland</a>\n * <div slot=\"main-navigation\">\n * <umd-element-nav-item>\n * <a slot=\"primary-link\" href=\"/academics\">Academics</a>\n * <nav slot=\"dropdown-links\">\n * <ul>\n * <li><a href=\"/undergraduate\">Undergraduate</a></li>\n * <li><a href=\"/graduate\">Graduate</a></li>\n * </ul>\n * </nav>\n * </umd-element-nav-item>\n * </div>\n * <nav slot=\"utility-navigation\">\n * <ul>\n * <li><a href=\"/news\">News</a></li>\n * <li><a href=\"/events\">Events</a></li>\n * </ul>\n * </nav>\n * </umd-element-navigation-header>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst CreateNavItemSlots = ({ element }: { element: HTMLElement }) => {\n const { NAVIGATION } = SLOTS;\n const navigationSlot = element.querySelector(\n `[slot=\"${NAVIGATION}\"]`,\n ) as HTMLElement;\n let navItems: HTMLElement[] = [];\n\n if (navigationSlot) {\n const navItem = Array.from(\n navigationSlot.querySelectorAll(':scope > umd-element-nav-item'),\n ) as HTMLElement[];\n\n navigationSlot.removeAttribute('slot');\n\n navItem.forEach((item, i) => {\n const slotAttr = `nav-item-${i}`;\n item.setAttribute(`slot`, slotAttr);\n\n navItems.push(Node.slot({ type: slotAttr }));\n element.appendChild(item);\n });\n\n navigationSlot.remove();\n }\n\n return navItems;\n};\n\nconst CreateHeader = ({\n element,\n eventOpen,\n}: {\n element: HTMLElement;\n eventOpen?: () => void;\n}) => {\n const { LOGO, UTILITY } = SLOTS;\n const logoSlot = SlotWithDefaultStyling({\n element,\n slotRef: LOGO,\n });\n\n const utilitySlotElement = element.querySelector(\n `[slot=\"${UTILITY}\"]`,\n ) as HTMLElement;\n const utilityRow =\n utilitySlotElement?.childElementCount > 0\n ? Node.slot({ type: UTILITY })\n : null;\n const searchUrl = element.getAttribute(ATTRIBUTE_SEARCH_URL);\n const ctaUrl = element.getAttribute(ATTRIBUTE_CTA_URL);\n const ctaText = element.getAttribute(ATTRIBUTE_CTA_TEXT);\n\n if (!logoSlot) {\n console.error('UMDHeaderElement: Logo slot is required');\n }\n\n const value = Composite.navigation.header.CreateElement({\n logo: logoSlot,\n utilityRow,\n navItems: CreateNavItemSlots({ element }),\n eventOpen,\n searchUrl,\n ctaUrl,\n ctaText,\n });\n\n return value;\n};\n\nclass UMDHeaderElement extends HTMLElement {\n _shadow: ShadowRoot;\n _elementRef: {\n element: HTMLDivElement;\n events: {\n sticky: ({ isSticky }: { isSticky: boolean }) => void;\n };\n } | null;\n\n constructor() {\n const template = Node.stylesTemplate({ styles });\n\n super();\n this._shadow = this.attachShadow({ mode: 'open' });\n this._shadow.appendChild(template.content.cloneNode(true));\n this._elementRef = null;\n }\n\n static get observedAttributes() {\n return [ATTRIBUTE_STICKY];\n }\n\n attributeChangedCallback(\n name: string,\n oldValue: string | null,\n newValue: string | null,\n ) {\n if (name == ATTRIBUTE_STICKY && newValue === 'true' && this._elementRef) {\n this._elementRef.events.sticky({ isSticky: true });\n }\n\n if (name == ATTRIBUTE_STICKY && newValue !== 'true' && this._elementRef) {\n this._elementRef.events.sticky({ isSticky: false });\n }\n }\n\n connectedCallback() {\n const element = this;\n const { _shadow } = element;\n const drawer = MakeNavDrawer({\n element,\n ...SLOTS,\n displayType: 'drawer-nav',\n });\n const headerProps: { element: HTMLElement; eventOpen?: () => void } = {\n element,\n };\n\n if (drawer) {\n _shadow.appendChild(drawer.element);\n headerProps.eventOpen = drawer.events.eventOpen;\n }\n\n this._elementRef = CreateHeader(headerProps);\n if (this._elementRef) _shadow.appendChild(this._elementRef.element);\n }\n}\n\nexport default () => {\n const hasElement =\n document.getElementsByTagName(`${ELEMENT_NAME}`).length > 0;\n\n if (!window.customElements.get(ELEMENT_NAME) && hasElement) {\n window.UMDHeaderElement = UMDHeaderElement;\n window.customElements.define(ELEMENT_NAME, UMDHeaderElement);\n }\n};\n","declare global {\n interface Window {\n UMDNavItemElement: typeof UMDNavItemElement;\n }\n}\n\nimport { Composite } from '@universityofmaryland/web-elements-library';\nimport { Markup, Styles } from 'utilities';\nimport {\n ComponentRegistration,\n} from '../../_types';\n\nconst { Node } = Markup.create;\n\n/**\n * Tag name for the navigation item web component\n */\nconst tagName = 'umd-element-nav-item';\n\nconst SLOTS = {\n PRIMARY_LINK: 'primary-link',\n DROPDOWN_LINKS: 'dropdown-links',\n DROPDOWN_CALLOUT: 'dropdown-callout',\n};\n\n// prettier-ignore\nexport const styles = `\n :host {\n display: block;\n }\n\n ${Styles.reset}\n ${Composite.navigation.elements.item.Styles}\n`;\n\nclass UMDNavItemElement extends HTMLElement {\n _shadow: ShadowRoot;\n\n constructor() {\n const template = Node.stylesTemplate({ styles });\n super();\n this._shadow = this.attachShadow({ mode: 'open' });\n this._shadow.appendChild(template.content.cloneNode(true));\n }\n\n connectedCallback() {\n const element = this;\n const calloutSlot = element.querySelector<HTMLElement>(\n `[slot=\"${SLOTS.DROPDOWN_CALLOUT}\"]`,\n );\n\n const primaryLinkSlot = element.querySelector<HTMLElement>(\n `[slot=\"${SLOTS.PRIMARY_LINK}\"]`,\n );\n const primaryLinkContainer = primaryLinkSlot?.cloneNode(\n true,\n ) as HTMLElement | null;\n\n const dropdownLinksSlot = element.querySelector<HTMLElement>(\n '[slot=\"dropdown-links\"]',\n );\n const dropdownLinksContainer = dropdownLinksSlot?.cloneNode(\n true,\n ) as HTMLElement | null;\n\n if (!primaryLinkContainer) {\n throw new Error('Primary link is required for a nav item');\n }\n\n let elementData: {\n primaryLinkContainer: HTMLElement;\n dropdownLinksContainer: HTMLElement | null;\n dropdownCalloutsSlot?: HTMLSlotElement;\n context: HTMLElement;\n } = {\n primaryLinkContainer,\n dropdownLinksContainer,\n context: element,\n };\n\n if (calloutSlot && calloutSlot.children.length > 0) {\n const dropdownCalloutsSlot = Node.slot({\n type: SLOTS.DROPDOWN_CALLOUT,\n });\n elementData = { ...elementData, dropdownCalloutsSlot };\n }\n\n if (!primaryLinkContainer) {\n throw new Error('Primary link is required for a nav item');\n }\n\n const navItem = Composite.navigation.elements.item.CreateElement({\n ...elementData,\n });\n\n element._shadow.appendChild(navItem);\n dropdownLinksSlot?.remove();\n primaryLinkSlot?.remove();\n }\n}\n\n/**\n * Navigation Item\n *\n * A navigation menu item component that supports dropdown menus and callout sections.\n * Designed to be used within navigation header and drawer components for creating\n * hierarchical navigation structures.\n *\n * ## Custom Element\n * `<umd-element-nav-item>`\n *\n * ## Slots\n * - `primary-link` - Main navigation link (required)\n * - `dropdown-links` - Dropdown menu content\n * - `dropdown-callout` - Featured callout section in dropdown\n *\n * @example\n * ```html\n * <!-- Simple navigation item -->\n * <umd-element-nav-item>\n * <a slot=\"primary-link\" href=\"/about\">About</a>\n * </umd-element-nav-item>\n * ```\n *\n * @example\n * ```html\n * <!-- Navigation item with dropdown -->\n * <umd-element-nav-item>\n * <a slot=\"primary-link\" href=\"/academics\">Academics</a>\n * <nav slot=\"dropdown-links\">\n * <ul>\n * <li><a href=\"/undergraduate\">Undergraduate Programs</a></li>\n * <li><a href=\"/graduate\">Graduate Programs</a></li>\n * <li><a href=\"/online\">Online Learning</a></li>\n * </ul>\n * </nav>\n * </umd-element-nav-item>\n * ```\n *\n * @example\n * ```html\n * <!-- Navigation item with dropdown and callout -->\n * <umd-element-nav-item>\n * <a slot=\"primary-link\" href=\"/research\">Research</a>\n * <nav slot=\"dropdown-links\">\n * <ul>\n * <li><a href=\"/research/centers\">Research Centers</a></li>\n * <li><a href=\"/research/labs\">Laboratories</a></li>\n * <li><a href=\"/research/funding\">Funding Opportunities</a></li>\n * </ul>\n * </nav>\n * <div slot=\"dropdown-callout\">\n * <h3>Featured Research</h3>\n * <p>Quantum computing breakthrough leads to new possibilities</p>\n * <a href=\"/research/quantum\">Learn More</a>\n * </div>\n * </umd-element-nav-item>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst navItemRegistration: ComponentRegistration = () => {\n const hasElement =\n document.getElementsByTagName(tagName).length > 0;\n\n if (!window.customElements.get(tagName) && hasElement) {\n window.UMDNavItemElement = UMDNavItemElement;\n window.customElements.define(tagName, UMDNavItemElement);\n }\n};\n\nexport default navItemRegistration;\n","declare global {\n interface Window {\n UMDNavSlider: typeof UMDNavSlider;\n }\n}\n\nimport { Composite } from '@universityofmaryland/web-elements-library';\nimport { Markup, Styles } from 'utilities';\nimport { MakeNavSlider, SLOTS } from './common';\nimport {\n ComponentRegistration,\n} from '../../_types';\n\n/**\n * Tag name for the navigation slider web component\n */\nconst tagName = 'umd-element-nav-slider';\nconst ATTRIBUTE_RESIZE = 'resize';\n\nexport const styles = `\n :host {\n display: block;\n }\n\n ${Styles.reset}\n ${Composite.navigation.elements.slider.Styles}\n`;\n\nconst CreateShadowDom = ({ element }: { element: HTMLElement }) =>\n MakeNavSlider({ element, ...SLOTS });\n\nclass UMDNavSlider extends HTMLElement {\n _shadow: ShadowRoot;\n _elementRef: {\n container: HTMLElement;\n events: {\n resize: () => void;\n };\n } | null;\n\n constructor() {\n const template = Markup.create.Node.stylesTemplate({ styles });\n super();\n this._elementRef = null;\n this._shadow = this.attachShadow({ mode: 'open' });\n this._shadow.appendChild(template.content.cloneNode(true));\n }\n\n static get observedAttributes() {\n return [ATTRIBUTE_RESIZE];\n }\n\n attributeChangedCallback(name: string, oldValue: string, newValue: string) {\n if (!this._elementRef) return;\n\n if (name === ATTRIBUTE_RESIZE && newValue === 'true') {\n this._elementRef.events.resize();\n }\n }\n\n connectedCallback() {\n this._elementRef = CreateShadowDom({ element: this });\n\n if (!this._elementRef) return;\n this._shadow.appendChild(this._elementRef.container);\n }\n}\n\n/**\n * Navigation Slider\n *\n * A horizontal scrollable navigation component for displaying many navigation items.\n * Provides arrow controls and smooth scrolling for better user experience when\n * navigation items exceed the viewport width.\n *\n * ## Custom Element\n * `<umd-element-nav-slider>`\n *\n * ## Slots\n * - Default slot - Navigation list items\n *\n * ## Observed Attributes\n * - `resize` - Triggers recalculation of slider dimensions when set to \"true\"\n *\n * @example\n * ```html\n * <!-- Basic navigation slider -->\n * <umd-element-nav-slider>\n * <ul>\n * <li><a href=\"/college1\">College of Arts & Humanities</a></li>\n * <li><a href=\"/college2\">College of Engineering</a></li>\n * <li><a href=\"/college3\">College of Science</a></li>\n * <li><a href=\"/college4\">School of Business</a></li>\n * <li><a href=\"/college5\">School of Public Health</a></li>\n * <li><a href=\"/college6\">School of Education</a></li>\n * </ul>\n * </umd-element-nav-slider>\n * ```\n *\n * @example\n * ```html\n * <!-- Navigation slider with dynamic resize -->\n * <umd-element-nav-slider id=\"nav-slider\">\n * <ul>\n * <li><a href=\"/dept1\">Computer Science</a></li>\n * <li><a href=\"/dept2\">Mathematics</a></li>\n * <li><a href=\"/dept3\">Physics</a></li>\n * <li><a href=\"/dept4\">Chemistry</a></li>\n * <li><a href=\"/dept5\">Biology</a></li>\n * </ul>\n * </umd-element-nav-slider>\n *\n * <script>\n * // Trigger resize when content changes\n * const slider = document.getElementById('nav-slider');\n * window.addEventListener('resize', () => {\n * slider.setAttribute('resize', 'true');\n * });\n * </script>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst navSliderRegistration: ComponentRegistration = () => {\n const hasElement =\n document.getElementsByTagName(tagName).length > 0;\n\n if (!window.customElements.get(tagName) && hasElement) {\n window.UMDNavSlider = UMDNavSlider;\n window.customElements.define(tagName, UMDNavSlider);\n }\n};\n\nexport default navSliderRegistration;\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Register } from 'model';\nimport { Markup } from 'utilities';\nimport { CreateComponentFunction, SlotConfiguration } from '../../_types';\n\n/**\n * Tag name for the sticky navigation web component\n */\nconst tagName = 'umd-element-navigation-sticky';\n\n/**\n * Slot configuration for the sticky navigation component\n */\nconst slots: SlotConfiguration = {\n content: {\n required: true,\n },\n};\n\n/**\n * Creates a sticky navigation component with the provided configuration\n */\nconst createComponent: CreateComponentFunction = (element) =>\n Composite.navigation.elements.sticky({\n content: Markup.create.Node.slot({ type: 'content' }),\n component: element,\n });\n\n/**\n * Sticky Navigation\n *\n * A navigation component that sticks to the top of the viewport when scrolling.\n * Useful for keeping important navigation accessible as users scroll through content.\n *\n * ## Custom Element\n * `<umd-element-navigation-sticky>`\n *\n * ## Slots\n * - `content` - Navigation content to make sticky (required)\n *\n * @example\n * ```html\n * <!-- Basic sticky navigation -->\n * <umd-element-navigation-sticky>\n * <nav slot=\"content\">\n * <ul>\n * <li><a href=\"#overview\">Overview</a></li>\n * <li><a href=\"#features\">Features</a></li>\n * <li><a href=\"#pricing\">Pricing</a></li>\n * <li><a href=\"#contact\">Contact</a></li>\n * </ul>\n * </nav>\n * </umd-element-navigation-sticky>\n * ```\n *\n * @example\n * ```html\n * <!-- Sticky navigation with breadcrumb -->\n * <umd-element-navigation-sticky>\n * <div slot=\"content\">\n * <umd-element-breadcrumb>\n * <ol slot=\"paths\">\n * <li><a href=\"/\">Home</a></li>\n * <li><a href=\"/programs\">Programs</a></li>\n * <li>Computer Science</li>\n * </ol>\n * </umd-element-breadcrumb>\n * </div>\n * </umd-element-navigation-sticky>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nexport default Register.webComponent({\n tagName,\n slots,\n createComponent,\n});\n"],"names":["SlotWithDefaultStyling","Markup.create","tagName","slots","createComponent","element","linkListSlot","Slots","Composite","Attributes.isTheme","breadcrumb_default","Register.webComponent","Node","DRAWER_SLOTS","SLOTS","MakeSliderData","PRIMARY_SLIDE_CONTENT","PRIMARY_SLIDE_LINKS","PRIMARY_SLIDE_SECONDARY_LINKS","CHILDREN_SLIDES","allSlots","primarySlideSlot","slot","primarySlideLinksSlot","primarySlidesSecondaryLinksSlot","childrenSlidesSlot","childrenSlotContent","value","primarySlideContent","primarySlideLinks","primarySlidesSecondaryLinks","childrenSlides","childrenSlideContent","type","reference","MakeNavDrawer","props","displayType","MakeNavSlider","styles","Styles.reset","CreateNavigationDrawerElement","container","drawer","button","UMDNavDrawerFeature","template","Markup.create.Node","navDrawer","navDrawerRegistration","hasElement","drawer_default","ELEMENT_NAME","ATTRIBUTE_SEARCH_URL","ATTRIBUTE_CTA_URL","ATTRIBUTE_CTA_TEXT","ATTRIBUTE_STICKY","GlobalSlots","CreateNavItemSlots","NAVIGATION","navigationSlot","navItems","navItem","item","i","slotAttr","CreateHeader","eventOpen","LOGO","UTILITY","logoSlot","utilityRow","searchUrl","ctaUrl","ctaText","UMDHeaderElement","name","oldValue","newValue","_shadow","headerProps","header_default","UMDNavItemElement","calloutSlot","primaryLinkSlot","primaryLinkContainer","dropdownLinksSlot","dropdownLinksContainer","elementData","dropdownCalloutsSlot","navItemRegistration","item_default","ATTRIBUTE_RESIZE","CreateShadowDom","UMDNavSlider","navSliderRegistration","slider_default","sticky_default"],"mappings":"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"}
1
+ {"version":3,"file":"sticky-CMFVqgPc.js","sources":["../source/api/navigation/breadcrumb.ts","../source/api/navigation/common.ts","../source/api/navigation/drawer.ts","../source/api/navigation/header.ts","../source/api/navigation/item.ts","../source/api/navigation/slider.ts","../source/api/navigation/sticky.ts"],"sourcesContent":["import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Slots, Register } from 'model';\nimport { Markup } from 'utilities';\nimport { CreateComponentFunction, SlotConfiguration } from '../../_types';\n\nconst { SlotWithDefaultStyling } = Markup.create;\n\n/**\n * Tag name for the breadcrumb navigation web component\n */\nconst tagName = 'umd-element-breadcrumb';\n\n/**\n * Slot configuration for the breadcrumb component\n */\nconst slots: SlotConfiguration = {\n paths: {\n required: true,\n },\n};\n\n/**\n * Creates a breadcrumb navigation component with the provided configuration\n */\nconst createComponent: CreateComponentFunction = (element) => {\n const linkListSlot = SlotWithDefaultStyling({\n element,\n slotRef: Slots.name.PATHS,\n });\n\n if (!linkListSlot)\n return { element: document.createElement('div'), styles: '' };\n\n return Composite.navigation.elements.breadcrumb({\n isThemeDark: Attributes.isTheme.dark({ element }),\n linkListSlot,\n });\n};\n\n/**\n * Breadcrumb Navigation\n *\n * A breadcrumb navigation component that displays a hierarchical trail of links.\n * Helps users understand their location within the site structure and navigate back to parent pages.\n *\n * ## Custom Element\n * `<umd-element-breadcrumb>`\n *\n * ## Slots\n * - `paths` - Navigation list containing breadcrumb links (required, accepts: ol, ul)\n *\n * ## Attributes\n * - `data-theme` - Theme options:\n * - `dark` - Dark theme styling\n *\n * @example\n * ```html\n * <!-- Basic breadcrumb -->\n * <umd-element-breadcrumb>\n * <ol slot=\"paths\">\n * <li><a href=\"/\">Home</a></li>\n * <li><a href=\"/academics\">Academics</a></li>\n * <li><a href=\"/academics/programs\">Programs</a></li>\n * <li>Computer Science</li>\n * </ol>\n * </umd-element-breadcrumb>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme breadcrumb -->\n * <umd-element-breadcrumb data-theme=\"dark\">\n * <ul slot=\"paths\">\n * <li><a href=\"/\">UMD</a></li>\n * <li><a href=\"/research\">Research</a></li>\n * <li>Quantum Computing Lab</li>\n * </ul>\n * </umd-element-breadcrumb>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nexport default Register.webComponent({\n tagName,\n slots,\n createComponent,\n});\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Markup } from 'utilities';\n\nconst { Node } = Markup.create;\n\nconst DRAWER_SLOTS = {\n PRIMARY_SLIDE_LINKS: 'primary-slide-links',\n PRIMARY_SLIDE_SECONDARY_LINKS: 'primary-slide-secondary-links',\n PRIMARY_SLIDE_CONTENT: 'primary-slide-content',\n CHILDREN_SLIDES: 'children-slides',\n};\n\nexport const SLOTS = {\n ...DRAWER_SLOTS,\n};\n\ntype TypeSliderRequirements = {\n element: HTMLElement;\n PRIMARY_SLIDE_CONTENT: string;\n PRIMARY_SLIDE_LINKS: string;\n PRIMARY_SLIDE_SECONDARY_LINKS: string;\n CHILDREN_SLIDES: string;\n};\n\ntype TypeNavDrawerRequirements = TypeSliderRequirements & {\n displayType?: string;\n};\n\nexport const MakeSliderData = ({\n element,\n PRIMARY_SLIDE_CONTENT,\n PRIMARY_SLIDE_LINKS,\n PRIMARY_SLIDE_SECONDARY_LINKS,\n CHILDREN_SLIDES,\n}: TypeSliderRequirements) => {\n const allSlots = Array.from(element.querySelectorAll(':scope > [slot]'));\n\n const primarySlideSlot = allSlots.find(\n (slot) => slot.getAttribute('slot') === PRIMARY_SLIDE_CONTENT,\n ) as HTMLSlotElement;\n const primarySlideLinksSlot = allSlots.find(\n (slot) => slot.getAttribute('slot') === PRIMARY_SLIDE_LINKS,\n ) as HTMLSlotElement;\n const primarySlidesSecondaryLinksSlot = allSlots.find(\n (slot) => slot.getAttribute('slot') === PRIMARY_SLIDE_SECONDARY_LINKS,\n ) as HTMLSlotElement;\n const childrenSlidesSlot = allSlots.find(\n (slot) => slot.getAttribute('slot') === CHILDREN_SLIDES,\n ) as HTMLSlotElement;\n\n const childrenSlotContent = allSlots.filter((element) => {\n return !Object.values(DRAWER_SLOTS).find(\n (value) => value == element.getAttribute('slot'),\n );\n });\n\n const hasPrimarySlideContent =\n primarySlideSlot && primarySlideSlot.children.length > 0;\n const primarySlideContent = hasPrimarySlideContent\n ? Node.slot({\n type: PRIMARY_SLIDE_CONTENT,\n })\n : null;\n\n let primarySlideLinks;\n let primarySlidesSecondaryLinks;\n let childrenSlides;\n let childrenSlideContent: Array<HTMLSlotElement> = [];\n\n if (primarySlideLinksSlot) {\n primarySlideLinks = primarySlideLinksSlot.cloneNode(true) as HTMLElement;\n }\n\n if (primarySlidesSecondaryLinksSlot) {\n primarySlidesSecondaryLinks = primarySlidesSecondaryLinksSlot.cloneNode(\n true,\n ) as HTMLElement;\n }\n\n if (childrenSlidesSlot) {\n childrenSlides = childrenSlidesSlot.cloneNode(true) as HTMLElement;\n }\n\n if (childrenSlotContent) {\n childrenSlotContent.forEach((element) => {\n const type = element.getAttribute('slot');\n if (type) {\n const reference = Node.slot({\n type,\n });\n\n childrenSlideContent.push(reference);\n }\n });\n }\n\n return {\n primarySlideLinks,\n primarySlidesSecondaryLinks,\n childrenSlides,\n primarySlideContent,\n childrenSlideContent,\n };\n};\n\nexport const MakeNavDrawer = (props: TypeNavDrawerRequirements) => {\n const { element, displayType } = props;\n return Composite.navigation.elements.drawer.CreateElement({\n ...MakeSliderData(props),\n context: element,\n displayType,\n });\n};\n\nexport const MakeNavSlider = (props: TypeSliderRequirements) =>\n Composite.navigation.elements.slider.CreateElement({\n ...MakeSliderData(props),\n displayType: 'interior-nav',\n });\n","declare global {\n interface Window {\n UMDNavDrawerFeature: typeof UMDNavDrawerFeature;\n }\n}\n\nimport { Composite } from '@universityofmaryland/web-elements-library';\nimport { Markup, Styles } from 'utilities';\nimport { SLOTS, MakeNavDrawer } from './common';\nimport {\n ComponentRegistration,\n} from '../../_types';\n\n/**\n * Tag name for the navigation drawer web component\n */\nconst tagName = 'umd-element-nav-drawer';\n\nexport const styles = `\n :host {\n display: block;\n }\n\n ${Styles.reset}\n ${Composite.navigation.elements.drawer.Styles}\n ${Composite.navigation.elements.menuButton.Styles}\n`;\n\nconst CreateNavigationDrawerElement = ({\n element,\n}: {\n element: HTMLElement;\n}) => {\n const container = document.createElement('div');\n const drawer = MakeNavDrawer({ element, ...SLOTS });\n if (!drawer) return null;\n const button = Composite.navigation.elements.menuButton.CreateElement({\n eventOpen: drawer.events.eventOpen,\n });\n\n container.appendChild(drawer.element);\n container.appendChild(button);\n\n return container;\n};\n\nclass UMDNavDrawerFeature extends HTMLElement {\n _shadow: ShadowRoot;\n\n constructor() {\n const template = Markup.create.Node.stylesTemplate({ styles });\n super();\n this._shadow = this.attachShadow({ mode: 'open' });\n this._shadow.appendChild(template.content.cloneNode(true));\n }\n\n connectedCallback() {\n const navDrawer = CreateNavigationDrawerElement({ element: this });\n if (!navDrawer) return;\n\n this._shadow.appendChild(navDrawer);\n }\n}\n\n/**\n * Navigation Drawer\n *\n * A mobile-friendly navigation drawer component that provides off-canvas navigation.\n * Includes a menu button trigger and sliding drawer panel for responsive navigation menus.\n *\n * ## Custom Element\n * `<umd-element-nav-drawer>`\n *\n * ## Slots\n * - `logo` - Site logo/branding\n * - `main-navigation` - Primary navigation links\n * - `utility-navigation` - Utility/secondary navigation links\n * - `footer-navigation` - Footer navigation links\n *\n * @example\n * ```html\n * <!-- Basic navigation drawer -->\n * <umd-element-nav-drawer>\n * <a slot=\"logo\" href=\"/\">\n * <img src=\"logo.svg\" alt=\"Site Logo\">\n * </a>\n * <nav slot=\"main-navigation\">\n * <ul>\n * <li><a href=\"/about\">About</a></li>\n * <li><a href=\"/programs\">Programs</a></li>\n * <li><a href=\"/contact\">Contact</a></li>\n * </ul>\n * </nav>\n * </umd-element-nav-drawer>\n * ```\n *\n * @example\n * ```html\n * <!-- Full navigation drawer -->\n * <umd-element-nav-drawer>\n * <a slot=\"logo\" href=\"/\">Maryland</a>\n * <nav slot=\"main-navigation\">\n * <ul>\n * <li><a href=\"/academics\">Academics</a></li>\n * <li><a href=\"/research\">Research</a></li>\n * <li><a href=\"/campus\">Campus Life</a></li>\n * </ul>\n * </nav>\n * <nav slot=\"utility-navigation\">\n * <ul>\n * <li><a href=\"/apply\">Apply</a></li>\n * <li><a href=\"/give\">Give</a></li>\n * </ul>\n * </nav>\n * <nav slot=\"footer-navigation\">\n * <ul>\n * <li><a href=\"/privacy\">Privacy</a></li>\n * <li><a href=\"/accessibility\">Accessibility</a></li>\n * </ul>\n * </nav>\n * </umd-element-nav-drawer>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst navDrawerRegistration: ComponentRegistration = () => {\n const hasElement =\n document.getElementsByTagName(tagName).length > 0;\n\n if (!window.customElements.get(tagName) && hasElement) {\n window.UMDNavDrawerFeature = UMDNavDrawerFeature;\n window.customElements.define(tagName, UMDNavDrawerFeature);\n }\n};\n\nexport default navDrawerRegistration;\n","declare global {\n interface Window {\n UMDHeaderElement: typeof UMDHeaderElement;\n }\n}\n\nimport { Markup, Styles } from 'utilities';\nimport { Composite } from '@universityofmaryland/web-elements-library';\nimport { SLOTS as GlobalSlots, MakeNavDrawer } from './common';\n\nconst { Node } = Markup.create;\nconst { SlotWithDefaultStyling } = Markup.create;\n\nconst ELEMENT_NAME = 'umd-element-navigation-header';\nconst ATTRIBUTE_SEARCH_URL = 'search-url';\nconst ATTRIBUTE_CTA_URL = 'cta-url';\nconst ATTRIBUTE_CTA_TEXT = 'cta-text';\nconst ATTRIBUTE_STICKY = 'sticky';\nconst SLOTS = {\n LOGO: 'logo',\n NAVIGATION: 'main-navigation',\n UTILITY: 'utility-navigation',\n ...GlobalSlots,\n};\n\nconst styles = `\n :host {\n display: block;\n }\n\n ${Styles.reset}\n ${Composite.navigation.elements.drawer.Styles}\n ${Composite.navigation.header.Styles}\n`;\n\n/**\n * Navigation Header\n *\n * A comprehensive header navigation component that includes logo, main navigation,\n * utility navigation, search, and optional call-to-action. Supports sticky positioning\n * and responsive mobile drawer navigation.\n *\n * ## Custom Element\n * `<umd-element-navigation-header>`\n *\n * ## Slots\n * - `logo` - Site logo/branding (required)\n * - `main-navigation` - Container for umd-element-nav-item components\n * - `utility-navigation` - Utility/secondary navigation links\n *\n * ## Attributes\n * - `search-url` - URL for search functionality\n * - `cta-url` - URL for call-to-action button\n * - `cta-text` - Text for call-to-action button\n * - `sticky` - Enable sticky header behavior:\n * - `true` - Header sticks to top on scroll\n *\n * ## Observed Attributes\n * - `sticky` - Dynamically toggle sticky behavior\n *\n * @example\n * ```html\n * <!-- Basic header -->\n * <umd-element-navigation-header>\n * <a slot=\"logo\" href=\"/\">\n * <img src=\"logo.svg\" alt=\"University of Maryland\">\n * </a>\n * <div slot=\"main-navigation\">\n * <umd-element-nav-item>\n * <a slot=\"primary-link\" href=\"/about\">About</a>\n * </umd-element-nav-item>\n * <umd-element-nav-item>\n * <a slot=\"primary-link\" href=\"/academics\">Academics</a>\n * </umd-element-nav-item>\n * </div>\n * </umd-element-navigation-header>\n * ```\n *\n * @example\n * ```html\n * <!-- Full header with search and CTA -->\n * <umd-element-navigation-header\n * search-url=\"/search\"\n * cta-url=\"/apply\"\n * cta-text=\"Apply Now\"\n * sticky=\"true\">\n * <a slot=\"logo\" href=\"/\">Maryland</a>\n * <div slot=\"main-navigation\">\n * <umd-element-nav-item>\n * <a slot=\"primary-link\" href=\"/academics\">Academics</a>\n * <nav slot=\"dropdown-links\">\n * <ul>\n * <li><a href=\"/undergraduate\">Undergraduate</a></li>\n * <li><a href=\"/graduate\">Graduate</a></li>\n * </ul>\n * </nav>\n * </umd-element-nav-item>\n * </div>\n * <nav slot=\"utility-navigation\">\n * <ul>\n * <li><a href=\"/news\">News</a></li>\n * <li><a href=\"/events\">Events</a></li>\n * </ul>\n * </nav>\n * </umd-element-navigation-header>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst CreateNavItemSlots = ({ element }: { element: HTMLElement }) => {\n const { NAVIGATION } = SLOTS;\n const navigationSlot = element.querySelector(\n `[slot=\"${NAVIGATION}\"]`,\n ) as HTMLElement;\n let navItems: HTMLElement[] = [];\n\n if (navigationSlot) {\n const navItem = Array.from(\n navigationSlot.querySelectorAll(':scope > umd-element-nav-item'),\n ) as HTMLElement[];\n\n navigationSlot.removeAttribute('slot');\n\n navItem.forEach((item, i) => {\n const slotAttr = `nav-item-${i}`;\n item.setAttribute(`slot`, slotAttr);\n\n navItems.push(Node.slot({ type: slotAttr }));\n element.appendChild(item);\n });\n\n navigationSlot.remove();\n }\n\n return navItems;\n};\n\nconst CreateHeader = ({\n element,\n eventOpen,\n}: {\n element: HTMLElement;\n eventOpen?: () => void;\n}) => {\n const { LOGO, UTILITY } = SLOTS;\n const logoSlot = SlotWithDefaultStyling({\n element,\n slotRef: LOGO,\n });\n\n const utilitySlotElement = element.querySelector(\n `[slot=\"${UTILITY}\"]`,\n ) as HTMLElement;\n const utilityRow =\n utilitySlotElement?.childElementCount > 0\n ? Node.slot({ type: UTILITY })\n : null;\n const searchUrl = element.getAttribute(ATTRIBUTE_SEARCH_URL);\n const ctaUrl = element.getAttribute(ATTRIBUTE_CTA_URL);\n const ctaText = element.getAttribute(ATTRIBUTE_CTA_TEXT);\n\n if (!logoSlot) {\n console.error('UMDHeaderElement: Logo slot is required');\n }\n\n const value = Composite.navigation.header.CreateElement({\n logo: logoSlot,\n utilityRow,\n navItems: CreateNavItemSlots({ element }),\n eventOpen,\n searchUrl,\n ctaUrl,\n ctaText,\n });\n\n return value;\n};\n\nclass UMDHeaderElement extends HTMLElement {\n _shadow: ShadowRoot;\n _elementRef: {\n element: HTMLDivElement;\n events: {\n sticky: ({ isSticky }: { isSticky: boolean }) => void;\n };\n } | null;\n\n constructor() {\n const template = Node.stylesTemplate({ styles });\n\n super();\n this._shadow = this.attachShadow({ mode: 'open' });\n this._shadow.appendChild(template.content.cloneNode(true));\n this._elementRef = null;\n }\n\n static get observedAttributes() {\n return [ATTRIBUTE_STICKY];\n }\n\n attributeChangedCallback(\n name: string,\n oldValue: string | null,\n newValue: string | null,\n ) {\n if (name == ATTRIBUTE_STICKY && newValue === 'true' && this._elementRef) {\n this._elementRef.events.sticky({ isSticky: true });\n }\n\n if (name == ATTRIBUTE_STICKY && newValue !== 'true' && this._elementRef) {\n this._elementRef.events.sticky({ isSticky: false });\n }\n }\n\n connectedCallback() {\n const element = this;\n const { _shadow } = element;\n const drawer = MakeNavDrawer({\n element,\n ...SLOTS,\n displayType: 'drawer-nav',\n });\n const headerProps: { element: HTMLElement; eventOpen?: () => void } = {\n element,\n };\n\n if (drawer) {\n _shadow.appendChild(drawer.element);\n headerProps.eventOpen = drawer.events.eventOpen;\n }\n\n this._elementRef = CreateHeader(headerProps);\n if (this._elementRef) _shadow.appendChild(this._elementRef.element);\n }\n}\n\nexport default () => {\n const hasElement =\n document.getElementsByTagName(`${ELEMENT_NAME}`).length > 0;\n\n if (!window.customElements.get(ELEMENT_NAME) && hasElement) {\n window.UMDHeaderElement = UMDHeaderElement;\n window.customElements.define(ELEMENT_NAME, UMDHeaderElement);\n }\n};\n","declare global {\n interface Window {\n UMDNavItemElement: typeof UMDNavItemElement;\n }\n}\n\nimport { Composite } from '@universityofmaryland/web-elements-library';\nimport { Markup, Styles } from 'utilities';\nimport {\n ComponentRegistration,\n} from '../../_types';\n\nconst { Node } = Markup.create;\n\n/**\n * Tag name for the navigation item web component\n */\nconst tagName = 'umd-element-nav-item';\n\nconst SLOTS = {\n PRIMARY_LINK: 'primary-link',\n DROPDOWN_LINKS: 'dropdown-links',\n DROPDOWN_CALLOUT: 'dropdown-callout',\n};\n\n// prettier-ignore\nexport const styles = `\n :host {\n display: block;\n }\n\n ${Styles.reset}\n ${Composite.navigation.elements.item.Styles}\n`;\n\nclass UMDNavItemElement extends HTMLElement {\n _shadow: ShadowRoot;\n\n constructor() {\n const template = Node.stylesTemplate({ styles });\n super();\n this._shadow = this.attachShadow({ mode: 'open' });\n this._shadow.appendChild(template.content.cloneNode(true));\n }\n\n connectedCallback() {\n const element = this;\n const calloutSlot = element.querySelector<HTMLElement>(\n `[slot=\"${SLOTS.DROPDOWN_CALLOUT}\"]`,\n );\n\n const primaryLinkSlot = element.querySelector<HTMLElement>(\n `[slot=\"${SLOTS.PRIMARY_LINK}\"]`,\n );\n const primaryLinkContainer = primaryLinkSlot?.cloneNode(\n true,\n ) as HTMLElement | null;\n\n const dropdownLinksSlot = element.querySelector<HTMLElement>(\n '[slot=\"dropdown-links\"]',\n );\n const dropdownLinksContainer = dropdownLinksSlot?.cloneNode(\n true,\n ) as HTMLElement | null;\n\n if (!primaryLinkContainer) {\n throw new Error('Primary link is required for a nav item');\n }\n\n let elementData: {\n primaryLinkContainer: HTMLElement;\n dropdownLinksContainer: HTMLElement | null;\n dropdownCalloutsSlot?: HTMLSlotElement;\n context: HTMLElement;\n } = {\n primaryLinkContainer,\n dropdownLinksContainer,\n context: element,\n };\n\n if (calloutSlot && calloutSlot.children.length > 0) {\n const dropdownCalloutsSlot = Node.slot({\n type: SLOTS.DROPDOWN_CALLOUT,\n });\n elementData = { ...elementData, dropdownCalloutsSlot };\n }\n\n if (!primaryLinkContainer) {\n throw new Error('Primary link is required for a nav item');\n }\n\n const navItem = Composite.navigation.elements.item.CreateElement({\n ...elementData,\n });\n\n element._shadow.appendChild(navItem);\n dropdownLinksSlot?.remove();\n primaryLinkSlot?.remove();\n }\n}\n\n/**\n * Navigation Item\n *\n * A navigation menu item component that supports dropdown menus and callout sections.\n * Designed to be used within navigation header and drawer components for creating\n * hierarchical navigation structures.\n *\n * ## Custom Element\n * `<umd-element-nav-item>`\n *\n * ## Slots\n * - `primary-link` - Main navigation link (required)\n * - `dropdown-links` - Dropdown menu content\n * - `dropdown-callout` - Featured callout section in dropdown\n *\n * @example\n * ```html\n * <!-- Simple navigation item -->\n * <umd-element-nav-item>\n * <a slot=\"primary-link\" href=\"/about\">About</a>\n * </umd-element-nav-item>\n * ```\n *\n * @example\n * ```html\n * <!-- Navigation item with dropdown -->\n * <umd-element-nav-item>\n * <a slot=\"primary-link\" href=\"/academics\">Academics</a>\n * <nav slot=\"dropdown-links\">\n * <ul>\n * <li><a href=\"/undergraduate\">Undergraduate Programs</a></li>\n * <li><a href=\"/graduate\">Graduate Programs</a></li>\n * <li><a href=\"/online\">Online Learning</a></li>\n * </ul>\n * </nav>\n * </umd-element-nav-item>\n * ```\n *\n * @example\n * ```html\n * <!-- Navigation item with dropdown and callout -->\n * <umd-element-nav-item>\n * <a slot=\"primary-link\" href=\"/research\">Research</a>\n * <nav slot=\"dropdown-links\">\n * <ul>\n * <li><a href=\"/research/centers\">Research Centers</a></li>\n * <li><a href=\"/research/labs\">Laboratories</a></li>\n * <li><a href=\"/research/funding\">Funding Opportunities</a></li>\n * </ul>\n * </nav>\n * <div slot=\"dropdown-callout\">\n * <h3>Featured Research</h3>\n * <p>Quantum computing breakthrough leads to new possibilities</p>\n * <a href=\"/research/quantum\">Learn More</a>\n * </div>\n * </umd-element-nav-item>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst navItemRegistration: ComponentRegistration = () => {\n const hasElement =\n document.getElementsByTagName(tagName).length > 0;\n\n if (!window.customElements.get(tagName) && hasElement) {\n window.UMDNavItemElement = UMDNavItemElement;\n window.customElements.define(tagName, UMDNavItemElement);\n }\n};\n\nexport default navItemRegistration;\n","declare global {\n interface Window {\n UMDNavSlider: typeof UMDNavSlider;\n }\n}\n\nimport { Composite } from '@universityofmaryland/web-elements-library';\nimport { Markup, Styles } from 'utilities';\nimport { MakeNavSlider, SLOTS } from './common';\nimport {\n ComponentRegistration,\n} from '../../_types';\n\n/**\n * Tag name for the navigation slider web component\n */\nconst tagName = 'umd-element-nav-slider';\nconst ATTRIBUTE_RESIZE = 'resize';\n\nexport const styles = `\n :host {\n display: block;\n }\n\n ${Styles.reset}\n ${Composite.navigation.elements.slider.Styles}\n`;\n\nconst CreateShadowDom = ({ element }: { element: HTMLElement }) =>\n MakeNavSlider({ element, ...SLOTS });\n\nclass UMDNavSlider extends HTMLElement {\n _shadow: ShadowRoot;\n _elementRef: {\n container: HTMLElement;\n events: {\n resize: () => void;\n };\n } | null;\n\n constructor() {\n const template = Markup.create.Node.stylesTemplate({ styles });\n super();\n this._elementRef = null;\n this._shadow = this.attachShadow({ mode: 'open' });\n this._shadow.appendChild(template.content.cloneNode(true));\n }\n\n static get observedAttributes() {\n return [ATTRIBUTE_RESIZE];\n }\n\n attributeChangedCallback(name: string, oldValue: string, newValue: string) {\n if (!this._elementRef) return;\n\n if (name === ATTRIBUTE_RESIZE && newValue === 'true') {\n this._elementRef.events.resize();\n }\n }\n\n connectedCallback() {\n this._elementRef = CreateShadowDom({ element: this });\n\n if (!this._elementRef) return;\n this._shadow.appendChild(this._elementRef.container);\n }\n}\n\n/**\n * Navigation Slider\n *\n * A horizontal scrollable navigation component for displaying many navigation items.\n * Provides arrow controls and smooth scrolling for better user experience when\n * navigation items exceed the viewport width.\n *\n * ## Custom Element\n * `<umd-element-nav-slider>`\n *\n * ## Slots\n * - Default slot - Navigation list items\n *\n * ## Observed Attributes\n * - `resize` - Triggers recalculation of slider dimensions when set to \"true\"\n *\n * @example\n * ```html\n * <!-- Basic navigation slider -->\n * <umd-element-nav-slider>\n * <ul>\n * <li><a href=\"/college1\">College of Arts & Humanities</a></li>\n * <li><a href=\"/college2\">College of Engineering</a></li>\n * <li><a href=\"/college3\">College of Science</a></li>\n * <li><a href=\"/college4\">School of Business</a></li>\n * <li><a href=\"/college5\">School of Public Health</a></li>\n * <li><a href=\"/college6\">School of Education</a></li>\n * </ul>\n * </umd-element-nav-slider>\n * ```\n *\n * @example\n * ```html\n * <!-- Navigation slider with dynamic resize -->\n * <umd-element-nav-slider id=\"nav-slider\">\n * <ul>\n * <li><a href=\"/dept1\">Computer Science</a></li>\n * <li><a href=\"/dept2\">Mathematics</a></li>\n * <li><a href=\"/dept3\">Physics</a></li>\n * <li><a href=\"/dept4\">Chemistry</a></li>\n * <li><a href=\"/dept5\">Biology</a></li>\n * </ul>\n * </umd-element-nav-slider>\n *\n * <script>\n * // Trigger resize when content changes\n * const slider = document.getElementById('nav-slider');\n * window.addEventListener('resize', () => {\n * slider.setAttribute('resize', 'true');\n * });\n * </script>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst navSliderRegistration: ComponentRegistration = () => {\n const hasElement =\n document.getElementsByTagName(tagName).length > 0;\n\n if (!window.customElements.get(tagName) && hasElement) {\n window.UMDNavSlider = UMDNavSlider;\n window.customElements.define(tagName, UMDNavSlider);\n }\n};\n\nexport default navSliderRegistration;\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Register } from 'model';\nimport { Markup } from 'utilities';\nimport { CreateComponentFunction, SlotConfiguration } from '../../_types';\n\n/**\n * Tag name for the sticky navigation web component\n */\nconst tagName = 'umd-element-navigation-sticky';\n\n/**\n * Slot configuration for the sticky navigation component\n */\nconst slots: SlotConfiguration = {\n content: {\n required: true,\n },\n};\n\n/**\n * Creates a sticky navigation component with the provided configuration\n */\nconst createComponent: CreateComponentFunction = (element) =>\n Composite.navigation.elements.sticky({\n content: Markup.create.Node.slot({ type: 'content' }),\n component: element,\n });\n\n/**\n * Sticky Navigation\n *\n * A navigation component that sticks to the top of the viewport when scrolling.\n * Useful for keeping important navigation accessible as users scroll through content.\n *\n * ## Custom Element\n * `<umd-element-navigation-sticky>`\n *\n * ## Slots\n * - `content` - Navigation content to make sticky (required)\n *\n * @example\n * ```html\n * <!-- Basic sticky navigation -->\n * <umd-element-navigation-sticky>\n * <nav slot=\"content\">\n * <ul>\n * <li><a href=\"#overview\">Overview</a></li>\n * <li><a href=\"#features\">Features</a></li>\n * <li><a href=\"#pricing\">Pricing</a></li>\n * <li><a href=\"#contact\">Contact</a></li>\n * </ul>\n * </nav>\n * </umd-element-navigation-sticky>\n * ```\n *\n * @example\n * ```html\n * <!-- Sticky navigation with breadcrumb -->\n * <umd-element-navigation-sticky>\n * <div slot=\"content\">\n * <umd-element-breadcrumb>\n * <ol slot=\"paths\">\n * <li><a href=\"/\">Home</a></li>\n * <li><a href=\"/programs\">Programs</a></li>\n * <li>Computer Science</li>\n * </ol>\n * </umd-element-breadcrumb>\n * </div>\n * </umd-element-navigation-sticky>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nexport default Register.webComponent({\n tagName,\n slots,\n createComponent,\n});\n"],"names":["SlotWithDefaultStyling","Markup.create","tagName","slots","createComponent","element","linkListSlot","Slots","Composite","Attributes.isTheme","breadcrumb_default","Register.webComponent","Node","DRAWER_SLOTS","SLOTS","MakeSliderData","PRIMARY_SLIDE_CONTENT","PRIMARY_SLIDE_LINKS","PRIMARY_SLIDE_SECONDARY_LINKS","CHILDREN_SLIDES","allSlots","primarySlideSlot","slot","primarySlideLinksSlot","primarySlidesSecondaryLinksSlot","childrenSlidesSlot","childrenSlotContent","value","primarySlideContent","primarySlideLinks","primarySlidesSecondaryLinks","childrenSlides","childrenSlideContent","type","reference","MakeNavDrawer","props","displayType","MakeNavSlider","styles","Styles.reset","CreateNavigationDrawerElement","container","drawer","button","UMDNavDrawerFeature","template","Markup.create.Node","navDrawer","navDrawerRegistration","hasElement","drawer_default","ELEMENT_NAME","ATTRIBUTE_SEARCH_URL","ATTRIBUTE_CTA_URL","ATTRIBUTE_CTA_TEXT","ATTRIBUTE_STICKY","GlobalSlots","CreateNavItemSlots","NAVIGATION","navigationSlot","navItems","navItem","item","i","slotAttr","CreateHeader","eventOpen","LOGO","UTILITY","logoSlot","utilityRow","searchUrl","ctaUrl","ctaText","UMDHeaderElement","name","oldValue","newValue","_shadow","headerProps","header_default","UMDNavItemElement","calloutSlot","primaryLinkSlot","primaryLinkContainer","dropdownLinksSlot","dropdownLinksContainer","elementData","dropdownCalloutsSlot","navItemRegistration","item_default","ATTRIBUTE_RESIZE","CreateShadowDom","UMDNavSlider","navSliderRegistration","slider_default","sticky_default"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Composite as s, Atomic as g } from "@universityofmaryland/web-elements-library";
2
- import { i as l, a as c, s as a, h as n, f as C, o as i, v as y, k as f, g as _ } from "./shared/model-4-WQm2Le.js";
3
- import { w as o, I as m, N as r, h as u } from "./shared/utilities-B_sPVa-m.js";
2
+ import { i as l, a as c, s as a, h as n, f as C, o as i, v as y, k as f, g as _ } from "./shared/model-CHS3WnCo.js";
3
+ import { w as o, I as m, N as r, h as u } from "./shared/utilities-CZHe-tKs.js";
4
4
  import "@universityofmaryland/web-styles-library";
5
5
  const v = "umd-element-logo", h = {
6
6
  image: {
@@ -148,4 +148,4 @@ export {
148
148
  W as s,
149
149
  Q as w
150
150
  };
151
- //# sourceMappingURL=sticky-columns-BZWi9zSi.js.map
151
+ //# sourceMappingURL=sticky-columns-DlAAdaT4.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sticky-columns-BZWi9zSi.js","sources":["../source/api/layout/box-logo.ts","../source/api/layout/image-expand.ts","../source/api/layout/modal.ts","../source/api/layout/section-intro/common.ts","../source/api/layout/section-intro/small.ts","../source/api/layout/section-intro/wide.ts","../source/api/layout/scroll-top.ts","../source/api/layout/sticky-columns.ts"],"sourcesContent":["import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Slots, Register } from 'model';\nimport { Markup } from 'utilities';\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 Composite.layout.box.logo({\n image: Markup.validate.ImageSlot({\n element,\n ImageSlot: 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 */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n slots,\n createComponent,\n});\n\nexport default registration;\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Slots, Register } from 'model';\nimport { Markup } from 'utilities';\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 Composite.layout.image.expand({\n content: Markup.create.Node.slot({ type: 'content' }),\n image: Markup.validate.ImageSlot({\n element,\n ImageSlot: 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 */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n slots,\n createComponent,\n});\n\nexport default registration;\n","import { Atomic } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Slots, Register } from 'model';\nimport { CreateComponentFunction, LayoutProps } from '../../_types';\n\nconst tagName = 'umd-element-modal';\n\n/**\n * Props for modal component\n */\ninterface ModalProps extends LayoutProps {\n content: HTMLElement | null;\n context: HTMLElement;\n callback: () => void;\n}\n\nconst createComponent: CreateComponentFunction = (element) => {\n const callback = () => {\n element.setAttribute(\n Attributes.names.layout.hidden,\n Attributes.values.state.TRUE,\n );\n };\n\n const props: ModalProps = {\n content: Slots.content.default({ element, isDefaultStyling: false }),\n isHidden: Attributes.isLayout.hidden({ element }),\n context: element,\n callback,\n };\n\n return Atomic.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-visual-open` - Shows the modal when set to \"true\"\n * - `data-visual-closed` - Hides the modal when set to \"true\"\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 default Register.webComponent({\n tagName,\n attributes,\n createComponent,\n});\n","import { Slots } from 'model';\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 { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Slots, Register, Lifecycle } from 'model';\nimport { CommonIntroData } from './common';\nimport { CreateComponentFunction, ComponentRegistration } from '../../../_types';\n\nconst tagName = 'umd-element-section-intro';\n\nconst createComponent: CreateComponentFunction = (element) =>\n Composite.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 includesAnimation: Attributes.includesFeature.animation({ element }),\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. Supports animation on scroll and optional visual separator.\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 * - `data-animation` - Enable scroll-triggered animations:\n * - `true` - Enables entrance animations\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 * @example\n * ```html\n * <!-- Dark theme with animation -->\n * <umd-element-section-intro data-theme=\"dark\" data-animation=\"true\">\n * <h2 slot=\"headline\">Research Excellence</h2>\n * <p>Discover groundbreaking research across multiple disciplines.</p>\n * <a slot=\"actions\" href=\"/research\">Explore Research</a>\n * </umd-element-section-intro>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n afterConnect: Lifecycle.hooks.loadAnimation,\n});\n\nexport default registration;\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Register } from 'model';\nimport { CommonIntroData } from './common';\nimport { CreateComponentFunction, ComponentRegistration } from '../../../_types';\n\nconst tagName = 'umd-element-section-intro-wide';\n\nconst createComponent: CreateComponentFunction = (element) =>\n Composite.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 */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n});\n\nexport default registration;\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Register, Lifecycle } from 'model';\nimport { CreateComponentFunction, LayoutProps } from '../../_types';\n\nconst tagName = 'umd-element-scroll-top';\n\n/**\n * Props for scroll-to-top component\n */\ninterface ScrollTopProps extends Pick<LayoutProps, 'isFixed'> {}\n\nconst createComponent: CreateComponentFunction = (element) => {\n const props: ScrollTopProps = {\n isFixed: element.hasAttribute(\n Attributes.names.deprecated.layout.LAYOUT_FIXED,\n ),\n };\n\n return Composite.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 default Register.webComponent({\n tagName,\n createComponent,\n afterConnect: Lifecycle.hooks.loadOnConnect,\n});\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Slots, Register } from 'model';\nimport { Markup } from 'utilities';\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 Composite.layout.stickyColumns({\n stickyColumn: Markup.create.Node.slot({\n type: Slots.name.STICKY_COLUMN,\n }),\n staticColumn: Markup.create.Node.slot({\n type: Slots.name.STATIC_COLUMN,\n }),\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 */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n slots,\n createComponent,\n attributes,\n});\n\nexport default registration;\n"],"names":["tagName","slots","createComponent","element","Composite","Markup.validate.ImageSlot","Slots","Attributes.isTheme","Attributes.isVisual","registration","Register.webComponent","box_logo_default","Markup.create.Node","image_expand_default","callback","Attributes.names","Attributes.values","props","Attributes.isLayout","Atomic","attributes","Attributes.handler","modal_default","CommonIntroData","isThemeDark","Attributes.includesFeature","Lifecycle.hooks","small_default","wide_default","scroll_top_default","topPosition","Attributes.getValue","sticky_columns_default"],"mappings":"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"}
1
+ {"version":3,"file":"sticky-columns-DlAAdaT4.js","sources":["../source/api/layout/box-logo.ts","../source/api/layout/image-expand.ts","../source/api/layout/modal.ts","../source/api/layout/section-intro/common.ts","../source/api/layout/section-intro/small.ts","../source/api/layout/section-intro/wide.ts","../source/api/layout/scroll-top.ts","../source/api/layout/sticky-columns.ts"],"sourcesContent":["import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Slots, Register } from 'model';\nimport { Markup } from 'utilities';\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 Composite.layout.box.logo({\n image: Markup.validate.ImageSlot({\n element,\n ImageSlot: 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 */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n slots,\n createComponent,\n});\n\nexport default registration;\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Slots, Register } from 'model';\nimport { Markup } from 'utilities';\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 Composite.layout.image.expand({\n content: Markup.create.Node.slot({ type: 'content' }),\n image: Markup.validate.ImageSlot({\n element,\n ImageSlot: 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 */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n slots,\n createComponent,\n});\n\nexport default registration;\n","import { Atomic } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Slots, Register } from 'model';\nimport { CreateComponentFunction, LayoutProps } from '../../_types';\n\nconst tagName = 'umd-element-modal';\n\n/**\n * Props for modal component\n */\ninterface ModalProps extends LayoutProps {\n content: HTMLElement | null;\n context: HTMLElement;\n callback: () => void;\n}\n\nconst createComponent: CreateComponentFunction = (element) => {\n const callback = () => {\n element.setAttribute(\n Attributes.names.layout.hidden,\n Attributes.values.state.TRUE,\n );\n };\n\n const props: ModalProps = {\n content: Slots.content.default({ element, isDefaultStyling: false }),\n isHidden: Attributes.isLayout.hidden({ element }),\n context: element,\n callback,\n };\n\n return Atomic.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-visual-open` - Shows the modal when set to \"true\"\n * - `data-visual-closed` - Hides the modal when set to \"true\"\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 default Register.webComponent({\n tagName,\n attributes,\n createComponent,\n});\n","import { Slots } from 'model';\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 { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Slots, Register, Lifecycle } from 'model';\nimport { CommonIntroData } from './common';\nimport { CreateComponentFunction, ComponentRegistration } from '../../../_types';\n\nconst tagName = 'umd-element-section-intro';\n\nconst createComponent: CreateComponentFunction = (element) =>\n Composite.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 includesAnimation: Attributes.includesFeature.animation({ element }),\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. Supports animation on scroll and optional visual separator.\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 * - `data-animation` - Enable scroll-triggered animations:\n * - `true` - Enables entrance animations\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 * @example\n * ```html\n * <!-- Dark theme with animation -->\n * <umd-element-section-intro data-theme=\"dark\" data-animation=\"true\">\n * <h2 slot=\"headline\">Research Excellence</h2>\n * <p>Discover groundbreaking research across multiple disciplines.</p>\n * <a slot=\"actions\" href=\"/research\">Explore Research</a>\n * </umd-element-section-intro>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n afterConnect: Lifecycle.hooks.loadAnimation,\n});\n\nexport default registration;\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Register } from 'model';\nimport { CommonIntroData } from './common';\nimport { CreateComponentFunction, ComponentRegistration } from '../../../_types';\n\nconst tagName = 'umd-element-section-intro-wide';\n\nconst createComponent: CreateComponentFunction = (element) =>\n Composite.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 */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n});\n\nexport default registration;\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Register, Lifecycle } from 'model';\nimport { CreateComponentFunction, LayoutProps } from '../../_types';\n\nconst tagName = 'umd-element-scroll-top';\n\n/**\n * Props for scroll-to-top component\n */\ninterface ScrollTopProps extends Pick<LayoutProps, 'isFixed'> {}\n\nconst createComponent: CreateComponentFunction = (element) => {\n const props: ScrollTopProps = {\n isFixed: element.hasAttribute(\n Attributes.names.deprecated.layout.LAYOUT_FIXED,\n ),\n };\n\n return Composite.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 default Register.webComponent({\n tagName,\n createComponent,\n afterConnect: Lifecycle.hooks.loadOnConnect,\n});\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Slots, Register } from 'model';\nimport { Markup } from 'utilities';\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 Composite.layout.stickyColumns({\n stickyColumn: Markup.create.Node.slot({\n type: Slots.name.STICKY_COLUMN,\n }),\n staticColumn: Markup.create.Node.slot({\n type: Slots.name.STATIC_COLUMN,\n }),\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 */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n slots,\n createComponent,\n attributes,\n});\n\nexport default registration;\n"],"names":["tagName","slots","createComponent","element","Composite","Markup.validate.ImageSlot","Slots","Attributes.isTheme","Attributes.isVisual","registration","Register.webComponent","box_logo_default","Markup.create.Node","image_expand_default","callback","Attributes.names","Attributes.values","props","Attributes.isLayout","Atomic","attributes","Attributes.handler","modal_default","CommonIntroData","isThemeDark","Attributes.includesFeature","Lifecycle.hooks","small_default","wide_default","scroll_top_default","topPosition","Attributes.getValue","sticky_columns_default"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { n as a, h as t, a as o, l as s } from "./loader-xwmpwCXk.js";
1
+ import { n as a, h as t, a as o, l as s } from "./loader-8wYd7fUZ.js";
2
2
  const n = {
3
3
  actions: o,
4
4
  hero: t,
@@ -1,7 +1,7 @@
1
1
  import { Composite as r } from "@universityofmaryland/web-elements-library";
2
- import { s as a, c as k, i as d, b as c, a as i, f as x } from "./shared/model-4-WQm2Le.js";
3
- import { r as C, I as w, w as m, d as n, h as D, b as S } from "./shared/utilities-B_sPVa-m.js";
4
- import { e as u } from "./_event-BzvNLqqf.js";
2
+ import { s as a, c as k, i as d, b as c, a as i, f as x } from "./shared/model-CHS3WnCo.js";
3
+ import { r as C, I as w, w as m, d as n, h as D, b as S } from "./shared/utilities-CZHe-tKs.js";
4
+ import { e as u } from "./_event-zkKU3M5w.js";
5
5
  import "@universityofmaryland/web-styles-library";
6
6
  const { card: v } = r, T = ({ tagName: e }) => {
7
7
  const s = {
@@ -215,4 +215,4 @@ export {
215
215
  ae as s,
216
216
  te as v
217
217
  };
218
- //# sourceMappingURL=video-n1zTWSI8.js.map
218
+ //# sourceMappingURL=video-Cm_iBOTt.js.map