@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 +1 @@
1
- {"version":3,"file":"list-CWGH3XBG.js","sources":["../source/api/feed/events/common.ts","../source/api/feed/events/grid.ts","../source/api/feed/events/grouped.ts","../source/api/feed/events/list.ts","../source/api/feed/news/common.ts","../source/api/feed/news/featured.ts","../source/api/feed/news/grid.ts","../source/api/feed/news/list.ts"],"sourcesContent":["import { Attributes } from 'model';\nimport { eventProps } from '../_types';\n\nexport const CommonFeedEventsData = ({ element }: { element: HTMLElement }) => {\n const token = Attributes.getValue.feedToken({ element });\n\n if (!token) {\n console.error(`Feed events requires a token to be set`);\n return;\n }\n\n const categories = Attributes.getValue.feedFilterIds({ element });\n\n const data: eventProps = {\n token,\n isThemeDark: Attributes.isTheme.dark({ element }),\n isLazyLoad: Attributes.includesFeature.lazyLoad({ element }),\n ...(categories && { categories: categories.split(',') }),\n };\n\n return data;\n};\n","import * as Feeds from '@universityofmaryland/web-feeds-library';\nimport { Attributes, Register } from 'model';\nimport { CommonFeedEventsData } from './common';\nimport { CreateComponentFunction, ComponentRegistration } from '../../../_types';\n\n/**\n * Tag name for the events grid feed component\n * @internal\n */\nconst tagName = 'umd-feed-events';\n\n/**\n * Creates an events grid feed component\n * @param element - The host HTML element\n * @returns Configured feed component\n * @internal\n */\nconst createComponent: CreateComponentFunction = (element) => {\n const data = CommonFeedEventsData({ element });\n\n if (!data) {\n console.error('Feed events requires a token to be set');\n return { element: document.createElement('div'), styles: '' };\n }\n\n const columnCount =\n Number(Attributes.getValue.layoutColumnCount({ element })) || 3;\n const rowCount = Number(Attributes.getValue.layoutRowCount({ element })) || 1;\n\n return Feeds.events.grid({\n ...data,\n numberOfColumnsToShow: Math.min(Math.max(columnCount, 1), 4),\n numberOfRowsToStart: Math.min(Math.max(rowCount, 1), 2),\n isTransparent: Attributes.isVisual.transparent({ element }),\n });\n};\n\n/**\n * Events Grid Feed Component\n *\n * Displays a dynamic grid of event cards fetched from an external feed.\n * Supports responsive column layouts and lazy loading.\n *\n * ## Custom Element\n * `<umd-feed-events>`\n *\n * ## Attributes\n * - `data-token` - API authentication token (required)\n * - `data-filter-group-ids` - Comma-separated category IDs to filter events\n * - `data-layout-column-count` - Number of columns (1-4, default: 3)\n * - `data-layout-row-count` - Initial rows to display (1-2, default: 1)\n * - `data-theme` - Theme options:\n * - `dark` - Dark theme styling\n * - `data-visual-transparent` - Transparent card backgrounds\n * - `data-lazy-load` - Enable lazy loading of additional events\n *\n * @example\n * ```html\n * <!-- Basic events grid -->\n * <umd-feed-events\n * data-token=\"your-api-token\">\n * </umd-feed-events>\n * ```\n *\n * @example\n * ```html\n * <!-- Events grid with filters and lazy loading -->\n * <umd-feed-events\n * data-token=\"your-api-token\"\n * data-filter-group-ids=\"<added-category-id>, <another-category-id>\"\n * data-layout-column-count=\"4\"\n * data-layout-row-count=\"2\"\n * data-lazy-load=\"true\">\n * </umd-feed-events>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme with transparent cards -->\n * <umd-feed-events\n * data-token=\"your-api-token\"\n * data-theme=\"dark\"\n * data-visual-transparent\n * data-layout-column-count=\"2\">\n * </umd-feed-events>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n afterConnect: (element, shadow) => {\n element?.events?.callback(shadow);\n },\n});\n\nexport default registration;\n","import * as Feeds from '@universityofmaryland/web-feeds-library';\nimport { Register } from 'model';\nimport { CommonFeedEventsData } from './common';\nimport { CreateComponentFunction, ComponentRegistration } from '../../../_types';\n\n/**\n * Tag name for the events grid feed component\n * @internal\n */\nconst tagName = 'umd-feed-events-grouped';\n\n/**\n * Creates an events grid feed component\n * @param element - The host HTML element\n * @returns Configured feed component\n * @internal\n */\nconst createComponent: CreateComponentFunction = (element) => {\n const data = CommonFeedEventsData({ element });\n\n if (!data) {\n console.error('Feed events requires a token to be set');\n return { element: document.createElement('div'), styles: '' };\n }\n\n return Feeds.events.grouped({\n ...data,\n isLazyLoad: true,\n numberOfRowsToStart: 10,\n });\n};\n\n/**\n * Events Grouped List Feed Component\n *\n * Displays a dynamic list of event cards grouped by date, fetched from an external feed.\n * Supports lazy loading.\n *\n * ## Custom Element\n * `<umd-feed-events-grouped>`\n *\n * ## Attributes\n * - `data-token` - API authentication token (required)\n * - `data-theme` - Theme options:\n * - `dark` - Dark theme styling\n *\n * @example\n * ```html\n * <!-- Basic events grid -->\n * <umd-feed-events-grouped\n * data-token=\"your-api-token\">\n * </umd-feed-events-grouped>\n * ```\n *\n *\n * @category Components\n * @since 1.13.0\n */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n afterConnect: (element, shadow) => {\n element?.events?.callback(shadow);\n },\n});\n\nexport default registration;\n","import * as Feeds from '@universityofmaryland/web-feeds-library';\nimport { Attributes, Register } from 'model';\nimport { CommonFeedEventsData } from './common';\nimport { CreateComponentFunction, ComponentRegistration } from '../../../_types';\n\n/**\n * Tag name for the events list feed component\n * @internal\n */\nconst tagName = 'umd-feed-events-list';\n\nconst createComponent: CreateComponentFunction = (element) => {\n const data = CommonFeedEventsData({ element });\n\n if (!data) {\n console.error('Feed events requires a token to be set');\n return { element: document.createElement('div'), styles: '' };\n }\n\n const rowCount = Number(Attributes.getValue.layoutRowCount({ element })) || 5;\n\n return Feeds.events.list({\n ...data,\n numberOfRowsToStart: Math.min(Math.max(rowCount, 1), 10),\n });\n};\n\n/**\n * Events List Feed Component\n *\n * Displays a dynamic list of events fetched from an external feed.\n * Optimized for vertical scanning with date/time/location details.\n *\n * ## Custom Element\n * `<umd-feed-events-list>`\n *\n * ## Attributes\n * - `data-token` - API authentication token (required)\n * - `data-filter-group-ids` - Comma-separated category IDs to filter events\n * - `data-layout-row-count` - Initial rows to display (1-10, default: 5)\n * - `data-theme` - Theme options:\n * - `dark` - Dark theme styling\n * - `data-lazy-load` - Enable lazy loading of additional events\n *\n * @example\n * ```html\n * <!-- Basic events list -->\n * <umd-feed-events-list\n * data-token=\"your-api-token\">\n * </umd-feed-events-list>\n * ```\n *\n * @example\n * ```html\n * <!-- Events list with filters and more items -->\n * <umd-feed-events-list\n * data-token=\"your-api-token\"\n * data-filter-group-ids=\"<added-category-id>, <another-category-id>\"\n * data-layout-row-count=\"10\"\n * data-lazy-load=\"true\">\n * </umd-feed-events-list>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme events list -->\n * <umd-feed-events-list\n * data-token=\"your-api-token\"\n * data-theme=\"dark\"\n * data-layout-row-count=\"7\">\n * </umd-feed-events-list>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n afterConnect: (element, shadow) => {\n element?.events?.callback(shadow);\n },\n});\n\nexport default registration;\n","import { Attributes } from 'model';\nimport { newsProps } from '../_types';\n\nexport const CommonFeedNewsData = ({ element }: { element: HTMLElement }) => {\n const token = Attributes.getValue.feedToken({ element });\n\n if (!token) {\n console.error(`Feed news requires a token to be set`);\n return;\n }\n\n const categoriesAttribute = Attributes.getValue.feedFilterIds({ element });\n const entriesToRemove = Attributes.getValue.feedEntryRemoveIds({ element });\n\n return {\n token,\n isThemeDark: Attributes.isTheme.dark({ element }),\n isLazyLoad: Attributes.includesFeature.lazyLoad({ element }),\n isUnion: Attributes.isData.union({ element }),\n ...(categoriesAttribute && { categories: categoriesAttribute.split(',') }),\n ...(entriesToRemove && { entriesToRemove: entriesToRemove.split(',') }),\n } as newsProps;\n};\n","import * as Feeds from '@universityofmaryland/web-feeds-library';\nimport { Attributes, Register } from 'model';\nimport { CommonFeedNewsData } from './common';\nimport { CreateComponentFunction, ComponentRegistration } from '../../../_types';\n\n/**\n * Tag name for the featured news feed component\n * @internal\n */\nconst tagName = 'umd-feed-news-featured';\n\nconst attributes = Attributes.handler.combine(\n Attributes.handler.observe.visuallyPosition({\n callback: (element, value) => element.events?.setPosition(value),\n }),\n);\n\nconst createComponent: CreateComponentFunction = (element) => {\n const data = CommonFeedNewsData({ element });\n\n if (!data) {\n return { element: document.createElement('div'), styles: '' };\n }\n\n const topPosition = Attributes.getValue.topPosition({ element });\n\n return Feeds.news.featured({\n ...data,\n numberOfRowsToStart: 1,\n isTransparent: Attributes.isVisual.transparent({ element }),\n isLayoutReversed: Attributes.isLayout.reverse({ element }),\n overwriteStickyPosition: topPosition ? parseInt(topPosition) : undefined,\n });\n};\n\n/**\n * Featured News Feed Component\n *\n * Displays a featured news article with sticky positioning and prominent layout.\n * Designed for highlighting top stories with visual impact.\n *\n * ## Custom Element\n * `<umd-feed-news-featured>`\n *\n * ## Attributes\n * - `data-token` - API authentication token (required)\n * - `data-filter-group-ids` - Comma-separated category IDs to filter news\n * - `data-entry-remove-ids` - Comma-separated entry IDs to exclude\n * - `data-theme` - Theme options:\n * - `dark` - Dark theme styling\n * - `data-visual-transparent` - Transparent card background\n * - `data-layout-reverse` - Reverse content layout\n * - `data-top-position` - Override sticky position in pixels\n * - `data-is` - Data flags:\n * - `union` - Union-specific feed configuration\n *\n * ## Observed Attributes\n * - `data-layout-position` - Updates sticky position dynamically\n *\n * @example\n * ```html\n * <!-- Basic featured news -->\n * <umd-feed-news-featured\n * data-token=\"your-api-token\">\n * </umd-feed-news-featured>\n * ```\n *\n * @example\n * ```html\n * <!-- Featured news with custom positioning -->\n * <umd-feed-news-featured\n * data-token=\"your-api-token\"\n * data-filter-group-ids=\"headlines\"\n * data-top-position=\"100\"\n * data-theme=\"dark\">\n * </umd-feed-news-featured>\n * ```\n *\n * @example\n * ```html\n * <!-- Reversed layout with transparency -->\n * <umd-feed-news-featured\n * data-token=\"your-api-token\"\n * data-layout-reverse=\"true\"\n * data-visual-transparent\n * data-entry-remove-ids=\"12345\">\n * </umd-feed-news-featured>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n attributes,\n createComponent,\n afterConnect: (element, shadow) => {\n element?.events?.callback(shadow);\n },\n});\n\nexport default registration;\n","import * as Feeds from '@universityofmaryland/web-feeds-library';\nimport { Attributes, Register } from 'model';\nimport { CommonFeedNewsData } from './common';\nimport { CreateComponentFunction, ComponentRegistration } from '../../../_types';\n\n/**\n * Tag name for the news grid feed component\n * @internal\n */\nconst tagName = 'umd-feed-news';\n\nconst createComponent: CreateComponentFunction = (element) => {\n const data = CommonFeedNewsData({ element });\n\n if (!data) {\n return { element: document.createElement('div'), styles: '' };\n }\n\n const columnCount =\n Number(Attributes.getValue.layoutColumnCount({ element })) || 3;\n const rowCount = Number(Attributes.getValue.layoutRowCount({ element })) || 1;\n\n return Feeds.news.grid({\n ...data,\n numberOfColumnsToShow: Math.min(Math.max(columnCount, 1), 4),\n numberOfRowsToStart: Math.min(Math.max(rowCount, 1), 2),\n isTransparent: Attributes.isVisual.transparent({ element }),\n isTypeOverlay: Attributes.isDisplay.overlay({ element }),\n });\n};\n\n/**\n * News Grid Feed Component\n *\n * Displays a dynamic grid of news articles fetched from an external feed.\n * Supports overlay card styles and entry exclusion.\n *\n * ## Custom Element\n * `<umd-feed-news>`\n *\n * ## Attributes\n * - `data-token` - API authentication token (required)\n * - `data-filter-group-ids` - Comma-separated category IDs to filter news\n * - `data-layout-column-count` - Number of columns (default: 3)\n * - `data-layout-row-count` - Initial rows to display (default: 1)\n * - `data-entry-remove-ids` - Comma-separated entry IDs to exclude\n * - `data-theme` - Theme options:\n * - `dark` - Dark theme styling\n * - `data-lazy-load` - Enable lazy loading of additional articles\n * - `data-display` - Display options:\n * - `overlay` - Use overlay card style\n * - `data-visual-transparent` - Transparent card backgrounds\n * - `data-is` - Data flags:\n * - `union` - Union-specific feed configuration\n *\n * @example\n * ```html\n * <!-- Basic news grid -->\n * <umd-feed-news\n * data-token=\"your-api-token\">\n * </umd-feed-news>\n * ```\n *\n * @example\n * ```html\n * <!-- News grid with overlay style and filters -->\n * <umd-feed-news\n * data-token=\"your-api-token\"\n * data-filter-group-ids=\"research,innovation\"\n * data-display=\"overlay\"\n * data-layout-column-count=\"4\"\n * data-layout-row-count=\"2\"\n * data-lazy-load=\"true\">\n * </umd-feed-news>\n * ```\n *\n * @example\n * ```html\n * <!-- News grid excluding specific articles -->\n * <umd-feed-news\n * data-token=\"your-api-token\"\n * data-entry-remove-ids=\"12345,67890\"\n * data-theme=\"dark\"\n * data-visual-transparent>\n * </umd-feed-news>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n afterConnect: (element, shadow) => {\n element?.events?.callback(shadow);\n },\n});\n\nexport default registration;\n","import * as Feeds from '@universityofmaryland/web-feeds-library';\nimport { Attributes, Register } from 'model';\nimport { CommonFeedNewsData } from './common';\nimport { CreateComponentFunction, ComponentRegistration } from '../../../_types';\n\n/**\n * Tag name for the news list feed component\n * @internal\n */\nconst tagName = 'umd-feed-news-list';\n\nconst createComponent: CreateComponentFunction = (element) => {\n const data = CommonFeedNewsData({ element });\n\n if (!data) {\n return { element: document.createElement('div'), styles: '' };\n }\n\n const rowCount = Number(Attributes.getValue.layoutRowCount({ element })) || 5;\n\n return Feeds.news.list({\n ...data,\n numberOfRowsToStart: rowCount >= 1 && rowCount <= 10 ? rowCount : 5,\n });\n};\n\n/**\n * News List Feed Component\n *\n * Displays a dynamic list of news articles fetched from an external feed.\n * Optimized for vertical scanning with publication dates.\n *\n * ## Custom Element\n * `<umd-feed-news-list>`\n *\n * ## Attributes\n * - `data-token` - API authentication token (required)\n * - `data-filter-group-ids` - Comma-separated category IDs to filter news\n * - `data-layout-row-count` - Initial rows to display (1-10, default: 5)\n * - `data-entry-remove-ids` - Comma-separated entry IDs to exclude\n * - `data-theme` - Theme options:\n * - `dark` - Dark theme styling\n * - `data-lazy-load` - Enable lazy loading of additional articles\n * - `data-is` - Data flags:\n * - `union` - Union-specific feed configuration\n *\n * @example\n * ```html\n * <!-- Basic news list -->\n * <umd-feed-news-list\n * data-token=\"your-api-token\">\n * </umd-feed-news-list>\n * ```\n *\n * @example\n * ```html\n * <!-- News list with filters and more items -->\n * <umd-feed-news-list\n * data-token=\"your-api-token\"\n * data-filter-group-ids=\"faculty,awards\"\n * data-layout-row-count=\"10\"\n * data-lazy-load=\"true\">\n * </umd-feed-news-list>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme with exclusions -->\n * <umd-feed-news-list\n * data-token=\"your-api-token\"\n * data-theme=\"dark\"\n * data-entry-remove-ids=\"12345,67890\"\n * data-layout-row-count=\"7\">\n * </umd-feed-news-list>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n afterConnect: (element, shadow) => {\n element?.events?.callback(shadow);\n },\n});\n\nexport default registration;\n"],"names":["CommonFeedEventsData","element","token","Attributes.getValue","categories","Attributes.isTheme","Attributes.includesFeature","tagName","createComponent","data","columnCount","rowCount","Feeds","Attributes.isVisual","registration","Register.webComponent","shadow","grid_default","grouped_default","list_default","CommonFeedNewsData","categoriesAttribute","entriesToRemove","Attributes.isData","attributes","Attributes.handler","value","topPosition","Attributes.isLayout","featured_default","Attributes.isDisplay"],"mappings":"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"}
1
+ {"version":3,"file":"list-Dwa6U7aH.js","sources":["../source/api/feed/events/common.ts","../source/api/feed/events/grid.ts","../source/api/feed/events/grouped.ts","../source/api/feed/events/list.ts","../source/api/feed/news/common.ts","../source/api/feed/news/featured.ts","../source/api/feed/news/grid.ts","../source/api/feed/news/list.ts"],"sourcesContent":["import { Attributes } from 'model';\nimport { eventProps } from '../_types';\n\nexport const CommonFeedEventsData = ({ element }: { element: HTMLElement }) => {\n const token = Attributes.getValue.feedToken({ element });\n\n if (!token) {\n console.error(`Feed events requires a token to be set`);\n return;\n }\n\n const categories = Attributes.getValue.feedFilterIds({ element });\n\n const data: eventProps = {\n token,\n isThemeDark: Attributes.isTheme.dark({ element }),\n isLazyLoad: Attributes.includesFeature.lazyLoad({ element }),\n ...(categories && { categories: categories.split(',') }),\n };\n\n return data;\n};\n","import * as Feeds from '@universityofmaryland/web-feeds-library';\nimport { Attributes, Register } from 'model';\nimport { CommonFeedEventsData } from './common';\nimport { CreateComponentFunction, ComponentRegistration } from '../../../_types';\n\n/**\n * Tag name for the events grid feed component\n * @internal\n */\nconst tagName = 'umd-feed-events';\n\n/**\n * Creates an events grid feed component\n * @param element - The host HTML element\n * @returns Configured feed component\n * @internal\n */\nconst createComponent: CreateComponentFunction = (element) => {\n const data = CommonFeedEventsData({ element });\n\n if (!data) {\n console.error('Feed events requires a token to be set');\n return { element: document.createElement('div'), styles: '' };\n }\n\n const columnCount =\n Number(Attributes.getValue.layoutColumnCount({ element })) || 3;\n const rowCount = Number(Attributes.getValue.layoutRowCount({ element })) || 1;\n\n return Feeds.events.grid({\n ...data,\n numberOfColumnsToShow: Math.min(Math.max(columnCount, 1), 4),\n numberOfRowsToStart: Math.min(Math.max(rowCount, 1), 2),\n isTransparent: Attributes.isVisual.transparent({ element }),\n });\n};\n\n/**\n * Events Grid Feed Component\n *\n * Displays a dynamic grid of event cards fetched from an external feed.\n * Supports responsive column layouts and lazy loading.\n *\n * ## Custom Element\n * `<umd-feed-events>`\n *\n * ## Attributes\n * - `data-token` - API authentication token (required)\n * - `data-filter-group-ids` - Comma-separated category IDs to filter events\n * - `data-layout-column-count` - Number of columns (1-4, default: 3)\n * - `data-layout-row-count` - Initial rows to display (1-2, default: 1)\n * - `data-theme` - Theme options:\n * - `dark` - Dark theme styling\n * - `data-visual-transparent` - Transparent card backgrounds\n * - `data-lazy-load` - Enable lazy loading of additional events\n *\n * @example\n * ```html\n * <!-- Basic events grid -->\n * <umd-feed-events\n * data-token=\"your-api-token\">\n * </umd-feed-events>\n * ```\n *\n * @example\n * ```html\n * <!-- Events grid with filters and lazy loading -->\n * <umd-feed-events\n * data-token=\"your-api-token\"\n * data-filter-group-ids=\"<added-category-id>, <another-category-id>\"\n * data-layout-column-count=\"4\"\n * data-layout-row-count=\"2\"\n * data-lazy-load=\"true\">\n * </umd-feed-events>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme with transparent cards -->\n * <umd-feed-events\n * data-token=\"your-api-token\"\n * data-theme=\"dark\"\n * data-visual-transparent\n * data-layout-column-count=\"2\">\n * </umd-feed-events>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n afterConnect: (element, shadow) => {\n element?.events?.callback(shadow);\n },\n});\n\nexport default registration;\n","import * as Feeds from '@universityofmaryland/web-feeds-library';\nimport { Register } from 'model';\nimport { CommonFeedEventsData } from './common';\nimport { CreateComponentFunction, ComponentRegistration } from '../../../_types';\n\n/**\n * Tag name for the events grid feed component\n * @internal\n */\nconst tagName = 'umd-feed-events-grouped';\n\n/**\n * Creates an events grid feed component\n * @param element - The host HTML element\n * @returns Configured feed component\n * @internal\n */\nconst createComponent: CreateComponentFunction = (element) => {\n const data = CommonFeedEventsData({ element });\n\n if (!data) {\n console.error('Feed events requires a token to be set');\n return { element: document.createElement('div'), styles: '' };\n }\n\n return Feeds.events.grouped({\n ...data,\n isLazyLoad: true,\n numberOfRowsToStart: 10,\n });\n};\n\n/**\n * Events Grouped List Feed Component\n *\n * Displays a dynamic list of event cards grouped by date, fetched from an external feed.\n * Supports lazy loading.\n *\n * ## Custom Element\n * `<umd-feed-events-grouped>`\n *\n * ## Attributes\n * - `data-token` - API authentication token (required)\n * - `data-theme` - Theme options:\n * - `dark` - Dark theme styling\n *\n * @example\n * ```html\n * <!-- Basic events grid -->\n * <umd-feed-events-grouped\n * data-token=\"your-api-token\">\n * </umd-feed-events-grouped>\n * ```\n *\n *\n * @category Components\n * @since 1.13.0\n */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n afterConnect: (element, shadow) => {\n element?.events?.callback(shadow);\n },\n});\n\nexport default registration;\n","import * as Feeds from '@universityofmaryland/web-feeds-library';\nimport { Attributes, Register } from 'model';\nimport { CommonFeedEventsData } from './common';\nimport { CreateComponentFunction, ComponentRegistration } from '../../../_types';\n\n/**\n * Tag name for the events list feed component\n * @internal\n */\nconst tagName = 'umd-feed-events-list';\n\nconst createComponent: CreateComponentFunction = (element) => {\n const data = CommonFeedEventsData({ element });\n\n if (!data) {\n console.error('Feed events requires a token to be set');\n return { element: document.createElement('div'), styles: '' };\n }\n\n const rowCount = Number(Attributes.getValue.layoutRowCount({ element })) || 5;\n\n return Feeds.events.list({\n ...data,\n numberOfRowsToStart: Math.min(Math.max(rowCount, 1), 10),\n });\n};\n\n/**\n * Events List Feed Component\n *\n * Displays a dynamic list of events fetched from an external feed.\n * Optimized for vertical scanning with date/time/location details.\n *\n * ## Custom Element\n * `<umd-feed-events-list>`\n *\n * ## Attributes\n * - `data-token` - API authentication token (required)\n * - `data-filter-group-ids` - Comma-separated category IDs to filter events\n * - `data-layout-row-count` - Initial rows to display (1-10, default: 5)\n * - `data-theme` - Theme options:\n * - `dark` - Dark theme styling\n * - `data-lazy-load` - Enable lazy loading of additional events\n *\n * @example\n * ```html\n * <!-- Basic events list -->\n * <umd-feed-events-list\n * data-token=\"your-api-token\">\n * </umd-feed-events-list>\n * ```\n *\n * @example\n * ```html\n * <!-- Events list with filters and more items -->\n * <umd-feed-events-list\n * data-token=\"your-api-token\"\n * data-filter-group-ids=\"<added-category-id>, <another-category-id>\"\n * data-layout-row-count=\"10\"\n * data-lazy-load=\"true\">\n * </umd-feed-events-list>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme events list -->\n * <umd-feed-events-list\n * data-token=\"your-api-token\"\n * data-theme=\"dark\"\n * data-layout-row-count=\"7\">\n * </umd-feed-events-list>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n afterConnect: (element, shadow) => {\n element?.events?.callback(shadow);\n },\n});\n\nexport default registration;\n","import { Attributes } from 'model';\nimport { newsProps } from '../_types';\n\nexport const CommonFeedNewsData = ({ element }: { element: HTMLElement }) => {\n const token = Attributes.getValue.feedToken({ element });\n\n if (!token) {\n console.error(`Feed news requires a token to be set`);\n return;\n }\n\n const categoriesAttribute = Attributes.getValue.feedFilterIds({ element });\n const entriesToRemove = Attributes.getValue.feedEntryRemoveIds({ element });\n\n return {\n token,\n isThemeDark: Attributes.isTheme.dark({ element }),\n isLazyLoad: Attributes.includesFeature.lazyLoad({ element }),\n isUnion: Attributes.isData.union({ element }),\n ...(categoriesAttribute && { categories: categoriesAttribute.split(',') }),\n ...(entriesToRemove && { entriesToRemove: entriesToRemove.split(',') }),\n } as newsProps;\n};\n","import * as Feeds from '@universityofmaryland/web-feeds-library';\nimport { Attributes, Register } from 'model';\nimport { CommonFeedNewsData } from './common';\nimport { CreateComponentFunction, ComponentRegistration } from '../../../_types';\n\n/**\n * Tag name for the featured news feed component\n * @internal\n */\nconst tagName = 'umd-feed-news-featured';\n\nconst attributes = Attributes.handler.combine(\n Attributes.handler.observe.visuallyPosition({\n callback: (element, value) => element.events?.setPosition(value),\n }),\n);\n\nconst createComponent: CreateComponentFunction = (element) => {\n const data = CommonFeedNewsData({ element });\n\n if (!data) {\n return { element: document.createElement('div'), styles: '' };\n }\n\n const topPosition = Attributes.getValue.topPosition({ element });\n\n return Feeds.news.featured({\n ...data,\n numberOfRowsToStart: 1,\n isTransparent: Attributes.isVisual.transparent({ element }),\n isLayoutReversed: Attributes.isLayout.reverse({ element }),\n overwriteStickyPosition: topPosition ? parseInt(topPosition) : undefined,\n });\n};\n\n/**\n * Featured News Feed Component\n *\n * Displays a featured news article with sticky positioning and prominent layout.\n * Designed for highlighting top stories with visual impact.\n *\n * ## Custom Element\n * `<umd-feed-news-featured>`\n *\n * ## Attributes\n * - `data-token` - API authentication token (required)\n * - `data-filter-group-ids` - Comma-separated category IDs to filter news\n * - `data-entry-remove-ids` - Comma-separated entry IDs to exclude\n * - `data-theme` - Theme options:\n * - `dark` - Dark theme styling\n * - `data-visual-transparent` - Transparent card background\n * - `data-layout-reverse` - Reverse content layout\n * - `data-top-position` - Override sticky position in pixels\n * - `data-is` - Data flags:\n * - `union` - Union-specific feed configuration\n *\n * ## Observed Attributes\n * - `data-layout-position` - Updates sticky position dynamically\n *\n * @example\n * ```html\n * <!-- Basic featured news -->\n * <umd-feed-news-featured\n * data-token=\"your-api-token\">\n * </umd-feed-news-featured>\n * ```\n *\n * @example\n * ```html\n * <!-- Featured news with custom positioning -->\n * <umd-feed-news-featured\n * data-token=\"your-api-token\"\n * data-filter-group-ids=\"headlines\"\n * data-top-position=\"100\"\n * data-theme=\"dark\">\n * </umd-feed-news-featured>\n * ```\n *\n * @example\n * ```html\n * <!-- Reversed layout with transparency -->\n * <umd-feed-news-featured\n * data-token=\"your-api-token\"\n * data-layout-reverse=\"true\"\n * data-visual-transparent\n * data-entry-remove-ids=\"12345\">\n * </umd-feed-news-featured>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n attributes,\n createComponent,\n afterConnect: (element, shadow) => {\n element?.events?.callback(shadow);\n },\n});\n\nexport default registration;\n","import * as Feeds from '@universityofmaryland/web-feeds-library';\nimport { Attributes, Register } from 'model';\nimport { CommonFeedNewsData } from './common';\nimport { CreateComponentFunction, ComponentRegistration } from '../../../_types';\n\n/**\n * Tag name for the news grid feed component\n * @internal\n */\nconst tagName = 'umd-feed-news';\n\nconst createComponent: CreateComponentFunction = (element) => {\n const data = CommonFeedNewsData({ element });\n\n if (!data) {\n return { element: document.createElement('div'), styles: '' };\n }\n\n const columnCount =\n Number(Attributes.getValue.layoutColumnCount({ element })) || 3;\n const rowCount = Number(Attributes.getValue.layoutRowCount({ element })) || 1;\n\n return Feeds.news.grid({\n ...data,\n numberOfColumnsToShow: Math.min(Math.max(columnCount, 1), 4),\n numberOfRowsToStart: Math.min(Math.max(rowCount, 1), 2),\n isTransparent: Attributes.isVisual.transparent({ element }),\n isTypeOverlay: Attributes.isDisplay.overlay({ element }),\n });\n};\n\n/**\n * News Grid Feed Component\n *\n * Displays a dynamic grid of news articles fetched from an external feed.\n * Supports overlay card styles and entry exclusion.\n *\n * ## Custom Element\n * `<umd-feed-news>`\n *\n * ## Attributes\n * - `data-token` - API authentication token (required)\n * - `data-filter-group-ids` - Comma-separated category IDs to filter news\n * - `data-layout-column-count` - Number of columns (default: 3)\n * - `data-layout-row-count` - Initial rows to display (default: 1)\n * - `data-entry-remove-ids` - Comma-separated entry IDs to exclude\n * - `data-theme` - Theme options:\n * - `dark` - Dark theme styling\n * - `data-lazy-load` - Enable lazy loading of additional articles\n * - `data-display` - Display options:\n * - `overlay` - Use overlay card style\n * - `data-visual-transparent` - Transparent card backgrounds\n * - `data-is` - Data flags:\n * - `union` - Union-specific feed configuration\n *\n * @example\n * ```html\n * <!-- Basic news grid -->\n * <umd-feed-news\n * data-token=\"your-api-token\">\n * </umd-feed-news>\n * ```\n *\n * @example\n * ```html\n * <!-- News grid with overlay style and filters -->\n * <umd-feed-news\n * data-token=\"your-api-token\"\n * data-filter-group-ids=\"research,innovation\"\n * data-display=\"overlay\"\n * data-layout-column-count=\"4\"\n * data-layout-row-count=\"2\"\n * data-lazy-load=\"true\">\n * </umd-feed-news>\n * ```\n *\n * @example\n * ```html\n * <!-- News grid excluding specific articles -->\n * <umd-feed-news\n * data-token=\"your-api-token\"\n * data-entry-remove-ids=\"12345,67890\"\n * data-theme=\"dark\"\n * data-visual-transparent>\n * </umd-feed-news>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n afterConnect: (element, shadow) => {\n element?.events?.callback(shadow);\n },\n});\n\nexport default registration;\n","import * as Feeds from '@universityofmaryland/web-feeds-library';\nimport { Attributes, Register } from 'model';\nimport { CommonFeedNewsData } from './common';\nimport { CreateComponentFunction, ComponentRegistration } from '../../../_types';\n\n/**\n * Tag name for the news list feed component\n * @internal\n */\nconst tagName = 'umd-feed-news-list';\n\nconst createComponent: CreateComponentFunction = (element) => {\n const data = CommonFeedNewsData({ element });\n\n if (!data) {\n return { element: document.createElement('div'), styles: '' };\n }\n\n const rowCount = Number(Attributes.getValue.layoutRowCount({ element })) || 5;\n\n return Feeds.news.list({\n ...data,\n numberOfRowsToStart: rowCount >= 1 && rowCount <= 10 ? rowCount : 5,\n });\n};\n\n/**\n * News List Feed Component\n *\n * Displays a dynamic list of news articles fetched from an external feed.\n * Optimized for vertical scanning with publication dates.\n *\n * ## Custom Element\n * `<umd-feed-news-list>`\n *\n * ## Attributes\n * - `data-token` - API authentication token (required)\n * - `data-filter-group-ids` - Comma-separated category IDs to filter news\n * - `data-layout-row-count` - Initial rows to display (1-10, default: 5)\n * - `data-entry-remove-ids` - Comma-separated entry IDs to exclude\n * - `data-theme` - Theme options:\n * - `dark` - Dark theme styling\n * - `data-lazy-load` - Enable lazy loading of additional articles\n * - `data-is` - Data flags:\n * - `union` - Union-specific feed configuration\n *\n * @example\n * ```html\n * <!-- Basic news list -->\n * <umd-feed-news-list\n * data-token=\"your-api-token\">\n * </umd-feed-news-list>\n * ```\n *\n * @example\n * ```html\n * <!-- News list with filters and more items -->\n * <umd-feed-news-list\n * data-token=\"your-api-token\"\n * data-filter-group-ids=\"faculty,awards\"\n * data-layout-row-count=\"10\"\n * data-lazy-load=\"true\">\n * </umd-feed-news-list>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme with exclusions -->\n * <umd-feed-news-list\n * data-token=\"your-api-token\"\n * data-theme=\"dark\"\n * data-entry-remove-ids=\"12345,67890\"\n * data-layout-row-count=\"7\">\n * </umd-feed-news-list>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n afterConnect: (element, shadow) => {\n element?.events?.callback(shadow);\n },\n});\n\nexport default registration;\n"],"names":["CommonFeedEventsData","element","token","Attributes.getValue","categories","Attributes.isTheme","Attributes.includesFeature","tagName","createComponent","data","columnCount","rowCount","Feeds","Attributes.isVisual","registration","Register.webComponent","shadow","grid_default","grouped_default","list_default","CommonFeedNewsData","categoriesAttribute","entriesToRemove","Attributes.isData","attributes","Attributes.handler","value","topPosition","Attributes.isLayout","featured_default","Attributes.isDisplay"],"mappings":";;;;AAGO,MAAMA,IAAuB,CAAC,EAAE,SAAAC,QAAwC;AAC7E,QAAMC,IAAQC,EAAoB,UAAU,EAAE,SAAAF,GAAS;AAEvD,MAAI,CAACC,GAAO;AACV,YAAQ,MAAM,wCAAwC;AACtD;AAAA,EACF;AAEA,QAAME,IAAaD,EAAoB,cAAc,EAAE,SAAAF,GAAS;AAShE,SAPyB;AAAA,IACvB,OAAAC;AAAA,IACA,aAAaG,EAAmB,KAAK,EAAE,SAAAJ,GAAS;AAAA,IAChD,YAAYK,EAA2B,SAAS,EAAE,SAAAL,GAAS;AAAA,IAC3D,GAAIG,KAAc,EAAE,YAAYA,EAAW,MAAM,GAAG,EAAA;AAAA,EAAE;AAI1D,GCZMG,IAAU,mBAQVC,IAA2C,CAACP,MAAY;AAC5D,QAAMQ,IAAOT,EAAqB,EAAE,SAAAC,GAAS;AAE7C,MAAI,CAACQ;AACH,mBAAQ,MAAM,wCAAwC,GAC/C,EAAE,SAAS,SAAS,cAAc,KAAK,GAAG,QAAQ,GAAA;AAG3D,QAAMC,IACJ,OAAOP,EAAoB,kBAAkB,EAAE,SAAAF,EAAA,CAAS,CAAC,KAAK,GAC1DU,IAAW,OAAOR,EAAoB,eAAe,EAAE,SAAAF,EAAA,CAAS,CAAC,KAAK;AAE5E,SAAOW,EAAM,OAAO,KAAK;AAAA,IACvB,GAAGH;AAAA,IACH,uBAAuB,KAAK,IAAI,KAAK,IAAIC,GAAa,CAAC,GAAG,CAAC;AAAA,IAC3D,qBAAqB,KAAK,IAAI,KAAK,IAAIC,GAAU,CAAC,GAAG,CAAC;AAAA,IACtD,eAAeE,EAAoB,YAAY,EAAE,SAAAZ,GAAS;AAAA,EAAA,CAC3D;AACH,GAuDMa,IAAsCC,EAAsB;AAAA,EAAA,SAChER;AAAAA,EAAA,iBACAC;AAAAA,EACA,cAAc,CAACP,GAASe,MAAW;AACjC,IAAAf,GAAS,QAAQ,SAASe,CAAM;AAAA,EAClC;AACF,CAAC;AAED,IAAOC,IAAQH;ACzFf,MAAMP,IAAU,2BAQVC,IAA2C,CAACP,MAAY;AAC5D,QAAMQ,IAAOT,EAAqB,EAAE,SAAAC,GAAS;AAE7C,SAAKQ,IAKEG,EAAM,OAAO,QAAQ;AAAA,IAC1B,GAAGH;AAAA,IACH,YAAY;AAAA,IACZ,qBAAqB;AAAA,EAAA,CACtB,KARC,QAAQ,MAAM,wCAAwC,GAC/C,EAAE,SAAS,SAAS,cAAc,KAAK,GAAG,QAAQ,GAAA;AAQ7D,GA4BMK,IAAsCC,EAAsB;AAAA,EAAA,SAChER;AAAAA,EAAA,iBACAC;AAAAA,EACA,cAAc,CAACP,GAASe,MAAW;AACjC,IAAAf,GAAS,QAAQ,SAASe,CAAM;AAAA,EAClC;AACF,CAAC;AAED,IAAOE,IAAQJ;ACzDf,MAAMP,IAAU,wBAEVC,IAA2C,CAACP,MAAY;AAC5D,QAAMQ,IAAOT,EAAqB,EAAE,SAAAC,GAAS;AAE7C,MAAI,CAACQ;AACH,mBAAQ,MAAM,wCAAwC,GAC/C,EAAE,SAAS,SAAS,cAAc,KAAK,GAAG,QAAQ,GAAA;AAG3D,QAAME,IAAW,OAAOR,EAAoB,eAAe,EAAE,SAAAF,EAAA,CAAS,CAAC,KAAK;AAE5E,SAAOW,EAAM,OAAO,KAAK;AAAA,IACvB,GAAGH;AAAA,IACH,qBAAqB,KAAK,IAAI,KAAK,IAAIE,GAAU,CAAC,GAAG,EAAE;AAAA,EAAA,CACxD;AACH,GAmDMG,IAAsCC,EAAsB;AAAA,EAAA,SAChER;AAAAA,EAAA,iBACAC;AAAAA,EACA,cAAc,CAACP,GAASe,MAAW;AACjC,IAAAf,GAAS,QAAQ,SAASe,CAAM;AAAA,EAClC;AACF,CAAC;AAED,IAAOG,IAAQL;ACjFR,MAAMM,IAAqB,CAAC,EAAE,SAAAnB,QAAwC;AAC3E,QAAMC,IAAQC,EAAoB,UAAU,EAAE,SAAAF,GAAS;AAEvD,MAAI,CAACC,GAAO;AACV,YAAQ,MAAM,sCAAsC;AACpD;AAAA,EACF;AAEA,QAAMmB,IAAsBlB,EAAoB,cAAc,EAAE,SAAAF,GAAS,GACnEqB,IAAkBnB,EAAoB,mBAAmB,EAAE,SAAAF,GAAS;AAE1E,SAAO;AAAA,IACL,OAAAC;AAAA,IACA,aAAaG,EAAmB,KAAK,EAAE,SAAAJ,GAAS;AAAA,IAChD,YAAYK,EAA2B,SAAS,EAAE,SAAAL,GAAS;AAAA,IAC3D,SAASsB,EAAkB,MAAM,EAAE,SAAAtB,GAAS;AAAA,IAC5C,GAAIoB,KAAuB,EAAE,YAAYA,EAAoB,MAAM,GAAG,EAAA;AAAA,IACtE,GAAIC,KAAmB,EAAE,iBAAiBA,EAAgB,MAAM,GAAG,EAAA;AAAA,EAAE;AAEzE,GCbMf,IAAU,0BAEViB,IAAaC,EAAmB;AAAA,EACpCA,EAAmB,QAAQ,iBAAiB;AAAA,IAC1C,UAAU,CAACxB,GAASyB,MAAUzB,EAAQ,QAAQ,YAAYyB,CAAK;AAAA,EAAA,CAChE;AACH,GAEMlB,IAA2C,CAACP,MAAY;AAC5D,QAAMQ,IAAOW,EAAmB,EAAE,SAAAnB,GAAS;AAE3C,MAAI,CAACQ;AACH,WAAO,EAAE,SAAS,SAAS,cAAc,KAAK,GAAG,QAAQ,GAAA;AAG3D,QAAMkB,IAAcxB,EAAoB,YAAY,EAAE,SAAAF,GAAS;AAE/D,SAAOW,EAAM,KAAK,SAAS;AAAA,IACzB,GAAGH;AAAA,IACH,qBAAqB;AAAA,IACrB,eAAeI,EAAoB,YAAY,EAAE,SAAAZ,GAAS;AAAA,IAC1D,kBAAkB2B,EAAoB,QAAQ,EAAE,SAAA3B,GAAS;AAAA,IACzD,yBAAyB0B,IAAc,SAASA,CAAW,IAAI;AAAA,EAAA,CAChE;AACH,GA2DMb,IAAsCC,EAAsB;AAAA,EAAA,SAChER;AAAAA,EACA,YAAAiB;AAAA,EAAA,iBACAhB;AAAAA,EACA,cAAc,CAACP,GAASe,MAAW;AACjC,IAAAf,GAAS,QAAQ,SAASe,CAAM;AAAA,EAClC;AACF,CAAC;AAED,IAAOa,IAAQf;AC5Ff,MAAMP,IAAU,iBAEVC,IAA2C,CAACP,MAAY;AAC5D,QAAMQ,IAAOW,EAAmB,EAAE,SAAAnB,GAAS;AAE3C,MAAI,CAACQ;AACH,WAAO,EAAE,SAAS,SAAS,cAAc,KAAK,GAAG,QAAQ,GAAA;AAG3D,QAAMC,IACJ,OAAOP,EAAoB,kBAAkB,EAAE,SAAAF,EAAA,CAAS,CAAC,KAAK,GAC1DU,IAAW,OAAOR,EAAoB,eAAe,EAAE,SAAAF,EAAA,CAAS,CAAC,KAAK;AAE5E,SAAOW,EAAM,KAAK,KAAK;AAAA,IACrB,GAAGH;AAAA,IACH,uBAAuB,KAAK,IAAI,KAAK,IAAIC,GAAa,CAAC,GAAG,CAAC;AAAA,IAC3D,qBAAqB,KAAK,IAAI,KAAK,IAAIC,GAAU,CAAC,GAAG,CAAC;AAAA,IACtD,eAAeE,EAAoB,YAAY,EAAE,SAAAZ,GAAS;AAAA,IAC1D,eAAe6B,EAAqB,QAAQ,EAAE,SAAA7B,GAAS;AAAA,EAAA,CACxD;AACH,GA6DMa,IAAsCC,EAAsB;AAAA,EAAA,SAChER;AAAAA,EAAA,iBACAC;AAAAA,EACA,cAAc,CAACP,GAASe,MAAW;AACjC,IAAAf,GAAS,QAAQ,SAASe,CAAM;AAAA,EAClC;AACF,CAAC;AAED,IAAOC,IAAQH;ACzFf,MAAMP,IAAU,sBAEVC,IAA2C,CAACP,MAAY;AAC5D,QAAMQ,IAAOW,EAAmB,EAAE,SAAAnB,GAAS;AAE3C,MAAI,CAACQ;AACH,WAAO,EAAE,SAAS,SAAS,cAAc,KAAK,GAAG,QAAQ,GAAA;AAG3D,QAAME,IAAW,OAAOR,EAAoB,eAAe,EAAE,SAAAF,EAAA,CAAS,CAAC,KAAK;AAE5E,SAAOW,EAAM,KAAK,KAAK;AAAA,IACrB,GAAGH;AAAA,IACH,qBAAqBE,KAAY,KAAKA,KAAY,KAAKA,IAAW;AAAA,EAAA,CACnE;AACH,GAuDMG,IAAsCC,EAAsB;AAAA,EAChE,SAAAR;AAAA,EACA,iBAAAC;AAAA,EACA,cAAc,CAACP,GAASe,MAAW;AACjC,IAAAf,GAAS,QAAQ,SAASe,CAAM;AAAA,EAClC;AACF,CAAC;AAED,IAAOG,IAAQL;"}
@@ -1,26 +1,26 @@
1
- import { i as d } from "./item-CbhwHIpH.js";
2
- import { d as n } from "./display-DECqmVEZ.js";
3
- import { s as f, a as u, p as c } from "./site-DtjJCbAC.js";
4
- import { c as m, s as p } from "./chevron-scroll-OMtKW5S9.js";
5
- import { v as _, s as g, o as h, i as y, e as v, a as b } from "./video-n1zTWSI8.js";
6
- import { w, t as S, m as k, s as I, c as L, b as x } from "./wide-CoHOWBGB.js";
7
- import { c as A, b as $, f as E, l as F, a as C, g as D } from "./list-CWGH3XBG.js";
1
+ import { i as d } from "./item-DwMV1mFy.js";
2
+ import { d as n } from "./display-DvhD-oDO.js";
3
+ import { s as f, a as u, p as c } from "./site-CpSb21QB.js";
4
+ import { c as m, s as p } from "./chevron-scroll-BZtdKUuJ.js";
5
+ import { v as _, s as g, o as h, i as y, e as v, a as b } from "./video-Cm_iBOTt.js";
6
+ import { w, t as S, m as k, s as I, c as L, b as x } from "./wide-omTQQ6Wr.js";
7
+ import { c as A, b as $, f as E, l as F, a as C, g as D } from "./list-Dwa6U7aH.js";
8
8
  import { Composite as pa } from "@universityofmaryland/web-elements-library";
