@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":"feed-BSntlEBA.js","sources":["../source/api/slider/event/display.ts","../source/api/slider/event/feed.ts"],"sourcesContent":["import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Register, Slots, Lifecycle } from 'model';\nimport {\n CreateComponentFunction,\n ComponentRegistration,\n} from '../../../_types';\n\nconst tagName = 'umd-element-slider-events';\n\n/**\n * Event Slider Display\n *\n * A slider component for displaying a collection of events in a horizontal scrollable format.\n * Ideal for showcasing upcoming events, workshops, or activities with interactive navigation.\n * Automatically adjusts date element sizes based on viewport.\n *\n * ## Custom Element\n * `<umd-element-slider-events>`\n *\n * ## Slots\n * - `event-list` - Container with event items (required, accepts: div with event markup)\n * - `headline` - Section headline (optional, accepts: heading elements)\n * - `actions` - Call-to-action links (optional, accepts: a, button)\n *\n * ## Attributes\n * - `data-theme` - Color theme of the component:\n * - `dark` - Dark background with light text\n *\n * ## Observed Attributes\n * - `resize` - Triggers recalculation of date element sizes\n *\n * @example\n * ```html\n * <!-- Basic event slider -->\n * <umd-element-slider-events>\n * <h2 slot=\"headline\">Upcoming Events</h2>\n * <div slot=\"event-list\">\n * <div class=\"event\">\n * <time datetime=\"2024-04-15\">April 15</time>\n * <h3>Spring Concert</h3>\n * <p>Annual spring concert featuring student performances</p>\n * </div>\n * <div class=\"event\">\n * <time datetime=\"2024-04-20\">April 20</time>\n * <h3>Research Symposium</h3>\n * <p>Undergraduate research presentations</p>\n * </div>\n * <div class=\"event\">\n * <time datetime=\"2024-04-25\">April 25</time>\n * <h3>Career Fair</h3>\n * <p>Connect with employers and explore opportunities</p>\n * </div>\n * </div>\n * <a slot=\"actions\" href=\"/events\">View All Events</a>\n * </umd-element-slider-events>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme with multiple actions -->\n * <umd-element-slider-events data-theme=\"dark\">\n * <h2 slot=\"headline\">This Week on Campus</h2>\n * <div slot=\"event-list\">\n * <div class=\"event\">\n * <time datetime=\"2024-03-10T14:00\">Mar 10, 2:00 PM</time>\n * <h3>Guest Lecture: AI Ethics</h3>\n * <p>Dr. Smith discusses ethical considerations in AI</p>\n * <a href=\"/event/ai-ethics\">Learn More</a>\n * </div>\n * <div class=\"event\">\n * <time datetime=\"2024-03-12T18:00\">Mar 12, 6:00 PM</time>\n * <h3>Film Screening</h3>\n * <p>Documentary screening and discussion</p>\n * <a href=\"/event/film\">RSVP</a>\n * </div>\n * </div>\n * <div slot=\"actions\">\n * <a href=\"/events/calendar\">Full Calendar</a>\n * <a href=\"/events/subscribe\">Subscribe</a>\n * </div>\n * </umd-element-slider-events>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst attributes = Attributes.handler.common.resize((element) =>\n element.events?.size(),\n);\n\nconst createComponent: CreateComponentFunction = (element) => {\n const dataSlider = document.createElement('div');\n const dataSliderSlot = element.querySelector(\n `[slot=${Slots.name.EVENT_LIST}]`,\n );\n\n if (!dataSliderSlot) {\n console.error(`Slot ${Slots.name.EVENT_LIST} is required`);\n return { element: dataSlider, styles: '' };\n }\n\n dataSlider.innerHTML = dataSliderSlot.innerHTML;\n\n return Composite.slider.events({\n isThemeDark: Attributes.isTheme.dark({ element }),\n dataSlider,\n headline: Slots.headline.default({ element }),\n actions: Slots.actions.default({ element }),\n });\n};\n\n/**\n * Event Slider Display\n *\n * A slider component for displaying a collection of events in a horizontal scrollable format.\n * Ideal for showcasing upcoming events, workshops, or activities with interactive navigation.\n * Automatically adjusts date element sizes based on viewport.\n *\n * ## Custom Element\n * `<umd-element-slider-events>`\n *\n * ## Slots\n * - `event-list` - Container with event items (required, accepts: div with event markup)\n * - `headline` - Section headline (optional, accepts: heading elements)\n * - `actions` - Call-to-action links (optional, accepts: a, button)\n *\n * ## Attributes\n * - `data-theme` - Color theme of the component:\n * - `dark` - Dark background with light text\n *\n * ## Observed Attributes\n * - `resize` - Triggers recalculation of date element sizes\n *\n * @example\n * ```html\n * <!-- Basic event slider -->\n * <umd-element-slider-events>\n * <h2 slot=\"headline\">Upcoming Events</h2>\n * <div slot=\"event-list\">\n * <div class=\"event\">\n * <time datetime=\"2024-04-15\">April 15</time>\n * <h3>Spring Concert</h3>\n * <p>Annual spring concert featuring student performances</p>\n * </div>\n * <div class=\"event\">\n * <time datetime=\"2024-04-20\">April 20</time>\n * <h3>Research Symposium</h3>\n * <p>Undergraduate research presentations</p>\n * </div>\n * <div class=\"event\">\n * <time datetime=\"2024-04-25\">April 25</time>\n * <h3>Career Fair</h3>\n * <p>Connect with employers and explore opportunities</p>\n * </div>\n * </div>\n * <a slot=\"actions\" href=\"/events\">View All Events</a>\n * </umd-element-slider-events>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme with multiple actions -->\n * <umd-element-slider-events data-theme=\"dark\">\n * <h2 slot=\"headline\">This Week on Campus</h2>\n * <div slot=\"event-list\">\n * <div class=\"event\">\n * <time datetime=\"2024-03-10T14:00\">Mar 10, 2:00 PM</time>\n * <h3>Guest Lecture: AI Ethics</h3>\n * <p>Dr. Smith discusses ethical considerations in AI</p>\n * <a href=\"/event/ai-ethics\">Learn More</a>\n * </div>\n * <div class=\"event\">\n * <time datetime=\"2024-03-12T18:00\">Mar 12, 6:00 PM</time>\n * <h3>Film Screening</h3>\n * <p>Documentary screening and discussion</p>\n * <a href=\"/event/film\">RSVP</a>\n * </div>\n * </div>\n * <div slot=\"actions\">\n * <a href=\"/events/calendar\">Full Calendar</a>\n * <a href=\"/events/subscribe\">Subscribe</a>\n * </div>\n * </umd-element-slider-events>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n attributes: [attributes],\n afterConnect: Lifecycle.hooks.loadOnConnect,\n});\n\nexport default registration;\n","import * as Feeds from '@universityofmaryland/web-feeds-library';\nimport { Attributes, Register, Slots } from 'model';\nimport {\n CreateComponentFunction,\n ComponentRegistration,\n TypedComponentRef,\n} from '../../../_types';\n\nconst tagName = 'umd-element-slider-events-feed';\n\n/**\n * Event Slider Feed\n *\n * A dynamic slider component that automatically fetches and displays events from a feed.\n * Supports both general events and academic calendar feeds with category filtering.\n * Provides real-time event updates with automatic date formatting and responsive layout.\n *\n * ## Custom Element\n * `<umd-element-slider-events-feed>`\n *\n * ## Slots\n * - `headline` - Section headline (optional, accepts: heading elements)\n * - `actions` - Call-to-action links (optional, accepts: a, button)\n *\n * ## Attributes\n * - `data-theme` - Color theme of the component:\n * - `dark` - Dark background with light text\n * - `data-token` - API token for fetching events (required)\n * - `data-feed-type` - Feed type:\n * - `academic` - Academic calendar events\n * - Default - General events feed\n * - `data-filter-group-ids` - Comma-separated list of event categories to filter\n *\n * ## Observed Attributes\n * - `resize` - Triggers recalculation of date element sizes\n *\n * @example\n * ```html\n * <!-- Basic events feed slider -->\n * <umd-element-slider-events-feed data-token=\"events-api-key\">\n * <h2 slot=\"headline\">Upcoming Events</h2>\n * <a slot=\"actions\" href=\"/events\">All Events</a>\n * </umd-element-slider-events-feed>\n * ```\n *\n * @example\n * ```html\n * <!-- Academic calendar feed -->\n * <umd-element-slider-events-feed\n * data-token=\"academic-api-key\"\n * data-feed-type=\"academic\">\n * <h2 slot=\"headline\">Academic Calendar</h2>\n * <div slot=\"actions\">\n * <a href=\"/academic-calendar\">Full Calendar</a>\n * <a href=\"/academic-calendar/deadlines\">Important Deadlines</a>\n * </div>\n * </umd-element-slider-events-feed>\n * ```\n *\n * @example\n * ```html\n * <!-- Filtered events with dark theme -->\n * <umd-element-slider-events-feed\n * data-token=\"events-api-key\"\n * data-theme=\"dark\"\n * data-filter-group-ids=\"athletics,recreation\">\n * <h2 slot=\"headline\">Sports & Recreation</h2>\n * <a slot=\"actions\" href=\"/athletics\">Athletics Home</a>\n * </umd-element-slider-events-feed>\n * ```\n *\n * @example\n * ```html\n * <!-- Multiple category filters -->\n * <umd-element-slider-events-feed\n * data-token=\"events-api-key\"\n * data-filter-group-ids=\"workshop,seminar,lecture\">\n * <h2 slot=\"headline\">Learning Opportunities</h2>\n * <div slot=\"actions\">\n * <a href=\"/workshops\">All Workshops</a>\n * <a href=\"/seminars\">Seminar Series</a>\n * </div>\n * </umd-element-slider-events-feed>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst attributes = Attributes.handler.common.resize((element) =>\n element.events?.size(),\n);\n\nconst createComponent: CreateComponentFunction = (element) => {\n const isThemeDark = Attributes.isTheme.dark({ element });\n const token = Attributes.getValue.feedToken({ element });\n const categories = Attributes.getValue.feedFilterIds({ element });\n const isTypeAcademic = Attributes.isData.type.academic({\n element,\n });\n\n if (!token) {\n console.error('Token is required for this component');\n return { element: document.createElement('div'), styles: '' };\n }\n\n const sliderProps = {\n token,\n categories,\n isThemeDark,\n headline: Slots.headline.default({ element }),\n actions: Slots.actions.default({ element }),\n };\n\n if (isTypeAcademic) return Feeds.academic.slider(sliderProps);\n\n return Feeds.events.slider(sliderProps);\n};\n\n/**\n * Event Slider Feed\n *\n * A dynamic slider component that automatically fetches and displays events from a feed.\n * Supports both general events and academic calendar feeds with category filtering.\n * Provides real-time event updates with automatic date formatting and responsive layout.\n *\n * ## Custom Element\n * `<umd-element-slider-events-feed>`\n *\n * ## Slots\n * - `headline` - Section headline (optional, accepts: heading elements)\n * - `actions` - Call-to-action links (optional, accepts: a, button)\n *\n * ## Attributes\n * - `data-theme` - Color theme of the component:\n * - `dark` - Dark background with light text\n * - `data-token` - API token for fetching events (required)\n * - `data-feed-type` - Feed type:\n * - `academic` - Academic calendar events\n * - Default - General events feed\n * - `data-filter-group-ids` - Comma-separated list of event categories to filter\n *\n * ## Observed Attributes\n * - `resize` - Triggers recalculation of date element sizes\n *\n * @example\n * ```html\n * <!-- Basic events feed slider -->\n * <umd-element-slider-events-feed data-token=\"events-api-key\">\n * <h2 slot=\"headline\">Upcoming Events</h2>\n * <a slot=\"actions\" href=\"/events\">All Events</a>\n * </umd-element-slider-events-feed>\n * ```\n *\n * @example\n * ```html\n * <!-- Academic calendar feed -->\n * <umd-element-slider-events-feed\n * data-token=\"academic-api-key\"\n * data-feed-type=\"academic\">\n * <h2 slot=\"headline\">Academic Calendar</h2>\n * <div slot=\"actions\">\n * <a href=\"/academic-calendar\">Full Calendar</a>\n * <a href=\"/academic-calendar/deadlines\">Important Deadlines</a>\n * </div>\n * </umd-element-slider-events-feed>\n * ```\n *\n * @example\n * ```html\n * <!-- Filtered events with dark theme -->\n * <umd-element-slider-events-feed\n * data-token=\"events-api-key\"\n * data-theme=\"dark\"\n * data-filter-group-ids=\"athletics,recreation\">\n * <h2 slot=\"headline\">Sports & Recreation</h2>\n * <a slot=\"actions\" href=\"/athletics\">Athletics Home</a>\n * </umd-element-slider-events-feed>\n * ```\n *\n * @example\n * ```html\n * <!-- Multiple category filters -->\n * <umd-element-slider-events-feed\n * data-token=\"events-api-key\"\n * data-filter-group-ids=\"workshop,seminar,lecture\">\n * <h2 slot=\"headline\">Learning Opportunities</h2>\n * <div slot=\"actions\">\n * <a href=\"/workshops\">All Workshops</a>\n * <a href=\"/seminars\">Seminar Series</a>\n * </div>\n * </umd-element-slider-events-feed>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n attributes: [attributes],\n afterConnect: (ref: TypedComponentRef, shadow?: ShadowRoot) =>\n ref?.events?.callback?.(shadow),\n});\n\nexport default registration;\n"],"names":["tagName","attributes","Attributes.handler","element","createComponent","dataSlider","dataSliderSlot","Slots","Composite","Attributes.isTheme","registration","Register.webComponent","Lifecycle.hooks","display_default","isThemeDark","token","Attributes.getValue","categories","isTypeAcademic","Attributes.isData","sliderProps","Feeds","ref","shadow","feed_default"],"mappings":";;;;AAOA,MAAMA,IAAU,6BA+EVC,IAAaC,EAAmB,OAAO;AAAA,EAAO,CAACC,MACnDA,EAAQ,QAAQ,KAAA;AAClB,GAEMC,IAA2C,CAACD,MAAY;AAC5D,QAAME,IAAa,SAAS,cAAc,KAAK,GACzCC,IAAiBH,EAAQ;AAAA,IAC7B,SAASI,EAAM,KAAK,UAAU;AAAA,EAAA;AAGhC,SAAKD,KAKLD,EAAW,YAAYC,EAAe,WAE/BE,EAAU,OAAO,OAAO;AAAA,IAC7B,aAAaC,EAAmB,KAAK,EAAE,SAAAN,GAAS;AAAA,IAChD,YAAAE;AAAA,IACA,UAAUE,EAAM,SAAS,QAAQ,EAAE,SAAAJ,GAAS;AAAA,IAC5C,SAASI,EAAM,QAAQ,QAAQ,EAAE,SAAAJ,GAAS;AAAA,EAAA,CAC3C,MAXC,QAAQ,MAAM,QAAQI,EAAM,KAAK,UAAU,cAAc,GAClD,EAAE,SAASF,GAAY,QAAQ,GAAA;AAW1C,GA+EMK,IAAsCC,EAAsB;AAAA,EAAA,SAChEX;AAAAA,EAAA,iBACAI;AAAAA,EACA,YAAY,CAACH,CAAU;AAAA,EACvB,cAAcW,EAAgB;AAChC,CAAC;AAED,IAAOC,IAAQH;AC3Lf,MAAMV,IAAU,kCAgFVC,IAAaC,EAAmB,OAAO;AAAA,EAAO,CAACC,MACnDA,EAAQ,QAAQ,KAAA;AAClB,GAEMC,IAA2C,CAACD,MAAY;AAC5D,QAAMW,IAAcL,EAAmB,KAAK,EAAE,SAAAN,GAAS,GACjDY,IAAQC,EAAoB,UAAU,EAAE,SAAAb,GAAS,GACjDc,IAAaD,EAAoB,cAAc,EAAE,SAAAb,GAAS,GAC1De,IAAiBC,EAAkB,KAAK,SAAS;AAAA,IACrD,SAAAhB;AAAA,EAAA,CACD;AAED,MAAI,CAACY;AACH,mBAAQ,MAAM,sCAAsC,GAC7C,EAAE,SAAS,SAAS,cAAc,KAAK,GAAG,QAAQ,GAAA;AAG3D,QAAMK,IAAc;AAAA,IAClB,OAAAL;AAAA,IACA,YAAAE;AAAA,IACA,aAAAH;AAAA,IACA,UAAUP,EAAM,SAAS,QAAQ,EAAE,SAAAJ,GAAS;AAAA,IAC5C,SAASI,EAAM,QAAQ,QAAQ,EAAE,SAAAJ,GAAS;AAAA,EAAA;AAG5C,SAAIe,IAAuBG,EAAM,SAAS,OAAOD,CAAW,IAErDC,EAAM,OAAO,OAAOD,CAAW;AACxC,GAgFMV,IAAsCC,EAAsB;AAAA,EAChE,SAAAX;AAAA,EACA,iBAAAI;AAAA,EACA,YAAY,CAACH,CAAU;AAAA,EACvB,cAAc,CAACqB,GAAwBC,MACrCD,GAAK,QAAQ,WAAWC,CAAM;AAClC,CAAC;AAED,IAAOC,IAAQd;"}
1
+ {"version":3,"file":"feed-D5nqCXw5.js","sources":["../source/api/slider/event/display.ts","../source/api/slider/event/feed.ts"],"sourcesContent":["import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Register, Slots, Lifecycle } from 'model';\nimport {\n CreateComponentFunction,\n ComponentRegistration,\n} from '../../../_types';\n\nconst tagName = 'umd-element-slider-events';\n\n/**\n * Event Slider Display\n *\n * A slider component for displaying a collection of events in a horizontal scrollable format.\n * Ideal for showcasing upcoming events, workshops, or activities with interactive navigation.\n * Automatically adjusts date element sizes based on viewport.\n *\n * ## Custom Element\n * `<umd-element-slider-events>`\n *\n * ## Slots\n * - `event-list` - Container with event items (required, accepts: div with event markup)\n * - `headline` - Section headline (optional, accepts: heading elements)\n * - `actions` - Call-to-action links (optional, accepts: a, button)\n *\n * ## Attributes\n * - `data-theme` - Color theme of the component:\n * - `dark` - Dark background with light text\n *\n * ## Observed Attributes\n * - `resize` - Triggers recalculation of date element sizes\n *\n * @example\n * ```html\n * <!-- Basic event slider -->\n * <umd-element-slider-events>\n * <h2 slot=\"headline\">Upcoming Events</h2>\n * <div slot=\"event-list\">\n * <div class=\"event\">\n * <time datetime=\"2024-04-15\">April 15</time>\n * <h3>Spring Concert</h3>\n * <p>Annual spring concert featuring student performances</p>\n * </div>\n * <div class=\"event\">\n * <time datetime=\"2024-04-20\">April 20</time>\n * <h3>Research Symposium</h3>\n * <p>Undergraduate research presentations</p>\n * </div>\n * <div class=\"event\">\n * <time datetime=\"2024-04-25\">April 25</time>\n * <h3>Career Fair</h3>\n * <p>Connect with employers and explore opportunities</p>\n * </div>\n * </div>\n * <a slot=\"actions\" href=\"/events\">View All Events</a>\n * </umd-element-slider-events>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme with multiple actions -->\n * <umd-element-slider-events data-theme=\"dark\">\n * <h2 slot=\"headline\">This Week on Campus</h2>\n * <div slot=\"event-list\">\n * <div class=\"event\">\n * <time datetime=\"2024-03-10T14:00\">Mar 10, 2:00 PM</time>\n * <h3>Guest Lecture: AI Ethics</h3>\n * <p>Dr. Smith discusses ethical considerations in AI</p>\n * <a href=\"/event/ai-ethics\">Learn More</a>\n * </div>\n * <div class=\"event\">\n * <time datetime=\"2024-03-12T18:00\">Mar 12, 6:00 PM</time>\n * <h3>Film Screening</h3>\n * <p>Documentary screening and discussion</p>\n * <a href=\"/event/film\">RSVP</a>\n * </div>\n * </div>\n * <div slot=\"actions\">\n * <a href=\"/events/calendar\">Full Calendar</a>\n * <a href=\"/events/subscribe\">Subscribe</a>\n * </div>\n * </umd-element-slider-events>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst attributes = Attributes.handler.common.resize((element) =>\n element.events?.size(),\n);\n\nconst createComponent: CreateComponentFunction = (element) => {\n const dataSlider = document.createElement('div');\n const dataSliderSlot = element.querySelector(\n `[slot=${Slots.name.EVENT_LIST}]`,\n );\n\n if (!dataSliderSlot) {\n console.error(`Slot ${Slots.name.EVENT_LIST} is required`);\n return { element: dataSlider, styles: '' };\n }\n\n dataSlider.innerHTML = dataSliderSlot.innerHTML;\n\n return Composite.slider.events({\n isThemeDark: Attributes.isTheme.dark({ element }),\n dataSlider,\n headline: Slots.headline.default({ element }),\n actions: Slots.actions.default({ element }),\n });\n};\n\n/**\n * Event Slider Display\n *\n * A slider component for displaying a collection of events in a horizontal scrollable format.\n * Ideal for showcasing upcoming events, workshops, or activities with interactive navigation.\n * Automatically adjusts date element sizes based on viewport.\n *\n * ## Custom Element\n * `<umd-element-slider-events>`\n *\n * ## Slots\n * - `event-list` - Container with event items (required, accepts: div with event markup)\n * - `headline` - Section headline (optional, accepts: heading elements)\n * - `actions` - Call-to-action links (optional, accepts: a, button)\n *\n * ## Attributes\n * - `data-theme` - Color theme of the component:\n * - `dark` - Dark background with light text\n *\n * ## Observed Attributes\n * - `resize` - Triggers recalculation of date element sizes\n *\n * @example\n * ```html\n * <!-- Basic event slider -->\n * <umd-element-slider-events>\n * <h2 slot=\"headline\">Upcoming Events</h2>\n * <div slot=\"event-list\">\n * <div class=\"event\">\n * <time datetime=\"2024-04-15\">April 15</time>\n * <h3>Spring Concert</h3>\n * <p>Annual spring concert featuring student performances</p>\n * </div>\n * <div class=\"event\">\n * <time datetime=\"2024-04-20\">April 20</time>\n * <h3>Research Symposium</h3>\n * <p>Undergraduate research presentations</p>\n * </div>\n * <div class=\"event\">\n * <time datetime=\"2024-04-25\">April 25</time>\n * <h3>Career Fair</h3>\n * <p>Connect with employers and explore opportunities</p>\n * </div>\n * </div>\n * <a slot=\"actions\" href=\"/events\">View All Events</a>\n * </umd-element-slider-events>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme with multiple actions -->\n * <umd-element-slider-events data-theme=\"dark\">\n * <h2 slot=\"headline\">This Week on Campus</h2>\n * <div slot=\"event-list\">\n * <div class=\"event\">\n * <time datetime=\"2024-03-10T14:00\">Mar 10, 2:00 PM</time>\n * <h3>Guest Lecture: AI Ethics</h3>\n * <p>Dr. Smith discusses ethical considerations in AI</p>\n * <a href=\"/event/ai-ethics\">Learn More</a>\n * </div>\n * <div class=\"event\">\n * <time datetime=\"2024-03-12T18:00\">Mar 12, 6:00 PM</time>\n * <h3>Film Screening</h3>\n * <p>Documentary screening and discussion</p>\n * <a href=\"/event/film\">RSVP</a>\n * </div>\n * </div>\n * <div slot=\"actions\">\n * <a href=\"/events/calendar\">Full Calendar</a>\n * <a href=\"/events/subscribe\">Subscribe</a>\n * </div>\n * </umd-element-slider-events>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n attributes: [attributes],\n afterConnect: Lifecycle.hooks.loadOnConnect,\n});\n\nexport default registration;\n","import * as Feeds from '@universityofmaryland/web-feeds-library';\nimport { Attributes, Register, Slots } from 'model';\nimport {\n CreateComponentFunction,\n ComponentRegistration,\n TypedComponentRef,\n} from '../../../_types';\n\nconst tagName = 'umd-element-slider-events-feed';\n\n/**\n * Event Slider Feed\n *\n * A dynamic slider component that automatically fetches and displays events from a feed.\n * Supports both general events and academic calendar feeds with category filtering.\n * Provides real-time event updates with automatic date formatting and responsive layout.\n *\n * ## Custom Element\n * `<umd-element-slider-events-feed>`\n *\n * ## Slots\n * - `headline` - Section headline (optional, accepts: heading elements)\n * - `actions` - Call-to-action links (optional, accepts: a, button)\n *\n * ## Attributes\n * - `data-theme` - Color theme of the component:\n * - `dark` - Dark background with light text\n * - `data-token` - API token for fetching events (required)\n * - `data-feed-type` - Feed type:\n * - `academic` - Academic calendar events\n * - Default - General events feed\n * - `data-filter-group-ids` - Comma-separated list of event categories to filter\n *\n * ## Observed Attributes\n * - `resize` - Triggers recalculation of date element sizes\n *\n * @example\n * ```html\n * <!-- Basic events feed slider -->\n * <umd-element-slider-events-feed data-token=\"events-api-key\">\n * <h2 slot=\"headline\">Upcoming Events</h2>\n * <a slot=\"actions\" href=\"/events\">All Events</a>\n * </umd-element-slider-events-feed>\n * ```\n *\n * @example\n * ```html\n * <!-- Academic calendar feed -->\n * <umd-element-slider-events-feed\n * data-token=\"academic-api-key\"\n * data-feed-type=\"academic\">\n * <h2 slot=\"headline\">Academic Calendar</h2>\n * <div slot=\"actions\">\n * <a href=\"/academic-calendar\">Full Calendar</a>\n * <a href=\"/academic-calendar/deadlines\">Important Deadlines</a>\n * </div>\n * </umd-element-slider-events-feed>\n * ```\n *\n * @example\n * ```html\n * <!-- Filtered events with dark theme -->\n * <umd-element-slider-events-feed\n * data-token=\"events-api-key\"\n * data-theme=\"dark\"\n * data-filter-group-ids=\"athletics,recreation\">\n * <h2 slot=\"headline\">Sports & Recreation</h2>\n * <a slot=\"actions\" href=\"/athletics\">Athletics Home</a>\n * </umd-element-slider-events-feed>\n * ```\n *\n * @example\n * ```html\n * <!-- Multiple category filters -->\n * <umd-element-slider-events-feed\n * data-token=\"events-api-key\"\n * data-filter-group-ids=\"workshop,seminar,lecture\">\n * <h2 slot=\"headline\">Learning Opportunities</h2>\n * <div slot=\"actions\">\n * <a href=\"/workshops\">All Workshops</a>\n * <a href=\"/seminars\">Seminar Series</a>\n * </div>\n * </umd-element-slider-events-feed>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst attributes = Attributes.handler.common.resize((element) =>\n element.events?.size(),\n);\n\nconst createComponent: CreateComponentFunction = (element) => {\n const isThemeDark = Attributes.isTheme.dark({ element });\n const token = Attributes.getValue.feedToken({ element });\n const categories = Attributes.getValue.feedFilterIds({ element });\n const isTypeAcademic = Attributes.isData.type.academic({\n element,\n });\n\n if (!token) {\n console.error('Token is required for this component');\n return { element: document.createElement('div'), styles: '' };\n }\n\n const sliderProps = {\n token,\n categories,\n isThemeDark,\n headline: Slots.headline.default({ element }),\n actions: Slots.actions.default({ element }),\n };\n\n if (isTypeAcademic) return Feeds.academic.slider(sliderProps);\n\n return Feeds.events.slider(sliderProps);\n};\n\n/**\n * Event Slider Feed\n *\n * A dynamic slider component that automatically fetches and displays events from a feed.\n * Supports both general events and academic calendar feeds with category filtering.\n * Provides real-time event updates with automatic date formatting and responsive layout.\n *\n * ## Custom Element\n * `<umd-element-slider-events-feed>`\n *\n * ## Slots\n * - `headline` - Section headline (optional, accepts: heading elements)\n * - `actions` - Call-to-action links (optional, accepts: a, button)\n *\n * ## Attributes\n * - `data-theme` - Color theme of the component:\n * - `dark` - Dark background with light text\n * - `data-token` - API token for fetching events (required)\n * - `data-feed-type` - Feed type:\n * - `academic` - Academic calendar events\n * - Default - General events feed\n * - `data-filter-group-ids` - Comma-separated list of event categories to filter\n *\n * ## Observed Attributes\n * - `resize` - Triggers recalculation of date element sizes\n *\n * @example\n * ```html\n * <!-- Basic events feed slider -->\n * <umd-element-slider-events-feed data-token=\"events-api-key\">\n * <h2 slot=\"headline\">Upcoming Events</h2>\n * <a slot=\"actions\" href=\"/events\">All Events</a>\n * </umd-element-slider-events-feed>\n * ```\n *\n * @example\n * ```html\n * <!-- Academic calendar feed -->\n * <umd-element-slider-events-feed\n * data-token=\"academic-api-key\"\n * data-feed-type=\"academic\">\n * <h2 slot=\"headline\">Academic Calendar</h2>\n * <div slot=\"actions\">\n * <a href=\"/academic-calendar\">Full Calendar</a>\n * <a href=\"/academic-calendar/deadlines\">Important Deadlines</a>\n * </div>\n * </umd-element-slider-events-feed>\n * ```\n *\n * @example\n * ```html\n * <!-- Filtered events with dark theme -->\n * <umd-element-slider-events-feed\n * data-token=\"events-api-key\"\n * data-theme=\"dark\"\n * data-filter-group-ids=\"athletics,recreation\">\n * <h2 slot=\"headline\">Sports & Recreation</h2>\n * <a slot=\"actions\" href=\"/athletics\">Athletics Home</a>\n * </umd-element-slider-events-feed>\n * ```\n *\n * @example\n * ```html\n * <!-- Multiple category filters -->\n * <umd-element-slider-events-feed\n * data-token=\"events-api-key\"\n * data-filter-group-ids=\"workshop,seminar,lecture\">\n * <h2 slot=\"headline\">Learning Opportunities</h2>\n * <div slot=\"actions\">\n * <a href=\"/workshops\">All Workshops</a>\n * <a href=\"/seminars\">Seminar Series</a>\n * </div>\n * </umd-element-slider-events-feed>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst registration: ComponentRegistration = Register.webComponent({\n tagName,\n createComponent,\n attributes: [attributes],\n afterConnect: (ref: TypedComponentRef, shadow?: ShadowRoot) =>\n ref?.events?.callback?.(shadow),\n});\n\nexport default registration;\n"],"names":["tagName","attributes","Attributes.handler","element","createComponent","dataSlider","dataSliderSlot","Slots","Composite","Attributes.isTheme","registration","Register.webComponent","Lifecycle.hooks","display_default","isThemeDark","token","Attributes.getValue","categories","isTypeAcademic","Attributes.isData","sliderProps","Feeds","ref","shadow","feed_default"],"mappings":";;;;AAOA,MAAMA,IAAU,6BA+EVC,IAAaC,EAAmB,OAAO;AAAA,EAAO,CAACC,MACnDA,EAAQ,QAAQ,KAAA;AAClB,GAEMC,IAA2C,CAACD,MAAY;AAC5D,QAAME,IAAa,SAAS,cAAc,KAAK,GACzCC,IAAiBH,EAAQ;AAAA,IAC7B,SAASI,EAAM,KAAK,UAAU;AAAA,EAAA;AAGhC,SAAKD,KAKLD,EAAW,YAAYC,EAAe,WAE/BE,EAAU,OAAO,OAAO;AAAA,IAC7B,aAAaC,EAAmB,KAAK,EAAE,SAAAN,GAAS;AAAA,IAChD,YAAAE;AAAA,IACA,UAAUE,EAAM,SAAS,QAAQ,EAAE,SAAAJ,GAAS;AAAA,IAC5C,SAASI,EAAM,QAAQ,QAAQ,EAAE,SAAAJ,GAAS;AAAA,EAAA,CAC3C,MAXC,QAAQ,MAAM,QAAQI,EAAM,KAAK,UAAU,cAAc,GAClD,EAAE,SAASF,GAAY,QAAQ,GAAA;AAW1C,GA+EMK,IAAsCC,EAAsB;AAAA,EAAA,SAChEX;AAAAA,EAAA,iBACAI;AAAAA,EACA,YAAY,CAACH,CAAU;AAAA,EACvB,cAAcW,EAAgB;AAChC,CAAC;AAED,IAAOC,IAAQH;AC3Lf,MAAMV,IAAU,kCAgFVC,IAAaC,EAAmB,OAAO;AAAA,EAAO,CAACC,MACnDA,EAAQ,QAAQ,KAAA;AAClB,GAEMC,IAA2C,CAACD,MAAY;AAC5D,QAAMW,IAAcL,EAAmB,KAAK,EAAE,SAAAN,GAAS,GACjDY,IAAQC,EAAoB,UAAU,EAAE,SAAAb,GAAS,GACjDc,IAAaD,EAAoB,cAAc,EAAE,SAAAb,GAAS,GAC1De,IAAiBC,EAAkB,KAAK,SAAS;AAAA,IACrD,SAAAhB;AAAA,EAAA,CACD;AAED,MAAI,CAACY;AACH,mBAAQ,MAAM,sCAAsC,GAC7C,EAAE,SAAS,SAAS,cAAc,KAAK,GAAG,QAAQ,GAAA;AAG3D,QAAMK,IAAc;AAAA,IAClB,OAAAL;AAAA,IACA,YAAAE;AAAA,IACA,aAAAH;AAAA,IACA,UAAUP,EAAM,SAAS,QAAQ,EAAE,SAAAJ,GAAS;AAAA,IAC5C,SAASI,EAAM,QAAQ,QAAQ,EAAE,SAAAJ,GAAS;AAAA,EAAA;AAG5C,SAAIe,IAAuBG,EAAM,SAAS,OAAOD,CAAW,IAErDC,EAAM,OAAO,OAAOD,CAAW;AACxC,GAgFMV,IAAsCC,EAAsB;AAAA,EAChE,SAAAX;AAAA,EACA,iBAAAI;AAAA,EACA,YAAY,CAACH,CAAU;AAAA,EACvB,cAAc,CAACqB,GAAwBC,MACrCD,GAAK,QAAQ,WAAWC,CAAM;AAClC,CAAC;AAED,IAAOC,IAAQd;"}
package/dist/feed.js CHANGED
@@ -1,4 +1,4 @@
1
- import { e, g as o, i as a, l as s } from "./loader-xwmpwCXk.js";
1
+ import { e, g as o, i as a, l as s } from "./loader-8wYd7fUZ.js";
2
2
  const t = {
3
3
  alert: a,
4
4
  feed: o,
@@ -1,6 +1,6 @@
1
1
  import { Composite as a } from "@universityofmaryland/web-elements-library";
2
- import { s as t, f as c, a as g } from "./shared/model-4-WQm2Le.js";
3
- import { w as s, h as l, I as f } from "./shared/utilities-B_sPVa-m.js";
2
+ import { s as t, f as c, a as g } from "./shared/model-CHS3WnCo.js";
3
+ import { w as s, h as l, I as f } from "./shared/utilities-CZHe-tKs.js";
4
4
  import "@universityofmaryland/web-styles-library";
5
5
  const u = "umd-element-media-inline", w = {
6
6
  caption: {
@@ -47,4 +47,4 @@ export {
47
47
  k as g,
48
48
  b as i
49
49
  };
50
- //# sourceMappingURL=gif-DFmy3K6d.js.map
50
+ //# sourceMappingURL=gif-DcCErswK.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gif-DFmy3K6d.js","sources":["../source/api/media/inline/index.ts","../source/api/media/gif.ts"],"sourcesContent":["import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Slots, Register, Lifecycle } from 'model';\nimport { Markup } from 'utilities';\nimport { CreateComponentFunction, SlotConfiguration } from '../../../_types';\n\n/**\n * Tag name for the media inline web component\n */\nconst tagName = 'umd-element-media-inline';\n\n/**\n * Media Inline\n *\n * A versatile media component for displaying images inline with optional captions or wrapping text.\n * Supports multiple display modes including standard image display, image with caption, and\n * text-wrapped image layouts. Ideal for article content, blog posts, and rich text sections.\n *\n * ## Custom Element\n * `<umd-element-media-inline>`\n *\n * ## Slots\n * - `image` - The media image to display (required, accepts: img)\n * - `caption` - Image caption text (accepts: div, p)\n * - `text` - Text content that wraps around the image (accepts: div, p)\n * - `wrapping-text` - Deprecated: Use \"text\" slot instead (accepts: div, p)\n *\n * ## Attributes\n * - `data-theme` - Theme options:\n * - `dark` - Dark background with light text\n * - `data-align` - Image alignment:\n * - `right` - Aligns image to the right (text wraps on left)\n *\n * @example\n * ```html\n * <!-- Basic inline image -->\n * <umd-element-media-inline>\n * <img slot=\"image\" src=\"campus.jpg\" alt=\"Campus view\" />\n * </umd-element-media-inline>\n * ```\n *\n * @example\n * ```html\n * <!-- Image with caption -->\n * <umd-element-media-inline>\n * <img slot=\"image\" src=\"research-lab.jpg\" alt=\"Research laboratory\" />\n * <p slot=\"caption\">State-of-the-art research facility opened in 2023</p>\n * </umd-element-media-inline>\n * ```\n *\n * @example\n * ```html\n * <!-- Right-aligned image with wrapping text -->\n * <umd-element-media-inline data-align=\"right\">\n * <img slot=\"image\" src=\"professor.jpg\" alt=\"Professor teaching\" />\n * <div slot=\"text\">\n * <p>Our distinguished faculty members bring decades of experience and expertise\n * to the classroom. They are committed to student success and advancing knowledge\n * in their fields through groundbreaking research.</p>\n * <p>With a student-to-faculty ratio of 18:1, students benefit from personalized\n * attention and mentorship opportunities.</p>\n * </div>\n * </umd-element-media-inline>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme with caption -->\n * <umd-element-media-inline data-theme=\"dark\">\n * <img slot=\"image\" src=\"night-campus.jpg\" alt=\"Campus at night\" />\n * <p slot=\"caption\">The campus comes alive with evening activities and events</p>\n * </umd-element-media-inline>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\n/**\n * Slot configuration for the media inline component\n */\nconst slots: SlotConfiguration = {\n caption: {\n allowedElements: ['div', 'p'],\n },\n text: Slots.element.allowed.text,\n wrappingText: {\n allowedElements: ['div', 'p'],\n deprecated:\n 'Use \"text\" instead. This attribute will be removed in version 2.0.',\n },\n};\n\n/**\n * Creates a media inline component with the provided configuration\n */\nconst createComponent: CreateComponentFunction = (element) => {\n const caption = Slots.text.caption({ element });\n const wrappingText =\n Slots.text.default({ element, isDefaultStyling: false }) ||\n Slots.deprecated.wrappingText({ element, isDefaultStyling: false });\n const isAlignmentRight = Attributes.isLayout.alignmentRight({ element });\n const isThemeDark = Attributes.isTheme.dark({ element });\n const hasWrappingText = wrappingText !== null;\n const hasCaption = caption !== null;\n\n const content = {\n isAlignmentRight,\n isThemeDark,\n caption,\n image: Markup.validate.ImageSlot({\n element,\n ImageSlot: Slots.name.assets.image,\n }),\n wrappingText,\n };\n\n if (hasWrappingText) {\n return Composite.media.inline.wrapped(content);\n }\n\n if (hasCaption) {\n return Composite.media.inline.caption(content);\n }\n\n return Composite.media.inline.standard(content);\n};\n\n/**\n * Media Inline\n *\n * A versatile media component for displaying images inline with optional captions or wrapping text.\n * Supports multiple display modes including standard image display, image with caption, and\n * text-wrapped image layouts. Ideal for article content, blog posts, and rich text sections.\n *\n * ## Custom Element\n * `<umd-element-media-inline>`\n *\n * ## Slots\n * - `image` - The media image to display (required, accepts: img)\n * - `caption` - Image caption text (accepts: div, p)\n * - `text` - Text content that wraps around the image (accepts: div, p)\n * - `wrapping-text` - Deprecated: Use \"text\" slot instead (accepts: div, p)\n *\n * ## Attributes\n * - `data-theme` - Theme options:\n * - `dark` - Dark background with light text\n * - `data-align` - Image alignment:\n * - `right` - Aligns image to the right (text wraps on left)\n *\n * @example\n * ```html\n * <!-- Basic inline image -->\n * <umd-element-media-inline>\n * <img slot=\"image\" src=\"campus.jpg\" alt=\"Campus view\" />\n * </umd-element-media-inline>\n * ```\n *\n * @example\n * ```html\n * <!-- Image with caption -->\n * <umd-element-media-inline>\n * <img slot=\"image\" src=\"research-lab.jpg\" alt=\"Research laboratory\" />\n * <p slot=\"caption\">State-of-the-art research facility opened in 2023</p>\n * </umd-element-media-inline>\n * ```\n *\n * @example\n * ```html\n * <!-- Right-aligned image with wrapping text -->\n * <umd-element-media-inline data-align=\"right\">\n * <img slot=\"image\" src=\"professor.jpg\" alt=\"Professor teaching\" />\n * <div slot=\"text\">\n * <p>Our distinguished faculty members bring decades of experience and expertise\n * to the classroom. They are committed to student success and advancing knowledge\n * in their fields through groundbreaking research.</p>\n * <p>With a student-to-faculty ratio of 18:1, students benefit from personalized\n * attention and mentorship opportunities.</p>\n * </div>\n * </umd-element-media-inline>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme with caption -->\n * <umd-element-media-inline data-theme=\"dark\">\n * <img slot=\"image\" src=\"night-campus.jpg\" alt=\"Campus at night\" />\n * <p slot=\"caption\">The campus comes alive with evening activities and events</p>\n * </umd-element-media-inline>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nexport default Register.webComponent({\n tagName,\n slots,\n createComponent,\n onReady: Lifecycle.hooks.loadOnConnect,\n});\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Slots, Register, Lifecycle } from 'model';\nimport { CreateComponentFunction, SlotConfiguration } from '../../_types';\n\n/**\n * Tag name for the media gif web component\n */\nconst tagName = 'umd-element-media-gif';\n\n/**\n * Media GIF\n *\n * An accessible GIF component that provides play/pause controls for animated GIFs.\n * Enhances user experience by allowing control over animation playback, reducing\n * distractions and improving accessibility for users with motion sensitivities.\n *\n * ## Custom Element\n * `<umd-element-media-gif>`\n *\n * ## Slots\n * - `image` - The media image to display (required, accepts: img)\n *\n * @example\n * ```html\n * <!-- Basic inline image -->\n * <umd-element-media-gif>\n * <img slot=\"image\" src=\"campus.jpg\" alt=\"Campus view\" />\n * </umd-element-media-gif>\n * ```\n *\n * @category Components\n * @since 1.12.10\n */\nconst slots: SlotConfiguration = {\n image: {\n allowedElements: ['img', 'a'],\n },\n};\n\n/**\n * Creates a media gif component with the provided configuration\n */\nconst createComponent: CreateComponentFunction = (element) =>\n Composite.media.elements.gif({\n image: Slots.assets.image({ element }) as HTMLImageElement,\n });\n\n/**\n * Media GIF\n *\n * An accessible GIF component that provides play/pause controls for animated GIFs.\n * Enhances user experience by allowing control over animation playback, reducing\n * distractions and improving accessibility for users with motion sensitivities.\n *\n * ## Custom Element\n * `<umd-element-media-gif>`\n *\n * ## Slots\n * - `image` - The media image to display (required, accepts: img)\n *\n * @example\n * ```html\n * <!-- Basic inline image -->\n * <umd-element-media-gif>\n * <img slot=\"image\" src=\"campus.jpg\" alt=\"Campus view\" />\n * </umd-element-media-gif>\n * ```\n *\n * @category Components\n * @since 1.12.10\n */\nexport default Register.webComponent({\n tagName,\n slots,\n createComponent,\n onReady: Lifecycle.hooks.loadOnConnect,\n});\n"],"names":["tagName","slots","Slots","createComponent","element","caption","wrappingText","isAlignmentRight","Attributes.isLayout","isThemeDark","Attributes.isTheme","hasWrappingText","hasCaption","content","Markup.validate.ImageSlot","Composite","inline_default","Register.webComponent","Lifecycle.hooks","gif_default"],"mappings":";;;;AAQA,MAAMA,IAAU,4BAuEVC,IAA2B;AAAA,EAC/B,SAAS;AAAA,IACP,iBAAiB,CAAC,OAAO,GAAG;AAAA,EAAA;AAAA,EAE9B,MAAMC,EAAM,QAAQ,QAAQ;AAAA,EAC5B,cAAc;AAAA,IACZ,iBAAiB,CAAC,OAAO,GAAG;AAAA,IAC5B,YACE;AAAA,EAAA;AAEN,GAKMC,IAA2C,CAACC,MAAY;AAC5D,QAAMC,IAAUH,EAAM,KAAK,QAAQ,EAAE,SAAAE,GAAS,GACxCE,IACJJ,EAAM,KAAK,QAAQ,EAAE,SAAAE,GAAS,kBAAkB,GAAA,CAAO,KACvDF,EAAM,WAAW,aAAa,EAAE,SAAAE,GAAS,kBAAkB,IAAO,GAC9DG,IAAmBC,EAAoB,eAAe,EAAE,SAAAJ,GAAS,GACjEK,IAAcC,EAAmB,KAAK,EAAE,SAAAN,GAAS,GACjDO,IAAkBL,MAAiB,MACnCM,IAAaP,MAAY,MAEzBQ,IAAU;AAAA,IACd,kBAAAN;AAAA,IACA,aAAAE;AAAA,IACA,SAAAJ;AAAA,IACA,OAAOS,EAA0B;AAAA,MAC/B,SAAAV;AAAA,MACA,WAAWF,EAAM,KAAK,OAAO;AAAA,IAAA,CAC9B;AAAA,IACD,cAAAI;AAAA,EAAA;AAGF,SAAIK,IACKI,EAAU,MAAM,OAAO,QAAQF,CAAO,IAG3CD,IACKG,EAAU,MAAM,OAAO,QAAQF,CAAO,IAGxCE,EAAU,MAAM,OAAO,SAASF,CAAO;AAChD;AAoEA,IAAOG,IAAQC,EAAsB;AAAA,EAAA,SACnCjB;AAAAA,EAAA,OACAC;AAAAA,EAAA,iBACAE;AAAAA,EACA,SAASe,EAAgB;AAC3B,CAAC;AC9LD,MAAMlB,IAAU,yBA0BVC,IAA2B;AAAA,EAC/B,OAAO;AAAA,IACL,iBAAiB,CAAC,OAAO,GAAG;AAAA,EAAA;AAEhC,GAKME,IAA2C,CAACC,MAChDW,EAAU,MAAM,SAAS,IAAI;AAAA,EAC3B,OAAOb,EAAM,OAAO,MAAM,EAAE,SAAAE,GAAS;AACvC,CAAC;AA0BH,IAAOe,IAAQF,EAAsB;AAAA,EACnC,SAAAjB;AAAA,EACA,OAAAC;AAAA,EACA,iBAAAE;AAAA,EACA,SAASe,EAAgB;AAC3B,CAAC;"}
1
+ {"version":3,"file":"gif-DcCErswK.js","sources":["../source/api/media/inline/index.ts","../source/api/media/gif.ts"],"sourcesContent":["import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Slots, Register, Lifecycle } from 'model';\nimport { Markup } from 'utilities';\nimport { CreateComponentFunction, SlotConfiguration } from '../../../_types';\n\n/**\n * Tag name for the media inline web component\n */\nconst tagName = 'umd-element-media-inline';\n\n/**\n * Media Inline\n *\n * A versatile media component for displaying images inline with optional captions or wrapping text.\n * Supports multiple display modes including standard image display, image with caption, and\n * text-wrapped image layouts. Ideal for article content, blog posts, and rich text sections.\n *\n * ## Custom Element\n * `<umd-element-media-inline>`\n *\n * ## Slots\n * - `image` - The media image to display (required, accepts: img)\n * - `caption` - Image caption text (accepts: div, p)\n * - `text` - Text content that wraps around the image (accepts: div, p)\n * - `wrapping-text` - Deprecated: Use \"text\" slot instead (accepts: div, p)\n *\n * ## Attributes\n * - `data-theme` - Theme options:\n * - `dark` - Dark background with light text\n * - `data-align` - Image alignment:\n * - `right` - Aligns image to the right (text wraps on left)\n *\n * @example\n * ```html\n * <!-- Basic inline image -->\n * <umd-element-media-inline>\n * <img slot=\"image\" src=\"campus.jpg\" alt=\"Campus view\" />\n * </umd-element-media-inline>\n * ```\n *\n * @example\n * ```html\n * <!-- Image with caption -->\n * <umd-element-media-inline>\n * <img slot=\"image\" src=\"research-lab.jpg\" alt=\"Research laboratory\" />\n * <p slot=\"caption\">State-of-the-art research facility opened in 2023</p>\n * </umd-element-media-inline>\n * ```\n *\n * @example\n * ```html\n * <!-- Right-aligned image with wrapping text -->\n * <umd-element-media-inline data-align=\"right\">\n * <img slot=\"image\" src=\"professor.jpg\" alt=\"Professor teaching\" />\n * <div slot=\"text\">\n * <p>Our distinguished faculty members bring decades of experience and expertise\n * to the classroom. They are committed to student success and advancing knowledge\n * in their fields through groundbreaking research.</p>\n * <p>With a student-to-faculty ratio of 18:1, students benefit from personalized\n * attention and mentorship opportunities.</p>\n * </div>\n * </umd-element-media-inline>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme with caption -->\n * <umd-element-media-inline data-theme=\"dark\">\n * <img slot=\"image\" src=\"night-campus.jpg\" alt=\"Campus at night\" />\n * <p slot=\"caption\">The campus comes alive with evening activities and events</p>\n * </umd-element-media-inline>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\n/**\n * Slot configuration for the media inline component\n */\nconst slots: SlotConfiguration = {\n caption: {\n allowedElements: ['div', 'p'],\n },\n text: Slots.element.allowed.text,\n wrappingText: {\n allowedElements: ['div', 'p'],\n deprecated:\n 'Use \"text\" instead. This attribute will be removed in version 2.0.',\n },\n};\n\n/**\n * Creates a media inline component with the provided configuration\n */\nconst createComponent: CreateComponentFunction = (element) => {\n const caption = Slots.text.caption({ element });\n const wrappingText =\n Slots.text.default({ element, isDefaultStyling: false }) ||\n Slots.deprecated.wrappingText({ element, isDefaultStyling: false });\n const isAlignmentRight = Attributes.isLayout.alignmentRight({ element });\n const isThemeDark = Attributes.isTheme.dark({ element });\n const hasWrappingText = wrappingText !== null;\n const hasCaption = caption !== null;\n\n const content = {\n isAlignmentRight,\n isThemeDark,\n caption,\n image: Markup.validate.ImageSlot({\n element,\n ImageSlot: Slots.name.assets.image,\n }),\n wrappingText,\n };\n\n if (hasWrappingText) {\n return Composite.media.inline.wrapped(content);\n }\n\n if (hasCaption) {\n return Composite.media.inline.caption(content);\n }\n\n return Composite.media.inline.standard(content);\n};\n\n/**\n * Media Inline\n *\n * A versatile media component for displaying images inline with optional captions or wrapping text.\n * Supports multiple display modes including standard image display, image with caption, and\n * text-wrapped image layouts. Ideal for article content, blog posts, and rich text sections.\n *\n * ## Custom Element\n * `<umd-element-media-inline>`\n *\n * ## Slots\n * - `image` - The media image to display (required, accepts: img)\n * - `caption` - Image caption text (accepts: div, p)\n * - `text` - Text content that wraps around the image (accepts: div, p)\n * - `wrapping-text` - Deprecated: Use \"text\" slot instead (accepts: div, p)\n *\n * ## Attributes\n * - `data-theme` - Theme options:\n * - `dark` - Dark background with light text\n * - `data-align` - Image alignment:\n * - `right` - Aligns image to the right (text wraps on left)\n *\n * @example\n * ```html\n * <!-- Basic inline image -->\n * <umd-element-media-inline>\n * <img slot=\"image\" src=\"campus.jpg\" alt=\"Campus view\" />\n * </umd-element-media-inline>\n * ```\n *\n * @example\n * ```html\n * <!-- Image with caption -->\n * <umd-element-media-inline>\n * <img slot=\"image\" src=\"research-lab.jpg\" alt=\"Research laboratory\" />\n * <p slot=\"caption\">State-of-the-art research facility opened in 2023</p>\n * </umd-element-media-inline>\n * ```\n *\n * @example\n * ```html\n * <!-- Right-aligned image with wrapping text -->\n * <umd-element-media-inline data-align=\"right\">\n * <img slot=\"image\" src=\"professor.jpg\" alt=\"Professor teaching\" />\n * <div slot=\"text\">\n * <p>Our distinguished faculty members bring decades of experience and expertise\n * to the classroom. They are committed to student success and advancing knowledge\n * in their fields through groundbreaking research.</p>\n * <p>With a student-to-faculty ratio of 18:1, students benefit from personalized\n * attention and mentorship opportunities.</p>\n * </div>\n * </umd-element-media-inline>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme with caption -->\n * <umd-element-media-inline data-theme=\"dark\">\n * <img slot=\"image\" src=\"night-campus.jpg\" alt=\"Campus at night\" />\n * <p slot=\"caption\">The campus comes alive with evening activities and events</p>\n * </umd-element-media-inline>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nexport default Register.webComponent({\n tagName,\n slots,\n createComponent,\n onReady: Lifecycle.hooks.loadOnConnect,\n});\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Slots, Register, Lifecycle } from 'model';\nimport { CreateComponentFunction, SlotConfiguration } from '../../_types';\n\n/**\n * Tag name for the media gif web component\n */\nconst tagName = 'umd-element-media-gif';\n\n/**\n * Media GIF\n *\n * An accessible GIF component that provides play/pause controls for animated GIFs.\n * Enhances user experience by allowing control over animation playback, reducing\n * distractions and improving accessibility for users with motion sensitivities.\n *\n * ## Custom Element\n * `<umd-element-media-gif>`\n *\n * ## Slots\n * - `image` - The media image to display (required, accepts: img)\n *\n * @example\n * ```html\n * <!-- Basic inline image -->\n * <umd-element-media-gif>\n * <img slot=\"image\" src=\"campus.jpg\" alt=\"Campus view\" />\n * </umd-element-media-gif>\n * ```\n *\n * @category Components\n * @since 1.12.10\n */\nconst slots: SlotConfiguration = {\n image: {\n allowedElements: ['img', 'a'],\n },\n};\n\n/**\n * Creates a media gif component with the provided configuration\n */\nconst createComponent: CreateComponentFunction = (element) =>\n Composite.media.elements.gif({\n image: Slots.assets.image({ element }) as HTMLImageElement,\n });\n\n/**\n * Media GIF\n *\n * An accessible GIF component that provides play/pause controls for animated GIFs.\n * Enhances user experience by allowing control over animation playback, reducing\n * distractions and improving accessibility for users with motion sensitivities.\n *\n * ## Custom Element\n * `<umd-element-media-gif>`\n *\n * ## Slots\n * - `image` - The media image to display (required, accepts: img)\n *\n * @example\n * ```html\n * <!-- Basic inline image -->\n * <umd-element-media-gif>\n * <img slot=\"image\" src=\"campus.jpg\" alt=\"Campus view\" />\n * </umd-element-media-gif>\n * ```\n *\n * @category Components\n * @since 1.12.10\n */\nexport default Register.webComponent({\n tagName,\n slots,\n createComponent,\n onReady: Lifecycle.hooks.loadOnConnect,\n});\n"],"names":["tagName","slots","Slots","createComponent","element","caption","wrappingText","isAlignmentRight","Attributes.isLayout","isThemeDark","Attributes.isTheme","hasWrappingText","hasCaption","content","Markup.validate.ImageSlot","Composite","inline_default","Register.webComponent","Lifecycle.hooks","gif_default"],"mappings":";;;;AAQA,MAAMA,IAAU,4BAuEVC,IAA2B;AAAA,EAC/B,SAAS;AAAA,IACP,iBAAiB,CAAC,OAAO,GAAG;AAAA,EAAA;AAAA,EAE9B,MAAMC,EAAM,QAAQ,QAAQ;AAAA,EAC5B,cAAc;AAAA,IACZ,iBAAiB,CAAC,OAAO,GAAG;AAAA,IAC5B,YACE;AAAA,EAAA;AAEN,GAKMC,IAA2C,CAACC,MAAY;AAC5D,QAAMC,IAAUH,EAAM,KAAK,QAAQ,EAAE,SAAAE,GAAS,GACxCE,IACJJ,EAAM,KAAK,QAAQ,EAAE,SAAAE,GAAS,kBAAkB,GAAA,CAAO,KACvDF,EAAM,WAAW,aAAa,EAAE,SAAAE,GAAS,kBAAkB,IAAO,GAC9DG,IAAmBC,EAAoB,eAAe,EAAE,SAAAJ,GAAS,GACjEK,IAAcC,EAAmB,KAAK,EAAE,SAAAN,GAAS,GACjDO,IAAkBL,MAAiB,MACnCM,IAAaP,MAAY,MAEzBQ,IAAU;AAAA,IACd,kBAAAN;AAAA,IACA,aAAAE;AAAA,IACA,SAAAJ;AAAA,IACA,OAAOS,EAA0B;AAAA,MAC/B,SAAAV;AAAA,MACA,WAAWF,EAAM,KAAK,OAAO;AAAA,IAAA,CAC9B;AAAA,IACD,cAAAI;AAAA,EAAA;AAGF,SAAIK,IACKI,EAAU,MAAM,OAAO,QAAQF,CAAO,IAG3CD,IACKG,EAAU,MAAM,OAAO,QAAQF,CAAO,IAGxCE,EAAU,MAAM,OAAO,SAASF,CAAO;AAChD;AAoEA,IAAOG,IAAQC,EAAsB;AAAA,EAAA,SACnCjB;AAAAA,EAAA,OACAC;AAAAA,EAAA,iBACAE;AAAAA,EACA,SAASe,EAAgB;AAC3B,CAAC;AC9LD,MAAMlB,IAAU,yBA0BVC,IAA2B;AAAA,EAC/B,OAAO;AAAA,IACL,iBAAiB,CAAC,OAAO,GAAG;AAAA,EAAA;AAEhC,GAKME,IAA2C,CAACC,MAChDW,EAAU,MAAM,SAAS,IAAI;AAAA,EAC3B,OAAOb,EAAM,OAAO,MAAM,EAAE,SAAAE,GAAS;AACvC,CAAC;AA0BH,IAAOe,IAAQF,EAAsB;AAAA,EACnC,SAAAjB;AAAA,EACA,OAAAC;AAAA,EACA,iBAAAE;AAAA,EACA,SAASe,EAAgB;AAC3B,CAAC;"}
@@ -1,6 +1,6 @@
1
1
  import { Composite as e } from "@universityofmaryland/web-elements-library";