9
- import { h as _a, m as t, n as i, f as r, g as l } from "./shared/model-4-WQm2Le.js";
10
- import { w as ga } from "./shared/utilities-B_sPVa-m.js";
11
- import { o as O } from "./options-BvmHmwsE.js";
12
- import { m as G, l as B, e as H, g as N, v as P, b as U } from "./minimal-DxGUDvv6.js";
13
- import { c as j, s as T, w as M, a as V, m as W, i as q, b as z } from "./sticky-columns-BZWi9zSi.js";
14
- import { g as K, i as J } from "./gif-DFmy3K6d.js";
15
- import { a as Q, s as R, i as X, h as Y, d as Z, b as aa } from "./sticky-OTUETMNA.js";
16
- import { h as ea, i as ta } from "./highlight-DHa9w3Pn.js";
17
- import { h as sa, d as oa, b as ia } from "./hero-DJY4qxON.js";
18
- import { d as ra } from "./display-wE0il7rr.js";
19
- import { f as la, d as da } from "./feed-BSntlEBA.js";
20
- import { s as na } from "./sharing-jgM675YU.js";
21
- import { d as fa } from "./display-BCa3axfI.js";
22
- import { d as ua } from "./display-D2GEPqCW.js";
23
- import { e as ca } from "./event-lockup-DQgwp3gO.js";
9
+ import { h as _a, m as t, n as i, f as r, g as l } from "./shared/model-CHS3WnCo.js";
10
+ import { w as ga } from "./shared/utilities-CZHe-tKs.js";
11
+ import { o as O } from "./options-CZuC7PDp.js";
12
+ import { m as G, l as B, e as H, g as N, v as P, b as U } from "./minimal-DPc0ZoRw.js";
13
+ import { c as j, s as T, w as M, a as V, m as W, i as q, b as z } from "./sticky-columns-DlAAdaT4.js";
14
+ import { g as K, i as J } from "./gif-DcCErswK.js";
15
+ import { a as Q, s as R, i as X, h as Y, d as Z, b as aa } from "./sticky-CMFVqgPc.js";
16
+ import { h as ea, i as ta } from "./highlight-C3vD7SBd.js";
17
+ import { h as sa, d as oa, b as ia } from "./hero-Bn4rdy_N.js";
18
+ import { d as ra } from "./display-BAWPSZWk.js";
19
+ import { f as la, d as da } from "./feed-D5nqCXw5.js";
20
+ import { s as na } from "./sharing--wGjj16l.js";
21
+ import { d as fa } from "./display-yOrx8Qu7.js";
22
+ import { d as ua } from "./display-HZowWri1.js";
23
+ import { e as ca } from "./event-lockup-DJPiglgR.js";
24
24
  const ha = "umd-element-navigation-utility", ya = (a) => {
25
25
  const s = a.hasAttribute("role"), e = a.hasAttribute("aria-label");
26
26
  return s || a.setAttribute("role", "navigation"), e || a.setAttribute("aria-label", "Utility navigation"), pa.navigation.utility({
@@ -232,4 +232,4 @@ export {
232
232
  Ha as s,
233
233
  Pa as t
234
234
  };
235
- //# sourceMappingURL=loader-xwmpwCXk.js.map
235
+ //# sourceMappingURL=loader-8wYd7fUZ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader-xwmpwCXk.js","sources":["../source/api/feed/alert/index.ts","../source/api/index.ts","../source/exports/loader.ts"],"sourcesContent":["import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Register } from 'model';\nimport { CreateComponentFunction } from '../../../_types';\n\n/**\n * Tag name for the utility navigation web component\n */\nconst tagName = 'umd-element-navigation-utility';\n\n/**\n * Creates a utility navigation component with the provided configuration\n */\nconst createComponent: CreateComponentFunction = (element) => {\n const hasLandmark = element.hasAttribute('role');\n const hasLabel = element.hasAttribute('aria-label');\n\n if (!hasLandmark) {\n element.setAttribute('role', 'navigation');\n }\n\n if (!hasLabel) {\n element.setAttribute('aria-label', 'Utility navigation');\n }\n\n return Composite.navigation.utility({\n alertUrl: Attributes.getValue.alertUrl({ element }),\n giftUrl:\n Attributes.getValue.giftUrl({\n element,\n }) || 'https://giving.umd.edu/giving',\n isAdmissionsFeed: Attributes.isInfo.admissions({ element }),\n isAlertOff: Attributes.isLayout.alertOff({ element }),\n isEventsFeed: Attributes.isInfo.events({ element }),\n isGiftsFeed: Attributes.hasInfo.gifts({ element }),\n isLockFull: Attributes.isLayout.lockFull({ element }),\n isNewsFeed: Attributes.isInfo.news({ element }),\n isSchoolsFeed: Attributes.isInfo.schools({ element }),\n isSearch: Attributes.hasInfo.search({ element }),\n isSearchDomain: Attributes.isInfo.searchDomain({ element }),\n });\n};\n\n/**\n * Attribute handlers for the utility navigation component\n */\nconst attributes = Attributes.handler.common.visualShowHide({\n onShow: (element) => element.events?.showAlert(),\n onHide: (element) => element.events?.hideAlert(),\n});\n\n/**\n * Utility Navigation\n *\n * A specialized navigation component for utility links and university-wide resources.\n * Includes support for alerts, search, feeds, and giving options. Automatically adds\n * accessibility attributes if not provided.\n *\n * ## Custom Element\n * `<umd-element-navigation-utility>`\n *\n * ## Attributes\n * - `data-gift-url` - Custom URL for giving link (default: https://giving.umd.edu/giving)\n * - `data-alert-url` - URL for alert/emergency information\n * - `data-info` - Enable specific information feeds:\n * - `search` - Enable search functionality\n * - `search-domain` - Enable domain-specific search\n * - `news` - Show news feed\n * - `events` - Show events feed\n * - `schools` - Show schools listing\n * - `admissions` - Show admissions information\n * - `gifts` - Show giving information\n * - `data-layout` - Layout options:\n * - `lock-full` - Full-width lock layout\n * - `alert-off` - Hide alert section\n *\n * ## Observed Attributes\n * - `data-layout-alert-off` - Dynamically show/hide alert section\n *\n * @example\n * ```html\n * <!-- Basic utility navigation -->\n * <umd-element-navigation-utility\n * data-info=\"search\">\n * </umd-element-navigation-utility>\n * ```\n *\n * @example\n * ```html\n * <!-- Full utility navigation with feeds -->\n * <umd-element-navigation-utility\n * data-info=\"search,news,events\"\n * data-gift-url=\"/support-umd\"\n * data-alert-url=\"/emergency\">\n * </umd-element-navigation-utility>\n * ```\n *\n * @example\n * ```html\n * <!-- Utility navigation with custom layout -->\n * <umd-element-navigation-utility\n * data-info=\"search,schools,admissions\"\n * data-layout=\"lock-full\"\n * role=\"navigation\"\n * aria-label=\"University resources\">\n * </umd-element-navigation-utility>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nexport default Register.webComponent({\n tagName,\n createComponent,\n attributes,\n});\n","/**\n * Component Registration Functions\n *\n * All web component registration functions for the UMD Design System.\n * Each function must be called to register its component with the browser.\n *\n * @example\n * ```typescript\n * import * as Components from '@universityofmaryland/web-components-library/api';\n *\n * // Register specific components\n * Components.accordion.item();\n * Components.card.standard();\n * Components.hero.base();\n * ```\n */\n\n// Accordion\nimport accordionItem from './accordion/item';\nexport { default as accordionItem } from './accordion/item';\n\n// Actions\nimport actionsDisplay from './actions/display';\nexport { default as actionsDisplay } from './actions/display';\n\n// Alert\nimport alertPage from './alert/page';\nimport alertPromo from './alert/promo';\nimport alertSite from './alert/site';\nexport { default as alertPage } from './alert/page';\nexport { default as alertPromo } from './alert/promo';\nexport { default as alertSite } from './alert/site';\n\n// Brand\nimport brandCardStack from './brand/stack';\nimport brandChevronScroll from './brand/chevron-scroll';\nexport { default as brandCardStack } from './brand/stack';\nexport { default as brandChevronScroll } from './brand/chevron-scroll';\n\n// Card\nimport cardArticle from './card/article';\nimport cardEvent from './card/event';\nimport cardIcon from './card/icon';\nimport cardOverlay from './card/overlay';\nimport cardStandard from './card/standard';\nimport cardVideo from './card/video';\nexport { default as cardArticle } from './card/article';\nexport { default as cardEvent } from './card/event';\nexport { default as cardIcon } from './card/icon';\nexport { default as cardOverlay } from './card/overlay';\nexport { default as cardStandard } from './card/standard';\nexport { default as cardVideo } from './card/video';\n\n// Carousel\nimport carouselBase from './carousel/base';\nimport carouselCards from './carousel/cards';\nimport carouselImageSingle from './carousel/image/single';\nimport carouselImageMultiple from './carousel/image/multiple';\nimport carouselThumbnail from './carousel/thumbnail';\nimport carouselWide from './carousel/wide';\nexport { default as carouselBase } from './carousel/base';\nexport { default as carouselCards } from './carousel/cards';\nexport { default as carouselImageSingle } from './carousel/image/single';\nexport { default as carouselImageMultiple } from './carousel/image/multiple';\nexport { default as carouselThumbnail } from './carousel/thumbnail';\nexport { default as carouselWide } from './carousel/wide';\n\n// Feed\nimport feedEventsGrid from './feed/events/grid';\nimport feedEventsGrouped from './feed/events/grouped';\nimport feedEventsList from './feed/events/list';\nimport feedNewsFeatured from './feed/news/featured';\nimport feedNewsGrid from './feed/news/grid';\nimport feedNewsList from './feed/news/list';\nimport feedAlert from './feed/alert';\n\nexport { default as feedEventsGrid } from './feed/events/grid';\nexport { default as feedEventsGrouped } from './feed/events/grouped';\nexport { default as feedEventsList } from './feed/events/list';\nexport { default as feedNewsFeatured } from './feed/news/featured';\nexport { default as feedNewsGrid } from './feed/news/grid';\nexport { default as feedNewsList } from './feed/news/list';\nexport { default as feedAlert } from './feed/alert';\n\n// Footer\nimport footerOptions from './footer/options';\nexport { default as footerOptions } from './footer/options';\n\n// Hero\nimport heroBase from './hero/base';\nimport heroVideoArrow from './hero/custom/video';\nimport heroGrid from './hero/custom/grid';\nimport heroExpand from './hero/custom/expand';\nimport heroLogo from './hero/logo';\nimport heroMinimal from './hero/minimal';\nexport { default as heroBase } from './hero/base';\nexport { default as heroVideoArrow } from './hero/custom/video';\nexport { default as heroGrid } from './hero/custom/grid';\nexport { default as heroExpand } from './hero/custom/expand';\nexport { default as heroLogo } from './hero/logo';\nexport { default as heroMinimal } from './hero/minimal';\n\n// Layout\nimport layoutBoxLogo from './layout/box-logo';\nimport layoutImageExpand from './layout/image-expand';\nimport layoutModal from './layout/modal';\nimport layoutSectionIntroSmall from './layout/section-intro/small';\nimport layoutSectionIntroWide from './layout/section-intro/wide';\nimport layoutScrollTop from './layout/scroll-top';\nimport layoutStickyColumns from './layout/sticky-columns';\nexport { default as layoutBoxLogo } from './layout/box-logo';\nexport { default as layoutImageExpand } from './layout/image-expand';\nexport { default as layoutModal } from './layout/modal';\nexport { default as layoutSectionIntroSmall } from './layout/section-intro/small';\nexport { default as layoutSectionIntroWide } from './layout/section-intro/wide';\nexport { default as layoutScrollTop } from './layout/scroll-top';\nexport { default as layoutStickyColumns } from './layout/sticky-columns';\n\n// Media\nimport mediaInline from './media/inline';\nimport mediaGif from './media/gif';\nexport { default as mediaInline } from './media/inline';\nexport { default as mediaGif } from './media/gif';\n\n// Navigation\nimport navigationBreadcrumb from './navigation/breadcrumb';\nimport navigationDrawer from './navigation/drawer';\nimport navigationHeader from './navigation/header';\nimport navigationItem from './navigation/item';\nimport navigationSlider from './navigation/slider';\nimport navigationSticky from './navigation/sticky';\n\nexport { default as navigationBreadcrumb } from './navigation/breadcrumb';\nexport { default as navigationDrawer } from './navigation/drawer';\nexport { default as navigationHeader } from './navigation/header';\nexport { default as navigationItem } from './navigation/item';\nexport { default as navigationSlider } from './navigation/slider';\nexport { default as navigationSticky } from './navigation/sticky';\n\n// Pathway\nimport pathwayImage from './pathway/image';\nimport pathwayHighlight from './pathway/highlight';\nexport { default as pathwayImage } from './pathway/image';\nexport { default as pathwayHighlight } from './pathway/highlight';\n\n// Person\nimport personBio from './person/bio';\nimport personDisplay from './person/display';\nimport personHero from './person/hero';\nexport { default as personBio } from './person/bio';\nexport { default as personDisplay } from './person/display';\nexport { default as personHero } from './person/hero';\n\n// Quote\nimport quoteDisplay from './quote/display';\nexport { default as quoteDisplay } from './quote/display';\n\n// Slider\nimport sliderEventDisplay from './slider/event/display';\nimport sliderEventFeed from './slider/event/feed';\nexport { default as sliderEventDisplay } from './slider/event/display';\nexport { default as sliderEventFeed } from './slider/event/feed';\n\n// Social\nimport socialSharing from './social/sharing';\nexport { default as socialSharing } from './social/sharing';\n\n// Stat\nimport statDisplay from './stat/display';\nexport { default as statDisplay } from './stat/display';\n\n// Tab\nimport tabDisplay from './tab/display';\nexport { default as tabDisplay } from './tab/display';\n\n// Text\nimport textEventLockup from './text/event-lockup';\nexport { default as textEventLockup } from './text/event-lockup';\n\n// Grouped exports for convenience\nexport const accordion = {\n item: accordionItem,\n};\n\nexport const actions = {\n display: actionsDisplay,\n};\n\nexport const alert = {\n page: alertPage,\n promo: alertPromo,\n site: alertSite,\n};\n\nexport const brand = {\n cardStack: brandCardStack,\n chevronScroll: brandChevronScroll,\n};\n\nexport const card = {\n article: cardArticle,\n event: cardEvent,\n icon: cardIcon,\n overlay: cardOverlay,\n standard: cardStandard,\n video: cardVideo,\n};\n\nexport const carousel = {\n base: carouselBase,\n cards: carouselCards,\n imageSingle: carouselImageSingle,\n imageMultiple: carouselImageMultiple,\n thumbnail: carouselThumbnail,\n wide: carouselWide,\n};\n\nexport const feed = {\n alert: feedAlert,\n eventsGrid: feedEventsGrid,\n eventsGrouped: feedEventsGrouped,\n eventsList: feedEventsList,\n newsFeatured: feedNewsFeatured,\n newsGrid: feedNewsGrid,\n newsList: feedNewsList,\n};\n\nexport const footer = {\n options: footerOptions,\n};\n\nexport const hero = {\n base: heroBase,\n videoArrow: heroVideoArrow,\n grid: heroGrid,\n expand: heroExpand,\n logo: heroLogo,\n minimal: heroMinimal,\n};\n\nexport const layout = {\n boxLogo: layoutBoxLogo,\n imageExpand: layoutImageExpand,\n modal: layoutModal,\n sectionIntroSmall: layoutSectionIntroSmall,\n sectionIntroWide: layoutSectionIntroWide,\n scrollTop: layoutScrollTop,\n stickyColumns: layoutStickyColumns,\n};\n\nexport const media = {\n inline: mediaInline,\n gif: mediaGif,\n};\n\nexport const navigation = {\n breadcrumb: navigationBreadcrumb,\n drawer: navigationDrawer,\n header: navigationHeader,\n item: navigationItem,\n slider: navigationSlider,\n sticky: navigationSticky,\n};\n\nexport const pathway = {\n image: pathwayImage,\n highlight: pathwayHighlight,\n};\n\nexport const person = {\n bio: personBio,\n display: personDisplay,\n hero: personHero,\n};\n\nexport const quote = {\n display: quoteDisplay,\n};\n\nexport const slider = {\n eventDisplay: sliderEventDisplay,\n eventFeed: sliderEventFeed,\n};\n\nexport const social = {\n sharing: socialSharing,\n};\n\nexport const stat = {\n display: statDisplay,\n};\n\nexport const tab = {\n display: tabDisplay,\n};\n\nexport const text = {\n eventLockup: textEventLockup,\n};\n","/**\n * Shared component loading utilities\n * Extracted to avoid circular dependencies\n */\n\n/**\n * Type definition for a map of component registration functions.\n * Used to organize components by category and variant.\n */\nexport interface ComponentMap {\n [key: string]: {\n [subKey: string]: () => void;\n };\n}\n\n/**\n * Utility function to register a collection of UMD web components.\n * Iterates through a ComponentMap and calls each registration function.\n */\nexport const loadComponentClass = (componentMap: ComponentMap) => {\n for (const key in componentMap) {\n if (Object.prototype.hasOwnProperty.call(componentMap, key)) {\n const component = componentMap[key];\n\n for (const subKey in component) {\n if (Object.prototype.hasOwnProperty.call(component, subKey)) {\n component[subKey]();\n }\n }\n }\n }\n};"],"names":["tagName","createComponent","element","hasLandmark","hasLabel","Composite","Attributes.getValue","Attributes.isInfo","Attributes.isLayout","Attributes.hasInfo","attributes","Attributes.handler","alert_default","Register.webComponent","accordion","accordionItem","actions","actionsDisplay","alert","alertPage","alertPromo","alertSite","brand","brandCardStack","brandChevronScroll","card","cardArticle","cardEvent","cardIcon","cardOverlay","cardStandard","cardVideo","carousel","carouselBase","carouselCards","carouselImageSingle","carouselImageMultiple","carouselThumbnail","carouselWide","feed","feedAlert","feedEventsGrid","feedEventsGrouped","feedEventsList","feedNewsFeatured","feedNewsGrid","feedNewsList","footer","footerOptions","hero","heroBase","heroVideoArrow","heroGrid","heroExpand","heroLogo","heroMinimal","layout","layoutBoxLogo","layoutImageExpand","layoutModal","layoutSectionIntroSmall","layoutSectionIntroWide","layoutScrollTop","layoutStickyColumns","media","mediaInline","mediaGif","navigation","navigationBreadcrumb","navigationDrawer","navigationHeader","navigationItem","navigationSlider","navigationSticky","pathway","pathwayImage","pathwayHighlight","person","personBio","personDisplay","personHero","quote","quoteDisplay","slider","sliderEventDisplay","sliderEventFeed","social","socialSharing","stat","statDisplay","tab","tabDisplay","text","textEventLockup","loadComponentClass","componentMap","key","component","subKey"],"mappings":"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"}
1
+ {"version":3,"file":"loader-8wYd7fUZ.js","sources":["../source/api/feed/alert/index.ts","../source/api/index.ts","../source/exports/loader.ts"],"sourcesContent":["import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Register } from 'model';\nimport { CreateComponentFunction } from '../../../_types';\n\n/**\n * Tag name for the utility navigation web component\n */\nconst tagName = 'umd-element-navigation-utility';\n\n/**\n * Creates a utility navigation component with the provided configuration\n */\nconst createComponent: CreateComponentFunction = (element) => {\n const hasLandmark = element.hasAttribute('role');\n const hasLabel = element.hasAttribute('aria-label');\n\n if (!hasLandmark) {\n element.setAttribute('role', 'navigation');\n }\n\n if (!hasLabel) {\n element.setAttribute('aria-label', 'Utility navigation');\n }\n\n return Composite.navigation.utility({\n alertUrl: Attributes.getValue.alertUrl({ element }),\n giftUrl:\n Attributes.getValue.giftUrl({\n element,\n }) || 'https://giving.umd.edu/giving',\n isAdmissionsFeed: Attributes.isInfo.admissions({ element }),\n isAlertOff: Attributes.isLayout.alertOff({ element }),\n isEventsFeed: Attributes.isInfo.events({ element }),\n isGiftsFeed: Attributes.hasInfo.gifts({ element }),\n isLockFull: Attributes.isLayout.lockFull({ element }),\n isNewsFeed: Attributes.isInfo.news({ element }),\n isSchoolsFeed: Attributes.isInfo.schools({ element }),\n isSearch: Attributes.hasInfo.search({ element }),\n isSearchDomain: Attributes.isInfo.searchDomain({ element }),\n });\n};\n\n/**\n * Attribute handlers for the utility navigation component\n */\nconst attributes = Attributes.handler.common.visualShowHide({\n onShow: (element) => element.events?.showAlert(),\n onHide: (element) => element.events?.hideAlert(),\n});\n\n/**\n * Utility Navigation\n *\n * A specialized navigation component for utility links and university-wide resources.\n * Includes support for alerts, search, feeds, and giving options. Automatically adds\n * accessibility attributes if not provided.\n *\n * ## Custom Element\n * `<umd-element-navigation-utility>`\n *\n * ## Attributes\n * - `data-gift-url` - Custom URL for giving link (default: https://giving.umd.edu/giving)\n * - `data-alert-url` - URL for alert/emergency information\n * - `data-info` - Enable specific information feeds:\n * - `search` - Enable search functionality\n * - `search-domain` - Enable domain-specific search\n * - `news` - Show news feed\n * - `events` - Show events feed\n * - `schools` - Show schools listing\n * - `admissions` - Show admissions information\n * - `gifts` - Show giving information\n * - `data-layout` - Layout options:\n * - `lock-full` - Full-width lock layout\n * - `alert-off` - Hide alert section\n *\n * ## Observed Attributes\n * - `data-layout-alert-off` - Dynamically show/hide alert section\n *\n * @example\n * ```html\n * <!-- Basic utility navigation -->\n * <umd-element-navigation-utility\n * data-info=\"search\">\n * </umd-element-navigation-utility>\n * ```\n *\n * @example\n * ```html\n * <!-- Full utility navigation with feeds -->\n * <umd-element-navigation-utility\n * data-info=\"search,news,events\"\n * data-gift-url=\"/support-umd\"\n * data-alert-url=\"/emergency\">\n * </umd-element-navigation-utility>\n * ```\n *\n * @example\n * ```html\n * <!-- Utility navigation with custom layout -->\n * <umd-element-navigation-utility\n * data-info=\"search,schools,admissions\"\n * data-layout=\"lock-full\"\n * role=\"navigation\"\n * aria-label=\"University resources\">\n * </umd-element-navigation-utility>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nexport default Register.webComponent({\n tagName,\n createComponent,\n attributes,\n});\n","/**\n * Component Registration Functions\n *\n * All web component registration functions for the UMD Design System.\n * Each function must be called to register its component with the browser.\n *\n * @example\n * ```typescript\n * import * as Components from '@universityofmaryland/web-components-library/api';\n *\n * // Register specific components\n * Components.accordion.item();\n * Components.card.standard();\n * Components.hero.base();\n * ```\n */\n\n// Accordion\nimport accordionItem from './accordion/item';\nexport { default as accordionItem } from './accordion/item';\n\n// Actions\nimport actionsDisplay from './actions/display';\nexport { default as actionsDisplay } from './actions/display';\n\n// Alert\nimport alertPage from './alert/page';\nimport alertPromo from './alert/promo';\nimport alertSite from './alert/site';\nexport { default as alertPage } from './alert/page';\nexport { default as alertPromo } from './alert/promo';\nexport { default as alertSite } from './alert/site';\n\n// Brand\nimport brandCardStack from './brand/stack';\nimport brandChevronScroll from './brand/chevron-scroll';\nexport { default as brandCardStack } from './brand/stack';\nexport { default as brandChevronScroll } from './brand/chevron-scroll';\n\n// Card\nimport cardArticle from './card/article';\nimport cardEvent from './card/event';\nimport cardIcon from './card/icon';\nimport cardOverlay from './card/overlay';\nimport cardStandard from './card/standard';\nimport cardVideo from './card/video';\nexport { default as cardArticle } from './card/article';\nexport { default as cardEvent } from './card/event';\nexport { default as cardIcon } from './card/icon';\nexport { default as cardOverlay } from './card/overlay';\nexport { default as cardStandard } from './card/standard';\nexport { default as cardVideo } from './card/video';\n\n// Carousel\nimport carouselBase from './carousel/base';\nimport carouselCards from './carousel/cards';\nimport carouselImageSingle from './carousel/image/single';\nimport carouselImageMultiple from './carousel/image/multiple';\nimport carouselThumbnail from './carousel/thumbnail';\nimport carouselWide from './carousel/wide';\nexport { default as carouselBase } from './carousel/base';\nexport { default as carouselCards } from './carousel/cards';\nexport { default as carouselImageSingle } from './carousel/image/single';\nexport { default as carouselImageMultiple } from './carousel/image/multiple';\nexport { default as carouselThumbnail } from './carousel/thumbnail';\nexport { default as carouselWide } from './carousel/wide';\n\n// Feed\nimport feedEventsGrid from './feed/events/grid';\nimport feedEventsGrouped from './feed/events/grouped';\nimport feedEventsList from './feed/events/list';\nimport feedNewsFeatured from './feed/news/featured';\nimport feedNewsGrid from './feed/news/grid';\nimport feedNewsList from './feed/news/list';\nimport feedAlert from './feed/alert';\n\nexport { default as feedEventsGrid } from './feed/events/grid';\nexport { default as feedEventsGrouped } from './feed/events/grouped';\nexport { default as feedEventsList } from './feed/events/list';\nexport { default as feedNewsFeatured } from './feed/news/featured';\nexport { default as feedNewsGrid } from './feed/news/grid';\nexport { default as feedNewsList } from './feed/news/list';\nexport { default as feedAlert } from './feed/alert';\n\n// Footer\nimport footerOptions from './footer/options';\nexport { default as footerOptions } from './footer/options';\n\n// Hero\nimport heroBase from './hero/base';\nimport heroVideoArrow from './hero/custom/video';\nimport heroGrid from './hero/custom/grid';\nimport heroExpand from './hero/custom/expand';\nimport heroLogo from './hero/logo';\nimport heroMinimal from './hero/minimal';\nexport { default as heroBase } from './hero/base';\nexport { default as heroVideoArrow } from './hero/custom/video';\nexport { default as heroGrid } from './hero/custom/grid';\nexport { default as heroExpand } from './hero/custom/expand';\nexport { default as heroLogo } from './hero/logo';\nexport { default as heroMinimal } from './hero/minimal';\n\n// Layout\nimport layoutBoxLogo from './layout/box-logo';\nimport layoutImageExpand from './layout/image-expand';\nimport layoutModal from './layout/modal';\nimport layoutSectionIntroSmall from './layout/section-intro/small';\nimport layoutSectionIntroWide from './layout/section-intro/wide';\nimport layoutScrollTop from './layout/scroll-top';\nimport layoutStickyColumns from './layout/sticky-columns';\nexport { default as layoutBoxLogo } from './layout/box-logo';\nexport { default as layoutImageExpand } from './layout/image-expand';\nexport { default as layoutModal } from './layout/modal';\nexport { default as layoutSectionIntroSmall } from './layout/section-intro/small';\nexport { default as layoutSectionIntroWide } from './layout/section-intro/wide';\nexport { default as layoutScrollTop } from './layout/scroll-top';\nexport { default as layoutStickyColumns } from './layout/sticky-columns';\n\n// Media\nimport mediaInline from './media/inline';\nimport mediaGif from './media/gif';\nexport { default as mediaInline } from './media/inline';\nexport { default as mediaGif } from './media/gif';\n\n// Navigation\nimport navigationBreadcrumb from './navigation/breadcrumb';\nimport navigationDrawer from './navigation/drawer';\nimport navigationHeader from './navigation/header';\nimport navigationItem from './navigation/item';\nimport navigationSlider from './navigation/slider';\nimport navigationSticky from './navigation/sticky';\n\nexport { default as navigationBreadcrumb } from './navigation/breadcrumb';\nexport { default as navigationDrawer } from './navigation/drawer';\nexport { default as navigationHeader } from './navigation/header';\nexport { default as navigationItem } from './navigation/item';\nexport { default as navigationSlider } from './navigation/slider';\nexport { default as navigationSticky } from './navigation/sticky';\n\n// Pathway\nimport pathwayImage from './pathway/image';\nimport pathwayHighlight from './pathway/highlight';\nexport { default as pathwayImage } from './pathway/image';\nexport { default as pathwayHighlight } from './pathway/highlight';\n\n// Person\nimport personBio from './person/bio';\nimport personDisplay from './person/display';\nimport personHero from './person/hero';\nexport { default as personBio } from './person/bio';\nexport { default as personDisplay } from './person/display';\nexport { default as personHero } from './person/hero';\n\n// Quote\nimport quoteDisplay from './quote/display';\nexport { default as quoteDisplay } from './quote/display';\n\n// Slider\nimport sliderEventDisplay from './slider/event/display';\nimport sliderEventFeed from './slider/event/feed';\nexport { default as sliderEventDisplay } from './slider/event/display';\nexport { default as sliderEventFeed } from './slider/event/feed';\n\n// Social\nimport socialSharing from './social/sharing';\nexport { default as socialSharing } from './social/sharing';\n\n// Stat\nimport statDisplay from './stat/display';\nexport { default as statDisplay } from './stat/display';\n\n// Tab\nimport tabDisplay from './tab/display';\nexport { default as tabDisplay } from './tab/display';\n\n// Text\nimport textEventLockup from './text/event-lockup';\nexport { default as textEventLockup } from './text/event-lockup';\n\n// Grouped exports for convenience\nexport const accordion = {\n item: accordionItem,\n};\n\nexport const actions = {\n display: actionsDisplay,\n};\n\nexport const alert = {\n page: alertPage,\n promo: alertPromo,\n site: alertSite,\n};\n\nexport const brand = {\n cardStack: brandCardStack,\n chevronScroll: brandChevronScroll,\n};\n\nexport const card = {\n article: cardArticle,\n event: cardEvent,\n icon: cardIcon,\n overlay: cardOverlay,\n standard: cardStandard,\n video: cardVideo,\n};\n\nexport const carousel = {\n base: carouselBase,\n cards: carouselCards,\n imageSingle: carouselImageSingle,\n imageMultiple: carouselImageMultiple,\n thumbnail: carouselThumbnail,\n wide: carouselWide,\n};\n\nexport const feed = {\n alert: feedAlert,\n eventsGrid: feedEventsGrid,\n eventsGrouped: feedEventsGrouped,\n eventsList: feedEventsList,\n newsFeatured: feedNewsFeatured,\n newsGrid: feedNewsGrid,\n newsList: feedNewsList,\n};\n\nexport const footer = {\n options: footerOptions,\n};\n\nexport const hero = {\n base: heroBase,\n videoArrow: heroVideoArrow,\n grid: heroGrid,\n expand: heroExpand,\n logo: heroLogo,\n minimal: heroMinimal,\n};\n\nexport const layout = {\n boxLogo: layoutBoxLogo,\n imageExpand: layoutImageExpand,\n modal: layoutModal,\n sectionIntroSmall: layoutSectionIntroSmall,\n sectionIntroWide: layoutSectionIntroWide,\n scrollTop: layoutScrollTop,\n stickyColumns: layoutStickyColumns,\n};\n\nexport const media = {\n inline: mediaInline,\n gif: mediaGif,\n};\n\nexport const navigation = {\n breadcrumb: navigationBreadcrumb,\n drawer: navigationDrawer,\n header: navigationHeader,\n item: navigationItem,\n slider: navigationSlider,\n sticky: navigationSticky,\n};\n\nexport const pathway = {\n image: pathwayImage,\n highlight: pathwayHighlight,\n};\n\nexport const person = {\n bio: personBio,\n display: personDisplay,\n hero: personHero,\n};\n\nexport const quote = {\n display: quoteDisplay,\n};\n\nexport const slider = {\n eventDisplay: sliderEventDisplay,\n eventFeed: sliderEventFeed,\n};\n\nexport const social = {\n sharing: socialSharing,\n};\n\nexport const stat = {\n display: statDisplay,\n};\n\nexport const tab = {\n display: tabDisplay,\n};\n\nexport const text = {\n eventLockup: textEventLockup,\n};\n","/**\n * Shared component loading utilities\n * Extracted to avoid circular dependencies\n */\n\n/**\n * Type definition for a map of component registration functions.\n * Used to organize components by category and variant.\n */\nexport interface ComponentMap {\n [key: string]: {\n [subKey: string]: () => void;\n };\n}\n\n/**\n * Utility function to register a collection of UMD web components.\n * Iterates through a ComponentMap and calls each registration function.\n */\nexport const loadComponentClass = (componentMap: ComponentMap) => {\n for (const key in componentMap) {\n if (Object.prototype.hasOwnProperty.call(componentMap, key)) {\n const component = componentMap[key];\n\n for (const subKey in component) {\n if (Object.prototype.hasOwnProperty.call(component, subKey)) {\n component[subKey]();\n }\n }\n }\n }\n};"],"names":["tagName","createComponent","element","hasLandmark","hasLabel","Composite","Attributes.getValue","Attributes.isInfo","Attributes.isLayout","Attributes.hasInfo","attributes","Attributes.handler","alert_default","Register.webComponent","accordion","accordionItem","actions","actionsDisplay","alert","alertPage","alertPromo","alertSite","brand","brandCardStack","brandChevronScroll","card","cardArticle","cardEvent","cardIcon","cardOverlay","cardStandard","cardVideo","carousel","carouselBase","carouselCards","carouselImageSingle","carouselImageMultiple","carouselThumbnail","carouselWide","feed","feedAlert","feedEventsGrid","feedEventsGrouped","feedEventsList","feedNewsFeatured","feedNewsGrid","feedNewsList","footer","footerOptions","hero","heroBase","heroVideoArrow","heroGrid","heroExpand","heroLogo","heroMinimal","layout","layoutBoxLogo","layoutImageExpand","layoutModal","layoutSectionIntroSmall","layoutSectionIntroWide","layoutScrollTop","layoutStickyColumns","media","mediaInline","mediaGif","navigation","navigationBreadcrumb","navigationDrawer","navigationHeader","navigationItem","navigationSlider","navigationSticky","pathway","pathwayImage","pathwayHighlight","person","personBio","personDisplay","personHero","quote","quoteDisplay","slider","sliderEventDisplay","sliderEventFeed","social","socialSharing","stat","statDisplay","tab","tabDisplay","text","textEventLockup","loadComponentClass","componentMap","key","component","subKey"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Composite as i } from "@universityofmaryland/web-elements-library";
2
- import { b as c, k as S, a as d, s as t, g as p, f, h, o as T } from "./shared/model-4-WQm2Le.js";
3
- import { w as u, h as g, I as b, N as v } from "./shared/utilities-B_sPVa-m.js";
2
+ import { b as c, k as S, a as d, s as t, g as p, f, h, o as T } from "./shared/model-CHS3WnCo.js";
3
+ import { w as u, h as g, I as b, N as v } from "./shared/utilities-CZHe-tKs.js";
4
4
  import "@universityofmaryland/web-styles-library";
5
5
  const x = "umd-element-hero", k = (e) => {
6
6
  const a = ({ element: n }) => ({
@@ -207,4 +207,4 @@ export {
207
207
  R as m,
208
208
  U as v
209
209
  };
210
- //# sourceMappingURL=minimal-DxGUDvv6.js.map
210
+ //# sourceMappingURL=minimal-DPc0ZoRw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"minimal-DxGUDvv6.js","sources":["../source/api/hero/base.ts","../source/api/hero/custom/video.ts","../source/api/hero/custom/grid.ts","../source/api/hero/custom/expand.ts","../source/api/hero/logo.ts","../source/api/hero/minimal.ts"],"sourcesContent":["import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Lifecycle, Slots, Register } from 'model';\nimport type {\n CreateComponentFunction,\n ComponentRegistration,\n} from '../../_types';\n\n/**\n * Tag name for the base hero component\n * @internal\n */\nconst tagName = 'umd-element-hero';\n\n/**\n * Creates a hero component based on type attribute\n * @param element - The host HTML element\n * @returns Configured hero component\n * @internal\n */\nconst createComponent: CreateComponentFunction = (element) => {\n const makeSlots = ({ element }: { element: HTMLElement }) => ({\n eyebrow: Slots.eyebrow.default({ element }),\n headline: Slots.headline.default({ element }),\n text: Slots.text.default({ element }),\n video: Slots.assets.video({ element }) as HTMLVideoElement | null,\n image: Slots.assets.image({ element }) as HTMLImageElement | null,\n actions: Slots.actions.default({ element }),\n });\n const isDisplayOverlay = Attributes.isDisplay.overlay({ element });\n const isDisplayStacked = Attributes.isDisplay.stacked({ element });\n const includesAnimation = Attributes.includesFeature.animation({ element });\n const isThemeDark = Attributes.isTheme.dark({ element });\n\n if (isDisplayOverlay) {\n return Composite.hero.overlay({\n ...makeSlots({ element }),\n includesAnimation,\n });\n }\n\n if (isDisplayStacked) {\n return Composite.hero.stacked({\n ...makeSlots({ element }),\n isHeightSmall: Attributes.isLayout.heightSmall({ element }) || false,\n isWidthLarge:\n Attributes.isLayout.spaceHorizontalLarge({ element }) || false,\n isThemeDark,\n includesAnimation,\n topPosition: Attributes.getValue.topPosition({\n element,\n }),\n });\n }\n\n // Deprecated usage\n if (\n Attributes.isDisplay.stackedInterior({\n element,\n })\n ) {\n return Composite.hero.stacked({\n ...makeSlots({ element }),\n isHeightSmall: true,\n isWidthLarge: true,\n isThemeDark,\n includesAnimation,\n });\n }\n\n // Deprecated usage\n if (\n Attributes.isDisplay.standardCentered({\n element,\n })\n ) {\n return Composite.hero.standard({\n ...makeSlots({ element }),\n isTextCenter: true,\n isHeightSmall: false,\n includesAnimation,\n });\n }\n\n // Deprecated usage\n if (\n Attributes.isDisplay.standardInterior({\n element,\n })\n ) {\n return Composite.hero.standard({\n ...makeSlots({ element }),\n isHeightSmall: true,\n isThemeDark,\n includesAnimation,\n });\n }\n\n // Deprecated usage\n if (\n Attributes.isDisplay.standardInteriorCentered({\n element,\n })\n ) {\n return Composite.hero.standard({\n ...makeSlots({ element }),\n isHeightSmall: true,\n isTextCenter: true,\n includesAnimation,\n });\n }\n\n return Composite.hero.standard({\n ...makeSlots({ element }),\n isHeightSmall: Attributes.isLayout.heightSmall({ element }) || false,\n isTextCenter: Attributes.isLayout.textCentered({ element }) || false,\n isThemeDark,\n includesAnimation,\n });\n};\n\n/**\n * Base Hero Component\n *\n * A versatile hero component with multiple layout options for page headers.\n * Supports various content arrangements and visual styles.\n *\n * ## Custom Element\n * `<umd-element-hero>`\n *\n * ## Slots\n * - `eyebrow` - Small text above headline\n * - `headline` - Main hero heading (required)\n * - `text` - Supporting text content\n * - `image` - Hero image\n * - `video` - Hero video\n * - `actions` - Call-to-action buttons/links\n *\n * ## Attributes\n * - `data-display` - Display type options:\n * - `standard` - Standard hero layout (default)\n * - `stacked` - Stacked content layout\n * - `overlay` - Content overlaid on image/video\n * - `data-layout-space-horizontal` - Horizontal spacing options:\n * - `large` - Large horizontal spacing (see https://designsystem.umd.edu/foundation/horizontal-spacing)\n * - `data-layout-height` - Layout height options:\n * - `small` - Smaller layout height\n * - `data-layout-text` - Text alignment options:\n * - `center` - Center align text\n * - `data-theme` - Theme options:\n * - `dark` - Dark theme styling\n * - `data-feature` - Feature options:\n * - `animation` - Enable animations\n * - `data-layout-position` - Sticky position offset in pixels (e.g., `80` for 80px from top)\n *\n * ## Deprecated Attributes\n * The following attributes are deprecated and will be removed in v2.0:\n * - `type=\"default-centered\"` → Use `data-display=\"standard\" data-layout-text=\"center\"`\n * - `type=\"default-interior\"` → Use `data-display=\"standard\" data-layout-height=\"small\"`\n * - `type=\"default-interior-centered\"` → Use `data-display=\"standard\" data-layout-height=\"small\" data-layout-text=\"center\"`\n * - `type=\"stacked\"` → Use `data-display=\"stacked\"`\n * - `type=\"stacked-interior\"` → Use `data-display=\"stacked\" data-layout-height=\"small\" data-layout-space-horizontal=\"large\"`\n * - `type=\"overlay\"` → Use `data-display=\"overlay\"`\n * - `data-visual-align=\"center\"` → Use `data-layout-text=\"center\"`\n *\n * @example\n * ```html\n * <!-- Basic hero -->\n * <umd-element-hero>\n * <h1 slot=\"headline\">Welcome to Maryland</h1>\n * <p slot=\"text\">Fearlessly Forward</p>\n * <img slot=\"image\" src=\"campus.jpg\" alt=\"Campus view\">\n * </umd-element-hero>\n * ```\n *\n * @example\n * ```html\n * <!-- Overlay hero with video -->\n * <umd-element-hero data-display=\"overlay\" data-theme=\"dark\">\n * <p slot=\"eyebrow\">Discover</p>\n * <h1 slot=\"headline\">Your Future Starts Here</h1>\n * <p slot=\"text\">Join a community of innovators and leaders</p>\n * <video slot=\"video\" autoplay muted loop>\n * <source src=\"campus-video.mp4\" type=\"video/mp4\">\n * </video>\n * <div slot=\"actions\">\n * <a href=\"/apply\">Apply Now</a>\n * <a href=\"/visit\">Plan Your Visit</a>\n * </div>\n * </umd-element-hero>\n * ```\n *\n * @example\n * ```html\n * <!-- Stacked hero with small height and large horizontal spacing -->\n * <umd-element-hero data-display=\"stacked\" data-layout-height=\"small\" data-layout-space-horizontal=\"large\" data-layout-position=\"80\">\n * <h1 slot=\"headline\">Research Excellence</h1>\n * <p slot=\"text\">Advancing knowledge through groundbreaking research</p>\n * <img slot=\"image\" src=\"research-lab.jpg\" alt=\"Research laboratory\">\n * </umd-element-hero>\n * ```\n *\n * @example\n * ```html\n * <!-- Standard hero with centered text -->\n * <umd-element-hero data-display=\"standard\" data-layout-text=\"center\">\n * <h1 slot=\"headline\">About the University</h1>\n * <p slot=\"text\">Founded in 1856, the University of Maryland...</p>\n * </umd-element-hero>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst BaseHero: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n afterConnect: Lifecycle.hooks.loadOnConnect,\n});\n\nexport default BaseHero;\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Lifecycle, Slots, Register } from 'model';\nimport type {\n CreateComponentFunction,\n ComponentRegistration,\n} from '../../../_types';\n\n/**\n * Tag name for the brand video hero component\n * @internal\n */\nconst tagName = 'umd-element-hero-brand-video';\n\nconst createComponent: CreateComponentFunction = (element) => {\n const animationTriggerAttribute = element.getAttribute('animation-trigger');\n const video = element.querySelector('video') as HTMLVideoElement;\n\n return Composite.hero.custom.videoArrow({\n video,\n headline: Slots.headline.default({ element }),\n text: Slots.text.default({ element }),\n isAnimationOnLoad: animationTriggerAttribute === 'load',\n });\n};\n\n/**\n * Brand Video Hero Component\n *\n * A hero component featuring brand-focused video content with animation support.\n * Designed for impactful homepage and campaign experiences.\n *\n * ## Custom Element\n * `<umd-element-hero-brand-video>`\n *\n * ## Slots\n * - `headline` - Main hero heading\n * - `text` - Supporting text content\n *\n * ## Direct Children\n * - `video` - Video element (not slotted, direct child)\n *\n * ## Attributes\n * - `animation-trigger` - Animation trigger options:\n * - `load` - Start animation on component load\n *\n * @example\n * ```html\n * <!-- Basic brand video hero -->\n * <umd-element-hero-brand-video>\n * <video autoplay muted loop>\n * <source src=\"brand-video.mp4\" type=\"video/mp4\">\n * </video>\n * <h1 slot=\"headline\">Fearlessly Forward</h1>\n * <p slot=\"text\">The University of Maryland's strategic vision</p>\n * </umd-element-hero-brand-video>\n * ```\n *\n * @example\n * ```html\n * <!-- Brand video with load animation -->\n * <umd-element-hero-brand-video animation-trigger=\"load\">\n * <video autoplay muted loop>\n * <source src=\"campaign.mp4\" type=\"video/mp4\">\n * <source src=\"campaign.webm\" type=\"video/webm\">\n * </video>\n * <h1 slot=\"headline\">Do Good</h1>\n * <p slot=\"text\">\n * Join us in making a positive impact on our world\n * </p>\n * </umd-element-hero-brand-video>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst BrandVideoHero: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n afterConnect: Lifecycle.hooks.loadOnConnect,\n});\n\nexport default BrandVideoHero;\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Slots, Register } from 'model';\nimport type {\n CreateComponentFunction,\n ComponentRegistration,\n} from '../../../_types';\n\n/**\n * Tag name for the grid hero component\n * @internal\n */\nconst tagName = 'umd-element-hero-grid';\n\nconst createComponent: CreateComponentFunction = (element) => {\n const leftColumn = element.querySelector(\n `[slot=\"column-left\"]`,\n ) as HTMLElement;\n const rightColumn = element.querySelector(\n `[slot=\"column-right\"]`,\n ) as HTMLElement;\n const centerColumn = element.querySelector(\n `[slot=\"column-center\"]`,\n ) as HTMLElement;\n\n const leftImages = Array.from(\n leftColumn.querySelectorAll('img'),\n ) as HTMLImageElement[];\n const rightImages = Array.from(\n rightColumn.querySelectorAll('img'),\n ) as HTMLImageElement[];\n const centerImages = Array.from(\n centerColumn.querySelectorAll('img'),\n ) as HTMLImageElement[];\n const centerVideo = centerColumn.querySelector(\n 'video',\n ) as HTMLVideoElement | null;\n\n const elementData = {\n corners: [\n {\n images: leftImages,\n isCornerLeft: true,\n },\n {\n images: rightImages,\n isCornerLeft: false,\n },\n ],\n center: {\n images: centerImages,\n video: centerVideo,\n },\n headline: Slots.headline.default({ element }),\n text: Slots.text.default({ element }),\n actions: Slots.actions.default({ element }),\n isThemeDark: Attributes.isTheme.dark({ element }) || false,\n };\n\n const gridElement = Composite.hero.custom.grid(elementData);\n\n if (gridElement) return gridElement;\n\n return { element: document.createElement('div'), styles: '' };\n};\n\n/**\n * Grid Hero Component\n *\n * A three-column grid hero with scroll-triggered animations that progressively\n * focus on center content. Creates an immersive visual experience with smooth\n * transitions between grid states.\n *\n * ## Custom Element\n * `<umd-element-hero-grid>`\n *\n * ## Slots\n * - `column-left` - Left column container for images\n * - `column-center` - Center column container for images and optional video\n * - `column-right` - Right column container for images\n *\n * ## Visual Behavior\n * - Initial layout: 20% - 60% - 20% column widths\n * - Scroll animation: Transitions to 0% - 100% - 0% (center-focused)\n * - Center rows animate from 25vh-1fr-25vh to 0-1fr-0\n * - Includes progressive tint overlay during scroll\n *\n * @example\n * ```html\n * <!-- Basic grid hero with images -->\n * <umd-element-hero-grid>\n * <div slot=\"column-left\">\n * <img src=\"left1.jpg\" alt=\"Campus view\">\n * <img src=\"left2.jpg\" alt=\"Students\">\n * </div>\n * <div slot=\"column-center\">\n * <img src=\"center1.jpg\" alt=\"Main building\">\n * <img src=\"center2.jpg\" alt=\"Research lab\">\n * </div>\n * <div slot=\"column-right\">\n * <img src=\"right1.jpg\" alt=\"Athletics\">\n * <img src=\"right2.jpg\" alt=\"Library\">\n * </div>\n * </umd-element-hero-grid>\n * ```\n *\n * @example\n * ```html\n * <!-- Grid hero with center video -->\n * <umd-element-hero-grid>\n * <div slot=\"column-left\">\n * <img src=\"left1.jpg\" alt=\"Campus life\">\n * <img src=\"left2.jpg\" alt=\"Student activities\">\n * <img src=\"left3.jpg\" alt=\"Dining\">\n * </div>\n * <div slot=\"column-center\">\n * <img src=\"center1.jpg\" alt=\"Aerial view\">\n * <video autoplay muted loop>\n * <source src=\"campus-tour.mp4\" type=\"video/mp4\">\n * </video>\n * <img src=\"center2.jpg\" alt=\"Graduation\">\n * </div>\n * <div slot=\"column-right\">\n * <img src=\"right1.jpg\" alt=\"Research\">\n * <img src=\"right2.jpg\" alt=\"Innovation\">\n * <img src=\"right3.jpg\" alt=\"Community\">\n * </div>\n * </umd-element-hero-grid>\n * ```\n *\n * @category Components\n * @since 1.12.0\n */\nconst GridHero: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n});\n\nexport default GridHero;\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Slots, Register } from 'model';\nimport { Markup } from 'utilities';\nimport type {\n CreateComponentFunction,\n ComponentRegistration,\n} from '../../../_types';\n\n/**\n * Tag name for the expandable hero component\n * @internal\n */\nconst tagName = 'umd-element-hero-expand';\n\nconst attributes = Attributes.handler.combine(\n Attributes.handler.observe.visuallyPosition({\n callback: (element, topPosition) =>\n element.events?.setTopPosition({ 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?.setTopPosition({ value: topPosition }),\n }),\n);\n\nconst createComponent: CreateComponentFunction = (element) => {\n const image = Markup.validate.ImageSlot({\n element,\n ImageSlot: Slots.name.assets.image,\n });\n const videoSlot = element.querySelector(`[slot=\"video\"]`) as HTMLElement;\n const actions = Markup.create.Node.slot({ type: Slots.name.actions.default });\n const additional = Markup.create.Node.slot({ type: Slots.name.ADDITIONAL });\n\n const elementData: {\n image?: HTMLImageElement;\n video?: HTMLVideoElement;\n eyebrow?: HTMLElement | null;\n headline?: HTMLElement | null;\n actions?: HTMLElement | null;\n additional?: HTMLSlotElement | null;\n topPosition?: string | null;\n } = {\n eyebrow: Slots.eyebrow.default({ element }),\n headline: Slots.headline.default({ element }),\n topPosition: Attributes.getValue.topPosition({ element }),\n };\n const isVideo = videoSlot instanceof HTMLVideoElement;\n\n if (image) {\n elementData.image = image;\n }\n\n if (isVideo) {\n elementData.video = videoSlot as HTMLVideoElement;\n }\n\n if (!isVideo && videoSlot && videoSlot.children.length > 0) {\n const video = videoSlot.querySelector('video') as HTMLVideoElement;\n if (video) elementData.video = video;\n }\n\n if (actions) {\n elementData.actions = actions;\n }\n\n if (additional) {\n elementData.additional = additional;\n }\n\n return Composite.hero.custom.expand(elementData);\n};\n\n/**\n * Expandable Hero Component\n *\n * A hero component with expandable content area and sticky positioning support.\n * Ideal for immersive experiences with additional content reveal.\n *\n * ## Custom Element\n * `<umd-element-hero-expand>`\n *\n * ## Slots\n * - `eyebrow` - Small text above headline\n * - `headline` - Main hero heading\n * - `image` - Hero image\n * - `video` - Hero video (as video element or container)\n * - `actions` - Call-to-action buttons/links\n * - `additional` - Additional expandable content area\n *\n * ## Attributes\n * - `data-visual-position` - Top position for sticky behavior (in pixels)\n * - `data-top-position` - Override sticky position value\n *\n * ## Observed Attributes\n * - `data-visual-position` - Updates sticky position dynamically\n *\n * @example\n * ```html\n * <!-- Basic expandable hero -->\n * <umd-element-hero-expand>\n * <h1 slot=\"headline\">Explore Our Campus</h1>\n * <img slot=\"image\" src=\"aerial-view.jpg\" alt=\"Campus aerial view\">\n * <div slot=\"additional\">\n * <p>Discover 1,250 acres of possibilities...</p>\n * </div>\n * </umd-element-hero-expand>\n * ```\n *\n * @example\n * ```html\n * <!-- Expandable hero with video and sticky position -->\n * <umd-element-hero-expand data-visual-position=\"80\">\n * <p slot=\"eyebrow\">Experience Maryland</p>\n * <h1 slot=\"headline\">Where Ideas Take Flight</h1>\n * <video slot=\"video\" autoplay muted loop>\n * <source src=\"campus-tour.mp4\" type=\"video/mp4\">\n * </video>\n * <div slot=\"actions\">\n * <button>Take Virtual Tour</button>\n * </div>\n * <div slot=\"additional\">\n * <h2>Discover Your Path</h2>\n * <p>With over 100 undergraduate majors...</p>\n * </div>\n * </umd-element-hero-expand>\n * ```\n *\n * @example\n * ```html\n * <!-- Hero with wrapped video element -->\n * <umd-element-hero-expand>\n * <h1 slot=\"headline\">Innovation Hub</h1>\n * <div slot=\"video\">\n * <video autoplay muted loop>\n * <source src=\"innovation.mp4\" type=\"video/mp4\">\n * </video>\n * </div>\n * </umd-element-hero-expand>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst ExpandHero: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n attributes,\n afterConnect: (ref) => {\n if (ref.element instanceof HTMLElement) {\n const topPosition = Attributes.getValue.topPosition({\n element: ref.element,\n });\n if (topPosition) {\n ref?.events?.setTopPosition({ value: topPosition });\n }\n }\n },\n});\n\nexport default ExpandHero;\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Register, Slots, Lifecycle } from 'model';\nimport type { CreateComponentFunction, ComponentRegistration } from '../../_types';\n\n/**\n * Tag name for the logo hero component\n * @internal\n */\nconst tagName = 'umd-element-hero-logo';\n\nconst createComponent: CreateComponentFunction = (element) =>\n Composite.hero.logo({\n isThemeDark: Attributes.isTheme.dark({\n element,\n }),\n isThemeLight: Attributes.isTheme.light({\n element,\n }),\n isThemeMaryland: Attributes.isTheme.maryland({\n element,\n }),\n eyebrow: Slots.eyebrow.default({ element }),\n headline: Slots.headline.default({ element }),\n text: Slots.text.default({ element }),\n image: Slots.assets.image({ element }) as HTMLImageElement | null,\n actions: Slots.actions.default({ element }),\n });\n\n/**\n * Logo Hero Component\n *\n * A hero component that emphasizes the University of Maryland logo.\n * Perfect for brand-focused pages and official communications.\n *\n * ## Custom Element\n * `<umd-element-hero-logo>`\n *\n * ## Slots\n * - `eyebrow` - Small text above headline\n * - `headline` - Main hero heading (required)\n * - `text` - Supporting text content\n * - `image` - Hero image\n * - `actions` - Call-to-action buttons/links\n *\n * ## Attributes\n * - `data-theme` - Theme options:\n * - `dark` - Dark theme styling\n * - `light` - Light theme styling\n * - `maryland` - Maryland theme styling\n *\n * @example\n * ```html\n * <!-- Basic logo hero -->\n * <umd-element-hero-logo>\n * <h1 slot=\"headline\">University of Maryland</h1>\n * <p slot=\"text\">A global leader in research, entrepreneurship and innovation</p>\n * <img slot=\"image\" src=\"campus-beauty.jpg\" alt=\"Campus scene\">\n * </umd-element-hero-logo>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme logo hero with actions -->\n * <umd-element-hero-logo data-theme=\"dark\">\n * <p slot=\"eyebrow\">Office of the President</p>\n * <h1 slot=\"headline\">A Message from President Pines</h1>\n * <p slot=\"text\">\n * Together, we are fearlessly forward in our pursuit of excellence\n * and impact for the public good.\n * </p>\n * <div slot=\"actions\">\n * <a href=\"/president/message\">Read Full Message</a>\n * <a href=\"/president/initiatives\">Presidential Initiatives</a>\n * </div>\n * </umd-element-hero-logo>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst LogoHero: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n afterConnect: Lifecycle.hooks.loadOnConnect,\n});\n\nexport default LogoHero;\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Register, Slots, Lifecycle } from 'model';\nimport type { CreateComponentFunction, ComponentRegistration } from '../../_types';\n\n/**\n * Tag name for the minimal hero component\n * @internal\n */\nconst tagName = 'umd-element-hero-minimal';\n\nconst createComponent: CreateComponentFunction = (element) =>\n Composite.hero.minimal({\n isThemeDark: Attributes.isTheme.dark({\n element,\n }),\n isThemeLight: Attributes.isTheme.light({\n element,\n }),\n isThemeMaryland: Attributes.isTheme.maryland({\n element,\n }),\n eyebrow: Slots.eyebrow.default({ element }),\n headline: Slots.headline.default({ element }),\n text: Slots.text.default({ element }),\n image: Slots.assets.image({ element }) as HTMLImageElement | null,\n actions: Slots.actions.default({ element }),\n });\n\n/**\n * Minimal Hero Component\n *\n * A simplified hero component with clean design and multiple theme options.\n * Ideal for interior pages and content-focused layouts.\n *\n * ## Custom Element\n * `<umd-element-hero-minimal>`\n *\n * ## Slots\n * - `eyebrow` - Small text above headline\n * - `headline` - Main hero heading (required)\n * - `text` - Supporting text content\n * - `image` - Hero image\n * - `actions` - Call-to-action buttons/links\n *\n * ## Attributes\n * - `data-theme` - Theme options:\n * - `dark` - Dark theme styling\n * - `light` - Light theme styling\n * - `maryland` - Maryland brand theme\n *\n * @example\n * ```html\n * <!-- Basic minimal hero -->\n * <umd-element-hero-minimal>\n * <h1 slot=\"headline\">Academic Programs</h1>\n * <p slot=\"text\">Explore over 100 undergraduate majors</p>\n * </umd-element-hero-minimal>\n * ```\n *\n * @example\n * ```html\n * <!-- Minimal hero with light theme and image -->\n * <umd-element-hero-minimal data-theme=\"light\">\n * <p slot=\"eyebrow\">College of Engineering</p>\n * <h1 slot=\"headline\">Aerospace Engineering</h1>\n * <p slot=\"text\">\n * Prepare for a career designing the next generation of\n * aircraft and spacecraft.\n * </p>\n * <img slot=\"image\" src=\"aerospace-lab.jpg\" alt=\"Aerospace laboratory\">\n * <div slot=\"actions\">\n * <a href=\"/aerospace/apply\">Apply to Program</a>\n * </div>\n * </umd-element-hero-minimal>\n * ```\n *\n * @example\n * ```html\n * <!-- Maryland theme minimal hero -->\n * <umd-element-hero-minimal data-theme=\"maryland\">\n * <h1 slot=\"headline\">Go Terps!</h1>\n * <p slot=\"text\">Follow Maryland Athletics</p>\n * <div slot=\"actions\">\n * <a href=\"/athletics\">View Schedule</a>\n * </div>\n * </umd-element-hero-minimal>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst MinimalHero: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n afterConnect: Lifecycle.hooks.loadOnConnect,\n});\n\nexport default MinimalHero;\n"],"names":["tagName","createComponent","element","makeSlots","Slots","isDisplayOverlay","Attributes.isDisplay","isDisplayStacked","includesAnimation","Attributes.includesFeature","isThemeDark","Attributes.isTheme","Composite","Attributes.isLayout","Attributes.getValue","BaseHero","Register.webComponent","Lifecycle.hooks","base_default","animationTriggerAttribute","video","BrandVideoHero","video_default","leftColumn","rightColumn","centerColumn","leftImages","rightImages","centerImages","centerVideo","elementData","gridElement","GridHero","grid_default","attributes","Attributes.handler","topPosition","Attributes.names","image","Markup.validate.ImageSlot","videoSlot","actions","Markup.create.Node","additional","isVideo","ExpandHero","ref","expand_default","LogoHero","logo_default","MinimalHero","minimal_default"],"mappings":"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"}
1
+ {"version":3,"file":"minimal-DPc0ZoRw.js","sources":["../source/api/hero/base.ts","../source/api/hero/custom/video.ts","../source/api/hero/custom/grid.ts","../source/api/hero/custom/expand.ts","../source/api/hero/logo.ts","../source/api/hero/minimal.ts"],"sourcesContent":["import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Lifecycle, Slots, Register } from 'model';\nimport type {\n CreateComponentFunction,\n ComponentRegistration,\n} from '../../_types';\n\n/**\n * Tag name for the base hero component\n * @internal\n */\nconst tagName = 'umd-element-hero';\n\n/**\n * Creates a hero component based on type attribute\n * @param element - The host HTML element\n * @returns Configured hero component\n * @internal\n */\nconst createComponent: CreateComponentFunction = (element) => {\n const makeSlots = ({ element }: { element: HTMLElement }) => ({\n eyebrow: Slots.eyebrow.default({ element }),\n headline: Slots.headline.default({ element }),\n text: Slots.text.default({ element }),\n video: Slots.assets.video({ element }) as HTMLVideoElement | null,\n image: Slots.assets.image({ element }) as HTMLImageElement | null,\n actions: Slots.actions.default({ element }),\n });\n const isDisplayOverlay = Attributes.isDisplay.overlay({ element });\n const isDisplayStacked = Attributes.isDisplay.stacked({ element });\n const includesAnimation = Attributes.includesFeature.animation({ element });\n const isThemeDark = Attributes.isTheme.dark({ element });\n\n if (isDisplayOverlay) {\n return Composite.hero.overlay({\n ...makeSlots({ element }),\n includesAnimation,\n });\n }\n\n if (isDisplayStacked) {\n return Composite.hero.stacked({\n ...makeSlots({ element }),\n isHeightSmall: Attributes.isLayout.heightSmall({ element }) || false,\n isWidthLarge:\n Attributes.isLayout.spaceHorizontalLarge({ element }) || false,\n isThemeDark,\n includesAnimation,\n topPosition: Attributes.getValue.topPosition({\n element,\n }),\n });\n }\n\n // Deprecated usage\n if (\n Attributes.isDisplay.stackedInterior({\n element,\n })\n ) {\n return Composite.hero.stacked({\n ...makeSlots({ element }),\n isHeightSmall: true,\n isWidthLarge: true,\n isThemeDark,\n includesAnimation,\n });\n }\n\n // Deprecated usage\n if (\n Attributes.isDisplay.standardCentered({\n element,\n })\n ) {\n return Composite.hero.standard({\n ...makeSlots({ element }),\n isTextCenter: true,\n isHeightSmall: false,\n includesAnimation,\n });\n }\n\n // Deprecated usage\n if (\n Attributes.isDisplay.standardInterior({\n element,\n })\n ) {\n return Composite.hero.standard({\n ...makeSlots({ element }),\n isHeightSmall: true,\n isThemeDark,\n includesAnimation,\n });\n }\n\n // Deprecated usage\n if (\n Attributes.isDisplay.standardInteriorCentered({\n element,\n })\n ) {\n return Composite.hero.standard({\n ...makeSlots({ element }),\n isHeightSmall: true,\n isTextCenter: true,\n includesAnimation,\n });\n }\n\n return Composite.hero.standard({\n ...makeSlots({ element }),\n isHeightSmall: Attributes.isLayout.heightSmall({ element }) || false,\n isTextCenter: Attributes.isLayout.textCentered({ element }) || false,\n isThemeDark,\n includesAnimation,\n });\n};\n\n/**\n * Base Hero Component\n *\n * A versatile hero component with multiple layout options for page headers.\n * Supports various content arrangements and visual styles.\n *\n * ## Custom Element\n * `<umd-element-hero>`\n *\n * ## Slots\n * - `eyebrow` - Small text above headline\n * - `headline` - Main hero heading (required)\n * - `text` - Supporting text content\n * - `image` - Hero image\n * - `video` - Hero video\n * - `actions` - Call-to-action buttons/links\n *\n * ## Attributes\n * - `data-display` - Display type options:\n * - `standard` - Standard hero layout (default)\n * - `stacked` - Stacked content layout\n * - `overlay` - Content overlaid on image/video\n * - `data-layout-space-horizontal` - Horizontal spacing options:\n * - `large` - Large horizontal spacing (see https://designsystem.umd.edu/foundation/horizontal-spacing)\n * - `data-layout-height` - Layout height options:\n * - `small` - Smaller layout height\n * - `data-layout-text` - Text alignment options:\n * - `center` - Center align text\n * - `data-theme` - Theme options:\n * - `dark` - Dark theme styling\n * - `data-feature` - Feature options:\n * - `animation` - Enable animations\n * - `data-layout-position` - Sticky position offset in pixels (e.g., `80` for 80px from top)\n *\n * ## Deprecated Attributes\n * The following attributes are deprecated and will be removed in v2.0:\n * - `type=\"default-centered\"` → Use `data-display=\"standard\" data-layout-text=\"center\"`\n * - `type=\"default-interior\"` → Use `data-display=\"standard\" data-layout-height=\"small\"`\n * - `type=\"default-interior-centered\"` → Use `data-display=\"standard\" data-layout-height=\"small\" data-layout-text=\"center\"`\n * - `type=\"stacked\"` → Use `data-display=\"stacked\"`\n * - `type=\"stacked-interior\"` → Use `data-display=\"stacked\" data-layout-height=\"small\" data-layout-space-horizontal=\"large\"`\n * - `type=\"overlay\"` → Use `data-display=\"overlay\"`\n * - `data-visual-align=\"center\"` → Use `data-layout-text=\"center\"`\n *\n * @example\n * ```html\n * <!-- Basic hero -->\n * <umd-element-hero>\n * <h1 slot=\"headline\">Welcome to Maryland</h1>\n * <p slot=\"text\">Fearlessly Forward</p>\n * <img slot=\"image\" src=\"campus.jpg\" alt=\"Campus view\">\n * </umd-element-hero>\n * ```\n *\n * @example\n * ```html\n * <!-- Overlay hero with video -->\n * <umd-element-hero data-display=\"overlay\" data-theme=\"dark\">\n * <p slot=\"eyebrow\">Discover</p>\n * <h1 slot=\"headline\">Your Future Starts Here</h1>\n * <p slot=\"text\">Join a community of innovators and leaders</p>\n * <video slot=\"video\" autoplay muted loop>\n * <source src=\"campus-video.mp4\" type=\"video/mp4\">\n * </video>\n * <div slot=\"actions\">\n * <a href=\"/apply\">Apply Now</a>\n * <a href=\"/visit\">Plan Your Visit</a>\n * </div>\n * </umd-element-hero>\n * ```\n *\n * @example\n * ```html\n * <!-- Stacked hero with small height and large horizontal spacing -->\n * <umd-element-hero data-display=\"stacked\" data-layout-height=\"small\" data-layout-space-horizontal=\"large\" data-layout-position=\"80\">\n * <h1 slot=\"headline\">Research Excellence</h1>\n * <p slot=\"text\">Advancing knowledge through groundbreaking research</p>\n * <img slot=\"image\" src=\"research-lab.jpg\" alt=\"Research laboratory\">\n * </umd-element-hero>\n * ```\n *\n * @example\n * ```html\n * <!-- Standard hero with centered text -->\n * <umd-element-hero data-display=\"standard\" data-layout-text=\"center\">\n * <h1 slot=\"headline\">About the University</h1>\n * <p slot=\"text\">Founded in 1856, the University of Maryland...</p>\n * </umd-element-hero>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst BaseHero: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n afterConnect: Lifecycle.hooks.loadOnConnect,\n});\n\nexport default BaseHero;\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Lifecycle, Slots, Register } from 'model';\nimport type {\n CreateComponentFunction,\n ComponentRegistration,\n} from '../../../_types';\n\n/**\n * Tag name for the brand video hero component\n * @internal\n */\nconst tagName = 'umd-element-hero-brand-video';\n\nconst createComponent: CreateComponentFunction = (element) => {\n const animationTriggerAttribute = element.getAttribute('animation-trigger');\n const video = element.querySelector('video') as HTMLVideoElement;\n\n return Composite.hero.custom.videoArrow({\n video,\n headline: Slots.headline.default({ element }),\n text: Slots.text.default({ element }),\n isAnimationOnLoad: animationTriggerAttribute === 'load',\n });\n};\n\n/**\n * Brand Video Hero Component\n *\n * A hero component featuring brand-focused video content with animation support.\n * Designed for impactful homepage and campaign experiences.\n *\n * ## Custom Element\n * `<umd-element-hero-brand-video>`\n *\n * ## Slots\n * - `headline` - Main hero heading\n * - `text` - Supporting text content\n *\n * ## Direct Children\n * - `video` - Video element (not slotted, direct child)\n *\n * ## Attributes\n * - `animation-trigger` - Animation trigger options:\n * - `load` - Start animation on component load\n *\n * @example\n * ```html\n * <!-- Basic brand video hero -->\n * <umd-element-hero-brand-video>\n * <video autoplay muted loop>\n * <source src=\"brand-video.mp4\" type=\"video/mp4\">\n * </video>\n * <h1 slot=\"headline\">Fearlessly Forward</h1>\n * <p slot=\"text\">The University of Maryland's strategic vision</p>\n * </umd-element-hero-brand-video>\n * ```\n *\n * @example\n * ```html\n * <!-- Brand video with load animation -->\n * <umd-element-hero-brand-video animation-trigger=\"load\">\n * <video autoplay muted loop>\n * <source src=\"campaign.mp4\" type=\"video/mp4\">\n * <source src=\"campaign.webm\" type=\"video/webm\">\n * </video>\n * <h1 slot=\"headline\">Do Good</h1>\n * <p slot=\"text\">\n * Join us in making a positive impact on our world\n * </p>\n * </umd-element-hero-brand-video>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst BrandVideoHero: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n afterConnect: Lifecycle.hooks.loadOnConnect,\n});\n\nexport default BrandVideoHero;\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Slots, Register } from 'model';\nimport type {\n CreateComponentFunction,\n ComponentRegistration,\n} from '../../../_types';\n\n/**\n * Tag name for the grid hero component\n * @internal\n */\nconst tagName = 'umd-element-hero-grid';\n\nconst createComponent: CreateComponentFunction = (element) => {\n const leftColumn = element.querySelector(\n `[slot=\"column-left\"]`,\n ) as HTMLElement;\n const rightColumn = element.querySelector(\n `[slot=\"column-right\"]`,\n ) as HTMLElement;\n const centerColumn = element.querySelector(\n `[slot=\"column-center\"]`,\n ) as HTMLElement;\n\n const leftImages = Array.from(\n leftColumn.querySelectorAll('img'),\n ) as HTMLImageElement[];\n const rightImages = Array.from(\n rightColumn.querySelectorAll('img'),\n ) as HTMLImageElement[];\n const centerImages = Array.from(\n centerColumn.querySelectorAll('img'),\n ) as HTMLImageElement[];\n const centerVideo = centerColumn.querySelector(\n 'video',\n ) as HTMLVideoElement | null;\n\n const elementData = {\n corners: [\n {\n images: leftImages,\n isCornerLeft: true,\n },\n {\n images: rightImages,\n isCornerLeft: false,\n },\n ],\n center: {\n images: centerImages,\n video: centerVideo,\n },\n headline: Slots.headline.default({ element }),\n text: Slots.text.default({ element }),\n actions: Slots.actions.default({ element }),\n isThemeDark: Attributes.isTheme.dark({ element }) || false,\n };\n\n const gridElement = Composite.hero.custom.grid(elementData);\n\n if (gridElement) return gridElement;\n\n return { element: document.createElement('div'), styles: '' };\n};\n\n/**\n * Grid Hero Component\n *\n * A three-column grid hero with scroll-triggered animations that progressively\n * focus on center content. Creates an immersive visual experience with smooth\n * transitions between grid states.\n *\n * ## Custom Element\n * `<umd-element-hero-grid>`\n *\n * ## Slots\n * - `column-left` - Left column container for images\n * - `column-center` - Center column container for images and optional video\n * - `column-right` - Right column container for images\n *\n * ## Visual Behavior\n * - Initial layout: 20% - 60% - 20% column widths\n * - Scroll animation: Transitions to 0% - 100% - 0% (center-focused)\n * - Center rows animate from 25vh-1fr-25vh to 0-1fr-0\n * - Includes progressive tint overlay during scroll\n *\n * @example\n * ```html\n * <!-- Basic grid hero with images -->\n * <umd-element-hero-grid>\n * <div slot=\"column-left\">\n * <img src=\"left1.jpg\" alt=\"Campus view\">\n * <img src=\"left2.jpg\" alt=\"Students\">\n * </div>\n * <div slot=\"column-center\">\n * <img src=\"center1.jpg\" alt=\"Main building\">\n * <img src=\"center2.jpg\" alt=\"Research lab\">\n * </div>\n * <div slot=\"column-right\">\n * <img src=\"right1.jpg\" alt=\"Athletics\">\n * <img src=\"right2.jpg\" alt=\"Library\">\n * </div>\n * </umd-element-hero-grid>\n * ```\n *\n * @example\n * ```html\n * <!-- Grid hero with center video -->\n * <umd-element-hero-grid>\n * <div slot=\"column-left\">\n * <img src=\"left1.jpg\" alt=\"Campus life\">\n * <img src=\"left2.jpg\" alt=\"Student activities\">\n * <img src=\"left3.jpg\" alt=\"Dining\">\n * </div>\n * <div slot=\"column-center\">\n * <img src=\"center1.jpg\" alt=\"Aerial view\">\n * <video autoplay muted loop>\n * <source src=\"campus-tour.mp4\" type=\"video/mp4\">\n * </video>\n * <img src=\"center2.jpg\" alt=\"Graduation\">\n * </div>\n * <div slot=\"column-right\">\n * <img src=\"right1.jpg\" alt=\"Research\">\n * <img src=\"right2.jpg\" alt=\"Innovation\">\n * <img src=\"right3.jpg\" alt=\"Community\">\n * </div>\n * </umd-element-hero-grid>\n * ```\n *\n * @category Components\n * @since 1.12.0\n */\nconst GridHero: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n});\n\nexport default GridHero;\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Slots, Register } from 'model';\nimport { Markup } from 'utilities';\nimport type {\n CreateComponentFunction,\n ComponentRegistration,\n} from '../../../_types';\n\n/**\n * Tag name for the expandable hero component\n * @internal\n */\nconst tagName = 'umd-element-hero-expand';\n\nconst attributes = Attributes.handler.combine(\n Attributes.handler.observe.visuallyPosition({\n callback: (element, topPosition) =>\n element.events?.setTopPosition({ 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?.setTopPosition({ value: topPosition }),\n }),\n);\n\nconst createComponent: CreateComponentFunction = (element) => {\n const image = Markup.validate.ImageSlot({\n element,\n ImageSlot: Slots.name.assets.image,\n });\n const videoSlot = element.querySelector(`[slot=\"video\"]`) as HTMLElement;\n const actions = Markup.create.Node.slot({ type: Slots.name.actions.default });\n const additional = Markup.create.Node.slot({ type: Slots.name.ADDITIONAL });\n\n const elementData: {\n image?: HTMLImageElement;\n video?: HTMLVideoElement;\n eyebrow?: HTMLElement | null;\n headline?: HTMLElement | null;\n actions?: HTMLElement | null;\n additional?: HTMLSlotElement | null;\n topPosition?: string | null;\n } = {\n eyebrow: Slots.eyebrow.default({ element }),\n headline: Slots.headline.default({ element }),\n topPosition: Attributes.getValue.topPosition({ element }),\n };\n const isVideo = videoSlot instanceof HTMLVideoElement;\n\n if (image) {\n elementData.image = image;\n }\n\n if (isVideo) {\n elementData.video = videoSlot as HTMLVideoElement;\n }\n\n if (!isVideo && videoSlot && videoSlot.children.length > 0) {\n const video = videoSlot.querySelector('video') as HTMLVideoElement;\n if (video) elementData.video = video;\n }\n\n if (actions) {\n elementData.actions = actions;\n }\n\n if (additional) {\n elementData.additional = additional;\n }\n\n return Composite.hero.custom.expand(elementData);\n};\n\n/**\n * Expandable Hero Component\n *\n * A hero component with expandable content area and sticky positioning support.\n * Ideal for immersive experiences with additional content reveal.\n *\n * ## Custom Element\n * `<umd-element-hero-expand>`\n *\n * ## Slots\n * - `eyebrow` - Small text above headline\n * - `headline` - Main hero heading\n * - `image` - Hero image\n * - `video` - Hero video (as video element or container)\n * - `actions` - Call-to-action buttons/links\n * - `additional` - Additional expandable content area\n *\n * ## Attributes\n * - `data-visual-position` - Top position for sticky behavior (in pixels)\n * - `data-top-position` - Override sticky position value\n *\n * ## Observed Attributes\n * - `data-visual-position` - Updates sticky position dynamically\n *\n * @example\n * ```html\n * <!-- Basic expandable hero -->\n * <umd-element-hero-expand>\n * <h1 slot=\"headline\">Explore Our Campus</h1>\n * <img slot=\"image\" src=\"aerial-view.jpg\" alt=\"Campus aerial view\">\n * <div slot=\"additional\">\n * <p>Discover 1,250 acres of possibilities...</p>\n * </div>\n * </umd-element-hero-expand>\n * ```\n *\n * @example\n * ```html\n * <!-- Expandable hero with video and sticky position -->\n * <umd-element-hero-expand data-visual-position=\"80\">\n * <p slot=\"eyebrow\">Experience Maryland</p>\n * <h1 slot=\"headline\">Where Ideas Take Flight</h1>\n * <video slot=\"video\" autoplay muted loop>\n * <source src=\"campus-tour.mp4\" type=\"video/mp4\">\n * </video>\n * <div slot=\"actions\">\n * <button>Take Virtual Tour</button>\n * </div>\n * <div slot=\"additional\">\n * <h2>Discover Your Path</h2>\n * <p>With over 100 undergraduate majors...</p>\n * </div>\n * </umd-element-hero-expand>\n * ```\n *\n * @example\n * ```html\n * <!-- Hero with wrapped video element -->\n * <umd-element-hero-expand>\n * <h1 slot=\"headline\">Innovation Hub</h1>\n * <div slot=\"video\">\n * <video autoplay muted loop>\n * <source src=\"innovation.mp4\" type=\"video/mp4\">\n * </video>\n * </div>\n * </umd-element-hero-expand>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst ExpandHero: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n attributes,\n afterConnect: (ref) => {\n if (ref.element instanceof HTMLElement) {\n const topPosition = Attributes.getValue.topPosition({\n element: ref.element,\n });\n if (topPosition) {\n ref?.events?.setTopPosition({ value: topPosition });\n }\n }\n },\n});\n\nexport default ExpandHero;\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Register, Slots, Lifecycle } from 'model';\nimport type { CreateComponentFunction, ComponentRegistration } from '../../_types';\n\n/**\n * Tag name for the logo hero component\n * @internal\n */\nconst tagName = 'umd-element-hero-logo';\n\nconst createComponent: CreateComponentFunction = (element) =>\n Composite.hero.logo({\n isThemeDark: Attributes.isTheme.dark({\n element,\n }),\n isThemeLight: Attributes.isTheme.light({\n element,\n }),\n isThemeMaryland: Attributes.isTheme.maryland({\n element,\n }),\n eyebrow: Slots.eyebrow.default({ element }),\n headline: Slots.headline.default({ element }),\n text: Slots.text.default({ element }),\n image: Slots.assets.image({ element }) as HTMLImageElement | null,\n actions: Slots.actions.default({ element }),\n });\n\n/**\n * Logo Hero Component\n *\n * A hero component that emphasizes the University of Maryland logo.\n * Perfect for brand-focused pages and official communications.\n *\n * ## Custom Element\n * `<umd-element-hero-logo>`\n *\n * ## Slots\n * - `eyebrow` - Small text above headline\n * - `headline` - Main hero heading (required)\n * - `text` - Supporting text content\n * - `image` - Hero image\n * - `actions` - Call-to-action buttons/links\n *\n * ## Attributes\n * - `data-theme` - Theme options:\n * - `dark` - Dark theme styling\n * - `light` - Light theme styling\n * - `maryland` - Maryland theme styling\n *\n * @example\n * ```html\n * <!-- Basic logo hero -->\n * <umd-element-hero-logo>\n * <h1 slot=\"headline\">University of Maryland</h1>\n * <p slot=\"text\">A global leader in research, entrepreneurship and innovation</p>\n * <img slot=\"image\" src=\"campus-beauty.jpg\" alt=\"Campus scene\">\n * </umd-element-hero-logo>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme logo hero with actions -->\n * <umd-element-hero-logo data-theme=\"dark\">\n * <p slot=\"eyebrow\">Office of the President</p>\n * <h1 slot=\"headline\">A Message from President Pines</h1>\n * <p slot=\"text\">\n * Together, we are fearlessly forward in our pursuit of excellence\n * and impact for the public good.\n * </p>\n * <div slot=\"actions\">\n * <a href=\"/president/message\">Read Full Message</a>\n * <a href=\"/president/initiatives\">Presidential Initiatives</a>\n * </div>\n * </umd-element-hero-logo>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst LogoHero: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n afterConnect: Lifecycle.hooks.loadOnConnect,\n});\n\nexport default LogoHero;\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Register, Slots, Lifecycle } from 'model';\nimport type { CreateComponentFunction, ComponentRegistration } from '../../_types';\n\n/**\n * Tag name for the minimal hero component\n * @internal\n */\nconst tagName = 'umd-element-hero-minimal';\n\nconst createComponent: CreateComponentFunction = (element) =>\n Composite.hero.minimal({\n isThemeDark: Attributes.isTheme.dark({\n element,\n }),\n isThemeLight: Attributes.isTheme.light({\n element,\n }),\n isThemeMaryland: Attributes.isTheme.maryland({\n element,\n }),\n eyebrow: Slots.eyebrow.default({ element }),\n headline: Slots.headline.default({ element }),\n text: Slots.text.default({ element }),\n image: Slots.assets.image({ element }) as HTMLImageElement | null,\n actions: Slots.actions.default({ element }),\n });\n\n/**\n * Minimal Hero Component\n *\n * A simplified hero component with clean design and multiple theme options.\n * Ideal for interior pages and content-focused layouts.\n *\n * ## Custom Element\n * `<umd-element-hero-minimal>`\n *\n * ## Slots\n * - `eyebrow` - Small text above headline\n * - `headline` - Main hero heading (required)\n * - `text` - Supporting text content\n * - `image` - Hero image\n * - `actions` - Call-to-action buttons/links\n *\n * ## Attributes\n * - `data-theme` - Theme options:\n * - `dark` - Dark theme styling\n * - `light` - Light theme styling\n * - `maryland` - Maryland brand theme\n *\n * @example\n * ```html\n * <!-- Basic minimal hero -->\n * <umd-element-hero-minimal>\n * <h1 slot=\"headline\">Academic Programs</h1>\n * <p slot=\"text\">Explore over 100 undergraduate majors</p>\n * </umd-element-hero-minimal>\n * ```\n *\n * @example\n * ```html\n * <!-- Minimal hero with light theme and image -->\n * <umd-element-hero-minimal data-theme=\"light\">\n * <p slot=\"eyebrow\">College of Engineering</p>\n * <h1 slot=\"headline\">Aerospace Engineering</h1>\n * <p slot=\"text\">\n * Prepare for a career designing the next generation of\n * aircraft and spacecraft.\n * </p>\n * <img slot=\"image\" src=\"aerospace-lab.jpg\" alt=\"Aerospace laboratory\">\n * <div slot=\"actions\">\n * <a href=\"/aerospace/apply\">Apply to Program</a>\n * </div>\n * </umd-element-hero-minimal>\n * ```\n *\n * @example\n * ```html\n * <!-- Maryland theme minimal hero -->\n * <umd-element-hero-minimal data-theme=\"maryland\">\n * <h1 slot=\"headline\">Go Terps!</h1>\n * <p slot=\"text\">Follow Maryland Athletics</p>\n * <div slot=\"actions\">\n * <a href=\"/athletics\">View Schedule</a>\n * </div>\n * </umd-element-hero-minimal>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst MinimalHero: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n afterConnect: Lifecycle.hooks.loadOnConnect,\n});\n\nexport default MinimalHero;\n"],"names":["tagName","createComponent","element","makeSlots","Slots","isDisplayOverlay","Attributes.isDisplay","isDisplayStacked","includesAnimation","Attributes.includesFeature","isThemeDark","Attributes.isTheme","Composite","Attributes.isLayout","Attributes.getValue","BaseHero","Register.webComponent","Lifecycle.hooks","base_default","animationTriggerAttribute","video","BrandVideoHero","video_default","leftColumn","rightColumn","centerColumn","leftImages","rightImages","centerImages","centerVideo","elementData","gridElement","GridHero","grid_default","attributes","Attributes.handler","topPosition","Attributes.names","image","Markup.validate.ImageSlot","videoSlot","actions","Markup.create.Node","additional","isVideo","ExpandHero","ref","expand_default","LogoHero","logo_default","MinimalHero","minimal_default"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../../../source/model/attributes/checks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../../../source/model/attributes/checks.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Composite as C } from "@universityofmaryland/web-elements-library";
2
- import { a as N } from "./shared/model-4-WQm2Le.js";
3
- import { w as T } from "./shared/utilities-B_sPVa-m.js";
2
+ import { a as N } from "./shared/model-CHS3WnCo.js";
3
+ import { w as T } from "./shared/utilities-CZHe-tKs.js";
4
4
  const A = "umd-element-footer", o = {
5
5
  BACKGROUND_IMAGE: "background-image",
6
6
  CONTACT_HEADLINE: "contact-headline",
@@ -62,4 +62,4 @@ var I = S;
62
62
  export {
63
63
  I as o
64
64
  };
65
- //# sourceMappingURL=options-BvmHmwsE.js.map
65
+ //# sourceMappingURL=options-CZuC7PDp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"options-BvmHmwsE.js","sources":["../source/api/footer/options.ts"],"sourcesContent":["import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Register } from 'model';\nimport type {\n CreateComponentFunction,\n ComponentRegistration,\n SlotConfiguration,\n} from '../../_types';\n\n/**\n * Tag name for the footer component\n * @internal\n */\nconst tagName = 'umd-element-footer';\n\n/**\n * Available slot names for the footer component\n * @internal\n */\nexport const SLOTS = {\n BACKGROUND_IMAGE: 'background-image',\n CONTACT_HEADLINE: 'contact-headline',\n CONTACT_LINKS: 'contact-links',\n CONTACT_ADDRESS: 'contact-address',\n CTA: 'call-to-action',\n SOCIAL: 'social-links',\n UTILITY: 'utility-links',\n LINK_COLUMN_ONE: 'link-column-one',\n LINK_COLUMN_TWO: 'link-column-two',\n LINK_COLUMN_THREE: 'link-column-three',\n};\n\n/**\n * Slot configuration for the footer component\n * @internal\n */\nconst slots: SlotConfiguration = {\n [`${SLOTS.BACKGROUND_IMAGE}`]: {\n allowedElements: ['img'],\n },\n};\n\n/**\n * Creates a footer component based on type and populated slots\n * @param element - The host HTML element\n * @returns Configured footer component\n * @internal\n */\nconst createComponent: CreateComponentFunction = (element) => {\n const isTypeMega = element.getAttribute('type') === 'mega';\n const isTypeVisual = element.getAttribute('type') === 'visual';\n const columnOne = element.querySelector(\n `[slot=\"${SLOTS.LINK_COLUMN_ONE}\"]`,\n ) as HTMLSlotElement;\n const columnTwo = element.querySelector(\n `[slot=\"${SLOTS.LINK_COLUMN_TWO}\"]`,\n ) as HTMLSlotElement;\n const columnThree = element.querySelector(\n `[slot=\"${SLOTS.LINK_COLUMN_THREE}\"]`,\n ) as HTMLSlotElement;\n const hasLandmark = element.hasAttribute('role');\n const hasLabel = element.hasAttribute('aria-label');\n const columns = [];\n let isTypeSimple = element.getAttribute('type') === 'simple';\n\n if (columnOne && columnOne.hasChildNodes()) {\n columns.push(columnOne);\n }\n if (columnTwo && columnTwo.hasChildNodes()) {\n columns.push(columnTwo);\n }\n if (columnThree && columnThree.hasChildNodes()) {\n columns.push(columnThree);\n }\n\n if (!isTypeMega && !isTypeVisual) {\n isTypeSimple = true;\n }\n\n if (!hasLandmark) {\n element.setAttribute('role', 'contentinfo');\n }\n\n if (!hasLabel) {\n element.setAttribute('aria-label', 'site footer');\n }\n\n return Composite.footer.options({\n isThemeLight: Attributes.isTheme.light({ element }),\n isTypeSimple,\n isTypeVisual,\n isTypeMega,\n slotVisualImage: element.querySelector(\n `[slot=\"${SLOTS.BACKGROUND_IMAGE}\"]`,\n ) as HTMLImageElement,\n slotUtilityLinks: element.querySelector(\n `[slot=\"${SLOTS.UTILITY}\"]`,\n ) as HTMLElement,\n slotCta: element.querySelector(\n `[slot=\"${SLOTS.CTA}\"]`,\n ) as HTMLAnchorElement,\n slotAddress: element.querySelector(\n `[slot=\"${SLOTS.CONTACT_ADDRESS}\"]`,\n ) as HTMLSlotElement,\n slotContentLinks: element.querySelector(\n `[slot=\"${SLOTS.CONTACT_LINKS}\"]`,\n ) as HTMLSlotElement,\n slotHeadline: element.querySelector(\n `[slot=\"${SLOTS.CONTACT_HEADLINE}\"]`,\n ) as HTMLSlotElement,\n slotSocialLinks: element.querySelector(\n `[slot=\"${SLOTS.SOCIAL}\"]`,\n ) as HTMLSlotElement,\n slotColumns: columns.length > 0 ? columns : undefined,\n });\n};\n\n/**\n * Footer Component\n *\n * A versatile footer component with three layout options for different site needs.\n * Automatically adds accessibility attributes if not provided.\n *\n * ## Custom Element\n * `<umd-element-footer>`\n *\n * ## Slots\n * - `contact-headline` - Contact section header\n * - `contact-links` - Contact links section\n * - `contact-address` - Address information\n * - `call-to-action` - Primary CTA button/link\n * - `social-links` - Social media links\n * - `utility-links` - Utility navigation links\n * - `link-column-one` - First link column (mega footer only)\n * - `link-column-two` - Second link column (mega footer only)\n * - `link-column-three` - Third link column (mega footer only)\n * - `background-image` - Background image (visual footer only, accepts: img)\n *\n * ## Attributes\n * - `type` - Footer layout options:\n * - `simple` - Basic footer layout (default)\n * - `mega` - Large footer with link columns\n * - `visual` - Footer with background image\n * - `data-theme` - Theme options:\n * - `light` - Light theme styling\n *\n * @example\n * ```html\n * <!-- Simple footer -->\n * <umd-element-footer type=\"simple\">\n * <h2 slot=\"contact-headline\">Contact Us</h2>\n * <div slot=\"contact-links\">\n * <a href=\"tel:3014050100\">301.405.0100</a>\n * <a href=\"mailto:info@umd.edu\">info@umd.edu</a>\n * </div>\n * <address slot=\"contact-address\">\n * University of Maryland<br>\n * College Park, MD 20742\n * </address>\n * <div slot=\"social-links\">\n * <a href=\"#\">Facebook</a>\n * <a href=\"#\">Twitter</a>\n * </div>\n * </umd-element-footer>\n * ```\n *\n * @example\n * ```html\n * <!-- Mega footer with columns -->\n * <umd-element-footer type=\"mega\" data-theme=\"light\">\n * <div slot=\"link-column-one\">\n * <h3>Academics</h3>\n * <ul>\n * <li><a href=\"#\">Programs</a></li>\n * <li><a href=\"#\">Courses</a></li>\n * </ul>\n * </div>\n * <div slot=\"link-column-two\">\n * <h3>Resources</h3>\n * <ul>\n * <li><a href=\"#\">Libraries</a></li>\n * <li><a href=\"#\">Technology</a></li>\n * </ul>\n * </div>\n * <a slot=\"call-to-action\" href=\"/apply\">Apply Now</a>\n * <div slot=\"utility-links\">\n * <a href=\"/privacy\">Privacy</a>\n * <a href=\"/accessibility\">Accessibility</a>\n * </div>\n * </umd-element-footer>\n * ```\n *\n * @example\n * ```html\n * <!-- Visual footer with background -->\n * <umd-element-footer type=\"visual\">\n * <img slot=\"background-image\" src=\"campus.jpg\" alt=\"Campus view\">\n * <h2 slot=\"contact-headline\">Visit Campus</h2>\n * <a slot=\"call-to-action\" href=\"/visit\">Schedule a Tour</a>\n * </umd-element-footer>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst FooterOptions: ComponentRegistration = Register.webComponent({\n tagName,\n slots,\n createComponent,\n});\n\nexport default FooterOptions;\n"],"names":["tagName","SLOTS","slots","createComponent","element","isTypeMega","isTypeVisual","columnOne","columnTwo","columnThree","hasLandmark","hasLabel","columns","isTypeSimple","Composite","Attributes.isTheme","FooterOptions","Register.webComponent","options_default"],"mappings":";;;AAYA,MAAMA,IAAU,sBAMHC,IAAQ;AAAA,EACnB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,mBAAmB;AACrB,GAMMC,IAA2B;AAAA,EAC/B,CAAC,GAAGD,EAAM,gBAAgB,EAAE,GAAG;AAAA,IAC7B,iBAAiB,CAAC,KAAK;AAAA,EAAA;AAE3B,GAQME,IAA2C,CAACC,MAAY;AAC5D,QAAMC,IAAaD,EAAQ,aAAa,MAAM,MAAM,QAC9CE,IAAeF,EAAQ,aAAa,MAAM,MAAM,UAChDG,IAAYH,EAAQ;AAAA,IACxB,UAAUH,EAAM,eAAe;AAAA,EAAA,GAE3BO,IAAYJ,EAAQ;AAAA,IACxB,UAAUH,EAAM,eAAe;AAAA,EAAA,GAE3BQ,IAAcL,EAAQ;AAAA,IAC1B,UAAUH,EAAM,iBAAiB;AAAA,EAAA,GAE7BS,IAAcN,EAAQ,aAAa,MAAM,GACzCO,IAAWP,EAAQ,aAAa,YAAY,GAC5CQ,IAAU,CAAA;AAChB,MAAIC,IAAeT,EAAQ,aAAa,MAAM,MAAM;AAEpD,SAAIG,KAAaA,EAAU,mBACzBK,EAAQ,KAAKL,CAAS,GAEpBC,KAAaA,EAAU,mBACzBI,EAAQ,KAAKJ,CAAS,GAEpBC,KAAeA,EAAY,mBAC7BG,EAAQ,KAAKH,CAAW,GAGtB,CAACJ,KAAc,CAACC,MAClBO,IAAe,KAGZH,KACHN,EAAQ,aAAa,QAAQ,aAAa,GAGvCO,KACHP,EAAQ,aAAa,cAAc,aAAa,GAG3CU,EAAU,OAAO,QAAQ;AAAA,IAC9B,cAAcC,EAAmB,MAAM,EAAE,SAAAX,GAAS;AAAA,IAClD,cAAAS;AAAA,IACA,cAAAP;AAAA,IACA,YAAAD;AAAA,IACA,iBAAiBD,EAAQ;AAAA,MACvB,UAAUH,EAAM,gBAAgB;AAAA,IAAA;AAAA,IAElC,kBAAkBG,EAAQ;AAAA,MACxB,UAAUH,EAAM,OAAO;AAAA,IAAA;AAAA,IAEzB,SAASG,EAAQ;AAAA,MACf,UAAUH,EAAM,GAAG;AAAA,IAAA;AAAA,IAErB,aAAaG,EAAQ;AAAA,MACnB,UAAUH,EAAM,eAAe;AAAA,IAAA;AAAA,IAEjC,kBAAkBG,EAAQ;AAAA,MACxB,UAAUH,EAAM,aAAa;AAAA,IAAA;AAAA,IAE/B,cAAcG,EAAQ;AAAA,MACpB,UAAUH,EAAM,gBAAgB;AAAA,IAAA;AAAA,IAElC,iBAAiBG,EAAQ;AAAA,MACvB,UAAUH,EAAM,MAAM;AAAA,IAAA;AAAA,IAExB,aAAaW,EAAQ,SAAS,IAAIA,IAAU;AAAA,EAAA,CAC7C;AACH,GA0FMI,IAAuCC,EAAsB;AAAA,EACjE,SAAAjB;AAAA,EACA,OAAAE;AAAA,EACA,iBAAAC;AACF,CAAC;AAED,IAAOe,IAAQF;"}
1
+ {"version":3,"file":"options-CZuC7PDp.js","sources":["../source/api/footer/options.ts"],"sourcesContent":["import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Register } from 'model';\nimport type {\n CreateComponentFunction,\n ComponentRegistration,\n SlotConfiguration,\n} from '../../_types';\n\n/**\n * Tag name for the footer component\n * @internal\n */\nconst tagName = 'umd-element-footer';\n\n/**\n * Available slot names for the footer component\n * @internal\n */\nexport const SLOTS = {\n BACKGROUND_IMAGE: 'background-image',\n CONTACT_HEADLINE: 'contact-headline',\n CONTACT_LINKS: 'contact-links',\n CONTACT_ADDRESS: 'contact-address',\n CTA: 'call-to-action',\n SOCIAL: 'social-links',\n UTILITY: 'utility-links',\n LINK_COLUMN_ONE: 'link-column-one',\n LINK_COLUMN_TWO: 'link-column-two',\n LINK_COLUMN_THREE: 'link-column-three',\n};\n\n/**\n * Slot configuration for the footer component\n * @internal\n */\nconst slots: SlotConfiguration = {\n [`${SLOTS.BACKGROUND_IMAGE}`]: {\n allowedElements: ['img'],\n },\n};\n\n/**\n * Creates a footer component based on type and populated slots\n * @param element - The host HTML element\n * @returns Configured footer component\n * @internal\n */\nconst createComponent: CreateComponentFunction = (element) => {\n const isTypeMega = element.getAttribute('type') === 'mega';\n const isTypeVisual = element.getAttribute('type') === 'visual';\n const columnOne = element.querySelector(\n `[slot=\"${SLOTS.LINK_COLUMN_ONE}\"]`,\n ) as HTMLSlotElement;\n const columnTwo = element.querySelector(\n `[slot=\"${SLOTS.LINK_COLUMN_TWO}\"]`,\n ) as HTMLSlotElement;\n const columnThree = element.querySelector(\n `[slot=\"${SLOTS.LINK_COLUMN_THREE}\"]`,\n ) as HTMLSlotElement;\n const hasLandmark = element.hasAttribute('role');\n const hasLabel = element.hasAttribute('aria-label');\n const columns = [];\n let isTypeSimple = element.getAttribute('type') === 'simple';\n\n if (columnOne && columnOne.hasChildNodes()) {\n columns.push(columnOne);\n }\n if (columnTwo && columnTwo.hasChildNodes()) {\n columns.push(columnTwo);\n }\n if (columnThree && columnThree.hasChildNodes()) {\n columns.push(columnThree);\n }\n\n if (!isTypeMega && !isTypeVisual) {\n isTypeSimple = true;\n }\n\n if (!hasLandmark) {\n element.setAttribute('role', 'contentinfo');\n }\n\n if (!hasLabel) {\n element.setAttribute('aria-label', 'site footer');\n }\n\n return Composite.footer.options({\n isThemeLight: Attributes.isTheme.light({ element }),\n isTypeSimple,\n isTypeVisual,\n isTypeMega,\n slotVisualImage: element.querySelector(\n `[slot=\"${SLOTS.BACKGROUND_IMAGE}\"]`,\n ) as HTMLImageElement,\n slotUtilityLinks: element.querySelector(\n `[slot=\"${SLOTS.UTILITY}\"]`,\n ) as HTMLElement,\n slotCta: element.querySelector(\n `[slot=\"${SLOTS.CTA}\"]`,\n ) as HTMLAnchorElement,\n slotAddress: element.querySelector(\n `[slot=\"${SLOTS.CONTACT_ADDRESS}\"]`,\n ) as HTMLSlotElement,\n slotContentLinks: element.querySelector(\n `[slot=\"${SLOTS.CONTACT_LINKS}\"]`,\n ) as HTMLSlotElement,\n slotHeadline: element.querySelector(\n `[slot=\"${SLOTS.CONTACT_HEADLINE}\"]`,\n ) as HTMLSlotElement,\n slotSocialLinks: element.querySelector(\n `[slot=\"${SLOTS.SOCIAL}\"]`,\n ) as HTMLSlotElement,\n slotColumns: columns.length > 0 ? columns : undefined,\n });\n};\n\n/**\n * Footer Component\n *\n * A versatile footer component with three layout options for different site needs.\n * Automatically adds accessibility attributes if not provided.\n *\n * ## Custom Element\n * `<umd-element-footer>`\n *\n * ## Slots\n * - `contact-headline` - Contact section header\n * - `contact-links` - Contact links section\n * - `contact-address` - Address information\n * - `call-to-action` - Primary CTA button/link\n * - `social-links` - Social media links\n * - `utility-links` - Utility navigation links\n * - `link-column-one` - First link column (mega footer only)\n * - `link-column-two` - Second link column (mega footer only)\n * - `link-column-three` - Third link column (mega footer only)\n * - `background-image` - Background image (visual footer only, accepts: img)\n *\n * ## Attributes\n * - `type` - Footer layout options:\n * - `simple` - Basic footer layout (default)\n * - `mega` - Large footer with link columns\n * - `visual` - Footer with background image\n * - `data-theme` - Theme options:\n * - `light` - Light theme styling\n *\n * @example\n * ```html\n * <!-- Simple footer -->\n * <umd-element-footer type=\"simple\">\n * <h2 slot=\"contact-headline\">Contact Us</h2>\n * <div slot=\"contact-links\">\n * <a href=\"tel:3014050100\">301.405.0100</a>\n * <a href=\"mailto:info@umd.edu\">info@umd.edu</a>\n * </div>\n * <address slot=\"contact-address\">\n * University of Maryland<br>\n * College Park, MD 20742\n * </address>\n * <div slot=\"social-links\">\n * <a href=\"#\">Facebook</a>\n * <a href=\"#\">Twitter</a>\n * </div>\n * </umd-element-footer>\n * ```\n *\n * @example\n * ```html\n * <!-- Mega footer with columns -->\n * <umd-element-footer type=\"mega\" data-theme=\"light\">\n * <div slot=\"link-column-one\">\n * <h3>Academics</h3>\n * <ul>\n * <li><a href=\"#\">Programs</a></li>\n * <li><a href=\"#\">Courses</a></li>\n * </ul>\n * </div>\n * <div slot=\"link-column-two\">\n * <h3>Resources</h3>\n * <ul>\n * <li><a href=\"#\">Libraries</a></li>\n * <li><a href=\"#\">Technology</a></li>\n * </ul>\n * </div>\n * <a slot=\"call-to-action\" href=\"/apply\">Apply Now</a>\n * <div slot=\"utility-links\">\n * <a href=\"/privacy\">Privacy</a>\n * <a href=\"/accessibility\">Accessibility</a>\n * </div>\n * </umd-element-footer>\n * ```\n *\n * @example\n * ```html\n * <!-- Visual footer with background -->\n * <umd-element-footer type=\"visual\">\n * <img slot=\"background-image\" src=\"campus.jpg\" alt=\"Campus view\">\n * <h2 slot=\"contact-headline\">Visit Campus</h2>\n * <a slot=\"call-to-action\" href=\"/visit\">Schedule a Tour</a>\n * </umd-element-footer>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst FooterOptions: ComponentRegistration = Register.webComponent({\n tagName,\n slots,\n createComponent,\n});\n\nexport default FooterOptions;\n"],"names":["tagName","SLOTS","slots","createComponent","element","isTypeMega","isTypeVisual","columnOne","columnTwo","columnThree","hasLandmark","hasLabel","columns","isTypeSimple","Composite","Attributes.isTheme","FooterOptions","Register.webComponent","options_default"],"mappings":";;;AAYA,MAAMA,IAAU,sBAMHC,IAAQ;AAAA,EACnB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,mBAAmB;AACrB,GAMMC,IAA2B;AAAA,EAC/B,CAAC,GAAGD,EAAM,gBAAgB,EAAE,GAAG;AAAA,IAC7B,iBAAiB,CAAC,KAAK;AAAA,EAAA;AAE3B,GAQME,IAA2C,CAACC,MAAY;AAC5D,QAAMC,IAAaD,EAAQ,aAAa,MAAM,MAAM,QAC9CE,IAAeF,EAAQ,aAAa,MAAM,MAAM,UAChDG,IAAYH,EAAQ;AAAA,IACxB,UAAUH,EAAM,eAAe;AAAA,EAAA,GAE3BO,IAAYJ,EAAQ;AAAA,IACxB,UAAUH,EAAM,eAAe;AAAA,EAAA,GAE3BQ,IAAcL,EAAQ;AAAA,IAC1B,UAAUH,EAAM,iBAAiB;AAAA,EAAA,GAE7BS,IAAcN,EAAQ,aAAa,MAAM,GACzCO,IAAWP,EAAQ,aAAa,YAAY,GAC5CQ,IAAU,CAAA;AAChB,MAAIC,IAAeT,EAAQ,aAAa,MAAM,MAAM;AAEpD,SAAIG,KAAaA,EAAU,mBACzBK,EAAQ,KAAKL,CAAS,GAEpBC,KAAaA,EAAU,mBACzBI,EAAQ,KAAKJ,CAAS,GAEpBC,KAAeA,EAAY,mBAC7BG,EAAQ,KAAKH,CAAW,GAGtB,CAACJ,KAAc,CAACC,MAClBO,IAAe,KAGZH,KACHN,EAAQ,aAAa,QAAQ,aAAa,GAGvCO,KACHP,EAAQ,aAAa,cAAc,aAAa,GAG3CU,EAAU,OAAO,QAAQ;AAAA,IAC9B,cAAcC,EAAmB,MAAM,EAAE,SAAAX,GAAS;AAAA,IAClD,cAAAS;AAAA,IACA,cAAAP;AAAA,IACA,YAAAD;AAAA,IACA,iBAAiBD,EAAQ;AAAA,MACvB,UAAUH,EAAM,gBAAgB;AAAA,IAAA;AAAA,IAElC,kBAAkBG,EAAQ;AAAA,MACxB,UAAUH,EAAM,OAAO;AAAA,IAAA;AAAA,IAEzB,SAASG,EAAQ;AAAA,MACf,UAAUH,EAAM,GAAG;AAAA,IAAA;AAAA,IAErB,aAAaG,EAAQ;AAAA,MACnB,UAAUH,EAAM,eAAe;AAAA,IAAA;AAAA,IAEjC,kBAAkBG,EAAQ;AAAA,MACxB,UAAUH,EAAM,aAAa;AAAA,IAAA;AAAA,IAE/B,cAAcG,EAAQ;AAAA,MACpB,UAAUH,EAAM,gBAAgB;AAAA,IAAA;AAAA,IAElC,iBAAiBG,EAAQ;AAAA,MACvB,UAAUH,EAAM,MAAM;AAAA,IAAA;AAAA,IAExB,aAAaW,EAAQ,SAAS,IAAIA,IAAU;AAAA,EAAA,CAC7C;AACH,GA0FMI,IAAuCC,EAAsB;AAAA,EACjE,SAAAjB;AAAA,EACA,OAAAE;AAAA,EACA,iBAAAC;AACF,CAAC;AAED,IAAOe,IAAQF;"}