2
- import { s as a, a as r, f as b, b as d } from "./shared/model-4-WQm2Le.js";
3
- import { I as E, w as c, b as p } from "./shared/utilities-B_sPVa-m.js";
2
+ import { s as a, a as r, f as b, b as d } from "./shared/model-CHS3WnCo.js";
3
+ import { I as E, w as c, b as p } from "./shared/utilities-CZHe-tKs.js";
4
4
  import "@universityofmaryland/web-styles-library";
5
5
  const n = ({
6
6
  element: o,
@@ -122,4 +122,4 @@ export {
122
122
  A as d,
123
123
  M as h
124
124
  };
125
- //# sourceMappingURL=hero-DJY4qxON.js.map
125
+ //# sourceMappingURL=hero-Bn4rdy_N.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hero-DJY4qxON.js","sources":["../source/api/person/common.ts","../source/api/person/bio.ts","../source/api/person/display.ts","../source/api/person/hero.ts"],"sourcesContent":["import { Slots } from 'model';\nimport slots from 'model/slots';\nimport { Markup } from 'utilities';\n\nexport const CommonPersonData = ({\n element,\n isThemeDark,\n}: {\n element: HTMLElement;\n isThemeDark?: boolean;\n}) => ({\n address: Slots.contact.address({ element }),\n association: Slots.person.association({ element }),\n name: Slots.person.name({ element }),\n email: slots.contact.email({ element }),\n job: Slots.person.jobTitle({ element }),\n pronouns: Slots.person.pronouns({ element }),\n phone: Slots.contact.phone({ element }),\n linkendIn: Slots.social.linkedin({ element }),\n image: Markup.validate.ImageSlot({\n element,\n ImageSlot: Slots.name.assets.image,\n }),\n additionalContact: Slots.contact.additional({ element }),\n subText: Slots.text.subText({ element }),\n actions: Slots.actions.default({ element }),\n isThemeDark,\n});\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Register, Slots } from 'model';\nimport { Markup } from 'utilities';\nimport { CommonPersonData } from './common';\nimport {\n CreateComponentFunction,\n ComponentRegistration,\n SlotConfiguration,\n} from '../../_types';\n\nconst tagName = 'umd-element-person-bio';\n\nconst { SlotWithDefaultStyling } = Markup.create;\n\nconst slots: SlotConfiguration = {\n name: {},\n pronouns: {},\n 'job-title': {},\n association: {},\n email: { allowedElements: ['a'] },\n phone: { allowedElements: ['a'] },\n address: {},\n linkedin: { allowedElements: ['a'] },\n 'additional-contact': {},\n image: { allowedElements: ['img'] },\n description: {},\n 'sub-text': {},\n actions: Slots.element.allowed.actions,\n};\n\nconst createComponent: CreateComponentFunction = (element) => {\n const isThemeDark = Attributes.isTheme.dark({ element });\n const isFullImage = Attributes.isLayout.fullImage({ element });\n\n if (isFullImage) {\n return Composite.person.bio.full({\n ...CommonPersonData({ element, isThemeDark }),\n description: SlotWithDefaultStyling({\n element,\n slotRef: Slots.name.DESCRIPTION,\n }),\n });\n }\n\n return Composite.person.bio.small({\n ...CommonPersonData({ element, isThemeDark }),\n description: SlotWithDefaultStyling({\n element,\n slotRef: Slots.name.DESCRIPTION,\n }),\n });\n};\n\n/**\n * Person Biography\n *\n * A comprehensive biography component for displaying detailed information about\n * faculty, staff, or notable individuals. Supports both small and full-size image\n * layouts with rich biographical content.\n *\n * ## Custom Element\n * `<umd-element-person-bio>`\n *\n * ## Slots\n * - `name` - Person's full name (optional, accepts: text elements)\n * - `pronouns` - Preferred pronouns (optional, accepts: text elements)\n * - `job-title` - Professional title or position (optional, accepts: text elements)\n * - `association` - Department, school, or affiliation (optional, accepts: text elements)\n * - `email` - Email address (optional, accepts: a[href^=\"mailto:\"])\n * - `phone` - Phone number (optional, accepts: a[href^=\"tel:\"])\n * - `address` - Physical address (optional, accepts: text elements)\n * - `linkedin` - LinkedIn profile link (optional, accepts: a)\n * - `additional-contact` - Other contact methods (optional, accepts: any elements)\n * - `image` - Portrait photo (optional, accepts: img)\n * - `description` - Full biography text (optional, accepts: any elements)\n * - `sub-text` - Additional information (optional, accepts: text elements)\n * - `actions` - Call-to-action links (optional, accepts: a, button)\n *\n * ## Attributes\n * - `data-theme` - Color theme of the component:\n * - `dark` - Dark background with light text\n * - `data-image` - Image display size:\n * - `full` - Large image layout\n * - Default - Small image layout\n *\n * @example\n * ```html\n * <!-- Basic faculty bio -->\n * <umd-element-person-bio>\n * <img slot=\"image\" src=\"professor.jpg\" alt=\"Dr. Smith\" />\n * <h2 slot=\"name\">Dr. Jane Smith</h2>\n * <span slot=\"pronouns\">(she/her)</span>\n * <p slot=\"job-title\">Professor of Computer Science</p>\n * <p slot=\"association\">Department of Computer Science</p>\n * <a slot=\"email\" href=\"mailto:jsmith@umd.edu\">jsmith@umd.edu</a>\n * <div slot=\"description\">\n * <p>Dr. Smith is a leading researcher in artificial intelligence with over\n * 20 years of experience in machine learning and neural networks.</p>\n * <p>Her work has been published in numerous journals and she has received\n * multiple awards for her contributions to the field.</p>\n * </div>\n * </umd-element-person-bio>\n * ```\n *\n * @example\n * ```html\n * <!-- Full image layout with complete details -->\n * <umd-element-person-bio data-image=\"full\">\n * <img slot=\"image\" src=\"dean-portrait.jpg\" alt=\"Dean Johnson\" />\n * <h1 slot=\"name\">Dr. Michael Johnson</h1>\n * <span slot=\"pronouns\">(he/him)</span>\n * <p slot=\"job-title\">Dean, College of Engineering</p>\n * <p slot=\"association\">A. James Clark School of Engineering</p>\n * <a slot=\"email\" href=\"mailto:dean@eng.umd.edu\">dean@eng.umd.edu</a>\n * <a slot=\"phone\" href=\"tel:301-405-1000\">301-405-1000</a>\n * <address slot=\"address\">\n * 2101 Glenn L. Martin Hall<br>\n * College Park, MD 20742\n * </address>\n * <a slot=\"linkedin\" href=\"https://linkedin.com/in/deanjohnson\">LinkedIn</a>\n * <div slot=\"description\">\n * <h3>About Dean Johnson</h3>\n * <p>Dean Johnson leads the A. James Clark School of Engineering...</p>\n * <h3>Research Interests</h3>\n * <ul>\n * <li>Sustainable Energy Systems</li>\n * <li>Smart Infrastructure</li>\n * <li>Engineering Education Innovation</li>\n * </ul>\n * </div>\n * <div slot=\"actions\">\n * <a href=\"/schedule-meeting\">Schedule a Meeting</a>\n * <a href=\"/publications\">View Publications</a>\n * </div>\n * </umd-element-person-bio>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme bio -->\n * <umd-element-person-bio data-theme=\"dark\">\n * <img slot=\"image\" src=\"researcher.jpg\" alt=\"Dr. Chen\" />\n * <h2 slot=\"name\">Dr. Lisa Chen</h2>\n * <p slot=\"job-title\">Research Scientist</p>\n * <p slot=\"association\">Institute for Advanced Computer Studies</p>\n * <a slot=\"email\" href=\"mailto:lchen@umd.edu\">lchen@umd.edu</a>\n * <div slot=\"additional-contact\">\n * <p>Lab: Room 3120, Iribe Center</p>\n * <p>Office Hours: Tue/Thu 2-4pm</p>\n * </div>\n * <div slot=\"description\">\n * <p>Dr. Chen specializes in quantum computing and cryptography...</p>\n * </div>\n * </umd-element-person-bio>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst PersonBio: ComponentRegistration = Register.webComponent({\n tagName,\n slots,\n createComponent,\n});\n\nexport default PersonBio;\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Register, Slots } from 'model';\nimport { CommonPersonData } from './common';\nimport {\n CreateComponentFunction,\n ComponentRegistration,\n SlotConfiguration,\n} from '../../_types';\n\nconst tagName = 'umd-element-person';\n\nconst slots: SlotConfiguration = {\n name: {},\n pronouns: {},\n 'job-title': {},\n association: {},\n email: { allowedElements: ['a'] },\n phone: { allowedElements: ['a'] },\n address: {},\n linkedin: { allowedElements: ['a'] },\n 'additional-contact': {},\n image: { allowedElements: ['img'] },\n 'sub-text': {},\n actions: Slots.element.allowed.actions,\n};\n\nconst createComponent: CreateComponentFunction = (element) => {\n const isDisplayList = Attributes.isDisplay.list({ element });\n const isDisplayTabular = Attributes.isDisplay.tabular({ element });\n const isThemeDark = Attributes.isTheme.dark({ element });\n\n if (isDisplayList) {\n return Composite.person.list(CommonPersonData({ element, isThemeDark }));\n }\n\n if (isDisplayTabular) {\n return Composite.person.tabular(CommonPersonData({ element, isThemeDark }));\n }\n\n return Composite.person.block(CommonPersonData({ element, isThemeDark }));\n};\n\n/**\n * Person Display\n *\n * A flexible component for displaying person information in various layouts.\n * Ideal for staff directories, team pages, and contact lists. Supports block,\n * list, and tabular display formats.\n *\n * ## Custom Element\n * `<umd-element-person>`\n *\n * ## Slots\n * - `name` - Person's full name (optional, accepts: text elements)\n * - `pronouns` - Preferred pronouns (optional, accepts: text elements)\n * - `job-title` - Professional title or position (optional, accepts: text elements)\n * - `association` - Department, school, or affiliation (optional, accepts: text elements)\n * - `email` - Email address (optional, accepts: a[href^=\"mailto:\"])\n * - `phone` - Phone number (optional, accepts: a[href^=\"tel:\"])\n * - `address` - Physical address (optional, accepts: text elements)\n * - `linkedin` - LinkedIn profile link (optional, accepts: a)\n * - `additional-contact` - Other contact methods (optional, accepts: any elements)\n * - `image` - Portrait photo (optional, accepts: img)\n * - `sub-text` - Additional information (optional, accepts: text elements)\n * - `actions` - Call-to-action links (optional, accepts: a, button)\n *\n * ## Attributes\n * - `data-theme` - Color theme of the component:\n * - `dark` - Dark background with light text\n * - `data-display` - Layout style:\n * - `list` - Horizontal list layout\n * - `tabular` - Table-like layout\n * - Default - Block/card layout\n *\n * @example\n * ```html\n * <!-- Basic block display -->\n * <umd-element-person>\n * <img slot=\"image\" src=\"staff-photo.jpg\" alt=\"John Doe\" />\n * <p slot=\"name\">John Doe</p>\n * <p slot=\"job-title\">Program Coordinator</p>\n * <a slot=\"email\" href=\"mailto:jdoe@umd.edu\">jdoe@umd.edu</a>\n * <a slot=\"phone\" href=\"tel:301-405-1234\">301-405-1234</a>\n * </umd-element-person>\n * ```\n *\n * @example\n * ```html\n * <!-- List display for directory -->\n * <umd-element-person data-display=\"list\">\n * <img slot=\"image\" src=\"faculty.jpg\" alt=\"Dr. Martinez\" />\n * <h3 slot=\"name\">Dr. Maria Martinez</h3>\n * <span slot=\"pronouns\">(she/her)</span>\n * <p slot=\"job-title\">Associate Professor</p>\n * <p slot=\"association\">Department of Biology</p>\n * <a slot=\"email\" href=\"mailto:mmartinez@umd.edu\">mmartinez@umd.edu</a>\n * <p slot=\"sub-text\">Office: Biology Building, Room 2134</p>\n * <a slot=\"actions\" href=\"/faculty/martinez\">View Profile</a>\n * </umd-element-person>\n * ```\n *\n * @example\n * ```html\n * <!-- Tabular display for contact list -->\n * <umd-element-person data-display=\"tabular\" data-theme=\"dark\">\n * <p slot=\"name\">Sarah Thompson</p>\n * <p slot=\"job-title\">Admissions Counselor</p>\n * <p slot=\"association\">Office of Undergraduate Admissions</p>\n * <a slot=\"email\" href=\"mailto:sthompson@umd.edu\">sthompson@umd.edu</a>\n * <a slot=\"phone\" href=\"tel:301-314-8385\">301-314-8385</a>\n * <div slot=\"additional-contact\">\n * <p>Regions: MD (Montgomery County), DC</p>\n * </div>\n * </umd-element-person>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst PersonDisplay: ComponentRegistration = Register.webComponent({\n tagName,\n slots,\n createComponent,\n});\n\nexport default PersonDisplay;\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Register, Slots } from 'model';\nimport { Markup } from 'utilities';\nimport { CommonPersonData } from './common';\nimport {\n CreateComponentFunction,\n ComponentRegistration,\n SlotConfiguration,\n} from '../../_types';\n\nconst tagName = 'umd-element-person-hero';\n\nconst { Node } = Markup.create;\n\nconst slots: SlotConfiguration = {\n name: {},\n pronouns: {},\n 'job-title': {},\n association: {},\n email: { allowedElements: ['a'] },\n phone: { allowedElements: ['a'] },\n address: {},\n linkedin: { allowedElements: ['a'] },\n 'additional-contact': {},\n image: { allowedElements: ['img'] },\n 'sub-text': {},\n actions: Slots.element.allowed.actions,\n breadcrumb: { allowedElements: ['umd-element-breadcrumb'] },\n};\n\nconst createComponent: CreateComponentFunction = (element) => {\n const isThemeDark = Attributes.isTheme.dark({\n element,\n });\n const breadcrumbSlot = Node.slot({ type: Slots.name.BREADCRUMB });\n\n if (breadcrumbSlot) {\n const breadcrumb = element.querySelector(\n `[slot=\"${Slots.name.BREADCRUMB}\"]`,\n );\n if (breadcrumb) {\n const copy = breadcrumb.cloneNode(true);\n\n element.appendChild(copy);\n breadcrumb.setAttribute('slot', Slots.name.BREADCRUMB_COPY);\n }\n }\n\n return Composite.person.hero({\n ...CommonPersonData({ element, isThemeDark }),\n breadcrumbDesktop: Node.slot({ type: Slots.name.BREADCRUMB }),\n breadcrumbMobile: Node.slot({ type: Slots.name.BREADCRUMB_COPY }),\n });\n};\n\n/**\n * Person Hero\n *\n * A hero-style component for prominently featuring an individual, typically used\n * for profile pages, featured faculty, or leadership spotlights. Includes support\n * for breadcrumb navigation and full-width layouts.\n *\n * ## Custom Element\n * `<umd-element-person-hero>`\n *\n * ## Slots\n * - `name` - Person's full name (optional, accepts: text elements)\n * - `pronouns` - Preferred pronouns (optional, accepts: text elements)\n * - `job-title` - Professional title or position (optional, accepts: text elements)\n * - `association` - Department, school, or affiliation (optional, accepts: text elements)\n * - `email` - Email address (optional, accepts: a[href^=\"mailto:\"])\n * - `phone` - Phone number (optional, accepts: a[href^=\"tel:\"])\n * - `address` - Physical address (optional, accepts: text elements)\n * - `linkedin` - LinkedIn profile link (optional, accepts: a)\n * - `additional-contact` - Other contact methods (optional, accepts: any elements)\n * - `image` - Portrait photo (optional, accepts: img)\n * - `sub-text` - Additional information (optional, accepts: text elements)\n * - `actions` - Call-to-action links (optional, accepts: a, button)\n * - `breadcrumb` - Navigation breadcrumb (optional, accepts: nav, ol, ul)\n *\n * ## Attributes\n * - `data-theme` - Color theme of the component:\n * - `dark` - Dark background with light text\n *\n * @example\n * ```html\n * <!-- Basic person hero -->\n * <umd-element-person-hero>\n * <img slot=\"image\" src=\"president.jpg\" alt=\"President Williams\" />\n * <h1 slot=\"name\">Dr. Darryll J. Pines</h1>\n * <p slot=\"job-title\">President</p>\n * <p slot=\"association\">University of Maryland</p>\n * <a slot=\"email\" href=\"mailto:president@umd.edu\">president@umd.edu</a>\n * <a slot=\"actions\" href=\"/president/bio\">Read Full Biography</a>\n * </umd-element-person-hero>\n * ```\n *\n * @example\n * ```html\n * <!-- Hero with breadcrumb navigation -->\n * <umd-element-person-hero>\n * <nav slot=\"breadcrumb\">\n * <ol>\n * <li><a href=\"/\">Home</a></li>\n * <li><a href=\"/leadership\">Leadership</a></li>\n * <li>Provost</li>\n * </ol>\n * </nav>\n * <img slot=\"image\" src=\"provost.jpg\" alt=\"Provost Johnson\" />\n * <h1 slot=\"name\">Dr. Jennifer King Rice</h1>\n * <span slot=\"pronouns\">(she/her)</span>\n * <p slot=\"job-title\">Senior Vice President and Provost</p>\n * <p slot=\"association\">Office of the Provost</p>\n * <a slot=\"email\" href=\"mailto:provost@umd.edu\">provost@umd.edu</a>\n * <address slot=\"address\">\n * 1119 Main Administration Building<br>\n * College Park, MD 20742\n * </address>\n * <div slot=\"actions\">\n * <a href=\"/provost/initiatives\">Current Initiatives</a>\n * <a href=\"/provost/contact\">Contact Office</a>\n * </div>\n * </umd-element-person-hero>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme hero with full details -->\n * <umd-element-person-hero data-theme=\"dark\">\n * <img slot=\"image\" src=\"dean.jpg\" alt=\"Dean Chen\" />\n * <h1 slot=\"name\">Dr. Ming Lin</h1>\n * <p slot=\"job-title\">Dean and Professor</p>\n * <p slot=\"association\">College of Computer, Mathematical, and Natural Sciences</p>\n * <a slot=\"email\" href=\"mailto:mlin@umd.edu\">mlin@umd.edu</a>\n * <a slot=\"phone\" href=\"tel:301-405-2313\">301-405-2313</a>\n * <a slot=\"linkedin\" href=\"https://linkedin.com/in/minglin\">Connect on LinkedIn</a>\n * <p slot=\"sub-text\">Leading innovation in STEM education and research</p>\n * <div slot=\"additional-contact\">\n * <p>Assistant: Jane Smith</p>\n * <a href=\"mailto:jsmith@umd.edu\">jsmith@umd.edu</a>\n * </div>\n * </umd-element-person-hero>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst PersonHero: ComponentRegistration = Register.webComponent({\n tagName,\n slots,\n createComponent,\n});\n\nexport default PersonHero;\n"],"names":["CommonPersonData","element","isThemeDark","Slots","slots","Markup.validate.ImageSlot","tagName","SlotWithDefaultStyling","Markup.create","createComponent","Attributes.isTheme","Attributes.isLayout","Composite","PersonBio","Register.webComponent","bio_default","isDisplayList","Attributes.isDisplay","isDisplayTabular","PersonDisplay","display_default","Node","breadcrumb","copy","PersonHero","hero_default"],"mappings":";;;;AAIO,MAAMA,IAAmB,CAAC;AAAA,EAC/B,SAAAC;AAAA,EACA,aAAAC;AACF,OAGO;AAAA,EACL,SAASC,EAAM,QAAQ,QAAQ,EAAE,SAAAF,GAAS;AAAA,EAC1C,aAAaE,EAAM,OAAO,YAAY,EAAE,SAAAF,GAAS;AAAA,EACjD,MAAME,EAAM,OAAO,KAAK,EAAE,SAAAF,GAAS;AAAA,EACnC,OAAOG,EAAM,QAAQ,MAAM,EAAE,SAAAH,GAAS;AAAA,EACtC,KAAKE,EAAM,OAAO,SAAS,EAAE,SAAAF,GAAS;AAAA,EACtC,UAAUE,EAAM,OAAO,SAAS,EAAE,SAAAF,GAAS;AAAA,EAC3C,OAAOE,EAAM,QAAQ,MAAM,EAAE,SAAAF,GAAS;AAAA,EACtC,WAAWE,EAAM,OAAO,SAAS,EAAE,SAAAF,GAAS;AAAA,EAC5C,OAAOI,EAA0B;AAAA,IAC/B,SAAAJ;AAAA,IACA,WAAWE,EAAM,KAAK,OAAO;AAAA,EAAA,CAC9B;AAAA,EACD,mBAAmBA,EAAM,QAAQ,WAAW,EAAE,SAAAF,GAAS;AAAA,EACvD,SAASE,EAAM,KAAK,QAAQ,EAAE,SAAAF,GAAS;AAAA,EACvC,SAASE,EAAM,QAAQ,QAAQ,EAAE,SAAAF,GAAS;AAAA,EAC1C,aAAAC;AACF,ICjBMI,IAAU,0BAEV,EAAE,wBAAAC,EAAA,IAA2BC,GAE7BJ,IAA2B;AAAA,EAC/B,MAAM,CAAA;AAAA,EACN,UAAU,CAAA;AAAA,EACV,aAAa,CAAA;AAAA,EACb,aAAa,CAAA;AAAA,EACb,OAAO,EAAE,iBAAiB,CAAC,GAAG,EAAA;AAAA,EAC9B,OAAO,EAAE,iBAAiB,CAAC,GAAG,EAAA;AAAA,EAC9B,SAAS,CAAA;AAAA,EACT,UAAU,EAAE,iBAAiB,CAAC,GAAG,EAAA;AAAA,EACjC,sBAAsB,CAAA;AAAA,EACtB,OAAO,EAAE,iBAAiB,CAAC,KAAK,EAAA;AAAA,EAChC,aAAa,CAAA;AAAA,EACb,YAAY,CAAA;AAAA,EACZ,SAASD,EAAM,QAAQ,QAAQ;AACjC,GAEMM,IAA2C,CAACR,MAAY;AAC5D,QAAMC,IAAcQ,EAAmB,KAAK,EAAE,SAAAT,GAAS;AAGvD,SAFoBU,EAAoB,UAAU,EAAE,SAAAV,GAAS,IAGpDW,EAAU,OAAO,IAAI,KAAK;AAAA,IAC/B,GAAGZ,EAAiB,EAAE,SAAAC,GAAS,aAAAC,GAAa;AAAA,IAC5C,aAAaK,EAAuB;AAAA,MAClC,SAAAN;AAAA,MACA,SAASE,EAAM,KAAK;AAAA,IAAA,CACrB;AAAA,EAAA,CACF,IAGIS,EAAU,OAAO,IAAI,MAAM;AAAA,IAChC,GAAGZ,EAAiB,EAAE,SAAAC,GAAS,aAAAC,GAAa;AAAA,IAC5C,aAAaK,EAAuB;AAAA,MAClC,SAAAN;AAAA,MACA,SAASE,EAAM,KAAK;AAAA,IAAA,CACrB;AAAA,EAAA,CACF;AACH,GA4GMU,IAAmCC,EAAsB;AAAA,EAAA,SAC7DR;AAAAA,EAAA,OACAF;AAAAA,EAAA,iBACAK;AACF,CAAC;AAED,IAAOM,IAAQF;AC5Jf,MAAMP,IAAU,sBAEVF,IAA2B;AAAA,EAC/B,MAAM,CAAA;AAAA,EACN,UAAU,CAAA;AAAA,EACV,aAAa,CAAA;AAAA,EACb,aAAa,CAAA;AAAA,EACb,OAAO,EAAE,iBAAiB,CAAC,GAAG,EAAA;AAAA,EAC9B,OAAO,EAAE,iBAAiB,CAAC,GAAG,EAAA;AAAA,EAC9B,SAAS,CAAA;AAAA,EACT,UAAU,EAAE,iBAAiB,CAAC,GAAG,EAAA;AAAA,EACjC,sBAAsB,CAAA;AAAA,EACtB,OAAO,EAAE,iBAAiB,CAAC,KAAK,EAAA;AAAA,EAChC,YAAY,CAAA;AAAA,EACZ,SAASD,EAAM,QAAQ,QAAQ;AACjC,GAEMM,IAA2C,CAACR,MAAY;AAC5D,QAAMe,IAAgBC,EAAqB,KAAK,EAAE,SAAAhB,GAAS,GACrDiB,IAAmBD,EAAqB,QAAQ,EAAE,SAAAhB,GAAS,GAC3DC,IAAcQ,EAAmB,KAAK,EAAE,SAAAT,GAAS;AAEvD,SAAIe,IACKJ,EAAU,OAAO,KAAKZ,EAAiB,EAAE,SAAAC,GAAS,aAAAC,EAAA,CAAa,CAAC,IAGrEgB,IACKN,EAAU,OAAO,QAAQZ,EAAiB,EAAE,SAAAC,GAAS,aAAAC,EAAA,CAAa,CAAC,IAGrEU,EAAU,OAAO,MAAMZ,EAAiB,EAAE,SAAAC,GAAS,aAAAC,EAAA,CAAa,CAAC;AAC1E,GA+EMiB,IAAuCL,EAAsB;AAAA,EAAA,SACjER;AAAAA,EAAA,OACAF;AAAAA,EAAA,iBACAK;AACF,CAAC;AAED,IAAOW,IAAQD;ACnHf,MAAMb,IAAU,2BAEV,EAAE,MAAAe,EAAA,IAASb,GAEXJ,IAA2B;AAAA,EAC/B,MAAM,CAAA;AAAA,EACN,UAAU,CAAA;AAAA,EACV,aAAa,CAAA;AAAA,EACb,aAAa,CAAA;AAAA,EACb,OAAO,EAAE,iBAAiB,CAAC,GAAG,EAAA;AAAA,EAC9B,OAAO,EAAE,iBAAiB,CAAC,GAAG,EAAA;AAAA,EAC9B,SAAS,CAAA;AAAA,EACT,UAAU,EAAE,iBAAiB,CAAC,GAAG,EAAA;AAAA,EACjC,sBAAsB,CAAA;AAAA,EACtB,OAAO,EAAE,iBAAiB,CAAC,KAAK,EAAA;AAAA,EAChC,YAAY,CAAA;AAAA,EACZ,SAASD,EAAM,QAAQ,QAAQ;AAAA,EAC/B,YAAY,EAAE,iBAAiB,CAAC,wBAAwB,EAAA;AAC1D,GAEMM,IAA2C,CAACR,MAAY;AAC5D,QAAMC,IAAcQ,EAAmB,KAAK;AAAA,IAC1C,SAAAT;AAAA,EAAA,CACD;AAGD,MAFuBoB,EAAK,KAAK,EAAE,MAAMlB,EAAM,KAAK,YAAY,GAE5C;AAClB,UAAMmB,IAAarB,EAAQ;AAAA,MACzB,UAAUE,EAAM,KAAK,UAAU;AAAA,IAAA;AAEjC,QAAImB,GAAY;AACd,YAAMC,IAAOD,EAAW,UAAU,EAAI;AAEtC,MAAArB,EAAQ,YAAYsB,CAAI,GACxBD,EAAW,aAAa,QAAQnB,EAAM,KAAK,eAAe;AAAA,IAC5D;AAAA,EACF;AAEA,SAAOS,EAAU,OAAO,KAAK;AAAA,IAC3B,GAAGZ,EAAiB,EAAE,SAAAC,GAAS,aAAAC,GAAa;AAAA,IAC5C,mBAAmBmB,EAAK,KAAK,EAAE,MAAMlB,EAAM,KAAK,YAAY;AAAA,IAC5D,kBAAkBkB,EAAK,KAAK,EAAE,MAAMlB,EAAM,KAAK,iBAAiB;AAAA,EAAA,CACjE;AACH,GA8FMqB,IAAoCV,EAAsB;AAAA,EAC9D,SAAAR;AAAA,EACA,OAAAF;AAAA,EACA,iBAAAK;AACF,CAAC;AAED,IAAOgB,IAAQD;"}
1
+ {"version":3,"file":"hero-Bn4rdy_N.js","sources":["../source/api/person/common.ts","../source/api/person/bio.ts","../source/api/person/display.ts","../source/api/person/hero.ts"],"sourcesContent":["import { Slots } from 'model';\nimport slots from 'model/slots';\nimport { Markup } from 'utilities';\n\nexport const CommonPersonData = ({\n element,\n isThemeDark,\n}: {\n element: HTMLElement;\n isThemeDark?: boolean;\n}) => ({\n address: Slots.contact.address({ element }),\n association: Slots.person.association({ element }),\n name: Slots.person.name({ element }),\n email: slots.contact.email({ element }),\n job: Slots.person.jobTitle({ element }),\n pronouns: Slots.person.pronouns({ element }),\n phone: Slots.contact.phone({ element }),\n linkendIn: Slots.social.linkedin({ element }),\n image: Markup.validate.ImageSlot({\n element,\n ImageSlot: Slots.name.assets.image,\n }),\n additionalContact: Slots.contact.additional({ element }),\n subText: Slots.text.subText({ element }),\n actions: Slots.actions.default({ element }),\n isThemeDark,\n});\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Register, Slots } from 'model';\nimport { Markup } from 'utilities';\nimport { CommonPersonData } from './common';\nimport {\n CreateComponentFunction,\n ComponentRegistration,\n SlotConfiguration,\n} from '../../_types';\n\nconst tagName = 'umd-element-person-bio';\n\nconst { SlotWithDefaultStyling } = Markup.create;\n\nconst slots: SlotConfiguration = {\n name: {},\n pronouns: {},\n 'job-title': {},\n association: {},\n email: { allowedElements: ['a'] },\n phone: { allowedElements: ['a'] },\n address: {},\n linkedin: { allowedElements: ['a'] },\n 'additional-contact': {},\n image: { allowedElements: ['img'] },\n description: {},\n 'sub-text': {},\n actions: Slots.element.allowed.actions,\n};\n\nconst createComponent: CreateComponentFunction = (element) => {\n const isThemeDark = Attributes.isTheme.dark({ element });\n const isFullImage = Attributes.isLayout.fullImage({ element });\n\n if (isFullImage) {\n return Composite.person.bio.full({\n ...CommonPersonData({ element, isThemeDark }),\n description: SlotWithDefaultStyling({\n element,\n slotRef: Slots.name.DESCRIPTION,\n }),\n });\n }\n\n return Composite.person.bio.small({\n ...CommonPersonData({ element, isThemeDark }),\n description: SlotWithDefaultStyling({\n element,\n slotRef: Slots.name.DESCRIPTION,\n }),\n });\n};\n\n/**\n * Person Biography\n *\n * A comprehensive biography component for displaying detailed information about\n * faculty, staff, or notable individuals. Supports both small and full-size image\n * layouts with rich biographical content.\n *\n * ## Custom Element\n * `<umd-element-person-bio>`\n *\n * ## Slots\n * - `name` - Person's full name (optional, accepts: text elements)\n * - `pronouns` - Preferred pronouns (optional, accepts: text elements)\n * - `job-title` - Professional title or position (optional, accepts: text elements)\n * - `association` - Department, school, or affiliation (optional, accepts: text elements)\n * - `email` - Email address (optional, accepts: a[href^=\"mailto:\"])\n * - `phone` - Phone number (optional, accepts: a[href^=\"tel:\"])\n * - `address` - Physical address (optional, accepts: text elements)\n * - `linkedin` - LinkedIn profile link (optional, accepts: a)\n * - `additional-contact` - Other contact methods (optional, accepts: any elements)\n * - `image` - Portrait photo (optional, accepts: img)\n * - `description` - Full biography text (optional, accepts: any elements)\n * - `sub-text` - Additional information (optional, accepts: text elements)\n * - `actions` - Call-to-action links (optional, accepts: a, button)\n *\n * ## Attributes\n * - `data-theme` - Color theme of the component:\n * - `dark` - Dark background with light text\n * - `data-image` - Image display size:\n * - `full` - Large image layout\n * - Default - Small image layout\n *\n * @example\n * ```html\n * <!-- Basic faculty bio -->\n * <umd-element-person-bio>\n * <img slot=\"image\" src=\"professor.jpg\" alt=\"Dr. Smith\" />\n * <h2 slot=\"name\">Dr. Jane Smith</h2>\n * <span slot=\"pronouns\">(she/her)</span>\n * <p slot=\"job-title\">Professor of Computer Science</p>\n * <p slot=\"association\">Department of Computer Science</p>\n * <a slot=\"email\" href=\"mailto:jsmith@umd.edu\">jsmith@umd.edu</a>\n * <div slot=\"description\">\n * <p>Dr. Smith is a leading researcher in artificial intelligence with over\n * 20 years of experience in machine learning and neural networks.</p>\n * <p>Her work has been published in numerous journals and she has received\n * multiple awards for her contributions to the field.</p>\n * </div>\n * </umd-element-person-bio>\n * ```\n *\n * @example\n * ```html\n * <!-- Full image layout with complete details -->\n * <umd-element-person-bio data-image=\"full\">\n * <img slot=\"image\" src=\"dean-portrait.jpg\" alt=\"Dean Johnson\" />\n * <h1 slot=\"name\">Dr. Michael Johnson</h1>\n * <span slot=\"pronouns\">(he/him)</span>\n * <p slot=\"job-title\">Dean, College of Engineering</p>\n * <p slot=\"association\">A. James Clark School of Engineering</p>\n * <a slot=\"email\" href=\"mailto:dean@eng.umd.edu\">dean@eng.umd.edu</a>\n * <a slot=\"phone\" href=\"tel:301-405-1000\">301-405-1000</a>\n * <address slot=\"address\">\n * 2101 Glenn L. Martin Hall<br>\n * College Park, MD 20742\n * </address>\n * <a slot=\"linkedin\" href=\"https://linkedin.com/in/deanjohnson\">LinkedIn</a>\n * <div slot=\"description\">\n * <h3>About Dean Johnson</h3>\n * <p>Dean Johnson leads the A. James Clark School of Engineering...</p>\n * <h3>Research Interests</h3>\n * <ul>\n * <li>Sustainable Energy Systems</li>\n * <li>Smart Infrastructure</li>\n * <li>Engineering Education Innovation</li>\n * </ul>\n * </div>\n * <div slot=\"actions\">\n * <a href=\"/schedule-meeting\">Schedule a Meeting</a>\n * <a href=\"/publications\">View Publications</a>\n * </div>\n * </umd-element-person-bio>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme bio -->\n * <umd-element-person-bio data-theme=\"dark\">\n * <img slot=\"image\" src=\"researcher.jpg\" alt=\"Dr. Chen\" />\n * <h2 slot=\"name\">Dr. Lisa Chen</h2>\n * <p slot=\"job-title\">Research Scientist</p>\n * <p slot=\"association\">Institute for Advanced Computer Studies</p>\n * <a slot=\"email\" href=\"mailto:lchen@umd.edu\">lchen@umd.edu</a>\n * <div slot=\"additional-contact\">\n * <p>Lab: Room 3120, Iribe Center</p>\n * <p>Office Hours: Tue/Thu 2-4pm</p>\n * </div>\n * <div slot=\"description\">\n * <p>Dr. Chen specializes in quantum computing and cryptography...</p>\n * </div>\n * </umd-element-person-bio>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst PersonBio: ComponentRegistration = Register.webComponent({\n tagName,\n slots,\n createComponent,\n});\n\nexport default PersonBio;\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Register, Slots } from 'model';\nimport { CommonPersonData } from './common';\nimport {\n CreateComponentFunction,\n ComponentRegistration,\n SlotConfiguration,\n} from '../../_types';\n\nconst tagName = 'umd-element-person';\n\nconst slots: SlotConfiguration = {\n name: {},\n pronouns: {},\n 'job-title': {},\n association: {},\n email: { allowedElements: ['a'] },\n phone: { allowedElements: ['a'] },\n address: {},\n linkedin: { allowedElements: ['a'] },\n 'additional-contact': {},\n image: { allowedElements: ['img'] },\n 'sub-text': {},\n actions: Slots.element.allowed.actions,\n};\n\nconst createComponent: CreateComponentFunction = (element) => {\n const isDisplayList = Attributes.isDisplay.list({ element });\n const isDisplayTabular = Attributes.isDisplay.tabular({ element });\n const isThemeDark = Attributes.isTheme.dark({ element });\n\n if (isDisplayList) {\n return Composite.person.list(CommonPersonData({ element, isThemeDark }));\n }\n\n if (isDisplayTabular) {\n return Composite.person.tabular(CommonPersonData({ element, isThemeDark }));\n }\n\n return Composite.person.block(CommonPersonData({ element, isThemeDark }));\n};\n\n/**\n * Person Display\n *\n * A flexible component for displaying person information in various layouts.\n * Ideal for staff directories, team pages, and contact lists. Supports block,\n * list, and tabular display formats.\n *\n * ## Custom Element\n * `<umd-element-person>`\n *\n * ## Slots\n * - `name` - Person's full name (optional, accepts: text elements)\n * - `pronouns` - Preferred pronouns (optional, accepts: text elements)\n * - `job-title` - Professional title or position (optional, accepts: text elements)\n * - `association` - Department, school, or affiliation (optional, accepts: text elements)\n * - `email` - Email address (optional, accepts: a[href^=\"mailto:\"])\n * - `phone` - Phone number (optional, accepts: a[href^=\"tel:\"])\n * - `address` - Physical address (optional, accepts: text elements)\n * - `linkedin` - LinkedIn profile link (optional, accepts: a)\n * - `additional-contact` - Other contact methods (optional, accepts: any elements)\n * - `image` - Portrait photo (optional, accepts: img)\n * - `sub-text` - Additional information (optional, accepts: text elements)\n * - `actions` - Call-to-action links (optional, accepts: a, button)\n *\n * ## Attributes\n * - `data-theme` - Color theme of the component:\n * - `dark` - Dark background with light text\n * - `data-display` - Layout style:\n * - `list` - Horizontal list layout\n * - `tabular` - Table-like layout\n * - Default - Block/card layout\n *\n * @example\n * ```html\n * <!-- Basic block display -->\n * <umd-element-person>\n * <img slot=\"image\" src=\"staff-photo.jpg\" alt=\"John Doe\" />\n * <p slot=\"name\">John Doe</p>\n * <p slot=\"job-title\">Program Coordinator</p>\n * <a slot=\"email\" href=\"mailto:jdoe@umd.edu\">jdoe@umd.edu</a>\n * <a slot=\"phone\" href=\"tel:301-405-1234\">301-405-1234</a>\n * </umd-element-person>\n * ```\n *\n * @example\n * ```html\n * <!-- List display for directory -->\n * <umd-element-person data-display=\"list\">\n * <img slot=\"image\" src=\"faculty.jpg\" alt=\"Dr. Martinez\" />\n * <h3 slot=\"name\">Dr. Maria Martinez</h3>\n * <span slot=\"pronouns\">(she/her)</span>\n * <p slot=\"job-title\">Associate Professor</p>\n * <p slot=\"association\">Department of Biology</p>\n * <a slot=\"email\" href=\"mailto:mmartinez@umd.edu\">mmartinez@umd.edu</a>\n * <p slot=\"sub-text\">Office: Biology Building, Room 2134</p>\n * <a slot=\"actions\" href=\"/faculty/martinez\">View Profile</a>\n * </umd-element-person>\n * ```\n *\n * @example\n * ```html\n * <!-- Tabular display for contact list -->\n * <umd-element-person data-display=\"tabular\" data-theme=\"dark\">\n * <p slot=\"name\">Sarah Thompson</p>\n * <p slot=\"job-title\">Admissions Counselor</p>\n * <p slot=\"association\">Office of Undergraduate Admissions</p>\n * <a slot=\"email\" href=\"mailto:sthompson@umd.edu\">sthompson@umd.edu</a>\n * <a slot=\"phone\" href=\"tel:301-314-8385\">301-314-8385</a>\n * <div slot=\"additional-contact\">\n * <p>Regions: MD (Montgomery County), DC</p>\n * </div>\n * </umd-element-person>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst PersonDisplay: ComponentRegistration = Register.webComponent({\n tagName,\n slots,\n createComponent,\n});\n\nexport default PersonDisplay;\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Register, Slots } from 'model';\nimport { Markup } from 'utilities';\nimport { CommonPersonData } from './common';\nimport {\n CreateComponentFunction,\n ComponentRegistration,\n SlotConfiguration,\n} from '../../_types';\n\nconst tagName = 'umd-element-person-hero';\n\nconst { Node } = Markup.create;\n\nconst slots: SlotConfiguration = {\n name: {},\n pronouns: {},\n 'job-title': {},\n association: {},\n email: { allowedElements: ['a'] },\n phone: { allowedElements: ['a'] },\n address: {},\n linkedin: { allowedElements: ['a'] },\n 'additional-contact': {},\n image: { allowedElements: ['img'] },\n 'sub-text': {},\n actions: Slots.element.allowed.actions,\n breadcrumb: { allowedElements: ['umd-element-breadcrumb'] },\n};\n\nconst createComponent: CreateComponentFunction = (element) => {\n const isThemeDark = Attributes.isTheme.dark({\n element,\n });\n const breadcrumbSlot = Node.slot({ type: Slots.name.BREADCRUMB });\n\n if (breadcrumbSlot) {\n const breadcrumb = element.querySelector(\n `[slot=\"${Slots.name.BREADCRUMB}\"]`,\n );\n if (breadcrumb) {\n const copy = breadcrumb.cloneNode(true);\n\n element.appendChild(copy);\n breadcrumb.setAttribute('slot', Slots.name.BREADCRUMB_COPY);\n }\n }\n\n return Composite.person.hero({\n ...CommonPersonData({ element, isThemeDark }),\n breadcrumbDesktop: Node.slot({ type: Slots.name.BREADCRUMB }),\n breadcrumbMobile: Node.slot({ type: Slots.name.BREADCRUMB_COPY }),\n });\n};\n\n/**\n * Person Hero\n *\n * A hero-style component for prominently featuring an individual, typically used\n * for profile pages, featured faculty, or leadership spotlights. Includes support\n * for breadcrumb navigation and full-width layouts.\n *\n * ## Custom Element\n * `<umd-element-person-hero>`\n *\n * ## Slots\n * - `name` - Person's full name (optional, accepts: text elements)\n * - `pronouns` - Preferred pronouns (optional, accepts: text elements)\n * - `job-title` - Professional title or position (optional, accepts: text elements)\n * - `association` - Department, school, or affiliation (optional, accepts: text elements)\n * - `email` - Email address (optional, accepts: a[href^=\"mailto:\"])\n * - `phone` - Phone number (optional, accepts: a[href^=\"tel:\"])\n * - `address` - Physical address (optional, accepts: text elements)\n * - `linkedin` - LinkedIn profile link (optional, accepts: a)\n * - `additional-contact` - Other contact methods (optional, accepts: any elements)\n * - `image` - Portrait photo (optional, accepts: img)\n * - `sub-text` - Additional information (optional, accepts: text elements)\n * - `actions` - Call-to-action links (optional, accepts: a, button)\n * - `breadcrumb` - Navigation breadcrumb (optional, accepts: nav, ol, ul)\n *\n * ## Attributes\n * - `data-theme` - Color theme of the component:\n * - `dark` - Dark background with light text\n *\n * @example\n * ```html\n * <!-- Basic person hero -->\n * <umd-element-person-hero>\n * <img slot=\"image\" src=\"president.jpg\" alt=\"President Williams\" />\n * <h1 slot=\"name\">Dr. Darryll J. Pines</h1>\n * <p slot=\"job-title\">President</p>\n * <p slot=\"association\">University of Maryland</p>\n * <a slot=\"email\" href=\"mailto:president@umd.edu\">president@umd.edu</a>\n * <a slot=\"actions\" href=\"/president/bio\">Read Full Biography</a>\n * </umd-element-person-hero>\n * ```\n *\n * @example\n * ```html\n * <!-- Hero with breadcrumb navigation -->\n * <umd-element-person-hero>\n * <nav slot=\"breadcrumb\">\n * <ol>\n * <li><a href=\"/\">Home</a></li>\n * <li><a href=\"/leadership\">Leadership</a></li>\n * <li>Provost</li>\n * </ol>\n * </nav>\n * <img slot=\"image\" src=\"provost.jpg\" alt=\"Provost Johnson\" />\n * <h1 slot=\"name\">Dr. Jennifer King Rice</h1>\n * <span slot=\"pronouns\">(she/her)</span>\n * <p slot=\"job-title\">Senior Vice President and Provost</p>\n * <p slot=\"association\">Office of the Provost</p>\n * <a slot=\"email\" href=\"mailto:provost@umd.edu\">provost@umd.edu</a>\n * <address slot=\"address\">\n * 1119 Main Administration Building<br>\n * College Park, MD 20742\n * </address>\n * <div slot=\"actions\">\n * <a href=\"/provost/initiatives\">Current Initiatives</a>\n * <a href=\"/provost/contact\">Contact Office</a>\n * </div>\n * </umd-element-person-hero>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme hero with full details -->\n * <umd-element-person-hero data-theme=\"dark\">\n * <img slot=\"image\" src=\"dean.jpg\" alt=\"Dean Chen\" />\n * <h1 slot=\"name\">Dr. Ming Lin</h1>\n * <p slot=\"job-title\">Dean and Professor</p>\n * <p slot=\"association\">College of Computer, Mathematical, and Natural Sciences</p>\n * <a slot=\"email\" href=\"mailto:mlin@umd.edu\">mlin@umd.edu</a>\n * <a slot=\"phone\" href=\"tel:301-405-2313\">301-405-2313</a>\n * <a slot=\"linkedin\" href=\"https://linkedin.com/in/minglin\">Connect on LinkedIn</a>\n * <p slot=\"sub-text\">Leading innovation in STEM education and research</p>\n * <div slot=\"additional-contact\">\n * <p>Assistant: Jane Smith</p>\n * <a href=\"mailto:jsmith@umd.edu\">jsmith@umd.edu</a>\n * </div>\n * </umd-element-person-hero>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nconst PersonHero: ComponentRegistration = Register.webComponent({\n tagName,\n slots,\n createComponent,\n});\n\nexport default PersonHero;\n"],"names":["CommonPersonData","element","isThemeDark","Slots","slots","Markup.validate.ImageSlot","tagName","SlotWithDefaultStyling","Markup.create","createComponent","Attributes.isTheme","Attributes.isLayout","Composite","PersonBio","Register.webComponent","bio_default","isDisplayList","Attributes.isDisplay","isDisplayTabular","PersonDisplay","display_default","Node","breadcrumb","copy","PersonHero","hero_default"],"mappings":"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"}
@@ -1,96 +1,99 @@
1
- import { Composite as e } from "@universityofmaryland/web-elements-library";
2
- import { f as w, a as o, b as n, k as D, s as t } from "./shared/model-4-WQm2Le.js";
3
- import { w as g, h as b, t as i, b as x } from "./shared/utilities-B_sPVa-m.js";
4
- import { e as S } from "./_event-BzvNLqqf.js";
1
+ import { Composite as o } from "@universityofmaryland/web-elements-library";
2
+ import { f as y, a as d, b as c, k as D, s as t } from "./shared/model-CHS3WnCo.js";
3
+ import { w as p, h as S, t as i, b as k } from "./shared/utilities-CZHe-tKs.js";
4
+ import { e as T } from "./_event-zkKU3M5w.js";
5
5
  import "@universityofmaryland/web-styles-library";
6
- const k = "umd-element-pathway", T = (a) => {
7
- const r = a.getAttribute("image-scaled") === "false" ? !1 : void 0, d = w.imagePositionLeft({
6
+ const I = "umd-element-pathway", H = (a) => {
7
+ const f = a.getAttribute("image-scaled"), n = y.imageScaled({ element: a });
8
+ let e = !0;
9
+ n !== null && (e = n), f && (e = f === "true");
10
+ const r = y.imagePositionLeft({
8
11
  element: a
9
- }), f = o.dark({ element: a }), y = o.light({ element: a }), h = o.maryland({ element: a }), l = n.hero({ element: a }), p = n.overlay({ element: a }), v = n.sticky({ element: a }), c = D.animation({ element: a }), s = S(a, {
12
+ }), h = d.dark({ element: a }), v = d.light({ element: a }), g = d.maryland({ element: a }), w = c.hero({ element: a }), b = c.overlay({ element: a }), x = c.sticky({ element: a }), u = D.animation({ element: a }), s = T(a, {
10
13
  isLargeSize: !0,
11
14
  isDateSignDark: !1
12
15
  });
13
- return l ? e.pathway.hero({
16
+ return w ? o.pathway.hero({
14
17
  actions: t.actions.default({ element: a }),
15
18
  eyebrow: t.eyebrow.default({ element: a }),
16
19
  headline: t.headline.default({ element: a }),
17
20
  image: t.assets.image({ element: a }),
18
- includesAnimation: c,
19
- isImagePositionLeft: d,
21
+ includesAnimation: u,
22
+ isImagePositionLeft: r,
20
23
  text: t.text.default({ element: a }),
21
24
  video: t.assets.video({ element: a })
22
- }) : p ? e.pathway.overlay({
25
+ }) : b ? o.pathway.overlay({
23
26
  actions: t.actions.default({ element: a }),
24
27
  dateSign: i(s?.dateSign),
25
28
  eventDetails: i(s?.eventMeta),
26
29
  eyebrow: t.eyebrow.default({ element: a }),
27
30
  headline: t.headline.default({ element: a }),
28
31
  image: t.assets.image({ element: a }),
29
- includesAnimation: c,
30
- isImagePositionLeft: d,
31
- isImageScaled: r,
32
- isThemeDark: f,
33
- isThemeLight: y,
34
- isThemeMaryland: h,
32
+ includesAnimation: u,
33
+ isImagePositionLeft: r,
34
+ isImageScaled: e,
35
+ isThemeDark: h,
36
+ isThemeLight: v,
37
+ isThemeMaryland: g,
35
38
  stats: t.text.stats({ element: a }),
36
39
  text: t.text.default({ element: a }),
37
40
  video: t.assets.video({ element: a })
38
- }) : v ? e.pathway.sticky({
41
+ }) : x ? o.pathway.sticky({
39
42
  actions: t.actions.default({ element: a }),
40
43
  dateSign: i(s?.dateSign),
41
44
  eventDetails: i(s?.eventMeta),
42
45
  eyebrow: t.eyebrow.default({ element: a }),
43
46
  headline: t.headline.default({ element: a }),
44
47
  image: t.assets.image({ element: a }),
45
- isImagePositionLeft: d,
46
- isImageScaled: r,
47
- isThemeDark: o.dark({ element: a }),
48
+ isImagePositionLeft: r,
49
+ isImageScaled: e,
50
+ isThemeDark: d.dark({ element: a }),
48
51
  stats: t.text.stats({ element: a }),
49
52
  text: t.text.default({ element: a }),
50
53
  video: t.assets.video({ element: a })
51
- }) : e.pathway.standard({
54
+ }) : o.pathway.standard({
52
55
  actions: t.actions.default({ element: a }),
53
56
  dateSign: i(s?.dateSign),
54
57
  eventDetails: i(s?.eventMeta),
55
58
  eyebrow: t.eyebrow.default({ element: a }),
56
59
  headline: t.headline.default({ element: a }),
57
60
  image: t.assets.image({ element: a }),
58
- includesAnimation: c,
59
- isImagePositionLeft: d,
60
- isImageScaled: r,
61
- isThemeDark: f,
62
- isThemeMaryland: h,
61
+ includesAnimation: u,
62
+ isImagePositionLeft: r,
63
+ isImageScaled: e,
64
+ isThemeDark: h,
65
+ isThemeMaryland: g,
63
66
  stats: t.text.stats({ element: a }),
64
67
  text: t.text.default({ element: a }),
65
68
  video: t.assets.video({ element: a })
66
69
  });
67
70
  };
68
- var N = g({
69
- tagName: k,
70
- createComponent: T,
71
- afterConnect: b.loadAnimation
71
+ var _ = p({
72
+ tagName: I,
73
+ createComponent: H,
74
+ afterConnect: S.loadAnimation
72
75
  });
73
- const { SlotWithDefaultStyling: u } = x, I = "umd-element-pathway-highlight", H = (a) => e.pathway.highlight({
76
+ const { SlotWithDefaultStyling: l } = k, L = "umd-element-pathway-highlight", m = (a) => o.pathway.highlight({
74
77
  actions: t.actions.default({ element: a }),
75
78
  eyebrow: t.eyebrow.default({ element: a }),
76
79
  headline: t.headline.default({ element: a }),
77
80
  text: t.text.default({ element: a }),
78
- quote: u({
81
+ quote: l({
79
82
  element: a,
80
83
  slotRef: t.name.HIGHLIGHT
81
84
  }),
82
- attribution: u({
85
+ attribution: l({
83
86
  element: a,
84
87
  slotRef: t.name.HIGHLIGHT_ATTRIBUTION
85
88
  }),
86
- isThemeDark: o.dark({ element: a })
89
+ isThemeDark: d.dark({ element: a })
87
90
  });
88
- var _ = g({
89
- tagName: I,
90
- createComponent: H
91
+ var E = p({
92
+ tagName: L,
93
+ createComponent: m
91
94
  });
92
95
  export {
93
- _ as h,
94
- N as i
96
+ E as h,
97
+ _ as i
95
98
  };
96
- //# sourceMappingURL=highlight-DHa9w3Pn.js.map
99
+ //# sourceMappingURL=highlight-C3vD7SBd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"highlight-C3vD7SBd.js","sources":["../source/api/pathway/image.ts","../source/api/pathway/highlight.ts"],"sourcesContent":["import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Slots, Register, Lifecycle } from 'model';\nimport { extractEventData } from '../_event';\nimport { toElementVisual } from 'utilities/markup/validate';\nimport { CreateComponentFunction } from '../../_types';\n\n/**\n * Tag name for the pathway web component\n */\nconst tagName = 'umd-element-pathway';\n\n/**\n * Creates a pathway component with the provided configuration\n */\nconst createComponent: CreateComponentFunction = (element) => {\n const isImageScaledDeprecated = element.getAttribute('image-scaled');\n const isImageScaledNew = Attributes.isLayout.imageScaled({ element });\n\n let isImageScaled = true;\n\n if (isImageScaledNew !== null) {\n isImageScaled = isImageScaledNew;\n }\n\n if (isImageScaledDeprecated) {\n isImageScaled = isImageScaledDeprecated === 'true' ? true : false;\n }\n\n const isImagePositionLeft = Attributes.isLayout.imagePositionLeft({\n element,\n });\n const isThemeDark = Attributes.isTheme.dark({ element });\n const isThemeLight = Attributes.isTheme.light({ element });\n const isThemeMaryland = Attributes.isTheme.maryland({ element });\n const isDisplayHero = Attributes.isDisplay.hero({ element });\n const isDisplayOverlay = Attributes.isDisplay.overlay({ element });\n const isDisplaySticky = Attributes.isDisplay.sticky({ element });\n const includesAnimation = Attributes.includesFeature.animation({ element });\n\n const featureEvents = extractEventData(element, {\n isLargeSize: true,\n isDateSignDark: false,\n });\n\n if (isDisplayHero) {\n return Composite.pathway.hero({\n actions: Slots.actions.default({ element }),\n eyebrow: Slots.eyebrow.default({ element }),\n headline: Slots.headline.default({ element }),\n image: Slots.assets.image({ element }) as HTMLImageElement,\n includesAnimation,\n isImagePositionLeft,\n text: Slots.text.default({ element }),\n video: Slots.assets.video({ element }) as HTMLVideoElement,\n });\n }\n\n if (isDisplayOverlay) {\n return Composite.pathway.overlay({\n actions: Slots.actions.default({ element }),\n dateSign: toElementVisual(featureEvents?.dateSign),\n eventDetails: toElementVisual(featureEvents?.eventMeta),\n eyebrow: Slots.eyebrow.default({ element }),\n headline: Slots.headline.default({ element }),\n image: Slots.assets.image({ element }) as HTMLImageElement,\n includesAnimation,\n isImagePositionLeft,\n isImageScaled,\n isThemeDark,\n isThemeLight,\n isThemeMaryland,\n stats: Slots.text.stats({ element }),\n text: Slots.text.default({ element }),\n video: Slots.assets.video({ element }) as HTMLVideoElement,\n });\n }\n\n if (isDisplaySticky) {\n return Composite.pathway.sticky({\n actions: Slots.actions.default({ element }),\n dateSign: toElementVisual(featureEvents?.dateSign),\n eventDetails: toElementVisual(featureEvents?.eventMeta),\n eyebrow: Slots.eyebrow.default({ element }),\n headline: Slots.headline.default({ element }),\n image: Slots.assets.image({ element }) as HTMLImageElement,\n isImagePositionLeft,\n isImageScaled,\n isThemeDark: Attributes.isTheme.dark({ element }),\n stats: Slots.text.stats({ element }),\n text: Slots.text.default({ element }),\n video: Slots.assets.video({ element }) as HTMLVideoElement,\n });\n }\n\n return Composite.pathway.standard({\n actions: Slots.actions.default({ element }),\n dateSign: toElementVisual(featureEvents?.dateSign),\n eventDetails: toElementVisual(featureEvents?.eventMeta),\n eyebrow: Slots.eyebrow.default({ element }),\n headline: Slots.headline.default({ element }),\n image: Slots.assets.image({ element }) as HTMLImageElement,\n includesAnimation,\n isImagePositionLeft,\n isImageScaled,\n isThemeDark,\n isThemeMaryland,\n stats: Slots.text.stats({ element }),\n text: Slots.text.default({ element }),\n video: Slots.assets.video({ element }) as HTMLVideoElement,\n });\n};\n\n/**\n * Pathway\n *\n * A versatile component for creating visual pathways that guide users to take action.\n * Supports multiple display types including standard, hero, overlay, and sticky layouts.\n * Can include images, videos, event information, statistics, and rich text content.\n *\n * ## Custom Element\n * `<umd-element-pathway>`\n *\n * ## Slots\n * - `eyebrow` - Small text above headline (optional, accepts: text elements)\n * - `headline` - Main heading (optional, accepts: heading elements)\n * - `text` - Descriptive body text (optional, accepts: text elements)\n * - `actions` - Call-to-action links or buttons (optional, accepts: a, button)\n * - `image` - Featured image (optional, accepts: img)\n * - `video` - Video content (optional, accepts: video, iframe)\n * - `stats` - Statistical information or metrics (optional, accepts: any elements)\n * - `date-start-iso` - Event start date in ISO format (optional, accepts: time)\n * - `date-end-iso` - Event end date in ISO format (optional, accepts: time)\n * - `location` - Event location information (optional, accepts: text elements)\n *\n * ## Attributes\n * - `data-display` - Display variant (deprecated, use specific pathway components):\n * - `hero` - Large hero display\n * - `overlay` - Text overlaid on image\n * - `sticky` - Sticky positioned elements\n * - Default - Standard layout\n * - `data-theme` - Color theme options:\n * - `dark` - Dark background with light text\n * - `light` - Light background with dark text\n * - `maryland` - University brand colors\n * - `data-animation` - Enable scroll-triggered animations:\n * - `true` - Enables entrance animations\n * - `data-layout-image-position` - Image placement:\n * - `left` - Image on the left side\n * - Default - Image on the right side\n * - `data-layout-image-scaled` - Image scaling behavior:\n * - `false` - Disable image scaling\n * - Default - Enable responsive scaling\n * - `data-visual-time` - Show time in event details:\n * - `false` - Hide time display\n * - Default - Show time if available\n *\n * @example\n * ```html\n * <!-- Basic pathway -->\n * <umd-element-pathway>\n * <span slot=\"eyebrow\">Discover</span>\n * <h2 slot=\"headline\">Your Path to Success</h2>\n * <p slot=\"text\">Explore programs designed to help you achieve your goals.</p>\n * <img slot=\"image\" src=\"pathway.jpg\" alt=\"Student success\" />\n * <a slot=\"actions\" href=\"/programs\">Explore Programs</a>\n * </umd-element-pathway>\n * ```\n *\n * @example\n * ```html\n * <!-- Event pathway with details -->\n * <umd-element-pathway data-theme=\"maryland\" data-visual-time=\"true\">\n * <h2 slot=\"headline\">Open House</h2>\n * <p slot=\"text\">Visit campus and discover what makes UMD special.</p>\n * <time slot=\"date-start-iso\" datetime=\"2024-04-15T10:00:00\">April 15, 2024 10:00 AM</time>\n * <time slot=\"date-end-iso\" datetime=\"2024-04-15T16:00:00\">April 15, 2024 4:00 PM</time>\n * <span slot=\"location\">McKeldin Mall</span>\n * <img slot=\"image\" src=\"open-house.jpg\" alt=\"Campus open house\" />\n * <a slot=\"actions\" href=\"/register\">Register Now</a>\n * </umd-element-pathway>\n * ```\n *\n * @example\n * ```html\n * <!-- Hero pathway with video and stats -->\n * <umd-element-pathway data-display=\"hero\" data-theme=\"dark\" data-animation=\"true\">\n * <span slot=\"eyebrow\">Research Excellence</span>\n * <h1 slot=\"headline\">Pushing Boundaries</h1>\n * <p slot=\"text\">Our researchers are tackling the world's biggest challenges.</p>\n * <iframe slot=\"video\" src=\"https://youtube.com/embed/...\" title=\"Research video\"></iframe>\n * <div slot=\"stats\">\n * <div class=\"stat\">\n * <span class=\"number\">$500M</span>\n * <span class=\"label\">Research Funding</span>\n * </div>\n * <div class=\"stat\">\n * <span class=\"number\">2,000+</span>\n * <span class=\"label\">Active Projects</span>\n * </div>\n * </div>\n * <div slot=\"actions\">\n * <a href=\"/research\">Explore Research</a>\n * <a href=\"/partnerships\">Partner With Us</a>\n * </div>\n * </umd-element-pathway>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nexport default Register.webComponent({\n tagName,\n createComponent,\n afterConnect: Lifecycle.hooks.loadAnimation,\n});\n","import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Slots, Register } from 'model';\nimport { Markup } from 'utilities';\nimport { CreateComponentFunction } from '../../_types';\n\nconst { SlotWithDefaultStyling } = Markup.create;\n\n/**\n * Tag name for the pathway highlight web component\n */\nconst tagName = 'umd-element-pathway-highlight';\n\n/**\n * Creates a pathway highlight component with the provided configuration\n */\nconst createComponent: CreateComponentFunction = (element) =>\n Composite.pathway.highlight({\n actions: Slots.actions.default({ element }),\n eyebrow: Slots.eyebrow.default({ element }),\n headline: Slots.headline.default({ element }),\n text: Slots.text.default({ element }),\n quote: SlotWithDefaultStyling({\n element,\n slotRef: Slots.name.HIGHLIGHT,\n }),\n attribution: SlotWithDefaultStyling({\n element,\n slotRef: Slots.name.HIGHLIGHT_ATTRIBUTION,\n }),\n isThemeDark: Attributes.isTheme.dark({ element }),\n });\n\n/**\n * Pathway Highlight\n *\n * A pathway component that emphasizes a featured quote or testimonial alongside\n * standard pathway content. Combines narrative elements with highlighted user voices\n * to create compelling calls-to-action.\n *\n * ## Custom Element\n * `<umd-element-pathway-highlight>`\n *\n * ## Slots\n * - `eyebrow` - Small text above headline (optional, accepts: text elements)\n * - `headline` - Main heading (optional, accepts: heading elements)\n * - `text` - Descriptive body text (optional, accepts: text elements)\n * - `actions` - Call-to-action links or buttons (optional, accepts: a, button)\n * - `highlight` - Featured quote or testimonial text (optional, accepts: text elements)\n * - `highlight-attribution` - Attribution for the quote (optional, accepts: text elements)\n *\n * ## Attributes\n * - `data-theme` - Color theme of the component:\n * - `dark` - Dark background with light text\n *\n * @example\n * ```html\n * <!-- Basic pathway with highlight -->\n * <umd-element-pathway-highlight>\n * <span slot=\"eyebrow\">Student Success</span>\n * <h2 slot=\"headline\">Transform Your Future</h2>\n * <p slot=\"text\">Join thousands of students who have found their path at UMD.</p>\n * <blockquote slot=\"highlight\">\n * \"The opportunities here changed my life. I found mentors, research\n * experiences, and a community that supported my dreams.\"\n * </blockquote>\n * <cite slot=\"highlight-attribution\">Sarah Chen, Class of 2023</cite>\n * <a slot=\"actions\" href=\"/apply\">Start Your Journey</a>\n * </umd-element-pathway-highlight>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme with multiple actions -->\n * <umd-element-pathway-highlight data-theme=\"dark\">\n * <h2 slot=\"headline\">Alumni Impact</h2>\n * <p slot=\"text\">Our graduates go on to lead in every field imaginable.</p>\n * <p slot=\"highlight\">\n * \"My UMD education gave me the foundation to launch a company that's\n * now helping millions of people worldwide.\"\n * </p>\n * <span slot=\"highlight-attribution\">Dr. James Wilson, '08, CEO of TechCorp</span>\n * <div slot=\"actions\">\n * <a href=\"/alumni-stories\">Read More Stories</a>\n * <a href=\"/give\">Support Students</a>\n * </div>\n * </umd-element-pathway-highlight>\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nexport default Register.webComponent({\n tagName,\n createComponent,\n});\n"],"names":["tagName","createComponent","element","isImageScaledDeprecated","isImageScaledNew","Attributes.isLayout","isImageScaled","isImagePositionLeft","isThemeDark","Attributes.isTheme","isThemeLight","isThemeMaryland","isDisplayHero","Attributes.isDisplay","isDisplayOverlay","isDisplaySticky","includesAnimation","Attributes.includesFeature","featureEvents","extractEventData","Composite","Slots","toElementVisual","image_default","Register.webComponent","Lifecycle.hooks","SlotWithDefaultStyling","Markup.create","highlight_default"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import { c as o, l as t } from "./loader-xwmpwCXk.js";
2
- import { u as s } from "./shared/utilities-B_sPVa-m.js";
1
+ import { c as o, l as t } from "./loader-8wYd7fUZ.js";
2
+ import { u as s } from "./shared/utilities-CZHe-tKs.js";
3
3
  const n = o, a = () => {
4
4
  t(n);
5
5
  }, l = o, i = {
@@ -1,4 +1,4 @@
1
- import { t as a, s as o, f as t, b as s, d as e, l as n } from "./loader-xwmpwCXk.js";
1
+ import { t as a, s as o, f as t, b as s, d as e, l as n } from "./loader-8wYd7fUZ.js";
2
2
  const r = {
3
3
  accordion: e,
4
4
  carousel: s,
@@ -1,6 +1,6 @@
1
1
  import { Composite as o } from "@universityofmaryland/web-elements-library";
2
- import { s as t, h as i, i as s, a } from "./shared/model-4-WQm2Le.js";
3
- import { w as d } from "./shared/utilities-B_sPVa-m.js";
2
+ import { s as t, h as i, i as s, a } from "./shared/model-CHS3WnCo.js";
3
+ import { w as d } from "./shared/utilities-CZHe-tKs.js";
4
4
  const l = "umd-element-accordion-item", r = (e) => o.accordion.item({
5
5
  text: t.deprecated.body({ element: e, isDefaultStyling: !1 }) || t.text.default({ element: e, isDefaultStyling: !1 }),
6
6
  headline: t.headline.default({ element: e }),
@@ -33,4 +33,4 @@ var h = d({
33
33
  export {
34
34
  h as i
35
35
  };
36
- //# sourceMappingURL=item-CbhwHIpH.js.map
36
+ //# sourceMappingURL=item-DwMV1mFy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"item-CbhwHIpH.js","sources":["../source/api/accordion/item.ts"],"sourcesContent":["import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Slots, Register } from 'model';\nimport { CreateComponentFunction, SlotConfiguration } from '../../_types';\n\n/**\n * Tag name for the accordion item web component\n */\nconst tagName = 'umd-element-accordion-item';\n\n/**\n * Creates an accordion item component with the provided configuration\n */\nconst createComponent: CreateComponentFunction = (element) =>\n Composite.accordion.item({\n text:\n Slots.deprecated.body({ element, isDefaultStyling: false }) ||\n Slots.text.default({ element, isDefaultStyling: false }),\n headline: Slots.headline.default({ element }),\n isThemeLight: Attributes.isTheme.light({\n element,\n }),\n isThemeDark: Attributes.isTheme.dark({\n element,\n }),\n isStateOpen: Attributes.isVisual.open({\n element,\n }),\n });\n\n/**\n * Slot configuration for the accordion item component\n */\nconst slots: SlotConfiguration = {\n headline: {\n ...Slots.element.allowed.headline,\n required: true,\n },\n body: Slots.element.allowed.body,\n text: {\n ...Slots.element.allowed.text,\n required: true,\n },\n};\n\n/**\n * Attribute handlers for the accordion item component\n * Manages state changes and animations\n */\nconst attributes = Attributes.handler.common.accordion();\n\n/**\n * Accordion Item\n *\n * Creates an expandable/collapsible content container with smooth animations and theme variations.\n *\n * ## Custom Element\n * `<umd-element-accordion-item>`\n *\n * ## Slots\n * - `headline` - The clickable header (required, accepts: span, p)\n * - `text` - The expandable content (required, accepts: div, p)\n * - `body` - Deprecated: Use `text` slot instead\n *\n * ## Attributes\n * - `data-theme` - Color theme options:\n * - `light` - Light theme styling\n * - `dark` - Dark theme styling\n * - `data-visual-open` - Initial visual state:\n * - `true` - Opens accordion on load\n * - `false` - Closes accordion on load\n *\n * ## Observed Attributes\n * - `data-visual-open` - When changed to \"true\", opens accordion with animation; when changed to \"false\", closes with animation\n * - `resize` - When set to \"true\", re-evaluates accordion height without animation\n *\n * @example\n * ```html\n * <umd-element-accordion-item>\n * <p slot=\"headline\">Click to expand</p>\n * <div slot=\"text\">\n * <p>Hidden content revealed when expanded</p>\n * </div>\n * </umd-element-accordion-item>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme with default open state -->\n * <umd-element-accordion-item data-theme=\"dark\" data-visual-open=\"true\">\n * <span slot=\"headline\">Click to collapse</span>\n * <div slot=\"text\">\n * <p>Content revealed as expanded</p>\n * </div>\n * </umd-element-accordion-item>\n * ```\n *\n * @example\n * ```javascript\n * // Programmatic control\n * const accordion = document.querySelector('umd-element-accordion-item');\n * accordion.setAttribute('data-visual-open', 'true'); // Opens with animation\n * accordion.setAttribute('data-visual-open', 'false'); // Closes with animation\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nexport default Register.webComponent({\n tagName,\n slots,\n createComponent,\n attributes,\n});\n"],"names":["tagName","createComponent","element","Composite","Slots","Attributes.isTheme","Attributes.isVisual","slots","attributes","Attributes.handler","item_default","Register.webComponent"],"mappings":";;;AAOA,MAAMA,IAAU,8BAKVC,IAA2C,CAACC,MAChDC,EAAU,UAAU,KAAK;AAAA,EACvB,MACEC,EAAM,WAAW,KAAK,EAAE,SAAAF,GAAS,kBAAkB,GAAA,CAAO,KAC1DE,EAAM,KAAK,QAAQ,EAAE,SAAAF,GAAS,kBAAkB,IAAO;AAAA,EACzD,UAAUE,EAAM,SAAS,QAAQ,EAAE,SAAAF,GAAS;AAAA,EAC5C,cAAcG,EAAmB,MAAM;AAAA,IACrC,SAAAH;AAAA,EAAA,CACD;AAAA,EACD,aAAaG,EAAmB,KAAK;AAAA,IACnC,SAAAH;AAAA,EAAA,CACD;AAAA,EACD,aAAaI,EAAoB,KAAK;AAAA,IACpC,SAAAJ;AAAA,EAAA,CACD;AACH,CAAC,GAKGK,IAA2B;AAAA,EAC/B,UAAU;AAAA,IACR,GAAGH,EAAM,QAAQ,QAAQ;AAAA,IACzB,UAAU;AAAA,EAAA;AAAA,EAEZ,MAAMA,EAAM,QAAQ,QAAQ;AAAA,EAC5B,MAAM;AAAA,IACJ,GAAGA,EAAM,QAAQ,QAAQ;AAAA,IACzB,UAAU;AAAA,EAAA;AAEd,GAMMI,IAAaC,EAAmB,OAAO,UAAA;AA2D7C,IAAOC,IAAQC,EAAsB;AAAA,EACnC,SAAAX;AAAA,EACA,OAAAO;AAAA,EACA,iBAAAN;AAAA,EACA,YAAAO;AACF,CAAC;"}
1
+ {"version":3,"file":"item-DwMV1mFy.js","sources":["../source/api/accordion/item.ts"],"sourcesContent":["import { Composite } from '@universityofmaryland/web-elements-library';\nimport { Attributes, Slots, Register } from 'model';\nimport { CreateComponentFunction, SlotConfiguration } from '../../_types';\n\n/**\n * Tag name for the accordion item web component\n */\nconst tagName = 'umd-element-accordion-item';\n\n/**\n * Creates an accordion item component with the provided configuration\n */\nconst createComponent: CreateComponentFunction = (element) =>\n Composite.accordion.item({\n text:\n Slots.deprecated.body({ element, isDefaultStyling: false }) ||\n Slots.text.default({ element, isDefaultStyling: false }),\n headline: Slots.headline.default({ element }),\n isThemeLight: Attributes.isTheme.light({\n element,\n }),\n isThemeDark: Attributes.isTheme.dark({\n element,\n }),\n isStateOpen: Attributes.isVisual.open({\n element,\n }),\n });\n\n/**\n * Slot configuration for the accordion item component\n */\nconst slots: SlotConfiguration = {\n headline: {\n ...Slots.element.allowed.headline,\n required: true,\n },\n body: Slots.element.allowed.body,\n text: {\n ...Slots.element.allowed.text,\n required: true,\n },\n};\n\n/**\n * Attribute handlers for the accordion item component\n * Manages state changes and animations\n */\nconst attributes = Attributes.handler.common.accordion();\n\n/**\n * Accordion Item\n *\n * Creates an expandable/collapsible content container with smooth animations and theme variations.\n *\n * ## Custom Element\n * `<umd-element-accordion-item>`\n *\n * ## Slots\n * - `headline` - The clickable header (required, accepts: span, p)\n * - `text` - The expandable content (required, accepts: div, p)\n * - `body` - Deprecated: Use `text` slot instead\n *\n * ## Attributes\n * - `data-theme` - Color theme options:\n * - `light` - Light theme styling\n * - `dark` - Dark theme styling\n * - `data-visual-open` - Initial visual state:\n * - `true` - Opens accordion on load\n * - `false` - Closes accordion on load\n *\n * ## Observed Attributes\n * - `data-visual-open` - When changed to \"true\", opens accordion with animation; when changed to \"false\", closes with animation\n * - `resize` - When set to \"true\", re-evaluates accordion height without animation\n *\n * @example\n * ```html\n * <umd-element-accordion-item>\n * <p slot=\"headline\">Click to expand</p>\n * <div slot=\"text\">\n * <p>Hidden content revealed when expanded</p>\n * </div>\n * </umd-element-accordion-item>\n * ```\n *\n * @example\n * ```html\n * <!-- Dark theme with default open state -->\n * <umd-element-accordion-item data-theme=\"dark\" data-visual-open=\"true\">\n * <span slot=\"headline\">Click to collapse</span>\n * <div slot=\"text\">\n * <p>Content revealed as expanded</p>\n * </div>\n * </umd-element-accordion-item>\n * ```\n *\n * @example\n * ```javascript\n * // Programmatic control\n * const accordion = document.querySelector('umd-element-accordion-item');\n * accordion.setAttribute('data-visual-open', 'true'); // Opens with animation\n * accordion.setAttribute('data-visual-open', 'false'); // Closes with animation\n * ```\n *\n * @category Components\n * @since 1.0.0\n */\nexport default Register.webComponent({\n tagName,\n slots,\n createComponent,\n attributes,\n});\n"],"names":["tagName","createComponent","element","Composite","Slots","Attributes.isTheme","Attributes.isVisual","slots","attributes","Attributes.handler","item_default","Register.webComponent"],"mappings":";;;AAOA,MAAMA,IAAU,8BAKVC,IAA2C,CAACC,MAChDC,EAAU,UAAU,KAAK;AAAA,EACvB,MACEC,EAAM,WAAW,KAAK,EAAE,SAAAF,GAAS,kBAAkB,GAAA,CAAO,KAC1DE,EAAM,KAAK,QAAQ,EAAE,SAAAF,GAAS,kBAAkB,IAAO;AAAA,EACzD,UAAUE,EAAM,SAAS,QAAQ,EAAE,SAAAF,GAAS;AAAA,EAC5C,cAAcG,EAAmB,MAAM;AAAA,IACrC,SAAAH;AAAA,EAAA,CACD;AAAA,EACD,aAAaG,EAAmB,KAAK;AAAA,IACnC,SAAAH;AAAA,EAAA,CACD;AAAA,EACD,aAAaI,EAAoB,KAAK;AAAA,IACpC,SAAAJ;AAAA,EAAA,CACD;AACH,CAAC,GAKGK,IAA2B;AAAA,EAC/B,UAAU;AAAA,IACR,GAAGH,EAAM,QAAQ,QAAQ;AAAA,IACzB,UAAU;AAAA,EAAA;AAAA,EAEZ,MAAMA,EAAM,QAAQ,QAAQ;AAAA,EAC5B,MAAM;AAAA,IACJ,GAAGA,EAAM,QAAQ,QAAQ;AAAA,IACzB,UAAU;AAAA,EAAA;AAEd,GAMMI,IAAaC,EAAmB,OAAO,UAAA;AA2D7C,IAAOC,IAAQC,EAAsB;AAAA,EACnC,SAAAX;AAAA,EACA,OAAAO;AAAA,EACA,iBAAAN;AAAA,EACA,YAAAO;AACF,CAAC;"}
@@ -1,6 +1,6 @@
1
1
  import * as r from "@universityofmaryland/web-feeds-library";
2
- import { g as n, k as m, a as l, i, l as f, h as d, f as v, b as C } from "./shared/model-4-WQm2Le.js";
3
- import { w as s } from "./shared/utilities-B_sPVa-m.js";
2
+ import { g as n, k as m, a as l, i, l as f, h as d, f as v, b as C } from "./shared/model-CHS3WnCo.js";
3
+ import { w as s } from "./shared/utilities-CZHe-tKs.js";
4
4
  import "@universityofmaryland/web-styles-library";
5
5
  const c = ({ element: e }) => {
6
6
  const t = n.feedToken({ element: e });
@@ -151,4 +151,4 @@ export {
151
151
  P as g,
152
152
  V as l
153
153
  };
154
- //# sourceMappingURL=list-CWGH3XBG.js.map
154
+ //# sourceMappingURL=list-Dwa6U7aH.js.map